decocms 4.527.0 → 4.528.0

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 (423) hide show
  1. package/dist/client/assets/{ActiveShapeUtils-CLeQm0q6.js → ActiveShapeUtils-Br894ljM.js} +1 -1
  2. package/dist/client/assets/{AlertCircle-D9_evsvO.js → AlertCircle-DwVsFaci.js} +1 -1
  3. package/dist/client/assets/{AreaChart-D4vFJ6vT.js → AreaChart-BpoQ8IcB.js} +1 -1
  4. package/dist/client/assets/{ArrowLeft-B6qwUpLq.js → ArrowLeft-D0U_UeWA.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-Cth_eVmU.js → ArrowUp-BHvj9x12.js} +1 -1
  6. package/dist/client/assets/{BarChart-DLJTWg68.js → BarChart-DSUrCO19.js} +1 -1
  7. package/dist/client/assets/{Building02-Wh9pimKL.js → Building02-4g278Kck.js} +1 -1
  8. package/dist/client/assets/{CartesianChart-DgnFHqiR.js → CartesianChart-B8sjFfWU.js} +1 -1
  9. package/dist/client/assets/{CategoricalChart-ChFkF0_C.js → CategoricalChart-C9NLmvFO.js} +1 -1
  10. package/dist/client/assets/{CheckCircle-DoJXwawU.js → CheckCircle-0mdIkBLG.js} +1 -1
  11. package/dist/client/assets/{ChevronSelectorVertical-CnRBP_5y.js → ChevronSelectorVertical-BRbuqJl7.js} +1 -1
  12. package/dist/client/assets/{ChevronUp-7SZxJu8w.js → ChevronUp-Cn8PaBxH.js} +1 -1
  13. package/dist/client/assets/{Copy01-Bu20fOqK.js → Copy01-D6STLVd9.js} +1 -1
  14. package/dist/client/assets/{CreditCard01-Br0-9pHI.js → CreditCard01-CAW-vU_p.js} +1 -1
  15. package/dist/client/assets/{DotsVertical-OSj5km5S.js → DotsVertical-C5Wc2qWf.js} +1 -1
  16. package/dist/client/assets/{ErrorBarContext-BvjdLnvD.js → ErrorBarContext-ClrUuJb8.js} +1 -1
  17. package/dist/client/assets/{Globe04-D4srY_QI.js → Globe04-COPfJ3z-.js} +1 -1
  18. package/dist/client/assets/{Image01-CzYWCBEQ.js → Image01-D00jtGx4.js} +1 -1
  19. package/dist/client/assets/{Key01-C-bam-4X.js → Key01-CiK2_UxI.js} +1 -1
  20. package/dist/client/assets/{Link01-DXRUIbxg.js → Link01-CEOBycf2.js} +1 -1
  21. package/dist/client/assets/{LinkBroken01-gdfveCgK.js → LinkBroken01-Bg7pBcuJ.js} +1 -1
  22. package/dist/client/assets/{Minus-Czu3kpSA.js → Minus-_SQ5lvlh.js} +1 -1
  23. package/dist/client/assets/{Monitor01-CruCSnyq.js → Monitor01-DyqIpSTl.js} +1 -1
  24. package/dist/client/assets/{Play-RzA3Niav.js → Play-BnWEmJaV.js} +1 -1
  25. package/dist/client/assets/{Plus-BA90GKs1.js → Plus-BPVKrQFz.js} +1 -1
  26. package/dist/client/assets/{ReferenceLine-8vT4zADE.js → ReferenceLine-_tT0r7bG.js} +1 -1
  27. package/dist/client/assets/{SearchMd-DO1eOJvD.js → SearchMd-OaBCBVrZ.js} +1 -1
  28. package/dist/client/assets/{Sector-Duu5xYm_.js → Sector-mFZOIMSW.js} +1 -1
  29. package/dist/client/assets/{ShoppingBag01-BuVMkUkJ.js → ShoppingBag01-GpZCrbBR.js} +1 -1
  30. package/dist/client/assets/{Sun-Cg4UcsIP.js → Sun-BG4-BfE7.js} +1 -1
  31. package/dist/client/assets/{SwitchHorizontal01-D_E9YPjp.js → SwitchHorizontal01-CMpEiSPu.js} +1 -1
  32. package/dist/client/assets/{Tool01-BJdrlQAn.js → Tool01-CIeMmnyv.js} +1 -1
  33. package/dist/client/assets/{Trash01-DcsYDVg8.js → Trash01-BLXgUBsw.js} +1 -1
  34. package/dist/client/assets/{Upload01-CYUmJE5W.js → Upload01-CgYtU1Ux.js} +1 -1
  35. package/dist/client/assets/{UserSquare-D0z8lAkn.js → UserSquare-pnEdx237.js} +1 -1
  36. package/dist/client/assets/{Users01-Y9yFg_2K.js → Users01-D-rlhQmk.js} +1 -1
  37. package/dist/client/assets/{XClose-DIFkFXp0.js → XClose-yFNn0LgD.js} +1 -1
  38. package/dist/client/assets/{ZoomOut-rfozMzwP.js → ZoomOut-D8_eDbPl.js} +1 -1
  39. package/dist/client/assets/{access-gate-5CuwEsfU.js → access-gate-CCmKpIU6.js} +1 -1
  40. package/dist/client/assets/{add-connection-dialog-Dl0GCijo.js → add-connection-dialog-MrHyqJnn.js} +1 -1
  41. package/dist/client/assets/agent-analytics-wllTP-xB.js +1 -0
  42. package/dist/client/assets/agent-app-MGvu076D.js +1 -0
  43. package/dist/client/assets/{agent-assets-Bca92OI9.js → agent-assets-DX3JCZz_.js} +1 -1
  44. package/dist/client/assets/{agent-automation-CMS-kRWl.js → agent-automation-BoPrO5n1.js} +1 -1
  45. package/dist/client/assets/{agent-automations-BnnaEANZ.js → agent-automations-Dj9SJC8y.js} +1 -1
  46. package/dist/client/assets/agent-calendar-CFKavSr7.js +1 -0
  47. package/dist/client/assets/{agent-connect-sources-BXy938hL.js → agent-connect-sources-guJSE0A3.js} +1 -1
  48. package/dist/client/assets/agent-deck-CdHFig9V.js +1 -0
  49. package/dist/client/assets/{agent-e2e-C129i6b0.js → agent-e2e--KzDh_gU.js} +1 -1
  50. package/dist/client/assets/agent-experiments-pgMnsFIB.js +1 -0
  51. package/dist/client/assets/{agent-file-Pm-Pf6i7.js → agent-file-Cdm4fL8A.js} +1 -1
  52. package/dist/client/assets/{agent-hosting-d0mTmoi-.js → agent-hosting-DewUrxzP.js} +1 -1
  53. package/dist/client/assets/agent-icon-I45DkNr8.js +1 -0
  54. package/dist/client/assets/agent-library-DjU97YsS.js +1 -0
  55. package/dist/client/assets/agent-library-file-DXHCBJAM.js +1 -0
  56. package/dist/client/assets/agent-monitor-Bucu2iO3.js +1 -0
  57. package/dist/client/assets/{agent-overview-Dxkm_aaP.js → agent-overview-D6KewKsA.js} +1 -1
  58. package/dist/client/assets/agent-releases-K-5ZFdWb.js +2 -0
  59. package/dist/client/assets/agent-settings-w-cNQlVy.js +1 -0
  60. package/dist/client/assets/{agent-site-editor-DvH8IVvU.js → agent-site-editor-5gjIAuRv.js} +2 -2
  61. package/dist/client/assets/agent-site-editor-code-B432kGPM.js +2 -0
  62. package/dist/client/assets/agent-site-editor-content-CQYunysB.js +1 -0
  63. package/dist/client/assets/agent-site-editor-preview-CLsSdnEd.js +1 -0
  64. package/dist/client/assets/agent-view-DP6mfHYN.js +1 -0
  65. package/dist/client/assets/{agent-view-guard-DSdm7lha.js → agent-view-guard-CiKD3WZM.js} +1 -1
  66. package/dist/client/assets/{agents-list-3hk3xPXP.js → agents-list-Bm03MUBc.js} +1 -1
  67. package/dist/client/assets/{ai-providers-CHbdsaF9.js → ai-providers--gYjttQ2.js} +1 -1
  68. package/dist/client/assets/alert-CRToIlco.js +1 -0
  69. package/dist/client/assets/{analytics-sections-CQH2mNjC.js → analytics-sections-CNk_D8Ba.js} +1 -1
  70. package/dist/client/assets/{analytics-tab-D1CO6HBg.js → analytics-tab-BmUlDGzX.js} +2 -2
  71. package/dist/client/assets/api-keys-8RAAQTX6.js +1 -0
  72. package/dist/client/assets/{api-keys-CsjJKvfD.js → api-keys-MdTn4EBK.js} +1 -1
  73. package/dist/client/assets/app-editor-DLDQxSbu.js +1 -0
  74. package/dist/client/assets/{asset-utils-ClXQ82gA.js → asset-utils-B46ygA_L.js} +1 -1
  75. package/dist/client/assets/{auth-BJe1aOgg.js → auth-AQB7DTaB.js} +1 -1
  76. package/dist/client/assets/{auth-catchall-CeL8XspO.js → auth-catchall-WOw2KABS.js} +1 -1
  77. package/dist/client/assets/{auth-entry-Bux_mJRN.js → auth-entry-D8h4o_s7.js} +1 -1
  78. package/dist/client/assets/{auth-split-layout-TRenqsIV.js → auth-split-layout-D1niEerJ.js} +1 -1
  79. package/dist/client/assets/{authenticate-and-persist-oauth-BhtEjQrU.js → authenticate-and-persist-oauth-08aLFUVr.js} +1 -1
  80. package/dist/client/assets/{automation-list-row-DtC2tENT.js → automation-list-row-D9muuYwH.js} +1 -1
  81. package/dist/client/assets/{automation-runs-BDvJXwcu.js → automation-runs-Cu7hhQJb.js} +1 -1
  82. package/dist/client/assets/{automations-Qapln07Q.js → automations-Ct6FcxrV.js} +1 -1
  83. package/dist/client/assets/{autosend-BKwtMB6P.js → autosend-CxxtAFJ_.js} +1 -1
  84. package/dist/client/assets/{badge-Dne4Jx9I.js → badge-zxuYXquF.js} +1 -1
  85. package/dist/client/assets/{block-document-Cs719bjv.js → block-document-D4CMkt4c.js} +3 -3
  86. package/dist/client/assets/{blocks-preview-workspace-context-DUWc_2XG.js → blocks-preview-workspace-context-LeIpajCL.js} +1 -1
  87. package/dist/client/assets/{blocks-tab-states-DBqkaxym.js → blocks-tab-states-BrRgLQ_Y.js} +1 -1
  88. package/dist/client/assets/{blog-schema-bP1Fdz76.js → blog-schema-B4i8W-yj.js} +1 -1
  89. package/dist/client/assets/{buckets-DIalMn5g.js → buckets-CQWPtT87.js} +1 -1
  90. package/dist/client/assets/{build-improve-prompt-doc-CxMWosB4.js → build-improve-prompt-doc-CpbAFEGo.js} +1 -1
  91. package/dist/client/assets/{calendar-DqTMQkmt.js → calendar-C7teLmhJ.js} +1 -1
  92. package/dist/client/assets/{capability-load-error-C2YNxboS.js → capability-load-error-lTXihmQk.js} +1 -1
  93. package/dist/client/assets/category-editor-BrbTG2-B.js +1 -0
  94. package/dist/client/assets/{cdn-tab-qQFB8_vy.js → cdn-tab-BstEuIpQ.js} +1 -1
  95. package/dist/client/assets/{chart-CnvxVWLO.js → chart-DVgatavr.js} +1 -1
  96. package/dist/client/assets/{chat-context-C2Yxk7gW.js → chat-context-DIvwe-Wr.js} +5 -5
  97. package/dist/client/assets/{chat-draft-CoNCF5e9.js → chat-draft-DByw699W.js} +1 -1
  98. package/dist/client/assets/{checkbox-5tVptIvn.js → checkbox-CW4Dzojp.js} +1 -1
  99. package/dist/client/assets/{choose-editor-he5994Iy.js → choose-editor-zIlz3nud.js} +1 -1
  100. package/dist/client/assets/{cli-auth-success-C13o6nT8.js → cli-auth-success-CYE6hkOe.js} +1 -1
  101. package/dist/client/assets/{client-icons-AfqD3us-.js → client-icons-DL1p9F4w.js} +1 -1
  102. package/dist/client/assets/cms-settings-editor-D8-PKCcN.js +1 -0
  103. package/dist/client/assets/{collapsible-B_i_flQZ.js → collapsible-zPk-2gi_.js} +1 -1
  104. package/dist/client/assets/{collection-detail-C5W1nmJm.js → collection-detail-Drfng1H4.js} +1 -1
  105. package/dist/client/assets/{collection-display-button-g8pw1BKa.js → collection-display-button-DPvQVdd-.js} +1 -1
  106. package/dist/client/assets/{collection-search-DKSj36i2.js → collection-search-kUVZkueq.js} +1 -1
  107. package/dist/client/assets/collection-table-wrapper-vDq2vkVG.js +1 -0
  108. package/dist/client/assets/{collection-tabs-BVf232LH.js → collection-tabs-C3pu5E-Q.js} +1 -1
  109. package/dist/client/assets/{column-rules-CRkg9Fxl.js → column-rules-Dz5XFx3r.js} +1 -1
  110. package/dist/client/assets/{combobox-B8zTmLu1.js → combobox-BZSt-sf0.js} +1 -1
  111. package/dist/client/assets/{command-D79ZH19X.js → command-CSPNVB8c.js} +1 -1
  112. package/dist/client/assets/{companion-mcps-section-CthCluci.js → companion-mcps-section-HHphF1lt.js} +1 -1
  113. package/dist/client/assets/{config-94XCayih.js → config-B7tLWM1b.js} +1 -1
  114. package/dist/client/assets/{connect-DIgUkNj9.js → connect-BK8j-UfV.js} +1 -1
  115. package/dist/client/assets/{connect-layout-CH6ZSb5T.js → connect-layout-BC5qZusj.js} +1 -1
  116. package/dist/client/assets/{connect-source-dialog-DPHm5SIR.js → connect-source-dialog-Ch0tynWX.js} +1 -1
  117. package/dist/client/assets/{connection-CiqnzKwe.js → connection-amzL9L9Z.js} +1 -1
  118. package/dist/client/assets/{connection-card-CgbmOEtZ.js → connection-card-D8aS8J6Q.js} +1 -1
  119. package/dist/client/assets/{connection-detail-CWZ53gOP.js → connection-detail-Cu7F0ogE.js} +1 -1
  120. package/dist/client/assets/{connection-form-helpers-ntCbPy2n.js → connection-form-helpers-TT6AKW6f.js} +1 -1
  121. package/dist/client/assets/{connections-Bt4pwqu3.js → connections-B29MQqZW.js} +1 -1
  122. package/dist/client/assets/content-tab-BhOwV-AC.js +22 -0
  123. package/dist/client/assets/context-CgB14LeY.js +1 -0
  124. package/dist/client/assets/{context-menu-BAoOyR8J.js → context-menu-CFt3f_Gb.js} +1 -1
  125. package/dist/client/assets/{context-shell-BFW9I6d4.js → context-shell-KhGmYnbX.js} +5 -5
  126. package/dist/client/assets/{core.esm-DpydQIdT.js → core.esm-Brf7c66K.js} +1 -1
  127. package/dist/client/assets/{create-organization-dialog-DKF90Pre.js → create-organization-dialog-Dshiy6sU.js} +1 -1
  128. package/dist/client/assets/{daily-pulse-Bojl1W7A.js → daily-pulse-DglWu2t-.js} +1 -1
  129. package/dist/client/assets/{discover-CeBBMXm9.js → discover-BLv8PWTL.js} +1 -1
  130. package/dist/client/assets/{domain-settings-BXAu6Flk.js → domain-settings-7tpPEEzB.js} +1 -1
  131. package/dist/client/assets/{drawer-hQxgme01.js → drawer-w05H8pBO.js} +1 -1
  132. package/dist/client/assets/{editor-C7NsJj0P.js → editor-CiOoO-Ym.js} +1 -1
  133. package/dist/client/assets/{editor-classes-iJqU7okF.js → editor-classes-DNAm8ZAW.js} +1 -1
  134. package/dist/client/assets/{empty-state-BGj88Oz3.js → empty-state-BiIeVz7z.js} +1 -1
  135. package/dist/client/assets/{empty-state-Gwq8u3Sk.js → empty-state-ErDRcN-P.js} +1 -1
  136. package/dist/client/assets/experiments-tab-BghFguNv.js +1 -0
  137. package/dist/client/assets/{experiments-tab-choice-C-Kj-SaP.js → experiments-tab-choice-CY-Qbhut.js} +1 -1
  138. package/dist/client/assets/{extract-connection-data-Cx9ah1z5.js → extract-connection-data-C02FZ5zb.js} +1 -1
  139. package/dist/client/assets/{feature-gate-DTum9WCp.js → feature-gate-CE1MLoN2.js} +1 -1
  140. package/dist/client/assets/{feature-paywall-zO4dzbka.js → feature-paywall-C560RaP5.js} +1 -1
  141. package/dist/client/assets/{file-explorer-Xl96APN-.js → file-explorer-CVmiakjw.js} +1 -1
  142. package/dist/client/assets/{file-preview-Bm_62NfP.js → file-preview-Cc6_BSbv.js} +1 -1
  143. package/dist/client/assets/{file-share-button-D7t2lHex.js → file-share-button-Do4wEYep.js} +1 -1
  144. package/dist/client/assets/{file-type-icon-DptKoj-q.js → file-type-icon-CeBZX69W.js} +1 -1
  145. package/dist/client/assets/{folder-icon-CAAlpUI4.js → folder-icon-DgtIAyY7.js} +2 -2
  146. package/dist/client/assets/{form-DU60ZzuM.js → form-nJy5zMPE.js} +1 -1
  147. package/dist/client/assets/{general-DlFBPmt9.js → general-BOPFN5z3.js} +1 -1
  148. package/dist/client/assets/{held-block-view-rUTUNCUd.js → held-block-view-tvHMvR4T.js} +3 -3
  149. package/dist/client/assets/{home-Bo_yPeSm.js → home-CcsI1NKl.js} +1 -1
  150. package/dist/client/assets/hosted-publish-feedback-DxOmBJxT.js +1 -0
  151. package/dist/client/assets/{icon-button-DhKNS89h.js → icon-button-Xe7zTqiw.js} +1 -1
  152. package/dist/client/assets/{index-Boaq93Wx.js → index-B8jtRR0H.js} +2 -2
  153. package/dist/client/assets/{index-DDaQcb3Z.js → index-BD0IquFc.js} +1 -1
  154. package/dist/client/assets/{index-AaUC9WD6.js → index-BJTbyKBB.js} +1 -1
  155. package/dist/client/assets/{index-BwdKQXWi.js → index-BK_RqkJq.js} +1 -1
  156. package/dist/client/assets/{index-Cj3mLa-X.js → index-BzwMZ-96.js} +1 -1
  157. package/dist/client/assets/{index-7KY_ymC5.js → index-CcnAFkjW.js} +1 -1
  158. package/dist/client/assets/{index-Cuw4uBth.js → index-Ce7G0he3.js} +42 -42
  159. package/dist/client/assets/{index-D74iAt06.js → index-Cjzst5W1.js} +1 -1
  160. package/dist/client/assets/{index-BsRMIjqv.js → index-ComxOMRa.js} +1 -1
  161. package/dist/client/assets/{index-B-HoKvLm.js → index-DZ7OjEm4.js} +1 -1
  162. package/dist/client/assets/{index-T8jAgtpZ.js → index-DjOPmK0D.js} +1 -1
  163. package/dist/client/assets/{index-CoQjVodF.js → index-Dm-21QtS.js} +1 -1
  164. package/dist/client/assets/{index-redirect-Du4fUGPn.js → index-redirect-BRlBNfxv.js} +1 -1
  165. package/dist/client/assets/{index-Cp2UI7aA.js → index-tffbmy1v.js} +1 -1
  166. package/dist/client/assets/index-u-z_8GjU.css +1 -0
  167. package/dist/client/assets/{index-BoQ6UNxI.js → index-uE3tVNL6.js} +1 -1
  168. package/dist/client/assets/{index-XfVM7o1o.js → index-xw_Jw9LH.js} +1 -1
  169. package/dist/client/assets/{infiniteQueryObserver-Dy0j8RRj.js → infiniteQueryObserver-BJujpYxh.js} +1 -1
  170. package/dist/client/assets/{infra-billing-BUQH5Z5B.js → infra-billing-C0m6hfZU.js} +1 -1
  171. package/dist/client/assets/{input-eQkN56jq.js → input-B45cW293.js} +4 -4
  172. package/dist/client/assets/{input-CBK8CI9T.js → input-CzPtcD68.js} +1 -1
  173. package/dist/client/assets/{integration-icon-DkmY4VjA.js → integration-icon-Cs3IASPS.js} +1 -1
  174. package/dist/client/assets/{jira-icon-DIX055Fu.js → jira-icon-BuriBSdU.js} +1 -1
  175. package/dist/client/assets/{label-GaS9ZdQZ.js → label-ivnVLsJB.js} +1 -1
  176. package/dist/client/assets/{layout-D6bYiXJy.js → layout-CZlIpVTU.js} +1 -1
  177. package/dist/client/assets/{legacy-agents-deep-DwABkmGV.js → legacy-agents-deep-DMpNnXol.js} +1 -1
  178. package/dist/client/assets/{legacy-main-redirect-D9RmQuU4.js → legacy-main-redirect-CBL3GGt7.js} +1 -1
  179. package/dist/client/assets/library-CdY45oa5.js +1 -0
  180. package/dist/client/assets/{login-DbWYcBcy.js → login-ByMZv8aL.js} +1 -1
  181. package/dist/client/assets/{markdown-DWeSe4_P.js → markdown-UmudOdor.js} +1 -1
  182. package/dist/client/assets/{mcp-app-renderer-gjnt5Msm.js → mcp-app-renderer-PAwZvEJj.js} +1 -1
  183. package/dist/client/assets/{mcp-oauth-BN2jrcE-.js → mcp-oauth-Cz4RwYAs.js} +1 -1
  184. package/dist/client/assets/{mcp-oauth-DCesmV8O.js → mcp-oauth-qpkBxX91.js} +1 -1
  185. package/dist/client/assets/{members-A7hOfyTI.js → members-DcVu4FNR.js} +1 -1
  186. package/dist/client/assets/{memory-BToaysGU.js → memory-C_hVYwsN.js} +2 -2
  187. package/dist/client/assets/{mini-report-page-B-hsDt1L.js → mini-report-page-DqysKZ5e.js} +1 -1
  188. package/dist/client/assets/{mock-board-DrLmLQZ3.js → mock-board-BSsrmRDS.js} +3 -3
  189. package/dist/client/assets/{monaco-editor-D7u0RPEL.js → monaco-editor-Cc-5fhHI.js} +1 -1
  190. package/dist/client/assets/monitoring-DVujO52F.js +1 -0
  191. package/dist/client/assets/{monitoring-stats-row-BHTpzVVz.js → monitoring-stats-row-DosbF5BV.js} +1 -1
  192. package/dist/client/assets/{multi-select-A_VyitSa.js → multi-select-DHn_nlnM.js} +1 -1
  193. package/dist/client/assets/mustache-CKGDjf9j.js +4 -0
  194. package/dist/client/assets/{named-rule-uses-B_glLrdA.js → named-rule-uses-Drzf8cgA.js} +1 -1
  195. package/dist/client/assets/{new-project-dialog-M-WLwZ47.js → new-project-dialog-D3vjD1Ks.js} +1 -1
  196. package/dist/client/assets/{oauth-callback-eNefWc41.js → oauth-callback-D5wWKok2.js} +1 -1
  197. package/dist/client/assets/{oauth-callback-ai-provider-DwNEOUuo.js → oauth-callback-ai-provider-BKG0BbMN.js} +1 -1
  198. package/dist/client/assets/{onboarding-8FafpOAf.js → onboarding-Ci8OMwC9.js} +1 -1
  199. package/dist/client/assets/{openai-conversation-Bi2qzvSg.js → openai-conversation-D9RDSbbV.js} +2 -2
  200. package/dist/client/assets/{optimistic-project-sidebar-views-BFrvBRmj.js → optimistic-project-sidebar-views-L0iLKNqt.js} +1 -1
  201. package/dist/client/assets/{order-monitor-day-BBUvq3hr.js → order-monitor-day-CYrv-YPX.js} +1 -1
  202. package/dist/client/assets/{organization-choice-CGhQdnA_.js → organization-choice-DS1Td5mt.js} +1 -1
  203. package/dist/client/assets/{orgs-Cp4K5sO3.js → orgs-BdW5vuy7.js} +1 -1
  204. package/dist/client/assets/{page-seo-form-BUMyGTyK.js → page-seo-form-4Td1Bwhl.js} +1 -1
  205. package/dist/client/assets/{pair-DtCSsufw.js → pair-D40XxJSs.js} +1 -1
  206. package/dist/client/assets/{parse-sections-B1uka1Vq.js → parse-sections-6LYwkRXc.js} +1 -1
  207. package/dist/client/assets/{plan-D4y2SMp_.js → plan-B5MpX63p.js} +1 -1
  208. package/dist/client/assets/{plan-ladder-Cr-CdTR1.js → plan-ladder-DyKNTGpe.js} +1 -1
  209. package/dist/client/assets/{popover-DiqYPKHh.js → popover-BF3N_cWR.js} +1 -1
  210. package/dist/client/assets/post-calendar-BtEPuDia.js +1 -0
  211. package/dist/client/assets/{post-editor-Bcpnqi7N.js → post-editor-DlfqwxIk.js} +2 -2
  212. package/dist/client/assets/{preview-content-BC2_4BBb.js → preview-content-BV8Fh5Qw.js} +1 -1
  213. package/dist/client/assets/{preview-dialog-DO4TwwDT.js → preview-dialog-BmUPiPPl.js} +1 -1
  214. package/dist/client/assets/{preview-panel-DnnzsZo-.js → preview-panel-llvMLYPZ.js} +1 -1
  215. package/dist/client/assets/{preview-tab-DV_MhenF.js → preview-tab-DieLxroc.js} +3 -3
  216. package/dist/client/assets/{product-picker-dialog-D8RlvSwu.js → product-picker-dialog-DVInlx3E.js} +1 -1
  217. package/dist/client/assets/{profile-CCof6E-v.js → profile-BeQa-VCG.js} +1 -1
  218. package/dist/client/assets/project-app-view-Cey1t0qJ.js +1 -0
  219. package/dist/client/assets/{project-apps-dDvUBGvO.js → project-apps-B_x_Bovr.js} +1 -1
  220. package/dist/client/assets/{project-feed-JqOKyKR3.js → project-feed-CFTw8-Bu.js} +1 -1
  221. package/dist/client/assets/{project-icon-DQNZWn_4.js → project-icon-Cgbmeoa9.js} +1 -1
  222. package/dist/client/assets/project-reports-BuglSKY2.js +1 -0
  223. package/dist/client/assets/project-tasks-CwzdWFfG.js +1 -0
  224. package/dist/client/assets/{projects-D8PEOsfX.js → projects-Cadx_2S-.js} +1 -1
  225. package/dist/client/assets/{projects-empty-state-ComRagNK.js → projects-empty-state-B0sxQqwF.js} +1 -1
  226. package/dist/client/assets/{prompts-D-z15mGy.js → prompts-B6yRUPTQ.js} +1 -1
  227. package/dist/client/assets/record-editor-1SlOHcz4.js +1 -0
  228. package/dist/client/assets/redirect-editor-UO7ym99V.js +1 -0
  229. package/dist/client/assets/releases-api-Dz4kituq.js +1 -0
  230. package/dist/client/assets/{reports-C0wR9iIJ.js → reports-BN03l_kE.js} +1 -1
  231. package/dist/client/assets/reports-DuuFM9rE.js +1 -0
  232. package/dist/client/assets/{reports-onboarding-B1OyYbCz.js → reports-onboarding-CXYw21hI.js} +1 -1
  233. package/dist/client/assets/{reports-tab-D1M-BlGe.js → reports-tab-DNDxSx2i.js} +2 -2
  234. package/dist/client/assets/{repositories-DHT9v-UO.js → repositories-DkDpuhbE.js} +1 -1
  235. package/dist/client/assets/repositories-Dvbq5CpF.js +1 -0
  236. package/dist/client/assets/{repository-binding-CXnxCF4M.js → repository-binding-Dg4XMxXs.js} +1 -1
  237. package/dist/client/assets/{repository-import-picker-DLsxOOxp.js → repository-import-picker-BZ7PPi9W.js} +1 -1
  238. package/dist/client/assets/{repository-picker-Cq7JBkFe.js → repository-picker-aA12wSzy.js} +1 -1
  239. package/dist/client/assets/{require-capability-Cmje3DfT.js → require-capability-CXN6JJ5S.js} +1 -1
  240. package/dist/client/assets/{required-auth-layout-CwX_2fTY.js → required-auth-layout-pDiTStrv.js} +1 -1
  241. package/dist/client/assets/{reset-password-CmI8_Uk5.js → reset-password-CRhNEOOs.js} +1 -1
  242. package/dist/client/assets/{resizable-C7Is3s-0.js → resizable-HiC69AzM.js} +1 -1
  243. package/dist/client/assets/{resolve-tab-icon-_XMXFt4U.js → resolve-tab-icon-DdbyVt-l.js} +1 -1
  244. package/dist/client/assets/{review-settings-BFUKsPsq.js → review-settings-BdnOsmg6.js} +1 -1
  245. package/dist/client/assets/{roles-CeJo75GF.js → roles-C54CSjKN.js} +1 -1
  246. package/dist/client/assets/{route-BMliOu1G.js → route-19TfZ9Nu.js} +1 -1
  247. package/dist/client/assets/{route-Cvt2392J.js → route-ChUurj1a.js} +1 -1
  248. package/dist/client/assets/route-CkPY6J06.js +1 -0
  249. package/dist/client/assets/{sandbox-git-api-CH_-QFpD.js → sandbox-git-api-DcqI6XE4.js} +1 -1
  250. package/dist/client/assets/{sandbox-lifecycle-context-DdYoEP5e.js → sandbox-lifecycle-context-C-6LRZKK.js} +1 -1
  251. package/dist/client/assets/{schema-D5UoICKI.js → schema-4d6JAPZJ.js} +1 -1
  252. package/dist/client/assets/{schema-D02aTPkl.js → schema-DjHUnA9X.js} +1 -1
  253. package/dist/client/assets/{scroll-area-CDUvVvSH.js → scroll-area-DmCvljJ6.js} +1 -1
  254. package/dist/client/assets/{search-input-BqT8bImj.js → search-input-DuxKe01B.js} +1 -1
  255. package/dist/client/assets/{search-toggle-BoR9-yak.js → search-toggle-5fjHehxP.js} +1 -1
  256. package/dist/client/assets/{secret-picker-vfO2xRLb.js → secret-picker-gnCLcdHl.js} +1 -1
  257. package/dist/client/assets/{secrets-DIgmoPjh.js → secrets-1Q0KkbT2.js} +1 -1
  258. package/dist/client/assets/{section-array-field-BwPxgG9_.js → section-array-field-DJWSUlEO.js} +1 -1
  259. package/dist/client/assets/{sections-Bv_E_JwJ.js → sections-BFagCGU_.js} +1 -1
  260. package/dist/client/assets/sections-editor-Cd0e4qhb.js +1 -0
  261. package/dist/client/assets/{select-B73KS7i3.js → select-BU91L4uy.js} +1 -1
  262. package/dist/client/assets/{select-model-zK4bDPrj.js → select-model-CtxoaFb9.js} +1 -1
  263. package/dist/client/assets/{seo-editor-DMhyWewz.js → seo-editor-dOpYS1fH.js} +1 -1
  264. package/dist/client/assets/{separator-Bun_4c4E.js → separator-C2eDbIfB.js} +1 -1
  265. package/dist/client/assets/settings-tab-D7WyDwD7.js +1 -0
  266. package/dist/client/assets/{sheet-56HC7WRJ.js → sheet-CyFkbR9Y.js} +1 -1
  267. package/dist/client/assets/{shell-layout-C2BJGx2g.js → shell-layout-DjxWvBNL.js} +1 -1
  268. package/dist/client/assets/site-draft-actions-Ck3uf8oy.js +3 -0
  269. package/dist/client/assets/site-draft-view-DmpsxvZd.js +2 -0
  270. package/dist/client/assets/site-editor-BXDxn3xb.js +1 -0
  271. package/dist/client/assets/site-editor-toast-DwH2UhLV.js +1 -0
  272. package/dist/client/assets/{skills-DJ7eTdb8.js → skills-CEjNG6HD.js} +1 -1
  273. package/dist/client/assets/{slider-DnA5KcIW.js → slider-wRMQIU5C.js} +1 -1
  274. package/dist/client/assets/{sortable.esm-xXl-6mL4.js → sortable.esm-GfRDqHVM.js} +1 -1
  275. package/dist/client/assets/{sso-CpCZW-eP.js → sso-ou3AfF03.js} +1 -1
  276. package/dist/client/assets/{suggestion-CZpp719s.js → suggestion-GTJqe6wD.js} +2 -2
  277. package/dist/client/assets/{switch-n_zXX4if.js → switch-Be6f0Lf5.js} +1 -1
  278. package/dist/client/assets/{symbol-YpIq4fgA.js → symbol-D9upvJXv.js} +1 -1
  279. package/dist/client/assets/{synced-repos-B2cUQUNf.js → synced-repos-BMxqOtvT.js} +1 -1
  280. package/dist/client/assets/{tab-icon-glyph-D237cGJI.js → tab-icon-glyph-ixZicBgd.js} +1 -1
  281. package/dist/client/assets/{table-CSojOz4z.js → table-Sgqiv7ow.js} +1 -1
  282. package/dist/client/assets/{tabs-C8EZr9R7.js → tabs-CTBn6AHY.js} +1 -1
  283. package/dist/client/assets/{task-assignee-avatar-RKc3yRg-.js → task-assignee-avatar-CgqfXsXT.js} +1 -1
  284. package/dist/client/assets/{task-board-DH9ssxkG.js → task-board-B-WXUk04.js} +1 -1
  285. package/dist/client/assets/{task-route-bLUOK5JR.js → task-route-D7L_AjBa.js} +1 -1
  286. package/dist/client/assets/{task-status-Bc6ioQFn.js → task-status-D47mg_UC.js} +1 -1
  287. package/dist/client/assets/{taskboard-analytics-D7vs-xto.js → taskboard-analytics-BXOv_DdG.js} +1 -1
  288. package/dist/client/assets/tasks-CDonOW9g.js +1 -0
  289. package/dist/client/assets/{tasks-e6DH9H0h.js → tasks-DRiqBj-N.js} +3 -3
  290. package/dist/client/assets/{textarea-CDKBkceb.js → textarea-CiBj0MLq.js} +1 -1
  291. package/dist/client/assets/{thread-analytics-BTiORs_j.js → thread-analytics-apzZ--go.js} +1 -1
  292. package/dist/client/assets/{thread-intent-CZ5_EO2w.js → thread-intent-ClCyX82j.js} +1 -1
  293. package/dist/client/assets/{thread-route-BYWxmsao.js → thread-route-CFct_VQa.js} +1 -1
  294. package/dist/client/assets/{thread-route-DIZgBacC.js → thread-route-D14ghtgQ.js} +1 -1
  295. package/dist/client/assets/{thread-sheet-body-C_1TXm2y.js → thread-sheet-body-BCarr4x7.js} +1 -1
  296. package/dist/client/assets/{time-range-picker-CF_xrXhr.js → time-range-picker-C3_uZ5O2.js} +1 -1
  297. package/dist/client/assets/{toggle-group-DGx4bXEF.js → toggle-group-BVSslRda.js} +1 -1
  298. package/dist/client/assets/{tool-namespace-DO1Qm86o.js → tool-namespace-C-2tGGMF.js} +1 -1
  299. package/dist/client/assets/{toolbar-icon-button-DZE2ESw9.js → toolbar-icon-button-3L1Mfrbu.js} +1 -1
  300. package/dist/client/assets/{tooltip-Ci3ZwooP.js → tooltip-BHLCIkH9.js} +1 -1
  301. package/dist/client/assets/{tooltipContext-DfN2pXFs.js → tooltipContext-BMB7e6XT.js} +1 -1
  302. package/dist/client/assets/{track-BtJWR_CA.js → track-DUL7obAK.js} +1 -1
  303. package/dist/client/assets/{types-DhOLYbcW.js → types-9H7KFAzM.js} +3 -3
  304. package/dist/client/assets/{url-slug-CLyOdzAm.js → url-slug-CrYfl8wu.js} +1 -1
  305. package/dist/client/assets/{usage-stats-CNLGhk-o.js → usage-stats-CtXF_bWd.js} +1 -1
  306. package/dist/client/assets/{use-ai-providers-DOax94rO.js → use-ai-providers-DmHiyABc.js} +1 -1
  307. package/dist/client/assets/{use-apply-named-rule-CJFPy5HY.js → use-apply-named-rule-DnrC-2Y6.js} +1 -1
  308. package/dist/client/assets/{use-automations-CPkt7SVV.js → use-automations-BeX04Bm6.js} +1 -1
  309. package/dist/client/assets/{use-autosave-yGWalCYV.js → use-autosave-Civ5dqYG.js} +1 -1
  310. package/dist/client/assets/{use-chat-layout-state-EYafKK4O.js → use-chat-layout-state-DEHPkPVs.js} +1 -1
  311. package/dist/client/assets/{use-clock-tick-BUftA4XN.js → use-clock-tick-C1thlLib.js} +1 -1
  312. package/dist/client/assets/use-cms-publish-actions-Ca_6MHNE.js +10 -0
  313. package/dist/client/assets/{use-connect-companion-BhEYBdV4.js → use-connect-companion-XN72CB3K.js} +1 -1
  314. package/dist/client/assets/{use-connection-eHzowbKv.js → use-connection-DdV5v_sO.js} +1 -1
  315. package/dist/client/assets/{use-copy-ClerAXdJ.js → use-copy-DGCMROZD.js} +1 -1
  316. package/dist/client/assets/{use-create-virtual-mcp-J2E0RhLc.js → use-create-virtual-mcp-CYamK9uo.js} +1 -1
  317. package/dist/client/assets/{use-date-fns-locale-CrqyAQep.js → use-date-fns-locale-RvTpk_ov.js} +1 -1
  318. package/dist/client/assets/{use-debounced-autosave-BVxg8vxx.js → use-debounced-autosave-CCKD06RC.js} +1 -1
  319. package/dist/client/assets/{use-debounced-value-2_mLSVw4.js → use-debounced-value-D4hMc82O.js} +1 -1
  320. package/dist/client/assets/{use-deco-credits-DABk3yY1.js → use-deco-credits-8Cm_6S2l.js} +1 -1
  321. package/dist/client/assets/{use-decopilot-events-CA56Gos8.js → use-decopilot-events-CMhdGvid.js} +1 -1
  322. package/dist/client/assets/{use-delete-connection-CVhCNDYo.js → use-delete-connection-DczFLZ2h.js} +1 -1
  323. package/dist/client/assets/{use-deployment-admin-BGnnzyoF.js → use-deployment-admin-D33YqaOd.js} +1 -1
  324. package/dist/client/assets/{use-fast-preview-draft-url-DrM2pRhy.js → use-fast-preview-draft-url-5-OqnV1z.js} +1 -1
  325. package/dist/client/assets/{use-file-configs-Bg-fEAGm.js → use-file-configs-B-dtUlcn.js} +1 -1
  326. package/dist/client/assets/{use-inbox-feed-C9znaZFi.js → use-inbox-feed-DgAPUhXS.js} +1 -1
  327. package/dist/client/assets/{use-infinite-scroll-DfZZeab5.js → use-infinite-scroll-Boo11DpH.js} +1 -1
  328. package/dist/client/assets/{use-join-requests-DHGPKNlr.js → use-join-requests-WGDHodyD.js} +1 -1
  329. package/dist/client/assets/{use-main-panel-tabs-WUAIV6cr.js → use-main-panel-tabs-D8UhTy5h.js} +1 -1
  330. package/dist/client/assets/{use-mcp-auth-status-DZTVEUgz.js → use-mcp-auth-status-Ue891t8t.js} +1 -1
  331. package/dist/client/assets/{use-mcp-client-CfpsAKj4.js → use-mcp-client-B9-9jnHW.js} +1 -1
  332. package/dist/client/assets/{use-mcp-prompts-B6wGbsaO.js → use-mcp-prompts-Duq-F4uG.js} +1 -1
  333. package/dist/client/assets/{use-mcp-tools-De9LHWCI.js → use-mcp-tools-DvCVc1NG.js} +1 -1
  334. package/dist/client/assets/{use-mobile-99mfVsUI.js → use-mobile-BZz7cwuI.js} +1 -1
  335. package/dist/client/assets/use-move-blocks-DUpXqrhw.js +1 -0
  336. package/dist/client/assets/{use-navigate-to-agent-DaAFktW9.js → use-navigate-to-agent-CEpb-TPy.js} +1 -1
  337. package/dist/client/assets/{use-open-billing-url-Bzh-ntva.js → use-open-billing-url-AHjpaAXa.js} +1 -1
  338. package/dist/client/assets/{use-org-fs-Dczc29OI.js → use-org-fs-8kFrjmMH.js} +1 -1
  339. package/dist/client/assets/{use-org-repo-syncs-Cf3GrgqR.js → use-org-repo-syncs-DHiYUCj6.js} +1 -1
  340. package/dist/client/assets/{use-org-sso-CTKiuB0A.js → use-org-sso-l3h7LAOC.js} +1 -1
  341. package/dist/client/assets/{use-organization-roles-BfeXwaiy.js → use-organization-roles-DWGBtp2u.js} +1 -1
  342. package/dist/client/assets/{use-organization-settings-SIasU_tC.js → use-organization-settings-DAQWwUyU.js} +1 -1
  343. package/dist/client/assets/{use-panel-navigate-B12jZOsf.js → use-panel-navigate-C-mQZt-r.js} +1 -1
  344. package/dist/client/assets/{use-project-native-view-presence-BYkoNVb2.js → use-project-native-view-presence-D2zRgAqZ.js} +1 -1
  345. package/dist/client/assets/{use-project-scope-8q_Pr-Xb.js → use-project-scope-DYBc2cnp.js} +1 -1
  346. package/dist/client/assets/{use-recent-apps-0tmI_vdA.js → use-recent-apps-CahLdkOq.js} +1 -1
  347. package/dist/client/assets/{use-releases-BrcgpLBE.js → use-releases-Drxi11Hn.js} +1 -1
  348. package/dist/client/assets/{use-reports-diagnostic-DXt6zEk2.js → use-reports-diagnostic-C0y8CLzl.js} +1 -1
  349. package/dist/client/assets/{use-sandbox-events-DukuKdrD.js → use-sandbox-events-DKnAt9WL.js} +1 -1
  350. package/dist/client/assets/{use-secrets-zkQum-du.js → use-secrets-CCJcL_mR.js} +1 -1
  351. package/dist/client/assets/{use-section-preview-base-CPGTecvC.js → use-section-preview-base-yGU9kv3R.js} +1 -1
  352. package/dist/client/assets/{use-session-runtime-BkX1p9DX.js → use-session-runtime-CL3Ry0XG.js} +1 -1
  353. package/dist/client/assets/{use-sidebar-collapsed-DxKpoCm3.js → use-sidebar-collapsed-CbzeRAk-.js} +1 -1
  354. package/dist/client/assets/{use-tags-Cf5XANnQ.js → use-tags-Af_mmSB1.js} +1 -1
  355. package/dist/client/assets/{use-task-board-analytics-Bm_X5xzM.js → use-task-board-analytics-BkPBycom.js} +1 -1
  356. package/dist/client/assets/{use-task-board-events-CmQec1Gn.js → use-task-board-events-Bs2sMvhO.js} +1 -1
  357. package/dist/client/assets/{use-task-board-item-prs-CFwgg281.js → use-task-board-item-prs-DtKTjCYS.js} +1 -1
  358. package/dist/client/assets/{use-task-metadata-ztONCu50.js → use-task-metadata-CaEOmtPV.js} +1 -1
  359. package/dist/client/assets/{use-thread-analytics-D2_R_6NS.js → use-thread-analytics-DFAhXiiU.js} +1 -1
  360. package/dist/client/assets/{use-thread-outputs-CM6siwJk.js → use-thread-outputs-wHP5lV5E.js} +1 -1
  361. package/dist/client/assets/useInfiniteQuery-DAGt4Ai1.js +1 -0
  362. package/dist/client/assets/{useQueries-BmYWSC6K.js → useQueries-bayVPMWC.js} +1 -1
  363. package/dist/client/assets/useSuspenseInfiniteQuery-BCXHmK3t.js +1 -0
  364. package/dist/client/assets/{users-Tw_qkTX5.js → users-BXC7BZTC.js} +1 -1
  365. package/dist/client/assets/{utils-gKN9JfVP.js → utils-C_XIOzcP.js} +1 -1
  366. package/dist/client/assets/{variant-calendar-BPJ1qq_6.js → variant-calendar-DqsG-wJ9.js} +1 -1
  367. package/dist/client/assets/variant-matcher-override-BfAJFrjh.js +1 -0
  368. package/dist/client/assets/view-header-BlWEzmVd.js +1 -0
  369. package/dist/client/assets/{virtual-mcp-DSjzxtZz.js → virtual-mcp-BfSfmNNT.js} +1 -1
  370. package/dist/client/assets/{watch-sse-pool-B-BVtIbV.js → watch-sse-pool-D5nA1051.js} +1 -1
  371. package/dist/client/index.html +2 -2
  372. package/dist/server/server.js +1 -1
  373. package/package.json +1 -1
  374. package/dist/client/assets/agent-analytics-DekAZPEA.js +0 -1
  375. package/dist/client/assets/agent-app-CTIntyRO.js +0 -1
  376. package/dist/client/assets/agent-calendar-BOwlx26G.js +0 -1
  377. package/dist/client/assets/agent-deck-Blwg0xlI.js +0 -1
  378. package/dist/client/assets/agent-experiments-Dh0XTNYQ.js +0 -1
  379. package/dist/client/assets/agent-icon-C1y4Hi5E.js +0 -1
  380. package/dist/client/assets/agent-library-BvqNBNnB.js +0 -1
  381. package/dist/client/assets/agent-library-file-B3CNW-Ur.js +0 -1
  382. package/dist/client/assets/agent-monitor-CRDNCfA0.js +0 -1
  383. package/dist/client/assets/agent-releases-Cm87ANGo.js +0 -2
  384. package/dist/client/assets/agent-settings-BO1V25up.js +0 -1
  385. package/dist/client/assets/agent-site-editor-code-C_cxtapJ.js +0 -2
  386. package/dist/client/assets/agent-site-editor-content-BGtWv50J.js +0 -1
  387. package/dist/client/assets/agent-site-editor-preview-B0XVbr7I.js +0 -1
  388. package/dist/client/assets/agent-view-sQDimm56.js +0 -1
  389. package/dist/client/assets/alert-DiPve0LV.js +0 -1
  390. package/dist/client/assets/api-keys-6VZ4TzW2.js +0 -1
  391. package/dist/client/assets/app-editor-ajdhmZLY.js +0 -1
  392. package/dist/client/assets/category-editor-DcJjRuKm.js +0 -1
  393. package/dist/client/assets/cms-settings-editor-CFLaDl_s.js +0 -1
  394. package/dist/client/assets/collection-table-wrapper-BRngAqmo.js +0 -1
  395. package/dist/client/assets/content-tab--1ooKCUT.js +0 -22
  396. package/dist/client/assets/context-C0NiIgda.js +0 -1
  397. package/dist/client/assets/experiments-tab-B8wvIAAX.js +0 -1
  398. package/dist/client/assets/index-DfpwvZQG.css +0 -1
  399. package/dist/client/assets/library--gRfaIdM.js +0 -1
  400. package/dist/client/assets/monitoring-VWUfglka.js +0 -1
  401. package/dist/client/assets/mustache-BxO97obl.js +0 -4
  402. package/dist/client/assets/post-calendar-DYyzGtbp.js +0 -1
  403. package/dist/client/assets/project-app-view-BwcoGS-v.js +0 -1
  404. package/dist/client/assets/project-reports-C5SkTKHX.js +0 -1
  405. package/dist/client/assets/project-tasks-CX44ab5v.js +0 -1
  406. package/dist/client/assets/record-editor-FHEv7gn_.js +0 -1
  407. package/dist/client/assets/redirect-editor-BcHXzq7w.js +0 -1
  408. package/dist/client/assets/releases-api-Dd6sHYpc.js +0 -1
  409. package/dist/client/assets/reports-DRzidVXr.js +0 -1
  410. package/dist/client/assets/repositories-Q-unbJnr.js +0 -1
  411. package/dist/client/assets/route-DVaDfduX.js +0 -1
  412. package/dist/client/assets/sections-editor-2zr-sr1i.js +0 -1
  413. package/dist/client/assets/settings-tab-CdOisIW6.js +0 -1
  414. package/dist/client/assets/site-draft-actions-CSQlnRHC.js +0 -12
  415. package/dist/client/assets/site-draft-view-BaHCN82W.js +0 -2
  416. package/dist/client/assets/site-editor-VsNIJVQY.js +0 -1
  417. package/dist/client/assets/site-editor-toast-DQ656FVh.js +0 -1
  418. package/dist/client/assets/tasks-DnPEEzRb.js +0 -1
  419. package/dist/client/assets/use-content-sync-CsEeS6wP.js +0 -1
  420. package/dist/client/assets/use-move-blocks-ChQw5gpw.js +0 -1
  421. package/dist/client/assets/useInfiniteQuery-DFK0dHSs.js +0 -1
  422. package/dist/client/assets/useSuspenseInfiniteQuery-BBbMOBX0.js +0 -1
  423. package/dist/client/assets/variant-matcher-override-DKBTrcbu.js +0 -1
