decocms 4.524.2 → 4.524.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/dist/client/assets/{ActiveShapeUtils-C-rHC-K0.js → ActiveShapeUtils-CZUL4aQf.js} +1 -1
  2. package/dist/client/assets/{AlertCircle-CIClX1OX.js → AlertCircle-CHPvy_VM.js} +1 -1
  3. package/dist/client/assets/{AreaChart-CFefRI3l.js → AreaChart-DXZAxruT.js} +1 -1
  4. package/dist/client/assets/{ArrowLeft-hUis4zpK.js → ArrowLeft-D_5CBumM.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-DvNrLRdk.js → ArrowUp-DhHGL7HY.js} +1 -1
  6. package/dist/client/assets/{BarChart-BD4Z4ti7.js → BarChart-D1RHjiDU.js} +1 -1
  7. package/dist/client/assets/{Building02-DyaG8VRs.js → Building02-Cs-fRF4C.js} +1 -1
  8. package/dist/client/assets/{CartesianChart-Cm6m5mMn.js → CartesianChart-B6XqwP69.js} +1 -1
  9. package/dist/client/assets/{CategoricalChart-B2xwR0Vg.js → CategoricalChart-CiyWbCkx.js} +1 -1
  10. package/dist/client/assets/{CheckCircle-IjQMURt4.js → CheckCircle-DFdmK-T2.js} +1 -1
  11. package/dist/client/assets/{ChevronSelectorVertical-DSrF7Kt-.js → ChevronSelectorVertical-B7yaofOD.js} +1 -1
  12. package/dist/client/assets/{ChevronUp-DZpXGp6s.js → ChevronUp-PedQ2gd6.js} +1 -1
  13. package/dist/client/assets/{Copy01-DelcC4NE.js → Copy01-B6cJ_ygs.js} +1 -1
  14. package/dist/client/assets/{CreditCard01-cYImG8Bl.js → CreditCard01-bH_MgXhH.js} +1 -1
  15. package/dist/client/assets/{DotsVertical-Cd1ayiT8.js → DotsVertical-B50qkKfK.js} +1 -1
  16. package/dist/client/assets/{ErrorBarContext-3Qb2LA4z.js → ErrorBarContext-D3MOF1QH.js} +1 -1
  17. package/dist/client/assets/{Globe04-C3AUDQA6.js → Globe04-BvSQLcQH.js} +1 -1
  18. package/dist/client/assets/{Image01-BmkGkBEJ.js → Image01-D6z5fxVv.js} +1 -1
  19. package/dist/client/assets/{Key01-BJu0utQ9.js → Key01-DIVY2Gpo.js} +1 -1
  20. package/dist/client/assets/{Link01-CpEeBnOB.js → Link01-D806UI0V.js} +1 -1
  21. package/dist/client/assets/{LinkBroken01-BbJzP52K.js → LinkBroken01-Be879sLY.js} +1 -1
  22. package/dist/client/assets/{Minus-Beni9ibl.js → Minus-DVOE0qZc.js} +1 -1
  23. package/dist/client/assets/{Monitor01-DIpgHRZ3.js → Monitor01-CP0zz7rW.js} +1 -1
  24. package/dist/client/assets/{Play-CeJs-Z9F.js → Play-DG-gbp_U.js} +1 -1
  25. package/dist/client/assets/{Plus-Dp5dZDoY.js → Plus-feGO5xhL.js} +1 -1
  26. package/dist/client/assets/{ReferenceLine-BlgL76sy.js → ReferenceLine-oNnV1mWS.js} +1 -1
  27. package/dist/client/assets/{SearchMd-DkOimU4h.js → SearchMd-OqihyBBE.js} +1 -1
  28. package/dist/client/assets/{Sector-DYInMAbx.js → Sector-BH34m5G1.js} +1 -1
  29. package/dist/client/assets/{ShoppingBag01-CrAecsFE.js → ShoppingBag01-ZgB-qLs9.js} +1 -1
  30. package/dist/client/assets/{Sun-Dm3m8VPj.js → Sun-DQ0xzUJx.js} +1 -1
  31. package/dist/client/assets/{SwitchHorizontal01-BvXNAenZ.js → SwitchHorizontal01-Dsf5zpNu.js} +1 -1
  32. package/dist/client/assets/{Tool01-CyfGI7T6.js → Tool01-PlDxztWD.js} +1 -1
  33. package/dist/client/assets/{Trash01-BneWuuYf.js → Trash01-BqnutNRJ.js} +1 -1
  34. package/dist/client/assets/{Upload01-CNkWpiz7.js → Upload01-CyyevXMg.js} +1 -1
  35. package/dist/client/assets/{UserSquare-BWlOHIw0.js → UserSquare-Csbu2VpZ.js} +1 -1
  36. package/dist/client/assets/{Users01-ugdEQXdG.js → Users01-BSztUOd5.js} +1 -1
  37. package/dist/client/assets/{XClose-BHn8yO7p.js → XClose-CGLyFs-P.js} +1 -1
  38. package/dist/client/assets/{ZoomOut-Csm0orCM.js → ZoomOut-DTBYck8o.js} +1 -1
  39. package/dist/client/assets/{access-gate-AGX410gm.js → access-gate-CQo9WEtv.js} +1 -1
  40. package/dist/client/assets/{add-connection-dialog-7qj2kjMr.js → add-connection-dialog-BXhPQM8W.js} +1 -1
  41. package/dist/client/assets/agent-analytics-C4isBTY7.js +1 -0
  42. package/dist/client/assets/agent-app-BakS5Mpg.js +1 -0
  43. package/dist/client/assets/{agent-assets-r6VBDeE0.js → agent-assets-DPXKGmqE.js} +1 -1
  44. package/dist/client/assets/{agent-automation-DM7_Ee5Y.js → agent-automation-68EhX00q.js} +1 -1
  45. package/dist/client/assets/{agent-automations-BUj7_vKE.js → agent-automations-XvbfNN1P.js} +1 -1
  46. package/dist/client/assets/agent-calendar-rlwx6fiZ.js +1 -0
  47. package/dist/client/assets/{agent-connect-sources-IL9oYYUF.js → agent-connect-sources-D3zK6Sae.js} +1 -1
  48. package/dist/client/assets/agent-deck-uq6T-H5n.js +1 -0
  49. package/dist/client/assets/{agent-e2e-CAHEpLI3.js → agent-e2e-DQcmFy3H.js} +1 -1
  50. package/dist/client/assets/agent-experiments-D3cQ-WP1.js +1 -0
  51. package/dist/client/assets/{agent-file-CtLzmiB2.js → agent-file-JtT0MyWr.js} +1 -1
  52. package/dist/client/assets/{agent-hosting-Bu4SIylb.js → agent-hosting-BxPrxIfg.js} +1 -1
  53. package/dist/client/assets/{agent-icon-BXl9rcx1.js → agent-icon-CTGtlw1z.js} +1 -1
  54. package/dist/client/assets/agent-library-C3l8PEn-.js +1 -0
  55. package/dist/client/assets/agent-library-file-CjRMeR9i.js +1 -0
  56. package/dist/client/assets/agent-monitor-BfPm0PfR.js +1 -0
  57. package/dist/client/assets/{agent-overview-DT8rD_2N.js → agent-overview-B9lC95oC.js} +1 -1
  58. package/dist/client/assets/{agent-releases-lt59FkfL.js → agent-releases-OHw-HILT.js} +1 -1
  59. package/dist/client/assets/agent-settings-C3PrzQdK.js +1 -0
  60. package/dist/client/assets/{agent-site-editor-DWKoTev5.js → agent-site-editor-DL4MgFcw.js} +1 -1
  61. package/dist/client/assets/agent-site-editor-code-CrwcPx-x.js +2 -0
  62. package/dist/client/assets/agent-site-editor-content-DOS83K5A.js +1 -0
  63. package/dist/client/assets/agent-site-editor-preview-Cuy-72sw.js +1 -0
  64. package/dist/client/assets/agent-view-DIoRN3S4.js +1 -0
  65. package/dist/client/assets/{agent-view-guard-C0-5YLfj.js → agent-view-guard-BrroWBJx.js} +1 -1
  66. package/dist/client/assets/{agents-list-BvjBZO8s.js → agents-list-DIpYtUlJ.js} +1 -1
  67. package/dist/client/assets/{ai-providers-COtiWMIM.js → ai-providers-DJSUQnD1.js} +1 -1
  68. package/dist/client/assets/{alert-BxwQ9GWi.js → alert-GbAkes7m.js} +1 -1
  69. package/dist/client/assets/{analytics-sections-CC5Y9IMF.js → analytics-sections-Bb2X2x1n.js} +1 -1
  70. package/dist/client/assets/{analytics-tab-BHmGa-59.js → analytics-tab-BmRbRV7j.js} +1 -1
  71. package/dist/client/assets/{api-keys-MQsmca-c.js → api-keys-CUAWVknr.js} +1 -1
  72. package/dist/client/assets/api-keys-CYNApwkv.js +1 -0
  73. package/dist/client/assets/{app-editor-C-CTy5jL.js → app-editor-CyjHGv_R.js} +1 -1
  74. package/dist/client/assets/{asset-utils-CDMjNYFJ.js → asset-utils-cXz86Lc9.js} +1 -1
  75. package/dist/client/assets/{auth-BkqoCGcx.js → auth-Dfomi5JO.js} +1 -1
  76. package/dist/client/assets/{auth-catchall-D_N41KBC.js → auth-catchall-CQPN8xxO.js} +1 -1
  77. package/dist/client/assets/{auth-entry-BV7CL8vh.js → auth-entry-CopJeOJe.js} +1 -1
  78. package/dist/client/assets/{auth-split-layout-DzZGmD-Q.js → auth-split-layout-DlqDAzsj.js} +1 -1
  79. package/dist/client/assets/{authenticate-and-persist-oauth-BD9brsY_.js → authenticate-and-persist-oauth-CIjqyOtu.js} +1 -1
  80. package/dist/client/assets/{automation-list-row-BjMjCaBD.js → automation-list-row-DjtEQ2qE.js} +1 -1
  81. package/dist/client/assets/{automation-runs-DCUB5KLk.js → automation-runs-Fh82uxKP.js} +1 -1
  82. package/dist/client/assets/{automations-1qHtjGaW.js → automations-v0vsa1w4.js} +1 -1
  83. package/dist/client/assets/{autosend-1U_b-i1h.js → autosend-1kVbs2RQ.js} +1 -1
  84. package/dist/client/assets/{badge-DESNookz.js → badge-Cd6N93gT.js} +1 -1
  85. package/dist/client/assets/{block-document-CcGRU5CL.js → block-document-Eqc7jC1E.js} +1 -1
  86. package/dist/client/assets/blocks-preview-workspace-context-DmNovEJ2.js +1 -0
  87. package/dist/client/assets/{blocks-tab-states-Bji5rJXk.js → blocks-tab-states-EZ53-FeU.js} +1 -1
  88. package/dist/client/assets/{blog-schema-BNIKCmEY.js → blog-schema-BIlyKinw.js} +1 -1
  89. package/dist/client/assets/{buckets-DnnlOaFn.js → buckets-DeThgb1z.js} +1 -1
  90. package/dist/client/assets/{build-improve-prompt-doc-CiV-KlOc.js → build-improve-prompt-doc-BhOi567C.js} +1 -1
  91. package/dist/client/assets/{calendar-sUXRafM_.js → calendar-CZnHQIdE.js} +1 -1
  92. package/dist/client/assets/{campaigns-view-3-zGJglb.js → campaigns-view-keHuDNLa.js} +1 -1
  93. package/dist/client/assets/{capability-load-error--G3e97qI.js → capability-load-error-BoUVRT1s.js} +1 -1
  94. package/dist/client/assets/{category-editor-CS1KKmTs.js → category-editor-CRQwImqd.js} +1 -1
  95. package/dist/client/assets/{cdn-tab-CrOE0j6D.js → cdn-tab-DGJOOmwS.js} +1 -1
  96. package/dist/client/assets/{chart-CaDJ4F39.js → chart-DIxDpRCA.js} +1 -1
  97. package/dist/client/assets/chat-context-2letHrEJ.js +39 -0
  98. package/dist/client/assets/{chat-draft-XY_NNpgA.js → chat-draft-BamZUeXG.js} +1 -1
  99. package/dist/client/assets/{checkbox-D-LzvMyz.js → checkbox-vkygLbK1.js} +1 -1
  100. package/dist/client/assets/{choose-editor-CRTIidNs.js → choose-editor-CvBlgOf7.js} +1 -1
  101. package/dist/client/assets/{cli-auth-success-M-vNesnJ.js → cli-auth-success-DbYRVqF9.js} +1 -1
  102. package/dist/client/assets/{client-icons-DJfzDzX4.js → client-icons-Byj2LmW_.js} +1 -1
  103. package/dist/client/assets/cms-settings-editor-2-st_NGk.js +1 -0
  104. package/dist/client/assets/{collapsible-B9h9LvCC.js → collapsible-DsyQMORE.js} +1 -1
  105. package/dist/client/assets/{collection-detail-DB5YnYwu.js → collection-detail-DWStyXoZ.js} +1 -1
  106. package/dist/client/assets/{collection-display-button-BZ7DzDHo.js → collection-display-button-DxqDuoDs.js} +1 -1
  107. package/dist/client/assets/{collection-search-D_HANk-F.js → collection-search-BT_p6pKF.js} +1 -1
  108. package/dist/client/assets/{collection-table-wrapper-BH6lYVpk.js → collection-table-wrapper-Bu9UKC3v.js} +1 -1
  109. package/dist/client/assets/{collection-tabs-H7yEtuRH.js → collection-tabs-D6nWmqmK.js} +1 -1
  110. package/dist/client/assets/{column-rules-CNwPb3ah.js → column-rules-1_e0Bdla.js} +1 -1
  111. package/dist/client/assets/{combobox-BfNsB6Ea.js → combobox-C05HI-BC.js} +1 -1
  112. package/dist/client/assets/{command-DoejxN8Q.js → command-CPzIRDl7.js} +1 -1
  113. package/dist/client/assets/{companion-mcps-section-DQptjkfL.js → companion-mcps-section-8bJuflHh.js} +1 -1
  114. package/dist/client/assets/{config-CjsHeG1l.js → config-g4_iXJef.js} +1 -1
  115. package/dist/client/assets/{connect-layout-C8XNo1vh.js → connect-layout-B0kvJrgY.js} +1 -1
  116. package/dist/client/assets/{connect-source-dialog-CKPrWV3W.js → connect-source-dialog-Drua8oaC.js} +1 -1
  117. package/dist/client/assets/{connect-KGH4OYue.js → connect-uOeiI1CS.js} +1 -1
  118. package/dist/client/assets/{connection-DgmraTnv.js → connection-BHsOzStk.js} +1 -1
  119. package/dist/client/assets/{connection-card-nzYl3iaE.js → connection-card-CYaVyCqL.js} +1 -1
  120. package/dist/client/assets/{connection-detail-thguseWo.js → connection-detail-C6xJbNuX.js} +1 -1
  121. package/dist/client/assets/{connection-form-helpers-DQAPN_By.js → connection-form-helpers-D-t8mb0f.js} +1 -1
  122. package/dist/client/assets/{connections-DGmAEet-.js → connections-D-CMEpMd.js} +1 -1
  123. package/dist/client/assets/{content-tab-BskMZIA-.js → content-tab-BplT8Wwk.js} +3 -3
  124. package/dist/client/assets/{context-BTZ4zLZ6.js → context-TIPHj43k.js} +1 -1
  125. package/dist/client/assets/{context-menu-DXOWR6Jg.js → context-menu-7c-Y-PHB.js} +1 -1
  126. package/dist/client/assets/{context-shell-C9dd2zeB.js → context-shell-n8IEtxwr.js} +3 -3
  127. package/dist/client/assets/{core.esm-kr0nDMAf.js → core.esm-Bp5Q1Stg.js} +1 -1
  128. package/dist/client/assets/{create-organization-dialog-VXkZbmzL.js → create-organization-dialog-mPrO9oSa.js} +1 -1
  129. package/dist/client/assets/{daily-pulse-WpcSkDI1.js → daily-pulse-C7I4Uxdj.js} +1 -1
  130. package/dist/client/assets/{discover-BwWAcy7q.js → discover-7t1pJX8W.js} +1 -1
  131. package/dist/client/assets/{domain-settings-B3KwV4Bi.js → domain-settings-CXb5s0he.js} +1 -1
  132. package/dist/client/assets/{drawer-BxmRq7z0.js → drawer-CtTfZzW7.js} +1 -1
  133. package/dist/client/assets/{editor-vxR6fGAu.js → editor-BDmCsl05.js} +1 -1
  134. package/dist/client/assets/{editor-classes-C1mRh06j.js → editor-classes-BJAtiMt8.js} +1 -1
  135. package/dist/client/assets/{empty-state-C0q6FDCT.js → empty-state-BFtVVtPz.js} +1 -1
  136. package/dist/client/assets/{empty-state-BXpVXa8p.js → empty-state-BpneGtoe.js} +1 -1
  137. package/dist/client/assets/{experiments-tab-vC9IxL9H.js → experiments-tab-CLMcteix.js} +1 -1
  138. package/dist/client/assets/{experiments-tab-choice-CJW0rlLk.js → experiments-tab-choice-vFGVi3bn.js} +1 -1
  139. package/dist/client/assets/{extract-connection-data-DyihSSH6.js → extract-connection-data-CF7y2wEt.js} +1 -1
  140. package/dist/client/assets/{feature-gate-B2DL7P_r.js → feature-gate-CM-Nk9xN.js} +1 -1
  141. package/dist/client/assets/{feature-paywall-CaUW3vBu.js → feature-paywall-CjqBZ6L8.js} +1 -1
  142. package/dist/client/assets/{file-explorer-B6YWvV4f.js → file-explorer-BboVEb8_.js} +1 -1
  143. package/dist/client/assets/{file-preview-p8MVe0Co.js → file-preview-Bvo7zdtc.js} +1 -1
  144. package/dist/client/assets/{file-share-button-BwVAEVZB.js → file-share-button-CXYkYNE_.js} +1 -1
  145. package/dist/client/assets/{file-type-icon-T5-JgFJO.js → file-type-icon-CjiJpbk5.js} +1 -1
  146. package/dist/client/assets/{folder-icon-U3eZ3MHL.js → folder-icon-BZUD34gC.js} +1 -1
  147. package/dist/client/assets/{form-BKxpLzV1.js → form-DrzlJwQH.js} +1 -1
  148. package/dist/client/assets/{general-twaLFZ_x.js → general-Cd6mSkL_.js} +1 -1
  149. package/dist/client/assets/{held-block-view-DF-dsPP4.js → held-block-view-R3GhxO1l.js} +3 -3
  150. package/dist/client/assets/{home-B70oGoSa.js → home-CrEXzaHC.js} +1 -1
  151. package/dist/client/assets/{icon-button-BpGFmmxF.js → icon-button-j3Ikexya.js} +1 -1
  152. package/dist/client/assets/{index-Y7xr7TpK.js → index-6M_m-_Us.js} +1 -1
  153. package/dist/client/assets/{index-B54Dwq_E.js → index-B7a1uePd.js} +1 -1
  154. package/dist/client/assets/{index-BGCeOWuH.js → index-BJ9m9LNK.js} +5 -5
  155. package/dist/client/assets/{index-C5dWtjQZ.js → index-BZXHvOuQ.js} +1 -1
  156. package/dist/client/assets/{index-FG3t9V84.js → index-BhEe0I5z.js} +1 -1
  157. package/dist/client/assets/{index-CbIYCvQg.js → index-BjON6Ore.js} +1 -1
  158. package/dist/client/assets/{index-BHWlfC8b.js → index-CPP16Pqo.js} +1 -1
  159. package/dist/client/assets/{index-CSsLL5lB.js → index-Cs2qsEhb.js} +1 -1
  160. package/dist/client/assets/{index-jBUTr_mZ.js → index-DEhrG7UG.js} +1 -1
  161. package/dist/client/assets/{index-DEhotlUt.js → index-DO1wPTie.js} +1 -1
  162. package/dist/client/assets/{index-vWFZdxRo.js → index-DT3sLrgG.js} +1 -1
  163. package/dist/client/assets/{index-B5KgRDmR.js → index-Da5shA_7.js} +1 -1
  164. package/dist/client/assets/{index-C_H0V1sq.js → index-Dj2ac1Ct.js} +1 -1
  165. package/dist/client/assets/index-DyS4s94t.js +1 -0
  166. package/dist/client/assets/{index-C91ph34T.js → index-Zaz397OF.js} +1 -1
  167. package/dist/client/assets/{index-redirect-BrPjqRgi.js → index-redirect-Ch_11yeO.js} +1 -1
  168. package/dist/client/assets/{infiniteQueryObserver-DdJGfIBw.js → infiniteQueryObserver-CM3ITLPo.js} +1 -1
  169. package/dist/client/assets/{infra-billing-DA3iH8RT.js → infra-billing-D_W3RIFV.js} +1 -1
  170. package/dist/client/assets/input-DTDcy6hY.js +17 -0
  171. package/dist/client/assets/{input-DdaB0aDZ.js → input-DipMvobq.js} +1 -1
  172. package/dist/client/assets/{integration-icon-IfDXGweg.js → integration-icon-gBiw8y2C.js} +1 -1
  173. package/dist/client/assets/{jira-icon-Btvsno6j.js → jira-icon-Cus3NRDL.js} +1 -1
  174. package/dist/client/assets/{label-_maV4eWQ.js → label-BWO7BDzN.js} +1 -1
  175. package/dist/client/assets/{layout-BnRLK8Je.js → layout-C4eU6U_z.js} +1 -1
  176. package/dist/client/assets/{legacy-agents-deep-EQC0E9us.js → legacy-agents-deep-CDxdVAmP.js} +1 -1
  177. package/dist/client/assets/{legacy-main-redirect-C8Z33lV9.js → legacy-main-redirect-BTqRcXg6.js} +1 -1
  178. package/dist/client/assets/library-CRTbwohf.js +1 -0
  179. package/dist/client/assets/{login-CRL4Hxp0.js → login-UOHS7fQN.js} +1 -1
  180. package/dist/client/assets/{markdown-Pxz-NCAq.js → markdown-BG06zpZJ.js} +1 -1
  181. package/dist/client/assets/{mcp-app-renderer-C-WjAbV3.js → mcp-app-renderer-CxONPSoj.js} +1 -1
  182. package/dist/client/assets/{mcp-oauth-UPAY9qQh.js → mcp-oauth-C_vXn_zS.js} +1 -1
  183. package/dist/client/assets/{mcp-oauth-ZXLBTZQF.js → mcp-oauth-hbfUsWSk.js} +1 -1
  184. package/dist/client/assets/{members-wnvPkZUo.js → members-DiPd0w69.js} +1 -1
  185. package/dist/client/assets/{memory-5e8aSOvx.js → memory-D7_gYCf3.js} +1 -1
  186. package/dist/client/assets/{mini-report-page-BJU2AtSk.js → mini-report-page-DudoCNBc.js} +1 -1
  187. package/dist/client/assets/{mock-board-KL7JXnQ3.js → mock-board-COFBA38P.js} +3 -3
  188. package/dist/client/assets/{monaco-editor-CEz6AH84.js → monaco-editor-Bp87HTy0.js} +1 -1
  189. package/dist/client/assets/{monitoring-CSgf9qta.js → monitoring-KjkBz5Hy.js} +1 -1
  190. package/dist/client/assets/{monitoring-stats-row-CQA6lBFw.js → monitoring-stats-row-DZiWF0MT.js} +1 -1
  191. package/dist/client/assets/{multi-select-BRkampvt.js → multi-select-ClUvymCl.js} +1 -1
  192. package/dist/client/assets/{mustache-D-9UMI1S.js → mustache-SEzsgR-s.js} +1 -1
  193. package/dist/client/assets/{named-rule-uses-5Sl1aIdP.js → named-rule-uses-DBpP8kZW.js} +1 -1
  194. package/dist/client/assets/{named-rule-view-ChwtdSTO.js → named-rule-view-CIxMNPIR.js} +1 -1
  195. package/dist/client/assets/{new-project-dialog-BZU_MI3Q.js → new-project-dialog-BIxGYry7.js} +1 -1
  196. package/dist/client/assets/{oauth-callback-CIbrOy6h.js → oauth-callback-CgnzMW_h.js} +1 -1
  197. package/dist/client/assets/{oauth-callback-ai-provider-DEFfXzWj.js → oauth-callback-ai-provider-CrNuoNuA.js} +1 -1
  198. package/dist/client/assets/{onboarding-BB5U3n3W.js → onboarding-CPcIJ7Kl.js} +1 -1
  199. package/dist/client/assets/{openai-conversation-CeRUtzJI.js → openai-conversation-BVVfXB0S.js} +1 -1
  200. package/dist/client/assets/{optimistic-project-sidebar-views-BpMb4HEN.js → optimistic-project-sidebar-views-CGrVGbzf.js} +1 -1
  201. package/dist/client/assets/{order-monitor-day-DUguCaIU.js → order-monitor-day-_COSpI9X.js} +1 -1
  202. package/dist/client/assets/{organization-choice-HyxmQkdd.js → organization-choice-DM-i-ste.js} +1 -1
  203. package/dist/client/assets/{orgs-C96LReuI.js → orgs-DBGdo2ep.js} +1 -1
  204. package/dist/client/assets/{page-seo-form-Dx0hMHSf.js → page-seo-form-B-bTZXwI.js} +1 -1
  205. package/dist/client/assets/{pair-DVCmCnBf.js → pair-CeWIXyL1.js} +1 -1
  206. package/dist/client/assets/{parse-sections-BHOqhf01.js → parse-sections-CzJo2WgK.js} +1 -1
  207. package/dist/client/assets/{plan-D4Ztu-Mv.js → plan-6sf6fzbJ.js} +1 -1
  208. package/dist/client/assets/{plan-ladder-BT3Oz8Ev.js → plan-ladder-Co29049V.js} +1 -1
  209. package/dist/client/assets/{popover-SHWbH4i8.js → popover-C5Dt3qOY.js} +1 -1
  210. package/dist/client/assets/{post-calendar-WzBoQET7.js → post-calendar-DOKKScLr.js} +1 -1
  211. package/dist/client/assets/{post-editor-CtDaen5o.js → post-editor-L6XkKTbk.js} +1 -1
  212. package/dist/client/assets/{preview-content-BhIMVcYB.js → preview-content-CY8QtGeB.js} +1 -1
  213. package/dist/client/assets/{preview-dialog-DoeqGaQU.js → preview-dialog-SFPfuPhe.js} +1 -1
  214. package/dist/client/assets/{preview-panel-DMNxFjEG.js → preview-panel-DG1XweCF.js} +1 -1
  215. package/dist/client/assets/{preview-tab-C2Feq6DP.js → preview-tab-CppK1K1V.js} +3 -3
  216. package/dist/client/assets/{product-picker-dialog-BF4qIVtr.js → product-picker-dialog-B-qJRXdq.js} +1 -1
  217. package/dist/client/assets/{profile-CA9XT1yH.js → profile-CogKW0ml.js} +1 -1
  218. package/dist/client/assets/{project-app-view-DnVvuNnI.js → project-app-view-Bg0IXTwt.js} +1 -1
  219. package/dist/client/assets/{project-apps-BfDjxodR.js → project-apps-BWyBTcjU.js} +1 -1
  220. package/dist/client/assets/{project-feed-q9sZKOfh.js → project-feed-BbnYaqgF.js} +1 -1
  221. package/dist/client/assets/{project-icon-CjQuZIIb.js → project-icon-OmAeiXOI.js} +1 -1
  222. package/dist/client/assets/project-reports-C4fNYK5h.js +1 -0
  223. package/dist/client/assets/project-tasks-CiUIlBvj.js +1 -0
  224. package/dist/client/assets/{projects-DvPJEsmw.js → projects-ScLrP0Sq.js} +1 -1
  225. package/dist/client/assets/{projects-empty-state-CEDwkoTb.js → projects-empty-state-DySkSTbO.js} +1 -1
  226. package/dist/client/assets/{prompts-B3mSxUa6.js → prompts-fqxplS8t.js} +1 -1
  227. package/dist/client/assets/record-editor-Cd5kCJv3.js +1 -0
  228. package/dist/client/assets/{redirect-editor-DS-wqNcI.js → redirect-editor-CiqrxPXo.js} +1 -1
  229. package/dist/client/assets/{releases-api-BmEWQbgz.js → releases-api-CughGviB.js} +1 -1
  230. package/dist/client/assets/reports-D4nL6cfo.js +1 -0
  231. package/dist/client/assets/{reports-BrWasOQ1.js → reports-DoXSUp0p.js} +1 -1
  232. package/dist/client/assets/{reports-onboarding-DU-PrPll.js → reports-onboarding-CvtUysYm.js} +1 -1
  233. package/dist/client/assets/{reports-tab-ChwZOe5G.js → reports-tab-DGGd_cJc.js} +2 -2
  234. package/dist/client/assets/repositories-CX881Zmd.js +1 -0
  235. package/dist/client/assets/{repositories-BcpDx93s.js → repositories-DiF_6MDk.js} +1 -1
  236. package/dist/client/assets/{repository-binding-Meqp5p71.js → repository-binding-5kMOX4dj.js} +1 -1
  237. package/dist/client/assets/{repository-import-picker-FH262XPV.js → repository-import-picker-Cf-mDDmo.js} +1 -1
  238. package/dist/client/assets/{repository-picker-DCYyzOOP.js → repository-picker-BN84wENn.js} +1 -1
  239. package/dist/client/assets/{require-capability-oXulJiLn.js → require-capability-d9R-dYdO.js} +1 -1
  240. package/dist/client/assets/{required-auth-layout-tipFurup.js → required-auth-layout-DojZ1KGX.js} +1 -1
  241. package/dist/client/assets/{reset-password-3NrSj3Hp.js → reset-password-DSQJZEJs.js} +1 -1
  242. package/dist/client/assets/{resizable-DhKaPyjj.js → resizable-DaKs1eh5.js} +1 -1
  243. package/dist/client/assets/{resolve-tab-icon-Dllm1_fu.js → resolve-tab-icon-E0pJTGSy.js} +1 -1
  244. package/dist/client/assets/{review-settings-8QMhy3Lg.js → review-settings-B7m9uNKt.js} +1 -1
  245. package/dist/client/assets/{roles-BEcXWCxJ.js → roles-sT7X7xzB.js} +1 -1
  246. package/dist/client/assets/{route-CMo6fdQZ.js → route-BiPjYs2Q.js} +1 -1
  247. package/dist/client/assets/{route-7AN9YEMz.js → route-CO4TvlsY.js} +1 -1
  248. package/dist/client/assets/route-qbvcUo1A.js +1 -0
  249. package/dist/client/assets/sandbox-lifecycle-context-BdO8UXfQ.js +1 -0
  250. package/dist/client/assets/{schema-Db9nAPbV.js → schema-Bp5lazAd.js} +1 -1
  251. package/dist/client/assets/{schema-LbfQM_um.js → schema-HyTKqr-p.js} +1 -1
  252. package/dist/client/assets/{scroll-area-Do3s8MFg.js → scroll-area-ButOmQch.js} +1 -1
  253. package/dist/client/assets/{search-input-BiW12RB7.js → search-input-N6CaOC_1.js} +1 -1
  254. package/dist/client/assets/{search-toggle-C_s2zUEP.js → search-toggle-hVjf6-kQ.js} +1 -1
  255. package/dist/client/assets/{secret-picker-4kZnJB0L.js → secret-picker-DbQaPqx6.js} +1 -1
  256. package/dist/client/assets/{secrets-D3OOpubP.js → secrets-CkR4uy6Z.js} +1 -1
  257. package/dist/client/assets/{section-array-field-DlpdCCcl.js → section-array-field-Lr-feKpQ.js} +1 -1
  258. package/dist/client/assets/{sections-NxijzCAP.js → sections-BM3hOdfC.js} +1 -1
  259. package/dist/client/assets/{sections-editor-DZMEPtw_.js → sections-editor-DLgM9lBb.js} +1 -1
  260. package/dist/client/assets/{select-C0Q0f4At.js → select-BwZ3fxwy.js} +1 -1
  261. package/dist/client/assets/{select-model-DlU2H5oA.js → select-model-B5VqF5aQ.js} +1 -1
  262. package/dist/client/assets/{seo-editor-DOL-unZx.js → seo-editor-Bpy9Dzdq.js} +1 -1
  263. package/dist/client/assets/{separator-DcYK5L3O.js → separator-BJ59N-4S.js} +1 -1
  264. package/dist/client/assets/settings-tab-CA-W7UU2.js +1 -0
  265. package/dist/client/assets/{sheet-C3lf7JiX.js → sheet-CFaQrFou.js} +1 -1
  266. package/dist/client/assets/{shell-layout-aaJ-Ow-a.js → shell-layout-BmOtysoG.js} +1 -1
  267. package/dist/client/assets/{site-draft-actions-BdvwngLt.js → site-draft-actions-DQSFILpp.js} +1 -1
  268. package/dist/client/assets/site-draft-view-FIwQQWqm.js +2 -0
  269. package/dist/client/assets/site-editor-pGVB_SVm.js +1 -0
  270. package/dist/client/assets/{site-editor-toast-DS0_fxT0.js → site-editor-toast-Drt9__vU.js} +1 -1
  271. package/dist/client/assets/{skills-Db9hF38T.js → skills-CuAtdce2.js} +1 -1
  272. package/dist/client/assets/{slider-Brs1MiDz.js → slider-9xLURN_x.js} +1 -1
  273. package/dist/client/assets/{sortable.esm-DR7ZsZlW.js → sortable.esm-DKvN4I2-.js} +1 -1
  274. package/dist/client/assets/{sso-BKJEgj1Q.js → sso-Bt0VIDB0.js} +1 -1
  275. package/dist/client/assets/{suggestion-BqSBag09.js → suggestion-B65JiyPM.js} +1 -1
  276. package/dist/client/assets/{switch-DXvm-pfC.js → switch-DAskixZA.js} +1 -1
  277. package/dist/client/assets/{symbol-DhjzVarJ.js → symbol-DHBzZbeR.js} +1 -1
  278. package/dist/client/assets/{synced-repos-BshDcf0T.js → synced-repos-CE8wN2_N.js} +1 -1
  279. package/dist/client/assets/{tab-icon-glyph-x6aTS8aC.js → tab-icon-glyph-CpaZMvdV.js} +1 -1
  280. package/dist/client/assets/{table-CsgmIfM7.js → table-gy7RNGr-.js} +1 -1
  281. package/dist/client/assets/{tabs-snNNT2OQ.js → tabs-BIh8PZDT.js} +1 -1
  282. package/dist/client/assets/{task-assignee-avatar-CIFZYxqw.js → task-assignee-avatar-T0yhZapD.js} +1 -1
  283. package/dist/client/assets/{task-board-DZ8Kzwkd.js → task-board-DDJJrv54.js} +1 -1
  284. package/dist/client/assets/{task-route-B3yf9UbZ.js → task-route-BuxqCGZd.js} +1 -1
  285. package/dist/client/assets/{task-status-BXAKMLjX.js → task-status-B-hiqAeK.js} +1 -1
  286. package/dist/client/assets/{taskboard-analytics-CzU6hvG8.js → taskboard-analytics-CACHd6vk.js} +1 -1
  287. package/dist/client/assets/{tasks-BfBA5dNC.js → tasks-CPyoTCOO.js} +1 -1
  288. package/dist/client/assets/tasks-CyRF0ujk.js +1 -0
  289. package/dist/client/assets/{textarea-PZ5-N42X.js → textarea-B-cDk_e9.js} +1 -1
  290. package/dist/client/assets/{thread-analytics-C0N5WioR.js → thread-analytics-DKFvK1DN.js} +1 -1
  291. package/dist/client/assets/{thread-intent-DH83rsLQ.js → thread-intent-DXpv35UG.js} +1 -1
  292. package/dist/client/assets/{thread-route-C8i0NIbO.js → thread-route-BZKbOQYe.js} +1 -1
  293. package/dist/client/assets/{thread-route-D9dyzfFR.js → thread-route-Dp-aglxM.js} +1 -1
  294. package/dist/client/assets/{thread-sheet-body-6YAeci0o.js → thread-sheet-body-CRJRoIwG.js} +1 -1
  295. package/dist/client/assets/{time-range-picker-CVmtrNYi.js → time-range-picker-B1ueoxPR.js} +1 -1
  296. package/dist/client/assets/{toggle-group-CUFIN5dE.js → toggle-group-B4WOnAP4.js} +1 -1
  297. package/dist/client/assets/{tool-namespace-Y0TJrGSX.js → tool-namespace-BDVFYO2h.js} +1 -1
  298. package/dist/client/assets/{toolbar-icon-button-C6e2VzUh.js → toolbar-icon-button-CsFCKDkl.js} +1 -1
  299. package/dist/client/assets/{tooltip-9LLsMgGV.js → tooltip-BP50pkvP.js} +1 -1
  300. package/dist/client/assets/{tooltipContext-D1XV88gx.js → tooltipContext-C8XbU8o0.js} +1 -1
  301. package/dist/client/assets/{track-BDVG3U2y.js → track-CDPTw9ZB.js} +1 -1
  302. package/dist/client/assets/{types-BO2WHIDA.js → types-G5N7kkmB.js} +1 -1
  303. package/dist/client/assets/{url-slug-DonaWwCk.js → url-slug-D6AdbSqw.js} +1 -1
  304. package/dist/client/assets/{usage-stats-DBeLsjRR.js → usage-stats-n069Pf6u.js} +1 -1
  305. package/dist/client/assets/{use-ai-providers-BHsc3bDD.js → use-ai-providers-BCXdfWt4.js} +1 -1
  306. package/dist/client/assets/{use-apply-named-rule---oSjx7n.js → use-apply-named-rule-2pgSelD5.js} +1 -1
  307. package/dist/client/assets/{use-automations-1YEM9DbK.js → use-automations-Ch5lNT3Y.js} +1 -1
  308. package/dist/client/assets/{use-autosave-B-Iuf8KI.js → use-autosave-DnUFhq5-.js} +1 -1
  309. package/dist/client/assets/{use-chat-layout-state-C15u8M2V.js → use-chat-layout-state-Boq7M7MG.js} +1 -1
  310. package/dist/client/assets/{use-clock-tick-DIHPLwxm.js → use-clock-tick-C7RLnGnY.js} +1 -1
  311. package/dist/client/assets/{use-connect-companion-V3BIIJeW.js → use-connect-companion-w3O3zQJZ.js} +1 -1
  312. package/dist/client/assets/{use-connection-BQFGYTV6.js → use-connection-SBf1IMNR.js} +1 -1
  313. package/dist/client/assets/{use-content-sync-DPGe01L6.js → use-content-sync-BL9rGIyO.js} +1 -1
  314. package/dist/client/assets/{use-copy-CxT0JeDz.js → use-copy-Dgppamoo.js} +1 -1
  315. package/dist/client/assets/{use-create-virtual-mcp-CAv-1I_T.js → use-create-virtual-mcp-DE2rukKQ.js} +1 -1
  316. package/dist/client/assets/{use-date-fns-locale-BQCqx0nl.js → use-date-fns-locale-MUGqYczL.js} +1 -1
  317. package/dist/client/assets/{use-debounced-autosave-DXyNDYcX.js → use-debounced-autosave-C_xNyGJY.js} +1 -1
  318. package/dist/client/assets/{use-debounced-value-N-JjpU1V.js → use-debounced-value-Cf0I7A9v.js} +1 -1
  319. package/dist/client/assets/{use-deco-credits-DDwwBuMm.js → use-deco-credits-Dna90E4X.js} +1 -1
  320. package/dist/client/assets/{use-decopilot-events-CqPtaVnx.js → use-decopilot-events-8w_hmlMJ.js} +1 -1
  321. package/dist/client/assets/{use-delete-connection-BSNr2bC3.js → use-delete-connection-ClNsS7Ho.js} +1 -1
  322. package/dist/client/assets/{use-deployment-admin-aELFz-ee.js → use-deployment-admin-4YEWaFep.js} +1 -1
  323. package/dist/client/assets/{use-fast-preview-draft-url-4INawxcX.js → use-fast-preview-draft-url-Bc3gs7gV.js} +1 -1
  324. package/dist/client/assets/{use-file-configs-DH6Ac5Y5.js → use-file-configs-B-wH52y_.js} +1 -1
  325. package/dist/client/assets/{use-inbox-feed-CXjwjyxO.js → use-inbox-feed-Ci3vPrJA.js} +1 -1
  326. package/dist/client/assets/{use-infinite-scroll-CNc2NI3i.js → use-infinite-scroll-BIzBYJCu.js} +1 -1
  327. package/dist/client/assets/{use-join-requests-B0daTOT_.js → use-join-requests-DP8Apzuq.js} +1 -1
  328. package/dist/client/assets/{use-main-panel-tabs-BhdlgJp6.js → use-main-panel-tabs-CYcYIai-.js} +1 -1
  329. package/dist/client/assets/{use-mcp-auth-status-CF5TaDec.js → use-mcp-auth-status-CNLX3LBK.js} +1 -1
  330. package/dist/client/assets/{use-mcp-client-P41n2mxI.js → use-mcp-client-Do4_ndrI.js} +1 -1
  331. package/dist/client/assets/{use-mcp-prompts-B3Nr4ZJG.js → use-mcp-prompts-BtZywK26.js} +1 -1
  332. package/dist/client/assets/{use-mcp-tools-BNi1ikeO.js → use-mcp-tools-D588moK7.js} +1 -1
  333. package/dist/client/assets/{use-mobile-jFUNwYYf.js → use-mobile-CMu6UtqS.js} +1 -1
  334. package/dist/client/assets/{use-move-blocks-B-yW6Slv.js → use-move-blocks-0Xns2gtz.js} +1 -1
  335. package/dist/client/assets/{use-navigate-to-agent-Dm6cdVpv.js → use-navigate-to-agent-BhR34hZR.js} +1 -1
  336. package/dist/client/assets/{use-open-billing-url-Byo1M4SG.js → use-open-billing-url-C2ZKl_OJ.js} +1 -1
  337. package/dist/client/assets/{use-org-fs-BrF4BnPF.js → use-org-fs-Bmjx4Cik.js} +1 -1
  338. package/dist/client/assets/{use-org-repo-syncs-6ClvuhZj.js → use-org-repo-syncs-BSAcLSvr.js} +1 -1
  339. package/dist/client/assets/{use-org-sso-BhUG19nu.js → use-org-sso-C2CyZRUp.js} +1 -1
  340. package/dist/client/assets/{use-organization-roles-DGB0g1Kk.js → use-organization-roles-DSCc1iIP.js} +1 -1
  341. package/dist/client/assets/{use-organization-settings-BiInrSf0.js → use-organization-settings-DMgbBKf8.js} +1 -1
  342. package/dist/client/assets/{use-panel-navigate-BJRHz9-t.js → use-panel-navigate-o6edpcRi.js} +1 -1
  343. package/dist/client/assets/{use-project-native-view-presence-7WN9qseE.js → use-project-native-view-presence-CiNgXr_r.js} +1 -1
  344. package/dist/client/assets/{use-project-scope-B0Sibn6g.js → use-project-scope-2Tdoer5a.js} +1 -1
  345. package/dist/client/assets/{use-recent-apps-C1A023Yo.js → use-recent-apps-D4vko3CW.js} +1 -1
  346. package/dist/client/assets/{use-releases-tJmW6WNc.js → use-releases-CZIw49MO.js} +1 -1
  347. package/dist/client/assets/{use-reports-diagnostic-DOFdWvCv.js → use-reports-diagnostic-D1hUsQ-k.js} +1 -1
  348. package/dist/client/assets/use-sandbox-events-BGso5ik2.js +2 -0
  349. package/dist/client/assets/{use-secrets-D7gMnlZB.js → use-secrets-B4A-mk96.js} +1 -1
  350. package/dist/client/assets/{use-section-preview-base-wA756W4w.js → use-section-preview-base-7CyzrhDh.js} +1 -1
  351. package/dist/client/assets/{use-session-runtime-CQn-52Ez.js → use-session-runtime-CbMaO8p7.js} +1 -1
  352. package/dist/client/assets/{use-sidebar-collapsed-BPZlAUWE.js → use-sidebar-collapsed-CI6KBWLr.js} +1 -1
  353. package/dist/client/assets/{use-tags-BqkalJgS.js → use-tags-lzJX123E.js} +1 -1
  354. package/dist/client/assets/{use-task-board-analytics-CGnOgEtr.js → use-task-board-analytics-BzMGYkMt.js} +1 -1
  355. package/dist/client/assets/{use-task-board-events-DBa8GRgx.js → use-task-board-events-DoQeMblf.js} +1 -1
  356. package/dist/client/assets/{use-task-board-item-prs-Cz375X0D.js → use-task-board-item-prs-C1DrMHVS.js} +1 -1
  357. package/dist/client/assets/{use-task-metadata-DYMge1Ms.js → use-task-metadata-DKj0uikU.js} +1 -1
  358. package/dist/client/assets/{use-thread-analytics-BgqERo23.js → use-thread-analytics-C147IXlL.js} +1 -1
  359. package/dist/client/assets/{use-thread-outputs-CxOHL03a.js → use-thread-outputs-sdt1CHHh.js} +1 -1
  360. package/dist/client/assets/useInfiniteQuery-Cq3QQD7o.js +1 -0
  361. package/dist/client/assets/{useQueries-CunEDk2w.js → useQueries-B2KTxxDE.js} +1 -1
  362. package/dist/client/assets/useSuspenseInfiniteQuery-jjzI6K-a.js +1 -0
  363. package/dist/client/assets/{users-Ckolvc6J.js → users-B-OmSt3n.js} +1 -1
  364. package/dist/client/assets/{utils-OgCNPQQr.js → utils-muk7Isuo.js} +1 -1
  365. package/dist/client/assets/{variant-calendar-CVJKB37H.js → variant-calendar-DE-GxRhT.js} +1 -1
  366. package/dist/client/assets/{variant-matcher-override-DMBn3So8.js → variant-matcher-override-CDXRGILn.js} +1 -1
  367. package/dist/client/assets/{virtual-mcp-CjF7Cu1C.js → virtual-mcp-C5K9GZ-3.js} +1 -1
  368. package/dist/client/assets/{watch-sse-pool-D75R450R.js → watch-sse-pool-BzTIkVFy.js} +1 -1
  369. package/dist/client/index.html +1 -1
  370. package/dist/server/server.js +1 -1
  371. package/package.json +1 -1
  372. package/dist/client/assets/agent-analytics-Cbdz4epN.js +0 -1
  373. package/dist/client/assets/agent-app-B-kKN9Kk.js +0 -1
  374. package/dist/client/assets/agent-calendar-D_we3tsY.js +0 -1
  375. package/dist/client/assets/agent-deck-w0DJ8inL.js +0 -1
  376. package/dist/client/assets/agent-experiments-zafEuLfN.js +0 -1
  377. package/dist/client/assets/agent-library-B6GAeK3B.js +0 -1
  378. package/dist/client/assets/agent-library-file-_ugelwAI.js +0 -1
  379. package/dist/client/assets/agent-monitor-BYj2OHl4.js +0 -1
  380. package/dist/client/assets/agent-settings-CkcXvyCB.js +0 -1
  381. package/dist/client/assets/agent-site-editor-code-BNXkN8TJ.js +0 -2
  382. package/dist/client/assets/agent-site-editor-content-BG_Zli2l.js +0 -1
  383. package/dist/client/assets/agent-site-editor-preview-DLqn9oce.js +0 -1
  384. package/dist/client/assets/agent-view-Bvz_UFEk.js +0 -1
  385. package/dist/client/assets/api-keys-C1TdMpH9.js +0 -1
  386. package/dist/client/assets/blocks-preview-workspace-context-CVuSXtvf.js +0 -1
  387. package/dist/client/assets/chat-context-BvBN6HgF.js +0 -39
  388. package/dist/client/assets/cms-settings-editor-DQJghv4n.js +0 -1
  389. package/dist/client/assets/index-CiU3Lit1.js +0 -1
  390. package/dist/client/assets/input-BJWjsMTr.js +0 -17
  391. package/dist/client/assets/library-DwSKFwop.js +0 -1
  392. package/dist/client/assets/project-reports-5DLZwE2I.js +0 -1
  393. package/dist/client/assets/project-tasks-ByxD-zBq.js +0 -1
  394. package/dist/client/assets/record-editor-hmgA54LD.js +0 -1
  395. package/dist/client/assets/reports-DklBonJw.js +0 -1
  396. package/dist/client/assets/repositories-CUKAU9Zy.js +0 -1
  397. package/dist/client/assets/route-lyp-fDsn.js +0 -1
  398. package/dist/client/assets/sandbox-lifecycle-context-D9P5uTE7.js +0 -1
  399. package/dist/client/assets/settings-tab-Dk0U9Ztd.js +0 -1
  400. package/dist/client/assets/site-draft-view-DJ-2XrRv.js +0 -2
  401. package/dist/client/assets/site-editor-DssQOjHQ.js +0 -1
  402. package/dist/client/assets/tasks-DxdBuhqv.js +0 -1
  403. package/dist/client/assets/use-sandbox-events-BNCiNcVF.js +0 -2
  404. package/dist/client/assets/useInfiniteQuery-B_LZh1B0.js +0 -1
  405. package/dist/client/assets/useSuspenseInfiniteQuery-CgbZRhlW.js +0 -1
