decocms 4.505.0 → 4.505.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/dist/client/assets/{ActiveShapeUtils-XOohwaCh.js → ActiveShapeUtils-CPJ1MgDb.js} +1 -1
  2. package/dist/client/assets/{AlertCircle-DydWhBUR.js → AlertCircle-DqeQeZIo.js} +1 -1
  3. package/dist/client/assets/{AreaChart-DiZ010W9.js → AreaChart-C-18l_uG.js} +1 -1
  4. package/dist/client/assets/{ArrowLeft-lM5tIj9y.js → ArrowLeft-DPGP5g4O.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-DpRxn4K3.js → ArrowUp-CDNiJQ3Z.js} +1 -1
  6. package/dist/client/assets/{BarChart-x25FVnNf.js → BarChart-CU_yn9c-.js} +1 -1
  7. package/dist/client/assets/{Building02-CCJS0_vK.js → Building02-Bn3V8SyT.js} +1 -1
  8. package/dist/client/assets/{CategoricalChart-B1Eo9CuQ.js → CategoricalChart-Ds9PuWui.js} +1 -1
  9. package/dist/client/assets/{CheckCircle-CwCxlegG.js → CheckCircle-BxjjIHP3.js} +1 -1
  10. package/dist/client/assets/{ChevronSelectorVertical-DbaTjzBx.js → ChevronSelectorVertical-DhsMteL_.js} +1 -1
  11. package/dist/client/assets/{ChevronUp-BFa66EpK.js → ChevronUp-mM4k2SNd.js} +1 -1
  12. package/dist/client/assets/{Copy01-taXYCEBD.js → Copy01-CE54Zkyb.js} +1 -1
  13. package/dist/client/assets/{CreditCard01-ClQuCnzR.js → CreditCard01-DH-01CEi.js} +1 -1
  14. package/dist/client/assets/{DotsVertical-Cmi5H2jc.js → DotsVertical-judgrIje.js} +1 -1
  15. package/dist/client/assets/{ErrorBarContext-DLU5LS4u.js → ErrorBarContext-BOF7UG7D.js} +1 -1
  16. package/dist/client/assets/{Globe04-BuQjDmeg.js → Globe04-ZYzvP_wb.js} +1 -1
  17. package/dist/client/assets/{Image01-B2cuVR7o.js → Image01-DrTbYVVK.js} +1 -1
  18. package/dist/client/assets/{Key01-Cyl6HajB.js → Key01-osOREfQl.js} +1 -1
  19. package/dist/client/assets/{Link01-DzC6ocz4.js → Link01-B9G68hNn.js} +1 -1
  20. package/dist/client/assets/{LinkBroken01-C5cWFtQq.js → LinkBroken01-DmEX13WI.js} +1 -1
  21. package/dist/client/assets/{Monitor01-Bb5ZlrLS.js → Monitor01-NkP5UQNs.js} +1 -1
  22. package/dist/client/assets/{Play-D32AXFrK.js → Play-B47awNwY.js} +1 -1
  23. package/dist/client/assets/{Plus-BLUUzBOk.js → Plus-DcfUNR2f.js} +1 -1
  24. package/dist/client/assets/{SearchMd-B_qlK90t.js → SearchMd-C9-YwsK0.js} +1 -1
  25. package/dist/client/assets/{Sector-jO4N0BPc.js → Sector-B_DvrPH2.js} +1 -1
  26. package/dist/client/assets/{ShoppingBag01-4IcurZUz.js → ShoppingBag01-ujP3y_qp.js} +1 -1
  27. package/dist/client/assets/{Sun-wFVY28gS.js → Sun-DrT0hU0Y.js} +1 -1
  28. package/dist/client/assets/{SwitchHorizontal01-BjaFUETy.js → SwitchHorizontal01-DA5rnPNX.js} +1 -1
  29. package/dist/client/assets/{Tool01-BlSQo18i.js → Tool01-C4R3ZOr4.js} +1 -1
  30. package/dist/client/assets/{Trash01-COQdVdde.js → Trash01-Kje2UjpJ.js} +1 -1
  31. package/dist/client/assets/{Upload01-NWVVb23Y.js → Upload01-ClskmS1t.js} +1 -1
  32. package/dist/client/assets/{User01-1G5fScIG.js → User01-BnkZxOFX.js} +1 -1
  33. package/dist/client/assets/{UserSquare-Ag2h6fjB.js → UserSquare-Sii9PRmG.js} +1 -1
  34. package/dist/client/assets/{Users01-CTT2kFNN.js → Users01-CwARyXl9.js} +1 -1
  35. package/dist/client/assets/{XAxis-Cjl6GEuy.js → XAxis-C5ouXN9R.js} +1 -1
  36. package/dist/client/assets/{XClose-Bw63kXIL.js → XClose-BjuY3nsh.js} +1 -1
  37. package/dist/client/assets/{ZoomOut-BRLVgQbx.js → ZoomOut-DwuOJSek.js} +1 -1
  38. package/dist/client/assets/{access-gate-B6CWdgWD.js → access-gate-Ckw1tvkz.js} +1 -1
  39. package/dist/client/assets/{add-connection-dialog-M4AoaiFN.js → add-connection-dialog-CRR0P53q.js} +1 -1
  40. package/dist/client/assets/{agent-analytics-S9KeHs3W.js → agent-analytics-Bb_fc8YJ.js} +1 -1
  41. package/dist/client/assets/agent-app-CJyWV08D.js +1 -0
  42. package/dist/client/assets/{agent-assets-Cq4W4Ovn.js → agent-assets-D1Z85b_F.js} +1 -1
  43. package/dist/client/assets/{agent-automation-BezS81S9.js → agent-automation-BFysez0o.js} +1 -1
  44. package/dist/client/assets/{agent-automations-DWC2EzvH.js → agent-automations-DDVixO3t.js} +1 -1
  45. package/dist/client/assets/{agent-connect-sources-DrhgxJdk.js → agent-connect-sources-K-A5r1fP.js} +1 -1
  46. package/dist/client/assets/agent-deck-DNTuOGup.js +1 -0
  47. package/dist/client/assets/{agent-e2e-DWGlECXV.js → agent-e2e-BPrY52Ep.js} +1 -1
  48. package/dist/client/assets/{agent-experiments-CzocsLnx.js → agent-experiments-ihc1Pcv7.js} +1 -1
  49. package/dist/client/assets/{agent-file-C3Nbr_FQ.js → agent-file-DVlNnuKt.js} +1 -1
  50. package/dist/client/assets/{agent-hosting-DxG2dBMm.js → agent-hosting-CDAmKMBw.js} +1 -1
  51. package/dist/client/assets/{agent-icon-MD5OrAoo.js → agent-icon-DgBki_YS.js} +1 -1
  52. package/dist/client/assets/agent-library-B617uDLH.js +1 -0
  53. package/dist/client/assets/agent-library-file-C4eL1Ooi.js +1 -0
  54. package/dist/client/assets/{agent-monitor-DEe9PjhU.js → agent-monitor-CzKIw_tz.js} +1 -1
  55. package/dist/client/assets/{agent-overview-BYXCEHT6.js → agent-overview-rk6Sm92U.js} +1 -1
  56. package/dist/client/assets/{agent-releases-CpZb5E4A.js → agent-releases-D4BE1wNR.js} +1 -1
  57. package/dist/client/assets/agent-settings-Bm6FSi9f.js +1 -0
  58. package/dist/client/assets/{agent-site-editor-D9c58o0v.js → agent-site-editor-CrwVyv-3.js} +1 -1
  59. package/dist/client/assets/agent-site-editor-code-IDf-3duF.js +2 -0
  60. package/dist/client/assets/agent-site-editor-content-CqEytc-s.js +1 -0
  61. package/dist/client/assets/agent-site-editor-preview-CCUzETFG.js +1 -0
  62. package/dist/client/assets/agent-view-D2tPWwzu.js +1 -0
  63. package/dist/client/assets/{agent-view-guard-CVaMc8u1.js → agent-view-guard-CXKYvvbm.js} +1 -1
  64. package/dist/client/assets/{agents-list-0dpg_olu.js → agents-list-CoPS1QbO.js} +1 -1
  65. package/dist/client/assets/{ai-providers-ofcK9fW-.js → ai-providers-BcJpLDbU.js} +1 -1
  66. package/dist/client/assets/{alert-CCN8MTJM.js → alert-DfAkUZEI.js} +1 -1
  67. package/dist/client/assets/{alert-dialog-Czq8smrs.js → alert-dialog-DaNO60rY.js} +1 -1
  68. package/dist/client/assets/{analytics-sections-YYA41jnN.js → analytics-sections-CTPHY4dx.js} +1 -1
  69. package/dist/client/assets/api-keys-CiPUhdGB.js +1 -0
  70. package/dist/client/assets/{api-keys-CQOwZjqQ.js → api-keys-DKiBsp1M.js} +1 -1
  71. package/dist/client/assets/{app-editor-COm7gYBF.js → app-editor-D2opLmgN.js} +1 -1
  72. package/dist/client/assets/{asset-utils-CQJ9nYXC.js → asset-utils-d4oNaz_A.js} +1 -1
  73. package/dist/client/assets/{auth-DYpVJTi6.js → auth-CUB1QFat.js} +1 -1
  74. package/dist/client/assets/{auth-catchall-CZNhW2_t.js → auth-catchall-DSz5u8HT.js} +1 -1
  75. package/dist/client/assets/{auth-entry-GKVcsXsF.js → auth-entry-DvLTlbUA.js} +1 -1
  76. package/dist/client/assets/{auth-split-layout-BYbolCIM.js → auth-split-layout-BnWB2obZ.js} +1 -1
  77. package/dist/client/assets/{authenticate-and-persist-oauth-DirDXL13.js → authenticate-and-persist-oauth-B5SszYN9.js} +1 -1
  78. package/dist/client/assets/{automation-list-row-DHus7_rE.js → automation-list-row-MXx8TYwq.js} +1 -1
  79. package/dist/client/assets/{automation-runs-BWjt3VX5.js → automation-runs-CO9plUCm.js} +1 -1
  80. package/dist/client/assets/{automations-DxqwEE8R.js → automations-B7PntWfd.js} +1 -1
  81. package/dist/client/assets/{autosend-DhzpX2qh.js → autosend-BpLsiV89.js} +1 -1
  82. package/dist/client/assets/{avatar-gla6h0ms.js → avatar-Dpt3gCAd.js} +1 -1
  83. package/dist/client/assets/{badge-5B6T9ERD.js → badge-CUAHXmJu.js} +1 -1
  84. package/dist/client/assets/{block-document-Bp7jeS6q.js → block-document-m88Js_78.js} +1 -1
  85. package/dist/client/assets/{blocks-preview-workspace-context-BAifPCSm.js → blocks-preview-workspace-context-CHPTPxQM.js} +1 -1
  86. package/dist/client/assets/{blocks-tab-states-CB59zP3T.js → blocks-tab-states-B0NemDn-.js} +3 -3
  87. package/dist/client/assets/{blog-schema-l0butExm.js → blog-schema-DDHXkyX9.js} +1 -1
  88. package/dist/client/assets/{board-analytics-D4PrP04x.js → board-analytics-D6tmbt7p.js} +1 -1
  89. package/dist/client/assets/{buckets-l5SHF6cY.js → buckets-DZtZImlO.js} +1 -1
  90. package/dist/client/assets/{build-improve-prompt-doc-o9aBywB1.js → build-improve-prompt-doc-z2YVmdXu.js} +1 -1
  91. package/dist/client/assets/{calendar-DFOIWN8u.js → calendar-BagLrzzB.js} +1 -1
  92. package/dist/client/assets/{capability-load-error-DOGNUbiB.js → capability-load-error-Bno41Mdy.js} +1 -1
  93. package/dist/client/assets/{category-editor-DZeglRvh.js → category-editor-DPncph6G.js} +1 -1
  94. package/dist/client/assets/{chart-BpMIAoAB.js → chart-BSLITNsB.js} +1 -1
  95. package/dist/client/assets/{chat-context-C0Wb4MFf.js → chat-context-4taVXd9k.js} +1 -1
  96. package/dist/client/assets/{chat-draft-B8EOLWmz.js → chat-draft-C77P_ztf.js} +1 -1
  97. package/dist/client/assets/{checkbox-BrfO0AS7.js → checkbox-5y3yRheb.js} +1 -1
  98. package/dist/client/assets/{choose-editor-RJ3PC_zy.js → choose-editor-pulsD9GR.js} +1 -1
  99. package/dist/client/assets/{cli-auth-success-D4KlT9v_.js → cli-auth-success-KQCGj7Au.js} +1 -1
  100. package/dist/client/assets/{client-icons-Bq5jVcfK.js → client-icons-CAIFNaE6.js} +1 -1
  101. package/dist/client/assets/cms-settings-editor-bF-YNU5u.js +1 -0
  102. package/dist/client/assets/{collapsible-B-WgQIIJ.js → collapsible-kDOQ8vBg.js} +1 -1
  103. package/dist/client/assets/{collection-detail-BCBHyQp1.js → collection-detail-DWwDhlsT.js} +1 -1
  104. package/dist/client/assets/{collection-display-button-ByhrqD5X.js → collection-display-button-COz9Csh1.js} +1 -1
  105. package/dist/client/assets/{collection-search-BjRRO8AD.js → collection-search-Crc9IxG5.js} +1 -1
  106. package/dist/client/assets/{collection-table-wrapper-Dh3XwsWE.js → collection-table-wrapper-Brz0spkb.js} +1 -1
  107. package/dist/client/assets/{collection-tabs-Lz0rqrLq.js → collection-tabs-JUBQ_0wY.js} +1 -1
  108. package/dist/client/assets/{column-rules-3EmXTSnI.js → column-rules-Dz-6M0_6.js} +2 -2
  109. package/dist/client/assets/{combobox-BpUVYVJv.js → combobox-wz8LJZD2.js} +1 -1
  110. package/dist/client/assets/{command-BsY8EENg.js → command-DC0_Z4MO.js} +1 -1
  111. package/dist/client/assets/{companion-mcps-section-d0lLoBTn.js → companion-mcps-section-fCNgFv-6.js} +1 -1
  112. package/dist/client/assets/{config-DO-hLriH.js → config-B7GxzysW.js} +1 -1
  113. package/dist/client/assets/{connect-C7Ztyb8S.js → connect-CsnMjaAH.js} +3 -3
  114. package/dist/client/assets/{connect-layout-ZTvMCNm-.js → connect-layout-CS-qUAl1.js} +1 -1
  115. package/dist/client/assets/{connection-D2g-M5HU.js → connection-CWuCG2aS.js} +1 -1
  116. package/dist/client/assets/{connection-card-xYydZgZe.js → connection-card-D8GQ1QiI.js} +1 -1
  117. package/dist/client/assets/{connection-detail-DvwzS0fT.js → connection-detail-BSjzEMSz.js} +1 -1
  118. package/dist/client/assets/{connection-form-helpers-Cyf4ui7a.js → connection-form-helpers-DDccjG4q.js} +1 -1
  119. package/dist/client/assets/{connections-C4zoZavJ.js → connections-yjmgtiRD.js} +1 -1
  120. package/dist/client/assets/{content-tab-Dnx4cpni.js → content-tab-CJsLui7I.js} +3 -3
  121. package/dist/client/assets/{context-BrqfrS67.js → context-BHC2FGlS.js} +1 -1
  122. package/dist/client/assets/{context-menu-DnUdyxPl.js → context-menu-1K85jwpY.js} +1 -1
  123. package/dist/client/assets/{core.esm-B0kDFHOB.js → core.esm-DApLsxsY.js} +2 -2
  124. package/dist/client/assets/{create-organization-dialog-GxmrqCD4.js → create-organization-dialog-DdAGsC_j.js} +1 -1
  125. package/dist/client/assets/{daily-pulse-3JNQ3bXe.js → daily-pulse-BSzPNBRW.js} +1 -1
  126. package/dist/client/assets/{discover-Ds0vwdW-.js → discover-DLa_piaB.js} +1 -1
  127. package/dist/client/assets/{domain-settings-woFQOQXJ.js → domain-settings-Dy4AbnYn.js} +1 -1
  128. package/dist/client/assets/{drawer-_oUDG6Bh.js → drawer-BbUlpUCW.js} +1 -1
  129. package/dist/client/assets/{editor-D5lw6JVB.js → editor-C-OgXNhB.js} +1 -1
  130. package/dist/client/assets/{editor-classes-CYQ0nby9.js → editor-classes-Dc2W7nDk.js} +1 -1
  131. package/dist/client/assets/{empty-state-BPyWcx0u.js → empty-state-CSKwPEsv.js} +1 -1
  132. package/dist/client/assets/{empty-state-ChicBK_6.js → empty-state-DZKVrCuI.js} +1 -1
  133. package/dist/client/assets/{extract-connection-data-B2cCu4Y0.js → extract-connection-data-DFUDKHm9.js} +1 -1
  134. package/dist/client/assets/{feature-gate-rJK-N6UP.js → feature-gate-BD1b5v86.js} +1 -1
  135. package/dist/client/assets/{feature-paywall-DvPrxDxF.js → feature-paywall-BICO-vth.js} +1 -1
  136. package/dist/client/assets/{file-explorer-3DkIV-h_.js → file-explorer-DNkagk5u.js} +1 -1
  137. package/dist/client/assets/{file-preview-8ODF6efV.js → file-preview-CfdQRxcT.js} +1 -1
  138. package/dist/client/assets/{file-share-button-ClxhzVmh.js → file-share-button-G-_PwGQA.js} +1 -1
  139. package/dist/client/assets/{file-type-icon-CwmbBd4_.js → file-type-icon-VpQt0U2l.js} +1 -1
  140. package/dist/client/assets/flat-project-Bq221olc.js +1 -0
  141. package/dist/client/assets/{folder-icon-DWUMoHSG.js → folder-icon-CsTHd67Z.js} +2 -2
  142. package/dist/client/assets/{form-BV3E3DRr.js → form-Ccs7r35I.js} +1 -1
  143. package/dist/client/assets/{general-CgvwKafN.js → general-CW8PZIFH.js} +1 -1
  144. package/dist/client/assets/{home-DjmWwzfH.js → home-B7ZUJZwU.js} +1 -1
  145. package/dist/client/assets/{hosted-publish-feedback-DSJDDn8U.js → hosted-publish-feedback-BKP6B_BC.js} +1 -1
  146. package/dist/client/assets/{icon-button-pY1Ev_Zs.js → icon-button-B70HUI29.js} +1 -1
  147. package/dist/client/assets/{index-2W02K1gN.js → index-1iomk3-f.js} +1 -1
  148. package/dist/client/assets/{index-BqY7_n3x.js → index-B5qumCT5.js} +1 -1
  149. package/dist/client/assets/{index-CLqOti3t.js → index-BK0oWzQv.js} +1 -1
  150. package/dist/client/assets/{index-DD3jMnD8.js → index-BW7my073.js} +3 -3
  151. package/dist/client/assets/{index-ChoD9h5e.js → index-BkyXbFPG.js} +1 -1
  152. package/dist/client/assets/{index-CUQs4XsQ.js → index-C4rMNEe_.js} +1 -1
  153. package/dist/client/assets/{index-Bz12b-pJ.js → index-CO1YjQbJ.js} +1 -1
  154. package/dist/client/assets/{index-D_ppSX5g.js → index-CTbRlsHm.js} +1 -1
  155. package/dist/client/assets/{index-CbpHnzxX.js → index-Ck67Gekc.js} +3 -3
  156. package/dist/client/assets/{index-DUGwIFiv.js → index-D2Gob1Gb.js} +1 -1
  157. package/dist/client/assets/{index-CP_lXIID.js → index-D2jzeqMs.js} +1 -1
  158. package/dist/client/assets/{index-C_Yl5p42.js → index-D2sT3et4.js} +1 -1
  159. package/dist/client/assets/{index-CTXm_AQX.js → index-D3hogDX7.js} +1 -1
  160. package/dist/client/assets/{index-CJa-xPtO.js → index-D_r171PN.js} +1 -1
  161. package/dist/client/assets/{index-1FDq7FOC.js → index-P_lVMWb7.js} +3 -3
  162. package/dist/client/assets/{index-redirect-EowHTWi4.js → index-redirect-Yg4URS2R.js} +1 -1
  163. package/dist/client/assets/{infiniteQueryObserver-DN3ugQJJ.js → infiniteQueryObserver-4_03tcmw.js} +1 -1
  164. package/dist/client/assets/{infra-billing-BXXqeuOz.js → infra-billing-BUPMegJK.js} +1 -1
  165. package/dist/client/assets/{input-DpLyWs62.js → input-4Rq6XFEH.js} +1 -1
  166. package/dist/client/assets/{input-D-82ZEvn.js → input-Bv3xUnbf.js} +3 -3
  167. package/dist/client/assets/{integration-icon-8xJy_m0U.js → integration-icon-ZpA1aS5H.js} +1 -1
  168. package/dist/client/assets/{jira-icon-BaaYOIw5.js → jira-icon-J9FhJ7li.js} +1 -1
  169. package/dist/client/assets/{label-QcEtv8aS.js → label-CKxoomj_.js} +1 -1
  170. package/dist/client/assets/{layout-HuVZKOCN.js → layout-f0wIUbsA.js} +1 -1
  171. package/dist/client/assets/legacy-agents-deep-C51dCIBr.js +1 -0
  172. package/dist/client/assets/{legacy-main-redirect-CyobeGy0.js → legacy-main-redirect-BGGStzw2.js} +1 -1
  173. package/dist/client/assets/library-YgWnAca2.js +1 -0
  174. package/dist/client/assets/{library-tab-YpZyRn2Y.js → library-tab-BQafg70w.js} +4 -4
  175. package/dist/client/assets/{login-BSCo9Gp8.js → login-BFqeypRc.js} +1 -1
  176. package/dist/client/assets/{markdown-CjmuCvzH.js → markdown-J9r3yqs2.js} +1 -1
  177. package/dist/client/assets/{mcp-app-renderer-DOTIYm4V.js → mcp-app-renderer-CACkKi_k.js} +2 -2
  178. package/dist/client/assets/{mcp-oauth-o1bjrgf5.js → mcp-oauth-CxXOlOKx.js} +1 -1
  179. package/dist/client/assets/{mcp-oauth-tY0goV8V.js → mcp-oauth-DujtvQuP.js} +1 -1
  180. package/dist/client/assets/{members-DvOcnN-x.js → members-CDFEF1pK.js} +1 -1
  181. package/dist/client/assets/{memory-5Ob5Qtqd.js → memory-T0C48v-f.js} +2 -2
  182. package/dist/client/assets/{mini-report-page-Dbty4F4c.js → mini-report-page-B35BDvvI.js} +1 -1
  183. package/dist/client/assets/{mock-board-_yZzL2WV.js → mock-board-Dirj3Gja.js} +1 -1
  184. package/dist/client/assets/{monaco-editor-D6IVhQre.js → monaco-editor-GQLZ51K4.js} +1 -1
  185. package/dist/client/assets/{monitoring-stats-row-ChCJX11Z.js → monitoring-stats-row-qdxP_Wd2.js} +1 -1
  186. package/dist/client/assets/{multi-select-CeE4vfPI.js → multi-select-CX9fw6H9.js} +1 -1
  187. package/dist/client/assets/{mustache-Dayjxewp.js → mustache-B4L349mf.js} +1 -1
  188. package/dist/client/assets/{new-project-dialog-tcOep_vf.js → new-project-dialog-Dyv4E8A7.js} +1 -1
  189. package/dist/client/assets/{oauth-callback-3wV4zoOA.js → oauth-callback-D_DR_zkb.js} +1 -1
  190. package/dist/client/assets/{oauth-callback-ai-provider-ufn7vAbt.js → oauth-callback-ai-provider-BG7RRBHB.js} +1 -1
  191. package/dist/client/assets/{onboarding-DxS8snTM.js → onboarding-wAaszeRs.js} +1 -1
  192. package/dist/client/assets/{openai-conversation-DI2hkuO6.js → openai-conversation-Bng7y8SC.js} +1 -1
  193. package/dist/client/assets/{optimistic-project-sidebar-views-DvcOFOaq.js → optimistic-project-sidebar-views-ChS4G4R2.js} +1 -1
  194. package/dist/client/assets/{order-monitor-day-O6iqZCvW.js → order-monitor-day-BTZBXgfe.js} +1 -1
  195. package/dist/client/assets/{organization-choice-CF6_mO6R.js → organization-choice-B_fTehRJ.js} +1 -1
  196. package/dist/client/assets/{orgs-BDf8CmkB.js → orgs-B5G1g_8m.js} +1 -1
  197. package/dist/client/assets/{page-seo-form-DEniWcne.js → page-seo-form-CVaY5siA.js} +1 -1
  198. package/dist/client/assets/{pair-BXzhmvOK.js → pair-DnuFgiBk.js} +1 -1
  199. package/dist/client/assets/{plan-ladder-CHzPrqgq.js → plan-ladder-Dj01rq7g.js} +1 -1
  200. package/dist/client/assets/{popover-qHcjuSU0.js → popover-DEOhusl7.js} +1 -1
  201. package/dist/client/assets/{post-calendar-BASX2hKd.js → post-calendar-BObVF6RC.js} +1 -1
  202. package/dist/client/assets/{post-editor-CwrApEHG.js → post-editor-C96fan-2.js} +1 -1
  203. package/dist/client/assets/{preview-content-D-tC-1-n.js → preview-content-Bfx_-yIq.js} +1 -1
  204. package/dist/client/assets/{preview-dialog-Btn-CE6_.js → preview-dialog-5cvahUdT.js} +1 -1
  205. package/dist/client/assets/{preview-panel-BOdq-R-d.js → preview-panel-CguVsO17.js} +1 -1
  206. package/dist/client/assets/{preview-tab-DFxZE6Oa.js → preview-tab-CALmFMCp.js} +3 -3
  207. package/dist/client/assets/{product-picker-dialog-Ixnrpyxe.js → product-picker-dialog-B_dFoug-.js} +1 -1
  208. package/dist/client/assets/{profile-CBlN8bRW.js → profile-Ct0YCzPs.js} +1 -1
  209. package/dist/client/assets/{project-app-view-ChYxUD4g.js → project-app-view-CC-jqHFi.js} +1 -1
  210. package/dist/client/assets/{project-feed-Coy6NkfW.js → project-feed-DwuLAv8n.js} +1 -1
  211. package/dist/client/assets/{project-icon-voOUfH8Y.js → project-icon-Cx5wvhJp.js} +1 -1
  212. package/dist/client/assets/project-reports-BhfZrHoF.js +1 -0
  213. package/dist/client/assets/project-tasks-BmBM_2h9.js +1 -0
  214. package/dist/client/assets/{projects-BYLX6bIC.js → projects-DECrXLzg.js} +1 -1
  215. package/dist/client/assets/{projects-empty-state-sIs7ogdq.js → projects-empty-state-Blr-_CSK.js} +1 -1
  216. package/dist/client/assets/{prompts-BmqWXIjA.js → prompts-DXRKuRun.js} +1 -1
  217. package/dist/client/assets/record-editor-Conv1zKH.js +1 -0
  218. package/dist/client/assets/{redirect-editor-DRsu3pS0.js → redirect-editor-D0sMpbPJ.js} +1 -1
  219. package/dist/client/assets/{reports-CfSDqvLB.js → reports-CqSc92eL.js} +1 -1
  220. package/dist/client/assets/reports-D7CsNPgk.js +1 -0
  221. package/dist/client/assets/{reports-onboarding-B1UZ9c7Y.js → reports-onboarding-Z0Af4wWJ.js} +1 -1
  222. package/dist/client/assets/{reports-tab-eIch6mZh.js → reports-tab-D2wHi3J4.js} +2 -2
  223. package/dist/client/assets/{repositories-ClO76b2x.js → repositories-BXEg38wk.js} +1 -1
  224. package/dist/client/assets/{repository-binding-CHF_oBGX.js → repository-binding-Br5D6iZ4.js} +1 -1
  225. package/dist/client/assets/{repository-import-picker-CbW5OIUw.js → repository-import-picker-39r_1yMe.js} +1 -1
  226. package/dist/client/assets/{repository-picker-z7ZWmH9V.js → repository-picker-CVdPaFjE.js} +1 -1
  227. package/dist/client/assets/{require-capability-CcHa8l-N.js → require-capability-AMKHJ_cQ.js} +1 -1
  228. package/dist/client/assets/{required-auth-layout-Brpu-Um7.js → required-auth-layout-82S74c2p.js} +1 -1
  229. package/dist/client/assets/{reset-password-g8CcEp7c.js → reset-password-BqW9I62A.js} +1 -1
  230. package/dist/client/assets/{resizable-Cp8Fei2Z.js → resizable-R1DYYRbo.js} +1 -1
  231. package/dist/client/assets/{resolve-tab-icon-CEjO0rXG.js → resolve-tab-icon-CbG7Itnv.js} +1 -1
  232. package/dist/client/assets/{review-settings-DCjfDdhW.js → review-settings-CPwMmlOA.js} +1 -1
  233. package/dist/client/assets/{roles-DguOVHkn.js → roles-CZCPyobB.js} +1 -1
  234. package/dist/client/assets/{route-C3llV-4J.js → route-6Vq3OdbS.js} +1 -1
  235. package/dist/client/assets/{route-euoT0aVp.js → route-DrVQj73j.js} +1 -1
  236. package/dist/client/assets/route-MfH6OHjo.js +1 -0
  237. package/dist/client/assets/{sandbox-lifecycle-context-BgEjrgCl.js → sandbox-lifecycle-context-DMrwC3Vb.js} +1 -1
  238. package/dist/client/assets/{schema-w5h_hx-N.js → schema-BFC2i8Ph.js} +1 -1
  239. package/dist/client/assets/{schema-msyWsNEX.js → schema-DSE_jEQa.js} +1 -1
  240. package/dist/client/assets/{scroll-area-CQBF_dZT.js → scroll-area-BkDSkTWr.js} +1 -1
  241. package/dist/client/assets/{search-input-hbrzDCe3.js → search-input-BIROh4Hl.js} +1 -1
  242. package/dist/client/assets/{search-toggle-BLr8pbVK.js → search-toggle-DfQFz--4.js} +1 -1
  243. package/dist/client/assets/{secret-ciphertext-oiVgkxxG.js → secret-ciphertext-Cl-rP9st.js} +1 -1
  244. package/dist/client/assets/{secret-picker-BbRclMvG.js → secret-picker--j_T0tgi.js} +1 -1
  245. package/dist/client/assets/{secrets-B3wvoItd.js → secrets-DjUcCXn5.js} +1 -1
  246. package/dist/client/assets/{sections-editor-DyJwFLUt.js → sections-editor-DEiO3_fB.js} +1 -1
  247. package/dist/client/assets/{select-CA6Xf89b.js → select-BhjOZlg8.js} +1 -1
  248. package/dist/client/assets/{select-model-B5I7vjgl.js → select-model-bltZeKaZ.js} +1 -1
  249. package/dist/client/assets/{seo-editor-B0ulE3lu.js → seo-editor-CWK6ROUZ.js} +1 -1
  250. package/dist/client/assets/{separator--X5NQB5Q.js → separator-Bpma_IKl.js} +1 -1
  251. package/dist/client/assets/{settings-tab-DWTiloa5.js → settings-tab-CqGe95B8.js} +1 -1
  252. package/dist/client/assets/{sheet-DpEU8sEu.js → sheet-EMAUBGeL.js} +1 -1
  253. package/dist/client/assets/shell-layout-CA9NkQMC.js +1 -0
  254. package/dist/client/assets/site-editor-DicIkKzK.js +1 -0
  255. package/dist/client/assets/{site-editor-toast-BQVM8xFE.js → site-editor-toast-ChWi-qye.js} +1 -1
  256. package/dist/client/assets/{skills-DH_qPHrW.js → skills-CffM1-dc.js} +1 -1
  257. package/dist/client/assets/{slider-BKaZVmho.js → slider-BaOeotxA.js} +1 -1
  258. package/dist/client/assets/{sortable.esm-fnpMXn9v.js → sortable.esm-DNm_8QhY.js} +1 -1
  259. package/dist/client/assets/{sso-BzmmdKL0.js → sso-DYW6pcdA.js} +1 -1
  260. package/dist/client/assets/{suggestion-vzrmAu6j.js → suggestion-BYDMpEKS.js} +1 -1
  261. package/dist/client/assets/{switch-bAUD40Nw.js → switch-BHJedeJ7.js} +1 -1
  262. package/dist/client/assets/{symbol-BBSU-8KK.js → symbol-CbhZsT2O.js} +1 -1
  263. package/dist/client/assets/{synced-repos-D21eCwfQ.js → synced-repos-DxrDIyAz.js} +1 -1
  264. package/dist/client/assets/{tab-icon-glyph-DBgCEMvo.js → tab-icon-glyph-DH0XjtgN.js} +1 -1
  265. package/dist/client/assets/{table-_LvNwq3m.js → table-RzFYa6QY.js} +1 -1
  266. package/dist/client/assets/{tabs-CVRt1gsT.js → tabs-Bsw9oeKO.js} +1 -1
  267. package/dist/client/assets/{task-board-Drym1VGl.js → task-board-CILWAO9J.js} +1 -1
  268. package/dist/client/assets/{task-route-Cy6tBirf.js → task-route-B-8mckrS.js} +1 -1
  269. package/dist/client/assets/{task-status-Drd0l7YO.js → task-status-DiYjmDMM.js} +1 -1
  270. package/dist/client/assets/taskboard-analytics-BQfMWpPx.js +1 -0
  271. package/dist/client/assets/tasks-CxhFIm2w.js +1 -0
  272. package/dist/client/assets/{tasks-Bm3aJdvZ.js → tasks-DD0n0w1a.js} +3 -3
  273. package/dist/client/assets/{textarea-C6sVZPZU.js → textarea-DTnTc1B6.js} +1 -1
  274. package/dist/client/assets/{thread-analytics-BJ3jpIDz.js → thread-analytics-BiM8dsgQ.js} +1 -1
  275. package/dist/client/assets/{thread-intent-CDcQO3Gb.js → thread-intent-DVQUGbJp.js} +1 -1
  276. package/dist/client/assets/{thread-route-DpGy1EjL.js → thread-route-CPJ43sWw.js} +1 -1
  277. package/dist/client/assets/{thread-route-9ORs8Bvm.js → thread-route-CY9KSYYk.js} +1 -1
  278. package/dist/client/assets/{thread-sheet-body-DK2uQns5.js → thread-sheet-body-2nqdwz29.js} +1 -1
  279. package/dist/client/assets/{time-range-picker-D68U4DuO.js → time-range-picker-BBdfacFe.js} +1 -1
  280. package/dist/client/assets/{toggle-group-aS4D4pWB.js → toggle-group-B2-S3DWB.js} +1 -1
  281. package/dist/client/assets/{tool-namespace-BLZ5kDEc.js → tool-namespace-C0BJvxK3.js} +1 -1
  282. package/dist/client/assets/{toolbar-icon-button-Ba65Z_g5.js → toolbar-icon-button-tGQlTkgW.js} +1 -1
  283. package/dist/client/assets/{tooltip-Czt_UbWN.js → tooltip-DjtuBfP1.js} +1 -1
  284. package/dist/client/assets/{tooltipContext-TXJARYp3.js → tooltipContext-BhlbMZ3N.js} +1 -1
  285. package/dist/client/assets/{track-DnM0LaQd.js → track-CnFYb-pv.js} +1 -1
  286. package/dist/client/assets/{types-BxhF8ASs.js → types-BzYUug-M.js} +3 -3
  287. package/dist/client/assets/{url-slug-SM3_9Cya.js → url-slug-CtiYvkEm.js} +1 -1
  288. package/dist/client/assets/{usage-stats-BCJbY9qH.js → usage-stats-CDJp6v2e.js} +1 -1
  289. package/dist/client/assets/{use-ai-providers-Bx12ndn_.js → use-ai-providers-BhDXpjgz.js} +1 -1
  290. package/dist/client/assets/{use-app-takeover-CdMQoosN.js → use-app-takeover-Delvb7wx.js} +1 -1
  291. package/dist/client/assets/{use-automations-DNt6hUxZ.js → use-automations-BCX0KxqO.js} +1 -1
  292. package/dist/client/assets/{use-autosave-B0-ebzlg.js → use-autosave-BV0jiw5O.js} +1 -1
  293. package/dist/client/assets/use-chat-navigation-BmUqvOFh.js +1 -0
  294. package/dist/client/assets/{use-clock-tick-C292qv9P.js → use-clock-tick-TF0Wf2j3.js} +1 -1
  295. package/dist/client/assets/{use-connect-companion-BBlyVxmJ.js → use-connect-companion-BLmeBGFg.js} +1 -1
  296. package/dist/client/assets/{use-connection-CuPFUNAB.js → use-connection-SqoLkv0s.js} +1 -1
  297. package/dist/client/assets/{use-content-sync-BVOurTxw.js → use-content-sync-BQX2Pcu9.js} +1 -1
  298. package/dist/client/assets/{use-copy-qbqELrsr.js → use-copy-BgIuhAow.js} +1 -1
  299. package/dist/client/assets/{use-create-virtual-mcp-_LSHJTRf.js → use-create-virtual-mcp-B6zN0Gxf.js} +1 -1
  300. package/dist/client/assets/{use-date-fns-locale-yLQ-TMcV.js → use-date-fns-locale-Cnl0faOK.js} +1 -1
  301. package/dist/client/assets/{use-debounced-autosave-DIicIxua.js → use-debounced-autosave-CH7ETKkX.js} +1 -1
  302. package/dist/client/assets/{use-debounced-value-qDOtci8p.js → use-debounced-value-BcR6Dex1.js} +1 -1
  303. package/dist/client/assets/{use-deco-credits-CZiBpI1Z.js → use-deco-credits-BInQHzU9.js} +1 -1
  304. package/dist/client/assets/{use-decopilot-events-DUuvv1Wb.js → use-decopilot-events-ByNj6G_f.js} +1 -1
  305. package/dist/client/assets/{use-delete-connection-lH4ywwII.js → use-delete-connection-C75DG-6h.js} +1 -1
  306. package/dist/client/assets/{use-deployment-admin-D-bNxF3-.js → use-deployment-admin-CC6hRfFJ.js} +1 -1
  307. package/dist/client/assets/{use-ensure-project-folder-9wv1x2P7.js → use-ensure-project-folder-B1XXe3-5.js} +1 -1
  308. package/dist/client/assets/{use-fast-preview-draft-url-Cf64Rv8-.js → use-fast-preview-draft-url-GDccyDV7.js} +1 -1
  309. package/dist/client/assets/{use-file-configs-C2gZQhnt.js → use-file-configs-BGcR08Xf.js} +1 -1
  310. package/dist/client/assets/{use-infinite-scroll-BopOdy-8.js → use-infinite-scroll-Bx5l0Vtt.js} +1 -1
  311. package/dist/client/assets/{use-join-requests-DpN6c_QU.js → use-join-requests-CdXgkoRz.js} +1 -1
  312. package/dist/client/assets/{use-main-panel-tabs-DNEl-cqG.js → use-main-panel-tabs-DbM884FF.js} +1 -1
  313. package/dist/client/assets/{use-mcp-auth-status-6tcyVYNh.js → use-mcp-auth-status-DkTPBg_u.js} +1 -1
  314. package/dist/client/assets/{use-mcp-client-DMsSTA8g.js → use-mcp-client-CSqf234U.js} +1 -1
  315. package/dist/client/assets/{use-mcp-prompts-ffN2Lmsy.js → use-mcp-prompts-CWOUKYTJ.js} +1 -1
  316. package/dist/client/assets/{use-mcp-tools-D3I_Pb2L.js → use-mcp-tools-Bm3f2TR4.js} +1 -1
  317. package/dist/client/assets/{use-members-rkoWXTCD.js → use-members-Cl38_Hd4.js} +1 -1
  318. package/dist/client/assets/{use-mobile-DKjyaKEb.js → use-mobile-COJ6n1bn.js} +1 -1
  319. package/dist/client/assets/{use-navigate-to-agent-7KiT7YFW.js → use-navigate-to-agent-KL7kZGo6.js} +1 -1
  320. package/dist/client/assets/{use-open-billing-url-CQyUaSGw.js → use-open-billing-url-BcIBpyZG.js} +1 -1
  321. package/dist/client/assets/{use-org-auth-client-qG9llE_H.js → use-org-auth-client-C9-MA1oE.js} +1 -1
  322. package/dist/client/assets/{use-org-fs-CNn8RNRH.js → use-org-fs-CswcDdS6.js} +1 -1
  323. package/dist/client/assets/{use-org-repo-syncs-1RenD2IQ.js → use-org-repo-syncs-B-uHZEPd.js} +1 -1
  324. package/dist/client/assets/{use-org-sso-4foNymAx.js → use-org-sso-Dxa5UggE.js} +1 -1
  325. package/dist/client/assets/{use-organization-roles-DLlzvYsI.js → use-organization-roles-D-phQHoQ.js} +1 -1
  326. package/dist/client/assets/{use-organization-settings-wCfTRg-2.js → use-organization-settings-De2KUfve.js} +1 -1
  327. package/dist/client/assets/{use-panel-navigate-D3SkcGQU.js → use-panel-navigate-BJ7GO0A8.js} +1 -1
  328. package/dist/client/assets/{use-project-native-view-presence-U-43iX-0.js → use-project-native-view-presence-zlL4ok9D.js} +1 -1
  329. package/dist/client/assets/{use-project-scope-0lcDsf5q.js → use-project-scope-BWBWngye.js} +1 -1
  330. package/dist/client/assets/{use-recent-apps-CeogN5I3.js → use-recent-apps-25u5qe8z.js} +1 -1
  331. package/dist/client/assets/{use-releases-BVSY46bk.js → use-releases-T-pjzJdi.js} +1 -1
  332. package/dist/client/assets/{use-reports-diagnostic-fels6eVh.js → use-reports-diagnostic-tSBLtmIE.js} +1 -1
  333. package/dist/client/assets/{use-secrets-DYpJRFbR.js → use-secrets-CzaDdvQG.js} +1 -1
  334. package/dist/client/assets/{use-section-preview-base-aG0bF3P5.js → use-section-preview-base-CDGxe86A.js} +1 -1
  335. package/dist/client/assets/{use-tags-Dd8HUmnm.js → use-tags-6FNfIPTx.js} +1 -1
  336. package/dist/client/assets/{use-task-board-analytics-CzQbHODb.js → use-task-board-analytics-gOQo_K0X.js} +1 -1
  337. package/dist/client/assets/{use-task-board-events-CYiz72_p.js → use-task-board-events-Cn-eMkHZ.js} +1 -1
  338. package/dist/client/assets/{use-task-board-item-prs-jQcO6g6_.js → use-task-board-item-prs-Cnwm21X1.js} +1 -1
  339. package/dist/client/assets/{use-task-board-items-IIN4BPM7.js → use-task-board-items-hVW51ztR.js} +1 -1
  340. package/dist/client/assets/{use-task-metadata-jn6CC5eM.js → use-task-metadata-CXdy1IkW.js} +1 -1
  341. package/dist/client/assets/{use-thread-analytics-DLLZJmgg.js → use-thread-analytics-BmiN2rOT.js} +1 -1
  342. package/dist/client/assets/{use-thread-outputs-CPZ7dzCd.js → use-thread-outputs-CgUm6KdM.js} +1 -1
  343. package/dist/client/assets/useInfiniteQuery-BZ3w6M2f.js +1 -0
  344. package/dist/client/assets/{useQueries-BWjYSwuK.js → useQueries-Bh2Kfq3r.js} +1 -1
  345. package/dist/client/assets/useSuspenseInfiniteQuery-Ce3yOBcb.js +1 -0
  346. package/dist/client/assets/{users-BurVROAI.js → users-Bk7mZ56d.js} +1 -1
  347. package/dist/client/assets/{utils-2VqdkNDi.js → utils-DTwti_Jm.js} +1 -1
  348. package/dist/client/assets/{variant-calendar-DZ3_8ynX.js → variant-calendar-Y3euxv7N.js} +1 -1
  349. package/dist/client/assets/{variant-draft-pointer-DM4gBa71.js → variant-draft-pointer-CCQ84S6v.js} +1 -1
  350. package/dist/client/assets/{view-mode-toggle-C-WM4OcL.js → view-mode-toggle-BWGY1kw5.js} +1 -1
  351. package/dist/client/assets/{virtual-mcp-BnS4EEBx.js → virtual-mcp-tPJmsSdD.js} +1 -1
  352. package/dist/client/assets/{watch-sse-pool-lmapFB_N.js → watch-sse-pool-DpRXmjtA.js} +1 -1
  353. package/dist/client/index.html +1 -1
  354. package/dist/server/server.js +1 -1
  355. package/package.json +1 -1
  356. package/dist/client/assets/agent-app-CSDDu9J6.js +0 -1
  357. package/dist/client/assets/agent-deck-DK_973zT.js +0 -1
  358. package/dist/client/assets/agent-library-BGL9Djfe.js +0 -1
  359. package/dist/client/assets/agent-library-file-chVG21bZ.js +0 -1
  360. package/dist/client/assets/agent-settings-uCfTAAjr.js +0 -1
  361. package/dist/client/assets/agent-site-editor-code-DI6sk1H-.js +0 -2
  362. package/dist/client/assets/agent-site-editor-content-BsXlco2b.js +0 -1
  363. package/dist/client/assets/agent-site-editor-preview-DdsOOMnU.js +0 -1
  364. package/dist/client/assets/agent-view-Bzjmry5i.js +0 -1
  365. package/dist/client/assets/api-keys-Cbx1GxmD.js +0 -1
  366. package/dist/client/assets/cms-settings-editor-ShgOJR34.js +0 -1
  367. package/dist/client/assets/flat-project-QwsUFjCO.js +0 -1
  368. package/dist/client/assets/legacy-agents-deep-AuduWihm.js +0 -1
  369. package/dist/client/assets/library-WWZWUP7o.js +0 -1
  370. package/dist/client/assets/project-reports-DgZCqzh8.js +0 -1
  371. package/dist/client/assets/project-tasks-Dl3gVSzh.js +0 -1
  372. package/dist/client/assets/record-editor-C2XTFAlG.js +0 -1
  373. package/dist/client/assets/reports-BISNFWLq.js +0 -1
  374. package/dist/client/assets/route-CJWXyQ8D.js +0 -1
  375. package/dist/client/assets/shell-layout-r2grUF3c.js +0 -1
  376. package/dist/client/assets/site-editor-Cf3Rn_G8.js +0 -1
  377. package/dist/client/assets/taskboard-analytics-CPKa9L-I.js +0 -1
  378. package/dist/client/assets/tasks-rbr_VCJB.js +0 -1
  379. package/dist/client/assets/use-chat-navigation-CObcn40t.js +0 -1
  380. package/dist/client/assets/useInfiniteQuery-H7SIgIJk.js +0 -1
  381. package/dist/client/assets/useSuspenseInfiniteQuery-DU-0dJfJ.js +0 -1
