decocms 4.406.0 → 4.406.2

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 (349) hide show
  1. package/dist/client/assets/{AlertCircle-CgujCznd.js → AlertCircle-BQVXEKUc.js} +1 -1
  2. package/dist/client/assets/{AreaChart-Dl87CKFl.js → AreaChart-B_KOVsWH.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-DYz0WE09.js → ArrowLeft-BeFq6jod.js} +1 -1
  4. package/dist/client/assets/{ArrowRight-CWiigebn.js → ArrowRight-DVxyJd1l.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-DBpBKFdD.js → ArrowUp-MMes236V.js} +1 -1
  6. package/dist/client/assets/{CartesianChart-CQtCbOPS.js → CartesianChart-4nAUsvcH.js} +1 -1
  7. package/dist/client/assets/{Check-BO0tsZXP.js → Check-DjwzpZIC.js} +1 -1
  8. package/dist/client/assets/{CheckCircle-DppxuNa7.js → CheckCircle-CflfIWoL.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-WgMV95Wl.js → ChevronUp-BYWuf4SY.js} +1 -1
  10. package/dist/client/assets/{Copy01-CP89x_RS.js → Copy01-CjQc-Ykz.js} +1 -1
  11. package/dist/client/assets/{CreditCard01-H8jUQWxs.js → CreditCard01-Cl8DBAML.js} +1 -1
  12. package/dist/client/assets/{DotsVertical-4TEj21cV.js → DotsVertical-BV4Cp92F.js} +1 -1
  13. package/dist/client/assets/{ErrorBarContext-qNEZftpi.js → ErrorBarContext-DMbtuZnP.js} +1 -1
  14. package/dist/client/assets/{Eye-ARN8W0OA.js → Eye-CEZdPSLz.js} +1 -1
  15. package/dist/client/assets/{Globe04-CdU3biQC.js → Globe04-t1_NZ4S5.js} +1 -1
  16. package/dist/client/assets/{Image01-l9PMSSY0.js → Image01-Bed8faGM.js} +1 -1
  17. package/dist/client/assets/{Key01-QkJYBYv-.js → Key01-DDYGtlfn.js} +1 -1
  18. package/dist/client/assets/{LayoutLeft-CgYc0js8.js → LayoutLeft-CZkz1jNL.js} +1 -1
  19. package/dist/client/assets/{Line-Bv4GUfne.js → Line-CXvxeuZf.js} +1 -1
  20. package/dist/client/assets/{Link01-CmwuZgWx.js → Link01-BbIArCE_.js} +1 -1
  21. package/dist/client/assets/{LinkExternal01-DQ25aknz.js → LinkExternal01-DpNDkCnx.js} +1 -1
  22. package/dist/client/assets/{Monitor01-BVwwAtM6.js → Monitor01-Ah5De9w0.js} +1 -1
  23. package/dist/client/assets/{Palette-Bjt7HH4h.js → Palette-ChnBuAtH.js} +1 -1
  24. package/dist/client/assets/{Plus-TU-OKHt0.js → Plus-BICk297J.js} +1 -1
  25. package/dist/client/assets/{SearchMd-Cm4pXgfM.js → SearchMd-v8QAVRjQ.js} +1 -1
  26. package/dist/client/assets/{Sector-BdyQFYKV.js → Sector-Ch6wxiVl.js} +1 -1
  27. package/dist/client/assets/{Share07-DyeTiScB.js → Share07-CmuXKCN5.js} +1 -1
  28. package/dist/client/assets/{Sun-DgGlHV06.js → Sun-DTRl56RH.js} +1 -1
  29. package/dist/client/assets/{Tool01-CQ5Xc26A.js → Tool01-Bdvuj8zb.js} +1 -1
  30. package/dist/client/assets/{Trash01-B9y1vShv.js → Trash01-B5wUzx2c.js} +1 -1
  31. package/dist/client/assets/{Upload01-DAXWNq7T.js → Upload01-Cu-9L0qW.js} +1 -1
  32. package/dist/client/assets/{User01-p3MXVQ0Z.js → User01-DaLqt8Zu.js} +1 -1
  33. package/dist/client/assets/{UserSquare-C7aUR_aW.js → UserSquare-C7TikGGO.js} +1 -1
  34. package/dist/client/assets/{Users01-CohEKYSh.js → Users01-BGfUl9Z9.js} +1 -1
  35. package/dist/client/assets/{X-qOHqlxey.js → X-CRCA8SGk.js} +1 -1
  36. package/dist/client/assets/{XClose-hPk1Hqkr.js → XClose-DJgtnkEc.js} +1 -1
  37. package/dist/client/assets/{Zap-CyBIW8px.js → Zap-DHslHQ0t.js} +1 -1
  38. package/dist/client/assets/{ZoomOut-DZCavZ8o.js → ZoomOut-DIggrZVG.js} +1 -1
  39. package/dist/client/assets/{access-gate-DNEAyv2j.js → access-gate-Cco763GH.js} +1 -1
  40. package/dist/client/assets/{add-connection-dialog-bRZtyL-b.js → add-connection-dialog-CvOk-16j.js} +1 -1
  41. package/dist/client/assets/{agent-analytics-tSEQzJqV.js → agent-analytics-BuShy2lS.js} +1 -1
  42. package/dist/client/assets/agent-app-D6Tp5vlj.js +1 -0
  43. package/dist/client/assets/{agent-assets-B0UpGeZB.js → agent-assets-R_wphq7p.js} +1 -1
  44. package/dist/client/assets/{agent-automation-BnqBubMi.js → agent-automation-C6iPqVOP.js} +1 -1
  45. package/dist/client/assets/{agent-automations-Bhwn57Bu.js → agent-automations-CLIHaUQn.js} +1 -1
  46. package/dist/client/assets/{agent-connect-sources-e0UYTGJa.js → agent-connect-sources-tobP9soC.js} +1 -1
  47. package/dist/client/assets/agent-deck-DtlpMciC.js +1 -0
  48. package/dist/client/assets/{agent-e2e-nAUWbLbx.js → agent-e2e-DakaaNs8.js} +1 -1
  49. package/dist/client/assets/{agent-experiments-BolDhf_W.js → agent-experiments-BhEpxS1S.js} +1 -1
  50. package/dist/client/assets/{agent-file-C1aTOAN-.js → agent-file-B7S5_-vD.js} +1 -1
  51. package/dist/client/assets/{agent-git-BjUtQS3j.js → agent-git-so-osFz0.js} +1 -1
  52. package/dist/client/assets/{agent-hosting-DIjx0dPc.js → agent-hosting-BXsuvmaY.js} +1 -1
  53. package/dist/client/assets/{agent-icon-Bd0IZ2xl.js → agent-icon-DZc84vtW.js} +1 -1
  54. package/dist/client/assets/agent-library-file-BbHf83br.js +1 -0
  55. package/dist/client/assets/{agent-monitor-DKKZFNMi.js → agent-monitor-Y-y8WkNo.js} +1 -1
  56. package/dist/client/assets/{agent-overview-lYvI4Nyl.js → agent-overview-Bxx3mqx3.js} +1 -1
  57. package/dist/client/assets/agent-settings-BdnQNFuI.js +1 -0
  58. package/dist/client/assets/{agent-site-editor-CdJOqKVu.js → agent-site-editor-CPf68n1p.js} +1 -1
  59. package/dist/client/assets/agent-site-editor-code-C5W28gjl.js +2 -0
  60. package/dist/client/assets/{agent-site-editor-content-DXhW4uZI.js → agent-site-editor-content-Dbmoy-9X.js} +3 -3
  61. package/dist/client/assets/{agent-site-editor-preview-CWf5w5wW.js → agent-site-editor-preview-GS0ijSSp.js} +3 -3
  62. package/dist/client/assets/agent-view-BjdG_eVV.js +1 -0
  63. package/dist/client/assets/{agent-view-guard-yKF0ckjL.js → agent-view-guard-RZaWWh8q.js} +1 -1
  64. package/dist/client/assets/{agents-list-BGbR4Gn2.js → agents-list-BRhXk1wX.js} +1 -1
  65. package/dist/client/assets/{ai-providers-D6lyG4Rj.js → ai-providers-DsuBk_lC.js} +1 -1
  66. package/dist/client/assets/{alert-D1vpzkWd.js → alert-CyFB5Q7g.js} +1 -1
  67. package/dist/client/assets/{alert-dialog-EQsgmpuA.js → alert-dialog-Cp1oRtvU.js} +1 -1
  68. package/dist/client/assets/{analytics-sections-YNBdLO_f.js → analytics-sections-BvlUaDYV.js} +1 -1
  69. package/dist/client/assets/api-keys-C2GXQUdc.js +1 -0
  70. package/dist/client/assets/{api-keys-Buj2Mg4T.js → api-keys-CClkqBtA.js} +1 -1
  71. package/dist/client/assets/app-editor-BXC1buiG.js +1 -0
  72. package/dist/client/assets/{asset-utils-9XLqBp-Q.js → asset-utils-DmV7MwAi.js} +1 -1
  73. package/dist/client/assets/{auth-B4tHClP5.js → auth-DewE0vsZ.js} +1 -1
  74. package/dist/client/assets/{auth-catchall-BA6qJurQ.js → auth-catchall-CnLOzh6z.js} +1 -1
  75. package/dist/client/assets/{auth-entry--UoEULta.js → auth-entry-BYurZCL8.js} +1 -1
  76. package/dist/client/assets/{auth-split-layout-C2Z78rym.js → auth-split-layout-cVJzCAIz.js} +1 -1
  77. package/dist/client/assets/{authenticate-and-persist-oauth-EABJT3_J.js → authenticate-and-persist-oauth-C0spMpLN.js} +1 -1
  78. package/dist/client/assets/{automation-list-row-C62I8jHw.js → automation-list-row-D9W4FguS.js} +1 -1
  79. package/dist/client/assets/{automation-runs-CvKbK1mn.js → automation-runs-pUjgCSfr.js} +1 -1
  80. package/dist/client/assets/{automations-KmRW23R-.js → automations-BWboyFGA.js} +1 -1
  81. package/dist/client/assets/{autosend-BwqeYDrP.js → autosend-BOLn22FP.js} +1 -1
  82. package/dist/client/assets/{avatar-DNbeZQMl.js → avatar-BXB8p0uZ.js} +1 -1
  83. package/dist/client/assets/{badge-Dn4B9MPM.js → badge-L3Pfb7lT.js} +1 -1
  84. package/dist/client/assets/{block-document-BcubOVW1.js → block-document-CZmZt_GS.js} +1 -1
  85. package/dist/client/assets/{blocks-preview-workspace-context-CiPsRjF4.js → blocks-preview-workspace-context-C6-ILFRy.js} +1 -1
  86. package/dist/client/assets/{buckets-DuU1P-Pt.js → buckets-C_5U-zUS.js} +1 -1
  87. package/dist/client/assets/{build-improve-prompt-doc-l2J5lTda.js → build-improve-prompt-doc-CYmkt9A_.js} +1 -1
  88. package/dist/client/assets/{calendar-Bd64vnKI.js → calendar-mQVeScA0.js} +1 -1
  89. package/dist/client/assets/{capability-load-error-D7kLzc_F.js → capability-load-error-BjPwGIMH.js} +1 -1
  90. package/dist/client/assets/{cards-CJ0w9n3U.js → cards-CfITToen.js} +1 -1
  91. package/dist/client/assets/{category-editor-Ye7w61VX.js → category-editor-_XlPQ_JR.js} +1 -1
  92. package/dist/client/assets/{chart-YCh8lrvr.js → chart-B_RS6v6i.js} +1 -1
  93. package/dist/client/assets/{chat-context-BNtTPn2v.js → chat-context-IHDWgDQ6.js} +1 -1
  94. package/dist/client/assets/{chat-draft-BrbpfreL.js → chat-draft-bxwRcHk2.js} +1 -1
  95. package/dist/client/assets/{checkbox-CzVzwj4A.js → checkbox-WzAY3JJD.js} +1 -1
  96. package/dist/client/assets/{choose-editor-DTAKYLOA.js → choose-editor-DHuVN8EQ.js} +1 -1
  97. package/dist/client/assets/{claim-phase-copy-DQok8asH.js → claim-phase-copy-BXZD4tAp.js} +1 -1
  98. package/dist/client/assets/{cli-auth-success-CtopuIcy.js → cli-auth-success-BekLnyCd.js} +1 -1
  99. package/dist/client/assets/{client-icons-C8ttTPrI.js → client-icons-BEF-E-JI.js} +1 -1
  100. package/dist/client/assets/{collapsible-DlWH4-1Q.js → collapsible-BKe2_9O7.js} +1 -1
  101. package/dist/client/assets/{collection-detail-DZ5ZAb4J.js → collection-detail-FqVAo6sr.js} +1 -1
  102. package/dist/client/assets/{collection-display-button-CT2-bXQw.js → collection-display-button-B-NPFUs4.js} +1 -1
  103. package/dist/client/assets/{collection-search-CCzn1jJM.js → collection-search-66MPCgMJ.js} +1 -1
  104. package/dist/client/assets/{collection-table-wrapper-DCyUxWRM.js → collection-table-wrapper-C04p-A9X.js} +1 -1
  105. package/dist/client/assets/{collection-tabs-CZs317SQ.js → collection-tabs-PNDYs7Tm.js} +1 -1
  106. package/dist/client/assets/{combobox-DhpMW_Q6.js → combobox-yM7XxeWn.js} +1 -1
  107. package/dist/client/assets/{command-C24f7Kyz.js → command-Dz5qWruW.js} +1 -1
  108. package/dist/client/assets/{companion-mcps-section-DLTvOHE6.js → companion-mcps-section-CseZP29y.js} +1 -1
  109. package/dist/client/assets/{connect-Dx9YF6jh.js → connect-BbrTSpN5.js} +1 -1
  110. package/dist/client/assets/{connect-layout-Cs5G1BKf.js → connect-layout-CDDVbEzl.js} +1 -1
  111. package/dist/client/assets/{connection-DSaol0Ng.js → connection-D_Ad-k2g.js} +1 -1
  112. package/dist/client/assets/{connection-card-DxtmlEpf.js → connection-card-D84FLYUf.js} +1 -1
  113. package/dist/client/assets/{connection-detail-D3B1Lmjt.js → connection-detail-CpZDxB7F.js} +1 -1
  114. package/dist/client/assets/{connection-form-helpers-DCcCOjwY.js → connection-form-helpers-5k0v0Re8.js} +1 -1
  115. package/dist/client/assets/{connections-DupmsXsG.js → connections-ByYjvA85.js} +1 -1
  116. package/dist/client/assets/{context-B7GvP0a5.js → context-DzVAzWtC.js} +1 -1
  117. package/dist/client/assets/{create-organization-dialog-DjT0FfLO.js → create-organization-dialog-DzedjPhW.js} +1 -1
  118. package/dist/client/assets/{decopilot-CdSUSOau.js → decopilot-OImya6-h.js} +1 -1
  119. package/dist/client/assets/{dialog-BWmqK6vg.js → dialog-Cz2_YOoM.js} +1 -1
  120. package/dist/client/assets/{discover-BVVbBxyt.js → discover-BekL4zcZ.js} +1 -1
  121. package/dist/client/assets/{domain-settings-B-eYE41J.js → domain-settings-BNV22Gio.js} +1 -1
  122. package/dist/client/assets/{download-app-dialog-ZwXjVAnk.js → download-app-dialog-CLcZY4uQ.js} +1 -1
  123. package/dist/client/assets/{drawer-DNfsLwl_.js → drawer-BVbxEc-U.js} +1 -1
  124. package/dist/client/assets/{editor-C4W1ZTll.js → editor-zQPoF7nF.js} +1 -1
  125. package/dist/client/assets/{empty-state-BCQvGGl1.js → empty-state-BMXb2rB5.js} +1 -1
  126. package/dist/client/assets/{empty-state-CQWpCNEd.js → empty-state-Da-fHzIT.js} +1 -1
  127. package/dist/client/assets/{extract-connection-data-fRjq1au-.js → extract-connection-data-BvsecQuq.js} +1 -1
  128. package/dist/client/assets/{feature-gate-CfqoPyXH.js → feature-gate-DkU3CxuK.js} +1 -1
  129. package/dist/client/assets/{feature-paywall-BwEH2JPL.js → feature-paywall-D6H1XrEk.js} +1 -1
  130. package/dist/client/assets/{file-explorer-BpNCsQeN.js → file-explorer-CiVqz-p-.js} +1 -1
  131. package/dist/client/assets/{file-preview-CPwvdgRN.js → file-preview-BCzcW5IM.js} +1 -1
  132. package/dist/client/assets/{file-share-button-CNqX1uKM.js → file-share-button-BCbyDdG4.js} +1 -1
  133. package/dist/client/assets/{file-type-icon-UKBN2uy0.js → file-type-icon-DnKDJ8Kn.js} +1 -1
  134. package/dist/client/assets/{folder-icon-BUWRYFGK.js → folder-icon-gl7W6Tvq.js} +1 -1
  135. package/dist/client/assets/{form-Dd8uuw3Z.js → form-BFyytVo6.js} +1 -1
  136. package/dist/client/assets/{gateway-client-CND_0J2Q.js → gateway-client-C_Ex0ISa.js} +1 -1
  137. package/dist/client/assets/{general-tgZjCrGf.js → general-D6tjE2j7.js} +1 -1
  138. package/dist/client/assets/{github-icon-xYGi4_zU.js → github-icon-DWXYv1Ij.js} +1 -1
  139. package/dist/client/assets/github-repo-B15wwZ1g.js +1 -0
  140. package/dist/client/assets/{home-Dyn_f2jZ.js → home-CZA4NVdc.js} +1 -1
  141. package/dist/client/assets/{hooks-57fUVc8E.js → hooks-ClyBk0k_.js} +1 -1
  142. package/dist/client/assets/{icon-button-CDtcbOEr.js → icon-button-a1oHWXnD.js} +1 -1
  143. package/dist/client/assets/{index-DG-VU0NB.js → index-B0_orRJ4.js} +1 -1
  144. package/dist/client/assets/{index-B6Tu7EzF.js → index-BF_gwFuP.js} +1 -1
  145. package/dist/client/assets/{index-D2aZ-FY9.js → index-CenNUKjy.js} +1 -1
  146. package/dist/client/assets/{index-DXiYogYY.js → index-CyuU6yZd.js} +1 -1
  147. package/dist/client/assets/{index-OsBQe2QB.js → index-Cz9e3Wwk.js} +1 -1
  148. package/dist/client/assets/{index-BRtQvkRe.js → index-D6fwXcTM.js} +1 -1
  149. package/dist/client/assets/{index-CZmAPBsQ.js → index-D7HYUfJC.js} +1 -1
  150. package/dist/client/assets/{index-DJL19bsX.js → index-DUDizWti.js} +1 -1
  151. package/dist/client/assets/{index-D88UyMf8.js → index-Dhz79JsH.js} +1 -1
  152. package/dist/client/assets/{index-DXnvqmcL.js → index-DuAhWQOd.js} +1 -1
  153. package/dist/client/assets/{index-a8XScFmZ.js → index-K4Vfh2kg.js} +2 -2
  154. package/dist/client/assets/{index-_tZ6iIAI.js → index-XQdvud1d.js} +1 -1
  155. package/dist/client/assets/{index-CGM1QhoP.js → index-q4Xl54Dx.js} +1 -1
  156. package/dist/client/assets/{index-redirect-B0jTPPl2.js → index-redirect-B6p9S-WJ.js} +1 -1
  157. package/dist/client/assets/{index-BhOqFKQs.js → index-wc3LsJ73.js} +1 -1
  158. package/dist/client/assets/{infiniteQueryObserver-vADGuTxL.js → infiniteQueryObserver-DrFl4m2S.js} +1 -1
  159. package/dist/client/assets/{infra-billing-C_vV8Zpq.js → infra-billing-HCI22mTY.js} +1 -1
  160. package/dist/client/assets/{input-HBy0gWnZ.js → input-CjG0yUIG.js} +1 -1
  161. package/dist/client/assets/{input-5OigQZTm.js → input-DfvZ3ikK.js} +1 -1
  162. package/dist/client/assets/{input-DBK_w2ku.js → input-JwI18_DS.js} +1 -1
  163. package/dist/client/assets/{integration-icon-Dz6rheZV.js → integration-icon-DrJdUHVx.js} +1 -1
  164. package/dist/client/assets/{label-xjEYWx7p.js → label-CbL3uHGW.js} +1 -1
  165. package/dist/client/assets/{last-preview-page-B6g9UIg-.js → last-preview-page-DEzwzCp-.js} +1 -1
  166. package/dist/client/assets/{layout-DXU0Xubq.js → layout-DMcycabY.js} +1 -1
  167. package/dist/client/assets/{legacy-agents-deep-VUIOxOMz.js → legacy-agents-deep-C3Zyezst.js} +1 -1
  168. package/dist/client/assets/{legacy-main-redirect-Vdn7ugUH.js → legacy-main-redirect-COndmWyH.js} +1 -1
  169. package/dist/client/assets/{library-Cu0rCSTQ.js → library-DbAgblb-.js} +1 -1
  170. package/dist/client/assets/{login-BMhzWIRn.js → login-CXY1yuZY.js} +1 -1
  171. package/dist/client/assets/{markdown-W3XRuNet.js → markdown-DOZYcDNd.js} +1 -1
  172. package/dist/client/assets/{mcp-app-renderer-DkVBLMEl.js → mcp-app-renderer-DRfDWjg6.js} +1 -1
  173. package/dist/client/assets/{mcp-oauth-3u1U11Wr.js → mcp-oauth-BTDQqGE0.js} +1 -1
  174. package/dist/client/assets/{members-v5L4AjzR.js → members-BEiKQ73m.js} +1 -1
  175. package/dist/client/assets/{message-templates-BvUtBueU.js → message-templates-CzGF1cA9.js} +1 -1
  176. package/dist/client/assets/{mini-report-page-BmsRKdKM.js → mini-report-page-D2baj09A.js} +1 -1
  177. package/dist/client/assets/{mock-board-DTt1aI29.js → mock-board-C8LOIHzu.js} +3 -3
  178. package/dist/client/assets/{monaco-editor-BHGY_yVV.js → monaco-editor-_MEmcrMi.js} +1 -1
  179. package/dist/client/assets/{monitoring-stats-row-CMukw8SN.js → monitoring-stats-row-B5_lpP36.js} +1 -1
  180. package/dist/client/assets/{multi-select-DEfDPvag.js → multi-select-CdvqIvqU.js} +1 -1
  181. package/dist/client/assets/{mustache-uYJjGzq3.js → mustache-CPcQeOG0.js} +1 -1
  182. package/dist/client/assets/{oauth-callback-e_uxEp2U.js → oauth-callback-C3bvGl4h.js} +1 -1
  183. package/dist/client/assets/{oauth-callback-ai-provider-CJR_fnOb.js → oauth-callback-ai-provider-BFMT3UdD.js} +1 -1
  184. package/dist/client/assets/{onboarding-C_MoLVsp.js → onboarding-DtANDRsT.js} +1 -1
  185. package/dist/client/assets/{optimistic-project-sidebar-views-D8HlHK3x.js → optimistic-project-sidebar-views-DEWSMOzi.js} +1 -1
  186. package/dist/client/assets/{org-file-open-context-DP3MZUa1.js → org-file-open-context-Cej-kKNF.js} +1 -1
  187. package/dist/client/assets/{organization-choice-8-I0dE_H.js → organization-choice-DJxOpcPs.js} +1 -1
  188. package/dist/client/assets/{orgs-uAbNfBwh.js → orgs-6Wa09XqX.js} +1 -1
  189. package/dist/client/assets/{page-seo-form-BOJVpgo6.js → page-seo-form-DJY4lle7.js} +1 -1
  190. package/dist/client/assets/{pair-DwgUrqzM.js → pair-Bs4OFZd1.js} +1 -1
  191. package/dist/client/assets/{plan-ladder-DLxu0Wxh.js → plan-ladder-8vg2rlwa.js} +1 -1
  192. package/dist/client/assets/{popover-DKjcSfLB.js → popover-BhNcAD5X.js} +1 -1
  193. package/dist/client/assets/{post-calendar-CX7RLqUU.js → post-calendar-8dVtvspR.js} +1 -1
  194. package/dist/client/assets/{post-editor-DQy-xLxP.js → post-editor-B3pGOrms.js} +1 -1
  195. package/dist/client/assets/{preview-content-Ch72-5__.js → preview-content-D9TR_OCi.js} +1 -1
  196. package/dist/client/assets/{preview-dialog-Kdnb3KQ2.js → preview-dialog-uefldvQJ.js} +1 -1
  197. package/dist/client/assets/{profile-IGVv2rJN.js → profile-BOPnUUUc.js} +1 -1
  198. package/dist/client/assets/{project-app-view-x_-e_Lbw.js → project-app-view-CXTxnzE0.js} +1 -1
  199. package/dist/client/assets/{project-feed-DwfoXmCH.js → project-feed-B8QXSSsQ.js} +1 -1
  200. package/dist/client/assets/{project-icon-DtlCoOxs.js → project-icon-BK7It3uv.js} +1 -1
  201. package/dist/client/assets/project-reports-CU7shTBi.js +1 -0
  202. package/dist/client/assets/project-tasks-DFi0AJKe.js +1 -0
  203. package/dist/client/assets/{prompts-9Ciu0DHj.js → prompts-Cp6MUNg1.js} +1 -1
  204. package/dist/client/assets/record-editor-BFnZqKUj.js +1 -0
  205. package/dist/client/assets/{redirect-editor-DhoJUB71.js → redirect-editor-BooBJZnR.js} +1 -1
  206. package/dist/client/assets/reports-BW-QoVax.js +1 -0
  207. package/dist/client/assets/{reports-DGmWaCFr.js → reports-DpNr3YR6.js} +1 -1
  208. package/dist/client/assets/{reports-onboarding-BpRkFZDN.js → reports-onboarding-D8veE4dS.js} +1 -1
  209. package/dist/client/assets/{reports-tab-DxWEYXL_.js → reports-tab-BrMcs3Pf.js} +2 -2
  210. package/dist/client/assets/{repositories-CJ6hjTj5.js → repositories-D_tmdpJ8.js} +1 -1
  211. package/dist/client/assets/{repository-import-picker-CcnsKtpd.js → repository-import-picker-BrVrNQp2.js} +1 -1
  212. package/dist/client/assets/{repository-picker-72QfMFWx.js → repository-picker-5veCw3bv.js} +1 -1
  213. package/dist/client/assets/{require-capability-DH6k_3fM.js → require-capability-BXbVP8Te.js} +1 -1
  214. package/dist/client/assets/{required-auth-layout-DMazcHjn.js → required-auth-layout-q7AyqreJ.js} +1 -1
  215. package/dist/client/assets/{reset-password-B_iQOKSQ.js → reset-password-BV_oLArt.js} +1 -1
  216. package/dist/client/assets/{resizable-CDXwX1EQ.js → resizable-D5h_i3Cv.js} +1 -1
  217. package/dist/client/assets/{resolve-tab-icon-D_xtoMYK.js → resolve-tab-icon-BRqSZn8F.js} +1 -1
  218. package/dist/client/assets/{review-settings-OW0K00fh.js → review-settings-CUXs59zb.js} +1 -1
  219. package/dist/client/assets/{rich-text-link-control-BhCauUBJ.js → rich-text-link-control-hCgf6vwY.js} +1 -1
  220. package/dist/client/assets/{roles-mbHqfQsN.js → roles-92Mfuaie.js} +1 -1
  221. package/dist/client/assets/{route-jTfsMPRt.js → route-B07-zVJy.js} +1 -1
  222. package/dist/client/assets/{route-DP3hx43s.js → route-Cq_E3u9y.js} +1 -1
  223. package/dist/client/assets/{route-CFY-8tGH.js → route-DzLLBN_l.js} +1 -1
  224. package/dist/client/assets/{route-page-header-CGZ8hlbE.js → route-page-header-D2v-N63X.js} +1 -1
  225. package/dist/client/assets/{runnable-block-editor-a1foluPz.js → runnable-block-editor-D5Om2hS9.js} +1 -1
  226. package/dist/client/assets/{sandbox-lifecycle-context-C_uX5vaY.js → sandbox-lifecycle-context-DDvqjx4F.js} +1 -1
  227. package/dist/client/assets/{schema-C0UHuNyx.js → schema-OZ6y31ku.js} +1 -1
  228. package/dist/client/assets/{scroll-area-TOykm0pn.js → scroll-area-CrFzneCm.js} +1 -1
  229. package/dist/client/assets/{search-input-DX8Af1_h.js → search-input-MXvNbubn.js} +1 -1
  230. package/dist/client/assets/{search-toggle-CpNXm-HK.js → search-toggle-OXNBAfan.js} +1 -1
  231. package/dist/client/assets/{secret-picker-BDwnJCqm.js → secret-picker-olJPqPoi.js} +1 -1
  232. package/dist/client/assets/{secrets-C8P9K06C.js → secrets-Cttvdk2_.js} +1 -1
  233. package/dist/client/assets/{sections-editor-BVD7-dMM.js → sections-editor-BkzNFswN.js} +1 -1
  234. package/dist/client/assets/{select-Bqp_U1ks.js → select-DxOzi3UD.js} +1 -1
  235. package/dist/client/assets/{select-model-CwN0uiJw.js → select-model-N7bwAuKh.js} +1 -1
  236. package/dist/client/assets/{seo-editor-Z7UEKCep.js → seo-editor-BbScE4FO.js} +1 -1
  237. package/dist/client/assets/{separator-CRMA5Wms.js → separator-CmRrTp4P.js} +1 -1
  238. package/dist/client/assets/{settings-tab-gQ1sYUFr.js → settings-tab-F5_VZsFA.js} +1 -1
  239. package/dist/client/assets/{sheet-CnG_30Tu.js → sheet-AhK1Q4GA.js} +1 -1
  240. package/dist/client/assets/{shell-layout-C1ofRTSy.js → shell-layout-BbZrykxM.js} +1 -1
  241. package/dist/client/assets/{skill-preview-D2C3TdbC.js → skill-preview-D2tUoLmU.js} +1 -1
  242. package/dist/client/assets/{skills-BkdXpy6f.js → skills-8G1WBDrj.js} +1 -1
  243. package/dist/client/assets/{sso-DS1IZ-Cy.js → sso-D1j1eaaw.js} +1 -1
  244. package/dist/client/assets/{suggestion-BKo4wcW5.js → suggestion-D2LW2rth.js} +1 -1
  245. package/dist/client/assets/{switch-CAv8chXa.js → switch-Dxukqc0d.js} +1 -1
  246. package/dist/client/assets/{synced-repos-BAz91gxb.js → synced-repos-QFrSnbHa.js} +1 -1
  247. package/dist/client/assets/{tab-icon-glyph-C7PcdX64.js → tab-icon-glyph-BJ5K3vOh.js} +1 -1
  248. package/dist/client/assets/{table-BQzAWihK.js → table-DQGBCTGl.js} +1 -1
  249. package/dist/client/assets/{tabs-BB69CAa_.js → tabs-CgudHfJv.js} +1 -1
  250. package/dist/client/assets/{task-board-DAXz0qcI.js → task-board-Bc_5nEh1.js} +1 -1
  251. package/dist/client/assets/task-route-DMhHeGp_.js +1 -0
  252. package/dist/client/assets/{task-status-DsuZMZki.js → task-status-CxrGIdHQ.js} +1 -1
  253. package/dist/client/assets/{taskboard-analytics-CnhQSjI5.js → taskboard-analytics-CkQr3tK7.js} +1 -1
  254. package/dist/client/assets/tasks-BLCuiNcA.js +1 -0
  255. package/dist/client/assets/{tasks-EhOSvMOE.js → tasks-Bnn9RQl1.js} +1 -1
  256. package/dist/client/assets/{textarea-CQB0iWWu.js → textarea-C4Fl7vcj.js} +1 -1
  257. package/dist/client/assets/{thread-analytics-BxOFKU_J.js → thread-analytics-CE0WviO_.js} +1 -1
  258. package/dist/client/assets/{thread-button-C9DbsgYC.js → thread-button-EQmrPg3s.js} +1 -1
  259. package/dist/client/assets/{thread-intent-BVf_UeqN.js → thread-intent-DxlkHtay.js} +1 -1
  260. package/dist/client/assets/{thread-route-iDCB4hcC.js → thread-route-DC9aU1My.js} +1 -1
  261. package/dist/client/assets/{thread-route-B1ZSIzzT.js → thread-route-TxjlZd1E.js} +1 -1
  262. package/dist/client/assets/{thread-sheet-body-D0e7nDaM.js → thread-sheet-body-BrDhZq1Z.js} +1 -1
  263. package/dist/client/assets/{toggle-group-DN5pA1xA.js → toggle-group-NfZmEEmD.js} +1 -1
  264. package/dist/client/assets/{toolbar-icon-button-DggL__pK.js → toolbar-icon-button-B_lHRucJ.js} +1 -1
  265. package/dist/client/assets/{tooltip-DG5CnGag.js → tooltip-Cy80lI1Y.js} +1 -1
  266. package/dist/client/assets/{track-DtcT0XLB.js → track-CKzt_alj.js} +1 -1
  267. package/dist/client/assets/{types-BuaOQs2H.js → types-mQyngwgP.js} +1 -1
  268. package/dist/client/assets/{usage-stats-CfoUXIit.js → usage-stats-B-kd-KGd.js} +1 -1
  269. package/dist/client/assets/{use-ai-providers-DmDozsCa.js → use-ai-providers-zjIftbuA.js} +1 -1
  270. package/dist/client/assets/{use-automations-DlcqQAT-.js → use-automations-Bos3c2CS.js} +1 -1
  271. package/dist/client/assets/{use-autosave-Dnad_LVj.js → use-autosave-BPZqx8ru.js} +1 -1
  272. package/dist/client/assets/{use-connect-companion-De4fpUyT.js → use-connect-companion-DWeMHoIU.js} +1 -1
  273. package/dist/client/assets/{use-connection-B62IVwoq.js → use-connection-DT6Y_sWB.js} +1 -1
  274. package/dist/client/assets/{use-copy-PMhIFi8m.js → use-copy-CCt9uq_y.js} +1 -1
  275. package/dist/client/assets/{use-create-virtual-mcp-CaljxpC7.js → use-create-virtual-mcp-D8BgGLo0.js} +1 -1
  276. package/dist/client/assets/{use-date-fns-locale-C_k-ZNvB.js → use-date-fns-locale-8-Vndgvf.js} +1 -1
  277. package/dist/client/assets/{use-debounced-autosave-8--WWWFZ.js → use-debounced-autosave-CVGhSw1y.js} +1 -1
  278. package/dist/client/assets/{use-debounced-value-JsQcnlEX.js → use-debounced-value-CQxBbX3z.js} +1 -1
  279. package/dist/client/assets/{use-deco-credits-D7jE3Gb7.js → use-deco-credits-Bbxg62mu.js} +1 -1
  280. package/dist/client/assets/{use-decopilot-events-CXHHAExG.js → use-decopilot-events-C-TjDtpG.js} +1 -1
  281. package/dist/client/assets/{use-delete-connection-CQADYnj0.js → use-delete-connection-DoGBhXiK.js} +1 -1
  282. package/dist/client/assets/{use-deployment-admin-BeJp7zBn.js → use-deployment-admin-CMAr5-sz.js} +1 -1
  283. package/dist/client/assets/{use-entitlements-e5g60LFP.js → use-entitlements-OYbyxqXu.js} +1 -1
  284. package/dist/client/assets/{use-fast-preview-draft-url-BoXMuGAj.js → use-fast-preview-draft-url-H9Q-1XHg.js} +1 -1
  285. package/dist/client/assets/{use-file-configs-DzDjWDbA.js → use-file-configs-C3rsyIax.js} +1 -1
  286. package/dist/client/assets/{use-in-settings-DF5a-yr6.js → use-in-settings-DTfVU5gG.js} +1 -1
  287. package/dist/client/assets/{use-infinite-scroll-BWjbZqkI.js → use-infinite-scroll-CitEQv_Q.js} +1 -1
  288. package/dist/client/assets/{use-join-requests-C-vRDubL.js → use-join-requests-DURmdBJt.js} +1 -1
  289. package/dist/client/assets/{use-main-panel-tabs-COSZEEJN.js → use-main-panel-tabs-DCZX5mxy.js} +1 -1
  290. package/dist/client/assets/{use-mcp-auth-status-cOXVTEWe.js → use-mcp-auth-status-DcPv-6wk.js} +1 -1
  291. package/dist/client/assets/{use-mcp-client-QkI6RUae.js → use-mcp-client-CR19JjtG.js} +1 -1
  292. package/dist/client/assets/{use-mcp-prompts-CTv5hWKn.js → use-mcp-prompts-C9ZSqhtN.js} +1 -1
  293. package/dist/client/assets/{use-mcp-tools-CRxMLxmD.js → use-mcp-tools-NQLn3o-8.js} +1 -1
  294. package/dist/client/assets/{use-members-DJtmQ5I0.js → use-members-DGHnBAVp.js} +1 -1
  295. package/dist/client/assets/{use-mobile-BR3euFAT.js → use-mobile-rtsj2MZ1.js} +1 -1
  296. package/dist/client/assets/{use-navigate-to-agent-CATWBqpJ.js → use-navigate-to-agent-DYgqDFZF.js} +1 -1
  297. package/dist/client/assets/use-new-blocks-editor-xOOrbCjh.js +1 -0
  298. package/dist/client/assets/{use-open-billing-url-CssGGbOV.js → use-open-billing-url-1mXCzVjQ.js} +1 -1
  299. package/dist/client/assets/{use-org-auth-client-DD1x9ZUx.js → use-org-auth-client-Dq37iZE-.js} +1 -1
  300. package/dist/client/assets/{use-org-fs-CUzmVYxO.js → use-org-fs-mfYIenam.js} +1 -1
  301. package/dist/client/assets/{use-org-sso-C4Rm3HPT.js → use-org-sso-C8N9NZ6V.js} +1 -1
  302. package/dist/client/assets/{use-organization-roles-CbALx4Il.js → use-organization-roles-B1Y6_86t.js} +1 -1
  303. package/dist/client/assets/{use-organization-settings-Chk2oNMp.js → use-organization-settings-CY6osCto.js} +1 -1
  304. package/dist/client/assets/{use-panel-navigate-BvXmhCXE.js → use-panel-navigate-BqFBzSWd.js} +1 -1
  305. package/dist/client/assets/{use-project-native-view-presence-eLIweUr6.js → use-project-native-view-presence-7vj8rIc7.js} +1 -1
  306. package/dist/client/assets/{use-project-scope-Dg5JkMxK.js → use-project-scope-CdGBXW9U.js} +1 -1
  307. package/dist/client/assets/{use-releases-DFTelrXq.js → use-releases-DRDVY8Xc.js} +1 -1
  308. package/dist/client/assets/{use-reports-diagnostic-DpBTdRcc.js → use-reports-diagnostic-D48-pm_p.js} +1 -1
  309. package/dist/client/assets/{use-route-default-main-RAA9Xu9b.js → use-route-default-main-CG99dur1.js} +1 -1
  310. package/dist/client/assets/{use-secrets-Be7dbg8N.js → use-secrets-BQr1wgkC.js} +1 -1
  311. package/dist/client/assets/{use-section-preview-base-BsBwRpxR.js → use-section-preview-base-Be_ffjg-.js} +1 -1
  312. package/dist/client/assets/{use-session-runtime-16mMZo3B.js → use-session-runtime-epDsfla0.js} +1 -1
  313. package/dist/client/assets/{use-tags-TXZWvSN2.js → use-tags-BDr8xPIF.js} +1 -1
  314. package/dist/client/assets/{use-task-board-analytics-B3jA7fHY.js → use-task-board-analytics-DyOwTb8x.js} +1 -1
  315. package/dist/client/assets/{use-task-metadata-fbwKPdOL.js → use-task-metadata-B625VJsm.js} +1 -1
  316. package/dist/client/assets/{use-thread-analytics-U5Jj6xFb.js → use-thread-analytics-D4T2O8XJ.js} +1 -1
  317. package/dist/client/assets/{use-thread-outputs-fY2YVo4L.js → use-thread-outputs-CfLMzkB9.js} +1 -1
  318. package/dist/client/assets/{use-virtual-mcp-B22df3lH.js → use-virtual-mcp-gM6wRQv6.js} +1 -1
  319. package/dist/client/assets/useInfiniteQuery-Bdkrqs8P.js +1 -0
  320. package/dist/client/assets/{useQueries-B7hWegsL.js → useQueries-MatxMDm4.js} +1 -1
  321. package/dist/client/assets/useSuspenseInfiniteQuery-6_TWTeTT.js +1 -0
  322. package/dist/client/assets/{users-B1mD9fdQ.js → users-DSJ7gYEW.js} +1 -1
  323. package/dist/client/assets/{utils-BvSnSvcy.js → utils-D2l1844I.js} +1 -1
  324. package/dist/client/assets/{variant-calendar-CpWcO1WH.js → variant-calendar-DP0eqUJc.js} +1 -1
  325. package/dist/client/assets/{variant-matcher-override-CqVph4cp.js → variant-matcher-override-CHhx77jc.js} +1 -1
  326. package/dist/client/assets/{view-mode-toggle-D6C4LcX3.js → view-mode-toggle-DSnYHXmD.js} +1 -1
  327. package/dist/client/assets/{virtual-mcp-CZOMxd4f.js → virtual-mcp-BLyxO2qI.js} +1 -1
  328. package/dist/client/index.html +1 -1
  329. package/dist/server/cli.js +1 -1
  330. package/dist/server/server.js +1 -1
  331. package/package.json +1 -1
  332. package/dist/client/assets/agent-app-D_LRMpO5.js +0 -1
  333. package/dist/client/assets/agent-deck-1Gy5jl1Q.js +0 -1
  334. package/dist/client/assets/agent-library-file-C6HS0CDW.js +0 -1
  335. package/dist/client/assets/agent-settings-Braq0K0j.js +0 -1
  336. package/dist/client/assets/agent-site-editor-code-_pcbcBCM.js +0 -2
  337. package/dist/client/assets/agent-view-B5TTa9Fr.js +0 -1
  338. package/dist/client/assets/api-keys-BIsdKQsQ.js +0 -1
  339. package/dist/client/assets/app-editor-Bc6BpUGO.js +0 -1
  340. package/dist/client/assets/github-repo-BknN0SVI.js +0 -1
  341. package/dist/client/assets/project-reports-Dc50o0bW.js +0 -1
  342. package/dist/client/assets/project-tasks-BTlGW7tU.js +0 -1
  343. package/dist/client/assets/record-editor-QZJr0INE.js +0 -1
  344. package/dist/client/assets/reports-CAO0dNuU.js +0 -1
  345. package/dist/client/assets/task-route-Dfyu6KvD.js +0 -1
  346. package/dist/client/assets/tasks-CNDczBnp.js +0 -1
  347. package/dist/client/assets/use-new-blocks-editor-DQBU1F-m.js +0 -1
  348. package/dist/client/assets/useInfiniteQuery-kTLnckn3.js +0 -1
  349. package/dist/client/assets/useSuspenseInfiniteQuery-D3KJwbuZ.js +0 -1