@@ -1 +1 @@
1
- import{cT as C,aL as T,aK as S}from"./index-BGCeOWuH.js";import{T as O,a as w,b as L,c as N,d as P}from"./task-board-DZ8Kzwkd.js";import{e as F}from"./backoff-CrEUbyZT.js";const h={STEP:"decopilot.step",FINISH:"decopilot.finish",THREAD_STATUS:"decopilot.thread.status"},V=Object.values(h),y="notification.created",H=60,j=100,$=2e3,u=C(T().min(1)).max($),x=S({id:T().min(1).max(64),name:T().trim().min(1).max(H),projectIds:u}),Y=C(x).max(j),K=S({pinned:u,hidden:u,dismissed:u,hiddenFolders:u}),ee={pinned:[],hidden:[],dismissed:[],hiddenFolders:[]};S({folders:Y,preferences:K,joinedAt:T().nullable()});const M="project-folders.updated",v="order-monitor.store.evaluated",te=["orders_drop","denied_spike","cancel_spike"],X=3e4,q=1e3;function I(a){const{buildUrl:f,eventTypes:p,name:d,crossTab:_=!1}=a,c=new Map,l=_&&typeof BroadcastChannel<"u"&&typeof navigator<"u"&&typeof navigator.locks<"u";if(l&&!d)throw new Error("createSSESubscription: `name` is required when crossTab");function E(e,t){e.bootDone=!0;for(const s of e.handlers)try{s(t)}catch{}}function A(e){for(const t of e.reconnectHandlers)try{t()}catch{}}function m(e){const t=new EventSource(f(e.key));e.es=t,t.onopen=()=>{e.reconnectAttempt=0,e.bootDone&&(A(e),e.channel?.postMessage({kind:"reconnect"})),e.bootDone=!0},t.onerror=()=>{e.es===t&&t.readyState===EventSource.CLOSED&&U(e)};const s=n=>{e.channel?.postMessage({kind:"event",type:n.type,data:n.data}),E(e,n)};for(const n of p)t.addEventListener(n,s)}function U(e){if(e.refCount<=0||e.reconnectTimer)return;const t=F(X,q,e.reconnectAttempt,2,.5);e.reconnectAttempt++,e.reconnectTimer=setTimeout(()=>{e.reconnectTimer=null,!(e.refCount<=0||!e.isLeader)&&(e.es?.close(),m(e))},t)}function D(e){if(e.refCount<=0){e.releaseLeadership?.(),e.releaseLeadership=null;return}e.isLeader=!0,m(e)}function B(e){if(!l){D(e);return}e.lockAbort=new AbortController,navigator.locks.request(`sse-leader:${d}:${e.key}`,{signal:e.lockAbort.signal},()=>new Promise(t=>{e.releaseLeadership=t,D(e)})).catch(()=>{})}function W(e,t){t.kind==="event"?E(e,new MessageEvent(t.type,{data:t.data})):t.kind==="reconnect"&&A(e)}function g(e){const t=c.get(e);if(t)return t;const s={key:e,refCount:0,handlers:new Set,reconnectHandlers:new Set,bootDone:!1,es:null,isLeader:!1,reconnectAttempt:0,reconnectTimer:null,channel:null,lockAbort:null,releaseLeadership:null};if(c.set(e,s),l){const n=new BroadcastChannel(`sse:${d}:${e}`);n.onmessage=r=>W(s,r.data),s.channel=n}return s}function b(e){e.reconnectTimer&&(clearTimeout(e.reconnectTimer),e.reconnectTimer=null),e.es?.close(),e.es=null,e.releaseLeadership?.(),e.releaseLeadership=null,e.lockAbort?.abort(),e.lockAbort=null,e.channel?.close(),e.channel=null,c.delete(e.key)}return{dispose(){for(const e of[...c.values()])b(e)},subscribe(e,t,s){const n=!c.has(e),r=g(e);r.refCount++,r.handlers.add(t),s&&r.reconnectHandlers.add(s),n&&B(r);let R=!1;return()=>{R||(R=!0,r.handlers.delete(t),s&&r.reconnectHandlers.delete(s),r.refCount--,r.refCount<=0&&b(r))}}}}function o(a,f){const p=new Set(f);return{dispose:()=>a.dispose(),subscribe(d,_,c){const l=E=>{p.has(E.type)&&_(E)};return a.subscribe(d,l,c)}}}const k=[...V,O,w,L,N,P,y,M,v],J=k,z=k,i=I({name:"watch",buildUrl:a=>`/api/${encodeURIComponent(a)}/watch?types=${J.join(",")}`,eventTypes:z,crossTab:!0}),se=o(i,[...V]),re=o(i,[O,w]),ne=o(i,[L]),ae=o(i,[N]),oe=o(i,[P]),ie=o(i,[y]),ce=o(i,[M]),de=o(i,[v]),le=I({buildUrl:a=>`/api/${encodeURIComponent(a)}/watch?scope=all&types=${h.THREAD_STATUS}`,eventTypes:[h.THREAD_STATUS]});export{h as D,ee as E,te as O,H as P,le as a,oe as b,ae as c,se as d,ne as e,ie as n,de as o,ce as p,re as t};
1
+ import{cT as C,aL as T,aK as S}from"./index-BJ9m9LNK.js";import{T as O,a as w,b as L,c as N,d as P}from"./task-board-DDJJrv54.js";import{e as F}from"./backoff-CrEUbyZT.js";const h={STEP:"decopilot.step",FINISH:"decopilot.finish",THREAD_STATUS:"decopilot.thread.status"},V=Object.values(h),y="notification.created",H=60,j=100,$=2e3,u=C(T().min(1)).max($),x=S({id:T().min(1).max(64),name:T().trim().min(1).max(H),projectIds:u}),Y=C(x).max(j),K=S({pinned:u,hidden:u,dismissed:u,hiddenFolders:u}),ee={pinned:[],hidden:[],dismissed:[],hiddenFolders:[]};S({folders:Y,preferences:K,joinedAt:T().nullable()});const M="project-folders.updated",v="order-monitor.store.evaluated",te=["orders_drop","denied_spike","cancel_spike"],X=3e4,q=1e3;function I(a){const{buildUrl:f,eventTypes:p,name:d,crossTab:_=!1}=a,c=new Map,l=_&&typeof BroadcastChannel<"u"&&typeof navigator<"u"&&typeof navigator.locks<"u";if(l&&!d)throw new Error("createSSESubscription: `name` is required when crossTab");function E(e,t){e.bootDone=!0;for(const s of e.handlers)try{s(t)}catch{}}function A(e){for(const t of e.reconnectHandlers)try{t()}catch{}}function m(e){const t=new EventSource(f(e.key));e.es=t,t.onopen=()=>{e.reconnectAttempt=0,e.bootDone&&(A(e),e.channel?.postMessage({kind:"reconnect"})),e.bootDone=!0},t.onerror=()=>{e.es===t&&t.readyState===EventSource.CLOSED&&U(e)};const s=n=>{e.channel?.postMessage({kind:"event",type:n.type,data:n.data}),E(e,n)};for(const n of p)t.addEventListener(n,s)}function U(e){if(e.refCount<=0||e.reconnectTimer)return;const t=F(X,q,e.reconnectAttempt,2,.5);e.reconnectAttempt++,e.reconnectTimer=setTimeout(()=>{e.reconnectTimer=null,!(e.refCount<=0||!e.isLeader)&&(e.es?.close(),m(e))},t)}function D(e){if(e.refCount<=0){e.releaseLeadership?.(),e.releaseLeadership=null;return}e.isLeader=!0,m(e)}function B(e){if(!l){D(e);return}e.lockAbort=new AbortController,navigator.locks.request(`sse-leader:${d}:${e.key}`,{signal:e.lockAbort.signal},()=>new Promise(t=>{e.releaseLeadership=t,D(e)})).catch(()=>{})}function W(e,t){t.kind==="event"?E(e,new MessageEvent(t.type,{data:t.data})):t.kind==="reconnect"&&A(e)}function g(e){const t=c.get(e);if(t)return t;const s={key:e,refCount:0,handlers:new Set,reconnectHandlers:new Set,bootDone:!1,es:null,isLeader:!1,reconnectAttempt:0,reconnectTimer:null,channel:null,lockAbort:null,releaseLeadership:null};if(c.set(e,s),l){const n=new BroadcastChannel(`sse:${d}:${e}`);n.onmessage=r=>W(s,r.data),s.channel=n}return s}function b(e){e.reconnectTimer&&(clearTimeout(e.reconnectTimer),e.reconnectTimer=null),e.es?.close(),e.es=null,e.releaseLeadership?.(),e.releaseLeadership=null,e.lockAbort?.abort(),e.lockAbort=null,e.channel?.close(),e.channel=null,c.delete(e.key)}return{dispose(){for(const e of[...c.values()])b(e)},subscribe(e,t,s){const n=!c.has(e),r=g(e);r.refCount++,r.handlers.add(t),s&&r.reconnectHandlers.add(s),n&&B(r);let R=!1;return()=>{R||(R=!0,r.handlers.delete(t),s&&r.reconnectHandlers.delete(s),r.refCount--,r.refCount<=0&&b(r))}}}}function o(a,f){const p=new Set(f);return{dispose:()=>a.dispose(),subscribe(d,_,c){const l=E=>{p.has(E.type)&&_(E)};return a.subscribe(d,l,c)}}}const k=[...V,O,w,L,N,P,y,M,v],J=k,z=k,i=I({name:"watch",buildUrl:a=>`/api/${encodeURIComponent(a)}/watch?types=${J.join(",")}`,eventTypes:z,crossTab:!0}),se=o(i,[...V]),re=o(i,[O,w]),ne=o(i,[L]),ae=o(i,[N]),oe=o(i,[P]),ie=o(i,[y]),ce=o(i,[M]),de=o(i,[v]),le=I({buildUrl:a=>`/api/${encodeURIComponent(a)}/watch?scope=all&types=${h.THREAD_STATUS}`,eventTypes:[h.THREAD_STATUS]});export{h as D,ee as E,te as O,H as P,le as a,oe as b,ae as c,se as d,ne as e,ie as n,de as o,ce as p,re as t};
@@ -50,7 +50,7 @@
50
50
  <meta name="twitter:description" content="Hire specialized agents, give them access to your tools, and let them deliver real projects — with planning, verification, and observability built in." />