@@ -4523,7 +4523,7 @@ ${X}`:`${Y}
4523
4523
 
4524
4524
  ${X}
4525
4525
  ${J.slice(Y.length).trimStart()}`}function LE8($){return $?.match(lF5)?.[1]?.toLowerCase()??null}async function iF5($,Z,Q){let[Y,X]=await Promise.all([$.client.listDecofileEntries(Z,$.packagePath),$.client.listDecofileEntries(Q,$.packagePath)]),J=new Map(WW(Y,$.packagePath).map((H)=>[H.path,H.sha])),G=WW(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 DE8($,Z){try{return await GY0($.client,$.packagePath,Z)}catch(Q){if(Q instanceof u2)return null;throw Q}}async function OE8($,Z,Q){let Y=XO($.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([DE8($,Z),DE8($,Q)]);return G!==W}async function jE8($,Z){if(!eB0(Z))throw new Dl;if(!await Eq1($.store,$.site,Z))throw new Dl}async function wE8($,Z){await jE8($,Z);let Q=await k5($.client,$.mainBranch);return OE8($,Q,Z)}async function EE8($,Z,Q={},Y={}){await jE8($,Z);let X=await $.client.readCommit(Z);if(!X)throw new Dl;let J=await k5($.client,$.mainBranch),G=await iF5($,J,Z);if(G.changes.length===0)return{result:"up-to-date"};let W=await OE8($,J,Z);if(W)console.info("hosted reapply: schema differs",{site:$.site,target:Z,head:J});let K=await Pq1($,J,G,dF5(X,Z,Q.coAuthor));return{result:"merged",sha:K,release:await Gh0($,K,Y),schemaChanged:W}}var Dl,uF5="Reapplied-From",lF5;var Rq1=L(()=>{qp();W5();pK();KB();KY0();Jh0();BE8();Dl=class Dl extends Error{constructor(){super("This commit has no release");this.name="NotPublishedError"}};lF5=/^Reapplied-From:\s*([0-9a-f]{40})\s*$/im});async function PE8($,Z,Q){let[Y,X,J]=await Promise.all([WY0($.store,$.site),H2$($.store,$.site),Z.listCommits({ref:$.mainBranch,since:nF5,cursor:Q,limit:pF5})]),G=new Map(J.items.map((H)=>[H.sha,H.date])),W=J.items.map((H)=>LE8(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 zE8($){let Z=await k5($.client,$.mainBranch),Q=await zq1($,Z);return Aq1($,{revision:Z,schemaHash:Q,publishedAt:new Date().toISOString()})}var pF5=50,nF5="1970-01-01T00:00:00Z";var AE8=L(()=>{W5();KB();KY0();Rq1()});function TE8($){return`site-tokens:${$}`}function tF5($){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 qE8($){return crypto.subtle.importKey("pkcs8",Buffer.from($,"base64"),{name:"Ed25519"},!1,["sign"])}async function oF5($,Z){let Q=(J)=>Mq1(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}.${Mq1(X)}`}function RE8($){let Z=async(Q,Y)=>tF5(await $.kv.get(Q,TE8(Y)));return{list:Z,async issue(Q,Y){let X=await Z(Q,Y),J={kid:Mq1(crypto.getRandomValues(new Uint8Array(16))),iat:Math.floor(Date.now()/1000)},G=await oF5(await $.signingKey(),{site:Y,...J});return await $.kv.set(Q,TE8(Y),{tokens:[...X,J]}),{token:G,record:J}}}}var Mq1=($)=>Buffer.from($ instanceof Uint8Array?$:new Uint8Array($)).toString("base64url");function aF5(){let $=iq();return $?{store:$,purge:Qh0()}:null}async function Nh0($){let Z=$.var.delivery();if(!Z)return null;let Q=$.get("hostedProject"),Y=await $.var.repoClientFor($.var.studioContext,Q.organizationId,Q.repository);return{client:Y,packagePath:Q.packagePath,mainBranch:await Y.getDefaultBranch(),store:Z.store,purge:Z.purge,site:Q.site,previewHosts:await Yh0({site:Q.site,metadata:Q.metadata,domains:$.var.siteDomains})}}function ME8($){let Z=B0().siteTokenSigningKey;if(!Z)return null;return RE8({kv:$.var.studioContext.storage.kv,signingKey:()=>qE8(Z)})}function os($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof u2)return $.json({error:Q},409);if(Z instanceof Wh0)return console.error("hosted: latest.json update failed",{error:Q}),$.json({error:"latest-update-failed"},502);let Y=y3(Z);if(Y!==null)return $.json({error:Q},Y===404?404:502);return console.error("hosted: request failed",{error:Q}),$.json({error:Q},500)}function VE8($={}){let Z=new $1,Q=$.repoClientFor??h3,Y=$.insightsFor??NE$,X=$.delivery??aF5;return Z.use("*",async(J,G)=>{J.set("repoClientFor",Q),J.set("delivery",X),J.set("siteDomains",$.siteDomains),await G()}),Z.use("/:virtualMcpId/*",sF5),Z.get("/:virtualMcpId/releases",async(J)=>{try{let G=await Nh0(J);if(!G)return J.json(Uh0,503);let W=J.get("hostedProject"),K=await Y(J.var.studioContext,W.organizationId,W.repository);return J.json(await PE8(G,K,J.req.query("cursor")??null),200,{"Cache-Control":"no-store"})}catch(G){return os(J,G)}}),Z.post("/:virtualMcpId/releases/retry",async(J)=>{try{let G=await Nh0(J);if(!G)return J.json(Uh0,503);let W=await J.req.json().catch(()=>({})),K=await zE8(G),H=J.var.studioContext.auth?.user?.id;if(typeof W.branch==="string"&&W.branch&&typeof W.draftEtag==="string"&&W.draftEtag&&H){let F=J.get("hostedProject");await Tq1(G,YD0({kv:J.var.studioContext.storage.kv,store:G.store}),{organizationId:F.organizationId,virtualMcpId:F.virtualMcpId,branch:W.branch,site:F.site,editor:H},W.draftEtag)}return J.json({current:K})}catch(G){return os(J,G)}}),Z.get("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Nh0(J);if(!G)return J.json(Uh0,503);return J.json({schemaChanged:await wE8(G,J.req.param("sha"))})}catch(G){if(G instanceof Dl)return J.json({error:G.message},404);return os(J,G)}}),Z.post("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Nh0(J);if(!G)return J.json(Uh0,503);let W=await EE8(G,J.req.param("sha"),{coAuthor:BO(J.var.studioContext)});return J.json(W)}catch(G){if(G instanceof Dl)return J.json({error:G.message},404);if(G instanceof Bl)return J.json({error:"main-moved"},409);return os(J,G)}}),Z.get("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=ME8(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=ME8(J);if(!W)return J.json({error:"site tokens not configured"},503);try{let K=await J.var.repoClientFor(J.var.studioContext,G.organizationId,G.repository),H=await pq(K,G.packagePath,await K.getDefaultBranch());if(await li(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 os(J,K)}}),Z}var sF5,Uh0;var IE8=L(()=>{lF();H8();ug0();kJ();mF();W5();KB();Uq1();XD0();KY0();wq1();Jh0();AE8();Rq1();a40();nq();ui();u1();qR();sF5=fs(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 VQ(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let X=$.req.param("virtualMcpId")??"",J=await Q.storage.virtualMcps.findById(X);if(!J||J.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);if(!vQ(await ZQ(Q),X))return $.json({error:"Virtual MCP not found"},404);let G=J.metadata??null,W=NW(G,J.connections?.map((H)=>H.connection_id)??[]);if(!W)return $.json({error:"Project has no repository"},404);try{let H=await $.var.repoClientFor(Q,Y.id,W);if(!await GD0({projects:Q.storage.virtualMcps,project:{id:X,organizationId:Y.id,metadata:G},by:Q.auth.user.id,client:H,mainBranch:await H.getDefaultBranch()}))return $.json({error:"Not found"},404)}catch(H){return os($,H)}let K=await JD0(Q.storage.orgSites,X,Y.id);if(!K)return $.json(hi,409);return $.set("hostedProject",{organizationId:Y.id,virtualMcpId:X,site:K,packagePath:HB(G),repository:W,metadata:G}),Z()}),Uh0={error:"hosted delivery not configured"}});var kE8=($)=>{let Z=new $1;if(Z.use("*",Ws),Z.use("*",mN8),Z.route("/",uN8($.voiceSessions)),Z.route("/",iy0()),Z.route("/",qB8()),Z.route("/",fB8()),Z.route("/",EB8()),Z.route("/",uO8()),Z.route("/",mO8()),Z.route("/",_O8()),Z.route("/",gO8()),Z.route("/",bO8()),Z.route("/",yg0()),Z.route("/tools",oO8()),Z.route("/",pO8()),Z.route("/",NO8({kvStorage:$.kvStorage})),Z.route("/",FO8()),Z.route("/fs",TO8({getConnection:$.getNatsConnection})),Z.route("/sandbox",Lw8()),Z.route("/decofile",KE8()),Z.route("/hosted",VE8()),Z.route("/",kO8()),Z.route("/",RO8()),Z.route("/deco-sites",ny0()),Z.route("/hosting",eN8()),Z.route("/monitor",UB8()),Z.route("/order-monitor",LB8()),Z.route("/sso",hy0()),Z.route("/",gg0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",tN8()),$.mountDevAssets)Z.route("/dev-assets",Zg0({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 qT1)Z.use(`${Q}/:threadId`,$.mcpAuth);Z.route("/",_G8()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler);for(let Q of qT1)Z.route(Q,VO8());return Z.route("/mcp",Gx0()),Z.route("/mcp/self",vg0()),Z.route("/mcp",Hx0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var CE8=L(()=>{H8();lN8();cN8();Iy0();oN8();r21();$B8();NB8();OB8();Qg0();_2();n21();RB8();YA1();UO8();BO8();qO8();MO8();NZ0();g21();Fx0();TT1();IO8();CO8();vO8();xO8();VT1();lO8();cO8();nO8();IT1();sO8();kT1();Wx0();Ow8();HE8();IE8()});import{z as Ll}from"zod";class Vq1{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 vE8.Kvm(Bh0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Bh0.StorageType.Memory,ttl:bE8.nanos(vO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}async conversationAgent($){let Z=await this.kv(),Q=`agent.${$.conversationKey}`,Y=Date.now()+45000;while(Date.now()<Y){let X=await Z.get(Q),J=X?.operation==="PUT"?_E8.parse(X.json()):null;if(J?.state==="ready")return J.agentId;if(J?.state==="creating"&&J.expiresAt>Date.now()){await G$(200);continue}let G=SE8.encode(JSON.stringify({state:"creating",expiresAt:Date.now()+40000})),W;try{W=X&&J?await Z.update(Q,G,X.revision):await Z.create(Q,G)}catch{await G$(200);continue}try{let K=await $.ensureConversationAgent();return await Z.update(Q,SE8.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"?_E8.parse(G.json()):null;if(G&&W?.state==="ready"&&W.agentId===Q)await X.delete(J,{previousSeq:G.revision}).catch(()=>{});throw Y}}}var Bh0,vE8,bE8,SE8,_E8;var xE8=L(()=>{U3();xB();g$();Bh0=_(nH(),1),vE8=_(Eq(),1),bE8=_(FA(),1),SE8=new TextEncoder,_E8=Ll.discriminatedUnion("state",[Ll.object({state:Ll.literal("ready"),agentId:Ll.string()}),Ll.object({state:Ll.literal("creating"),expiresAt:Ll.number()})])});import{z as ss}from"zod";function rF5($){return{model:$.model,instructions:`${Wi$}
4526
- Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class Iq1{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:rF5({...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:ss.object({session:ss.object({id:ss.string().min(1)}),transport:ss.object({type:ss.literal("webrtc"),sdp:ss.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var fE8=L(()=>{xB()});var yE8;var gE8=L(()=>{yE8=[{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 kq1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:Ji$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:yE8.map((Z)=>({...Z,type:"client",expects_response:!0,response_timeout_secs:Z.name==="delegate_to_agent"?20:5,...Z.name==="delegate_to_agent"?{execution_mode:"async",interruption_mode:"allow",pre_tool_speech:"off"}:{}}))}},asr:{provider:"scribe_realtime",quality:"high"},turn:{turn_eagerness:"normal",turn_timeout:-1,silence_end_call_timeout:-1},tts:{voice_id:$.voiceId,model_id:$.model},conversation:{max_duration_seconds:vO/1000,client_events:["audio","interruption","user_transcript","agent_response","client_tool_call","vad_score"]}},platform_settings:{auth:{enable_auth:!0},privacy:{record_voice:!1,retention_days:1,delete_audio:!0,delete_transcript_and_pii:!0},overrides:{conversation_config_override:{agent:{language:!0}}}}}}var hE8=L(()=>{xB();gE8()});import{z as eJ}from"zod";import{createHash as eF5,createHmac as $U5}from"crypto";class Dh0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=eF5("sha256").update(JSON.stringify(kq1($))).digest("hex"),this.conversationKey=$U5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Dh0({...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}=eJ.object({agents:eJ.array(eJ.object({agent_id:eJ.string(),name:eJ.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 eJ.object({platform_settings:eJ.object({auth:eJ.object({enable_auth:eJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...kq1(this.config)},AbortSignal.timeout(15000));return eJ.object({agent_id:eJ.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 eJ.object({token:eJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return eJ.object({token:eJ.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 uE8=L(()=>{hE8()});import{createHmac as ZU5,timingSafeEqual as QU5}from"crypto";import{z as as}from"zod";function mE8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return ZU5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function cE8($,Z){let Q=Buffer.from(JSON.stringify(lE8.parse($))).toString("base64url");return`${Q}.${mE8(Q,Z)}`}function dE8($,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(mE8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!QU5(W,G))return null;try{let K=lE8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+vO)return null;return K.data}catch{return null}}var lE8;var iE8=L(()=>{xB();lE8=as.object({sessionId:as.string().uuid(),organizationId:as.string().min(1).max(256),userId:as.string().min(1).max(256),threadId:as.string().min(1).max(256),expiresAt:as.number().int().positive()})});import{z as Cq1}from"zod";function pE8($,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 Sq1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var Sq1;var nE8=L(()=>{Sq1=Cq1.object({provider:Cq1.enum(["elevenlabs","openai"]),model:Cq1.string().trim().min(1).max(128)})});import{createHash as YU5}from"crypto";import{z as rs}from"zod";function es($){return`user.${YU5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class vq1{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 tE8.Kvm(Oh0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Oh0.StorageType.Memory,ttl:oE8.nanos(vO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}adapter(){if(!this.deps.adapter)throw new R1(503,{message:"Voice is not configured on this deployment"});return this.deps.adapter}async create($,Z=!1,Q="en",Y){let X;if(Z)try{X=pE8(this.deps.defaults,Y)}catch{throw new R1(503,{message:"Voice configuration is invalid"})}let J=X?this.deps.conversationAdapters[X.provider]:this.adapter();if(!J)throw new R1(503,{message:"Voice is not configured on this deployment"});let G={...$,sessionId:crypto.randomUUID(),expiresAt:Date.now()+vO},W=cE8(G,this.deps.secret),K=await this.kv(),H=es(G),F=await K.get(H),U=F?.operation==="PUT"?Lh0.parse(F.json()):null,N=_q1.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:es($)});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=dE8(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=es(Q),J=await Y.get(X),G=J?.operation==="PUT"?Lh0.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,_q1.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=es(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Lh0.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,_q1.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(es($));if(Q?.operation==="PUT"&&Lh0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(es($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var Oh0,tE8,oE8,Lh0,_q1;var sE8=L(()=>{U3();xB();iE8();nE8();Oh0=_(nH(),1),tE8=_(Eq(),1),oE8=_(FA(),1),Lh0=rs.object({sessionId:rs.string().uuid(),expiresAt:rs.number(),connected:rs.boolean().optional(),conversation:Sq1.optional(),characters:rs.number().int().nonnegative(),requests:rs.number().int().nonnegative()}),_q1=new TextEncoder});import{z as c1}from"zod";function jD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function BU5($){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 DU5($,Z,Q){try{return JSON.parse($)}catch{throw new eE8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function LU5($){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:DU5(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 OU5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?SN(Q.function.parameters):SN({type:"object",properties:{}});return[Q.function.name,a$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function jU5($){if(!$)return;return{openai:{response_format:$}}}function wU5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function aE8($,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 rE8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var XU5=256,JU5,GU5,WU5,KU5,HU5,FU5,UU5,NU5,eE8,$P8,ZP8;var QP8=L(()=>{u4();H8();xs();jU();JU5=c1.object({type:c1.literal("function"),function:c1.object({name:c1.string(),description:c1.string().optional(),parameters:c1.record(c1.string(),c1.unknown()).optional()})}),GU5=c1.object({id:c1.string(),type:c1.literal("function"),function:c1.object({name:c1.string(),arguments:c1.string()})}),WU5=c1.discriminatedUnion("role",[c1.object({role:c1.literal("system"),content:c1.string(),name:c1.string().optional()}),c1.object({role:c1.literal("user"),content:c1.union([c1.string(),c1.array(c1.union([c1.object({type:c1.literal("text"),text:c1.string()}),c1.object({type:c1.literal("image_url"),image_url:c1.object({url:c1.string(),detail:c1.string().optional()})})]))]),name:c1.string().optional()}),c1.object({role:c1.literal("assistant"),content:c1.string().nullable().optional(),name:c1.string().optional(),tool_calls:c1.array(GU5).optional()}),c1.object({role:c1.literal("tool"),content:c1.string(),tool_call_id:c1.string()})]),KU5=c1.object({type:c1.literal("text")}),HU5=c1.object({type:c1.literal("json_object")}),FU5=c1.object({type:c1.literal("json_schema"),json_schema:c1.object({name:c1.string(),description:c1.string().optional(),schema:c1.record(c1.string(),c1.unknown()),strict:c1.boolean().optional()})}),UU5=c1.union([KU5,HU5,FU5]),NU5=c1.object({model:c1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:c1.array(WU5),stream:c1.boolean().optional().default(!1),temperature:c1.number().min(0).max(2).optional(),max_tokens:c1.number().positive().optional(),top_p:c1.number().min(0).max(1).optional(),frequency_penalty:c1.number().min(-2).max(2).optional(),presence_penalty:c1.number().min(-2).max(2).optional(),stop:c1.union([c1.string(),c1.array(c1.string())]).optional(),tools:c1.array(JU5).optional(),tool_choice:c1.union([c1.literal("auto"),c1.literal("none"),c1.literal("required"),c1.object({type:c1.literal("function"),function:c1.object({name:c1.string()})})]).optional(),response_format:UU5.optional(),user:c1.string().optional()});eE8=class eE8 extends Error{constructor($){super($);this.name="MessageConversionError"}};$P8=new $1;$P8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(jD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(jD("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(jD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=NU5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(jD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=BU5(J.model);if(!G)return $.json(jD("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)=>BT(E.providerId));if(!w)return $.json(jD("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(jD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=LU5(J.messages),N=J.tools?OU5(J.tools):void 0,B=jU5(J.response_format),D=wU5(),O=Math.floor(Date.now()/1000);if(J.stream)return Cj($,async(j)=>{let w=aE8(F,U,N,J,B,$.req.raw.signal);try{let E=In(w),P=!1,A=0,z="",T=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>=XU5)await T()}else if(R.type==="tool-call"){await T();let f=A++;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 T(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:rE8(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 T(),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=aE8(F,U,N,J,B,$.req.raw.signal),w=await fO(j),E={role:"assistant",content:w.text||null};if(w.toolCalls&&w.toolCalls.length>0)E.tool_calls=w.toolCalls.map((P)=>({id:P.toolCallId,type:"function",function:{name:P.toolName,arguments:JSON.stringify("input"in P?P.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:O,model:J.model,choices:[{index:0,message:E,finish_reason:rE8(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(jD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(jD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(jD(X.message,"server_error"),500)}});ZP8=$P8});function EU5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function YP8(){let $=new $1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=C0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!l5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||_9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(xT(U)!==J)continue;if(!EU5(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 XP8=L(()=>{H8();FX()});var jh0;var bq1=L(()=>{jh0={name:"decocms",version:"4.527.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^3.1.0","@opentelemetry/core":"^2.6.0",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.8.0","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^7.0.107","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function AU5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??zU5}}var JP8,zU5="https://ph.studio.decocms.com",GP8;var WP8=L(()=>{H8();Ae();nh();B9();u1();at();A21();bq1();JP8=new $1;JP8.get("/",($)=>{let Z={version:jh0.version,theme:A4$(),...KF().logo&&{logo:KF().logo},...tO()&&{internalUrl:A8$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&Q2(),plansEnabled:B0().plansEnabled,auth:kU8(),posthog:AU5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:fU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});GP8=JP8});import{z as M$}from"zod";var TU5,KP8;var HP8=L(()=>{TU5=M$.object({check_id:M$.string(),title:M$.string(),description:M$.string().optional(),impact:M$.string().optional(),why:M$.string().optional(),category:M$.string(),severity:M$.string(),value_band:M$.string().optional(),value_driver:M$.string().optional(),controllability:M$.string().optional(),pages:M$.array(M$.string()),tasks:M$.array(M$.string()),evidence:M$.string(),sample_scope:M$.string().optional(),sources:M$.array(M$.string())}),KP8=M$.object({domain:M$.string(),brand:M$.string(),favicon:M$.string().optional(),scanned_at:M$.string().nullable(),lang:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),totals:M$.object({measured:M$.number(),registry_total:M$.number(),passed:M$.number(),failed:M$.number(),blocked:M$.number()}),buckets:M$.array(M$.object({id:M$.enum(["critical","important","worth"]),label:M$.string(),items:M$.array(TU5)})),passing:M$.object({count:M$.number(),items:M$.array(M$.object({check_id:M$.string(),title:M$.string()}))}),not_measured:M$.object({count:M$.number(),groups:M$.array(M$.object({reason:M$.string(),label:M$.string(),count:M$.number(),checks:M$.array(M$.string())}))}),categories:M$.array(M$.object({key:M$.string(),label:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),pass:M$.number(),fail:M$.number()})),screenshots:M$.array(M$.object({url:M$.string(),page_type:M$.string().optional(),viewport:M$.enum(["desktop","mobile"]),image_url:M$.string()}))})});function FP8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${xK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function wh0($,Z={}){let Q=await fetch(FP8($,"",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 KP8.parse(await Q.json())}async function UP8($,Z={}){let Q=await fetch(FP8($,".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 xq1=L(()=>{HP8();cL()});import{join as NP8}from"path";async function RU5($){try{let Z=await wh0($,{signal:AbortSignal.timeout(qU5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||cw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function DG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function MU5($,Z){let Q=Tu($),Y=Z?.brand?.trim()||cw1(Q),X=IJ8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=kJ8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${DG(W)}</title>`,`<meta name="description" content="${DG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${DG(W)}" />`,`<meta property="og:description" content="${DG(K)}" />`,`<meta property="og:url" content="${DG(G)}" />`,`<meta property="og:image" content="${DG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${DG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${DG(W)}" />`,`<meta name="twitter:description" content="${DG(K)}" />`,`<meta name="twitter:image" content="${DG(H)}" />`,`<meta name="twitter:image:alt" content="${DG(F)}" />`,`<link rel="canonical" href="${DG(G)}" />`,`<link rel="alternate" type="text/markdown" href="${DG(G)}.md" />`,`<link rel="icon" href="${DG(X)}" sizes="any" />`].join(`
4526
+ Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class Iq1{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:rF5({...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:ss.object({session:ss.object({id:ss.string().min(1)}),transport:ss.object({type:ss.literal("webrtc"),sdp:ss.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var fE8=L(()=>{xB()});var yE8;var gE8=L(()=>{yE8=[{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 kq1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:Ji$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:yE8.map((Z)=>({...Z,type:"client",expects_response:!0,response_timeout_secs:Z.name==="delegate_to_agent"?20:5,...Z.name==="delegate_to_agent"?{execution_mode:"async",interruption_mode:"allow",pre_tool_speech:"off"}:{}}))}},asr:{provider:"scribe_realtime",quality:"high"},turn:{turn_eagerness:"normal",turn_timeout:-1,silence_end_call_timeout:-1},tts:{voice_id:$.voiceId,model_id:$.model},conversation:{max_duration_seconds:vO/1000,client_events:["audio","interruption","user_transcript","agent_response","client_tool_call","vad_score"]}},platform_settings:{auth:{enable_auth:!0},privacy:{record_voice:!1,retention_days:1,delete_audio:!0,delete_transcript_and_pii:!0},overrides:{conversation_config_override:{agent:{language:!0}}}}}}var hE8=L(()=>{xB();gE8()});import{z as eJ}from"zod";import{createHash as eF5,createHmac as $U5}from"crypto";class Dh0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=eF5("sha256").update(JSON.stringify(kq1($))).digest("hex"),this.conversationKey=$U5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Dh0({...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}=eJ.object({agents:eJ.array(eJ.object({agent_id:eJ.string(),name:eJ.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 eJ.object({platform_settings:eJ.object({auth:eJ.object({enable_auth:eJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...kq1(this.config)},AbortSignal.timeout(15000));return eJ.object({agent_id:eJ.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 eJ.object({token:eJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return eJ.object({token:eJ.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 uE8=L(()=>{hE8()});import{createHmac as ZU5,timingSafeEqual as QU5}from"crypto";import{z as as}from"zod";function mE8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return ZU5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function cE8($,Z){let Q=Buffer.from(JSON.stringify(lE8.parse($))).toString("base64url");return`${Q}.${mE8(Q,Z)}`}function dE8($,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(mE8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!QU5(W,G))return null;try{let K=lE8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+vO)return null;return K.data}catch{return null}}var lE8;var iE8=L(()=>{xB();lE8=as.object({sessionId:as.string().uuid(),organizationId:as.string().min(1).max(256),userId:as.string().min(1).max(256),threadId:as.string().min(1).max(256),expiresAt:as.number().int().positive()})});import{z as Cq1}from"zod";function pE8($,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 Sq1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var Sq1;var nE8=L(()=>{Sq1=Cq1.object({provider:Cq1.enum(["elevenlabs","openai"]),model:Cq1.string().trim().min(1).max(128)})});import{createHash as YU5}from"crypto";import{z as rs}from"zod";function es($){return`user.${YU5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class vq1{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 tE8.Kvm(Oh0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Oh0.StorageType.Memory,ttl:oE8.nanos(vO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}adapter(){if(!this.deps.adapter)throw new R1(503,{message:"Voice is not configured on this deployment"});return this.deps.adapter}async create($,Z=!1,Q="en",Y){let X;if(Z)try{X=pE8(this.deps.defaults,Y)}catch{throw new R1(503,{message:"Voice configuration is invalid"})}let J=X?this.deps.conversationAdapters[X.provider]:this.adapter();if(!J)throw new R1(503,{message:"Voice is not configured on this deployment"});let G={...$,sessionId:crypto.randomUUID(),expiresAt:Date.now()+vO},W=cE8(G,this.deps.secret),K=await this.kv(),H=es(G),F=await K.get(H),U=F?.operation==="PUT"?Lh0.parse(F.json()):null,N=_q1.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:es($)});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=dE8(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=es(Q),J=await Y.get(X),G=J?.operation==="PUT"?Lh0.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,_q1.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=es(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Lh0.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,_q1.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(es($));if(Q?.operation==="PUT"&&Lh0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(es($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var Oh0,tE8,oE8,Lh0,_q1;var sE8=L(()=>{U3();xB();iE8();nE8();Oh0=_(nH(),1),tE8=_(Eq(),1),oE8=_(FA(),1),Lh0=rs.object({sessionId:rs.string().uuid(),expiresAt:rs.number(),connected:rs.boolean().optional(),conversation:Sq1.optional(),characters:rs.number().int().nonnegative(),requests:rs.number().int().nonnegative()}),_q1=new TextEncoder});import{z as c1}from"zod";function jD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function BU5($){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 DU5($,Z,Q){try{return JSON.parse($)}catch{throw new eE8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function LU5($){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:DU5(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 OU5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?SN(Q.function.parameters):SN({type:"object",properties:{}});return[Q.function.name,a$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function jU5($){if(!$)return;return{openai:{response_format:$}}}function wU5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function aE8($,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 rE8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var XU5=256,JU5,GU5,WU5,KU5,HU5,FU5,UU5,NU5,eE8,$P8,ZP8;var QP8=L(()=>{u4();H8();xs();jU();JU5=c1.object({type:c1.literal("function"),function:c1.object({name:c1.string(),description:c1.string().optional(),parameters:c1.record(c1.string(),c1.unknown()).optional()})}),GU5=c1.object({id:c1.string(),type:c1.literal("function"),function:c1.object({name:c1.string(),arguments:c1.string()})}),WU5=c1.discriminatedUnion("role",[c1.object({role:c1.literal("system"),content:c1.string(),name:c1.string().optional()}),c1.object({role:c1.literal("user"),content:c1.union([c1.string(),c1.array(c1.union([c1.object({type:c1.literal("text"),text:c1.string()}),c1.object({type:c1.literal("image_url"),image_url:c1.object({url:c1.string(),detail:c1.string().optional()})})]))]),name:c1.string().optional()}),c1.object({role:c1.literal("assistant"),content:c1.string().nullable().optional(),name:c1.string().optional(),tool_calls:c1.array(GU5).optional()}),c1.object({role:c1.literal("tool"),content:c1.string(),tool_call_id:c1.string()})]),KU5=c1.object({type:c1.literal("text")}),HU5=c1.object({type:c1.literal("json_object")}),FU5=c1.object({type:c1.literal("json_schema"),json_schema:c1.object({name:c1.string(),description:c1.string().optional(),schema:c1.record(c1.string(),c1.unknown()),strict:c1.boolean().optional()})}),UU5=c1.union([KU5,HU5,FU5]),NU5=c1.object({model:c1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:c1.array(WU5),stream:c1.boolean().optional().default(!1),temperature:c1.number().min(0).max(2).optional(),max_tokens:c1.number().positive().optional(),top_p:c1.number().min(0).max(1).optional(),frequency_penalty:c1.number().min(-2).max(2).optional(),presence_penalty:c1.number().min(-2).max(2).optional(),stop:c1.union([c1.string(),c1.array(c1.string())]).optional(),tools:c1.array(JU5).optional(),tool_choice:c1.union([c1.literal("auto"),c1.literal("none"),c1.literal("required"),c1.object({type:c1.literal("function"),function:c1.object({name:c1.string()})})]).optional(),response_format:UU5.optional(),user:c1.string().optional()});eE8=class eE8 extends Error{constructor($){super($);this.name="MessageConversionError"}};$P8=new $1;$P8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(jD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(jD("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(jD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=NU5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(jD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=BU5(J.model);if(!G)return $.json(jD("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)=>BT(E.providerId));if(!w)return $.json(jD("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(jD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=LU5(J.messages),N=J.tools?OU5(J.tools):void 0,B=jU5(J.response_format),D=wU5(),O=Math.floor(Date.now()/1000);if(J.stream)return Cj($,async(j)=>{let w=aE8(F,U,N,J,B,$.req.raw.signal);try{let E=In(w),P=!1,A=0,z="",T=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>=XU5)await T()}else if(R.type==="tool-call"){await T();let f=A++;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 T(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:rE8(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 T(),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=aE8(F,U,N,J,B,$.req.raw.signal),w=await fO(j),E={role:"assistant",content:w.text||null};if(w.toolCalls&&w.toolCalls.length>0)E.tool_calls=w.toolCalls.map((P)=>({id:P.toolCallId,type:"function",function:{name:P.toolName,arguments:JSON.stringify("input"in P?P.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:O,model:J.model,choices:[{index:0,message:E,finish_reason:rE8(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(jD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(jD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(jD(X.message,"server_error"),500)}});ZP8=$P8});function EU5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function YP8(){let $=new $1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=C0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!l5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||_9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(xT(U)!==J)continue;if(!EU5(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 XP8=L(()=>{H8();FX()});var jh0;var bq1=L(()=>{jh0={name:"decocms",version:"4.528.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^3.1.0","@opentelemetry/core":"^2.6.0",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.8.0","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^7.0.107","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function AU5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??zU5}}var JP8,zU5="https://ph.studio.decocms.com",GP8;var WP8=L(()=>{H8();Ae();nh();B9();u1();at();A21();bq1();JP8=new $1;JP8.get("/",($)=>{let Z={version:jh0.version,theme:A4$(),...KF().logo&&{logo:KF().logo},...tO()&&{internalUrl:A8$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&Q2(),plansEnabled:B0().plansEnabled,auth:kU8(),posthog:AU5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:fU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});GP8=JP8});import{z as M$}from"zod";var TU5,KP8;var HP8=L(()=>{TU5=M$.object({check_id:M$.string(),title:M$.string(),description:M$.string().optional(),impact:M$.string().optional(),why:M$.string().optional(),category:M$.string(),severity:M$.string(),value_band:M$.string().optional(),value_driver:M$.string().optional(),controllability:M$.string().optional(),pages:M$.array(M$.string()),tasks:M$.array(M$.string()),evidence:M$.string(),sample_scope:M$.string().optional(),sources:M$.array(M$.string())}),KP8=M$.object({domain:M$.string(),brand:M$.string(),favicon:M$.string().optional(),scanned_at:M$.string().nullable(),lang:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),totals:M$.object({measured:M$.number(),registry_total:M$.number(),passed:M$.number(),failed:M$.number(),blocked:M$.number()}),buckets:M$.array(M$.object({id:M$.enum(["critical","important","worth"]),label:M$.string(),items:M$.array(TU5)})),passing:M$.object({count:M$.number(),items:M$.array(M$.object({check_id:M$.string(),title:M$.string()}))}),not_measured:M$.object({count:M$.number(),groups:M$.array(M$.object({reason:M$.string(),label:M$.string(),count:M$.number(),checks:M$.array(M$.string())}))}),categories:M$.array(M$.object({key:M$.string(),label:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),pass:M$.number(),fail:M$.number()})),screenshots:M$.array(M$.object({url:M$.string(),page_type:M$.string().optional(),viewport:M$.enum(["desktop","mobile"]),image_url:M$.string()}))})});function FP8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${xK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function wh0($,Z={}){let Q=await fetch(FP8($,"",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 KP8.parse(await Q.json())}async function UP8($,Z={}){let Q=await fetch(FP8($,".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 xq1=L(()=>{HP8();cL()});import{join as NP8}from"path";async function RU5($){try{let Z=await wh0($,{signal:AbortSignal.timeout(qU5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||cw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function DG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function MU5($,Z){let Q=Tu($),Y=Z?.brand?.trim()||cw1(Q),X=IJ8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=kJ8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${DG(W)}</title>`,`<meta name="description" content="${DG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${DG(W)}" />`,`<meta property="og:description" content="${DG(K)}" />`,`<meta property="og:url" content="${DG(G)}" />`,`<meta property="og:image" content="${DG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${DG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${DG(W)}" />`,`<meta name="twitter:description" content="${DG(K)}" />`,`<meta name="twitter:image" content="${DG(H)}" />`,`<meta name="twitter:image:alt" content="${DG(F)}" />`,`<link rel="canonical" href="${DG(G)}" />`,`<link rel="alternate" type="text/markdown" href="${DG(G)}.md" />`,`<link rel="icon" href="${DG(X)}" sizes="any" />`].join(`
4527
4527
  `)}function VU5($,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}
4528
4528
  </head>`)}function BP8($){let Z=new $1;return Z.get("/:domain/og.png",async(Q)=>{let Y=Tu(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(NP8($,"report-og-fallback.png")):null;if(!J||!await J.exists())return Q.notFound();return Q.body(new Uint8Array(await J.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let J=await fetch(`${xK({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(IU5)}),G=J.headers.get("content-type")??"";if(!J.ok||!G.startsWith("image/")||!J.body)return X();return Q.body(J.body,200,{"Content-Type":G,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return X()}}),Z.get("/:file{.+\\.md}",async(Q)=>{let Y=Tu(Q.req.param("file").replace(/\.md$/,""));try{let X=await UP8(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(kU5)});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=$?NP8($,"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 RU5(Tu(Y)),K=MU5(Y,W);return Q.html(VU5(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var qU5=2500,IU5=1e4,kU5=1e4;var DP8=L(()=>{H8();cL();xq1();u1()});function Eh0($,Z){return fetch(`${xK({})}${$}`,Z)}async function CU5($,Z){let Q=await wh0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function vU5($){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 SU5,_U5=8192,vj,LP8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},OP8;var jP8=L(()=>{H8();FG();ZH();cL();xq1();SU5=new Set(["complete","errored","terminated","unknown"]);vj=new $1;vj.use("*",async($,Z)=>{let Q=await N4.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});vj.use("/link-token/*",LP8);vj.use("/suggest",LP8);vj.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 CU5(Z,Q))}catch{return $.json({error:"report read failed"},502)}});vj.post("/run",b6({maxSize:_U5,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}=vU5(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await Eh0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${dE({})}`},body:JSON.stringify({url:Y,...J?{email:J}:{},distinct_id:X})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let W=await G.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});vj.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await Eh0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${dE({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:SU5.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});vj.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await Eh0(`/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)}});vj.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await Eh0(`/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:[]})}});OP8=vj});var bU5=1048576,fq1;var wP8=L(()=>{H8();FG();u1();W21();fq1=new $1;fq1.post("/webhook",b6({maxSize:bU5,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(!mF8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=cF8(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await dF8(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as xU5}from"crypto";function gU5($,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 xU5(Buffer.from(X),Buffer.from(Y))}function hU5($,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 EP8($){let Z=new $1;return Z.post("/webhook",b6({maxSize:fU5,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(!gU5(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"&&!yU5.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 o60().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=hU5(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await uU5($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function uU5($,Z){let Q=0;for(let Y of Z){let X=$.taskBoard(),J;try{J=await X.findPrLinks(Y)}catch(G){console.error("[github-webhook] pr link lookup failed:",G);continue}for(let G of J)try{let W=await X.getById(G.taskBoardItemId,G.organizationId),K=W?await $.contextFactory()(G.organizationId,W.assignedBy??W.createdBy):null;if(!K)continue;if((await K.storage.demoBoard.frozenItemIds(G.organizationId)).has(G.taskBoardItemId))continue;if(await Wv0(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var fU5=5242880,yU5;var PP8=L(()=>{H8();FG();yX();I7();yU5=new Set(["check_suite","issue_comment"])});import{DBOS as gq1,SchedulerMode as lU5}from"@dbos-inc/dbos-sdk";async function cU5(){try{return await dU5()}catch($){return console.warn(`[sandbox-credential-push] push failed: ${$ instanceof Error?$.message:String($)}`),null}}async function dU5(){if(!t60())return null;let[{RemoteSandboxProvider:$},{SandboxProviderRouter:Z}]=await Promise.all([Promise.resolve().then(() => (dK1(),cK1)),Promise.resolve().then(() => (mK1(),lK1))]),Q=await o60(),Y=Q instanceof Z?Q.providers.kubernetes:Q;if(!(Y instanceof $))return null;let{db:X}=P8(),{sandboxes:J,pools:G}=await Y.list(),W=Date.now(),K=vm$({sandboxes:J,pools:G,records:await bm$(X,J,G),legacyPools:IC0(process.env.STUDIO_SANDBOX_TENANT_POOLS),now:W}),{batches:H,failed:F}=await xm$(K,oO0(X,new BJ(B0().encryptionKey)),{now:W,orgFsLifetimeMs:SC0}),U=0,N=0,B=0;for(let D of H)try{let O=await Y.pushCredentials(D);U+=O.stored,N+=O.kept}catch(O){B++,console.warn(`[sandbox-credential-push] a push batch failed: ${O instanceof Error?O.message:String(O)}`)}return{sandboxes:J.length,pushed:U,kept:N,refused:K.refused,failed:F+B}}async function iU5($,Z){let Q=await gq1.runStep(cU5,{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 zP8(){if(yq1)return;if(!B0().agentSandboxEnabled||!t60())return;yq1=gq1.registerWorkflow(iU5,{name:"sandboxCredentialPushWorkflow"}),gq1.registerScheduled(yq1,{name:"sandboxCredentialPushWorkflow",crontab:mU5,mode:lU5.ExactlyOncePerIntervalWhenActive})}var mU5="1,11,21,31,41,51 * * * *",yq1=null;var AP8=L(()=>{bG();Cw();k31();_C0();kC0();yX();u1()});function TP8($){let Z=new jj($.db,new BJ($.encryptionKey)),Q=new $1;return Q.get("/attachments/:token",async(Y)=>{let X=zr$(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 XQ(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 qP8=L(()=>{H8();Cw();PU1();gO()});function Ph0(){try{return B0().jiraSettleSeconds*1000}catch{return mz}}function RP8($,Z){let Q=Z.windowMs??mz,Y=$.at(-1);if(!Y)return null;if(Z.changeId!==void 0&&Y.id!==Z.changeId)return{kind:"superseded"};if(Z.now!==void 0&&Z.now-Y.at<Q)return{kind:"moving"};let X=pU5($,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 pU5($,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 hq1=L(()=>{sO();u1()});function MP8($){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 uq1($,Z,Q){if(!Z.enabled)return"disabled";let Y=Z.organizationId,X=new XQ(Z.siteUrl,Z.email,Z.apiToken),J=RP8(await X.listStatusChanges(Q.issueId),{changeId:Q.changelogId,now:Q.now,windowMs:Ph0()});if(!J)return"no_rule";if(J.kind!=="moved")return J.kind;let{change:G,from:W}=J,K=(await $.storage.automations.listJiraTransitionTriggers(Y,{jiraStatus:G.to,activeOnly:!0})).map((N)=>({...N,from:lz(N)})),H=N48(K)&&Z.boardId?U48(await X.getBoardColumnStatusIds(Z.boardId),W.id,G.toId):null,F=F48(K,W.name,H);if(!F)return"no_rule";if(!await $.storage.jiraIntegrations.claimTrigger(Y,Q.issueId,G.id))return"duplicate";return await NH({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 lq1=L(()=>{DU();gO();Lt();hq1()});import{DBOS as c2,SchedulerMode as nU5}from"@dbos-inc/dbos-sdk";function VP8($){cq1=$}function iq1(){if(!cq1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return cq1}function pq1(){let $=iq1();return new jj($.db,new BJ($.encryptionKey))}async function rU5($){try{let Z=await pq1().getById($);if(!Z?.enabled||!Z.boardId)return{integrationId:$,fired:0};let Q=await uY(iq1().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 XQ(Z.siteUrl,Z.email,Z.apiToken),G=`(${await X.getBoardScopeJql(Z.boardId)}) AND status CHANGED AFTER "-${oU5}m"`,W=0,K;for(let H=0;H<sU5;H++){let F=await X.searchIssues({jql:G,nextPageToken:K});for(let U of F.issues)if(await uq1(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 eU5($,Z){let Q=await c2.runStep(()=>pq1().listEnabledIds(),{name:"loadJiraIntegrations"});if(Q.length===0)return;let Y=await Promise.all(Q.map((X)=>c2.runStep(()=>rU5(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 $N5($,Z){try{let Q=await pq1().getById($);if(!Q?.enabled)return"disabled";let Y=await uY(iq1().db,Q.organizationId);if(!Y)return"disabled";let X=await uq1(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 ZN5($,Z){await c2.sleep(Ph0()+aU5),await c2.runStep(()=>$N5($,Z),{name:"settleJiraMove"})}async function IP8($,Z){if(!dq1)throw Error("[jira-trigger] settle workflow is not registered");await c2.startWorkflow(dq1,{workflowID:`jira-settle:${$}:${Z.changelogId}`})($,Z)}function kP8(){if(mq1)return;dq1=c2.registerWorkflow(ZN5,{name:"jiraSettleWorkflow"}),mq1=c2.registerWorkflow(eU5,{name:"jiraTriggerSweepWorkflow"}),c2.registerScheduled(mq1,{name:"jiraTriggerSweepWorkflow",crontab:tU5,mode:nU5.ExactlyOncePerIntervalWhenActive})}var tU5="*/5 * * * *",oU5=20,sU5=5,aU5=5000,cq1=null,dq1=null,mq1=null;var nq1=L(()=>{Cw();cO();gO();hq1();lq1()});function CP8($){let Z=new jj($.db,new BJ($.encryptionKey)),Q=Cz($.db);async function Y(J,G){let W=MP8(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 IP8(K.id,W)}let X=new $1;return X.post("/webhook/:secret",b6({maxSize:QN5}),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 QN5=1048576;var SP8=L(()=>{H8();FG();Cw();nq1();lq1();o50()});function _P8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var vP8,YN5,XN5,bP8;var xP8=L(()=>{H8();U3();Qt();Ri();vP8=new $1,YN5=["range","if-none-match","if-modified-since"],XN5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];vP8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(Gs($))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 v90(Y,Z);if(!X)throw new R1(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&cK()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new R1(500,{message:"Invalid data URL from storage"});let[,H,F]=K,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return _P8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of YN5){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 XN5){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),_P8(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});bP8=vP8});var UY0=y((Ol)=>{var JN5=Ol&&Ol.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),GN5=Ol&&Ol.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))JN5(Z,$,Q)};Object.defineProperty(Ol,"__esModule",{value:!0});GN5(AG(),Ol)});var gP8=y((fP8)=>{Object.defineProperty(fP8,"__esModule",{value:!0});fP8.version=void 0;fP8.version="3.4.0"});var lP8=y((wD)=>{var WN5=wD&&wD.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(wD,"__esModule",{value:!0});wD.NodeTransport=wD.VERSION=void 0;wD.nodeResolveHost=BN5;var H9=UY0(),KN5=V0("net"),tq1=V0("tls"),HN5=V0("path"),hP8=V0("fs"),FN5=WN5(V0("dns")),UN5=gP8();wD.VERSION=UN5.version;var NN5="nats.js";class uP8{socket;version;lang;yields=[];signal=(0,H9.deferred)();closedNotification=(0,H9.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=NN5,this.version=wD.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:Y}=Q||{};try{if(Y===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let X=await this.peekInfo();(0,H9.checkOptions)(X,Z);let{tls_required:J,tls_available:G}=X,W=G===!0&&Z.tls!==null;if(!Y&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw H9.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(X){let J=X;if(!J)J=new H9.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new H9.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,H9.deferred)(),Q,Y=(0,KN5.createConnection)($.port,$.hostname,()=>{Z.resolve(Y),Y.removeAllListeners()});return Y.on("error",(X)=>{Q=X}),Y.on("close",()=>{Y.removeAllListeners(),Z.reject(Q)}),Y.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,H9.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=H9.DataBuffer.concat(...this.yields),X=(0,H9.extractProtocolMessage)(Y);if(X!=="")try{let J=H9.INFO.exec(X);if(!J)throw Error("unexpected response from server");let G=JSON.parse(J[1]);$.resolve(G)}catch(J){$.reject(J)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(Q)=>{Z=Q}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,H9.deferred)();try{if($=(0,HN5.resolve)($),!(0,hP8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,hP8.readFile)($,(Q,Y)=>{if(Q)return Z.reject(Q);Z.resolve(Y)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:Y,ca:X,keyFile:J,key:G}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(Q)$.cert=Q;if(J){let W=await this.loadFile(J);if(W)$.key=W}else if(G)$.key=G;if(Y){let W=await this.loadFile(Y);if(W)$.ca=[W]}else if(X)$.ca=X;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Q=(0,H9.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new H9.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,H9.deferred)();try{let X=(0,tq1.connect)($.port,$.hostname,Q,()=>{X.removeAllListeners(),Y.resolve(X)});X.on("error",(J)=>{Z=J}),X.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Y.reject(Z),X.removeAllListeners()}),X.setNoDelay(!0)}catch(X){Y.reject(new H9.errors.ConnectionError(X.message,{cause:X}))}return Y}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Z=(0,H9.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new H9.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,H9.deferred)();try{let Y=(0,tq1.connect)(Z,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(X)=>{$=X}),Y.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject($),Y.removeAllListeners()})}catch(Y){Q.reject(new H9.errors.ConnectionError(Y.message,{cause:Y}))}return Q}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,H9.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,H9.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof tq1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,H9.render)($)}`);let Z=(0,H9.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,H9.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,H9.render)($)}: ${Q}`);Z.reject(Q)}return Z}send($){this._send($).catch((Q)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(Q){if(this.options.debug)console.log("transport close terminated with an error",Q)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(Q){console.log(Q)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}wD.NodeTransport=uP8;function BN5($){let Z=(0,H9.deferred)();return FN5.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 pP8=y((iP8)=>{Object.defineProperty(iP8,"__esModule",{value:!0});iP8.connect=DN5;var mP8=lP8(),cP8=UY0(),dP8=UY0();function DN5($={}){if((0,dP8.hasWsProtocol)($))return Promise.reject(dP8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,cP8.setTransportFactory)({factory:()=>{return new mP8.NodeTransport},dnsResolveFn:mP8.nodeResolveHost}),cP8.NatsConnectionImpl.connect($)}});var nP8=y((bj)=>{var ON5=bj&&bj.__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]}),jN5=bj&&bj.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))ON5(Z,$,Q)};Object.defineProperty(bj,"__esModule",{value:!0});bj.connect=void 0;var wN5=pP8();Object.defineProperty(bj,"connect",{enumerable:!0,get:function(){return wN5.connect}});jN5(UY0(),bj)});function sP8($){let Z=$?.connectFn??AN5,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:zN5,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${D} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{D++;let O=b7(PN5,EN5,D-1,2,0.5);await G$(O)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?zh0.credsAuthenticator(new TextEncoder().encode(B.creds)):B?.user?zh0.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=oP8.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 AN5($){return tP8.connect($)}var zh0,tP8,oP8,EN5=100,PN5=3000,zN5=3000;var aP8=L(()=>{g$();zh0=_(FA(),1),tP8=_(nP8(),1),oP8=_(nH(),1)});function Ah0($,Z){return`${$}.${Z}`}class oq1{cache;constructor($){this.cache=WB({ttlMs:$?.ttlMs??TN5,maxSize:$?.maxSize??qN5})}async get($,Z){return this.cache.get(Ah0($,Z))??null}async set($,Z,Q){this.cache.set(Ah0($,Z),Q)}async invalidate($,Z){this.cache.delete(Ah0($,Z)),this.cache.delete(Ah0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var TN5=600000,qN5=5000;var rP8=()=>{};function Th0($,Z){return`${$}:${Z}`}function sq1($){let Z=WB({ttlMs:$?.ttlMs??RN5,maxSize:$?.maxSize??MN5}),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(eP8,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(Th0(K,H))},set(K,H,F){Z.set(Th0(K,H),F)},invalidate(K,H){Z.delete(Th0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(eP8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(Th0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var eP8="studio.ai-provider-keys.invalidate",RN5=30000,MN5=5000;var $z8=()=>{};class aq1{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 Zz8=($)=>{let Z;return()=>Z??=$()},rq1,eq1;var Qz8=L(()=>{g6();rq1=Zz8(()=>W$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),eq1=Zz8(()=>W$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function vN5($=Jz8){return{name:pB,subjects:[`${BD1}.>`],storage:vU.StorageType.File,max_age:kN5,max_bytes:SN5,max_msgs_per_subject:_N5,discard:vU.DiscardPolicy.Old,retention:vU.RetentionPolicy.Limits,duplicate_window:CN5,num_replicas:$}}class Gz8{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 Yz8($){let Z=Xz8.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function yN5($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,IN5().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 gN5($,Z){return $.info?.cluster?Z:1}function hN5($){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 $R1{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=vN5(X);try{await Y.streams.info(pB),await Y.streams.update(pB,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(pB,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(pB),await Y.streams.add(J);else throw G}},Q=await Z8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await vU.jetstreamManager($),X=gN5($,Jz8);try{await Z(Y,X)}catch(J){if(X<=1||!hN5(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:Dt});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=yN5(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=h88(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=LD1(H,{runId:Z}),N=performance.now()-F;rq1().record(N),eq1().add(1,{"org.id":Y??"unknown"}),fN5?.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?Yz8(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(),xN5)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 Z8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:Yz8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Dt}),!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=LD1(Z,{runId:$,dedup:Q});rq1().record(performance.now()-X),eq1().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=g88({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"?vU.DeliverPolicy.New:vU.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=uz($),W;try{W=await Z8(async()=>{return(await Y.consumers.get(pB,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Dt})}catch(O){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",O?.message??O),null}let F=Yb0({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(ev0()).pipeThrough($b0()).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(pB,{filter:uz($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var vU,Xz8,VN5=($)=>{let Z;return()=>Z??=$()},IN5,kN5=86400000000000,CN5=120000000000,SN5=4294967296,Jz8,_N5=500000,bN5,xN5,fN5;var Wz8=L(()=>{g$();OD1();Xb0();Zb0();g6();Qz8();vU=_(nH(),1),Xz8=_(FA(),1),IN5=VN5(()=>W$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),Jz8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);bN5=process.env.STREAM_ENCODE_TRACE==="1",xN5=process.env.DECOPILOT_STREAM_TRACE==="1";fN5=bN5?new Gz8:null});function qh0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,YN(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 Kz8=L(()=>{R8()});class ZR1{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 uN5($,Z,Q={}){let Y=$.startsWith("thread:")?JU($,Q):$;return[...new Set([Z,Y].filter((X)=>!!X))]}async function QR1($,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 bB($,{threadId:X,runBranch:G?.branch}),K=await P80($,Q,$B0(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=uN5(W,await ZS0($,X),{flat:Lh(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 nJ(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 Hz8=L(()=>{W5();uQ();I7()});async function Fz8($,Z,Q){let Y=Z.organizationId;if(!pJ(Z))return!1;if(!dh(Q))return!1;if(!await Tc($,Y,$00))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=J1.shipped,J=await $.storage.taskBoard.update(Z.id,Y,{status:X},Z.updatedBy);return await J9($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:X,reason:"pr_merged"}}),r$(Y,J),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${X}`),!0}var Uz8=L(()=>{L3();k8();lX();tn();NU();b5()});function nN5($){return $ instanceof _X}function Nz8($,Z){return Z-$>=iN5}class YR1{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??lN5;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??cN5,Q=this.options.itemIntervalMs??mN5,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapAbandonedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z),$+=await this.settleFinishedRunsWithoutPr(Z,Y)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapAbandonedThreads($){try{let Z=await this.taskBoard.failAbandonedLinkedThreads($,new Date(Date.now()-BU1),{neverStarted:cN1,stalled:vB1});for(let Q of Z)console.warn(`[task-board-review-sweeper] failed abandoned thread ${Q.threadId} on ${Q.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-pN5));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 lN1(this.taskBoard,X,Y),await mN1(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!==J1.progress||pJ(W)||W.assigneeId!==t$)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await QR1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!Nz8(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,J1.review,W.updatedBy);if(!F)continue;await this.taskBoard.recordActivity({taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:J1.progress,to:J1.review,reason:H}}).catch(()=>{}),r$(J,F),await BU(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!==J1.progress||G.assigneeId!==t$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await dO(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),nN5(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()+dN5)).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!==J1.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:J1.progress,to:J1.intake,reason:Q,retriesSpent:Y.retryAttempts}}).catch(()=>{}),r$(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(!Nz8(UL(Q,Z.reviewCycleStartedAt),Date.now()))return;await BU($,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(!pJ(Y))return!1;let X=Y.assigneeId===t$,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 QR1(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 an(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 Fz8(G,Y,W))return!0;if(!X)return!1;if(await g08(G,Y))return!0;if(!yN1(W))return!1;return await sn(G,Y,{previewMatchesHead:gN1(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var lN5=60000,mN5=300000,cN5=50,dN5=60000,iN5=900000,pN5=120000;var Bz8=L(()=>{k8();r_0();Hz8();iO();Zt();NU();Uz8();b5();DW();dN1();bB1();I7();X90()});async function Dz8($,Z,Q=mz){return await Oz8($,Z,Q,{})}async function Lz8($,Z,Q,Y=mz){return await Oz8($,Q,Y,{activityId:Z})}async function Oz8($,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-tN5),settledBefore:new Date(Z-Q),limit:oN5,...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 sN5($.taskBoard,K,Q);for(let U of H){if(!D48(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 sN5($,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?L48(X,Q):Z.from}var tN5=1800000,oN5=200;var jz8=L(()=>{sO()});import{DBOS as d2,DBOSClient as aN5,SchedulerMode as rN5}from"@dbos-inc/dbos-sdk";function wz8($){xj=$}async function ZB5($){if(!xj)return 0;try{return await Lz8(xj,$,Date.now(),xj.settleMs)}catch(Z){return console.error(`[automations] settling board move ${$} failed`,Z),0}}async function QB5(){if(!xj)return 0;try{return await Dz8(xj,Date.now(),xj.settleMs)}catch($){return console.error("[automations] board transition sweep failed",$),0}}async function YB5($){await d2.sleep((xj?.settleMs??mz)+$B5),await d2.runStep(()=>ZB5($),{name:"settleBoardMove"})}async function XB5($,Z){let Q=await d2.runStep(()=>QB5(),{name:"sweepBoardMoves"});if(Q>0)console.log(`[automations] board transition sweep fired ${Q} trigger(s) the settle wait missed`)}async function Pz8($){let Z=xj;if(!Z||!JR1)return;if(!await Z.automations.hasActiveBoardColumnTrigger($.taskBoardItemId,$.to))return;let Q=`board-settle:${$.activityId}`;if(!d2.isWithinWorkflow()){await d2.startWorkflow(JR1,{workflowID:Q,queueName:a2})($.activityId);return}let Y=await aN5.create({systemDatabaseUrl:Z.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:1});try{await Y.enqueue({workflowName:Ez8,queueName:a2,workflowID:Q},$.activityId)}finally{await Y.destroy()}}function zz8(){if(XR1)return;JR1=d2.registerWorkflow(YB5,{name:Ez8}),XR1=d2.registerWorkflow(XB5,{name:"boardTransitionSweepWorkflow"}),d2.registerScheduled(XR1,{name:"boardTransitionSweepWorkflow",crontab:eN5,mode:rN5.ExactlyOncePerIntervalWhenActive})}var eN5="*/5 * * * *",$B5=2000,xj=null,Ez8="boardTransitionSettleWorkflow",JR1=null,XR1=null;var Az8=L(()=>{sO();jz8()});import{readdir as JB5,rm as Rh0}from"fs/promises";import{join as Mh0}from"path";async function Vh0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-GB5),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await jl($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await Tz8($,X,Z);else if(!X.startsWith(".")){let J=Mh0($,X),G=await jl(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await Tz8(J,K,Z)}if((await jl(J)).length===0)await Rh0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function Tz8($,Z,Q){let Y=0,X=Mh0($,Z),J=await jl(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=Mh0(X,W),H=await jl(K);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${W}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=Mh0(K,U);await Rh0(B,{recursive:!0,force:!0}),Y++}}if((await jl(K)).length===0)await Rh0(K,{recursive:!0,force:!0})}if((await jl(X)).length===0)await Rh0(X,{recursive:!0,force:!0});return Y}async function jl($){try{return(await JB5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var GB5=30;var GR1=()=>{};import{DBOS as WR1,SchedulerMode as WB5}from"@dbos-inc/dbos-sdk";async function HB5(){let $=[hH(),Ml(),MD()],Z=0;for(let Q of $)try{Z+=await Vh0(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 FB5($,Z){await WR1.runStep(()=>HB5(),{name:"monitoringRetention"})}function Rz8(){if(qz8)return;qz8=!0;let $=WR1.registerWorkflow(FB5,{name:"monitoringRetentionWorkflow"});WR1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:KB5,mode:WB5.ExactlyOncePerIntervalWhenActive})}var KB5="23 4 * * *",qz8=!1;var Mz8=L(()=>{aW();GR1()});function Vz8($){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 lY.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await zP($.db,Z,Y.role);return X.boundAuth=mz1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new mT(Q,void 0,X.boundAuth,Y.role,"self"),fz(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var Iz8=L(()=>{PQ();gF()});function kz8(){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=NY0(N.params.name),D=N.params.arguments||{},O=Object.keys(D).map((w)=>NY0(w)),j=O.length>0?O.slice(0,3).join(",")+(O.length>3?"\u2026":""):"";J=`${E9.tool}${B}${E9.dim}(${j})${E9.reset}`}else if(N.method)J=`${E9.dim}${NY0(N.method)}${E9.reset}`}}catch{}}let W=NY0(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${E9.mcp}${NY0(F.slice(0,12))}\u2026${E9.reset}`}else if(X==="/mcp")W=`${E9.mcp}/mcp${E9.reset}`;else if(X==="/mcp/registry")W=`${E9.mcp}/mcp/registry${E9.reset}`;let K=NB5(Y),H=G?"\u25C0":"\u2190";console.log(`${E9.dim}${H}${E9.reset} ${K}${Y}${E9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=UB5(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";console.log(`${E9.dim}${D}${E9.reset} ${K}${Y}${E9.reset} ${W}${J?` ${J}`:""} ${N}${U}${E9.reset} ${E9.duration}${B}${E9.reset}`)}}}var E9,UB5=($)=>{if($>=500)return E9.serverError;if($>=400)return E9.clientError;if($>=300)return E9.redirect;return E9.ok},NB5=($)=>{return E9[$]||E9.reset},NY0=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var Cz8=L(()=>{E9={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as bz8}from"crypto";import{mkdir as BB5,readdir as DB5,rm as Sz8,stat as xz8}from"fs/promises";import{join as HR1,relative as LB5}from"path";import{z as G8}from"zod";function yz8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return HR1(OB5,Z)}function gz8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function KR1($,Z){let Q=yz8($),Y=gz8(Z);return HR1(Q,Y)}function jB5($,Z,Q,Y){let X=B0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return bz8("sha256",X).update(J).digest("hex")}function vz8($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=jB5(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${gz8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function hz8($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${bz8("md5","etag").update(Y).digest("hex")}"`}async function uz8($,Z,Q,Y,X){try{let J=await DB5($,{withFileTypes:!0});for(let G of J){let W=HR1($,G.name),H=LB5(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 uz8(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 xz8(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:hz8(W,F.mtime,F.size)})}catch{}}}}catch{}}function lz8($,Z){let Y=Z0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:G8.object({prefix:G8.string().optional(),maxKeys:G8.number().optional().default(1000),continuationToken:G8.string().optional(),delimiter:G8.string().optional()}),outputSchema:G8.object({objects:G8.array(G8.object({key:G8.string(),size:G8.number(),lastModified:G8.string(),etag:G8.string()})),nextContinuationToken:G8.string().optional(),isTruncated:G8.boolean(),commonPrefixes:G8.array(G8.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=yz8(Y);await BB5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await uz8(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:G8.object({key:G8.string()}),outputSchema:G8.object({contentType:G8.string().optional(),contentLength:G8.number(),lastModified:G8.string(),etag:G8.string(),metadata:G8.record(G8.string(),G8.string()).optional()}),handler:async(X)=>{let J=X,G=KR1(Y,J.key),W=await xz8(G);return{contentType:ZA1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:hz8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:G8.object({key:G8.string(),expiresIn:G8.number().optional()}),outputSchema:G8.object({url:G8.string(),expiresIn:G8.number()}),handler:async(X)=>{let J=X,G=Xj(J.expiresIn,_z8);return{url:vz8(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:G8.object({key:G8.string(),expiresIn:G8.number().optional(),contentType:G8.string().optional()}),outputSchema:G8.object({url:G8.string(),expiresIn:G8.number()}),handler:async(X)=>{let J=X,G=Xj(J.expiresIn,_z8);return{url:vz8(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:G8.object({key:G8.string()}),outputSchema:G8.object({success:G8.boolean(),key:G8.string()}),handler:async(X)=>{let J=X,G=KR1(Y,J.key);try{return await Sz8(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:G8.object({keys:G8.array(G8.string()).max(1000)}),outputSchema:G8.object({deleted:G8.array(G8.string()),errors:G8.array(G8.object({key:G8.string(),message:G8.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=KR1(Y,K);try{await Sz8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function FR1($,Z,Q){let Y=lz8(Z,Q),X=new FE({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:SZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:G8.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:G8.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 CW({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),TH(X,J,$,"mcp:dev-assets")}async function mz8($,Z,Q,Y){let J=lz8(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 OB5="./data/assets",_z8=3600,fz8,cz8;var dz8=L(()=>{u1();vt();H8();xH0();_t();AJ();Jj();Qg0();fz8=new $1;fz8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return FR1($.req.raw,Z,Y)});cz8=fz8});var iz8={};P6(iz8,{mountDevRoutes:()=>wB5});function wB5($,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 FR1(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 mz8(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",cz8);let Q=new $1;Q.use("*",kU({mountPath:"/api/dev-assets"})),Q.route("/",Zg0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var pz8=L(()=>{H8();t21();Qg0();dz8()});var Q28={};P6(Q28,{watchHandler:()=>Z28,resolveVoiceSigningSecret:()=>rz8,resolveCorsOrigin:()=>ez8,isSsoExemptPath:()=>az8,isAllowedOAuthRedirectUri:()=>$28,createApp:()=>kB5});import{readFileSync as EB5}from"fs";import{randomBytes as PB5}from"crypto";import{PrometheusSerializer as zB5}from"@opentelemetry/exporter-prometheus";import{DBOS as ED}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as qB5,oAuthProtectedResourceMetadata as RB5}from"better-auth/plugins";async function AB5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,tz8(nz8)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),tz8(nz8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function tz8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function az8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${fy0}/`)||$.startsWith(`${Cy0}/`)}function rz8($){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)"),PB5(32).toString("base64")}function ez8($,{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 $28($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"}async function kB5($={}){let Z=$.database??P8(),Q=!1;_6.stop().catch((F0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",F0)});let Y,X,J,G,W=new oq1,K,H,F,U=null;if($.disableNats)K=sq1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new UZ0,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=sP8();let F0=B0().natsCredsPath,G0;if(F0)try{G0=EB5(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=j91()?new Y91({getJetStream:()=>U.getJetStream(),selfListVersion:jh0.version}):null;P0?.init().catch(()=>{}),Y=P0;let z0=new wZ1({getJetStream:()=>U.getJetStream()});z0.init().catch(()=>{}),X=z0;let j1=new ih(SN1,{getJetStream:()=>U.getJetStream()}),b$=new ih(J90,{getJetStream:()=>U.getJetStream()});j1.init().catch(()=>{}),b$.init().catch(()=>{}),J={reads:j1,cards:b$};let e$=new hO1({getJetStream:()=>U.getJetStream()});e$.init().catch(()=>{}),G=e$,K=sq1({getConnection:()=>U.getConnection()}),H=new aq1({getConnection:()=>U.getConnection()}),F=new $R1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),FU8(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)}),e$.init().catch((B8)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",B8)}),K.start(),uj$(()=>U.getConnection()),F.init().catch((B8)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",B8)})})}if(i2)await i2();X91(Y),PZ1(X),eZ1(()=>U?.getConnection()??null),_N1(J),uO1(G);let B={storage:new dn(Z.db),sseHub:_6,onThreadFinished:async(F0,G0)=>en(new TW(Z.db),F0,G0,new mW(Z.db))},D=new yB1(B),O=new ZQ0(Z.db),j=new ZR1(O);j.start(),A48(H),H.start((F0)=>{cv0(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;m21(w),U?.onReady(()=>m21(w)),zj1(w),U?.onReady(()=>zj1(w)),F.init().catch((F0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",F0)}),i2=async()=>{await D.stopAll(),D.dispose(),j.dispose(),H.stop().catch(()=>{}),CN8(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),lj$(),G.teardown(),X91(null),PZ1(null),eZ1(null),_N1(null),uO1(null)};let E=new $1;if(E.use("*",fO1({enabled:(F0)=>Js(F0,"debug")==="1"})),E.use("*",oh0),E.use("/*",JU8({origin:(F0,G0)=>ez8(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("*",kz8());E.use("*",async(F0,G0)=>{if(await G0(),Ha(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(ZJ.HEALTH,(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);return F0.json({status:"ok"})}),E.get(ZJ.HEALTH_LIVE,(F0)=>{return F0.json({status:"ok"})}),E.get(ZJ.HEALTH_READY,async(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);let G0={};if(G0.postgres={status:await AB5(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(ZJ.METRICS,async(F0)=>{try{let G0=await eh0.collect(),P0=TB5.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(`${ZJ.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(F0)=>{let G0=F0.req.param("queueName");if(!MB5.has(G0))return F0.json({error:`Unknown queue: ${G0}`},404);let[P0,z0]=await Promise.all([ED.listQueuedWorkflows({queueName:G0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),ED.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",GP8),E.route("/api/_reports",OP8),E.route("/api/_stripe",fq1),E.route("/api/_github",EP8({taskBoard:()=>l,contextFactory:()=>b})),E.route("/api/_git",ws);let A={db:Z.db,encryptionKey:B0().encryptionKey};E.route("/api/_jira",CP8(A)),E.route("/api/_jira",TP8(A)),E.route("/report",BP8($.clientDir)),E.route("/api/auth/custom",CU8),E.all("/api/auth/admin/*",jN8),E.all("/api/auth/*",async(F0)=>{return await N4.handler(F0.req.raw)});let z=SG8();z.use("/.well-known/oauth-protected-resource/mcp/:connectionId",NQ0),z.use("/mcp/:connectionId/.well-known/oauth-protected-resource",NQ0),E.route("/",z),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",lZ0),E.route("/",fG8()),E.use("/oauth-proxy/:connectionId/*",NQ0),E.all("/oauth-proxy/:connectionId/*",oz8);let T=async(F0)=>{let P0=await VB5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",NQ0),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",T);let R=async(F0)=>{let P0=await IB5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",R);let f=WU8({ttlMs:120000}),S=await OF8({db:Z.db,auth:N4,encryption:{key:B0().encryptionKey},observability:{tracer:cj,meter:W$},modelListCache:W,providerKeyCache:K,memberRoleCache:f});lY.set(S),H8$({db:Z.db,baseUrl:P5()}),jF8({db:Z.db}),zF8({db:Z.db}),RF8({db:Z.db}),yF8({db:Z.db}),iF8({db:Z.db}),VP8({db:Z.db,encryptionKey:B0().encryptionKey}),Me$({db:Z.db}),aF8({db:Z.db}),F08({db:Z.db});let V=Cz(Z.db),v=new a70(Z.db),b=Vz8({db:Z.db});pD1({storage:V,studioContextFactory:b,orgContextFactory:(F0)=>uY(Z.db,F0),systemDatabaseUrl:xe(B0().databaseUrl,B0().databasePgSsl)}),ID1({systemDatabaseUrl:xe(B0().databaseUrl,B0().databasePgSsl),studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:_6}}),AD1({dispatchRunFn:S88,studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:_6}});let h=new dn(Z.db),l=new TW(Z.db),d=new mW(Z.db),W0=new YR1(l,b,d);if(B0().taskBoardReviewSweeperEnabled){W0.start();let F0=i2;i2=async()=>{await F0?.(),W0.dispose()}}wz8({automations:V,taskBoard:l,fire:NH,systemDatabaseUrl:xe(B0().databaseUrl,B0().databasePgSsl),settleMs:B0().boardTransitionSettleSeconds*1000}),le$(Pz8),r88({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let F0=U?.getConnection();return F0?await sz8.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(qh0(_6,G0,F0,P0),P0)await en(l,F0,G0,d);return P0},markRunRequiresAction:async(F0,G0)=>{let P0=await h.requiresActionIfInProgress(F0,G0);return qh0(_6,G0,F0,P0),P0},markRunFailed:async(F0,G0,P0,z0)=>{let j1=await h.markRunFailed(F0,G0,P0,z0);if(qh0(_6,G0,F0,j1),j1)await en(l,F0,G0,d);return j1},clearSynthesizedError:async(F0,G0)=>{await h.messageParts().replaceMessageParts(F0,hz(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);_6.emit(G0,YN(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})=>{m1.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})=>{m1.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)}}),$88({studioContextFactory:b,systemDatabaseUrl:xe(B0().databaseUrl,B0().databasePgSsl),streamBuffer:F}),Rz8(),F8$(),EF8(),TF8(),VF8(),hF8(),nF8(),kP8(),zz8(),Se$(),eF8(),U08(),zP8();let k0=async(F0,G0,P0)=>{let z0=await V.findById(F0,G0);if(!z0)throw Error("Automation not found");return aD1({automationId:z0.id,organizationId:z0.organization_id,triggerId:null})},X0=new Ns(V,({automation:F0,trigger:G0,contextMessages:P0,idempotencyKey:z0})=>NH({automationId:F0.id,organizationId:F0.organization_id,triggerId:G0.id,contextMessages:P0},{idempotencyKey:z0})),U0=[hH(),Ml(),MD()];for(let F0 of U0)Vh0(F0).then(()=>{}).catch((G0)=>console.error("[monitoring] Retention cleanup failed:",G0));let o=()=>N4.api.deleteAllExpiredApiKeys().catch((F0)=>console.error("[auth] Expired API key cleanup failed:",F0));o(),setInterval(o,86400000).unref(),E.use("*",async(F0,G0)=>{if(nh0(F0.req.path))return G0();let P0={measure:async(j1,b$)=>{AH(F0,j1);try{return await b$()}finally{SW(F0,j1)}}},z0=await lY.create(F0.req.raw,{timings:P0});z0.automationRunner=k0,F0.set("studioContext",z0);try{await G0()}finally{let j1=z0.pendingRevalidations;if(j1.length>0)Promise.race([Promise.allSettled(j1),G$(30000)]).catch((e$)=>console.error("[studio] revalidation cleanup error:",e$))}}),E.use("/api/:org/decopilot/*",Ws),E.use("/api/:org/v1/*",Ws),E.use("/api/:org/files/*",Ws),E.use("*",async(F0,G0)=>{if(az8(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 $1;t.use("*",kU({mountPath:"/api/org-sso"})),t.route("/",hy0()),E.route("/api/org-sso",t),E.get("/api/tools/management",(F0)=>{return F0.json({tools:ze,grouped:JT()})}),E.use("/mcp/*",async(F0,G0)=>{AH(F0,"mcp");try{return await G0()}finally{SW(F0,"mcp")}});let a=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?",a),E.use("/mcp/gateway/:virtualMcpId?",a),E.use("/mcp/virtual-mcp/:virtualMcpId?",a),E.use("/mcp/self",a),cK()){let{mountDevRoutes:F0}=(pz8(),xh0(iz8));F0(E,a)}let $0=new $1;$0.use("*",kU({mountPath:"/mcp"})),$0.route("/",Gx0()),E.route("/mcp",$0);let J0=new $1;J0.use("*",kU({mountPath:"/mcp/self"})),J0.route("/",vg0()),E.route("/mcp/self",J0);let h0=new $1;h0.use("*",kU({mountPath:"/mcp"})),h0.route("/",Hx0()),E.route("/mcp",h0),E.use("/api/:org/models/*",async(F0,G0)=>{AH(F0,"llm_models");try{return await G0()}finally{SW(F0,"llm_models")}});let S0=fN8({cancelBroadcast:H,streamBuffer:F,runRegistry:D});E.route("/api",S0),E.route("/api",bP8);let Y1=new $1;Y1.use("*",kU({mountPath:"/api"})),Y1.route("/",yg0()),E.route("/api",Y1),E.route("/api",ZP8);let m0=new $1;m0.use("*",kU({mountPath:"/api"})),m0.route("/",gg0({tokenStorage:v,automationEventDispatcher:X0})),E.route("/api",m0);let j0=new r70(Z.db),E0=new $1;E0.use("*",kU({mountPath:"/api"})),E0.route("/",iy0()),E.route("/api",E0),E.route("/api/deco-sites",aN8());let n0=new $1;n0.use("*",kU({mountPath:"/api/deco-sites"})),n0.route("/",ny0()),E.route("/api/deco-sites",n0),E.route(fy0,wN8()),E.route(fO8,hO8()),E.route("/api/_editor-resolve",YP8()),E.route(fU8,yU8()),E.route(Cy0,rU8());let D1=B0(),Z1=D1.elevenlabsApiKey?new Dh0({apiKey:D1.elevenlabsApiKey,model:D1.elevenlabsVoiceModel,conversationModel:D1.elevenlabsConversationModel,voiceId:D1.elevenlabsVoiceId}):null,_0={openai:D1.openaiLiveApiKey?new Iq1({apiKey:D1.openaiLiveApiKey,voice:D1.openaiLiveVoice}):null,elevenlabs:Z1?new Vq1(Z1,()=>U?.getConnection()??null):null},d0=new vq1({adapter:Z1,conversationAdapters:_0,defaults:D1,secret:rz8(D1),getConnection:()=>U?.getConnection()??null}),i0=kE8({voiceSessions:d0,kvStorage:j0,runRegistry:D,streamBuffer:F,sseHub:_6,cancelBroadcast:H,tokenStorage:v,automationEventDispatcher:X0,mountDevAssets:cK(),mcpAuth:a,oauthProxyHandler:oz8,watchHandler:Z28,betterAuthProtectedResourceHandler:T,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(gN8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([_6.stop(),i2?Promise.resolve(i2()).finally(()=>{i2=null}):Promise.resolve()]),U)await U.drain().catch((F0)=>console.error("[shutdown] NATS drain error:",F0));console.log("[shutdown] Flushing telemetry..."),await Z3().catch((F0)=>console.error("[shutdown] Telemetry flush error:",F0)),console.log("[shutdown] Closing database..."),await g5$(Z).catch((F0)=>console.error("[shutdown] Database close error:",F0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await ED.registerQueue(wG,{partitionQueue:!0,concurrency:cD1,minPollingIntervalMs:dD1}),await ED.registerQueue(oW,{partitionQueue:!0,concurrency:MD1,priorityEnabled:!0}),await ED.registerQueue(qD,{workerConcurrency:B0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await ED.registerQueue(RD,{workerConcurrency:B0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await ED.registerQueue(mj,{partitionQueue:!0,concurrency:e$8}),await ED.registerQueue(s2,H08),await ED.registerQueue(a2),await o21(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((F0)=>ED.deleteQueue(F0))),await iD1(Z.pool),AK$().catch((F0)=>{console.error("[studio-pack-backfill] failed:",F0)}),Ac(Z.db).catch((F0)=>{console.error("[automations] built-in seed failed:",F0)}),U8$().catch((F0)=>{console.error("[org-fs] public-sets boot sync kick failed:",F0)})}})}var sz8,nz8=5000,i2=null,oz8=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 lY.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 Uo(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=nE1(await W.json());if(!K)K=H.origin;let N=await mZ0(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=xG8(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(!$28(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(ZU8(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 A=$.req.header("Authorization");if(A)E.Authorization=A;let z,T=null,R=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(Y==="token"&&P?.includes("application/x-www-form-urlencoded")){if(A?.toLowerCase().startsWith("basic "))try{let d=atob(A.slice(6).trim()),W0=d.indexOf(":");if(W0!==-1){let k0=decodeURIComponent(d.slice(0,W0)),X0=decodeURIComponent(d.slice(W0+1));T=k0||null,R=X0||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)T=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 G2(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:T,clientSecret:R,tokenEndpoint:l};await new Y9(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})},Z28=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&&(!cB(Y)||!await dB(Z)))return $.json({error:"forbidden"},403);let W=G?f_0:Y;if(G)mO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return Cj($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:Y,typePatterns:J,connectedAt:new Date().toISOString()})}),!_6.add({id:K,organizationId:W,typePatterns:J?.length?J:null,push:(N,B)=>{H.writeSSE({id:N.id,event:N.type,data:JSON.stringify(G?{...N,organizationId:B}:N)}).catch(()=>{_6.remove(W,K)})}})){await H.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let U=setInterval(()=>{H.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(U),_6.remove(W,K)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),_6.remove(W,K),N()})})})},TB5,MB5,VB5=()=>RB5(N4),IB5=()=>qB5(N4);var Y28=L(()=>{g$();u1();N8$();PF8();qF8();IF8();uF8();tF8();EZ0();GN1();$U8();X90();B9();Ri();R8();H8();My0();GU8();yO1();ZH();gF();L21();bG();g6();e4();A21();gU8();eU8();k21();EN8();g21();p21();n21();lK();cZ0();t21();hN8();Iy0();CE8();xE8();fE8();uE8();sE8();r21();Wx0();NZ0();QP8();Fx0();kT1();XP8();VT1();WP8();DP8();jP8();wP8();PP8();AP8();qP8();SP8();nq1();YA1();xP8();IT1();TT1();VY0();aP8();bq1();CJ();KB0();g80();bN1();d$0();p$0();mO1();rP8();$z8();c21();Wz8();vv0();Kz8();$90();$Q0();mB();b5();Rz1();Bz8();Az8();L3();cO();Mz8();FF0();GR1();aW();s21();uO();PD1();FF0();u90();o50();Fz1();Iz8();bw();Cz8();xs();L21();pn();Ut();dv0();sz8=_(nH(),1);TB5=new zB5,MB5=new Set([wG,oW,qD,RD,mj,s2])});var W28={};P6(W28,{resolveClientDir:()=>fB5,resolveAssetPathWithTraversalCheck:()=>G28,isPathWithinDirectory:()=>J28,createAssetHandler:()=>yB5});import{resolve as BY0,dirname as CB5,join as SB5,extname as _B5,basename as vB5,sep as X28}from"path";function bB5($,Z){if($===Z||vB5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${X28}assets${X28}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function J28($,Z){let Q=BY0(Z),Y=BY0($);return Y===Q||Y.startsWith(Q+"/")}function G28({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=BY0(Z,Q);if(!J28(Y,Z))return null;return Y}function fB5($,Z="../client"){let Q=new URL($),Y=CB5(Q.pathname);return BY0(Y,Z)}function yB5($={}){let{env:Z="production",clientDir:Q=xB5,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=G28({requestPath:W,clientDir:Q});if(!K)return null;let H=SB5(K,"index.html"),F=BY0(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(_B5(K))?[H,F]:[];for(let D of[K,...B])try{let O=Bun.file(D);if(await O.exists())return new Response(O,{headers:bB5(D,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var xB5="./dist/client";var K28=()=>{};var H28={};P6(H28,{tryUpgradePreviewWs:()=>nB5,tryHandlePreviewHttp:()=>cB5,previewWebSocketHandler:()=>tB5,parsePreviewBaseDomain:()=>mB5,isPreviewWsData:()=>Ih0,extractHandleFromHost:()=>UR1});function uB5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function lB5(){return new Response(hB5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function mB5($){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 UR1($,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 cB5($,Z){let Q=UR1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let{handle:Y,slug:X}=x31(Q),J=await Z.getRunner();if(!J)return LY0(503,"preview proxy not configured");let G=await J.proxyPreviewRequest(Y,X?pB5($,X):$);if(G.headers.get(ap)&&uB5($))return lB5();return G.headers.delete(ap),G}function iB5($){return{protocols:$.upstreamProtocols,headers:{[b31]:$.appSlug}}}function pB5($,Z){let Q=new Headers($.headers);return Q.set(b31,Z),new Request($,{headers:Q})}function LY0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function Ih0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function nB5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=UR1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let{handle:X,slug:J}=x31(Y),G=await Q.getRunner();if(!G)return LY0(503,"preview proxy not configured");let W=await G.resolvePreviewUpstreamUrl(X);if(!W)return LY0(404,"sandbox not found");let K=new URL($.url);if(K.pathname.startsWith("/_sandbox"))return LY0(404,"not found");let H=`${W.replace(/^http/,"ws")}${K.pathname}${K.search}`,F=$.headers.get("sec-websocket-protocol"),U=F?F.split(",").map((D)=>D.trim()).filter(Boolean):[],N={kind:"preview",upstreamUrl:H,upstreamProtocols:U,...J?{appSlug:J}:{},pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:N}))return LY0(426,"upgrade failed");return}function DY0($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var gB5=256,hB5='<!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>',dB5,tB5;var F28=L(()=>{l60();dB5=WebSocket;tB5={open($){let Z=$.data;if(!Ih0(Z))return;let Q;try{Q=Z.appSlug?new dB5(Z.upstreamUrl,iB5(Z)):Z.upstreamProtocols.length>0?new WebSocket(Z.upstreamUrl,Z.upstreamProtocols):new WebSocket(Z.upstreamUrl)}catch(Y){console.warn(`[preview-ws] failed to dial upstream ${Z.upstreamUrl}: ${Y instanceof Error?Y.message:String(Y)}`),DY0($,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)=>{DY0($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{DY0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!Ih0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=gB5){DY0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!Ih0(Z))return;DY0($,Z,1000,"")}}});g$();var qR1="14";function RR1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:qR1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}g$();import I28 from"pg";var MR1=8314027461559302n,k28=600000,C28=500;async function VR1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=k28}=$,X=$.log??((K)=>console.log(K)),J=new I28.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",[MR1.toString()])).rows[0]?.locked===!0,W)break;if(Date.now()-G>=Y)throw Error(`Timed out after ${Y}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await G$(C28)}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)",[MR1.toString()])}catch{}await J.end().catch(()=>{})}}u1();hh0();g6();function IA8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Qu0($,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 HM1(){let $=IA8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Qu0($,"--cpu-prof-dir")??process.cwd(),name:Qu0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Qu0($,"--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.'}))}Ju0();var CY0;function wM1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=$A();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(()=>{}),CY0=setInterval(()=>void Z().catch(()=>{}),$),CY0.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(CY0)clearInterval(CY0)}}import*as SA8 from"bun:jsc";var{startSamplingProfiler:_A8,samplingProfilerStackTraces:vA8}=SA8;function EM1(){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{_A8()}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=vA8()?.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 PM1(){HM1();let $=[wM1(),jM1(),EM1()];return()=>{for(let Z of $)Z()}}import{existsSync as QD5}from"fs";var nW=B0();GM1();var{DBOS:OY0,DBOSClient:oB5}=await import("@dbos-inc/dbos-sdk");function jR1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var sB5=[wG,oW,qD,RD,mj,s2,a2],aB5=nW.dispatchRole==="worker"?sB5:nW.dispatchRole==="api"?[]:void 0;OY0.setConfig(RR1({systemDatabaseUrl:jR1(nW.databaseUrl,nW.databasePgSsl),poolSize:nW.dbosPoolSize,executorID:nW.podName,listenQueues:aB5}));var{createApp:rB5}=await Promise.resolve().then(() => (Y28(),Q28)),{isServerPath:eB5}=await Promise.resolve().then(() => (VY0(),cR1)),{createAssetHandler:$D5,resolveClientDir:L28}=await Promise.resolve().then(() => (K28(),W28)),ZD5=nW.port,U28=L28(import.meta.url,"../client"),O28=QD5(U28)?U28:L28(import.meta.url,"../dist/client"),YD5=$D5({clientDir:O28,isServerPath:eB5}),XD5={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function JD5($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(XD5))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:GD5,tryHandlePreviewHttp:WD5,tryUpgradePreviewWs:KD5,previewWebSocketHandler:NR1,isPreviewWsData:BR1}=await Promise.resolve().then(() => (F28(),H28)),{getOrInitSharedRunner:j28}=await Promise.resolve().then(() => (yX(),sc$)),w28=GD5(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),N28={baseDomain:w28??"",getRunner:j28};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())j28().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var kh0=await rB5({clientDir:O28}),DR1=process.env.DBOS_CONDUCTOR_KEY?.trim(),B28=process.env.DBOS_CONDUCTOR_URL?.trim();await VR1({databaseUrl:jR1(nW.databaseUrl,nW.databasePgSsl)},()=>OY0.launch({...DR1?{conductorKey:DR1}:{},...DR1&&B28?{conductorURL:B28}:{}}));console.log(`[dbos] application version: ${OY0.applicationVersion}`);var LR1=5,OR1=0;await Z8(async()=>{OR1++;try{return await kh0.initDbos()}catch($){let Z=OR1>=LR1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${OR1}/${LR1} failed, ${Z}`,$),$}},{maxAttempts:LR1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});var HD5=Bun.serve({idleTimeout:0,port:ZD5,hostname:"0.0.0.0",fetch:async($,Z)=>{if(w28){let Y=await KD5($,Z,N28);if(Y===void 0)return;if(Y)return Y;let X=await WD5($,N28);if(X)return X}let Q=await YD5($);if(Q)return JD5(Q);return kh0.fetch($,{server:Z})},websocket:{open($){if(BR1($.data))NR1.open($)},message($,Z){if(BR1($.data))NR1.message($,Z)},close($){if(BR1($.data))NR1.close($)}},development:!1}),FD5=PM1();if(nW.localMode)Promise.resolve().then(() => (nh(),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(() => (nh(),Mv0));Z()}catch{}});var D28=!1;async function UD5($){let Z;try{Z=await oB5.create({systemDatabaseUrl:jR1(nW.databaseUrl,nW.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:oW,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:oW}),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 Ch0($){if(D28)return;D28=!0,console.log(`
4529
4529
  [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{FD5(),kh0.markShuttingDown();let J=IR1(nW.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await G$(J),await HD5.stop(!0);let G=OY0.executorID;await OY0.shutdown(),await UD5(G),await kh0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>Ch0("SIGTERM"));process.on("SIGINT",()=>Ch0("SIGINT"));process.on("SIGHUP",()=>Ch0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),Ch0("uncaughtException")});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.527.0",
3
+ "version": "4.528.0",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import{c as p,j as r}from"./index-Cuw4uBth.js";import{C as s}from"./index-BoQ6UNxI.js";import{A as e}from"./analytics-tab-D1CO6HBg.js";import{S as n}from"./settings-tab-CdOisIW6.js";import{e as a}from"./use-organization-settings-SIasU_tC.js";import{b as c}from"./thread-route-DIZgBacC.js";import"./use-mobile-99mfVsUI.js";import"./use-sidebar-collapsed-DxKpoCm3.js";import"./use-chat-layout-state-EYafKK4O.js";import"./use-panel-navigate-B12jZOsf.js";import"./use-project-scope-8q_Pr-Xb.js";import"./repository-binding-CXnxCF4M.js";import"./use-mcp-client-CfpsAKj4.js";import"./auth-BJe1aOgg.js";import"./thread-intent-CZ5_EO2w.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-B-BVtIbV.js";import"./task-board-DH9ssxkG.js";import"./schema-D5UoICKI.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-C1y4Hi5E.js";import"./AlertCircle-D9_evsvO.js";import"./Tool01-BJdrlQAn.js";import"./ArrowUp-Cth_eVmU.js";import"./ArrowLeft-B6qwUpLq.js";import"./LinkBroken01-gdfveCgK.js";import"./ShoppingBag01-BuVMkUkJ.js";import"./ZoomOut-rfozMzwP.js";import"./Building02-Wh9pimKL.js";import"./CheckCircle-DoJXwawU.js";import"./ChevronUp-7SZxJu8w.js";import"./ChevronSelectorVertical-CnRBP_5y.js";import"./UserSquare-D0z8lAkn.js";import"./Copy01-Bu20fOqK.js";import"./CreditCard01-Br0-9pHI.js";import"./DotsVertical-OSj5km5S.js";import"./Image01-CzYWCBEQ.js";import"./Globe04-D4srY_QI.js";import"./SwitchHorizontal01-D_E9YPjp.js";import"./Key01-C-bam-4X.js";import"./Link01-DXRUIbxg.js";import"./Minus-Czu3kpSA.js";import"./Monitor01-CruCSnyq.js";import"./Sun-Cg4UcsIP.js";import"./Play-RzA3Niav.js";import"./Plus-BA90GKs1.js";import"./SearchMd-DO1eOJvD.js";import"./Trash01-DcsYDVg8.js";import"./Upload01-CYUmJE5W.js";import"./Users01-Y9yFg_2K.js";import"./XClose-DIFkFXp0.js";import"./tooltip-Ci3ZwooP.js";import"./index-B-HoKvLm.js";import"./toolbar-icon-button-DZE2ESw9.js";import"./shell-layout-C2BJGx2g.js";import"./use-clock-tick-BUftA4XN.js";import"./command-D79ZH19X.js";import"./index-AaUC9WD6.js";import"./integration-icon-DkmY4VjA.js";import"./project-icon-DQNZWn_4.js";import"./new-project-dialog-M-WLwZ47.js";import"./label-GaS9ZdQZ.js";import"./repository-import-picker-DLsxOOxp.js";import"./use-navigate-to-agent-DaAFktW9.js";import"./repository-picker-Cq7JBkFe.js";import"./useInfiniteQuery-DFK0dHSs.js";import"./infiniteQueryObserver-Dy0j8RRj.js";import"./collection-search-DKSj36i2.js";import"./use-debounced-value-2_mLSVw4.js";import"./required-auth-layout-CwX_2fTY.js";import"./autosend-BKwtMB6P.js";import"./use-org-sso-CTKiuB0A.js";import"./sheet-56HC7WRJ.js";import"./resizable-C7Is3s-0.js";import"./badge-Dne4Jx9I.js";import"./checkbox-5tVptIvn.js";import"./table-CSojOz4z.js";import"./chart-CnvxVWLO.js";import"./index-Cp2UI7aA.js";import"./symbol-YpIq4fgA.js";import"./CategoricalChart-ChFkF0_C.js";import"./empty-state-Gwq8u3Sk.js";import"./site-slug-DebpOoQq.js";import"./AreaChart-D4vFJ6vT.js";import"./CartesianChart-DgnFHqiR.js";import"./index-D74iAt06.js";import"./extract-connection-data-Cx9ah1z5.js";import"./metadata-D72DunRR.js";import"./connection-CiqnzKwe.js";import"./url-slug-CLyOdzAm.js";import"./chat-context-C2Yxk7gW.js";import"./use-decopilot-events-CA56Gos8.js";import"./use-ai-providers-DOax94rO.js";import"./location-V0VwTJTt.js";import"./build-improve-prompt-doc-CxMWosB4.js";import"./empty-state-BGj88Oz3.js";import"./use-date-fns-locale-CrqyAQep.js";import"./mcp-oauth-BN2jrcE-.js";import"./mcp-oauth-DCesmV8O.js";import"./textarea-CDKBkceb.js";import"./use-connection-eHzowbKv.js";import"./use-debounced-autosave-BVxg8vxx.js";import"./add-connection-dialog-Dl0GCijo.js";import"./connection-card-CgbmOEtZ.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-hQxgme01.js";import"./form-DU60ZzuM.js";import"./select-B73KS7i3.js";import"./index-BdQq_4o_.js";import"./schema-D02aTPkl.js";import"./connection-form-helpers-ntCbPy2n.js";import"./authenticate-and-persist-oauth-BhtEjQrU.js";import"./collection-tabs-BVf232LH.js";import"./use-infinite-scroll-DfZZeab5.js";import"./useSuspenseInfiniteQuery-BBbMOBX0.js";import"./file-type-icon-DptKoj-q.js";import"./use-org-fs-Dczc29OI.js";import"./search-input-BqT8bImj.js";import"./use-mcp-auth-status-DZTVEUgz.js";import"./types-DhOLYbcW.js";import"./use-mcp-tools-De9LHWCI.js";import"./use-mcp-prompts-B6wGbsaO.js";import"./utils-CVEq3hMx.js";import"./switch-n_zXX4if.js";import"./popover-DiqYPKHh.js";import"./scroll-area-CDUvVvSH.js";import"./experiments-tab-choice-C-Kj-SaP.js";import"./use-project-native-view-presence-BYkoNVb2.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Bg-fEAGm.js";import"./optimistic-project-sidebar-views-BFrvBRmj.js";import"./sections-Bv_E_JwJ.js";import"./use-copy-ClerAXdJ.js";import"./virtual-mcp-DSjzxtZz.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-vfO2xRLb.js";import"./use-secrets-zkQum-du.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./app-preview-url-9Od4s8Sz.js";import"./serial-task-queue-CGOeQgpr.js";function l(){const t=p.c(3),o=c(),m=a();let i;return t[0]!==m.analytics||t[1]!==o?(i=m.analytics?r.jsx(e,{virtualMcpId:o}):r.jsx(n,{virtualMcpId:o}),t[0]=m.analytics,t[1]=o,t[2]=i):i=t[2],i}function No(){const t=p.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=r.jsx(s.Content,{children:r.jsx(l,{})}),t[0]=o):o=t[0],o}export{No as default};
@@ -1 +0,0 @@
1
- import{c as d,j as a,a2 as g}from"./index-Cuw4uBth.js";import{C as x}from"./index-BoQ6UNxI.js";import{a as h}from"./thread-route-DIZgBacC.js";import{u as $}from"./use-task-metadata-ztONCu50.js";import{AppViewContent as A}from"./project-app-view-BwcoGS-v.js";import"./use-mobile-99mfVsUI.js";import"./use-sidebar-collapsed-DxKpoCm3.js";import"./use-chat-layout-state-EYafKK4O.js";import"./use-panel-navigate-B12jZOsf.js";import"./use-project-scope-8q_Pr-Xb.js";import"./repository-binding-CXnxCF4M.js";import"./use-mcp-client-CfpsAKj4.js";import"./auth-BJe1aOgg.js";import"./thread-intent-CZ5_EO2w.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-B-BVtIbV.js";import"./task-board-DH9ssxkG.js";import"./schema-D5UoICKI.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-C1y4Hi5E.js";import"./AlertCircle-D9_evsvO.js";import"./Tool01-BJdrlQAn.js";import"./ArrowUp-Cth_eVmU.js";import"./ArrowLeft-B6qwUpLq.js";import"./LinkBroken01-gdfveCgK.js";import"./ShoppingBag01-BuVMkUkJ.js";import"./ZoomOut-rfozMzwP.js";import"./Building02-Wh9pimKL.js";import"./CheckCircle-DoJXwawU.js";import"./ChevronUp-7SZxJu8w.js";import"./ChevronSelectorVertical-CnRBP_5y.js";import"./UserSquare-D0z8lAkn.js";import"./Copy01-Bu20fOqK.js";import"./CreditCard01-Br0-9pHI.js";import"./DotsVertical-OSj5km5S.js";import"./Image01-CzYWCBEQ.js";import"./Globe04-D4srY_QI.js";import"./SwitchHorizontal01-D_E9YPjp.js";import"./Key01-C-bam-4X.js";import"./Link01-DXRUIbxg.js";import"./Minus-Czu3kpSA.js";import"./Monitor01-CruCSnyq.js";import"./Sun-Cg4UcsIP.js";import"./Play-RzA3Niav.js";import"./Plus-BA90GKs1.js";import"./SearchMd-DO1eOJvD.js";import"./Trash01-DcsYDVg8.js";import"./Upload01-CYUmJE5W.js";import"./Users01-Y9yFg_2K.js";import"./XClose-DIFkFXp0.js";import"./tooltip-Ci3ZwooP.js";import"./index-B-HoKvLm.js";import"./toolbar-icon-button-DZE2ESw9.js";import"./shell-layout-C2BJGx2g.js";import"./use-clock-tick-BUftA4XN.js";import"./command-D79ZH19X.js";import"./index-AaUC9WD6.js";import"./integration-icon-DkmY4VjA.js";import"./project-icon-DQNZWn_4.js";import"./new-project-dialog-M-WLwZ47.js";import"./label-GaS9ZdQZ.js";import"./repository-import-picker-DLsxOOxp.js";import"./use-navigate-to-agent-DaAFktW9.js";import"./repository-picker-Cq7JBkFe.js";import"./useInfiniteQuery-DFK0dHSs.js";import"./infiniteQueryObserver-Dy0j8RRj.js";import"./collection-search-DKSj36i2.js";import"./use-debounced-value-2_mLSVw4.js";import"./use-organization-settings-SIasU_tC.js";import"./required-auth-layout-CwX_2fTY.js";import"./autosend-BKwtMB6P.js";import"./use-org-sso-CTKiuB0A.js";import"./sheet-56HC7WRJ.js";import"./resizable-C7Is3s-0.js";import"./tool-namespace-DO1Qm86o.js";import"./use-mcp-tools-De9LHWCI.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-gjnt5Msm.js";import"./types-DhOLYbcW.js";import"./chat-context-C2Yxk7gW.js";import"./use-decopilot-events-CA56Gos8.js";import"./use-ai-providers-DOax94rO.js";import"./location-V0VwTJTt.js";import"./task-route-bLUOK5JR.js";import"./task-key-BCHdFiOO.js";import"./core.esm-DpydQIdT.js";import"./connect-source-dialog-DPHm5SIR.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-BhEYBdV4.js";import"./companions-core-DzyeM-yJ.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-ByTYKy_L.js";import"./form-DU60ZzuM.js";import"./icon-button-DhKNS89h.js";import"./provision-repo-scoped-github-connection-lckxpDHD.js";import"./useQueries-BmYWSC6K.js";import"./authenticate-and-persist-oauth-BhtEjQrU.js";import"./mcp-oauth-BN2jrcE-.js";import"./mcp-oauth-DCesmV8O.js";import"./track-BtJWR_CA.js";import"./extract-connection-data-Cx9ah1z5.js";import"./connection-CiqnzKwe.js";import"./url-slug-CLyOdzAm.js";const l=g("/shell/$org/org-shell/agent-shell/projects/$agentId/apps/$connectionId/$toolName");function j(){const t=d.c(10),{connectionId:o,toolName:r}=l.useParams(),{args:i}=l.useSearch(),u=h(),e=$(u);let p;t[0]!==o||t[1]!==e?.expanded_tools||t[2]!==r?(p=e?.expanded_tools?.find(c=>c.appId===o&&c.toolName===r),t[0]=o,t[1]=e?.expanded_tools,t[2]=r,t[3]=p):p=t[3];const f=p,s=`${o}:${r}`,n=f?.args;let m;return t[4]!==i||t[5]!==o||t[6]!==s||t[7]!==n||t[8]!==r?(m=a.jsx(A,{connectionId:o,toolName:r,args:n,searchArgs:i},s),t[4]=i,t[5]=o,t[6]=s,t[7]=n,t[8]=r,t[9]=m):m=t[9],m}function $o(){const t=d.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=a.jsx(x.Content,{children:a.jsx(j,{})}),t[0]=o):o=t[0],o}export{$o as default};
@@ -1 +0,0 @@
1
- import{c as Q,b as le,r as re,j as s,l as fe,bo as he,fw as Re,B as me,ay as Te,bA as we}from"./index-Cuw4uBth.js";import{C as De}from"./index-BoQ6UNxI.js";import{S as Ie}from"./site-draft-actions-CSQlnRHC.js";import{r as pe,H as Ee}from"./agent-icon-C1y4Hi5E.js";import{i as Oe}from"./SwitchHorizontal01-D_E9YPjp.js";import{s as Me}from"./Plus-BA90GKs1.js";import{B as $e}from"./badge-Dne4Jx9I.js";import{S as ye}from"./scroll-area-CDUvVvSH.js";import{T as Ne,a as Ve}from"./toggle-group-DGx4bXEF.js";import{q as Ae,s as Be,t as ze,u as Pe,n as Fe,S as Ce,N as We,k as Le,d as Ue,f as He,g as Ge,h as Ye,j as ve,b as Ke,c as qe,p as Je,l as Qe,m as Xe,i as Ze,a as et}from"./site-draft-view-BaHCN82W.js";import{c as tt,b as st,d as je,V as it,W as nt}from"./blocks-tab-states-DBqkaxym.js";import{ag as at,ai as rt}from"./parse-sections-B1uka1Vq.js";import{a as ue,M as lt,b as ot}from"./date-utils-CrvIKg-s.js";import{h as mt}from"./named-rule-uses-B_glLrdA.js";import{a as ct}from"./use-panel-navigate-B12jZOsf.js";import{u as dt,e as pt}from"./experiments-tab-choice-C-Kj-SaP.js";import{S as ut}from"./settings-tab-CdOisIW6.js";import{b as ft}from"./thread-route-DIZgBacC.js";import"./use-mobile-99mfVsUI.js";import"./use-sidebar-collapsed-DxKpoCm3.js";import"./use-chat-layout-state-EYafKK4O.js";import"./thread-intent-CZ5_EO2w.js";import"./use-mcp-client-CfpsAKj4.js";import"./auth-BJe1aOgg.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-B-BVtIbV.js";import"./task-board-DH9ssxkG.js";import"./schema-D5UoICKI.js";import"./slugify-CEUa2lfQ.js";import"./tooltip-Ci3ZwooP.js";import"./index-B-HoKvLm.js";import"./toolbar-icon-button-DZE2ESw9.js";import"./shell-layout-C2BJGx2g.js";import"./Building02-Wh9pimKL.js";import"./UserSquare-D0z8lAkn.js";import"./XClose-DIFkFXp0.js";import"./use-project-scope-8q_Pr-Xb.js";import"./repository-binding-CXnxCF4M.js";import"./CheckCircle-DoJXwawU.js";import"./Monitor01-CruCSnyq.js";import"./ZoomOut-rfozMzwP.js";import"./use-clock-tick-BUftA4XN.js";import"./Tool01-BJdrlQAn.js";import"./command-D79ZH19X.js";import"./index-AaUC9WD6.js";import"./SearchMd-DO1eOJvD.js";import"./integration-icon-DkmY4VjA.js";import"./LinkBroken01-gdfveCgK.js";import"./project-icon-DQNZWn_4.js";import"./new-project-dialog-M-WLwZ47.js";import"./ArrowLeft-B6qwUpLq.js";import"./label-GaS9ZdQZ.js";import"./repository-import-picker-DLsxOOxp.js";import"./use-navigate-to-agent-DaAFktW9.js";import"./repository-picker-Cq7JBkFe.js";import"./useInfiniteQuery-DFK0dHSs.js";import"./infiniteQueryObserver-Dy0j8RRj.js";import"./collection-search-DKSj36i2.js";import"./ShoppingBag01-BuVMkUkJ.js";import"./use-debounced-value-2_mLSVw4.js";import"./use-organization-settings-SIasU_tC.js";import"./required-auth-layout-CwX_2fTY.js";import"./autosend-BKwtMB6P.js";import"./use-org-sso-CTKiuB0A.js";import"./sheet-56HC7WRJ.js";import"./resizable-C7Is3s-0.js";import"./separator-Bun_4c4E.js";import"./chat-context-C2Yxk7gW.js";import"./use-decopilot-events-CA56Gos8.js";import"./use-ai-providers-DOax94rO.js";import"./location-V0VwTJTt.js";import"./site-editor-toast-DQ656FVh.js";import"./use-session-runtime-BkX1p9DX.js";import"./sandbox-url-D3mC8qhT.js";import"./utils-gKN9JfVP.js";import"./Image01-CzYWCBEQ.js";import"./use-sandbox-events-DukuKdrD.js";import"./sandbox-git-api-CH_-QFpD.js";import"./popover-DiqYPKHh.js";import"./tabs-C8EZr9R7.js";import"./active-indicator-CCMhAsc_.js";import"./ChevronUp-7SZxJu8w.js";import"./DotsVertical-OSj5km5S.js";import"./Trash01-DcsYDVg8.js";import"./use-releases-BrcgpLBE.js";import"./serial-task-queue-CGOeQgpr.js";import"./virtual-mcp-DSjzxtZz.js";import"./url-slug-CLyOdzAm.js";import"./use-fast-preview-draft-url-DrM2pRhy.js";import"./section-preview-url-7zfngvgW.js";import"./preview-link-C762yHOt.js";import"./variant-draft-pointer-BeAKcq_c.js";import"./index-BwdKQXWi.js";import"./ArrowUp-Cth_eVmU.js";import"./tool-namespace-DO1Qm86o.js";import"./drawer-hQxgme01.js";import"./use-mcp-prompts-B6wGbsaO.js";import"./usage-stats-CNLGhk-o.js";import"./form-DU60ZzuM.js";import"./utils-CVEq3hMx.js";import"./markdown-DWeSe4_P.js";import"./use-copy-ClerAXdJ.js";import"./Copy01-Bu20fOqK.js";import"./input-eQkN56jq.js";import"./icon-button-DhKNS89h.js";import"./file-type-icon-DptKoj-q.js";import"./chat-draft-CoNCF5e9.js";import"./Upload01-CYUmJE5W.js";import"./AlertCircle-D9_evsvO.js";import"./select-B73KS7i3.js";import"./index-BdQq_4o_.js";import"./use-deco-credits-DABk3yY1.js";import"./use-open-billing-url-Bzh-ntva.js";import"./index-Boaq93Wx.js";import"./checkbox-5tVptIvn.js";import"./Minus-Czu3kpSA.js";import"./ChevronSelectorVertical-CnRBP_5y.js";import"./Key01-C-bam-4X.js";import"./ai-providers-logos-DD3qZ33J.js";import"./input-CBK8CI9T.js";import"./suggestion-CZpp719s.js";import"./use-org-fs-Dczc29OI.js";import"./Link01-DXRUIbxg.js";import"./question-004-sINsf4GQ.js";import"./feature-paywall-zO4dzbka.js";import"./plan-ladder-Cr-CdTR1.js";import"./add-connection-dialog-Dl0GCijo.js";import"./extract-connection-data-Cx9ah1z5.js";import"./metadata-D72DunRR.js";import"./connection-CiqnzKwe.js";import"./connection-card-CgbmOEtZ.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-CDKBkceb.js";import"./use-connection-eHzowbKv.js";import"./schema-D02aTPkl.js";import"./connection-form-helpers-ntCbPy2n.js";import"./authenticate-and-persist-oauth-BhtEjQrU.js";import"./mcp-oauth-BN2jrcE-.js";import"./mcp-oauth-DCesmV8O.js";import"./collection-tabs-BVf232LH.js";import"./use-infinite-scroll-DfZZeab5.js";import"./useSuspenseInfiniteQuery-BBbMOBX0.js";import"./use-task-board-events-CmQec1Gn.js";import"./pair-DtCSsufw.js";import"./collapsible-B_i_flQZ.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-gjnt5Msm.js";import"./types-DhOLYbcW.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./use-thread-outputs-CM6siwJk.js";import"./releases-api-Dd6sHYpc.js";import"./use-content-sync-CsEeS6wP.js";import"./device-hint-SeLRi17j.js";import"./editor-C7NsJj0P.js";import"./section-array-field-BwPxgG9_.js";import"./alert-DiPve0LV.js";import"./save-changes-debug-nBi-n9eV.js";import"./sandbox-lifecycle-context-DdYoEP5e.js";import"./sandbox-start-errors-BK_aDCyt.js";import"./CreditCard01-Br0-9pHI.js";import"./Globe04-D4srY_QI.js";import"./Sun-Cg4UcsIP.js";import"./Play-RzA3Niav.js";import"./Users01-Y9yFg_2K.js";import"./use-apply-named-rule-CJFPy5HY.js";import"./use-move-blocks-ChQw5gpw.js";import"./empty-state-Gwq8u3Sk.js";import"./slider-DnA5KcIW.js";import"./index-T8jAgtpZ.js";import"./tooltipContext-DfN2pXFs.js";import"./CategoricalChart-ChFkF0_C.js";import"./index-Cp2UI7aA.js";import"./ActiveShapeUtils-CLeQm0q6.js";import"./Sector-Duu5xYm_.js";import"./symbol-YpIq4fgA.js";import"./empty-state-BGj88Oz3.js";import"./index-D74iAt06.js";import"./build-improve-prompt-doc-CxMWosB4.js";import"./use-date-fns-locale-CrqyAQep.js";import"./use-debounced-autosave-BVxg8vxx.js";import"./search-input-BqT8bImj.js";import"./use-mcp-auth-status-DZTVEUgz.js";import"./use-mcp-tools-De9LHWCI.js";import"./switch-n_zXX4if.js";import"./use-project-native-view-presence-BYkoNVb2.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Bg-fEAGm.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-BFrvBRmj.js";import"./sections-Bv_E_JwJ.js";import"./secret-picker-vfO2xRLb.js";import"./use-secrets-zkQum-du.js";import"./app-preview-url-9Od4s8Sz.js";function ge(i){return{start:i.start?Date.parse(i.start):null,end:i.end?Date.parse(i.end):null}}function xt(i,e){const{start:t,end:n}=ge(i);if(Number.isNaN(t)||Number.isNaN(n))return"unreadable";if(t===null&&n===null)return"always";const o=e.getTime();return t!==null&&o<t?"upcoming":n!==null&&o>=n?"ended":"running"}const Se={running:0,upcoming:1,always:2,unreadable:3,ended:4};function gt(i,e,t){const n=at(i,"campaigns");if(n.kind==="conflict")return[];const o=e?.published??null,a=Object.entries(n.values).map(([m,u])=>{const r=Ae(o,"campaigns",m,u),p=r==="changed"?Be(o,"campaigns",m):void 0;return{name:m,window:u,status:xt(u,t),uses:e?mt(e,"campaigns",m):0,entryState:r,...p!==void 0?{publishedWindow:p}:{}}}),c=m=>m.window.start?Date.parse(m.window.start):0,l=m=>m.window.end?Date.parse(m.window.end):0;return a.sort((m,u)=>{const r=Se[m.status]-Se[u.status];return r!==0?r:m.status==="upcoming"?c(m)-c(u):m.status==="ended"?l(u)-l(m):0})}function bt(i,e){return ze(i,e?.published??null,"campaigns")}function xe(i,e,t){const{start:n,end:o}=ge(i);if(Number.isNaN(n)||Number.isNaN(o))return null;const a=e.getTime(),c=t.getTime(),l=c-a;if(l<=0)return null;const m=n??Number.NEGATIVE_INFINITY,u=o??Number.POSITIVE_INFINITY;if(u<=a||m>=c||u<=m)return null;const r=Math.max(m,a),p=Math.min(u,c);return{left:(r-a)/l*100,width:(p-r)/l*100,openStart:m<a,openEnd:u>c}}const ht=1.5,wt=4;function Nt(i,e){const t=e.length*ht+wt;return i.width>=t?"inside":i.left+i.width+t<=100?"after":i.left>=t||i.left>100-(i.left+i.width)?"before":"after"}function jt(i,e,t){const n=new Date(e.getFullYear(),e.getMonth(),1),o=new Date(e.getFullYear(),e.getMonth()+t,1);if(i.some(l=>xe(l,n,o)!==null))return n;const a=i.map(l=>ge(l).start).filter(l=>l!==null&&!Number.isNaN(l)&&l>=o.getTime()).sort((l,m)=>l-m)[0];if(a===void 0)return n;const c=new Date(a);return new Date(c.getFullYear(),c.getMonth(),1)}const St={running:"bg-success",upcoming:"bg-primary",always:"bg-success",ended:"bg-muted-foreground/50",unreadable:"bg-warning"},yt={running:"bg-success/80 text-success-foreground",upcoming:"bg-primary/80 text-primary-foreground",always:"bg-success/60 text-success-foreground",ended:"bg-muted text-muted-foreground",unreadable:"bg-warning/60 text-warning-foreground"},ae=4,de=rt("campaigns").blockKey,Ct=(i,e)=>he(i??null)!==he(e??null);function vt(){const i=Q.c(2),e=le();let t;return i[0]!==e?(t=n=>{switch(n){case"running":return e("sandbox.dateCampaigns.status.running");case"upcoming":return e("sandbox.dateCampaigns.status.upcoming");case"ended":return e("sandbox.dateCampaigns.status.ended");case"always":return e("sandbox.dateCampaigns.status.always");case"unreadable":return e("sandbox.dateCampaigns.status.unreadable")}},i[0]=e,i[1]=t):t=i[1],t}function _e(i){const e=Q.c(11),{status:t}=i,n=vt(),o=St[t];let a;e[0]!==o?(a=fe("size-1.5 rounded-full",o),e[0]=o,e[1]=a):a=e[1];let c;e[2]!==a?(c=s.jsx("span",{className:a}),e[2]=a,e[3]=c):c=e[3];let l;e[4]!==n||e[5]!==t?(l=n(t),e[4]=n,e[5]=t,e[6]=l):l=e[6];let m;return e[7]!==t||e[8]!==c||e[9]!==l?(m=s.jsxs($e,{variant:"secondary","data-status":t,children:[c,l]}),e[7]=t,e[8]=c,e[9]=l,e[10]=m):m=e[10],m}function be(i,e){return Re(i)??e}function _t(i){const e=Q.c(8),{title:t,description:n}=i;let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(pe,{size:24,className:"text-muted-foreground/60"}),e[0]=o):o=e[0];let a;e[1]!==t?(a=s.jsx("p",{className:"text-sm font-medium",children:t}),e[1]=t,e[2]=a):a=e[2];let c;e[3]!==n?(c=s.jsx("p",{className:"max-w-sm text-sm text-muted-foreground",children:n}),e[3]=n,e[4]=c):c=e[4];let l;return e[5]!==a||e[6]!==c?(l=s.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-2 p-6 text-center",children:[o,a,c]}),e[5]=a,e[6]=c,e[7]=l):l=e[7],l}function kt(i){const e=Q.c(109),{orgSlug:t,virtualMcpId:n,branch:o,decofile:a,meta:c,onOpenUse:l,initialView:m}=i,u=m===void 0?"list":m,r=le();let p;e[0]!==o||e[1]!==a||e[2]!==c||e[3]!==t||e[4]!==n?(p={orgSlug:t,virtualMcpId:n,branch:o,decofile:a,meta:c},e[0]=o,e[1]=a,e[2]=c,e[3]=t,e[4]=n,e[5]=p):p=e[5];const d=Pe("campaigns",p),[x,j]=re.useState(u);let v;e[6]!==o||e[7]!==t||e[8]!==n?(v=tt({orgSlug:t,virtualMcpId:n,branch:o}),e[6]=o,e[7]=t,e[8]=n,e[9]=v):v=e[9];const S=st(v);let R;e[10]!==S?(R=S(de),e[10]=S,e[11]=R):R=e[11];const X=R,[b]=re.useState(Tt);if(d.blocked){let w;e[12]!==r?(w=r("sandbox.dateCampaigns.missing.title"),e[12]=r,e[13]=w):w=e[13];let O;e[14]!==r?(O=r("sandbox.dateCampaigns.missing.desc"),e[14]=r,e[15]=O):O=e[15];let z;e[16]!==w||e[17]!==O?(z={title:w,description:O},e[16]=w,e[17]=O,e[18]=z):z=e[18];let G;e[19]!==r?(G=r("sandbox.dateCampaigns.replaced.title"),e[19]=r,e[20]=G):G=e[20];let Z;e[21]!==r?(Z=r("sandbox.dateCampaigns.replaced.desc"),e[21]=r,e[22]=Z):Z=e[22];let ee;e[23]!==Z||e[24]!==G?(ee={title:G,description:Z},e[23]=Z,e[24]=G,e[25]=ee):ee=e[25];let Y;e[26]!==r?(Y=r("sandbox.dateCampaigns.conflict.title"),e[26]=r,e[27]=Y):Y=e[27];let K;e[28]!==r?(K=r("sandbox.dateCampaigns.conflict.desc"),e[28]=r,e[29]=K):K=e[29];let J;e[30]!==Y||e[31]!==K?(J={title:Y,description:K},e[30]=Y,e[31]=K,e[32]=J):J=e[32];let te;e[33]!==ee||e[34]!==J||e[35]!==z?(te={missing:z,replaced:ee,conflict:J},e[33]=ee,e[34]=J,e[35]=z,e[36]=te):te=e[36];const oe=te[d.blocked];let ce;return e[37]!==oe?(ce=s.jsx(_t,{...oe}),e[37]=oe,e[38]=ce):ce=e[38],ce}let q,f,M;if(e[39]!==X||e[40]!==a||e[41]!==c||e[42]!==b||e[43]!==l||e[44]!==d){M=Symbol.for("react.early_return_sentinel");e:{f=gt(a,d.uses,b);let w;e[48]!==a||e[49]!==d.uses?(w=bt(a,d.uses),e[48]=a,e[49]=d.uses,e[50]=w):w=e[50],q=w;const O=f.find(z=>z.name===d.openName)??null;if(O){M=s.jsx(At,{...Fe(d,O,{decofile:a,meta:c,onOpenUse:l})},`${O.name}:${X}`);break e}}e[39]=X,e[40]=a,e[41]=c,e[42]=b,e[43]=l,e[44]=d,e[45]=q,e[46]=f,e[47]=M}else q=e[45],f=e[46],M=e[47];if(M!==Symbol.for("react.early_return_sentinel"))return M;let T;e[51]!==r?(T=r("sandbox.dateCampaigns.intro"),e[51]=r,e[52]=T):T=e[52];let $;e[53]===Symbol.for("react.memo_cache_sentinel")?($=w=>{(w==="list"||w==="timeline")&&j(w)},e[53]=$):$=e[53];let N;e[54]===Symbol.for("react.memo_cache_sentinel")?(N=s.jsx(Oe,{}),e[54]=N):N=e[54];let P;e[55]!==r?(P=r("sandbox.dateCampaigns.listMode"),e[55]=r,e[56]=P):P=e[56];let F;e[57]!==P?(F=s.jsxs(Ne,{value:"list",children:[N,P]}),e[57]=P,e[58]=F):F=e[58];let V;e[59]===Symbol.for("react.memo_cache_sentinel")?(V=s.jsx(pe,{}),e[59]=V):V=e[59];let D;e[60]!==r?(D=r("sandbox.dateCampaigns.timelineMode"),e[60]=r,e[61]=D):D=e[61];let _;e[62]!==D?(_=s.jsxs(Ne,{value:"timeline",children:[V,D]}),e[62]=D,e[63]=_):_=e[63];let A;e[64]!==x||e[65]!==F||e[66]!==_?(A=s.jsxs(Ve,{type:"single",variant:"segmented",size:"sm",value:x,onValueChange:$,children:[F,_]}),e[64]=x,e[65]=F,e[66]=_,e[67]=A):A=e[67];let I;e[68]!==d?(I=()=>d.setCreating(!0),e[68]=d,e[69]=I):I=e[69];let B;e[70]===Symbol.for("react.memo_cache_sentinel")?(B=s.jsx(Me,{size:16}),e[70]=B):B=e[70];let k;e[71]!==r?(k=r("sandbox.dateCampaigns.new"),e[71]=r,e[72]=k):k=e[72];let E;e[73]!==I||e[74]!==k?(E=s.jsxs(me,{size:"sm",onClick:I,children:[B,k]}),e[73]=I,e[74]=k,e[75]=E):E=e[75];let y;e[76]!==A||e[77]!==E?(y=s.jsxs(s.Fragment,{children:[A,E]}),e[76]=A,e[77]=E,e[78]=y):y=e[78];let g;e[79]!==y||e[80]!==T?(g=s.jsx(ve,{intro:T,actions:y}),e[79]=y,e[80]=T,e[81]=g):g=e[81];let h;e[82]===Symbol.for("react.memo_cache_sentinel")?(h=fe("flex flex-col gap-4",Ce),e[82]=h):h=e[82];let C;e[83]!==x||e[84]!==b||e[85]!==f||e[86]!==r||e[87]!==d.setOpenName?(C=f.length===0?s.jsxs("div",{className:"flex flex-col items-center gap-2 py-10 text-center",children:[s.jsx(pe,{size:24,className:"text-muted-foreground/60"}),s.jsx("p",{className:"text-sm font-medium",children:r("sandbox.dateCampaigns.empty.title")}),s.jsx("p",{className:"max-w-sm text-sm text-muted-foreground",children:r("sandbox.dateCampaigns.empty.desc")})]}):x==="list"?s.jsx(Dt,{rows:f,onOpen:d.setOpenName}):s.jsx(It,{rows:f,now:b,onOpen:d.setOpenName}),e[83]=x,e[84]=b,e[85]=f,e[86]=r,e[87]=d.setOpenName,e[88]=C):C=e[88];let W;e[89]!==l||e[90]!==q||e[91]!==d.missing||e[92]!==d.missingNames?(W=s.jsx(We,{kind:"campaigns",missing:d.missing,missingNames:d.missingNames,removed:q,onOpenUse:l}),e[89]=l,e[90]=q,e[91]=d.missing,e[92]=d.missingNames,e[93]=W):W=e[93];let L;e[94]!==C||e[95]!==W?(L=s.jsx(ye,{className:"min-h-0 flex-1",children:s.jsxs("div",{className:h,children:[C,W]})}),e[94]=C,e[95]=W,e[96]=L):L=e[96];const se=d.creating,ie=d.setCreating;let U;e[97]!==f?(U=f.map(Rt),e[97]=f,e[98]=U):U=e[98];let H;e[99]!==U||e[100]!==d.create||e[101]!==d.creating||e[102]!==d.isPending||e[103]!==d.setCreating?(H=s.jsx(Le,{kind:"campaigns",open:se,onOpenChange:ie,existingNames:U,pending:d.isPending,onCreate:d.create}),e[99]=U,e[100]=d.create,e[101]=d.creating,e[102]=d.isPending,e[103]=d.setCreating,e[104]=H):H=e[104];let ne;return e[105]!==g||e[106]!==L||e[107]!==H?(ne=s.jsxs("div",{className:"flex h-full w-full flex-col",children:[g,L,H]}),e[105]=g,e[106]=L,e[107]=H,e[108]=ne):ne=e[108],ne}function Rt(i){return i.name}function Tt(){return new Date}function Dt(i){const e=Q.c(9),{rows:t,onOpen:n}=i,o=le();let a;if(e[0]!==n||e[1]!==t||e[2]!==o){let l;e[4]!==n||e[5]!==o?(l=m=>s.jsxs("li",{className:"group relative flex items-center gap-4 px-4 py-3 hover:bg-muted/50","data-testid":"campaign-row",children:[s.jsxs("div",{className:"flex min-w-0 flex-1 flex-col gap-0.5",children:[s.jsx("button",{type:"button",onClick:()=>n(m.name),className:"truncate text-left text-sm font-medium after:absolute after:inset-0 focus-visible:outline-none focus-visible:after:ring-2 focus-visible:after:ring-ring focus-visible:after:ring-inset",children:m.name}),s.jsxs("span",{className:"truncate text-xs text-muted-foreground",children:[be(m.window,o("sectionsEditor.namedRulePicker.alwaysRunning"))," · ",Ke(o,"campaigns",m.uses)]})]}),s.jsx("div",{className:"hidden w-40 shrink-0 md:flex",children:s.jsx(qe,{kind:"campaigns",state:m.entryState})}),s.jsx("div",{className:"flex w-32 shrink-0",children:s.jsx(_e,{status:m.status})})]},m.name),e[4]=n,e[5]=o,e[6]=l):l=e[6],a=t.map(l),e[0]=n,e[1]=t,e[2]=o,e[3]=a}else a=e[3];let c;return e[7]!==a?(c=s.jsx("ul",{className:"divide-y divide-border rounded-md border border-border","data-testid":"campaigns-list",children:a}),e[7]=a,e[8]=c):c=e[8],c}function It(i){const e=Q.c(50),{rows:t,now:n,onOpen:o}=i,a=le();let c;e[0]!==n||e[1]!==t?(c=()=>jt(t.map(Vt),n,ae),e[0]=n,e[1]=t,e[2]=c):c=e[2];const[l,m]=re.useState(c);let u,r,p,d,x,j;if(e[3]!==l||e[4]!==n||e[5]!==o||e[6]!==t||e[7]!==a){const R=ue(l,ae),X=Array.from({length:ae},(y,g)=>ue(l,g)),b=xe({start:n.toISOString(),end:new Date(n.getTime()+1).toISOString()},l,R),f=t.map(y=>({row:y,bar:xe(y.window,l,R)})).filter($t);d="flex flex-col gap-2",x="campaigns-timeline";let M;e[14]!==n?(M=()=>m(ot(n)),e[14]=n,e[15]=M):M=e[15];let T;e[16]!==a?(T=a("sandbox.dateCampaigns.today"),e[16]=a,e[17]=T):T=e[17];let $;e[18]!==M||e[19]!==T?($=s.jsx(me,{variant:"outline",size:"sm",onClick:M,children:T}),e[18]=M,e[19]=T,e[20]=$):$=e[20];let N;e[21]!==a?(N=a("sandbox.dateCampaigns.previous"),e[21]=a,e[22]=N):N=e[22];let P,F;e[23]===Symbol.for("react.memo_cache_sentinel")?(P=()=>m(Mt),F=s.jsx(Ee,{size:16}),e[23]=P,e[24]=F):(P=e[23],F=e[24]);let V;e[25]!==N?(V=s.jsx(me,{variant:"ghost",size:"icon",className:"size-8","aria-label":N,onClick:P,children:F}),e[25]=N,e[26]=V):V=e[26];let D;e[27]!==a?(D=a("sandbox.dateCampaigns.next"),e[27]=a,e[28]=D):D=e[28];let _,A;e[29]===Symbol.for("react.memo_cache_sentinel")?(_=()=>m(Ot),A=s.jsx(Te,{size:16}),e[29]=_,e[30]=A):(_=e[29],A=e[30]);let I;e[31]!==D?(I=s.jsx(me,{variant:"ghost",size:"icon",className:"size-8","aria-label":D,onClick:_,children:A}),e[31]=D,e[32]=I):I=e[32],e[33]!==$||e[34]!==V||e[35]!==I?(j=s.jsxs("div",{className:"flex items-center gap-2",children:[$,V,I]}),e[33]=$,e[34]=V,e[35]=I,e[36]=j):j=e[36],u="relative min-w-[640px] rounded-md border border-border";let B;e[37]===Symbol.for("react.memo_cache_sentinel")?(B=s.jsx("div",{className:"w-48 shrink-0 border-r"}),e[37]=B):B=e[37];let k;e[38]===Symbol.for("react.memo_cache_sentinel")?(k={gridTemplateColumns:`repeat(${ae}, minmax(0, 1fr))`},e[38]=k):k=e[38];const E=X.map(Et);e[39]!==E?(r=s.jsxs("div",{className:"flex border-b",children:[B,s.jsx("div",{className:"grid flex-1",style:k,children:E})]}),e[39]=E,e[40]=r):r=e[40],p=f.length===0?s.jsx("p",{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:a("sandbox.dateCampaigns.nothingInRange")}):f.map(y=>{const{row:g,bar:h}=y,C=Nt(h,g.name);return s.jsxs("div",{className:"flex h-9 items-center border-b last:border-b-0",children:[s.jsx("div",{className:"w-48 shrink-0 truncate border-r px-3 text-sm",children:g.name}),s.jsxs("div",{className:"relative h-full flex-1",children:[b&&s.jsx("div",{className:"pointer-events-none absolute top-0 bottom-0 w-px bg-primary/70",style:{left:`${b.left}%`}}),s.jsx("button",{type:"button",onClick:()=>o(g.name),"aria-label":g.name,title:be(g.window,a("sectionsEditor.namedRulePicker.alwaysRunning")),className:fe("absolute top-1/2 h-6 -translate-y-1/2 truncate rounded text-left text-2xs font-medium",C==="inside"&&"px-2",yt[g.status],h.openStart&&"rounded-l-none",h.openEnd&&"rounded-r-none"),style:{left:`${h.left}%`,width:`max(calc(${h.width}% - 2px), 6px)`},"data-label":C,children:C==="inside"?g.name:null}),C!=="inside"&&s.jsx("button",{type:"button",tabIndex:-1,"aria-hidden":"true",onClick:()=>o(g.name),className:"absolute top-1/2 -translate-y-1/2 truncate whitespace-nowrap text-left text-2xs font-medium text-foreground hover:underline",style:C==="after"?{left:`calc(${h.left+h.width}% + 6px)`,maxWidth:`calc(${100-h.left-h.width}% - 6px)`}:{right:`calc(${100-h.left}% + 6px)`,maxWidth:`calc(${h.left}% - 6px)`},title:g.name,"data-testid":"campaign-bar-label",children:g.name})]})]},g.name)}),e[3]=l,e[4]=n,e[5]=o,e[6]=t,e[7]=a,e[8]=u,e[9]=r,e[10]=p,e[11]=d,e[12]=x,e[13]=j}else u=e[8],r=e[9],p=e[10],d=e[11],x=e[12],j=e[13];let v;e[41]!==u||e[42]!==r||e[43]!==p?(v=s.jsxs("div",{className:u,children:[r,p]}),e[41]=u,e[42]=r,e[43]=p,e[44]=v):v=e[44];let S;return e[45]!==d||e[46]!==x||e[47]!==j||e[48]!==v?(S=s.jsxs("div",{className:d,"data-testid":x,children:[j,v]}),e[45]=d,e[46]=x,e[47]=j,e[48]=v,e[49]=S):S=e[49],S}function Et(i){return s.jsxs("div",{className:"border-r px-2 py-1.5 text-xs text-muted-foreground last:border-r-0",children:[lt[i.getMonth()]?.slice(0,3)," ",i.getFullYear()]},i.getTime())}function Ot(i){return ue(i,ae)}function Mt(i){return ue(i,-ae)}function $t(i){return i.bar!==null}function Vt(i){return i.window}function At(i){const e=Q.c(89),{row:t,decofile:n,meta:o,uses:a,pending:c,holdsCopy:l,onBack:m,onOpenUse:u,onSave:r}=i,p=le(),d=n[de];let x;e[0]!==t.window.start?(x=je(t.window.start),e[0]=t.window.start,e[1]=x):x=e[1];let j;e[2]!==t.window.end?(j=je(t.window.end),e[2]=t.window.end,e[3]=j):j=e[3];let v;e[4]!==d||e[5]!==x||e[6]!==j?(v={block:d,start:x,end:j},e[4]=d,e[5]=x,e[6]=j,e[7]=v):v=e[7];const S=v,[R,X]=re.useState(S),[b,q]=re.useState(S.start),[f,M]=re.useState(S.end);l&&b===R.start&&f===R.end&&Ct(S.block,R.block)&&(X(S),q(S.start),M(S.end));const T=Ue("campaigns",i);let $;e[8]!==f||e[9]!==b?($=it(b,f),e[8]=f,e[9]=b,e[10]=$):$=e[10];const N=$,P=l?R:S,F="window"in N&&(b!==P.start||f!==P.end);let V;e[11]!==n||e[12]!==o||e[13]!==t.name||e[14]!==a?(V=He("campaigns",t.name,a,n,o),e[11]=n,e[12]=o,e[13]=t.name,e[14]=a,e[15]=V):V=e[15];const{useRows:D,wholeRows:_}=V;let A;e[16]!==n||e[17]!==f||e[18]!==l||e[19]!==r||e[20]!==t.name||e[21]!==R||e[22]!==b||e[23]!==N?(A=()=>{if(!("window"in N))return;const te=Je(n,"campaigns",t.name,N.window);if(!te||!l){r(te);return}r({...te,basis:{[de]:R.block}}).then(oe=>{oe&&X({block:te.writes[de],start:b,end:f})})},e[16]=n,e[17]=f,e[18]=l,e[19]=r,e[20]=t.name,e[21]=R,e[22]=b,e[23]=N,e[24]=A):A=e[24];const I=A;let B;e[25]!==p?(B=p("sandbox.dateCampaigns.allCampaigns"),e[25]=p,e[26]=B):B=e[26];let k;e[27]!==m||e[28]!==B?(k={label:B,onClick:m},e[27]=m,e[28]=B,e[29]=k):k=e[29];let E;e[30]!==i?(E=s.jsx(Qe,{kind:"campaigns",detail:i}),e[30]=i,e[31]=E):E=e[31];let y;e[32]!==k||e[33]!==E?(y=s.jsx(ve,{back:k,actions:E}),e[32]=k,e[33]=E,e[34]=y):y=e[34];let g;e[35]===Symbol.for("react.memo_cache_sentinel")?(g=fe("flex max-w-2xl flex-col gap-6",Ce),e[35]=g):g=e[35];let h;e[36]!==t.status?(h=s.jsx(_e,{status:t.status}),e[36]=t.status,e[37]=h):h=e[37];let C;e[38]!==t.entryState||e[39]!==t.name||e[40]!==h?(C=s.jsx(Ge,{kind:"campaigns",name:t.name,status:h,entryState:t.entryState}),e[38]=t.entryState,e[39]=t.name,e[40]=h,e[41]=C):C=e[41];let W;e[42]!==f||e[43]!==b?(W=s.jsx(nt,{idPrefix:"campaign",className:"max-w-md",start:b,end:f,onStartChange:q,onEndChange:M}),e[42]=f,e[43]=b,e[44]=W):W=e[44];let L;e[45]!==p||e[46]!==N?(L="problem"in N&&s.jsx("p",{className:"text-xs text-destructive",children:p("sectionsEditor.namedRules.endBeforeStart")}),e[45]=p,e[46]=N,e[47]=L):L=e[47];let se;e[48]!==t.status||e[49]!==p?(se=t.status==="unreadable"&&s.jsx("p",{className:"text-xs text-muted-foreground",children:p("sandbox.dateCampaigns.unreadableHint")}),e[48]=t.status,e[49]=p,e[50]=se):se=e[50];let ie;e[51]!==p?(ie=p("sectionsEditor.namedRules.windowHint"),e[51]=p,e[52]=ie):ie=e[52];let U;e[53]!==ie?(U=s.jsx("p",{className:"text-xs text-muted-foreground",children:ie}),e[53]=ie,e[54]=U):U=e[54];let H;e[55]!==t.publishedWindow||e[56]!==p?(H=t.publishedWindow&&s.jsx("p",{className:"text-xs text-muted-foreground",children:p("sandbox.dateCampaigns.publishedWindow",{window:be(t.publishedWindow,p("sectionsEditor.namedRulePicker.alwaysRunning"))})}),e[55]=t.publishedWindow,e[56]=p,e[57]=H):H=e[57];const ne=c||!F;let w;e[58]!==p?(w=p("sandbox.dateCampaigns.saveDates"),e[58]=p,e[59]=w):w=e[59];let O;e[60]!==I||e[61]!==ne||e[62]!==w?(O=s.jsx("div",{children:s.jsx(me,{size:"sm",disabled:ne,onClick:I,children:w})}),e[60]=I,e[61]=ne,e[62]=w,e[63]=O):O=e[63];let z;e[64]!==W||e[65]!==L||e[66]!==se||e[67]!==U||e[68]!==H||e[69]!==O?(z=s.jsxs("section",{className:"flex flex-col gap-2",children:[W,L,se,U,H,O]}),e[64]=W,e[65]=L,e[66]=se,e[67]=U,e[68]=H,e[69]=O,e[70]=z):z=e[70];let G;e[71]!==c||e[72]!==T||e[73]!==_.length?(G=s.jsx(Ye,{kind:"campaigns",id:"campaign-name",rename:T,pending:c,wholeUses:_.length}),e[71]=c,e[72]=T,e[73]=_.length,e[74]=G):G=e[74];const Z=!a,ee=!!a?.published;let Y;e[75]!==u||e[76]!==Z||e[77]!==ee||e[78]!==D||e[79]!==_?(Y=s.jsx(Xe,{kind:"campaigns",rows:D,wholeRows:_,loading:Z,marked:ee,onOpen:u}),e[75]=u,e[76]=Z,e[77]=ee,e[78]=D,e[79]=_,e[80]=Y):Y=e[80];let K;e[81]!==C||e[82]!==z||e[83]!==G||e[84]!==Y?(K=s.jsx(ye,{className:"min-h-0 flex-1",children:s.jsxs("div",{className:g,children:[C,z,G,Y]})}),e[81]=C,e[82]=z,e[83]=G,e[84]=Y,e[85]=K):K=e[85];let J;return e[86]!==y||e[87]!==K?(J=s.jsxs("div",{className:"flex h-full w-full flex-col",children:[y,K]}),e[86]=y,e[87]=K,e[88]=J):J=e[88],J}function ke(){const i=Q.c(1);let e;return i[0]===Symbol.for("react.memo_cache_sentinel")?(e=s.jsxs("div",{className:"flex flex-col gap-3 p-4","data-testid":"calendar-skeleton","aria-busy":"true",children:[s.jsx(we,{className:"h-6 w-40"}),s.jsx(we,{className:"h-40 w-full"})]}),i[0]=e):e=i[0],e}function Bt(i){const e=Q.c(22),{virtualMcpId:t}=i,n=le(),{openPanel:o}=ct();let a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=s.jsx(pe,{size:28,className:"text-muted-foreground"}),e[0]=a):a=e[0];let c;e[1]!==n?(c=n("sandbox.calendarView.noDraft.title"),e[1]=n,e[2]=c):c=e[2];let l;e[3]!==n?(l=n("sandbox.calendarView.noDraft.desc"),e[3]=n,e[4]=l):l=e[4];let m;e[5]!==n?(m=n("sandbox.calendarView.loadFailed"),e[5]=n,e[6]=m):m=e[6];let u;e[7]!==n?(u=n("sandbox.calendarView.loadFailedHint"),e[7]=n,e[8]=u):u=e[8];let r;e[9]!==c||e[10]!==l||e[11]!==m||e[12]!==u?(r={noDraftTitle:c,noDraftDesc:l,loadFailed:m,loadFailedHint:u},e[9]=c,e[10]=l,e[11]=m,e[12]=u,e[13]=r):r=e[13];let p;e[14]===Symbol.for("react.memo_cache_sentinel")?(p=s.jsx(ke,{}),e[14]=p):p=e[14];let d;e[15]!==o||e[16]!==t?(d=j=>{const{orgSlug:v,branch:S,decofile:R,meta:X}=j;return s.jsx("div",{className:"h-full w-full","data-testid":"calendar-view",children:s.jsx(kt,{orgSlug:v,virtualMcpId:t,branch:S,decofile:R,meta:X,initialView:"timeline",onOpenUse:b=>o("content",{search:q=>({...q,...Ze(b)})})})})},e[15]=o,e[16]=t,e[17]=d):d=e[17];let x;return e[18]!==r||e[19]!==d||e[20]!==t?(x=s.jsx(et,{virtualMcpId:t,icon:a,copy:r,skeleton:p,children:d}),e[18]=r,e[19]=d,e[20]=t,e[21]=x):x=e[21],x}function zt(){const i=Q.c(5),e=ft(),t=dt(e);if(pt(t)){let o;return i[0]!==e?(o=s.jsx(Bt,{virtualMcpId:e}),i[0]=e,i[1]=o):o=i[1],o}if(t==="loading"){let o;return i[2]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(ke,{}),i[2]=o):o=i[2],o}let n;return i[3]!==e?(n=s.jsx(ut,{virtualMcpId:e}),i[3]=e,i[4]=n):n=i[4],n}function wa(){const i=Q.c(1);let e;return i[0]===Symbol.for("react.memo_cache_sentinel")?(e=s.jsx(De.Content,{actions:s.jsx(Ie,{blocksOnly:!0}),children:s.jsx(zt,{})}),i[0]=e):e=i[0],e}export{wa as default};
@@ -1 +0,0 @@
1
- import{c,j as e,bA as b,u as g}from"./index-Cuw4uBth.js";import{C as j}from"./index-BoQ6UNxI.js";import{F as v,H as S}from"./file-share-button-D7t2lHex.js";import{u as k,b as y,e as _}from"./use-org-fs-Dczc29OI.js";import{S as w}from"./settings-tab-CdOisIW6.js";import{b as M}from"./thread-route-DIZgBacC.js";import"./use-mobile-99mfVsUI.js";import"./use-sidebar-collapsed-DxKpoCm3.js";import"./use-chat-layout-state-EYafKK4O.js";import"./use-panel-navigate-B12jZOsf.js";import"./use-project-scope-8q_Pr-Xb.js";import"./repository-binding-CXnxCF4M.js";import"./use-mcp-client-CfpsAKj4.js";import"./auth-BJe1aOgg.js";import"./thread-intent-CZ5_EO2w.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-B-BVtIbV.js";import"./task-board-DH9ssxkG.js";import"./schema-D5UoICKI.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-C1y4Hi5E.js";import"./AlertCircle-D9_evsvO.js";import"./Tool01-BJdrlQAn.js";import"./ArrowUp-Cth_eVmU.js";import"./ArrowLeft-B6qwUpLq.js";import"./LinkBroken01-gdfveCgK.js";import"./ShoppingBag01-BuVMkUkJ.js";import"./ZoomOut-rfozMzwP.js";import"./Building02-Wh9pimKL.js";import"./CheckCircle-DoJXwawU.js";import"./ChevronUp-7SZxJu8w.js";import"./ChevronSelectorVertical-CnRBP_5y.js";import"./UserSquare-D0z8lAkn.js";import"./Copy01-Bu20fOqK.js";import"./CreditCard01-Br0-9pHI.js";import"./DotsVertical-OSj5km5S.js";import"./Image01-CzYWCBEQ.js";import"./Globe04-D4srY_QI.js";import"./SwitchHorizontal01-D_E9YPjp.js";import"./Key01-C-bam-4X.js";import"./Link01-DXRUIbxg.js";import"./Minus-Czu3kpSA.js";import"./Monitor01-CruCSnyq.js";import"./Sun-Cg4UcsIP.js";import"./Play-RzA3Niav.js";import"./Plus-BA90GKs1.js";import"./SearchMd-DO1eOJvD.js";import"./Trash01-DcsYDVg8.js";import"./Upload01-CYUmJE5W.js";import"./Users01-Y9yFg_2K.js";import"./XClose-DIFkFXp0.js";import"./tooltip-Ci3ZwooP.js";import"./index-B-HoKvLm.js";import"./toolbar-icon-button-DZE2ESw9.js";import"./shell-layout-C2BJGx2g.js";import"./use-clock-tick-BUftA4XN.js";import"./command-D79ZH19X.js";import"./index-AaUC9WD6.js";import"./integration-icon-DkmY4VjA.js";import"./project-icon-DQNZWn_4.js";import"./new-project-dialog-M-WLwZ47.js";import"./label-GaS9ZdQZ.js";import"./repository-import-picker-DLsxOOxp.js";import"./use-navigate-to-agent-DaAFktW9.js";import"./repository-picker-Cq7JBkFe.js";import"./useInfiniteQuery-DFK0dHSs.js";import"./infiniteQueryObserver-Dy0j8RRj.js";import"./collection-search-DKSj36i2.js";import"./use-debounced-value-2_mLSVw4.js";import"./use-organization-settings-SIasU_tC.js";import"./required-auth-layout-CwX_2fTY.js";import"./autosend-BKwtMB6P.js";import"./use-org-sso-CTKiuB0A.js";import"./sheet-56HC7WRJ.js";import"./resizable-C7Is3s-0.js";import"./popover-DiqYPKHh.js";import"./index-D74iAt06.js";import"./extract-connection-data-Cx9ah1z5.js";import"./metadata-D72DunRR.js";import"./connection-CiqnzKwe.js";import"./url-slug-CLyOdzAm.js";import"./chat-context-C2Yxk7gW.js";import"./use-decopilot-events-CA56Gos8.js";import"./use-ai-providers-DOax94rO.js";import"./location-V0VwTJTt.js";import"./build-improve-prompt-doc-CxMWosB4.js";import"./empty-state-BGj88Oz3.js";import"./use-date-fns-locale-CrqyAQep.js";import"./mcp-oauth-BN2jrcE-.js";import"./mcp-oauth-DCesmV8O.js";import"./textarea-CDKBkceb.js";import"./use-connection-eHzowbKv.js";import"./use-debounced-autosave-BVxg8vxx.js";import"./add-connection-dialog-Dl0GCijo.js";import"./connection-card-CgbmOEtZ.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-hQxgme01.js";import"./form-DU60ZzuM.js";import"./select-B73KS7i3.js";import"./index-BdQq_4o_.js";import"./schema-D02aTPkl.js";import"./connection-form-helpers-ntCbPy2n.js";import"./authenticate-and-persist-oauth-BhtEjQrU.js";import"./collection-tabs-BVf232LH.js";import"./badge-Dne4Jx9I.js";import"./use-infinite-scroll-DfZZeab5.js";import"./useSuspenseInfiniteQuery-BBbMOBX0.js";import"./file-type-icon-DptKoj-q.js";import"./checkbox-5tVptIvn.js";import"./search-input-BqT8bImj.js";import"./use-mcp-auth-status-DZTVEUgz.js";import"./types-DhOLYbcW.js";import"./use-mcp-tools-De9LHWCI.js";import"./use-mcp-prompts-B6wGbsaO.js";import"./utils-CVEq3hMx.js";import"./switch-n_zXX4if.js";import"./scroll-area-CDUvVvSH.js";import"./experiments-tab-choice-C-Kj-SaP.js";import"./use-project-native-view-presence-BYkoNVb2.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Bg-fEAGm.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-BFrvBRmj.js";import"./sections-Bv_E_JwJ.js";import"./use-copy-ClerAXdJ.js";import"./virtual-mcp-DSjzxtZz.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-vfO2xRLb.js";import"./use-secrets-zkQum-du.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./app-preview-url-9Od4s8Sz.js";import"./serial-task-queue-CGOeQgpr.js";const x="home";function P(i){const t=c.c(5),{label:r}=i;let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p=e.jsx(b,{className:"aspect-video w-2/3 max-w-xl"}),t[0]=p):p=t[0];let o;t[1]!==r?(o=r&&e.jsx("p",{className:"text-xs text-muted-foreground",children:r}),t[1]=r,t[2]=o):o=t[2];let m;return t[3]!==o?(m=e.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-3 bg-background",children:[p,o]}),t[3]=o,t[4]=m):m=t[4],m}function D(i){const t=c.c(15),{path:r}=i;let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p={refetchIntervalWhenAbsent:2e3},t[0]=p):p=t[0];const o=k(x,r,p),m=y(x)(r);if(o.isPending||!o.data){const h=!o.isPending&&!o.data?"Waiting for the deck to sync…":void 0;let l;return t[1]!==h?(l=e.jsx(P,{label:h}),t[1]=h,t[2]=l):l=t[2],l}let s;t[3]!==o.data?(s=_(o.data),t[3]=o.data,t[4]=s):s=t[4];const f=o.data.shareMode??"private",u=o.data.effectivePublic??!1,d=window.location.origin+m;let a;t[5]!==r||t[6]!==f||t[7]!==u||t[8]!==d?(a=e.jsx(v,{volume:x,path:r,shareMode:f,effectivePublic:u,url:d}),t[5]=r,t[6]=f,t[7]=u,t[8]=d,t[9]=a):a=t[9];let n;return t[10]!==r||t[11]!==m||t[12]!==s||t[13]!==a?(n=e.jsx(S,{readUrl:m,marker:s,title:r,savePath:r,trailing:a}),t[10]=r,t[11]=m,t[12]=s,t[13]=a,t[14]=n):n=t[14],n}function A(){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(A,{})}),i[0]=t):t=i[0],t}export{rr as default};