@@ -3703,7 +3703,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
3703
3703
  ${J.join(`
3704
3704
  `)}`:X}function gh6($){let Z=new Set;for(let Q of $)for(let Y of Q.split(`
3705
3705
  `)){let X=Y.trim();if(/^Co-authored-by:\s/i.test(X))Z.add(X)}return[...Z]}var x48=200,Vh6=12,Sh6,_h6=300,dk0=3;var XU1=D(()=>{iZ();D8();mk0();Sh6={aheadBy:0,behindBy:0,files:[]}});function uh6($){if(!$||$.includes(".."))return!1;return hh6.test($)}function y48($){return lh6.includes($)}function JU1($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!uh6(Z))return null;let{__resolveType:Q,...Y}=$;return{resolveType:Z,payload:Y}}function GU1($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var hh6,lh6;var g48=D(()=>{hh6=/^[\w./@-]+$/;lh6=["vtex/loaders/intelligentSearch/productList.ts","vtex/loaders/categories/tree.ts"]});function Z40($,Z){let Q=$?.githubRepo;if(!Q?.owner||!Q?.name)return null;if(!Q.connectionId)return Q;if(!Z.includes(Q.connectionId))return null;return Q}async function u48($,Z,Q,Y){let X=$.organization?.id;if(!X)throw new zE(E7);let J=await Qj($.storage,X,Y);if(J&&await gB($.storage,J)){let F=await aF($,J,{forceRefresh:!0}).catch((U)=>{throw new zE(U instanceof Error?U.message:E7)});await h48($,Z,Q,F);return}let G=Y.connectionId??J?.legacyConnectionId;if(!G)throw new zE("Push requires a connected git account. Connect the repository's provider for this project and restart the sandbox.");await Ac({ctx:$,connectionId:G,organizationId:X,forceRefresh:!0,onLegacyMintError:(F)=>{let U=F instanceof Error?F.message:E7;throw new zE(U)}});let{cloneUrl:W,gitUserName:K,gitUserEmail:H}=await eF(G,Y.owner,Y.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=ZN$(F instanceof Error?F.message:String(F));throw U?new zE(N):F});await h48($,Z,Q,{cloneUrl:W,gitUserName:K,gitUserEmail:H})}async function h48($,Z,Q,Y){let{cloneUrl:X,gitUserName:J,gitUserEmail:G}=Y,W=ji($),K=await Z.proxyDaemonRequest(Q,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:X},identity:{userName:J,userEmail:G}},...W?{operator:W}:{}})});if(!K.ok){let H=await qj(K,ch6).catch(()=>K.statusText);throw Error(`Failed to refresh sandbox git credentials (${K.status}): ${H}`)}}var ch6=10485760,zE;var WU1=D(()=>{WW();bk0();_00();hW0();qe();iZ();zE=class zE extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function dh6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!mh6.test(Z))throw Error(`Invalid branch name: ${$}`)}function Uy($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(ih6)])}async function nh6($,Z){let Q=$.var.studioContext,Y=WU(Z.branch),X=$.req.query("thread")??Y,J=X&&X===Y?Z.branchThread:X?await Q.storage.threads.get(X).catch(()=>null):null,G=J?.virtual_mcp_id===Z.virtualMcpId?J:null,W=yx(G?.metadata?.runtime);if(W)return W;let K=I20(Z.virtualMcpMetadata),H=K==="cms"?await gF1(Q,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&K==="cms");if(U&&G)v00(Q,G.id,F);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:G?"unstamped":"threadless",liveness:H,resolved:F,stamped:U});return F}async function th6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await IX($.var.studioContext)}catch{return null}}function Ny($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Ti($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),Y=$.var.studioContext,X=Z40(Z,Q);if(!X)throw new y0({provider:"github",status:404,message:"Project has no GitHub repository"});let J=K0(Y);return Ec(Y,J.id,X)}function HU1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=AF$(Z);if(Y!==void 0)return $.json({error:Q},429,{...$9,...Y===null?{}:{"Retry-After":String(Math.ceil(Y/1000))}});if(Z instanceof t6)return $.json({error:Q},409,$9);let X=UW(Z);if(X!==null){let J=X===404?404:X===409||X===422?409:502;return $.json({error:Q},J,$9)}return $.json({error:Q},502,$9)}async function KU1($,Z,Q){let Y;try{Y=await fetch(Z,Q)}catch{return $.json({error:"Preview unreachable"},502)}let X;try{X=await Y.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(X,{status:Y.status,headers:{"content-type":Y.headers.get("content-type")??"application/json"}})}async function d48($){try{let Z=await Ti($),Q=await ik0(Z,$.get("vmClaim").branch);return $.json(Q,200,$9)}catch(Z){return HU1($,Z)}}function Q40($,Z){let Y=(tk0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return tk0.set($,X),X.finally(()=>{if(tk0.get($)===X)tk0.delete($)}),Y}async function ZQ($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,$9);let Y=Q?.runner??Ny($);if(Y instanceof Response)return Y;let{claimName:X,userId:J,projectRef:G}=$.get("vmClaim"),W=Q?.method??"POST",K=null,H=new Headers;if(Q?.jsonBody!==void 0)K=Q.jsonBody,H.set("content-type","application/json");else if(Q?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=Q?.signal,U={method:W,headers:H,body:K,...F?{signal:F}:{}},N=async()=>{let B=await Y.proxyDaemonRequest(X,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Y.adoptLiveClaim({userId:J,projectRef:G},X))B=await Y.proxyDaemonRequest(X,Z,U);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...$9}})}}let O=await B.text(),L=Q?.redactRepoDir?oh6(O):O,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...$9}})};try{if(F){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((L,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await N()}catch(B){let O=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${O}`},502)}}function oh6($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function ok0($,Z,Q,Y="GET",X){let J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null});if(J.status===404&&X){try{await J.body?.cancel()}catch{}if(await $.adoptLiveClaim(X,Z))J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null})}if(J.status===404){try{await J.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let G=await J.text();if(!J.ok){let W=`Daemon error (${J.status})`;try{W=JSON.parse(G).error??W}catch{}throw Error(W)}return JSON.parse(G)}function rh6($){return i48.includes($)}var mh6,l48=524288,c48=65536,ih6=1e4,m48=2000,ph6,tk0,$9,i48,p48=()=>{let $=new Q1;$.use("/:virtualMcpId/:branch/*",ph6),$.post("/:virtualMcpId/:branch/write",(Q)=>ZQ(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:Uy(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>ZQ(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:Uy(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>ZQ(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:Uy(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>ZQ(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:Uy(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>ZQ(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:Uy(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>ZQ(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:Uy(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>ZQ(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:Uy(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return ZQ(Q,`/_sandbox/exec/${encodeURIComponent(Y)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return ZQ(Q,`/_sandbox/exec/${encodeURIComponent(Y)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>ZQ(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>ZQ(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let Y=Q.req.param("step");if(!Y||!rh6(Y))return Q.json({error:`step must be one of: ${i48.join(", ")}`},400);let X=Q.get("vmClaim"),J=await gF1(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await th6(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,$9);if(Y==="start"){let G=K0(Q.var.studioContext),W=Qm(X.virtualMcpMetadata);try{await T20({ctx:Q.var.studioContext,runner:J,handle:X.claimName,orgId:G.id,userId:X.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return Q.json({error:`Failed to push env to daemon: ${H}`},502)}}return ZQ(Q,`/_sandbox/setup/${Y}`,{signal:Q.req.raw.signal,map404to410:!0,runner:J})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let Y=Q.get("vmClaim");if(!Y.runner)return xO(Q,async(X)=>{await X.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return m88(Q,{ctx:Q.var.studioContext,claimName:Y.claimName,runner:Y.runner,virtualMcpId:Y.virtualMcpId,branch:Y.branch,userId:Y.userId,projectRef:Y.projectRef,virtualMcpMetadata:Y.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return d48(Q);return Z(Q)});let Z=(Q)=>ZQ(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(m48)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return d48(Q);return ZQ(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(m48)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")try{let X=await Q.req.json().catch(()=>({})),J=await Ti(Q),G=await pk0(J,Y.branch,X.base);return Q.json(G,200,$9)}catch(X){return HU1(Q,X)}return ZQ(Q,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Q.json({ok:!0},200,$9);let Y=Ny(Q);if(Y instanceof Response)return Y;let{claimName:X,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return Q40(X,async()=>{try{await hF1(W,Y,X);let K=Z40(J,G);if(K)await u48(W,Y,X,K)}catch(K){if(K instanceof zE)return Q.json({error:K.message},403,$9);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,$9)}return ZQ(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return Q40(Y.claimName,async()=>{let X=await Q.req.json().catch(()=>({})),J=Array.isArray(X.filepaths)?X.filepaths.filter((G)=>typeof G==="string"):[];if(J.length===0)return Q.json({error:"filepaths is required"},400,$9);try{let G=await Ti(Q);return await f48(G,Y.branch,J),Q.json({ok:!0},200,$9)}catch(G){let W=UW(G)===409||G instanceof t6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,$9)}});return Q40(Y.claimName,()=>ZQ(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return Q40(Y.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await Ti(Q),H=W.base??await K.getDefaultBranch();return await nk0(K,Y.branch,H),Q.json({ok:!0},200,$9)}catch(W){return HU1(Q,W)}});let X=Ny(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return Q40(J,async()=>{try{await hF1(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,$9)}return ZQ(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",I5({maxSize:l48,onError:(Q)=>Q.json({error:"Payload too large"},413,$9)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=Ny(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=cF1(F)&&N?[F,U]:X?await Promise.all([ok0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),ok0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Ti(Q);return Promise.all([ik0(w,Y.branch),pk0(w,Y.branch)])})();await hK(K,K0(K).id,"suggesting a commit message");let L=await t88(K,B,O);return Q.json(L,200,$9)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,$9);return Q.json({error:F},502,$9)}}),$.post("/:virtualMcpId/:branch/git/judge-review",I5({maxSize:l48,onError:(Q)=>Q.json({error:"Payload too large"},413,$9)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=Ny(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=cF1(F)&&N?[F,U]:X?await Promise.all([ok0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),ok0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Ti(Q);return Promise.all([ik0(w,Y.branch),pk0(w,Y.branch)])})();await hK(K,K0(K).id,"judging whether a change needs review");let L=await r88(K,B,O,typeof H.language==="string"?H.language:void 0);return Q.json(L,200,$9)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,$9);return Q.json({error:F},502,$9)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let Y=Ny(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J=Q.req.query("path");if(!J||!J.startsWith("/")||J.startsWith("//")||J.includes("..")||J.includes("\\"))return Q.json({error:"Path not allowed"},403);let G;try{G=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W=G.replace(/\/+$/,"");return KU1(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",I5({maxSize:c48,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=Ny(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J;try{J=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!J)return Q.json({error:"Preview not available"},502);let G;try{G=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Q.json({error:"Invalid JSON body"},400);let W=JU1(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=GU1(J,W.resolveType);return KU1(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$.post("/:virtualMcpId/:branch/catalog-invoke",I5({maxSize:c48,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let{runner:Y,claimName:X,virtualMcpMetadata:J}=Q.get("vmClaim"),G;try{G=Y?await Y.getPreviewUrl(X):Ym(J)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W;try{W=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!W||typeof W!=="object"||Array.isArray(W))return Q.json({error:"Invalid JSON body"},400);let K=JU1(W);if(!K)return Q.json({error:"Invalid or missing __resolveType"},400);if(!y48(K.resolveType))return Q.json({error:"resolveType not allowed"},403);let H=GU1(G,K.resolveType);return KU1(Q,H,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(K.payload),signal:AbortSignal.timeout(30000)})}),$};var n48=D(()=>{G8();fW();wi();yF1();k00();u88();jW();Xm();l88();QH();gF();c88();d88();X51();C00();iF1();s88();iZ();w5();XU1();g48();M20();WU1();mh6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;ph6=vk0(async($,Z)=>{let Q=$.var.studioContext;try{o(Q)}catch{return $.json({error:"Unauthorized"},401)}let Y=p0(Q);if(!Y)return $.json({error:"Unauthorized"},401);let X;try{X=K0(Q)}catch{return $.json({error:"Organization scope required"},403)}let J=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!J||!G)return $.json({error:"virtualMcpId and branch are required"},400);try{dh6(G)}catch(L){let w=L instanceof Error?L.message:String(L);return $.json({error:w},400)}let W=await Q.storage.virtualMcps.findById(J);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=re({orgId:X.id,virtualMcpId:J,branch:G}),H=await S41(Q,G),F=C41(H,Y),U=h88({userId:F,projectRef:K}),N=W.metadata??null,B=await nh6($,{claimName:U,branch:G,virtualMcpId:J,sandboxUserId:F,virtualMcpMetadata:N,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:null,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z();let O;try{O=await IX(Q)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:O,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z()});tk0=new Map;$9={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};i48=["clone","install","start"]});function t48($,Z,Q){let Y=FU1.get($);if(!Y)Y={pending:null,running:!1},FU1.set($,Y);if(!Y.pending)Y.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let X=Y.pending;X.deps=Z;for(let[G,W]of Object.entries(Q.set??{}))X.set.set(G,W),X.del.delete(G);for(let G of Q.delete??[])X.del.add(G),X.set.delete(G);let J=new Promise((G,W)=>{X.resolvers.push(G),X.rejecters.push(W)});if(!Y.running)ah6($,Y);return J}async function ah6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let Y=await eh6(Q);for(let X of Q.resolvers)X(Y)}catch(Y){for(let X of Q.rejecters)X(Y)}}}finally{if(Z.running=!1,!Z.pending)FU1.delete($)}}async function eh6($){let{client:Z,branch:Q,packagePath:Y}=$.deps,X=new Map;for(let J=0;;J++){let G=await Ai(Z,Q),W=await Z.listDecofileEntries(G,Y),K=ZU1(W,Y),H=[],F=new Map(K.map((N)=>[N.path,{stem:N.stem,sha:N.sha}]));for(let[N,B]of $.set){let O=QU1(K,N),L=`${JSON.stringify(B,null,2)}
3706
- `;await C48(Z.repo,L);let w=O[0]??`${ck0(Y)}/${tF1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of O.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of QU1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await _48(Z,F.values(),X),{decofile:B,skipped:O}=t80(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:cK(Z.repo),branch:Q,packagePath:Y,blocks:O.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:$u6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof t6)||J>=sh6-1)throw N;await i$(YQ(2000,200,J,2,0.5))}}}function $u6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return e81(Y,$.deps.coAuthor)}var sh6=3,FU1;var o48=D(()=>{UA0();fk0();T6();D8();iZ();mk0();FU1=new Map});import{createHmac as r48,randomBytes as Zu6,timingSafeEqual as Qu6}from"crypto";function s48(){if(rk0)return rk0;let $;try{let Z=E0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return rk0=$?Buffer.from($):Zu6(32),rk0}function UU1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+Yu6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=r48("sha256",s48()).update(Y).digest("base64url");return`${Y}.${X}`}function a48($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(r48("sha256",s48()).update(Y).digest("base64url"));if(X.length!==J.length||!Qu6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var Yu6=21600000,rk0=null;var e48=D(()=>{F$()});function sk0($){return $&&typeof $==="object"&&!Array.isArray($)?$:null}function Xu6($){for(let[Z,Q]of Object.entries($)){if(!Z.startsWith("collections/blog/posts/"))continue;let Y=sk0(Q)?.__resolveType;if(typeof Y==="string"&&Y)return Y}return"blog/loaders/Blogpost.ts"}function $68($){let Z;try{Z=sk0(JSON.parse($))}catch{return $}if(!Z)return $;let Q=Xu6(Z),Y={...Z},X=0;for(let[J,G]of Object.entries(Z)){if(!J.startsWith("blog-manager/posts/"))continue;let W=sk0(G),K=W&&sk0(W.post);if(!K)continue;if(K.status==="archived")continue;if(typeof K.slug!=="string"||!K.slug)continue;let F=`collections/blog/posts/${J.slice(19)}`;if(Object.hasOwn(Y,F))continue;Y[F]={name:F,__resolveType:Q,["post"]:{...K,status:"published"}},X++}return X>0?JSON.stringify(Y):$}import{z as Ri}from"zod";function Gu6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Ju6.test($)}function J68($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Y40($){let Z=$.get("decofileScope");return Ec($.var.studioContext,Z.organizationId,Z.githubRepo)}function X40($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof t6)return $.json({error:Q},409);let Y=UW(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function G68(){let $=new Q1;return $.use("/:virtualMcpId/:branch",X68),$.use("/:virtualMcpId/:branch/*",X68),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await v48(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body($68(X.decofile),200,{...J,"content-type":"application/json"});let G=UU1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(J68(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return X40(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await Y40(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return X40(Z,X)}}),$.patch("/:virtualMcpId/:branch",Ku6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=Hu6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J;try{J=o80(X.data)}catch(G){if(G instanceof r80)return Z.json({error:G.message},400);throw G}for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{xk0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(nF1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await Y40(Z),W=await t48(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:ji(Y)},J),K=UU1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:J68(Z)})}catch(G){return X40(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(UW(W)!==409)throw W;await nk0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(UW(G)===409)return Z.json({error:"merge-conflict"},409);if(UW(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return X40(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0});try{let{aheadBy:J,behindBy:G}=await Y.compare(X,Q.branch);return Z.json({baseBranch:X,aheadBy:J,behindBy:G})}catch(J){if(UW(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0});throw J}}catch(Y){return X40(Z,Y)}}),$}var Ju6,Z68=500,Q68=1048576,Y68=1024,Wu6=8388608,Ku6,Hu6,X68;var W68=D(()=>{M20();fk0();G8();fW();yF1();bk0();WU1();iZ();o48();e48();XU1();mk0();gF();Ju6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Ku6=I5({maxSize:Wu6,onError:($)=>$.json({error:"Payload too large"},413)}),Hu6=Ri.object({set:Ri.record(Ri.string(),Ri.unknown()).optional(),delete:Ri.array(Ri.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=Z68,{message:`Patch cannot touch more than ${Z68} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Q68),{message:`Each block must be at most ${Q68} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=Y68),{message:`Each block key must be at most ${Y68} characters`}),X68=vk0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!Gu6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!a48(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await QW(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!Ym(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=Z40(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var K68=($)=>{let Z=new Q1;if(Z.use("*",od),Z.use("*",xe$),Z.route("/",cV0()),Z.route("/",w08()),Z.route("/",Y08()),Z.route("/",M88()),Z.route("/",j88()),Z.route("/",R88()),Z.route("/",z88()),Z.route("/",Sk0()),Z.route("/tools",v88()),Z.route("/",S88()),Z.route("/",r$8({kvStorage:$.kvStorage})),Z.route("/",t$8()),Z.route("/fs",H88({getConnection:$.getNatsConnection})),Z.route("/sandbox",p48()),Z.route("/decofile",G68()),Z.route("/",D88()),Z.route("/",U88()),Z.route("/deco-sites",dV0()),Z.route("/hosting",pe$()),Z.route("/monitor",ee$()),Z.route("/sso",yV0()),Z.route("/",Ck0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",le$()),$.mountDevAssets)Z.route("/dev-assets",tV0({orgFromPath:!0}));return 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),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",lr$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",B88()),Z.route("/mcp",bR0()),Z.route("/mcp/self",Mk0()),Z.route("/mcp",yR0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var H68=D(()=>{G8();fe$();qV0();ce$();XH1();ne$();$08();oV0();ef();eK1();HH1();o$8();s$8();F88();N88();u10();nK1();gR0();VF1();O88();L88();E88();P88();CF1();I88();C88();_F1();b88();vF1();xR0();n48();W68()});function Fu6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var Uu6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},F68=()=>{let $=new Q1;return $.use("*",Uu6),$.get("/",async(Z)=>{let Q=E0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await lJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:Fu6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var U68=D(()=>{G8();F$();SI0()});import{z as b1}from"zod";function iU($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function Pu6($){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 Au6($,Z,Q){try{return JSON.parse($)}catch{throw new O68(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function Tu6($){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:Au6(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 Ru6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?AF(Q.function.parameters):AF({type:"object",properties:{}});return[Q.function.name,c$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function qu6($){if(!$)return;return{openai:{response_format:$}}}function Mu6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function N68($,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 B68($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var Nu6=256,Bu6,Ou6,Du6,Lu6,wu6,ju6,Eu6,zu6,O68,D68,L68;var w68=D(()=>{v4();G8();wi();NH();Bu6=b1.object({type:b1.literal("function"),function:b1.object({name:b1.string(),description:b1.string().optional(),parameters:b1.record(b1.string(),b1.unknown()).optional()})}),Ou6=b1.object({id:b1.string(),type:b1.literal("function"),function:b1.object({name:b1.string(),arguments:b1.string()})}),Du6=b1.discriminatedUnion("role",[b1.object({role:b1.literal("system"),content:b1.string(),name:b1.string().optional()}),b1.object({role:b1.literal("user"),content:b1.union([b1.string(),b1.array(b1.union([b1.object({type:b1.literal("text"),text:b1.string()}),b1.object({type:b1.literal("image_url"),image_url:b1.object({url:b1.string(),detail:b1.string().optional()})})]))]),name:b1.string().optional()}),b1.object({role:b1.literal("assistant"),content:b1.string().nullable().optional(),name:b1.string().optional(),tool_calls:b1.array(Ou6).optional()}),b1.object({role:b1.literal("tool"),content:b1.string(),tool_call_id:b1.string()})]),Lu6=b1.object({type:b1.literal("text")}),wu6=b1.object({type:b1.literal("json_object")}),ju6=b1.object({type:b1.literal("json_schema"),json_schema:b1.object({name:b1.string(),description:b1.string().optional(),schema:b1.record(b1.string(),b1.unknown()),strict:b1.boolean().optional()})}),Eu6=b1.union([Lu6,wu6,ju6]),zu6=b1.object({model:b1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:b1.array(Du6),stream:b1.boolean().optional().default(!1),temperature:b1.number().min(0).max(2).optional(),max_tokens:b1.number().positive().optional(),top_p:b1.number().min(0).max(1).optional(),frequency_penalty:b1.number().min(-2).max(2).optional(),presence_penalty:b1.number().min(-2).max(2).optional(),stop:b1.union([b1.string(),b1.array(b1.string())]).optional(),tools:b1.array(Bu6).optional(),tool_choice:b1.union([b1.literal("auto"),b1.literal("none"),b1.literal("required"),b1.object({type:b1.literal("function"),function:b1.object({name:b1.string()})})]).optional(),response_format:Eu6.optional(),user:b1.string().optional()});O68=class O68 extends Error{constructor($){super($);this.name="MessageConversionError"}};D68=new Q1;D68.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(iU("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(iU("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(iU("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=zu6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(iU(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=Pu6(J.model);if(!G)return $.json(iU("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>xz(E.providerId));if(!j)return $.json(iU("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(iU(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=Tu6(J.messages),N=J.tools?Ru6(J.tools):void 0,B=qu6(J.response_format),O=Mu6(),L=Math.floor(Date.now()/1000);if(J.stream)return xO($,async(w)=>{let j=N68(F,U,N,J,B,$.req.raw.signal);try{let E=Zm(j),z=!1,T=0,P="",A=async()=>{if(P.length===0)return;let q=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of E.stream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=Nu6)await A()}else if(q.type==="tool-call"){await A();let x=T++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:x,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await A(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:B68(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await A(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=N68(F,U,N,J,B,$.req.raw.signal),j=await FU(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:O,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:B68(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(iU("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(iU(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(iU(X.message,"server_error"),500)}});L68=D68});function Iu6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function j68(){let $=new Q1;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=p0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!WZ(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||P9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(_A(U)!==J)continue;if(!Iu6(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 E68=D(()=>{G8();fG()});var P68;var z68=D(()=>{P68={name:"decocms",version:"4.406.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot 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","@inkjs/ui":"^2.0.0","@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","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@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 Su6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??ku6}}var A68,ku6="https://ph.studio.decocms.com",T68;var R68=D(()=>{G8();Ur();Qf();E9();F$();vK1();z68();A68=new Q1;A68.get("/",($)=>{let Z={version:P68.version,theme:U$$(),...RK().logo&&{logo:RK().logo},...WO()&&{internalUrl:mc1()},...E0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!E0().firecrawlApiKey,hostingEnabled:!!E0().controlplaneRestUrl&&!!E0().controlplaneServiceToken,hostingControlPlaneGa:E0().hostingControlPlaneGa,monitorEnabled:!!E0().clickhouseAnalyticsUrl&&!!E0().clickhouseAnalyticsPassword,monitorGa:E0().monitorGa,plansEnabled:E0().plansEnabled,auth:Ca$(),posthog:Su6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:nO()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});T68=A68});function By($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function NU1($){return(By($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function q68($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(By($))}&sz=${Z}`}function Cu6($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function M68($){let{brand:Z,domain:Q,score:Y}=$,X=typeof Y==="number"?`${Z} Deco Score \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} Deco Score \xB7 decocms`,J=Cu6(`How does ${Q} really perform? See the full ${Z} Deco Score \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,200);return{title:X,description:J}}import{z as L$}from"zod";var _u6,I68;var V68=D(()=>{_u6=L$.object({check_id:L$.string(),title:L$.string(),description:L$.string().optional(),impact:L$.string().optional(),why:L$.string().optional(),category:L$.string(),severity:L$.string(),value_band:L$.string().optional(),value_driver:L$.string().optional(),controllability:L$.string().optional(),pages:L$.array(L$.string()),tasks:L$.array(L$.string()),evidence:L$.string(),sample_scope:L$.string().optional(),sources:L$.array(L$.string())}),I68=L$.object({domain:L$.string(),brand:L$.string(),favicon:L$.string().optional(),scanned_at:L$.string().nullable(),lang:L$.string(),score:L$.number().nullable(),band:L$.string().nullable(),totals:L$.object({measured:L$.number(),registry_total:L$.number(),passed:L$.number(),failed:L$.number(),blocked:L$.number()}),buckets:L$.array(L$.object({id:L$.enum(["critical","important","worth"]),label:L$.string(),items:L$.array(_u6)})),passing:L$.object({count:L$.number(),items:L$.array(L$.object({check_id:L$.string(),title:L$.string()}))}),not_measured:L$.object({count:L$.number(),groups:L$.array(L$.object({reason:L$.string(),label:L$.string(),count:L$.number(),checks:L$.array(L$.string())}))}),categories:L$.array(L$.object({key:L$.string(),label:L$.string(),score:L$.number().nullable(),band:L$.string().nullable(),pass:L$.number(),fail:L$.number()})),screenshots:L$.array(L$.object({url:L$.string(),page_type:L$.string().optional(),viewport:L$.enum(["desktop","mobile"]),image_url:L$.string()}))})});function k68($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${uK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function ak0($,Z={}){let Q=await fetch(k68($,"",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 I68.parse(await Q.json())}async function S68($,Z={}){let Q=await fetch(k68($,".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 BU1=D(()=>{V68();jw()});import{join as C68}from"path";async function bu6($){try{let Z=await ak0($,{signal:AbortSignal.timeout(vu6)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||NU1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function iJ($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function xu6($,Z){let Q=By($),Y=Z?.brand?.trim()||NU1(Q),X=q68(Q,128),G=`${(E0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=M68({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${iJ(W)}</title>`,`<meta name="description" content="${iJ(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="${iJ(W)}" />`,`<meta property="og:description" content="${iJ(K)}" />`,`<meta property="og:url" content="${iJ(G)}" />`,`<meta property="og:image" content="${iJ(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${iJ(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${iJ(W)}" />`,`<meta name="twitter:description" content="${iJ(K)}" />`,`<meta name="twitter:image" content="${iJ(H)}" />`,`<meta name="twitter:image:alt" content="${iJ(F)}" />`,`<link rel="canonical" href="${iJ(G)}" />`,`<link rel="alternate" type="text/markdown" href="${iJ(G)}.md" />`,`<link rel="icon" href="${iJ(X)}" sizes="any" />`].join(`
3706
+ `;await C48(Z.repo,L);let w=O[0]??`${ck0(Y)}/${tF1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of O.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of QU1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await _48(Z,F.values(),X),{decofile:B,skipped:O}=t80(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:cK(Z.repo),branch:Q,packagePath:Y,blocks:O.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:$u6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof t6)||J>=sh6-1)throw N;await i$(YQ(2000,200,J,2,0.5))}}}function $u6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return e81(Y,$.deps.coAuthor)}var sh6=3,FU1;var o48=D(()=>{UA0();fk0();T6();D8();iZ();mk0();FU1=new Map});import{createHmac as r48,randomBytes as Zu6,timingSafeEqual as Qu6}from"crypto";function s48(){if(rk0)return rk0;let $;try{let Z=E0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return rk0=$?Buffer.from($):Zu6(32),rk0}function UU1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+Yu6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=r48("sha256",s48()).update(Y).digest("base64url");return`${Y}.${X}`}function a48($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(r48("sha256",s48()).update(Y).digest("base64url"));if(X.length!==J.length||!Qu6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var Yu6=21600000,rk0=null;var e48=D(()=>{F$()});function sk0($){return $&&typeof $==="object"&&!Array.isArray($)?$:null}function Xu6($){for(let[Z,Q]of Object.entries($)){if(!Z.startsWith("collections/blog/posts/"))continue;let Y=sk0(Q)?.__resolveType;if(typeof Y==="string"&&Y)return Y}return"blog/loaders/Blogpost.ts"}function $68($){let Z;try{Z=sk0(JSON.parse($))}catch{return $}if(!Z)return $;let Q=Xu6(Z),Y={...Z},X=0;for(let[J,G]of Object.entries(Z)){if(!J.startsWith("blog-manager/posts/"))continue;let W=sk0(G),K=W&&sk0(W.post);if(!K)continue;if(K.status==="archived")continue;if(typeof K.slug!=="string"||!K.slug)continue;let F=`collections/blog/posts/${J.slice(19)}`;if(Object.hasOwn(Y,F))continue;Y[F]={name:F,__resolveType:Q,["post"]:{...K,status:"published"}},X++}return X>0?JSON.stringify(Y):$}import{z as Ri}from"zod";function Gu6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Ju6.test($)}function J68($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Y40($){let Z=$.get("decofileScope");return Ec($.var.studioContext,Z.organizationId,Z.githubRepo)}function X40($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof t6)return $.json({error:Q},409);let Y=UW(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function G68(){let $=new Q1;return $.use("/:virtualMcpId/:branch",X68),$.use("/:virtualMcpId/:branch/*",X68),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await v48(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body($68(X.decofile),200,{...J,"content-type":"application/json"});let G=UU1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(J68(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return X40(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await Y40(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return X40(Z,X)}}),$.patch("/:virtualMcpId/:branch",Ku6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=Hu6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J;try{J=o80(X.data)}catch(G){if(G instanceof r80)return Z.json({error:G.message},400);throw G}for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{xk0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(nF1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await Y40(Z),W=await t48(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:ji(Y)},J),K=UU1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:J68(Z)})}catch(G){return X40(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(UW(W)!==409)throw W;await nk0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(UW(G)===409)return Z.json({error:"merge-conflict"},409);if(UW(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return X40(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0});try{let{aheadBy:J,behindBy:G}=await Y.compare(X,Q.branch);return Z.json({baseBranch:X,aheadBy:J,behindBy:G})}catch(J){if(UW(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0});throw J}}catch(Y){return X40(Z,Y)}}),$}var Ju6,Z68=500,Q68=1048576,Y68=1024,Wu6=8388608,Ku6,Hu6,X68;var W68=D(()=>{M20();fk0();G8();fW();yF1();bk0();WU1();iZ();o48();e48();XU1();mk0();gF();Ju6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Ku6=I5({maxSize:Wu6,onError:($)=>$.json({error:"Payload too large"},413)}),Hu6=Ri.object({set:Ri.record(Ri.string(),Ri.unknown()).optional(),delete:Ri.array(Ri.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=Z68,{message:`Patch cannot touch more than ${Z68} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Q68),{message:`Each block must be at most ${Q68} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=Y68),{message:`Each block key must be at most ${Y68} characters`}),X68=vk0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!Gu6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!a48(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await QW(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!Ym(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=Z40(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var K68=($)=>{let Z=new Q1;if(Z.use("*",od),Z.use("*",xe$),Z.route("/",cV0()),Z.route("/",w08()),Z.route("/",Y08()),Z.route("/",M88()),Z.route("/",j88()),Z.route("/",R88()),Z.route("/",z88()),Z.route("/",Sk0()),Z.route("/tools",v88()),Z.route("/",S88()),Z.route("/",r$8({kvStorage:$.kvStorage})),Z.route("/",t$8()),Z.route("/fs",H88({getConnection:$.getNatsConnection})),Z.route("/sandbox",p48()),Z.route("/decofile",G68()),Z.route("/",D88()),Z.route("/",U88()),Z.route("/deco-sites",dV0()),Z.route("/hosting",pe$()),Z.route("/monitor",ee$()),Z.route("/sso",yV0()),Z.route("/",Ck0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",le$()),$.mountDevAssets)Z.route("/dev-assets",tV0({orgFromPath:!0}));return 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),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",lr$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",B88()),Z.route("/mcp",bR0()),Z.route("/mcp/self",Mk0()),Z.route("/mcp",yR0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var H68=D(()=>{G8();fe$();qV0();ce$();XH1();ne$();$08();oV0();ef();eK1();HH1();o$8();s$8();F88();N88();u10();nK1();gR0();VF1();O88();L88();E88();P88();CF1();I88();C88();_F1();b88();vF1();xR0();n48();W68()});function Fu6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var Uu6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},F68=()=>{let $=new Q1;return $.use("*",Uu6),$.get("/",async(Z)=>{let Q=E0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await lJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:Fu6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var U68=D(()=>{G8();F$();SI0()});import{z as b1}from"zod";function iU($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function Pu6($){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 Au6($,Z,Q){try{return JSON.parse($)}catch{throw new O68(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function Tu6($){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:Au6(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 Ru6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?AF(Q.function.parameters):AF({type:"object",properties:{}});return[Q.function.name,c$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function qu6($){if(!$)return;return{openai:{response_format:$}}}function Mu6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function N68($,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 B68($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var Nu6=256,Bu6,Ou6,Du6,Lu6,wu6,ju6,Eu6,zu6,O68,D68,L68;var w68=D(()=>{v4();G8();wi();NH();Bu6=b1.object({type:b1.literal("function"),function:b1.object({name:b1.string(),description:b1.string().optional(),parameters:b1.record(b1.string(),b1.unknown()).optional()})}),Ou6=b1.object({id:b1.string(),type:b1.literal("function"),function:b1.object({name:b1.string(),arguments:b1.string()})}),Du6=b1.discriminatedUnion("role",[b1.object({role:b1.literal("system"),content:b1.string(),name:b1.string().optional()}),b1.object({role:b1.literal("user"),content:b1.union([b1.string(),b1.array(b1.union([b1.object({type:b1.literal("text"),text:b1.string()}),b1.object({type:b1.literal("image_url"),image_url:b1.object({url:b1.string(),detail:b1.string().optional()})})]))]),name:b1.string().optional()}),b1.object({role:b1.literal("assistant"),content:b1.string().nullable().optional(),name:b1.string().optional(),tool_calls:b1.array(Ou6).optional()}),b1.object({role:b1.literal("tool"),content:b1.string(),tool_call_id:b1.string()})]),Lu6=b1.object({type:b1.literal("text")}),wu6=b1.object({type:b1.literal("json_object")}),ju6=b1.object({type:b1.literal("json_schema"),json_schema:b1.object({name:b1.string(),description:b1.string().optional(),schema:b1.record(b1.string(),b1.unknown()),strict:b1.boolean().optional()})}),Eu6=b1.union([Lu6,wu6,ju6]),zu6=b1.object({model:b1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:b1.array(Du6),stream:b1.boolean().optional().default(!1),temperature:b1.number().min(0).max(2).optional(),max_tokens:b1.number().positive().optional(),top_p:b1.number().min(0).max(1).optional(),frequency_penalty:b1.number().min(-2).max(2).optional(),presence_penalty:b1.number().min(-2).max(2).optional(),stop:b1.union([b1.string(),b1.array(b1.string())]).optional(),tools:b1.array(Bu6).optional(),tool_choice:b1.union([b1.literal("auto"),b1.literal("none"),b1.literal("required"),b1.object({type:b1.literal("function"),function:b1.object({name:b1.string()})})]).optional(),response_format:Eu6.optional(),user:b1.string().optional()});O68=class O68 extends Error{constructor($){super($);this.name="MessageConversionError"}};D68=new Q1;D68.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(iU("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(iU("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(iU("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=zu6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(iU(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=Pu6(J.model);if(!G)return $.json(iU("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>xz(E.providerId));if(!j)return $.json(iU("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(iU(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=Tu6(J.messages),N=J.tools?Ru6(J.tools):void 0,B=qu6(J.response_format),O=Mu6(),L=Math.floor(Date.now()/1000);if(J.stream)return xO($,async(w)=>{let j=N68(F,U,N,J,B,$.req.raw.signal);try{let E=Zm(j),z=!1,T=0,P="",A=async()=>{if(P.length===0)return;let q=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of E.stream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=Nu6)await A()}else if(q.type==="tool-call"){await A();let x=T++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:x,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await A(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:B68(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await A(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=N68(F,U,N,J,B,$.req.raw.signal),j=await FU(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:O,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:B68(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(iU("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(iU(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(iU(X.message,"server_error"),500)}});L68=D68});function Iu6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function j68(){let $=new Q1;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=p0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!WZ(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||P9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(_A(U)!==J)continue;if(!Iu6(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 E68=D(()=>{G8();fG()});var P68;var z68=D(()=>{P68={name:"decocms",version:"4.406.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 migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot 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","@inkjs/ui":"^2.0.0","@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","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@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 Su6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??ku6}}var A68,ku6="https://ph.studio.decocms.com",T68;var R68=D(()=>{G8();Ur();Qf();E9();F$();vK1();z68();A68=new Q1;A68.get("/",($)=>{let Z={version:P68.version,theme:U$$(),...RK().logo&&{logo:RK().logo},...WO()&&{internalUrl:mc1()},...E0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!E0().firecrawlApiKey,hostingEnabled:!!E0().controlplaneRestUrl&&!!E0().controlplaneServiceToken,hostingControlPlaneGa:E0().hostingControlPlaneGa,monitorEnabled:!!E0().clickhouseAnalyticsUrl&&!!E0().clickhouseAnalyticsPassword,monitorGa:E0().monitorGa,plansEnabled:E0().plansEnabled,auth:Ca$(),posthog:Su6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:nO()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});T68=A68});function By($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function NU1($){return(By($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function q68($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(By($))}&sz=${Z}`}function Cu6($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function M68($){let{brand:Z,domain:Q,score:Y}=$,X=typeof Y==="number"?`${Z} Deco Score \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} Deco Score \xB7 decocms`,J=Cu6(`How does ${Q} really perform? See the full ${Z} Deco Score \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,200);return{title:X,description:J}}import{z as L$}from"zod";var _u6,I68;var V68=D(()=>{_u6=L$.object({check_id:L$.string(),title:L$.string(),description:L$.string().optional(),impact:L$.string().optional(),why:L$.string().optional(),category:L$.string(),severity:L$.string(),value_band:L$.string().optional(),value_driver:L$.string().optional(),controllability:L$.string().optional(),pages:L$.array(L$.string()),tasks:L$.array(L$.string()),evidence:L$.string(),sample_scope:L$.string().optional(),sources:L$.array(L$.string())}),I68=L$.object({domain:L$.string(),brand:L$.string(),favicon:L$.string().optional(),scanned_at:L$.string().nullable(),lang:L$.string(),score:L$.number().nullable(),band:L$.string().nullable(),totals:L$.object({measured:L$.number(),registry_total:L$.number(),passed:L$.number(),failed:L$.number(),blocked:L$.number()}),buckets:L$.array(L$.object({id:L$.enum(["critical","important","worth"]),label:L$.string(),items:L$.array(_u6)})),passing:L$.object({count:L$.number(),items:L$.array(L$.object({check_id:L$.string(),title:L$.string()}))}),not_measured:L$.object({count:L$.number(),groups:L$.array(L$.object({reason:L$.string(),label:L$.string(),count:L$.number(),checks:L$.array(L$.string())}))}),categories:L$.array(L$.object({key:L$.string(),label:L$.string(),score:L$.number().nullable(),band:L$.string().nullable(),pass:L$.number(),fail:L$.number()})),screenshots:L$.array(L$.object({url:L$.string(),page_type:L$.string().optional(),viewport:L$.enum(["desktop","mobile"]),image_url:L$.string()}))})});function k68($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${uK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function ak0($,Z={}){let Q=await fetch(k68($,"",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 I68.parse(await Q.json())}async function S68($,Z={}){let Q=await fetch(k68($,".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 BU1=D(()=>{V68();jw()});import{join as C68}from"path";async function bu6($){try{let Z=await ak0($,{signal:AbortSignal.timeout(vu6)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||NU1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function iJ($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function xu6($,Z){let Q=By($),Y=Z?.brand?.trim()||NU1(Q),X=q68(Q,128),G=`${(E0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=M68({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${iJ(W)}</title>`,`<meta name="description" content="${iJ(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="${iJ(W)}" />`,`<meta property="og:description" content="${iJ(K)}" />`,`<meta property="og:url" content="${iJ(G)}" />`,`<meta property="og:image" content="${iJ(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${iJ(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${iJ(W)}" />`,`<meta name="twitter:description" content="${iJ(K)}" />`,`<meta name="twitter:image" content="${iJ(H)}" />`,`<meta name="twitter:image:alt" content="${iJ(F)}" />`,`<link rel="canonical" href="${iJ(G)}" />`,`<link rel="alternate" type="text/markdown" href="${iJ(G)}.md" />`,`<link rel="icon" href="${iJ(X)}" sizes="any" />`].join(`
3707
3707
  `)}function fu6($,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}
3708
3708
  </head>`)}function _68($){let Z=new Q1;return Z.get("/:domain/og.png",async(Q)=>{let Y=By(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(C68($,"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(`${uK({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(yu6)}),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=By(Q.req.param("file").replace(/\.md$/,""));try{let X=await S68(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(gu6)});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=$?C68($,"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 bu6(By(Y)),K=xu6(Y,W);return Q.html(fu6(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var vu6=2500,yu6=1e4,gu6=1e4;var v68=D(()=>{G8();jw();BU1();F$()});function ek0($,Z){return fetch(`${uK({})}${$}`,Z)}async function hu6($,Z){let Q=await ak0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function lu6($){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 uu6,yO,b68=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},x68;var f68=D(()=>{G8();hG();jw();BU1();uu6=new Set(["complete","errored","terminated","unknown"]);yO=new Q1;yO.use("*",async($,Z)=>{let Q=await C8.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});yO.use("/link-token/*",b68);yO.use("/suggest",b68);yO.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 hu6(Z,Q))}catch{return $.json({error:"report read failed"},502)}});yO.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let{domain:Y,distinctId:X}=lu6(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await ek0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${EA({})}`},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)}});yO.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await ek0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${EA({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:uu6.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});yO.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await ek0(`/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)}});yO.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await ek0(`/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:[]})}});x68=yO});var cu6=1048576,OU1;var y68=D(()=>{G8();fW();F$();jK1();OU1=new Q1;OU1.post("/webhook",I5({maxSize:cu6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=E0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!ds$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=is$(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await ps$(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as mu6}from"crypto";function pu6($,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 mu6(Buffer.from(X),Buffer.from(Y))}function nu6($,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 g68($){let Z=new Q1;return Z.post("/webhook",I5({maxSize:du6,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(!pu6(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"&&!iu6.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"});let N=(await q41())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let W=nu6(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await tu6($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function tu6($,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 fV$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var du6=5242880,iu6;var h68=D(()=>{G8();fW();QH();P7();iu6=new Set(["check_suite","issue_comment"])});function u68($){let Z=new qO($.db,new FG($.encryptionKey)),Q=new Q1;return Q.get("/attachments/:token",async(Y)=>{let X=sM$(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 l68=D(()=>{G8();vz();S51();kj()});function c68($){let Z=new qO($.db,new FG($.encryptionKey));async function Q(X,J){let G=En$(J);if(!G)return;let W=await Z.getByWebhookSecret(X);if(!W?.enabled)return;let K=await PW($.db,W.organizationId);if(!K)return;if(await vI0(K,W,G)==="started")console.log(`[jira-webhook] started a run for ${G.issueKey} entering "${G.toStatus}"`)}let Y=new Q1;return Y.post("/webhook/:secret",I5({maxSize:ou6}),async(X)=>{let J=X.req.param("secret");if(!await Z.getByWebhookSecret(J))return X.json({error:"Unknown webhook"},404);let W;try{W=await X.req.json()}catch{return X.json({error:"Body must be JSON"},400)}return Q(J,W).catch((K)=>{console.error("[jira-webhook] trigger failed",K)}),X.body(null,202)}),Y}var ou6=1048576;var m68=D(()=>{G8();fW();vz();bI0();rx()});import{DBOS as $S0,SchedulerMode as ru6}from"@dbos-inc/dbos-sdk";function i68($){LU1=$}function p68(){if(!LU1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return LU1}function n68(){let $=p68();return new qO($.db,new FG($.encryptionKey))}async function eu6($,Z){try{let Q=await n68().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let Y=await PW(p68().db,Q.organizationId);if(!Y)return{integrationId:$,started:0};if((await Y.storage.jiraIntegrations.listAutomations(Q.organizationId)).length===0)return{integrationId:$,started:0};let J=new _Q(Q.siteUrl,Q.email,Q.apiToken),W=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${d68}m"`,K=0,H;for(let F=0;F<au6;F++){let U=await J.searchIssues({jql:W,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=zn$(N,N.changelog?.histories??[],Z);for(let O of B)if(await vI0(Y,Q,O)==="started")K++}if(H=U.nextPageToken??void 0,!H)break}return{integrationId:$,started:K}}catch(Q){return{integrationId:$,started:0,error:Q instanceof Error?Q.message:String(Q)}}}async function $l6($,Z){let Q=new Date($.getTime()-d68*60000),Y=await $S0.runStep(()=>n68().listEnabledIds(),{name:"loadJiraIntegrations"});if(Y.length===0)return;let X=await Promise.all(Y.map((J)=>$S0.runStep(()=>eu6(J,Q),{name:`sweepJira:${J}`})));for(let J of X)if(J.error)console.warn(`[jira-trigger] integration ${J.integrationId} failed: ${J.error}`);else if(J.started>0)console.log(`[jira-trigger] integration ${J.integrationId} started ${J.started} run(s) the webhook missed`)}function t68(){if(DU1)return;DU1=$S0.registerWorkflow($l6,{name:"jiraTriggerSweepWorkflow"}),$S0.registerScheduled(DU1,{name:"jiraTriggerSweepWorkflow",crontab:su6,mode:ru6.ExactlyOncePerIntervalWhenActive})}var su6="7-59/10 * * * *",d68=35,au6=5,LU1=null,DU1=null;var o68=D(()=>{vz();rx();kj();bI0()});function r68($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var s68,Zl6,Ql6,a68;var e68=D(()=>{G8();TK();qm();el();s68=new Q1,Zl6=["range","if-none-match","if-modified-since"],Ql6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];s68.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(td($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new A$(401,{message:"Authentication required"})}if(!Q)throw new A$(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new A$(400,{message:"Missing file key"});let X=await E10(Y,Z);if(!X)throw new A$(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&JW()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new A$(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 r68(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of Zl6){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 A$(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 A$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of Ql6){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),r68(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});a68=s68});var J40=b((Oy)=>{var Yl6=Oy&&Oy.__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]}),Xl6=Oy&&Oy.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))Yl6(Z,$,Q)};Object.defineProperty(Oy,"__esModule",{value:!0});Xl6($G(),Oy)});var Q58=b(($58)=>{Object.defineProperty($58,"__esModule",{value:!0});$58.version=void 0;$58.version="3.4.0"});var J58=b((pU)=>{var Jl6=pU&&pU.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(pU,"__esModule",{value:!0});pU.NodeTransport=pU.VERSION=void 0;pU.nodeResolveHost=Ul6;var m5=J40(),Gl6=q0("net"),wU1=q0("tls"),Wl6=q0("path"),Y58=q0("fs"),Kl6=Jl6(q0("dns")),Hl6=Q58();pU.VERSION=Hl6.version;var Fl6="nats.js";class X58{socket;version;lang;yields=[];signal=(0,m5.deferred)();closedNotification=(0,m5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=Fl6,this.version=pU.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,m5.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 m5.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 m5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new m5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,m5.deferred)(),Q,Y=(0,Gl6.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,m5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=m5.DataBuffer.concat(...this.yields),X=(0,m5.extractProtocolMessage)(Y);if(X!=="")try{let J=m5.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,m5.deferred)();try{if($=(0,Wl6.resolve)($),!(0,Y58.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,Y58.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,m5.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new m5.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,m5.deferred)();try{let X=(0,wU1.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 m5.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,m5.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new m5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,m5.deferred)();try{let Y=(0,wU1.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 m5.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,m5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,m5.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 wU1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,m5.render)($)}`);let Z=(0,m5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,m5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,m5.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}}pU.NodeTransport=X58;function Ul6($){let Z=(0,m5.deferred)();return Kl6.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 F58=b((H58)=>{Object.defineProperty(H58,"__esModule",{value:!0});H58.connect=Nl6;var G58=J58(),W58=J40(),K58=J40();function Nl6($={}){if((0,K58.hasWsProtocol)($))return Promise.reject(K58.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,W58.setTransportFactory)({factory:()=>{return new G58.NodeTransport},dnsResolveFn:G58.nodeResolveHost}),W58.NatsConnectionImpl.connect($)}});var U58=b((gO)=>{var Ol6=gO&&gO.__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]}),Dl6=gO&&gO.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))Ol6(Z,$,Q)};Object.defineProperty(gO,"__esModule",{value:!0});gO.connect=void 0;var Ll6=F58();Object.defineProperty(gO,"connect",{enumerable:!0,get:function(){return Ll6.connect}});Dl6(J40(),gO)});function D58($){let Z=$?.connectFn??zl6,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 O=0;while(!J)try{Q=await Z({servers:N,timeout:El6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${O} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{O++;let L=YQ(jl6,wl6,O-1,2,0.5);await i$(L)}}return{init(N,B){if(X)return;X=!0,J=!1;let O=B?.creds?N58.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(N,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!Y)Y=O58.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 zl6($){return B58.connect($)}var N58,B58,O58,wl6=100,jl6=3000,El6=3000;var L58=D(()=>{D8();N58=C($p(),1),B58=C(U58(),1),O58=C(GN(),1)});function ZS0($){let Z=$?.ttlMs??60000,Q=$?.maxSize??1e4,Y=$?.updateRecencyOnGet??!1,X=new Map;function J(){if(X.size<=Q)return;let G=Date.now();for(let[W,K]of X)if(K.expiresAt<=G)X.delete(W);while(X.size>Q){let W=X.keys().next().value;if(W===void 0)break;X.delete(W)}}return{get(G){let W=X.get(G);if(!W)return;if(W.expiresAt<=Date.now()){X.delete(G);return}if(Y)X.delete(G),X.set(G,W);return W.value},set(G,W){X.delete(G),X.set(G,{value:W,expiresAt:Date.now()+Z}),J()},delete(G){X.delete(G)},clear(){X.clear()},size(){return X.size}}}function QS0($,Z){return`${$}.${Z}`}class jU1{cache;constructor($){this.cache=ZS0({ttlMs:$?.ttlMs??Pl6,maxSize:$?.maxSize??Al6})}async get($,Z){return this.cache.get(QS0($,Z))??null}async set($,Z,Q){this.cache.set(QS0($,Z),Q)}async invalidate($,Z){this.cache.delete(QS0($,Z)),this.cache.delete(QS0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var Pl6=600000,Al6=5000;var w58=()=>{};function YS0($,Z){return`${$}:${Z}`}function EU1($){let Z=ZS0({ttlMs:$?.ttlMs??Tl6,maxSize:$?.maxSize??Rl6}),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(j58,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(YS0(K,H))},set(K,H,F){Z.set(YS0(K,H),F)},invalidate(K,H){Z.delete(YS0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(j58),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(YS0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var j58="studio.ai-provider-keys.invalidate",Tl6=30000,Rl6=5000;var E58=()=>{};class zU1{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 z58=($)=>{let Z;return()=>Z??=$()},PU1,AU1;var P58=D(()=>{C6();PU1=z58(()=>z$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),AU1=z58(()=>z$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function Cl6($=R58){return{name:EU,subjects:[`${bZ1}.>`],storage:MH.StorageType.File,max_age:Il6,max_bytes:kl6,max_msgs_per_subject:Sl6,discard:MH.DiscardPolicy.Old,retention:MH.RetentionPolicy.Limits,duplicate_window:Vl6,num_replicas:$}}class q58{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 A58($){let Z=T58.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function xl6($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,Ml6().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 fl6($,Z){return $.info?.cluster?Z:1}function yl6($){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 TU1{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=Cl6(X);try{await Y.streams.info(EU),await Y.streams.update(EU,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(EU,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(EU),await Y.streams.add(J);else throw G}},Q=await g8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await MH.jetstreamManager($),X=fl6($,R58);try{await Z(Y,X)}catch(J){if(X<=1||!yl6(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:bm});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=xl6(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=zC$(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=fZ1(H,{runId:Z}),N=performance.now()-F;PU1().record(N),AU1().add(1,{"org.id":Y??"unknown"}),bl6?.record(N,U.reduce((B,O)=>B+O.data.length,0));for(let B of U)J.publish(X,B.subject,B.data,B.headers?A58(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:O}=await H.read();if(B)break;if(K(O),U++,++F>=64)F=0,await new Promise((L)=>setImmediate(L))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),vl6)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 g8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:A58(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:bm}),!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=fZ1(Z,{runId:$,dedup:Q});PU1().record(performance.now()-X),AU1().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=EC$({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"?MH.DeliverPolicy.New:MH.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=yj($),W;try{W=await g8(async()=>{return(await Y.consumers.get(EU,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:bm})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=YR0({messages:async function*(){try{for await(let L of W)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(eT0()).pipeThrough($R0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,O=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:j}=await F.read();if(w){O(),L.close();return}let E=j;if(E.kind==="done"){if(J){O(),L.close();return}continue}L.enqueue(E.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(EU,{filter:yj($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var MH,T58,ql6=($)=>{let Z;return()=>Z??=$()},Ml6,Il6=86400000000000,Vl6=120000000000,kl6=4294967296,R58,Sl6=500000,_l6,vl6,bl6;var M58=D(()=>{D8();yZ1();XR0();ZR0();C6();P58();MH=C(GN(),1),T58=C($p(),1),Ml6=ql6(()=>z$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),R58=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);_l6=process.env.STREAM_ENCODE_TRACE==="1",vl6=process.env.DECOPILOT_STREAM_TRACE==="1";bl6=_l6?new q58:null});function XS0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,nH(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 I58=D(()=>{e8()});class RU1{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 gl6($,Z){let Q=$.startsWith("thread:")?YH($):$;return[...new Set([Z,Q].filter((Y)=>!!Y))]}async function qU1($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await KU($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await hc($,{threadId:X,runBranch:G?.branch}),K=gl6(W,await TA0($,X)),H=await Pe($,Q,e11(J)).catch(()=>null);if(!H){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}for(let F of K){let U=await H.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:H.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await aG(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 V58=D(()=>{iZ();jW();P7()});async function k58($,Z,Q){let Y=Z.organizationId;if(!VX(Z))return!1;if(!sx(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=await $.storage.organizationSettings.get(Y),J=oF(X?.flags),G=await $.storage.taskBoard.update(Z.id,Y,{status:J},Z.updatedBy);return await o6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),E8(Y,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var S58=D(()=>{C4();_Y();Em();WH();V9()});function il6($){return $ instanceof zX}function C58($,Z){return Z-$>=ml6}class MU1{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??hl6;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??ll6,Q=this.options.itemIntervalMs??ul6,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z),$+=await this.settleFinishedRunsWithoutPr(Z,Y)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-R51),m91);for(let Q of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${Q.threadId} on ${Q.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-dl6));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 u91(this.taskBoard,X,Y),await l91(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!==T$.progress||VX(W)||W.assigneeId!==j8)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await qU1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!C58(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.advanceToReviewIfInProgress(X,J,W.updatedBy);if(!F)continue;await this.taskBoard.recordActivity({taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:T$.progress,to:T$.review,reason:H}}).catch(()=>{}),E8(J,F),await KH(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!==T$.progress||G.assigneeId!==j8)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await HH(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),il6(G)){await this.returnToTodo(Y,X,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(Y,X,J,new Date(Date.now()+cl6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async returnToTodo($,Z,Q){try{let Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!==T$.progress)return;let X=await this.taskBoard.returnToTodoAfterFailure($,Z,Y.updatedBy);if(!X)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q}}).catch(()=>{}),E8(Z,X)}catch(Y){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Y)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!C58(SB(Q,Z.reviewCycleStartedAt),Date.now()))return;await KH($,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(!VX(Y))return!1;let X=Y.assigneeId===j8,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 qU1(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 Am(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 k58(G,Y,W))return!0;if(await R_$(G,Y))return!0;if(await this.resolveConflictFromSweep(G,Y,W))return!0;if(!X)return!1;if(!f91(W))return!1;return await zm(G,Y,{previewMatchesHead:y91(W)}),!0}async resolveConflictFromSweep($,Z,Q){let Y=Q.find((X)=>X.state!=="closed"&&X.conflict===!0);if(!Y)return!1;return await vj($,Z.organizationId,Z,{pr:{number:Y.number,url:Y.url},conflict:!0}).catch((X)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",X),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var hl6=60000,ul6=300000,ll6=50,cl6=60000,ml6=900000,dl6=120000;var _58=D(()=>{C4();DT0();V58();wU();S10();WH();S58();V9();FW();d91();P7();Q10();Pm()});import{readdir as pl6,rm as JS0}from"fs/promises";import{join as GS0}from"path";async function WS0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-nl6),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await Dy($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await v58($,X,Z);else if(!X.startsWith(".")){let J=GS0($,X),G=await Dy(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await v58(J,K,Z)}if((await Dy(J)).length===0)await JS0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function v58($,Z,Q){let Y=0,X=GS0($,Z),J=await Dy(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=GS0(X,W),H=await Dy(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=GS0(K,U);await JS0(B,{recursive:!0,force:!0}),Y++}}if((await Dy(K)).length===0)await JS0(K,{recursive:!0,force:!0})}if((await Dy(X)).length===0)await JS0(X,{recursive:!0,force:!0});return Y}async function Dy($){try{return(await pl6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var nl6=30;var IU1=()=>{};import{DBOS as VU1,SchedulerMode as tl6}from"@dbos-inc/dbos-sdk";async function rl6(){let $=[uW(),Ry(),eU()],Z=0;for(let Q of $)try{Z+=await WS0(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 sl6($,Z){await VU1.runStep(()=>rl6(),{name:"monitoringRetention"})}function x58(){if(b58)return;b58=!0;let $=VU1.registerWorkflow(sl6,{name:"monitoringRetentionWorkflow"});VU1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:ol6,mode:tl6.ExactlyOncePerIntervalWhenActive})}var ol6="23 4 * * *",b58=!1;var f58=D(()=>{D3();IU1()});function y58($){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 vQ.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await kA($.db,Z,Y.role);return X.boundAuth=FK1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new OP(Q,void 0,X.boundAuth,Y.role,"self"),_j(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var g58=D(()=>{BK();pF()});function al6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function el6(){return{services:al6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function Zc6(){for(let $ of $c6)$()}function h58($){let Z=[...kU1.logs,$];kU1={...kU1,logs:Z.length>500?Z.slice(-500):Z},Zc6()}function SU1(){return Qc6}var kU1,$c6,Qc6=!1;var CU1=D(()=>{kU1=el6(),$c6=new Set});import{EventEmitter as Yc6}from"events";var _U1;var u58=D(()=>{CU1();_U1=new Yc6;_U1.on("request",($)=>{h58($)})});function l58(){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=qi(N.params.name),O=N.params.arguments||{},L=Object.keys(O).map((j)=>qi(j)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";J=`${Z9.tool}${B}${Z9.dim}(${w})${Z9.reset}`}else if(N.method)J=`${Z9.dim}${qi(N.method)}${Z9.reset}`}}catch{}}let W=qi(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${Z9.mcp}${qi(F.slice(0,12))}\u2026${Z9.reset}`}else if(X==="/mcp")W=`${Z9.mcp}/mcp${Z9.reset}`;else if(X==="/mcp/registry")W=`${Z9.mcp}/mcp/registry${Z9.reset}`;let K=Jc6(Y),H=G?"\u25C0":"\u2190";if(!SU1())console.log(`${Z9.dim}${H}${Z9.reset} ${K}${Y}${Z9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=Xc6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=G?"\u25B6":"\u2192";if(!SU1())console.log(`${Z9.dim}${O}${Z9.reset} ${K}${Y}${Z9.reset} ${W}${J?` ${J}`:""} ${N}${U}${Z9.reset} ${Z9.duration}${B}${Z9.reset}`);_U1.emit("request",{method:Y,path:qi(X),status:U,duration:F,timestamp:new Date})}}}var Z9,Xc6=($)=>{if($>=500)return Z9.serverError;if($>=400)return Z9.clientError;if($>=300)return Z9.redirect;return Z9.ok},Jc6=($)=>{return Z9[$]||Z9.reset},qi=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var c58=D(()=>{CU1();u58();Z9={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 p58}from"crypto";import{mkdir as Gc6,readdir as Wc6,rm as m58,stat as n58}from"fs/promises";import{join as bU1,relative as Kc6}from"path";import{z as s$}from"zod";function o58($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return bU1(Hc6,Z)}function r58($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function vU1($,Z){let Q=o58($),Y=r58(Z);return bU1(Q,Y)}function Fc6($,Z,Q,Y){let X=E0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return p58("sha256",X).update(J).digest("hex")}function i58($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=Fc6(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${r58(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function s58($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${p58("md5","etag").update(Y).digest("hex")}"`}async function a58($,Z,Q,Y,X){try{let J=await Wc6($,{withFileTypes:!0});for(let G of J){let W=bU1($,G.name),H=Kc6(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 a58(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 n58(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:s58(W,F.mtime,F.size)})}catch{}}}}catch{}}function e58($,Z){let Y=K0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:s$.object({prefix:s$.string().optional(),maxKeys:s$.number().optional().default(1000),continuationToken:s$.string().optional(),delimiter:s$.string().optional()}),outputSchema:s$.object({objects:s$.array(s$.object({key:s$.string(),size:s$.number(),lastModified:s$.string(),etag:s$.string()})),nextContinuationToken:s$.string().optional(),isTruncated:s$.boolean(),commonPrefixes:s$.array(s$.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=o58(Y);await Gc6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await a58(F,F,G,K,U),U.objects.sort((w,j)=>w.key.localeCompare(j.key));let N=0;if(H){if(N=U.objects.findIndex((w)=>w.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),O=N+W<U.objects.length,L=O?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:O,nextContinuationToken:L,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:s$.object({key:s$.string()}),outputSchema:s$.object({contentType:s$.string().optional(),contentLength:s$.number(),lastModified:s$.string(),etag:s$.string(),metadata:s$.record(s$.string(),s$.string()).optional()}),handler:async(X)=>{let J=X,G=vU1(Y,J.key),W=await n58(G);return{contentType:WH1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:s58(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:s$.object({key:s$.string(),expiresIn:s$.number().optional()}),outputSchema:s$.object({url:s$.string(),expiresIn:s$.number()}),handler:async(X)=>{let J=X,G=zO(J.expiresIn,d58);return{url:i58(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:s$.object({key:s$.string(),expiresIn:s$.number().optional(),contentType:s$.string().optional()}),outputSchema:s$.object({url:s$.string(),expiresIn:s$.number()}),handler:async(X)=>{let J=X,G=zO(J.expiresIn,d58);return{url:i58(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:s$.object({key:s$.string()}),outputSchema:s$.object({success:s$.boolean(),key:s$.string()}),handler:async(X)=>{let J=X,G=vU1(Y,J.key);try{return await m58(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:s$.object({keys:s$.array(s$.string()).max(1000)}),outputSchema:s$.object({deleted:s$.array(s$.string()),errors:s$.array(s$.object({key:s$.string(),message:s$.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=vU1(Y,K);try{await m58(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function xU1($,Z,Q){let Y=e58(Z,Q),X=new IL({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:AZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:s$.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:s$.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 Y3({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),MW(X,J,$,"mcp:dev-assets")}async function $98($,Z,Q,Y){let J=e58(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 Hc6="./data/assets",d58=3600,t58,Z98;var Q98=D(()=>{F$();lm();G8();mY0();um();aX();PO();oV0();t58=new Q1;t58.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return xU1($.req.raw,Z,Y)});Z98=t58});var Y98={};M6(Y98,{mountDevRoutes:()=>Uc6});function Uc6($,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 xU1(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 $98(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",Z98);let Q=new Q1;Q.use("*",RH({mountPath:"/api/dev-assets"})),Q.route("/",tV0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var X98=D(()=>{G8();$H1();oV0();Q98()});var O98={};M6(O98,{watchHandler:()=>B98,resolveCorsOrigin:()=>U98,isSsoExemptPath:()=>H98,isAllowedOAuthRedirectUri:()=>N98,createApp:()=>Pc6});import{readFileSync as Nc6}from"fs";import{PrometheusSerializer as Bc6}from"@opentelemetry/exporter-prometheus";import{DBOS as hO}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as Lc6,oAuthProtectedResourceMetadata as wc6}from"better-auth/plugins";async function Oc6($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,G98(J98)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),G98(J98)]),Q.release(),!0}catch{return Q.release(!0),!1}}function G98($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function H98($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${bV0}/`)||$.startsWith(`${VV0}/`)}function F98($){return $==="local.studio.decocms.com"}function U98($,{baseUrl:Z,requestOrigin:Q}){let Y;try{Y=new URL($).hostname}catch{return null}if(Y==="localhost"||Y==="127.0.0.1")return $;if(F98(Y))return $;let X=Z??Q;try{if(new URL(X).origin===$)return $}catch{}return null}function N98($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"||F98($.hostname)}async function Pc6($={}){let Z=$.database??P8(),Q=!1;e5.stop().catch((Q0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",Q0)});let Y,X,J,G,W=new jU1,K,H,F,U=null;if($.disableNats)K=EU1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new h10,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(Q0)=>{return(async()=>{let w0=Q0.getReader();try{while(!0){let{done:e}=await w0.read();if(e)break}}catch{}finally{w0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=D58();let Q0=E0().natsCredsPath,w0;if(Q0)try{w0=Nc6(Q0,"utf8")}catch(f0){console.error(`[app] failed to read NATS_CREDS at ${Q0}; connecting anonymously`,f0)}U.init(E0().natsUrls,w0?{creds:w0}:void 0);let e=de0()?new Ie0({getJetStream:()=>U.getJetStream()}):null;e?.init().catch(()=>{}),Y=e;let i=new u41({getJetStream:()=>U.getJetStream()});i.init().catch(()=>{}),X=i;let m0=new ex(S91,{getJetStream:()=>U.getJetStream()}),I0=new ex(Y10,{getJetStream:()=>U.getJetStream()});m0.init().catch(()=>{}),I0.init().catch(()=>{}),J={reads:m0,cards:I0};let t0=new jQ1({getJetStream:()=>U.getJetStream()});t0.init().catch(()=>{}),G=t0,K=EU1({getConnection:()=>U.getConnection()}),H=new zU1({getConnection:()=>U.getConnection()}),F=new TU1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),Na$(U),U.onReady(()=>{e?.init().catch((f0)=>{console.error("[McpListCache] Deferred init failed:",f0)}),i.init().catch((f0)=>{console.error("[SkillCatalogCache] Deferred init failed:",f0)}),m0.init().catch((f0)=>{console.error("[PrReadCache] Deferred init failed:",f0)}),I0.init().catch((f0)=>{console.error("[PrCardCache] Deferred init failed:",f0)}),t0.init().catch((f0)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",f0)}),K.start(),uK$(()=>U.getConnection()),F.init().catch((f0)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",f0)})})}if(PE)await PE();Ve0(Y),c41(X),C91(J),EQ1(G);let B={storage:new Fh(Z.db),sseHub:e5,onThreadFinished:async(Q0,w0)=>Rm(new sG(Z.db),Q0,w0,new DG(Z.db))},O=new mZ1(B),L=new J80(Z.db),w=new RU1(L);w.start(),A_$(H),H.start((Q0)=>{cT0(Q0),O.execute({type:"CANCEL",taskId:Q0}).catch((w0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",w0)})}).catch((Q0)=>{console.error("[Decopilot] CancelBroadcast start failed:",Q0)}),U?.onReady(()=>{H.start().catch((Q0)=>{console.error("[CancelBroadcast] Deferred start failed:",Q0)})});let j=()=>U?.getConnection()??null;rK1(j),U?.onReady(()=>rK1(j)),sQ1(j),U?.onReady(()=>sQ1(j)),F.init().catch((Q0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",Q0)}),PE=async()=>{await O.stopAll(),O.dispose(),w.dispose(),H.stop().catch(()=>{}),Ve$(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),lK$(),G.teardown(),Ve0(null),c41(null),C91(null),EQ1(null)};let E=new Q1;if(E.use("*",DQ1({enabled:(Q0)=>nd(Q0,"debug")==="1"})),E.use("*",kS0),E.use("/*",Wa$({origin:(Q0,w0)=>U98(Q0,{baseUrl:E0().baseUrl,requestOrigin:new URL(w0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),E.use("*",async(Q0,w0)=>{if(await w0(),Q0.req.path.includes("/files/"))return;if(Q0.req.path.includes("/fs/")&&Q0.req.path.endsWith("/read"))return;Q0.header("X-Frame-Options","DENY"),Q0.header("Content-Security-Policy","frame-ancestors 'none'")}),!E0().noTui)E.use("*",l58());E.use("*",async(Q0,w0)=>{if(await w0(),xi(Q0.req.path))return;if(Q0.res.status>=500){let i=await Q0.res.clone().text();console.error(`[5xx Response] ${Q0.req.method} ${Q0.req.path} - ${Q0.res.status}:`,i)}}),E.get(mY.HEALTH,(Q0)=>{if(Q)return Q0.json({status:"shutting_down"},503);return Q0.json({status:"ok"})}),E.get(mY.HEALTH_LIVE,(Q0)=>{return Q0.json({status:"ok"})}),E.get(mY.HEALTH_READY,async(Q0)=>{if(Q)return Q0.json({status:"shutting_down"},503);let w0={};if(w0.postgres={status:await Oc6(Z.pool)?"up":"down"},U)w0.nats=U.isConnected()?{status:"up"}:{status:"down"};else w0.nats={status:"down"};let e=w0.postgres.status==="up",i=e?200:503;return Q0.json({status:e?"ready":"not_ready",services:w0},i)}),E.get(mY.METRICS,async(Q0)=>{try{let w0=await vS0.collect(),e=Dc6.serialize(w0.resourceMetrics);return Q0.text(e,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(w0){return console.error("Failed to collect metrics:",w0),Q0.text("# Error collecting metrics",500)}});let z=1800000;E.get(`${mY.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(Q0)=>{let w0=Q0.req.param("queueName");if(!jc6.has(w0))return Q0.json({error:`Unknown queue: ${w0}`},404);let[e,i]=await Promise.all([hO.listQueuedWorkflows({queueName:w0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),hO.listQueuedWorkflows({queueName:w0,status:"PENDING",loadInput:!1,loadOutput:!1,dequeuedAfter:new Date(Date.now()-z).toISOString()})]);return Q0.json({queue_length:e.length,in_flight:i.length})}),E.route("/api/config",T68),E.route("/api/_reports",x68),E.route("/api/_stripe",OU1),E.route("/api/_github",g68({taskBoard:()=>n,contextFactory:()=>g})),E.route("/api/_git",Zi);let T={db:Z.db,encryptionKey:E0().encryptionKey};E.route("/api/_jira",c68(T)),E.route("/api/_jira",u68(T)),E.route("/report",_68($.clientDir)),E.route("/api/auth/custom",_a$),E.route("/api/auth/desktop",fa$),E.all("/api/auth/admin/*",Oe$),E.all("/api/auth/*",async(Q0)=>{return await C8.handler(Q0.req.raw)});let P=ur$();P.use("/.well-known/oauth-protected-resource/mcp/:connectionId",j80),P.use("/mcp/:connectionId/.well-known/oauth-protected-resource",j80),E.route("/",P),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",Z80),E.route("/",ir$()),E.use("/oauth-proxy/:connectionId/*",j80),E.all("/oauth-proxy/:connectionId/*",W98);let A=async(Q0)=>{let e=await Ec6()(Q0.req.raw),i=await e.json();return Response.json(i,e)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",j80),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let q=async(Q0)=>{let e=await zc6()(Q0.req.raw),i=await e.json();return Response.json(i,e)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",q);let x=Ha$({ttlMs:120000}),_=await bs$({db:Z.db,auth:C8,encryption:{key:E0().encryptionKey},observability:{tracer:tO,meter:z$},modelListCache:W,providerKeyCache:K,memberRoleCache:x});vQ.set(_),_c1({db:Z.db,baseUrl:x5()}),xs$({db:Z.db}),hs$({db:Z.db}),ns$({db:Z.db}),i68({db:Z.db,encryptionKey:E0().encryptionKey}),eI$({db:Z.db}),es$({db:Z.db}),AV$({db:Z.db});let V=_Q0(Z.db),y=new Bo(Z.db),g=y58({db:Z.db});UQ1({storage:V,studioContextFactory:g}),eZ1({systemDatabaseUrl:tt0(E0().databaseUrl,E0().databasePgSsl),studioContextFactory:g,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:e5}}),pZ1({dispatchRunFn:NC$,studioContextFactory:g,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:e5}});let l=new Fh(Z.db),n=new sG(Z.db),p=new DG(Z.db),F0=new MU1(n,g,p);if(E0().taskBoardReviewSweeperEnabled){F0.start();let Q0=PE;PE=async()=>{await Q0?.(),F0.dispose()}}vC$({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let Q0=U?.getConnection();return Q0?await K98.jetstreamManager(Q0):null},messageParts:l.messageParts(),resolveRun:async(Q0)=>{let w0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",Q0).executeTakeFirst();return w0?{orgId:w0.organization_id,createdBy:w0.created_by,version:w0.message_storage_version??1,status:w0.status,runFenceToken:w0.run_fence_token,title:w0.title??null}:null},completeRunIfNotCompleted:async(Q0,w0)=>{let e=await l.completeRunIfNotCompleted(Q0,w0);if(XS0(e5,w0,Q0,e),e)await Rm(n,Q0,w0,p);return e},markRunRequiresAction:async(Q0,w0)=>{let e=await l.requiresActionIfInProgress(Q0,w0);return XS0(e5,w0,Q0,e),e},markRunFailed:async(Q0,w0,e,i)=>{let m0=await l.markRunFailed(Q0,w0,e,i);if(XS0(e5,w0,Q0,m0),m0)await Rm(n,Q0,w0,p);return m0},clearSynthesizedError:async(Q0,w0)=>{await l.messageParts().replaceMessageParts(Q0,fj(Q0,w0),[])},persistTitle:(Q0,w0,e)=>l.update(Q0,w0,{title:e}),onTitleUpdated:async({runId:Q0,orgId:w0,title:e})=>{let i=await l.get(Q0,w0).catch(()=>null);e5.emit(w0,nH(Q0,i?.status??"in_progress",{title:e,virtualMcpId:i?.virtual_mcp_id??void 0,createdBy:i?.created_by,triggerId:i?.trigger_id,branch:i?.branch??null,harnessId:i?.harness_id??void 0,createdAt:i?.created_at,updatedAt:i?.updated_at}))},bumpProgress:async({runId:Q0,orgId:w0})=>{await l.bumpProgress(Q0,w0)},recordCompleted:async({runId:Q0,orgId:w0,distinctId:e,usage:i})=>{v1.capture({distinctId:e,event:"chat_message_completed",groups:{organization:w0},properties:{organization_id:w0,thread_id:Q0,transport:"projector",input_tokens:i.inputTokens,output_tokens:i.outputTokens,total_tokens:i.totalTokens}})},recordFailed:async({runId:Q0,orgId:w0,distinctId:e,reason:i,kind:m0})=>{v1.capture({distinctId:e,event:"chat_message_failed",groups:{organization:w0},properties:{organization_id:w0,thread_id:Q0,transport:"projector",error_category:m0,error_message:i}})},purgeRun:async(Q0)=>{F.purge(Q0)}}),gS$({studioContextFactory:g,systemDatabaseUrl:tt0(E0().databaseUrl,E0().databasePgSsl),streamBuffer:F}),x58(),vc1(),ys$(),ls$(),os$(),t68(),XV$(),Za$(),TV$();let V0=async(Q0,w0,e)=>{let i=await V.findById(Q0,w0);if(!i)throw Error("Automation not found");return OQ1({automationId:i.id,organizationId:i.organization_id,triggerId:null})},G0=new ed(V,({automation:Q0,trigger:w0,contextMessages:e,idempotencyKey:i})=>g10({automationId:Q0.id,organizationId:Q0.organization_id,triggerId:w0.id,contextMessages:e},{idempotencyKey:i})),H0=[uW(),Ry(),eU()];for(let Q0 of H0)WS0(Q0).then(()=>{}).catch((w0)=>console.error("[monitoring] Retention cleanup failed:",w0));let X0=()=>C8.api.deleteAllExpiredApiKeys().catch((Q0)=>console.error("[auth] Expired API key cleanup failed:",Q0));X0(),setInterval(X0,86400000).unref(),E.use("*",async(Q0,w0)=>{if(IS0(Q0.req.path))return w0();let e={measure:async(m0,I0)=>{qW(Q0,m0);try{return await I0()}finally{X3(Q0,m0)}}},i=await vQ.create(Q0.req.raw,{timings:e});i.automationRunner=V0,Q0.set("studioContext",i);try{await w0()}finally{let m0=i.pendingRevalidations;if(m0.length>0)Promise.race([Promise.allSettled(m0),i$(30000)]).catch((t0)=>console.error("[studio] revalidation cleanup error:",t0))}}),E.use("/api/:org/decopilot/*",od),E.use("/api/:org/v1/*",od),E.use("/api/:org/files/*",od),E.use("*",async(Q0,w0)=>{if(H98(Q0.req.path))return w0();let e=Q0.get("studioContext");if(!e?.organization?.id||!e?.auth?.user?.id)return w0();if(!(await e.storage.orgSsoConfig.getByOrgId(e.organization.id))?.enforced)return w0();if(!await e.storage.orgSsoSessions.isValid(e.auth.user.id,e.organization.id))return Q0.json({error:"SSO authentication required for this organization"},403);return w0()});let Z0=new Q1;Z0.use("*",RH({mountPath:"/api/org-sso"})),Z0.route("/",yV0()),E.route("/api/org-sso",Z0),E.get("/api/tools/management",(Q0)=>{return Q0.json({tools:ki0,grouped:BP()})}),E.use("/mcp/*",async(Q0,w0)=>{qW(Q0,"mcp");try{return await w0()}finally{X3(Q0,"mcp")}});let Y0=async(Q0,w0)=>{let e=Q0.var.studioContext;if(!e.auth.user?.id&&!e.auth.apiKey?.id){let i=new URL(Q0.req.url),m0=Q0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),I0=m0?`${m0}://${i.host}`:i.origin;return Q0.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${I0}${i.pathname}/.well-known/oauth-protected-resource"`}})}return await w0()};if(E.use("/mcp/:connectionId?",Y0),E.use("/mcp/gateway/:virtualMcpId?",Y0),E.use("/mcp/virtual-mcp/:virtualMcpId?",Y0),E.use("/mcp/self",Y0),JW()){let{mountDevRoutes:Q0}=(X98(),DS0(Y98));Q0(E,Y0)}let r=new Q1;r.use("*",RH({mountPath:"/mcp"})),r.route("/",bR0()),E.route("/mcp",r);let J0=new Q1;J0.use("*",RH({mountPath:"/mcp/self"})),J0.route("/",Mk0()),E.route("/mcp/self",J0);let c0=new Q1;c0.use("*",RH({mountPath:"/mcp"})),c0.route("/",yR0()),E.route("/mcp",c0),E.use("/api/:org/models/*",async(Q0,w0)=>{qW(Q0,"llm_models");try{return await w0()}finally{X3(Q0,"llm_models")}});let k0=Se$({cancelBroadcast:H,streamBuffer:F,runRegistry:O});E.route("/api",k0),E.route("/api",a68);let j1=new Q1;j1.use("*",RH({mountPath:"/api"})),j1.route("/",Sk0()),E.route("/api",j1),E.route("/api",L68);let d0=new Q1;d0.use("*",RH({mountPath:"/api"})),d0.route("/",Ck0({tokenStorage:y,automationEventDispatcher:G0})),E.route("/api",d0);let L0=new Do(Z.db),j0=new Q1;j0.use("*",RH({mountPath:"/api"})),j0.route("/",cV0()),E.route("/api",j0),E.route("/api/deco-sites",de$()),E.route("/api/deco-apps",F68());let a0=new Q1;a0.use("*",RH({mountPath:"/api/deco-sites"})),a0.route("/",dV0()),E.route("/api/deco-sites",a0),E.route(bV0,De$()),E.route(A88,q88()),E.route("/api/_editor-resolve",j68()),E.route(ga$,ha$()),E.route(VV0,oa$());let P1=K68({kvStorage:L0,runRegistry:O,streamBuffer:F,sseHub:e5,cancelBroadcast:H,tokenStorage:y,automationEventDispatcher:G0,mountDevAssets:JW(),mcpAuth:Y0,oauthProxyHandler:W98,watchHandler:B98,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",P1),E.notFound((Q0)=>{return Q0.json({error:"Not Found",path:Q0.req.path},404)}),E.onError(ve$),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([e5.stop(),PE?Promise.resolve(PE()).finally(()=>{PE=null}):Promise.resolve()]),U)await U.drain().catch((Q0)=>console.error("[shutdown] NATS drain error:",Q0));console.log("[shutdown] Flushing telemetry..."),await fX().catch((Q0)=>console.error("[shutdown] Telemetry flush error:",Q0)),console.log("[shutdown] Closing database..."),await I4$(Z).catch((Q0)=>console.error("[shutdown] Database close error:",Q0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await hO.registerQueue(O3,{partitionQueue:!0,concurrency:KQ1,minPollingIntervalMs:HQ1}),await hO.registerQueue(B3,{partitionQueue:!0,concurrency:sZ1,priorityEnabled:!0}),await hO.registerQueue(sU,{workerConcurrency:E0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await hO.registerQueue(aU,{workerConcurrency:E0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await hO.registerQueue(pO,{partitionQueue:!0,concurrency:yS$}),await hO.registerQueue(ME,PV$),await ZH1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((Q0)=>hO.deleteQueue(Q0))),await FQ1(Z.pool),t9$().catch((Q0)=>{console.error("[studio-pack-backfill] failed:",Q0)}),bc1().catch((Q0)=>{console.error("[org-fs] public-sets boot sync kick failed:",Q0)})}})}var K98,J98=5000,PE=null,W98=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 vQ.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 y=await $.req.json().catch(()=>({}));return $.json({...typeof y==="object"&&y!==null?y:{},client_id:G.oauth_config.clientId,...G.oauth_config.clientSecret?{client_secret:G.oauth_config.clientSecret}:{},client_secret_expires_at:0})}let W=await md(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=(await W.json()).authorization_servers?.[0];if(!K)K=H.origin;let N=await Q80(K);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),O;if(Y==="authorize")O=B.authorization_endpoint;else if(Y==="token")O=B.token_endpoint;else if(Y==="register")O=B.registration_endpoint;if(!O)return $.json({error:`Unknown OAuth endpoint: ${Y}`},404);let L=dr$(O);if(L)return L;let w=new URL(O),j=new URL($.req.url);if(w.search=j.search,Y==="authorize"){let y=w.searchParams.get("redirect_uri");if(y){let g=E0().baseUrl??j.origin;try{if(!N98(new URL(y),g))return $.json({error:"invalid_request",error_description:"redirect_uri is not allowed"},400)}catch{return $.json({error:"invalid_request",error_description:"redirect_uri is malformed"},400)}w.searchParams.set("redirect_uri",y)}if(w.searchParams.has("resource"))w.searchParams.set("resource",U);if(Ya$(G.connection_url))w.searchParams.set("auto_personal","true"),w.searchParams.set("force_new","true");return $.redirect(w.toString(),302)}let E={Accept:$.req.header("Accept")||"application/json"},z=$.req.header("Content-Type");if(z)E["Content-Type"]=z;let T=$.req.header("Authorization");if(T)E.Authorization=T;let P,A=null,q=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(Y==="token"&&z?.includes("application/x-www-form-urlencoded")){if(T?.toLowerCase().startsWith("basic "))try{let p=atob(T.slice(6).trim()),F0=p.indexOf(":");if(F0!==-1){let V0=decodeURIComponent(p.slice(0,F0)),G0=decodeURIComponent(p.slice(F0+1));A=V0||null,q=G0||null}}catch{}let y=await $.req.formData();if(y.has("resource"))y.set("resource",U);let g=y.get("client_id"),l=y.get("client_secret");if(typeof g==="string"&&g)A=g;if(typeof l==="string"&&l)q=l;let n=new URLSearchParams;for(let[p,F0]of y.entries())n.append(p,F0.toString());P=n.toString()}else if(Y==="register"&&z?.toLowerCase().includes("application/json")){let y=await X.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",G.organization_id).executeTakeFirst(),g=await $.req.text(),l={};try{l=g?JSON.parse(g):{}}catch{P=g}let n=typeof l==="object"&&l!==null&&!Array.isArray(l);if(P===void 0&&!n)P=g;if(P===void 0){let p=l,F0=p.metadata&&typeof p.metadata==="object"?p.metadata:{};p.metadata={...F0,organization_id:G.organization_id,...y?.slug?{organization_slug:y.slug}:{},...y?.name?{organization_name:y.name}:{}},P=JSON.stringify(p),E["Content-Type"]="application/json"}}else P=$.req.raw.body??void 0;let x=await fetch(w.toString(),{method:$.req.method,headers:E,body:P,duplex:"half",redirect:"manual"}),_=new Headers,V=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[y,g]of x.headers.entries())if(!V.includes(y.toLowerCase()))_.set(y,g);if(Y==="token"&&x.ok){let y=await x.text();try{let g=JSON.parse(y);if(typeof g.access_token==="string"&&g.access_token){let l=typeof g.expires_in==="number"?new Date(Date.now()+g.expires_in*1000):null,n=null;try{n=await dd(G.connection_url)??O}catch{n=O}let p={connectionId:Z,accessToken:g.access_token,refreshToken:typeof g.refresh_token==="string"?g.refresh_token:null,scope:typeof g.scope==="string"?g.scope:null,expiresAt:l,clientId:A,clientSecret:q,tokenEndpoint:n};await new F9(X.db,X.vault).upsert(p)}}catch(g){console.error("[oauth-proxy] failed to persist downstream token:",g)}return new Response(y,{status:x.status,statusText:x.statusText,headers:_})}return new Response(x.body,{status:x.status,statusText:x.statusText,headers:_})},B98=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&&(!DU(Y)||!await LU(Z)))return $.json({error:"forbidden"},403);let W=G?e20:Y;if(G)XO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return xO($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:Y,typePatterns:J,connectedAt:new Date().toISOString()})}),!e5.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(()=>{e5.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),e5.remove(W,K)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),e5.remove(W,K),N()})})})},Dc6,jc6,Ec6=()=>wc6(C8),zc6=()=>Lc6(C8);var D98=D(()=>{D8();F$();xc1();gs$();cs$();rs$();d10();B91();Qa$();Q10();E9();el();e8();G8();TV0();Ka$();LQ1();hG();pF();MK1();m3();C6();U6();vK1();ya$();ua$();ra$();hK1();Le$();nK1();Ce$();eK1();iK();WV0();$H1();be$();qV0();H68();XH1();U68();xR0();u10();w68();gR0();vF1();E68();CF1();R68();v68();f68();y68();h68();l68();m68();o68();HH1();e68();_F1();VF1();P40();L58();DJ();fA0();v91();ga();ua();PQ1();w58();E58();sK1();M58();dZ1();I58();rn();wo();YO();V9();nW1();_58();f58();LJ0();IU1();D3();QH1();QO();lZ1();LJ0();aT0();wi0();ji0();g58();Fu();c58();wi();MK1();wm();_m();mT0();K98=C(GN(),1);Dc6=new Bc6,jc6=new Set([O3,B3,sU,aU,pO,ME])});var E98={};M6(E98,{resolveClientDir:()=>Vc6,resolveAssetPathWithTraversalCheck:()=>j98,isPathWithinDirectory:()=>w98,createAssetHandler:()=>kc6});import{resolve as G40,dirname as Ac6,join as Tc6,extname as Rc6,basename as qc6,sep as L98}from"path";function Mc6($,Z){if($===Z||qc6($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${L98}assets${L98}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function w98($,Z){let Q=G40(Z),Y=G40($);return Y===Q||Y.startsWith(Q+"/")}function j98({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=G40(Z,Q);if(!w98(Y,Z))return null;return Y}function Vc6($,Z="../client"){let Q=new URL($),Y=Ac6(Q.pathname);return G40(Y,Z)}function kc6($={}){let{env:Z="production",clientDir:Q=Ic6,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=j98({requestPath:W,clientDir:Q});if(!K)return null;let H=Tc6(K,"index.html"),F=G40(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(Rc6(K))?[H,F]:[];for(let O of[K,...B])try{let L=Bun.file(O);if(await L.exists())return new Response(L,{headers:Mc6(O,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var Ic6="./dist/client";var z98=()=>{};var P98={};M6(P98,{tryUpgradePreviewWs:()=>fc6,tryHandlePreviewHttp:()=>xc6,previewWebSocketHandler:()=>yc6,parsePreviewBaseDomain:()=>bc6,isPreviewWsData:()=>KS0,extractHandleFromHost:()=>fU1});function _c6($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function vc6(){return new Response(Cc6,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function bc6($){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 fU1($,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 xc6($,Z){let Q=fU1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let Y=await Z.getRunner();if(!Y)return K40(503,"preview proxy not configured");let X=await Y.proxyPreviewRequest(Q,$);if(X.headers.get(Vx)&&_c6($))return vc6();return X.headers.delete(Vx),X}function K40($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function KS0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function fc6($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=fU1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let X=await Q.getRunner();if(!X)return K40(503,"preview proxy not configured");let J=await X.resolvePreviewUpstreamUrl(Y);if(!J)return K40(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return K40(404,"not found");let W=`${J.replace(/^http/,"ws")}${G.pathname}${G.search}`,K=$.headers.get("sec-websocket-protocol"),H=K?K.split(",").map((N)=>N.trim()).filter(Boolean):[],F={kind:"preview",upstreamUrl:W,upstreamProtocols:H,pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:F}))return K40(426,"upgrade failed");return}function W40($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var Sc6=256,Cc6='<!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>',yc6;var A98=D(()=>{z41();yc6={open($){let Z=$.data;if(!KS0(Z))return;let Q;try{Q=Z.upstreamProtocols.length>0?new WebSocket(Z.upstreamUrl,Z.upstreamProtocols):new WebSocket(Z.upstreamUrl)}catch(Y){console.warn(`[preview-ws] failed to dial upstream ${Z.upstreamUrl}: ${Y instanceof Error?Y.message:String(Y)}`),W40($,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)=>{W40($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{W40($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!KS0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=Sc6){W40($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!KS0(Z))return;W40($,Z,1000,"")}}});var M98={};M6(M98,{printBanner:()=>hc6,bannerLines:()=>q98,BANNER_LINES:()=>T98,BANNER_GRADIENT:()=>R98});function gc6($){let Z=Number.parseInt($.slice(1),16);return[Z>>16&255,Z>>8&255,Z&255]}function q98($){let Z=T98.map((Q,Y)=>{let[X,J,G]=gc6(R98[Y]);return`\x1B[38;2;${X};${J};${G}m${Q}\x1B[39m`});if($!==void 0)Z.push(`\x1B[2m v${$}\x1B[22m`);return Z}function hc6($){console.log("");for(let Z of q98($))console.log(Z);console.log("")}var T98,R98;var I98=D(()=>{T98=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],R98=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});D8();var oU1="13";function rU1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:oU1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}D8();import i98 from"pg";var sU1=8314027461559302n,p98=600000,n98=500;async function aU1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=p98}=$,X=$.log??((K)=>console.log(K)),J=new i98.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",[sU1.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 i$(n98)}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)",[sU1.toString()])}catch{}await J.end().catch(()=>{})}}F$();ES0();C6();function iZ8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function fS0($,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 xN1(){let $=iZ8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:fS0($,"--cpu-prof-dir")??process.cwd(),name:fS0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(fS0($,"--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.'}))}hS0();var R40;function dN1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=kE();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(()=>{}),R40=setInterval(()=>void Z().catch(()=>{}),$),R40.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(R40)clearInterval(R40)}}import*as tZ8 from"bun:jsc";var{startSamplingProfiler:oZ8,samplingProfilerStackTraces:rZ8}=tZ8;function iN1(){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{oZ8()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,Y=performance.now()+Z,X=()=>{let J=performance.now(),G=J-Y;Y=J+Z;let W=[];try{W=rZ8()?.traces??[]}catch{}if(G>$&&W.length>0){let K=new Map;for(let F of W){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.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 pN1(){xN1();let $=[dN1(),mN1(),iN1()];return()=>{for(let Z of $)Z()}}import{existsSync as nc6}from"fs";var pJ=E0();_N1();var{DBOS:H40,DBOSClient:uc6}=await import("@dbos-inc/dbos-sdk");function cU1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var lc6=[O3,B3,sU,aU,pO,ME],cc6=pJ.dispatchRole==="worker"?lc6:pJ.dispatchRole==="api"?[]:void 0;H40.setConfig(rU1({systemDatabaseUrl:cU1(pJ.databaseUrl,pJ.databasePgSsl),poolSize:pJ.dbosPoolSize,executorID:pJ.podName,listenQueues:cc6}));var{createApp:mc6}=await Promise.resolve().then(() => (D98(),O98)),{isServerPath:dc6}=await Promise.resolve().then(() => (P40(),DN1)),{createAssetHandler:ic6,resolveClientDir:_98}=await Promise.resolve().then(() => (z98(),E98)),pc6=pJ.port,V98=_98(import.meta.url,"../client"),v98=nc6(V98)?V98:_98(import.meta.url,"../dist/client"),tc6=ic6({clientDir:v98,isServerPath:dc6}),oc6={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function rc6($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(oc6))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:sc6,tryHandlePreviewHttp:ac6,tryUpgradePreviewWs:ec6,previewWebSocketHandler:yU1,isPreviewWsData:gU1}=await Promise.resolve().then(() => (A98(),P98)),{getOrInitSharedRunner:b98}=await Promise.resolve().then(() => (QH(),_E$)),x98=sc6(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),k98={baseDomain:x98??"",getRunner:b98};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())b98().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var HS0=await mc6({clientDir:v98}),hU1=process.env.DBOS_CONDUCTOR_KEY?.trim(),S98=process.env.DBOS_CONDUCTOR_URL?.trim();await aU1({databaseUrl:cU1(pJ.databaseUrl,pJ.databasePgSsl)},()=>H40.launch({...hU1?{conductorKey:hU1}:{},...hU1&&S98?{conductorURL:S98}:{}}));console.log(`[dbos] application version: ${H40.applicationVersion}`);var uU1=5,lU1=0;await g8(async()=>{lU1++;try{return await HS0.initDbos()}catch($){let Z=lU1>=uU1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${lU1}/${uU1} failed, ${Z}`,$),$}},{maxAttempts:uU1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});if(!pJ.isCli){let{bannerLines:$}=await Promise.resolve().then(() => (I98(),M98));console.log("");for(let Z of $())console.log(Z)}var $m6=Bun.serve({idleTimeout:0,port:pc6,hostname:"0.0.0.0",fetch:async($,Z)=>{if(x98){let Y=await ec6($,Z,k98);if(Y===void 0)return;if(Y)return Y;let X=await ac6($,k98);if(X)return X}let Q=await tc6($);if(Q)return rc6(Q);return HS0.fetch($,{server:Z})},websocket:{open($){if(gU1($.data))yU1.open($)},message($,Z){if(gU1($.data))yU1.message($,Z)},close($){if(gU1($.data))yU1.close($)}},development:!1}),Zm6=pN1();if(pJ.localMode)Promise.resolve().then(() => (Qf(),ST0)).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(() => (Qf(),ST0));Z()}catch{}});var C98=!1;async function Qm6($){let Z;try{Z=await uc6.create({systemDatabaseUrl:cU1(pJ.databaseUrl,pJ.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:B3,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:B3}),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 FS0($){if(C98)return;C98=!0,console.log(`
3709
3709
  [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{Zm6(),HS0.markShuttingDown();let J=$N1(pJ.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await i$(J),await $m6.stop(!0);let G=H40.executorID;await H40.shutdown(),await Qm6(G),await HS0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>FS0("SIGTERM"));process.on("SIGINT",()=>FS0("SIGINT"));process.on("SIGHUP",()=>FS0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),FS0("uncaughtException")});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.406.0",
3
+ "version": "4.406.2",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import{c,j as s,M as u}from"./index-a8XScFmZ.js";import{ChatLayout as f}from"./index-DXiYogYY.js";import{a as x}from"./thread-route-B1ZSIzzT.js";import{u as g}from"./use-task-metadata-fbwKPdOL.js";import{AppViewContent as h}from"./project-app-view-x_-e_Lbw.js";import"./use-mobile-BR3euFAT.js";import"./thread-button-C9DbsgYC.js";import"./use-in-settings-DF5a-yr6.js";import"./sheet-CnG_30Tu.js";import"./X-qOHqlxey.js";import"./tooltip-DG5CnGag.js";import"./index-D88UyMf8.js";import"./use-panel-navigate-BvXmhCXE.js";import"./use-project-scope-Dg5JkMxK.js";import"./use-virtual-mcp-B22df3lH.js";import"./use-mcp-client-QkI6RUae.js";import"./auth-B4tHClP5.js";import"./github-repo-BknN0SVI.js";import"./use-route-default-main-RAA9Xu9b.js";import"./hooks-57fUVc8E.js";import"./backoff-8mStPHYB.js";import"./task-board-DAXz0qcI.js";import"./schema-C0UHuNyx.js";import"./agent-icon-Bd0IZ2xl.js";import"./AlertCircle-CgujCznd.js";import"./Tool01-CQ5Xc26A.js";import"./ArrowUp-DBpBKFdD.js";import"./ArrowLeft-DYz0WE09.js";import"./ArrowRight-CWiigebn.js";import"./ZoomOut-DZCavZ8o.js";import"./Globe04-CdU3biQC.js";import"./CheckCircle-DppxuNa7.js";import"./Check-BO0tsZXP.js";import"./ChevronUp-WgMV95Wl.js";import"./UserSquare-C7aUR_aW.js";import"./Copy01-CP89x_RS.js";import"./CreditCard01-H8jUQWxs.js";import"./DotsVertical-4TEj21cV.js";import"./Eye-ARN8W0OA.js";import"./Share07-DyeTiScB.js";import"./XClose-hPk1Hqkr.js";import"./Image01-l9PMSSY0.js";import"./Key01-QkJYBYv-.js";import"./LayoutLeft-CgYc0js8.js";import"./Link01-CmwuZgWx.js";import"./LinkExternal01-DQ25aknz.js";import"./Monitor01-BVwwAtM6.js";import"./Sun-DgGlHV06.js";import"./Palette-Bjt7HH4h.js";import"./Plus-TU-OKHt0.js";import"./SearchMd-Cm4pXgfM.js";import"./Trash01-B9y1vShv.js";import"./Upload01-DAXWNq7T.js";import"./User01-p3MXVQ0Z.js";import"./Users01-CohEKYSh.js";import"./Zap-CyBIW8px.js";import"./toolbar-icon-button-DggL__pK.js";import"./shell-layout-C1ofRTSy.js";import"./avatar-DNbeZQMl.js";import"./download-app-dialog-ZwXjVAnk.js";import"./dialog-BWmqK6vg.js";import"./command-C24f7Kyz.js";import"./index-CZmAPBsQ.js";import"./integration-icon-Dz6rheZV.js";import"./project-icon-DtlCoOxs.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-DMazcHjn.js";import"./autosend-BwqeYDrP.js";import"./use-org-sso-C4Rm3HPT.js";import"./resizable-CDXwX1EQ.js";import"./route-page-header-CGZ8hlbE.js";import"./gateway-client-CND_0J2Q.js";import"./tool-namespace-DmnQIdtF.js";import"./use-mcp-tools-CRxMLxmD.js";import"./sandbox-lifecycle-context-C_uX5vaY.js";import"./use-session-runtime-16mMZo3B.js";import"./thread-intent-BVf_UeqN.js";import"./slugify-CEUa2lfQ.js";import"./chat-context-BNtTPn2v.js";import"./use-entitlements-e5g60LFP.js";import"./use-ai-providers-DmDozsCa.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-CXHHAExG.js";import"./use-organization-settings-Chk2oNMp.js";import"./sandbox-url-D3mC8qhT.js";import"./sandbox-start-errors-BK_aDCyt.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-DkVBLMEl.js";import"./types-BuaOQs2H.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-De4fpUyT.js";import"./companions-core-BnuxEm_5.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-C8GSbvaz.js";import"./form-Dd8uuw3Z.js";import"./label-xjEYWx7p.js";import"./input-HBy0gWnZ.js";import"./use-debounced-value-JsQcnlEX.js";import"./provision-repo-scoped-github-connection-B6zdkC6p.js";import"./useQueries-B7hWegsL.js";import"./authenticate-and-persist-oauth-EABJT3_J.js";import"./mcp-oauth-3u1U11Wr.js";import"./track-DtcT0XLB.js";import"./extract-connection-data-fRjq1au-.js";import"./connection-DSaol0Ng.js";const $=u("/shell/$org/org-shell/agent-shell/projects/$agentId/apps/$connectionId/$toolName");function j(){const t=c.c(9),{connectionId:o,toolName:r}=$.useParams(),l=x(),i=g(l);let p;t[0]!==o||t[1]!==i?.expanded_tools||t[2]!==r?(p=i?.expanded_tools?.find(a=>a.appId===o&&a.toolName===r),t[0]=o,t[1]=i?.expanded_tools,t[2]=r,t[3]=p):p=t[3];const d=p,e=`${o}:${r}`,n=d?.args;let m;return t[4]!==o||t[5]!==e||t[6]!==n||t[7]!==r?(m=s.jsx(h,{connectionId:o,toolName:r,args:n},e),t[4]=o,t[5]=e,t[6]=n,t[7]=r,t[8]=m):m=t[8],m}function $o(){const t=c.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(f.Content,{children:s.jsx(j,{})}),t[0]=o):o=t[0],o}export{$o as default};
@@ -1 +0,0 @@
1
- import{c,j as e,aO as b,u as g}from"./index-a8XScFmZ.js";import{ChatLayout as j}from"./index-DXiYogYY.js";import{F as v,H as S}from"./file-share-button-CNqX1uKM.js";import{u as k,b as y,e as _}from"./use-org-fs-CUzmVYxO.js";import{S as w}from"./settings-tab-gQ1sYUFr.js";import{b as M}from"./thread-route-B1ZSIzzT.js";import"./use-mobile-BR3euFAT.js";import"./thread-button-C9DbsgYC.js";import"./use-in-settings-DF5a-yr6.js";import"./sheet-CnG_30Tu.js";import"./X-qOHqlxey.js";import"./tooltip-DG5CnGag.js";import"./index-D88UyMf8.js";import"./use-panel-navigate-BvXmhCXE.js";import"./use-project-scope-Dg5JkMxK.js";import"./use-virtual-mcp-B22df3lH.js";import"./use-mcp-client-QkI6RUae.js";import"./auth-B4tHClP5.js";import"./github-repo-BknN0SVI.js";import"./use-route-default-main-RAA9Xu9b.js";import"./hooks-57fUVc8E.js";import"./backoff-8mStPHYB.js";import"./task-board-DAXz0qcI.js";import"./schema-C0UHuNyx.js";import"./agent-icon-Bd0IZ2xl.js";import"./AlertCircle-CgujCznd.js";import"./Tool01-CQ5Xc26A.js";import"./ArrowUp-DBpBKFdD.js";import"./ArrowLeft-DYz0WE09.js";import"./ArrowRight-CWiigebn.js";import"./ZoomOut-DZCavZ8o.js";import"./Globe04-CdU3biQC.js";import"./CheckCircle-DppxuNa7.js";import"./Check-BO0tsZXP.js";import"./ChevronUp-WgMV95Wl.js";import"./UserSquare-C7aUR_aW.js";import"./Copy01-CP89x_RS.js";import"./CreditCard01-H8jUQWxs.js";import"./DotsVertical-4TEj21cV.js";import"./Eye-ARN8W0OA.js";import"./Share07-DyeTiScB.js";import"./XClose-hPk1Hqkr.js";import"./Image01-l9PMSSY0.js";import"./Key01-QkJYBYv-.js";import"./LayoutLeft-CgYc0js8.js";import"./Link01-CmwuZgWx.js";import"./LinkExternal01-DQ25aknz.js";import"./Monitor01-BVwwAtM6.js";import"./Sun-DgGlHV06.js";import"./Palette-Bjt7HH4h.js";import"./Plus-TU-OKHt0.js";import"./SearchMd-Cm4pXgfM.js";import"./Trash01-B9y1vShv.js";import"./Upload01-DAXWNq7T.js";import"./User01-p3MXVQ0Z.js";import"./Users01-CohEKYSh.js";import"./Zap-CyBIW8px.js";import"./toolbar-icon-button-DggL__pK.js";import"./shell-layout-C1ofRTSy.js";import"./avatar-DNbeZQMl.js";import"./download-app-dialog-ZwXjVAnk.js";import"./dialog-BWmqK6vg.js";import"./command-C24f7Kyz.js";import"./index-CZmAPBsQ.js";import"./integration-icon-Dz6rheZV.js";import"./project-icon-DtlCoOxs.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-DMazcHjn.js";import"./autosend-BwqeYDrP.js";import"./use-org-sso-C4Rm3HPT.js";import"./resizable-CDXwX1EQ.js";import"./route-page-header-CGZ8hlbE.js";import"./input-HBy0gWnZ.js";import"./popover-DKjcSfLB.js";import"./extract-connection-data-fRjq1au-.js";import"./metadata-D72DunRR.js";import"./connection-DSaol0Ng.js";import"./chat-context-BNtTPn2v.js";import"./thread-intent-BVf_UeqN.js";import"./slugify-CEUa2lfQ.js";import"./use-entitlements-e5g60LFP.js";import"./use-ai-providers-DmDozsCa.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-CXHHAExG.js";import"./use-organization-settings-Chk2oNMp.js";import"./build-improve-prompt-doc-l2J5lTda.js";import"./empty-state-CQWpCNEd.js";import"./use-date-fns-locale-C_k-ZNvB.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-connection-B62IVwoq.js";import"./mcp-oauth-3u1U11Wr.js";import"./alert-dialog-EQsgmpuA.js";import"./textarea-CQB0iWWu.js";import"./use-debounced-autosave-8--WWWFZ.js";import"./add-connection-dialog-bRZtyL-b.js";import"./collection-search-CCzn1jJM.js";import"./connection-card-DxtmlEpf.js";import"./useInfiniteQuery-kTLnckn3.js";import"./infiniteQueryObserver-vADGuTxL.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-DNfsLwl_.js";import"./form-Dd8uuw3Z.js";import"./label-xjEYWx7p.js";import"./select-Bqp_U1ks.js";import"./connection-form-helpers-DCcCOjwY.js";import"./authenticate-and-persist-oauth-EABJT3_J.js";import"./collection-tabs-CZs317SQ.js";import"./badge-Dn4B9MPM.js";import"./use-infinite-scroll-BWjbZqkI.js";import"./useSuspenseInfiniteQuery-D3KJwbuZ.js";import"./file-type-icon-UKBN2uy0.js";import"./checkbox-CzVzwj4A.js";import"./search-input-DX8Af1_h.js";import"./use-mcp-auth-status-cOXVTEWe.js";import"./types-BuaOQs2H.js";import"./use-mcp-tools-CRxMLxmD.js";import"./use-mcp-prompts-CTv5hWKn.js";import"./utils-CVEq3hMx.js";import"./switch-CAv8chXa.js";import"./scroll-area-TOykm0pn.js";import"./use-project-native-view-presence-eLIweUr6.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-DzDjWDbA.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-D8HlHK3x.js";import"./virtual-mcp-CZOMxd4f.js";import"./repository-import-picker-CcnsKtpd.js";import"./use-navigate-to-agent-CATWBqpJ.js";import"./repository-picker-72QfMFWx.js";import"./github-icon-xYGi4_zU.js";import"./use-debounced-value-JsQcnlEX.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BDwnJCqm.js";import"./use-secrets-Be7dbg8N.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";const x="home";function P(i){const t=c.c(5),{label:r}=i;let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p=e.jsx(b,{className:"aspect-video w-2/3 max-w-xl"}),t[0]=p):p=t[0];let o;t[1]!==r?(o=r&&e.jsx("p",{className:"text-xs text-muted-foreground",children:r}),t[1]=r,t[2]=o):o=t[2];let m;return t[3]!==o?(m=e.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-3 bg-background",children:[p,o]}),t[3]=o,t[4]=m):m=t[4],m}function D(i){const t=c.c(15),{path:r}=i;let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p={refetchIntervalWhenAbsent:2e3},t[0]=p):p=t[0];const o=k(x,r,p),m=y(x)(r);if(o.isPending||!o.data){const h=!o.isPending&&!o.data?"Waiting for the deck to sync…":void 0;let l;return t[1]!==h?(l=e.jsx(P,{label:h}),t[1]=h,t[2]=l):l=t[2],l}let s;t[3]!==o.data?(s=_(o.data),t[3]=o.data,t[4]=s):s=t[4];const f=o.data.shareMode??"private",u=o.data.effectivePublic??!1,d=window.location.origin+m;let a;t[5]!==r||t[6]!==f||t[7]!==u||t[8]!==d?(a=e.jsx(v,{volume:x,path:r,shareMode:f,effectivePublic:u,url:d}),t[5]=r,t[6]=f,t[7]=u,t[8]=d,t[9]=a):a=t[9];let n;return t[10]!==r||t[11]!==m||t[12]!==s||t[13]!==a?(n=e.jsx(S,{readUrl:m,marker:s,title:r,savePath:r,trailing:a}),t[10]=r,t[11]=m,t[12]=s,t[13]=a,t[14]=n):n=t[14],n}function O(){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 pr(){const i=c.c(1);let t;return i[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(j.Content,{children:e.jsx(O,{})}),i[0]=t):t=i[0],t}export{pr as default};
@@ -1 +0,0 @@
1
- import{c as n,j as s,u as a}from"./index-a8XScFmZ.js";import{ChatLayout as l}from"./index-DXiYogYY.js";import{L as c}from"./preview-content-Ch72-5__.js";import{a as f}from"./use-panel-navigate-BvXmhCXE.js";import{S as u}from"./settings-tab-gQ1sYUFr.js";import{b as h}from"./thread-route-B1ZSIzzT.js";import"./use-mobile-BR3euFAT.js";import"./thread-button-C9DbsgYC.js";import"./use-in-settings-DF5a-yr6.js";import"./sheet-CnG_30Tu.js";import"./X-qOHqlxey.js";import"./tooltip-DG5CnGag.js";import"./index-D88UyMf8.js";import"./use-route-default-main-RAA9Xu9b.js";import"./hooks-57fUVc8E.js";import"./use-mcp-client-QkI6RUae.js";import"./auth-B4tHClP5.js";import"./backoff-8mStPHYB.js";import"./task-board-DAXz0qcI.js";import"./schema-C0UHuNyx.js";import"./agent-icon-Bd0IZ2xl.js";import"./AlertCircle-CgujCznd.js";import"./Tool01-CQ5Xc26A.js";import"./ArrowUp-DBpBKFdD.js";import"./ArrowLeft-DYz0WE09.js";import"./ArrowRight-CWiigebn.js";import"./ZoomOut-DZCavZ8o.js";import"./Globe04-CdU3biQC.js";import"./CheckCircle-DppxuNa7.js";import"./Check-BO0tsZXP.js";import"./ChevronUp-WgMV95Wl.js";import"./UserSquare-C7aUR_aW.js";import"./Copy01-CP89x_RS.js";import"./CreditCard01-H8jUQWxs.js";import"./DotsVertical-4TEj21cV.js";import"./Eye-ARN8W0OA.js";import"./Share07-DyeTiScB.js";import"./XClose-hPk1Hqkr.js";import"./Image01-l9PMSSY0.js";import"./Key01-QkJYBYv-.js";import"./LayoutLeft-CgYc0js8.js";import"./Link01-CmwuZgWx.js";import"./LinkExternal01-DQ25aknz.js";import"./Monitor01-BVwwAtM6.js";import"./Sun-DgGlHV06.js";import"./Palette-Bjt7HH4h.js";import"./Plus-TU-OKHt0.js";import"./SearchMd-Cm4pXgfM.js";import"./Trash01-B9y1vShv.js";import"./Upload01-DAXWNq7T.js";import"./User01-p3MXVQ0Z.js";import"./Users01-CohEKYSh.js";import"./Zap-CyBIW8px.js";import"./toolbar-icon-button-DggL__pK.js";import"./shell-layout-C1ofRTSy.js";import"./avatar-DNbeZQMl.js";import"./download-app-dialog-ZwXjVAnk.js";import"./dialog-BWmqK6vg.js";import"./use-project-scope-Dg5JkMxK.js";import"./use-virtual-mcp-B22df3lH.js";import"./github-repo-BknN0SVI.js";import"./command-C24f7Kyz.js";import"./index-CZmAPBsQ.js";import"./integration-icon-Dz6rheZV.js";import"./project-icon-DtlCoOxs.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-DMazcHjn.js";import"./autosend-BwqeYDrP.js";import"./use-org-sso-C4Rm3HPT.js";import"./resizable-CDXwX1EQ.js";import"./route-page-header-CGZ8hlbE.js";import"./file-preview-CPwvdgRN.js";import"./use-org-fs-CUzmVYxO.js";import"./utils-BvSnSvcy.js";import"./editor-C4W1ZTll.js";import"./file-type-icon-UKBN2uy0.js";import"./markdown-W3XRuNet.js";import"./org-file-open-context-DP3MZUa1.js";import"./file-share-button-CNqX1uKM.js";import"./input-HBy0gWnZ.js";import"./popover-DKjcSfLB.js";import"./location-oTTXFrSF.js";import"./extract-connection-data-fRjq1au-.js";import"./metadata-D72DunRR.js";import"./connection-DSaol0Ng.js";import"./chat-context-BNtTPn2v.js";import"./thread-intent-BVf_UeqN.js";import"./slugify-CEUa2lfQ.js";import"./use-entitlements-e5g60LFP.js";import"./use-ai-providers-DmDozsCa.js";import"./use-decopilot-events-CXHHAExG.js";import"./use-organization-settings-Chk2oNMp.js";import"./build-improve-prompt-doc-l2J5lTda.js";import"./empty-state-CQWpCNEd.js";import"./use-date-fns-locale-C_k-ZNvB.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-connection-B62IVwoq.js";import"./mcp-oauth-3u1U11Wr.js";import"./alert-dialog-EQsgmpuA.js";import"./textarea-CQB0iWWu.js";import"./use-debounced-autosave-8--WWWFZ.js";import"./add-connection-dialog-bRZtyL-b.js";import"./collection-search-CCzn1jJM.js";import"./connection-card-DxtmlEpf.js";import"./useInfiniteQuery-kTLnckn3.js";import"./infiniteQueryObserver-vADGuTxL.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-DNfsLwl_.js";import"./form-Dd8uuw3Z.js";import"./label-xjEYWx7p.js";import"./select-Bqp_U1ks.js";import"./connection-form-helpers-DCcCOjwY.js";import"./authenticate-and-persist-oauth-EABJT3_J.js";import"./collection-tabs-CZs317SQ.js";import"./badge-Dn4B9MPM.js";import"./use-infinite-scroll-BWjbZqkI.js";import"./useSuspenseInfiniteQuery-D3KJwbuZ.js";import"./checkbox-CzVzwj4A.js";import"./search-input-DX8Af1_h.js";import"./use-mcp-auth-status-cOXVTEWe.js";import"./types-BuaOQs2H.js";import"./use-mcp-tools-CRxMLxmD.js";import"./use-mcp-prompts-CTv5hWKn.js";import"./utils-CVEq3hMx.js";import"./switch-CAv8chXa.js";import"./scroll-area-TOykm0pn.js";import"./use-project-native-view-presence-eLIweUr6.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-DzDjWDbA.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-D8HlHK3x.js";import"./virtual-mcp-CZOMxd4f.js";import"./repository-import-picker-CcnsKtpd.js";import"./use-navigate-to-agent-CATWBqpJ.js";import"./repository-picker-72QfMFWx.js";import"./github-icon-xYGi4_zU.js";import"./use-debounced-value-JsQcnlEX.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BDwnJCqm.js";import"./use-secrets-Be7dbg8N.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function b(r){const t=n.c(4),{previewPath:m,onClose:p,showSeeInLibrary:o}=r,i=o===void 0?!1:o;let e;return t[0]!==p||t[1]!==m||t[2]!==i?(e=s.jsx("div",{className:"flex h-full w-full flex-col bg-background",children:s.jsx(c,{previewPath:m,onClose:p,showSeeInLibrary:i,variant:"panel"})}),t[0]=p,t[1]=m,t[2]=i,t[3]=e):e=t[3],e}function x(r){const t=n.c(5),{path:m}=r,{closePanel:p}=f();let o;t[0]!==p?(o=()=>p(),t[0]=p,t[1]=o):o=t[1];const i=o;let e;return t[2]!==i||t[3]!==m?(e=s.jsx(b,{previewPath:m,onClose:i,showSeeInLibrary:!0}),t[2]=i,t[3]=m,t[4]=e):e=t[4],e}function y(){const r=n.c(4);let t;r[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},r[0]=t):t=r[0];const m=a(t),p=h(),o="path"in m&&typeof m.path=="string"?m.path:void 0;let i;return r[1]!==o||r[2]!==p?(i=o?s.jsx(x,{path:o},o):s.jsx(u,{virtualMcpId:p}),r[1]=o,r[2]=p,r[3]=i):i=r[3],i}function Yr(){const r=n.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=s.jsx(l.Content,{children:s.jsx(y,{})}),r[0]=t):t=r[0],t}export{Yr as default};
@@ -1 +0,0 @@
1
- import{c as m,j as i}from"./index-a8XScFmZ.js";import{ChatLayout as p}from"./index-DXiYogYY.js";import{S as e}from"./settings-tab-gQ1sYUFr.js";import{b as n}from"./thread-route-B1ZSIzzT.js";import"./use-mobile-BR3euFAT.js";import"./thread-button-C9DbsgYC.js";import"./use-in-settings-DF5a-yr6.js";import"./sheet-CnG_30Tu.js";import"./X-qOHqlxey.js";import"./tooltip-DG5CnGag.js";import"./index-D88UyMf8.js";import"./use-panel-navigate-BvXmhCXE.js";import"./use-project-scope-Dg5JkMxK.js";import"./use-virtual-mcp-B22df3lH.js";import"./use-mcp-client-QkI6RUae.js";import"./auth-B4tHClP5.js";import"./github-repo-BknN0SVI.js";import"./use-route-default-main-RAA9Xu9b.js";import"./hooks-57fUVc8E.js";import"./backoff-8mStPHYB.js";import"./task-board-DAXz0qcI.js";import"./schema-C0UHuNyx.js";import"./agent-icon-Bd0IZ2xl.js";import"./AlertCircle-CgujCznd.js";import"./Tool01-CQ5Xc26A.js";import"./ArrowUp-DBpBKFdD.js";import"./ArrowLeft-DYz0WE09.js";import"./ArrowRight-CWiigebn.js";import"./ZoomOut-DZCavZ8o.js";import"./Globe04-CdU3biQC.js";import"./CheckCircle-DppxuNa7.js";import"./Check-BO0tsZXP.js";import"./ChevronUp-WgMV95Wl.js";import"./UserSquare-C7aUR_aW.js";import"./Copy01-CP89x_RS.js";import"./CreditCard01-H8jUQWxs.js";import"./DotsVertical-4TEj21cV.js";import"./Eye-ARN8W0OA.js";import"./Share07-DyeTiScB.js";import"./XClose-hPk1Hqkr.js";import"./Image01-l9PMSSY0.js";import"./Key01-QkJYBYv-.js";import"./LayoutLeft-CgYc0js8.js";import"./Link01-CmwuZgWx.js";import"./LinkExternal01-DQ25aknz.js";import"./Monitor01-BVwwAtM6.js";import"./Sun-DgGlHV06.js";import"./Palette-Bjt7HH4h.js";import"./Plus-TU-OKHt0.js";import"./SearchMd-Cm4pXgfM.js";import"./Trash01-B9y1vShv.js";import"./Upload01-DAXWNq7T.js";import"./User01-p3MXVQ0Z.js";import"./Users01-CohEKYSh.js";import"./Zap-CyBIW8px.js";import"./toolbar-icon-button-DggL__pK.js";import"./shell-layout-C1ofRTSy.js";import"./avatar-DNbeZQMl.js";import"./download-app-dialog-ZwXjVAnk.js";import"./dialog-BWmqK6vg.js";import"./command-C24f7Kyz.js";import"./index-CZmAPBsQ.js";import"./integration-icon-Dz6rheZV.js";import"./project-icon-DtlCoOxs.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-DMazcHjn.js";import"./autosend-BwqeYDrP.js";import"./use-org-sso-C4Rm3HPT.js";import"./resizable-CDXwX1EQ.js";import"./route-page-header-CGZ8hlbE.js";import"./extract-connection-data-fRjq1au-.js";import"./metadata-D72DunRR.js";import"./connection-DSaol0Ng.js";import"./chat-context-BNtTPn2v.js";import"./thread-intent-BVf_UeqN.js";import"./slugify-CEUa2lfQ.js";import"./use-entitlements-e5g60LFP.js";import"./use-ai-providers-DmDozsCa.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-CXHHAExG.js";import"./use-organization-settings-Chk2oNMp.js";import"./build-improve-prompt-doc-l2J5lTda.js";import"./empty-state-CQWpCNEd.js";import"./use-date-fns-locale-C_k-ZNvB.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-connection-B62IVwoq.js";import"./mcp-oauth-3u1U11Wr.js";import"./alert-dialog-EQsgmpuA.js";import"./textarea-CQB0iWWu.js";import"./use-debounced-autosave-8--WWWFZ.js";import"./add-connection-dialog-bRZtyL-b.js";import"./collection-search-CCzn1jJM.js";import"./connection-card-DxtmlEpf.js";import"./useInfiniteQuery-kTLnckn3.js";import"./infiniteQueryObserver-vADGuTxL.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-DNfsLwl_.js";import"./form-Dd8uuw3Z.js";import"./label-xjEYWx7p.js";import"./input-HBy0gWnZ.js";import"./select-Bqp_U1ks.js";import"./connection-form-helpers-DCcCOjwY.js";import"./authenticate-and-persist-oauth-EABJT3_J.js";import"./collection-tabs-CZs317SQ.js";import"./badge-Dn4B9MPM.js";import"./use-infinite-scroll-BWjbZqkI.js";import"./useSuspenseInfiniteQuery-D3KJwbuZ.js";import"./file-type-icon-UKBN2uy0.js";import"./use-org-fs-CUzmVYxO.js";import"./checkbox-CzVzwj4A.js";import"./search-input-DX8Af1_h.js";import"./use-mcp-auth-status-cOXVTEWe.js";import"./types-BuaOQs2H.js";import"./use-mcp-tools-CRxMLxmD.js";import"./use-mcp-prompts-CTv5hWKn.js";import"./utils-CVEq3hMx.js";import"./switch-CAv8chXa.js";import"./popover-DKjcSfLB.js";import"./scroll-area-TOykm0pn.js";import"./use-project-native-view-presence-eLIweUr6.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-DzDjWDbA.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-D8HlHK3x.js";import"./virtual-mcp-CZOMxd4f.js";import"./repository-import-picker-CcnsKtpd.js";import"./use-navigate-to-agent-CATWBqpJ.js";import"./repository-picker-72QfMFWx.js";import"./github-icon-xYGi4_zU.js";import"./use-debounced-value-JsQcnlEX.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BDwnJCqm.js";import"./use-secrets-Be7dbg8N.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function s(){const t=m.c(2),o=n();let r;return t[0]!==o?(r=i.jsx(e,{virtualMcpId:o}),t[0]=o,t[1]=r):r=t[1],r}function zo(){const t=m.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=i.jsx(p.Content,{children:i.jsx(s,{})}),t[0]=o):o=t[0],o}export{zo as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/file-explorer-BpNCsQeN.js","assets/index-a8XScFmZ.js","assets/index-DFsKuQKl.css","assets/agent-icon-Bd0IZ2xl.js","assets/AlertCircle-CgujCznd.js","assets/Tool01-CQ5Xc26A.js","assets/ArrowUp-DBpBKFdD.js","assets/ArrowLeft-DYz0WE09.js","assets/ArrowRight-CWiigebn.js","assets/ZoomOut-DZCavZ8o.js","assets/Globe04-CdU3biQC.js","assets/CheckCircle-DppxuNa7.js","assets/Check-BO0tsZXP.js","assets/ChevronUp-WgMV95Wl.js","assets/UserSquare-C7aUR_aW.js","assets/Copy01-CP89x_RS.js","assets/CreditCard01-H8jUQWxs.js","assets/DotsVertical-4TEj21cV.js","assets/Eye-ARN8W0OA.js","assets/Share07-DyeTiScB.js","assets/XClose-hPk1Hqkr.js","assets/Image01-l9PMSSY0.js","assets/Key01-QkJYBYv-.js","assets/LayoutLeft-CgYc0js8.js","assets/Link01-CmwuZgWx.js","assets/LinkExternal01-DQ25aknz.js","assets/Monitor01-BVwwAtM6.js","assets/Sun-DgGlHV06.js","assets/Palette-Bjt7HH4h.js","assets/Plus-TU-OKHt0.js","assets/SearchMd-Cm4pXgfM.js","assets/Trash01-B9y1vShv.js","assets/Upload01-DAXWNq7T.js","assets/User01-p3MXVQ0Z.js","assets/Users01-CohEKYSh.js","assets/X-qOHqlxey.js","assets/Zap-CyBIW8px.js","assets/scroll-area-TOykm0pn.js","assets/select-Bqp_U1ks.js","assets/index-D88UyMf8.js","assets/tooltip-DG5CnGag.js","assets/chat-context-BNtTPn2v.js","assets/use-panel-navigate-BvXmhCXE.js","assets/thread-route-B1ZSIzzT.js","assets/use-project-scope-Dg5JkMxK.js","assets/use-virtual-mcp-B22df3lH.js","assets/use-mcp-client-QkI6RUae.js","assets/auth-B4tHClP5.js","assets/github-repo-BknN0SVI.js","assets/autosend-BwqeYDrP.js","assets/thread-intent-BVf_UeqN.js","assets/slugify-CEUa2lfQ.js","assets/hooks-57fUVc8E.js","assets/backoff-8mStPHYB.js","assets/task-board-DAXz0qcI.js","assets/schema-C0UHuNyx.js","assets/use-is-desktop-app-BNujXJc_.js","assets/use-entitlements-e5g60LFP.js","assets/use-ai-providers-DmDozsCa.js","assets/location-oTTXFrSF.js","assets/use-decopilot-events-CXHHAExG.js","assets/use-organization-settings-Chk2oNMp.js","assets/editor-C4W1ZTll.js","assets/shell-layout-C1ofRTSy.js","assets/avatar-DNbeZQMl.js","assets/download-app-dialog-ZwXjVAnk.js","assets/dialog-BWmqK6vg.js","assets/command-C24f7Kyz.js","assets/index-CZmAPBsQ.js","assets/integration-icon-Dz6rheZV.js","assets/project-icon-DtlCoOxs.js","assets/required-auth-layout-DMazcHjn.js","assets/use-org-sso-C4Rm3HPT.js","assets/shell-layout-CE2Eihra.css","assets/save-changes-debug-nBi-n9eV.js","assets/sandbox-git-api-B1R0585s.js","assets/sandbox-url-D3mC8qhT.js","assets/input-HBy0gWnZ.js","assets/alert-dialog-EQsgmpuA.js","assets/utils-BvSnSvcy.js"])))=>i.map(i=>d[i]);
2
- import{c as _,m as w,K as P,b as F,X as R,j as p,r as k,aF as A,h as N,u as q}from"./index-a8XScFmZ.js";import{A as C}from"./agent-view-guard-yKF0ckjL.js";import{F as B}from"./feature-gate-CfqoPyXH.js";import{b as K}from"./chat-context-BNtTPn2v.js";import{d as M,c as $}from"./sandbox-lifecycle-context-C_uX5vaY.js";import{b as z}from"./sandbox-url-D3mC8qhT.js";import{E as G}from"./empty-state-CQWpCNEd.js";import{u as L}from"./use-is-desktop-app-BNujXJc_.js";import"./use-main-panel-tabs-COSZEEJN.js";import"./use-route-default-main-RAA9Xu9b.js";import"./Share07-DyeTiScB.js";import"./Monitor01-BVwwAtM6.js";import"./use-connection-B62IVwoq.js";import"./use-mcp-client-QkI6RUae.js";import"./auth-B4tHClP5.js";import"./use-mcp-tools-CRxMLxmD.js";import"./use-virtual-mcp-B22df3lH.js";import"./types-BuaOQs2H.js";import"./utils-CVEq3hMx.js";import"./use-project-scope-Dg5JkMxK.js";import"./github-repo-BknN0SVI.js";import"./index-BhOqFKQs.js";import"./ArrowUp-DBpBKFdD.js";import"./gateway-client-CND_0J2Q.js";import"./tooltip-DG5CnGag.js";import"./index-D88UyMf8.js";import"./dialog-BWmqK6vg.js";import"./X-qOHqlxey.js";import"./drawer-DNfsLwl_.js";import"./collection-search-CCzn1jJM.js";import"./SearchMd-Cm4pXgfM.js";import"./use-mobile-BR3euFAT.js";import"./use-mcp-prompts-CTv5hWKn.js";import"./index-_tZ6iIAI.js";import"./form-Dd8uuw3Z.js";import"./label-xjEYWx7p.js";import"./input-HBy0gWnZ.js";import"./org-file-open-context-DP3MZUa1.js";import"./use-panel-navigate-BvXmhCXE.js";import"./thread-route-B1ZSIzzT.js";import"./input-DBK_w2ku.js";import"./shell-layout-C1ofRTSy.js";import"./avatar-DNbeZQMl.js";import"./User01-p3MXVQ0Z.js";import"./Globe04-CdU3biQC.js";import"./UserSquare-C7aUR_aW.js";import"./agent-icon-Bd0IZ2xl.js";import"./AlertCircle-CgujCznd.js";import"./Tool01-CQ5Xc26A.js";import"./ArrowLeft-DYz0WE09.js";import"./ArrowRight-CWiigebn.js";import"./ZoomOut-DZCavZ8o.js";import"./CheckCircle-DppxuNa7.js";import"./Check-BO0tsZXP.js";import"./ChevronUp-WgMV95Wl.js";import"./Copy01-CP89x_RS.js";import"./CreditCard01-H8jUQWxs.js";import"./DotsVertical-4TEj21cV.js";import"./Eye-ARN8W0OA.js";import"./XClose-hPk1Hqkr.js";import"./Image01-l9PMSSY0.js";import"./Key01-QkJYBYv-.js";import"./LayoutLeft-CgYc0js8.js";import"./Link01-CmwuZgWx.js";import"./LinkExternal01-DQ25aknz.js";import"./Sun-DgGlHV06.js";import"./Palette-Bjt7HH4h.js";import"./Plus-TU-OKHt0.js";import"./Trash01-B9y1vShv.js";import"./Upload01-DAXWNq7T.js";import"./Users01-CohEKYSh.js";import"./Zap-CyBIW8px.js";import"./download-app-dialog-ZwXjVAnk.js";import"./command-C24f7Kyz.js";import"./index-CZmAPBsQ.js";import"./integration-icon-Dz6rheZV.js";import"./project-icon-DtlCoOxs.js";import"./hooks-57fUVc8E.js";import"./backoff-8mStPHYB.js";import"./task-board-DAXz0qcI.js";import"./schema-C0UHuNyx.js";import"./required-auth-layout-DMazcHjn.js";import"./autosend-BwqeYDrP.js";import"./use-org-sso-C4Rm3HPT.js";import"./chat-draft-BrbpfreL.js";import"./use-session-runtime-16mMZo3B.js";import"./thread-intent-BVf_UeqN.js";import"./slugify-CEUa2lfQ.js";import"./select-Bqp_U1ks.js";import"./usage-stats-CfoUXIit.js";import"./use-copy-PMhIFi8m.js";import"./markdown-W3XRuNet.js";import"./format-time-BtXRrtv4.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-entitlements-e5g60LFP.js";import"./tabs-BB69CAa_.js";import"./use-deco-credits-D7jE3Gb7.js";import"./use-ai-providers-DmDozsCa.js";import"./toggle-group-DN5pA1xA.js";import"./tool-namespace-DmnQIdtF.js";import"./use-open-billing-url-CssGGbOV.js";import"./decopilot-CdSUSOau.js";import"./checkbox-CzVzwj4A.js";import"./ai-providers-logos-DD3qZ33J.js";import"./popover-DKjcSfLB.js";import"./use-organization-settings-Chk2oNMp.js";import"./index-BRtQvkRe.js";import"./input-5OigQZTm.js";import"./suggestion-BKo4wcW5.js";import"./use-org-fs-CUzmVYxO.js";import"./question-004-sINsf4GQ.js";import"./use-members-DJtmQ5I0.js";import"./use-org-auth-client-DD1x9ZUx.js";import"./feature-paywall-BwEH2JPL.js";import"./plan-ladder-DLxu0Wxh.js";import"./add-connection-dialog-bRZtyL-b.js";import"./extract-connection-data-fRjq1au-.js";import"./metadata-D72DunRR.js";import"./connection-DSaol0Ng.js";import"./connection-card-DxtmlEpf.js";import"./useInfiniteQuery-kTLnckn3.js";import"./infiniteQueryObserver-vADGuTxL.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-CQB0iWWu.js";import"./connection-form-helpers-DCcCOjwY.js";import"./authenticate-and-persist-oauth-EABJT3_J.js";import"./mcp-oauth-3u1U11Wr.js";import"./collection-tabs-CZs317SQ.js";import"./badge-Dn4B9MPM.js";import"./use-infinite-scroll-BWjbZqkI.js";import"./useSuspenseInfiniteQuery-D3KJwbuZ.js";import"./pair-DwgUrqzM.js";import"./collapsible-DlWH4-1Q.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-DkVBLMEl.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./sheet-CnG_30Tu.js";import"./use-navigate-to-agent-CATWBqpJ.js";import"./use-thread-outputs-fY2YVo4L.js";import"./file-type-icon-UKBN2uy0.js";import"./resolve-tab-icon-D_xtoMYK.js";import"./use-task-metadata-fbwKPdOL.js";import"./use-project-native-view-presence-eLIweUr6.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-DzDjWDbA.js";import"./site-slug-DebpOoQq.js";import"./virtual-mcp-CZOMxd4f.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-CXHHAExG.js";import"./sandbox-start-errors-BK_aDCyt.js";function V(e){const t=_.c(14),{orgSlug:m,virtualMcpId:i,branch:o,threadId:r,enabled:b}=e,s=b===void 0?!0:b;let l;t[0]!==o||t[1]!==m||t[2]!==r||t[3]!==i?(l=P.sandboxRepoDir(m,i,o,r),t[0]=o,t[1]=m,t[2]=r,t[3]=i,t[4]=l):l=t[4];let n;t[5]!==o||t[6]!==m||t[7]!==r||t[8]!==i?(n=async()=>{const h=z({orgSlug:m,virtualMcpId:i,branch:o,threadId:r},"config"),c=await fetch(h);return c.ok?(await c.json()).repoDir??null:null},t[5]=o,t[6]=m,t[7]=r,t[8]=i,t[9]=n):n=t[9];let a;return t[10]!==s||t[11]!==l||t[12]!==n?(a={queryKey:l,queryFn:n,enabled:s,staleTime:1/0},t[10]=s,t[11]=l,t[12]=n,t[13]=a):a=t[13],w(a).data??null}const O=k.lazy(()=>A(()=>import("./file-explorer-BpNCsQeN.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79])).then(e=>({default:e.FileExplorer})));function Q(e){const t=_.c(26),{openPath:m}=e,i=F(),{org:o}=R(),{currentBranch:r,taskId:b,virtualMcpId:s}=K(),l=L(),n=M(),a=$();n.vmEntry,a.lifecycle.phase;const D=l,h=s??"",c=r??"",g=b??null,E=D;let y;t[0]!==o.slug||t[1]!==h||t[2]!==c||t[3]!==g||t[4]!==E?(y={orgSlug:o.slug,virtualMcpId:h,branch:c,threadId:g,enabled:E},t[0]=o.slug,t[1]=h,t[2]=c,t[3]=g,t[4]=E,t[5]=y):y=t[5],V(y);const I=null;if(!s||!r){let d;t[6]!==i?(d=i("mainPanelTabs.codeTab.noSandboxToBrowse"),t[6]=i,t[7]=d):d=t[7];let x;t[8]!==i?(x=i("mainPanelTabs.codeTab.noSandboxToBrowseDescription"),t[8]=i,t[9]=x):x=t[9];let j;return t[10]!==d||t[11]!==x?(j=p.jsx(G,{className:"h-full",title:d,description:x}),t[10]=d,t[11]=x,t[12]=j):j=t[12],j}let u;t[13]!==I||t[14]!==i?(u=I,t[13]=I,t[14]=i,t[15]=u):u=t[15];let S;t[16]===Symbol.for("react.memo_cache_sentinel")?(S=p.jsx("div",{className:"h-full flex items-center justify-center",children:p.jsx(N,{className:"size-5 text-muted-foreground"})}),t[16]=S):S=t[16];const T=b??null;let f;t[17]!==r||t[18]!==m||t[19]!==o.slug||t[20]!==T||t[21]!==s?(f=p.jsx("div",{className:"flex-1 relative overflow-hidden bg-background",children:p.jsx(k.Suspense,{fallback:S,children:p.jsx(O,{orgSlug:o.slug,virtualMcpId:s,branch:r,threadId:T,openPath:m})})}),t[17]=r,t[18]=m,t[19]=o.slug,t[20]=T,t[21]=s,t[22]=f):f=t[22];let v;return t[23]!==u||t[24]!==f?(v=p.jsxs("div",{className:"flex flex-col w-full h-full",children:[u,f]}),t[23]=u,t[24]=f,t[25]=v):v=t[25],v}function Cr(){const e=_.c(3);let t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},e[0]=t):t=e[0];const m=q(t),o=("file"in m&&typeof m.file=="string"?m.file:void 0)??null;let r;return e[1]!==o?(r=p.jsx(C,{tabId:"code",children:p.jsx(B,{feature:"cms",children:p.jsx(Q,{openPath:o})})}),e[1]=o,e[2]=r):r=e[2],r}export{Cr as default};