decocms 4.509.2 → 4.509.3

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 (378) hide show
  1. package/dist/client/assets/{ActiveShapeUtils-DiW0_mPP.js → ActiveShapeUtils-DtLXlshH.js} +1 -1
  2. package/dist/client/assets/{AlertCircle-B_HiUL3V.js → AlertCircle-ByyMV8z4.js} +1 -1
  3. package/dist/client/assets/{AreaChart-DVIHlYx5.js → AreaChart-DYJHrVXY.js} +1 -1
  4. package/dist/client/assets/{ArrowLeft-CGlVoxui.js → ArrowLeft-B7ov3XoU.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-gZglv5wp.js → ArrowUp-2Q-gOJnz.js} +1 -1
  6. package/dist/client/assets/{BarChart-RAlZhcVu.js → BarChart-BiwoJnnV.js} +1 -1
  7. package/dist/client/assets/{Building02-DMZnZO99.js → Building02-CmtRhO0G.js} +1 -1
  8. package/dist/client/assets/{CategoricalChart-D5pvUnb4.js → CategoricalChart-CLdPPjJV.js} +1 -1
  9. package/dist/client/assets/{CheckCircle-DEEJUOvq.js → CheckCircle-DKtViH8O.js} +1 -1
  10. package/dist/client/assets/{ChevronSelectorVertical-butN_Pnw.js → ChevronSelectorVertical-DjgVwBdh.js} +1 -1
  11. package/dist/client/assets/{ChevronUp-Cb-JYgJS.js → ChevronUp-CHuiG_tq.js} +1 -1
  12. package/dist/client/assets/{Copy01-CRR-EuFi.js → Copy01-BlWxgj5B.js} +1 -1
  13. package/dist/client/assets/{CreditCard01-B1XIHK7B.js → CreditCard01-3zAhCFzG.js} +1 -1
  14. package/dist/client/assets/{DotsVertical-D1bAYhly.js → DotsVertical-6V6FEVSW.js} +1 -1
  15. package/dist/client/assets/{ErrorBarContext-37xA6mJ_.js → ErrorBarContext-Cc2CzNP-.js} +1 -1
  16. package/dist/client/assets/{Globe04-DSOOTZNm.js → Globe04-CI8I1Gwe.js} +1 -1
  17. package/dist/client/assets/{Image01-DCu3b5kU.js → Image01-hroAs9qW.js} +1 -1
  18. package/dist/client/assets/{Key01-BWZX0ddW.js → Key01-8uALgzMj.js} +1 -1
  19. package/dist/client/assets/{Link01-DyUd5OlZ.js → Link01-aPg6ShZB.js} +1 -1
  20. package/dist/client/assets/{LinkBroken01-CXNh4eyP.js → LinkBroken01-C_4nTMOI.js} +1 -1
  21. package/dist/client/assets/{Monitor01-BakIeQUF.js → Monitor01-1OfKF4CW.js} +1 -1
  22. package/dist/client/assets/{Play-Cow0cNbD.js → Play-CohR4fZe.js} +1 -1
  23. package/dist/client/assets/{Plus-BymkC_GC.js → Plus-BUjFiIqc.js} +1 -1
  24. package/dist/client/assets/{SearchMd-O4PYnwLm.js → SearchMd-TTFZLt1L.js} +1 -1
  25. package/dist/client/assets/{Sector-DWIGj-50.js → Sector-DJzh5UtO.js} +1 -1
  26. package/dist/client/assets/{ShoppingBag01-BZRikaTk.js → ShoppingBag01-QgB8HJ-H.js} +1 -1
  27. package/dist/client/assets/{Sun-DrrCSWyx.js → Sun-BVJ7_DlQ.js} +1 -1
  28. package/dist/client/assets/{SwitchHorizontal01-QJ8HpWxv.js → SwitchHorizontal01-B-_sQpur.js} +1 -1
  29. package/dist/client/assets/{Tool01-C_CKkVec.js → Tool01-B3xGrZcx.js} +1 -1
  30. package/dist/client/assets/{Trash01-CyUDLdm2.js → Trash01-Bqte2ybH.js} +1 -1
  31. package/dist/client/assets/{Upload01-DndYeCIj.js → Upload01-DpOKazHe.js} +1 -1
  32. package/dist/client/assets/{User01-Bk3qtSGw.js → User01-DG0AzMEa.js} +1 -1
  33. package/dist/client/assets/{UserSquare-BSP-qc9x.js → UserSquare-L7RjG_gi.js} +1 -1
  34. package/dist/client/assets/{Users01-CTggT7zQ.js → Users01-DUfDdOP5.js} +1 -1
  35. package/dist/client/assets/{XAxis-D1MK0252.js → XAxis-BBxQjNyc.js} +1 -1
  36. package/dist/client/assets/{XClose-D3hBIxOe.js → XClose-CVgPQng9.js} +1 -1
  37. package/dist/client/assets/{ZoomOut-Dg3QgYnY.js → ZoomOut-iLUy140p.js} +1 -1
  38. package/dist/client/assets/{access-gate-CwefArvr.js → access-gate-IAUi74sO.js} +1 -1
  39. package/dist/client/assets/{add-connection-dialog-m56a3mnH.js → add-connection-dialog-C3t5hwqK.js} +1 -1
  40. package/dist/client/assets/{agent-analytics-Db8TFrYP.js → agent-analytics-C-VZzimc.js} +1 -1
  41. package/dist/client/assets/agent-app-DDlarqj7.js +1 -0
  42. package/dist/client/assets/{agent-assets-WlJij-ig.js → agent-assets-BC2uFLzE.js} +1 -1
  43. package/dist/client/assets/{agent-automation-DMFv2amS.js → agent-automation-D5wLPPZI.js} +1 -1
  44. package/dist/client/assets/{agent-automations-BJuifIPT.js → agent-automations-D0kwUcJT.js} +1 -1
  45. package/dist/client/assets/{agent-connect-sources-PhME43D1.js → agent-connect-sources-DGsBzuws.js} +1 -1
  46. package/dist/client/assets/agent-deck-CnFjg0e9.js +1 -0
  47. package/dist/client/assets/{agent-e2e-IjTbnMuW.js → agent-e2e-DNAc5szM.js} +1 -1
  48. package/dist/client/assets/{agent-experiments-ytOilEGx.js → agent-experiments-Dy88QDyf.js} +1 -1
  49. package/dist/client/assets/{agent-file-DZpK6ASx.js → agent-file-CCdFicwK.js} +1 -1
  50. package/dist/client/assets/{agent-hosting-CMw8ghEQ.js → agent-hosting-j3Ar_634.js} +1 -1
  51. package/dist/client/assets/{agent-icon-BBR2iDYh.js → agent-icon-C91FfBBe.js} +1 -1
  52. package/dist/client/assets/agent-library-DKgV_0o3.js +1 -0
  53. package/dist/client/assets/agent-library-file-BYMFIaHd.js +1 -0
  54. package/dist/client/assets/{agent-monitor-CNzYwzZv.js → agent-monitor-B58DWD7s.js} +1 -1
  55. package/dist/client/assets/{agent-overview-BwNhS-78.js → agent-overview-w56KfySF.js} +1 -1
  56. package/dist/client/assets/{agent-releases-BnMtShKH.js → agent-releases-Drq8RYfj.js} +1 -1
  57. package/dist/client/assets/agent-settings-Ch4xgy8R.js +1 -0
  58. package/dist/client/assets/{agent-site-editor-DdqMOZ74.js → agent-site-editor-CSiMo8XV.js} +1 -1
  59. package/dist/client/assets/agent-site-editor-code-gkJxYeh0.js +2 -0
  60. package/dist/client/assets/agent-site-editor-content-CAmL0S6m.js +1 -0
  61. package/dist/client/assets/agent-site-editor-preview-Bqn4wxlt.js +1 -0
  62. package/dist/client/assets/agent-view-3JBlX9eX.js +1 -0
  63. package/dist/client/assets/{agent-view-guard-B9q4njeN.js → agent-view-guard-B6OfdM90.js} +1 -1
  64. package/dist/client/assets/{agents-list-Cn16uYPx.js → agents-list-D2kaWNL5.js} +1 -1
  65. package/dist/client/assets/{ai-providers-BQy_O3GP.js → ai-providers-Dp1DyUn6.js} +1 -1
  66. package/dist/client/assets/{alert-DrUtYDkJ.js → alert-ChYYMquB.js} +1 -1
  67. package/dist/client/assets/{alert-dialog-CsMnazlX.js → alert-dialog-HacWCjKy.js} +1 -1
  68. package/dist/client/assets/{analytics-sections-CfsaP32W.js → analytics-sections-D0EihKes.js} +1 -1
  69. package/dist/client/assets/api-keys-DOzPaSaS.js +1 -0
  70. package/dist/client/assets/{api-keys-BprNuZz2.js → api-keys-N7mJwjrP.js} +1 -1
  71. package/dist/client/assets/{app-editor-Dc3XTSht.js → app-editor-B_8eIX-x.js} +1 -1
  72. package/dist/client/assets/{asset-utils-fB0ipt1O.js → asset-utils-CjIPp2UW.js} +1 -1
  73. package/dist/client/assets/{auth-BLd_oaZA.js → auth-C4CE--v3.js} +1 -1
  74. package/dist/client/assets/{auth-catchall-CL_pk-to.js → auth-catchall-BEta_neX.js} +1 -1
  75. package/dist/client/assets/{auth-entry-C_nh3VE5.js → auth-entry-CeGPl7lO.js} +1 -1
  76. package/dist/client/assets/{auth-split-layout-CVjJMSaz.js → auth-split-layout-Bkd1vYH-.js} +1 -1
  77. package/dist/client/assets/{authenticate-and-persist-oauth-BHPSufEQ.js → authenticate-and-persist-oauth-BJhtJOTX.js} +1 -1
  78. package/dist/client/assets/{automation-list-row-CK3Td7-_.js → automation-list-row-Q20OziYd.js} +1 -1
  79. package/dist/client/assets/{automation-runs-CqfPM2gn.js → automation-runs-CuTwaZp2.js} +1 -1
  80. package/dist/client/assets/{automations-BFr_umFL.js → automations-BVznZWw3.js} +1 -1
  81. package/dist/client/assets/{autosend-CMH8Nd3q.js → autosend-BkvuFZEb.js} +1 -1
  82. package/dist/client/assets/{avatar-DaqDyQT2.js → avatar-DLzA1zu3.js} +1 -1
  83. package/dist/client/assets/{badge-Cs8ttYS4.js → badge-4E53QkH4.js} +1 -1
  84. package/dist/client/assets/{block-document-SMDTJId-.js → block-document-D2r7e-bm.js} +1 -1
  85. package/dist/client/assets/{blocks-preview-workspace-context-BqrfTf1v.js → blocks-preview-workspace-context-Dy6cZkxs.js} +1 -1
  86. package/dist/client/assets/{blocks-tab-states-MymqMfo8.js → blocks-tab-states-DJQxo1jq.js} +3 -3
  87. package/dist/client/assets/{blog-schema-BOKkm5h2.js → blog-schema-CljnYp9T.js} +1 -1
  88. package/dist/client/assets/{board-analytics-1IHYJ_OM.js → board-analytics-C1FYSLMU.js} +1 -1
  89. package/dist/client/assets/{buckets-DJOlYK3e.js → buckets-P_mTDEoI.js} +1 -1
  90. package/dist/client/assets/{build-improve-prompt-doc-IMnqNYLL.js → build-improve-prompt-doc-DArFL4-Y.js} +1 -1
  91. package/dist/client/assets/{calendar-B734mlre.js → calendar-BcoxPp4e.js} +1 -1
  92. package/dist/client/assets/{capability-load-error-h2aqxH-J.js → capability-load-error-DNnhRuZW.js} +1 -1
  93. package/dist/client/assets/{category-editor-B2alT0tp.js → category-editor-BbaquVmC.js} +1 -1
  94. package/dist/client/assets/{chart-QJBBiY0u.js → chart-tTVu695Y.js} +1 -1
  95. package/dist/client/assets/{chat-context-CsSueqYK.js → chat-context-BZ7lkteP.js} +1 -1
  96. package/dist/client/assets/{chat-draft-5aNYHG8g.js → chat-draft-Ds07-nKV.js} +1 -1
  97. package/dist/client/assets/{checkbox-D1RvSoCC.js → checkbox-Bb-b-NIb.js} +1 -1
  98. package/dist/client/assets/{choose-editor-CyEQ8Q-S.js → choose-editor-BQnytyX7.js} +1 -1
  99. package/dist/client/assets/{cli-auth-success-BCsO4A9r.js → cli-auth-success-CglIVrPv.js} +1 -1
  100. package/dist/client/assets/{client-icons-BaP-T1v6.js → client-icons-Dswor-xr.js} +1 -1
  101. package/dist/client/assets/cms-settings-editor-DsuHNbgS.js +1 -0
  102. package/dist/client/assets/{collapsible-DmX-ngKI.js → collapsible-C2R-ydNh.js} +1 -1
  103. package/dist/client/assets/{collection-detail-BZ0u6mlt.js → collection-detail-C3pmwSmW.js} +1 -1
  104. package/dist/client/assets/{collection-display-button-C01k_lwT.js → collection-display-button-BDX1PQiK.js} +1 -1
  105. package/dist/client/assets/{collection-search-DBI1dP1G.js → collection-search-DJrO4wXC.js} +1 -1
  106. package/dist/client/assets/{collection-table-wrapper-H9NaWjzQ.js → collection-table-wrapper-53DkWqEU.js} +1 -1
  107. package/dist/client/assets/{collection-tabs-DOWtwIA2.js → collection-tabs-7IgPVPl8.js} +1 -1
  108. package/dist/client/assets/{column-rules-zfwf7Mwg.js → column-rules-Bd4x7R0i.js} +1 -1
  109. package/dist/client/assets/{combobox-CZYl1SW8.js → combobox-DA6dvikQ.js} +1 -1
  110. package/dist/client/assets/{command-DHGvWDa5.js → command-QWj-8KWD.js} +1 -1
  111. package/dist/client/assets/{companion-mcps-section-C60JYhxi.js → companion-mcps-section-DmmZ2N9E.js} +1 -1
  112. package/dist/client/assets/{config-CTQocw0M.js → config-BZ10S09D.js} +1 -1
  113. package/dist/client/assets/{connect-DaLc511O.js → connect-D_ElW9ZT.js} +1 -1
  114. package/dist/client/assets/{connect-layout-D__87xSa.js → connect-layout-ChS8FDmO.js} +1 -1
  115. package/dist/client/assets/{connection-CyGwGe0c.js → connection-DClorJeH.js} +1 -1
  116. package/dist/client/assets/{connection-card-C5Hd83Lq.js → connection-card-B7JROunw.js} +1 -1
  117. package/dist/client/assets/{connection-detail-CiOsCWZG.js → connection-detail-W0OixA-N.js} +1 -1
  118. package/dist/client/assets/{connection-form-helpers-DWTE_E_W.js → connection-form-helpers-RoE3y69I.js} +1 -1
  119. package/dist/client/assets/{connections-BGPU_XQO.js → connections-BynfWXrg.js} +1 -1
  120. package/dist/client/assets/{content-tab-UEob6yi0.js → content-tab-Cjji28ND.js} +3 -3
  121. package/dist/client/assets/{context-BPz6yFBa.js → context-Bvk8htA1.js} +1 -1
  122. package/dist/client/assets/{context-menu-BQv9Yg_3.js → context-menu-DMK-Tbiq.js} +1 -1
  123. package/dist/client/assets/{core.esm-g5_mpFZB.js → core.esm-pHKXO6aB.js} +1 -1
  124. package/dist/client/assets/{create-organization-dialog-B_arDF7k.js → create-organization-dialog-CtQCEEel.js} +1 -1
  125. package/dist/client/assets/{daily-pulse-DBK9-DUX.js → daily-pulse-SPEEEs-I.js} +1 -1
  126. package/dist/client/assets/{discover-BqXowkZh.js → discover-CoQHsQRW.js} +1 -1
  127. package/dist/client/assets/{domain-settings-D0g7ONpv.js → domain-settings-DUqzSp8t.js} +1 -1
  128. package/dist/client/assets/{drawer-CbCdchWH.js → drawer-mOroU0SK.js} +1 -1
  129. package/dist/client/assets/{editor-sIXknvpq.js → editor-C60YXP8M.js} +1 -1
  130. package/dist/client/assets/{editor-classes-CbwoD1vF.js → editor-classes-P5frXKDW.js} +1 -1
  131. package/dist/client/assets/{empty-state-BCUme0Ms.js → empty-state-BnBJ7qP0.js} +1 -1
  132. package/dist/client/assets/{empty-state-CPp6Z3BQ.js → empty-state-D9pimpN0.js} +1 -1
  133. package/dist/client/assets/{extract-connection-data-B5vLAPIK.js → extract-connection-data-CpMZmRT0.js} +1 -1
  134. package/dist/client/assets/{feature-gate-DiP6HaTH.js → feature-gate-DfVhUdI6.js} +1 -1
  135. package/dist/client/assets/{feature-paywall-DAnZt43s.js → feature-paywall-BjSBWl_s.js} +1 -1
  136. package/dist/client/assets/{file-explorer-J-Ren9bv.js → file-explorer-DhucOz-0.js} +1 -1
  137. package/dist/client/assets/{file-preview-Ci3jlzfL.js → file-preview-N_CgAyBu.js} +1 -1
  138. package/dist/client/assets/{file-share-button-DbVp0fLm.js → file-share-button-BSwxJPnS.js} +1 -1
  139. package/dist/client/assets/{file-type-icon-FwTaRFNS.js → file-type-icon-BAPRBWq_.js} +1 -1
  140. package/dist/client/assets/flat-project-BBfVFS6g.js +1 -0
  141. package/dist/client/assets/{folder-icon-C0blADE0.js → folder-icon-0WFjKifd.js} +1 -1
  142. package/dist/client/assets/{form-DME968hC.js → form-CjRuOowU.js} +1 -1
  143. package/dist/client/assets/{general-BGY19JOX.js → general-C1YiBjVK.js} +1 -1
  144. package/dist/client/assets/{home-DGvRLGSh.js → home-imPEReEU.js} +1 -1
  145. package/dist/client/assets/{hosted-publish-feedback-RQvX0uVW.js → hosted-publish-feedback-BKIEE9sR.js} +1 -1
  146. package/dist/client/assets/{icon-button-GVvv_TGw.js → icon-button-DsGhuUrY.js} +1 -1
  147. package/dist/client/assets/{index-Mj5Dlp7-.js → index-BC_9d5lw.js} +1 -1
  148. package/dist/client/assets/{index-it1G5uen.js → index-BW29DNeT.js} +1 -1
  149. package/dist/client/assets/{index-DuouRhoR.js → index-BdrtU2hC.js} +1 -1
  150. package/dist/client/assets/{index-C8v36X2j.js → index-BhhqTijv.js} +1 -1
  151. package/dist/client/assets/{index-K8d-kObh.js → index-BwkhUNgb.js} +1 -1
  152. package/dist/client/assets/{index-h1iuYBxr.js → index-CCurxxIO.js} +1 -1
  153. package/dist/client/assets/{index-aq6Oc2bx.js → index-CTNKvjxp.js} +3 -3
  154. package/dist/client/assets/{index-BTOWNqi1.js → index-CjPmHEh2.js} +1 -1
  155. package/dist/client/assets/{index-GWPEHtx5.js → index-CjlL1DBL.js} +1 -1
  156. package/dist/client/assets/{index-DEfxB_BX.js → index-CqjbXTJR.js} +1 -1
  157. package/dist/client/assets/{index-BtOEdX6x.js → index-D2ROOTS1.js} +1 -1
  158. package/dist/client/assets/{index-CTjWv7p_.js → index-D5xro32B.js} +2 -2
  159. package/dist/client/assets/{index-CFXQHfl1.js → index-DWhU1gwI.js} +1 -1
  160. package/dist/client/assets/{index-Ddu_rSLm.js → index-DscxF1_n.js} +1 -1
  161. package/dist/client/assets/{index-1TA39jIZ.js → index-DuPn1w33.js} +1 -1
  162. package/dist/client/assets/{index-redirect-B81WZTDn.js → index-redirect-Bz5F0rLR.js} +1 -1
  163. package/dist/client/assets/{infiniteQueryObserver-CYFeTV4A.js → infiniteQueryObserver-DgjdzIx3.js} +1 -1
  164. package/dist/client/assets/{infra-billing-C4d5ZCzo.js → infra-billing-Cc56XhnA.js} +1 -1
  165. package/dist/client/assets/{input-D4vnZBvQ.js → input-C1NO9oGZ.js} +1 -1
  166. package/dist/client/assets/{input-lzFp2uRd.js → input-D5XG5kyJ.js} +3 -3
  167. package/dist/client/assets/{integration-icon-4vqLdvgx.js → integration-icon-qFaCuhIs.js} +1 -1
  168. package/dist/client/assets/{jira-icon-Cp75OvG2.js → jira-icon-5a6pVDJQ.js} +1 -1
  169. package/dist/client/assets/{label-BBFj7oje.js → label-Dmirn8IM.js} +1 -1
  170. package/dist/client/assets/{layout-Hr0ljnsI.js → layout-C-Q7V13u.js} +1 -1
  171. package/dist/client/assets/{legacy-agents-deep-CVl-Ax69.js → legacy-agents-deep-BEOEyF2h.js} +1 -1
  172. package/dist/client/assets/{legacy-main-redirect-DyWbHT7y.js → legacy-main-redirect-BIgGTIOv.js} +1 -1
  173. package/dist/client/assets/library-Bm-PaJEn.js +1 -0
  174. package/dist/client/assets/{library-tab-CR7Dg6gz.js → library-tab-CZKtarm-.js} +1 -1
  175. package/dist/client/assets/{login-CPIzj5NK.js → login-DiNxln58.js} +1 -1
  176. package/dist/client/assets/{markdown-3pW1-LsL.js → markdown-TYSzcgQa.js} +1 -1
  177. package/dist/client/assets/{mcp-app-renderer-B6D8q_ye.js → mcp-app-renderer-BzkQ7Yos.js} +1 -1
  178. package/dist/client/assets/{mcp-oauth-DpgBvC0Y.js → mcp-oauth-CjqmyLxR.js} +1 -1
  179. package/dist/client/assets/{mcp-oauth-Cu679GrT.js → mcp-oauth-DJ3FgdJX.js} +1 -1
  180. package/dist/client/assets/{members-CmNQ_ouB.js → members-CU5lGPsU.js} +1 -1
  181. package/dist/client/assets/{memory-B9agWmFf.js → memory-Dk9WMmxT.js} +1 -1
  182. package/dist/client/assets/{mini-report-page-CUhNSn7g.js → mini-report-page-UXjXUQd4.js} +1 -1
  183. package/dist/client/assets/{mock-board-DonPs6jb.js → mock-board-BfbDOOzF.js} +1 -1
  184. package/dist/client/assets/{monaco-editor-CXsl4AAs.js → monaco-editor-D9bZfK-x.js} +1 -1
  185. package/dist/client/assets/{monitoring-stats-row-CLjBYZbH.js → monitoring-stats-row-BTFr5YuA.js} +1 -1
  186. package/dist/client/assets/{multi-select-DvK1FnJz.js → multi-select-DsrCYlRX.js} +1 -1
  187. package/dist/client/assets/{mustache-CJkQZMoK.js → mustache-BV2_pv9b.js} +1 -1
  188. package/dist/client/assets/{new-project-dialog-BmQvk0AN.js → new-project-dialog-C37_x6FS.js} +1 -1
  189. package/dist/client/assets/{oauth-callback-CPHBPDQq.js → oauth-callback-CkP5duTO.js} +1 -1
  190. package/dist/client/assets/{oauth-callback-ai-provider-3QEfhvZs.js → oauth-callback-ai-provider-CloV2LzL.js} +1 -1
  191. package/dist/client/assets/{onboarding-CWf-6NbS.js → onboarding-BYrIW8C_.js} +1 -1
  192. package/dist/client/assets/{openai-conversation-ByV4ghuu.js → openai-conversation-DXafJ60T.js} +1 -1
  193. package/dist/client/assets/{optimistic-project-sidebar-views-Bz-512-j.js → optimistic-project-sidebar-views-Yui1OtuH.js} +1 -1
  194. package/dist/client/assets/{order-monitor-day-DzHY7Cn_.js → order-monitor-day-DTy6jsag.js} +1 -1
  195. package/dist/client/assets/{organization-choice-v4TuGYHb.js → organization-choice-D41cl4Hu.js} +1 -1
  196. package/dist/client/assets/{orgs-DGKj6_LT.js → orgs-BNCtPVUW.js} +1 -1
  197. package/dist/client/assets/{page-seo-form-CFpyiiXA.js → page-seo-form-CpvMwHl7.js} +1 -1
  198. package/dist/client/assets/{pair-BXmEezUH.js → pair-B--f05P-.js} +1 -1
  199. package/dist/client/assets/{plan-ladder-B_i6laf_.js → plan-ladder-DhXvFobe.js} +1 -1
  200. package/dist/client/assets/{popover-BmmpRE-t.js → popover-BTQFBo3e.js} +1 -1
  201. package/dist/client/assets/{post-calendar-DlBNZ17J.js → post-calendar-Beb2V7Xt.js} +1 -1
  202. package/dist/client/assets/{post-editor-BvLtCAu7.js → post-editor-qB9Wf9RM.js} +1 -1
  203. package/dist/client/assets/{preview-content-fQPpQUgh.js → preview-content-B4H-rqKq.js} +1 -1
  204. package/dist/client/assets/{preview-dialog-BCRc3vmH.js → preview-dialog-W2dRyo1p.js} +1 -1
  205. package/dist/client/assets/{preview-panel-SLsWXX4e.js → preview-panel-CS8vPGHk.js} +1 -1
  206. package/dist/client/assets/{preview-tab-SU67nT3n.js → preview-tab-sGx4ChpI.js} +3 -3
  207. package/dist/client/assets/{product-picker-dialog-DTQdQKpc.js → product-picker-dialog-yM3esKM2.js} +1 -1
  208. package/dist/client/assets/{profile-b9cN0vAR.js → profile-ZlNaN41w.js} +1 -1
  209. package/dist/client/assets/{project-app-view-TZcg1ec8.js → project-app-view-BtoPLiYI.js} +1 -1
  210. package/dist/client/assets/{project-feed-BUya4JEL.js → project-feed-DD3fYEy8.js} +1 -1
  211. package/dist/client/assets/{project-icon-D91bSjz0.js → project-icon-DtjLKxLO.js} +1 -1
  212. package/dist/client/assets/project-reports-CY5hnGru.js +1 -0
  213. package/dist/client/assets/project-tasks-ORcX0vc9.js +1 -0
  214. package/dist/client/assets/{projects-D8i01mKz.js → projects-CI9d70av.js} +1 -1
  215. package/dist/client/assets/{projects-empty-state-CRHzdUYP.js → projects-empty-state-Bri5Fd8e.js} +1 -1
  216. package/dist/client/assets/{prompts-BeyEOvjI.js → prompts-RPUVTJ1m.js} +1 -1
  217. package/dist/client/assets/record-editor-CxxgRIJ8.js +1 -0
  218. package/dist/client/assets/{redirect-editor-JgjnkYFM.js → redirect-editor-DPTLE1Ne.js} +1 -1
  219. package/dist/client/assets/{reports-DT1J-Acd.js → reports-MbbdyAXW.js} +1 -1
  220. package/dist/client/assets/{reports-onboarding-BoXkEzRl.js → reports-onboarding-Tx8qT1uR.js} +1 -1
  221. package/dist/client/assets/{reports-tab-DgIfkBe4.js → reports-tab-BCqWBskG.js} +2 -2
  222. package/dist/client/assets/reports-yMHayRay.js +1 -0
  223. package/dist/client/assets/{repositories-ar0T7V-k.js → repositories-DZ2Krb6N.js} +1 -1
  224. package/dist/client/assets/{repository-binding-CUKMFYlr.js → repository-binding-0VnUP6XI.js} +1 -1
  225. package/dist/client/assets/{repository-import-picker-B0XPae0i.js → repository-import-picker-D-QEfEHN.js} +1 -1
  226. package/dist/client/assets/{repository-picker-tkfqc0HP.js → repository-picker-CXBvKF4B.js} +1 -1
  227. package/dist/client/assets/{require-capability-BzqXI72X.js → require-capability-DwP1I4zq.js} +1 -1
  228. package/dist/client/assets/{required-auth-layout-DzBlEUGS.js → required-auth-layout-B2yzAj8I.js} +1 -1
  229. package/dist/client/assets/{reset-password-C1mSW7Y4.js → reset-password-CSIunBlO.js} +1 -1
  230. package/dist/client/assets/{resizable-BzRss8B3.js → resizable-DmTZ1BDJ.js} +1 -1
  231. package/dist/client/assets/{resolve-tab-icon-Cb6tb2UW.js → resolve-tab-icon-mGEYXWg8.js} +1 -1
  232. package/dist/client/assets/{review-settings-BZJdFSel.js → review-settings-D5G0I2Qv.js} +1 -1
  233. package/dist/client/assets/{roles-D3ZJTNkW.js → roles-DaGeYoO8.js} +1 -1
  234. package/dist/client/assets/{route-CG_Pe0_v.js → route-CeP4Dcs-.js} +1 -1
  235. package/dist/client/assets/route-D_M9W9TJ.js +1 -0
  236. package/dist/client/assets/{route-jAx8SxCp.js → route-drOrv5AW.js} +1 -1
  237. package/dist/client/assets/{sandbox-lifecycle-context-DLDe72ju.js → sandbox-lifecycle-context-DgiTVuuk.js} +1 -1
  238. package/dist/client/assets/{schema-DUmP7mXK.js → schema-30yjcWrJ.js} +1 -1
  239. package/dist/client/assets/{schema-ipxqGklP.js → schema-Bq-mtQhU.js} +1 -1
  240. package/dist/client/assets/{scroll-area-DHYVnI-I.js → scroll-area-C-MT4cPN.js} +1 -1
  241. package/dist/client/assets/{search-input-CvsfrEx_.js → search-input-Bbu1m4dh.js} +1 -1
  242. package/dist/client/assets/{search-toggle-DnQksH6F.js → search-toggle-EGha3JTD.js} +1 -1
  243. package/dist/client/assets/{secret-ciphertext-Co44n0dG.js → secret-ciphertext-B5PioBWl.js} +1 -1
  244. package/dist/client/assets/{secret-picker-eVGbRH7c.js → secret-picker-lPPjfx5T.js} +1 -1
  245. package/dist/client/assets/{secrets-CjwpYTND.js → secrets-DUe0JRId.js} +1 -1
  246. package/dist/client/assets/{sections-editor-BWve_EdV.js → sections-editor-1gdycPMX.js} +1 -1
  247. package/dist/client/assets/{select-JsVR4bkR.js → select-CMuCfdBS.js} +1 -1
  248. package/dist/client/assets/{select-model-C0lXdjww.js → select-model-CWX03iVe.js} +1 -1
  249. package/dist/client/assets/{seo-editor-CFP0UHWx.js → seo-editor-DvWFjJy9.js} +1 -1
  250. package/dist/client/assets/{separator-CcSlUA8B.js → separator-XseAcEst.js} +1 -1
  251. package/dist/client/assets/{settings-tab-DstxhXJl.js → settings-tab-BAwouijB.js} +1 -1
  252. package/dist/client/assets/{sheet-CcsrBrXF.js → sheet-Jn2L6v-l.js} +1 -1
  253. package/dist/client/assets/{shell-layout-CaDbhp-Y.js → shell-layout-CjXWSAJJ.js} +1 -1
  254. package/dist/client/assets/site-editor-6HHOnIgt.js +1 -0
  255. package/dist/client/assets/{site-editor-toast-JA1oO0--.js → site-editor-toast-ByeIy37F.js} +1 -1
  256. package/dist/client/assets/{skills-DK6qYuy5.js → skills-C1K0zpS3.js} +1 -1
  257. package/dist/client/assets/{slider-D6WP7zVz.js → slider--mPub07A.js} +1 -1
  258. package/dist/client/assets/{sortable.esm-_RsAHU55.js → sortable.esm-DwnifFsa.js} +1 -1
  259. package/dist/client/assets/{sso-CHakNb6a.js → sso-CLCRq8s8.js} +1 -1
  260. package/dist/client/assets/{suggestion-COCn65DM.js → suggestion-Bw3cbzDN.js} +1 -1
  261. package/dist/client/assets/{switch-BdySpUUX.js → switch-BOmHoW_Z.js} +1 -1
  262. package/dist/client/assets/{symbol-IuOv85-4.js → symbol-BuG3iVl-.js} +1 -1
  263. package/dist/client/assets/{synced-repos-hurKmQtt.js → synced-repos-DWcJnQIw.js} +1 -1
  264. package/dist/client/assets/{tab-icon-glyph-DPJDzl6i.js → tab-icon-glyph-IxDwo9V2.js} +1 -1
  265. package/dist/client/assets/{table-DDi3Cf_t.js → table-j3dhBu6m.js} +1 -1
  266. package/dist/client/assets/{tabs-y2ekO2bu.js → tabs-DUkNN2Pu.js} +1 -1
  267. package/dist/client/assets/{task-board-zMTndQaY.js → task-board-CdvH5UST.js} +1 -1
  268. package/dist/client/assets/{task-route-Da2kAtHB.js → task-route-COw6EGuD.js} +1 -1
  269. package/dist/client/assets/{task-status-Bms2bUVK.js → task-status-D4ygpI01.js} +1 -1
  270. package/dist/client/assets/taskboard-analytics-DXBUC2yE.js +1 -0
  271. package/dist/client/assets/{tasks-Cue0PIs1.js → tasks-DTdJgXqG.js} +1 -1
  272. package/dist/client/assets/tasks-FWCTOrQs.js +1 -0
  273. package/dist/client/assets/{textarea-DjEn7s--.js → textarea-j_hthK8n.js} +1 -1
  274. package/dist/client/assets/{thread-analytics-C0dP1bD-.js → thread-analytics-D6hcrxdP.js} +1 -1
  275. package/dist/client/assets/{thread-intent-CeVBLvFY.js → thread-intent-CfW2El1W.js} +1 -1
  276. package/dist/client/assets/{thread-route-D3q_rVP7.js → thread-route-25kKbqA7.js} +1 -1
  277. package/dist/client/assets/{thread-route-DFNs7FnK.js → thread-route-CWb8XiSK.js} +1 -1
  278. package/dist/client/assets/{thread-sheet-body-Dd9ZM-zN.js → thread-sheet-body-BmQGKgGH.js} +1 -1
  279. package/dist/client/assets/{time-range-picker-xfO0EX4l.js → time-range-picker-D9agi9n7.js} +1 -1
  280. package/dist/client/assets/{toggle-group-AfU8RYJj.js → toggle-group-BkgTdeXX.js} +1 -1
  281. package/dist/client/assets/{tool-namespace-CGmm1XsL.js → tool-namespace-BD0zyZjm.js} +1 -1
  282. package/dist/client/assets/{toolbar-icon-button-Bjp-WCB6.js → toolbar-icon-button-Bs9q4p80.js} +1 -1
  283. package/dist/client/assets/{tooltip-DqmGcdDJ.js → tooltip-DN1vaJef.js} +1 -1
  284. package/dist/client/assets/{tooltipContext-bYw7jO6q.js → tooltipContext-CaFolK_b.js} +1 -1
  285. package/dist/client/assets/{track-ZwUxBtRx.js → track-BMunjhUC.js} +1 -1
  286. package/dist/client/assets/{types-Bn1OkBUZ.js → types-BZx2J0g3.js} +1 -1
  287. package/dist/client/assets/{url-slug-DTtfghpx.js → url-slug-DlxFyNVR.js} +1 -1
  288. package/dist/client/assets/{usage-stats-BQf3WnUV.js → usage-stats-Ih3O-m2S.js} +1 -1
  289. package/dist/client/assets/{use-ai-providers-CghFth1V.js → use-ai-providers-B9mzjOmt.js} +1 -1
  290. package/dist/client/assets/{use-app-takeover-DSm0hM-q.js → use-app-takeover-DqmrnLr2.js} +1 -1
  291. package/dist/client/assets/{use-automations-CA7c0rVa.js → use-automations-QCmR_9Ez.js} +1 -1
  292. package/dist/client/assets/{use-autosave-BnJRqW8T.js → use-autosave-CtcLHcLJ.js} +1 -1
  293. package/dist/client/assets/{use-chat-navigation-DTChKwGZ.js → use-chat-navigation-DJF_PFfo.js} +1 -1
  294. package/dist/client/assets/{use-clock-tick-L_13B5gz.js → use-clock-tick-BMDWnjzV.js} +1 -1
  295. package/dist/client/assets/{use-connect-companion-ChMBUAJw.js → use-connect-companion-CrKhvPgB.js} +1 -1
  296. package/dist/client/assets/{use-connection-CEirJr2M.js → use-connection-D41WPmbR.js} +1 -1
  297. package/dist/client/assets/{use-content-sync-tVIUxZEE.js → use-content-sync-DdfwmNU1.js} +1 -1
  298. package/dist/client/assets/{use-copy-BRcd4PJW.js → use-copy-BsbxUaN-.js} +1 -1
  299. package/dist/client/assets/{use-create-virtual-mcp-CYacSk2v.js → use-create-virtual-mcp-BrKEnkdt.js} +1 -1
  300. package/dist/client/assets/{use-date-fns-locale-AV4SnLxg.js → use-date-fns-locale-i1Xf3gid.js} +1 -1
  301. package/dist/client/assets/{use-debounced-autosave-Y-Qh1_Yq.js → use-debounced-autosave-BQeag0UT.js} +1 -1
  302. package/dist/client/assets/{use-debounced-value-DSvxzSzu.js → use-debounced-value-QEnJ5YNU.js} +1 -1
  303. package/dist/client/assets/{use-deco-credits-B1V9qoME.js → use-deco-credits-BjfvNHLB.js} +1 -1
  304. package/dist/client/assets/{use-decopilot-events-D9D6ni5J.js → use-decopilot-events-CW6XP6e4.js} +1 -1
  305. package/dist/client/assets/{use-delete-connection-B2im9KG6.js → use-delete-connection-BBUmClQ5.js} +1 -1
  306. package/dist/client/assets/{use-deployment-admin-C5Jc74eV.js → use-deployment-admin-BePkg7PQ.js} +1 -1
  307. package/dist/client/assets/{use-ensure-project-folder-D5O9v9JH.js → use-ensure-project-folder-BZXuJbv1.js} +1 -1
  308. package/dist/client/assets/{use-fast-preview-draft-url-B4AGZbiI.js → use-fast-preview-draft-url-BWcRX3ry.js} +1 -1
  309. package/dist/client/assets/{use-file-configs-DfP4tBEs.js → use-file-configs-DpvdEUPb.js} +1 -1
  310. package/dist/client/assets/{use-infinite-scroll-CLIMYjnC.js → use-infinite-scroll-Dk-DIude.js} +1 -1
  311. package/dist/client/assets/{use-join-requests-CLPw9kSA.js → use-join-requests-DVQ1On7q.js} +1 -1
  312. package/dist/client/assets/{use-main-panel-tabs-DXonldTT.js → use-main-panel-tabs-C24xfqmd.js} +1 -1
  313. package/dist/client/assets/{use-mcp-auth-status-BHCb596Q.js → use-mcp-auth-status-D4Sg_o2d.js} +1 -1
  314. package/dist/client/assets/{use-mcp-client-CGKK63Kz.js → use-mcp-client-f9Qmy1y_.js} +1 -1
  315. package/dist/client/assets/{use-mcp-prompts-Q6y3VcI9.js → use-mcp-prompts-9zSDMe-W.js} +1 -1
  316. package/dist/client/assets/{use-mcp-tools-CXE77GDs.js → use-mcp-tools-B7E_obWk.js} +1 -1
  317. package/dist/client/assets/{use-members-CG-2RwJv.js → use-members-wKTcFRP1.js} +1 -1
  318. package/dist/client/assets/{use-mobile-BHIxo6gN.js → use-mobile-C7WpNWub.js} +1 -1
  319. package/dist/client/assets/{use-navigate-to-agent-DYlzYuXR.js → use-navigate-to-agent-D8tM9cfV.js} +1 -1
  320. package/dist/client/assets/{use-open-billing-url-Bjw_RPxL.js → use-open-billing-url-CR2IZjYW.js} +1 -1
  321. package/dist/client/assets/{use-org-auth-client-BcOSmGyk.js → use-org-auth-client-B2W64s1T.js} +1 -1
  322. package/dist/client/assets/{use-org-fs-B0bRoLwB.js → use-org-fs-BrOLkT4I.js} +1 -1
  323. package/dist/client/assets/{use-org-repo-syncs-CwdFEzac.js → use-org-repo-syncs-CTd9ehH4.js} +1 -1
  324. package/dist/client/assets/{use-org-sso-g2a2pIE8.js → use-org-sso-Dz7pcJeJ.js} +1 -1
  325. package/dist/client/assets/{use-organization-roles-uMK8pAbP.js → use-organization-roles-BRpL_AI_.js} +1 -1
  326. package/dist/client/assets/{use-organization-settings-CtFTrm2u.js → use-organization-settings-BjQxUiPT.js} +1 -1
  327. package/dist/client/assets/{use-panel-navigate-QANI2F_X.js → use-panel-navigate-DXgOcwYj.js} +1 -1
  328. package/dist/client/assets/{use-project-native-view-presence-BL9-bchu.js → use-project-native-view-presence-CBzJIoHC.js} +1 -1
  329. package/dist/client/assets/{use-project-scope-GW2bAOd3.js → use-project-scope-C8--nbfg.js} +1 -1
  330. package/dist/client/assets/{use-recent-apps-B8Spkimt.js → use-recent-apps-BqMXiqfx.js} +1 -1
  331. package/dist/client/assets/{use-releases-CENL9LRv.js → use-releases-BtTMexDl.js} +1 -1
  332. package/dist/client/assets/{use-reports-diagnostic-Dv4wwCLW.js → use-reports-diagnostic-Caj7olXB.js} +1 -1
  333. package/dist/client/assets/{use-secrets-Cd2WLNIt.js → use-secrets-csxZ2uEQ.js} +1 -1
  334. package/dist/client/assets/{use-section-preview-base-Du3AZ2Vl.js → use-section-preview-base-De6qb6st.js} +1 -1
  335. package/dist/client/assets/{use-tags-C1sxDyEj.js → use-tags-73PFMPhT.js} +1 -1
  336. package/dist/client/assets/{use-task-board-analytics-G-CQmnL2.js → use-task-board-analytics-CAaaDgG0.js} +1 -1
  337. package/dist/client/assets/{use-task-board-events-De9AddjW.js → use-task-board-events-HPXBaqzw.js} +1 -1
  338. package/dist/client/assets/{use-task-board-item-prs-CeT5Mp1U.js → use-task-board-item-prs-Bsq4BGlo.js} +1 -1
  339. package/dist/client/assets/{use-task-board-items-COK4ecSa.js → use-task-board-items-D05gaf4o.js} +1 -1
  340. package/dist/client/assets/{use-task-metadata-CPknFXQ5.js → use-task-metadata-Dl4hvQ5Y.js} +1 -1
  341. package/dist/client/assets/{use-thread-analytics-BGHxEouh.js → use-thread-analytics-BWsGEzX0.js} +1 -1
  342. package/dist/client/assets/{use-thread-outputs-YPzOMCqa.js → use-thread-outputs-BGq4Aobn.js} +1 -1
  343. package/dist/client/assets/useInfiniteQuery-YJrt6OYZ.js +1 -0
  344. package/dist/client/assets/{useQueries-h3ila7j5.js → useQueries-AUj7SJrb.js} +1 -1
  345. package/dist/client/assets/useSuspenseInfiniteQuery-DA3stCtu.js +1 -0
  346. package/dist/client/assets/{users-Ba42mTc_.js → users-BEhDe9tc.js} +1 -1
  347. package/dist/client/assets/{utils-BgpN3-4K.js → utils-BiVEA178.js} +1 -1
  348. package/dist/client/assets/{variant-calendar-CxqDsq2C.js → variant-calendar-Cy8AFOdR.js} +1 -1
  349. package/dist/client/assets/{variant-draft-pointer-ACyN5ek2.js → variant-draft-pointer-CGGS4qfN.js} +1 -1
  350. package/dist/client/assets/{view-mode-toggle-D94mGT5R.js → view-mode-toggle-CIOGoFEd.js} +1 -1
  351. package/dist/client/assets/{virtual-mcp-Cb6kVn2b.js → virtual-mcp-ADbZ8HQG.js} +1 -1
  352. package/dist/client/assets/{watch-sse-pool-BOhZFR5D.js → watch-sse-pool-DOF0pWBO.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--XQ7yxAe.js +0 -1
  357. package/dist/client/assets/agent-deck-CPju1YjA.js +0 -1
  358. package/dist/client/assets/agent-library-00tKaXxe.js +0 -1
  359. package/dist/client/assets/agent-library-file-DMDab69U.js +0 -1
  360. package/dist/client/assets/agent-settings-BssEI35S.js +0 -1
  361. package/dist/client/assets/agent-site-editor-code-CysRsVKl.js +0 -2
  362. package/dist/client/assets/agent-site-editor-content-BDP9pOnW.js +0 -1
  363. package/dist/client/assets/agent-site-editor-preview-DcLutf0Z.js +0 -1
  364. package/dist/client/assets/agent-view-9BfAaky_.js +0 -1
  365. package/dist/client/assets/api-keys-BCiaHfJA.js +0 -1
  366. package/dist/client/assets/cms-settings-editor-inOq0gRk.js +0 -1
  367. package/dist/client/assets/flat-project-DvxdpIWe.js +0 -1
  368. package/dist/client/assets/library-CKsdovQ_.js +0 -1
  369. package/dist/client/assets/project-reports-Cy5Gt48i.js +0 -1
  370. package/dist/client/assets/project-tasks-CIVtQnZP.js +0 -1
  371. package/dist/client/assets/record-editor-lYUQFNrv.js +0 -1
  372. package/dist/client/assets/reports-D4-jijW-.js +0 -1
  373. package/dist/client/assets/route-B2ge1BSh.js +0 -1
  374. package/dist/client/assets/site-editor-DGOWjiEA.js +0 -1
  375. package/dist/client/assets/taskboard-analytics-08asB0YJ.js +0 -1
  376. package/dist/client/assets/tasks-DTa8QbvB.js +0 -1
  377. package/dist/client/assets/useInfiniteQuery-DkDVK9bu.js +0 -1
  378. package/dist/client/assets/useSuspenseInfiniteQuery-k5nRBGbr.js +0 -1
@@ -4491,7 +4491,7 @@ ${X}`:`${Y}
4491
4491
 
4492
4492
  ${X}
4493
4493
  ${J.slice(Y.length).trimStart()}`}function vj8($){return $?.match(yK5)?.[1]?.toLowerCase()??null}async function lK5($,Z,Q){let[Y,X]=await Promise.all([$.client.listDecofileEntries(Z,$.packagePath),$.client.listDecofileEntries(Q,$.packagePath)]),J=new Map(hK(Y,$.packagePath).map((H)=>[H.path,H.sha])),G=hK(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 _j8($,Z){try{return await bQ0($.client,$.packagePath,Z)}catch(Q){if(Q instanceof Rs)return null;throw Q}}async function bj8($,Z,Q){let Y=PP($.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([_j8($,Z),_j8($,Q)]);return G!==W}async function xj8($,Z){if(!zD0(Z))throw new pu;if(!await UT1($.store,$.site,Z))throw new pu}async function fj8($,Z){await xj8($,Z);let Q=await $9($.client,$.mainBranch);return bj8($,Q,Z)}async function yj8($,Z,Q={},Y={}){await xj8($,Z);let X=await $.client.readCommit(Z);if(!X)throw new pu;let J=await $9($.client,$.mainBranch),G=await lK5($,J,Z);if(G.changes.length===0)return{result:"up-to-date"};let W=await bj8($,J,Z);if(W)console.info("hosted reapply: schema differs",{site:$.site,target:Z,head:J});let K=await NT1($,J,G,uK5(X,Z,Q.coAuthor));return{result:"merged",sha:K,release:await LT1($,K,Y),schemaChanged:W}}var pu,fQ0="Reapply: ",xK5,fK5="Reapplied-From",yK5;var ET1=L(()=>{Jn();T5();fF();$B();xQ0();Ag0();pu=class pu extends Error{constructor(){super("This commit has no release");this.name="NotPublishedError"}};xK5=/^chore\(decofile\):/,yK5=/^Reapplied-From:\s*([0-9a-f]{40})\s*$/im});async function gj8($,Z,Q){let[Y,X,J]=await Promise.all([wj8($.store,$.site),fq$($.store,$.site),Z.listCommits({ref:$.mainBranch,since:mK5,cursor:Q,limit:cK5})]),G=new Map(J.items.map((H)=>[H.sha,H.date])),W=J.items.map((H)=>vj8(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 hj8($){let Z=await $9($.client,$.mainBranch),Q=await BT1($,Z),Y={revision:Z,schemaHash:Q,publishedAt:new Date().toISOString()};return await DT1($,Y),Y}var cK5=50,mK5="1970-01-01T00:00:00Z";var uj8=L(()=>{T5();$B();xQ0();ET1()});function lj8($){return`site-tokens:${$}`}function dK5($){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 cj8($){return crypto.subtle.importKey("pkcs8",Buffer.from($,"base64"),{name:"Ed25519"},!1,["sign"])}async function iK5($,Z){let Q=(J)=>PT1(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}.${PT1(X)}`}function mj8($){let Z=async(Q,Y)=>dK5(await $.kv.get(Q,lj8(Y)));return{list:Z,async issue(Q,Y){let X=await Z(Q,Y),J={kid:PT1(crypto.getRandomValues(new Uint8Array(16))),iat:Math.floor(Date.now()/1000)},G=await iK5(await $.signingKey(),{site:Y,...J});return await $.kv.set(Q,lj8(Y),{tokens:[...X,J]}),{token:G,record:J}}}}var PT1=($)=>Buffer.from($ instanceof Uint8Array?$:new Uint8Array($)).toString("base64url");function nK5(){let $=Ep();return $?{store:$,purge:Eg0()}:null}async function Vg0($){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 dj8($){let Z=B0().siteTokenSigningKey;if(!Z)return null;return mj8({kv:$.var.studioContext.storage.kv,signingKey:()=>cj8(Z)})}function ks($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof Rs)return $.json({error:Q},409);if(Z instanceof Tg0)return console.error("hosted: latest.json update failed",{error:Q}),$.json({error:"latest-update-failed"},502);let Y=_G(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 ij8($={}){let Z=new Z1,Q=$.repoClientFor??bG,Y=$.insightsFor??rT$,X=$.delivery??nK5;return Z.use("*",async(J,G)=>{J.set("repoClientFor",Q),J.set("delivery",X),await G()}),Z.use("/:virtualMcpId/*",pK5),Z.get("/:virtualMcpId/releases",async(J)=>{try{let G=await Vg0(J);if(!G)return J.json(Mg0,503);let W=J.get("hostedProject"),K=await Y(J.var.studioContext,W.organizationId,W.repository);return J.json(await gj8(G,K,J.req.query("cursor")??null),200,{"Cache-Control":"no-store"})}catch(G){return ks(J,G)}}),Z.post("/:virtualMcpId/releases/retry",async(J)=>{try{let G=await Vg0(J);if(!G)return J.json(Mg0,503);return J.json({current:await hj8(G)})}catch(G){return ks(J,G)}}),Z.get("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Vg0(J);if(!G)return J.json(Mg0,503);return J.json({schemaChanged:await fj8(G,J.req.param("sha"))})}catch(G){if(G instanceof pu)return J.json({error:G.message},404);return ks(J,G)}}),Z.post("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Vg0(J);if(!G)return J.json(Mg0,503);let W=await yj8(G,J.req.param("sha"),{coAuthor:QO(J.var.studioContext)});return J.json(W)}catch(G){if(G instanceof pu)return J.json({error:G.message},404);if(G instanceof Ms)return J.json({error:"main-moved"},409);return ks(J,G)}}),Z.get("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=dj8(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=dj8(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 ZR(K,G.packagePath,await K.getDefaultBranch());if(await Ap(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 ks(J,K)}}),Z}var pK5,Mg0;var pj8=L(()=>{SF();K8();Yg0();IG();_F();T5();$B();FT1();xQ0();Ag0();uj8();ET1();n60();QR();zp();u1();vR();pK5=Us(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 TQ(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(!MQ(await r7(Q),X))return $.json({error:"Virtual MCP not found"},404);let G=J.metadata??null,W=JW(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 RD0({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 ks($,H)}let K=await qD0(Q.storage.orgSites,X,Y.id);if(!K)return $.json(Pp,409);return $.set("hostedProject",{organizationId:Y.id,virtualMcpId:X,site:K,packagePath:ZB(G),repository:W,metadata:G}),Z()}),Mg0={error:"hosted delivery not configured"}});var nj8=($)=>{let Z=new Z1;if(Z.use("*",fo),Z.use("*",OU8),Z.route("/",DU8($.voiceSessions)),Z.route("/",Hy0()),Z.route("/",aU8()),Z.route("/",FN8()),Z.route("/",nU8()),Z.route("/",DL8()),Z.route("/",OL8()),Z.route("/",GL8()),Z.route("/",NL8()),Z.route("/",KL8()),Z.route("/",$g0()),Z.route("/tools",TL8()),Z.route("/",PL8()),Z.route("/",uD8({kvStorage:$.kvStorage})),Z.route("/",gD8()),Z.route("/fs",rD8({getConnection:$.getNatsConnection})),Z.route("/sandbox",aO8()),Z.route("/decofile",Cj8()),Z.route("/hosted",ij8()),Z.route("/",YL8()),Z.route("/",eD8()),Z.route("/deco-sites",Uy0()),Z.route("/hosting",VU8()),Z.route("/monitor",hU8()),Z.route("/order-monitor",mU8()),Z.route("/sso",Yy0()),Z.route("/",Zg0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",AU8()),$.mountDevAssets)Z.route("/dev-assets",wy0({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 jA1)Z.use(`${Q}/:threadId`,$.mcpAuth);Z.route("/",gW8()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler);for(let Q of jA1)Z.route(Q,ZL8());return Z.route("/mcp",Yx0()),Z.route("/mcp/self",sy0()),Z.route("/mcp",Gx0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var tj8=L(()=>{K8();LU8();jU8();pf0();TU8();dz1();IU8();uU8();dU8();Ey0();w2();hz1();eU8();sz1();hD8();lD8();aD8();$L8();rZ0();Cz1();Wx0();OA1();QL8();XL8();WL8();HL8();PA1();LL8();jL8();zL8();zA1();qL8();AA1();Xx0();eO8();Sj8();pj8()});import{z as nu}from"zod";class zT1{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 rj8.Kvm(Ig0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Ig0.StorageType.Memory,ttl:aj8.nanos(zO),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"?sj8.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=oj8.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,oj8.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"?sj8.parse(G.json()):null;if(G&&W?.state==="ready"&&W.agentId===Q)await X.delete(J,{previousSeq:G.revision}).catch(()=>{});throw Y}}}var Ig0,rj8,aj8,oj8,sj8;var ej8=L(()=>{BG();kB();p$();Ig0=_(xH(),1),rj8=_(_q(),1),aj8=_(o2(),1),oj8=new TextEncoder,sj8=nu.discriminatedUnion("state",[nu.object({state:nu.literal("ready"),agentId:nu.string()}),nu.object({state:nu.literal("creating"),expiresAt:nu.number()})])});import{z as Cs}from"zod";function tK5($){return{model:$.model,instructions:`${vt$}
4494
- Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class AT1{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:tK5({...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:Cs.object({session:Cs.object({id:Cs.string().min(1)}),transport:Cs.object({type:Cs.literal("webrtc"),sdp:Cs.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var $w8=L(()=>{kB()});var Zw8;var Qw8=L(()=>{Zw8=[{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 TT1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:St$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:Zw8.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:zO/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 Yw8=L(()=>{kB();Qw8()});import{z as pJ}from"zod";import{createHash as oK5,createHmac as sK5}from"crypto";class kg0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=oK5("sha256").update(JSON.stringify(TT1($))).digest("hex"),this.conversationKey=sK5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new kg0({...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}=pJ.object({agents:pJ.array(pJ.object({agent_id:pJ.string(),name:pJ.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 pJ.object({platform_settings:pJ.object({auth:pJ.object({enable_auth:pJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...TT1(this.config)},AbortSignal.timeout(15000));return pJ.object({agent_id:pJ.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 pJ.object({token:pJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return pJ.object({token:pJ.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 Xw8=L(()=>{Yw8()});import{createHmac as rK5,timingSafeEqual as aK5}from"crypto";import{z as Ss}from"zod";function Gw8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return rK5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function Ww8($,Z){let Q=Buffer.from(JSON.stringify(Jw8.parse($))).toString("base64url");return`${Q}.${Gw8(Q,Z)}`}function Kw8($,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(Gw8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!aK5(W,G))return null;try{let K=Jw8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+zO)return null;return K.data}catch{return null}}var Jw8;var Hw8=L(()=>{kB();Jw8=Ss.object({sessionId:Ss.string().uuid(),organizationId:Ss.string().min(1).max(256),userId:Ss.string().min(1).max(256),threadId:Ss.string().min(1).max(256),expiresAt:Ss.number().int().positive()})});import{z as qT1}from"zod";function Fw8($,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 RT1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var RT1;var Uw8=L(()=>{RT1=qT1.object({provider:qT1.enum(["elevenlabs","openai"]),model:qT1.string().trim().min(1).max(128)})});import{createHash as eK5}from"crypto";import{z as _s}from"zod";function vs($){return`user.${eK5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class VT1{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 Nw8.Kvm(Sg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Sg0.StorageType.Memory,ttl:Bw8.nanos(zO),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=Fw8(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()+zO},W=Ww8(G,this.deps.secret),K=await this.kv(),H=vs(G),F=await K.get(H),U=F?.operation==="PUT"?Cg0.parse(F.json()):null,N=MT1.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:vs($)});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=Kw8(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=vs(Q),J=await Y.get(X),G=J?.operation==="PUT"?Cg0.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,MT1.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=vs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Cg0.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,MT1.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(vs($));if(Q?.operation==="PUT"&&Cg0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(vs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var Sg0,Nw8,Bw8,Cg0,MT1;var Dw8=L(()=>{BG();kB();Hw8();Uw8();Sg0=_(xH(),1),Nw8=_(_q(),1),Bw8=_(o2(),1),Cg0=_s.object({sessionId:_s.string().uuid(),expiresAt:_s.number(),connected:_s.boolean().optional(),conversation:RT1.optional(),characters:_s.number().int().nonnegative(),requests:_s.number().int().nonnegative()}),MT1=new TextEncoder});import{z as m1}from"zod";function YD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function HH5($){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 FH5($,Z,Q){try{return JSON.parse($)}catch{throw new jw8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function UH5($){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:FH5(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 NH5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?qN(Q.function.parameters):qN({type:"object",properties:{}});return[Q.function.name,s$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function BH5($){if(!$)return;return{openai:{response_format:$}}}function DH5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Lw8($,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 Ow8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var $H5=256,ZH5,QH5,YH5,XH5,JH5,GH5,WH5,KH5,jw8,ww8,Ew8;var Pw8=L(()=>{l4();K8();Fs();FU();ZH5=m1.object({type:m1.literal("function"),function:m1.object({name:m1.string(),description:m1.string().optional(),parameters:m1.record(m1.string(),m1.unknown()).optional()})}),QH5=m1.object({id:m1.string(),type:m1.literal("function"),function:m1.object({name:m1.string(),arguments:m1.string()})}),YH5=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(QH5).optional()}),m1.object({role:m1.literal("tool"),content:m1.string(),tool_call_id:m1.string()})]),XH5=m1.object({type:m1.literal("text")}),JH5=m1.object({type:m1.literal("json_object")}),GH5=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()})}),WH5=m1.union([XH5,JH5,GH5]),KH5=m1.object({model:m1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:m1.array(YH5),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(ZH5).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:WH5.optional(),user:m1.string().optional()});jw8=class jw8 extends Error{constructor($){super($);this.name="MessageConversionError"}};ww8=new Z1;ww8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(YD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(YD("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(YD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=KH5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(YD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=HH5(J.model);if(!G)return $.json(YD("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)=>cA(E.providerId));if(!w)return $.json(YD("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(YD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=UH5(J.messages),N=J.tools?NH5(J.tools):void 0,B=BH5(J.response_format),D=DH5(),O=Math.floor(Date.now()/1000);if(J.stream)return Bj($,async(j)=>{let w=Lw8(F,U,N,J,B,$.req.raw.signal);try{let E=Ut(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>=$H5)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:Ow8(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=Lw8(F,U,N,J,B,$.req.raw.signal),w=await RO(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:Ow8(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(YD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(YD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(YD(X.message,"server_error"),500)}});Ew8=ww8});function LH5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function zw8(){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=S0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!_5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||u9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(nA(U)!==J)continue;if(!LH5(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 Aw8=L(()=>{K8();eY()});var _g0;var IT1=L(()=>{_g0={name:"decocms",version:"4.509.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run 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 wH5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??jH5}}var Tw8,jH5="https://ph.studio.decocms.com",qw8;var Rw8=L(()=>{K8();A10();Zu();H9();u1();jo();Oz1();IT1();Tw8=new Z1;Tw8.get("/",($)=>{let Z={version:_g0.version,theme:t3$(),...NF().logo&&{logo:NF().logo},...fO()&&{internalUrl:O$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&U2(),plansEnabled:B0().plansEnabled,auth:GF8(),posthog:wH5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:qU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});qw8=Tw8});import{z as R$}from"zod";var EH5,Mw8;var Vw8=L(()=>{EH5=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())}),Mw8=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(EH5)})),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 Iw8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${SK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function vg0($,Z={}){let Q=await fetch(Iw8($,"",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 Mw8.parse(await Q.json())}async function kw8($,Z={}){let Q=await fetch(Iw8($,".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 kT1=L(()=>{Vw8();xL()});import{join as Cw8}from"path";async function zH5($){try{let Z=await vg0($,{signal:AbortSignal.timeout(PH5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||iw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function J3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function AH5($,Z){let Q=qu($),Y=Z?.brand?.trim()||iw1(Q),X=_G8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=vG8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${J3(W)}</title>`,`<meta name="description" content="${J3(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="${J3(W)}" />`,`<meta property="og:description" content="${J3(K)}" />`,`<meta property="og:url" content="${J3(G)}" />`,`<meta property="og:image" content="${J3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${J3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${J3(W)}" />`,`<meta name="twitter:description" content="${J3(K)}" />`,`<meta name="twitter:image" content="${J3(H)}" />`,`<meta name="twitter:image:alt" content="${J3(F)}" />`,`<link rel="canonical" href="${J3(G)}" />`,`<link rel="alternate" type="text/markdown" href="${J3(G)}.md" />`,`<link rel="icon" href="${J3(X)}" sizes="any" />`].join(`
4494
+ Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class AT1{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:tK5({...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:Cs.object({session:Cs.object({id:Cs.string().min(1)}),transport:Cs.object({type:Cs.literal("webrtc"),sdp:Cs.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var $w8=L(()=>{kB()});var Zw8;var Qw8=L(()=>{Zw8=[{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 TT1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:St$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:Zw8.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:zO/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 Yw8=L(()=>{kB();Qw8()});import{z as pJ}from"zod";import{createHash as oK5,createHmac as sK5}from"crypto";class kg0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=oK5("sha256").update(JSON.stringify(TT1($))).digest("hex"),this.conversationKey=sK5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new kg0({...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}=pJ.object({agents:pJ.array(pJ.object({agent_id:pJ.string(),name:pJ.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 pJ.object({platform_settings:pJ.object({auth:pJ.object({enable_auth:pJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...TT1(this.config)},AbortSignal.timeout(15000));return pJ.object({agent_id:pJ.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 pJ.object({token:pJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return pJ.object({token:pJ.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 Xw8=L(()=>{Yw8()});import{createHmac as rK5,timingSafeEqual as aK5}from"crypto";import{z as Ss}from"zod";function Gw8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return rK5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function Ww8($,Z){let Q=Buffer.from(JSON.stringify(Jw8.parse($))).toString("base64url");return`${Q}.${Gw8(Q,Z)}`}function Kw8($,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(Gw8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!aK5(W,G))return null;try{let K=Jw8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+zO)return null;return K.data}catch{return null}}var Jw8;var Hw8=L(()=>{kB();Jw8=Ss.object({sessionId:Ss.string().uuid(),organizationId:Ss.string().min(1).max(256),userId:Ss.string().min(1).max(256),threadId:Ss.string().min(1).max(256),expiresAt:Ss.number().int().positive()})});import{z as qT1}from"zod";function Fw8($,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 RT1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var RT1;var Uw8=L(()=>{RT1=qT1.object({provider:qT1.enum(["elevenlabs","openai"]),model:qT1.string().trim().min(1).max(128)})});import{createHash as eK5}from"crypto";import{z as _s}from"zod";function vs($){return`user.${eK5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class VT1{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 Nw8.Kvm(Sg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Sg0.StorageType.Memory,ttl:Bw8.nanos(zO),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=Fw8(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()+zO},W=Ww8(G,this.deps.secret),K=await this.kv(),H=vs(G),F=await K.get(H),U=F?.operation==="PUT"?Cg0.parse(F.json()):null,N=MT1.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:vs($)});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=Kw8(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=vs(Q),J=await Y.get(X),G=J?.operation==="PUT"?Cg0.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,MT1.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=vs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Cg0.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,MT1.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(vs($));if(Q?.operation==="PUT"&&Cg0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(vs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var Sg0,Nw8,Bw8,Cg0,MT1;var Dw8=L(()=>{BG();kB();Hw8();Uw8();Sg0=_(xH(),1),Nw8=_(_q(),1),Bw8=_(o2(),1),Cg0=_s.object({sessionId:_s.string().uuid(),expiresAt:_s.number(),connected:_s.boolean().optional(),conversation:RT1.optional(),characters:_s.number().int().nonnegative(),requests:_s.number().int().nonnegative()}),MT1=new TextEncoder});import{z as m1}from"zod";function YD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function HH5($){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 FH5($,Z,Q){try{return JSON.parse($)}catch{throw new jw8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function UH5($){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:FH5(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 NH5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?qN(Q.function.parameters):qN({type:"object",properties:{}});return[Q.function.name,s$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function BH5($){if(!$)return;return{openai:{response_format:$}}}function DH5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Lw8($,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 Ow8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var $H5=256,ZH5,QH5,YH5,XH5,JH5,GH5,WH5,KH5,jw8,ww8,Ew8;var Pw8=L(()=>{l4();K8();Fs();FU();ZH5=m1.object({type:m1.literal("function"),function:m1.object({name:m1.string(),description:m1.string().optional(),parameters:m1.record(m1.string(),m1.unknown()).optional()})}),QH5=m1.object({id:m1.string(),type:m1.literal("function"),function:m1.object({name:m1.string(),arguments:m1.string()})}),YH5=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(QH5).optional()}),m1.object({role:m1.literal("tool"),content:m1.string(),tool_call_id:m1.string()})]),XH5=m1.object({type:m1.literal("text")}),JH5=m1.object({type:m1.literal("json_object")}),GH5=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()})}),WH5=m1.union([XH5,JH5,GH5]),KH5=m1.object({model:m1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:m1.array(YH5),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(ZH5).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:WH5.optional(),user:m1.string().optional()});jw8=class jw8 extends Error{constructor($){super($);this.name="MessageConversionError"}};ww8=new Z1;ww8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(YD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(YD("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(YD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=KH5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(YD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=HH5(J.model);if(!G)return $.json(YD("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)=>cA(E.providerId));if(!w)return $.json(YD("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(YD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=UH5(J.messages),N=J.tools?NH5(J.tools):void 0,B=BH5(J.response_format),D=DH5(),O=Math.floor(Date.now()/1000);if(J.stream)return Bj($,async(j)=>{let w=Lw8(F,U,N,J,B,$.req.raw.signal);try{let E=Ut(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>=$H5)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:Ow8(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=Lw8(F,U,N,J,B,$.req.raw.signal),w=await RO(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:Ow8(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(YD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(YD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(YD(X.message,"server_error"),500)}});Ew8=ww8});function LH5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function zw8(){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=S0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!_5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||u9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(nA(U)!==J)continue;if(!LH5(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 Aw8=L(()=>{K8();eY()});var _g0;var IT1=L(()=>{_g0={name:"decocms",version:"4.509.3",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^3.1.0","@opentelemetry/core":"^2.6.0",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.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 wH5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??jH5}}var Tw8,jH5="https://ph.studio.decocms.com",qw8;var Rw8=L(()=>{K8();A10();Zu();H9();u1();jo();Oz1();IT1();Tw8=new Z1;Tw8.get("/",($)=>{let Z={version:_g0.version,theme:t3$(),...NF().logo&&{logo:NF().logo},...fO()&&{internalUrl:O$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&U2(),plansEnabled:B0().plansEnabled,auth:GF8(),posthog:wH5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:qU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});qw8=Tw8});import{z as R$}from"zod";var EH5,Mw8;var Vw8=L(()=>{EH5=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())}),Mw8=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(EH5)})),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 Iw8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${SK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function vg0($,Z={}){let Q=await fetch(Iw8($,"",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 Mw8.parse(await Q.json())}async function kw8($,Z={}){let Q=await fetch(Iw8($,".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 kT1=L(()=>{Vw8();xL()});import{join as Cw8}from"path";async function zH5($){try{let Z=await vg0($,{signal:AbortSignal.timeout(PH5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||iw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function J3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function AH5($,Z){let Q=qu($),Y=Z?.brand?.trim()||iw1(Q),X=_G8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=vG8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${J3(W)}</title>`,`<meta name="description" content="${J3(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="${J3(W)}" />`,`<meta property="og:description" content="${J3(K)}" />`,`<meta property="og:url" content="${J3(G)}" />`,`<meta property="og:image" content="${J3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${J3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${J3(W)}" />`,`<meta name="twitter:description" content="${J3(K)}" />`,`<meta name="twitter:image" content="${J3(H)}" />`,`<meta name="twitter:image:alt" content="${J3(F)}" />`,`<link rel="canonical" href="${J3(G)}" />`,`<link rel="alternate" type="text/markdown" href="${J3(G)}.md" />`,`<link rel="icon" href="${J3(X)}" sizes="any" />`].join(`
4495
4495
  `)}function TH5($,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}
4496
4496
  </head>`)}function Sw8($){let Z=new Z1;return Z.get("/:domain/og.png",async(Q)=>{let Y=qu(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(Cw8($,"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(`${SK({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(qH5)}),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=qu(Q.req.param("file").replace(/\.md$/,""));try{let X=await kw8(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(RH5)});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=$?Cw8($,"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 zH5(qu(Y)),K=AH5(Y,W);return Q.html(TH5(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var PH5=2500,qH5=1e4,RH5=1e4;var _w8=L(()=>{K8();xL();kT1();u1()});function bg0($,Z){return fetch(`${SK({})}${$}`,Z)}async function MH5($,Z){let Q=await vg0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function kH5($){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 VH5,IH5=8192,Lj,vw8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},bw8;var xw8=L(()=>{K8();Q3();nK();xL();kT1();VH5=new Set(["complete","errored","terminated","unknown"]);Lj=new Z1;Lj.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});Lj.use("/link-token/*",vw8);Lj.use("/suggest",vw8);Lj.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 MH5(Z,Q))}catch{return $.json({error:"report read failed"},502)}});Lj.post("/run",C6({maxSize:IH5,onError:($)=>$.json({error:"request body too large"},413)}),async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let{domain:Y,distinctId:X}=kH5(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await bg0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${HP({})}`},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)}});Lj.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await bg0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${HP({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:VH5.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});Lj.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await bg0(`/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)}});Lj.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await bg0(`/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:[]})}});bw8=Lj});var CH5=1048576,CT1;var fw8=L(()=>{K8();Q3();u1();Zz1();CT1=new Z1;CT1.post("/webhook",C6({maxSize:CH5,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(!EH8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=PH8(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await zH8(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as SH5}from"crypto";function bH5($,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 SH5(Buffer.from(X),Buffer.from(Y))}function xH5($,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 yw8($){let Z=new Z1;return Z.post("/webhook",C6({maxSize:_H5,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(!bH5(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"&&!vH5.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 m50().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=xH5(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await fH5($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function fH5($,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 $48(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var _H5=5242880,vH5;var gw8=L(()=>{K8();Q3();CX();gQ();vH5=new Set(["check_suite","issue_comment"])});import{DBOS as _T1,SchedulerMode as yH5}from"@dbos-inc/dbos-sdk";async function hH5(){try{return await uH5()}catch($){return console.warn(`[sandbox-credential-push] push failed: ${$ instanceof Error?$.message:String($)}`),null}}async function uH5(){if(!c50())return null;let[{RemoteSandboxProvider:$},{SandboxProviderRouter:Z}]=await Promise.all([Promise.resolve().then(() => (YF1(),QF1)),Promise.resolve().then(() => (ZF1(),$F1))]),Q=await m50(),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=Fp$({sandboxes:J,pools:G,records:await Up$(X,J,G),legacyPools:sC0(process.env.STUDIO_SANDBOX_TENANT_POOLS),now:W}),{batches:H,failed:F}=await Np$(K,wj0(X,new GJ(B0().encryptionKey)),{now:W,orgFsLifetimeMs:eC0}),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 lH5($,Z){let Q=await _T1.runStep(hH5,{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 hw8(){if(ST1)return;if(!B0().agentSandboxEnabled||!c50())return;ST1=_T1.registerWorkflow(lH5,{name:"sandboxCredentialPushWorkflow"}),_T1.registerScheduled(ST1,{name:"sandboxCredentialPushWorkflow",crontab:gH5,mode:yH5.ExactlyOncePerIntervalWhenActive})}var gH5="1,11,21,31,41,51 * * * *",ST1=null;var uw8=L(()=>{S3();Nw();m31();$S0();rC0();CX();u1()});function lw8($){let Z=new aO($.db,new GJ($.encryptionKey)),Q=new Z1;return Q.get("/attachments/:token",async(Y)=>{let X=J$8(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 ZQ(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 cw8=L(()=>{K8();Nw();kN1();MO()});function xg0(){try{return B0().jiraSettleSeconds*1000}catch{return ez}}function mw8($,Z){let Q=Z.windowMs??ez,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=cH5($,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 cH5($,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 vT1=L(()=>{gO();u1()});function dw8($){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 bT1($,Z,Q){if(!Z.enabled)return"disabled";let Y=Z.organizationId,X=new ZQ(Z.siteUrl,Z.email,Z.apiToken),J=mw8(await X.listStatusChanges(Q.issueId),{changeId:Q.changelogId,now:Q.now,windowMs:xg0()});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:az(N)})),H=n98(K)&&Z.boardId?p98(await X.getBoardColumnStatusIds(Z.boardId),W.id,G.toId):null,F=i98(K,W.name,H);if(!F)return"no_rule";if(!await $.storage.jiraIntegrations.claimTrigger(Y,Q.issueId,G.id))return"duplicate";return await XH({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 xT1=L(()=>{KU();MO();tt();vT1()});import{DBOS as I2,SchedulerMode as mH5}from"@dbos-inc/dbos-sdk";function iw8($){yT1=$}function hT1(){if(!yT1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return yT1}function uT1(){let $=hT1();return new aO($.db,new GJ($.encryptionKey))}async function tH5($){try{let Z=await uT1().getById($);if(!Z?.enabled||!Z.boardId)return{integrationId:$,fired:0};let Q=await hJ(hT1().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 ZQ(Z.siteUrl,Z.email,Z.apiToken),G=`(${await X.getBoardScopeJql(Z.boardId)}) AND status CHANGED AFTER "-${iH5}m"`,W=0,K;for(let H=0;H<pH5;H++){let F=await X.searchIssues({jql:G,nextPageToken:K});for(let U of F.issues)if(await bT1(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 oH5($,Z){let Q=await I2.runStep(()=>uT1().listEnabledIds(),{name:"loadJiraIntegrations"});if(Q.length===0)return;let Y=await Promise.all(Q.map((X)=>I2.runStep(()=>tH5(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 sH5($,Z){try{let Q=await uT1().getById($);if(!Q?.enabled)return"disabled";let Y=await hJ(hT1().db,Q.organizationId);if(!Y)return"disabled";let X=await bT1(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 rH5($,Z){await I2.sleep(xg0()+nH5),await I2.runStep(()=>sH5($,Z),{name:"settleJiraMove"})}async function pw8($,Z){if(!gT1)throw Error("[jira-trigger] settle workflow is not registered");await I2.startWorkflow(gT1,{workflowID:`jira-settle:${$}:${Z.changelogId}`})($,Z)}function nw8(){if(fT1)return;gT1=I2.registerWorkflow(rH5,{name:"jiraSettleWorkflow"}),fT1=I2.registerWorkflow(oH5,{name:"jiraTriggerSweepWorkflow"}),I2.registerScheduled(fT1,{name:"jiraTriggerSweepWorkflow",crontab:dH5,mode:mH5.ExactlyOncePerIntervalWhenActive})}var dH5="*/5 * * * *",iH5=20,pH5=5,nH5=5000,yT1=null,gT1=null,fT1=null;var lT1=L(()=>{Nw();pz();MO();vT1();xT1()});function tw8($){let Z=new aO($.db,new GJ($.encryptionKey)),Q=ZE($.db);async function Y(J,G){let W=dw8(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 pw8(K.id,W)}let X=new Z1;return X.post("/webhook/:secret",C6({maxSize:aH5}),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 aH5=1048576;var ow8=L(()=>{K8();Q3();Nw();lT1();xT1();q00()});function sw8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var rw8,eH5,$F5,aw8;var ew8=L(()=>{K8();BG();xt();ii();rw8=new Z1,eH5=["range","if-none-match","if-modified-since"],$F5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];rw8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(xo($))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 qZ0(Y,Z);if(!X)throw new R1(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&bK()){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 sw8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of eH5){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 $F5){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),sw8(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});aw8=rw8});var yQ0=y((tu)=>{var ZF5=tu&&tu.__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]}),QF5=tu&&tu.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))ZF5(Z,$,Q)};Object.defineProperty(tu,"__esModule",{value:!0});QF5(B3(),tu)});var QE8=y(($E8)=>{Object.defineProperty($E8,"__esModule",{value:!0});$E8.version=void 0;$E8.version="3.4.0"});var JE8=y((XD)=>{var YF5=XD&&XD.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(XD,"__esModule",{value:!0});XD.NodeTransport=XD.VERSION=void 0;XD.nodeResolveHost=HF5;var J9=yQ0(),XF5=V0("net"),cT1=V0("tls"),JF5=V0("path"),YE8=V0("fs"),GF5=YF5(V0("dns")),WF5=QE8();XD.VERSION=WF5.version;var KF5="nats.js";class XE8{socket;version;lang;yields=[];signal=(0,J9.deferred)();closedNotification=(0,J9.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=KF5,this.version=XD.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:Y}=Q||{};try{if(Y===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let X=await this.peekInfo();(0,J9.checkOptions)(X,Z);let{tls_required:J,tls_available:G}=X,W=G===!0&&Z.tls!==null;if(!Y&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw J9.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(X){let J=X;if(!J)J=new J9.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new J9.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,J9.deferred)(),Q,Y=(0,XF5.createConnection)($.port,$.hostname,()=>{Z.resolve(Y),Y.removeAllListeners()});return Y.on("error",(X)=>{Q=X}),Y.on("close",()=>{Y.removeAllListeners(),Z.reject(Q)}),Y.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,J9.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=J9.DataBuffer.concat(...this.yields),X=(0,J9.extractProtocolMessage)(Y);if(X!=="")try{let J=J9.INFO.exec(X);if(!J)throw Error("unexpected response from server");let G=JSON.parse(J[1]);$.resolve(G)}catch(J){$.reject(J)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(Q)=>{Z=Q}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,J9.deferred)();try{if($=(0,JF5.resolve)($),!(0,YE8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,YE8.readFile)($,(Q,Y)=>{if(Q)return Z.reject(Q);Z.resolve(Y)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:Y,ca:X,keyFile:J,key:G}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(Q)$.cert=Q;if(J){let W=await this.loadFile(J);if(W)$.key=W}else if(G)$.key=G;if(Y){let W=await this.loadFile(Y);if(W)$.ca=[W]}else if(X)$.ca=X;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Q=(0,J9.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new J9.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,J9.deferred)();try{let X=(0,cT1.connect)($.port,$.hostname,Q,()=>{X.removeAllListeners(),Y.resolve(X)});X.on("error",(J)=>{Z=J}),X.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Y.reject(Z),X.removeAllListeners()}),X.setNoDelay(!0)}catch(X){Y.reject(new J9.errors.ConnectionError(X.message,{cause:X}))}return Y}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Z=(0,J9.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new J9.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,J9.deferred)();try{let Y=(0,cT1.connect)(Z,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(X)=>{$=X}),Y.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject($),Y.removeAllListeners()})}catch(Y){Q.reject(new J9.errors.ConnectionError(Y.message,{cause:Y}))}return Q}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,J9.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,J9.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof cT1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,J9.render)($)}`);let Z=(0,J9.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,J9.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,J9.render)($)}: ${Q}`);Z.reject(Q)}return Z}send($){this._send($).catch((Q)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(Q){if(this.options.debug)console.log("transport close terminated with an error",Q)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(Q){console.log(Q)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}XD.NodeTransport=XE8;function HF5($){let Z=(0,J9.deferred)();return GF5.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 FE8=y((HE8)=>{Object.defineProperty(HE8,"__esModule",{value:!0});HE8.connect=FF5;var GE8=JE8(),WE8=yQ0(),KE8=yQ0();function FF5($={}){if((0,KE8.hasWsProtocol)($))return Promise.reject(KE8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,WE8.setTransportFactory)({factory:()=>{return new GE8.NodeTransport},dnsResolveFn:GE8.nodeResolveHost}),WE8.NatsConnectionImpl.connect($)}});var UE8=y((Oj)=>{var NF5=Oj&&Oj.__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]}),BF5=Oj&&Oj.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))NF5(Z,$,Q)};Object.defineProperty(Oj,"__esModule",{value:!0});Oj.connect=void 0;var DF5=FE8();Object.defineProperty(Oj,"connect",{enumerable:!0,get:function(){return DF5.connect}});BF5(yQ0(),Oj)});function DE8($){let Z=$?.connectFn??wF5,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:jF5,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(OF5,LF5,D-1,2,0.5);await J$(O)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?fg0.credsAuthenticator(new TextEncoder().encode(B.creds)):B?.user?fg0.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=BE8.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 wF5($){return NE8.connect($)}var fg0,NE8,BE8,LF5=100,OF5=3000,jF5=3000;var LE8=L(()=>{p$();fg0=_(o2(),1),NE8=_(UE8(),1),BE8=_(xH(),1)});function yg0($,Z){return`${$}.${Z}`}class mT1{cache;constructor($){this.cache=eN({ttlMs:$?.ttlMs??EF5,maxSize:$?.maxSize??PF5})}async get($,Z){return this.cache.get(yg0($,Z))??null}async set($,Z,Q){this.cache.set(yg0($,Z),Q)}async invalidate($,Z){this.cache.delete(yg0($,Z)),this.cache.delete(yg0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var EF5=600000,PF5=5000;var OE8=()=>{};function gg0($,Z){return`${$}:${Z}`}function dT1($){let Z=eN({ttlMs:$?.ttlMs??zF5,maxSize:$?.maxSize??AF5}),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(jE8,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(gg0(K,H))},set(K,H,F){Z.set(gg0(K,H),F)},invalidate(K,H){Z.delete(gg0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(jE8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(gg0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var jE8="studio.ai-provider-keys.invalidate",zF5=30000,AF5=5000;var wE8=()=>{};class iT1{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 EE8=($)=>{let Z;return()=>Z??=$()},pT1,nT1;var PE8=L(()=>{b6();pT1=EE8(()=>G$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),nT1=EE8(()=>G$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function kF5($=TE8){return{name:hB,subjects:[`${wL1}.>`],storage:zU.StorageType.File,max_age:RF5,max_bytes:VF5,max_msgs_per_subject:IF5,discard:zU.DiscardPolicy.Old,retention:zU.RetentionPolicy.Limits,duplicate_window:MF5,num_replicas:$}}class qE8{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 zE8($){let Z=AE8.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function vF5($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,qF5().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 bF5($,Z){return $.info?.cluster?Z:1}function xF5($){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 tT1{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=kF5(X);try{await Y.streams.info(hB),await Y.streams.update(hB,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(hB,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(hB),await Y.streams.add(J);else throw G}},Q=await e$(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await zU.jetstreamManager($),X=bF5($,TE8);try{await Z(Y,X)}catch(J){if(X<=1||!xF5(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:nt});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=vF5(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=P98(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=PL1(H,{runId:Z}),N=performance.now()-F;pT1().record(N),nT1().add(1,{"org.id":Y??"unknown"}),_F5?.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?zE8(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(),SF5)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 e$(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:zE8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:nt}),!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=PL1(Z,{runId:$,dedup:Q});pT1().record(performance.now()-X),nT1().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=E98({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"?zU.DeliverPolicy.New:zU.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=rz($),W;try{W=await e$(async()=>{return(await Y.consumers.get(hB,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:nt})}catch(O){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",O?.message??O),null}let F=zb0({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(wb0()).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(hB,{filter:rz($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var zU,AE8,TF5=($)=>{let Z;return()=>Z??=$()},qF5,RF5=86400000000000,MF5=120000000000,VF5=4294967296,TE8,IF5=500000,CF5,SF5,_F5;var RE8=L(()=>{p$();zL1();Ab0();Eb0();b6();PE8();zU=_(xH(),1),AE8=_(o2(),1),qF5=TF5(()=>G$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),TE8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);CF5=process.env.STREAM_ENCODE_TRACE==="1",SF5=process.env.DECOPILOT_STREAM_TRACE==="1";_F5=CF5?new qE8:null});function hg0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,mU(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 ME8=L(()=>{q8()});class oT1{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 fF5($,Z,Q={}){let Y=$.startsWith("thread:")?eF($,Q):$;return[...new Set([Z,Y].filter((X)=>!!X))]}async function sT1($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await VB($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await IB($,{threadId:X,runBranch:G?.branch}),K=await l40($,Q,KD0(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=fF5(W,await TS0($,X),{flat:Mh(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 wW(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 VE8=L(()=>{T5();yQ();gQ()});async function IE8($,Z,Q){let Y=Z.organizationId;if(!uJ(Z))return!1;if(!ah(Q))return!1;if(!await gd($,Y,m10))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=K1.shipped,J=await $.storage.taskBoard.update(Z.id,Y,{status:X},Z.updatedBy);return await Q9($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:X,reason:"pr_merged"}}),H8(Y,J),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${X}`),!0}var kE8=L(()=>{jG();v8();xX();Vt();GU();c5()});function mF5($){return $ instanceof qX}function CE8($,Z){return Z-$>=lF5}class rT1{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??yF5;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??hF5,Q=this.options.itemIntervalMs??gF5,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()-AN1),nB1);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()-cF5));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 iB1(this.taskBoard,X,Y),await pB1(this.taskBoard,this.billing,X,Y)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async settleFinishedRunsWithoutPr($,Z){let Q=0,Y=await this.taskBoard.listItemsFinishedWithoutPr($,Z);for(let{id:X,organizationId:J,finishedAt:G}of Y)try{if(!await this.taskBoard.claimSweep(X,J,Z))continue;let W=await this.taskBoard.getById(X,J);if(!W||W.status!==K1.progress||uJ(W)||W.assigneeId!==o$)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await sT1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!CE8(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(()=>{}),H8(J,F),await WU(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 _O(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),mF5(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()+uF5)).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(()=>{}),H8(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(!CE8(BL(Q,Z.reviewCycleStartedAt),Date.now()))return;await WU($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,Q){if(!await this.taskBoard.claimSweep($,Z,Q))return!1;let Y=await this.taskBoard.getById($,Z);if(!Y)return!1;if(!uJ(Y))return!1;let X=Y.assigneeId===o$,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,Y.assignedBy??Y.createdBy);if(!G)return!1;if(J.length===0){if(await sT1(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 Ct(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 IE8(G,Y,W))return!0;if(!X)return!1;if(await O48(G,Y))return!0;if(!lB1(W))return!1;return await kt(G,Y,{previewMatchesHead:cB1(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var yF5=60000,gF5=300000,hF5=50,uF5=60000,lF5=900000,cF5=120000;var SE8=L(()=>{v8();jv0();VE8();vO();bt();GU();kE8();c5();WW();tB1();gQ();o90()});async function _E8($,Z,Q=ez){return await bE8($,Z,Q,{})}async function vE8($,Z,Q,Y=ez){return await bE8($,Q,Y,{activityId:Z})}async function bE8($,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-dF5),settledBefore:new Date(Z-Q),limit:iF5,...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 pF5($.taskBoard,K,Q);for(let U of H){if(!o98(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 pF5($,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?s98(X,Q):Z.from}var dF5=1800000,iF5=200;var xE8=L(()=>{gO()});import{DBOS as k2,DBOSClient as nF5,SchedulerMode as tF5}from"@dbos-inc/dbos-sdk";function fE8($){jj=$}async function rF5($){if(!jj)return 0;try{return await vE8(jj,$,Date.now(),jj.settleMs)}catch(Z){return console.error(`[automations] settling board move ${$} failed`,Z),0}}async function aF5(){if(!jj)return 0;try{return await _E8(jj,Date.now(),jj.settleMs)}catch($){return console.error("[automations] board transition sweep failed",$),0}}async function eF5($){await k2.sleep((jj?.settleMs??ez)+sF5),await k2.runStep(()=>rF5($),{name:"settleBoardMove"})}async function $U5($,Z){let Q=await k2.runStep(()=>aF5(),{name:"sweepBoardMoves"});if(Q>0)console.log(`[automations] board transition sweep fired ${Q} trigger(s) the settle wait missed`)}async function gE8($){let Z=jj;if(!Z||!eT1)return;if(!await Z.automations.hasActiveBoardColumnTrigger($.taskBoardItemId,$.to))return;let Q=`board-settle:${$.activityId}`;if(!k2.isWithinWorkflow()){await k2.startWorkflow(eT1,{workflowID:Q,queueName:f2})($.activityId);return}let Y=await nF5.create({systemDatabaseUrl:Z.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:1});try{await Y.enqueue({workflowName:yE8,queueName:f2,workflowID:Q},$.activityId)}finally{await Y.destroy()}}function hE8(){if(aT1)return;eT1=k2.registerWorkflow(eF5,{name:yE8}),aT1=k2.registerWorkflow($U5,{name:"boardTransitionSweepWorkflow"}),k2.registerScheduled(aT1,{name:"boardTransitionSweepWorkflow",crontab:oF5,mode:tF5.ExactlyOncePerIntervalWhenActive})}var oF5="*/5 * * * *",sF5=2000,jj=null,yE8="boardTransitionSettleWorkflow",eT1=null,aT1=null;var uE8=L(()=>{gO();xE8()});import{readdir as ZU5,rm as ug0}from"fs/promises";import{join as lg0}from"path";async function cg0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-QU5),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await ou($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await lE8($,X,Z);else if(!X.startsWith(".")){let J=lg0($,X),G=await ou(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await lE8(J,K,Z)}if((await ou(J)).length===0)await ug0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function lE8($,Z,Q){let Y=0,X=lg0($,Z),J=await ou(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=lg0(X,W),H=await ou(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=lg0(K,U);await ug0(B,{recursive:!0,force:!0}),Y++}}if((await ou(K)).length===0)await ug0(K,{recursive:!0,force:!0})}if((await ou(X)).length===0)await ug0(X,{recursive:!0,force:!0});return Y}async function ou($){try{return(await ZU5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var QU5=30;var $q1=()=>{};import{DBOS as Zq1,SchedulerMode as YU5}from"@dbos-inc/dbos-sdk";async function JU5(){let $=[VH(),Xl(),ND()],Z=0;for(let Q of $)try{Z+=await cg0(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 GU5($,Z){await Zq1.runStep(()=>JU5(),{name:"monitoringRetention"})}function mE8(){if(cE8)return;cE8=!0;let $=Zq1.registerWorkflow(GU5,{name:"monitoringRetentionWorkflow"});Zq1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:XU5,mode:YU5.ExactlyOncePerIntervalWhenActive})}var XU5="23 4 * * *",cE8=!1;var dE8=L(()=>{cW();$q1()});function iE8($){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 vY.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await EP($.db,Z,Y.role);return X.boundAuth=IP1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new RT(Q,void 0,X.boundAuth,Y.role,"self"),nz(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var pE8=L(()=>{XX();vF()});function nE8(){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=gQ0(N.params.name),D=N.params.arguments||{},O=Object.keys(D).map((w)=>gQ0(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}${gQ0(N.method)}${L9.reset}`}}catch{}}let W=gQ0(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${L9.mcp}${gQ0(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=KU5(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=WU5(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,WU5=($)=>{if($>=500)return L9.serverError;if($>=400)return L9.clientError;if($>=300)return L9.redirect;return L9.ok},KU5=($)=>{return L9[$]||L9.reset},gQ0=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var tE8=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 aE8}from"crypto";import{mkdir as HU5,readdir as FU5,rm as oE8,stat as eE8}from"fs/promises";import{join as Yq1,relative as UU5}from"path";import{z as J8}from"zod";function ZP8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return Yq1(NU5,Z)}function QP8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function Qq1($,Z){let Q=ZP8($),Y=QP8(Z);return Yq1(Q,Y)}function BU5($,Z,Q,Y){let X=B0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return aE8("sha256",X).update(J).digest("hex")}function rE8($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=BU5(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${QP8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function YP8($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${aE8("md5","etag").update(Y).digest("hex")}"`}async function XP8($,Z,Q,Y,X){try{let J=await FU5($,{withFileTypes:!0});for(let G of J){let W=Yq1($,G.name),H=UU5(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 XP8(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 eE8(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:YP8(W,F.mtime,F.size)})}catch{}}}}catch{}}function JP8($,Z){let Y=Q0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:J8.object({prefix:J8.string().optional(),maxKeys:J8.number().optional().default(1000),continuationToken:J8.string().optional(),delimiter:J8.string().optional()}),outputSchema:J8.object({objects:J8.array(J8.object({key:J8.string(),size:J8.number(),lastModified:J8.string(),etag:J8.string()})),nextContinuationToken:J8.string().optional(),isTruncated:J8.boolean(),commonPrefixes:J8.array(J8.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=ZP8(Y);await HU5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await XP8(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:J8.object({key:J8.string()}),outputSchema:J8.object({contentType:J8.string().optional(),contentLength:J8.number(),lastModified:J8.string(),etag:J8.string(),metadata:J8.record(J8.string(),J8.string()).optional()}),handler:async(X)=>{let J=X,G=Qq1(Y,J.key),W=await eE8(G);return{contentType:tz1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:YP8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:J8.object({key:J8.string(),expiresIn:J8.number().optional()}),outputSchema:J8.object({url:J8.string(),expiresIn:J8.number()}),handler:async(X)=>{let J=X,G=iO(J.expiresIn,sE8);return{url:rE8(Z,Y,J.key,G,"GET"),expiresIn:G}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:J8.object({key:J8.string(),expiresIn:J8.number().optional(),contentType:J8.string().optional()}),outputSchema:J8.object({url:J8.string(),expiresIn:J8.number()}),handler:async(X)=>{let J=X,G=iO(J.expiresIn,sE8);return{url:rE8(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:J8.object({key:J8.string()}),outputSchema:J8.object({success:J8.boolean(),key:J8.string()}),handler:async(X)=>{let J=X,G=Qq1(Y,J.key);try{return await oE8(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:J8.object({keys:J8.array(J8.string()).max(1000)}),outputSchema:J8.object({deleted:J8.array(J8.string()),errors:J8.array(J8.object({key:J8.string(),message:J8.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=Qq1(Y,K);try{await oE8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function Xq1($,Z,Q){let Y=JP8(Z,Q),X=new OE({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:CZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:J8.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:J8.object({}).shape;X.registerTool(G.name,{description:G.description??"",inputSchema:W,outputSchema:K,annotations:G.annotations,_meta:G._meta},async(H)=>{try{let F=await G.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let J=new qW({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),BH(X,J,$,"mcp:dev-assets")}async function GP8($,Z,Q,Y){let J=JP8(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 NU5="./data/assets",sE8=3600,$P8,WP8;var KP8=L(()=>{u1();Xo();K8();MH0();Yo();NJ();pO();Ey0();$P8=new Z1;$P8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return Xq1($.req.raw,Z,Y)});WP8=$P8});var HP8={};O6(HP8,{mountDevRoutes:()=>DU5});function DU5($,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 Xq1(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 GP8(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",WP8);let Q=new Z1;Q.use("*",jU({mountPath:"/api/dev-assets"})),Q.route("/",wy0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var FP8=L(()=>{K8();uz1();Ey0();KP8()});var PP8={};O6(PP8,{watchHandler:()=>EP8,resolveVoiceSigningSecret:()=>OP8,resolveCorsOrigin:()=>jP8,isSsoExemptPath:()=>LP8,isAllowedOAuthRedirectUri:()=>wP8,createApp:()=>RU5});import{readFileSync as LU5}from"fs";import{randomBytes as OU5}from"crypto";import{PrometheusSerializer as jU5}from"@opentelemetry/exporter-prometheus";import{DBOS as JD}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as PU5,oAuthProtectedResourceMetadata as zU5}from"better-auth/plugins";async function wU5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,NP8(UP8)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),NP8(UP8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function NP8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function LP8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${$y0}/`)||$.startsWith(`${tf0}/`)}function OP8($){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)"),OU5(32).toString("base64")}function jP8($,{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 wP8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"}async function RU5($={}){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 mT1,K,H,F,U=null;if($.disableNats)K=dT1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new sZ0,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=DE8();let F0=B0().natsCredsPath,G0;if(F0)try{G0=LU5(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=tZ1()?new _Z1({getJetStream:()=>U.getJetStream(),selfListVersion:_g0.version}):null;P0?.init().catch(()=>{}),Y=P0;let z0=new w71({getJetStream:()=>U.getJetStream()});z0.init().catch(()=>{}),X=z0;let j1=new eh(xB1,{getJetStream:()=>U.getJetStream()}),b$=new eh(s90,{getJetStream:()=>U.getJetStream()});j1.init().catch(()=>{}),b$.init().catch(()=>{}),J={reads:j1,cards:b$};let r$=new Xj1({getJetStream:()=>U.getJetStream()});r$.init().catch(()=>{}),G=r$,K=dT1({getConnection:()=>U.getConnection()}),H=new iT1({getConnection:()=>U.getConnection()}),F=new tT1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),lH8(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(),g2$(()=>U.getConnection()),F.init().catch((B8)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",B8)})})}if(C2)await C2();vZ1(Y),P71(X),A71(()=>U?.getConnection()??null),fB1(J),Jj1(G);let B={storage:new nc(Z.db),sseHub:I6,onThreadFinished:async(F0,G0)=>_t(new jW(Z.db),F0,G0,new C3(Z.db))},D=new hD1(B),O=new M70(Z.db),j=new oT1(O);j.start(),YZ8(H),H.start((F0)=>{Wb0(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;bz1(w),U?.onReady(()=>bz1(w)),hj1(w),U?.onReady(()=>hj1(w)),F.init().catch((F0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",F0)}),C2=async()=>{await D.stopAll(),D.dispose(),j.dispose(),H.stop().catch(()=>{}),XU8(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),h2$(),G.teardown(),vZ1(null),P71(null),A71(null),fB1(null),Jj1(null)};let E=new Z1;if(E.use("*",Zj1({enabled:(F0)=>bo(F0,"debug")==="1"})),E.use("*",Fh0),E.use("/*",fH8({origin:(F0,G0)=>jP8(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("*",nE8());E.use("*",async(F0,G0)=>{if(await G0(),ms(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(tX.HEALTH,(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);return F0.json({status:"ok"})}),E.get(tX.HEALTH_LIVE,(F0)=>{return F0.json({status:"ok"})}),E.get(tX.HEALTH_READY,async(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);let G0={};if(G0.postgres={status:await wU5(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(tX.METRICS,async(F0)=>{try{let G0=await Dh0.collect(),P0=EU5.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(`${tX.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(F0)=>{let G0=F0.req.param("queueName");if(!AU5.has(G0))return F0.json({error:`Unknown queue: ${G0}`},404);let[P0,z0]=await Promise.all([JD.listQueuedWorkflows({queueName:G0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),JD.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",qw8),E.route("/api/_reports",bw8),E.route("/api/_stripe",CT1),E.route("/api/_github",yw8({taskBoard:()=>l,contextFactory:()=>b})),E.route("/api/_git",no);let T={db:Z.db,encryptionKey:B0().encryptionKey};E.route("/api/_jira",tw8(T)),E.route("/api/_jira",lw8(T)),E.route("/report",Sw8($.clientDir)),E.route("/api/auth/custom",WF8),E.all("/api/auth/admin/*",iF8),E.all("/api/auth/*",async(F0)=>{return await B4.handler(F0.req.raw)});let z=yW8();z.use("/.well-known/oauth-protected-resource/mcp/:connectionId",c70),z.use("/mcp/:connectionId/.well-known/oauth-protected-resource",c70),E.route("/",z),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",A70),E.route("/",cW8()),E.use("/oauth-proxy/:connectionId/*",c70),E.all("/oauth-proxy/:connectionId/*",BP8);let A=async(F0)=>{let P0=await TU5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",c70),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let R=async(F0)=>{let P0=await qU5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",R);let f=gH8({ttlMs:120000}),S=await fK8({db:Z.db,auth:B4,encryption:{key:B0().encryptionKey},observability:{tracer:Rj,meter:G$},modelListCache:W,providerKeyCache:K,memberRoleCache:f});vY.set(S),Y$$({db:Z.db,baseUrl:B5()}),yK8({db:Z.db}),lK8({db:Z.db}),DH8({db:Z.db}),AH8({db:Z.db}),iw8({db:Z.db,encryptionKey:B0().encryptionKey}),H88({db:Z.db}),IH8({db:Z.db}),u88({db:Z.db});let V=ZE(Z.db),v=new R00(Z.db),b=iE8({db:Z.db});sL1({storage:V,studioContextFactory:b,orgContextFactory:(F0)=>hJ(Z.db,F0),systemDatabaseUrl:x10(B0().databaseUrl,B0().databasePgSsl)}),vL1({systemDatabaseUrl:x10(B0().databaseUrl,B0().databasePgSsl),studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:I6}}),VL1({dispatchRunFn:N98,studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:I6}});let h=new nc(Z.db),l=new jW(Z.db),d=new C3(Z.db),W0=new rT1(l,b,d);if(B0().taskBoardReviewSweeperEnabled){W0.start();let F0=C2;C2=async()=>{await F0?.(),W0.dispose()}}fE8({automations:V,taskBoard:l,fire:XH,systemDatabaseUrl:x10(B0().databaseUrl,B0().databasePgSsl),settleMs:B0().boardTransitionSettleSeconds*1000}),w88(gE8),v98({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let F0=U?.getConnection();return F0?await DP8.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(hg0(I6,G0,F0,P0),P0)await _t(l,F0,G0,d);return P0},markRunRequiresAction:async(F0,G0)=>{let P0=await h.requiresActionIfInProgress(F0,G0);return hg0(I6,G0,F0,P0),P0},markRunFailed:async(F0,G0,P0,z0)=>{let j1=await h.markRunFailed(F0,G0,P0,z0);if(hg0(I6,G0,F0,j1),j1)await _t(l,F0,G0,d);return j1},clearSynthesizedError:async(F0,G0)=>{await h.messageParts().replaceMessageParts(F0,sz(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,mU(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)}}),x58({studioContextFactory:b,systemDatabaseUrl:x10(B0().databaseUrl,B0().databasePgSsl),streamBuffer:F}),mE8(),X$$(),hK8(),mK8(),OH8(),qH8(),nw8(),hE8(),D88(),CH8(),l88(),hw8();let I0=async(F0,G0,P0)=>{let z0=await V.findById(F0,G0);if(!z0)throw Error("Automation not found");return ZO1({automationId:z0.id,organizationId:z0.organization_id,triggerId:null})},J0=new uo(V,({automation:F0,trigger:G0,contextMessages:P0,idempotencyKey:z0})=>XH({automationId:F0.id,organizationId:F0.organization_id,triggerId:G0.id,contextMessages:P0},{idempotencyKey:z0})),U0=[VH(),Xl(),ND()];for(let F0 of U0)cg0(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(Kh0(F0.req.path))return G0();let P0={measure:async(j1,b$)=>{NH(F0,j1);try{return await b$()}finally{RW(F0,j1)}}},z0=await vY.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/*",fo),E.use("/api/:org/v1/*",fo),E.use("/api/:org/files/*",fo),E.use("*",async(F0,G0)=>{if(LP8(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("*",jU({mountPath:"/api/org-sso"})),t.route("/",Yy0()),E.route("/api/org-sso",t),E.get("/api/tools/management",(F0)=>{return F0.json({tools:C00,grouped:TT()})}),E.use("/mcp/*",async(F0,G0)=>{NH(F0,"mcp");try{return await G0()}finally{RW(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),bK()){let{mountDevRoutes:F0}=(FP8(),sg0(HP8));F0(E,r)}let $0=new Z1;$0.use("*",jU({mountPath:"/mcp"})),$0.route("/",Yx0()),E.route("/mcp",$0);let X0=new Z1;X0.use("*",jU({mountPath:"/mcp/self"})),X0.route("/",sy0()),E.route("/mcp/self",X0);let h0=new Z1;h0.use("*",jU({mountPath:"/mcp"})),h0.route("/",Gx0()),E.route("/mcp",h0),E.use("/api/:org/models/*",async(F0,G0)=>{NH(F0,"llm_models");try{return await G0()}finally{RW(F0,"llm_models")}});let C0=FU8({cancelBroadcast:H,streamBuffer:F,runRegistry:D});E.route("/api",C0),E.route("/api",aw8);let H1=new Z1;H1.use("*",jU({mountPath:"/api"})),H1.route("/",$g0()),E.route("/api",H1),E.route("/api",Ew8);let c0=new Z1;c0.use("*",jU({mountPath:"/api"})),c0.route("/",Zg0({tokenStorage:v,automationEventDispatcher:J0})),E.route("/api",c0);let j0=new M00(Z.db),E0=new Z1;E0.use("*",jU({mountPath:"/api"})),E0.route("/",Hy0()),E.route("/api",E0),E.route("/api/deco-sites",RU8());let n0=new Z1;n0.use("*",jU({mountPath:"/api/deco-sites"})),n0.route("/",Uy0()),E.route("/api/deco-sites",n0),E.route($y0,pF8()),E.route(FL8,BL8()),E.route("/api/_editor-resolve",zw8()),E.route(FF8,UF8()),E.route(tf0,MF8());let O1=B0(),o0=O1.elevenlabsApiKey?new kg0({apiKey:O1.elevenlabsApiKey,model:O1.elevenlabsVoiceModel,conversationModel:O1.elevenlabsConversationModel,voiceId:O1.elevenlabsVoiceId}):null,b0={openai:O1.openaiLiveApiKey?new AT1({apiKey:O1.openaiLiveApiKey,voice:O1.openaiLiveVoice}):null,elevenlabs:o0?new zT1(o0,()=>U?.getConnection()??null):null},d0=new VT1({adapter:o0,conversationAdapters:b0,defaults:O1,secret:OP8(O1),getConnection:()=>U?.getConnection()??null}),i0=nj8({voiceSessions:d0,kvStorage:j0,runRegistry:D,streamBuffer:F,sseHub:I6,cancelBroadcast:H,tokenStorage:v,automationEventDispatcher:J0,mountDevAssets:bK(),mcpAuth:r,oauthProxyHandler:BP8,watchHandler:EP8,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(NU8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([I6.stop(),C2?Promise.resolve(C2()).finally(()=>{C2=null}):Promise.resolve()]),U)await U.drain().catch((F0)=>console.error("[shutdown] NATS drain error:",F0));console.log("[shutdown] Flushing telemetry..."),await tJ().catch((F0)=>console.error("[shutdown] Telemetry flush error:",F0)),console.log("[shutdown] Closing database..."),await FH$(Z).catch((F0)=>console.error("[shutdown] Database close error:",F0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await JD.registerQueue(H3,{partitionQueue:!0,concurrency:nL1,minPollingIntervalMs:tL1}),await JD.registerQueue(uW,{partitionQueue:!0,concurrency:SL1,priorityEnabled:!0}),await JD.registerQueue(FD,{workerConcurrency:B0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await JD.registerQueue(UD,{workerConcurrency:B0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await JD.registerQueue(qj,{partitionQueue:!0,concurrency:b58}),await JD.registerQueue(x2,h88),await JD.registerQueue(f2),await lz1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((F0)=>JD.deleteQueue(F0))),await oL1(Z.pool),nN$().catch((F0)=>{console.error("[studio-pack-backfill] failed:",F0)}),yd(Z.db).catch((F0)=>{console.error("[automations] built-in seed failed:",F0)}),J$$().catch((F0)=>{console.error("[org-fs] public-sets boot sync kick failed:",F0)})}})}var DP8,UP8=5000,C2=null,BP8=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 vY.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 Io(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=sE1(await W.json());if(!K)K=H.origin;let N=await T70(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=lW8(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(!wP8(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(_H8(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 D2(G.connection_url)??D}catch{l=D}let d={connectionId:Z,accessToken:b.access_token,refreshToken:typeof b.refresh_token==="string"?b.refresh_token:null,scope:typeof b.scope==="string"?b.scope:null,expiresAt:h,clientId:A,clientSecret:R,tokenEndpoint:l};await new e5(X.db,X.vault).upsert(d)}}catch(b){console.error("[oauth-proxy] failed to persist downstream token:",b)}return new Response(v,{status:f.status,statusText:f.statusText,headers:S})}return new Response(f.body,{status:f.status,statusText:f.statusText,headers:S})},EP8=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&&(!xB(Y)||!await fB(Z)))return $.json({error:"forbidden"},403);let W=G?Yv0:Y;if(G)SO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return Bj($,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()})})})},EU5,AU5,TU5=()=>zU5(B4),qU5=()=>PU5(B4);var zP8=L(()=>{p$();u1();G$$();uK8();dK8();jH8();RH8();Y70();LB1();SH8();o90();H9();ii();q8();K8();df0();yH8();Qj1();nK();vF();Hz1();S3();b6();Q6();Oz1();NF8();VF8();zz1();nF8();Cz1();gz1();hz1();xK();q70();uz1();BU8();pf0();tj8();ej8();$w8();Xw8();Dw8();dz1();Xx0();rZ0();Pw8();Wx0();AA1();Aw8();PA1();Rw8();_w8();xw8();fw8();gw8();uw8();cw8();ow8();lT1();sz1();ew8();zA1();OA1();eQ0();LE8();IT1();TJ();_B0();F40();gB1();X40();G40();Wj1();OE8();wE8();xz1();RE8();sv0();ME8();We();k00();CO();c5();NP1();SE8();uE8();jG();pz();dE8();aF0();$q1();cW();cz1();IO();RL1();aF0();SZ0();q00();L01();pE8();QE();tE8();Fs();Hz1();Rt();dt();Kb0();DP8=_(xH(),1);EU5=new jU5,AU5=new Set([H3,uW,FD,UD,qj,x2])});var RP8={};O6(RP8,{resolveClientDir:()=>_U5,resolveAssetPathWithTraversalCheck:()=>qP8,isPathWithinDirectory:()=>TP8,createAssetHandler:()=>vU5});import{resolve as hQ0,dirname as MU5,join as VU5,extname as IU5,basename as kU5,sep as AP8}from"path";function CU5($,Z){if($===Z||kU5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${AP8}assets${AP8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function TP8($,Z){let Q=hQ0(Z),Y=hQ0($);return Y===Q||Y.startsWith(Q+"/")}function qP8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=hQ0(Z,Q);if(!TP8(Y,Z))return null;return Y}function _U5($,Z="../client"){let Q=new URL($),Y=MU5(Q.pathname);return hQ0(Y,Z)}function vU5($={}){let{env:Z="production",clientDir:Q=SU5,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=qP8({requestPath:W,clientDir:Q});if(!K)return null;let H=VU5(K,"index.html"),F=hQ0(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(IU5(K))?[H,F]:[];for(let D of[K,...B])try{let O=Bun.file(D);if(await O.exists())return new Response(O,{headers:CU5(D,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var SU5="./dist/client";var MP8=()=>{};var VP8={};O6(VP8,{tryUpgradePreviewWs:()=>uU5,tryHandlePreviewHttp:()=>hU5,previewWebSocketHandler:()=>lU5,parsePreviewBaseDomain:()=>gU5,isPreviewWsData:()=>mg0,extractHandleFromHost:()=>Jq1});function fU5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function yU5(){return new Response(xU5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function gU5($){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 Jq1($,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 hU5($,Z){let Q=Jq1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let Y=await Z.getRunner();if(!Y)return lQ0(503,"preview proxy not configured");let X=await Y.proxyPreviewRequest(Q,$);if(X.headers.get(Sn)&&fU5($))return yU5();return X.headers.delete(Sn),X}function lQ0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function mg0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function uU5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=Jq1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let X=await Q.getRunner();if(!X)return lQ0(503,"preview proxy not configured");let J=await X.resolvePreviewUpstreamUrl(Y);if(!J)return lQ0(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return lQ0(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 lQ0(426,"upgrade failed");return}function uQ0($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var bU5=256,xU5='<!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>',lU5;var IP8=L(()=>{x50();lU5={open($){let Z=$.data;if(!mg0(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)}`),uQ0($,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)=>{uQ0($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{uQ0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!mg0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=bU5){uQ0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!mg0(Z))return;uQ0($,Z,1000,"")}}});p$();var wq1="14";function Eq1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:wq1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}p$();import pP8 from"pg";var Pq1=8314027461559302n,nP8=600000,tP8=500;async function zq1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=nP8}=$,X=$.log??((K)=>console.log(K)),J=new pP8.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",[Pq1.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$(tP8)}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)",[Pq1.toString()])}catch{}await J.end().catch(()=>{})}}u1();$h0();b6();function pz8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function jh0($,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 YR1(){let $=pz8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:jh0($,"--cpu-prof-dir")??process.cwd(),name:jh0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(jh0($,"--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.'}))}Ph0();var QY0;function NR1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=h2();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(()=>{}),QY0=setInterval(()=>void Z().catch(()=>{}),$),QY0.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(QY0)clearInterval(QY0)}}import*as oz8 from"bun:jsc";var{startSamplingProfiler:sz8,samplingProfilerStackTraces:rz8}=oz8;function BR1(){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{sz8()}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=rz8()?.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 DR1(){YR1();let $=[NR1(),UR1(),BR1()];return()=>{for(let Z of $)Z()}}import{existsSync as oU5}from"fs";var gW=B0();$R1();var{DBOS:cQ0,DBOSClient:cU5}=await import("@dbos-inc/dbos-sdk");function Uq1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var mU5=[H3,uW,FD,UD,qj,x2,f2],dU5=gW.dispatchRole==="worker"?mU5:gW.dispatchRole==="api"?[]:void 0;cQ0.setConfig(Eq1({systemDatabaseUrl:Uq1(gW.databaseUrl,gW.databasePgSsl),poolSize:gW.dbosPoolSize,executorID:gW.podName,listenQueues:dU5}));var{createApp:iU5}=await Promise.resolve().then(() => (zP8(),PP8)),{isServerPath:pU5}=await Promise.resolve().then(() => (eQ0(),yq1)),{createAssetHandler:nU5,resolveClientDir:vP8}=await Promise.resolve().then(() => (MP8(),RP8)),tU5=gW.port,kP8=vP8(import.meta.url,"../client"),bP8=oU5(kP8)?kP8:vP8(import.meta.url,"../dist/client"),sU5=nU5({clientDir:bP8,isServerPath:pU5}),rU5={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function aU5($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(rU5))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:eU5,tryHandlePreviewHttp:$N5,tryUpgradePreviewWs:ZN5,previewWebSocketHandler:Gq1,isPreviewWsData:Wq1}=await Promise.resolve().then(() => (IP8(),VP8)),{getOrInitSharedRunner:xP8}=await Promise.resolve().then(() => (CX(),Mn$)),fP8=eU5(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),CP8={baseDomain:fP8??"",getRunner:xP8};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())xP8().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var dg0=await iU5({clientDir:bP8}),Kq1=process.env.DBOS_CONDUCTOR_KEY?.trim(),SP8=process.env.DBOS_CONDUCTOR_URL?.trim();await zq1({databaseUrl:Uq1(gW.databaseUrl,gW.databasePgSsl)},()=>cQ0.launch({...Kq1?{conductorKey:Kq1}:{},...Kq1&&SP8?{conductorURL:SP8}:{}}));console.log(`[dbos] application version: ${cQ0.applicationVersion}`);var Hq1=5,Fq1=0;await e$(async()=>{Fq1++;try{return await dg0.initDbos()}catch($){let Z=Fq1>=Hq1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${Fq1}/${Hq1} failed, ${Z}`,$),$}},{maxAttempts:Hq1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});var QN5=Bun.serve({idleTimeout:0,port:tU5,hostname:"0.0.0.0",fetch:async($,Z)=>{if(fP8){let Y=await ZN5($,Z,CP8);if(Y===void 0)return;if(Y)return Y;let X=await $N5($,CP8);if(X)return X}let Q=await sU5($);if(Q)return aU5(Q);return dg0.fetch($,{server:Z})},websocket:{open($){if(Wq1($.data))Gq1.open($)},message($,Z){if(Wq1($.data))Gq1.message($,Z)},close($){if(Wq1($.data))Gq1.close($)}},development:!1}),YN5=DR1();if(gW.localMode)Promise.resolve().then(() => (Zu(),mv0)).then(async({seedLocalMode:$,markSeedComplete:Z,healLocalJwks:Q})=>{try{let Y=await Q();if(Y>0)console.log(`[local-mode] cleared ${Y} undecryptable JWKS key(s); Better Auth will generate a fresh one`);let X=await $()}catch(Y){console.error("Failed to seed local mode:",Y)}finally{Z()}}).catch(async($)=>{console.error("Failed to load local-mode module:",$);try{let{markSeedComplete:Z}=await Promise.resolve().then(() => (Zu(),mv0));Z()}catch{}});var _P8=!1;async function XN5($){let Z;try{Z=await cU5.create({systemDatabaseUrl:Uq1(gW.databaseUrl,gW.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:uW,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:uW}),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 ig0($){if(_P8)return;_P8=!0,console.log(`
4497
4497
  [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{YN5(),dg0.markShuttingDown();let J=Aq1(gW.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await J$(J),await QN5.stop(!0);let G=cQ0.executorID;await cQ0.shutdown(),await XN5(G),await dg0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>ig0("SIGTERM"));process.on("SIGINT",()=>ig0("SIGINT"));process.on("SIGHUP",()=>ig0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),ig0("uncaughtException")});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.509.2",
3
+ "version": "4.509.3",
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-CTjWv7p_.js";import{C as f}from"./index-Ddu_rSLm.js";import{a as x}from"./thread-route-D3q_rVP7.js";import{u as g}from"./use-task-metadata-CPknFXQ5.js";import{AppViewContent as h}from"./project-app-view-TZcg1ec8.js";import"./use-mobile-BHIxo6gN.js";import"./use-app-takeover-DSm0hM-q.js";import"./sheet-CcsrBrXF.js";import"./tooltip-DqmGcdDJ.js";import"./index-CFXQHfl1.js";import"./use-project-native-view-presence-BL9-bchu.js";import"./use-panel-navigate-QANI2F_X.js";import"./use-project-scope-GW2bAOd3.js";import"./repository-binding-CUKMFYlr.js";import"./use-mcp-client-CGKK63Kz.js";import"./auth-BLd_oaZA.js";import"./thread-intent-CeVBLvFY.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-BOhZFR5D.js";import"./task-board-zMTndQaY.js";import"./schema-ipxqGklP.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-DfP4tBEs.js";import"./use-organization-settings-CtFTrm2u.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-BBR2iDYh.js";import"./AlertCircle-B_HiUL3V.js";import"./Tool01-C_CKkVec.js";import"./ArrowUp-gZglv5wp.js";import"./ArrowLeft-CGlVoxui.js";import"./LinkBroken01-CXNh4eyP.js";import"./ShoppingBag01-BZRikaTk.js";import"./ZoomOut-Dg3QgYnY.js";import"./Building02-DMZnZO99.js";import"./CheckCircle-DEEJUOvq.js";import"./ChevronUp-Cb-JYgJS.js";import"./ChevronSelectorVertical-butN_Pnw.js";import"./UserSquare-BSP-qc9x.js";import"./Copy01-CRR-EuFi.js";import"./CreditCard01-B1XIHK7B.js";import"./DotsVertical-D1bAYhly.js";import"./Image01-DCu3b5kU.js";import"./Globe04-DSOOTZNm.js";import"./SwitchHorizontal01-QJ8HpWxv.js";import"./Key01-BWZX0ddW.js";import"./Link01-DyUd5OlZ.js";import"./Monitor01-BakIeQUF.js";import"./Sun-DrrCSWyx.js";import"./Play-Cow0cNbD.js";import"./Plus-BymkC_GC.js";import"./SearchMd-O4PYnwLm.js";import"./Trash01-CyUDLdm2.js";import"./Upload01-DndYeCIj.js";import"./User01-Bk3qtSGw.js";import"./Users01-CTggT7zQ.js";import"./XClose-D3hBIxOe.js";import"./toolbar-icon-button-Bjp-WCB6.js";import"./shell-layout-CaDbhp-Y.js";import"./avatar-DaqDyQT2.js";import"./use-clock-tick-L_13B5gz.js";import"./command-DHGvWDa5.js";import"./index-DuouRhoR.js";import"./integration-icon-4vqLdvgx.js";import"./project-icon-D91bSjz0.js";import"./new-project-dialog-BmQvk0AN.js";import"./label-BBFj7oje.js";import"./repository-import-picker-B0XPae0i.js";import"./use-navigate-to-agent-DYlzYuXR.js";import"./repository-picker-tkfqc0HP.js";import"./useInfiniteQuery-DkDVK9bu.js";import"./infiniteQueryObserver-CYFeTV4A.js";import"./collection-search-DBI1dP1G.js";import"./use-debounced-value-DSvxzSzu.js";import"./required-auth-layout-DzBlEUGS.js";import"./autosend-CMH8Nd3q.js";import"./use-org-sso-g2a2pIE8.js";import"./resizable-BzRss8B3.js";import"./icon-button-GVvv_TGw.js";import"./tool-namespace-CGmm1XsL.js";import"./use-mcp-tools-CXE77GDs.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-B6D8q_ye.js";import"./types-Bn1OkBUZ.js";import"./chat-context-CsSueqYK.js";import"./use-decopilot-events-D9D6ni5J.js";import"./use-ai-providers-CghFth1V.js";import"./use-chat-navigation-DTChKwGZ.js";import"./location-BjlyegC2.js";import"./task-route-Da2kAtHB.js";import"./task-key-BCHdFiOO.js";import"./core.esm-g5_mpFZB.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-ChMBUAJw.js";import"./companions-core-DzyeM-yJ.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-ByTYKy_L.js";import"./form-DME968hC.js";import"./provision-repo-scoped-github-connection-lckxpDHD.js";import"./useQueries-h3ila7j5.js";import"./authenticate-and-persist-oauth-BHPSufEQ.js";import"./mcp-oauth-DpgBvC0Y.js";import"./mcp-oauth-Cu679GrT.js";import"./track-ZwUxBtRx.js";import"./extract-connection-data-B5vLAPIK.js";import"./connection-CyGwGe0c.js";import"./url-slug-DTtfghpx.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-CTjWv7p_.js";import{C as j}from"./index-Ddu_rSLm.js";import{F as v,H as S}from"./file-share-button-DbVp0fLm.js";import{u as k,b as y,e as _}from"./use-org-fs-B0bRoLwB.js";import{S as w}from"./settings-tab-DstxhXJl.js";import{b as M}from"./thread-route-D3q_rVP7.js";import"./use-mobile-BHIxo6gN.js";import"./use-app-takeover-DSm0hM-q.js";import"./sheet-CcsrBrXF.js";import"./tooltip-DqmGcdDJ.js";import"./index-CFXQHfl1.js";import"./use-project-native-view-presence-BL9-bchu.js";import"./use-panel-navigate-QANI2F_X.js";import"./use-project-scope-GW2bAOd3.js";import"./repository-binding-CUKMFYlr.js";import"./use-mcp-client-CGKK63Kz.js";import"./auth-BLd_oaZA.js";import"./thread-intent-CeVBLvFY.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-BOhZFR5D.js";import"./task-board-zMTndQaY.js";import"./schema-ipxqGklP.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-DfP4tBEs.js";import"./use-organization-settings-CtFTrm2u.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-BBR2iDYh.js";import"./AlertCircle-B_HiUL3V.js";import"./Tool01-C_CKkVec.js";import"./ArrowUp-gZglv5wp.js";import"./ArrowLeft-CGlVoxui.js";import"./LinkBroken01-CXNh4eyP.js";import"./ShoppingBag01-BZRikaTk.js";import"./ZoomOut-Dg3QgYnY.js";import"./Building02-DMZnZO99.js";import"./CheckCircle-DEEJUOvq.js";import"./ChevronUp-Cb-JYgJS.js";import"./ChevronSelectorVertical-butN_Pnw.js";import"./UserSquare-BSP-qc9x.js";import"./Copy01-CRR-EuFi.js";import"./CreditCard01-B1XIHK7B.js";import"./DotsVertical-D1bAYhly.js";import"./Image01-DCu3b5kU.js";import"./Globe04-DSOOTZNm.js";import"./SwitchHorizontal01-QJ8HpWxv.js";import"./Key01-BWZX0ddW.js";import"./Link01-DyUd5OlZ.js";import"./Monitor01-BakIeQUF.js";import"./Sun-DrrCSWyx.js";import"./Play-Cow0cNbD.js";import"./Plus-BymkC_GC.js";import"./SearchMd-O4PYnwLm.js";import"./Trash01-CyUDLdm2.js";import"./Upload01-DndYeCIj.js";import"./User01-Bk3qtSGw.js";import"./Users01-CTggT7zQ.js";import"./XClose-D3hBIxOe.js";import"./toolbar-icon-button-Bjp-WCB6.js";import"./shell-layout-CaDbhp-Y.js";import"./avatar-DaqDyQT2.js";import"./use-clock-tick-L_13B5gz.js";import"./command-DHGvWDa5.js";import"./index-DuouRhoR.js";import"./integration-icon-4vqLdvgx.js";import"./project-icon-D91bSjz0.js";import"./new-project-dialog-BmQvk0AN.js";import"./label-BBFj7oje.js";import"./repository-import-picker-B0XPae0i.js";import"./use-navigate-to-agent-DYlzYuXR.js";import"./repository-picker-tkfqc0HP.js";import"./useInfiniteQuery-DkDVK9bu.js";import"./infiniteQueryObserver-CYFeTV4A.js";import"./collection-search-DBI1dP1G.js";import"./use-debounced-value-DSvxzSzu.js";import"./required-auth-layout-DzBlEUGS.js";import"./autosend-CMH8Nd3q.js";import"./use-org-sso-g2a2pIE8.js";import"./resizable-BzRss8B3.js";import"./icon-button-GVvv_TGw.js";import"./popover-BmmpRE-t.js";import"./extract-connection-data-B5vLAPIK.js";import"./metadata-D72DunRR.js";import"./connection-CyGwGe0c.js";import"./url-slug-DTtfghpx.js";import"./chat-context-CsSueqYK.js";import"./use-decopilot-events-D9D6ni5J.js";import"./use-ai-providers-CghFth1V.js";import"./use-chat-navigation-DTChKwGZ.js";import"./location-BjlyegC2.js";import"./build-improve-prompt-doc-IMnqNYLL.js";import"./empty-state-CPp6Z3BQ.js";import"./use-date-fns-locale-AV4SnLxg.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-DpgBvC0Y.js";import"./mcp-oauth-Cu679GrT.js";import"./alert-dialog-CsMnazlX.js";import"./textarea-DjEn7s--.js";import"./use-connection-CEirJr2M.js";import"./use-debounced-autosave-Y-Qh1_Yq.js";import"./add-connection-dialog-m56a3mnH.js";import"./connection-card-C5Hd83Lq.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-CbCdchWH.js";import"./form-DME968hC.js";import"./select-JsVR4bkR.js";import"./index-BdQq_4o_.js";import"./schema-DUmP7mXK.js";import"./connection-form-helpers-DWTE_E_W.js";import"./authenticate-and-persist-oauth-BHPSufEQ.js";import"./collection-tabs-DOWtwIA2.js";import"./badge-Cs8ttYS4.js";import"./use-infinite-scroll-CLIMYjnC.js";import"./useSuspenseInfiniteQuery-k5nRBGbr.js";import"./file-type-icon-FwTaRFNS.js";import"./checkbox-D1RvSoCC.js";import"./search-input-CvsfrEx_.js";import"./use-mcp-auth-status-BHCb596Q.js";import"./types-Bn1OkBUZ.js";import"./use-mcp-tools-CXE77GDs.js";import"./use-mcp-prompts-Q6y3VcI9.js";import"./utils-CVEq3hMx.js";import"./switch-BdySpUUX.js";import"./scroll-area-DHYVnI-I.js";import"./optimistic-project-sidebar-views-Bz-512-j.js";import"./format-time-CAj8AQXM.js";import"./use-copy-BRcd4PJW.js";import"./virtual-mcp-Cb6kVn2b.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-eVGbRH7c.js";import"./use-secrets-Cd2WLNIt.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-CTjWv7p_.js";import{C as a}from"./index-Ddu_rSLm.js";import{L as n}from"./library-tab-CR7Dg6gz.js";import{u as c}from"./use-ensure-project-folder-D5O9v9JH.js";import{u}from"./use-project-scope-GW2bAOd3.js";import{p as l}from"./location-BjlyegC2.js";import"./use-mobile-BHIxo6gN.js";import"./use-app-takeover-DSm0hM-q.js";import"./sheet-CcsrBrXF.js";import"./tooltip-DqmGcdDJ.js";import"./index-CFXQHfl1.js";import"./use-project-native-view-presence-BL9-bchu.js";import"./thread-route-D3q_rVP7.js";import"./use-panel-navigate-QANI2F_X.js";import"./thread-intent-CeVBLvFY.js";import"./use-mcp-client-CGKK63Kz.js";import"./auth-BLd_oaZA.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-BOhZFR5D.js";import"./task-board-zMTndQaY.js";import"./schema-ipxqGklP.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-DfP4tBEs.js";import"./use-organization-settings-CtFTrm2u.js";import"./repository-binding-CUKMFYlr.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-BBR2iDYh.js";import"./AlertCircle-B_HiUL3V.js";import"./Tool01-C_CKkVec.js";import"./ArrowUp-gZglv5wp.js";import"./ArrowLeft-CGlVoxui.js";import"./LinkBroken01-CXNh4eyP.js";import"./ShoppingBag01-BZRikaTk.js";import"./ZoomOut-Dg3QgYnY.js";import"./Building02-DMZnZO99.js";import"./CheckCircle-DEEJUOvq.js";import"./ChevronUp-Cb-JYgJS.js";import"./ChevronSelectorVertical-butN_Pnw.js";import"./UserSquare-BSP-qc9x.js";import"./Copy01-CRR-EuFi.js";import"./CreditCard01-B1XIHK7B.js";import"./DotsVertical-D1bAYhly.js";import"./Image01-DCu3b5kU.js";import"./Globe04-DSOOTZNm.js";import"./SwitchHorizontal01-QJ8HpWxv.js";import"./Key01-BWZX0ddW.js";import"./Link01-DyUd5OlZ.js";import"./Monitor01-BakIeQUF.js";import"./Sun-DrrCSWyx.js";import"./Play-Cow0cNbD.js";import"./Plus-BymkC_GC.js";import"./SearchMd-O4PYnwLm.js";import"./Trash01-CyUDLdm2.js";import"./Upload01-DndYeCIj.js";import"./User01-Bk3qtSGw.js";import"./Users01-CTggT7zQ.js";import"./XClose-D3hBIxOe.js";import"./toolbar-icon-button-Bjp-WCB6.js";import"./shell-layout-CaDbhp-Y.js";import"./avatar-DaqDyQT2.js";import"./use-clock-tick-L_13B5gz.js";import"./command-DHGvWDa5.js";import"./index-DuouRhoR.js";import"./integration-icon-4vqLdvgx.js";import"./project-icon-D91bSjz0.js";import"./new-project-dialog-BmQvk0AN.js";import"./label-BBFj7oje.js";import"./repository-import-picker-B0XPae0i.js";import"./use-navigate-to-agent-DYlzYuXR.js";import"./repository-picker-tkfqc0HP.js";import"./useInfiniteQuery-DkDVK9bu.js";import"./infiniteQueryObserver-CYFeTV4A.js";import"./collection-search-DBI1dP1G.js";import"./use-debounced-value-DSvxzSzu.js";import"./required-auth-layout-DzBlEUGS.js";import"./autosend-CMH8Nd3q.js";import"./use-org-sso-g2a2pIE8.js";import"./resizable-BzRss8B3.js";import"./icon-button-GVvv_TGw.js";import"./search-toggle-DnQksH6F.js";import"./alert-dialog-CsMnazlX.js";import"./use-chat-navigation-DTChKwGZ.js";import"./use-org-fs-B0bRoLwB.js";import"./use-org-repo-syncs-CwdFEzac.js";import"./textarea-DjEn7s--.js";import"./markdown-3pW1-LsL.js";import"./use-copy-BRcd4PJW.js";import"./file-share-button-DbVp0fLm.js";import"./popover-BmmpRE-t.js";import"./preview-dialog-BCRc3vmH.js";import"./preview-content-fQPpQUgh.js";import"./file-preview-Ci3jlzfL.js";import"./utils-BgpN3-4K.js";import"./editor-sIXknvpq.js";import"./file-type-icon-FwTaRFNS.js";import"./folder-icon-C0blADE0.js";import"./empty-state-BCUme0Ms.js";import"./view-mode-toggle-D94mGT5R.js";import"./format-time-CAj8AQXM.js";import"./differenceInSeconds-C3x8sHUj.js";import"./table-DDi3Cf_t.js";import"./use-members-CG-2RwJv.js";import"./use-org-auth-client-BcOSmGyk.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-CTjWv7p_.js";import{C as c}from"./index-Ddu_rSLm.js";import{L as l}from"./preview-panel-SLsWXX4e.js";import{a as u}from"./use-panel-navigate-QANI2F_X.js";import{S as f}from"./settings-tab-DstxhXJl.js";import{b as h}from"./thread-route-D3q_rVP7.js";import"./use-mobile-BHIxo6gN.js";import"./use-app-takeover-DSm0hM-q.js";import"./sheet-CcsrBrXF.js";import"./tooltip-DqmGcdDJ.js";import"./index-CFXQHfl1.js";import"./use-project-native-view-presence-BL9-bchu.js";import"./thread-intent-CeVBLvFY.js";import"./use-mcp-client-CGKK63Kz.js";import"./auth-BLd_oaZA.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-BOhZFR5D.js";import"./task-board-zMTndQaY.js";import"./schema-ipxqGklP.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-DfP4tBEs.js";import"./use-organization-settings-CtFTrm2u.js";import"./repository-binding-CUKMFYlr.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-BBR2iDYh.js";import"./AlertCircle-B_HiUL3V.js";import"./Tool01-C_CKkVec.js";import"./ArrowUp-gZglv5wp.js";import"./ArrowLeft-CGlVoxui.js";import"./LinkBroken01-CXNh4eyP.js";import"./ShoppingBag01-BZRikaTk.js";import"./ZoomOut-Dg3QgYnY.js";import"./Building02-DMZnZO99.js";import"./CheckCircle-DEEJUOvq.js";import"./ChevronUp-Cb-JYgJS.js";import"./ChevronSelectorVertical-butN_Pnw.js";import"./UserSquare-BSP-qc9x.js";import"./Copy01-CRR-EuFi.js";import"./CreditCard01-B1XIHK7B.js";import"./DotsVertical-D1bAYhly.js";import"./Image01-DCu3b5kU.js";import"./Globe04-DSOOTZNm.js";import"./SwitchHorizontal01-QJ8HpWxv.js";import"./Key01-BWZX0ddW.js";import"./Link01-DyUd5OlZ.js";import"./Monitor01-BakIeQUF.js";import"./Sun-DrrCSWyx.js";import"./Play-Cow0cNbD.js";import"./Plus-BymkC_GC.js";import"./SearchMd-O4PYnwLm.js";import"./Trash01-CyUDLdm2.js";import"./Upload01-DndYeCIj.js";import"./User01-Bk3qtSGw.js";import"./Users01-CTggT7zQ.js";import"./XClose-D3hBIxOe.js";import"./toolbar-icon-button-Bjp-WCB6.js";import"./shell-layout-CaDbhp-Y.js";import"./avatar-DaqDyQT2.js";import"./use-project-scope-GW2bAOd3.js";import"./use-clock-tick-L_13B5gz.js";import"./command-DHGvWDa5.js";import"./index-DuouRhoR.js";import"./integration-icon-4vqLdvgx.js";import"./project-icon-D91bSjz0.js";import"./new-project-dialog-BmQvk0AN.js";import"./label-BBFj7oje.js";import"./repository-import-picker-B0XPae0i.js";import"./use-navigate-to-agent-DYlzYuXR.js";import"./repository-picker-tkfqc0HP.js";import"./useInfiniteQuery-DkDVK9bu.js";import"./infiniteQueryObserver-CYFeTV4A.js";import"./collection-search-DBI1dP1G.js";import"./use-debounced-value-DSvxzSzu.js";import"./required-auth-layout-DzBlEUGS.js";import"./autosend-CMH8Nd3q.js";import"./use-org-sso-g2a2pIE8.js";import"./resizable-BzRss8B3.js";import"./icon-button-GVvv_TGw.js";import"./preview-content-fQPpQUgh.js";import"./file-share-button-DbVp0fLm.js";import"./use-org-fs-B0bRoLwB.js";import"./popover-BmmpRE-t.js";import"./file-preview-Ci3jlzfL.js";import"./utils-BgpN3-4K.js";import"./editor-sIXknvpq.js";import"./file-type-icon-FwTaRFNS.js";import"./markdown-3pW1-LsL.js";import"./use-copy-BRcd4PJW.js";import"./location-BjlyegC2.js";import"./extract-connection-data-B5vLAPIK.js";import"./metadata-D72DunRR.js";import"./connection-CyGwGe0c.js";import"./url-slug-DTtfghpx.js";import"./chat-context-CsSueqYK.js";import"./use-decopilot-events-D9D6ni5J.js";import"./use-ai-providers-CghFth1V.js";import"./use-chat-navigation-DTChKwGZ.js";import"./build-improve-prompt-doc-IMnqNYLL.js";import"./empty-state-CPp6Z3BQ.js";import"./use-date-fns-locale-AV4SnLxg.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-DpgBvC0Y.js";import"./mcp-oauth-Cu679GrT.js";import"./alert-dialog-CsMnazlX.js";import"./textarea-DjEn7s--.js";import"./use-connection-CEirJr2M.js";import"./use-debounced-autosave-Y-Qh1_Yq.js";import"./add-connection-dialog-m56a3mnH.js";import"./connection-card-C5Hd83Lq.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-CbCdchWH.js";import"./form-DME968hC.js";import"./select-JsVR4bkR.js";import"./index-BdQq_4o_.js";import"./schema-DUmP7mXK.js";import"./connection-form-helpers-DWTE_E_W.js";import"./authenticate-and-persist-oauth-BHPSufEQ.js";import"./collection-tabs-DOWtwIA2.js";import"./badge-Cs8ttYS4.js";import"./use-infinite-scroll-CLIMYjnC.js";import"./useSuspenseInfiniteQuery-k5nRBGbr.js";import"./checkbox-D1RvSoCC.js";import"./search-input-CvsfrEx_.js";import"./use-mcp-auth-status-BHCb596Q.js";import"./types-Bn1OkBUZ.js";import"./use-mcp-tools-CXE77GDs.js";import"./use-mcp-prompts-Q6y3VcI9.js";import"./utils-CVEq3hMx.js";import"./switch-BdySpUUX.js";import"./scroll-area-DHYVnI-I.js";import"./optimistic-project-sidebar-views-Bz-512-j.js";import"./format-time-CAj8AQXM.js";import"./virtual-mcp-Cb6kVn2b.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-eVGbRH7c.js";import"./use-secrets-Cd2WLNIt.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-CTjWv7p_.js";import{C as p}from"./index-Ddu_rSLm.js";import{S as e}from"./settings-tab-DstxhXJl.js";import{b as n}from"./thread-route-D3q_rVP7.js";import"./use-mobile-BHIxo6gN.js";import"./use-app-takeover-DSm0hM-q.js";import"./sheet-CcsrBrXF.js";import"./tooltip-DqmGcdDJ.js";import"./index-CFXQHfl1.js";import"./use-project-native-view-presence-BL9-bchu.js";import"./use-panel-navigate-QANI2F_X.js";import"./use-project-scope-GW2bAOd3.js";import"./repository-binding-CUKMFYlr.js";import"./use-mcp-client-CGKK63Kz.js";import"./auth-BLd_oaZA.js";import"./thread-intent-CeVBLvFY.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-BOhZFR5D.js";import"./task-board-zMTndQaY.js";import"./schema-ipxqGklP.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-DfP4tBEs.js";import"./use-organization-settings-CtFTrm2u.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-BBR2iDYh.js";import"./AlertCircle-B_HiUL3V.js";import"./Tool01-C_CKkVec.js";import"./ArrowUp-gZglv5wp.js";import"./ArrowLeft-CGlVoxui.js";import"./LinkBroken01-CXNh4eyP.js";import"./ShoppingBag01-BZRikaTk.js";import"./ZoomOut-Dg3QgYnY.js";import"./Building02-DMZnZO99.js";import"./CheckCircle-DEEJUOvq.js";import"./ChevronUp-Cb-JYgJS.js";import"./ChevronSelectorVertical-butN_Pnw.js";import"./UserSquare-BSP-qc9x.js";import"./Copy01-CRR-EuFi.js";import"./CreditCard01-B1XIHK7B.js";import"./DotsVertical-D1bAYhly.js";import"./Image01-DCu3b5kU.js";import"./Globe04-DSOOTZNm.js";import"./SwitchHorizontal01-QJ8HpWxv.js";import"./Key01-BWZX0ddW.js";import"./Link01-DyUd5OlZ.js";import"./Monitor01-BakIeQUF.js";import"./Sun-DrrCSWyx.js";import"./Play-Cow0cNbD.js";import"./Plus-BymkC_GC.js";import"./SearchMd-O4PYnwLm.js";import"./Trash01-CyUDLdm2.js";import"./Upload01-DndYeCIj.js";import"./User01-Bk3qtSGw.js";import"./Users01-CTggT7zQ.js";import"./XClose-D3hBIxOe.js";import"./toolbar-icon-button-Bjp-WCB6.js";import"./shell-layout-CaDbhp-Y.js";import"./avatar-DaqDyQT2.js";import"./use-clock-tick-L_13B5gz.js";import"./command-DHGvWDa5.js";import"./index-DuouRhoR.js";import"./integration-icon-4vqLdvgx.js";import"./project-icon-D91bSjz0.js";import"./new-project-dialog-BmQvk0AN.js";import"./label-BBFj7oje.js";import"./repository-import-picker-B0XPae0i.js";import"./use-navigate-to-agent-DYlzYuXR.js";import"./repository-picker-tkfqc0HP.js";import"./useInfiniteQuery-DkDVK9bu.js";import"./infiniteQueryObserver-CYFeTV4A.js";import"./collection-search-DBI1dP1G.js";import"./use-debounced-value-DSvxzSzu.js";import"./required-auth-layout-DzBlEUGS.js";import"./autosend-CMH8Nd3q.js";import"./use-org-sso-g2a2pIE8.js";import"./resizable-BzRss8B3.js";import"./icon-button-GVvv_TGw.js";import"./extract-connection-data-B5vLAPIK.js";import"./metadata-D72DunRR.js";import"./connection-CyGwGe0c.js";import"./url-slug-DTtfghpx.js";import"./chat-context-CsSueqYK.js";import"./use-decopilot-events-D9D6ni5J.js";import"./use-ai-providers-CghFth1V.js";import"./use-chat-navigation-DTChKwGZ.js";import"./location-BjlyegC2.js";import"./build-improve-prompt-doc-IMnqNYLL.js";import"./empty-state-CPp6Z3BQ.js";import"./use-date-fns-locale-AV4SnLxg.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-DpgBvC0Y.js";import"./mcp-oauth-Cu679GrT.js";import"./alert-dialog-CsMnazlX.js";import"./textarea-DjEn7s--.js";import"./use-connection-CEirJr2M.js";import"./use-debounced-autosave-Y-Qh1_Yq.js";import"./add-connection-dialog-m56a3mnH.js";import"./connection-card-C5Hd83Lq.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-CbCdchWH.js";import"./form-DME968hC.js";import"./select-JsVR4bkR.js";import"./index-BdQq_4o_.js";import"./schema-DUmP7mXK.js";import"./connection-form-helpers-DWTE_E_W.js";import"./authenticate-and-persist-oauth-BHPSufEQ.js";import"./collection-tabs-DOWtwIA2.js";import"./badge-Cs8ttYS4.js";import"./use-infinite-scroll-CLIMYjnC.js";import"./useSuspenseInfiniteQuery-k5nRBGbr.js";import"./file-type-icon-FwTaRFNS.js";import"./use-org-fs-B0bRoLwB.js";import"./checkbox-D1RvSoCC.js";import"./search-input-CvsfrEx_.js";import"./use-mcp-auth-status-BHCb596Q.js";import"./types-Bn1OkBUZ.js";import"./use-mcp-tools-CXE77GDs.js";import"./use-mcp-prompts-Q6y3VcI9.js";import"./utils-CVEq3hMx.js";import"./switch-BdySpUUX.js";import"./popover-BmmpRE-t.js";import"./scroll-area-DHYVnI-I.js";import"./optimistic-project-sidebar-views-Bz-512-j.js";import"./format-time-CAj8AQXM.js";import"./use-copy-BRcd4PJW.js";import"./virtual-mcp-Cb6kVn2b.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-eVGbRH7c.js";import"./use-secrets-Cd2WLNIt.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-J-Ren9bv.js","assets/index-CTjWv7p_.js","assets/index-s7bCSMKE.css","assets/agent-icon-BBR2iDYh.js","assets/AlertCircle-B_HiUL3V.js","assets/Tool01-C_CKkVec.js","assets/ArrowUp-gZglv5wp.js","assets/ArrowLeft-CGlVoxui.js","assets/LinkBroken01-CXNh4eyP.js","assets/ShoppingBag01-BZRikaTk.js","assets/ZoomOut-Dg3QgYnY.js","assets/Building02-DMZnZO99.js","assets/CheckCircle-DEEJUOvq.js","assets/ChevronUp-Cb-JYgJS.js","assets/ChevronSelectorVertical-butN_Pnw.js","assets/UserSquare-BSP-qc9x.js","assets/Copy01-CRR-EuFi.js","assets/CreditCard01-B1XIHK7B.js","assets/DotsVertical-D1bAYhly.js","assets/Image01-DCu3b5kU.js","assets/Globe04-DSOOTZNm.js","assets/SwitchHorizontal01-QJ8HpWxv.js","assets/Key01-BWZX0ddW.js","assets/Link01-DyUd5OlZ.js","assets/Monitor01-BakIeQUF.js","assets/Sun-DrrCSWyx.js","assets/Play-Cow0cNbD.js","assets/Plus-BymkC_GC.js","assets/SearchMd-O4PYnwLm.js","assets/Trash01-CyUDLdm2.js","assets/Upload01-DndYeCIj.js","assets/User01-Bk3qtSGw.js","assets/Users01-CTggT7zQ.js","assets/XClose-D3hBIxOe.js","assets/scroll-area-DHYVnI-I.js","assets/index-BdQq_4o_.js","assets/tooltip-DqmGcdDJ.js","assets/index-CFXQHfl1.js","assets/chat-context-CsSueqYK.js","assets/use-panel-navigate-QANI2F_X.js","assets/thread-route-D3q_rVP7.js","assets/use-project-scope-GW2bAOd3.js","assets/repository-binding-CUKMFYlr.js","assets/use-mcp-client-CGKK63Kz.js","assets/auth-BLd_oaZA.js","assets/autosend-CMH8Nd3q.js","assets/thread-intent-CeVBLvFY.js","assets/delay-CnY5UFtP.js","assets/backoff-CrEUbyZT.js","assets/watch-sse-pool-BOhZFR5D.js","assets/task-board-zMTndQaY.js","assets/schema-ipxqGklP.js","assets/slugify-CEUa2lfQ.js","assets/use-decopilot-events-D9D6ni5J.js","assets/use-ai-providers-CghFth1V.js","assets/use-chat-navigation-DTChKwGZ.js","assets/location-BjlyegC2.js","assets/use-organization-settings-CtFTrm2u.js","assets/editor-sIXknvpq.js","assets/shell-layout-CaDbhp-Y.js","assets/avatar-DaqDyQT2.js","assets/use-clock-tick-L_13B5gz.js","assets/command-DHGvWDa5.js","assets/index-DuouRhoR.js","assets/integration-icon-4vqLdvgx.js","assets/project-icon-D91bSjz0.js","assets/new-project-dialog-BmQvk0AN.js","assets/label-BBFj7oje.js","assets/repository-import-picker-B0XPae0i.js","assets/use-navigate-to-agent-DYlzYuXR.js","assets/repository-picker-tkfqc0HP.js","assets/useInfiniteQuery-DkDVK9bu.js","assets/infiniteQueryObserver-CYFeTV4A.js","assets/collection-search-DBI1dP1G.js","assets/use-debounced-value-DSvxzSzu.js","assets/required-auth-layout-DzBlEUGS.js","assets/use-org-sso-g2a2pIE8.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-CsMnazlX.js","assets/context-menu-BQv9Yg_3.js","assets/utils-BgpN3-4K.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-CTjWv7p_.js";import{A as v}from"./agent-view-guard-B9q4njeN.js";import{F as E}from"./feature-gate-DiP6HaTH.js";import{c as S}from"./chat-context-CsSueqYK.js";import{E as P}from"./empty-state-CPp6Z3BQ.js";import"./use-main-panel-tabs-DXonldTT.js";import"./use-project-native-view-presence-BL9-bchu.js";import"./thread-route-D3q_rVP7.js";import"./use-panel-navigate-QANI2F_X.js";import"./use-project-scope-GW2bAOd3.js";import"./repository-binding-CUKMFYlr.js";import"./use-mcp-client-CGKK63Kz.js";import"./auth-BLd_oaZA.js";import"./thread-intent-CeVBLvFY.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-BOhZFR5D.js";import"./task-board-zMTndQaY.js";import"./schema-ipxqGklP.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-DfP4tBEs.js";import"./use-organization-settings-CtFTrm2u.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-BBR2iDYh.js";import"./AlertCircle-B_HiUL3V.js";import"./Tool01-C_CKkVec.js";import"./ArrowUp-gZglv5wp.js";import"./ArrowLeft-CGlVoxui.js";import"./LinkBroken01-CXNh4eyP.js";import"./ShoppingBag01-BZRikaTk.js";import"./ZoomOut-Dg3QgYnY.js";import"./Building02-DMZnZO99.js";import"./CheckCircle-DEEJUOvq.js";import"./ChevronUp-Cb-JYgJS.js";import"./ChevronSelectorVertical-butN_Pnw.js";import"./UserSquare-BSP-qc9x.js";import"./Copy01-CRR-EuFi.js";import"./CreditCard01-B1XIHK7B.js";import"./DotsVertical-D1bAYhly.js";import"./Image01-DCu3b5kU.js";import"./Globe04-DSOOTZNm.js";import"./SwitchHorizontal01-QJ8HpWxv.js";import"./Key01-BWZX0ddW.js";import"./Link01-DyUd5OlZ.js";import"./Monitor01-BakIeQUF.js";import"./Sun-DrrCSWyx.js";import"./Play-Cow0cNbD.js";import"./Plus-BymkC_GC.js";import"./SearchMd-O4PYnwLm.js";import"./Trash01-CyUDLdm2.js";import"./Upload01-DndYeCIj.js";import"./User01-Bk3qtSGw.js";import"./Users01-CTggT7zQ.js";import"./XClose-D3hBIxOe.js";import"./use-connection-CEirJr2M.js";import"./use-mcp-tools-CXE77GDs.js";import"./types-Bn1OkBUZ.js";import"./utils-CVEq3hMx.js";import"./index-Mj5Dlp7-.js";import"./sandbox-url-D3mC8qhT.js";import"./tool-namespace-CGmm1XsL.js";import"./tooltip-DqmGcdDJ.js";import"./index-CFXQHfl1.js";import"./drawer-CbCdchWH.js";import"./collection-search-DBI1dP1G.js";import"./use-mobile-BHIxo6gN.js";import"./use-mcp-prompts-Q6y3VcI9.js";import"./usage-stats-BQf3WnUV.js";import"./form-DME968hC.js";import"./label-BBFj7oje.js";import"./markdown-3pW1-LsL.js";import"./use-copy-BRcd4PJW.js";import"./location-BjlyegC2.js";import"./format-time-CAj8AQXM.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-decopilot-events-D9D6ni5J.js";import"./input-lzFp2uRd.js";import"./icon-button-GVvv_TGw.js";import"./file-type-icon-FwTaRFNS.js";import"./use-chat-navigation-DTChKwGZ.js";import"./autosend-CMH8Nd3q.js";import"./shell-layout-CaDbhp-Y.js";import"./avatar-DaqDyQT2.js";import"./use-clock-tick-L_13B5gz.js";import"./command-DHGvWDa5.js";import"./index-DuouRhoR.js";import"./integration-icon-4vqLdvgx.js";import"./project-icon-D91bSjz0.js";import"./new-project-dialog-BmQvk0AN.js";import"./repository-import-picker-B0XPae0i.js";import"./use-navigate-to-agent-DYlzYuXR.js";import"./repository-picker-tkfqc0HP.js";import"./useInfiniteQuery-DkDVK9bu.js";import"./infiniteQueryObserver-CYFeTV4A.js";import"./use-debounced-value-DSvxzSzu.js";import"./required-auth-layout-DzBlEUGS.js";import"./use-org-sso-g2a2pIE8.js";import"./chat-draft-5aNYHG8g.js";import"./select-JsVR4bkR.js";import"./index-BdQq_4o_.js";import"./tabs-y2ekO2bu.js";import"./use-deco-credits-B1V9qoME.js";import"./use-ai-providers-CghFth1V.js";import"./toggle-group-AfU8RYJj.js";import"./use-open-billing-url-Bjw_RPxL.js";import"./index-C8v36X2j.js";import"./checkbox-D1RvSoCC.js";import"./ai-providers-logos-DD3qZ33J.js";import"./popover-BmmpRE-t.js";import"./input-D4vnZBvQ.js";import"./suggestion-COCn65DM.js";import"./use-org-fs-B0bRoLwB.js";import"./question-004-sINsf4GQ.js";import"./use-members-CG-2RwJv.js";import"./use-org-auth-client-BcOSmGyk.js";import"./feature-paywall-DAnZt43s.js";import"./plan-ladder-B_i6laf_.js";import"./add-connection-dialog-m56a3mnH.js";import"./extract-connection-data-B5vLAPIK.js";import"./metadata-D72DunRR.js";import"./connection-CyGwGe0c.js";import"./url-slug-DTtfghpx.js";import"./connection-card-C5Hd83Lq.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-DjEn7s--.js";import"./schema-DUmP7mXK.js";import"./connection-form-helpers-DWTE_E_W.js";import"./authenticate-and-persist-oauth-BHPSufEQ.js";import"./mcp-oauth-DpgBvC0Y.js";import"./mcp-oauth-Cu679GrT.js";import"./collection-tabs-DOWtwIA2.js";import"./badge-Cs8ttYS4.js";import"./use-infinite-scroll-CLIMYjnC.js";import"./useSuspenseInfiniteQuery-k5nRBGbr.js";import"./use-task-board-events-De9AddjW.js";import"./pair-BXmEezUH.js";import"./collapsible-DmX-ngKI.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-B6D8q_ye.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./sheet-CcsrBrXF.js";import"./use-thread-outputs-YPzOMCqa.js";import"./resolve-tab-icon-Cb6tb2UW.js";import"./use-task-metadata-CPknFXQ5.js";import"./preview-source-BsRLGWUP.js";import"./virtual-mcp-Cb6kVn2b.js";const y=x.lazy(()=>g(()=>import("./file-explorer-J-Ren9bv.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};