decocms 4.503.3 → 4.503.4

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 (377) hide show
  1. package/dist/client/assets/{ActiveShapeUtils-BZHO-Tea.js → ActiveShapeUtils-B5q2Fpj9.js} +1 -1
  2. package/dist/client/assets/{AlertCircle-C0bs-qa3.js → AlertCircle-DNYRiSZ5.js} +1 -1
  3. package/dist/client/assets/{AreaChart-D6DLk2lt.js → AreaChart-BTuXJM5s.js} +1 -1
  4. package/dist/client/assets/{ArrowLeft-CyqGFvgi.js → ArrowLeft-BPRTZJKi.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-BJPF3L4O.js → ArrowUp-ZHJFpRuE.js} +1 -1
  6. package/dist/client/assets/{BarChart-RIdoc9z7.js → BarChart-Bezom8e_.js} +1 -1
  7. package/dist/client/assets/{Building02-CwMh8UJJ.js → Building02-BpZfnUaY.js} +1 -1
  8. package/dist/client/assets/{CategoricalChart-DbWIEPi9.js → CategoricalChart-Uo4Rj6g_.js} +1 -1
  9. package/dist/client/assets/{CheckCircle-YHLE1_hJ.js → CheckCircle-DOJo5D8E.js} +1 -1
  10. package/dist/client/assets/{ChevronSelectorVertical-Bggh3LX5.js → ChevronSelectorVertical-BjGO6IDu.js} +1 -1
  11. package/dist/client/assets/{ChevronUp-DqRKMsmV.js → ChevronUp-85QiHbB8.js} +1 -1
  12. package/dist/client/assets/{Copy01-Cq9WjfW7.js → Copy01-DHwdjF9k.js} +1 -1
  13. package/dist/client/assets/{CreditCard01-CUDx5NqO.js → CreditCard01-BMScCkLO.js} +1 -1
  14. package/dist/client/assets/{DotsVertical-B2EQHomZ.js → DotsVertical-XGcmOLtN.js} +1 -1
  15. package/dist/client/assets/{ErrorBarContext-CI-Gw7tk.js → ErrorBarContext-1_vc7VhI.js} +1 -1
  16. package/dist/client/assets/{Globe04-D9a2dMdx.js → Globe04-BJ3qfVTm.js} +1 -1
  17. package/dist/client/assets/{Image01-DkJLJorV.js → Image01-DA50Hqzp.js} +1 -1
  18. package/dist/client/assets/{Key01-xAYnO8or.js → Key01-GJDDXAJz.js} +1 -1
  19. package/dist/client/assets/{Link01-DQBTD3DQ.js → Link01-DITYAShx.js} +1 -1
  20. package/dist/client/assets/{LinkBroken01-BmmJuH8C.js → LinkBroken01-DqJqD91d.js} +1 -1
  21. package/dist/client/assets/{Monitor01-BCkwJw6w.js → Monitor01-CDHoaa0R.js} +1 -1
  22. package/dist/client/assets/{Play-oLIfAzRt.js → Play-YAp6V4vH.js} +1 -1
  23. package/dist/client/assets/{Plus-BApnGlKK.js → Plus-CPrlnOw7.js} +1 -1
  24. package/dist/client/assets/{SearchMd-NpuwzAcc.js → SearchMd-vuCQLB6T.js} +1 -1
  25. package/dist/client/assets/{Sector-WmR1cpX-.js → Sector-Ch82gOyF.js} +1 -1
  26. package/dist/client/assets/{ShoppingBag01-DK8LMXMw.js → ShoppingBag01-C5bgz2eY.js} +1 -1
  27. package/dist/client/assets/{Sun-C9cU8hxr.js → Sun-BVt8ND9g.js} +1 -1
  28. package/dist/client/assets/{SwitchHorizontal01-AcstXYg5.js → SwitchHorizontal01-BmNVXOBy.js} +1 -1
  29. package/dist/client/assets/{Tool01-Dupx1l4q.js → Tool01-D30btgv0.js} +1 -1
  30. package/dist/client/assets/{Trash01-Ck_X1vUa.js → Trash01-CuDfbX9_.js} +1 -1
  31. package/dist/client/assets/{Upload01-qEgWy132.js → Upload01-Bbz_T9k9.js} +1 -1
  32. package/dist/client/assets/{User01-CgwPUhzy.js → User01-DkehSUca.js} +1 -1
  33. package/dist/client/assets/{UserSquare-BW7WmTct.js → UserSquare-CkJD4oxT.js} +1 -1
  34. package/dist/client/assets/{Users01-B_hzpQi7.js → Users01-Bx_TIoWb.js} +1 -1
  35. package/dist/client/assets/{XAxis-D0tEledV.js → XAxis-BuYm-sWK.js} +1 -1
  36. package/dist/client/assets/{XClose-C6revfQl.js → XClose-jBQRwEAI.js} +1 -1
  37. package/dist/client/assets/{ZoomOut-CMtk8pmQ.js → ZoomOut-CpX8NTBd.js} +1 -1
  38. package/dist/client/assets/{access-gate-BUHxGD7s.js → access-gate-tig-XyXk.js} +1 -1
  39. package/dist/client/assets/{add-connection-dialog-DYGuB_HZ.js → add-connection-dialog-bxfInPMj.js} +1 -1
  40. package/dist/client/assets/{agent-analytics-C0toyZBE.js → agent-analytics-B-N286Uf.js} +1 -1
  41. package/dist/client/assets/agent-app-6dfYkztJ.js +1 -0
  42. package/dist/client/assets/{agent-assets-ZyzleI2d.js → agent-assets-Cgi1ormd.js} +1 -1
  43. package/dist/client/assets/{agent-automation-DHCAH1Ht.js → agent-automation-Bc_Pzkf9.js} +1 -1
  44. package/dist/client/assets/{agent-automations-1pmELJaR.js → agent-automations-ZrkdxSWn.js} +1 -1
  45. package/dist/client/assets/{agent-connect-sources-BR0EewUn.js → agent-connect-sources-DqHqfSqs.js} +1 -1
  46. package/dist/client/assets/agent-deck-B3gVo2Qj.js +1 -0
  47. package/dist/client/assets/{agent-e2e-CniVqvBP.js → agent-e2e-BDGDGL0J.js} +1 -1
  48. package/dist/client/assets/{agent-experiments-BtOURaXM.js → agent-experiments-CSJXs5ck.js} +1 -1
  49. package/dist/client/assets/{agent-file-mMm3oj12.js → agent-file-B4y2baGc.js} +1 -1
  50. package/dist/client/assets/{agent-hosting-ad2iW-HQ.js → agent-hosting-HBYg130L.js} +1 -1
  51. package/dist/client/assets/{agent-icon-IYZ6dMMm.js → agent-icon-C1V6kO6k.js} +1 -1
  52. package/dist/client/assets/agent-library-CrxCYORH.js +1 -0
  53. package/dist/client/assets/agent-library-file-DAsbJq5U.js +1 -0
  54. package/dist/client/assets/{agent-monitor-AJ6RJJFo.js → agent-monitor-C2b2Y_Y1.js} +1 -1
  55. package/dist/client/assets/{agent-overview-DUusPjxs.js → agent-overview-CsnhRf0H.js} +1 -1
  56. package/dist/client/assets/{agent-releases-mtwcaaQ0.js → agent-releases-DRgXlmeB.js} +1 -1
  57. package/dist/client/assets/agent-settings-BZ88TB1O.js +1 -0
  58. package/dist/client/assets/{agent-site-editor-C0x401TL.js → agent-site-editor-DsdBJNL9.js} +1 -1
  59. package/dist/client/assets/agent-site-editor-code-Df5lx3om.js +2 -0
  60. package/dist/client/assets/agent-site-editor-content-BOiOZFoZ.js +1 -0
  61. package/dist/client/assets/agent-site-editor-preview-DO0UOaFC.js +1 -0
  62. package/dist/client/assets/agent-view-BgXKt_Jw.js +1 -0
  63. package/dist/client/assets/{agent-view-guard-C-Qfr10T.js → agent-view-guard-Km-JyuT6.js} +1 -1
  64. package/dist/client/assets/{agents-list-Cpyf7LA_.js → agents-list-BanY1y62.js} +1 -1
  65. package/dist/client/assets/{ai-providers-B1rkMM1N.js → ai-providers-BQ1fiNa3.js} +1 -1
  66. package/dist/client/assets/{alert-CR7CEEq9.js → alert-CwC4mTxQ.js} +1 -1
  67. package/dist/client/assets/{alert-dialog-DvHapLNz.js → alert-dialog-DmhXDwQf.js} +1 -1
  68. package/dist/client/assets/{analytics-sections-DQ4-ejvL.js → analytics-sections-BVE76D5N.js} +1 -1
  69. package/dist/client/assets/api-keys-Br0s22Rf.js +1 -0
  70. package/dist/client/assets/{api-keys-JCwVkxIe.js → api-keys-MPhXPzmG.js} +1 -1
  71. package/dist/client/assets/{app-editor-D8Q2zZIC.js → app-editor-Hif319cO.js} +1 -1
  72. package/dist/client/assets/{asset-utils-DmXj22NF.js → asset-utils-CU6xrAQD.js} +1 -1
  73. package/dist/client/assets/{auth-BT8e81qV.js → auth-BfGJq755.js} +1 -1
  74. package/dist/client/assets/{auth-catchall-D6QLLgc6.js → auth-catchall-DHUJeHRe.js} +1 -1
  75. package/dist/client/assets/{auth-entry-D9vS9bmZ.js → auth-entry-D7U4AjUc.js} +1 -1
  76. package/dist/client/assets/{auth-split-layout-o3i94wga.js → auth-split-layout-BwhoO-JF.js} +1 -1
  77. package/dist/client/assets/{authenticate-and-persist-oauth-DDvH_pYK.js → authenticate-and-persist-oauth-Brcij0L8.js} +1 -1
  78. package/dist/client/assets/{automation-list-row-QE1B5QXY.js → automation-list-row-DhqnXrm1.js} +1 -1
  79. package/dist/client/assets/{automation-runs-BM9Zsa76.js → automation-runs-CFyZ7Iod.js} +1 -1
  80. package/dist/client/assets/{automations-BRu0MWXO.js → automations-CPaO2SBr.js} +1 -1
  81. package/dist/client/assets/{autosend-1JvG61Q-.js → autosend-BOeZuHqU.js} +1 -1
  82. package/dist/client/assets/{avatar-C8v4_r4j.js → avatar-GhiWKw1r.js} +1 -1
  83. package/dist/client/assets/{badge-BHmZq84v.js → badge-ZAtAF3u1.js} +1 -1
  84. package/dist/client/assets/{block-document-Dv3941cI.js → block-document-BFsYEKLL.js} +1 -1
  85. package/dist/client/assets/{blocks-preview-workspace-context-BH7NtGeu.js → blocks-preview-workspace-context-x6dOFQvJ.js} +1 -1
  86. package/dist/client/assets/{blocks-tab-states-CLXySozn.js → blocks-tab-states-iEAVPlIx.js} +3 -3
  87. package/dist/client/assets/{blog-schema-CrP5_bhz.js → blog-schema-ctDuKA_t.js} +1 -1
  88. package/dist/client/assets/{board-analytics-BmMawtQY.js → board-analytics-DvMyzeTp.js} +1 -1
  89. package/dist/client/assets/{buckets-BtRFTIOK.js → buckets-CgmF5YK1.js} +1 -1
  90. package/dist/client/assets/{build-improve-prompt-doc-AWiYNzNL.js → build-improve-prompt-doc-C3V-cifS.js} +1 -1
  91. package/dist/client/assets/{calendar-COw0hUo6.js → calendar-DCNv43ZU.js} +1 -1
  92. package/dist/client/assets/{capability-load-error-DHrSQX5q.js → capability-load-error-BwwdyiCX.js} +1 -1
  93. package/dist/client/assets/{category-editor-kBX-zvr0.js → category-editor-C1SS3xs8.js} +1 -1
  94. package/dist/client/assets/{chart-CADE9lfF.js → chart-C2XR0VWr.js} +1 -1
  95. package/dist/client/assets/{chat-context-BNjKw9LL.js → chat-context-B8EIbmvQ.js} +1 -1
  96. package/dist/client/assets/{chat-draft-CmtxpJQx.js → chat-draft-qnxtVEVH.js} +1 -1
  97. package/dist/client/assets/{checkbox-xhw9TpJq.js → checkbox-C7CPIIbh.js} +1 -1
  98. package/dist/client/assets/{choose-editor-CYHXDvEE.js → choose-editor-C5zdSB58.js} +1 -1
  99. package/dist/client/assets/{cli-auth-success-CrMi_RRg.js → cli-auth-success-DTXn6lOO.js} +1 -1
  100. package/dist/client/assets/{client-icons-CQ80KsiA.js → client-icons-TMNg5z-u.js} +1 -1
  101. package/dist/client/assets/cms-settings-editor-CK28ljtG.js +1 -0
  102. package/dist/client/assets/{collapsible-BUt0IJaU.js → collapsible-CVaRDj_D.js} +1 -1
  103. package/dist/client/assets/{collection-detail-PY6wTFCT.js → collection-detail-BR9DK1c7.js} +1 -1
  104. package/dist/client/assets/{collection-display-button-Db8z9qRw.js → collection-display-button-ehG7rKuY.js} +1 -1
  105. package/dist/client/assets/{collection-search-DKdVuGfx.js → collection-search-DOoRymFZ.js} +1 -1
  106. package/dist/client/assets/{collection-table-wrapper-CxDEuoX_.js → collection-table-wrapper-zN3HZXSF.js} +1 -1
  107. package/dist/client/assets/{collection-tabs-DI6C6Bxt.js → collection-tabs-DLtCCrSF.js} +1 -1
  108. package/dist/client/assets/{column-rules-B1U9pPvU.js → column-rules-Du1x2YcT.js} +1 -1
  109. package/dist/client/assets/{combobox-CSmA_Emy.js → combobox-DlHUORRR.js} +1 -1
  110. package/dist/client/assets/{command-0uhVFrEr.js → command-_UmLRidn.js} +1 -1
  111. package/dist/client/assets/{companion-mcps-section-Czlo0Gan.js → companion-mcps-section-joijt_6l.js} +1 -1
  112. package/dist/client/assets/{config-udwhxOLX.js → config-Cx-JIPqO.js} +1 -1
  113. package/dist/client/assets/{connect-BhG9hgu5.js → connect-DoSLTcjV.js} +1 -1
  114. package/dist/client/assets/{connect-layout-CQqCd5zE.js → connect-layout-Bm_59z-Y.js} +1 -1
  115. package/dist/client/assets/{connection-p3Yh3nCI.js → connection-DL3AzTOs.js} +1 -1
  116. package/dist/client/assets/{connection-card-s4hDH-AI.js → connection-card-Dvq8DJhG.js} +1 -1
  117. package/dist/client/assets/{connection-detail-BGuWCgDJ.js → connection-detail-DqoTA2Jx.js} +1 -1
  118. package/dist/client/assets/{connection-form-helpers-DJ-magA7.js → connection-form-helpers-D9j_N0x7.js} +1 -1
  119. package/dist/client/assets/{connections-CNGigt3T.js → connections-CcmlL0dN.js} +1 -1
  120. package/dist/client/assets/{content-tab-DgmmrNPY.js → content-tab-63E-NyaC.js} +3 -3
  121. package/dist/client/assets/{context-DncZ9emv.js → context-DQMyTLF9.js} +1 -1
  122. package/dist/client/assets/{context-menu-Cm6FmYv1.js → context-menu-BxD8Qoq9.js} +1 -1
  123. package/dist/client/assets/{core.esm-CMBApA4v.js → core.esm-5rgifJ6w.js} +1 -1
  124. package/dist/client/assets/{create-organization-dialog-DeVkEe6w.js → create-organization-dialog-DKnw552E.js} +1 -1
  125. package/dist/client/assets/{daily-pulse-DCG3diGf.js → daily-pulse-BLN6tqFf.js} +1 -1
  126. package/dist/client/assets/{discover-CP7ZVhLA.js → discover-C69w99TN.js} +1 -1
  127. package/dist/client/assets/{domain-settings-BjboDk3T.js → domain-settings-z0KMryJJ.js} +1 -1
  128. package/dist/client/assets/{drawer-CLZ-xo2r.js → drawer-Cwq-E8vz.js} +1 -1
  129. package/dist/client/assets/{editor-D4HuZvrK.js → editor-YT1hAWJG.js} +1 -1
  130. package/dist/client/assets/{editor-classes-DKfC8vOr.js → editor-classes-BOlaxHer.js} +1 -1
  131. package/dist/client/assets/{empty-state-BsdKh2Ue.js → empty-state-COxR0UdU.js} +1 -1
  132. package/dist/client/assets/{empty-state-CEoRSVYz.js → empty-state-bIFMElEe.js} +1 -1
  133. package/dist/client/assets/{extract-connection-data-6U5via6T.js → extract-connection-data-BOqucuID.js} +1 -1
  134. package/dist/client/assets/{feature-gate-BQX4xM-_.js → feature-gate-zfN6jjr4.js} +1 -1
  135. package/dist/client/assets/{feature-paywall-B0IDpilq.js → feature-paywall-DOf-RXxD.js} +1 -1
  136. package/dist/client/assets/{file-explorer-BusTYz3B.js → file-explorer-CflV7iiA.js} +1 -1
  137. package/dist/client/assets/{file-preview-oG-3SqEP.js → file-preview-BPog6jkH.js} +1 -1
  138. package/dist/client/assets/{file-share-button-D2ewghAx.js → file-share-button-DwxdVjUj.js} +1 -1
  139. package/dist/client/assets/{file-type-icon-CQ2NL6D0.js → file-type-icon-fTBob-KS.js} +1 -1
  140. package/dist/client/assets/flat-project-D1WKpn7D.js +1 -0
  141. package/dist/client/assets/{folder-icon-DfMLETlT.js → folder-icon-hdUwkBM6.js} +1 -1
  142. package/dist/client/assets/{form-C-_Hq4Nf.js → form-mnUTUUgy.js} +1 -1
  143. package/dist/client/assets/{general-CtDuoPb9.js → general-CgQXqxtP.js} +1 -1
  144. package/dist/client/assets/{home-eTg8C9pV.js → home-CV9BF9nv.js} +1 -1
  145. package/dist/client/assets/{hosted-publish-feedback-CZlm71y1.js → hosted-publish-feedback-B7Lxlu-b.js} +1 -1
  146. package/dist/client/assets/{icon-button-kIcQhYLP.js → icon-button-Bt7uHWxC.js} +1 -1
  147. package/dist/client/assets/{index-BRWw7SCJ.js → index-0NedKVmw.js} +1 -1
  148. package/dist/client/assets/{index-B3gavgHR.js → index-9SoDq1r6.js} +1 -1
  149. package/dist/client/assets/{index-aLtOKeM_.js → index-B0o9NkGp.js} +1 -1
  150. package/dist/client/assets/{index-CaZ7Ta4-.js → index-B7MMDJJ7.js} +1 -1
  151. package/dist/client/assets/{index-BDyDwqX9.js → index-Bo2QXn8j.js} +1 -1
  152. package/dist/client/assets/{index-CRwuvzQo.js → index-Bt_WPZSk.js} +1 -1
  153. package/dist/client/assets/{index-DcwcoAG1.js → index-Bu9BjZrq.js} +2 -2
  154. package/dist/client/assets/{index-Brahj_AH.js → index-BwRxHLj2.js} +1 -1
  155. package/dist/client/assets/{index-D50nkpZu.js → index-C2F2YRTL.js} +1 -1
  156. package/dist/client/assets/{index-GIY94IfY.js → index-CVgtqYMj.js} +1 -1
  157. package/dist/client/assets/{index-CSynhSN3.js → index-C_vMO742.js} +1 -1
  158. package/dist/client/assets/{index-Dxx153um.js → index-CaAWsuiJ.js} +1 -1
  159. package/dist/client/assets/{index-D1O0fnYk.js → index-CdyBZ-dj.js} +1 -1
  160. package/dist/client/assets/{index-DkaAdiWJ.js → index-DIb14xIW.js} +3 -3
  161. package/dist/client/assets/{index-qdZ_M1Hs.js → index-DYj9xST9.js} +1 -1
  162. package/dist/client/assets/{index-redirect-CqzQ7TtA.js → index-redirect-BUSEAkWr.js} +1 -1
  163. package/dist/client/assets/{infiniteQueryObserver-OVT2IHZz.js → infiniteQueryObserver-Cgqjyb2j.js} +1 -1
  164. package/dist/client/assets/{infra-billing-Do0mVYGI.js → infra-billing-Dmuw8KU-.js} +1 -1
  165. package/dist/client/assets/{input-By0EUIH6.js → input-CEeDInNj.js} +3 -3
  166. package/dist/client/assets/{input-BSjpPhVN.js → input-GO29c19t.js} +1 -1
  167. package/dist/client/assets/{integration-icon-DnkM_UL8.js → integration-icon-D0zNx-RJ.js} +1 -1
  168. package/dist/client/assets/{jira-icon-CqLf84m8.js → jira-icon-DvLH7QI5.js} +1 -1
  169. package/dist/client/assets/{label-Dt5vzIMB.js → label-BqTE8eVe.js} +1 -1
  170. package/dist/client/assets/{layout-BmodM2uM.js → layout-DpqY7e7r.js} +1 -1
  171. package/dist/client/assets/{legacy-agents-deep-CX4SclMd.js → legacy-agents-deep-XW7PcOvc.js} +1 -1
  172. package/dist/client/assets/{legacy-main-redirect-Dts3nGWn.js → legacy-main-redirect-BlcRg6jU.js} +1 -1
  173. package/dist/client/assets/library-BCn7yrRw.js +1 -0
  174. package/dist/client/assets/{library-tab-Dk8jPHZc.js → library-tab-DX4N_54U.js} +1 -1
  175. package/dist/client/assets/{login-CjyZJ1gl.js → login-D_5_-2-7.js} +1 -1
  176. package/dist/client/assets/{markdown-BqgEzNGE.js → markdown-Wx3jaxrX.js} +1 -1
  177. package/dist/client/assets/{mcp-app-renderer-DA0a33zE.js → mcp-app-renderer-CIdjohnw.js} +1 -1
  178. package/dist/client/assets/{mcp-oauth-I5gBNKoS.js → mcp-oauth-BqOO-7HR.js} +1 -1
  179. package/dist/client/assets/{mcp-oauth-CX8fEmM9.js → mcp-oauth-CP7f2bqu.js} +1 -1
  180. package/dist/client/assets/{members-CevjnqyZ.js → members-CWfNsRhJ.js} +1 -1
  181. package/dist/client/assets/{memory-XWobktLB.js → memory-CBEItIQh.js} +1 -1
  182. package/dist/client/assets/{mini-report-page-C6BqmQaN.js → mini-report-page-BUjMh7u3.js} +1 -1
  183. package/dist/client/assets/{mock-board-B4qV3A-E.js → mock-board-Ci5UecWv.js} +1 -1
  184. package/dist/client/assets/{monaco-editor-lQ9cAvUY.js → monaco-editor-uL7EgDLV.js} +1 -1
  185. package/dist/client/assets/{monitoring-stats-row-CLPgpAhH.js → monitoring-stats-row-CTBvl4CT.js} +1 -1
  186. package/dist/client/assets/{multi-select-CZfN1PaQ.js → multi-select-Dsayixmw.js} +1 -1
  187. package/dist/client/assets/{mustache-DT_KuEhH.js → mustache-CdAmmkEb.js} +1 -1
  188. package/dist/client/assets/{new-project-dialog-BKgvqK78.js → new-project-dialog-C2CawYle.js} +1 -1
  189. package/dist/client/assets/{oauth-callback-SkwzSPfM.js → oauth-callback-Cr6Mkw-S.js} +1 -1
  190. package/dist/client/assets/{oauth-callback-ai-provider-NI3n642W.js → oauth-callback-ai-provider-3XAXL_LG.js} +1 -1
  191. package/dist/client/assets/{onboarding-BMiRDMAb.js → onboarding-Cr8prmNS.js} +1 -1
  192. package/dist/client/assets/{openai-conversation-Ca5Fg4Y6.js → openai-conversation-CqdQkpbG.js} +1 -1
  193. package/dist/client/assets/{optimistic-project-sidebar-views-DyvLQ80j.js → optimistic-project-sidebar-views-CqtTgCjK.js} +1 -1
  194. package/dist/client/assets/{order-monitor-day-B9Ta2zIj.js → order-monitor-day-xXzJoCon.js} +1 -1
  195. package/dist/client/assets/{organization-choice-D5hNbyJb.js → organization-choice-ysHevYPz.js} +1 -1
  196. package/dist/client/assets/{orgs-BxK76duJ.js → orgs-DdXSSyy_.js} +1 -1
  197. package/dist/client/assets/{page-seo-form-BmW8Z-0I.js → page-seo-form--GeHG2Y7.js} +1 -1
  198. package/dist/client/assets/{pair-DKv2U48Y.js → pair-BRzx8V28.js} +1 -1
  199. package/dist/client/assets/{plan-ladder-B1IxCH1B.js → plan-ladder-DEcsqAHq.js} +1 -1
  200. package/dist/client/assets/{popover-5CUWIQBk.js → popover-DBhjt7xF.js} +1 -1
  201. package/dist/client/assets/{post-calendar-DAa-Pjry.js → post-calendar-BBgMihhC.js} +1 -1
  202. package/dist/client/assets/{post-editor-reaedGzn.js → post-editor-D6Q9G6HD.js} +1 -1
  203. package/dist/client/assets/{preview-content-CshUlHqh.js → preview-content-B8gytc3A.js} +1 -1
  204. package/dist/client/assets/{preview-dialog-DwCusxLT.js → preview-dialog-Du8s313b.js} +1 -1
  205. package/dist/client/assets/{preview-panel-WzN8kpWO.js → preview-panel-lv7hIcbh.js} +1 -1
  206. package/dist/client/assets/{preview-tab-B_cUSkm2.js → preview-tab-OUmlHA2w.js} +3 -3
  207. package/dist/client/assets/{product-picker-dialog-DBjep5p4.js → product-picker-dialog-Vi9M9XbY.js} +1 -1
  208. package/dist/client/assets/{profile-hRHOF5Gw.js → profile-rjLUYrke.js} +1 -1
  209. package/dist/client/assets/{project-app-view-DNVq8VkM.js → project-app-view-ChI-tWmY.js} +1 -1
  210. package/dist/client/assets/{project-feed-DlyqhO5P.js → project-feed-DSYFIf9h.js} +1 -1
  211. package/dist/client/assets/{project-icon-vLtBMI8z.js → project-icon-DEfb1G5F.js} +1 -1
  212. package/dist/client/assets/project-reports-CSI1uE8Z.js +1 -0
  213. package/dist/client/assets/project-tasks-DxRsaOWu.js +1 -0
  214. package/dist/client/assets/{projects-B3I0DcRe.js → projects-CtrF1Zf3.js} +1 -1
  215. package/dist/client/assets/{projects-empty-state-55RIN9Cj.js → projects-empty-state-Cebygjnd.js} +1 -1
  216. package/dist/client/assets/{prompts-CPLH0FnD.js → prompts-BVXX6Xql.js} +1 -1
  217. package/dist/client/assets/record-editor-CCo2C6Wx.js +1 -0
  218. package/dist/client/assets/{redirect-editor-B2bAFrEE.js → redirect-editor-DIAc_1Im.js} +1 -1
  219. package/dist/client/assets/{reports-CXN9h1H6.js → reports-Du7byUHW.js} +1 -1
  220. package/dist/client/assets/reports-MoZoLp_a.js +1 -0
  221. package/dist/client/assets/{reports-onboarding-nbmF0yv4.js → reports-onboarding-Ds-Ispiz.js} +1 -1
  222. package/dist/client/assets/{reports-tab-CRtLPFDk.js → reports-tab-ChePuZZ4.js} +2 -2
  223. package/dist/client/assets/{repositories-D3qwKMJM.js → repositories-BTxz09bM.js} +1 -1
  224. package/dist/client/assets/{repository-binding-CUxf8aX0.js → repository-binding-DTzReh06.js} +1 -1
  225. package/dist/client/assets/{repository-import-picker-C6OTix7e.js → repository-import-picker-CUpsn0UU.js} +1 -1
  226. package/dist/client/assets/{repository-picker-BXAw9AXK.js → repository-picker-liId9_zf.js} +1 -1
  227. package/dist/client/assets/{require-capability-CKHXR06K.js → require-capability-CfedINkj.js} +1 -1
  228. package/dist/client/assets/{required-auth-layout-Cv45xJqA.js → required-auth-layout-CZd2SYeJ.js} +1 -1
  229. package/dist/client/assets/{reset-password-6g9qTAfh.js → reset-password-qlKVFcE6.js} +1 -1
  230. package/dist/client/assets/{resizable-fCTJH5jh.js → resizable-D31F4eAS.js} +1 -1
  231. package/dist/client/assets/{resolve-tab-icon-cz5Lal-I.js → resolve-tab-icon-DvCi-XX9.js} +1 -1
  232. package/dist/client/assets/{review-settings-BBWyrIPG.js → review-settings-ZCONB0R7.js} +1 -1
  233. package/dist/client/assets/{roles-DFY7MITG.js → roles-C28vWKZO.js} +1 -1
  234. package/dist/client/assets/{route-DoeOMPk8.js → route-BNyTQhdC.js} +1 -1
  235. package/dist/client/assets/{route-BgaA4a2x.js → route-Jtrcqjic.js} +1 -1
  236. package/dist/client/assets/route-dcUraDhg.js +1 -0
  237. package/dist/client/assets/{sandbox-lifecycle-context-CaJAIY0Z.js → sandbox-lifecycle-context-BSXgRctA.js} +1 -1
  238. package/dist/client/assets/{schema-BSza6gHX.js → schema-Bn8rqd_f.js} +1 -1
  239. package/dist/client/assets/{schema-Dm_m9LVL.js → schema-D1LjZYZ_.js} +1 -1
  240. package/dist/client/assets/{scroll-area-CuMF5NiW.js → scroll-area-Cvpjc0l0.js} +1 -1
  241. package/dist/client/assets/{search-input-BTzoOGtl.js → search-input-CvytUoQu.js} +1 -1
  242. package/dist/client/assets/{search-toggle-DqerdjGH.js → search-toggle-DWczizY_.js} +1 -1
  243. package/dist/client/assets/{secret-ciphertext-gn0fPABs.js → secret-ciphertext-BOjfqnbQ.js} +1 -1
  244. package/dist/client/assets/{secret-picker-Ch2nVO3v.js → secret-picker-DR8k8utG.js} +1 -1
  245. package/dist/client/assets/{secrets-B5r6P4-B.js → secrets-B26-rytL.js} +1 -1
  246. package/dist/client/assets/{sections-editor-BMtYavHq.js → sections-editor-DIXfWh89.js} +1 -1
  247. package/dist/client/assets/{select-BcwZlsYZ.js → select-B9xwWJY1.js} +1 -1
  248. package/dist/client/assets/{select-model-BPZqELZd.js → select-model-BISIL0Kz.js} +1 -1
  249. package/dist/client/assets/{seo-editor-DbdPsW8q.js → seo-editor-BlwDgWbu.js} +1 -1
  250. package/dist/client/assets/{separator-D8OF4ezs.js → separator-fhIOQ41X.js} +1 -1
  251. package/dist/client/assets/{settings-tab-vFTyot1Q.js → settings-tab-msJQpCfG.js} +1 -1
  252. package/dist/client/assets/{sheet-Tquw41xW.js → sheet-Rjoe19XZ.js} +1 -1
  253. package/dist/client/assets/{shell-layout-CRO_nANS.js → shell-layout-fqXaSGsn.js} +1 -1
  254. package/dist/client/assets/site-editor-DZgKAtXf.js +1 -0
  255. package/dist/client/assets/{site-editor-toast-QZc2FiWC.js → site-editor-toast-CKw1dZ19.js} +1 -1
  256. package/dist/client/assets/{skills-Cy_1L7US.js → skills-C7DkipJu.js} +1 -1
  257. package/dist/client/assets/{slider-DLdIHTHb.js → slider-CHDMj7-G.js} +1 -1
  258. package/dist/client/assets/{sortable.esm-B-1sTrpw.js → sortable.esm-Dys0-jaI.js} +1 -1
  259. package/dist/client/assets/{sso-DntzhSMZ.js → sso-cg0TfFU1.js} +1 -1
  260. package/dist/client/assets/{suggestion-2eY-h_h6.js → suggestion-DpmKDRpP.js} +1 -1
  261. package/dist/client/assets/{switch-CXVVml8l.js → switch-Dyv9YUWT.js} +1 -1
  262. package/dist/client/assets/{symbol-GV0fNX6l.js → symbol-BK6V8ZzP.js} +1 -1
  263. package/dist/client/assets/{synced-repos-DA72w12p.js → synced-repos-DpQU86pc.js} +1 -1
  264. package/dist/client/assets/{tab-icon-glyph-BebaLHRL.js → tab-icon-glyph-KVUtF-xE.js} +1 -1
  265. package/dist/client/assets/{table-D9xONBRn.js → table-9i0Xw8tZ.js} +1 -1
  266. package/dist/client/assets/{tabs-B41SM090.js → tabs-h2gBBRzw.js} +1 -1
  267. package/dist/client/assets/{task-board-CTuiBIsg.js → task-board-AWLuhkrp.js} +1 -1
  268. package/dist/client/assets/{task-route-BKkIPiry.js → task-route-BfCPNuEb.js} +1 -1
  269. package/dist/client/assets/{task-status-B4XVkPYj.js → task-status-C0Jba3Xb.js} +1 -1
  270. package/dist/client/assets/taskboard-analytics-DOVTfSds.js +1 -0
  271. package/dist/client/assets/{tasks-BVB1PaAg.js → tasks-B3wC6JY6.js} +1 -1
  272. package/dist/client/assets/tasks-DhO2f9o0.js +1 -0
  273. package/dist/client/assets/{textarea-BqrbUXb-.js → textarea-7aD59y1C.js} +1 -1
  274. package/dist/client/assets/{thread-analytics-CPeiiA8I.js → thread-analytics-B5RrlZAS.js} +1 -1
  275. package/dist/client/assets/{thread-intent-DLDiaL9G.js → thread-intent-YA4iB4rg.js} +1 -1
  276. package/dist/client/assets/{thread-route-lxlAvBuV.js → thread-route-B90y2Ttt.js} +1 -1
  277. package/dist/client/assets/{thread-route-BmrY96Lm.js → thread-route-BgOTv3tU.js} +1 -1
  278. package/dist/client/assets/{thread-sheet-body-BDL2hItT.js → thread-sheet-body-DBmCCiJG.js} +1 -1
  279. package/dist/client/assets/{time-range-picker-CvpfBHpe.js → time-range-picker-CWWLy_3R.js} +1 -1
  280. package/dist/client/assets/{toggle-group-DalyAtPg.js → toggle-group-DRNkGgUT.js} +1 -1
  281. package/dist/client/assets/{tool-namespace-B_k1k0fN.js → tool-namespace-C83WlsNL.js} +1 -1
  282. package/dist/client/assets/{toolbar-icon-button-DpCNxe0K.js → toolbar-icon-button-Bt6CBlAy.js} +1 -1
  283. package/dist/client/assets/{tooltip-B_25NPmf.js → tooltip-Djfj4yvo.js} +1 -1
  284. package/dist/client/assets/{tooltipContext-n2PgKNg2.js → tooltipContext-B0xkDjO4.js} +1 -1
  285. package/dist/client/assets/{track-bhmAWi0b.js → track-aEjANf-j.js} +1 -1
  286. package/dist/client/assets/{types-BUQqhAId.js → types-DSQN8Y9X.js} +1 -1
  287. package/dist/client/assets/{url-slug-CNFZ5XX5.js → url-slug-DNuO5vGK.js} +1 -1
  288. package/dist/client/assets/{usage-stats-DvhuVEjC.js → usage-stats-BXR_QJg-.js} +1 -1
  289. package/dist/client/assets/{use-ai-providers-BPhJ1yF7.js → use-ai-providers-CS760siL.js} +1 -1
  290. package/dist/client/assets/{use-app-takeover-CDJv15ZB.js → use-app-takeover-BiROkfIG.js} +1 -1
  291. package/dist/client/assets/{use-automations-DJ_ikQdz.js → use-automations-C8HNZgvV.js} +1 -1
  292. package/dist/client/assets/{use-autosave-BoHkhP2m.js → use-autosave-DiQgKPVz.js} +1 -1
  293. package/dist/client/assets/{use-chat-navigation-DUbS_iPM.js → use-chat-navigation-CkUks0CI.js} +1 -1
  294. package/dist/client/assets/{use-clock-tick-as5oTZgN.js → use-clock-tick-D9Y3YKA4.js} +1 -1
  295. package/dist/client/assets/{use-connect-companion-DqVGkDIM.js → use-connect-companion-Dh2GSI2w.js} +1 -1
  296. package/dist/client/assets/{use-connection-DY-WagAa.js → use-connection-CYm-Vxmx.js} +1 -1
  297. package/dist/client/assets/{use-copy-ClD4s_TM.js → use-copy-C0ICuN7j.js} +1 -1
  298. package/dist/client/assets/{use-create-virtual-mcp-Dohl0Zfh.js → use-create-virtual-mcp-iJVLGT10.js} +1 -1
  299. package/dist/client/assets/{use-date-fns-locale-Dz5rWTWI.js → use-date-fns-locale-BEXRTRYo.js} +1 -1
  300. package/dist/client/assets/{use-debounced-autosave-WFKR23sx.js → use-debounced-autosave-Z24y5bHD.js} +1 -1
  301. package/dist/client/assets/{use-debounced-value-Dp8C9zA0.js → use-debounced-value-Tstd89O2.js} +1 -1
  302. package/dist/client/assets/{use-deco-credits-BnZ_gdH3.js → use-deco-credits-a2fVSYw4.js} +1 -1
  303. package/dist/client/assets/{use-decopilot-events-DL9_5J0E.js → use-decopilot-events-B59p52EB.js} +1 -1
  304. package/dist/client/assets/{use-delete-connection-tC-TfItZ.js → use-delete-connection-CjcSXnbW.js} +1 -1
  305. package/dist/client/assets/{use-deployment-admin-Zvs9DkeF.js → use-deployment-admin-gB6Ubqa0.js} +1 -1
  306. package/dist/client/assets/{use-ensure-project-folder-d3UBGQ7Q.js → use-ensure-project-folder-DakHhVfG.js} +1 -1
  307. package/dist/client/assets/{use-fast-preview-draft-url-hO7HQWlE.js → use-fast-preview-draft-url-BElMJQru.js} +1 -1
  308. package/dist/client/assets/{use-file-configs-BMy41NVN.js → use-file-configs-CMXUzCw9.js} +1 -1
  309. package/dist/client/assets/{use-infinite-scroll-BPodZDx6.js → use-infinite-scroll-Bkeb3Emc.js} +1 -1
  310. package/dist/client/assets/{use-join-requests-DuckoeAL.js → use-join-requests-Bt9kCP2g.js} +1 -1
  311. package/dist/client/assets/{use-main-panel-tabs-BI77ol7M.js → use-main-panel-tabs-DiN00eBp.js} +1 -1
  312. package/dist/client/assets/{use-mcp-auth-status-CoEvprj1.js → use-mcp-auth-status-C8SSMyOQ.js} +1 -1
  313. package/dist/client/assets/{use-mcp-client-B5o4BaiL.js → use-mcp-client-DXWvBBzU.js} +1 -1
  314. package/dist/client/assets/{use-mcp-prompts-BitxABIK.js → use-mcp-prompts-D5_raFI0.js} +1 -1
  315. package/dist/client/assets/{use-mcp-tools-Dz-ZY0cO.js → use-mcp-tools-BA7tqEjQ.js} +1 -1
  316. package/dist/client/assets/{use-members-DgrZSQ5N.js → use-members-CBJHrFbr.js} +1 -1
  317. package/dist/client/assets/{use-mobile-59ztD2wt.js → use-mobile-DVlrjJnR.js} +1 -1
  318. package/dist/client/assets/{use-navigate-to-agent-CZ4dW_nQ.js → use-navigate-to-agent-zweZgwVY.js} +1 -1
  319. package/dist/client/assets/{use-open-billing-url-BYy0ucSY.js → use-open-billing-url-CZCPBR61.js} +1 -1
  320. package/dist/client/assets/{use-org-auth-client-BSKCTJ83.js → use-org-auth-client-QUHxqp7u.js} +1 -1
  321. package/dist/client/assets/{use-org-fs-DFXSn92O.js → use-org-fs-ZG2jF1ev.js} +1 -1
  322. package/dist/client/assets/{use-org-repo-syncs-BU7kIMDH.js → use-org-repo-syncs-BkNHAu91.js} +1 -1
  323. package/dist/client/assets/{use-org-sso-Bd_oapaS.js → use-org-sso-BY7vua13.js} +1 -1
  324. package/dist/client/assets/{use-organization-roles-CqAArcm0.js → use-organization-roles-BX0bRQ46.js} +1 -1
  325. package/dist/client/assets/{use-organization-settings-C20lZFsL.js → use-organization-settings-DrbkHsVi.js} +1 -1
  326. package/dist/client/assets/{use-panel-navigate-B6CuCVz_.js → use-panel-navigate-CgLeC7oT.js} +1 -1
  327. package/dist/client/assets/{use-project-native-view-presence-CEzqnREe.js → use-project-native-view-presence-FuvDcd3j.js} +1 -1
  328. package/dist/client/assets/{use-project-scope-M2K9oclq.js → use-project-scope-Mbz61u0U.js} +1 -1
  329. package/dist/client/assets/{use-recent-apps-CCygNwnl.js → use-recent-apps-ByE0IPMO.js} +1 -1
  330. package/dist/client/assets/{use-releases-S6PeIcAD.js → use-releases-Cn9YGFYD.js} +1 -1
  331. package/dist/client/assets/{use-reports-diagnostic-BffjEquQ.js → use-reports-diagnostic-CNH6bT_s.js} +1 -1
  332. package/dist/client/assets/{use-secrets-DpgJFxgU.js → use-secrets-BdA07xp7.js} +1 -1
  333. package/dist/client/assets/{use-section-preview-base-DNUW6AnY.js → use-section-preview-base-BGUJwyF6.js} +1 -1
  334. package/dist/client/assets/{use-tags-D0wS2Sck.js → use-tags-RK2ALcRH.js} +1 -1
  335. package/dist/client/assets/{use-task-board-analytics-Cpw8ZqbL.js → use-task-board-analytics-Lm2x_Ld6.js} +1 -1
  336. package/dist/client/assets/{use-task-board-events-St3hyfJR.js → use-task-board-events-CwaYpBZ3.js} +1 -1
  337. package/dist/client/assets/{use-task-board-item-prs-A3pxuCiu.js → use-task-board-item-prs-DuoDCPJm.js} +1 -1
  338. package/dist/client/assets/{use-task-board-items-Cb7mJa2E.js → use-task-board-items-C9iR5m8M.js} +1 -1
  339. package/dist/client/assets/{use-task-metadata-BvqNr1xh.js → use-task-metadata-BOySMSW9.js} +1 -1
  340. package/dist/client/assets/{use-thread-analytics-TrkPln87.js → use-thread-analytics-B-6hcr7K.js} +1 -1
  341. package/dist/client/assets/{use-thread-outputs-D7s2dcMd.js → use-thread-outputs-Bnh-FZdC.js} +1 -1
  342. package/dist/client/assets/useInfiniteQuery-9rJQjSuN.js +1 -0
  343. package/dist/client/assets/{useQueries-DpIF9hue.js → useQueries-BWCAInNJ.js} +1 -1
  344. package/dist/client/assets/useSuspenseInfiniteQuery-xLkb2FEg.js +1 -0
  345. package/dist/client/assets/{users-BuGS3MO1.js → users-BSQM-sro.js} +1 -1
  346. package/dist/client/assets/{utils-DjpuMjJB.js → utils-aJ0jY1W-.js} +1 -1
  347. package/dist/client/assets/{variant-calendar-BzMHTyr7.js → variant-calendar-CHK_OU2h.js} +1 -1
  348. package/dist/client/assets/{variant-draft-pointer-Blas_1gl.js → variant-draft-pointer-1dv3zT6b.js} +1 -1
  349. package/dist/client/assets/{view-mode-toggle-BIZQrhSv.js → view-mode-toggle-C14-toNe.js} +1 -1
  350. package/dist/client/assets/{virtual-mcp-nLZqaKxm.js → virtual-mcp-QuhvrKMt.js} +1 -1
  351. package/dist/client/assets/{watch-sse-pool-DVveSXgO.js → watch-sse-pool-CWMRkqIp.js} +1 -1
  352. package/dist/client/index.html +1 -1
  353. package/dist/server/server.js +1 -1
  354. package/package.json +2 -2
  355. package/dist/client/assets/agent-app-Oq4eJczx.js +0 -1
  356. package/dist/client/assets/agent-deck-CIKn9u0n.js +0 -1
  357. package/dist/client/assets/agent-library-Cwk-ahrq.js +0 -1
  358. package/dist/client/assets/agent-library-file-DFD1GRFs.js +0 -1
  359. package/dist/client/assets/agent-settings-BdRr_yLn.js +0 -1
  360. package/dist/client/assets/agent-site-editor-code-Dqg-zKcM.js +0 -2
  361. package/dist/client/assets/agent-site-editor-content-B2z3MWs5.js +0 -1
  362. package/dist/client/assets/agent-site-editor-preview-CV8VJTYA.js +0 -1
  363. package/dist/client/assets/agent-view-DB-tAcZk.js +0 -1
  364. package/dist/client/assets/api-keys-CquzZ0_l.js +0 -1
  365. package/dist/client/assets/cms-settings-editor-C8x3kSEg.js +0 -1
  366. package/dist/client/assets/flat-project-BtG_ijLj.js +0 -1
  367. package/dist/client/assets/library-CEn0n3Pq.js +0 -1
  368. package/dist/client/assets/project-reports-qHjypV2b.js +0 -1
  369. package/dist/client/assets/project-tasks-BSdX2U8o.js +0 -1
  370. package/dist/client/assets/record-editor-CbXWgwLJ.js +0 -1
  371. package/dist/client/assets/reports-CzM2YmW4.js +0 -1
  372. package/dist/client/assets/route-Czz5Bs8C.js +0 -1
  373. package/dist/client/assets/site-editor-Ciqo201x.js +0 -1
  374. package/dist/client/assets/taskboard-analytics-DqmyZkwS.js +0 -1
  375. package/dist/client/assets/tasks-Cp1quWcN.js +0 -1
  376. package/dist/client/assets/useInfiniteQuery-C4Z0Ecih.js +0 -1
  377. package/dist/client/assets/useSuspenseInfiniteQuery-DgVkw039.js +0 -1