51
51
  <meta name="twitter:image" content="/og-image.png" />
52
52
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
53
- <script type="module" crossorigin src="/assets/index-BGCeOWuH.js"></script>
53
+ <script type="module" crossorigin src="/assets/index-BJ9m9LNK.js"></script>
54
54
  <link rel="stylesheet" crossorigin href="/assets/index-BQfNeaI1.css">
55
55
  </head>
56
56
  <body>
@@ -4501,7 +4501,7 @@ ${X}`:`${Y}
4501
4501
 
4502
4502
  ${X}
4503
4503
  ${J.slice(Y.length).trimStart()}`}function gw8($){return $?.match(cH5)?.[1]?.toLowerCase()??null}async function nH5($,Z,Q){let[Y,X]=await Promise.all([$.client.listDecofileEntries(Z,$.packagePath),$.client.listDecofileEntries(Q,$.packagePath)]),J=new Map(QW(Y,$.packagePath).map((H)=>[H.path,H.sha])),G=QW(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 yw8($,Z){try{return await eQ0($.client,$.packagePath,Z)}catch(Q){if(Q instanceof v2)return null;throw Q}}async function hw8($,Z,Q){let Y=rL($.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([yw8($,Z),yw8($,Q)]);return G!==W}async function uw8($,Z){if(!pB0(Z))throw new Gl;if(!await tT1($.store,$.site,Z))throw new Gl}async function lw8($,Z){await uw8($,Z);let Q=await M5($.client,$.mainBranch);return hw8($,Q,Z)}async function mw8($,Z,Q={},Y={}){await uw8($,Z);let X=await $.client.readCommit(Z);if(!X)throw new Gl;let J=await M5($.client,$.mainBranch),G=await nH5($,J,Z);if(G.changes.length===0)return{result:"up-to-date"};let W=await hw8($,J,Z);if(W)console.info("hosted reapply: schema differs",{site:$.site,target:Z,head:J});let K=await oT1($,J,G,pH5(X,Z,Q.coAuthor));return{result:"merged",sha:K,release:await ng0($,K,Y),schemaChanged:W}}var Gl,mH5="Reapplied-From",cH5;var $q1=L(()=>{jp();V5();cK();QB();ZY0();pg0();fw8();Gl=class Gl extends Error{constructor(){super("This commit has no release");this.name="NotPublishedError"}};cH5=/^Reapplied-From:\s*([0-9a-f]{40})\s*$/im});async function cw8($,Z,Q){let[Y,X,J]=await Promise.all([$Y0($.store,$.site),gz$($.store,$.site),Z.listCommits({ref:$.mainBranch,since:oH5,cursor:Q,limit:tH5})]),G=new Map(J.items.map((H)=>[H.sha,H.date])),W=J.items.map((H)=>gw8(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 dw8($){let Z=await M5($.client,$.mainBranch),Q=await sT1($,Z);return aT1($,{revision:Z,schemaHash:Q,publishedAt:new Date().toISOString()})}var tH5=50,oH5="1970-01-01T00:00:00Z";var iw8=L(()=>{V5();QB();ZY0();$q1()});function pw8($){return`site-tokens:${$}`}function sH5($){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 nw8($){return crypto.subtle.importKey("pkcs8",Buffer.from($,"base64"),{name:"Ed25519"},!1,["sign"])}async function aH5($,Z){let Q=(J)=>Zq1(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}.${Zq1(X)}`}function tw8($){let Z=async(Q,Y)=>sH5(await $.kv.get(Q,pw8(Y)));return{list:Z,async issue(Q,Y){let X=await Z(Q,Y),J={kid:Zq1(crypto.getRandomValues(new Uint8Array(16))),iat:Math.floor(Date.now()/1000)},G=await aH5(await $.signingKey(),{site:Y,...J});return await $.kv.set(Q,pw8(Y),{tokens:[...X,J]}),{token:G,record:J}}}}var Zq1=($)=>Buffer.from($ instanceof Uint8Array?$:new Uint8Array($)).toString("base64url");function eH5(){let $=gq();return $?{store:$,purge:cg0()}:null}async function eg0($){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 dg0({site:Q.site,metadata:Q.metadata,domains:$.var.siteDomains})}}function ow8($){let Z=B0().siteTokenSigningKey;if(!Z)return null;return tw8({kv:$.var.studioContext.storage.kv,signingKey:()=>nw8(Z)})}function ls($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof v2)return $.json({error:Q},409);if(Z instanceof tg0)return console.error("hosted: latest.json update failed",{error:Q}),$.json({error:"latest-update-failed"},502);let Y=v3(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 sw8($={}){let Z=new $1,Q=$.repoClientFor??x3,Y=$.insightsFor??lw$,X=$.delivery??eH5;return Z.use("*",async(J,G)=>{J.set("repoClientFor",Q),J.set("delivery",X),J.set("siteDomains",$.siteDomains),await G()}),Z.use("/:virtualMcpId/*",rH5),Z.get("/:virtualMcpId/releases",async(J)=>{try{let G=await eg0(J);if(!G)return J.json(rg0,503);let W=J.get("hostedProject"),K=await Y(J.var.studioContext,W.organizationId,W.repository);return J.json(await cw8(G,K,J.req.query("cursor")??null),200,{"Cache-Control":"no-store"})}catch(G){return ls(J,G)}}),Z.post("/:virtualMcpId/releases/retry",async(J)=>{try{let G=await eg0(J);if(!G)return J.json(rg0,503);let W=await J.req.json().catch(()=>({})),K=await dw8(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 rT1(G,sB0({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 ls(J,G)}}),Z.get("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await eg0(J);if(!G)return J.json(rg0,503);return J.json({schemaChanged:await lw8(G,J.req.param("sha"))})}catch(G){if(G instanceof Gl)return J.json({error:G.message},404);return ls(J,G)}}),Z.post("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await eg0(J);if(!G)return J.json(rg0,503);let W=await mw8(G,J.req.param("sha"),{coAuthor:WO(J.var.studioContext)});return J.json(W)}catch(G){if(G instanceof Gl)return J.json({error:G.message},404);if(G instanceof Jl)return J.json({error:"main-moved"},409);return ls(J,G)}}),Z.get("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=ow8(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=ow8(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 hq(K,G.packagePath,await K.getDefaultBranch());if(await bi(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 ls(J,K)}}),Z}var rH5,rg0;var aw8=L(()=>{yF();H8();Vg0();qJ();gF();V5();QB();uT1();aB0();ZY0();nT1();pg0();iw8();$q1();c40();uq();vi();u1();jR();rH5=Is(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);if(!Q.auth?.user?.id)return $.json({error:"Unauthorized"},401);if(!await AQ(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let X=$.req.param("virtualMcpId")??"",J=await Q.storage.virtualMcps.findById(X);if(!J||J.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);if(!IQ(await a7(Q),X))return $.json({error:"Virtual MCP not found"},404);let G=J.metadata??null,W=WW(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 eB0({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 ls($,H)}let K=await rB0(Q.storage.orgSites,X,Y.id);if(!K)return $.json(_i,409);return $.set("hostedProject",{organizationId:Y.id,virtualMcpId:X,site:K,packagePath:YB(G),repository:W,metadata:G}),Z()}),rg0={error:"hosted delivery not configured"}});var rw8=($)=>{let Z=new $1;if(Z.use("*",eo),Z.use("*",UN8),Z.route("/",HN8($.voiceSessions)),Z.route("/",_y0()),Z.route("/",nN8()),Z.route("/",JB8()),Z.route("/",mN8()),Z.route("/",HO8()),Z.route("/",UO8()),Z.route("/",ZO8()),Z.route("/",WO8()),Z.route("/",YO8()),Z.route("/",qg0()),Z.route("/tools",wO8()),Z.route("/",LO8()),Z.route("/",xL8({kvStorage:$.kvStorage})),Z.route("/",vL8()),Z.route("/fs",pL8({getConnection:$.getNatsConnection})),Z.route("/sandbox",gj8()),Z.route("/decofile",Sw8()),Z.route("/hosted",sw8()),Z.route("/",rL8()),Z.route("/",tL8()),Z.route("/deco-sites",by0()),Z.route("/hosting",AN8()),Z.route("/monitor",bN8()),Z.route("/order-monitor",gN8()),Z.route("/sso",My0()),Z.route("/",Rg0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",jN8()),$.mountDevAssets)Z.route("/dev-assets",my0({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 eA1)Z.use(`${Q}/:threadId`,$.mcpAuth);Z.route("/",JG8()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler);for(let Q of eA1)Z.route(Q,sL8());return Z.route("/mcp",tb0()),Z.route("/mcp/self",Pg0()),Z.route("/mcp",ab0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var ew8=L(()=>{H8();FN8();NN8();Ly0();wN8();V21();TN8();xN8();hN8();cy0();R2();A21();tN8();_21();bL8();fL8();nL8();oL8();XZ0();B21();rb0();rA1();aL8();eL8();QO8();XO8();QT1();FO8();NO8();OO8();YT1();EO8();XT1();ob0();hj8();_w8();aw8()});import{z as Wl}from"zod";class Qq1{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 QE8.Kvm($h0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:$h0.StorageType.Memory,ttl:YE8.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"?ZE8.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=$E8.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,$E8.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"?ZE8.parse(G.json()):null;if(G&&W?.state==="ready"&&W.agentId===Q)await X.delete(J,{previousSeq:G.revision}).catch(()=>{});throw Y}}}var $h0,QE8,YE8,$E8,ZE8;var XE8=L(()=>{W3();kB();h$();$h0=_(cH(),1),QE8=_(Nq(),1),YE8=_(YA(),1),$E8=new TextEncoder,ZE8=Wl.discriminatedUnion("state",[Wl.object({state:Wl.literal("ready"),agentId:Wl.string()}),Wl.object({state:Wl.literal("creating"),expiresAt:Wl.number()})])});import{z as ms}from"zod";function $F5($){return{model:$.model,instructions:`${gd$}
4504
- Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class Yq1{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:$F5({...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:ms.object({session:ms.object({id:ms.string().min(1)}),transport:ms.object({type:ms.literal("webrtc"),sdp:ms.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var JE8=L(()=>{kB()});var GE8;var WE8=L(()=>{GE8=[{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 Xq1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:fd$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:GE8.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 KE8=L(()=>{kB();WE8()});import{z as oJ}from"zod";import{createHash as ZF5,createHmac as QF5}from"crypto";class Zh0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=ZF5("sha256").update(JSON.stringify(Xq1($))).digest("hex"),this.conversationKey=QF5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Zh0({...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}=oJ.object({agents:oJ.array(oJ.object({agent_id:oJ.string(),name:oJ.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 oJ.object({platform_settings:oJ.object({auth:oJ.object({enable_auth:oJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...Xq1(this.config)},AbortSignal.timeout(15000));return oJ.object({agent_id:oJ.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 oJ.object({token:oJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return oJ.object({token:oJ.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 HE8=L(()=>{KE8()});import{createHmac as YF5,timingSafeEqual as XF5}from"crypto";import{z as cs}from"zod";function UE8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return YF5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function NE8($,Z){let Q=Buffer.from(JSON.stringify(FE8.parse($))).toString("base64url");return`${Q}.${UE8(Q,Z)}`}function BE8($,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(UE8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!XF5(W,G))return null;try{let K=FE8.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 FE8;var DE8=L(()=>{kB();FE8=cs.object({sessionId:cs.string().uuid(),organizationId:cs.string().min(1).max(256),userId:cs.string().min(1).max(256),threadId:cs.string().min(1).max(256),expiresAt:cs.number().int().positive()})});import{z as Jq1}from"zod";function LE8($,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 Gq1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var Gq1;var OE8=L(()=>{Gq1=Jq1.object({provider:Jq1.enum(["elevenlabs","openai"]),model:Jq1.string().trim().min(1).max(128)})});import{createHash as JF5}from"crypto";import{z as ds}from"zod";function is($){return`user.${JF5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class Kq1{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 jE8.Kvm(Yh0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Yh0.StorageType.Memory,ttl:wE8.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=LE8(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=NE8(G,this.deps.secret),K=await this.kv(),H=is(G),F=await K.get(H),U=F?.operation==="PUT"?Qh0.parse(F.json()):null,N=Wq1.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:is($)});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=BE8(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=is(Q),J=await Y.get(X),G=J?.operation==="PUT"?Qh0.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,Wq1.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=is(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Qh0.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,Wq1.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(is($));if(Q?.operation==="PUT"&&Qh0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(is($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var Yh0,jE8,wE8,Qh0,Wq1;var EE8=L(()=>{W3();kB();DE8();OE8();Yh0=_(cH(),1),jE8=_(Nq(),1),wE8=_(YA(),1),Qh0=ds.object({sessionId:ds.string().uuid(),expiresAt:ds.number(),connected:ds.boolean().optional(),conversation:Gq1.optional(),characters:ds.number().int().nonnegative(),requests:ds.number().int().nonnegative()}),Wq1=new TextEncoder});import{z as c1}from"zod";function UD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function LF5($){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 OF5($,Z,Q){try{return JSON.parse($)}catch{throw new AE8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function jF5($){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:OF5(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 wF5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?RN(Q.function.parameters):RN({type:"object",properties:{}});return[Q.function.name,a$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function EF5($){if(!$)return;return{openai:{response_format:$}}}function PF5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function PE8($,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 zE8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var GF5=256,WF5,KF5,HF5,FF5,UF5,NF5,BF5,DF5,AE8,TE8,qE8;var RE8=L(()=>{u4();H8();Vs();BU();WF5=c1.object({type:c1.literal("function"),function:c1.object({name:c1.string(),description:c1.string().optional(),parameters:c1.record(c1.string(),c1.unknown()).optional()})}),KF5=c1.object({id:c1.string(),type:c1.literal("function"),function:c1.object({name:c1.string(),arguments:c1.string()})}),HF5=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(KF5).optional()}),c1.object({role:c1.literal("tool"),content:c1.string(),tool_call_id:c1.string()})]),FF5=c1.object({type:c1.literal("text")}),UF5=c1.object({type:c1.literal("json_object")}),NF5=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()})}),BF5=c1.union([FF5,UF5,NF5]),DF5=c1.object({model:c1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:c1.array(HF5),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(WF5).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:BF5.optional(),user:c1.string().optional()});AE8=class AE8 extends Error{constructor($){super($);this.name="MessageConversionError"}};TE8=new $1;TE8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(UD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(UD("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(UD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=DF5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(UD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=LF5(J.model);if(!G)return $.json(UD("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)=>GT(E.providerId));if(!w)return $.json(UD("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(UD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=jF5(J.messages),N=J.tools?wF5(J.tools):void 0,B=EF5(J.response_format),D=PF5(),O=Math.floor(Date.now()/1000);if(J.stream)return qj($,async(j)=>{let w=PE8(F,U,N,J,B,$.req.raw.signal);try{let E=zn(w),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let R=z;z="",await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{content:R},finish_reason:null}]})})};for await(let R of E.stream){if(!P&&(R.type==="text-delta"||R.type==="tool-call"))await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),P=!0;if(R.type==="text-delta"){if(z+=R.text,z.length>=GF5)await A()}else if(R.type==="tool-call"){await A();let f=T++;await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:R.toolCallId,type:"function",function:{name:R.toolName,arguments:JSON.stringify(R.input)}}]},finish_reason:null}]})})}else if(R.type==="finish")await A(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:zE8(R.finishReason)}],usage:R.totalUsage?{prompt_tokens:R.totalUsage.inputTokens??0,completion_tokens:R.totalUsage.outputTokens??0,total_tokens:R.totalUsage.totalTokens??0}:void 0})})}await A(),await j.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await j.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let j=PE8(F,U,N,J,B,$.req.raw.signal),w=await CO(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:zE8(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(UD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(UD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(UD(X.message,"server_error"),500)}});qE8=TE8});function zF5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function ME8(){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=S0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!y5(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||I9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(IT(U)!==J)continue;if(!zF5(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 VE8=L(()=>{H8();JX()});var Xh0;var Hq1=L(()=>{Xh0={name:"decocms",version:"4.524.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^3.1.0","@opentelemetry/core":"^2.6.0",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.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 qF5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??TF5}}var IE8,TF5="https://ph.studio.decocms.com",kE8;var CE8=L(()=>{H8();De();hh();F9();u1();dt();az1();Hq1();IE8=new $1;IE8.get("/",($)=>{let Z={version:Xh0.version,theme:a8$(),...XF().logo&&{logo:XF().logo},...mO()&&{internalUrl:a$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&oz(),plansEnabled:B0().plansEnabled,auth:rF8(),posthog:qF5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:SU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});kE8=IE8});import{z as M$}from"zod";var RF5,SE8;var _E8=L(()=>{RF5=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())}),SE8=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(RF5)})),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 vE8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${_K({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function Jh0($,Z={}){let Q=await fetch(vE8($,"",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 SE8.parse(await Q.json())}async function bE8($,Z={}){let Q=await fetch(vE8($,".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 Fq1=L(()=>{_E8();yL()});import{join as xE8}from"path";async function VF5($){try{let Z=await Jh0($,{signal:AbortSignal.timeout(MF5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||Pw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function HG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function IF5($,Z){let Q=Lu($),Y=Z?.brand?.trim()||Pw1(Q),X=ZJ8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=QJ8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${HG(W)}</title>`,`<meta name="description" content="${HG(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="${HG(W)}" />`,`<meta property="og:description" content="${HG(K)}" />`,`<meta property="og:url" content="${HG(G)}" />`,`<meta property="og:image" content="${HG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${HG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${HG(W)}" />`,`<meta name="twitter:description" content="${HG(K)}" />`,`<meta name="twitter:image" content="${HG(H)}" />`,`<meta name="twitter:image:alt" content="${HG(F)}" />`,`<link rel="canonical" href="${HG(G)}" />`,`<link rel="alternate" type="text/markdown" href="${HG(G)}.md" />`,`<link rel="icon" href="${HG(X)}" sizes="any" />`].join(`
4504
+ Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class Yq1{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:$F5({...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:ms.object({session:ms.object({id:ms.string().min(1)}),transport:ms.object({type:ms.literal("webrtc"),sdp:ms.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var JE8=L(()=>{kB()});var GE8;var WE8=L(()=>{GE8=[{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 Xq1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:fd$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:GE8.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 KE8=L(()=>{kB();WE8()});import{z as oJ}from"zod";import{createHash as ZF5,createHmac as QF5}from"crypto";class Zh0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=ZF5("sha256").update(JSON.stringify(Xq1($))).digest("hex"),this.conversationKey=QF5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Zh0({...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}=oJ.object({agents:oJ.array(oJ.object({agent_id:oJ.string(),name:oJ.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 oJ.object({platform_settings:oJ.object({auth:oJ.object({enable_auth:oJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...Xq1(this.config)},AbortSignal.timeout(15000));return oJ.object({agent_id:oJ.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 oJ.object({token:oJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return oJ.object({token:oJ.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 HE8=L(()=>{KE8()});import{createHmac as YF5,timingSafeEqual as XF5}from"crypto";import{z as cs}from"zod";function UE8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return YF5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function NE8($,Z){let Q=Buffer.from(JSON.stringify(FE8.parse($))).toString("base64url");return`${Q}.${UE8(Q,Z)}`}function BE8($,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(UE8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!XF5(W,G))return null;try{let K=FE8.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 FE8;var DE8=L(()=>{kB();FE8=cs.object({sessionId:cs.string().uuid(),organizationId:cs.string().min(1).max(256),userId:cs.string().min(1).max(256),threadId:cs.string().min(1).max(256),expiresAt:cs.number().int().positive()})});import{z as Jq1}from"zod";function LE8($,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 Gq1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var Gq1;var OE8=L(()=>{Gq1=Jq1.object({provider:Jq1.enum(["elevenlabs","openai"]),model:Jq1.string().trim().min(1).max(128)})});import{createHash as JF5}from"crypto";import{z as ds}from"zod";function is($){return`user.${JF5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class Kq1{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 jE8.Kvm(Yh0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Yh0.StorageType.Memory,ttl:wE8.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=LE8(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=NE8(G,this.deps.secret),K=await this.kv(),H=is(G),F=await K.get(H),U=F?.operation==="PUT"?Qh0.parse(F.json()):null,N=Wq1.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:is($)});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=BE8(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=is(Q),J=await Y.get(X),G=J?.operation==="PUT"?Qh0.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,Wq1.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=is(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Qh0.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,Wq1.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(is($));if(Q?.operation==="PUT"&&Qh0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(is($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var Yh0,jE8,wE8,Qh0,Wq1;var EE8=L(()=>{W3();kB();DE8();OE8();Yh0=_(cH(),1),jE8=_(Nq(),1),wE8=_(YA(),1),Qh0=ds.object({sessionId:ds.string().uuid(),expiresAt:ds.number(),connected:ds.boolean().optional(),conversation:Gq1.optional(),characters:ds.number().int().nonnegative(),requests:ds.number().int().nonnegative()}),Wq1=new TextEncoder});import{z as c1}from"zod";function UD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function LF5($){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 OF5($,Z,Q){try{return JSON.parse($)}catch{throw new AE8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function jF5($){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:OF5(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 wF5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?RN(Q.function.parameters):RN({type:"object",properties:{}});return[Q.function.name,a$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function EF5($){if(!$)return;return{openai:{response_format:$}}}function PF5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function PE8($,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 zE8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var GF5=256,WF5,KF5,HF5,FF5,UF5,NF5,BF5,DF5,AE8,TE8,qE8;var RE8=L(()=>{u4();H8();Vs();BU();WF5=c1.object({type:c1.literal("function"),function:c1.object({name:c1.string(),description:c1.string().optional(),parameters:c1.record(c1.string(),c1.unknown()).optional()})}),KF5=c1.object({id:c1.string(),type:c1.literal("function"),function:c1.object({name:c1.string(),arguments:c1.string()})}),HF5=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(KF5).optional()}),c1.object({role:c1.literal("tool"),content:c1.string(),tool_call_id:c1.string()})]),FF5=c1.object({type:c1.literal("text")}),UF5=c1.object({type:c1.literal("json_object")}),NF5=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()})}),BF5=c1.union([FF5,UF5,NF5]),DF5=c1.object({model:c1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:c1.array(HF5),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(WF5).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:BF5.optional(),user:c1.string().optional()});AE8=class AE8 extends Error{constructor($){super($);this.name="MessageConversionError"}};TE8=new $1;TE8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(UD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(UD("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(UD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=DF5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(UD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=LF5(J.model);if(!G)return $.json(UD("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)=>GT(E.providerId));if(!w)return $.json(UD("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(UD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=jF5(J.messages),N=J.tools?wF5(J.tools):void 0,B=EF5(J.response_format),D=PF5(),O=Math.floor(Date.now()/1000);if(J.stream)return qj($,async(j)=>{let w=PE8(F,U,N,J,B,$.req.raw.signal);try{let E=zn(w),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let R=z;z="",await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{content:R},finish_reason:null}]})})};for await(let R of E.stream){if(!P&&(R.type==="text-delta"||R.type==="tool-call"))await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),P=!0;if(R.type==="text-delta"){if(z+=R.text,z.length>=GF5)await A()}else if(R.type==="tool-call"){await A();let f=T++;await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:R.toolCallId,type:"function",function:{name:R.toolName,arguments:JSON.stringify(R.input)}}]},finish_reason:null}]})})}else if(R.type==="finish")await A(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:zE8(R.finishReason)}],usage:R.totalUsage?{prompt_tokens:R.totalUsage.inputTokens??0,completion_tokens:R.totalUsage.outputTokens??0,total_tokens:R.totalUsage.totalTokens??0}:void 0})})}await A(),await j.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await j.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let j=PE8(F,U,N,J,B,$.req.raw.signal),w=await CO(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:zE8(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(UD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(UD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(UD(X.message,"server_error"),500)}});qE8=TE8});function zF5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function ME8(){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=S0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!y5(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||I9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(IT(U)!==J)continue;if(!zF5(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 VE8=L(()=>{H8();JX()});var Xh0;var Hq1=L(()=>{Xh0={name:"decocms",version:"4.524.3",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^3.1.0","@opentelemetry/core":"^2.6.0",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.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 qF5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??TF5}}var IE8,TF5="https://ph.studio.decocms.com",kE8;var CE8=L(()=>{H8();De();hh();F9();u1();dt();az1();Hq1();IE8=new $1;IE8.get("/",($)=>{let Z={version:Xh0.version,theme:a8$(),...XF().logo&&{logo:XF().logo},...mO()&&{internalUrl:a$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&oz(),plansEnabled:B0().plansEnabled,auth:rF8(),posthog:qF5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:SU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});kE8=IE8});import{z as M$}from"zod";var RF5,SE8;var _E8=L(()=>{RF5=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())}),SE8=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(RF5)})),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 vE8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${_K({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function Jh0($,Z={}){let Q=await fetch(vE8($,"",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 SE8.parse(await Q.json())}async function bE8($,Z={}){let Q=await fetch(vE8($,".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 Fq1=L(()=>{_E8();yL()});import{join as xE8}from"path";async function VF5($){try{let Z=await Jh0($,{signal:AbortSignal.timeout(MF5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||Pw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function HG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function IF5($,Z){let Q=Lu($),Y=Z?.brand?.trim()||Pw1(Q),X=ZJ8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=QJ8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${HG(W)}</title>`,`<meta name="description" content="${HG(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="${HG(W)}" />`,`<meta property="og:description" content="${HG(K)}" />`,`<meta property="og:url" content="${HG(G)}" />`,`<meta property="og:image" content="${HG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${HG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${HG(W)}" />`,`<meta name="twitter:description" content="${HG(K)}" />`,`<meta name="twitter:image" content="${HG(H)}" />`,`<meta name="twitter:image:alt" content="${HG(F)}" />`,`<link rel="canonical" href="${HG(G)}" />`,`<link rel="alternate" type="text/markdown" href="${HG(G)}.md" />`,`<link rel="icon" href="${HG(X)}" sizes="any" />`].join(`
4505
4505
  `)}function kF5($,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}
4506
4506
  </head>`)}function fE8($){let Z=new $1;return Z.get("/:domain/og.png",async(Q)=>{let Y=Lu(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(xE8($,"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(`${_K({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(CF5)}),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=Lu(Q.req.param("file").replace(/\.md$/,""));try{let X=await bE8(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(SF5)});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=$?xE8($,"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 VF5(Lu(Y)),K=IF5(Y,W);return Q.html(kF5(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var MF5=2500,CF5=1e4,SF5=1e4;var yE8=L(()=>{H8();yL();Fq1();u1()});function Gh0($,Z){return fetch(`${_K({})}${$}`,Z)}async function _F5($,Z){let Q=await Jh0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function xF5($){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 vF5,bF5=8192,Vj,gE8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},hE8;var uE8=L(()=>{H8();JG();rK();yL();Fq1();vF5=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/*",gE8);Vj.use("/suggest",gE8);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 _F5(Z,Q))}catch{return $.json({error:"report read failed"},502)}});Vj.post("/run",S6({maxSize:bF5,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}=xF5(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await Gh0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${hE({})}`},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 Gh0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${hE({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:vF5.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 Gh0(`/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 Gh0(`/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:[]})}});hE8=Vj});var fF5=1048576,Uq1;var lE8=L(()=>{H8();JG();u1();fz1();Uq1=new $1;Uq1.post("/webhook",S6({maxSize:fF5,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(!UF8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=NF8(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await BF8(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as yF5}from"crypto";function uF5($,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 yF5(Buffer.from(X),Buffer.from(Y))}function lF5($,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 mE8($){let Z=new $1;return Z.post("/webhook",S6({maxSize:gF5,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(!uF5(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"&&!hF5.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 l60().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=lF5(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await mF5($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function mF5($,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 ae$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var gF5=5242880,hF5;var cE8=L(()=>{H8();JG();vX();yQ();hF5=new Set(["check_suite","issue_comment"])});import{DBOS as Bq1,SchedulerMode as cF5}from"@dbos-inc/dbos-sdk";async function iF5(){try{return await pF5()}catch($){return console.warn(`[sandbox-credential-push] push failed: ${$ instanceof Error?$.message:String($)}`),null}}async function pF5(){if(!u60())return null;let[{RemoteSandboxProvider:$},{SandboxProviderRouter:Z}]=await Promise.all([Promise.resolve().then(() => (SK1(),CK1)),Promise.resolve().then(() => (kK1(),IK1))]),Q=await l60(),Y=Q instanceof Z?Q.providers.kubernetes:Q;if(!(Y instanceof $))return null;let{db:X}=E8(),{sandboxes:J,pools:G}=await Y.list(),W=Date.now(),K=Km$({sandboxes:J,pools:G,records:await Hm$(X,J,G),legacyPools:zC0(process.env.STUDIO_SANDBOX_TENANT_POOLS),now:W}),{batches:H,failed:F}=await Fm$(K,mO0(X,new KJ(B0().encryptionKey)),{now:W,orgFsLifetimeMs:qC0}),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 nF5($,Z){let Q=await Bq1.runStep(iF5,{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 dE8(){if(Nq1)return;if(!B0().agentSandboxEnabled||!u60())return;Nq1=Bq1.registerWorkflow(nF5,{name:"sandboxCredentialPushWorkflow"}),Bq1.registerScheduled(Nq1,{name:"sandboxCredentialPushWorkflow",crontab:dF5,mode:cF5.ExactlyOncePerIntervalWhenActive})}var dF5="1,11,21,31,41,51 * * * *",Nq1=null;var iE8=L(()=>{kG();qw();O31();RC0();AC0();vX();u1()});function pE8($){let Z=new Uj($.db,new KJ($.encryptionKey)),Q=new $1;return Q.get("/attachments/:token",async(Y)=>{let X=ra$(Y.req.param("token"));if(!X)return Y.json({error:"Invalid or expired link"},404);let J=await Z.getByOrg(X.organizationId);if(!J)return Y.json({error:"Jira is not connected"},404);let W=await new $Q(J.siteUrl,J.email,J.apiToken).downloadAttachment(X.attachmentId);if(!W.ok||!W.body)return Y.json({error:"Jira refused the download"},502);let K=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=W.headers.get(H);if(F)K.set(H,F)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var nE8=L(()=>{H8();qw();GU1();_O()});function Wh0(){try{return B0().jiraSettleSeconds*1000}catch{return xz}}function tE8($,Z){let Q=Z.windowMs??xz,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=tF5($,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 tF5($,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 Dq1=L(()=>{dO();u1()});function oE8($){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 Lq1($,Z,Q){if(!Z.enabled)return"disabled";let Y=Z.organizationId,X=new $Q(Z.siteUrl,Z.email,Z.apiToken),J=tE8(await X.listStatusChanges(Q.issueId),{changeId:Q.changelogId,now:Q.now,windowMs:Wh0()});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:bz(N)})),H=l88(K)&&Z.boardId?u88(await X.getBoardColumnStatusIds(Z.boardId),W.id,G.toId):null,F=h88(K,W.name,H);if(!F)return"no_rule";if(!await $.storage.jiraIntegrations.claimTrigger(Y,Q.issueId,G.id))return"duplicate";return await HH({automationId:F.automation_id,organizationId:Y,triggerId:F.id,target:{kind:"jira",issues:[Q.issueId],move:{toStatus:G.to,fromStatus:W.name,movedBy:G.by,movedAt:new Date(G.at).toISOString()},eventKey:G.id}},{idempotencyKey:`jira:${F.id}:${G.id}`}),"fired"}var Oq1=L(()=>{FU();_O();Kt();Dq1()});import{DBOS as f2,SchedulerMode as oF5}from"@dbos-inc/dbos-sdk";function sE8($){wq1=$}function Pq1(){if(!wq1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return wq1}function zq1(){let $=Pq1();return new Uj($.db,new KJ($.encryptionKey))}async function $U5($){try{let Z=await zq1().getById($);if(!Z?.enabled||!Z.boardId)return{integrationId:$,fired:0};let Q=await lJ(Pq1().db,Z.organizationId);if(!Q)return{integrationId:$,fired:0};if((await Q.storage.automations.listJiraTransitionTriggers(Z.organizationId,{activeOnly:!0})).length===0)return{integrationId:$,fired:0};let X=new $Q(Z.siteUrl,Z.email,Z.apiToken),G=`(${await X.getBoardScopeJql(Z.boardId)}) AND status CHANGED AFTER "-${aF5}m"`,W=0,K;for(let H=0;H<rF5;H++){let F=await X.searchIssues({jql:G,nextPageToken:K});for(let U of F.issues)if(await Lq1(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 ZU5($,Z){let Q=await f2.runStep(()=>zq1().listEnabledIds(),{name:"loadJiraIntegrations"});if(Q.length===0)return;let Y=await Promise.all(Q.map((X)=>f2.runStep(()=>$U5(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 QU5($,Z){try{let Q=await zq1().getById($);if(!Q?.enabled)return"disabled";let Y=await lJ(Pq1().db,Q.organizationId);if(!Y)return"disabled";let X=await Lq1(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 YU5($,Z){await f2.sleep(Wh0()+eF5),await f2.runStep(()=>QU5($,Z),{name:"settleJiraMove"})}async function aE8($,Z){if(!Eq1)throw Error("[jira-trigger] settle workflow is not registered");await f2.startWorkflow(Eq1,{workflowID:`jira-settle:${$}:${Z.changelogId}`})($,Z)}function rE8(){if(jq1)return;Eq1=f2.registerWorkflow(YU5,{name:"jiraSettleWorkflow"}),jq1=f2.registerWorkflow(ZU5,{name:"jiraTriggerSweepWorkflow"}),f2.registerScheduled(jq1,{name:"jiraTriggerSweepWorkflow",crontab:sF5,mode:oF5.ExactlyOncePerIntervalWhenActive})}var sF5="*/5 * * * *",aF5=20,rF5=5,eF5=5000,wq1=null,Eq1=null,jq1=null;var Aq1=L(()=>{qw();Iz();_O();Dq1();Oq1()});function eE8($){let Z=new Uj($.db,new KJ($.encryptionKey)),Q=qz($.db);async function Y(J,G){let W=oE8(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 aE8(K.id,W)}let X=new $1;return X.post("/webhook/:secret",S6({maxSize:XU5}),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 XU5=1048576;var $P8=L(()=>{H8();JG();qw();Aq1();Oq1();l50()});function ZP8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var QP8,JU5,GU5,YP8;var XP8=L(()=>{H8();W3();on();wi();QP8=new $1,JU5=["range","if-none-match","if-modified-since"],GU5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];QP8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(ro($))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 R90(Y,Z);if(!X)throw new R1(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&uK()){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 ZP8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of JU5){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 GU5){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),ZP8(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});YP8=QP8});var XY0=y((Kl)=>{var WU5=Kl&&Kl.__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]}),KU5=Kl&&Kl.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))WU5(Z,$,Q)};Object.defineProperty(Kl,"__esModule",{value:!0});KU5(jG(),Kl)});var WP8=y((JP8)=>{Object.defineProperty(JP8,"__esModule",{value:!0});JP8.version=void 0;JP8.version="3.4.0"});var FP8=y((ND)=>{var HU5=ND&&ND.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(ND,"__esModule",{value:!0});ND.NodeTransport=ND.VERSION=void 0;ND.nodeResolveHost=LU5;var G9=XY0(),FU5=V0("net"),Tq1=V0("tls"),UU5=V0("path"),KP8=V0("fs"),NU5=HU5(V0("dns")),BU5=WP8();ND.VERSION=BU5.version;var DU5="nats.js";class HP8{socket;version;lang;yields=[];signal=(0,G9.deferred)();closedNotification=(0,G9.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=DU5,this.version=ND.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,G9.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 G9.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 G9.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new G9.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,G9.deferred)(),Q,Y=(0,FU5.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,G9.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=G9.DataBuffer.concat(...this.yields),X=(0,G9.extractProtocolMessage)(Y);if(X!=="")try{let J=G9.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,G9.deferred)();try{if($=(0,UU5.resolve)($),!(0,KP8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,KP8.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,G9.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new G9.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,G9.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 G9.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,G9.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new G9.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,G9.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 G9.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,G9.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,G9.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,G9.render)($)}`);let Z=(0,G9.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,G9.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,G9.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}}ND.NodeTransport=HP8;function LU5($){let Z=(0,G9.deferred)();return NU5.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 LP8=y((DP8)=>{Object.defineProperty(DP8,"__esModule",{value:!0});DP8.connect=OU5;var UP8=FP8(),NP8=XY0(),BP8=XY0();function OU5($={}){if((0,BP8.hasWsProtocol)($))return Promise.reject(BP8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,NP8.setTransportFactory)({factory:()=>{return new UP8.NodeTransport},dnsResolveFn:UP8.nodeResolveHost}),NP8.NatsConnectionImpl.connect($)}});var OP8=y((Ij)=>{var wU5=Ij&&Ij.__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]}),EU5=Ij&&Ij.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))wU5(Z,$,Q)};Object.defineProperty(Ij,"__esModule",{value:!0});Ij.connect=void 0;var PU5=LP8();Object.defineProperty(Ij,"connect",{enumerable:!0,get:function(){return PU5.connect}});EU5(XY0(),Ij)});function EP8($){let Z=$?.connectFn??qU5,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:TU5,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${D} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{D++;let O=C7(AU5,zU5,D-1,2,0.5);await G$(O)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?Kh0.credsAuthenticator(new TextEncoder().encode(B.creds)):B?.user?Kh0.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=wP8.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 qU5($){return jP8.connect($)}var Kh0,jP8,wP8,zU5=100,AU5=3000,TU5=3000;var PP8=L(()=>{h$();Kh0=_(YA(),1),jP8=_(OP8(),1),wP8=_(cH(),1)});function Hh0($,Z){return`${$}.${Z}`}class qq1{cache;constructor($){this.cache=ZB({ttlMs:$?.ttlMs??RU5,maxSize:$?.maxSize??MU5})}async get($,Z){return this.cache.get(Hh0($,Z))??null}async set($,Z,Q){this.cache.set(Hh0($,Z),Q)}async invalidate($,Z){this.cache.delete(Hh0($,Z)),this.cache.delete(Hh0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var RU5=600000,MU5=5000;var zP8=()=>{};function Fh0($,Z){return`${$}:${Z}`}function Rq1($){let Z=ZB({ttlMs:$?.ttlMs??VU5,maxSize:$?.maxSize??IU5}),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(AP8,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(Fh0(K,H))},set(K,H,F){Z.set(Fh0(K,H),F)},invalidate(K,H){Z.delete(Fh0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(AP8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(Fh0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var AP8="studio.ai-provider-keys.invalidate",VU5=30000,IU5=5000;var TP8=()=>{};class Mq1{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 qP8=($)=>{let Z;return()=>Z??=$()},Vq1,Iq1;var RP8=L(()=>{f6();Vq1=qP8(()=>W$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),Iq1=qP8(()=>W$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function xU5($=IP8){return{name:hB,subjects:[`${rB1}.>`],storage:IU.StorageType.File,max_age:SU5,max_bytes:vU5,max_msgs_per_subject:bU5,discard:IU.DiscardPolicy.Old,retention:IU.RetentionPolicy.Limits,duplicate_window:_U5,num_replicas:$}}class kP8{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 MP8($){let Z=VP8.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function hU5($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,CU5().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 uU5($,Z){return $.info?.cluster?Z:1}function lU5($){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 kq1{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=xU5(X);try{await Y.streams.info(hB),await Y.streams.update(hB,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(hB,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(hB),await Y.streams.add(J);else throw G}},Q=await $8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await IU.jetstreamManager($),X=uU5($,IP8);try{await Z(Y,X)}catch(J){if(X<=1||!lU5(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:Wt});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=hU5(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=D88(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=$D1(H,{runId:Z}),N=performance.now()-F;Vq1().record(N),Iq1().add(1,{"org.id":Y??"unknown"}),gU5?.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?MP8(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(),yU5)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:J.errorCount}))}if(N!==void 0)throw N})()}async publishSerialized($,Z){try{return await $8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:MP8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Wt}),!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=$D1(Z,{runId:$,dedup:Q});Vq1().record(performance.now()-X),Iq1().add(1);for(let G of J)if(!await this.publishSerialized(Y,G))return!1;return!0}async publishDone($,Z,Q){let Y=this.js;if(!Y)return!1;let X=B88({runId:$,fenceToken:Z,finalSeq:Q});return await this.publishSerialized(Y,X)}async createTailStream($,Z,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let X=Q?.deliverPolicy==="new"?IU.DeliverPolicy.New:IU.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=vz($),W;try{W=await $8(async()=>{return(await Y.consumers.get(hB,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Wt})}catch(O){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",O?.message??O),null}let F=pv0({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(mv0()).pipeThrough(cv0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,D=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",D,{once:!0}),new ReadableStream({async pull(O){for(;;){let{done:j,value:w}=await F.read();if(j){D(),O.close();return}let E=w;if(E.kind==="done"){if(J){D(),O.close();return}continue}O.enqueue(E.chunk);return}},cancel(){D()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(hB,{filter:vz($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var IU,VP8,kU5=($)=>{let Z;return()=>Z??=$()},CU5,SU5=86400000000000,_U5=120000000000,vU5=4294967296,IP8,bU5=500000,fU5,yU5,gU5;var CP8=L(()=>{h$();ZD1();nv0();dv0();f6();RP8();IU=_(cH(),1),VP8=_(YA(),1),CU5=kU5(()=>W$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),IP8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);fU5=process.env.STREAM_ENCODE_TRACE==="1",yU5=process.env.DECOPILOT_STREAM_TRACE==="1";gU5=fU5?new kP8:null});function Uh0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,rU(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 SP8=L(()=>{R8()});class Cq1{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 mU5($,Z,Q={}){let Y=$.startsWith("thread:")?ZU($,Q):$;return[...new Set([Z,Y].filter((X)=>!!X))]}async function Sq1($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await VB($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await IB($,{threadId:X,runBranch:G?.branch}),K=await N80($,Q,nN0(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=mU5(W,await tC0($,X),{flat:Kh(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 PW(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 _P8=L(()=>{V5();xQ();yQ()});async function vP8($,Z,Q){let Y=Z.organizationId;if(!mJ(Z))return!1;if(!fh(Q))return!1;if(!await Lc($,Y,pe))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=H1.shipped,J=await $.storage.taskBoard.update(Z.id,Y,{status:X},Z.updatedBy);return await Q9($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:X,reason:"pr_merged"}}),J8(Y,J),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${X}`),!0}var bP8=L(()=>{U3();v8();yX();un();KU();c5()});function oU5($){return $ instanceof IX}function xP8($,Z){return Z-$>=nU5}class _q1{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??cU5;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??iU5,Q=this.options.itemIntervalMs??dU5,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()-eF1),{neverStarted:IN1,stalled:wB1});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()-tU5));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 MN1(this.taskBoard,X,Y),await VN1(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!==H1.progress||mJ(W)||W.assigneeId!==t$)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await Sq1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!xP8(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,H1.review,W.updatedBy);if(!F)continue;await this.taskBoard.recordActivity({taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:H1.progress,to:H1.review,reason:H}}).catch(()=>{}),J8(J,F),await HU(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!==H1.progress||G.assigneeId!==t$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await gO(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),oU5(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()+pU5)).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!==H1.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:H1.progress,to:H1.intake,reason:Q,retriesSpent:Y.retryAttempts}}).catch(()=>{}),J8(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(!xP8(JL(Q,Z.reviewCycleStartedAt),Date.now()))return;await HU($,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(!mJ(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 Sq1(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 cn(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 vP8(G,Y,W))return!0;if(!X)return!1;if(await B08(G,Y))return!0;if(!AN1(W))return!1;return await mn(G,Y,{previewMatchesHead:TN1(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var cU5=60000,dU5=300000,iU5=50,pU5=60000,nU5=900000,tU5=120000;var fP8=L(()=>{v8();c_0();_P8();hO();tn();KU();bP8();c5();HW();kN1();EB1();yQ();s50()});async function yP8($,Z,Q=xz){return await hP8($,Z,Q,{})}async function gP8($,Z,Q,Y=xz){return await hP8($,Q,Y,{activityId:Z})}async function hP8($,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-sU5),settledBefore:new Date(Z-Q),limit:aU5,...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 rU5($.taskBoard,K,Q);for(let U of H){if(!c88(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 rU5($,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?d88(X,Q):Z.from}var sU5=1800000,aU5=200;var uP8=L(()=>{dO()});import{DBOS as y2,DBOSClient as eU5,SchedulerMode as $N5}from"@dbos-inc/dbos-sdk";function lP8($){kj=$}async function YN5($){if(!kj)return 0;try{return await gP8(kj,$,Date.now(),kj.settleMs)}catch(Z){return console.error(`[automations] settling board move ${$} failed`,Z),0}}async function XN5(){if(!kj)return 0;try{return await yP8(kj,Date.now(),kj.settleMs)}catch($){return console.error("[automations] board transition sweep failed",$),0}}async function JN5($){await y2.sleep((kj?.settleMs??xz)+QN5),await y2.runStep(()=>YN5($),{name:"settleBoardMove"})}async function GN5($,Z){let Q=await y2.runStep(()=>XN5(),{name:"sweepBoardMoves"});if(Q>0)console.log(`[automations] board transition sweep fired ${Q} trigger(s) the settle wait missed`)}async function cP8($){let Z=kj;if(!Z||!bq1)return;if(!await Z.automations.hasActiveBoardColumnTrigger($.taskBoardItemId,$.to))return;let Q=`board-settle:${$.activityId}`;if(!y2.isWithinWorkflow()){await y2.startWorkflow(bq1,{workflowID:Q,queueName:d2})($.activityId);return}let Y=await eU5.create({systemDatabaseUrl:Z.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:1});try{await Y.enqueue({workflowName:mP8,queueName:d2,workflowID:Q},$.activityId)}finally{await Y.destroy()}}function dP8(){if(vq1)return;bq1=y2.registerWorkflow(JN5,{name:mP8}),vq1=y2.registerWorkflow(GN5,{name:"boardTransitionSweepWorkflow"}),y2.registerScheduled(vq1,{name:"boardTransitionSweepWorkflow",crontab:ZN5,mode:$N5.ExactlyOncePerIntervalWhenActive})}var ZN5="*/5 * * * *",QN5=2000,kj=null,mP8="boardTransitionSettleWorkflow",bq1=null,vq1=null;var iP8=L(()=>{dO();uP8()});import{readdir as WN5,rm as Nh0}from"fs/promises";import{join as Bh0}from"path";async function Dh0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-KN5),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await Hl($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await pP8($,X,Z);else if(!X.startsWith(".")){let J=Bh0($,X),G=await Hl(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await pP8(J,K,Z)}if((await Hl(J)).length===0)await Nh0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function pP8($,Z,Q){let Y=0,X=Bh0($,Z),J=await Hl(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=Bh0(X,W),H=await Hl(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=Bh0(K,U);await Nh0(B,{recursive:!0,force:!0}),Y++}}if((await Hl(K)).length===0)await Nh0(K,{recursive:!0,force:!0})}if((await Hl(X)).length===0)await Nh0(X,{recursive:!0,force:!0});return Y}async function Hl($){try{return(await WN5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var KN5=30;var xq1=()=>{};import{DBOS as fq1,SchedulerMode as HN5}from"@dbos-inc/dbos-sdk";async function UN5(){let $=[xH(),wl(),PD()],Z=0;for(let Q of $)try{Z+=await Dh0(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 NN5($,Z){await fq1.runStep(()=>UN5(),{name:"monitoringRetention"})}function tP8(){if(nP8)return;nP8=!0;let $=fq1.registerWorkflow(NN5,{name:"monitoringRetentionWorkflow"});fq1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:FN5,mode:HN5.ExactlyOncePerIntervalWhenActive})}var FN5="23 4 * * *",nP8=!1;var oP8=L(()=>{tW();xq1()});function sP8($){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 fY.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await LP($.db,Z,Y.role);return X.boundAuth=Ez1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new xT(Q,void 0,X.boundAuth,Y.role,"self"),kz(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var aP8=L(()=>{WX();bF()});function rP8(){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=JY0(N.params.name),D=N.params.arguments||{},O=Object.keys(D).map((w)=>JY0(w)),j=O.length>0?O.slice(0,3).join(",")+(O.length>3?"\u2026":""):"";J=`${O9.tool}${B}${O9.dim}(${j})${O9.reset}`}else if(N.method)J=`${O9.dim}${JY0(N.method)}${O9.reset}`}}catch{}}let W=JY0(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${O9.mcp}${JY0(F.slice(0,12))}\u2026${O9.reset}`}else if(X==="/mcp")W=`${O9.mcp}/mcp${O9.reset}`;else if(X==="/mcp/registry")W=`${O9.mcp}/mcp/registry${O9.reset}`;let K=DN5(Y),H=G?"\u25C0":"\u2190";console.log(`${O9.dim}${H}${O9.reset} ${K}${Y}${O9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=BN5(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";console.log(`${O9.dim}${D}${O9.reset} ${K}${Y}${O9.reset} ${W}${J?` ${J}`:""} ${N}${U}${O9.reset} ${O9.duration}${B}${O9.reset}`)}}}var O9,BN5=($)=>{if($>=500)return O9.serverError;if($>=400)return O9.clientError;if($>=300)return O9.redirect;return O9.ok},DN5=($)=>{return O9[$]||O9.reset},JY0=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var eP8=L(()=>{O9={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as Yz8}from"crypto";import{mkdir as LN5,readdir as ON5,rm as $z8,stat as Xz8}from"fs/promises";import{join as gq1,relative as jN5}from"path";import{z as G8}from"zod";function Gz8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return gq1(wN5,Z)}function Wz8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function yq1($,Z){let Q=Gz8($),Y=Wz8(Z);return gq1(Q,Y)}function EN5($,Z,Q,Y){let X=B0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return Yz8("sha256",X).update(J).digest("hex")}function Qz8($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=EN5(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${Wz8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function Kz8($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${Yz8("md5","etag").update(Y).digest("hex")}"`}async function Hz8($,Z,Q,Y,X){try{let J=await ON5($,{withFileTypes:!0});for(let G of J){let W=gq1($,G.name),H=jN5(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 Hz8(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:Kz8(W,F.mtime,F.size)})}catch{}}}}catch{}}function Fz8($,Z){let Y=Q0($).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=Gz8(Y);await LN5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await Hz8(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=yq1(Y,J.key),W=await Xz8(G);return{contentType:C21(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Kz8(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=rO(J.expiresIn,Zz8);return{url:Qz8(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=rO(J.expiresIn,Zz8);return{url:Qz8(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=yq1(Y,J.key);try{return await $z8(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=yq1(Y,K);try{await $z8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function hq1($,Z,Q){let Y=Fz8(Z,Q),X=new JE({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:kZ});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 VW({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),EH(X,J,$,"mcp:dev-assets")}async function Uz8($,Z,Q,Y){let J=Fz8(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 wN5="./data/assets",Zz8=3600,Jz8,Nz8;var Bz8=L(()=>{u1();Mt();H8();IH0();Rt();jJ();eO();cy0();Jz8=new $1;Jz8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return hq1($.req.raw,Z,Y)});Nz8=Jz8});var Dz8={};w6(Dz8,{mountDevRoutes:()=>PN5});function PN5($,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 hq1(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 Uz8(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",Nz8);let Q=new $1;Q.use("*",qU({mountPath:"/api/dev-assets"})),Q.route("/",my0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var Lz8=L(()=>{H8();T21();cy0();Bz8()});var Rz8={};w6(Rz8,{watchHandler:()=>qz8,resolveVoiceSigningSecret:()=>zz8,resolveCorsOrigin:()=>Az8,isSsoExemptPath:()=>Pz8,isAllowedOAuthRedirectUri:()=>Tz8,createApp:()=>SN5});import{readFileSync as zN5}from"fs";import{randomBytes as AN5}from"crypto";import{PrometheusSerializer as TN5}from"@opentelemetry/exporter-prometheus";import{DBOS as BD}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as MN5,oAuthProtectedResourceMetadata as VN5}from"better-auth/plugins";async function qN5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,jz8(Oz8)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),jz8(Oz8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function jz8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function Pz8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${Ty0}/`)||$.startsWith(`${jy0}/`)}function zz8($){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)"),AN5(32).toString("base64")}function Az8($,{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 Tz8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"}async function SN5($={}){let Z=$.database??E8(),Q=!1;k6.stop().catch((F0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",F0)});let Y,X,J,G,W=new qq1,K,H,F,U=null;if($.disableNats)K=Rq1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new YZ0,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=EP8();let F0=B0().natsCredsPath,G0;if(F0)try{G0=zN5(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=X91()?new d51({getJetStream:()=>U.getJetStream(),selfListVersion:Xh0.version}):null;P0?.init().catch(()=>{}),Y=P0;let z0=new JZ1({getJetStream:()=>U.getJetStream()});z0.init().catch(()=>{}),X=z0;let j1=new yh(ON1,{getJetStream:()=>U.getJetStream()}),b$=new yh(a50,{getJetStream:()=>U.getJetStream()});j1.init().catch(()=>{}),b$.init().catch(()=>{}),J={reads:j1,cards:b$};let r$=new OO1({getJetStream:()=>U.getJetStream()});r$.init().catch(()=>{}),G=r$,K=Rq1({getConnection:()=>U.getConnection()}),H=new Mq1({getConnection:()=>U.getConnection()}),F=new kq1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),vF8(U),U.onReady(()=>{P0?.init().catch((B8)=>{console.error("[McpListCache] Deferred init failed:",B8)}),z0.init().catch((B8)=>{console.error("[SkillCatalogCache] Deferred init failed:",B8)}),j1.init().catch((B8)=>{console.error("[PrReadCache] Deferred init failed:",B8)}),b$.init().catch((B8)=>{console.error("[PrCardCache] Deferred init failed:",B8)}),r$.init().catch((B8)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",B8)}),K.start(),Lj$(()=>U.getConnection()),F.init().catch((B8)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",B8)})})}if(g2)await g2();i51(Y),WZ1(X),uZ1(()=>U?.getConnection()??null),jN1(J),jO1(G);let B={storage:new yn(Z.db),sseHub:k6,onThreadFinished:async(F0,G0)=>pn(new EW(Z.db),F0,G0,new hW(Z.db))},D=new AB1(B),O=new t70(Z.db),j=new Cq1(O);j.start(),a88(H),H.start((F0)=>{_v0(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;j21(w),U?.onReady(()=>j21(w)),rO1(w),U?.onReady(()=>rO1(w)),F.init().catch((F0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",F0)}),g2=async()=>{await D.stopAll(),D.dispose(),j.dispose(),H.stop().catch(()=>{}),eU8(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),Oj$(),G.teardown(),i51(null),WZ1(null),uZ1(null),jN1(null),jO1(null)};let E=new $1;if(E.use("*",BO1({enabled:(F0)=>ao(F0,"debug")==="1"})),E.use("*",fh0),E.use("/*",IF8({origin:(F0,G0)=>Az8(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("*",rP8());E.use("*",async(F0,G0)=>{if(await G0(),Za(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(sX.HEALTH,(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);return F0.json({status:"ok"})}),E.get(sX.HEALTH_LIVE,(F0)=>{return F0.json({status:"ok"})}),E.get(sX.HEALTH_READY,async(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);let G0={};if(G0.postgres={status:await qN5(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(sX.METRICS,async(F0)=>{try{let G0=await uh0.collect(),P0=RN5.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(`${sX.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(F0)=>{let G0=F0.req.param("queueName");if(!IN5.has(G0))return F0.json({error:`Unknown queue: ${G0}`},404);let[P0,z0]=await Promise.all([BD.listQueuedWorkflows({queueName:G0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),BD.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",kE8),E.route("/api/_reports",hE8),E.route("/api/_stripe",Uq1),E.route("/api/_github",mE8({taskBoard:()=>l,contextFactory:()=>b})),E.route("/api/_git",Fs);let T={db:Z.db,encryptionKey:B0().encryptionKey};E.route("/api/_jira",eE8(T)),E.route("/api/_jira",pE8(T)),E.route("/report",fE8($.clientDir)),E.route("/api/auth/custom",eF8),E.all("/api/auth/admin/*",uU8),E.all("/api/auth/*",async(F0)=>{return await N4.handler(F0.req.raw)});let z=XG8();z.use("/.well-known/oauth-protected-resource/mcp/:connectionId",JQ0),z.use("/mcp/:connectionId/.well-known/oauth-protected-resource",JQ0),E.route("/",z),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",bZ0),E.route("/",HG8()),E.use("/oauth-proxy/:connectionId/*",JQ0),E.all("/oauth-proxy/:connectionId/*",wz8);let A=async(F0)=>{let P0=await kN5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",JQ0),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let R=async(F0)=>{let P0=await CN5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",R);let f=CF8({ttlMs:120000}),S=await cH8({db:Z.db,auth:N4,encryption:{key:B0().encryptionKey},observability:{tracer:yj,meter:W$},modelListCache:W,providerKeyCache:K,memberRoleCache:f});fY.set(S),g$$({db:Z.db,baseUrl:j5()}),dH8({db:Z.db}),tH8({db:Z.db}),GF8({db:Z.db}),DF8({db:Z.db}),sE8({db:Z.db,encryptionKey:B0().encryptionKey}),Ye$({db:Z.db}),PF8({db:Z.db}),ye$({db:Z.db});let V=qz(Z.db),v=new d70(Z.db),b=sP8({db:Z.db});CD1({storage:V,studioContextFactory:b,orgContextFactory:(F0)=>lJ(Z.db,F0),systemDatabaseUrl:Ve(B0().databaseUrl,B0().databasePgSsl)}),BD1({systemDatabaseUrl:Ve(B0().databaseUrl,B0().databasePgSsl),studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:k6}}),WD1({dispatchRunFn:G88,studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:k6}});let h=new yn(Z.db),l=new EW(Z.db),d=new hW(Z.db),W0=new _q1(l,b,d);if(B0().taskBoardReviewSweeperEnabled){W0.start();let F0=g2;g2=async()=>{await F0?.(),W0.dispose()}}lP8({automations:V,taskBoard:l,fire:HH,systemDatabaseUrl:Ve(B0().databaseUrl,B0().databasePgSsl),settleMs:B0().boardTransitionSettleSeconds*1000}),De$(cP8),V88({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let F0=U?.getConnection();return F0?await Ez8.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(Uh0(k6,G0,F0,P0),P0)await pn(l,F0,G0,d);return P0},markRunRequiresAction:async(F0,G0)=>{let P0=await h.requiresActionIfInProgress(F0,G0);return Uh0(k6,G0,F0,P0),P0},markRunFailed:async(F0,G0,P0,z0)=>{let j1=await h.markRunFailed(F0,G0,P0,z0);if(Uh0(k6,G0,F0,j1),j1)await pn(l,F0,G0,d);return j1},clearSynthesizedError:async(F0,G0)=>{await h.messageParts().replaceMessageParts(F0,_z(F0,G0),[])},persistTitle:(F0,G0,P0)=>h.update(F0,G0,{title:P0}),onTitleUpdated:async({runId:F0,orgId:G0,title:P0})=>{let z0=await h.get(F0,G0).catch(()=>null);k6.emit(G0,rU(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)}}),k$8({studioContextFactory:b,systemDatabaseUrl:Ve(B0().databaseUrl,B0().databasePgSsl),streamBuffer:F}),tP8(),h$$(),pH8(),sH8(),KF8(),OF8(),rE8(),dP8(),Ke$(),AF8(),ge$(),dE8();let k0=async(F0,G0,P0)=>{let z0=await V.findById(F0,G0);if(!z0)throw Error("Automation not found");return xD1({automationId:z0.id,organizationId:z0.organization_id,triggerId:null})},X0=new Xs(V,({automation:F0,trigger:G0,contextMessages:P0,idempotencyKey:z0})=>HH({automationId:F0.id,organizationId:F0.organization_id,triggerId:G0.id,contextMessages:P0},{idempotencyKey:z0})),U0=[xH(),wl(),PD()];for(let F0 of U0)Dh0(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(bh0(F0.req.path))return G0();let P0={measure:async(j1,b$)=>{wH(F0,j1);try{return await b$()}finally{IW(F0,j1)}}},z0=await fY.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((r$)=>console.error("[studio] revalidation cleanup error:",r$))}}),E.use("/api/:org/decopilot/*",eo),E.use("/api/:org/v1/*",eo),E.use("/api/:org/files/*",eo),E.use("*",async(F0,G0)=>{if(Pz8(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("*",qU({mountPath:"/api/org-sso"})),t.route("/",My0()),E.route("/api/org-sso",t),E.get("/api/tools/management",(F0)=>{return F0.json({tools:Be,grouped:rA()})}),E.use("/mcp/*",async(F0,G0)=>{wH(F0,"mcp");try{return await G0()}finally{IW(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),uK()){let{mountDevRoutes:F0}=(Lz8(),Ah0(Dz8));F0(E,a)}let $0=new $1;$0.use("*",qU({mountPath:"/mcp"})),$0.route("/",tb0()),E.route("/mcp",$0);let J0=new $1;J0.use("*",qU({mountPath:"/mcp/self"})),J0.route("/",Pg0()),E.route("/mcp/self",J0);let h0=new $1;h0.use("*",qU({mountPath:"/mcp"})),h0.route("/",ab0()),E.route("/mcp",h0),E.use("/api/:org/models/*",async(F0,G0)=>{wH(F0,"llm_models");try{return await G0()}finally{IW(F0,"llm_models")}});let C0=JN8({cancelBroadcast:H,streamBuffer:F,runRegistry:D});E.route("/api",C0),E.route("/api",YP8);let Y1=new $1;Y1.use("*",qU({mountPath:"/api"})),Y1.route("/",qg0()),E.route("/api",Y1),E.route("/api",qE8);let m0=new $1;m0.use("*",qU({mountPath:"/api"})),m0.route("/",Rg0({tokenStorage:v,automationEventDispatcher:X0})),E.route("/api",m0);let j0=new i70(Z.db),E0=new $1;E0.use("*",qU({mountPath:"/api"})),E0.route("/",_y0()),E.route("/api",E0),E.route("/api/deco-sites",PN8());let n0=new $1;n0.use("*",qU({mountPath:"/api/deco-sites"})),n0.route("/",by0()),E.route("/api/deco-sites",n0),E.route(Ty0,lU8()),E.route(JO8,KO8()),E.route("/api/_editor-resolve",ME8()),E.route(JU8,GU8()),E.route(jy0,zU8());let D1=B0(),Z1=D1.elevenlabsApiKey?new Zh0({apiKey:D1.elevenlabsApiKey,model:D1.elevenlabsVoiceModel,conversationModel:D1.elevenlabsConversationModel,voiceId:D1.elevenlabsVoiceId}):null,_0={openai:D1.openaiLiveApiKey?new Yq1({apiKey:D1.openaiLiveApiKey,voice:D1.openaiLiveVoice}):null,elevenlabs:Z1?new Qq1(Z1,()=>U?.getConnection()??null):null},d0=new Kq1({adapter:Z1,conversationAdapters:_0,defaults:D1,secret:zz8(D1),getConnection:()=>U?.getConnection()??null}),i0=rw8({voiceSessions:d0,kvStorage:j0,runRegistry:D,streamBuffer:F,sseHub:k6,cancelBroadcast:H,tokenStorage:v,automationEventDispatcher:X0,mountDevAssets:uK(),mcpAuth:a,oauthProxyHandler:wz8,watchHandler:qz8,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",i0),E.notFound((F0)=>{return F0.json({error:"Not Found",path:F0.req.path},404)}),E.onError(WN8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([k6.stop(),g2?Promise.resolve(g2()).finally(()=>{g2=null}):Promise.resolve()]),U)await U.drain().catch((F0)=>console.error("[shutdown] NATS drain error:",F0));console.log("[shutdown] Flushing telemetry..."),await aJ().catch((F0)=>console.error("[shutdown] Telemetry flush error:",F0)),console.log("[shutdown] Closing database..."),await B5$(Z).catch((F0)=>console.error("[shutdown] Database close error:",F0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await BD.registerQueue(BG,{partitionQueue:!0,concurrency:VD1,minPollingIntervalMs:ID1}),await BD.registerQueue(pW,{partitionQueue:!0,concurrency:UD1,priorityEnabled:!0}),await BD.registerQueue(wD,{workerConcurrency:B0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await BD.registerQueue(ED,{workerConcurrency:B0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await BD.registerQueue(fj,{partitionQueue:!0,concurrency:I$8}),await BD.registerQueue(c2,fe$),await BD.registerQueue(d2),await q21(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((F0)=>BD.deleteQueue(F0))),await kD1(Z.pool),aW$().catch((F0)=>{console.error("[studio-pack-backfill] failed:",F0)}),Dc(Z.db).catch((F0)=>{console.error("[automations] built-in seed failed:",F0)}),u$$().catch((F0)=>{console.error("[org-fs] public-sets boot sync kick failed:",F0)})}})}var Ez8,Oz8=5000,g2=null,wz8=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 fY.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 Yo(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=qE1(await W.json());if(!K)K=H.origin;let N=await xZ0(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=KG8(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(!Tz8(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(qF8(G.connection_url))j.searchParams.set("auto_personal","true"),j.searchParams.set("force_new","true");return $.redirect(j.toString(),302)}let E={Accept:$.req.header("Accept")||"application/json"},P=$.req.header("Content-Type");if(P)E["Content-Type"]=P;let T=$.req.header("Authorization");if(T)E.Authorization=T;let z,A=null,R=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(Y==="token"&&P?.includes("application/x-www-form-urlencoded")){if(T?.toLowerCase().startsWith("basic "))try{let d=atob(T.slice(6).trim()),W0=d.indexOf(":");if(W0!==-1){let k0=decodeURIComponent(d.slice(0,W0)),X0=decodeURIComponent(d.slice(W0+1));A=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)A=b;if(typeof h==="string"&&h)R=h;let l=new URLSearchParams;for(let[d,W0]of v.entries())l.append(d,W0.toString());z=l.toString()}else if(Y==="register"&&P?.toLowerCase().includes("application/json")){let v=await X.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",G.organization_id).executeTakeFirst(),b=await $.req.text(),h={};try{h=b?JSON.parse(b):{}}catch{z=b}let l=typeof h==="object"&&h!==null&&!Array.isArray(h);if(z===void 0&&!l)z=b;if(z===void 0){let d=h,W0=d.metadata&&typeof d.metadata==="object"?d.metadata:{};d.metadata={...W0,organization_id:G.organization_id,...v?.slug?{organization_slug:v.slug}:{},...v?.name?{organization_name:v.name}:{}},z=JSON.stringify(d),E["Content-Type"]="application/json"}}else z=$.req.raw.body??void 0;let f=await fetch(j.toString(),{method:$.req.method,headers:E,body:z,duplex:"half",redirect:"manual"}),S=new Headers,V=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[v,b]of f.headers.entries())if(!V.includes(v.toLowerCase()))S.set(v,b);if(Y==="token"&&f.ok){let v=await f.text();try{let b=JSON.parse(v);if(typeof b.access_token==="string"&&b.access_token){let h=typeof b.expires_in==="number"?new Date(Date.now()+b.expires_in*1000):null,l=null;try{l=await ez(G.connection_url)??D}catch{l=D}let d={connectionId:Z,accessToken:b.access_token,refreshToken:typeof b.refresh_token==="string"?b.refresh_token:null,scope:typeof b.scope==="string"?b.scope:null,expiresAt:h,clientId:A,clientSecret:R,tokenEndpoint:l};await new $9(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})},qz8=async($)=>{let Z=$.var.studioContext,Q=Z.auth.user?.id??Z.auth.apiKey?.userId;if(!Q)return $.json({error:"Unauthorized"},401);let Y=Z.organization?.id;if(!Y)return $.json({error:"organization id missing"},400);let X=$.req.query("types"),J=X?X.split(",").map((H)=>H.trim()).filter(Boolean):null,G=$.req.query("scope")==="all";if(G&&(!xB(Y)||!await fB(Z)))return $.json({error:"forbidden"},403);let W=G?I_0:Y;if(G)yO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return qj($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:Y,typePatterns:J,connectedAt:new Date().toISOString()})}),!k6.add({id:K,organizationId:W,typePatterns:J?.length?J:null,push:(N,B)=>{H.writeSSE({id:N.id,event:N.type,data:JSON.stringify(G?{...N,organizationId:B}:N)}).catch(()=>{k6.remove(W,K)})}})){await H.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let U=setInterval(()=>{H.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(U),k6.remove(W,K)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),k6.remove(W,K),N()})})})},RN5,IN5,kN5=()=>VN5(N4),CN5=()=>MN5(N4);var Mz8=L(()=>{h$();u1();l$$();nH8();aH8();HF8();jF8();UZ0();pU1();TF8();s50();F9();wi();R8();H8();By0();kF8();DO1();rK();bF();dz1();kG();f6();e4();az1();WU8();AU8();X21();mU8();B21();z21();A21();gK();fZ0();T21();KN8();Ly0();ew8();XE8();JE8();HE8();EE8();V21();ob0();XZ0();RE8();rb0();XT1();VE8();QT1();CE8();yE8();uE8();lE8();cE8();iE8();nE8();$P8();Aq1();_21();XP8();YT1();rA1();PY0();PP8();Hq1();RJ();ZB0();C80();EN1();f$0();g$0();EO1();zP8();TP8();w21();CP8();Av0();SP8();d50();n70();fO();c5();Qz1();fP8();iP8();U3();Iz();oP8();YF0();xq1();tW();R21();bO();JD1();YF0();_90();l50();lP1();aP8();Iw();eP8();Vs();dz1();gn();Xt();vv0();Ez8=_(cH(),1);RN5=new TN5,IN5=new Set([BG,pW,wD,ED,fj,c2])});var Cz8={};w6(Cz8,{resolveClientDir:()=>gN5,resolveAssetPathWithTraversalCheck:()=>kz8,isPathWithinDirectory:()=>Iz8,createAssetHandler:()=>hN5});import{resolve as GY0,dirname as _N5,join as vN5,extname as bN5,basename as xN5,sep as Vz8}from"path";function fN5($,Z){if($===Z||xN5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${Vz8}assets${Vz8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function Iz8($,Z){let Q=GY0(Z),Y=GY0($);return Y===Q||Y.startsWith(Q+"/")}function kz8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=GY0(Z,Q);if(!Iz8(Y,Z))return null;return Y}function gN5($,Z="../client"){let Q=new URL($),Y=_N5(Q.pathname);return GY0(Y,Z)}function hN5($={}){let{env:Z="production",clientDir:Q=yN5,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=kz8({requestPath:W,clientDir:Q});if(!K)return null;let H=vN5(K,"index.html"),F=GY0(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(bN5(K))?[H,F]:[];for(let D of[K,...B])try{let O=Bun.file(D);if(await O.exists())return new Response(O,{headers:fN5(D,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var yN5="./dist/client";var Sz8=()=>{};var _z8={};w6(_z8,{tryUpgradePreviewWs:()=>oN5,tryHandlePreviewHttp:()=>iN5,previewWebSocketHandler:()=>sN5,parsePreviewBaseDomain:()=>dN5,isPreviewWsData:()=>Lh0,extractHandleFromHost:()=>uq1});function mN5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function cN5(){return new Response(lN5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function dN5($){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 uq1($,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 iN5($,Z){let Q=uq1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let{handle:Y,slug:X}=A31(Q),J=await Z.getRunner();if(!J)return KY0(503,"preview proxy not configured");let G=await J.proxyPreviewRequest(Y,X?tN5($,X):$);if(G.headers.get(dp)&&mN5($))return cN5();return G.headers.delete(dp),G}function nN5($){return{protocols:$.upstreamProtocols,headers:{[z31]:$.appSlug}}}function tN5($,Z){let Q=new Headers($.headers);return Q.set(z31,Z),new Request($,{headers:Q})}function KY0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function Lh0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function oN5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=uq1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let{handle:X,slug:J}=A31(Y),G=await Q.getRunner();if(!G)return KY0(503,"preview proxy not configured");let W=await G.resolvePreviewUpstreamUrl(X);if(!W)return KY0(404,"sandbox not found");let K=new URL($.url);if(K.pathname.startsWith("/_sandbox"))return KY0(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 KY0(426,"upgrade failed");return}function WY0($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var uN5=256,lN5='<!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>',pN5,sN5;var vz8=L(()=>{v60();pN5=WebSocket;sN5={open($){let Z=$.data;if(!Lh0(Z))return;let Q;try{Q=Z.appSlug?new pN5(Z.upstreamUrl,nN5(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)}`),WY0($,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)=>{WY0($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{WY0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!Lh0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=uN5){WY0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!Lh0(Z))return;WY0($,Z,1000,"")}}});h$();var eq1="14";function $R1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:eq1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}h$();import az8 from"pg";var ZR1=8314027461559302n,rz8=600000,ez8=500;async function QR1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=rz8}=$,X=$.log??((K)=>console.log(K)),J=new az8.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",[ZR1.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$(ez8)}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)",[ZR1.toString()])}catch{}await J.end().catch(()=>{})}}u1();Mh0();f6();function a28(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function ch0($,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 gR1(){let $=a28();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:ch0($,"--cpu-prof-dir")??process.cwd(),name:ch0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(ch0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}ph0();var TY0;function nR1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=n2();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(()=>{}),TY0=setInterval(()=>void Z().catch(()=>{}),$),TY0.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(TY0)clearInterval(TY0)}}import*as $A8 from"bun:jsc";var{startSamplingProfiler:ZA8,samplingProfilerStackTraces:QA8}=$A8;function tR1(){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{ZA8()}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=QA8()?.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 oR1(){gR1();let $=[nR1(),pR1(),tR1()];return()=>{for(let Z of $)Z()}}import{existsSync as XB5}from"fs";var dW=B0();xR1();var{DBOS:HY0,DBOSClient:aN5}=await import("@dbos-inc/dbos-sdk");function pq1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var rN5=[BG,pW,wD,ED,fj,c2,d2],eN5=dW.dispatchRole==="worker"?rN5:dW.dispatchRole==="api"?[]:void 0;HY0.setConfig($R1({systemDatabaseUrl:pq1(dW.databaseUrl,dW.databasePgSsl),poolSize:dW.dbosPoolSize,executorID:dW.podName,listenQueues:eN5}));var{createApp:$B5}=await Promise.resolve().then(() => (Mz8(),Rz8)),{isServerPath:ZB5}=await Promise.resolve().then(() => (PY0(),wR1)),{createAssetHandler:QB5,resolveClientDir:gz8}=await Promise.resolve().then(() => (Sz8(),Cz8)),YB5=dW.port,bz8=gz8(import.meta.url,"../client"),hz8=XB5(bz8)?bz8:gz8(import.meta.url,"../dist/client"),JB5=QB5({clientDir:hz8,isServerPath:ZB5}),GB5={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function WB5($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(GB5))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:KB5,tryHandlePreviewHttp:HB5,tryUpgradePreviewWs:FB5,previewWebSocketHandler:lq1,isPreviewWsData:mq1}=await Promise.resolve().then(() => (vz8(),_z8)),{getOrInitSharedRunner:uz8}=await Promise.resolve().then(() => (vX(),Rc$)),lz8=KB5(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),xz8={baseDomain:lz8??"",getRunner:uz8};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())uz8().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var Oh0=await $B5({clientDir:hz8}),cq1=process.env.DBOS_CONDUCTOR_KEY?.trim(),fz8=process.env.DBOS_CONDUCTOR_URL?.trim();await QR1({databaseUrl:pq1(dW.databaseUrl,dW.databasePgSsl)},()=>HY0.launch({...cq1?{conductorKey:cq1}:{},...cq1&&fz8?{conductorURL:fz8}:{}}));console.log(`[dbos] application version: ${HY0.applicationVersion}`);var dq1=5,iq1=0;await $8(async()=>{iq1++;try{return await Oh0.initDbos()}catch($){let Z=iq1>=dq1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${iq1}/${dq1} failed, ${Z}`,$),$}},{maxAttempts:dq1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});var UB5=Bun.serve({idleTimeout:0,port:YB5,hostname:"0.0.0.0",fetch:async($,Z)=>{if(lz8){let Y=await FB5($,Z,xz8);if(Y===void 0)return;if(Y)return Y;let X=await HB5($,xz8);if(X)return X}let Q=await JB5($);if(Q)return WB5(Q);return Oh0.fetch($,{server:Z})},websocket:{open($){if(mq1($.data))lq1.open($)},message($,Z){if(mq1($.data))lq1.message($,Z)},close($){if(mq1($.data))lq1.close($)}},development:!1}),NB5=oR1();if(dW.localMode)Promise.resolve().then(() => (hh(),Lv0)).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(() => (hh(),Lv0));Z()}catch{}});var yz8=!1;async function BB5($){let Z;try{Z=await aN5.create({systemDatabaseUrl:pq1(dW.databaseUrl,dW.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:pW,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:pW}),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 jh0($){if(yz8)return;yz8=!0,console.log(`
4507
4507
  [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{NB5(),Oh0.markShuttingDown();let J=YR1(dW.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await G$(J),await UB5.stop(!0);let G=HY0.executorID;await HY0.shutdown(),await BB5(G),await Oh0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>jh0("SIGTERM"));process.on("SIGINT",()=>jh0("SIGINT"));process.on("SIGHUP",()=>jh0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),jh0("uncaughtException")});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.524.2",
3
+ "version": "4.524.3",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import{c as p,j as r}from"./index-BGCeOWuH.js";import{C as s}from"./index-CSsLL5lB.js";import{A as e}from"./analytics-tab-BHmGa-59.js";import{S as n}from"./settings-tab-Dk0U9Ztd.js";import{e as a}from"./use-organization-settings-BiInrSf0.js";import{b as c}from"./thread-route-D9dyzfFR.js";import"./use-mobile-jFUNwYYf.js";import"./use-sidebar-collapsed-BPZlAUWE.js";import"./use-chat-layout-state-C15u8M2V.js";import"./use-panel-navigate-BJRHz9-t.js";import"./use-project-scope-B0Sibn6g.js";import"./repository-binding-Meqp5p71.js";import"./use-mcp-client-P41n2mxI.js";import"./auth-BkqoCGcx.js";import"./thread-intent-DH83rsLQ.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-D75R450R.js";import"./task-board-DZ8Kzwkd.js";import"./schema-Db9nAPbV.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-BXl9rcx1.js";import"./AlertCircle-CIClX1OX.js";import"./Tool01-CyfGI7T6.js";import"./ArrowUp-DvNrLRdk.js";import"./ArrowLeft-hUis4zpK.js";import"./LinkBroken01-BbJzP52K.js";import"./ShoppingBag01-CrAecsFE.js";import"./ZoomOut-Csm0orCM.js";import"./Building02-DyaG8VRs.js";import"./CheckCircle-IjQMURt4.js";import"./ChevronUp-DZpXGp6s.js";import"./ChevronSelectorVertical-DSrF7Kt-.js";import"./UserSquare-BWlOHIw0.js";import"./Copy01-DelcC4NE.js";import"./CreditCard01-cYImG8Bl.js";import"./DotsVertical-Cd1ayiT8.js";import"./Image01-BmkGkBEJ.js";import"./Globe04-C3AUDQA6.js";import"./SwitchHorizontal01-BvXNAenZ.js";import"./Key01-BJu0utQ9.js";import"./Link01-CpEeBnOB.js";import"./Minus-Beni9ibl.js";import"./Monitor01-DIpgHRZ3.js";import"./Sun-Dm3m8VPj.js";import"./Play-CeJs-Z9F.js";import"./Plus-Dp5dZDoY.js";import"./SearchMd-DkOimU4h.js";import"./Trash01-BneWuuYf.js";import"./Upload01-CNkWpiz7.js";import"./Users01-ugdEQXdG.js";import"./XClose-BHn8yO7p.js";import"./tooltip-9LLsMgGV.js";import"./index-C91ph34T.js";import"./toolbar-icon-button-C6e2VzUh.js";import"./shell-layout-aaJ-Ow-a.js";import"./use-clock-tick-DIHPLwxm.js";import"./command-DoejxN8Q.js";import"./index-BHWlfC8b.js";import"./integration-icon-IfDXGweg.js";import"./project-icon-CjQuZIIb.js";import"./new-project-dialog-BZU_MI3Q.js";import"./label-_maV4eWQ.js";import"./repository-import-picker-FH262XPV.js";import"./use-navigate-to-agent-Dm6cdVpv.js";import"./repository-picker-DCYyzOOP.js";import"./useInfiniteQuery-B_LZh1B0.js";import"./infiniteQueryObserver-DdJGfIBw.js";import"./collection-search-D_HANk-F.js";import"./use-debounced-value-N-JjpU1V.js";import"./required-auth-layout-tipFurup.js";import"./autosend-1U_b-i1h.js";import"./use-org-sso-BhUG19nu.js";import"./sheet-C3lf7JiX.js";import"./resizable-DhKaPyjj.js";import"./badge-DESNookz.js";import"./checkbox-D-LzvMyz.js";import"./table-CsgmIfM7.js";import"./chart-CaDJ4F39.js";import"./index-DEhotlUt.js";import"./symbol-DhjzVarJ.js";import"./CategoricalChart-B2xwR0Vg.js";import"./empty-state-C0q6FDCT.js";import"./site-slug-DebpOoQq.js";import"./AreaChart-CFefRI3l.js";import"./CartesianChart-Cm6m5mMn.js";import"./index-vWFZdxRo.js";import"./extract-connection-data-DyihSSH6.js";import"./metadata-D72DunRR.js";import"./connection-DgmraTnv.js";import"./url-slug-DonaWwCk.js";import"./chat-context-BvBN6HgF.js";import"./use-decopilot-events-CqPtaVnx.js";import"./use-ai-providers-BHsc3bDD.js";import"./location-V0VwTJTt.js";import"./build-improve-prompt-doc-CiV-KlOc.js";import"./empty-state-BXpVXa8p.js";import"./use-date-fns-locale-BQCqx0nl.js";import"./mcp-oauth-ZXLBTZQF.js";import"./mcp-oauth-UPAY9qQh.js";import"./textarea-PZ5-N42X.js";import"./use-connection-BQFGYTV6.js";import"./use-debounced-autosave-DXyNDYcX.js";import"./add-connection-dialog-7qj2kjMr.js";import"./connection-card-nzYl3iaE.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-BxmRq7z0.js";import"./form-BKxpLzV1.js";import"./select-C0Q0f4At.js";import"./index-BdQq_4o_.js";import"./schema-LbfQM_um.js";import"./connection-form-helpers-DQAPN_By.js";import"./authenticate-and-persist-oauth-BD9brsY_.js";import"./collection-tabs-H7yEtuRH.js";import"./use-infinite-scroll-CNc2NI3i.js";import"./useSuspenseInfiniteQuery-CgbZRhlW.js";import"./file-type-icon-T5-JgFJO.js";import"./use-org-fs-BrF4BnPF.js";import"./search-input-BiW12RB7.js";import"./use-mcp-auth-status-CF5TaDec.js";import"./types-BO2WHIDA.js";import"./use-mcp-tools-BNi1ikeO.js";import"./use-mcp-prompts-B3Nr4ZJG.js";import"./utils-CVEq3hMx.js";import"./switch-DXvm-pfC.js";import"./popover-SHWbH4i8.js";import"./scroll-area-Do3s8MFg.js";import"./experiments-tab-choice-CJW0rlLk.js";import"./use-project-native-view-presence-7WN9qseE.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-DH6Ac5Y5.js";import"./optimistic-project-sidebar-views-BpMb4HEN.js";import"./sections-NxijzCAP.js";import"./use-copy-CxT0JeDz.js";import"./virtual-mcp-CjF7Cu1C.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-4kZnJB0L.js";import"./use-secrets-D7gMnlZB.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-BGCeOWuH.js";import{C as x}from"./index-CSsLL5lB.js";import{a as h}from"./thread-route-D9dyzfFR.js";import{u as $}from"./use-task-metadata-DYMge1Ms.js";import{AppViewContent as A}from"./project-app-view-DnVvuNnI.js";import"./use-mobile-jFUNwYYf.js";import"./use-sidebar-collapsed-BPZlAUWE.js";import"./use-chat-layout-state-C15u8M2V.js";import"./use-panel-navigate-BJRHz9-t.js";import"./use-project-scope-B0Sibn6g.js";import"./repository-binding-Meqp5p71.js";import"./use-mcp-client-P41n2mxI.js";import"./auth-BkqoCGcx.js";import"./thread-intent-DH83rsLQ.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-D75R450R.js";import"./task-board-DZ8Kzwkd.js";import"./schema-Db9nAPbV.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-BXl9rcx1.js";import"./AlertCircle-CIClX1OX.js";import"./Tool01-CyfGI7T6.js";import"./ArrowUp-DvNrLRdk.js";import"./ArrowLeft-hUis4zpK.js";import"./LinkBroken01-BbJzP52K.js";import"./ShoppingBag01-CrAecsFE.js";import"./ZoomOut-Csm0orCM.js";import"./Building02-DyaG8VRs.js";import"./CheckCircle-IjQMURt4.js";import"./ChevronUp-DZpXGp6s.js";import"./ChevronSelectorVertical-DSrF7Kt-.js";import"./UserSquare-BWlOHIw0.js";import"./Copy01-DelcC4NE.js";import"./CreditCard01-cYImG8Bl.js";import"./DotsVertical-Cd1ayiT8.js";import"./Image01-BmkGkBEJ.js";import"./Globe04-C3AUDQA6.js";import"./SwitchHorizontal01-BvXNAenZ.js";import"./Key01-BJu0utQ9.js";import"./Link01-CpEeBnOB.js";import"./Minus-Beni9ibl.js";import"./Monitor01-DIpgHRZ3.js";import"./Sun-Dm3m8VPj.js";import"./Play-CeJs-Z9F.js";import"./Plus-Dp5dZDoY.js";import"./SearchMd-DkOimU4h.js";import"./Trash01-BneWuuYf.js";import"./Upload01-CNkWpiz7.js";import"./Users01-ugdEQXdG.js";import"./XClose-BHn8yO7p.js";import"./tooltip-9LLsMgGV.js";import"./index-C91ph34T.js";import"./toolbar-icon-button-C6e2VzUh.js";import"./shell-layout-aaJ-Ow-a.js";import"./use-clock-tick-DIHPLwxm.js";import"./command-DoejxN8Q.js";import"./index-BHWlfC8b.js";import"./integration-icon-IfDXGweg.js";import"./project-icon-CjQuZIIb.js";import"./new-project-dialog-BZU_MI3Q.js";import"./label-_maV4eWQ.js";import"./repository-import-picker-FH262XPV.js";import"./use-navigate-to-agent-Dm6cdVpv.js";import"./repository-picker-DCYyzOOP.js";import"./useInfiniteQuery-B_LZh1B0.js";import"./infiniteQueryObserver-DdJGfIBw.js";import"./collection-search-D_HANk-F.js";import"./use-debounced-value-N-JjpU1V.js";import"./use-organization-settings-BiInrSf0.js";import"./required-auth-layout-tipFurup.js";import"./autosend-1U_b-i1h.js";import"./use-org-sso-BhUG19nu.js";import"./sheet-C3lf7JiX.js";import"./resizable-DhKaPyjj.js";import"./tool-namespace-Y0TJrGSX.js";import"./use-mcp-tools-BNi1ikeO.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-C-WjAbV3.js";import"./types-BO2WHIDA.js";import"./chat-context-BvBN6HgF.js";import"./use-decopilot-events-CqPtaVnx.js";import"./use-ai-providers-BHsc3bDD.js";import"./location-V0VwTJTt.js";import"./task-route-B3yf9UbZ.js";import"./task-key-BCHdFiOO.js";import"./core.esm-kr0nDMAf.js";import"./connect-source-dialog-CKPrWV3W.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-V3BIIJeW.js";import"./companions-core-DzyeM-yJ.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-ByTYKy_L.js";import"./form-BKxpLzV1.js";import"./icon-button-BpGFmmxF.js";import"./provision-repo-scoped-github-connection-lckxpDHD.js";import"./useQueries-CunEDk2w.js";import"./authenticate-and-persist-oauth-BD9brsY_.js";import"./mcp-oauth-ZXLBTZQF.js";import"./mcp-oauth-UPAY9qQh.js";import"./track-BDVG3U2y.js";import"./extract-connection-data-DyihSSH6.js";import"./connection-DgmraTnv.js";import"./url-slug-DonaWwCk.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 x,b as V,j as r,bA as b}from"./index-BGCeOWuH.js";import{C as D}from"./index-CSsLL5lB.js";import{S as k}from"./site-draft-actions-BdvwngLt.js";import{r as v}from"./agent-icon-BXl9rcx1.js";import{CampaignsView as N}from"./campaigns-view-3-zGJglb.js";import{c as F,S as M}from"./site-draft-view-DJ-2XrRv.js";import{a as T}from"./use-panel-navigate-BJRHz9-t.js";import{u as A,e as R}from"./experiments-tab-choice-CJW0rlLk.js";import{S as $}from"./settings-tab-Dk0U9Ztd.js";import{b as I}from"./thread-route-D9dyzfFR.js";import"./use-mobile-jFUNwYYf.js";import"./use-sidebar-collapsed-BPZlAUWE.js";import"./use-chat-layout-state-C15u8M2V.js";import"./thread-intent-DH83rsLQ.js";import"./use-mcp-client-P41n2mxI.js";import"./auth-BkqoCGcx.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-D75R450R.js";import"./task-board-DZ8Kzwkd.js";import"./schema-Db9nAPbV.js";import"./slugify-CEUa2lfQ.js";import"./tooltip-9LLsMgGV.js";import"./index-C91ph34T.js";import"./toolbar-icon-button-C6e2VzUh.js";import"./shell-layout-aaJ-Ow-a.js";import"./Building02-DyaG8VRs.js";import"./UserSquare-BWlOHIw0.js";import"./XClose-BHn8yO7p.js";import"./use-project-scope-B0Sibn6g.js";import"./repository-binding-Meqp5p71.js";import"./CheckCircle-IjQMURt4.js";import"./Monitor01-DIpgHRZ3.js";import"./ZoomOut-Csm0orCM.js";import"./use-clock-tick-DIHPLwxm.js";import"./Plus-Dp5dZDoY.js";import"./Tool01-CyfGI7T6.js";import"./command-DoejxN8Q.js";import"./index-BHWlfC8b.js";import"./SearchMd-DkOimU4h.js";import"./integration-icon-IfDXGweg.js";import"./LinkBroken01-BbJzP52K.js";import"./project-icon-CjQuZIIb.js";import"./new-project-dialog-BZU_MI3Q.js";import"./ArrowLeft-hUis4zpK.js";import"./label-_maV4eWQ.js";import"./repository-import-picker-FH262XPV.js";import"./use-navigate-to-agent-Dm6cdVpv.js";import"./repository-picker-DCYyzOOP.js";import"./useInfiniteQuery-B_LZh1B0.js";import"./infiniteQueryObserver-DdJGfIBw.js";import"./collection-search-D_HANk-F.js";import"./ShoppingBag01-CrAecsFE.js";import"./use-debounced-value-N-JjpU1V.js";import"./use-organization-settings-BiInrSf0.js";import"./required-auth-layout-tipFurup.js";import"./autosend-1U_b-i1h.js";import"./use-org-sso-BhUG19nu.js";import"./sheet-C3lf7JiX.js";import"./resizable-DhKaPyjj.js";import"./separator-DcYK5L3O.js";import"./chat-context-BvBN6HgF.js";import"./use-decopilot-events-CqPtaVnx.js";import"./use-ai-providers-BHsc3bDD.js";import"./location-V0VwTJTt.js";import"./site-editor-toast-DS0_fxT0.js";import"./use-session-runtime-CQn-52Ez.js";import"./sandbox-url-D3mC8qhT.js";import"./utils-OgCNPQQr.js";import"./Image01-BmkGkBEJ.js";import"./use-sandbox-events-BNCiNcVF.js";import"./sandbox-git-api-CH_-QFpD.js";import"./popover-SHWbH4i8.js";import"./tabs-snNNT2OQ.js";import"./active-indicator-CCMhAsc_.js";import"./ChevronUp-DZpXGp6s.js";import"./DotsVertical-Cd1ayiT8.js";import"./Trash01-BneWuuYf.js";import"./use-releases-tJmW6WNc.js";import"./serial-task-queue-CGOeQgpr.js";import"./virtual-mcp-CjF7Cu1C.js";import"./url-slug-DonaWwCk.js";import"./use-fast-preview-draft-url-4INawxcX.js";import"./section-preview-url-7zfngvgW.js";import"./preview-link-C762yHOt.js";import"./variant-draft-pointer-BeAKcq_c.js";import"./parse-sections-BHOqhf01.js";import"./index-CiU3Lit1.js";import"./ArrowUp-DvNrLRdk.js";import"./tool-namespace-Y0TJrGSX.js";import"./drawer-BxmRq7z0.js";import"./use-mcp-prompts-B3Nr4ZJG.js";import"./usage-stats-DBeLsjRR.js";import"./form-BKxpLzV1.js";import"./utils-CVEq3hMx.js";import"./markdown-Pxz-NCAq.js";import"./use-copy-CxT0JeDz.js";import"./Copy01-DelcC4NE.js";import"./input-BJWjsMTr.js";import"./icon-button-BpGFmmxF.js";import"./file-type-icon-T5-JgFJO.js";import"./chat-draft-XY_NNpgA.js";import"./Upload01-CNkWpiz7.js";import"./AlertCircle-CIClX1OX.js";import"./select-C0Q0f4At.js";import"./index-BdQq_4o_.js";import"./use-deco-credits-DDwwBuMm.js";import"./toggle-group-CUFIN5dE.js";import"./use-open-billing-url-Byo1M4SG.js";import"./index-CbIYCvQg.js";import"./checkbox-D-LzvMyz.js";import"./Minus-Beni9ibl.js";import"./ChevronSelectorVertical-DSrF7Kt-.js";import"./Key01-BJu0utQ9.js";import"./ai-providers-logos-DD3qZ33J.js";import"./input-DdaB0aDZ.js";import"./suggestion-BqSBag09.js";import"./use-org-fs-BrF4BnPF.js";import"./Link01-CpEeBnOB.js";import"./question-004-sINsf4GQ.js";import"./feature-paywall-CaUW3vBu.js";import"./plan-ladder-BT3Oz8Ev.js";import"./add-connection-dialog-7qj2kjMr.js";import"./extract-connection-data-DyihSSH6.js";import"./metadata-D72DunRR.js";import"./connection-DgmraTnv.js";import"./connection-card-nzYl3iaE.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-PZ5-N42X.js";import"./use-connection-BQFGYTV6.js";import"./schema-LbfQM_um.js";import"./connection-form-helpers-DQAPN_By.js";import"./authenticate-and-persist-oauth-BD9brsY_.js";import"./mcp-oauth-ZXLBTZQF.js";import"./mcp-oauth-UPAY9qQh.js";import"./collection-tabs-H7yEtuRH.js";import"./badge-DESNookz.js";import"./use-infinite-scroll-CNc2NI3i.js";import"./useSuspenseInfiniteQuery-CgbZRhlW.js";import"./use-task-board-events-DBa8GRgx.js";import"./pair-DVCmCnBf.js";import"./collapsible-B9h9LvCC.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-C-WjAbV3.js";import"./types-BO2WHIDA.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./use-thread-outputs-CxOHL03a.js";import"./releases-api-BmEWQbgz.js";import"./use-content-sync-DPGe01L6.js";import"./named-rule-uses-5Sl1aIdP.js";import"./device-hint-SeLRi17j.js";import"./editor-vxR6fGAu.js";import"./section-array-field-DlpdCCcl.js";import"./alert-BxwQ9GWi.js";import"./save-changes-debug-nBi-n9eV.js";import"./sandbox-lifecycle-context-D9P5uTE7.js";import"./sandbox-start-errors-BK_aDCyt.js";import"./CreditCard01-cYImG8Bl.js";import"./Globe04-C3AUDQA6.js";import"./SwitchHorizontal01-BvXNAenZ.js";import"./Sun-Dm3m8VPj.js";import"./Play-CeJs-Z9F.js";import"./Users01-ugdEQXdG.js";import"./scroll-area-Do3s8MFg.js";import"./named-rule-view-ChwtdSTO.js";import"./blocks-tab-states-Bji5rJXk.js";import"./slider-Brs1MiDz.js";import"./index-B54Dwq_E.js";import"./tooltipContext-D1XV88gx.js";import"./CategoricalChart-B2xwR0Vg.js";import"./index-DEhotlUt.js";import"./ActiveShapeUtils-C-rHC-K0.js";import"./Sector-DYInMAbx.js";import"./symbol-DhjzVarJ.js";import"./empty-state-BXpVXa8p.js";import"./use-apply-named-rule---oSjx7n.js";import"./use-move-blocks-B-yW6Slv.js";import"./date-utils-CrvIKg-s.js";import"./empty-state-C0q6FDCT.js";import"./index-vWFZdxRo.js";import"./build-improve-prompt-doc-CiV-KlOc.js";import"./use-date-fns-locale-BQCqx0nl.js";import"./use-debounced-autosave-DXyNDYcX.js";import"./search-input-BiW12RB7.js";import"./use-mcp-auth-status-CF5TaDec.js";import"./use-mcp-tools-BNi1ikeO.js";import"./switch-DXvm-pfC.js";import"./use-project-native-view-presence-7WN9qseE.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-DH6Ac5Y5.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-BpMb4HEN.js";import"./sections-NxijzCAP.js";import"./secret-picker-4kZnJB0L.js";import"./use-secrets-D7gMnlZB.js";import"./app-preview-url-9Od4s8Sz.js";function h(){const o=x.c(1);let t;return o[0]===Symbol.for("react.memo_cache_sentinel")?(t=r.jsxs("div",{className:"flex flex-col gap-3 p-4","data-testid":"calendar-skeleton","aria-busy":"true",children:[r.jsx(b,{className:"h-6 w-40"}),r.jsx(b,{className:"h-40 w-full"})]}),o[0]=t):t=o[0],t}function E(o){const t=x.c(22),{virtualMcpId:p}=o,i=V(),{openPanel:m}=T();let f;t[0]===Symbol.for("react.memo_cache_sentinel")?(f=r.jsx(v,{size:28,className:"text-muted-foreground"}),t[0]=f):f=t[0];let e;t[1]!==i?(e=i("sandbox.calendarView.noDraft.title"),t[1]=i,t[2]=e):e=t[2];let a;t[3]!==i?(a=i("sandbox.calendarView.noDraft.desc"),t[3]=i,t[4]=a):a=t[4];let s;t[5]!==i?(s=i("sandbox.calendarView.loadFailed"),t[5]=i,t[6]=s):s=t[6];let l;t[7]!==i?(l=i("sandbox.calendarView.loadFailedHint"),t[7]=i,t[8]=l):l=t[8];let n;t[9]!==e||t[10]!==a||t[11]!==s||t[12]!==l?(n={noDraftTitle:e,noDraftDesc:a,loadFailed:s,loadFailedHint:l},t[9]=e,t[10]=a,t[11]=s,t[12]=l,t[13]=n):n=t[13];let d;t[14]===Symbol.for("react.memo_cache_sentinel")?(d=r.jsx(h,{}),t[14]=d):d=t[14];let c;t[15]!==m||t[16]!==p?(c=j=>{const{orgSlug:S,branch:w,decofile:g,meta:_}=j;return r.jsx("div",{className:"h-full w-full","data-testid":"calendar-view",children:r.jsx(N,{orgSlug:S,virtualMcpId:p,branch:w,decofile:g,meta:_,initialView:"timeline",onOpenUse:y=>m("content",{search:C=>({...C,...F(y)})})})})},t[15]=m,t[16]=p,t[17]=c):c=t[17];let u;return t[18]!==n||t[19]!==c||t[20]!==p?(u=r.jsx(M,{virtualMcpId:p,icon:f,copy:n,skeleton:d,children:c}),t[18]=n,t[19]=c,t[20]=p,t[21]=u):u=t[21],u}function H(){const o=x.c(5),t=I(),p=A(t);if(R(p)){let m;return o[0]!==t?(m=r.jsx(E,{virtualMcpId:t}),o[0]=t,o[1]=m):m=o[1],m}if(p==="loading"){let m;return o[2]===Symbol.for("react.memo_cache_sentinel")?(m=r.jsx(h,{}),o[2]=m):m=o[2],m}let i;return o[3]!==t?(i=r.jsx($,{virtualMcpId:t}),o[3]=t,o[4]=i):i=o[4],i}function wr(){const o=x.c(1);let t;return o[0]===Symbol.for("react.memo_cache_sentinel")?(t=r.jsx(D.Content,{actions:r.jsx(k,{blocksOnly:!0}),children:r.jsx(H,{})}),o[0]=t):t=o[0],t}export{wr as default};
@@ -1 +0,0 @@
1
- import{c,j as e,bA as b,u as g}from"./index-BGCeOWuH.js";import{C as j}from"./index-CSsLL5lB.js";import{F as v,H as S}from"./file-share-button-BwVAEVZB.js";import{u as k,b as y,e as _}from"./use-org-fs-BrF4BnPF.js";import{S as w}from"./settings-tab-Dk0U9Ztd.js";import{b as M}from"./thread-route-D9dyzfFR.js";import"./use-mobile-jFUNwYYf.js";import"./use-sidebar-collapsed-BPZlAUWE.js";import"./use-chat-layout-state-C15u8M2V.js";import"./use-panel-navigate-BJRHz9-t.js";import"./use-project-scope-B0Sibn6g.js";import"./repository-binding-Meqp5p71.js";import"./use-mcp-client-P41n2mxI.js";import"./auth-BkqoCGcx.js";import"./thread-intent-DH83rsLQ.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-D75R450R.js";import"./task-board-DZ8Kzwkd.js";import"./schema-Db9nAPbV.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-BXl9rcx1.js";import"./AlertCircle-CIClX1OX.js";import"./Tool01-CyfGI7T6.js";import"./ArrowUp-DvNrLRdk.js";import"./ArrowLeft-hUis4zpK.js";import"./LinkBroken01-BbJzP52K.js";import"./ShoppingBag01-CrAecsFE.js";import"./ZoomOut-Csm0orCM.js";import"./Building02-DyaG8VRs.js";import"./CheckCircle-IjQMURt4.js";import"./ChevronUp-DZpXGp6s.js";import"./ChevronSelectorVertical-DSrF7Kt-.js";import"./UserSquare-BWlOHIw0.js";import"./Copy01-DelcC4NE.js";import"./CreditCard01-cYImG8Bl.js";import"./DotsVertical-Cd1ayiT8.js";import"./Image01-BmkGkBEJ.js";import"./Globe04-C3AUDQA6.js";import"./SwitchHorizontal01-BvXNAenZ.js";import"./Key01-BJu0utQ9.js";import"./Link01-CpEeBnOB.js";import"./Minus-Beni9ibl.js";import"./Monitor01-DIpgHRZ3.js";import"./Sun-Dm3m8VPj.js";import"./Play-CeJs-Z9F.js";import"./Plus-Dp5dZDoY.js";import"./SearchMd-DkOimU4h.js";import"./Trash01-BneWuuYf.js";import"./Upload01-CNkWpiz7.js";import"./Users01-ugdEQXdG.js";import"./XClose-BHn8yO7p.js";import"./tooltip-9LLsMgGV.js";import"./index-C91ph34T.js";import"./toolbar-icon-button-C6e2VzUh.js";import"./shell-layout-aaJ-Ow-a.js";import"./use-clock-tick-DIHPLwxm.js";import"./command-DoejxN8Q.js";import"./index-BHWlfC8b.js";import"./integration-icon-IfDXGweg.js";import"./project-icon-CjQuZIIb.js";import"./new-project-dialog-BZU_MI3Q.js";import"./label-_maV4eWQ.js";import"./repository-import-picker-FH262XPV.js";import"./use-navigate-to-agent-Dm6cdVpv.js";import"./repository-picker-DCYyzOOP.js";import"./useInfiniteQuery-B_LZh1B0.js";import"./infiniteQueryObserver-DdJGfIBw.js";import"./collection-search-D_HANk-F.js";import"./use-debounced-value-N-JjpU1V.js";import"./use-organization-settings-BiInrSf0.js";import"./required-auth-layout-tipFurup.js";import"./autosend-1U_b-i1h.js";import"./use-org-sso-BhUG19nu.js";import"./sheet-C3lf7JiX.js";import"./resizable-DhKaPyjj.js";import"./popover-SHWbH4i8.js";import"./index-vWFZdxRo.js";import"./extract-connection-data-DyihSSH6.js";import"./metadata-D72DunRR.js";import"./connection-DgmraTnv.js";import"./url-slug-DonaWwCk.js";import"./chat-context-BvBN6HgF.js";import"./use-decopilot-events-CqPtaVnx.js";import"./use-ai-providers-BHsc3bDD.js";import"./location-V0VwTJTt.js";import"./build-improve-prompt-doc-CiV-KlOc.js";import"./empty-state-BXpVXa8p.js";import"./use-date-fns-locale-BQCqx0nl.js";import"./mcp-oauth-ZXLBTZQF.js";import"./mcp-oauth-UPAY9qQh.js";import"./textarea-PZ5-N42X.js";import"./use-connection-BQFGYTV6.js";import"./use-debounced-autosave-DXyNDYcX.js";import"./add-connection-dialog-7qj2kjMr.js";import"./connection-card-nzYl3iaE.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-BxmRq7z0.js";import"./form-BKxpLzV1.js";import"./select-C0Q0f4At.js";import"./index-BdQq_4o_.js";import"./schema-LbfQM_um.js";import"./connection-form-helpers-DQAPN_By.js";import"./authenticate-and-persist-oauth-BD9brsY_.js";import"./collection-tabs-H7yEtuRH.js";import"./badge-DESNookz.js";import"./use-infinite-scroll-CNc2NI3i.js";import"./useSuspenseInfiniteQuery-CgbZRhlW.js";import"./file-type-icon-T5-JgFJO.js";import"./checkbox-D-LzvMyz.js";import"./search-input-BiW12RB7.js";import"./use-mcp-auth-status-CF5TaDec.js";import"./types-BO2WHIDA.js";import"./use-mcp-tools-BNi1ikeO.js";import"./use-mcp-prompts-B3Nr4ZJG.js";import"./utils-CVEq3hMx.js";import"./switch-DXvm-pfC.js";import"./scroll-area-Do3s8MFg.js";import"./experiments-tab-choice-CJW0rlLk.js";import"./use-project-native-view-presence-7WN9qseE.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-DH6Ac5Y5.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-BpMb4HEN.js";import"./sections-NxijzCAP.js";import"./use-copy-CxT0JeDz.js";import"./virtual-mcp-CjF7Cu1C.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-4kZnJB0L.js";import"./use-secrets-D7gMnlZB.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};