@@ -4483,7 +4483,7 @@ ${X}`:`${Y}
4483
4483
 
4484
4484
  ${X}
4485
4485
  ${J.slice(Y.length).trimStart()}`}function Gj8($){return $?.match(nW5)?.[1]?.toLowerCase()??null}async function rW5($,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 Jj8($,Z){try{return await qQ0($.client,$.packagePath,Z)}catch(Q){if(Q instanceof js)return null;throw Q}}async function Wj8($,Z,Q){let Y=UP($.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([Jj8($,Z),Jj8($,Q)]);return G!==W}async function Kj8($,Z){if(!UD0(Z))throw new cu;if(!await aA1($.store,$.site,Z))throw new cu}async function Hj8($,Z){await Kj8($,Z);let Q=await e5($.client,$.mainBranch);return Wj8($,Q,Z)}async function Fj8($,Z,Q={},Y={}){await Kj8($,Z);let X=await $.client.readCommit(Z);if(!X)throw new cu;let J=await e5($.client,$.mainBranch),G=await rW5($,J,Z);if(G.changes.length===0)return{result:"up-to-date"};let W=await Wj8($,J,Z);if(W)console.info("hosted reapply: schema differs",{site:$.site,target:Z,head:J});let K=await eA1($,J,G,sW5(X,Z,Q.coAuthor));return{result:"merged",sha:K,release:await QT1($,K,Y),schemaChanged:W}}var cu,MQ0="Reapply: ",iW5,pW5="Reapplied-From",nW5;var GT1=L(()=>{$n();A5();_F();oN();RQ0();Kg0();cu=class cu extends Error{constructor(){super("This commit has no release");this.name="NotPublishedError"}};iW5=/^chore\(decofile\):/,nW5=/^Reapplied-From:\s*([0-9a-f]{40})\s*$/im});async function Uj8($,Z,Q){let[Y,X,J]=await Promise.all([iO8($.store,$.site),zq$($.store,$.site),Z.listCommits({ref:$.mainBranch,since:eW5,cursor:Q,limit:aW5})]),G=new Map(J.items.map((H)=>[H.sha,H.date])),W=J.items.map((H)=>Gj8(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 Nj8($){let Z=await e5($.client,$.mainBranch),Q=await $T1($,Z),Y={revision:Z,schemaHash:Q,publishedAt:new Date().toISOString()};return await ZT1($,Y),Y}var aW5=50,eW5="1970-01-01T00:00:00Z";var Bj8=L(()=>{A5();oN();RQ0();GT1()});function Dj8($){return`site-tokens:${$}`}function $K5($){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 Lj8($){return crypto.subtle.importKey("pkcs8",Buffer.from($,"base64"),{name:"Ed25519"},!1,["sign"])}async function ZK5($,Z){let Q=(J)=>WT1(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}.${WT1(X)}`}function Oj8($){let Z=async(Q,Y)=>$K5(await $.kv.get(Q,Dj8(Y)));return{list:Z,async issue(Q,Y){let X=await Z(Q,Y),J={kid:WT1(crypto.getRandomValues(new Uint8Array(16))),iat:Math.floor(Date.now()/1000)},G=await ZK5(await $.signingKey(),{site:Y,...J});return await $.kv.set(Q,Dj8(Y),{tokens:[...X,J]}),{token:G,record:J}}}}var WT1=($)=>Buffer.from($ instanceof Uint8Array?$:new Uint8Array($)).toString("base64url");function YK5(){let $=Dp();return $?{store:$,purge:Jg0()}:null}async function Bg0($){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 jj8($){let Z=B0().siteTokenSigningKey;if(!Z)return null;return Oj8({kv:$.var.studioContext.storage.kv,signingKey:()=>Lj8(Z)})}function zs($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof js)return $.json({error:Q},409);if(Z instanceof Hg0)return console.error("hosted: latest.json update failed",{error:Q}),$.json({error:"latest-update-failed"},502);let Y=CG(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 wj8($={}){let Z=new Z1,Q=$.repoClientFor??_G,Y=$.insightsFor??fT$,X=$.delivery??YK5;return Z.use("*",async(J,G)=>{J.set("repoClientFor",Q),J.set("delivery",X),await G()}),Z.use("/:virtualMcpId/*",QK5),Z.get("/:virtualMcpId/releases",async(J)=>{try{let G=await Bg0(J);if(!G)return J.json(Ng0,503);let W=J.get("hostedProject"),K=await Y(J.var.studioContext,W.organizationId,W.repository);return J.json(await Uj8(G,K,J.req.query("cursor")??null),200,{"Cache-Control":"no-store"})}catch(G){return zs(J,G)}}),Z.post("/:virtualMcpId/releases/retry",async(J)=>{try{let G=await Bg0(J);if(!G)return J.json(Ng0,503);return J.json({current:await Nj8(G)})}catch(G){return zs(J,G)}}),Z.get("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Bg0(J);if(!G)return J.json(Ng0,503);return J.json({schemaChanged:await Hj8(G,J.req.param("sha"))})}catch(G){if(G instanceof cu)return J.json({error:G.message},404);return zs(J,G)}}),Z.post("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Bg0(J);if(!G)return J.json(Ng0,503);let W=await Fj8(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 ws)return J.json({error:"main-moved"},409);return zs(J,G)}}),Z.get("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=jj8(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=jj8(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 sq(K,G.packagePath,await K.getDefaultBranch());if(await jp(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 zs(J,K)}}),Z}var QK5,Ng0;var Ej8=L(()=>{IF();W8();my0();MG();kF();A5();oN();rA1();RQ0();Kg0();Bj8();GT1();h60();rq();Op();l1();IR();QK5=Ys(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 AQ(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(!RQ(await s7(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 LD0({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 zs($,H)}let K=await DD0(Q.storage.orgSites,X,Y.id);if(!K)return $.json(Lp,409);return $.set("hostedProject",{organizationId:Y.id,virtualMcpId:X,site:K,packagePath:sN(G),repository:W,metadata:G}),Z()}),Ng0={error:"hosted delivery not configured"}});var Pj8=($)=>{let Z=new Z1;if(Z.use("*",Io),Z.use("*",mF8),Z.route("/",lF8($.voiceSessions)),Z.route("/",of0()),Z.route("/",RU8()),Z.route("/",yU8()),Z.route("/",PU8()),Z.route("/",lD8()),Z.route("/",mD8()),Z.route("/",vD8()),Z.route("/",hD8()),Z.route("/",xD8()),Z.route("/",uy0()),Z.route("/tools",sD8()),Z.route("/",nD8()),Z.route("/",BD8({kvStorage:$.kvStorage})),Z.route("/",UD8()),Z.route("/fs",qD8({getConnection:$.getNatsConnection})),Z.route("/sandbox",RO8()),Z.route("/decofile",Yj8()),Z.route("/hosted",wj8()),Z.route("/",CD8()),Z.route("/",MD8()),Z.route("/deco-sites",rf0()),Z.route("/hosting",$U8()),Z.route("/monitor",NU8()),Z.route("/order-monitor",OU8()),Z.route("/sso",mf0()),Z.route("/",ly0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",oF8()),$.mountDevAssets)Z.route("/dev-assets",Xy0({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 XA1)Z.use(`${Q}/:threadId`,$.mcpAuth);Z.route("/",BW8()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler);for(let Q of XA1)Z.route(Q,ID8());return Z.route("/mcp",ib0()),Z.route("/mcp/self",fy0()),Z.route("/mcp",tb0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var zj8=L(()=>{W8();cF8();dF8();_f0();sF8();Sz1();ZU8();BU8();jU8();Jy0();U2();Mz1();MU8();yz1();ND8();DD8();RD8();VD8();dZ0();jz1();ob0();YA1();kD8();SD8();bD8();fD8();WA1();cD8();dD8();tD8();KA1();rD8();HA1();pb0();MO8();Xj8();Ej8()});import{z as mu}from"zod";class KT1{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 qj8.Kvm(Dg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Dg0.StorageType.Memory,ttl:Rj8.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"?Tj8.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=Aj8.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,Aj8.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"?Tj8.parse(G.json()):null;if(G&&W?.state==="ready"&&W.agentId===Q)await X.delete(J,{previousSeq:G.revision}).catch(()=>{});throw Y}}}var Dg0,qj8,Rj8,Aj8,Tj8;var Mj8=L(()=>{UG();TB();n$();Dg0=_(_H(),1),qj8=_(Mq(),1),Rj8=_(c2(),1),Aj8=new TextEncoder,Tj8=mu.discriminatedUnion("state",[mu.object({state:mu.literal("ready"),agentId:mu.string()}),mu.object({state:mu.literal("creating"),expiresAt:mu.number()})])});import{z as As}from"zod";function XK5($){return{model:$.model,instructions:`${Et$}
4486
- Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class HT1{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:XK5({...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:As.object({session:As.object({id:As.string().min(1)}),transport:As.object({type:As.literal("webrtc"),sdp:As.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var Vj8=L(()=>{TB()});var Ij8;var kj8=L(()=>{Ij8=[{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 FT1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:jt$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:Ij8.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 Cj8=L(()=>{TB();kj8()});import{z as dJ}from"zod";import{createHash as JK5,createHmac as GK5}from"crypto";class Lg0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=JK5("sha256").update(JSON.stringify(FT1($))).digest("hex"),this.conversationKey=GK5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Lg0({...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}=dJ.object({agents:dJ.array(dJ.object({agent_id:dJ.string(),name:dJ.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 dJ.object({platform_settings:dJ.object({auth:dJ.object({enable_auth:dJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...FT1(this.config)},AbortSignal.timeout(15000));return dJ.object({agent_id:dJ.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 dJ.object({token:dJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return dJ.object({token:dJ.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 Sj8=L(()=>{Cj8()});import{createHmac as WK5,timingSafeEqual as KK5}from"crypto";import{z as Ts}from"zod";function vj8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return WK5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function bj8($,Z){let Q=Buffer.from(JSON.stringify(_j8.parse($))).toString("base64url");return`${Q}.${vj8(Q,Z)}`}function xj8($,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(vj8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!KK5(W,G))return null;try{let K=_j8.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 _j8;var fj8=L(()=>{TB();_j8=Ts.object({sessionId:Ts.string().uuid(),organizationId:Ts.string().min(1).max(256),userId:Ts.string().min(1).max(256),threadId:Ts.string().min(1).max(256),expiresAt:Ts.number().int().positive()})});import{z as UT1}from"zod";function yj8($,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 NT1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var NT1;var gj8=L(()=>{NT1=UT1.object({provider:UT1.enum(["elevenlabs","openai"]),model:UT1.string().trim().min(1).max(128)})});import{createHash as HK5}from"crypto";import{z as qs}from"zod";function Rs($){return`user.${HK5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class DT1{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 hj8.Kvm(jg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:jg0.StorageType.Memory,ttl:uj8.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=yj8(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=bj8(G,this.deps.secret),K=await this.kv(),H=Rs(G),F=await K.get(H),U=F?.operation==="PUT"?Og0.parse(F.json()):null,N=BT1.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:Rs($)});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=xj8(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=Rs(Q),J=await Y.get(X),G=J?.operation==="PUT"?Og0.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,BT1.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=Rs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Og0.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,BT1.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(Rs($));if(Q?.operation==="PUT"&&Og0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(Rs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var jg0,hj8,uj8,Og0,BT1;var lj8=L(()=>{UG();TB();fj8();gj8();jg0=_(_H(),1),hj8=_(Mq(),1),uj8=_(c2(),1),Og0=qs.object({sessionId:qs.string().uuid(),expiresAt:qs.number(),connected:qs.boolean().optional(),conversation:NT1.optional(),characters:qs.number().int().nonnegative(),requests:qs.number().int().nonnegative()}),BT1=new TextEncoder});import{z as m1}from"zod";function oB($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function EK5($){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 PK5($,Z,Q){try{return JSON.parse($)}catch{throw new dj8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function zK5($){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:PK5(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 AK5($){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 TK5($){if(!$)return;return{openai:{response_format:$}}}function qK5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function cj8($,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 mj8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var FK5=256,UK5,NK5,BK5,DK5,LK5,OK5,jK5,wK5,dj8,ij8,pj8;var nj8=L(()=>{l4();W8();Qs();JU();UK5=m1.object({type:m1.literal("function"),function:m1.object({name:m1.string(),description:m1.string().optional(),parameters:m1.record(m1.string(),m1.unknown()).optional()})}),NK5=m1.object({id:m1.string(),type:m1.literal("function"),function:m1.object({name:m1.string(),arguments:m1.string()})}),BK5=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(NK5).optional()}),m1.object({role:m1.literal("tool"),content:m1.string(),tool_call_id:m1.string()})]),DK5=m1.object({type:m1.literal("text")}),LK5=m1.object({type:m1.literal("json_object")}),OK5=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()})}),jK5=m1.union([DK5,LK5,OK5]),wK5=m1.object({model:m1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:m1.array(BK5),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(UK5).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:jK5.optional(),user:m1.string().optional()});dj8=class dj8 extends Error{constructor($){super($);this.name="MessageConversionError"}};ij8=new Z1;ij8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(oB("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(oB("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(oB("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 j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(oB(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=EK5(J.model);if(!G)return $.json(oB("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let w=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>xA(E.providerId));if(!w)return $.json(oB("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=w.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(oB(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=zK5(J.messages),N=J.tools?AK5(J.tools):void 0,B=TK5(J.response_format),D=qK5(),O=Math.floor(Date.now()/1000);if(J.stream)return Jj($,async(j)=>{let w=cj8(F,U,N,J,B,$.req.raw.signal);try{let E=Yt(w),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let R=z;z="",await j.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 j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),P=!0;if(R.type==="text-delta"){if(z+=R.text,z.length>=FK5)await A()}else if(R.type==="tool-call"){await A();let f=T++;await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:R.toolCallId,type:"function",function:{name:R.toolName,arguments:JSON.stringify(R.input)}}]},finish_reason:null}]})})}else if(R.type==="finish")await A(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:mj8(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 j.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await j.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let j=cj8(F,U,N,J,B,$.req.raw.signal),w=await wO(j),E={role:"assistant",content:w.text||null};if(w.toolCalls&&w.toolCalls.length>0)E.tool_calls=w.toolCalls.map((P)=>({id:P.toolCallId,type:"function",function:{name:P.toolName,arguments:JSON.stringify("input"in P?P.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:O,model:J.model,choices:[{index:0,message:E,finish_reason:mj8(w.finishReason)}],usage:{prompt_tokens:w.usage?.inputTokens??0,completion_tokens:w.usage?.outputTokens??0,total_tokens:w.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(oB("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(oB(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(oB(X.message,"server_error"),500)}});pj8=ij8});function RK5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function tj8(){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(!S5(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||u9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(uA(U)!==J)continue;if(!RK5(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 oj8=L(()=>{W8();aY()});var wg0;var LT1=L(()=>{wg0={name:"decocms",version:"4.505.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^3.1.0","@opentelemetry/core":"^2.6.0",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.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 IK5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??VK5}}var sj8,VK5="https://ph.studio.decocms.com",rj8;var aj8=L(()=>{W8();D10();sh();K9();l1();Ho();Yz1();LT1();sj8=new Z1;sj8.get("/",($)=>{let Z={version:wg0.version,theme:x3$(),...HF().logo&&{logo:HF().logo},...kO()&&{internalUrl:Y$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&X2(),plansEnabled:B0().plansEnabled,auth:vH8(),posthog:IK5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:PU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});rj8=sj8});import{z as R$}from"zod";var kK5,ej8;var $w8=L(()=>{kK5=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())}),ej8=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(kK5)})),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 Zw8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${kK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function Eg0($,Z={}){let Q=await fetch(Zw8($,"",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 ej8.parse(await Q.json())}async function Qw8($,Z={}){let Q=await fetch(Zw8($,".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 OT1=L(()=>{$w8();IL()});import{join as Yw8}from"path";async function SK5($){try{let Z=await Eg0($,{signal:AbortSignal.timeout(CK5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||Sw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function Q3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function _K5($,Z){let Q=Eu($),Y=Z?.brand?.trim()||Sw1(Q),X=WG8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=KG8({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(`
4486
+ Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class HT1{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:XK5({...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:As.object({session:As.object({id:As.string().min(1)}),transport:As.object({type:As.literal("webrtc"),sdp:As.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var Vj8=L(()=>{TB()});var Ij8;var kj8=L(()=>{Ij8=[{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 FT1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:jt$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:Ij8.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 Cj8=L(()=>{TB();kj8()});import{z as dJ}from"zod";import{createHash as JK5,createHmac as GK5}from"crypto";class Lg0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=JK5("sha256").update(JSON.stringify(FT1($))).digest("hex"),this.conversationKey=GK5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Lg0({...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}=dJ.object({agents:dJ.array(dJ.object({agent_id:dJ.string(),name:dJ.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 dJ.object({platform_settings:dJ.object({auth:dJ.object({enable_auth:dJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...FT1(this.config)},AbortSignal.timeout(15000));return dJ.object({agent_id:dJ.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 dJ.object({token:dJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return dJ.object({token:dJ.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 Sj8=L(()=>{Cj8()});import{createHmac as WK5,timingSafeEqual as KK5}from"crypto";import{z as Ts}from"zod";function vj8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return WK5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function bj8($,Z){let Q=Buffer.from(JSON.stringify(_j8.parse($))).toString("base64url");return`${Q}.${vj8(Q,Z)}`}function xj8($,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(vj8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!KK5(W,G))return null;try{let K=_j8.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 _j8;var fj8=L(()=>{TB();_j8=Ts.object({sessionId:Ts.string().uuid(),organizationId:Ts.string().min(1).max(256),userId:Ts.string().min(1).max(256),threadId:Ts.string().min(1).max(256),expiresAt:Ts.number().int().positive()})});import{z as UT1}from"zod";function yj8($,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 NT1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var NT1;var gj8=L(()=>{NT1=UT1.object({provider:UT1.enum(["elevenlabs","openai"]),model:UT1.string().trim().min(1).max(128)})});import{createHash as HK5}from"crypto";import{z as qs}from"zod";function Rs($){return`user.${HK5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class DT1{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 hj8.Kvm(jg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:jg0.StorageType.Memory,ttl:uj8.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=yj8(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=bj8(G,this.deps.secret),K=await this.kv(),H=Rs(G),F=await K.get(H),U=F?.operation==="PUT"?Og0.parse(F.json()):null,N=BT1.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:Rs($)});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=xj8(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=Rs(Q),J=await Y.get(X),G=J?.operation==="PUT"?Og0.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,BT1.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=Rs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Og0.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,BT1.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(Rs($));if(Q?.operation==="PUT"&&Og0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(Rs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var jg0,hj8,uj8,Og0,BT1;var lj8=L(()=>{UG();TB();fj8();gj8();jg0=_(_H(),1),hj8=_(Mq(),1),uj8=_(c2(),1),Og0=qs.object({sessionId:qs.string().uuid(),expiresAt:qs.number(),connected:qs.boolean().optional(),conversation:NT1.optional(),characters:qs.number().int().nonnegative(),requests:qs.number().int().nonnegative()}),BT1=new TextEncoder});import{z as m1}from"zod";function oB($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function EK5($){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 PK5($,Z,Q){try{return JSON.parse($)}catch{throw new dj8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function zK5($){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:PK5(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 AK5($){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 TK5($){if(!$)return;return{openai:{response_format:$}}}function qK5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function cj8($,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 mj8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var FK5=256,UK5,NK5,BK5,DK5,LK5,OK5,jK5,wK5,dj8,ij8,pj8;var nj8=L(()=>{l4();W8();Qs();JU();UK5=m1.object({type:m1.literal("function"),function:m1.object({name:m1.string(),description:m1.string().optional(),parameters:m1.record(m1.string(),m1.unknown()).optional()})}),NK5=m1.object({id:m1.string(),type:m1.literal("function"),function:m1.object({name:m1.string(),arguments:m1.string()})}),BK5=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(NK5).optional()}),m1.object({role:m1.literal("tool"),content:m1.string(),tool_call_id:m1.string()})]),DK5=m1.object({type:m1.literal("text")}),LK5=m1.object({type:m1.literal("json_object")}),OK5=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()})}),jK5=m1.union([DK5,LK5,OK5]),wK5=m1.object({model:m1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:m1.array(BK5),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(UK5).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:jK5.optional(),user:m1.string().optional()});dj8=class dj8 extends Error{constructor($){super($);this.name="MessageConversionError"}};ij8=new Z1;ij8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(oB("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(oB("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(oB("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 j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(oB(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=EK5(J.model);if(!G)return $.json(oB("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let w=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>xA(E.providerId));if(!w)return $.json(oB("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=w.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(oB(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=zK5(J.messages),N=J.tools?AK5(J.tools):void 0,B=TK5(J.response_format),D=qK5(),O=Math.floor(Date.now()/1000);if(J.stream)return Jj($,async(j)=>{let w=cj8(F,U,N,J,B,$.req.raw.signal);try{let E=Yt(w),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let R=z;z="",await j.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 j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),P=!0;if(R.type==="text-delta"){if(z+=R.text,z.length>=FK5)await A()}else if(R.type==="tool-call"){await A();let f=T++;await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:R.toolCallId,type:"function",function:{name:R.toolName,arguments:JSON.stringify(R.input)}}]},finish_reason:null}]})})}else if(R.type==="finish")await A(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:mj8(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 j.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await j.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let j=cj8(F,U,N,J,B,$.req.raw.signal),w=await wO(j),E={role:"assistant",content:w.text||null};if(w.toolCalls&&w.toolCalls.length>0)E.tool_calls=w.toolCalls.map((P)=>({id:P.toolCallId,type:"function",function:{name:P.toolName,arguments:JSON.stringify("input"in P?P.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:O,model:J.model,choices:[{index:0,message:E,finish_reason:mj8(w.finishReason)}],usage:{prompt_tokens:w.usage?.inputTokens??0,completion_tokens:w.usage?.outputTokens??0,total_tokens:w.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(oB("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(oB(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(oB(X.message,"server_error"),500)}});pj8=ij8});function RK5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function tj8(){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(!S5(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||u9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(uA(U)!==J)continue;if(!RK5(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 oj8=L(()=>{W8();aY()});var wg0;var LT1=L(()=>{wg0={name:"decocms",version:"4.505.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^3.1.0","@opentelemetry/core":"^2.6.0",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.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 IK5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??VK5}}var sj8,VK5="https://ph.studio.decocms.com",rj8;var aj8=L(()=>{W8();D10();sh();K9();l1();Ho();Yz1();LT1();sj8=new Z1;sj8.get("/",($)=>{let Z={version:wg0.version,theme:x3$(),...HF().logo&&{logo:HF().logo},...kO()&&{internalUrl:Y$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&X2(),plansEnabled:B0().plansEnabled,auth:vH8(),posthog:IK5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:PU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});rj8=sj8});import{z as R$}from"zod";var kK5,ej8;var $w8=L(()=>{kK5=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())}),ej8=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(kK5)})),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 Zw8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${kK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function Eg0($,Z={}){let Q=await fetch(Zw8($,"",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 ej8.parse(await Q.json())}async function Qw8($,Z={}){let Q=await fetch(Zw8($,".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 OT1=L(()=>{$w8();IL()});import{join as Yw8}from"path";async function SK5($){try{let Z=await Eg0($,{signal:AbortSignal.timeout(CK5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||Sw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function Q3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function _K5($,Z){let Q=Eu($),Y=Z?.brand?.trim()||Sw1(Q),X=WG8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=KG8({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(`
4487
4487
  `)}function vK5($,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}
4488
4488
  </head>`)}function Xw8($){let Z=new Z1;return Z.get("/:domain/og.png",async(Q)=>{let Y=Eu(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(Yw8($,"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(bK5)}),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=Eu(Q.req.param("file").replace(/\.md$/,""));try{let X=await Qw8(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(xK5)});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=$?Yw8($,"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 SK5(Eu(Y)),K=_K5(Y,W);return Q.html(vK5(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var CK5=2500,bK5=1e4,xK5=1e4;var Jw8=L(()=>{W8();IL();OT1();l1()});function Pg0($,Z){return fetch(`${kK({})}${$}`,Z)}async function fK5($,Z){let Q=await Eg0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function gK5($){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 yK5,Wj,Gw8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Ww8;var Kw8=L(()=>{W8();dK();IL();OT1();yK5=new Set(["complete","errored","terminated","unknown"]);Wj=new Z1;Wj.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});Wj.use("/link-token/*",Gw8);Wj.use("/suggest",Gw8);Wj.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 fK5(Z,Q))}catch{return $.json({error:"report read failed"},502)}});Wj.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}=gK5(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await Pg0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${$P({})}`},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)}});Wj.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await Pg0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${$P({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:yK5.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});Wj.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await Pg0(`/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)}});Wj.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await Pg0(`/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:[]})}});Ww8=Wj});var hK5=1048576,jT1;var Hw8=L(()=>{W8();_W();l1();cP1();jT1=new Z1;jT1.post("/webhook",h6({maxSize:hK5,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(!pK8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=nK8(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await tK8(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as uK5}from"crypto";function mK5($,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 uK5(Buffer.from(X),Buffer.from(Y))}function dK5($,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 Fw8($){let Z=new Z1;return Z.post("/webhook",h6({maxSize:lK5,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(!mK5(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"&&!cK5.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 f50().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=dK5(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await iK5($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function iK5($,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 u88(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var lK5=5242880,cK5;var Uw8=L(()=>{W8();_W();IX();fQ();cK5=new Set(["check_suite","issue_comment"])});import{DBOS as ET1,SchedulerMode as pK5}from"@dbos-inc/dbos-sdk";async function tK5(){try{return await oK5()}catch($){return console.warn(`[sandbox-credential-push] push failed: ${$ instanceof Error?$.message:String($)}`),null}}async function oK5(){if(!x50())return null;let[{RemoteSandboxProvider:$},{SandboxProviderRouter:Z}]=await Promise.all([Promise.resolve().then(() => (dH1(),mH1)),Promise.resolve().then(() => (cH1(),lH1))]),Q=await f50(),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=si$({sandboxes:J,pools:G,records:await ri$(X,J,G),legacyPools:hC0(process.env.STUDIO_SANDBOX_TENANT_POOLS),now:W}),{batches:H,failed:F}=await ai$(K,Wj0(X,new XJ(B0().encryptionKey)),{now:W,orgFsLifetimeMs:cC0}),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 sK5($,Z){let Q=await ET1.runStep(tK5,{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 Nw8(){if(wT1)return;if(!B0().agentSandboxEnabled||!x50())return;wT1=ET1.registerWorkflow(sK5,{name:"sandboxCredentialPushWorkflow"}),ET1.registerScheduled(wT1,{name:"sandboxCredentialPushWorkflow",crontab:nK5,mode:pK5.ExactlyOncePerIntervalWhenActive})}var nK5="1,11,21,31,41,51 * * * *",wT1=null;var Bw8=L(()=>{I3();Xw();C31();mC0();uC0();IX();l1()});function Dw8($){let Z=new iO($.db,new XJ($.encryptionKey)),Q=new Z1;return Q.get("/attachments/:token",async(Y)=>{let X=i18(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 $Q(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 Lw8=L(()=>{W8();Xw();jN1();EO()});function zg0(){try{return B0().jiraSettleSeconds*1000}catch{return pz}}function Ow8($,Z){let Q=Z.windowMs??pz,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=rK5($,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 rK5($,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 PT1=L(()=>{SO();l1()});function jw8($){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 zT1($,Z,Q){if(!Z.enabled)return"disabled";let Y=Z.organizationId,X=new $Q(Z.siteUrl,Z.email,Z.apiToken),J=Ow8(await X.listStatusChanges(Q.issueId),{changeId:Q.changelogId,now:Q.now,windowMs:zg0()});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:iz(N)})),H=v98(K)&&Z.boardId?_98(await X.getBoardColumnStatusIds(Z.boardId),W.id,G.toId):null,F=S98(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 AT1=L(()=>{YU();EO();ut();PT1()});import{DBOS as z2,SchedulerMode as aK5}from"@dbos-inc/dbos-sdk";function ww8($){qT1=$}function MT1(){if(!qT1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return qT1}function VT1(){let $=MT1();return new iO($.db,new XJ($.encryptionKey))}async function YH5($){try{let Z=await VT1().getById($);if(!Z?.enabled||!Z.boardId)return{integrationId:$,fired:0};let Q=await gJ(MT1().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 $Q(Z.siteUrl,Z.email,Z.apiToken),G=`(${await X.getBoardScopeJql(Z.boardId)}) AND status CHANGED AFTER "-${$H5}m"`,W=0,K;for(let H=0;H<ZH5;H++){let F=await X.searchIssues({jql:G,nextPageToken:K});for(let U of F.issues)if(await zT1(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 XH5($,Z){let Q=await z2.runStep(()=>VT1().listEnabledIds(),{name:"loadJiraIntegrations"});if(Q.length===0)return;let Y=await Promise.all(Q.map((X)=>z2.runStep(()=>YH5(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 JH5($,Z){try{let Q=await VT1().getById($);if(!Q?.enabled)return"disabled";let Y=await gJ(MT1().db,Q.organizationId);if(!Y)return"disabled";let X=await zT1(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 GH5($,Z){await z2.sleep(zg0()+QH5),await z2.runStep(()=>JH5($,Z),{name:"settleJiraMove"})}async function Ew8($,Z){if(!RT1)throw Error("[jira-trigger] settle workflow is not registered");await z2.startWorkflow(RT1,{workflowID:`jira-settle:${$}:${Z.changelogId}`})($,Z)}function Pw8(){if(TT1)return;RT1=z2.registerWorkflow(GH5,{name:"jiraSettleWorkflow"}),TT1=z2.registerWorkflow(XH5,{name:"jiraTriggerSweepWorkflow"}),z2.registerScheduled(TT1,{name:"jiraTriggerSweepWorkflow",crontab:eK5,mode:aK5.ExactlyOncePerIntervalWhenActive})}var eK5="*/5 * * * *",$H5=20,ZH5=5,QH5=5000,qT1=null,RT1=null,TT1=null;var IT1=L(()=>{Xw();hz();EO();PT1();AT1()});function zw8($){let Z=new iO($.db,new XJ($.encryptionKey)),Q=pw($.db);async function Y(J,G){let W=jw8(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 Ew8(K.id,W)}let X=new Z1;return X.post("/webhook/:secret",h6({maxSize:WH5}),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 WH5=1048576;var Aw8=L(()=>{W8();_W();Xw();IT1();AT1();O00()});function Tw8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var qw8,KH5,HH5,Rw8;var Mw8=L(()=>{W8();UG();Vt();ui();qw8=new Z1,KH5=["range","if-none-match","if-modified-since"],HH5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];qw8.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 jZ0(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 Tw8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of KH5){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 HH5){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Tw8(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});Rw8=qw8});var VQ0=y((du)=>{var FH5=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]}),UH5=du&&du.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))FH5(Z,$,Q)};Object.defineProperty(du,"__esModule",{value:!0});UH5(F3(),du)});var kw8=y((Vw8)=>{Object.defineProperty(Vw8,"__esModule",{value:!0});Vw8.version=void 0;Vw8.version="3.4.0"});var _w8=y((sB)=>{var NH5=sB&&sB.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(sB,"__esModule",{value:!0});sB.NodeTransport=sB.VERSION=void 0;sB.nodeResolveHost=wH5;var X9=VQ0(),BH5=V0("net"),kT1=V0("tls"),DH5=V0("path"),Cw8=V0("fs"),LH5=NH5(V0("dns")),OH5=kw8();sB.VERSION=OH5.version;var jH5="nats.js";class Sw8{socket;version;lang;yields=[];signal=(0,X9.deferred)();closedNotification=(0,X9.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=jH5,this.version=sB.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,X9.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 X9.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 X9.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new X9.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,X9.deferred)(),Q,Y=(0,BH5.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,X9.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=X9.DataBuffer.concat(...this.yields),X=(0,X9.extractProtocolMessage)(Y);if(X!=="")try{let J=X9.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,X9.deferred)();try{if($=(0,DH5.resolve)($),!(0,Cw8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,Cw8.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,X9.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new X9.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,X9.deferred)();try{let X=(0,kT1.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 X9.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,X9.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new X9.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,X9.deferred)();try{let Y=(0,kT1.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 X9.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,X9.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,X9.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 kT1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,X9.render)($)}`);let Z=(0,X9.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,X9.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,X9.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}}sB.NodeTransport=Sw8;function wH5($){let Z=(0,X9.deferred)();return LH5.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 yw8=y((fw8)=>{Object.defineProperty(fw8,"__esModule",{value:!0});fw8.connect=EH5;var vw8=_w8(),bw8=VQ0(),xw8=VQ0();function EH5($={}){if((0,xw8.hasWsProtocol)($))return Promise.reject(xw8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,bw8.setTransportFactory)({factory:()=>{return new vw8.NodeTransport},dnsResolveFn:vw8.nodeResolveHost}),bw8.NatsConnectionImpl.connect($)}});var gw8=y((Kj)=>{var zH5=Kj&&Kj.__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]}),AH5=Kj&&Kj.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))zH5(Z,$,Q)};Object.defineProperty(Kj,"__esModule",{value:!0});Kj.connect=void 0;var TH5=yw8();Object.defineProperty(Kj,"connect",{enumerable:!0,get:function(){return TH5.connect}});AH5(VQ0(),Kj)});function lw8($){let Z=$?.connectFn??VH5,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:MH5,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=k7(RH5,qH5,D-1,2,0.5);await J$(O)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?Ag0.credsAuthenticator(new TextEncoder().encode(B.creds)):B?.user?Ag0.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=uw8.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 VH5($){return hw8.connect($)}var Ag0,hw8,uw8,qH5=100,RH5=3000,MH5=3000;var cw8=L(()=>{n$();Ag0=_(c2(),1),hw8=_(gw8(),1),uw8=_(_H(),1)});function Tg0($,Z){return`${$}.${Z}`}class CT1{cache;constructor($){this.cache=_P({ttlMs:$?.ttlMs??IH5,maxSize:$?.maxSize??kH5})}async get($,Z){return this.cache.get(Tg0($,Z))??null}async set($,Z,Q){this.cache.set(Tg0($,Z),Q)}async invalidate($,Z){this.cache.delete(Tg0($,Z)),this.cache.delete(Tg0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var IH5=600000,kH5=5000;var mw8=()=>{};function qg0($,Z){return`${$}:${Z}`}function ST1($){let Z=_P({ttlMs:$?.ttlMs??CH5,maxSize:$?.maxSize??SH5}),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(dw8,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(qg0(K,H))},set(K,H,F){Z.set(qg0(K,H),F)},invalidate(K,H){Z.delete(qg0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(dw8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(qg0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var dw8="studio.ai-provider-keys.invalidate",CH5=30000,SH5=5000;var iw8=()=>{};class _T1{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 pw8=($)=>{let Z;return()=>Z??=$()},vT1,bT1;var nw8=L(()=>{v6();vT1=pw8(()=>G$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),bT1=pw8(()=>G$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function gH5($=sw8){return{name:vB,subjects:[`${GL1}.>`],storage:jU.StorageType.File,max_age:bH5,max_bytes:fH5,max_msgs_per_subject:yH5,discard:jU.DiscardPolicy.Old,retention:jU.RetentionPolicy.Limits,duplicate_window:xH5,num_replicas:$}}class rw8{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 tw8($){let Z=ow8.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function cH5($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,vH5().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 mH5($,Z){return $.info?.cluster?Z:1}function dH5($){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 xT1{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=gH5(X);try{await Y.streams.info(vB),await Y.streams.update(vB,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(vB,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(vB),await Y.streams.add(J);else throw G}},Q=await F8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await jU.jetstreamManager($),X=mH5($,sw8);try{await Z(Y,X)}catch(J){if(X<=1||!dH5(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=cH5(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=G98(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=KL1(H,{runId:Z}),N=performance.now()-F;vT1().record(N),bT1().add(1,{"org.id":Y??"unknown"}),lH5?.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?tw8(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(),uH5)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 F8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:tw8(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=KL1(Z,{runId:$,dedup:Q});vT1().record(performance.now()-X),bT1().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=J98({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"?jU.DeliverPolicy.New:jU.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=dz($),W;try{W=await F8(async()=>{return(await Y.consumers.get(vB,{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=Hb0({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(Jb0()).pipeThrough(Gb0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,D=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",D,{once:!0}),new ReadableStream({async pull(O){for(;;){let{done:j,value:w}=await F.read();if(j){D(),O.close();return}let E=w;if(E.kind==="done"){if(J){D(),O.close();return}continue}O.enqueue(E.chunk);return}},cancel(){D()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(vB,{filter:dz($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var jU,ow8,_H5=($)=>{let Z;return()=>Z??=$()},vH5,bH5=86400000000000,xH5=120000000000,fH5=4294967296,sw8,yH5=500000,hH5,uH5,lH5;var aw8=L(()=>{n$();HL1();Fb0();Wb0();v6();nw8();jU=_(_H(),1),ow8=_(c2(),1),vH5=_H5(()=>G$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),sw8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);hH5=process.env.STREAM_ENCODE_TRACE==="1",uH5=process.env.DECOPILOT_STREAM_TRACE==="1";lH5=hH5?new rw8:null});function Rg0($,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 ew8=L(()=>{q8()});class fT1{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 iH5($,Z,Q={}){let Y=$.startsWith("thread:")?tF($,Q):$;return[...new Set([Z,Y].filter((X)=>!!X))]}async function yT1($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await zB($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await AB($,{threadId:X,runBranch:G?.branch}),K=await v40($,Q,aB0(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=iH5(W,await NS0($,X),{flat:zh(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 $E8=L(()=>{A5();xQ();fQ()});async function ZE8($,Z,Q){let Y=Z.organizationId;if(!hJ(Z))return!1;if(!nh(Q))return!1;if(!await vd($,Y,x10))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 Z9($,{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 QE8=L(()=>{LG();u8();vX();Et();ZU();l5()});function aH5($){return $ instanceof AX}function YE8($,Z){return Z-$>=sH5}class gT1{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??pH5;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??tH5,Q=this.options.itemIntervalMs??nH5,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()-FN1),xB1);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()-rH5));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 vB1(this.taskBoard,X,Y),await bB1(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||hJ(W)||W.assigneeId!==o$)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await yT1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!YE8(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),aH5(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()+oH5)).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(!YE8(GL(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(!hJ(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 yT1(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 ZE8(G,Y,W))return!0;if(!X)return!1;if(await Q48(G,Y))return!0;if(!kB1(W))return!1;return await zt(G,Y,{previewMatchesHead:CB1(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var pH5=60000,nH5=300000,tH5=50,oH5=60000,sH5=900000,rH5=120000;var XE8=L(()=>{u8();Jv0();$E8();MO();Mt();ZU();QE8();l5();XW();fB1();fQ();c90()});async function JE8($,Z,Q=pz){return await WE8($,Z,Q,{})}async function GE8($,Z,Q,Y=pz){return await WE8($,Q,Y,{activityId:Z})}async function WE8($,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-eH5),settledBefore:new Date(Z-Q),limit:$F5,...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 ZF5($.taskBoard,K,Q);for(let U of H){if(!x98(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 ZF5($,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?f98(X,Q):Z.from}var eH5=1800000,$F5=200;var KE8=L(()=>{SO()});import{DBOS as A2,DBOSClient as QF5,SchedulerMode as YF5}from"@dbos-inc/dbos-sdk";function HE8($){Hj=$}async function GF5($){if(!Hj)return 0;try{return await GE8(Hj,$,Date.now(),Hj.settleMs)}catch(Z){return console.error(`[automations] settling board move ${$} failed`,Z),0}}async function WF5(){if(!Hj)return 0;try{return await JE8(Hj,Date.now(),Hj.settleMs)}catch($){return console.error("[automations] board transition sweep failed",$),0}}async function KF5($){await A2.sleep((Hj?.settleMs??pz)+JF5),await A2.runStep(()=>GF5($),{name:"settleBoardMove"})}async function HF5($,Z){let Q=await A2.runStep(()=>WF5(),{name:"sweepBoardMoves"});if(Q>0)console.log(`[automations] board transition sweep fired ${Q} trigger(s) the settle wait missed`)}async function UE8($){let Z=Hj;if(!Z||!uT1)return;if(!await Z.automations.hasActiveBoardColumnTrigger($.taskBoardItemId,$.to))return;let Q=`board-settle:${$.activityId}`;if(!A2.isWithinWorkflow()){await A2.startWorkflow(uT1,{workflowID:Q,queueName:k2})($.activityId);return}let Y=await QF5.create({systemDatabaseUrl:Z.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:1});try{await Y.enqueue({workflowName:FE8,queueName:k2,workflowID:Q},$.activityId)}finally{await Y.destroy()}}function NE8(){if(hT1)return;uT1=A2.registerWorkflow(KF5,{name:FE8}),hT1=A2.registerWorkflow(HF5,{name:"boardTransitionSweepWorkflow"}),A2.registerScheduled(hT1,{name:"boardTransitionSweepWorkflow",crontab:XF5,mode:YF5.ExactlyOncePerIntervalWhenActive})}var XF5="*/5 * * * *",JF5=2000,Hj=null,FE8="boardTransitionSettleWorkflow",uT1=null,hT1=null;var BE8=L(()=>{SO();KE8()});import{readdir as FF5,rm as Mg0}from"fs/promises";import{join as Vg0}from"path";async function Ig0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-UF5),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 DE8($,X,Z);else if(!X.startsWith(".")){let J=Vg0($,X),G=await iu(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await DE8(J,K,Z)}if((await iu(J)).length===0)await Mg0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function DE8($,Z,Q){let Y=0,X=Vg0($,Z),J=await iu(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=Vg0(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=Vg0(K,U);await Mg0(B,{recursive:!0,force:!0}),Y++}}if((await iu(K)).length===0)await Mg0(K,{recursive:!0,force:!0})}if((await iu(X)).length===0)await Mg0(X,{recursive:!0,force:!0});return Y}async function iu($){try{return(await FF5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var UF5=30;var lT1=()=>{};import{DBOS as cT1,SchedulerMode as NF5}from"@dbos-inc/dbos-sdk";async function DF5(){let $=[qH(),$l(),XD()],Z=0;for(let Q of $)try{Z+=await Ig0(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 LF5($,Z){await cT1.runStep(()=>DF5(),{name:"monitoringRetention"})}function OE8(){if(LE8)return;LE8=!0;let $=cT1.registerWorkflow(LF5,{name:"monitoringRetentionWorkflow"});cT1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:BF5,mode:NF5.ExactlyOncePerIntervalWhenActive})}var BF5="23 4 * * *",LE8=!1;var jE8=L(()=>{uW();lT1()});function wE8($){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 FP($.db,Z,Y.role);return X.boundAuth=BP1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new wT(Q,void 0,X.boundAuth,Y.role,"self"),uz(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var EE8=L(()=>{GJ();mN()});function PE8(){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=IQ0(N.params.name),D=N.params.arguments||{},O=Object.keys(D).map((w)=>IQ0(w)),j=O.length>0?O.slice(0,3).join(",")+(O.length>3?"\u2026":""):"";J=`${L9.tool}${B}${L9.dim}(${j})${L9.reset}`}else if(N.method)J=`${L9.dim}${IQ0(N.method)}${L9.reset}`}}catch{}}let W=IQ0(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${L9.mcp}${IQ0(F.slice(0,12))}\u2026${L9.reset}`}else if(X==="/mcp")W=`${L9.mcp}/mcp${L9.reset}`;else if(X==="/mcp/registry")W=`${L9.mcp}/mcp/registry${L9.reset}`;let K=jF5(Y),H=G?"\u25C0":"\u2190";console.log(`${L9.dim}${H}${L9.reset} ${K}${Y}${L9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=OF5(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";console.log(`${L9.dim}${D}${L9.reset} ${K}${Y}${L9.reset} ${W}${J?` ${J}`:""} ${N}${U}${L9.reset} ${L9.duration}${B}${L9.reset}`)}}}var L9,OF5=($)=>{if($>=500)return L9.serverError;if($>=400)return L9.clientError;if($>=300)return L9.redirect;return L9.ok},jF5=($)=>{return L9[$]||L9.reset},IQ0=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var zE8=L(()=>{L9={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 RE8}from"crypto";import{mkdir as wF5,readdir as EF5,rm as AE8,stat as ME8}from"fs/promises";import{join as dT1,relative as PF5}from"path";import{z as X8}from"zod";function IE8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return dT1(zF5,Z)}function kE8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function mT1($,Z){let Q=IE8($),Y=kE8(Z);return dT1(Q,Y)}function AF5($,Z,Q,Y){let X=B0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return RE8("sha256",X).update(J).digest("hex")}function qE8($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=AF5(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${kE8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function CE8($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${RE8("md5","etag").update(Y).digest("hex")}"`}async function SE8($,Z,Q,Y,X){try{let J=await EF5($,{withFileTypes:!0});for(let G of J){let W=dT1($,G.name),H=PF5(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 SE8(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 ME8(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:CE8(W,F.mtime,F.size)})}catch{}}}}catch{}}function _E8($,Z){let Y=Q0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:X8.object({prefix:X8.string().optional(),maxKeys:X8.number().optional().default(1000),continuationToken:X8.string().optional(),delimiter:X8.string().optional()}),outputSchema:X8.object({objects:X8.array(X8.object({key:X8.string(),size:X8.number(),lastModified:X8.string(),etag:X8.string()})),nextContinuationToken:X8.string().optional(),isTruncated:X8.boolean(),commonPrefixes:X8.array(X8.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=IE8(Y);await wF5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await SE8(F,F,G,K,U),U.objects.sort((j,w)=>j.key.localeCompare(w.key));let N=0;if(H){if(N=U.objects.findIndex((j)=>j.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),D=N+W<U.objects.length,O=D?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:D,nextContinuationToken:O,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:X8.object({key:X8.string()}),outputSchema:X8.object({contentType:X8.string().optional(),contentLength:X8.number(),lastModified:X8.string(),etag:X8.string(),metadata:X8.record(X8.string(),X8.string()).optional()}),handler:async(X)=>{let J=X,G=mT1(Y,J.key),W=await ME8(G);return{contentType:xz1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:CE8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:X8.object({key:X8.string(),expiresIn:X8.number().optional()}),outputSchema:X8.object({url:X8.string(),expiresIn:X8.number()}),handler:async(X)=>{let J=X,G=gO(J.expiresIn,TE8);return{url:qE8(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:X8.object({key:X8.string(),expiresIn:X8.number().optional(),contentType:X8.string().optional()}),outputSchema:X8.object({url:X8.string(),expiresIn:X8.number()}),handler:async(X)=>{let J=X,G=gO(J.expiresIn,TE8);return{url:qE8(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:X8.object({key:X8.string()}),outputSchema:X8.object({success:X8.boolean(),key:X8.string()}),handler:async(X)=>{let J=X,G=mT1(Y,J.key);try{return await AE8(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:X8.object({keys:X8.array(X8.string()).max(1000)}),outputSchema:X8.object({deleted:X8.array(X8.string()),errors:X8.array(X8.object({key:X8.string(),message:X8.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=mT1(Y,K);try{await AE8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function iT1($,Z,Q){let Y=_E8(Z,Q),X=new WE({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:ZZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:X8.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:X8.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 vE8($,Z,Q,Y){let J=_E8(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 zF5="./data/assets",TE8=3600,VE8,bE8;var xE8=L(()=>{l1();st();W8();OH0();ot();UJ();hO();Jy0();VE8=new Z1;VE8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return iT1($.req.raw,Z,Y)});bE8=VE8});var fE8={};O6(fE8,{mountDevRoutes:()=>TF5});function TF5($,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 iT1(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 vE8(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",bE8);let Q=new Z1;Q.use("*",BU({mountPath:"/api/dev-assets"})),Q.route("/",Xy0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var yE8=L(()=>{W8();Vz1();Jy0();xE8()});var nE8={};O6(nE8,{watchHandler:()=>pE8,resolveVoiceSigningSecret:()=>mE8,resolveCorsOrigin:()=>dE8,isSsoExemptPath:()=>cE8,isAllowedOAuthRedirectUri:()=>iE8,createApp:()=>bF5});import{readFileSync as qF5}from"fs";import{randomBytes as RF5}from"crypto";import{PrometheusSerializer as MF5}from"@opentelemetry/exporter-prometheus";import{DBOS as rB}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as kF5,oAuthProtectedResourceMetadata as CF5}from"better-auth/plugins";async function VF5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,hE8(gE8)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),hE8(gE8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function hE8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function cE8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${uf0}/`)||$.startsWith(`${bf0}/`)}function mE8($){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)"),RF5(32).toString("base64")}function dE8($,{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 iE8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"}async function bF5($={}){let Z=$.database??E8(),Q=!1;I6.stop().catch((F0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",F0)});let Y,X,J,G,W=new CT1,K,H,F,U=null;if($.disableNats)K=ST1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new mZ0,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=lw8();let F0=B0().natsCredsPath,G0;if(F0)try{G0=qF5(F0,"utf8")}catch(B8){console.error(`[app] failed to read NATS_CREDS at ${F0}; connecting anonymously`,B8)}U.init(B0().natsUrls,{creds:G0,user:B0().natsUser,password:B0().natsPassword});let P0=fZ1()?new PZ1({getJetStream:()=>U.getJetStream(),selfListVersion:wg0.version}):null;P0?.init().catch(()=>{}),Y=P0;let z0=new G71({getJetStream:()=>U.getJetStream()});z0.init().catch(()=>{}),X=z0;let j1=new th(TB1,{getJetStream:()=>U.getJetStream()}),b$=new th(m90,{getJetStream:()=>U.getJetStream()});j1.init().catch(()=>{}),b$.init().catch(()=>{}),J={reads:j1,cards:b$};let r$=new pO1({getJetStream:()=>U.getJetStream()});r$.init().catch(()=>{}),G=r$,K=ST1({getConnection:()=>U.getConnection()}),H=new _T1({getConnection:()=>U.getConnection()}),F=new xT1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),DH8(U),U.onReady(()=>{P0?.init().catch((B8)=>{console.error("[McpListCache] Deferred init failed:",B8)}),z0.init().catch((B8)=>{console.error("[SkillCatalogCache] Deferred init failed:",B8)}),j1.init().catch((B8)=>{console.error("[PrReadCache] Deferred init failed:",B8)}),b$.init().catch((B8)=>{console.error("[PrCardCache] Deferred init failed:",B8)}),r$.init().catch((B8)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",B8)}),K.start(),T2$(()=>U.getConnection()),F.init().catch((B8)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",B8)})})}if(T2)await T2();zZ1(Y),K71(X),F71(()=>U?.getConnection()??null),qB1(J),nO1(G);let B={storage:new mc(Z.db),sseHub:I6,onThreadFinished:async(F0,G0)=>qt(new DW(Z.db),F0,G0,new V3(Z.db))},D=new VD1(B),O=new w70(Z.db),j=new fT1(O);j.start(),m98(H),H.start((F0)=>{ov0(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 w=()=>U?.getConnection()??null;zz1(w),U?.onReady(()=>zz1(w)),Vj1(w),U?.onReady(()=>Vj1(w)),F.init().catch((F0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",F0)}),T2=async()=>{await D.stopAll(),D.dispose(),j.dispose(),H.stop().catch(()=>{}),SF8(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),q2$(),G.teardown(),zZ1(null),K71(null),F71(null),qB1(null),nO1(null)};let E=new Z1;if(E.use("*",mO1({enabled:(F0)=>Mo(F0,"debug")==="1"})),E.use("*",sg0),E.use("/*",HH8({origin:(F0,G0)=>dE8(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("*",PE8());E.use("*",async(F0,G0)=>{if(await G0(),xs(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 VF5(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 $h0.collect(),P0=IF5.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(!SF5.has(G0))return F0.json({error:`Unknown queue: ${G0}`},404);let[P0,z0]=await Promise.all([rB.listQueuedWorkflows({queueName:G0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),rB.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",rj8),E.route("/api/_reports",Ww8),E.route("/api/_stripe",jT1),E.route("/api/_github",Fw8({taskBoard:()=>l,contextFactory:()=>b})),E.route("/api/_git",go);let T={db:Z.db,encryptionKey:B0().encryptionKey};E.route("/api/_jira",zw8(T)),E.route("/api/_jira",Dw8(T)),E.route("/report",Xw8($.clientDir)),E.route("/api/auth/custom",bH8),E.all("/api/auth/admin/*",wF8),E.all("/api/auth/*",async(F0)=>{return await B4.handler(F0.req.raw)});let z=NW8();z.use("/.well-known/oauth-protected-resource/mcp/:connectionId",_70),z.use("/mcp/:connectionId/.well-known/oauth-protected-resource",_70),E.route("/",z),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",L70),E.route("/",jW8()),E.use("/oauth-proxy/:connectionId/*",_70),E.all("/oauth-proxy/:connectionId/*",uE8);let A=async(F0)=>{let P0=await _F5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",_70),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let R=async(F0)=>{let P0=await vF5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",R);let f=UH8({ttlMs:120000}),S=await UK8({db:Z.db,auth:B4,encryption:{key:B0().encryptionKey},observability:{tracer:jj,meter:G$},modelListCache:W,providerKeyCache:K,memberRoleCache:f});_Y.set(S),d1$({db:Z.db,baseUrl:N5()}),NK8({db:Z.db}),OK8({db:Z.db}),lK8({db:Z.db}),oK8({db:Z.db}),ww8({db:Z.db,encryptionKey:B0().encryptionKey}),o$8({db:Z.db}),ZH8({db:Z.db}),M88({db:Z.db});let V=pw(Z.db),v=new j00(Z.db),b=wE8({db:Z.db});gL1({storage:V,studioContextFactory:b,orgContextFactory:(F0)=>gJ(Z.db,F0),systemDatabaseUrl:V10(B0().databaseUrl,B0().databasePgSsl)}),zL1({systemDatabaseUrl:V10(B0().databaseUrl,B0().databasePgSsl),studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:I6}}),LL1({dispatchRunFn:a58,studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:I6}});let h=new mc(Z.db),l=new DW(Z.db),d=new V3(Z.db),W0=new gT1(l,b,d);if(B0().taskBoardReviewSweeperEnabled){W0.start();let F0=T2;T2=async()=>{await F0?.(),W0.dispose()}}HE8({automations:V,taskBoard:l,fire:ZH,systemDatabaseUrl:V10(B0().databaseUrl,B0().databasePgSsl),settleMs:B0().boardTransitionSettleSeconds*1000}),X88(UE8),E98({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let F0=U?.getConnection();return F0?await lE8.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(Rg0(I6,G0,F0,P0),P0)await qt(l,F0,G0,d);return P0},markRunRequiresAction:async(F0,G0)=>{let P0=await h.requiresActionIfInProgress(F0,G0);return Rg0(I6,G0,F0,P0),P0},markRunFailed:async(F0,G0,P0,z0)=>{let j1=await h.markRunFailed(F0,G0,P0,z0);if(Rg0(I6,G0,F0,j1),j1)await qt(l,F0,G0,d);return j1},clearSynthesizedError:async(F0,G0)=>{await h.messageParts().replaceMessageParts(F0,mz(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);I6.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:j1})=>{c1.capture({distinctId:P0,event:"chat_message_failed",groups:{organization:G0},properties:{organization_id:G0,thread_id:F0,transport:"projector",error_category:j1,error_message:z0}})},purgeRun:async(F0)=>{F.purge(F0)}}),z58({studioContextFactory:b,systemDatabaseUrl:V10(B0().databaseUrl,B0().databasePgSsl),streamBuffer:F}),OE8(),i1$(),DK8(),wK8(),mK8(),rK8(),Pw8(),NE8(),$88(),YH8(),V88(),Nw8();let I0=async(F0,G0,P0)=>{let z0=await V.findById(F0,G0);if(!z0)throw Error("Automation not found");return mL1({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(),XD()];for(let F0 of U0)Ig0(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(tg0(F0.req.path))return G0();let P0={measure:async(j1,b$)=>{HH(F0,j1);try{return await b$()}finally{AW(F0,j1)}}},z0=await _Y.create(F0.req.raw,{timings:P0});z0.automationRunner=I0,F0.set("studioContext",z0);try{await G0()}finally{let j1=z0.pendingRevalidations;if(j1.length>0)Promise.race([Promise.allSettled(j1),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(cE8(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("/",mf0()),E.route("/api/org-sso",t),E.get("/api/tools/management",(F0)=>{return F0.json({tools:A00,grouped:OT()})}),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),j1=F0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),b$=j1?`${j1}://${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}=(yE8(),fg0(fE8));F0(E,r)}let $0=new Z1;$0.use("*",BU({mountPath:"/mcp"})),$0.route("/",ib0()),E.route("/mcp",$0);let X0=new Z1;X0.use("*",BU({mountPath:"/mcp/self"})),X0.route("/",fy0()),E.route("/mcp/self",X0);let h0=new Z1;h0.use("*",BU({mountPath:"/mcp"})),h0.route("/",tb0()),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=yF8({cancelBroadcast:H,streamBuffer:F,runRegistry:D});E.route("/api",C0),E.route("/api",Rw8);let H1=new Z1;H1.use("*",BU({mountPath:"/api"})),H1.route("/",uy0()),E.route("/api",H1),E.route("/api",pj8);let c0=new Z1;c0.use("*",BU({mountPath:"/api"})),c0.route("/",ly0({tokenStorage:v,automationEventDispatcher:J0})),E.route("/api",c0);let j0=new w00(Z.db),E0=new Z1;E0.use("*",BU({mountPath:"/api"})),E0.route("/",of0()),E.route("/api",E0),E.route("/api/deco-sites",aF8());let n0=new Z1;n0.use("*",BU({mountPath:"/api/deco-sites"})),n0.route("/",rf0()),E.route("/api/deco-sites",n0),E.route(uf0,EF8()),E.route(yD8,uD8()),E.route("/api/_editor-resolve",tj8()),E.route(yH8,gH8()),E.route(bf0,eH8());let O1=B0(),o0=O1.elevenlabsApiKey?new Lg0({apiKey:O1.elevenlabsApiKey,model:O1.elevenlabsVoiceModel,conversationModel:O1.elevenlabsConversationModel,voiceId:O1.elevenlabsVoiceId}):null,b0={openai:O1.openaiLiveApiKey?new HT1({apiKey:O1.openaiLiveApiKey,voice:O1.openaiLiveVoice}):null,elevenlabs:o0?new KT1(o0,()=>U?.getConnection()??null):null},d0=new DT1({adapter:o0,conversationAdapters:b0,defaults:O1,secret:mE8(O1),getConnection:()=>U?.getConnection()??null}),i0=Pj8({voiceSessions:d0,kvStorage:j0,runRegistry:D,streamBuffer:F,sseHub:I6,cancelBroadcast:H,tokenStorage:v,automationEventDispatcher:J0,mountDevAssets:_K(),mcpAuth:r,oauthProxyHandler:uE8,watchHandler:pE8,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(hF8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([I6.stop(),T2?Promise.resolve(T2()).finally(()=>{T2=null}):Promise.resolve()]),U)await U.drain().catch((F0)=>console.error("[shutdown] NATS drain error:",F0));console.log("[shutdown] Flushing telemetry..."),await pJ().catch((F0)=>console.error("[shutdown] Telemetry flush error:",F0)),console.log("[shutdown] Closing database..."),await rK$(Z).catch((F0)=>console.error("[shutdown] Database close error:",F0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await rB.registerQueue(G3,{partitionQueue:!0,concurrency:xL1,minPollingIntervalMs:fL1}),await rB.registerQueue(gW,{partitionQueue:!0,concurrency:EL1,priorityEnabled:!0}),await rB.registerQueue(QD,{workerConcurrency:B0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await rB.registerQueue(YD,{workerConcurrency:B0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await rB.registerQueue(Oj,{partitionQueue:!0,concurrency:P58}),await rB.registerQueue(I2,R88),await rB.registerQueue(k2),await Iz1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((F0)=>rB.deleteQueue(F0))),await yL1(Z.pool),_N$().catch((F0)=>{console.error("[studio-pack-backfill] failed:",F0)}),_d(Z.db).catch((F0)=>{console.error("[automations] built-in seed failed:",F0)}),p1$().catch((F0)=>{console.error("[org-fs] public-sets boot sync kick failed:",F0)})}})}var lE8,gE8=5000,T2=null,uE8=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=fE1(await W.json());if(!K)K=H.origin;let N=await O70(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=OW8(D);if(O)return O;let j=new URL(D),w=new URL($.req.url);if(j.search=w.search,Y==="authorize"){let v=j.searchParams.get("redirect_uri");if(v){let b=B0().baseUrl??w.origin;try{if(!iE8(new URL(v),b))return $.json({error:"invalid_request",error_description:"redirect_uri is not allowed"},400)}catch{return $.json({error:"invalid_request",error_description:"redirect_uri is malformed"},400)}j.searchParams.set("redirect_uri",v)}if(j.searchParams.has("resource"))j.searchParams.set("resource",U);if(JH8(G.connection_url))j.searchParams.set("auto_personal","true"),j.searchParams.set("force_new","true");return $.redirect(j.toString(),302)}let E={Accept:$.req.header("Accept")||"application/json"},P=$.req.header("Content-Type");if(P)E["Content-Type"]=P;let T=$.req.header("Authorization");if(T)E.Authorization=T;let z,A=null,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(j.toString(),{method:$.req.method,headers:E,body:z,duplex:"half",redirect:"manual"}),S=new Headers,V=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[v,b]of f.headers.entries())if(!V.includes(v.toLowerCase()))S.set(v,b);if(Y==="token"&&f.ok){let v=await f.text();try{let b=JSON.parse(v);if(typeof b.access_token==="string"&&b.access_token){let h=typeof b.expires_in==="number"?new Date(Date.now()+b.expires_in*1000):null,l=null;try{l=await K2(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 a5(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})},pE8=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&&(!kB(Y)||!await CB(Z)))return $.json({error:"forbidden"},403);let W=G?i_0:Y;if(G)qO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return Jj($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:Y,typePatterns:J,connectedAt:new Date().toISOString()})}),!I6.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(()=>{I6.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),I6.remove(W,K)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),I6.remove(W,K),N()})})})},IF5,SF5,_F5=()=>CF5(B4),vF5=()=>kF5(B4);var tE8=L(()=>{n$();l1();n1$();LK8();EK8();dK8();aK8();sZ0();YB1();XH8();c90();K9();ui();q8();W8();Cf0();FH8();dO1();dK();mN();sP1();I3();v6();Q6();Yz1();hH8();$F8();Kz1();PF8();jz1();Rz1();Mz1();vK();j70();Vz1();uF8();_f0();zj8();Mj8();Vj8();Sj8();lj8();Sz1();pb0();dZ0();nj8();ob0();HA1();oj8();WA1();aj8();Jw8();Kw8();Hw8();Uw8();Bw8();Lw8();Aw8();IT1();yz1();Mw8();KA1();YA1();mQ0();cw8();LT1();AJ();AB0();Z40();MB1();o80();r80();oO1();mw8();iw8();Az1();aw8();gv0();ew8();ea();z00();TO();l5();rE1();XE8();BE8();LG();hz();jE8();cF0();lT1();uW();kz1();zO();BL1();cF0();qZ0();O00();Z01();EE8();nw();zE8();Qs();sP1();jt();ft();sv0();lE8=_(_H(),1);IF5=new MF5,SF5=new Set([G3,gW,QD,YD,Oj,I2])});var aE8={};O6(aE8,{resolveClientDir:()=>lF5,resolveAssetPathWithTraversalCheck:()=>rE8,isPathWithinDirectory:()=>sE8,createAssetHandler:()=>cF5});import{resolve as kQ0,dirname as xF5,join as fF5,extname as yF5,basename as gF5,sep as oE8}from"path";function hF5($,Z){if($===Z||gF5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${oE8}assets${oE8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function sE8($,Z){let Q=kQ0(Z),Y=kQ0($);return Y===Q||Y.startsWith(Q+"/")}function rE8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=kQ0(Z,Q);if(!sE8(Y,Z))return null;return Y}function lF5($,Z="../client"){let Q=new URL($),Y=xF5(Q.pathname);return kQ0(Y,Z)}function cF5($={}){let{env:Z="production",clientDir:Q=uF5,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=rE8({requestPath:W,clientDir:Q});if(!K)return null;let H=fF5(K,"index.html"),F=kQ0(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(yF5(K))?[H,F]:[];for(let D of[K,...B])try{let O=Bun.file(D);if(await O.exists())return new Response(O,{headers:hF5(D,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var uF5="./dist/client";var eE8=()=>{};var $P8={};O6($P8,{tryUpgradePreviewWs:()=>oF5,tryHandlePreviewHttp:()=>tF5,previewWebSocketHandler:()=>sF5,parsePreviewBaseDomain:()=>nF5,isPreviewWsData:()=>kg0,extractHandleFromHost:()=>pT1});function iF5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function pF5(){return new Response(dF5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function nF5($){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 pT1($,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 tF5($,Z){let Q=pT1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let Y=await Z.getRunner();if(!Y)return SQ0(503,"preview proxy not configured");let X=await Y.proxyPreviewRequest(Q,$);if(X.headers.get(Rn)&&iF5($))return pF5();return X.headers.delete(Rn),X}function SQ0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function kg0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function oF5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=pT1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let X=await Q.getRunner();if(!X)return SQ0(503,"preview proxy not configured");let J=await X.resolvePreviewUpstreamUrl(Y);if(!J)return SQ0(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return SQ0(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 SQ0(426,"upgrade failed");return}function CQ0($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var mF5=256,dF5='<!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>',sF5;var ZP8=L(()=>{I50();sF5={open($){let Z=$.data;if(!kg0(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)}`),CQ0($,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)=>{CQ0($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{CQ0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!kg0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=mF5){CQ0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!kg0(Z))return;CQ0($,Z,1000,"")}}});n$();var Jq1="14";function Gq1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Jq1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}n$();import EP8 from"pg";var Wq1=8314027461559302n,PP8=600000,zP8=500;async function Kq1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=PP8}=$,X=$.log??((K)=>console.log(K)),J=new EP8.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",[Wq1.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$(zP8)}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)",[Wq1.toString()])}catch{}await J.end().catch(()=>{})}}l1();ug0();v6();function Ez8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Yh0($,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 dq1(){let $=Ez8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Yh0($,"--cpu-prof-dir")??process.cwd(),name:Yh0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Yh0($,"--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.'}))}Gh0();var pQ0;function eq1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=_2();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(()=>{}),pQ0=setInterval(()=>void Z().catch(()=>{}),$),pQ0.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(pQ0)clearInterval(pQ0)}}import*as Az8 from"bun:jsc";var{startSamplingProfiler:Tz8,samplingProfilerStackTraces:qz8}=Az8;function $R1(){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{Tz8()}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=qz8()?.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 ZR1(){dq1();let $=[eq1(),aq1(),$R1()];return()=>{for(let Z of $)Z()}}import{existsSync as XU5}from"fs";var fW=B0();lq1();var{DBOS:_Q0,DBOSClient:rF5}=await import("@dbos-inc/dbos-sdk");function aT1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var aF5=[G3,gW,QD,YD,Oj,I2,k2],eF5=fW.dispatchRole==="worker"?aF5:fW.dispatchRole==="api"?[]:void 0;_Q0.setConfig(Gq1({systemDatabaseUrl:aT1(fW.databaseUrl,fW.databasePgSsl),poolSize:fW.dbosPoolSize,executorID:fW.podName,listenQueues:eF5}));var{createApp:$U5}=await Promise.resolve().then(() => (tE8(),nE8)),{isServerPath:ZU5}=await Promise.resolve().then(() => (mQ0(),qq1)),{createAssetHandler:QU5,resolveClientDir:GP8}=await Promise.resolve().then(() => (eE8(),aE8)),YU5=fW.port,QP8=GP8(import.meta.url,"../client"),WP8=XU5(QP8)?QP8:GP8(import.meta.url,"../dist/client"),JU5=QU5({clientDir:WP8,isServerPath:ZU5}),GU5={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function WU5($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(GU5))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:KU5,tryHandlePreviewHttp:HU5,tryUpgradePreviewWs:FU5,previewWebSocketHandler:nT1,isPreviewWsData:tT1}=await Promise.resolve().then(() => (ZP8(),$P8)),{getOrInitSharedRunner:KP8}=await Promise.resolve().then(() => (IX(),Nn$)),HP8=KU5(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),YP8={baseDomain:HP8??"",getRunner:KP8};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())KP8().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var Cg0=await $U5({clientDir:WP8}),oT1=process.env.DBOS_CONDUCTOR_KEY?.trim(),XP8=process.env.DBOS_CONDUCTOR_URL?.trim();await Kq1({databaseUrl:aT1(fW.databaseUrl,fW.databasePgSsl)},()=>_Q0.launch({...oT1?{conductorKey:oT1}:{},...oT1&&XP8?{conductorURL:XP8}:{}}));console.log(`[dbos] application version: ${_Q0.applicationVersion}`);var sT1=5,rT1=0;await F8(async()=>{rT1++;try{return await Cg0.initDbos()}catch($){let Z=rT1>=sT1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${rT1}/${sT1} failed, ${Z}`,$),$}},{maxAttempts:sT1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});var UU5=Bun.serve({idleTimeout:0,port:YU5,hostname:"0.0.0.0",fetch:async($,Z)=>{if(HP8){let Y=await FU5($,Z,YP8);if(Y===void 0)return;if(Y)return Y;let X=await HU5($,YP8);if(X)return X}let Q=await JU5($);if(Q)return WU5(Q);return Cg0.fetch($,{server:Z})},websocket:{open($){if(tT1($.data))nT1.open($)},message($,Z){if(tT1($.data))nT1.message($,Z)},close($){if(tT1($.data))nT1.close($)}},development:!1}),NU5=ZR1();if(fW.localMode)Promise.resolve().then(() => (sh(),Sv0)).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(() => (sh(),Sv0));Z()}catch{}});var JP8=!1;async function BU5($){let Z;try{Z=await rF5.create({systemDatabaseUrl:aT1(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 Sg0($){if(JP8)return;JP8=!0,console.log(`
4489
4489
  [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{NU5(),Cg0.markShuttingDown();let J=Hq1(fW.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await J$(J),await UU5.stop(!0);let G=_Q0.executorID;await _Q0.shutdown(),await BU5(G),await Cg0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>Sg0("SIGTERM"));process.on("SIGINT",()=>Sg0("SIGINT"));process.on("SIGHUP",()=>Sg0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),Sg0("uncaughtException")});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.505.0",
3
+ "version": "4.505.1",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import{c,j as s,a0 as u}from"./index-DD3jMnD8.js";import{C as f}from"./index-CTXm_AQX.js";import{a as x}from"./thread-route-9ORs8Bvm.js";import{u as g}from"./use-task-metadata-jn6CC5eM.js";import{AppViewContent as h}from"./project-app-view-ChYxUD4g.js";import"./use-mobile-DKjyaKEb.js";import"./use-app-takeover-CdMQoosN.js";import"./sheet-DpEU8sEu.js";import"./tooltip-Czt_UbWN.js";import"./index-D_ppSX5g.js";import"./use-project-native-view-presence-U-43iX-0.js";import"./use-panel-navigate-D3SkcGQU.js";import"./use-project-scope-0lcDsf5q.js";import"./repository-binding-CHF_oBGX.js";import"./use-mcp-client-DMsSTA8g.js";import"./auth-DYpVJTi6.js";import"./thread-intent-CDcQO3Gb.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-lmapFB_N.js";import"./task-board-Drym1VGl.js";import"./schema-msyWsNEX.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-C2gZQhnt.js";import"./use-organization-settings-wCfTRg-2.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-MD5OrAoo.js";import"./AlertCircle-DydWhBUR.js";import"./Tool01-BlSQo18i.js";import"./ArrowUp-DpRxn4K3.js";import"./ArrowLeft-lM5tIj9y.js";import"./LinkBroken01-C5cWFtQq.js";import"./ShoppingBag01-4IcurZUz.js";import"./ZoomOut-BRLVgQbx.js";import"./Building02-CCJS0_vK.js";import"./CheckCircle-CwCxlegG.js";import"./ChevronUp-BFa66EpK.js";import"./ChevronSelectorVertical-DbaTjzBx.js";import"./UserSquare-Ag2h6fjB.js";import"./Copy01-taXYCEBD.js";import"./CreditCard01-ClQuCnzR.js";import"./DotsVertical-Cmi5H2jc.js";import"./Image01-B2cuVR7o.js";import"./Globe04-BuQjDmeg.js";import"./SwitchHorizontal01-BjaFUETy.js";import"./Key01-Cyl6HajB.js";import"./Link01-DzC6ocz4.js";import"./Monitor01-Bb5ZlrLS.js";import"./Sun-wFVY28gS.js";import"./Play-D32AXFrK.js";import"./Plus-BLUUzBOk.js";import"./SearchMd-B_qlK90t.js";import"./Trash01-COQdVdde.js";import"./Upload01-NWVVb23Y.js";import"./User01-1G5fScIG.js";import"./Users01-CTT2kFNN.js";import"./XClose-Bw63kXIL.js";import"./toolbar-icon-button-Ba65Z_g5.js";import"./shell-layout-r2grUF3c.js";import"./avatar-gla6h0ms.js";import"./use-clock-tick-C292qv9P.js";import"./command-BsY8EENg.js";import"./index-DUGwIFiv.js";import"./integration-icon-8xJy_m0U.js";import"./project-icon-voOUfH8Y.js";import"./new-project-dialog-tcOep_vf.js";import"./label-QcEtv8aS.js";import"./repository-import-picker-CbW5OIUw.js";import"./use-navigate-to-agent-7KiT7YFW.js";import"./repository-picker-z7ZWmH9V.js";import"./useInfiniteQuery-H7SIgIJk.js";import"./infiniteQueryObserver-DN3ugQJJ.js";import"./collection-search-BjRRO8AD.js";import"./use-debounced-value-qDOtci8p.js";import"./required-auth-layout-Brpu-Um7.js";import"./autosend-DhzpX2qh.js";import"./use-org-sso-4foNymAx.js";import"./resizable-Cp8Fei2Z.js";import"./icon-button-pY1Ev_Zs.js";import"./tool-namespace-BLZ5kDEc.js";import"./use-mcp-tools-D3I_Pb2L.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-DOTIYm4V.js";import"./types-BxhF8ASs.js";import"./chat-context-C0Wb4MFf.js";import"./use-decopilot-events-DUuvv1Wb.js";import"./use-ai-providers-Bx12ndn_.js";import"./use-chat-navigation-CObcn40t.js";import"./location-BjlyegC2.js";import"./task-route-Cy6tBirf.js";import"./task-key-BCHdFiOO.js";import"./core.esm-B0kDFHOB.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-BBlyVxmJ.js";import"./companions-core-DzyeM-yJ.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-ByTYKy_L.js";import"./form-BV3E3DRr.js";import"./provision-repo-scoped-github-connection-lckxpDHD.js";import"./useQueries-BWjYSwuK.js";import"./authenticate-and-persist-oauth-DirDXL13.js";import"./mcp-oauth-tY0goV8V.js";import"./mcp-oauth-o1bjrgf5.js";import"./track-DnM0LaQd.js";import"./extract-connection-data-B2cCu4Y0.js";import"./connection-D2g-M5HU.js";import"./url-slug-SM3_9Cya.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-DD3jMnD8.js";import{C as j}from"./index-CTXm_AQX.js";import{F as v,H as S}from"./file-share-button-ClxhzVmh.js";import{u as k,b as y,e as _}from"./use-org-fs-CNn8RNRH.js";import{S as w}from"./settings-tab-DWTiloa5.js";import{b as M}from"./thread-route-9ORs8Bvm.js";import"./use-mobile-DKjyaKEb.js";import"./use-app-takeover-CdMQoosN.js";import"./sheet-DpEU8sEu.js";import"./tooltip-Czt_UbWN.js";import"./index-D_ppSX5g.js";import"./use-project-native-view-presence-U-43iX-0.js";import"./use-panel-navigate-D3SkcGQU.js";import"./use-project-scope-0lcDsf5q.js";import"./repository-binding-CHF_oBGX.js";import"./use-mcp-client-DMsSTA8g.js";import"./auth-DYpVJTi6.js";import"./thread-intent-CDcQO3Gb.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-lmapFB_N.js";import"./task-board-Drym1VGl.js";import"./schema-msyWsNEX.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-C2gZQhnt.js";import"./use-organization-settings-wCfTRg-2.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-MD5OrAoo.js";import"./AlertCircle-DydWhBUR.js";import"./Tool01-BlSQo18i.js";import"./ArrowUp-DpRxn4K3.js";import"./ArrowLeft-lM5tIj9y.js";import"./LinkBroken01-C5cWFtQq.js";import"./ShoppingBag01-4IcurZUz.js";import"./ZoomOut-BRLVgQbx.js";import"./Building02-CCJS0_vK.js";import"./CheckCircle-CwCxlegG.js";import"./ChevronUp-BFa66EpK.js";import"./ChevronSelectorVertical-DbaTjzBx.js";import"./UserSquare-Ag2h6fjB.js";import"./Copy01-taXYCEBD.js";import"./CreditCard01-ClQuCnzR.js";import"./DotsVertical-Cmi5H2jc.js";import"./Image01-B2cuVR7o.js";import"./Globe04-BuQjDmeg.js";import"./SwitchHorizontal01-BjaFUETy.js";import"./Key01-Cyl6HajB.js";import"./Link01-DzC6ocz4.js";import"./Monitor01-Bb5ZlrLS.js";import"./Sun-wFVY28gS.js";import"./Play-D32AXFrK.js";import"./Plus-BLUUzBOk.js";import"./SearchMd-B_qlK90t.js";import"./Trash01-COQdVdde.js";import"./Upload01-NWVVb23Y.js";import"./User01-1G5fScIG.js";import"./Users01-CTT2kFNN.js";import"./XClose-Bw63kXIL.js";import"./toolbar-icon-button-Ba65Z_g5.js";import"./shell-layout-r2grUF3c.js";import"./avatar-gla6h0ms.js";import"./use-clock-tick-C292qv9P.js";import"./command-BsY8EENg.js";import"./index-DUGwIFiv.js";import"./integration-icon-8xJy_m0U.js";import"./project-icon-voOUfH8Y.js";import"./new-project-dialog-tcOep_vf.js";import"./label-QcEtv8aS.js";import"./repository-import-picker-CbW5OIUw.js";import"./use-navigate-to-agent-7KiT7YFW.js";import"./repository-picker-z7ZWmH9V.js";import"./useInfiniteQuery-H7SIgIJk.js";import"./infiniteQueryObserver-DN3ugQJJ.js";import"./collection-search-BjRRO8AD.js";import"./use-debounced-value-qDOtci8p.js";import"./required-auth-layout-Brpu-Um7.js";import"./autosend-DhzpX2qh.js";import"./use-org-sso-4foNymAx.js";import"./resizable-Cp8Fei2Z.js";import"./icon-button-pY1Ev_Zs.js";import"./popover-qHcjuSU0.js";import"./extract-connection-data-B2cCu4Y0.js";import"./metadata-D72DunRR.js";import"./connection-D2g-M5HU.js";import"./url-slug-SM3_9Cya.js";import"./chat-context-C0Wb4MFf.js";import"./use-decopilot-events-DUuvv1Wb.js";import"./use-ai-providers-Bx12ndn_.js";import"./use-chat-navigation-CObcn40t.js";import"./location-BjlyegC2.js";import"./build-improve-prompt-doc-o9aBywB1.js";import"./empty-state-ChicBK_6.js";import"./use-date-fns-locale-yLQ-TMcV.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-tY0goV8V.js";import"./mcp-oauth-o1bjrgf5.js";import"./alert-dialog-Czq8smrs.js";import"./textarea-C6sVZPZU.js";import"./use-connection-CuPFUNAB.js";import"./use-debounced-autosave-DIicIxua.js";import"./add-connection-dialog-M4AoaiFN.js";import"./connection-card-xYydZgZe.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-_oUDG6Bh.js";import"./form-BV3E3DRr.js";import"./select-CA6Xf89b.js";import"./index-BdQq_4o_.js";import"./schema-w5h_hx-N.js";import"./connection-form-helpers-Cyf4ui7a.js";import"./authenticate-and-persist-oauth-DirDXL13.js";import"./collection-tabs-Lz0rqrLq.js";import"./badge-5B6T9ERD.js";import"./use-infinite-scroll-BopOdy-8.js";import"./useSuspenseInfiniteQuery-DU-0dJfJ.js";import"./file-type-icon-CwmbBd4_.js";import"./checkbox-BrfO0AS7.js";import"./search-input-hbrzDCe3.js";import"./use-mcp-auth-status-6tcyVYNh.js";import"./types-BxhF8ASs.js";import"./use-mcp-tools-D3I_Pb2L.js";import"./use-mcp-prompts-ffN2Lmsy.js";import"./utils-CVEq3hMx.js";import"./switch-bAUD40Nw.js";import"./scroll-area-CQBF_dZT.js";import"./optimistic-project-sidebar-views-DvcOFOaq.js";import"./format-time-CAj8AQXM.js";import"./use-copy-qbqELrsr.js";import"./virtual-mcp-BnS4EEBx.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BbRclMvG.js";import"./use-secrets-DYpJRFbR.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-DD3jMnD8.js";import{C as a}from"./index-CTXm_AQX.js";import{L as n}from"./library-tab-YpZyRn2Y.js";import{u as c}from"./use-ensure-project-folder-9wv1x2P7.js";import{u}from"./use-project-scope-0lcDsf5q.js";import{p as l}from"./location-BjlyegC2.js";import"./use-mobile-DKjyaKEb.js";import"./use-app-takeover-CdMQoosN.js";import"./sheet-DpEU8sEu.js";import"./tooltip-Czt_UbWN.js";import"./index-D_ppSX5g.js";import"./use-project-native-view-presence-U-43iX-0.js";import"./thread-route-9ORs8Bvm.js";import"./use-panel-navigate-D3SkcGQU.js";import"./thread-intent-CDcQO3Gb.js";import"./use-mcp-client-DMsSTA8g.js";import"./auth-DYpVJTi6.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-lmapFB_N.js";import"./task-board-Drym1VGl.js";import"./schema-msyWsNEX.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-C2gZQhnt.js";import"./use-organization-settings-wCfTRg-2.js";import"./repository-binding-CHF_oBGX.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-MD5OrAoo.js";import"./AlertCircle-DydWhBUR.js";import"./Tool01-BlSQo18i.js";import"./ArrowUp-DpRxn4K3.js";import"./ArrowLeft-lM5tIj9y.js";import"./LinkBroken01-C5cWFtQq.js";import"./ShoppingBag01-4IcurZUz.js";import"./ZoomOut-BRLVgQbx.js";import"./Building02-CCJS0_vK.js";import"./CheckCircle-CwCxlegG.js";import"./ChevronUp-BFa66EpK.js";import"./ChevronSelectorVertical-DbaTjzBx.js";import"./UserSquare-Ag2h6fjB.js";import"./Copy01-taXYCEBD.js";import"./CreditCard01-ClQuCnzR.js";import"./DotsVertical-Cmi5H2jc.js";import"./Image01-B2cuVR7o.js";import"./Globe04-BuQjDmeg.js";import"./SwitchHorizontal01-BjaFUETy.js";import"./Key01-Cyl6HajB.js";import"./Link01-DzC6ocz4.js";import"./Monitor01-Bb5ZlrLS.js";import"./Sun-wFVY28gS.js";import"./Play-D32AXFrK.js";import"./Plus-BLUUzBOk.js";import"./SearchMd-B_qlK90t.js";import"./Trash01-COQdVdde.js";import"./Upload01-NWVVb23Y.js";import"./User01-1G5fScIG.js";import"./Users01-CTT2kFNN.js";import"./XClose-Bw63kXIL.js";import"./toolbar-icon-button-Ba65Z_g5.js";import"./shell-layout-r2grUF3c.js";import"./avatar-gla6h0ms.js";import"./use-clock-tick-C292qv9P.js";import"./command-BsY8EENg.js";import"./index-DUGwIFiv.js";import"./integration-icon-8xJy_m0U.js";import"./project-icon-voOUfH8Y.js";import"./new-project-dialog-tcOep_vf.js";import"./label-QcEtv8aS.js";import"./repository-import-picker-CbW5OIUw.js";import"./use-navigate-to-agent-7KiT7YFW.js";import"./repository-picker-z7ZWmH9V.js";import"./useInfiniteQuery-H7SIgIJk.js";import"./infiniteQueryObserver-DN3ugQJJ.js";import"./collection-search-BjRRO8AD.js";import"./use-debounced-value-qDOtci8p.js";import"./required-auth-layout-Brpu-Um7.js";import"./autosend-DhzpX2qh.js";import"./use-org-sso-4foNymAx.js";import"./resizable-Cp8Fei2Z.js";import"./icon-button-pY1Ev_Zs.js";import"./search-toggle-BLr8pbVK.js";import"./alert-dialog-Czq8smrs.js";import"./use-chat-navigation-CObcn40t.js";import"./use-org-fs-CNn8RNRH.js";import"./use-org-repo-syncs-1RenD2IQ.js";import"./textarea-C6sVZPZU.js";import"./markdown-CjmuCvzH.js";import"./use-copy-qbqELrsr.js";import"./file-share-button-ClxhzVmh.js";import"./popover-qHcjuSU0.js";import"./preview-dialog-Btn-CE6_.js";import"./preview-content-D-tC-1-n.js";import"./file-preview-8ODF6efV.js";import"./utils-2VqdkNDi.js";import"./editor-D5lw6JVB.js";import"./file-type-icon-CwmbBd4_.js";import"./folder-icon-DWUMoHSG.js";import"./empty-state-BPyWcx0u.js";import"./view-mode-toggle-C-WM4OcL.js";import"./format-time-CAj8AQXM.js";import"./differenceInSeconds-C3x8sHUj.js";import"./table-_LvNwq3m.js";import"./use-members-rkoWXTCD.js";import"./use-org-auth-client-qG9llE_H.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-DD3jMnD8.js";import{C as c}from"./index-CTXm_AQX.js";import{L as l}from"./preview-panel-BOdq-R-d.js";import{a as u}from"./use-panel-navigate-D3SkcGQU.js";import{S as f}from"./settings-tab-DWTiloa5.js";import{b as h}from"./thread-route-9ORs8Bvm.js";import"./use-mobile-DKjyaKEb.js";import"./use-app-takeover-CdMQoosN.js";import"./sheet-DpEU8sEu.js";import"./tooltip-Czt_UbWN.js";import"./index-D_ppSX5g.js";import"./use-project-native-view-presence-U-43iX-0.js";import"./thread-intent-CDcQO3Gb.js";import"./use-mcp-client-DMsSTA8g.js";import"./auth-DYpVJTi6.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-lmapFB_N.js";import"./task-board-Drym1VGl.js";import"./schema-msyWsNEX.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-C2gZQhnt.js";import"./use-organization-settings-wCfTRg-2.js";import"./repository-binding-CHF_oBGX.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-MD5OrAoo.js";import"./AlertCircle-DydWhBUR.js";import"./Tool01-BlSQo18i.js";import"./ArrowUp-DpRxn4K3.js";import"./ArrowLeft-lM5tIj9y.js";import"./LinkBroken01-C5cWFtQq.js";import"./ShoppingBag01-4IcurZUz.js";import"./ZoomOut-BRLVgQbx.js";import"./Building02-CCJS0_vK.js";import"./CheckCircle-CwCxlegG.js";import"./ChevronUp-BFa66EpK.js";import"./ChevronSelectorVertical-DbaTjzBx.js";import"./UserSquare-Ag2h6fjB.js";import"./Copy01-taXYCEBD.js";import"./CreditCard01-ClQuCnzR.js";import"./DotsVertical-Cmi5H2jc.js";import"./Image01-B2cuVR7o.js";import"./Globe04-BuQjDmeg.js";import"./SwitchHorizontal01-BjaFUETy.js";import"./Key01-Cyl6HajB.js";import"./Link01-DzC6ocz4.js";import"./Monitor01-Bb5ZlrLS.js";import"./Sun-wFVY28gS.js";import"./Play-D32AXFrK.js";import"./Plus-BLUUzBOk.js";import"./SearchMd-B_qlK90t.js";import"./Trash01-COQdVdde.js";import"./Upload01-NWVVb23Y.js";import"./User01-1G5fScIG.js";import"./Users01-CTT2kFNN.js";import"./XClose-Bw63kXIL.js";import"./toolbar-icon-button-Ba65Z_g5.js";import"./shell-layout-r2grUF3c.js";import"./avatar-gla6h0ms.js";import"./use-project-scope-0lcDsf5q.js";import"./use-clock-tick-C292qv9P.js";import"./command-BsY8EENg.js";import"./index-DUGwIFiv.js";import"./integration-icon-8xJy_m0U.js";import"./project-icon-voOUfH8Y.js";import"./new-project-dialog-tcOep_vf.js";import"./label-QcEtv8aS.js";import"./repository-import-picker-CbW5OIUw.js";import"./use-navigate-to-agent-7KiT7YFW.js";import"./repository-picker-z7ZWmH9V.js";import"./useInfiniteQuery-H7SIgIJk.js";import"./infiniteQueryObserver-DN3ugQJJ.js";import"./collection-search-BjRRO8AD.js";import"./use-debounced-value-qDOtci8p.js";import"./required-auth-layout-Brpu-Um7.js";import"./autosend-DhzpX2qh.js";import"./use-org-sso-4foNymAx.js";import"./resizable-Cp8Fei2Z.js";import"./icon-button-pY1Ev_Zs.js";import"./preview-content-D-tC-1-n.js";import"./file-share-button-ClxhzVmh.js";import"./use-org-fs-CNn8RNRH.js";import"./popover-qHcjuSU0.js";import"./file-preview-8ODF6efV.js";import"./utils-2VqdkNDi.js";import"./editor-D5lw6JVB.js";import"./file-type-icon-CwmbBd4_.js";import"./markdown-CjmuCvzH.js";import"./use-copy-qbqELrsr.js";import"./location-BjlyegC2.js";import"./extract-connection-data-B2cCu4Y0.js";import"./metadata-D72DunRR.js";import"./connection-D2g-M5HU.js";import"./url-slug-SM3_9Cya.js";import"./chat-context-C0Wb4MFf.js";import"./use-decopilot-events-DUuvv1Wb.js";import"./use-ai-providers-Bx12ndn_.js";import"./use-chat-navigation-CObcn40t.js";import"./build-improve-prompt-doc-o9aBywB1.js";import"./empty-state-ChicBK_6.js";import"./use-date-fns-locale-yLQ-TMcV.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-tY0goV8V.js";import"./mcp-oauth-o1bjrgf5.js";import"./alert-dialog-Czq8smrs.js";import"./textarea-C6sVZPZU.js";import"./use-connection-CuPFUNAB.js";import"./use-debounced-autosave-DIicIxua.js";import"./add-connection-dialog-M4AoaiFN.js";import"./connection-card-xYydZgZe.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-_oUDG6Bh.js";import"./form-BV3E3DRr.js";import"./select-CA6Xf89b.js";import"./index-BdQq_4o_.js";import"./schema-w5h_hx-N.js";import"./connection-form-helpers-Cyf4ui7a.js";import"./authenticate-and-persist-oauth-DirDXL13.js";import"./collection-tabs-Lz0rqrLq.js";import"./badge-5B6T9ERD.js";import"./use-infinite-scroll-BopOdy-8.js";import"./useSuspenseInfiniteQuery-DU-0dJfJ.js";import"./checkbox-BrfO0AS7.js";import"./search-input-hbrzDCe3.js";import"./use-mcp-auth-status-6tcyVYNh.js";import"./types-BxhF8ASs.js";import"./use-mcp-tools-D3I_Pb2L.js";import"./use-mcp-prompts-ffN2Lmsy.js";import"./utils-CVEq3hMx.js";import"./switch-bAUD40Nw.js";import"./scroll-area-CQBF_dZT.js";import"./optimistic-project-sidebar-views-DvcOFOaq.js";import"./format-time-CAj8AQXM.js";import"./virtual-mcp-BnS4EEBx.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BbRclMvG.js";import"./use-secrets-DYpJRFbR.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-DD3jMnD8.js";import{C as p}from"./index-CTXm_AQX.js";import{S as e}from"./settings-tab-DWTiloa5.js";import{b as n}from"./thread-route-9ORs8Bvm.js";import"./use-mobile-DKjyaKEb.js";import"./use-app-takeover-CdMQoosN.js";import"./sheet-DpEU8sEu.js";import"./tooltip-Czt_UbWN.js";import"./index-D_ppSX5g.js";import"./use-project-native-view-presence-U-43iX-0.js";import"./use-panel-navigate-D3SkcGQU.js";import"./use-project-scope-0lcDsf5q.js";import"./repository-binding-CHF_oBGX.js";import"./use-mcp-client-DMsSTA8g.js";import"./auth-DYpVJTi6.js";import"./thread-intent-CDcQO3Gb.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-lmapFB_N.js";import"./task-board-Drym1VGl.js";import"./schema-msyWsNEX.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-C2gZQhnt.js";import"./use-organization-settings-wCfTRg-2.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-MD5OrAoo.js";import"./AlertCircle-DydWhBUR.js";import"./Tool01-BlSQo18i.js";import"./ArrowUp-DpRxn4K3.js";import"./ArrowLeft-lM5tIj9y.js";import"./LinkBroken01-C5cWFtQq.js";import"./ShoppingBag01-4IcurZUz.js";import"./ZoomOut-BRLVgQbx.js";import"./Building02-CCJS0_vK.js";import"./CheckCircle-CwCxlegG.js";import"./ChevronUp-BFa66EpK.js";import"./ChevronSelectorVertical-DbaTjzBx.js";import"./UserSquare-Ag2h6fjB.js";import"./Copy01-taXYCEBD.js";import"./CreditCard01-ClQuCnzR.js";import"./DotsVertical-Cmi5H2jc.js";import"./Image01-B2cuVR7o.js";import"./Globe04-BuQjDmeg.js";import"./SwitchHorizontal01-BjaFUETy.js";import"./Key01-Cyl6HajB.js";import"./Link01-DzC6ocz4.js";import"./Monitor01-Bb5ZlrLS.js";import"./Sun-wFVY28gS.js";import"./Play-D32AXFrK.js";import"./Plus-BLUUzBOk.js";import"./SearchMd-B_qlK90t.js";import"./Trash01-COQdVdde.js";import"./Upload01-NWVVb23Y.js";import"./User01-1G5fScIG.js";import"./Users01-CTT2kFNN.js";import"./XClose-Bw63kXIL.js";import"./toolbar-icon-button-Ba65Z_g5.js";import"./shell-layout-r2grUF3c.js";import"./avatar-gla6h0ms.js";import"./use-clock-tick-C292qv9P.js";import"./command-BsY8EENg.js";import"./index-DUGwIFiv.js";import"./integration-icon-8xJy_m0U.js";import"./project-icon-voOUfH8Y.js";import"./new-project-dialog-tcOep_vf.js";import"./label-QcEtv8aS.js";import"./repository-import-picker-CbW5OIUw.js";import"./use-navigate-to-agent-7KiT7YFW.js";import"./repository-picker-z7ZWmH9V.js";import"./useInfiniteQuery-H7SIgIJk.js";import"./infiniteQueryObserver-DN3ugQJJ.js";import"./collection-search-BjRRO8AD.js";import"./use-debounced-value-qDOtci8p.js";import"./required-auth-layout-Brpu-Um7.js";import"./autosend-DhzpX2qh.js";import"./use-org-sso-4foNymAx.js";import"./resizable-Cp8Fei2Z.js";import"./icon-button-pY1Ev_Zs.js";import"./extract-connection-data-B2cCu4Y0.js";import"./metadata-D72DunRR.js";import"./connection-D2g-M5HU.js";import"./url-slug-SM3_9Cya.js";import"./chat-context-C0Wb4MFf.js";import"./use-decopilot-events-DUuvv1Wb.js";import"./use-ai-providers-Bx12ndn_.js";import"./use-chat-navigation-CObcn40t.js";import"./location-BjlyegC2.js";import"./build-improve-prompt-doc-o9aBywB1.js";import"./empty-state-ChicBK_6.js";import"./use-date-fns-locale-yLQ-TMcV.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-tY0goV8V.js";import"./mcp-oauth-o1bjrgf5.js";import"./alert-dialog-Czq8smrs.js";import"./textarea-C6sVZPZU.js";import"./use-connection-CuPFUNAB.js";import"./use-debounced-autosave-DIicIxua.js";import"./add-connection-dialog-M4AoaiFN.js";import"./connection-card-xYydZgZe.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-_oUDG6Bh.js";import"./form-BV3E3DRr.js";import"./select-CA6Xf89b.js";import"./index-BdQq_4o_.js";import"./schema-w5h_hx-N.js";import"./connection-form-helpers-Cyf4ui7a.js";import"./authenticate-and-persist-oauth-DirDXL13.js";import"./collection-tabs-Lz0rqrLq.js";import"./badge-5B6T9ERD.js";import"./use-infinite-scroll-BopOdy-8.js";import"./useSuspenseInfiniteQuery-DU-0dJfJ.js";import"./file-type-icon-CwmbBd4_.js";import"./use-org-fs-CNn8RNRH.js";import"./checkbox-BrfO0AS7.js";import"./search-input-hbrzDCe3.js";import"./use-mcp-auth-status-6tcyVYNh.js";import"./types-BxhF8ASs.js";import"./use-mcp-tools-D3I_Pb2L.js";import"./use-mcp-prompts-ffN2Lmsy.js";import"./utils-CVEq3hMx.js";import"./switch-bAUD40Nw.js";import"./popover-qHcjuSU0.js";import"./scroll-area-CQBF_dZT.js";import"./optimistic-project-sidebar-views-DvcOFOaq.js";import"./format-time-CAj8AQXM.js";import"./use-copy-qbqELrsr.js";import"./virtual-mcp-BnS4EEBx.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BbRclMvG.js";import"./use-secrets-DYpJRFbR.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-3DkIV-h_.js","assets/index-DD3jMnD8.js","assets/index-s7bCSMKE.css","assets/agent-icon-MD5OrAoo.js","assets/AlertCircle-DydWhBUR.js","assets/Tool01-BlSQo18i.js","assets/ArrowUp-DpRxn4K3.js","assets/ArrowLeft-lM5tIj9y.js","assets/LinkBroken01-C5cWFtQq.js","assets/ShoppingBag01-4IcurZUz.js","assets/ZoomOut-BRLVgQbx.js","assets/Building02-CCJS0_vK.js","assets/CheckCircle-CwCxlegG.js","assets/ChevronUp-BFa66EpK.js","assets/ChevronSelectorVertical-DbaTjzBx.js","assets/UserSquare-Ag2h6fjB.js","assets/Copy01-taXYCEBD.js","assets/CreditCard01-ClQuCnzR.js","assets/DotsVertical-Cmi5H2jc.js","assets/Image01-B2cuVR7o.js","assets/Globe04-BuQjDmeg.js","assets/SwitchHorizontal01-BjaFUETy.js","assets/Key01-Cyl6HajB.js","assets/Link01-DzC6ocz4.js","assets/Monitor01-Bb5ZlrLS.js","assets/Sun-wFVY28gS.js","assets/Play-D32AXFrK.js","assets/Plus-BLUUzBOk.js","assets/SearchMd-B_qlK90t.js","assets/Trash01-COQdVdde.js","assets/Upload01-NWVVb23Y.js","assets/User01-1G5fScIG.js","assets/Users01-CTT2kFNN.js","assets/XClose-Bw63kXIL.js","assets/scroll-area-CQBF_dZT.js","assets/index-BdQq_4o_.js","assets/tooltip-Czt_UbWN.js","assets/index-D_ppSX5g.js","assets/chat-context-C0Wb4MFf.js","assets/use-panel-navigate-D3SkcGQU.js","assets/thread-route-9ORs8Bvm.js","assets/use-project-scope-0lcDsf5q.js","assets/repository-binding-CHF_oBGX.js","assets/use-mcp-client-DMsSTA8g.js","assets/auth-DYpVJTi6.js","assets/autosend-DhzpX2qh.js","assets/thread-intent-CDcQO3Gb.js","assets/delay-CnY5UFtP.js","assets/backoff-CrEUbyZT.js","assets/watch-sse-pool-lmapFB_N.js","assets/task-board-Drym1VGl.js","assets/schema-msyWsNEX.js","assets/slugify-CEUa2lfQ.js","assets/use-decopilot-events-DUuvv1Wb.js","assets/use-ai-providers-Bx12ndn_.js","assets/use-chat-navigation-CObcn40t.js","assets/location-BjlyegC2.js","assets/use-organization-settings-wCfTRg-2.js","assets/editor-D5lw6JVB.js","assets/shell-layout-r2grUF3c.js","assets/avatar-gla6h0ms.js","assets/use-clock-tick-C292qv9P.js","assets/command-BsY8EENg.js","assets/index-DUGwIFiv.js","assets/integration-icon-8xJy_m0U.js","assets/project-icon-voOUfH8Y.js","assets/new-project-dialog-tcOep_vf.js","assets/label-QcEtv8aS.js","assets/repository-import-picker-CbW5OIUw.js","assets/use-navigate-to-agent-7KiT7YFW.js","assets/repository-picker-z7ZWmH9V.js","assets/useInfiniteQuery-H7SIgIJk.js","assets/infiniteQueryObserver-DN3ugQJJ.js","assets/collection-search-BjRRO8AD.js","assets/use-debounced-value-qDOtci8p.js","assets/required-auth-layout-Brpu-Um7.js","assets/use-org-sso-4foNymAx.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-Czq8smrs.js","assets/context-menu-DnUdyxPl.js","assets/utils-2VqdkNDi.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-DD3jMnD8.js";import{A as v}from"./agent-view-guard-CVaMc8u1.js";import{F as E}from"./feature-gate-rJK-N6UP.js";import{c as S}from"./chat-context-C0Wb4MFf.js";import{E as P}from"./empty-state-ChicBK_6.js";import"./use-main-panel-tabs-DNEl-cqG.js";import"./use-project-native-view-presence-U-43iX-0.js";import"./thread-route-9ORs8Bvm.js";import"./use-panel-navigate-D3SkcGQU.js";import"./use-project-scope-0lcDsf5q.js";import"./repository-binding-CHF_oBGX.js";import"./use-mcp-client-DMsSTA8g.js";import"./auth-DYpVJTi6.js";import"./thread-intent-CDcQO3Gb.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-lmapFB_N.js";import"./task-board-Drym1VGl.js";import"./schema-msyWsNEX.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-C2gZQhnt.js";import"./use-organization-settings-wCfTRg-2.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-MD5OrAoo.js";import"./AlertCircle-DydWhBUR.js";import"./Tool01-BlSQo18i.js";import"./ArrowUp-DpRxn4K3.js";import"./ArrowLeft-lM5tIj9y.js";import"./LinkBroken01-C5cWFtQq.js";import"./ShoppingBag01-4IcurZUz.js";import"./ZoomOut-BRLVgQbx.js";import"./Building02-CCJS0_vK.js";import"./CheckCircle-CwCxlegG.js";import"./ChevronUp-BFa66EpK.js";import"./ChevronSelectorVertical-DbaTjzBx.js";import"./UserSquare-Ag2h6fjB.js";import"./Copy01-taXYCEBD.js";import"./CreditCard01-ClQuCnzR.js";import"./DotsVertical-Cmi5H2jc.js";import"./Image01-B2cuVR7o.js";import"./Globe04-BuQjDmeg.js";import"./SwitchHorizontal01-BjaFUETy.js";import"./Key01-Cyl6HajB.js";import"./Link01-DzC6ocz4.js";import"./Monitor01-Bb5ZlrLS.js";import"./Sun-wFVY28gS.js";import"./Play-D32AXFrK.js";import"./Plus-BLUUzBOk.js";import"./SearchMd-B_qlK90t.js";import"./Trash01-COQdVdde.js";import"./Upload01-NWVVb23Y.js";import"./User01-1G5fScIG.js";import"./Users01-CTT2kFNN.js";import"./XClose-Bw63kXIL.js";import"./use-connection-CuPFUNAB.js";import"./use-mcp-tools-D3I_Pb2L.js";import"./types-BxhF8ASs.js";import"./utils-CVEq3hMx.js";import"./index-CP_lXIID.js";import"./sandbox-url-D3mC8qhT.js";import"./tool-namespace-BLZ5kDEc.js";import"./tooltip-Czt_UbWN.js";import"./index-D_ppSX5g.js";import"./drawer-_oUDG6Bh.js";import"./collection-search-BjRRO8AD.js";import"./use-mobile-DKjyaKEb.js";import"./use-mcp-prompts-ffN2Lmsy.js";import"./usage-stats-BCJbY9qH.js";import"./form-BV3E3DRr.js";import"./label-QcEtv8aS.js";import"./markdown-CjmuCvzH.js";import"./use-copy-qbqELrsr.js";import"./location-BjlyegC2.js";import"./format-time-CAj8AQXM.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-decopilot-events-DUuvv1Wb.js";import"./input-D-82ZEvn.js";import"./icon-button-pY1Ev_Zs.js";import"./file-type-icon-CwmbBd4_.js";import"./use-chat-navigation-CObcn40t.js";import"./autosend-DhzpX2qh.js";import"./shell-layout-r2grUF3c.js";import"./avatar-gla6h0ms.js";import"./use-clock-tick-C292qv9P.js";import"./command-BsY8EENg.js";import"./index-DUGwIFiv.js";import"./integration-icon-8xJy_m0U.js";import"./project-icon-voOUfH8Y.js";import"./new-project-dialog-tcOep_vf.js";import"./repository-import-picker-CbW5OIUw.js";import"./use-navigate-to-agent-7KiT7YFW.js";import"./repository-picker-z7ZWmH9V.js";import"./useInfiniteQuery-H7SIgIJk.js";import"./infiniteQueryObserver-DN3ugQJJ.js";import"./use-debounced-value-qDOtci8p.js";import"./required-auth-layout-Brpu-Um7.js";import"./use-org-sso-4foNymAx.js";import"./chat-draft-B8EOLWmz.js";import"./select-CA6Xf89b.js";import"./index-BdQq_4o_.js";import"./tabs-CVRt1gsT.js";import"./use-deco-credits-CZiBpI1Z.js";import"./use-ai-providers-Bx12ndn_.js";import"./toggle-group-aS4D4pWB.js";import"./use-open-billing-url-CQyUaSGw.js";import"./index-2W02K1gN.js";import"./checkbox-BrfO0AS7.js";import"./ai-providers-logos-DD3qZ33J.js";import"./popover-qHcjuSU0.js";import"./input-DpLyWs62.js";import"./suggestion-vzrmAu6j.js";import"./use-org-fs-CNn8RNRH.js";import"./question-004-sINsf4GQ.js";import"./use-members-rkoWXTCD.js";import"./use-org-auth-client-qG9llE_H.js";import"./feature-paywall-DvPrxDxF.js";import"./plan-ladder-CHzPrqgq.js";import"./add-connection-dialog-M4AoaiFN.js";import"./extract-connection-data-B2cCu4Y0.js";import"./metadata-D72DunRR.js";import"./connection-D2g-M5HU.js";import"./url-slug-SM3_9Cya.js";import"./connection-card-xYydZgZe.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-C6sVZPZU.js";import"./schema-w5h_hx-N.js";import"./connection-form-helpers-Cyf4ui7a.js";import"./authenticate-and-persist-oauth-DirDXL13.js";import"./mcp-oauth-tY0goV8V.js";import"./mcp-oauth-o1bjrgf5.js";import"./collection-tabs-Lz0rqrLq.js";import"./badge-5B6T9ERD.js";import"./use-infinite-scroll-BopOdy-8.js";import"./useSuspenseInfiniteQuery-DU-0dJfJ.js";import"./use-task-board-events-CYiz72_p.js";import"./pair-BXzhmvOK.js";import"./collapsible-B-WgQIIJ.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-DOTIYm4V.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./sheet-DpEU8sEu.js";import"./use-thread-outputs-CPZ7dzCd.js";import"./resolve-tab-icon-CEjO0rXG.js";import"./use-task-metadata-jn6CC5eM.js";import"./preview-source-BsRLGWUP.js";import"./virtual-mcp-BnS4EEBx.js";const y=x.lazy(()=>g(()=>import("./file-explorer-3DkIV-h_.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};