@@ -4406,7 +4406,7 @@ ${X}`:`${Y}
4406
4406
 
4407
4407
  ${X}
4408
4408
  ${J.slice(Y.length).trimStart()}`}function oO8($){return $?.match(bW5)?.[1]?.toLowerCase()??null}async function gW5($,Z,Q){let[Y,X]=await Promise.all([$.client.listDecofileEntries(Z,$.packagePath),$.client.listDecofileEntries(Q,$.packagePath)]),J=new Map(fK(Y,$.packagePath).map((H)=>[H.path,H.sha])),G=fK(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 tO8($,Z){try{return await PQ0($.client,$.packagePath,Z)}catch(Q){if(Q instanceof Bs)return null;throw Q}}async function sO8($,Z,Q){let Y=NP($.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([tO8($,Z),tO8($,Q)]);return G!==W}async function rO8($,Z){if(!KD0(Z))throw new cu;if(!await cA1($.store,$.site,Z))throw new cu}async function aO8($,Z){await rO8($,Z);let Q=await $9($.client,$.mainBranch);return sO8($,Q,Z)}async function eO8($,Z,Q={},Y={}){await rO8($,Z);let X=await $.client.readCommit(Z);if(!X)throw new cu;let J=await $9($.client,$.mainBranch),G=await gW5($,J,Z);if(G.changes.length===0)return{result:"up-to-date"};let W=await sO8($,J,Z);if(W)console.info("hosted reapply: schema differs",{site:$.site,target:Z,head:J});let K=await mA1($,J,G,yW5(X,Z,Q.coAuthor));return{result:"merged",sha:K,release:await pA1($,K,Y),schemaChanged:W}}var cu,AQ0="Reapply: ",_W5,vW5="Reapplied-From",bW5;var sA1=L(()=>{$n();T5();_F();rN();zQ0();$g0();cu=class cu extends Error{constructor(){super("This commit has no release");this.name="NotPublishedError"}};_W5=/^chore\(decofile\):/,bW5=/^Reapplied-From:\s*([0-9a-f]{40})\s*$/im});async function $w8($,Z,Q){let[Y,X,J]=await Promise.all([bO8($.store,$.site),Lq$($.store,$.site),Z.listCommits({ref:$.mainBranch,since:uW5,cursor:Q,limit:hW5})]),G=new Map(J.items.map((H)=>[H.sha,H.date])),W=J.items.map((H)=>oO8(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 Zw8($){let Z=await $9($.client,$.mainBranch),Q=await dA1($,Z),Y={revision:Z,schemaHash:Q,publishedAt:new Date().toISOString()};return await iA1($,Y),Y}var hW5=50,uW5="1970-01-01T00:00:00Z";var Qw8=L(()=>{T5();rN();zQ0();sA1()});function Yw8($){return`site-tokens:${$}`}function lW5($){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 Xw8($){return crypto.subtle.importKey("pkcs8",Buffer.from($,"base64"),{name:"Ed25519"},!1,["sign"])}async function cW5($,Z){let Q=(J)=>rA1(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}.${rA1(X)}`}function Jw8($){let Z=async(Q,Y)=>lW5(await $.kv.get(Q,Yw8(Y)));return{list:Z,async issue(Q,Y){let X=await Z(Q,Y),J={kid:rA1(crypto.getRandomValues(new Uint8Array(16))),iat:Math.floor(Date.now()/1000)},G=await cW5(await $.signingKey(),{site:Y,...J});return await $.kv.set(Q,Yw8(Y),{tokens:[...X,J]}),{token:G,record:J}}}}var rA1=($)=>Buffer.from($ instanceof Uint8Array?$:new Uint8Array($)).toString("base64url");function dW5(){let $=Dp();return $?{store:$,purge:ry0()}:null}async function Jg0($){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}}function Gw8($){let Z=B0().siteTokenSigningKey;if(!Z)return null;return Jw8({kv:$.var.studioContext.storage.kv,signingKey:()=>Xw8(Z)})}function ws($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof Bs)return $.json({error:Q},409);if(Z instanceof Zg0)return console.error("hosted: latest.json update failed",{error:Q}),$.json({error:"latest-update-failed"},502);let Y=SG(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 Ww8($={}){let Z=new Z1,Q=$.repoClientFor??vG,Y=$.insightsFor??CT$,X=$.delivery??dW5;return Z.use("*",async(J,G)=>{J.set("repoClientFor",Q),J.set("delivery",X),await G()}),Z.use("/:virtualMcpId/*",mW5),Z.get("/:virtualMcpId/releases",async(J)=>{try{let G=await Jg0(J);if(!G)return J.json(Xg0,503);let W=J.get("hostedProject"),K=await Y(J.var.studioContext,W.organizationId,W.repository);return J.json(await $w8(G,K,J.req.query("cursor")??null),200,{"Cache-Control":"no-store"})}catch(G){return ws(J,G)}}),Z.post("/:virtualMcpId/releases/retry",async(J)=>{try{let G=await Jg0(J);if(!G)return J.json(Xg0,503);return J.json({current:await Zw8(G)})}catch(G){return ws(J,G)}}),Z.get("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Jg0(J);if(!G)return J.json(Xg0,503);return J.json({schemaChanged:await aO8(G,J.req.param("sha"))})}catch(G){if(G instanceof cu)return J.json({error:G.message},404);return ws(J,G)}}),Z.post("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Jg0(J);if(!G)return J.json(Xg0,503);let W=await eO8(G,J.req.param("sha"),{coAuthor:oL(J.var.studioContext)});return J.json(W)}catch(G){if(G instanceof cu)return J.json({error:G.message},404);if(G instanceof Ds)return J.json({error:"main-moved"},409);return ws(J,G)}}),Z.get("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=Gw8(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=Gw8(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 rq(K,G.packagePath,await K.getDefaultBranch());if(await wp(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 ws(J,K)}}),Z}var mW5,Xg0;var Kw8=L(()=>{IF();Y8();xy0();VG();kF();T5();rN();lA1();zQ0();$g0();Qw8();sA1();x60();aq();Op();u1();kR();mW5=eo(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(!VQ(await r7(Q),X))return $.json({error:"Virtual MCP not found"},404);let G=J.metadata??null,W=QW(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 ND0({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 ws($,H)}let K=await UD0(Q.storage.orgSites,X,Y.id);if(!K)return $.json(Lp,409);return $.set("hostedProject",{organizationId:Y.id,virtualMcpId:X,site:K,packagePath:aN(G),repository:W,metadata:G}),Z()}),Xg0={error:"hosted delivery not configured"}});var Hw8=($)=>{let Z=new Z1;if(Z.use("*",Io),Z.use("*",yF8),Z.route("/",xF8($.voiceSessions)),Z.route("/",df0()),Z.route("/",DU8()),Z.route("/",MU8()),Z.route("/",HU8()),Z.route("/",CD8()),Z.route("/",_D8()),Z.route("/",AD8()),Z.route("/",ID8()),Z.route("/",qD8()),Z.route("/",_y0()),Z.route("/tools",hD8()),Z.route("/",fD8()),Z.route("/",QD8({kvStorage:$.kvStorage})),Z.route("/",$D8()),Z.route("/fs",BD8({getConnection:$.getNatsConnection})),Z.route("/sandbox",DO8()),Z.route("/decofile",pO8()),Z.route("/hosted",Ww8()),Z.route("/",ED8()),Z.route("/",LD8()),Z.route("/deco-sites",pf0()),Z.route("/hosting",tF8()),Z.route("/monitor",ZU8()),Z.route("/order-monitor",JU8()),Z.route("/sso",gf0()),Z.route("/",vy0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",mF8()),$.mountDevAssets)Z.route("/dev-assets",sf0({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 t21)Z.use(`${Q}/:threadId`,$.mcpAuth);Z.route("/",WW8()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler);for(let Q of t21)Z.route(Q,wD8());return Z.route("/mcp",ub0()),Z.route("/mcp/self",Iy0()),Z.route("/mcp",mb0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Fw8=L(()=>{Y8();fF8();gF8();Vf0();dF8();zz1();oF8();QU8();GU8();rf0();N2();Oz1();LU8();Vz1();ZD8();YD8();DD8();OD8();cZ0();Wz1();db0();n21();jD8();PD8();TD8();RD8();r21();SD8();vD8();yD8();a21();uD8();e21();lb0();LO8();nO8();Kw8()});import{z as mu}from"zod";class aA1{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 Bw8.Kvm(Gg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Gg0.StorageType.Memory,ttl:Dw8.nanos(DO),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"?Nw8.parse(X.json()):null;if(J?.state==="ready")return J.agentId;if(J?.state==="creating"&&J.expiresAt>Date.now()){await J$(200);continue}let G=Uw8.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 J$(200);continue}try{let K=await $.ensureConversationAgent();return await Z.update(Q,Uw8.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"?Nw8.parse(G.json()):null;if(G&&W?.state==="ready"&&W.agentId===Q)await X.delete(J,{previousSeq:G.revision}).catch(()=>{});throw Y}}}var Gg0,Bw8,Dw8,Uw8,Nw8;var Lw8=L(()=>{NG();RB();n$();Gg0=_(_H(),1),Bw8=_(Vq(),1),Dw8=_(m2(),1),Uw8=new TextEncoder,Nw8=mu.discriminatedUnion("state",[mu.object({state:mu.literal("ready"),agentId:mu.string()}),mu.object({state:mu.literal("creating"),expiresAt:mu.number()})])});import{z as js}from"zod";function iW5($){return{model:$.model,instructions:`${Bt$}
4409
- Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class eA1{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:iW5({...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:js.object({session:js.object({id:js.string().min(1)}),transport:js.object({type:js.literal("webrtc"),sdp:js.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var Ow8=L(()=>{RB()});var ww8;var jw8=L(()=>{ww8=[{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 $T1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:Ut$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:ww8.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:DO/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 Ew8=L(()=>{RB();jw8()});import{z as iJ}from"zod";import{createHash as pW5,createHmac as nW5}from"crypto";class Wg0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=pW5("sha256").update(JSON.stringify($T1($))).digest("hex"),this.conversationKey=nW5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Wg0({...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}=iJ.object({agents:iJ.array(iJ.object({agent_id:iJ.string(),name:iJ.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 iJ.object({platform_settings:iJ.object({auth:iJ.object({enable_auth:iJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...$T1(this.config)},AbortSignal.timeout(15000));return iJ.object({agent_id:iJ.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 iJ.object({token:iJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return iJ.object({token:iJ.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 Pw8=L(()=>{Ew8()});import{createHmac as tW5,timingSafeEqual as oW5}from"crypto";import{z as Es}from"zod";function Aw8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return tW5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function Tw8($,Z){let Q=Buffer.from(JSON.stringify(zw8.parse($))).toString("base64url");return`${Q}.${Aw8(Q,Z)}`}function qw8($,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(Aw8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!oW5(W,G))return null;try{let K=zw8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+DO)return null;return K.data}catch{return null}}var zw8;var Rw8=L(()=>{RB();zw8=Es.object({sessionId:Es.string().uuid(),organizationId:Es.string().min(1).max(256),userId:Es.string().min(1).max(256),threadId:Es.string().min(1).max(256),expiresAt:Es.number().int().positive()})});import{z as ZT1}from"zod";function Mw8($,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 QT1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var QT1;var Vw8=L(()=>{QT1=ZT1.object({provider:ZT1.enum(["elevenlabs","openai"]),model:ZT1.string().trim().min(1).max(128)})});import{createHash as sW5}from"crypto";import{z as Ps}from"zod";function zs($){return`user.${sW5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class XT1{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 Iw8.Kvm(Hg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Hg0.StorageType.Memory,ttl:kw8.nanos(DO),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=Mw8(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()+DO},W=Tw8(G,this.deps.secret),K=await this.kv(),H=zs(G),F=await K.get(H),U=F?.operation==="PUT"?Kg0.parse(F.json()):null,N=YT1.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:zs($)});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=qw8(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=zs(Q),J=await Y.get(X),G=J?.operation==="PUT"?Kg0.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,YT1.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=zs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Kg0.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,YT1.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(zs($));if(Q?.operation==="PUT"&&Kg0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(zs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var Hg0,Iw8,kw8,Kg0,YT1;var Cw8=L(()=>{NG();RB();Rw8();Vw8();Hg0=_(_H(),1),Iw8=_(Vq(),1),kw8=_(m2(),1),Kg0=Ps.object({sessionId:Ps.string().uuid(),expiresAt:Ps.number(),connected:Ps.boolean().optional(),conversation:QT1.optional(),characters:Ps.number().int().nonnegative(),requests:Ps.number().int().nonnegative()}),YT1=new TextEncoder});function rW5($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var aW5=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Sw8=()=>{let $=new Z1;return $.use("*",aW5),$.get("/",async(Z)=>{let Q=B0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await jX(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:rW5(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var _w8=L(()=>{Y8();u1();h60()});import{z as m1}from"zod";function sB($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function KK5($){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 HK5($,Z,Q){try{return JSON.parse($)}catch{throw new xw8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function FK5($){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:HK5(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 UK5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?PN(Q.function.parameters):PN({type:"object",properties:{}});return[Q.function.name,s$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function NK5($){if(!$)return;return{openai:{response_format:$}}}function BK5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function vw8($,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 bw8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var eW5=256,$K5,ZK5,QK5,YK5,XK5,JK5,GK5,WK5,xw8,fw8,yw8;var gw8=L(()=>{l4();Y8();ao();JU();$K5=m1.object({type:m1.literal("function"),function:m1.object({name:m1.string(),description:m1.string().optional(),parameters:m1.record(m1.string(),m1.unknown()).optional()})}),ZK5=m1.object({id:m1.string(),type:m1.literal("function"),function:m1.object({name:m1.string(),arguments:m1.string()})}),QK5=m1.discriminatedUnion("role",[m1.object({role:m1.literal("system"),content:m1.string(),name:m1.string().optional()}),m1.object({role:m1.literal("user"),content:m1.union([m1.string(),m1.array(m1.union([m1.object({type:m1.literal("text"),text:m1.string()}),m1.object({type:m1.literal("image_url"),image_url:m1.object({url:m1.string(),detail:m1.string().optional()})})]))]),name:m1.string().optional()}),m1.object({role:m1.literal("assistant"),content:m1.string().nullable().optional(),name:m1.string().optional(),tool_calls:m1.array(ZK5).optional()}),m1.object({role:m1.literal("tool"),content:m1.string(),tool_call_id:m1.string()})]),YK5=m1.object({type:m1.literal("text")}),XK5=m1.object({type:m1.literal("json_object")}),JK5=m1.object({type:m1.literal("json_schema"),json_schema:m1.object({name:m1.string(),description:m1.string().optional(),schema:m1.record(m1.string(),m1.unknown()),strict:m1.boolean().optional()})}),GK5=m1.union([YK5,XK5,JK5]),WK5=m1.object({model:m1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:m1.array(QK5),stream:m1.boolean().optional().default(!1),temperature:m1.number().min(0).max(2).optional(),max_tokens:m1.number().positive().optional(),top_p:m1.number().min(0).max(1).optional(),frequency_penalty:m1.number().min(-2).max(2).optional(),presence_penalty:m1.number().min(-2).max(2).optional(),stop:m1.union([m1.string(),m1.array(m1.string())]).optional(),tools:m1.array($K5).optional(),tool_choice:m1.union([m1.literal("auto"),m1.literal("none"),m1.literal("required"),m1.object({type:m1.literal("function"),function:m1.object({name:m1.string()})})]).optional(),response_format:GK5.optional(),user:m1.string().optional()});xw8=class xw8 extends Error{constructor($){super($);this.name="MessageConversionError"}};fw8=new Z1;fw8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(sB("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(sB("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(sB("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=WK5.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(sB(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=KK5(J.model);if(!G)return $.json(sB("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 j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>fA(E.providerId));if(!j)return $.json(sB("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=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(sB(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=FK5(J.messages),N=J.tools?UK5(J.tools):void 0,B=NK5(J.response_format),D=BK5(),O=Math.floor(Date.now()/1000);if(J.stream)return Gw($,async(w)=>{let j=vw8(F,U,N,J,B,$.req.raw.signal);try{let E=Yt(j),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let R=z;z="",await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{content:R},finish_reason:null}]})})};for await(let R of E.stream){if(!P&&(R.type==="text-delta"||R.type==="tool-call"))await w.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(R.type==="text-delta"){if(z+=R.text,z.length>=eW5)await A()}else if(R.type==="tool-call"){await A();let f=T++;await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:R.toolCallId,type:"function",function:{name:R.toolName,arguments:JSON.stringify(R.input)}}]},finish_reason:null}]})})}else if(R.type==="finish")await A(),await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:bw8(R.finishReason)}],usage:R.totalUsage?{prompt_tokens:R.totalUsage.inputTokens??0,completion_tokens:R.totalUsage.outputTokens??0,total_tokens:R.totalUsage.totalTokens??0}:void 0})})}await A(),await w.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await w.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let w=vw8(F,U,N,J,B,$.req.raw.signal),j=await jO(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.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:bw8(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(sB("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(sB(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(sB(X.message,"server_error"),500)}});yw8=fw8});function DK5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function hw8(){let $=new Z1;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=_0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!_5(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||l9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(lA(U)!==J)continue;if(!DK5(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 uw8=L(()=>{Y8();rY()});var Fg0;var JT1=L(()=>{Fg0={name:"decocms",version:"4.503.3",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.4.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 wK5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??OK5}}var lw8,OK5="https://ph.studio.decocms.com",cw8;var mw8=L(()=>{Y8();F10();rh();H9();u1();Ho();nP1();JT1();lw8=new Z1;lw8.get("/",($)=>{let Z={version:Fg0.version,theme:M3$(),...HF().logo&&{logo:HF().logo},...kO()&&{internalUrl:n1$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&J2(),plansEnabled:B0().plansEnabled,auth:VH8(),posthog:wK5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:PU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});cw8=lw8});import{z as R$}from"zod";var jK5,dw8;var iw8=L(()=>{jK5=R$.object({check_id:R$.string(),title:R$.string(),description:R$.string().optional(),impact:R$.string().optional(),why:R$.string().optional(),category:R$.string(),severity:R$.string(),value_band:R$.string().optional(),value_driver:R$.string().optional(),controllability:R$.string().optional(),pages:R$.array(R$.string()),tasks:R$.array(R$.string()),evidence:R$.string(),sample_scope:R$.string().optional(),sources:R$.array(R$.string())}),dw8=R$.object({domain:R$.string(),brand:R$.string(),favicon:R$.string().optional(),scanned_at:R$.string().nullable(),lang:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),totals:R$.object({measured:R$.number(),registry_total:R$.number(),passed:R$.number(),failed:R$.number(),blocked:R$.number()}),buckets:R$.array(R$.object({id:R$.enum(["critical","important","worth"]),label:R$.string(),items:R$.array(jK5)})),passing:R$.object({count:R$.number(),items:R$.array(R$.object({check_id:R$.string(),title:R$.string()}))}),not_measured:R$.object({count:R$.number(),groups:R$.array(R$.object({reason:R$.string(),label:R$.string(),count:R$.number(),checks:R$.array(R$.string())}))}),categories:R$.array(R$.object({key:R$.string(),label:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),pass:R$.number(),fail:R$.number()})),screenshots:R$.array(R$.object({url:R$.string(),page_type:R$.string().optional(),viewport:R$.enum(["desktop","mobile"]),image_url:R$.string()}))})});function pw8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${kK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function Ug0($,Z={}){let Q=await fetch(pw8($,"",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 dw8.parse(await Q.json())}async function nw8($,Z={}){let Q=await fetch(pw8($,".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 GT1=L(()=>{iw8();kL()});import{join as tw8}from"path";async function PK5($){try{let Z=await Ug0($,{signal:AbortSignal.timeout(EK5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||zj1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function Q3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function zK5($,Z){let Q=Pu($),Y=Z?.brand?.trim()||zj1(Q),X=ZG8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=QG8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${Q3(W)}</title>`,`<meta name="description" content="${Q3(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="${Q3(W)}" />`,`<meta property="og:description" content="${Q3(K)}" />`,`<meta property="og:url" content="${Q3(G)}" />`,`<meta property="og:image" content="${Q3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${Q3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${Q3(W)}" />`,`<meta name="twitter:description" content="${Q3(K)}" />`,`<meta name="twitter:image" content="${Q3(H)}" />`,`<meta name="twitter:image:alt" content="${Q3(F)}" />`,`<link rel="canonical" href="${Q3(G)}" />`,`<link rel="alternate" type="text/markdown" href="${Q3(G)}.md" />`,`<link rel="icon" href="${Q3(X)}" sizes="any" />`].join(`
4409
+ Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class eA1{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:iW5({...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:js.object({session:js.object({id:js.string().min(1)}),transport:js.object({type:js.literal("webrtc"),sdp:js.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var Ow8=L(()=>{RB()});var ww8;var jw8=L(()=>{ww8=[{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 $T1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:Ut$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:ww8.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:DO/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 Ew8=L(()=>{RB();jw8()});import{z as iJ}from"zod";import{createHash as pW5,createHmac as nW5}from"crypto";class Wg0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=pW5("sha256").update(JSON.stringify($T1($))).digest("hex"),this.conversationKey=nW5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Wg0({...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}=iJ.object({agents:iJ.array(iJ.object({agent_id:iJ.string(),name:iJ.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 iJ.object({platform_settings:iJ.object({auth:iJ.object({enable_auth:iJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...$T1(this.config)},AbortSignal.timeout(15000));return iJ.object({agent_id:iJ.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 iJ.object({token:iJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return iJ.object({token:iJ.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 Pw8=L(()=>{Ew8()});import{createHmac as tW5,timingSafeEqual as oW5}from"crypto";import{z as Es}from"zod";function Aw8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return tW5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function Tw8($,Z){let Q=Buffer.from(JSON.stringify(zw8.parse($))).toString("base64url");return`${Q}.${Aw8(Q,Z)}`}function qw8($,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(Aw8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!oW5(W,G))return null;try{let K=zw8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+DO)return null;return K.data}catch{return null}}var zw8;var Rw8=L(()=>{RB();zw8=Es.object({sessionId:Es.string().uuid(),organizationId:Es.string().min(1).max(256),userId:Es.string().min(1).max(256),threadId:Es.string().min(1).max(256),expiresAt:Es.number().int().positive()})});import{z as ZT1}from"zod";function Mw8($,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 QT1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var QT1;var Vw8=L(()=>{QT1=ZT1.object({provider:ZT1.enum(["elevenlabs","openai"]),model:ZT1.string().trim().min(1).max(128)})});import{createHash as sW5}from"crypto";import{z as Ps}from"zod";function zs($){return`user.${sW5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class XT1{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 Iw8.Kvm(Hg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Hg0.StorageType.Memory,ttl:kw8.nanos(DO),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=Mw8(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()+DO},W=Tw8(G,this.deps.secret),K=await this.kv(),H=zs(G),F=await K.get(H),U=F?.operation==="PUT"?Kg0.parse(F.json()):null,N=YT1.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:zs($)});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=qw8(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=zs(Q),J=await Y.get(X),G=J?.operation==="PUT"?Kg0.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,YT1.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=zs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Kg0.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,YT1.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(zs($));if(Q?.operation==="PUT"&&Kg0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(zs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var Hg0,Iw8,kw8,Kg0,YT1;var Cw8=L(()=>{NG();RB();Rw8();Vw8();Hg0=_(_H(),1),Iw8=_(Vq(),1),kw8=_(m2(),1),Kg0=Ps.object({sessionId:Ps.string().uuid(),expiresAt:Ps.number(),connected:Ps.boolean().optional(),conversation:QT1.optional(),characters:Ps.number().int().nonnegative(),requests:Ps.number().int().nonnegative()}),YT1=new TextEncoder});function rW5($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var aW5=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Sw8=()=>{let $=new Z1;return $.use("*",aW5),$.get("/",async(Z)=>{let Q=B0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await jX(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:rW5(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var _w8=L(()=>{Y8();u1();h60()});import{z as m1}from"zod";function sB($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function KK5($){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 HK5($,Z,Q){try{return JSON.parse($)}catch{throw new xw8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function FK5($){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:HK5(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 UK5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?PN(Q.function.parameters):PN({type:"object",properties:{}});return[Q.function.name,s$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function NK5($){if(!$)return;return{openai:{response_format:$}}}function BK5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function vw8($,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 bw8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var eW5=256,$K5,ZK5,QK5,YK5,XK5,JK5,GK5,WK5,xw8,fw8,yw8;var gw8=L(()=>{l4();Y8();ao();JU();$K5=m1.object({type:m1.literal("function"),function:m1.object({name:m1.string(),description:m1.string().optional(),parameters:m1.record(m1.string(),m1.unknown()).optional()})}),ZK5=m1.object({id:m1.string(),type:m1.literal("function"),function:m1.object({name:m1.string(),arguments:m1.string()})}),QK5=m1.discriminatedUnion("role",[m1.object({role:m1.literal("system"),content:m1.string(),name:m1.string().optional()}),m1.object({role:m1.literal("user"),content:m1.union([m1.string(),m1.array(m1.union([m1.object({type:m1.literal("text"),text:m1.string()}),m1.object({type:m1.literal("image_url"),image_url:m1.object({url:m1.string(),detail:m1.string().optional()})})]))]),name:m1.string().optional()}),m1.object({role:m1.literal("assistant"),content:m1.string().nullable().optional(),name:m1.string().optional(),tool_calls:m1.array(ZK5).optional()}),m1.object({role:m1.literal("tool"),content:m1.string(),tool_call_id:m1.string()})]),YK5=m1.object({type:m1.literal("text")}),XK5=m1.object({type:m1.literal("json_object")}),JK5=m1.object({type:m1.literal("json_schema"),json_schema:m1.object({name:m1.string(),description:m1.string().optional(),schema:m1.record(m1.string(),m1.unknown()),strict:m1.boolean().optional()})}),GK5=m1.union([YK5,XK5,JK5]),WK5=m1.object({model:m1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:m1.array(QK5),stream:m1.boolean().optional().default(!1),temperature:m1.number().min(0).max(2).optional(),max_tokens:m1.number().positive().optional(),top_p:m1.number().min(0).max(1).optional(),frequency_penalty:m1.number().min(-2).max(2).optional(),presence_penalty:m1.number().min(-2).max(2).optional(),stop:m1.union([m1.string(),m1.array(m1.string())]).optional(),tools:m1.array($K5).optional(),tool_choice:m1.union([m1.literal("auto"),m1.literal("none"),m1.literal("required"),m1.object({type:m1.literal("function"),function:m1.object({name:m1.string()})})]).optional(),response_format:GK5.optional(),user:m1.string().optional()});xw8=class xw8 extends Error{constructor($){super($);this.name="MessageConversionError"}};fw8=new Z1;fw8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(sB("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(sB("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(sB("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=WK5.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(sB(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=KK5(J.model);if(!G)return $.json(sB("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 j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>fA(E.providerId));if(!j)return $.json(sB("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=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(sB(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=FK5(J.messages),N=J.tools?UK5(J.tools):void 0,B=NK5(J.response_format),D=BK5(),O=Math.floor(Date.now()/1000);if(J.stream)return Gw($,async(w)=>{let j=vw8(F,U,N,J,B,$.req.raw.signal);try{let E=Yt(j),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let R=z;z="",await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{content:R},finish_reason:null}]})})};for await(let R of E.stream){if(!P&&(R.type==="text-delta"||R.type==="tool-call"))await w.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(R.type==="text-delta"){if(z+=R.text,z.length>=eW5)await A()}else if(R.type==="tool-call"){await A();let f=T++;await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:R.toolCallId,type:"function",function:{name:R.toolName,arguments:JSON.stringify(R.input)}}]},finish_reason:null}]})})}else if(R.type==="finish")await A(),await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:bw8(R.finishReason)}],usage:R.totalUsage?{prompt_tokens:R.totalUsage.inputTokens??0,completion_tokens:R.totalUsage.outputTokens??0,total_tokens:R.totalUsage.totalTokens??0}:void 0})})}await A(),await w.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await w.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let w=vw8(F,U,N,J,B,$.req.raw.signal),j=await jO(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.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:bw8(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(sB("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(sB(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(sB(X.message,"server_error"),500)}});yw8=fw8});function DK5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function hw8(){let $=new Z1;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=_0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!_5(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||l9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(lA(U)!==J)continue;if(!DK5(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 uw8=L(()=>{Y8();rY()});var Fg0;var JT1=L(()=>{Fg0={name:"decocms",version:"4.503.4",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.5.1","@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 wK5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??OK5}}var lw8,OK5="https://ph.studio.decocms.com",cw8;var mw8=L(()=>{Y8();F10();rh();H9();u1();Ho();nP1();JT1();lw8=new Z1;lw8.get("/",($)=>{let Z={version:Fg0.version,theme:M3$(),...HF().logo&&{logo:HF().logo},...kO()&&{internalUrl:n1$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&J2(),plansEnabled:B0().plansEnabled,auth:VH8(),posthog:wK5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:PU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});cw8=lw8});import{z as R$}from"zod";var jK5,dw8;var iw8=L(()=>{jK5=R$.object({check_id:R$.string(),title:R$.string(),description:R$.string().optional(),impact:R$.string().optional(),why:R$.string().optional(),category:R$.string(),severity:R$.string(),value_band:R$.string().optional(),value_driver:R$.string().optional(),controllability:R$.string().optional(),pages:R$.array(R$.string()),tasks:R$.array(R$.string()),evidence:R$.string(),sample_scope:R$.string().optional(),sources:R$.array(R$.string())}),dw8=R$.object({domain:R$.string(),brand:R$.string(),favicon:R$.string().optional(),scanned_at:R$.string().nullable(),lang:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),totals:R$.object({measured:R$.number(),registry_total:R$.number(),passed:R$.number(),failed:R$.number(),blocked:R$.number()}),buckets:R$.array(R$.object({id:R$.enum(["critical","important","worth"]),label:R$.string(),items:R$.array(jK5)})),passing:R$.object({count:R$.number(),items:R$.array(R$.object({check_id:R$.string(),title:R$.string()}))}),not_measured:R$.object({count:R$.number(),groups:R$.array(R$.object({reason:R$.string(),label:R$.string(),count:R$.number(),checks:R$.array(R$.string())}))}),categories:R$.array(R$.object({key:R$.string(),label:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),pass:R$.number(),fail:R$.number()})),screenshots:R$.array(R$.object({url:R$.string(),page_type:R$.string().optional(),viewport:R$.enum(["desktop","mobile"]),image_url:R$.string()}))})});function pw8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${kK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function Ug0($,Z={}){let Q=await fetch(pw8($,"",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 dw8.parse(await Q.json())}async function nw8($,Z={}){let Q=await fetch(pw8($,".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 GT1=L(()=>{iw8();kL()});import{join as tw8}from"path";async function PK5($){try{let Z=await Ug0($,{signal:AbortSignal.timeout(EK5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||zj1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function Q3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function zK5($,Z){let Q=Pu($),Y=Z?.brand?.trim()||zj1(Q),X=ZG8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=QG8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${Q3(W)}</title>`,`<meta name="description" content="${Q3(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="${Q3(W)}" />`,`<meta property="og:description" content="${Q3(K)}" />`,`<meta property="og:url" content="${Q3(G)}" />`,`<meta property="og:image" content="${Q3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${Q3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${Q3(W)}" />`,`<meta name="twitter:description" content="${Q3(K)}" />`,`<meta name="twitter:image" content="${Q3(H)}" />`,`<meta name="twitter:image:alt" content="${Q3(F)}" />`,`<link rel="canonical" href="${Q3(G)}" />`,`<link rel="alternate" type="text/markdown" href="${Q3(G)}.md" />`,`<link rel="icon" href="${Q3(X)}" sizes="any" />`].join(`
4410
4410
  `)}function AK5($,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}
4411
4411
  </head>`)}function ow8($){let Z=new Z1;return Z.get("/:domain/og.png",async(Q)=>{let Y=Pu(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(tw8($,"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(`${kK({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(TK5)}),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=Pu(Q.req.param("file").replace(/\.md$/,""));try{let X=await nw8(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(qK5)});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=$?tw8($,"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 PK5(Pu(Y)),K=zK5(Y,W);return Q.html(AK5(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var EK5=2500,TK5=1e4,qK5=1e4;var sw8=L(()=>{Y8();kL();GT1();u1()});function Ng0($,Z){return fetch(`${kK({})}${$}`,Z)}async function RK5($,Z){let Q=await Ug0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function VK5($){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 MK5,Kw,rw8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},aw8;var ew8=L(()=>{Y8();dK();kL();GT1();MK5=new Set(["complete","errored","terminated","unknown"]);Kw=new Z1;Kw.use("*",async($,Z)=>{let Q=await B4.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});Kw.use("/link-token/*",rw8);Kw.use("/suggest",rw8);Kw.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 RK5(Z,Q))}catch{return $.json({error:"report read failed"},502)}});Kw.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let{domain:Y,distinctId:X}=VK5(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await Ng0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${ZP({})}`},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)}});Kw.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await Ng0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${ZP({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:MK5.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});Kw.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await Ng0(`/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)}});Kw.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await Ng0(`/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:[]})}});aw8=Kw});var IK5=1048576,WT1;var $j8=L(()=>{Y8();_W();u1();_P1();WT1=new Z1;WT1.post("/webhook",u6({maxSize:IK5,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(!uK8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=lK8(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await cK8(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as kK5}from"crypto";function _K5($,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 kK5(Buffer.from(X),Buffer.from(Y))}function vK5($,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 Zj8($){let Z=new Z1;return Z.post("/webhook",u6({maxSize:CK5,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(!_K5(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"&&!SK5.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 b50().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=vK5(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await bK5($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function bK5($,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 b88(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var CK5=5242880,SK5;var Qj8=L(()=>{Y8();_W();IX();yQ();SK5=new Set(["check_suite","issue_comment"])});import{DBOS as HT1,SchedulerMode as xK5}from"@dbos-inc/dbos-sdk";async function yK5(){try{return await gK5()}catch($){return console.warn(`[sandbox-credential-push] push failed: ${$ instanceof Error?$.message:String($)}`),null}}async function gK5(){if(!v50())return null;let[{RemoteSandboxProvider:$},{SandboxProviderRouter:Z}]=await Promise.all([Promise.resolve().then(() => (bH1(),vH1)),Promise.resolve().then(() => (_H1(),SH1))]),Q=await b50(),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=di$({sandboxes:J,pools:G,records:await ii$(X,J,G),legacyPools:bC0(process.env.STUDIO_SANDBOX_TENANT_POOLS),now:W}),{batches:H,failed:F}=await pi$(K,Yw0(X,new XJ(B0().encryptionKey)),{now:W,orgFsLifetimeMs:yC0}),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 hK5($,Z){let Q=await HT1.runStep(yK5,{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 Yj8(){if(KT1)return;if(!B0().agentSandboxEnabled||!v50())return;KT1=HT1.registerWorkflow(hK5,{name:"sandboxCredentialPushWorkflow"}),HT1.registerScheduled(KT1,{name:"sandboxCredentialPushWorkflow",crontab:fK5,mode:xK5.ExactlyOncePerIntervalWhenActive})}var fK5="1,11,21,31,41,51 * * * *",KT1=null;var Xj8=L(()=>{I3();Jj();P31();gC0();xC0();IX();u1()});function Jj8($){let Z=new pO($.db,new XJ($.encryptionKey)),Q=new Z1;return Q.get("/attachments/:token",async(Y)=>{let X=h18(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 Gj8=L(()=>{Y8();Jj();WN1();EO()});function Bg0(){try{return B0().jiraSettleSeconds*1000}catch{return nz}}function Wj8($,Z){let Q=Z.windowMs??nz,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=uK5($,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 uK5($,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 FT1=L(()=>{SO();u1()});function Kj8($){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 UT1($,Z,Q){if(!Z.enabled)return"disabled";let Y=Z.organizationId,X=new QQ(Z.siteUrl,Z.email,Z.apiToken),J=Wj8(await X.listStatusChanges(Q.issueId),{changeId:Q.changelogId,now:Q.now,windowMs:Bg0()});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:pz(N)})),H=V98(K)&&Z.boardId?M98(await X.getBoardColumnStatusIds(Z.boardId),W.id,G.toId):null,F=R98(K,W.name,H);if(!F)return"no_rule";if(!await $.storage.jiraIntegrations.claimTrigger(Y,Q.issueId,G.id))return"duplicate";return await ZH({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 NT1=L(()=>{YU();EO();ut();FT1()});import{DBOS as A2,SchedulerMode as lK5}from"@dbos-inc/dbos-sdk";function Hj8($){DT1=$}function OT1(){if(!DT1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return DT1}function wT1(){let $=OT1();return new pO($.db,new XJ($.encryptionKey))}async function pK5($){try{let Z=await wT1().getById($);if(!Z?.enabled||!Z.boardId)return{integrationId:$,fired:0};let Q=await hJ(OT1().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 "-${mK5}m"`,W=0,K;for(let H=0;H<dK5;H++){let F=await X.searchIssues({jql:G,nextPageToken:K});for(let U of F.issues)if(await UT1(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 nK5($,Z){let Q=await A2.runStep(()=>wT1().listEnabledIds(),{name:"loadJiraIntegrations"});if(Q.length===0)return;let Y=await Promise.all(Q.map((X)=>A2.runStep(()=>pK5(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 tK5($,Z){try{let Q=await wT1().getById($);if(!Q?.enabled)return"disabled";let Y=await hJ(OT1().db,Q.organizationId);if(!Y)return"disabled";let X=await UT1(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 oK5($,Z){await A2.sleep(Bg0()+iK5),await A2.runStep(()=>tK5($,Z),{name:"settleJiraMove"})}async function Fj8($,Z){if(!LT1)throw Error("[jira-trigger] settle workflow is not registered");await A2.startWorkflow(LT1,{workflowID:`jira-settle:${$}:${Z.changelogId}`})($,Z)}function Uj8(){if(BT1)return;LT1=A2.registerWorkflow(oK5,{name:"jiraSettleWorkflow"}),BT1=A2.registerWorkflow(nK5,{name:"jiraTriggerSweepWorkflow"}),A2.registerScheduled(BT1,{name:"jiraTriggerSweepWorkflow",crontab:cK5,mode:lK5.ExactlyOncePerIntervalWhenActive})}var cK5="*/5 * * * *",mK5=20,dK5=5,iK5=5000,DT1=null,LT1=null,BT1=null;var jT1=L(()=>{Jj();uz();EO();FT1();NT1()});function Nj8($){let Z=new pO($.db,new XJ($.encryptionKey)),Q=nj($.db);async function Y(J,G){let W=Kj8(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 Fj8(K.id,W)}let X=new Z1;return X.post("/webhook/:secret",u6({maxSize:sK5}),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 sK5=1048576;var Bj8=L(()=>{Y8();_W();Jj();jT1();NT1();N00()});function Dj8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Lj8,rK5,aK5,Oj8;var wj8=L(()=>{Y8();NG();Vt();ui();Lj8=new Z1,rK5=["range","if-none-match","if-modified-since"],aK5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Lj8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(Vo($))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 LZ0(Y,Z);if(!X)throw new R1(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&_K()){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 Dj8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of rK5){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 aK5){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Dj8(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});Oj8=Lj8});var TQ0=y((du)=>{var eK5=du&&du.__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]}),$H5=du&&du.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))eK5(Z,$,Q)};Object.defineProperty(du,"__esModule",{value:!0});$H5(F3(),du)});var Pj8=y((jj8)=>{Object.defineProperty(jj8,"__esModule",{value:!0});jj8.version=void 0;jj8.version="3.4.0"});var Tj8=y((rB)=>{var ZH5=rB&&rB.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(rB,"__esModule",{value:!0});rB.NodeTransport=rB.VERSION=void 0;rB.nodeResolveHost=WH5;var J9=TQ0(),QH5=V0("net"),ET1=V0("tls"),YH5=V0("path"),zj8=V0("fs"),XH5=ZH5(V0("dns")),JH5=Pj8();rB.VERSION=JH5.version;var GH5="nats.js";class Aj8{socket;version;lang;yields=[];signal=(0,J9.deferred)();closedNotification=(0,J9.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=GH5,this.version=rB.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,J9.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 J9.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 J9.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new J9.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,J9.deferred)(),Q,Y=(0,QH5.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,J9.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=J9.DataBuffer.concat(...this.yields),X=(0,J9.extractProtocolMessage)(Y);if(X!=="")try{let J=J9.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,J9.deferred)();try{if($=(0,YH5.resolve)($),!(0,zj8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,zj8.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,J9.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new J9.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,J9.deferred)();try{let X=(0,ET1.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 J9.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,J9.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new J9.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,J9.deferred)();try{let Y=(0,ET1.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 J9.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,J9.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,J9.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 ET1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,J9.render)($)}`);let Z=(0,J9.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,J9.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,J9.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}}rB.NodeTransport=Aj8;function WH5($){let Z=(0,J9.deferred)();return XH5.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 Ij8=y((Vj8)=>{Object.defineProperty(Vj8,"__esModule",{value:!0});Vj8.connect=KH5;var qj8=Tj8(),Rj8=TQ0(),Mj8=TQ0();function KH5($={}){if((0,Mj8.hasWsProtocol)($))return Promise.reject(Mj8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Rj8.setTransportFactory)({factory:()=>{return new qj8.NodeTransport},dnsResolveFn:qj8.nodeResolveHost}),Rj8.NatsConnectionImpl.connect($)}});var kj8=y((Hw)=>{var FH5=Hw&&Hw.__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]}),UH5=Hw&&Hw.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))FH5(Z,$,Q)};Object.defineProperty(Hw,"__esModule",{value:!0});Hw.connect=void 0;var NH5=Ij8();Object.defineProperty(Hw,"connect",{enumerable:!0,get:function(){return NH5.connect}});UH5(TQ0(),Hw)});function _j8($){let Z=$?.connectFn??OH5,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:LH5,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=C7(DH5,BH5,D-1,2,0.5);await J$(O)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?Dg0.credsAuthenticator(new TextEncoder().encode(B.creds)):B?.user?Dg0.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=Sj8.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 OH5($){return Cj8.connect($)}var Dg0,Cj8,Sj8,BH5=100,DH5=3000,LH5=3000;var vj8=L(()=>{n$();Dg0=_(m2(),1),Cj8=_(kj8(),1),Sj8=_(_H(),1)});function Lg0($,Z){return`${$}.${Z}`}class PT1{cache;constructor($){this.cache=vP({ttlMs:$?.ttlMs??wH5,maxSize:$?.maxSize??jH5})}async get($,Z){return this.cache.get(Lg0($,Z))??null}async set($,Z,Q){this.cache.set(Lg0($,Z),Q)}async invalidate($,Z){this.cache.delete(Lg0($,Z)),this.cache.delete(Lg0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var wH5=600000,jH5=5000;var bj8=()=>{};function Og0($,Z){return`${$}:${Z}`}function zT1($){let Z=vP({ttlMs:$?.ttlMs??EH5,maxSize:$?.maxSize??PH5}),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(xj8,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(Og0(K,H))},set(K,H,F){Z.set(Og0(K,H),F)},invalidate(K,H){Z.delete(Og0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(xj8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(Og0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var xj8="studio.ai-provider-keys.invalidate",EH5=30000,PH5=5000;var fj8=()=>{};class AT1{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 yj8=($)=>{let Z;return()=>Z??=$()},TT1,qT1;var gj8=L(()=>{b6();TT1=yj8(()=>G$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),qT1=yj8(()=>G$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function VH5($=lj8){return{name:xB,subjects:[`${sD1}.>`],storage:wU.StorageType.File,max_age:TH5,max_bytes:RH5,max_msgs_per_subject:MH5,discard:wU.DiscardPolicy.Old,retention:wU.RetentionPolicy.Limits,duplicate_window:qH5,num_replicas:$}}class cj8{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 hj8($){let Z=uj8.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function SH5($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,AH5().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 _H5($,Z){return $.info?.cluster?Z:1}function vH5($){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 RT1{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=VH5(X);try{await Y.streams.info(xB),await Y.streams.update(xB,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(xB,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(xB),await Y.streams.add(J);else throw G}},Q=await L8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await wU.jetstreamManager($),X=_H5($,lj8);try{await Z(Y,X)}catch(J){if(X<=1||!vH5(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:ht});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=SH5(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=$98(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=aD1(H,{runId:Z}),N=performance.now()-F;TT1().record(N),qT1().add(1,{"org.id":Y??"unknown"}),CH5?.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?hj8(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(),kH5)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 L8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:hj8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:ht}),!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=aD1(Z,{runId:$,dedup:Q});TT1().record(performance.now()-X),qT1().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=e58({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"?wU.DeliverPolicy.New:wU.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=iz($),W;try{W=await L8(async()=>{return(await Y.consumers.get(xB,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:ht})}catch(O){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",O?.message??O),null}let F=Xb0({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($b0()).pipeThrough(Zb0()).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:w,value:j}=await F.read();if(w){D(),O.close();return}let E=j;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(xB,{filter:iz($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var wU,uj8,zH5=($)=>{let Z;return()=>Z??=$()},AH5,TH5=86400000000000,qH5=120000000000,RH5=4294967296,lj8,MH5=500000,IH5,kH5,CH5;var mj8=L(()=>{n$();eD1();Jb0();Qb0();b6();gj8();wU=_(_H(),1),uj8=_(m2(),1),AH5=zH5(()=>G$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),lj8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);IH5=process.env.STREAM_ENCODE_TRACE==="1",kH5=process.env.DECOPILOT_STREAM_TRACE==="1";CH5=IH5?new cj8:null});function wg0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,hU(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 dj8=L(()=>{q8()});class MT1{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 bH5($,Z,Q={}){let Y=$.startsWith("thread:")?tF($,Q):$;return[...new Set([Z,Y].filter((X)=>!!X))]}async function VT1($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await TB($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await qB($,{threadId:X,runBranch:G?.branch}),K=await k40($,Q,oB0(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=bH5(W,await WS0($,X),{flat:Ah(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 LW(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 ij8=L(()=>{T5();fQ();yQ()});async function pj8($,Z,Q){let Y=Z.organizationId;if(!uJ(Z))return!1;if(!th(Q))return!1;if(!await vd($,Y,S10))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=K1.shipped,J=await $.storage.taskBoard.update(Z.id,Y,{status:X},Z.updatedBy);return await Q9($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:X,reason:"pr_merged"}}),K8(Y,J),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${X}`),!0}var nj8=L(()=>{OG();u8();vX();Et();ZU();c5()});function lH5($){return $ instanceof AX}function tj8($,Z){return Z-$>=hH5}class IT1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,Q,Y={}){this.taskBoard=$;this.contextFactory=Z;this.billing=Q;this.options=Y}start(){if(this.timer)return;let $=this.options.intervalMs??xH5;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??yH5,Q=this.options.itemIntervalMs??fH5,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.reapNeverStartedThreads(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 reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-$N1),RB1);for(let Q of Z)console.warn(`[task-board-review-sweeper] failed never-started 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()-uH5));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 TB1(this.taskBoard,X,Y),await qB1(this.taskBoard,this.billing,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!==K1.progress||uJ(W)||W.assigneeId!==o$)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await VT1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!tj8(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,K1.review,W.updatedBy);if(!F)continue;await this.taskBoard.recordActivity({taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:K1.progress,to:K1.review,reason:H}}).catch(()=>{}),K8(J,F),await QU(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!==K1.progress||G.assigneeId!==o$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await RO(W,G,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Y} after a failure (attempt ${J})`)}catch(G){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Y} failed`,G),lH5(G)){await this.returnToBacklog(Y,X,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(Y,X,J,new Date(Date.now()+gH5)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async returnToBacklog($,Z,Q){try{let Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!==K1.progress)return;let X=await this.taskBoard.returnToBacklogAfterFailure($,Z,Y.updatedBy);if(!X)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:K1.progress,to:K1.intake,reason:Q,retriesSpent:Y.retryAttempts}}).catch(()=>{}),K8(Z,X)}catch(Y){console.error(`[task-board-review-sweeper] returning ${$} to backlog failed`,Y)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!tj8(WL(Q,Z.reviewCycleStartedAt),Date.now()))return;await QU($,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(!uJ(Y))return!1;let X=Y.assigneeId===o$,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 VT1(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 At(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 pj8(G,Y,W))return!0;if(!X)return!1;if(await s88(G,Y))return!0;if(!EB1(W))return!1;return await zt(G,Y,{previewMatchesHead:PB1(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var xH5=60000,fH5=300000,yH5=50,gH5=60000,hH5=900000,uH5=120000;var oj8=L(()=>{u8();$v0();ij8();MO();Mt();ZU();nj8();c5();XW();MB1();yQ();u90()});async function sj8($,Z,Q=nz){return await aj8($,Z,Q,{})}async function rj8($,Z,Q,Y=nz){return await aj8($,Q,Y,{activityId:Z})}async function aj8($,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-cH5),settledBefore:new Date(Z-Q),limit:mH5,...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 dH5($.taskBoard,K,Q);for(let U of H){if(!k98(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 dH5($,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?C98(X,Q):Z.from}var cH5=1800000,mH5=200;var ej8=L(()=>{SO()});import{DBOS as T2,DBOSClient as iH5,SchedulerMode as pH5}from"@dbos-inc/dbos-sdk";function $E8($){Fw=$}async function oH5($){if(!Fw)return 0;try{return await rj8(Fw,$,Date.now(),Fw.settleMs)}catch(Z){return console.error(`[automations] settling board move ${$} failed`,Z),0}}async function sH5(){if(!Fw)return 0;try{return await sj8(Fw,Date.now(),Fw.settleMs)}catch($){return console.error("[automations] board transition sweep failed",$),0}}async function rH5($){await T2.sleep((Fw?.settleMs??nz)+tH5),await T2.runStep(()=>oH5($),{name:"settleBoardMove"})}async function aH5($,Z){let Q=await T2.runStep(()=>sH5(),{name:"sweepBoardMoves"});if(Q>0)console.log(`[automations] board transition sweep fired ${Q} trigger(s) the settle wait missed`)}async function QE8($){let Z=Fw;if(!Z||!CT1)return;if(!await Z.automations.hasActiveBoardColumnTrigger($.taskBoardItemId,$.to))return;let Q=`board-settle:${$.activityId}`;if(!T2.isWithinWorkflow()){await T2.startWorkflow(CT1,{workflowID:Q,queueName:C2})($.activityId);return}let Y=await iH5.create({systemDatabaseUrl:Z.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:1});try{await Y.enqueue({workflowName:ZE8,queueName:C2,workflowID:Q},$.activityId)}finally{await Y.destroy()}}function YE8(){if(kT1)return;CT1=T2.registerWorkflow(rH5,{name:ZE8}),kT1=T2.registerWorkflow(aH5,{name:"boardTransitionSweepWorkflow"}),T2.registerScheduled(kT1,{name:"boardTransitionSweepWorkflow",crontab:nH5,mode:pH5.ExactlyOncePerIntervalWhenActive})}var nH5="*/5 * * * *",tH5=2000,Fw=null,ZE8="boardTransitionSettleWorkflow",CT1=null,kT1=null;var XE8=L(()=>{SO();ej8()});import{readdir as eH5,rm as jg0}from"fs/promises";import{join as Eg0}from"path";async function Pg0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-$F5),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await iu($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await JE8($,X,Z);else if(!X.startsWith(".")){let J=Eg0($,X),G=await iu(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await JE8(J,K,Z)}if((await iu(J)).length===0)await jg0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function JE8($,Z,Q){let Y=0,X=Eg0($,Z),J=await iu(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=Eg0(X,W),H=await iu(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=Eg0(K,U);await jg0(B,{recursive:!0,force:!0}),Y++}}if((await iu(K)).length===0)await jg0(K,{recursive:!0,force:!0})}if((await iu(X)).length===0)await jg0(X,{recursive:!0,force:!0});return Y}async function iu($){try{return(await eH5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var $F5=30;var ST1=()=>{};import{DBOS as _T1,SchedulerMode as ZF5}from"@dbos-inc/dbos-sdk";async function YF5(){let $=[qH(),$l(),JD()],Z=0;for(let Q of $)try{Z+=await Pg0(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 XF5($,Z){await _T1.runStep(()=>YF5(),{name:"monitoringRetention"})}function WE8(){if(GE8)return;GE8=!0;let $=_T1.registerWorkflow(XF5,{name:"monitoringRetentionWorkflow"});_T1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:QF5,mode:ZF5.ExactlyOncePerIntervalWhenActive})}var QF5="23 4 * * *",GE8=!1;var KE8=L(()=>{uW();ST1()});function HE8($){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 _Y.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await UP($.db,Z,Y.role);return X.boundAuth=YP1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new ET(Q,void 0,X.boundAuth,Y.role,"self"),lz(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var FE8=L(()=>{GJ();dN()});function UE8(){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=qQ0(N.params.name),D=N.params.arguments||{},O=Object.keys(D).map((j)=>qQ0(j)),w=O.length>0?O.slice(0,3).join(",")+(O.length>3?"\u2026":""):"";J=`${O9.tool}${B}${O9.dim}(${w})${O9.reset}`}else if(N.method)J=`${O9.dim}${qQ0(N.method)}${O9.reset}`}}catch{}}let W=qQ0(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${O9.mcp}${qQ0(F.slice(0,12))}\u2026${O9.reset}`}else if(X==="/mcp")W=`${O9.mcp}/mcp${O9.reset}`;else if(X==="/mcp/registry")W=`${O9.mcp}/mcp/registry${O9.reset}`;let K=GF5(Y),H=G?"\u25C0":"\u2190";console.log(`${O9.dim}${H}${O9.reset} ${K}${Y}${O9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=JF5(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";console.log(`${O9.dim}${D}${O9.reset} ${K}${Y}${O9.reset} ${W}${J?` ${J}`:""} ${N}${U}${O9.reset} ${O9.duration}${B}${O9.reset}`)}}}var O9,JF5=($)=>{if($>=500)return O9.serverError;if($>=400)return O9.clientError;if($>=300)return O9.redirect;return O9.ok},GF5=($)=>{return O9[$]||O9.reset},qQ0=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var NE8=L(()=>{O9={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 OE8}from"crypto";import{mkdir as WF5,readdir as KF5,rm as BE8,stat as wE8}from"fs/promises";import{join as bT1,relative as HF5}from"path";import{z as J8}from"zod";function EE8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return bT1(FF5,Z)}function PE8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function vT1($,Z){let Q=EE8($),Y=PE8(Z);return bT1(Q,Y)}function UF5($,Z,Q,Y){let X=B0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return OE8("sha256",X).update(J).digest("hex")}function LE8($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=UF5(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${PE8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function zE8($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${OE8("md5","etag").update(Y).digest("hex")}"`}async function AE8($,Z,Q,Y,X){try{let J=await KF5($,{withFileTypes:!0});for(let G of J){let W=bT1($,G.name),H=HF5(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 AE8(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 wE8(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:zE8(W,F.mtime,F.size)})}catch{}}}}catch{}}function TE8($,Z){let Y=Q0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:J8.object({prefix:J8.string().optional(),maxKeys:J8.number().optional().default(1000),continuationToken:J8.string().optional(),delimiter:J8.string().optional()}),outputSchema:J8.object({objects:J8.array(J8.object({key:J8.string(),size:J8.number(),lastModified:J8.string(),etag:J8.string()})),nextContinuationToken:J8.string().optional(),isTruncated:J8.boolean(),commonPrefixes:J8.array(J8.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=EE8(Y);await WF5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await AE8(F,F,G,K,U),U.objects.sort((w,j)=>w.key.localeCompare(j.key));let N=0;if(H){if(N=U.objects.findIndex((w)=>w.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:J8.object({key:J8.string()}),outputSchema:J8.object({contentType:J8.string().optional(),contentLength:J8.number(),lastModified:J8.string(),etag:J8.string(),metadata:J8.record(J8.string(),J8.string()).optional()}),handler:async(X)=>{let J=X,G=vT1(Y,J.key),W=await wE8(G);return{contentType:Rz1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:zE8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:J8.object({key:J8.string(),expiresIn:J8.number().optional()}),outputSchema:J8.object({url:J8.string(),expiresIn:J8.number()}),handler:async(X)=>{let J=X,G=hO(J.expiresIn,DE8);return{url:LE8(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:J8.object({key:J8.string(),expiresIn:J8.number().optional(),contentType:J8.string().optional()}),outputSchema:J8.object({url:J8.string(),expiresIn:J8.number()}),handler:async(X)=>{let J=X,G=hO(J.expiresIn,DE8);return{url:LE8(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:J8.object({key:J8.string()}),outputSchema:J8.object({success:J8.boolean(),key:J8.string()}),handler:async(X)=>{let J=X,G=vT1(Y,J.key);try{return await BE8(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:J8.object({keys:J8.array(J8.string()).max(1000)}),outputSchema:J8.object({deleted:J8.array(J8.string()),errors:J8.array(J8.object({key:J8.string(),message:J8.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=vT1(Y,K);try{await BE8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function xT1($,Z,Q){let Y=TE8(Z,Q),X=new KE({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:QZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:J8.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:J8.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 zW({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),FH(X,J,$,"mcp:dev-assets")}async function qE8($,Z,Q,Y){let J=TE8(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 FF5="./data/assets",DE8=3600,jE8,RE8;var ME8=L(()=>{u1();st();Y8();NH0();ot();UJ();uO();rf0();jE8=new Z1;jE8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return xT1($.req.raw,Z,Y)});RE8=jE8});var VE8={};O6(VE8,{mountDevRoutes:()=>NF5});function NF5($,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 xT1(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 qE8(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",RE8);let Q=new Z1;Q.use("*",BU({mountPath:"/api/dev-assets"})),Q.route("/",sf0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var IE8=L(()=>{Y8();wz1();rf0();ME8()});var gE8={};O6(gE8,{watchHandler:()=>yE8,resolveVoiceSigningSecret:()=>bE8,resolveCorsOrigin:()=>xE8,isSsoExemptPath:()=>vE8,isAllowedOAuthRedirectUri:()=>fE8,createApp:()=>TF5});import{readFileSync as BF5}from"fs";import{randomBytes as DF5}from"crypto";import{PrometheusSerializer as LF5}from"@opentelemetry/exporter-prometheus";import{DBOS as aB}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as jF5,oAuthProtectedResourceMetadata as EF5}from"better-auth/plugins";async function OF5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,CE8(kE8)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),CE8(kE8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function CE8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function vE8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${xf0}/`)||$.startsWith(`${kf0}/`)}function bE8($){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)"),DF5(32).toString("base64")}function xE8($,{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 fE8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"}async function TF5($={}){let Z=$.database??E8(),Q=!1;k6.stop().catch((F0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",F0)});let Y,X,J,G,W=new PT1,K,H,F,U=null;if($.disableNats)K=zT1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new lZ0,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(F0)=>{return(async()=>{let G0=F0.getReader();try{while(!0){let{done:P0}=await G0.read();if(P0)break}}catch{}finally{G0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=_j8();let F0=B0().natsCredsPath,G0;if(F0)try{G0=BF5(F0,"utf8")}catch(N8){console.error(`[app] failed to read NATS_CREDS at ${F0}; connecting anonymously`,N8)}U.init(B0().natsUrls,{creds:G0,user:B0().natsUser,password:B0().natsPassword});let P0=MZ1()?new FZ1({getJetStream:()=>U.getJetStream(),selfListVersion:Fg0.version}):null;P0?.init().catch(()=>{}),Y=P0;let z0=new sZ1({getJetStream:()=>U.getJetStream()});z0.init().catch(()=>{}),X=z0;let w1=new oh(BB1,{getJetStream:()=>U.getJetStream()}),b$=new oh(l90,{getJetStream:()=>U.getJetStream()});w1.init().catch(()=>{}),b$.init().catch(()=>{}),J={reads:w1,cards:b$};let r$=new fO1({getJetStream:()=>U.getJetStream()});r$.init().catch(()=>{}),G=r$,K=zT1({getConnection:()=>U.getConnection()}),H=new AT1({getConnection:()=>U.getConnection()}),F=new RT1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),KH8(U),U.onReady(()=>{P0?.init().catch((N8)=>{console.error("[McpListCache] Deferred init failed:",N8)}),z0.init().catch((N8)=>{console.error("[SkillCatalogCache] Deferred init failed:",N8)}),w1.init().catch((N8)=>{console.error("[PrReadCache] Deferred init failed:",N8)}),b$.init().catch((N8)=>{console.error("[PrCardCache] Deferred init failed:",N8)}),r$.init().catch((N8)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",N8)}),K.start(),B2$(()=>U.getConnection()),F.init().catch((N8)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",N8)})})}if(q2)await q2();UZ1(Y),aZ1(X),$71(()=>U?.getConnection()??null),DB1(J),yO1(G);let B={storage:new mc(Z.db),sseHub:k6,onThreadFinished:async(F0,G0)=>qt(new DW(Z.db),F0,G0,new V3(Z.db))},D=new wD1(B),O=new O70(Z.db),w=new MT1(O);w.start(),y98(H),H.start((F0)=>{dv0(F0),D.execute({type:"CANCEL",taskId:F0}).catch((G0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",G0)})}).catch((F0)=>{console.error("[Decopilot] CancelBroadcast start failed:",F0)}),U?.onReady(()=>{H.start().catch((F0)=>{console.error("[CancelBroadcast] Deferred start failed:",F0)})});let j=()=>U?.getConnection()??null;Uz1(j),U?.onReady(()=>Uz1(j)),ww1(j),U?.onReady(()=>ww1(j)),F.init().catch((F0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",F0)}),q2=async()=>{await D.stopAll(),D.dispose(),w.dispose(),H.stop().catch(()=>{}),RF8(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),D2$(),G.teardown(),UZ1(null),aZ1(null),$71(null),DB1(null),yO1(null)};let E=new Z1;if(E.use("*",vO1({enabled:(F0)=>Mo(F0,"debug")==="1"})),E.use("*",cg0),E.use("/*",YH8({origin:(F0,G0)=>xE8(F0,{baseUrl:B0().baseUrl,requestOrigin:new URL(G0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),E.use("*",async(F0,G0)=>{if(await G0(),F0.req.path.includes("/files/"))return;if(F0.req.path.includes("/fs/")&&F0.req.path.endsWith("/read"))return;F0.header("X-Frame-Options","DENY"),F0.header("Content-Security-Policy","frame-ancestors 'none'")}),B0().nodeEnv==="development")E.use("*",UE8());E.use("*",async(F0,G0)=>{if(await G0(),Ss(F0.req.path))return;if(F0.res.status>=500){let z0=await F0.res.clone().text();console.error(`[5xx Response] ${F0.req.method} ${F0.req.path} - ${F0.res.status}:`,z0)}}),E.get(pX.HEALTH,(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);return F0.json({status:"ok"})}),E.get(pX.HEALTH_LIVE,(F0)=>{return F0.json({status:"ok"})}),E.get(pX.HEALTH_READY,async(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);let G0={};if(G0.postgres={status:await OF5(Z.pool)?"up":"down"},U)G0.nats=U.isConnected()?{status:"up"}:{status:"down"};else G0.nats={status:"down"};let P0=G0.postgres.status==="up",z0=P0?200:503;return F0.json({status:P0?"ready":"not_ready",services:G0},z0)}),E.get(pX.METRICS,async(F0)=>{try{let G0=await pg0.collect(),P0=wF5.serialize(G0.resourceMetrics);return F0.text(P0,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(G0){return console.error("Failed to collect metrics:",G0),F0.text("# Error collecting metrics",500)}});let P=1800000;E.get(`${pX.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(F0)=>{let G0=F0.req.param("queueName");if(!PF5.has(G0))return F0.json({error:`Unknown queue: ${G0}`},404);let[P0,z0]=await Promise.all([aB.listQueuedWorkflows({queueName:G0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),aB.listQueuedWorkflows({queueName:G0,status:"PENDING",loadInput:!1,loadOutput:!1,dequeuedAfter:new Date(Date.now()-P).toISOString()})]);return F0.json({queue_length:P0.length,in_flight:z0.length})}),E.route("/api/config",cw8),E.route("/api/_reports",aw8),E.route("/api/_stripe",WT1),E.route("/api/_github",Zj8({taskBoard:()=>l,contextFactory:()=>b})),E.route("/api/_git",bo);let T={db:Z.db,encryptionKey:B0().encryptionKey};E.route("/api/_jira",Nj8(T)),E.route("/api/_jira",Jj8(T)),E.route("/report",ow8($.clientDir)),E.route("/api/auth/custom",IH8),E.all("/api/auth/admin/*",NF8),E.all("/api/auth/*",async(F0)=>{return await B4.handler(F0.req.raw)});let z=GW8();z.use("/.well-known/oauth-protected-resource/mcp/:connectionId",C70),z.use("/mcp/:connectionId/.well-known/oauth-protected-resource",C70),E.route("/",z),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",B70),E.route("/",UW8()),E.use("/oauth-proxy/:connectionId/*",C70),E.all("/oauth-proxy/:connectionId/*",SE8);let A=async(F0)=>{let P0=await zF5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",C70),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let R=async(F0)=>{let P0=await AF5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",R);let f=JH8({ttlMs:120000}),S=await JK8({db:Z.db,auth:B4,encryption:{key:B0().encryptionKey},observability:{tracer:jw,meter:G$},modelListCache:W,providerKeyCache:K,memberRoleCache:f});_Y.set(S),b1$({db:Z.db,baseUrl:B5()}),GK8({db:Z.db}),FK8({db:Z.db}),xK8({db:Z.db}),mK8({db:Z.db}),Hj8({db:Z.db,encryptionKey:B0().encryptionKey}),m$8({db:Z.db}),oK8({db:Z.db}),P88({db:Z.db});let V=nj(Z.db),v=new B00(Z.db),b=HE8({db:Z.db});IL1({storage:V,studioContextFactory:b,orgContextFactory:(F0)=>hJ(Z.db,F0),systemDatabaseUrl:T10(B0().databaseUrl,B0().databasePgSsl)}),UL1({systemDatabaseUrl:T10(B0().databaseUrl,B0().databasePgSsl),studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:k6}}),JL1({dispatchRunFn:p58,studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:k6}});let h=new mc(Z.db),l=new DW(Z.db),d=new V3(Z.db),W0=new IT1(l,b,d);if(B0().taskBoardReviewSweeperEnabled){W0.start();let F0=q2;q2=async()=>{await F0?.(),W0.dispose()}}$E8({automations:V,taskBoard:l,fire:ZH,systemDatabaseUrl:T10(B0().databaseUrl,B0().databasePgSsl),settleMs:B0().boardTransitionSettleSeconds*1000}),a$8(QE8),B98({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let F0=U?.getConnection();return F0?await _E8.jetstreamManager(F0):null},messageParts:h.messageParts(),resolveRun:async(F0)=>{let G0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",F0).executeTakeFirst();return G0?{orgId:G0.organization_id,createdBy:G0.created_by,version:G0.message_storage_version??1,status:G0.status,runFenceToken:G0.run_fence_token,title:G0.title??null}:null},completeRunIfNotCompleted:async(F0,G0)=>{let P0=await h.completeRunIfNotCompleted(F0,G0);if(wg0(k6,G0,F0,P0),P0)await qt(l,F0,G0,d);return P0},markRunRequiresAction:async(F0,G0)=>{let P0=await h.requiresActionIfInProgress(F0,G0);return wg0(k6,G0,F0,P0),P0},markRunFailed:async(F0,G0,P0,z0)=>{let w1=await h.markRunFailed(F0,G0,P0,z0);if(wg0(k6,G0,F0,w1),w1)await qt(l,F0,G0,d);return w1},clearSynthesizedError:async(F0,G0)=>{await h.messageParts().replaceMessageParts(F0,dz(F0,G0),[])},persistTitle:(F0,G0,P0)=>h.update(F0,G0,{title:P0}),onTitleUpdated:async({runId:F0,orgId:G0,title:P0})=>{let z0=await h.get(F0,G0).catch(()=>null);k6.emit(G0,hU(F0,z0?.status??"in_progress",{title:P0,virtualMcpId:z0?.virtual_mcp_id??void 0,createdBy:z0?.created_by,triggerId:z0?.trigger_id,branch:z0?.branch??null,harnessId:z0?.harness_id??void 0,createdAt:z0?.created_at,updatedAt:z0?.updated_at}))},bumpProgress:async({runId:F0,orgId:G0})=>{await h.bumpProgress(F0,G0)},recordCompleted:async({runId:F0,orgId:G0,distinctId:P0,usage:z0})=>{c1.capture({distinctId:P0,event:"chat_message_completed",groups:{organization:G0},properties:{organization_id:G0,thread_id:F0,transport:"projector",input_tokens:z0.inputTokens,output_tokens:z0.outputTokens,total_tokens:z0.totalTokens}})},recordFailed:async({runId:F0,orgId:G0,distinctId:P0,reason:z0,kind:w1})=>{c1.capture({distinctId:P0,event:"chat_message_failed",groups:{organization:G0},properties:{organization_id:G0,thread_id:F0,transport:"projector",error_category:w1,error_message:z0}})},purgeRun:async(F0)=>{F.purge(F0)}}),L58({studioContextFactory:b,systemDatabaseUrl:T10(B0().databaseUrl,B0().databasePgSsl),streamBuffer:F}),WE8(),x1$(),KK8(),NK8(),yK8(),iK8(),Uj8(),YE8(),t$8(),rK8(),z88(),Yj8();let I0=async(F0,G0,P0)=>{let z0=await V.findById(F0,G0);if(!z0)throw Error("Automation not found");return vL1({automationId:z0.id,organizationId:z0.organization_id,triggerId:null})},J0=new _o(V,({automation:F0,trigger:G0,contextMessages:P0,idempotencyKey:z0})=>ZH({automationId:F0.id,organizationId:F0.organization_id,triggerId:G0.id,contextMessages:P0},{idempotencyKey:z0})),U0=[qH(),$l(),JD()];for(let F0 of U0)Pg0(F0).then(()=>{}).catch((G0)=>console.error("[monitoring] Retention cleanup failed:",G0));let o=()=>B4.api.deleteAllExpiredApiKeys().catch((F0)=>console.error("[auth] Expired API key cleanup failed:",F0));o(),setInterval(o,86400000).unref(),E.use("*",async(F0,G0)=>{if(ug0(F0.req.path))return G0();let P0={measure:async(w1,b$)=>{HH(F0,w1);try{return await b$()}finally{AW(F0,w1)}}},z0=await _Y.create(F0.req.raw,{timings:P0});z0.automationRunner=I0,F0.set("studioContext",z0);try{await G0()}finally{let w1=z0.pendingRevalidations;if(w1.length>0)Promise.race([Promise.allSettled(w1),J$(30000)]).catch((r$)=>console.error("[studio] revalidation cleanup error:",r$))}}),E.use("/api/:org/decopilot/*",Io),E.use("/api/:org/v1/*",Io),E.use("/api/:org/files/*",Io),E.use("*",async(F0,G0)=>{if(vE8(F0.req.path))return G0();let P0=F0.get("studioContext");if(!P0?.organization?.id||!P0?.auth?.user?.id)return G0();if(!(await P0.storage.orgSsoConfig.getByOrgId(P0.organization.id))?.enforced)return G0();if(!await P0.storage.orgSsoSessions.isValid(P0.auth.user.id,P0.organization.id))return F0.json({error:"SSO authentication required for this organization"},403);return G0()});let t=new Z1;t.use("*",BU({mountPath:"/api/org-sso"})),t.route("/",gf0()),E.route("/api/org-sso",t),E.get("/api/tools/management",(F0)=>{return F0.json({tools:j00,grouped:wT()})}),E.use("/mcp/*",async(F0,G0)=>{HH(F0,"mcp");try{return await G0()}finally{AW(F0,"mcp")}});let r=async(F0,G0)=>{let P0=F0.var.studioContext;if(!P0.auth.user?.id&&!P0.auth.apiKey?.id){let z0=new URL(F0.req.url),w1=F0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),b$=w1?`${w1}://${z0.host}`:z0.origin;return F0.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${b$}${z0.pathname}/.well-known/oauth-protected-resource"`}})}return await G0()};if(E.use("/mcp/:connectionId?",r),E.use("/mcp/gateway/:virtualMcpId?",r),E.use("/mcp/virtual-mcp/:virtualMcpId?",r),E.use("/mcp/self",r),_K()){let{mountDevRoutes:F0}=(IE8(),Ig0(VE8));F0(E,r)}let $0=new Z1;$0.use("*",BU({mountPath:"/mcp"})),$0.route("/",ub0()),E.route("/mcp",$0);let X0=new Z1;X0.use("*",BU({mountPath:"/mcp/self"})),X0.route("/",Iy0()),E.route("/mcp/self",X0);let h0=new Z1;h0.use("*",BU({mountPath:"/mcp"})),h0.route("/",mb0()),E.route("/mcp",h0),E.use("/api/:org/models/*",async(F0,G0)=>{HH(F0,"llm_models");try{return await G0()}finally{AW(F0,"llm_models")}});let C0=SF8({cancelBroadcast:H,streamBuffer:F,runRegistry:D});E.route("/api",C0),E.route("/api",Oj8);let H1=new Z1;H1.use("*",BU({mountPath:"/api"})),H1.route("/",_y0()),E.route("/api",H1),E.route("/api",yw8);let c0=new Z1;c0.use("*",BU({mountPath:"/api"})),c0.route("/",vy0({tokenStorage:v,automationEventDispatcher:J0})),E.route("/api",c0);let w0=new D00(Z.db),E0=new Z1;E0.use("*",BU({mountPath:"/api"})),E0.route("/",df0()),E.route("/api",E0),E.route("/api/deco-sites",pF8()),E.route("/api/deco-apps",Sw8());let n0=new Z1;n0.use("*",BU({mountPath:"/api/deco-sites"})),n0.route("/",pf0()),E.route("/api/deco-sites",n0),E.route(xf0,BF8()),E.route(MD8,kD8()),E.route("/api/_editor-resolve",hw8()),E.route(SH8,_H8()),E.route(kf0,nH8());let O1=B0(),o0=O1.elevenlabsApiKey?new Wg0({apiKey:O1.elevenlabsApiKey,model:O1.elevenlabsVoiceModel,conversationModel:O1.elevenlabsConversationModel,voiceId:O1.elevenlabsVoiceId}):null,b0={openai:O1.openaiLiveApiKey?new eA1({apiKey:O1.openaiLiveApiKey,voice:O1.openaiLiveVoice}):null,elevenlabs:o0?new aA1(o0,()=>U?.getConnection()??null):null},d0=new XT1({adapter:o0,conversationAdapters:b0,defaults:O1,secret:bE8(O1),getConnection:()=>U?.getConnection()??null}),i0=Hw8({voiceSessions:d0,kvStorage:w0,runRegistry:D,streamBuffer:F,sseHub:k6,cancelBroadcast:H,tokenStorage:v,automationEventDispatcher:J0,mountDevAssets:_K(),mcpAuth:r,oauthProxyHandler:SE8,watchHandler:yE8,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",i0),E.notFound((F0)=>{return F0.json({error:"Not Found",path:F0.req.path},404)}),E.onError(vF8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([k6.stop(),q2?Promise.resolve(q2()).finally(()=>{q2=null}):Promise.resolve()]),U)await U.drain().catch((F0)=>console.error("[shutdown] NATS drain error:",F0));console.log("[shutdown] Flushing telemetry..."),await nJ().catch((F0)=>console.error("[shutdown] Telemetry flush error:",F0)),console.log("[shutdown] Closing database..."),await cK$(Z).catch((F0)=>console.error("[shutdown] Database close error:",F0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await aB.registerQueue(G3,{partitionQueue:!0,concurrency:RL1,minPollingIntervalMs:ML1}),await aB.registerQueue(gW,{partitionQueue:!0,concurrency:HL1,priorityEnabled:!0}),await aB.registerQueue(YD,{workerConcurrency:B0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await aB.registerQueue(XD,{workerConcurrency:B0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await aB.registerQueue(ww,{partitionQueue:!0,concurrency:D58}),await aB.registerQueue(k2,E88),await aB.registerQueue(C2),await jz1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((F0)=>aB.deleteQueue(F0))),await VL1(Z.pool),AN$().catch((F0)=>{console.error("[studio-pack-backfill] failed:",F0)}),_d(Z.db).catch((F0)=>{console.error("[automations] built-in seed failed:",F0)}),f1$().catch((F0)=>{console.error("[org-fs] public-sets boot sync kick failed:",F0)})}})}var _E8,kE8=5000,q2=null,SE8=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 _Y.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 Po(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=ME1(await W.json());if(!K)K=H.origin;let N=await D70(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=FW8(D);if(O)return O;let w=new URL(D),j=new URL($.req.url);if(w.search=j.search,Y==="authorize"){let v=w.searchParams.get("redirect_uri");if(v){let b=B0().baseUrl??j.origin;try{if(!fE8(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)}w.searchParams.set("redirect_uri",v)}if(w.searchParams.has("resource"))w.searchParams.set("resource",U);if(eK8(G.connection_url))w.searchParams.set("auto_personal","true"),w.searchParams.set("force_new","true");return $.redirect(w.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,R=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 d=atob(T.slice(6).trim()),W0=d.indexOf(":");if(W0!==-1){let I0=decodeURIComponent(d.slice(0,W0)),J0=decodeURIComponent(d.slice(W0+1));A=I0||null,R=J0||null}}catch{}let v=await $.req.formData();if(v.has("resource"))v.set("resource",U);let b=v.get("client_id"),h=v.get("client_secret");if(typeof b==="string"&&b)A=b;if(typeof h==="string"&&h)R=h;let l=new URLSearchParams;for(let[d,W0]of v.entries())l.append(d,W0.toString());z=l.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(),h={};try{h=b?JSON.parse(b):{}}catch{z=b}let l=typeof h==="object"&&h!==null&&!Array.isArray(h);if(z===void 0&&!l)z=b;if(z===void 0){let d=h,W0=d.metadata&&typeof d.metadata==="object"?d.metadata:{};d.metadata={...W0,organization_id:G.organization_id,...v?.slug?{organization_slug:v.slug}:{},...v?.name?{organization_name:v.name}:{}},z=JSON.stringify(d),E["Content-Type"]="application/json"}}else z=$.req.raw.body??void 0;let f=await fetch(w.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 h=typeof b.expires_in==="number"?new Date(Date.now()+b.expires_in*1000):null,l=null;try{l=await H2(G.connection_url)??D}catch{l=D}let d={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:h,clientId:A,clientSecret:R,tokenEndpoint:l};await new e5(X.db,X.vault).upsert(d)}}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})},yE8=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&&(!SB(Y)||!await _B(Z)))return $.json({error:"forbidden"},403);let W=G?u_0:Y;if(G)qO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return Gw($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:Y,typePatterns:J,connectedAt:new Date().toISOString()})}),!k6.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(()=>{k6.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),k6.remove(W,K)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),k6.remove(W,K),N()})})})},wF5,PF5,zF5=()=>EF5(B4),AF5=()=>jF5(B4);var hE8=L(()=>{n$();u1();y1$();HK8();BK8();gK8();pK8();tZ0();nN1();aK8();u90();H9();ui();q8();Y8();Rf0();XH8();bO1();dK();dN();uP1();I3();b6();Q6();nP1();vH8();tH8();aP1();DF8();Wz1();Lz1();Oz1();vK();L70();wz1();bF8();Vf0();Fw8();Lw8();Ow8();Pw8();Cw8();zz1();_w8();lb0();cZ0();gw8();db0();e21();uw8();r21();mw8();sw8();ew8();$j8();Qj8();Xj8();Gj8();Bj8();jT1();Vz1();wj8();a21();n21();hQ0();vj8();JT1();AJ();EB0();r80();OB1();i80();n80();hO1();bj8();fj8();Nz1();mj8();vv0();dj8();oa();w00();TO();c5();lE1();oj8();XE8();OG();uz();KE8();hF0();ST1();uW();Ez1();zO();YL1();hF0();AZ0();N00();ne0();FE8();tj();NE8();ao();uP1();wt();ft();iv0();_E8=_(_H(),1);wF5=new LF5,PF5=new Set([G3,gW,YD,XD,ww,k2])});var mE8={};O6(mE8,{resolveClientDir:()=>CF5,resolveAssetPathWithTraversalCheck:()=>cE8,isPathWithinDirectory:()=>lE8,createAssetHandler:()=>SF5});import{resolve as RQ0,dirname as qF5,join as RF5,extname as MF5,basename as VF5,sep as uE8}from"path";function IF5($,Z){if($===Z||VF5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${uE8}assets${uE8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function lE8($,Z){let Q=RQ0(Z),Y=RQ0($);return Y===Q||Y.startsWith(Q+"/")}function cE8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=RQ0(Z,Q);if(!lE8(Y,Z))return null;return Y}function CF5($,Z="../client"){let Q=new URL($),Y=qF5(Q.pathname);return RQ0(Y,Z)}function SF5($={}){let{env:Z="production",clientDir:Q=kF5,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=cE8({requestPath:W,clientDir:Q});if(!K)return null;let H=RF5(K,"index.html"),F=RQ0(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(MF5(K))?[H,F]:[];for(let D of[K,...B])try{let O=Bun.file(D);if(await O.exists())return new Response(O,{headers:IF5(D,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var kF5="./dist/client";var dE8=()=>{};var iE8={};O6(iE8,{tryUpgradePreviewWs:()=>gF5,tryHandlePreviewHttp:()=>yF5,previewWebSocketHandler:()=>hF5,parsePreviewBaseDomain:()=>fF5,isPreviewWsData:()=>zg0,extractHandleFromHost:()=>fT1});function bF5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function xF5(){return new Response(vF5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function fF5($){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 fT1($,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 yF5($,Z){let Q=fT1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let Y=await Z.getRunner();if(!Y)return VQ0(503,"preview proxy not configured");let X=await Y.proxyPreviewRequest(Q,$);if(X.headers.get(Rn)&&bF5($))return xF5();return X.headers.delete(Rn),X}function VQ0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function zg0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function gF5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=fT1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let X=await Q.getRunner();if(!X)return VQ0(503,"preview proxy not configured");let J=await X.resolvePreviewUpstreamUrl(Y);if(!J)return VQ0(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return VQ0(404,"not found");let W=`${J.replace(/^http/,"ws")}${G.pathname}${G.search}`,K=$.headers.get("sec-websocket-protocol"),H=K?K.split(",").map((N)=>N.trim()).filter(Boolean):[],F={kind:"preview",upstreamUrl:W,upstreamProtocols:H,pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:F}))return VQ0(426,"upgrade failed");return}function MQ0($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var _F5=256,vF5='<!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>',hF5;var pE8=L(()=>{M50();hF5={open($){let Z=$.data;if(!zg0(Z))return;let Q;try{Q=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)}`),MQ0($,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)=>{MQ0($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{MQ0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!zg0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=_F5){MQ0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!zg0(Z))return;MQ0($,Z,1000,"")}}});n$();var oT1="14";function sT1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:oT1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}n$();import FP8 from"pg";var rT1=8314027461559302n,UP8=600000,NP8=500;async function aT1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=UP8}=$,X=$.log??((K)=>console.log(K)),J=new FP8.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",[rT1.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 J$(NP8)}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)",[rT1.toString()])}catch{}await J.end().catch(()=>{})}}u1();_g0();b6();function Fz8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function og0($,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 bq1(){let $=Fz8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:og0($,"--cpu-prof-dir")??process.cwd(),name:og0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(og0($,"--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.'}))}ag0();var cQ0;function mq1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=v2();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(()=>{}),cQ0=setInterval(()=>void Z().catch(()=>{}),$),cQ0.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(cQ0)clearInterval(cQ0)}}import*as Bz8 from"bun:jsc";var{startSamplingProfiler:Dz8,samplingProfilerStackTraces:Lz8}=Bz8;function dq1(){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{Dz8()}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=Lz8()?.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 iq1(){bq1();let $=[mq1(),cq1(),dq1()];return()=>{for(let Z of $)Z()}}import{existsSync as nF5}from"fs";var fW=B0();Sq1();var{DBOS:IQ0,DBOSClient:uF5}=await import("@dbos-inc/dbos-sdk");function cT1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var lF5=[G3,gW,YD,XD,ww,k2,C2],cF5=fW.dispatchRole==="worker"?lF5:fW.dispatchRole==="api"?[]:void 0;IQ0.setConfig(sT1({systemDatabaseUrl:cT1(fW.databaseUrl,fW.databasePgSsl),poolSize:fW.dbosPoolSize,executorID:fW.podName,listenQueues:cF5}));var{createApp:mF5}=await Promise.resolve().then(() => (hE8(),gE8)),{isServerPath:dF5}=await Promise.resolve().then(() => (hQ0(),Dq1)),{createAssetHandler:iF5,resolveClientDir:rE8}=await Promise.resolve().then(() => (dE8(),mE8)),pF5=fW.port,nE8=rE8(import.meta.url,"../client"),aE8=nF5(nE8)?nE8:rE8(import.meta.url,"../dist/client"),tF5=iF5({clientDir:aE8,isServerPath:dF5}),oF5={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function sF5($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(oF5))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:rF5,tryHandlePreviewHttp:aF5,tryUpgradePreviewWs:eF5,previewWebSocketHandler:yT1,isPreviewWsData:gT1}=await Promise.resolve().then(() => (pE8(),iE8)),{getOrInitSharedRunner:eE8}=await Promise.resolve().then(() => (IX(),Gn$)),$P8=rF5(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),tE8={baseDomain:$P8??"",getRunner:eE8};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())eE8().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var Ag0=await mF5({clientDir:aE8}),hT1=process.env.DBOS_CONDUCTOR_KEY?.trim(),oE8=process.env.DBOS_CONDUCTOR_URL?.trim();await aT1({databaseUrl:cT1(fW.databaseUrl,fW.databasePgSsl)},()=>IQ0.launch({...hT1?{conductorKey:hT1}:{},...hT1&&oE8?{conductorURL:oE8}:{}}));console.log(`[dbos] application version: ${IQ0.applicationVersion}`);var uT1=5,lT1=0;await L8(async()=>{lT1++;try{return await Ag0.initDbos()}catch($){let Z=lT1>=uT1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${lT1}/${uT1} failed, ${Z}`,$),$}},{maxAttempts:uT1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});var $U5=Bun.serve({idleTimeout:0,port:pF5,hostname:"0.0.0.0",fetch:async($,Z)=>{if($P8){let Y=await eF5($,Z,tE8);if(Y===void 0)return;if(Y)return Y;let X=await aF5($,tE8);if(X)return X}let Q=await tF5($);if(Q)return sF5(Q);return Ag0.fetch($,{server:Z})},websocket:{open($){if(gT1($.data))yT1.open($)},message($,Z){if(gT1($.data))yT1.message($,Z)},close($){if(gT1($.data))yT1.close($)}},development:!1}),ZU5=iq1();if(fW.localMode)Promise.resolve().then(() => (rh(),Mv0)).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(() => (rh(),Mv0));Z()}catch{}});var sE8=!1;async function QU5($){let Z;try{Z=await uF5.create({systemDatabaseUrl:cT1(fW.databaseUrl,fW.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:gW,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:gW}),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 Tg0($){if(sE8)return;sE8=!0,console.log(`
4412
4412
  [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{ZU5(),Ag0.markShuttingDown();let J=eT1(fW.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await J$(J),await $U5.stop(!0);let G=IQ0.executorID;await IQ0.shutdown(),await QU5(G),await Ag0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>Tg0("SIGTERM"));process.on("SIGINT",()=>Tg0("SIGINT"));process.on("SIGHUP",()=>Tg0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),Tg0("uncaughtException")});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.503.3",
3
+ "version": "4.503.4",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -62,7 +62,7 @@
62
62
  "@better-auth/sso": "1.4.1",
63
63
  "@decocms/better-auth": "1.5.17",
64
64
  "@decocms/bindings": "workspace:*",
65
- "@decocms/blocks": "8.4.0",
65
+ "@decocms/blocks": "8.5.1",
66
66
  "@decocms/mcp-utils": "workspace:*",
67
67
  "@decocms/runtime": "workspace:*",
68
68
  "@decocms/sandbox": "workspace:*",
@@ -1 +0,0 @@
1
- import{c,j as s,a0 as u}from"./index-DcwcoAG1.js";import{C as f}from"./index-BRWw7SCJ.js";import{a as x}from"./thread-route-lxlAvBuV.js";import{u as g}from"./use-task-metadata-BvqNr1xh.js";import{AppViewContent as h}from"./project-app-view-DNVq8VkM.js";import"./use-mobile-59ztD2wt.js";import"./use-app-takeover-CDJv15ZB.js";import"./sheet-Tquw41xW.js";import"./tooltip-B_25NPmf.js";import"./index-aLtOKeM_.js";import"./use-project-native-view-presence-CEzqnREe.js";import"./use-panel-navigate-B6CuCVz_.js";import"./use-project-scope-M2K9oclq.js";import"./repository-binding-CUxf8aX0.js";import"./use-mcp-client-B5o4BaiL.js";import"./auth-BT8e81qV.js";import"./thread-intent-DLDiaL9G.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-DVveSXgO.js";import"./task-board-CTuiBIsg.js";import"./schema-Dm_m9LVL.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-BMy41NVN.js";import"./use-organization-settings-C20lZFsL.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-IYZ6dMMm.js";import"./AlertCircle-C0bs-qa3.js";import"./Tool01-Dupx1l4q.js";import"./ArrowUp-BJPF3L4O.js";import"./ArrowLeft-CyqGFvgi.js";import"./LinkBroken01-BmmJuH8C.js";import"./ShoppingBag01-DK8LMXMw.js";import"./ZoomOut-CMtk8pmQ.js";import"./Building02-CwMh8UJJ.js";import"./CheckCircle-YHLE1_hJ.js";import"./ChevronUp-DqRKMsmV.js";import"./ChevronSelectorVertical-Bggh3LX5.js";import"./UserSquare-BW7WmTct.js";import"./Copy01-Cq9WjfW7.js";import"./CreditCard01-CUDx5NqO.js";import"./DotsVertical-B2EQHomZ.js";import"./Image01-DkJLJorV.js";import"./Globe04-D9a2dMdx.js";import"./SwitchHorizontal01-AcstXYg5.js";import"./Key01-xAYnO8or.js";import"./Link01-DQBTD3DQ.js";import"./Monitor01-BCkwJw6w.js";import"./Sun-C9cU8hxr.js";import"./Play-oLIfAzRt.js";import"./Plus-BApnGlKK.js";import"./SearchMd-NpuwzAcc.js";import"./Trash01-Ck_X1vUa.js";import"./Upload01-qEgWy132.js";import"./User01-CgwPUhzy.js";import"./Users01-B_hzpQi7.js";import"./XClose-C6revfQl.js";import"./toolbar-icon-button-DpCNxe0K.js";import"./shell-layout-CRO_nANS.js";import"./avatar-C8v4_r4j.js";import"./use-clock-tick-as5oTZgN.js";import"./command-0uhVFrEr.js";import"./index-Dxx153um.js";import"./integration-icon-DnkM_UL8.js";import"./project-icon-vLtBMI8z.js";import"./new-project-dialog-BKgvqK78.js";import"./label-Dt5vzIMB.js";import"./repository-import-picker-C6OTix7e.js";import"./use-navigate-to-agent-CZ4dW_nQ.js";import"./repository-picker-BXAw9AXK.js";import"./useInfiniteQuery-C4Z0Ecih.js";import"./infiniteQueryObserver-OVT2IHZz.js";import"./collection-search-DKdVuGfx.js";import"./use-debounced-value-Dp8C9zA0.js";import"./required-auth-layout-Cv45xJqA.js";import"./autosend-1JvG61Q-.js";import"./use-org-sso-Bd_oapaS.js";import"./resizable-fCTJH5jh.js";import"./icon-button-kIcQhYLP.js";import"./tool-namespace-B_k1k0fN.js";import"./use-mcp-tools-Dz-ZY0cO.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-DA0a33zE.js";import"./types-BUQqhAId.js";import"./chat-context-BNjKw9LL.js";import"./use-decopilot-events-DL9_5J0E.js";import"./use-ai-providers-BPhJ1yF7.js";import"./use-chat-navigation-DUbS_iPM.js";import"./location-BjlyegC2.js";import"./task-route-BKkIPiry.js";import"./task-key-BCHdFiOO.js";import"./core.esm-CMBApA4v.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-DqVGkDIM.js";import"./companions-core-DzyeM-yJ.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-ByTYKy_L.js";import"./form-C-_Hq4Nf.js";import"./provision-repo-scoped-github-connection-lckxpDHD.js";import"./useQueries-DpIF9hue.js";import"./authenticate-and-persist-oauth-DDvH_pYK.js";import"./mcp-oauth-CX8fEmM9.js";import"./mcp-oauth-I5gBNKoS.js";import"./track-bhmAWi0b.js";import"./extract-connection-data-6U5via6T.js";import"./connection-p3Yh3nCI.js";import"./url-slug-CNFZ5XX5.js";const $=u("/shell/$org/org-shell/agent-shell/projects/$agentId/apps/$connectionId/$toolName");function j(){const t=c.c(9),{connectionId:o,toolName:r}=$.useParams(),l=x(),i=g(l);let p;t[0]!==o||t[1]!==i?.expanded_tools||t[2]!==r?(p=i?.expanded_tools?.find(a=>a.appId===o&&a.toolName===r),t[0]=o,t[1]=i?.expanded_tools,t[2]=r,t[3]=p):p=t[3];const d=p,e=`${o}:${r}`,n=d?.args;let m;return t[4]!==o||t[5]!==e||t[6]!==n||t[7]!==r?(m=s.jsx(h,{connectionId:o,toolName:r,args:n},e),t[4]=o,t[5]=e,t[6]=n,t[7]=r,t[8]=m):m=t[8],m}function Ao(){const t=c.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(f.Content,{children:s.jsx(j,{})}),t[0]=o):o=t[0],o}export{Ao as default};
@@ -1 +0,0 @@
1
- import{c,j as e,b1 as b,u as g}from"./index-DcwcoAG1.js";import{C as j}from"./index-BRWw7SCJ.js";import{F as v,H as S}from"./file-share-button-D2ewghAx.js";import{u as k,b as y,e as _}from"./use-org-fs-DFXSn92O.js";import{S as w}from"./settings-tab-vFTyot1Q.js";import{b as M}from"./thread-route-lxlAvBuV.js";import"./use-mobile-59ztD2wt.js";import"./use-app-takeover-CDJv15ZB.js";import"./sheet-Tquw41xW.js";import"./tooltip-B_25NPmf.js";import"./index-aLtOKeM_.js";import"./use-project-native-view-presence-CEzqnREe.js";import"./use-panel-navigate-B6CuCVz_.js";import"./use-project-scope-M2K9oclq.js";import"./repository-binding-CUxf8aX0.js";import"./use-mcp-client-B5o4BaiL.js";import"./auth-BT8e81qV.js";import"./thread-intent-DLDiaL9G.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-DVveSXgO.js";import"./task-board-CTuiBIsg.js";import"./schema-Dm_m9LVL.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-BMy41NVN.js";import"./use-organization-settings-C20lZFsL.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-IYZ6dMMm.js";import"./AlertCircle-C0bs-qa3.js";import"./Tool01-Dupx1l4q.js";import"./ArrowUp-BJPF3L4O.js";import"./ArrowLeft-CyqGFvgi.js";import"./LinkBroken01-BmmJuH8C.js";import"./ShoppingBag01-DK8LMXMw.js";import"./ZoomOut-CMtk8pmQ.js";import"./Building02-CwMh8UJJ.js";import"./CheckCircle-YHLE1_hJ.js";import"./ChevronUp-DqRKMsmV.js";import"./ChevronSelectorVertical-Bggh3LX5.js";import"./UserSquare-BW7WmTct.js";import"./Copy01-Cq9WjfW7.js";import"./CreditCard01-CUDx5NqO.js";import"./DotsVertical-B2EQHomZ.js";import"./Image01-DkJLJorV.js";import"./Globe04-D9a2dMdx.js";import"./SwitchHorizontal01-AcstXYg5.js";import"./Key01-xAYnO8or.js";import"./Link01-DQBTD3DQ.js";import"./Monitor01-BCkwJw6w.js";import"./Sun-C9cU8hxr.js";import"./Play-oLIfAzRt.js";import"./Plus-BApnGlKK.js";import"./SearchMd-NpuwzAcc.js";import"./Trash01-Ck_X1vUa.js";import"./Upload01-qEgWy132.js";import"./User01-CgwPUhzy.js";import"./Users01-B_hzpQi7.js";import"./XClose-C6revfQl.js";import"./toolbar-icon-button-DpCNxe0K.js";import"./shell-layout-CRO_nANS.js";import"./avatar-C8v4_r4j.js";import"./use-clock-tick-as5oTZgN.js";import"./command-0uhVFrEr.js";import"./index-Dxx153um.js";import"./integration-icon-DnkM_UL8.js";import"./project-icon-vLtBMI8z.js";import"./new-project-dialog-BKgvqK78.js";import"./label-Dt5vzIMB.js";import"./repository-import-picker-C6OTix7e.js";import"./use-navigate-to-agent-CZ4dW_nQ.js";import"./repository-picker-BXAw9AXK.js";import"./useInfiniteQuery-C4Z0Ecih.js";import"./infiniteQueryObserver-OVT2IHZz.js";import"./collection-search-DKdVuGfx.js";import"./use-debounced-value-Dp8C9zA0.js";import"./required-auth-layout-Cv45xJqA.js";import"./autosend-1JvG61Q-.js";import"./use-org-sso-Bd_oapaS.js";import"./resizable-fCTJH5jh.js";import"./icon-button-kIcQhYLP.js";import"./popover-5CUWIQBk.js";import"./extract-connection-data-6U5via6T.js";import"./metadata-D72DunRR.js";import"./connection-p3Yh3nCI.js";import"./url-slug-CNFZ5XX5.js";import"./chat-context-BNjKw9LL.js";import"./use-decopilot-events-DL9_5J0E.js";import"./use-ai-providers-BPhJ1yF7.js";import"./use-chat-navigation-DUbS_iPM.js";import"./location-BjlyegC2.js";import"./build-improve-prompt-doc-AWiYNzNL.js";import"./empty-state-CEoRSVYz.js";import"./use-date-fns-locale-Dz5rWTWI.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-CX8fEmM9.js";import"./mcp-oauth-I5gBNKoS.js";import"./alert-dialog-DvHapLNz.js";import"./textarea-BqrbUXb-.js";import"./use-connection-DY-WagAa.js";import"./use-debounced-autosave-WFKR23sx.js";import"./add-connection-dialog-DYGuB_HZ.js";import"./connection-card-s4hDH-AI.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-CLZ-xo2r.js";import"./form-C-_Hq4Nf.js";import"./select-BcwZlsYZ.js";import"./index-BdQq_4o_.js";import"./schema-BSza6gHX.js";import"./connection-form-helpers-DJ-magA7.js";import"./authenticate-and-persist-oauth-DDvH_pYK.js";import"./collection-tabs-DI6C6Bxt.js";import"./badge-BHmZq84v.js";import"./use-infinite-scroll-BPodZDx6.js";import"./useSuspenseInfiniteQuery-DgVkw039.js";import"./file-type-icon-CQ2NL6D0.js";import"./checkbox-xhw9TpJq.js";import"./search-input-BTzoOGtl.js";import"./use-mcp-auth-status-CoEvprj1.js";import"./types-BUQqhAId.js";import"./use-mcp-tools-Dz-ZY0cO.js";import"./use-mcp-prompts-BitxABIK.js";import"./utils-CVEq3hMx.js";import"./switch-CXVVml8l.js";import"./scroll-area-CuMF5NiW.js";import"./optimistic-project-sidebar-views-DyvLQ80j.js";import"./format-time-CAj8AQXM.js";import"./use-copy-ClD4s_TM.js";import"./virtual-mcp-nLZqaKxm.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-Ch2nVO3v.js";import"./use-secrets-DpgJFxgU.js";import"./omit-sandbox-map-jj4lCB2U.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 rr(){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{rr as default};
@@ -1 +0,0 @@
1
- import{c as s,j as e}from"./index-DcwcoAG1.js";import{C as a}from"./index-BRWw7SCJ.js";import{L as n}from"./library-tab-Dk8jPHZc.js";import{u as c}from"./use-ensure-project-folder-d3UBGQ7Q.js";import{u}from"./use-project-scope-M2K9oclq.js";import{p as l}from"./location-BjlyegC2.js";import"./use-mobile-59ztD2wt.js";import"./use-app-takeover-CDJv15ZB.js";import"./sheet-Tquw41xW.js";import"./tooltip-B_25NPmf.js";import"./index-aLtOKeM_.js";import"./use-project-native-view-presence-CEzqnREe.js";import"./thread-route-lxlAvBuV.js";import"./use-panel-navigate-B6CuCVz_.js";import"./thread-intent-DLDiaL9G.js";import"./use-mcp-client-B5o4BaiL.js";import"./auth-BT8e81qV.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-DVveSXgO.js";import"./task-board-CTuiBIsg.js";import"./schema-Dm_m9LVL.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-BMy41NVN.js";import"./use-organization-settings-C20lZFsL.js";import"./repository-binding-CUxf8aX0.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-IYZ6dMMm.js";import"./AlertCircle-C0bs-qa3.js";import"./Tool01-Dupx1l4q.js";import"./ArrowUp-BJPF3L4O.js";import"./ArrowLeft-CyqGFvgi.js";import"./LinkBroken01-BmmJuH8C.js";import"./ShoppingBag01-DK8LMXMw.js";import"./ZoomOut-CMtk8pmQ.js";import"./Building02-CwMh8UJJ.js";import"./CheckCircle-YHLE1_hJ.js";import"./ChevronUp-DqRKMsmV.js";import"./ChevronSelectorVertical-Bggh3LX5.js";import"./UserSquare-BW7WmTct.js";import"./Copy01-Cq9WjfW7.js";import"./CreditCard01-CUDx5NqO.js";import"./DotsVertical-B2EQHomZ.js";import"./Image01-DkJLJorV.js";import"./Globe04-D9a2dMdx.js";import"./SwitchHorizontal01-AcstXYg5.js";import"./Key01-xAYnO8or.js";import"./Link01-DQBTD3DQ.js";import"./Monitor01-BCkwJw6w.js";import"./Sun-C9cU8hxr.js";import"./Play-oLIfAzRt.js";import"./Plus-BApnGlKK.js";import"./SearchMd-NpuwzAcc.js";import"./Trash01-Ck_X1vUa.js";import"./Upload01-qEgWy132.js";import"./User01-CgwPUhzy.js";import"./Users01-B_hzpQi7.js";import"./XClose-C6revfQl.js";import"./toolbar-icon-button-DpCNxe0K.js";import"./shell-layout-CRO_nANS.js";import"./avatar-C8v4_r4j.js";import"./use-clock-tick-as5oTZgN.js";import"./command-0uhVFrEr.js";import"./index-Dxx153um.js";import"./integration-icon-DnkM_UL8.js";import"./project-icon-vLtBMI8z.js";import"./new-project-dialog-BKgvqK78.js";import"./label-Dt5vzIMB.js";import"./repository-import-picker-C6OTix7e.js";import"./use-navigate-to-agent-CZ4dW_nQ.js";import"./repository-picker-BXAw9AXK.js";import"./useInfiniteQuery-C4Z0Ecih.js";import"./infiniteQueryObserver-OVT2IHZz.js";import"./collection-search-DKdVuGfx.js";import"./use-debounced-value-Dp8C9zA0.js";import"./required-auth-layout-Cv45xJqA.js";import"./autosend-1JvG61Q-.js";import"./use-org-sso-Bd_oapaS.js";import"./resizable-fCTJH5jh.js";import"./icon-button-kIcQhYLP.js";import"./search-toggle-DqerdjGH.js";import"./alert-dialog-DvHapLNz.js";import"./use-chat-navigation-DUbS_iPM.js";import"./use-org-fs-DFXSn92O.js";import"./use-org-repo-syncs-BU7kIMDH.js";import"./textarea-BqrbUXb-.js";import"./markdown-BqgEzNGE.js";import"./use-copy-ClD4s_TM.js";import"./file-share-button-D2ewghAx.js";import"./popover-5CUWIQBk.js";import"./preview-dialog-DwCusxLT.js";import"./preview-content-CshUlHqh.js";import"./file-preview-oG-3SqEP.js";import"./utils-DjpuMjJB.js";import"./editor-D4HuZvrK.js";import"./file-type-icon-CQ2NL6D0.js";import"./folder-icon-DfMLETlT.js";import"./empty-state-BsdKh2Ue.js";import"./view-mode-toggle-BIZQrhSv.js";import"./format-time-CAj8AQXM.js";import"./differenceInSeconds-C3x8sHUj.js";import"./table-D9xONBRn.js";import"./use-members-DgrZSQ5N.js";import"./use-org-auth-client-BSKCTJ83.js";function no(){const t=s.c(6),{project:o}=u();c(o);const m=o?.id??"pending";let r;t[0]!==o?(r=o?l(o):void 0,t[0]=o,t[1]=r):r=t[1];const p=o?.title??void 0;let i;return t[2]!==m||t[3]!==r||t[4]!==p?(i=e.jsx(a.Content,{children:e.jsx(n,{root:r,rootLabel:p},m)}),t[2]=m,t[3]=r,t[4]=p,t[5]=i):i=t[5],i}export{no as default};
@@ -1 +0,0 @@
1
- import{c as a,j as e,u as n}from"./index-DcwcoAG1.js";import{C as c}from"./index-BRWw7SCJ.js";import{L as l}from"./preview-panel-WzN8kpWO.js";import{a as u}from"./use-panel-navigate-B6CuCVz_.js";import{S as f}from"./settings-tab-vFTyot1Q.js";import{b as h}from"./thread-route-lxlAvBuV.js";import"./use-mobile-59ztD2wt.js";import"./use-app-takeover-CDJv15ZB.js";import"./sheet-Tquw41xW.js";import"./tooltip-B_25NPmf.js";import"./index-aLtOKeM_.js";import"./use-project-native-view-presence-CEzqnREe.js";import"./thread-intent-DLDiaL9G.js";import"./use-mcp-client-B5o4BaiL.js";import"./auth-BT8e81qV.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-DVveSXgO.js";import"./task-board-CTuiBIsg.js";import"./schema-Dm_m9LVL.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-BMy41NVN.js";import"./use-organization-settings-C20lZFsL.js";import"./repository-binding-CUxf8aX0.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-IYZ6dMMm.js";import"./AlertCircle-C0bs-qa3.js";import"./Tool01-Dupx1l4q.js";import"./ArrowUp-BJPF3L4O.js";import"./ArrowLeft-CyqGFvgi.js";import"./LinkBroken01-BmmJuH8C.js";import"./ShoppingBag01-DK8LMXMw.js";import"./ZoomOut-CMtk8pmQ.js";import"./Building02-CwMh8UJJ.js";import"./CheckCircle-YHLE1_hJ.js";import"./ChevronUp-DqRKMsmV.js";import"./ChevronSelectorVertical-Bggh3LX5.js";import"./UserSquare-BW7WmTct.js";import"./Copy01-Cq9WjfW7.js";import"./CreditCard01-CUDx5NqO.js";import"./DotsVertical-B2EQHomZ.js";import"./Image01-DkJLJorV.js";import"./Globe04-D9a2dMdx.js";import"./SwitchHorizontal01-AcstXYg5.js";import"./Key01-xAYnO8or.js";import"./Link01-DQBTD3DQ.js";import"./Monitor01-BCkwJw6w.js";import"./Sun-C9cU8hxr.js";import"./Play-oLIfAzRt.js";import"./Plus-BApnGlKK.js";import"./SearchMd-NpuwzAcc.js";import"./Trash01-Ck_X1vUa.js";import"./Upload01-qEgWy132.js";import"./User01-CgwPUhzy.js";import"./Users01-B_hzpQi7.js";import"./XClose-C6revfQl.js";import"./toolbar-icon-button-DpCNxe0K.js";import"./shell-layout-CRO_nANS.js";import"./avatar-C8v4_r4j.js";import"./use-project-scope-M2K9oclq.js";import"./use-clock-tick-as5oTZgN.js";import"./command-0uhVFrEr.js";import"./index-Dxx153um.js";import"./integration-icon-DnkM_UL8.js";import"./project-icon-vLtBMI8z.js";import"./new-project-dialog-BKgvqK78.js";import"./label-Dt5vzIMB.js";import"./repository-import-picker-C6OTix7e.js";import"./use-navigate-to-agent-CZ4dW_nQ.js";import"./repository-picker-BXAw9AXK.js";import"./useInfiniteQuery-C4Z0Ecih.js";import"./infiniteQueryObserver-OVT2IHZz.js";import"./collection-search-DKdVuGfx.js";import"./use-debounced-value-Dp8C9zA0.js";import"./required-auth-layout-Cv45xJqA.js";import"./autosend-1JvG61Q-.js";import"./use-org-sso-Bd_oapaS.js";import"./resizable-fCTJH5jh.js";import"./icon-button-kIcQhYLP.js";import"./preview-content-CshUlHqh.js";import"./file-share-button-D2ewghAx.js";import"./use-org-fs-DFXSn92O.js";import"./popover-5CUWIQBk.js";import"./file-preview-oG-3SqEP.js";import"./utils-DjpuMjJB.js";import"./editor-D4HuZvrK.js";import"./file-type-icon-CQ2NL6D0.js";import"./markdown-BqgEzNGE.js";import"./use-copy-ClD4s_TM.js";import"./location-BjlyegC2.js";import"./extract-connection-data-6U5via6T.js";import"./metadata-D72DunRR.js";import"./connection-p3Yh3nCI.js";import"./url-slug-CNFZ5XX5.js";import"./chat-context-BNjKw9LL.js";import"./use-decopilot-events-DL9_5J0E.js";import"./use-ai-providers-BPhJ1yF7.js";import"./use-chat-navigation-DUbS_iPM.js";import"./build-improve-prompt-doc-AWiYNzNL.js";import"./empty-state-CEoRSVYz.js";import"./use-date-fns-locale-Dz5rWTWI.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-CX8fEmM9.js";import"./mcp-oauth-I5gBNKoS.js";import"./alert-dialog-DvHapLNz.js";import"./textarea-BqrbUXb-.js";import"./use-connection-DY-WagAa.js";import"./use-debounced-autosave-WFKR23sx.js";import"./add-connection-dialog-DYGuB_HZ.js";import"./connection-card-s4hDH-AI.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-CLZ-xo2r.js";import"./form-C-_Hq4Nf.js";import"./select-BcwZlsYZ.js";import"./index-BdQq_4o_.js";import"./schema-BSza6gHX.js";import"./connection-form-helpers-DJ-magA7.js";import"./authenticate-and-persist-oauth-DDvH_pYK.js";import"./collection-tabs-DI6C6Bxt.js";import"./badge-BHmZq84v.js";import"./use-infinite-scroll-BPodZDx6.js";import"./useSuspenseInfiniteQuery-DgVkw039.js";import"./checkbox-xhw9TpJq.js";import"./search-input-BTzoOGtl.js";import"./use-mcp-auth-status-CoEvprj1.js";import"./types-BUQqhAId.js";import"./use-mcp-tools-Dz-ZY0cO.js";import"./use-mcp-prompts-BitxABIK.js";import"./utils-CVEq3hMx.js";import"./switch-CXVVml8l.js";import"./scroll-area-CuMF5NiW.js";import"./optimistic-project-sidebar-views-DyvLQ80j.js";import"./format-time-CAj8AQXM.js";import"./virtual-mcp-nLZqaKxm.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-Ch2nVO3v.js";import"./use-secrets-DpgJFxgU.js";import"./omit-sandbox-map-jj4lCB2U.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 Qr(){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{Qr as default};
@@ -1 +0,0 @@
1
- import{c as m,j as i}from"./index-DcwcoAG1.js";import{C as p}from"./index-BRWw7SCJ.js";import{S as e}from"./settings-tab-vFTyot1Q.js";import{b as n}from"./thread-route-lxlAvBuV.js";import"./use-mobile-59ztD2wt.js";import"./use-app-takeover-CDJv15ZB.js";import"./sheet-Tquw41xW.js";import"./tooltip-B_25NPmf.js";import"./index-aLtOKeM_.js";import"./use-project-native-view-presence-CEzqnREe.js";import"./use-panel-navigate-B6CuCVz_.js";import"./use-project-scope-M2K9oclq.js";import"./repository-binding-CUxf8aX0.js";import"./use-mcp-client-B5o4BaiL.js";import"./auth-BT8e81qV.js";import"./thread-intent-DLDiaL9G.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-DVveSXgO.js";import"./task-board-CTuiBIsg.js";import"./schema-Dm_m9LVL.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-BMy41NVN.js";import"./use-organization-settings-C20lZFsL.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-IYZ6dMMm.js";import"./AlertCircle-C0bs-qa3.js";import"./Tool01-Dupx1l4q.js";import"./ArrowUp-BJPF3L4O.js";import"./ArrowLeft-CyqGFvgi.js";import"./LinkBroken01-BmmJuH8C.js";import"./ShoppingBag01-DK8LMXMw.js";import"./ZoomOut-CMtk8pmQ.js";import"./Building02-CwMh8UJJ.js";import"./CheckCircle-YHLE1_hJ.js";import"./ChevronUp-DqRKMsmV.js";import"./ChevronSelectorVertical-Bggh3LX5.js";import"./UserSquare-BW7WmTct.js";import"./Copy01-Cq9WjfW7.js";import"./CreditCard01-CUDx5NqO.js";import"./DotsVertical-B2EQHomZ.js";import"./Image01-DkJLJorV.js";import"./Globe04-D9a2dMdx.js";import"./SwitchHorizontal01-AcstXYg5.js";import"./Key01-xAYnO8or.js";import"./Link01-DQBTD3DQ.js";import"./Monitor01-BCkwJw6w.js";import"./Sun-C9cU8hxr.js";import"./Play-oLIfAzRt.js";import"./Plus-BApnGlKK.js";import"./SearchMd-NpuwzAcc.js";import"./Trash01-Ck_X1vUa.js";import"./Upload01-qEgWy132.js";import"./User01-CgwPUhzy.js";import"./Users01-B_hzpQi7.js";import"./XClose-C6revfQl.js";import"./toolbar-icon-button-DpCNxe0K.js";import"./shell-layout-CRO_nANS.js";import"./avatar-C8v4_r4j.js";import"./use-clock-tick-as5oTZgN.js";import"./command-0uhVFrEr.js";import"./index-Dxx153um.js";import"./integration-icon-DnkM_UL8.js";import"./project-icon-vLtBMI8z.js";import"./new-project-dialog-BKgvqK78.js";import"./label-Dt5vzIMB.js";import"./repository-import-picker-C6OTix7e.js";import"./use-navigate-to-agent-CZ4dW_nQ.js";import"./repository-picker-BXAw9AXK.js";import"./useInfiniteQuery-C4Z0Ecih.js";import"./infiniteQueryObserver-OVT2IHZz.js";import"./collection-search-DKdVuGfx.js";import"./use-debounced-value-Dp8C9zA0.js";import"./required-auth-layout-Cv45xJqA.js";import"./autosend-1JvG61Q-.js";import"./use-org-sso-Bd_oapaS.js";import"./resizable-fCTJH5jh.js";import"./icon-button-kIcQhYLP.js";import"./extract-connection-data-6U5via6T.js";import"./metadata-D72DunRR.js";import"./connection-p3Yh3nCI.js";import"./url-slug-CNFZ5XX5.js";import"./chat-context-BNjKw9LL.js";import"./use-decopilot-events-DL9_5J0E.js";import"./use-ai-providers-BPhJ1yF7.js";import"./use-chat-navigation-DUbS_iPM.js";import"./location-BjlyegC2.js";import"./build-improve-prompt-doc-AWiYNzNL.js";import"./empty-state-CEoRSVYz.js";import"./use-date-fns-locale-Dz5rWTWI.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-CX8fEmM9.js";import"./mcp-oauth-I5gBNKoS.js";import"./alert-dialog-DvHapLNz.js";import"./textarea-BqrbUXb-.js";import"./use-connection-DY-WagAa.js";import"./use-debounced-autosave-WFKR23sx.js";import"./add-connection-dialog-DYGuB_HZ.js";import"./connection-card-s4hDH-AI.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-CLZ-xo2r.js";import"./form-C-_Hq4Nf.js";import"./select-BcwZlsYZ.js";import"./index-BdQq_4o_.js";import"./schema-BSza6gHX.js";import"./connection-form-helpers-DJ-magA7.js";import"./authenticate-and-persist-oauth-DDvH_pYK.js";import"./collection-tabs-DI6C6Bxt.js";import"./badge-BHmZq84v.js";import"./use-infinite-scroll-BPodZDx6.js";import"./useSuspenseInfiniteQuery-DgVkw039.js";import"./file-type-icon-CQ2NL6D0.js";import"./use-org-fs-DFXSn92O.js";import"./checkbox-xhw9TpJq.js";import"./search-input-BTzoOGtl.js";import"./use-mcp-auth-status-CoEvprj1.js";import"./types-BUQqhAId.js";import"./use-mcp-tools-Dz-ZY0cO.js";import"./use-mcp-prompts-BitxABIK.js";import"./utils-CVEq3hMx.js";import"./switch-CXVVml8l.js";import"./popover-5CUWIQBk.js";import"./scroll-area-CuMF5NiW.js";import"./optimistic-project-sidebar-views-DyvLQ80j.js";import"./format-time-CAj8AQXM.js";import"./use-copy-ClD4s_TM.js";import"./virtual-mcp-nLZqaKxm.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-Ch2nVO3v.js";import"./use-secrets-DpgJFxgU.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function s(){const t=m.c(2),o=n();let r;return t[0]!==o?(r=i.jsx(e,{virtualMcpId:o}),t[0]=o,t[1]=r):r=t[1],r}function ko(){const t=m.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=i.jsx(p.Content,{children:i.jsx(s,{})}),t[0]=o):o=t[0],o}export{ko as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/file-explorer-BusTYz3B.js","assets/index-DcwcoAG1.js","assets/index-m9hX09uY.css","assets/agent-icon-IYZ6dMMm.js","assets/AlertCircle-C0bs-qa3.js","assets/Tool01-Dupx1l4q.js","assets/ArrowUp-BJPF3L4O.js","assets/ArrowLeft-CyqGFvgi.js","assets/LinkBroken01-BmmJuH8C.js","assets/ShoppingBag01-DK8LMXMw.js","assets/ZoomOut-CMtk8pmQ.js","assets/Building02-CwMh8UJJ.js","assets/CheckCircle-YHLE1_hJ.js","assets/ChevronUp-DqRKMsmV.js","assets/ChevronSelectorVertical-Bggh3LX5.js","assets/UserSquare-BW7WmTct.js","assets/Copy01-Cq9WjfW7.js","assets/CreditCard01-CUDx5NqO.js","assets/DotsVertical-B2EQHomZ.js","assets/Image01-DkJLJorV.js","assets/Globe04-D9a2dMdx.js","assets/SwitchHorizontal01-AcstXYg5.js","assets/Key01-xAYnO8or.js","assets/Link01-DQBTD3DQ.js","assets/Monitor01-BCkwJw6w.js","assets/Sun-C9cU8hxr.js","assets/Play-oLIfAzRt.js","assets/Plus-BApnGlKK.js","assets/SearchMd-NpuwzAcc.js","assets/Trash01-Ck_X1vUa.js","assets/Upload01-qEgWy132.js","assets/User01-CgwPUhzy.js","assets/Users01-B_hzpQi7.js","assets/XClose-C6revfQl.js","assets/scroll-area-CuMF5NiW.js","assets/index-BdQq_4o_.js","assets/tooltip-B_25NPmf.js","assets/index-aLtOKeM_.js","assets/chat-context-BNjKw9LL.js","assets/use-panel-navigate-B6CuCVz_.js","assets/thread-route-lxlAvBuV.js","assets/use-project-scope-M2K9oclq.js","assets/repository-binding-CUxf8aX0.js","assets/use-mcp-client-B5o4BaiL.js","assets/auth-BT8e81qV.js","assets/autosend-1JvG61Q-.js","assets/thread-intent-DLDiaL9G.js","assets/delay-CnY5UFtP.js","assets/backoff-CrEUbyZT.js","assets/watch-sse-pool-DVveSXgO.js","assets/task-board-CTuiBIsg.js","assets/schema-Dm_m9LVL.js","assets/slugify-CEUa2lfQ.js","assets/use-decopilot-events-DL9_5J0E.js","assets/use-ai-providers-BPhJ1yF7.js","assets/use-chat-navigation-DUbS_iPM.js","assets/location-BjlyegC2.js","assets/use-organization-settings-C20lZFsL.js","assets/editor-D4HuZvrK.js","assets/shell-layout-CRO_nANS.js","assets/avatar-C8v4_r4j.js","assets/use-clock-tick-as5oTZgN.js","assets/command-0uhVFrEr.js","assets/index-Dxx153um.js","assets/integration-icon-DnkM_UL8.js","assets/project-icon-vLtBMI8z.js","assets/new-project-dialog-BKgvqK78.js","assets/label-Dt5vzIMB.js","assets/repository-import-picker-C6OTix7e.js","assets/use-navigate-to-agent-CZ4dW_nQ.js","assets/repository-picker-BXAw9AXK.js","assets/useInfiniteQuery-C4Z0Ecih.js","assets/infiniteQueryObserver-OVT2IHZz.js","assets/collection-search-DKdVuGfx.js","assets/use-debounced-value-Dp8C9zA0.js","assets/required-auth-layout-Cv45xJqA.js","assets/use-org-sso-Bd_oapaS.js","assets/shell-layout-CE2Eihra.css","assets/save-changes-debug-nBi-n9eV.js","assets/sandbox-git-api-CRxdlhrN.js","assets/sandbox-url-D3mC8qhT.js","assets/alert-dialog-DvHapLNz.js","assets/context-menu-Cm6FmYv1.js","assets/utils-DjpuMjJB.js"])))=>i.map(i=>d[i]);
2
- import{c as d,b,a2 as j,j as r,r as x,aZ as g,h as _,u as T}from"./index-DcwcoAG1.js";import{A as v}from"./agent-view-guard-C-Qfr10T.js";import{F as E}from"./feature-gate-BQX4xM-_.js";import{c as S}from"./chat-context-BNjKw9LL.js";import{E as P}from"./empty-state-CEoRSVYz.js";import"./use-main-panel-tabs-BI77ol7M.js";import"./use-project-native-view-presence-CEzqnREe.js";import"./thread-route-lxlAvBuV.js";import"./use-panel-navigate-B6CuCVz_.js";import"./use-project-scope-M2K9oclq.js";import"./repository-binding-CUxf8aX0.js";import"./use-mcp-client-B5o4BaiL.js";import"./auth-BT8e81qV.js";import"./thread-intent-DLDiaL9G.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-DVveSXgO.js";import"./task-board-CTuiBIsg.js";import"./schema-Dm_m9LVL.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-BMy41NVN.js";import"./use-organization-settings-C20lZFsL.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-IYZ6dMMm.js";import"./AlertCircle-C0bs-qa3.js";import"./Tool01-Dupx1l4q.js";import"./ArrowUp-BJPF3L4O.js";import"./ArrowLeft-CyqGFvgi.js";import"./LinkBroken01-BmmJuH8C.js";import"./ShoppingBag01-DK8LMXMw.js";import"./ZoomOut-CMtk8pmQ.js";import"./Building02-CwMh8UJJ.js";import"./CheckCircle-YHLE1_hJ.js";import"./ChevronUp-DqRKMsmV.js";import"./ChevronSelectorVertical-Bggh3LX5.js";import"./UserSquare-BW7WmTct.js";import"./Copy01-Cq9WjfW7.js";import"./CreditCard01-CUDx5NqO.js";import"./DotsVertical-B2EQHomZ.js";import"./Image01-DkJLJorV.js";import"./Globe04-D9a2dMdx.js";import"./SwitchHorizontal01-AcstXYg5.js";import"./Key01-xAYnO8or.js";import"./Link01-DQBTD3DQ.js";import"./Monitor01-BCkwJw6w.js";import"./Sun-C9cU8hxr.js";import"./Play-oLIfAzRt.js";import"./Plus-BApnGlKK.js";import"./SearchMd-NpuwzAcc.js";import"./Trash01-Ck_X1vUa.js";import"./Upload01-qEgWy132.js";import"./User01-CgwPUhzy.js";import"./Users01-B_hzpQi7.js";import"./XClose-C6revfQl.js";import"./use-connection-DY-WagAa.js";import"./use-mcp-tools-Dz-ZY0cO.js";import"./types-BUQqhAId.js";import"./utils-CVEq3hMx.js";import"./index-Brahj_AH.js";import"./sandbox-url-D3mC8qhT.js";import"./tool-namespace-B_k1k0fN.js";import"./tooltip-B_25NPmf.js";import"./index-aLtOKeM_.js";import"./drawer-CLZ-xo2r.js";import"./collection-search-DKdVuGfx.js";import"./use-mobile-59ztD2wt.js";import"./use-mcp-prompts-BitxABIK.js";import"./usage-stats-DvhuVEjC.js";import"./form-C-_Hq4Nf.js";import"./label-Dt5vzIMB.js";import"./markdown-BqgEzNGE.js";import"./use-copy-ClD4s_TM.js";import"./location-BjlyegC2.js";import"./format-time-CAj8AQXM.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-decopilot-events-DL9_5J0E.js";import"./input-By0EUIH6.js";import"./icon-button-kIcQhYLP.js";import"./file-type-icon-CQ2NL6D0.js";import"./use-chat-navigation-DUbS_iPM.js";import"./autosend-1JvG61Q-.js";import"./shell-layout-CRO_nANS.js";import"./avatar-C8v4_r4j.js";import"./use-clock-tick-as5oTZgN.js";import"./command-0uhVFrEr.js";import"./index-Dxx153um.js";import"./integration-icon-DnkM_UL8.js";import"./project-icon-vLtBMI8z.js";import"./new-project-dialog-BKgvqK78.js";import"./repository-import-picker-C6OTix7e.js";import"./use-navigate-to-agent-CZ4dW_nQ.js";import"./repository-picker-BXAw9AXK.js";import"./useInfiniteQuery-C4Z0Ecih.js";import"./infiniteQueryObserver-OVT2IHZz.js";import"./use-debounced-value-Dp8C9zA0.js";import"./required-auth-layout-Cv45xJqA.js";import"./use-org-sso-Bd_oapaS.js";import"./chat-draft-CmtxpJQx.js";import"./select-BcwZlsYZ.js";import"./index-BdQq_4o_.js";import"./tabs-B41SM090.js";import"./use-deco-credits-BnZ_gdH3.js";import"./use-ai-providers-BPhJ1yF7.js";import"./toggle-group-DalyAtPg.js";import"./use-open-billing-url-BYy0ucSY.js";import"./index-GIY94IfY.js";import"./checkbox-xhw9TpJq.js";import"./ai-providers-logos-DD3qZ33J.js";import"./popover-5CUWIQBk.js";import"./input-BSjpPhVN.js";import"./suggestion-2eY-h_h6.js";import"./use-org-fs-DFXSn92O.js";import"./question-004-sINsf4GQ.js";import"./use-members-DgrZSQ5N.js";import"./use-org-auth-client-BSKCTJ83.js";import"./feature-paywall-B0IDpilq.js";import"./plan-ladder-B1IxCH1B.js";import"./add-connection-dialog-DYGuB_HZ.js";import"./extract-connection-data-6U5via6T.js";import"./metadata-D72DunRR.js";import"./connection-p3Yh3nCI.js";import"./url-slug-CNFZ5XX5.js";import"./connection-card-s4hDH-AI.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-BqrbUXb-.js";import"./schema-BSza6gHX.js";import"./connection-form-helpers-DJ-magA7.js";import"./authenticate-and-persist-oauth-DDvH_pYK.js";import"./mcp-oauth-CX8fEmM9.js";import"./mcp-oauth-I5gBNKoS.js";import"./collection-tabs-DI6C6Bxt.js";import"./badge-BHmZq84v.js";import"./use-infinite-scroll-BPodZDx6.js";import"./useSuspenseInfiniteQuery-DgVkw039.js";import"./use-task-board-events-St3hyfJR.js";import"./pair-DKv2U48Y.js";import"./collapsible-BUt0IJaU.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-DA0a33zE.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./sheet-Tquw41xW.js";import"./use-thread-outputs-D7s2dcMd.js";import"./resolve-tab-icon-cz5Lal-I.js";import"./use-task-metadata-BvqNr1xh.js";import"./preview-source-BsRLGWUP.js";import"./virtual-mcp-nLZqaKxm.js";const y=x.lazy(()=>g(()=>import("./file-explorer-BusTYz3B.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83])).then(o=>({default:o.FileExplorer})));function w(o){const t=d.c(14),{openPath:m}=o,p=b(),{org:e}=j(),{currentBranch:i,taskId:h,virtualMcpId:a}=S();if(!a||!i){let s;t[0]!==p?(s=p("mainPanelTabs.codeTab.noSandboxToBrowse"),t[0]=p,t[1]=s):s=t[1];let l;t[2]!==p?(l=p("mainPanelTabs.codeTab.noSandboxToBrowseDescription"),t[2]=p,t[3]=l):l=t[3];let f;return t[4]!==s||t[5]!==l?(f=r.jsx(P,{className:"h-full",title:s,description:l}),t[4]=s,t[5]=l,t[6]=f):f=t[6],f}let n;t[7]===Symbol.for("react.memo_cache_sentinel")?(n=r.jsx("div",{className:"h-full flex items-center justify-center",children:r.jsx(_,{className:"size-5 text-muted-foreground"})}),t[7]=n):n=t[7];const u=h??null;let c;return t[8]!==i||t[9]!==m||t[10]!==e.slug||t[11]!==u||t[12]!==a?(c=r.jsx("div",{className:"flex flex-col w-full h-full",children:r.jsx("div",{className:"flex-1 relative overflow-hidden bg-background",children:r.jsx(x.Suspense,{fallback:n,children:r.jsx(y,{orgSlug:e.slug,virtualMcpId:a,branch:i,threadId:u,openPath:m})})})}),t[8]=i,t[9]=m,t[10]=e.slug,t[11]=u,t[12]=a,t[13]=c):c=t[13],c}function ur(){const o=d.c(3);let t;o[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},o[0]=t):t=o[0];const m=T(t),e=("file"in m&&typeof m.file=="string"?m.file:void 0)??null;let i;return o[1]!==e?(i=r.jsx(v,{tabId:"code",children:r.jsx(E,{feature:"cms",children:r.jsx(w,{openPath:e})})}),o[1]=e,o[2]=i):i=o[2],i}export{ur as default};