decocms 4.390.4 → 4.390.5

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-iVRTcaBg.js → AlertCircle-BXd3wmhE.js} +1 -1
  2. package/dist/client/assets/{AreaChart-vGEKzI4F.js → AreaChart-BurPFOEM.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-DfZNe3Vl.js → ArrowLeft-CtG_Sz3T.js} +1 -1
  4. package/dist/client/assets/{ArrowRight-CswoMXm3.js → ArrowRight-DGQoBfX2.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-ZHCqKDUA.js → ArrowUp-BAzKSoqz.js} +1 -1
  6. package/dist/client/assets/{CartesianChart-_SxUX3gE.js → CartesianChart-BHBzHrfv.js} +1 -1
  7. package/dist/client/assets/{Check-ocmT1xhM.js → Check-D3UEH1bb.js} +1 -1
  8. package/dist/client/assets/{CheckCircle-BmHBdTYn.js → CheckCircle-BmoxvNcp.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-BEGO8LAp.js → ChevronUp-DkDOUc-8.js} +1 -1
  10. package/dist/client/assets/{Copy01-Djl84HjT.js → Copy01-1VyfDicU.js} +1 -1
  11. package/dist/client/assets/{CreditCard01-DA21YZ9t.js → CreditCard01-CrYxi8Yw.js} +1 -1
  12. package/dist/client/assets/{DotsVertical-GP-H6-nS.js → DotsVertical-BVvaV8Wy.js} +1 -1
  13. package/dist/client/assets/{Download01-CQZ78LGI.js → Download01-CRbdo8yP.js} +1 -1
  14. package/dist/client/assets/{ErrorBarContext-CU0G222G.js → ErrorBarContext-Cq12nkBo.js} +1 -1
  15. package/dist/client/assets/{Eye-CNk4ml55.js → Eye-DnZDEgOn.js} +1 -1
  16. package/dist/client/assets/{Globe04-B3-IlgJ4.js → Globe04-Cfnfjo6J.js} +1 -1
  17. package/dist/client/assets/{Image01-zHW5odO5.js → Image01-ZQL1hr5Q.js} +1 -1
  18. package/dist/client/assets/{Key01-BCjLeK7M.js → Key01-HEuAw7Uw.js} +1 -1
  19. package/dist/client/assets/{LayoutLeft-dzqHSKuH.js → LayoutLeft-Di6ed8JP.js} +1 -1
  20. package/dist/client/assets/{Line-BPNz1hy-.js → Line-D1DSosvE.js} +1 -1
  21. package/dist/client/assets/{Link01-CBc36KC8.js → Link01-CZiQuc44.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-JGUyp91x.js → LinkExternal01-BekDuv1R.js} +1 -1
  23. package/dist/client/assets/{Monitor01-DMBIX-hP.js → Monitor01-BLWTHtTp.js} +1 -1
  24. package/dist/client/assets/{Package-VT7-ZGoy.js → Package-tH33TvgC.js} +1 -1
  25. package/dist/client/assets/{Palette-CPW0a6wF.js → Palette-BagjpLZN.js} +1 -1
  26. package/dist/client/assets/{Plus-ojokEQ8x.js → Plus-Y-KvMcUC.js} +1 -1
  27. package/dist/client/assets/{SearchLg-C-i1c0zU.js → SearchLg-CL6esTtw.js} +1 -1
  28. package/dist/client/assets/{SearchMd-MG_xST09.js → SearchMd-CzE1IXtk.js} +1 -1
  29. package/dist/client/assets/{Sector-DLq_M76x.js → Sector-7uDV3O2e.js} +1 -1
  30. package/dist/client/assets/{Share07-uQomrLCR.js → Share07-DwVANqGN.js} +1 -1
  31. package/dist/client/assets/{Stars01-DxtRb5WZ.js → Stars01-BvtQBnED.js} +1 -1
  32. package/dist/client/assets/{Sun-BEdjuN6j.js → Sun-CPPd8cP7.js} +1 -1
  33. package/dist/client/assets/{Tool01-COB6rywP.js → Tool01-CeJWUTx4.js} +1 -1
  34. package/dist/client/assets/{Trash01-DTUu7NOU.js → Trash01-C6BZglNY.js} +1 -1
  35. package/dist/client/assets/{Upload01-Dty36l1w.js → Upload01-DBDdtdRw.js} +1 -1
  36. package/dist/client/assets/{User01-BSto60sn.js → User01-DhER-7M5.js} +1 -1
  37. package/dist/client/assets/{UserSquare-C8brDzYe.js → UserSquare-D9izLEMu.js} +1 -1
  38. package/dist/client/assets/{Users01-CxwIEg0g.js → Users01-CGh_okmA.js} +1 -1
  39. package/dist/client/assets/{X-B5gw2EHv.js → X-rZfX9y0d.js} +1 -1
  40. package/dist/client/assets/{XCircle-seVaST6e.js → XCircle-fYjVO-4e.js} +1 -1
  41. package/dist/client/assets/{XClose-B5O4OZct.js → XClose-Drgfi-MO.js} +1 -1
  42. package/dist/client/assets/{Zap-D7YN1rKW.js → Zap-DcWY_A2w.js} +1 -1
  43. package/dist/client/assets/{ZoomOut-qVaUZ9ca.js → ZoomOut-CmJNnQZa.js} +1 -1
  44. package/dist/client/assets/{access-gate-BIKeQRL_.js → access-gate-DrC617P9.js} +1 -1
  45. package/dist/client/assets/{add-connection-dialog-BCh8Kz04.js → add-connection-dialog-BrlUHuQ9.js} +1 -1
  46. package/dist/client/assets/{agent-analytics--KcDdN57.js → agent-analytics-Cw9tQISn.js} +1 -1
  47. package/dist/client/assets/agent-app-BE3kXNei.js +1 -0
  48. package/dist/client/assets/{agent-assets-CB6ZSzqA.js → agent-assets-NJjJRoAl.js} +1 -1
  49. package/dist/client/assets/{agent-automation-B57x68Um.js → agent-automation-C1ibaLXl.js} +1 -1
  50. package/dist/client/assets/{agent-automations-DsNAcyrP.js → agent-automations-DB1TbF54.js} +1 -1
  51. package/dist/client/assets/{agent-connect-sources-D1XyNIWt.js → agent-connect-sources-Cvwx0aGv.js} +1 -1
  52. package/dist/client/assets/agent-deck-BjwXuCnI.js +1 -0
  53. package/dist/client/assets/{agent-e2e-DPPSPIQv.js → agent-e2e-Bm0ir2w1.js} +1 -1
  54. package/dist/client/assets/{agent-experiments-CMIDfL0o.js → agent-experiments-Bv3P9kPX.js} +1 -1
  55. package/dist/client/assets/agent-file-B5ULlTNv.js +1 -0
  56. package/dist/client/assets/{agent-git-BBWRyZCE.js → agent-git-B1sEUtW8.js} +1 -1
  57. package/dist/client/assets/{agent-hosting-BIMxJVDi.js → agent-hosting-DNw3gDr1.js} +1 -1
  58. package/dist/client/assets/{agent-icon-BsnTrJjJ.js → agent-icon-CUHwvCug.js} +1 -1
  59. package/dist/client/assets/agent-library-file-ys3FW6Ts.js +1 -0
  60. package/dist/client/assets/{agent-monitor-CbmXFCNk.js → agent-monitor-8Z9iofGU.js} +1 -1
  61. package/dist/client/assets/{agent-overview-BPW1OhWv.js → agent-overview-DV6D5mcW.js} +1 -1
  62. package/dist/client/assets/agent-settings-Do48sFtz.js +1 -0
  63. package/dist/client/assets/{agent-site-editor-m4t0aVDo.js → agent-site-editor-Bp9kex6E.js} +1 -1
  64. package/dist/client/assets/agent-site-editor-code-D6OZaku7.js +2 -0
  65. package/dist/client/assets/{agent-site-editor-content-Y18YyEWw.js → agent-site-editor-content-BnmxakX4.js} +2 -2
  66. package/dist/client/assets/{agent-site-editor-preview-BOHOs4hS.js → agent-site-editor-preview-k6KOtKNv.js} +3 -3
  67. package/dist/client/assets/agent-view-BcTmq8aW.js +1 -0
  68. package/dist/client/assets/{agent-view-guard-DBlz_p2t.js → agent-view-guard-mWuQM6et.js} +1 -1
  69. package/dist/client/assets/{agents-list-7X7ucg0e.js → agents-list-CKVhVS_6.js} +1 -1
  70. package/dist/client/assets/{ai-providers-Bm2tLrMu.js → ai-providers-CZkq155K.js} +1 -1
  71. package/dist/client/assets/{alert-dialog-BhgAEu2i.js → alert-dialog-D0EwpcN4.js} +1 -1
  72. package/dist/client/assets/{alert-DslM1OpO.js → alert-tPvl5V7J.js} +1 -1
  73. package/dist/client/assets/{api-keys-Dq1Bnar4.js → api-keys-CiTZWPra.js} +1 -1
  74. package/dist/client/assets/api-keys-D0yLzADM.js +1 -0
  75. package/dist/client/assets/app-editor-CQk3gD21.js +1 -0
  76. package/dist/client/assets/{asset-utils-D3ZIfM_Z.js → asset-utils-tQ6o2CDF.js} +1 -1
  77. package/dist/client/assets/{auth-uih7AqvO.js → auth-6ek5T3GB.js} +1 -1
  78. package/dist/client/assets/{auth-catchall-pT36A0zr.js → auth-catchall-BTt0HN1L.js} +1 -1
  79. package/dist/client/assets/{auth-entry-2UXAVZ_y.js → auth-entry-Bq9TVm0P.js} +1 -1
  80. package/dist/client/assets/{auth-split-layout-BjGbJo38.js → auth-split-layout-CNzOx79W.js} +1 -1
  81. package/dist/client/assets/{authenticate-and-persist-oauth-B9I5UxEd.js → authenticate-and-persist-oauth-C0EgQu0P.js} +1 -1
  82. package/dist/client/assets/{automation-list-row-6I49gBmF.js → automation-list-row-BSZgMG8f.js} +1 -1
  83. package/dist/client/assets/{automation-runs-EAqUU_Ij.js → automation-runs-BMsBLMsg.js} +1 -1
  84. package/dist/client/assets/{automations-CQPehM0c.js → automations-Bdbn7Pu2.js} +1 -1
  85. package/dist/client/assets/{autosend-BJW1PfVQ.js → autosend-BNuK0erf.js} +1 -1
  86. package/dist/client/assets/{avatar-_8aGoMXJ.js → avatar-D0sKo5Ko.js} +1 -1
  87. package/dist/client/assets/{badge-DMewhq-R.js → badge-CFEM0raL.js} +1 -1
  88. package/dist/client/assets/{block-document-Dcc8Ersi.js → block-document-Chl-m90T.js} +1 -1
  89. package/dist/client/assets/{blocks-preview-workspace-context-BRSFaO-e.js → blocks-preview-workspace-context-DdPADfnI.js} +1 -1
  90. package/dist/client/assets/{breadcrumb-ClrBbM2y.js → breadcrumb-DGzJ2mi_.js} +1 -1
  91. package/dist/client/assets/{buckets-8W4ppyWH.js → buckets-W6OaopO-.js} +1 -1
  92. package/dist/client/assets/{build-improve-prompt-doc-CX4X_Kjx.js → build-improve-prompt-doc-DeW5gQgu.js} +1 -1
  93. package/dist/client/assets/{bulk-category-panel-DRm2c8X2.js → bulk-category-panel-Rf660pBu.js} +1 -1
  94. package/dist/client/assets/{calendar-B83nuFOI.js → calendar-BDrJCpVb.js} +1 -1
  95. package/dist/client/assets/{capability-load-error-BUHyT4vC.js → capability-load-error-CkdeSGfJ.js} +1 -1
  96. package/dist/client/assets/{category-editor-DmtS6BHb.js → category-editor-BjOOP9zk.js} +1 -1
  97. package/dist/client/assets/{chart-O1DWzSgB.js → chart-r_c7F5B8.js} +1 -1
  98. package/dist/client/assets/{chat-context-H6Zpj-Vd.js → chat-context-DfIPg4kF.js} +1 -1
  99. package/dist/client/assets/{chat-draft-BXT8ntBy.js → chat-draft-BqHnkSRF.js} +1 -1
  100. package/dist/client/assets/{checkbox-JC6LoT32.js → checkbox-Dr1iEjvP.js} +1 -1
  101. package/dist/client/assets/{choose-editor-D-IXY8oL.js → choose-editor-Dp7QkLDv.js} +1 -1
  102. package/dist/client/assets/{claim-phase-copy-CPiQ28RG.js → claim-phase-copy-CPp-hZ5n.js} +1 -1
  103. package/dist/client/assets/{cli-auth-success-CQt2stGY.js → cli-auth-success-B3ECmgl-.js} +1 -1
  104. package/dist/client/assets/{client-icons-D5aE3fDf.js → client-icons-Ce5SmXFK.js} +1 -1
  105. package/dist/client/assets/{collapsible-B930Znij.js → collapsible-Ozwn48y1.js} +1 -1
  106. package/dist/client/assets/{collection-detail-DILC7xOI.js → collection-detail-DApKXcnj.js} +1 -1
  107. package/dist/client/assets/{collection-display-button-DKuiVs_e.js → collection-display-button-DM83AZTp.js} +1 -1
  108. package/dist/client/assets/{collection-search-DFVK1KQ8.js → collection-search-BRkIgroJ.js} +1 -1
  109. package/dist/client/assets/{collection-table-wrapper-DvM7LDpZ.js → collection-table-wrapper-SNXCX7Mr.js} +1 -1
  110. package/dist/client/assets/{collection-tabs-DWdbo1Je.js → collection-tabs-BN1xWU9h.js} +1 -1
  111. package/dist/client/assets/{combobox-BoqrgDcx.js → combobox-Ct9LBV7p.js} +1 -1
  112. package/dist/client/assets/{command-C3KYPhtk.js → command-Das6UcyK.js} +1 -1
  113. package/dist/client/assets/{companion-mcps-section-DhDS_06A.js → companion-mcps-section-B4IqxVxa.js} +1 -1
  114. package/dist/client/assets/{connect-Dyr51oJk.js → connect-DKxaqp8T.js} +1 -1
  115. package/dist/client/assets/{connect-layout-BNbZXyRv.js → connect-layout-GIo2P6vy.js} +1 -1
  116. package/dist/client/assets/{connection-D9jQPSCJ.js → connection-Vq7712iH.js} +1 -1
  117. package/dist/client/assets/{connection-card-D-LytxKQ.js → connection-card-DmSG--jc.js} +1 -1
  118. package/dist/client/assets/{connection-detail-CNt-Uyzd.js → connection-detail-DCIP_zf4.js} +1 -1
  119. package/dist/client/assets/{connection-form-helpers-DSpcP1Dc.js → connection-form-helpers-B1Gfuz6v.js} +1 -1
  120. package/dist/client/assets/{connections-C7W7axzQ.js → connections-BE_Q0OgI.js} +1 -1
  121. package/dist/client/assets/{create-organization-dialog-DBxZ2XGo.js → create-organization-dialog-CNW2-tLc.js} +1 -1
  122. package/dist/client/assets/{decofile-api-CAHmkQlU.js → decofile-api-DvonsyVe.js} +1 -1
  123. package/dist/client/assets/{decopilot-BnOOn6v6.js → decopilot-_2aHa55x.js} +1 -1
  124. package/dist/client/assets/{dialog-BTnr_AVV.js → dialog-O_WsqGxK.js} +1 -1
  125. package/dist/client/assets/{discover-U5K5oM8Q.js → discover-DNKxCZwb.js} +1 -1
  126. package/dist/client/assets/{domain-settings-CzbkVMPe.js → domain-settings-9s0IWIG1.js} +1 -1
  127. package/dist/client/assets/{download-app-dialog-nvCUSnk2.js → download-app-dialog-DJrde0mx.js} +1 -1
  128. package/dist/client/assets/{drawer-D6LfOfIo.js → drawer-DmWpiePK.js} +1 -1
  129. package/dist/client/assets/{editor-BqmQJegj.js → editor-bajIdLtD.js} +1 -1
  130. package/dist/client/assets/{empty-state-DMmxHRTF.js → empty-state-Atjx1U2W.js} +1 -1
  131. package/dist/client/assets/{empty-state-DMiHCSxy.js → empty-state-DYH2UztF.js} +1 -1
  132. package/dist/client/assets/{extract-connection-data-CZjdLMbg.js → extract-connection-data-C8tfLeRY.js} +1 -1
  133. package/dist/client/assets/{feature-gate-ByUUxxIv.js → feature-gate-C5gwa5Kb.js} +1 -1
  134. package/dist/client/assets/{feature-paywall-C9xFi1nx.js → feature-paywall-C7OuLsbm.js} +1 -1
  135. package/dist/client/assets/{file-explorer-DmorIYyd.js → file-explorer-6H1B3qt6.js} +1 -1
  136. package/dist/client/assets/{file-preview-DG6yyUI3.js → file-preview-BiHR6COU.js} +1 -1
  137. package/dist/client/assets/{file-share-button-B2dbicF1.js → file-share-button-C5XfrmpE.js} +1 -1
  138. package/dist/client/assets/{file-type-icon-BkowPfFv.js → file-type-icon-D6rUMGA4.js} +1 -1
  139. package/dist/client/assets/{folder-icon-D4_mI7nX.js → folder-icon-B_bfB1iq.js} +1 -1
  140. package/dist/client/assets/{form-Cs0YGgAz.js → form-Db0Tj8hF.js} +1 -1
  141. package/dist/client/assets/{gateway-client-D0N_12qS.js → gateway-client-pQEk_YWf.js} +1 -1
  142. package/dist/client/assets/{general-C7u2nzrT.js → general-BVSSoQ2s.js} +1 -1
  143. package/dist/client/assets/{github-icon-BuR6fL8l.js → github-icon-DO6paY-Y.js} +1 -1
  144. package/dist/client/assets/{home-DVyMZFQG.js → home-B5QgEHQi.js} +1 -1
  145. package/dist/client/assets/{hooks-CZw8Nj9H.js → hooks-D5xL0VD-.js} +1 -1
  146. package/dist/client/assets/{hooks-BIIUffrO.js → hooks-Dyt2S900.js} +1 -1
  147. package/dist/client/assets/{icon-button-ffXmg1OC.js → icon-button-bkQbZIJx.js} +1 -1
  148. package/dist/client/assets/{index-BYhU0OAw.js → index-3wu9QSuh.js} +1 -1
  149. package/dist/client/assets/{index-DbCXB6UC.js → index-B1H3xTcC.js} +1 -1
  150. package/dist/client/assets/{index-CJvGo7M-.js → index-B9KXIX84.js} +2 -2
  151. package/dist/client/assets/{index-IKyehAj0.js → index-BEBsD_Uj.js} +1 -1
  152. package/dist/client/assets/{index-CwPMc6DD.js → index-BFBOXOd5.js} +1 -1
  153. package/dist/client/assets/{index-DqJtHo4n.js → index-BMguGW4R.js} +1 -1
  154. package/dist/client/assets/{index-P6xk5T3b.js → index-CcCENa4K.js} +1 -1
  155. package/dist/client/assets/{index-cLR8hRUZ.js → index-CcStfLcS.js} +1 -1
  156. package/dist/client/assets/{index-R-0H4aXt.js → index-Cqfo3dLZ.js} +1 -1
  157. package/dist/client/assets/{index-CC4ky7Bt.js → index-D-HNn6NY.js} +1 -1
  158. package/dist/client/assets/{index-DnfITnHh.js → index-DTD6MU_-.js} +1 -1
  159. package/dist/client/assets/{index-BSqcExWu.js → index-DXPgJ5pN.js} +1 -1
  160. package/dist/client/assets/{index-Bo1CTi_x.js → index-TQAMEK3-.js} +1 -1
  161. package/dist/client/assets/{index-B0qiS0Xy.js → index-ew-hZs-T.js} +1 -1
  162. package/dist/client/assets/{index-redirect-UW05aF5k.js → index-redirect-DtXP9nXs.js} +1 -1
  163. package/dist/client/assets/{infiniteQueryObserver-Co_jht2h.js → infiniteQueryObserver-DrVVQrbK.js} +1 -1
  164. package/dist/client/assets/{infra-billing-BNNb1HUT.js → infra-billing-7wcYScSW.js} +1 -1
  165. package/dist/client/assets/{input-DmhYaSfN.js → input-ALPFLjGK.js} +1 -1
  166. package/dist/client/assets/{input-CW1e_IGW.js → input-BlBczlUj.js} +1 -1
  167. package/dist/client/assets/{input-ctnVSOTh.js → input-DLqUDU4v.js} +1 -1
  168. package/dist/client/assets/{integration-icon-DBmxvUTr.js → integration-icon-BDlRT6Oh.js} +1 -1
  169. package/dist/client/assets/{label-4VvccInH.js → label-CeYXCWIS.js} +1 -1
  170. package/dist/client/assets/{last-preview-page-CvHaNJZf.js → last-preview-page-Pa_m-NGp.js} +1 -1
  171. package/dist/client/assets/{layout-YtNzwgmw.js → layout-2OR9C3vu.js} +1 -1
  172. package/dist/client/assets/{legacy-agents-deep-D_WKz4Q4.js → legacy-agents-deep-BXlfHsnP.js} +1 -1
  173. package/dist/client/assets/{legacy-main-redirect-Cuoc1Q6w.js → legacy-main-redirect-CXr4DIMg.js} +1 -1
  174. package/dist/client/assets/{library-C5hSt5jS.js → library-DC1sHBtK.js} +1 -1
  175. package/dist/client/assets/{login-BHMe1ZN5.js → login-ETcUXX8b.js} +1 -1
  176. package/dist/client/assets/{markdown-DgiLeH6x.js → markdown-BHnqyTep.js} +1 -1
  177. package/dist/client/assets/{mcp-app-renderer-Dpmk1Vv4.js → mcp-app-renderer-CN7HJqgc.js} +1 -1
  178. package/dist/client/assets/{mcp-oauth-C2J7M1Qy.js → mcp-oauth-DBcvf4Gv.js} +1 -1
  179. package/dist/client/assets/{members-DZUeyWSF.js → members-CKovzLZm.js} +1 -1
  180. package/dist/client/assets/{message-templates-DEiaR-4t.js → message-templates-CVWApNdw.js} +1 -1
  181. package/dist/client/assets/{mini-report-page-DZ2brjJR.js → mini-report-page-D75y78PO.js} +1 -1
  182. package/dist/client/assets/{mock-board-C3-S11yK.js → mock-board-CKKlMTR7.js} +3 -3
  183. package/dist/client/assets/{monaco-editor-CWYBB1Jc.js → monaco-editor-sTKHVHs7.js} +1 -1
  184. package/dist/client/assets/{monitoring-stats-row-BIOo_dNd.js → monitoring-stats-row-CFvcs0FY.js} +1 -1
  185. package/dist/client/assets/{multi-select-CQmA6upg.js → multi-select-bTG-_3iX.js} +1 -1
  186. package/dist/client/assets/{mustache-CCIaSVE8.js → mustache-D5HgeK1D.js} +1 -1
  187. package/dist/client/assets/{oauth-callback-JKin_sKW.js → oauth-callback-BQGhxVdk.js} +1 -1
  188. package/dist/client/assets/{oauth-callback-ai-provider-CVBe8y5A.js → oauth-callback-ai-provider-9WlNwZ-4.js} +1 -1
  189. package/dist/client/assets/{onboarding-CiuzJ17Q.js → onboarding-TK-D_Eg-.js} +1 -1
  190. package/dist/client/assets/{optimistic-project-sidebar-views-B1t6VhD_.js → optimistic-project-sidebar-views-BuKbcQgt.js} +1 -1
  191. package/dist/client/assets/{org-file-open-context-BpKzz2X6.js → org-file-open-context-DNQMuR7f.js} +1 -1
  192. package/dist/client/assets/{organization-choice-DtGmLZl3.js → organization-choice-O0bt4mln.js} +1 -1
  193. package/dist/client/assets/{orgs-C7GJQT2F.js → orgs-Dv-imO9p.js} +1 -1
  194. package/dist/client/assets/{page-seo-form-CJEF56bx.js → page-seo-form-Biw0BL9j.js} +1 -1
  195. package/dist/client/assets/{pair-B42JzU0G.js → pair-B2IVuWLB.js} +1 -1
  196. package/dist/client/assets/{plan-ladder-DZj3EnLg.js → plan-ladder-CCULPA3j.js} +1 -1
  197. package/dist/client/assets/{popover-Dc6K6r1C.js → popover-Wvqr_2yR.js} +1 -1
  198. package/dist/client/assets/{post-calendar-CdMKYMS2.js → post-calendar-a5E2qOG-.js} +1 -1
  199. package/dist/client/assets/{post-editor-my4ezea6.js → post-editor-DFx-26e8.js} +1 -1
  200. package/dist/client/assets/{preview-content-CziYH8nP.js → preview-content-BCd4V54J.js} +1 -1
  201. package/dist/client/assets/{preview-dialog-DDwPGbj2.js → preview-dialog-ClD44N_y.js} +1 -1
  202. package/dist/client/assets/{primitives-BeUcpT_l.js → primitives-byxT-Ui7.js} +1 -1
  203. package/dist/client/assets/{profile-BOKysRT9.js → profile-9uJoAI6f.js} +1 -1
  204. package/dist/client/assets/{project-app-view-CRETWS5_.js → project-app-view-XjFGHkML.js} +1 -1
  205. package/dist/client/assets/{project-feed-DnXMTyTK.js → project-feed-B4oD-iPW.js} +1 -1
  206. package/dist/client/assets/{project-icon-CQHpgqjE.js → project-icon-BFHg-quI.js} +1 -1
  207. package/dist/client/assets/project-reports-zGc7Q3TI.js +1 -0
  208. package/dist/client/assets/project-tasks-DqoKheUq.js +1 -0
  209. package/dist/client/assets/{prompts-Buirx6sq.js → prompts-D6Qoh4zQ.js} +1 -1
  210. package/dist/client/assets/record-editor-jLe9lZIe.js +1 -0
  211. package/dist/client/assets/{redirect-editor-T_gO2ARt.js → redirect-editor-CnOUBdx5.js} +1 -1
  212. package/dist/client/assets/{reports-D29xfPX4.js → reports-D6i3xT-r.js} +1 -1
  213. package/dist/client/assets/{reports-onboarding-Cd6ZQZfG.js → reports-onboarding-BJ3gF8Jt.js} +1 -1
  214. package/dist/client/assets/reports-r1Z-LWUs.js +1 -0
  215. package/dist/client/assets/{reports-tab-C8QCg1Zh.js → reports-tab-DXNb57Ao.js} +2 -2
  216. package/dist/client/assets/{repositories-eEvxM93v.js → repositories-BXIZ-orB.js} +1 -1
  217. package/dist/client/assets/{repository-import-picker-CYhmnGT6.js → repository-import-picker-BomeZ4YD.js} +1 -1
  218. package/dist/client/assets/{repository-picker-CJrIw77i.js → repository-picker-Bpcr10QR.js} +1 -1
  219. package/dist/client/assets/{require-capability-CQeOwSD4.js → require-capability-B5vhBt9u.js} +1 -1
  220. package/dist/client/assets/{required-auth-layout-CE8AnY1F.js → required-auth-layout-CyCpjrfs.js} +1 -1
  221. package/dist/client/assets/{reset-password-DFPIxqxe.js → reset-password-B2Z9lfbJ.js} +1 -1
  222. package/dist/client/assets/{resizable-C4Edp607.js → resizable-X9aB8eM5.js} +1 -1
  223. package/dist/client/assets/{review-settings-CbjseDbt.js → review-settings-c3E6ViNV.js} +1 -1
  224. package/dist/client/assets/{rich-text-link-control-Do2n6JIO.js → rich-text-link-control-DLGtga8b.js} +1 -1
  225. package/dist/client/assets/{roles-CJoQe-iA.js → roles-DPfRfWCB.js} +1 -1
  226. package/dist/client/assets/{route-DFFPgrtv.js → route-Cvx3z9KR.js} +1 -1
  227. package/dist/client/assets/{route-euoZW6b2.js → route-DtNPEkNV.js} +1 -1
  228. package/dist/client/assets/{route-wRSR0-RQ.js → route-cbFwKoF4.js} +1 -1
  229. package/dist/client/assets/{route-page-header-CEYsqpu_.js → route-page-header-Dr10DLhY.js} +1 -1
  230. package/dist/client/assets/{runnable-block-editor-Bm9IpSRw.js → runnable-block-editor-Luwb6lXF.js} +1 -1
  231. package/dist/client/assets/{sandbox-lifecycle-context-CFfKpmMd.js → sandbox-lifecycle-context-CHjp6hDX.js} +1 -1
  232. package/dist/client/assets/{schema--090tLTs.js → schema-CdJJOHN7.js} +1 -1
  233. package/dist/client/assets/{scroll-area-DaAnCQrg.js → scroll-area-DiE2RXUS.js} +1 -1
  234. package/dist/client/assets/{search-input-Cq2H58ks.js → search-input-MsiE4xnC.js} +1 -1
  235. package/dist/client/assets/{search-toggle-BzE09wAY.js → search-toggle-BujrzbmS.js} +1 -1
  236. package/dist/client/assets/{secret-picker-FNqMA4b3.js → secret-picker-BOvhv2JQ.js} +1 -1
  237. package/dist/client/assets/{secrets-B79xiOvr.js → secrets-CpJVBw79.js} +1 -1
  238. package/dist/client/assets/{sections-editor-Bch82FO0.js → sections-editor-DDnlJ9KQ.js} +1 -1
  239. package/dist/client/assets/{select-_7jCWmPs.js → select-BmpMhuXU.js} +1 -1
  240. package/dist/client/assets/{select-model-C991WVaS.js → select-model-Cqn2WNWa.js} +1 -1
  241. package/dist/client/assets/{seo-editor-COzsrOm2.js → seo-editor-1A35EHVT.js} +1 -1
  242. package/dist/client/assets/{separator-CTDFfWkU.js → separator-Dl5b3JZz.js} +1 -1
  243. package/dist/client/assets/{settings-tab-OQmnW7Ut.js → settings-tab-CJkqi9sH.js} +1 -1
  244. package/dist/client/assets/{sheet-fXc9nA9M.js → sheet-B0Sr1nwg.js} +1 -1
  245. package/dist/client/assets/{shell-layout-CFgBlrHw.js → shell-layout-BA4WahT2.js} +1 -1
  246. package/dist/client/assets/{sidebar-CD_qlBS1.js → sidebar-DGGwKufn.js} +1 -1
  247. package/dist/client/assets/{skill-preview-iGSQpWTN.js → skill-preview-D99Hmxpn.js} +1 -1
  248. package/dist/client/assets/{skills-Bo3AuN87.js → skills-DusNUug_.js} +1 -1
  249. package/dist/client/assets/{sso-bCqIdarJ.js → sso-Q5OGwWHg.js} +1 -1
  250. package/dist/client/assets/{switch-_-H0ZzQ0.js → switch-CGGsZGg2.js} +1 -1
  251. package/dist/client/assets/{synced-repos-CJ3PDs71.js → synced-repos-disT4WD-.js} +1 -1
  252. package/dist/client/assets/{table-B0ylfHsr.js → table-p5K_r58-.js} +1 -1
  253. package/dist/client/assets/{tabs-CbBMI_3w.js → tabs-B2X-mfaO.js} +1 -1
  254. package/dist/client/assets/{task-board-BOtwbMNd.js → task-board-mTs0BkYi.js} +1 -1
  255. package/dist/client/assets/{task-route-ClDUjCmA.js → task-route-CGQF_N5D.js} +1 -1
  256. package/dist/client/assets/{task-status-DCDgnDj7.js → task-status-BfecW6Jc.js} +1 -1
  257. package/dist/client/assets/{taskboard-analytics-CiRR6YhP.js → taskboard-analytics-CtICaEUy.js} +1 -1
  258. package/dist/client/assets/{tasks-MLHolUxt.js → tasks-BAEY4_dG.js} +1 -1
  259. package/dist/client/assets/tasks-WvRRvqRc.js +1 -0
  260. package/dist/client/assets/{textarea-Pm894Vb7.js → textarea-BGjs-_ya.js} +1 -1
  261. package/dist/client/assets/{thread-button-0yNolO5U.js → thread-button-B_TrQG9B.js} +1 -1
  262. package/dist/client/assets/{thread-intent-CZ1rMWWZ.js → thread-intent-BHNHSQWV.js} +1 -1
  263. package/dist/client/assets/{thread-route-Cz0k6s-0.js → thread-route-C_KFFLE6.js} +1 -1
  264. package/dist/client/assets/{thread-route-DDyPLFny.js → thread-route-DNtSLAiW.js} +1 -1
  265. package/dist/client/assets/{thread-sheet-body-CoOlYiyz.js → thread-sheet-body-C_nRrD8j.js} +1 -1
  266. package/dist/client/assets/{toggle-group-BCKZnr8W.js → toggle-group-C66gu9FY.js} +1 -1
  267. package/dist/client/assets/{toolbar-icon-button-SVo3Fo7H.js → toolbar-icon-button-ClGr1SmO.js} +1 -1
  268. package/dist/client/assets/{tooltip-ChaEDFwp.js → tooltip-C3KYJcjJ.js} +1 -1
  269. package/dist/client/assets/{track-CO4eg07r.js → track-D48SK3WP.js} +1 -1
  270. package/dist/client/assets/{types-DOMFbfVw.js → types-CsEtlQqb.js} +1 -1
  271. package/dist/client/assets/{usage-stats-rx7t_Nos.js → usage-stats-BWbFQ6nI.js} +1 -1
  272. package/dist/client/assets/{use-ai-providers-8tdExCCT.js → use-ai-providers-CBInTetj.js} +1 -1
  273. package/dist/client/assets/{use-automations-C3DIh181.js → use-automations-DhqE5Iln.js} +1 -1
  274. package/dist/client/assets/{use-autosave-Bra0uvzP.js → use-autosave-BZ31lz42.js} +1 -1
  275. package/dist/client/assets/{use-connect-companion-Bull_Zxw.js → use-connect-companion-Cgkf5QHC.js} +1 -1
  276. package/dist/client/assets/{use-connection-_01X3r9K.js → use-connection-DNwnGnCC.js} +1 -1
  277. package/dist/client/assets/{use-copy-DYjRVCxp.js → use-copy-BaRXHXi4.js} +1 -1
  278. package/dist/client/assets/{use-create-virtual-mcp-Bj3aYXDp.js → use-create-virtual-mcp-CNiIu7cC.js} +1 -1
  279. package/dist/client/assets/{use-date-fns-locale-yvDr0D7T.js → use-date-fns-locale-CIJdwgov.js} +1 -1
  280. package/dist/client/assets/{use-debounced-autosave-DbVxH1pQ.js → use-debounced-autosave-CvGfYHrZ.js} +1 -1
  281. package/dist/client/assets/{use-debounced-value-BAx8VCR0.js → use-debounced-value-CkL-oBw0.js} +1 -1
  282. package/dist/client/assets/{use-deco-credits-yiRW4WkY.js → use-deco-credits-raOHBi_A.js} +1 -1
  283. package/dist/client/assets/{use-decopilot-events-D9jYfL-F.js → use-decopilot-events-BBmla5vN.js} +1 -1
  284. package/dist/client/assets/{use-delete-connection-C_I3mgoO.js → use-delete-connection-BaUPu_7u.js} +1 -1
  285. package/dist/client/assets/{use-deployment-admin-ByTSklJo.js → use-deployment-admin-ReJnLBFa.js} +1 -1
  286. package/dist/client/assets/{use-entitlements-C3RfsquV.js → use-entitlements-B9tTc-Ev.js} +1 -1
  287. package/dist/client/assets/{use-fast-preview-draft-url-D8zl5mEv.js → use-fast-preview-draft-url-CDhB1Fq2.js} +1 -1
  288. package/dist/client/assets/{use-file-configs-DOTdJIrl.js → use-file-configs-y5ZRqVAK.js} +1 -1
  289. package/dist/client/assets/{use-in-settings-C7yJRVKh.js → use-in-settings-pVGM4OYb.js} +1 -1
  290. package/dist/client/assets/{use-infinite-scroll-D7ecDjvR.js → use-infinite-scroll-DTMvlJNU.js} +1 -1
  291. package/dist/client/assets/{use-join-requests-Ilb6bw8C.js → use-join-requests-Kpry70bT.js} +1 -1
  292. package/dist/client/assets/{use-main-panel-tabs-CnSLB640.js → use-main-panel-tabs-4N3JxcLp.js} +1 -1
  293. package/dist/client/assets/{use-mcp-auth-status-BZ3hpP0X.js → use-mcp-auth-status-DKnE_dZf.js} +1 -1
  294. package/dist/client/assets/{use-mcp-client-CNhRUvA5.js → use-mcp-client-DgXYHdq4.js} +1 -1
  295. package/dist/client/assets/{use-mcp-prompts-EbPPuTcd.js → use-mcp-prompts-BXGa38c2.js} +1 -1
  296. package/dist/client/assets/{use-mcp-tools-BPf00IDz.js → use-mcp-tools-CVoDfjIr.js} +1 -1
  297. package/dist/client/assets/{use-members-B3lGJD1d.js → use-members-BBMuBGx7.js} +1 -1
  298. package/dist/client/assets/{use-mobile-DX7VP8iK.js → use-mobile-BYkN2CBV.js} +1 -1
  299. package/dist/client/assets/{use-navigate-to-agent-g6nQp_q-.js → use-navigate-to-agent-fAaFURKA.js} +1 -1
  300. package/dist/client/assets/{use-open-billing-url-UFHRZeDE.js → use-open-billing-url-D9101_ww.js} +1 -1
  301. package/dist/client/assets/{use-org-auth-client-DbfrlNFJ.js → use-org-auth-client-gMmPeQrf.js} +1 -1
  302. package/dist/client/assets/{use-org-fs-BJVySa9m.js → use-org-fs-FICli5P0.js} +1 -1
  303. package/dist/client/assets/{use-org-repo-syncs-Bu37nqQ2.js → use-org-repo-syncs-Be5dKRHy.js} +1 -1
  304. package/dist/client/assets/{use-org-sso-BlWvz-NF.js → use-org-sso-Dbq_Rnc1.js} +1 -1
  305. package/dist/client/assets/{use-organization-roles-DE7kCN9L.js → use-organization-roles-xXXb48cX.js} +1 -1
  306. package/dist/client/assets/{use-organization-settings-BLQ6mu_F.js → use-organization-settings-C_ZfDEow.js} +1 -1
  307. package/dist/client/assets/{use-panel-navigate-BsGJc9V3.js → use-panel-navigate-Wiv5HcS5.js} +1 -1
  308. package/dist/client/assets/{use-project-native-view-presence-KEUHlmpo.js → use-project-native-view-presence-DON0VaEF.js} +1 -1
  309. package/dist/client/assets/{use-project-scope-BGBC-ayH.js → use-project-scope-bzqn-AFR.js} +1 -1
  310. package/dist/client/assets/{use-releases-CQr6l3Pj.js → use-releases-BfrGp9Ns.js} +1 -1
  311. package/dist/client/assets/{use-reports-diagnostic-CofOdWW9.js → use-reports-diagnostic-LvWG_eGZ.js} +1 -1
  312. package/dist/client/assets/{use-route-default-main-B3Le2s3e.js → use-route-default-main-BxMIgjib.js} +1 -1
  313. package/dist/client/assets/{use-secrets-C61EqNPY.js → use-secrets-CQXQ7e5K.js} +1 -1
  314. package/dist/client/assets/{use-section-preview-base-lO8EHufR.js → use-section-preview-base-DRPQTFm9.js} +1 -1
  315. package/dist/client/assets/{use-session-runtime-CJtUNfm9.js → use-session-runtime-QJbktQ89.js} +1 -1
  316. package/dist/client/assets/{use-tags-Cw8Tl4V2.js → use-tags-w04zmXlI.js} +1 -1
  317. package/dist/client/assets/{use-task-board-analytics-P3ACpavh.js → use-task-board-analytics-Da2cyRoo.js} +1 -1
  318. package/dist/client/assets/{use-task-metadata-Bh8dwwJo.js → use-task-metadata-DiRAYc7A.js} +1 -1
  319. package/dist/client/assets/{use-thread-outputs-DWb5Ffwp.js → use-thread-outputs-BBHbLuqJ.js} +1 -1
  320. package/dist/client/assets/{use-virtual-mcp-DYsZ_S7V.js → use-virtual-mcp-CijpHWeY.js} +1 -1
  321. package/dist/client/assets/useInfiniteQuery-yhr2eVB6.js +1 -0
  322. package/dist/client/assets/{useQueries-BkAl2Nho.js → useQueries-0w4KxC3A.js} +1 -1
  323. package/dist/client/assets/useSuspenseInfiniteQuery-D4wrf6ZX.js +1 -0
  324. package/dist/client/assets/{users-D9VRrUZq.js → users-6Ayldnit.js} +1 -1
  325. package/dist/client/assets/{utils-SncAWk77.js → utils-D_eBTbjc.js} +1 -1
  326. package/dist/client/assets/{variant-calendar-Bc7nrgXK.js → variant-calendar-C5cziu6r.js} +1 -1
  327. package/dist/client/assets/{variant-matcher-override-B6vu1CuI.js → variant-matcher-override-GL2lvgp-.js} +1 -1
  328. package/dist/client/assets/{view-mode-toggle-BaA42o_l.js → view-mode-toggle-C2y3stN0.js} +1 -1
  329. package/dist/client/assets/{virtual-mcp-C32FiGUT.js → virtual-mcp-BrketPQW.js} +1 -1
  330. package/dist/client/index.html +1 -1
  331. package/dist/server/cli.js +2 -2
  332. package/dist/server/server.js +2 -2
  333. package/package.json +1 -1
  334. package/dist/client/assets/agent-app-Br6aux_w.js +0 -1
  335. package/dist/client/assets/agent-deck-Vhc8akKy.js +0 -1
  336. package/dist/client/assets/agent-file-BJobJMYY.js +0 -1
  337. package/dist/client/assets/agent-library-file-SIskwRA5.js +0 -1
  338. package/dist/client/assets/agent-settings-CzdAFelD.js +0 -1
  339. package/dist/client/assets/agent-site-editor-code-tjytfPRA.js +0 -2
  340. package/dist/client/assets/agent-view-B0TeCTGP.js +0 -1
  341. package/dist/client/assets/api-keys-BdpkM46E.js +0 -1
  342. package/dist/client/assets/app-editor-C3rD0azc.js +0 -1
  343. package/dist/client/assets/project-reports-D_REhIUx.js +0 -1
  344. package/dist/client/assets/project-tasks-CCtFBWbk.js +0 -1
  345. package/dist/client/assets/record-editor-CvRbpNqI.js +0 -1
  346. package/dist/client/assets/reports-CyGj47MI.js +0 -1
  347. package/dist/client/assets/tasks-pXX1X4bj.js +0 -1
  348. package/dist/client/assets/useInfiniteQuery-ChD58h72.js +0 -1
  349. package/dist/client/assets/useSuspenseInfiniteQuery-C9oYMcau.js +0 -1
@@ -2105,7 +2105,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var D8$=L(()=>{Ch()});f
2105
2105
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${G}/${K}, keeping in old table`);continue}}await Yl`
2106
2106
  DELETE FROM kysely_migration WHERE name = ${Q}
2107
2107
  `.execute($)}}async function pZ$($){await u34($),await l34($);let Z=new dZ$({db:$,provider:{getMigrations:()=>Promise.resolve(i01)}}),{error:Q,results:X}=await Z.migrateToLatest(),Y=0;if(X?.forEach((J)=>{if(J.status==="Success")Y++;else if(J.status==="Error")console.error(`Failed to execute migration "${J.migrationName}"`)}),Q)throw console.error("Failed to migrate"),console.error(Q),Q;return Y}async function c34($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await Xa0();let J=Q??K8(),G=async()=>{if(!Z&&!Q)await bD(J).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await pZ$(J.db);return await G(),{betterAuth:Y,kysely:K}}catch(K){throw await G(),K}}async function m34(){let $=K8(),Z=new dZ$({db:$.db,provider:{getMigrations:()=>Promise.resolve(i01)}}),{error:Q,results:X}=await Z.migrateDown();if(X?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),Q)throw console.error("Failed to rollback migration"),console.error(Q),Q}var tZ$=L(()=>{mZ$();Ya0();NX()});async function oG0($){let Z={...process.env},Q=gZ0($,Z);console.log(jI1(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?t4$(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (aJ0(),oJ0)),{outputs:J,services:G}=await Y({home:Q.settings.dataDir,externalDatabaseUrl:Q.externalDatabaseUrl,externalNatsUrl:Q.externalNatsUrl});if(!Q.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Ya0(),a4$));await W(J.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (NX(),N4$)),{migrateToLatest:F}=await Promise.resolve().then(() => (tZ$(),nZ$)),U=H(J.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...Q.settings,betterAuthSecret:X,databaseUrl:J.databaseUrl,natsUrls:J.natsUrls,...J.s3?{s3Endpoint:J.s3.endpoint,s3Bucket:J.s3.bucket,s3AccessKeyId:J.s3.accessKeyId,s3SecretAccessKey:J.s3.secretAccessKey,s3ForcePathStyle:J.s3.forcePathStyle}:{}};return w8$(K),{settings:K,services:G.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:G.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var p01=L(()=>{Ch();o4$();H$()});var sZ$={};W0(sZ$,{updateService:()=>oP,subscribeCliState:()=>o01,setTuiConsoleIntercepted:()=>aG0,setServerUrl:()=>ya,setMigrationsDone:()=>ba,setDevMode:()=>i34,resetCliStateForTests:()=>d34,isTuiConsoleIntercepted:()=>rG0,getCliState:()=>t01,addLogEntry:()=>cD});function oZ$(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function aZ$(){return{services:oZ$(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function d34(){JJ=aZ$()}function fa(){for(let $ of n01)$()}function t01(){return JJ}function o01($){return n01.add($),()=>n01.delete($)}function oP($){JJ={...JJ,services:JJ.services.map((Z)=>Z.name===$.name?$:Z)},fa()}function ba(){JJ={...JJ,migrationsStatus:"done"},fa()}function ya($){JJ={...JJ,serverUrl:$},fa()}function cD($){let Z=[...JJ.logs,$];JJ={...JJ,logs:Z.length>500?Z.slice(-500):Z},fa()}function i34(){JJ={...JJ,services:[...oZ$(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},fa()}function aG0($){rZ$=$}function rG0(){return rZ$}var JJ,n01,rZ$=!1;var aP=L(()=>{JJ=aZ$();n01=new Set});import{createServer as eZ$}from"net";function p34($){return new Promise((Z)=>{let Q=eZ$();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function ga($){if(await p34($))return $;let Z=await new Promise((Q,X)=>{let Y=eZ$();Y.once("error",X),Y.listen(0,"0.0.0.0",()=>{let J=Y.address(),G=typeof J==="object"&&J?J.port:0;Y.close(()=>Q(G))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var a01=()=>{};var s01={};W0(s01,{startDevServer:()=>t34,pipeToLogStore:()=>r01});import{join as n34}from"path";function r01($){let Z=$.getReader(),Q=new TextDecoder,X="";function Y(){let J=X.split(`
2108
- `);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;cD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)cD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function t34($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await ga(Number(Y)+1):await ga(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await oG0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)oP({name:D.name,status:"ready",port:D.port});ba();let F=n34(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:J,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)r01(N.stdout),r01(N.stderr);ya(J),oP({name:"Vite",status:"ready",port:Number(Y)}),oP({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (aJ0(),oJ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var e01=L(()=>{p01();aP();a01()});var sG0;var $11=L(()=>{sG0={name:"decocms",version:"4.390.4",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"}}});import{Box as a34,Text as $7$}from"ink";import{jsx as r34,jsxs as Z7$}from"react/jsx-runtime";function Q7$({version:$}){return Z7$(a34,{flexDirection:"column",marginTop:1,children:[EG0.map((Z,Q)=>r34($7$,{color:zG0[Q],children:Z},Q)),Z7$($7$,{dimColor:!0,children:[" v",$]})]})}var X7$=L(()=>{za()});import{Box as rP,Text as mD}from"ink";import{Spinner as s34}from"@inkjs/ui";import{jsx as AG,jsxs as Jl}from"react/jsx-runtime";function Y7$({status:$}){if($==="pending")return AG(s34,{label:""});return AG(mD,{color:"green",children:"\u2713"})}function e34($){return`${$.name}: ${$.port||"...."}`}function J7$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return Jl(rP,{flexDirection:"column",paddingBottom:1,children:[AG(Q7$,{version:sG0.version}),AG(rP,{marginBottom:1,children:AG(mD,{dimColor:!0,children:"\u2500".repeat(80)})}),AG(rP,{children:Jl(mD,{dimColor:!0,children:["Home: ",Q]})}),Jl(rP,{gap:2,children:[$.map((Y)=>Jl(rP,{gap:1,children:[AG(mD,{children:e34(Y)}),AG(Y7$,{status:Y.status})]},Y.name)),Jl(rP,{gap:1,children:[AG(mD,{children:"Migrations"}),AG(Y7$,{status:Z})]})]}),AG(rP,{children:X?Jl(mD,{children:["Open in browser: ",AG(mD,{color:"cyan",children:X})]}):AG(mD,{dimColor:!0,children:"Starting..."})})]})}var G7$=L(()=>{$11();X7$()});import{Box as $K4,Text as ha}from"ink";import{jsx as Z11,jsxs as Q11}from"react/jsx-runtime";function ZK4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function K7$({logs:$}){return Z11($K4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return Z11(ha,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Q11(ha,{children:[Q11(ha,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Z11(ha,{color:ZK4(Z.status),children:Z.status}),Q11(ha,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var W7$=()=>{};var X11={};W0(X11,{App:()=>YK4});import{Box as QK4}from"ink";import{useSyncExternalStore as XK4}from"react";import{jsx as H7$,jsxs as JK4}from"react/jsx-runtime";function YK4({home:$}){let Z=XK4(o01,t01);return JK4(QK4,{flexDirection:"column",children:[H7$(J7$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),H7$(K7$,{logs:Z.logs})]})}var Y11=L(()=>{G7$();W7$();aP()});var $K="thread-gate",qB="decopilot-hosted-harness",MB="decopilot-hosted-harness-sandboxed",ZK="automations",dD="background-tools",sP="task-board-github-reads";var F7$="13";function U7$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:F7$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var N7$=()=>{};import GK4 from"pg";async function L7$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=KK4}=$,Y=$.log??((W)=>console.log(W)),J=new GK4.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[B7$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await k$(WK4)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[B7$.toString()])}catch{}await J.end().catch(()=>{})}}var B7$=8314027461559302n,KK4=600000,WK4=500;var O7$=L(()=>{w8()});function HK4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function J11($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function D7$(){let $=HK4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:J11($,"--cpu-prof-dir")??process.cwd(),name:J11($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(J11($,"--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.'}))}function w7$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=iP();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={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,...X}))};return Z().catch(()=>{}),eG0=setInterval(()=>void Z().catch(()=>{}),$),eG0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(eG0)clearInterval(eG0)}}var eG0;var j7$=()=>{};import*as FK4 from"bun:jsc";function E7$(){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{UK4()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=NK4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){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??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.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:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var UK4,NK4;var z7$=L(()=>{({startSamplingProfiler:UK4,samplingProfilerStackTraces:NK4}=FK4)});function P7$(){D7$();let $=[w7$(),Y4$(),E7$()];return()=>{for(let Z of $)Z()}}var T7$=L(()=>{oo0();j7$();z7$()});var eP=b((A7$)=>{Object.defineProperty(A7$,"__esModule",{value:!0});A7$.RepublishHeaders=A7$.DirectMsgHeaders=A7$.JsHeaders=A7$.AdvisoryKind=void 0;A7$.isOrderedPushConsumerOptions=BK4;A7$.isPullConsumer=LK4;A7$.isPushConsumer=OK4;A7$.isBoundPushConsumerOptions=DK4;function BK4($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function LK4($){return $.isPullConsumer()}function OK4($){return $.isPushConsumer()}function DK4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}A7$.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};A7$.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};A7$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};A7$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var RG=b((q7$)=>{Object.defineProperty(q7$,"__esModule",{value:!0});q7$.TD=q7$.TE=q7$.Empty=void 0;q7$.encode=qK4;q7$.decode=MK4;q7$.Empty=new Uint8Array(0);q7$.TE=new TextEncoder;q7$.TD=new TextDecoder;function RK4(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function qK4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(q7$.TE.encode($[Q]));if(Z.length===0)return q7$.Empty;if(Z.length===1)return Z[0];return RK4(...Z)}function MK4($){if(!$||$.length===0)return"";return q7$.TD.decode($)}});var qG=b((V7$)=>{Object.defineProperty(V7$,"__esModule",{value:!0});V7$.errors=V7$.PermissionViolationError=V7$.NoRespondersError=V7$.TimeoutError=V7$.RequestError=V7$.ProtocolError=V7$.ConnectionError=V7$.DrainingConnectionError=V7$.ClosedConnectionError=V7$.AuthorizationError=V7$.UserAuthenticationExpiredError=V7$.InvalidOperationError=V7$.InvalidArgumentError=V7$.InvalidSubjectError=void 0;class K11 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}V7$.InvalidSubjectError=K11;class $30 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new $30(`${$} ${Z}`,Q)}}V7$.InvalidArgumentError=$30;class W11 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}V7$.InvalidOperationError=W11;class Z30 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new Z30($);return null}}V7$.UserAuthenticationExpiredError=Z30;class Q30 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new Q30($);return null}}V7$.AuthorizationError=Q30;class H11 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}V7$.ClosedConnectionError=H11;class F11 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}V7$.DrainingConnectionError=F11;class U11 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}V7$.ConnectionError=U11;class N11 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}V7$.ProtocolError=N11;class B11 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof X30}}V7$.RequestError=B11;class L11 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}V7$.TimeoutError=L11;class X30 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}V7$.NoRespondersError=X30;class Y30 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new Y30($,Q,X,Y)}}V7$.PermissionViolationError=Y30;V7$.errors={AuthorizationError:Q30,ClosedConnectionError:H11,ConnectionError:U11,DrainingConnectionError:F11,InvalidArgumentError:$30,InvalidOperationError:W11,InvalidSubjectError:K11,NoRespondersError:X30,PermissionViolationError:Y30,ProtocolError:N11,RequestError:B11,TimeoutError:L11,UserAuthenticationExpiredError:Z30}});var yW=b((v7$)=>{Object.defineProperty(v7$,"__esModule",{value:!0});v7$.SimpleMutex=v7$.Perf=void 0;v7$.extend=mK4;v7$.render=dK4;v7$.timeout=iK4;v7$.delay=pK4;v7$.deadline=nK4;v7$.deferred=D11;v7$.debugDeferred=tK4;v7$.shuffle=oK4;v7$.collect=aK4;v7$.jitter=_7$;v7$.backoff=rK4;v7$.nanos=sK4;v7$.millis=eK4;v7$.randomToken=QW4;var cK4=RG(),O11=qG();function mK4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function dK4($){return cK4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function iK4($,Z=!0){let Q=Z?new O11.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new O11.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function pK4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function nK4($,Z=1000){let Q=D11(),X=setTimeout(()=>{Q.reject(new O11.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function D11(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function tK4(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function oK4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function aK4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class S7${timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}v7$.Perf=S7$;class C7${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=D11();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}v7$.SimpleMutex=C7$;function _7$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function rK4($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return _7$(Q>Z?$[Z]:$[Q])}}}function sK4($){return $*1e6}function eK4($){return Math.floor($/1e6)}var $W4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",IB=new Uint8Array(62);for(let $=0;$<62;$++)IB[$]=$W4.charCodeAt($);var ZW4=218340105584896;function QW4(){let $=Math.floor(Math.random()*ZW4),Z=$%62,Q=IB[Z];$=($-Z)/62,Z=$%62;let X=IB[Z];$=($-Z)/62,Z=$%62;let Y=IB[Z];$=($-Z)/62,Z=$%62;let J=IB[Z];$=($-Z)/62,Z=$%62;let G=IB[Z];$=($-Z)/62,Z=$%62;let K=IB[Z];$=($-Z)/62,Z=$%62;let W=IB[Z];$=($-Z)/62;let H=IB[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var l7$=b((h7$)=>{Object.defineProperty(h7$,"__esModule",{value:!0});h7$.nuid=h7$.NuidImpl=void 0;var jW4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",iD=62,G30=12,y7$=10,f7$=33,EW4=333,b7$=G30+y7$,j11=new Uint8Array(iD);for(let $=0;$<iD;$++)j11[$]=jW4.charCodeAt($);var J30=4294967296,g7$=BigInt(iD)**BigInt(y7$),ua=Number(g7$/(1n<<32n)),w11=Number(g7$%(1n<<32n));function zW4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function PW4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else zW4($)}class E11{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(b7$),this.cbuf=new Uint8Array(G30),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(ua+1)),this.seqLo=Math.floor(Math.random()*J30);while($++<8&&this.seqHi===ua&&this.seqLo>=w11);if(this.seqHi===ua&&this.seqLo>=w11)this.seqLo=0;this.inc=Math.random()*(EW4-f7$)+f7$|0}setPre(){PW4(this.cbuf);for(let $=0;$<G30;$++)this.buf[$]=j11[this.cbuf[$]%iD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=b7$-1;Q>=G30;Q--){let X=Math.floor($/iD),J=($-X*iD)*J30+Z,G=Math.floor(J/iD),K=J-G*iD;this.buf[Q]=j11[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=J30)this.seqLo-=J30,this.seqHi+=1;if(this.seqHi>ua||this.seqHi===ua&&this.seqLo>=w11)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}h7$.NuidImpl=E11;h7$.nuid=new E11});var i7$=b((m7$)=>{Object.defineProperty(m7$,"__esModule",{value:!0});m7$.nuid=m7$.Nuid=void 0;var c7$=l7$();m7$.Nuid=c7$.NuidImpl;m7$.nuid=c7$.nuid});var W30=b((K30)=>{Object.defineProperty(K30,"__esModule",{value:!0});K30.nuid=K30.Nuid=void 0;var p7$=i7$();Object.defineProperty(K30,"Nuid",{enumerable:!0,get:function(){return p7$.Nuid}});Object.defineProperty(K30,"nuid",{enumerable:!0,get:function(){return p7$.nuid}})});var pD=b((n7$)=>{Object.defineProperty(n7$,"__esModule",{value:!0});n7$.DEFAULT_HOST=n7$.DEFAULT_PORT=n7$.Match=void 0;n7$.syncIterator=IW4;n7$.createInbox=VW4;var qW4=W30(),MW4=qG();n7$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function IW4($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function VW4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw MW4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${qW4.nuid.next()}`}n7$.DEFAULT_PORT=4222;n7$.DEFAULT_HOST="127.0.0.1"});var la=b((r7$)=>{Object.defineProperty(r7$,"__esModule",{value:!0});r7$.DataBuffer=void 0;var o7$=RG();class a7${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return o7$.TE.encode($)}static toAscii($){return o7$.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}r7$.DataBuffer=a7$});var $T=b(($Q$)=>{Object.defineProperty($Q$,"__esModule",{value:!0});$Q$.LF=$Q$.CR=$Q$.CRLF=$Q$.CR_LF_LEN=$Q$.CR_LF=void 0;$Q$.setTransportFactory=bW4;$Q$.defaultPort=yW4;$Q$.getUrlParseFn=gW4;$Q$.newTransport=hW4;$Q$.getResolveFn=uW4;$Q$.protoLen=e7$;$Q$.extractProtocolMessage=lW4;var vW4=RG(),xW4=pD(),fW4=la(),MG;function bW4($){MG=$}function yW4(){return MG!==void 0&&MG.defaultPort!==void 0?MG.defaultPort:xW4.DEFAULT_PORT}function gW4(){return MG!==void 0&&MG.urlParseFn?MG.urlParseFn:void 0}function hW4(){if(!MG||typeof MG.factory!=="function")throw Error("transport fn is not set");return MG.factory()}function uW4(){return MG!==void 0&&MG.dnsResolveFn?MG.dnsResolveFn:void 0}$Q$.CR_LF=`\r
2108
+ `);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;cD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)cD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function t34($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await ga(Number(Y)+1):await ga(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await oG0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)oP({name:D.name,status:"ready",port:D.port});ba();let F=n34(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:J,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)r01(N.stdout),r01(N.stderr);ya(J),oP({name:"Vite",status:"ready",port:Number(Y)}),oP({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (aJ0(),oJ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var e01=L(()=>{p01();aP();a01()});var sG0;var $11=L(()=>{sG0={name:"decocms",version:"4.390.5",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"}}});import{Box as a34,Text as $7$}from"ink";import{jsx as r34,jsxs as Z7$}from"react/jsx-runtime";function Q7$({version:$}){return Z7$(a34,{flexDirection:"column",marginTop:1,children:[EG0.map((Z,Q)=>r34($7$,{color:zG0[Q],children:Z},Q)),Z7$($7$,{dimColor:!0,children:[" v",$]})]})}var X7$=L(()=>{za()});import{Box as rP,Text as mD}from"ink";import{Spinner as s34}from"@inkjs/ui";import{jsx as AG,jsxs as Jl}from"react/jsx-runtime";function Y7$({status:$}){if($==="pending")return AG(s34,{label:""});return AG(mD,{color:"green",children:"\u2713"})}function e34($){return`${$.name}: ${$.port||"...."}`}function J7$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return Jl(rP,{flexDirection:"column",paddingBottom:1,children:[AG(Q7$,{version:sG0.version}),AG(rP,{marginBottom:1,children:AG(mD,{dimColor:!0,children:"\u2500".repeat(80)})}),AG(rP,{children:Jl(mD,{dimColor:!0,children:["Home: ",Q]})}),Jl(rP,{gap:2,children:[$.map((Y)=>Jl(rP,{gap:1,children:[AG(mD,{children:e34(Y)}),AG(Y7$,{status:Y.status})]},Y.name)),Jl(rP,{gap:1,children:[AG(mD,{children:"Migrations"}),AG(Y7$,{status:Z})]})]}),AG(rP,{children:X?Jl(mD,{children:["Open in browser: ",AG(mD,{color:"cyan",children:X})]}):AG(mD,{dimColor:!0,children:"Starting..."})})]})}var G7$=L(()=>{$11();X7$()});import{Box as $K4,Text as ha}from"ink";import{jsx as Z11,jsxs as Q11}from"react/jsx-runtime";function ZK4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function K7$({logs:$}){return Z11($K4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return Z11(ha,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Q11(ha,{children:[Q11(ha,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Z11(ha,{color:ZK4(Z.status),children:Z.status}),Q11(ha,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var W7$=()=>{};var X11={};W0(X11,{App:()=>YK4});import{Box as QK4}from"ink";import{useSyncExternalStore as XK4}from"react";import{jsx as H7$,jsxs as JK4}from"react/jsx-runtime";function YK4({home:$}){let Z=XK4(o01,t01);return JK4(QK4,{flexDirection:"column",children:[H7$(J7$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),H7$(K7$,{logs:Z.logs})]})}var Y11=L(()=>{G7$();W7$();aP()});var $K="thread-gate",qB="decopilot-hosted-harness",MB="decopilot-hosted-harness-sandboxed",ZK="automations",dD="background-tools",sP="task-board-github-reads";var F7$="13";function U7$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:F7$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var N7$=()=>{};import GK4 from"pg";async function L7$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=KK4}=$,Y=$.log??((W)=>console.log(W)),J=new GK4.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[B7$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await k$(WK4)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[B7$.toString()])}catch{}await J.end().catch(()=>{})}}var B7$=8314027461559302n,KK4=600000,WK4=500;var O7$=L(()=>{w8()});function HK4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function J11($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function D7$(){let $=HK4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:J11($,"--cpu-prof-dir")??process.cwd(),name:J11($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(J11($,"--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.'}))}function w7$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=iP();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={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,...X}))};return Z().catch(()=>{}),eG0=setInterval(()=>void Z().catch(()=>{}),$),eG0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(eG0)clearInterval(eG0)}}var eG0;var j7$=()=>{};import*as FK4 from"bun:jsc";function E7$(){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{UK4()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=NK4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){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??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.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:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var UK4,NK4;var z7$=L(()=>{({startSamplingProfiler:UK4,samplingProfilerStackTraces:NK4}=FK4)});function P7$(){D7$();let $=[w7$(),Y4$(),E7$()];return()=>{for(let Z of $)Z()}}var T7$=L(()=>{oo0();j7$();z7$()});var eP=b((A7$)=>{Object.defineProperty(A7$,"__esModule",{value:!0});A7$.RepublishHeaders=A7$.DirectMsgHeaders=A7$.JsHeaders=A7$.AdvisoryKind=void 0;A7$.isOrderedPushConsumerOptions=BK4;A7$.isPullConsumer=LK4;A7$.isPushConsumer=OK4;A7$.isBoundPushConsumerOptions=DK4;function BK4($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function LK4($){return $.isPullConsumer()}function OK4($){return $.isPushConsumer()}function DK4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}A7$.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};A7$.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};A7$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};A7$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var RG=b((q7$)=>{Object.defineProperty(q7$,"__esModule",{value:!0});q7$.TD=q7$.TE=q7$.Empty=void 0;q7$.encode=qK4;q7$.decode=MK4;q7$.Empty=new Uint8Array(0);q7$.TE=new TextEncoder;q7$.TD=new TextDecoder;function RK4(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function qK4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(q7$.TE.encode($[Q]));if(Z.length===0)return q7$.Empty;if(Z.length===1)return Z[0];return RK4(...Z)}function MK4($){if(!$||$.length===0)return"";return q7$.TD.decode($)}});var qG=b((V7$)=>{Object.defineProperty(V7$,"__esModule",{value:!0});V7$.errors=V7$.PermissionViolationError=V7$.NoRespondersError=V7$.TimeoutError=V7$.RequestError=V7$.ProtocolError=V7$.ConnectionError=V7$.DrainingConnectionError=V7$.ClosedConnectionError=V7$.AuthorizationError=V7$.UserAuthenticationExpiredError=V7$.InvalidOperationError=V7$.InvalidArgumentError=V7$.InvalidSubjectError=void 0;class K11 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}V7$.InvalidSubjectError=K11;class $30 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new $30(`${$} ${Z}`,Q)}}V7$.InvalidArgumentError=$30;class W11 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}V7$.InvalidOperationError=W11;class Z30 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new Z30($);return null}}V7$.UserAuthenticationExpiredError=Z30;class Q30 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new Q30($);return null}}V7$.AuthorizationError=Q30;class H11 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}V7$.ClosedConnectionError=H11;class F11 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}V7$.DrainingConnectionError=F11;class U11 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}V7$.ConnectionError=U11;class N11 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}V7$.ProtocolError=N11;class B11 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof X30}}V7$.RequestError=B11;class L11 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}V7$.TimeoutError=L11;class X30 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}V7$.NoRespondersError=X30;class Y30 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new Y30($,Q,X,Y)}}V7$.PermissionViolationError=Y30;V7$.errors={AuthorizationError:Q30,ClosedConnectionError:H11,ConnectionError:U11,DrainingConnectionError:F11,InvalidArgumentError:$30,InvalidOperationError:W11,InvalidSubjectError:K11,NoRespondersError:X30,PermissionViolationError:Y30,ProtocolError:N11,RequestError:B11,TimeoutError:L11,UserAuthenticationExpiredError:Z30}});var yW=b((v7$)=>{Object.defineProperty(v7$,"__esModule",{value:!0});v7$.SimpleMutex=v7$.Perf=void 0;v7$.extend=mK4;v7$.render=dK4;v7$.timeout=iK4;v7$.delay=pK4;v7$.deadline=nK4;v7$.deferred=D11;v7$.debugDeferred=tK4;v7$.shuffle=oK4;v7$.collect=aK4;v7$.jitter=_7$;v7$.backoff=rK4;v7$.nanos=sK4;v7$.millis=eK4;v7$.randomToken=QW4;var cK4=RG(),O11=qG();function mK4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function dK4($){return cK4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function iK4($,Z=!0){let Q=Z?new O11.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new O11.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function pK4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function nK4($,Z=1000){let Q=D11(),X=setTimeout(()=>{Q.reject(new O11.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function D11(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function tK4(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function oK4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function aK4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class S7${timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}v7$.Perf=S7$;class C7${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=D11();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}v7$.SimpleMutex=C7$;function _7$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function rK4($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return _7$(Q>Z?$[Z]:$[Q])}}}function sK4($){return $*1e6}function eK4($){return Math.floor($/1e6)}var $W4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",IB=new Uint8Array(62);for(let $=0;$<62;$++)IB[$]=$W4.charCodeAt($);var ZW4=218340105584896;function QW4(){let $=Math.floor(Math.random()*ZW4),Z=$%62,Q=IB[Z];$=($-Z)/62,Z=$%62;let X=IB[Z];$=($-Z)/62,Z=$%62;let Y=IB[Z];$=($-Z)/62,Z=$%62;let J=IB[Z];$=($-Z)/62,Z=$%62;let G=IB[Z];$=($-Z)/62,Z=$%62;let K=IB[Z];$=($-Z)/62,Z=$%62;let W=IB[Z];$=($-Z)/62;let H=IB[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var l7$=b((h7$)=>{Object.defineProperty(h7$,"__esModule",{value:!0});h7$.nuid=h7$.NuidImpl=void 0;var jW4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",iD=62,G30=12,y7$=10,f7$=33,EW4=333,b7$=G30+y7$,j11=new Uint8Array(iD);for(let $=0;$<iD;$++)j11[$]=jW4.charCodeAt($);var J30=4294967296,g7$=BigInt(iD)**BigInt(y7$),ua=Number(g7$/(1n<<32n)),w11=Number(g7$%(1n<<32n));function zW4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function PW4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else zW4($)}class E11{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(b7$),this.cbuf=new Uint8Array(G30),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(ua+1)),this.seqLo=Math.floor(Math.random()*J30);while($++<8&&this.seqHi===ua&&this.seqLo>=w11);if(this.seqHi===ua&&this.seqLo>=w11)this.seqLo=0;this.inc=Math.random()*(EW4-f7$)+f7$|0}setPre(){PW4(this.cbuf);for(let $=0;$<G30;$++)this.buf[$]=j11[this.cbuf[$]%iD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=b7$-1;Q>=G30;Q--){let X=Math.floor($/iD),J=($-X*iD)*J30+Z,G=Math.floor(J/iD),K=J-G*iD;this.buf[Q]=j11[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=J30)this.seqLo-=J30,this.seqHi+=1;if(this.seqHi>ua||this.seqHi===ua&&this.seqLo>=w11)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}h7$.NuidImpl=E11;h7$.nuid=new E11});var i7$=b((m7$)=>{Object.defineProperty(m7$,"__esModule",{value:!0});m7$.nuid=m7$.Nuid=void 0;var c7$=l7$();m7$.Nuid=c7$.NuidImpl;m7$.nuid=c7$.nuid});var W30=b((K30)=>{Object.defineProperty(K30,"__esModule",{value:!0});K30.nuid=K30.Nuid=void 0;var p7$=i7$();Object.defineProperty(K30,"Nuid",{enumerable:!0,get:function(){return p7$.Nuid}});Object.defineProperty(K30,"nuid",{enumerable:!0,get:function(){return p7$.nuid}})});var pD=b((n7$)=>{Object.defineProperty(n7$,"__esModule",{value:!0});n7$.DEFAULT_HOST=n7$.DEFAULT_PORT=n7$.Match=void 0;n7$.syncIterator=IW4;n7$.createInbox=VW4;var qW4=W30(),MW4=qG();n7$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function IW4($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function VW4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw MW4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${qW4.nuid.next()}`}n7$.DEFAULT_PORT=4222;n7$.DEFAULT_HOST="127.0.0.1"});var la=b((r7$)=>{Object.defineProperty(r7$,"__esModule",{value:!0});r7$.DataBuffer=void 0;var o7$=RG();class a7${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return o7$.TE.encode($)}static toAscii($){return o7$.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}r7$.DataBuffer=a7$});var $T=b(($Q$)=>{Object.defineProperty($Q$,"__esModule",{value:!0});$Q$.LF=$Q$.CR=$Q$.CRLF=$Q$.CR_LF_LEN=$Q$.CR_LF=void 0;$Q$.setTransportFactory=bW4;$Q$.defaultPort=yW4;$Q$.getUrlParseFn=gW4;$Q$.newTransport=hW4;$Q$.getResolveFn=uW4;$Q$.protoLen=e7$;$Q$.extractProtocolMessage=lW4;var vW4=RG(),xW4=pD(),fW4=la(),MG;function bW4($){MG=$}function yW4(){return MG!==void 0&&MG.defaultPort!==void 0?MG.defaultPort:xW4.DEFAULT_PORT}function gW4(){return MG!==void 0&&MG.urlParseFn?MG.urlParseFn:void 0}function hW4(){if(!MG||typeof MG.factory!=="function")throw Error("transport fn is not set");return MG.factory()}function uW4(){return MG!==void 0&&MG.dnsResolveFn?MG.dnsResolveFn:void 0}$Q$.CR_LF=`\r
2109
2109
  `;$Q$.CR_LF_LEN=$Q$.CR_LF.length;$Q$.CRLF=fW4.DataBuffer.fromAscii($Q$.CR_LF);$Q$.CR=new Uint8Array($Q$.CRLF)[0];$Q$.LF=new Uint8Array($Q$.CRLF)[1];function e7$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===$Q$.CR&&$[Q]===$Q$.LF)return Q+1}return 0}function lW4($){let Z=e7$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return vW4.TD.decode(X)}return""}});var R11=b((WQ$)=>{Object.defineProperty(WQ$,"__esModule",{value:!0});WQ$.ipV4=JQ$;WQ$.isIP=sW4;WQ$.parseIP=GQ$;var ca=4,ZT=16,H30=48,YQ$=57,QQ$=65,aW4=70,XQ$=97,rW4=102,A11=16777215;function JQ$($,Z,Q,X){let Y=new Uint8Array(ZT);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((G,K)=>{Y[K]=G}),Y[12]=$,Y[13]=Z,Y[14]=Q,Y[15]=X,Y}function sW4($){return GQ$($)!==void 0}function GQ$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return KQ$($);case":":return eW4($)}return}function KQ$($){let Z=new Uint8Array(ca);for(let Q=0;Q<ca;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:J}=$H4($);if(!J||X>255)return;$=$.substring(Y),Z[Q]=X}return JQ$(Z[0],Z[1],Z[2],Z[3])}function eW4($){let Z=new Uint8Array(ZT),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<ZT){let{n:Y,c:J,ok:G}=ZH4($);if(!G||Y>65535)return;if(J<$.length&&$[J]==="."){if(Q<0&&X!=ZT-ca)return;if(X+ca>ZT)return;let K=KQ$($);if(K===void 0)return;Z[X]=K[12],Z[X+1]=K[13],Z[X+2]=K[14],Z[X+3]=K[15],$="",X+=ca;break}if(Z[X]=Y>>8,Z[X+1]=Y,X+=2,$=$.substring(J),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(Q>=0)return;if(Q=X,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(X<ZT){if(Q<0)return;let Y=ZT-X;for(let J=X-1;J>=Q;J--)Z[J+Y]=Z[J];for(let J=Q+Y-1;J>=Q;J--)Z[J]=0}else if(Q>=0)return;return Z}function $H4($){let Z=0,Q=0;for(Z=0;Z<$.length&&H30<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=YQ$;Z++)if(Q=Q*10+($.charCodeAt(Z)-H30),Q>=A11)return{n:A11,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function ZH4($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(H30<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=YQ$)Z*=16,Z+=$.charCodeAt(Q)-H30;else if(XQ$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=rW4)Z*=16,Z+=$.charCodeAt(Q)-XQ$+10;else if(QQ$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=aW4)Z*=16,Z+=$.charCodeAt(Q)-QQ$+10;else break;if(Z>=A11)return{n:0,c:Q,ok:!1}}if(Q===0)return{n:0,c:Q,ok:!1};return{n:Z,c:Q,ok:!0}}});var S11=b((FQ$)=>{Object.defineProperty(FQ$,"__esModule",{value:!0});FQ$.Servers=FQ$.ServerImpl=void 0;FQ$.isIPV4OrHostname=HQ$;FQ$.hostPort=k11;var q11=$T(),M11=yW(),I11=R11(),JH4=pD(),GH4=qG();function HQ$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function V11($){return!HQ$($)}function KH4($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function k11($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=KH4($),V11($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=V11($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):JH4.DEFAULT_PORT,Y=new URL(`${Q===80?"https":"http"}://${$}`);Y.port=`${Q}`;let J=Y.hostname;if(J.charAt(0)==="[")J=J.substring(1,J.length-1);return{listen:Y.host,hostname:J,port:Q}}class Gl{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=k11($);this.listen=Q.listen,this.hostname=Q.hostname,this.port=Q.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,I11.isIP)(this.hostname))return[this];else{let Q=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${Q.join(",")}`);for(let X of Q){let Y=this.port===80?"https":"http",J=new URL(`${Y}://${V11(X)?"["+X+"]":X}`);J.port=`${this.port}`;let G=new Gl(J.host,!1);G.tlsName=this.hostname,Z.push(G)}}if($.randomize)(0,M11.shuffle)(Z);return this.resolves=Z,Z}}FQ$.ServerImpl=Gl;class F30{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw GH4.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,q11.getUrlParseFn)(),Q=new Map;for(let Y of this.servers)Q.set(Y.listen,Y);let X=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:J}=k11(Y),G=Q.get(J);if(G)G.gossiped=!1,X.push(G);else X.push(new Gl(Y))}if(this.randomize)(0,M11.shuffle)(X);if(this.servers=X,this.currentServer===void 0||!X.includes(this.currentServer))this.currentServer=X[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,I11.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let Q=(0,q11.getUrlParseFn)();$=Q?Q($):$;let X=new Gl($,Z);if((0,I11.isIP)(X.hostname))X.tlsName=this.tlsName;this.servers.push(X)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return F30.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return F30.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let Q=[],X=[],Y=(0,q11.getUrlParseFn)(),J=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Gl(K,!0);J.set(K,W)});let G=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&J.get(H)===void 0)G.push(W);J.delete(H)}),G.reverse(),G.forEach((K)=>{let W=this.servers.splice(K,1);X=X.concat(W[0].listen)}),J.forEach((K,W)=>{this.servers.push(K),Q.push(W)}),this.randomize&&Q.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,M11.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}FQ$.Servers=F30});var U30=b((LQ$)=>{Object.defineProperty(LQ$,"__esModule",{value:!0});LQ$.QueuedIteratorImpl=void 0;var C11=yW(),NQ$=qG();class BQ${inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,C11.deferred)(),this.yields=[],this.iterClosed=(0,C11.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(Q){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new NQ$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new NQ$.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let X=$[Z];try{X()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let Q=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-Q:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,C11.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}LQ$.QueuedIteratorImpl=BQ$});var _11=b((jQ$)=>{Object.defineProperty(jQ$,"__esModule",{value:!0});jQ$.MuxSubscription=void 0;var UH4=pD(),DQ$=qG();class wQ${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,UH4.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((Q)=>{Q.resolver(Z,{})}),!0;if(Z.operation==="publish"){let Q=this.all().find((X)=>{return X.requestSubject===Z.subject});if(Q)return Q.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let Q=this.getToken(Z);if(Q){let X=this.get(Q);if(X){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new DQ$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new DQ$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}jQ$.MuxSubscription=wQ$});var v11=b((PQ$)=>{Object.defineProperty(PQ$,"__esModule",{value:!0});PQ$.Heartbeat=void 0;var NH4=yW();class zQ${ph;interval;maxOut;timer;pendings;constructor($,Z,Q){this.ph=$,this.interval=Z,this.maxOut=Q,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,NH4.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}PQ$.Heartbeat=zQ$});var b11=b((MQ$)=>{Object.defineProperty(MQ$,"__esModule",{value:!0});MQ$.DenoBuffer=MQ$.MAX_SIZE=MQ$.AssertionError=void 0;MQ$.assert=RQ$;MQ$.concat=qQ$;MQ$.append=LH4;MQ$.readAll=OH4;MQ$.writeAll=DH4;var BH4=RG();class x11 extends Error{constructor($){super($);this.name="AssertionError"}}MQ$.AssertionError=x11;function RQ$($,Z="Assertion failed."){if(!$)throw new x11(Z)}var AQ$=32768;MQ$.MAX_SIZE=4294967294;function N30($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function qQ$($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let Q=new Uint8Array($.length+Z.length);return Q.set($,0),Q.set(Z,$.length),Q}function LH4($,Z){return qQ$($,Uint8Array.of(Z))}class f11{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){RQ$($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=N30(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(BH4.TE.encode($))}write($){let Z=this._grow($.byteLength);return N30($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let Q=this._tryGrowByReslice($);if(Q>=0)return Q;let X=this.capacity;if($<=Math.floor(X/2)-Z)N30(this._buf.subarray(this._off),this._buf);else if(X+$>MQ$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,MQ$.MAX_SIZE));N30(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,MQ$.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,Q=new Uint8Array(AQ$);while(!0){let X=this.capacity-this.length<AQ$,Y=X?Q:new Uint8Array(this._buf.buffer,this.length),J=$.read(Y);if(J===null)return Z;if(X)this.write(Y.subarray(0,J));else this._reslice(this.length+J);Z+=J}}}MQ$.DenoBuffer=f11;function OH4($){let Z=new f11;return Z.readFrom($),Z.bytes()}function DH4($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var h11=b((CQ$)=>{Object.defineProperty(CQ$,"__esModule",{value:!0});CQ$.cc=CQ$.State=CQ$.Parser=CQ$.Kind=void 0;CQ$.describe=AH4;var y11=b11(),g11=RG();CQ$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function AH4($){let Z,Q="";switch($.kind){case CQ$.Kind.MSG:Z="MSG";break;case CQ$.Kind.OK:Z="OK";break;case CQ$.Kind.ERR:Z="ERR",Q=g11.TD.decode($.data);break;case CQ$.Kind.PING:Z="PING";break;case CQ$.Kind.PONG:Z="PONG";break;case CQ$.Kind.INFO:Z="INFO",Q=g11.TD.decode($.data)}return`${Z}: ${Q}`}function VQ$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var kQ$=48,RH4=57,Kl=67108864;class SQ${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=CQ$.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let Q=$[Z];switch(this.state){case CQ$.State.OP_START:switch(Q){case CQ$.cc.M:case CQ$.cc.m:this.state=CQ$.State.OP_M,this.hdr=-1,this.ma=VQ$();break;case CQ$.cc.H:case CQ$.cc.h:this.state=CQ$.State.OP_H,this.hdr=0,this.ma=VQ$();break;case CQ$.cc.P:case CQ$.cc.p:this.state=CQ$.State.OP_P;break;case CQ$.cc.PLUS:this.state=CQ$.State.OP_PLUS;break;case CQ$.cc.MINUS:this.state=CQ$.State.OP_MINUS;break;case CQ$.cc.I:case CQ$.cc.i:this.state=CQ$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_H:switch(Q){case CQ$.cc.M:case CQ$.cc.m:this.state=CQ$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_M:switch(Q){case CQ$.cc.S:case CQ$.cc.s:this.state=CQ$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_MS:switch(Q){case CQ$.cc.G:case CQ$.cc.g:this.state=CQ$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_MSG:switch(Q){case CQ$.cc.SPACE:case CQ$.cc.TAB:this.state=CQ$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_MSG_SPC:switch(Q){case CQ$.cc.SPACE:case CQ$.cc.TAB:continue;default:this.state=CQ$.State.MSG_ARG,this.as=Z}break;case CQ$.State.MSG_ARG:switch(Q){case CQ$.cc.CR:this.drop=1;break;case CQ$.cc.NL:{let X=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(X),this.drop=0,this.as=Z+1,this.state=CQ$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case CQ$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:CQ$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=CQ$.State.MSG_END}else{let X=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<X)X=Y;if(X>0)this.msgBuf.write($.subarray(Z,Z+X)),Z=Z+X-1;else this.msgBuf.writeByte(Q)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:CQ$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=CQ$.State.MSG_END;break;case CQ$.State.MSG_END:switch(Q){case CQ$.cc.NL:this.drop=0,this.as=Z+1,this.state=CQ$.State.OP_START;break;default:continue}break;case CQ$.State.OP_PLUS:switch(Q){case CQ$.cc.O:case CQ$.cc.o:this.state=CQ$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_PLUS_O:switch(Q){case CQ$.cc.K:case CQ$.cc.k:this.state=CQ$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_PLUS_OK:switch(Q){case CQ$.cc.NL:this.dispatcher.push({kind:CQ$.Kind.OK}),this.drop=0,this.state=CQ$.State.OP_START;break}break;case CQ$.State.OP_MINUS:switch(Q){case CQ$.cc.E:case CQ$.cc.e:this.state=CQ$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_MINUS_E:switch(Q){case CQ$.cc.R:case CQ$.cc.r:this.state=CQ$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_MINUS_ER:switch(Q){case CQ$.cc.R:case CQ$.cc.r:this.state=CQ$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_MINUS_ERR:switch(Q){case CQ$.cc.SPACE:case CQ$.cc.TAB:this.state=CQ$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_MINUS_ERR_SPC:switch(Q){case CQ$.cc.SPACE:case CQ$.cc.TAB:continue;default:this.state=CQ$.State.MINUS_ERR_ARG,this.as=Z}break;case CQ$.State.MINUS_ERR_ARG:switch(Q){case CQ$.cc.CR:this.drop=1;break;case CQ$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:CQ$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=CQ$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case CQ$.State.OP_P:switch(Q){case CQ$.cc.I:case CQ$.cc.i:this.state=CQ$.State.OP_PI;break;case CQ$.cc.O:case CQ$.cc.o:this.state=CQ$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_PO:switch(Q){case CQ$.cc.N:case CQ$.cc.n:this.state=CQ$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_PON:switch(Q){case CQ$.cc.G:case CQ$.cc.g:this.state=CQ$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_PONG:switch(Q){case CQ$.cc.NL:this.dispatcher.push({kind:CQ$.Kind.PONG}),this.drop=0,this.state=CQ$.State.OP_START;break}break;case CQ$.State.OP_PI:switch(Q){case CQ$.cc.N:case CQ$.cc.n:this.state=CQ$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_PIN:switch(Q){case CQ$.cc.G:case CQ$.cc.g:this.state=CQ$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_PING:switch(Q){case CQ$.cc.NL:this.dispatcher.push({kind:CQ$.Kind.PING}),this.drop=0,this.state=CQ$.State.OP_START;break}break;case CQ$.State.OP_I:switch(Q){case CQ$.cc.N:case CQ$.cc.n:this.state=CQ$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_IN:switch(Q){case CQ$.cc.F:case CQ$.cc.f:this.state=CQ$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_INF:switch(Q){case CQ$.cc.O:case CQ$.cc.o:this.state=CQ$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_INFO:switch(Q){case CQ$.cc.SPACE:case CQ$.cc.TAB:this.state=CQ$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case CQ$.State.OP_INFO_SPC:switch(Q){case CQ$.cc.SPACE:case CQ$.cc.TAB:continue;default:this.state=CQ$.State.INFO_ARG,this.as=Z}break;case CQ$.State.INFO_ARG:switch(Q){case CQ$.cc.CR:this.drop=1;break;case CQ$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:CQ$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=CQ$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===CQ$.State.MSG_ARG||this.state===CQ$.State.MINUS_ERR_ARG||this.state===CQ$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new y11.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===CQ$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new y11.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,Q=new Uint8Array($+Z);if(Q.set(this.ma.subject),this.ma.reply)Q.set(this.ma.reply,$);if(this.argBuf=new y11.DenoBuffer(Q),this.ma.subject=Q.subarray(0,$),this.ma.reply)this.ma.reply=Q.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case CQ$.cc.SPACE:case CQ$.cc.TAB:case CQ$.cc.CR:case CQ$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Kl);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],Kl);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${g11.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case CQ$.cc.SPACE:case CQ$.cc.TAB:case CQ$.cc.CR:case CQ$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Kl),this.ma.size=this.protoParseInt(Z[3],Kl);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],Kl),this.ma.size=this.protoParseInt(Z[4],Kl);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let Q=0;for(let X=0;X<$.length;X++){if($[X]<kQ$||$[X]>RH4)return-1;Q=Q*10+($[X]-kQ$)}return Z!==void 0&&Q>Z?-1:Q}}CQ$.Parser=SQ$;CQ$.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};CQ$.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var O30=b((vQ$)=>{Object.defineProperty(vQ$,"__esModule",{value:!0});vQ$.MsgHdrsImpl=void 0;vQ$.canonicalMIMEHeaderKey=l11;vQ$.headers=IH4;var _Q$=RG(),gW=pD(),L30=qG();function l11($){let F=!0,U=Array($.length);for(let N=0;N<$.length;N++){let B=$.charCodeAt(N);if(B===58||B<33||B>126)throw L30.InvalidArgumentError.format("header",`'${$[N]}' is not a valid character in a header name`);if(F&&97<=B&&B<=122)B-=32;else if(!F&&65<=B&&B<=90)B+=32;U[N]=B,F=B==45}return String.fromCharCode(...U)}function IH4($=0,Z=""){if($===0&&Z!=="")throw L30.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw L30.InvalidArgumentError.format("description","is required");return new Wl($,Z)}var u11="NATS/1.0";class Wl{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,Q]of this.headers){let X=$.values(Z);if(Q.length!==X.length)return!1;let Y=[...Q].sort(),J=[...X].sort();for(let G=0;G<Y.length;G++)if(Y[G]!==J[G])return!1}return!0}return!1}static decode($){let Z=new Wl,X=_Q$.TD.decode($).split(`\r
2110
2110
  `),Y=X[0];if(Y!==u11){let J=Y.replace(u11,"").trim();if(J.length>0){if(Z._code=parseInt(J,10),isNaN(Z._code))Z._code=0;let G=Z._code.toString();J=J.replace(G,""),Z._description=J.trim()}}if(X.length>=1)X.slice(1).map((J)=>{if(J){let G=J.indexOf(":");if(G>-1){let K=J.slice(0,G),W=J.slice(G+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=u11;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,Q]of this.headers)for(let X=0;X<Q.length;X++)$=`${$}\r
2111
2111
  ${Z}: ${Q[X]}`;return`${$}\r
@@ -5420,7 +5420,7 @@ ${J.join(`
5420
5420
  `)){let Y=X.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var vE8=200,VU5=12,SU5,_U5=300,Sb0=3;var a21=L(()=>{aZ();w8();kb0();SU5={aheadBy:0,behindBy:0,files:[]}});function uU5($){if(!$||$.includes(".."))return!1;return hU5.test($)}function fE8($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!uU5(Z))return null;let{__resolveType:Q,...X}=$;return{resolveType:Z,payload:X}}function bE8($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var hU5;var yE8=L(()=>{hU5=/^[\w./@-]+$/});function M90($,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 hE8($,Z,Q,X){let Y=$.organization?.id;if(!Y)throw new vz(q7);let J=await zE($.storage,Y,X);if(J&&await uL($.storage,J)){let F=await nU($,J,{forceRefresh:!0}).catch((U)=>{throw new vz(U instanceof Error?U.message:q7)});await gE8($,Z,Q,F);return}let G=X.connectionId??J?.legacyConnectionId;if(!G)throw new vz("Push requires a connected git account. Connect the repository's provider for this project and restart the sandbox.");await od({ctx:$,connectionId:G,organizationId:Y,forceRefresh:!0,onLegacyMintError:(F)=>{let U=F instanceof Error?F.message:q7;throw new vz(U)}});let{cloneUrl:K,gitUserName:W,gitUserEmail:H}=await tU(G,X.owner,X.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=hf$(F instanceof Error?F.message:String(F));throw U?new vz(N):F});await gE8($,Z,Q,{cloneUrl:K,gitUserName:W,gitUserEmail:H})}async function gE8($,Z,Q,X){let{cloneUrl:Y,gitUserName:J,gitUserEmail:G}=X,K=cn($),W=await Z.proxyDaemonRequest(Q,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:Y},identity:{userName:J,userEmail:G}},...K?{operator:K}:{}})});if(!W.ok){let H=await cE(W,lU5).catch(()=>W.statusText);throw Error(`Failed to refresh sandbox git credentials (${W.status}): ${H}`)}}var lU5=10485760,vz;var r21=L(()=>{yK();zb0();Y40();CL0();s$0();aZ();vz=class vz extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function mU5($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!cU5.test(Z))throw Error(`Invalid branch name: ${$}`)}function pg($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(iU5)])}async function nU5($,Z){let Q=$.var.studioContext,X=QN(Z.branch),Y=$.req.query("thread")??X,J=Y&&Y===X?Z.branchThread:Y?await Q.storage.threads.get(Y).catch(()=>null):null,G=J?.virtual_mcp_id===Z.virtualMcpId?J:null,K=Dy(G?.metadata?.runtime);if(K)return K;let W=zk0(Z.virtualMcpMetadata),H=W==="cms"?await S21(Q,{claimName:Z.claimName}):"alive",F=W==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&W==="cms");if(U&&G)J40(Q,G.id,F);if(W==="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 tU5($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await uY($.var.studioContext)}catch{return null}}function ng($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function tn($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),X=$.var.studioContext,Y=M90(Z,Q);if(!Y)throw new h0({provider:"github",status:404,message:"Project has no GitHub repository"});let J=U0(X);return pd(X,J.id,Y)}function s21($,Z){let Q=Z instanceof Error?Z.message:String(Z),X=Gx$(Z);if(X!==void 0)return $.json({error:Q},429,{...Q9,...X===null?{}:{"Retry-After":String(Math.ceil(X/1000))}});if(Z instanceof t6)return $.json({error:Q},409,Q9);let Y=cK(Z);if(Y!==null){let J=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},J,Q9)}return $.json({error:Q},502,Q9)}async function cE8($,Z,Q){let X;try{X=await fetch(Z,Q)}catch{return $.json({error:"Preview unreachable"},502)}let Y;try{Y=await X.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(Y,{status:X.status,headers:{"content-type":X.headers.get("content-type")??"application/json"}})}async function mE8($){try{let Z=await tn($),Q=await Cb0(Z,$.get("vmClaim").branch);return $.json(Q,200,Q9)}catch(Z){return s21($,Z)}}function I90($,Z){let X=(xb0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=X.catch(()=>{});return xb0.set($,Y),Y.finally(()=>{if(xb0.get($)===Y)xb0.delete($)}),X}async function FQ($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,Q9);let X=Q?.runner??ng($);if(X instanceof Response)return X;let{claimName:Y,userId:J,projectRef:G}=$.get("vmClaim"),K=Q?.method??"POST",W=null,H=new Headers;if(Q?.jsonBody!==void 0)W=Q.jsonBody,H.set("content-type","application/json");else if(Q?.forwardJsonBody)W=await $.req.text(),H.set("content-type","application/json");let F=Q?.signal,U={method:K,headers:H,body:W,...F?{signal:F}:{}},N=async()=>{let B=await X.proxyDaemonRequest(Y,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await X.adoptLiveClaim({userId:J,projectRef:G},Y))B=await X.proxyDaemonRequest(Y,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",...Q9}})}}let O=await B.text(),D=Q?.redactRepoDir?oU5(O):O,w=B.headers.get("content-type")??"application/json";return new Response(D,{status:B.status,headers:{"content-type":w,...Q9}})};try{if(F){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((D,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 oU5($){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 fb0($,Z,Q,X="GET",Y){let J=await $.proxyDaemonRequest(Z,Q,{method:X,headers:new Headers,body:null});if(J.status===404&&Y){try{await J.body?.cancel()}catch{}if(await $.adoptLiveClaim(Y,Z))J=await $.proxyDaemonRequest(Z,Q,{method:X,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 K=`Daemon error (${J.status})`;try{K=JSON.parse(G).error??K}catch{}throw Error(K)}return JSON.parse(G)}function aU5($){return dE8.includes($)}var cU5,uE8=524288,dU5=65536,iU5=1e4,lE8=2000,pU5,xb0,Q9,dE8,iE8=()=>{let $=new J1;$.use("/:virtualMcpId/:branch/*",pU5),$.post("/:virtualMcpId/:branch/write",(Q)=>FQ(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:pg(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>FQ(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:pg(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>FQ(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:pg(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>FQ(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:pg(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>FQ(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:pg(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>FQ(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:pg(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>FQ(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:pg(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let X=Q.req.param("script");if(!X)return Q.json({error:"missing script name"},400);return FQ(Q,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let X=Q.req.param("script");if(!X)return Q.json({error:"missing script name"},400);return FQ(Q,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>FQ(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>FQ(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let X=Q.req.param("step");if(!X||!aU5(X))return Q.json({error:`step must be one of: ${dE8.join(", ")}`},400);let Y=Q.get("vmClaim"),J=await S21(Q.var.studioContext,{claimName:Y.claimName})==="gone"?null:await tU5(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,Q9);if(X==="start"){let G=U0(Q.var.studioContext),K=Ci(Y.virtualMcpMetadata);try{await Dk0({ctx:Q.var.studioContext,runner:J,handle:Y.claimName,orgId:G.id,userId:Y.callerUserId,entries:K})}catch(W){let H=W instanceof Error?W.message:String(W);return Q.json({error:`Failed to push env to daemon: ${H}`},502)}}return FQ(Q,`/_sandbox/setup/${X}`,{signal:Q.req.raw.signal,map404to410:!0,runner:J})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let X=Q.get("vmClaim");if(!X.runner)return _O(Q,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return dj8(Q,{ctx:Q.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return mE8(Q);return Z(Q)});let Z=(Q)=>FQ(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(lE8)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return mE8(Q);return FQ(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(lE8)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(Q)=>{let X=Q.get("vmClaim");if(X.runtime==="cms")try{let Y=await Q.req.json().catch(()=>({})),J=await tn(Q),G=await _b0(J,X.branch,Y.base);return Q.json(G,200,Q9)}catch(Y){return s21(Q,Y)}return FQ(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,Q9);let X=ng(Q);if(X instanceof Response)return X;let{claimName:Y,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),K=Q.var.studioContext;return I90(Y,async()=>{try{await C21(K,X,Y);let W=M90(J,G);if(W)await hE8(K,X,Y,W)}catch(W){if(W instanceof vz)return Q.json({error:W.message},403,Q9);let H=W instanceof Error?W.message:String(W);return Q.json({error:H},502,Q9)}return FQ(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let X=Q.get("vmClaim");if(X.runtime==="cms")return I90(X.claimName,async()=>{let Y=await Q.req.json().catch(()=>({})),J=Array.isArray(Y.filepaths)?Y.filepaths.filter((G)=>typeof G==="string"):[];if(J.length===0)return Q.json({error:"filepaths is required"},400,Q9);try{let G=await tn(Q);return await xE8(G,X.branch,J),Q.json({ok:!0},200,Q9)}catch(G){let K=cK(G)===409||G instanceof t6?409:502,W=G instanceof Error?G.message:String(G);return Q.json({error:W},K,Q9)}});return I90(X.claimName,()=>FQ(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let X=Q.get("vmClaim");if(X.runtime==="cms")return I90(X.claimName,async()=>{try{let K=await Q.req.json().catch(()=>({})),W=await tn(Q),H=K.base??await W.getDefaultBranch();return await vb0(W,X.branch,H),Q.json({ok:!0},200,Q9)}catch(K){return s21(Q,K)}});let Y=ng(Q);if(Y instanceof Response)return Y;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return I90(J,async()=>{try{await C21(G,Y,J)}catch(K){let W=K instanceof Error?K.message:String(K);return Q.json({error:W},502,Q9)}return FQ(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",z9({maxSize:uE8,onError:(Q)=>Q.json({error:"Payload too large"},413,Q9)}),async(Q)=>{let X=Q.get("vmClaim"),Y=null;if(X.runtime!=="cms"){let H=ng(Q);if(H instanceof Response)return H;Y=H}let{claimName:J,userId:G,projectRef:K}=X,W=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]=x21(F)&&N?[F,U]:Y?await Promise.all([fb0(Y,J,"/_sandbox/git/status","GET",{userId:G,projectRef:K}),fb0(Y,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:K})]):await(async()=>{let w=await tn(Q);return Promise.all([Cb0(w,X.branch),_b0(w,X.branch)])})();await qH(W,U0(W).id,"suggesting a commit message");let D=await oj8(W,B,O);return Q.json(D,200,Q9)}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,Q9);return Q.json({error:F},502,Q9)}}),$.post("/:virtualMcpId/:branch/git/judge-review",z9({maxSize:uE8,onError:(Q)=>Q.json({error:"Payload too large"},413,Q9)}),async(Q)=>{let X=Q.get("vmClaim"),Y=null;if(X.runtime!=="cms"){let H=ng(Q);if(H instanceof Response)return H;Y=H}let{claimName:J,userId:G,projectRef:K}=X,W=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]=x21(F)&&N?[F,U]:Y?await Promise.all([fb0(Y,J,"/_sandbox/git/status","GET",{userId:G,projectRef:K}),fb0(Y,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:K})]):await(async()=>{let w=await tn(Q);return Promise.all([Cb0(w,X.branch),_b0(w,X.branch)])})();await qH(W,U0(W).id,"judging whether a change needs review");let D=await rj8(W,B,O,typeof H.language==="string"?H.language:void 0);return Q.json(D,200,Q9)}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,Q9);return Q.json({error:F},502,Q9)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let X=ng(Q);if(X instanceof Response)return X;let{claimName:Y}=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 X.getPreviewUrl(Y)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let K=G.replace(/\/+$/,"");return cE8(Q,`${K}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",z9({maxSize:dU5,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let X=ng(Q);if(X instanceof Response)return X;let{claimName:Y}=Q.get("vmClaim"),J;try{J=await X.getPreviewUrl(Y)}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 K=fE8(G);if(!K)return Q.json({error:"Invalid or missing __resolveType"},400);let W=bE8(J,K.resolveType);return cE8(Q,W,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(K.payload),signal:AbortSignal.timeout(30000)})}),$};var pE8=L(()=>{W8();WF();ln();k21();Z40();lj8();tK();_i();cj8();lH();_U();mj8();ij8();TU1();X40();y21();sj8();aZ();E5();a21();yE8();r21();cU5=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;pU5=Eb0(async($,Z)=>{let Q=$.var.studioContext;try{Y0(Q)}catch{return $.json({error:"Unauthorized"},401)}let X=t0(Q);if(!X)return $.json({error:"Unauthorized"},401);let Y;try{Y=U0(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{mU5(G)}catch(D){let w=D instanceof Error?D.message:String(D);return $.json({error:w},400)}let K=await Q.storage.virtualMcps.findById(J);if(!K||K.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let W=A80({orgId:Y.id,virtualMcpId:J,branch:G}),H=await tH1(Q,G),F=oH1(H,X),U=uj8({userId:F,projectRef:W}),N=K.metadata??null,B=await nU5($,{claimName:U,branch:G,virtualMcpId:J,sandboxUserId:F,virtualMcpMetadata:N,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:X,runner:null,virtualMcpId:J,branch:G,userId:F,projectRef:W,virtualMcpMetadata:N,connectionIds:K.connections?.map((D)=>D.connection_id)??[],runtime:B}),Z();let O;try{O=await uY(Q)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:X,runner:O,virtualMcpId:J,branch:G,userId:F,projectRef:W,virtualMcpMetadata:N,connectionIds:K.connections?.map((D)=>D.connection_id)??[],runtime:B}),Z()});xb0=new Map;Q9={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};dE8=["clone","install","start"]});function nE8($,Z,Q){let X=e21.get($);if(!X)X={pending:null,running:!1},e21.set($,X);if(!X.pending)X.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=X.pending;Y.deps=Z;for(let[G,K]of Object.entries(Q.set??{}))Y.set.set(G,K),Y.del.delete(G);for(let G of Q.delete??[])Y.del.add(G),Y.set.delete(G);let J=new Promise((G,K)=>{Y.resolvers.push(G),Y.rejecters.push(K)});if(!X.running)sU5($,X);return J}async function sU5($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let X=await eU5(Q);for(let Y of Q.resolvers)Y(X)}catch(X){for(let Y of Q.rejecters)Y(X)}}}finally{if(Z.running=!1,!Z.pending)e21.delete($)}}async function eU5($){let{client:Z,branch:Q,packagePath:X}=$.deps,Y=new Map;for(let J=0;;J++){let G=await nn(Z,Q),K=await Z.listDecofileEntries(G,X),W=n21(K,X),H=[],F=new Map(W.map((N)=>[N.path,{stem:N.stem,sha:N.sha}]));for(let[N,B]of $.set){let O=t21(W,N),D=`${JSON.stringify(B,null,2)}
5421
5421
  `;await kE8(Z.repo,D);let w=O[0]??`${Vb0(X)}/${u21(N)}.json`;H.push({path:w,content:D});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:D});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 t21(W,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=X?`${X}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(K.some((N)=>N.type==="blob"&&N.path===U)){let N=await SE8(Z,F.values(),Y),{decofile:B,skipped:O}=P90(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:IH(Z.repo),branch:Q,packagePath:X,blocks:O.map((D)=>D.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:$N5($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof t6)||J>=rU5-1)throw N;await k$(NQ(2000,200,J,2,0.5))}}}function $N5($){let Z=(Y)=>{let J=Y.slice(0,3).join(", ");return Y.length>3?`${J} (+${Y.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 X=`chore(decofile): ${Q.join("; ")}`;return EH1(X,$.deps.coAuthor)}var rU5=3,e21;var tE8=L(()=>{YV0();Tb0();T6();w8();aZ();kb0();e21=new Map});import{createHmac as oE8,randomBytes as ZN5,timingSafeEqual as QN5}from"crypto";function aE8(){if(bb0)return bb0;let $;try{let Z=T0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return bb0=$?Buffer.from($):ZN5(32),bb0}function $R1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+XN5)/1000)},X=Buffer.from(JSON.stringify(Q)).toString("base64url"),Y=oE8("sha256",aE8()).update(X).digest("base64url");return`${X}.${Y}`}function rE8($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let X=$.slice(0,Q),Y=Buffer.from($.slice(Q+1)),J=Buffer.from(oE8("sha256",aE8()).update(X).digest("base64url"));if(Y.length!==J.length||!QN5(Y,J))return!1;let G;try{G=JSON.parse(Buffer.from(X,"base64url").toString())}catch{return!1}let K=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>=K}var XN5=21600000,bb0=null;var sE8=L(()=>{H$()});import{z as on}from"zod";function JN5($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&YN5.test($)}function Xz8($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function V90($){let Z=$.get("decofileScope");return pd($.var.studioContext,Z.organizationId,Z.githubRepo)}function k90($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof t6)return $.json({error:Q},409);let X=cK(Z);if(X!==null){let Y=X===404?404:X===409||X===422?409:502;return $.json({error:Q},Y)}return $.json({error:Q},500)}function Yz8(){let $=new J1;return $.use("/:virtualMcpId/:branch",Qz8),$.use("/:virtualMcpId/:branch/*",Qz8),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await V90(Z),Y=await CE8(X,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(Y.decofile,200,{...J,"content-type":"application/json"});let G=$R1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(Xz8(Z))},"decofile":${Y.decofile}}`,200,{...J,"content-type":"application/json"})}catch(X){return k90(Z,X)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),X=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await V90(Z),J=await Y.readFileAtRef(Q.branch,X);if(J===null){let G=await Y.getDefaultBranch();if(G!==Q.branch)J=await Y.readFileAtRef(G,X)}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(Y){return k90(Z,Y)}}),$.patch("/:virtualMcpId/:branch",KN5,async(Z)=>{let Q=Z.get("decofileScope"),X=Z.var.studioContext,Y=WN5.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let J=Y.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{Pb0(G)}catch(K){let W=K instanceof Error?K.message:String(K);return Z.json({error:W},400)}for(let[G,K]of Object.entries(J.set??{})){if(typeof K!=="object"||K===null||Array.isArray(K))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(h21(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await V90(Z),K=await nE8(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:cn(X)},J),W=$R1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:K,token:W,apiHost:Xz8(Z)})}catch(G){return k90(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await V90(Z),Y=await X.getDefaultBranch();if(Y===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 X.mergeBranches(Y,Q.branch,J)}catch(K){if(cK(K)!==409)throw K;await vb0(X,Q.branch,Y),G=await X.mergeBranches(Y,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(cK(G)===409)return Z.json({error:"merge-conflict"},409);if(cK(G)===405){let W=await X.findOpenChangeRequest(Y,Q.branch)??await X.createChangeRequest({base:Y,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:W.number,url:W.url})}throw G}}catch(X){return k90(Z,X)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await V90(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},K]=await Promise.all([X.compare(Y,Q.branch),X.getBranch(Q.branch)]);return Z.json({baseBranch:Y,aheadBy:J,behindBy:G,lastCommitAt:K?.committedAt??null})}catch(J){if(cK(J)===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(X){return k90(Z,X)}}),$}var YN5,eE8=500,$z8=1048576,Zz8=1024,GN5=8388608,KN5,WN5,Qz8;var Jz8=L(()=>{AU1();Tb0();W8();WF();k21();zb0();r21();aZ();tE8();sE8();a21();kb0();_U();YN5=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;KN5=z9({maxSize:GN5,onError:($)=>$.json({error:"Payload too large"},413)}),WN5=on.object({set:on.record(on.string(),on.unknown()).optional(),delete:on.array(on.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)<=eE8,{message:`Patch cannot touch more than ${eE8} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=$z8),{message:`Each block must be at most ${$z8} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=Zz8),{message:`Each block key must be at most ${Zz8} characters`}),Qz8=Eb0(async($,Z)=>{let Q=$.var.studioContext,X=Q.organization;if(!X)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!Y||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!JN5(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||!rE8(B,{organizationId:X.id,virtualMcpId:Y,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await _K(Q,X.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let K=await Q.storage.virtualMcps.findById(Y);if(!K||K.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let W=K.metadata??null;if(!Ek0(W))return $.json({error:"Project has no preview server configured"},404);let F=K.connections?.map((B)=>B.connection_id)??[],U=M90(W,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=W?.runtime;return $.set("decofileScope",{organizationId:X.id,virtualMcpId:Y,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var Gz8=($)=>{let Z=new J1;if(Z.use("*",En),Z.use("*",bL8),Z.route("/",Vf0()),Z.route("/",jO8()),Z.route("/",YO8()),Z.route("/",Ij8()),Z.route("/",Ej8()),Z.route("/",qj8()),Z.route("/",Pj8()),Z.route("/",Db0()),Z.route("/tools",xj8()),Z.route("/",Cj8()),Z.route("/",rw8({kvStorage:$.kvStorage})),Z.route("/",ow8()),Z.route("/fs",Fj8({getConnection:$.getNatsConnection})),Z.route("/sandbox",iE8()),Z.route("/decofile",Yz8()),Z.route("/",Dj8()),Z.route("/",Nj8()),Z.route("/deco-sites",Sf0()),Z.route("/hosting",nL8()),Z.route("/monitor",$O8()),Z.route("/sso",Af0()),Z.route("/",wb0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",cL8()),$.mountDevAssets)Z.route("/dev-assets",xf0({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("/",pU8()),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",Lj8()),Z.route("/mcp",qC0()),Z.route("/mcp/self",Nb0()),Z.route("/mcp",VC0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Kz8=L(()=>{W8();yL8();Nf0();mL8();aT1();tL8();ZO8();ff0();xg();iT1();ZA1();aw8();sw8();Uj8();Bj8();L60();hT1();kC0();z21();Oj8();wj8();zj8();Tj8();A21();Vj8();_j8();R21();fj8();q21();MC0();pE8();Jz8()});function HN5($){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 FN5=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Wz8=()=>{let $=new J1;return $.use("*",FN5),$.get("/",async(Z)=>{let Q=T0(),X=Q.decoSupabaseUrl,Y=Q.decoSupabaseServiceKey;if(!X||!Y)return Z.json({apps:[]});try{let J=await GG(X,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:HN5(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var Hz8=L(()=>{W8();H$();Px0()});import{z as y1}from"zod";function yN($,Z="invalid_request_error",Q=null,X=null){return{error:{message:$,type:Z,param:Q,code:X}}}function zN5($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),X=$.substring(Z+1);if(!Q||!X)return null;return{credentialId:Q,modelId:X}}function PN5($,Z,Q){try{return JSON.parse($)}catch{throw new Nz8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function TN5($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let X of Q.tool_calls)Z[X.id]=X.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((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:PN5(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let X=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:X,output:{type:"text",value:Q.content}}]}}})}function AN5($){let Z=$.map((Q)=>{let X=Q.function.parameters?DU(Q.function.parameters):DU({type:"object",properties:{}});return[Q.function.name,i$({description:Q.function.description,inputSchema:X})]});return Object.fromEntries(Z)}function RN5($){if(!$)return;return{openai:{response_format:$}}}function qN5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Fz8($,Z,Q,X,Y,J){let G={model:$,instructions:Z.filter((K)=>K.role==="system"),messages:Z.filter((K)=>K.role!=="system"),tools:Q,temperature:X.temperature,maxOutputTokens:X.max_tokens,topP:X.top_p,frequencyPenalty:X.frequency_penalty,presencePenalty:X.presence_penalty,stopSequences:X.stop?Array.isArray(X.stop)?X.stop:[X.stop]:void 0,abortSignal:J};return Y?{...G,providerOptions:Y}:G}function Uz8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var UN5=256,NN5,BN5,LN5,ON5,DN5,wN5,jN5,EN5,Nz8,Bz8,Lz8;var Oz8=L(()=>{J6();W8();ln();aH();NN5=y1.object({type:y1.literal("function"),function:y1.object({name:y1.string(),description:y1.string().optional(),parameters:y1.record(y1.string(),y1.unknown()).optional()})}),BN5=y1.object({id:y1.string(),type:y1.literal("function"),function:y1.object({name:y1.string(),arguments:y1.string()})}),LN5=y1.discriminatedUnion("role",[y1.object({role:y1.literal("system"),content:y1.string(),name:y1.string().optional()}),y1.object({role:y1.literal("user"),content:y1.union([y1.string(),y1.array(y1.union([y1.object({type:y1.literal("text"),text:y1.string()}),y1.object({type:y1.literal("image_url"),image_url:y1.object({url:y1.string(),detail:y1.string().optional()})})]))]),name:y1.string().optional()}),y1.object({role:y1.literal("assistant"),content:y1.string().nullable().optional(),name:y1.string().optional(),tool_calls:y1.array(BN5).optional()}),y1.object({role:y1.literal("tool"),content:y1.string(),tool_call_id:y1.string()})]),ON5=y1.object({type:y1.literal("text")}),DN5=y1.object({type:y1.literal("json_object")}),wN5=y1.object({type:y1.literal("json_schema"),json_schema:y1.object({name:y1.string(),description:y1.string().optional(),schema:y1.record(y1.string(),y1.unknown()),strict:y1.boolean().optional()})}),jN5=y1.union([ON5,DN5,wN5]),EN5=y1.object({model:y1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:y1.array(LN5),stream:y1.boolean().optional().default(!1),temperature:y1.number().min(0).max(2).optional(),max_tokens:y1.number().positive().optional(),top_p:y1.number().min(0).max(1).optional(),frequency_penalty:y1.number().min(-2).max(2).optional(),presence_penalty:y1.number().min(-2).max(2).optional(),stop:y1.union([y1.string(),y1.array(y1.string())]).optional(),tools:y1.array(NN5).optional(),tool_choice:y1.union([y1.literal("auto"),y1.literal("none"),y1.literal("required"),y1.object({type:y1.literal("function"),function:y1.object({name:y1.string()})})]).optional(),response_format:jN5.optional(),user:y1.string().optional()});Nz8=class Nz8 extends Error{constructor($){super($);this.name="MessageConversionError"}};Bz8=new J1;Bz8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(yN("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(yN("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(yN("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let X=await $.req.json(),Y=EN5.safeParse(X);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(yN(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=Y.data,G=zN5(J.model);if(!G)return $.json(yN("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:K}=G,{modelId:W}=G;if(!K){let j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>DT(E.providerId));if(!j)return $.json(yN("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);K=j.id}let H;try{H=await Z.aiProviders.activate(K,Z.organization.id)}catch{return $.json(yN(`AI provider credential not found or inaccessible: ${K}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(W),U=TN5(J.messages),N=J.tools?AN5(J.tools):void 0,B=RN5(J.response_format),O=qN5(),D=Math.floor(Date.now()/1000);if(J.stream)return _O($,async(w)=>{let j=Fz8(F,U,N,J,B,$.req.raw.signal);try{let E=ki(j),z=!1,A=0,P="",T=async()=>{if(P.length===0)return;let q=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,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:D,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>=UN5)await T()}else if(q.type==="tool-call"){await T();let f=A++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await T(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:J.model,choices:[{index:0,delta:{},finish_reason:Uz8(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 T(),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=Fz8(F,U,N,J,B,$.req.raw.signal),j=await Vi(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:D,model:J.model,choices:[{index:0,message:E,finish_reason:Uz8(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(X){let Y=X;if(Y.name==="AbortError")return $.json(yN("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(yN(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(yN(Y.message,"server_error"),500)}});Lz8=Bz8});function MN5($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function Dz8(){let $=new J1;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"),X=t0(Q);if(!X)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!R7(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","=",X).execute(),K=[];for(let H of G){if(!H.slug||V9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(mB0(U)!==J)continue;if(!MN5(U.metadata))continue;K.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let W={matches:K};return Z.json(W)}),$}var wz8=L(()=>{W8();gK()});function VN5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??IN5}}var jz8,IN5="https://ph.studio.decocms.com",Ez8;var zz8=L(()=>{W8();le();by();F9();H$();qT1();$11();jz8=new J1;jz8.get("/",($)=>{let Z={version:sG0.version,theme:Kj$(),...FH().logo&&{logo:FH().logo},...KO()&&{internalUrl:I4$()},...T0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!T0().firecrawlApiKey,hostingEnabled:!!T0().controlplaneRestUrl&&!!T0().controlplaneServiceToken,hostingControlPlaneGa:T0().hostingControlPlaneGa,monitorEnabled:!!T0().clickhouseAnalyticsUrl&&!!T0().clickhouseAnalyticsPassword,monitorGa:T0().monitorGa,plansEnabled:T0().plansEnabled,auth:yB8(),posthog:VN5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:_D()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Ez8=jz8});function an($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function ZR1($){return(an($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function Tz8($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(an($))}&sz=${Z}`}function Pz8($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let X=Q.slice(0,Z-1),Y=X.lastIndexOf(" ");return`${(Y>Z*0.6?X.slice(0,Y):X).trimEnd()}\u2026`}function Az8($){let{brand:Z,domain:Q,score:X,verdict:Y}=$,J=typeof X==="number"?`${Z} commerce report \u2014 ${Math.round(X)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,K=Y?.trim()?Pz8(`${Y.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):Pz8(`How does ${Q} really perform? ${G}`,200);return{title:J,description:K}}import{z as o0}from"zod";var tg,kN5,SN5,CN5,_N5,Rz8;var qz8=L(()=>{tg=o0.enum(["good","bad","neutral"]),kN5=o0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},o0.object({kind:o0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:o0.coerce.string().optional(),tone:tg.optional(),muted:o0.boolean().optional(),delta:o0.coerce.string().optional(),deltaDir:o0.enum(["up","down","neutral"]).optional(),points:o0.array(o0.coerce.number()).optional(),label:o0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),SN5=o0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},o0.array(kN5)),CN5={key:o0.coerce.string(),title:o0.coerce.string(),eyebrow:o0.coerce.string().optional(),headline:o0.coerce.string(),annotation:o0.coerce.string().optional(),methodology:o0.coerce.string().optional(),sources:o0.array(o0.object({name:o0.coerce.string(),logoUrl:o0.coerce.string()})).optional()},_N5=o0.discriminatedUnion("template",[o0.object({template:o0.literal("cover"),score:o0.object({value:o0.coerce.number(),max:o0.coerce.number().optional(),grade:o0.coerce.string().optional(),label:o0.coerce.string().optional()}).optional(),brandImage:o0.coerce.string().optional(),screenshot:o0.coerce.string().optional(),mobileScreenshot:o0.coerce.string().optional()}),o0.object({template:o0.literal("cta"),ctaUrl:o0.coerce.string().optional(),ctaLabel:o0.coerce.string().optional(),bullets:o0.array(o0.coerce.string()).optional()}),o0.object({template:o0.literal("series"),points:o0.array(o0.coerce.number()).min(2),xLabels:o0.array(o0.coerce.string()).min(1),unit:o0.coerce.string().optional(),callout:o0.object({index:o0.coerce.number(),value:o0.coerce.string(),tone:tg.optional()})}),o0.object({template:o0.literal("threshold"),value:o0.coerce.string().default(""),metricLabel:o0.coerce.string().optional(),ratio:o0.coerce.number(),thresholdRatio:o0.coerce.number().optional(),thresholdLabel:o0.coerce.string().default(""),tone:tg.optional()}),o0.object({template:o0.literal("stats"),stats:o0.array(o0.object({value:o0.coerce.string(),label:o0.coerce.string(),tone:tg.optional()})).min(1)}),o0.object({template:o0.literal("bars"),items:o0.array(o0.object({value:o0.coerce.string(),label:o0.coerce.string(),ratio:o0.coerce.number(),tone:tg.optional()})).min(1)}),o0.object({template:o0.literal("gauges"),gauges:o0.array(o0.object({label:o0.coerce.string(),value:o0.coerce.string(),status:o0.enum(["good","warn","bad"]).catch("warn"),caption:o0.coerce.string().optional(),ratio:o0.coerce.number().optional()})).min(1)}),o0.object({template:o0.literal("checklist"),checks:o0.array(o0.object({label:o0.coerce.string(),status:o0.enum(["pass","fail","warn"]).catch("fail"),value:o0.coerce.string().optional()})).min(1)}),o0.object({template:o0.literal("table"),columns:o0.array(o0.object({label:o0.coerce.string(),align:o0.enum(["left","right"]).optional()})).min(1),rows:o0.array(SN5).min(1),highlightRow:o0.coerce.number().optional()}),o0.object({template:o0.literal("products"),products:o0.array(o0.object({name:o0.coerce.string(),price:o0.coerce.string().optional(),image:o0.coerce.string().optional(),url:o0.coerce.string().optional()})).min(1)}),o0.object({template:o0.literal("list"),entries:o0.array(o0.object({label:o0.coerce.string(),severity:o0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:o0.coerce.number().optional()}),o0.object({template:o0.literal("keywords"),volumeLabel:o0.coerce.string().optional(),keywords:o0.array(o0.object({term:o0.coerce.string(),volume:o0.coerce.string(),position:o0.coerce.number().catch(0)})).min(1)}),o0.object({template:o0.literal("competitor"),metricLabel:o0.coerce.string().optional(),competitors:o0.array(o0.object({name:o0.coerce.string(),value:o0.coerce.string(),tone:tg.optional(),isYou:o0.boolean().optional()})).min(1)}),o0.object({template:o0.literal("scorecard"),rivalLabel:o0.coerce.string().optional(),dimensions:o0.array(o0.object({label:o0.coerce.string(),you:o0.coerce.string(),rival:o0.coerce.string().optional(),rivalName:o0.coerce.string().optional(),tone:tg.optional()})).min(1)})]),Rz8=o0.object({...CN5,template:_N5})});function yb0($){let Z=[],Q=[...$.sections].sort((Y,J)=>Y.position-J.position).map((Y)=>{let J=Rz8.safeParse(Y.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),X=Q.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:X},slides:Q},drops:Z}}var QR1=L(()=>{qz8()});import{join as Mz8}from"path";async function xN5($){try{let Z=await fetch(`${vU({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(vN5)});if(!Z.ok)return null;let Q=await Z.json(),{deck:X}=yb0(Q);if(!X.slides.length)return null;let Y=X.slides.find((K)=>K.template.template==="cover"),J=Y?.template,G=J&&J.template==="cover"?J:void 0;return{brand:X.meta.brand?.trim()||ZR1($),score:X.meta.scores?.cover??G?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function S3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function fN5($,Z){let Q=an($),X=Z?.brand?.trim()||ZR1(Q),Y=Tz8(Q,128),G=`${(T0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:K,description:W}=Az8({brand:X,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${X} commerce report by decocms`;return[`<title>${S3(K)}</title>`,`<meta name="description" content="${S3(W)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${S3(K)}" />`,`<meta property="og:description" content="${S3(W)}" />`,`<meta property="og:url" content="${S3(G)}" />`,`<meta property="og:image" content="${S3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${S3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${S3(K)}" />`,`<meta name="twitter:description" content="${S3(W)}" />`,`<meta name="twitter:image" content="${S3(H)}" />`,`<meta name="twitter:image:alt" content="${S3(F)}" />`,`<link rel="canonical" href="${S3(G)}" />`,`<link rel="icon" href="${S3(Y)}" sizes="any" />`].join(`
5422
5422
  `)}function bN5($,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}
5423
- </head>`)}function Iz8($){let Z=new J1;return Z.get("/:domain/og.png",async(Q)=>{let X=an(Q.req.param("domain")),Y=async()=>{let J=$?Bun.file(Mz8($,"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(`${vU({})}/api/v2/public/diagnostics/${encodeURIComponent(X)}/og.png`,{signal:AbortSignal.timeout(yN5)}),G=J.headers.get("content-type")??"";if(!J.ok||!G.startsWith("image/")||!J.body)return Y();return Q.body(J.body,200,{"Content-Type":G,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(Q)=>{let X=Q.req.param("domain"),Y=$?Mz8($,"index.html"):null,J=Y?Bun.file(Y):null;if(!J||!await J.exists())return Q.notFound();let G=await J.text();try{let K=await xN5(an(X)),W=fN5(X,K);return Q.html(bN5(G,W),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var vN5=2500,yN5=1e4;var Vz8=L(()=>{W8();QR1();$2();H$()});function S90($,Z){return fetch(`${vU({})}${$}`,Z)}async function gN5($,Z,Q){let X=new URLSearchParams;if(Z)X.set("pw",Z);if(Q)X.set("lang",Q);let Y=X.toString()?`?${X.toString()}`:"",J=await S90(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(J.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!J.ok)throw Error(`report read HTTP ${J.status}`);let G=await J.json(),{deck:K,drops:W}=yb0(G);return{status:K.slides.length?"ready":"empty",deck:K,scanned_at:G.scanned_at,drops:W}}var hN5,xO,kz8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Sz8;var Cz8=L(()=>{W8();Y3();$2();QR1();hN5=new Set(["complete","errored","terminated","unknown"]),xO=new J1;xO.use("*",async($,Z)=>{let Q=await _8.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});xO.use("/link-token/*",kz8);xO.use("/suggest",kz8);xO.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.get("reportUser"),X=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let J=await gN5(Z,X,Y);if($.header("Cache-Control","private, no-store"),Q||!J.deck)return $.json(J);return $.json({...J,deck:{...J.deck,slides:J.deck.slides.slice(0,1)},truncated:J.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});xO.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let X=typeof Q.domain==="string"?Q.domain.trim():"";if(!X)return $.json({error:"domain is required"},400);let Y=Z?.email,J=typeof Q.distinctId==="string"&&Q.distinctId.trim()&&Q.distinctId.length<=200?Q.distinctId.trim():void 0;try{let G=await S90("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${eA({})}`},body:JSON.stringify({url:X,...Y?{email:Y}:{},distinct_id:J})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let K=await G.json(),W=K.blocked?{state:"blocked"}:K.status==="fresh"?{state:"fresh"}:K.mode==="sync"?{state:"sync"}:{state:"running",id:K.id??null};return $.json(W)}catch{return $.json({error:"run failed"},502)}});xO.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await S90(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${eA({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let Y=(await Q.json()).status??"unknown",J={done:hN5.has(Y),status:Y};return $.json(J)}catch{return $.json({error:"status failed"},502)}});xO.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await S90(`/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)}});xO.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await S90(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let X=await Q.json();return $.json({suggestions:Array.isArray(X.suggestions)?X.suggestions:[]})}catch{return $.json({suggestions:[]})}});Sz8=xO});var uN5=1048576,XR1;var _z8=L(()=>{W8();WF();H$();FT1();XR1=new J1;XR1.post("/webhook",z9({maxSize:uN5,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=T0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!aN8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=rN8(Q);if(!Y)return $.json({error:"invalid payload"},400);let J=await sN8(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as lN5}from"crypto";function dN5($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let X=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==X.length)return!1;return lN5(Buffer.from(Y),Buffer.from(X))}function iN5($,Z){let Q=Z,X=Q?.repository?.name,Y=Q?.repository?.owner?.login;if(typeof X!=="string"||typeof Y!=="string")return[];let J=[];if($==="check_suite"){if(Q.action!=="completed")return[];let G=Q.check_suite?.pull_requests;for(let K of Array.isArray(G)?G:[]){let W=K?.number;if(typeof W==="number")J.push(W)}}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:Y,repoName:X,number:G}))}function vz8($){let Z=new J1;return Z.post("/webhook",z9({maxSize:cN5,onError:(Q)=>Q.json({error:"payload too large"},413)}),async(Q)=>{let X=process.env.GITHUB_WEBHOOK_SECRET;if(!X)return Q.json({error:"github webhook not configured"},503);let Y=await Q.req.text();if(!dN5(Y,Q.req.header("x-hub-signature-256"),X))return Q.json({error:"invalid signature"},400);let J=Q.req.header("x-github-event");if(J!=="push"&&!mN5.has(J??""))return Q.json({ok:!0,ignored:"event"});let G;try{G=JSON.parse(Y)}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 mH1())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let K=iN5(J??"",G);if(K.length===0)return Q.json({ok:!0,ignored:"no-pr"});let W=await pN5($,K);return Q.json({ok:!0,refreshed:W})}),Z}async function pN5($,Z){let Q=0;for(let X of Z){let Y=$.taskBoard(),J;try{J=await Y.findPrLinks(X)}catch(G){console.error("[github-webhook] pr link lookup failed:",G);continue}for(let G of J)try{let K=await Y.getById(G.taskBoardItemId,G.organizationId),W=K?await $.contextFactory()(G.organizationId,K.assignedBy??K.createdBy):null;if(!W)continue;if(await Oe$(W,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(K){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,K)}}return Q}var cN5=5242880,mN5;var xz8=L(()=>{W8();WF();lH();V7();mN5=new Set(["check_suite","issue_comment"])});function fz8($){let Z=new TO($.db,new SG($.encryptionKey)),Q=new J1;return Q.get("/attachments/:token",async(X)=>{let Y=vr$(X.req.param("token"));if(!Y)return X.json({error:"Invalid or expired link"},404);let J=await Z.getByOrg(Y.organizationId);if(!J)return X.json({error:"Jira is not connected"},404);let K=await new lY(J.siteUrl,J.email,J.apiToken).downloadAttachment(Y.attachmentId);if(!K.ok||!K.body)return X.json({error:"Jira refused the download"},502);let W=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=K.headers.get(H);if(F)W.set(H,F)}return W.set("cache-control","no-store"),new Response(K.body,{status:200,headers:W})}),Q}var bz8=L(()=>{W8();LT();oU1();pE()});function yz8($){let Z=new TO($.db,new SG($.encryptionKey));async function Q(Y,J){let G=pW8(J);if(!G)return;let K=await Z.getByWebhookSecret(Y);if(!K?.enabled)return;let W=await sK($.db,K.organizationId);if(!W)return;if(await Rx0(W,K,G)==="started")console.log(`[jira-webhook] started a run for ${G.issueKey} entering "${G.toStatus}"`)}let X=new J1;return X.post("/webhook/:secret",z9({maxSize:nN5}),async(Y)=>{let J=Y.req.param("secret");if(!await Z.getByWebhookSecret(J))return Y.json({error:"Unknown webhook"},404);let K;try{K=await Y.req.json()}catch{return Y.json({error:"Body must be JSON"},400)}return Q(J,K).catch((W)=>{console.error("[jira-webhook] trigger failed",W)}),Y.body(null,202)}),X}var nN5=1048576;var gz8=L(()=>{W8();WF();LT();qx0();Sy()});import{DBOS as gb0,SchedulerMode as tN5}from"@dbos-inc/dbos-sdk";function uz8($){JR1=$}function lz8(){if(!JR1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return JR1}function cz8(){let $=lz8();return new TO($.db,new SG($.encryptionKey))}async function rN5($,Z){try{let Q=await cz8().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let X=await sK(lz8().db,Q.organizationId);if(!X)return{integrationId:$,started:0};if((await X.storage.jiraIntegrations.listAutomations(Q.organizationId)).length===0)return{integrationId:$,started:0};let J=new lY(Q.siteUrl,Q.email,Q.apiToken),K=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${hz8}m"`,W=0,H;for(let F=0;F<aN5;F++){let U=await J.searchIssues({jql:K,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=nW8(N,N.changelog?.histories??[],Z);for(let O of B)if(await Rx0(X,Q,O)==="started")W++}if(H=U.nextPageToken??void 0,!H)break}return{integrationId:$,started:W}}catch(Q){return{integrationId:$,started:0,error:Q instanceof Error?Q.message:String(Q)}}}async function sN5($,Z){let Q=new Date($.getTime()-hz8*60000),X=await gb0.runStep(()=>cz8().listEnabledIds(),{name:"loadJiraIntegrations"});if(X.length===0)return;let Y=await Promise.all(X.map((J)=>gb0.runStep(()=>rN5(J,Q),{name:`sweepJira:${J}`})));for(let J of Y)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 mz8(){if(YR1)return;YR1=gb0.registerWorkflow(sN5,{name:"jiraTriggerSweepWorkflow"}),gb0.registerScheduled(YR1,{name:"jiraTriggerSweepWorkflow",crontab:oN5,mode:tN5.ExactlyOncePerIntervalWhenActive})}var oN5="7-59/10 * * * *",hz8=15,aN5=5,JR1=null,YR1=null;var dz8=L(()=>{LT();Sy();pE();qx0()});function iz8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var pz8,eN5,$B5,nz8;var tz8=L(()=>{W8();HH();ri();qd();pz8=new J1,eN5=["range","if-none-match","if-modified-since"],$B5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];pz8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(jn($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new q$(401,{message:"Authentication required"})}if(!Q)throw new q$(401,{message:"Organization context required"});let X=$.req.path.replace(/^.*\/files\//,"");if(!X)throw new q$(400,{message:"Missing file key"});let Y=await n40(X,Z);if(!Y)throw new q$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&fK()){let W=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!W)throw new q$(500,{message:"Invalid data URL from storage"});let[,H,F]=W,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return iz8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let W of eN5){let H=$.req.header(W);if(H)J.set(W,H)}let G=await fetch(Y,{headers:J});if(G.status===403||G.status===404)throw new q$(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:`,X),new q$(502,{message:"Upstream storage error"});let K=new Headers;for(let W of $B5){let H=G.headers.get(W);if(H)K.set(W,H)}return K.set("Cache-Control","private, max-age=86400"),iz8(K,K.get("content-type")??""),new Response(G.body,{status:G.status,headers:K})});nz8=pz8});var C90=b((og)=>{var ZB5=og&&og.__createBinding||(Object.create?function($,Z,Q,X){if(X===void 0)X=Q;var Y=Object.getOwnPropertyDescriptor(Z,Q);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,X,Y)}:function($,Z,Q,X){if(X===void 0)X=Q;$[X]=Z[Q]}),QB5=og&&og.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))ZB5(Z,$,Q)};Object.defineProperty(og,"__esModule",{value:!0});QB5(IG(),og)});var rz8=b((oz8)=>{Object.defineProperty(oz8,"__esModule",{value:!0});oz8.version=void 0;oz8.version="3.4.0"});var $P8=b((gN)=>{var XB5=gN&&gN.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(gN,"__esModule",{value:!0});gN.NodeTransport=gN.VERSION=void 0;gN.nodeResolveHost=HB5;var p5=C90(),YB5=B0("net"),GR1=B0("tls"),JB5=B0("path"),sz8=B0("fs"),GB5=XB5(B0("dns")),KB5=rz8();gN.VERSION=KB5.version;var WB5="nats.js";class ez8{socket;version;lang;yields=[];signal=(0,p5.deferred)();closedNotification=(0,p5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=WB5,this.version=gN.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:X}=Q||{};try{if(X===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,p5.checkOptions)(Y,Z);let{tls_required:J,tls_available:G}=Y,K=G===!0&&Z.tls!==null;if(!X&&(J||K))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw p5.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let J=Y;if(!J)J=new p5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,K=G==="ECONNREFUSED"?new p5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),K}}dial($){let Z=(0,p5.deferred)(),Q,X=(0,YB5.createConnection)($.port,$.hostname,()=>{Z.resolve(X),X.removeAllListeners()});return X.on("error",(Y)=>{Q=Y}),X.on("close",()=>{X.removeAllListeners(),Z.reject(Q)}),X.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,p5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let X=p5.DataBuffer.concat(...this.yields),Y=(0,p5.extractProtocolMessage)(X);if(Y!=="")try{let J=p5.INFO.exec(Y);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,p5.deferred)();try{if($=(0,JB5.resolve)($),!(0,sz8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,sz8.readFile)($,(Q,X)=>{if(Q)return Z.reject(Q);Z.resolve(X)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:X,ca:Y,keyFile:J,key:G}=this.options.tls;try{if(Z){let K=await this.loadFile(Z);if(K)$.cert=K}else if(Q)$.cert=Q;if(J){let K=await this.loadFile(J);if(K)$.key=K}else if(G)$.key=G;if(X){let K=await this.loadFile(X);if(K)$.ca=[K]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(K){return Promise.reject(K)}}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 Y=await this.loadClientCerts()||{};Q=(0,p5.extend)(Q,this.options.tls,Y)}catch(Y){return Promise.reject(new p5.errors.ConnectionError(Y.message,{cause:Y}))}let X=(0,p5.deferred)();try{let Y=(0,GR1.connect)($.port,$.hostname,Q,()=>{Y.removeAllListeners(),X.resolve(Y)});Y.on("error",(J)=>{Z=J}),Y.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{X.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){X.reject(new p5.errors.ConnectionError(Y.message,{cause:Y}))}return X}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Z=(0,p5.extend)(Z,this.options.tls,X)}catch(X){return Promise.reject(new p5.errors.ConnectionError(X.message,{cause:X}))}let Q=(0,p5.deferred)();try{let X=(0,GR1.connect)(Z,()=>{X.removeAllListeners(),Q.resolve(X)});X.on("error",(Y)=>{$=Y}),X.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Q.reject($),X.removeAllListeners()})}catch(X){Q.reject(new p5.errors.ConnectionError(X.message,{cause:X}))}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,p5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,p5.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 GR1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,p5.render)($)}`);let Z=(0,p5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,p5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,p5.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}}gN.NodeTransport=ez8;function HB5($){let Z=(0,p5.deferred)();return GB5.default.lookup($,{all:!0},(Q,X)=>{if(Q){Z.reject(Q);return}let Y=[];for(let J of X)Y.push(J.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var JP8=b((YP8)=>{Object.defineProperty(YP8,"__esModule",{value:!0});YP8.connect=FB5;var ZP8=$P8(),QP8=C90(),XP8=C90();function FB5($={}){if((0,XP8.hasWsProtocol)($))return Promise.reject(XP8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,QP8.setTransportFactory)({factory:()=>{return new ZP8.NodeTransport},dnsResolveFn:ZP8.nodeResolveHost}),QP8.NatsConnectionImpl.connect($)}});var GP8=b((fO)=>{var NB5=fO&&fO.__createBinding||(Object.create?function($,Z,Q,X){if(X===void 0)X=Q;var Y=Object.getOwnPropertyDescriptor(Z,Q);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,X,Y)}:function($,Z,Q,X){if(X===void 0)X=Q;$[X]=Z[Q]}),BB5=fO&&fO.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))NB5(Z,$,Q)};Object.defineProperty(fO,"__esModule",{value:!0});fO.connect=void 0;var LB5=JP8();Object.defineProperty(fO,"connect",{enumerable:!0,get:function(){return LB5.connect}});BB5(C90(),fO)});function FP8($){let Z=$?.connectFn??jB5,Q=null,X=null,Y=!1,J=!1,G=!1,K=[];function W(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${K.length} callbacks`);for(let N of K)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,X=null,H()})().catch(()=>{})}async function U(N,B){let O=0;while(!J)try{Q=await Z({servers:N,timeout:wB5,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${O} attempt(s)`),X=null,G=!1,F(Q),H();return}catch{O++;let D=NQ(DB5,OB5,O-1,2,0.5);await k$(D)}}return{init(N,B){if(Y)return;Y=!0,J=!1;let O=B?.creds?KP8.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(N,O).catch(()=>{})},isConnected(){return W()},getConnection(){return W()?Q:null},getJetStream(){if(!W())return null;if(!X)X=HP8.jetstream(Q);return X},onReady(N){if(K.push(N),W())try{N()}catch{}},async drain(){if(J=!0,Y=!1,X=null,G=!1,Q){let N=Q;Q=null,await N.drain().catch(()=>{})}}}}function jB5($){return WP8.connect($)}var KP8,WP8,HP8,OB5=100,DB5=3000,wB5=3000;var UP8=L(()=>{w8();KP8=_(sa(),1),WP8=_(GP8(),1),HP8=_(vB(),1)});function hb0($){let Z=$?.ttlMs??60000,Q=$?.maxSize??1e4,X=$?.updateRecencyOnGet??!1,Y=new Map;function J(){if(Y.size<=Q)return;let G=Date.now();for(let[K,W]of Y)if(W.expiresAt<=G)Y.delete(K);while(Y.size>Q){let K=Y.keys().next().value;if(K===void 0)break;Y.delete(K)}}return{get(G){let K=Y.get(G);if(!K)return;if(K.expiresAt<=Date.now()){Y.delete(G);return}if(X)Y.delete(G),Y.set(G,K);return K.value},set(G,K){Y.delete(G),Y.set(G,{value:K,expiresAt:Date.now()+Z}),J()},delete(G){Y.delete(G)},clear(){Y.clear()},size(){return Y.size}}}function ub0($,Z){return`${$}.${Z}`}class KR1{cache;constructor($){this.cache=hb0({ttlMs:$?.ttlMs??EB5,maxSize:$?.maxSize??zB5})}async get($,Z){return this.cache.get(ub0($,Z))??null}async set($,Z,Q){this.cache.set(ub0($,Z),Q)}async invalidate($,Z){this.cache.delete(ub0($,Z)),this.cache.delete(ub0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var EB5=600000,zB5=5000;var NP8=()=>{};function lb0($,Z){return`${$}:${Z}`}function WR1($){let Z=hb0({ttlMs:$?.ttlMs??PB5,maxSize:$?.maxSize??TB5}),Q=$?.getConnection,X=crypto.randomUUID(),Y=new TextEncoder,J=new TextDecoder,G=null;function K(W,H){let F=Q?.();if(!F)return;try{F.publish(BP8,Y.encode(JSON.stringify({organizationId:W,keyId:H,originId:X})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(W,H){return Z.get(lb0(W,H))},set(W,H,F){Z.set(lb0(W,H),F)},invalidate(W,H){Z.delete(lb0(W,H)),K(W,H)},start(){if(G)return;let W=Q?.();if(!W)return;G=W.subscribe(BP8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===X)continue;Z.delete(lb0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var BP8="studio.ai-provider-keys.invalidate",PB5=30000,TB5=5000;var LP8=()=>{};class HR1{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,X=Z.subscribe("studio.decopilot.cancel");this.subscription=X,(async()=>{for await(let Y of X)try{let J=JSON.parse(Q.decode(Y.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 OP8=($)=>{let Z;return()=>Z??=$()},FR1,UR1;var DP8=L(()=>{_6();FR1=OP8(()=>A$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),UR1=OP8(()=>A$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function kB5($=EP8){return{name:BN,subjects:[`${nB1}.>`],storage:UF.StorageType.File,max_age:qB5,max_bytes:IB5,max_msgs_per_subject:VB5,discard:UF.DiscardPolicy.Old,retention:UF.RetentionPolicy.Limits,duplicate_window:MB5,num_replicas:$}}class zP8{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 wP8($){let Z=jP8.headers();for(let[Q,X]of Object.entries($))Z.set(Q,X);return Z}function vB5($,Z){let Q=0;return{publish(X,Y,J,G){X.publish(Y,J,G?{headers:G}:void 0).catch((K)=>{if(Q++,RB5().add(1,{"org.id":Z??"unknown"}),Q===1||Q%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${Q} total):`,K)})},get errorCount(){return Q}}}function xB5($,Z){return $.info?.cluster?Z:1}function fB5($){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 NR1{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(X,Y)=>{let J=kB5(Y);try{await X.streams.info(BN),await X.streams.update(BN,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await X.streams.add(J),await X.streams.update(BN,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await X.streams.delete(BN),await X.streams.add(J);else throw G}},Q=await u8(async()=>{let X=this.options.getJetStreamManager?await this.options.getJetStreamManager():await UF.jetstreamManager($),Y=xB5($,EP8);try{await Z(X,Y)}catch(J){if(Y<=1||!fB5(J))throw J;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${Y} (${J.message}); falling back to an unreplicated stream`),await Z(X,1)}return X},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:Gp});this.js=this.options.getJetStream(),this.jsm=Q,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,Q,X){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let J=vB5(Z,X),G=!1,K=()=>{if(G)return;G=!0;let H=e18(Z);Y.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",K,{once:!0});let W=(H)=>{let F=performance.now(),U=oB1(H,{runId:Z}),N=performance.now()-F;FR1().record(N),UR1().add(1,{"org.id":X??"unknown"}),_B5?.record(N,U.reduce((B,O)=>B+O.data.length,0));for(let B of U)J.publish(Y,B.subject,B.data,B.headers?wP8(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(W(O),U++,++F>=64)F=0,await new Promise((D)=>setImmediate(D))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),K(),CB5)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 u8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:wP8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Gp}),!0}catch(Q){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,Q),!1}}async publishRawChunk($,Z,Q){let X=this.js;if(!X)return!1;let Y=performance.now(),J=oB1(Z,{runId:$,dedup:Q});FR1().record(performance.now()-Y),UR1().add(1);for(let G of J)if(!await this.publishSerialized(X,G))return!1;return!0}async publishDone($,Z,Q){let X=this.js;if(!X)return!1;let Y=s18({runId:$,fenceToken:Z,finalSeq:Q});return await this.publishSerialized(X,Y)}async createTailStream($,Z,Q){let X=this.js;if(!X)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=Q?.deliverPolicy==="new"?UF.DeliverPolicy.New:UF.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=$z($),K;try{K=await u8(async()=>{return(await X.consumers.get(BN,{filter_subjects:G,deliver_policy:Y})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Gp})}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let F=aS0({messages:async function*(){try{for await(let D of K)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{K.stop()}}(),onCancel:()=>K.stop()}).pipeThrough(pS0()).pipeThrough(nS0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,O=()=>{if(B)return;B=!0,K.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:w,value:j}=await F.read();if(w){O(),D.close();return}let E=j;if(E.kind==="done"){if(J){O(),D.close();return}continue}D.enqueue(E.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(BN,{filter:$z($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var UF,jP8,AB5=($)=>{let Z;return()=>Z??=$()},RB5,qB5=86400000000000,MB5=120000000000,IB5=4294967296,EP8,VB5=500000,SB5,CB5,_B5;var PP8=L(()=>{w8();aB1();rS0();tS0();_6();DP8();UF=_(vB(),1),jP8=_(sa(),1),RB5=AB5(()=>A$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),EP8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);SB5=process.env.STREAM_ENCODE_TRACE==="1",CB5=process.env.DECOPILOT_STREAM_TRACE==="1";_B5=SB5?new zP8:null});function cb0($,Z,Q,X){if(!X)return!1;return $.emit(Z,cF(Q,X.status,{title:X.title??void 0,virtualMcpId:X.virtual_mcp_id??void 0,createdBy:X.created_by??void 0,triggerId:X.trigger_id??null,branch:X.branch??null,harnessId:X.harness_id??void 0,createdAt:X.created_at,updatedAt:X.updated_at})),!0}var TP8=L(()=>{Z4()});class BR1{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 bB5($,Z){let Q=$.startsWith("thread:")?cH($):$;return[...new Set([Z,Q].filter((X)=>!!X))]}async function AP8($,Z){let Q=Z.organizationId;try{let X=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let Y of X){let J=await XN($,Y);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(Y),K=await Ni($,{threadId:Y,runBranch:G?.branch}),W=bB5(K,await OV0($,Y)),H=await t$0($,Q,wK1(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 W){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 w3(Q).catch(()=>{}),console.log(`[task-board] ${Z.id}: linked ${U.url} found on branch ${F}`),!0}}}catch(X){console.error("[task-board] PR lookup by branch failed",X)}return!1}var RP8=L(()=>{aZ();tK();V7()});async function qP8($,Z,Q){let X=Z.organizationId;if(!oJ(Z))return!1;if(!Cy(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,X))return!1;let Y=await $.storage.organizationSettings.get(X),J=dU(Y?.flags),G=await $.storage.taskBoard.update(Z.id,X,{status:J},Z.updatedBy);return await o6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),P8(X,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var MP8=L(()=>{v4();cX();di();nH();f9()});function mB5($){return $ instanceof vY}function dB5($,Z){return Z-$>=lB5}class LR1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,Q,X={}){this.taskBoard=$;this.contextFactory=Z;this.billing=Q;this.options=X}start(){if(this.timer)return;let $=this.options.intervalMs??yB5;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??hB5,Q=this.options.itemIntervalMs??gB5,X=new Date(Date.now()-Q),Y=await this.taskBoard.listItemsPendingReview(Z,this.cursor,X),J=Y.at(-1);this.cursor=Y.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:K}of Y)try{if(await this.reconcileItem(G,K,X))$++}catch(W){console.error(`[task-board-review-sweeper] ${G} failed`,W)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}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()-mU1),QB1);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()-cB5));for(let{id:Q,organizationId:X,threadId:Y}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${Q}`),await eN1(this.taskBoard,Y,X),await $B1(this.taskBoard,this.billing,Y,X)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async dispatchDueRetries($){let Z=0,Q=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:X,organizationId:Y,attempts:J}of Q)try{if(!await this.taskBoard.claimDueRetry(X,Y,new Date))continue;let G=await this.taskBoard.getById(X,Y);if(!G||G.status!==u$.progress||G.assigneeId!==M8)continue;let K=await this.contextFactory(Y,G.assignedBy??G.createdBy);if(!K)continue;await tH(K,G,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${X} after a failure (attempt ${J})`)}catch(G){if(console.error(`[task-board-review-sweeper] retry dispatch for ${X} failed`,G),mB5(G)){await this.returnToTodo(X,Y,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(X,Y,J,new Date(Date.now()+uB5)).catch((K)=>console.error(`[task-board-review-sweeper] re-arming ${X} failed`,K))}return Z}async returnToTodo($,Z,Q){try{let X=await this.taskBoard.getById($,Z);if(!X||X.status!==u$.progress)return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,X.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q}}).catch(()=>{}),P8(Z,Y)}catch(X){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,X)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!dB5(_L(Q,Z.reviewCycleStartedAt),Date.now()))return;await FN($,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 X=await this.taskBoard.getById($,Z);if(!X)return!1;if(!oJ(X))return!1;let Y=X.assigneeId===M8,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,X.assignedBy??X.createdBy);if(!G)return!1;if(J.length===0){if(await AP8(G,X))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(Y)await this.handOffReviewWithoutPr(G,X);return!1}}let K=await Promise.all(J.map(async(W)=>({...W,...await ni(Z,W)})));if(K.every((W)=>W.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${K.length} PR(s)) \u2014 proceeding on unknown`);if(await qP8(G,X,K))return!0;if(await X88(G,X))return!0;if(await this.resolveConflictFromSweep(G,X,K))return!0;if(!Y)return!1;if(!oN1(K))return!1;return await ii(G,X,{previewMatchesHead:aN1(K)}),!0}async resolveConflictFromSweep($,Z,Q){let X=Q.find((Y)=>Y.state!=="closed"&&Y.conflict===!0);if(!X)return!1;return await aE($,Z.organizationId,Z,{pr:{number:X.number,url:X.url},conflict:!0}).catch((Y)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",Y),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var yB5=60000,gB5=300000,hB5=50,uB5=60000,lB5=900000,cB5=120000;var IP8=L(()=>{v4();HS0();RP8();UN();Y60();nH();MP8();f9();lK();XB1();V7();S40();pi()});import{readdir as iB5,rm as mb0}from"fs/promises";import{join as db0}from"path";async function ib0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-pB5),Z.setUTCHours(0,0,0,0);let Q=0;try{let X=await ag($);for(let Y of X)if(/^\d{4}$/.test(Y))Q+=await VP8($,Y,Z);else if(!Y.startsWith(".")){let J=db0($,Y),G=await ag(J);for(let W of G){if(!/^\d{4}$/.test(W))continue;Q+=await VP8(J,W,Z)}if((await ag(J)).length===0)await mb0(J,{recursive:!0,force:!0})}}catch(X){console.warn("monitoring retention cleanup failed:",X)}return Q}async function VP8($,Z,Q){let X=0,Y=db0($,Z),J=await ag(Y);for(let K of J){if(!/^\d{2}$/.test(K))continue;let W=db0(Y,K),H=await ag(W);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${K}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=db0(W,U);await mb0(B,{recursive:!0,force:!0}),X++}}if((await ag(W)).length===0)await mb0(W,{recursive:!0,force:!0})}if((await ag(Y)).length===0)await mb0(Y,{recursive:!0,force:!0});return X}async function ag($){try{return(await iB5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var pB5=30;var OR1=()=>{};import{DBOS as DR1,SchedulerMode as nB5}from"@dbos-inc/dbos-sdk";async function oB5(){let $=[SW(),lu(),PB()],Z=0;for(let Q of $)try{Z+=await ib0(Q)}catch(X){console.error("[monitoring-retention] cleanup failed:",X)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function aB5($,Z){await DR1.runStep(()=>oB5(),{name:"monitoringRetention"})}function SP8(){if(kP8)return;kP8=!0;let $=DR1.registerWorkflow(aB5,{name:"monitoringRetentionWorkflow"});DR1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:tB5,mode:nB5.ExactlyOncePerIntervalWhenActive})}var tB5="23 4 * * *",kP8=!1;var CP8=L(()=>{o3();OR1()});function _P8($){return async(Z,Q)=>{let X=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(!X)return console.warn(`[automationContextFactory] User ${Q} not found in org ${Z} \u2014 returning null`),null;let Y=await dQ.create();Y.auth.user={id:Q,role:X.role},Y.organization={id:X.orgId,slug:X.orgSlug,name:X.orgName};let J=await F2($.db,Z,X.role);return Y.boundAuth=QT1({auth:Y.authInstance,headers:new Headers,role:X.role,permissions:J,userId:Q}),Y.access=new tT(Q,void 0,Y.boundAuth,X.role,"self"),oE(Y,{id:X.orgId,slug:X.orgSlug}),Y}}var vP8=L(()=>{eW();lU()});import{EventEmitter as rB5}from"events";var wR1;var xP8=L(()=>{aP();wR1=new rB5;wR1.on("request",($)=>{cD($)})});function fP8(){return async($,Z)=>{let Q=Date.now(),X=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let J="",G=!1;if(Y.startsWith("/mcp")&&X==="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=rn(N.params.name),O=N.params.arguments||{},D=Object.keys(O).map((j)=>rn(j)),w=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";J=`${X9.tool}${B}${X9.dim}(${w})${X9.reset}`}else if(N.method)J=`${X9.dim}${rn(N.method)}${X9.reset}`}}catch{}}let K=rn(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";K=`/mcp/${X9.mcp}${rn(F.slice(0,12))}\u2026${X9.reset}`}else if(Y==="/mcp")K=`${X9.mcp}/mcp${X9.reset}`;else if(Y==="/mcp/registry")K=`${X9.mcp}/mcp/registry${X9.reset}`;let W=eB5(X),H=G?"\u25C0":"\u2190";if(!rG0())console.log(`${X9.dim}${H}${X9.reset} ${W}${X}${X9.reset} ${K}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=sB5(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=G?"\u25B6":"\u2192";if(!rG0())console.log(`${X9.dim}${O}${X9.reset} ${W}${X}${X9.reset} ${K}${J?` ${J}`:""} ${N}${U}${X9.reset} ${X9.duration}${B}${X9.reset}`);wR1.emit("request",{method:X,path:rn(Y),status:U,duration:F,timestamp:new Date})}}}var X9,sB5=($)=>{if($>=500)return X9.serverError;if($>=400)return X9.clientError;if($>=300)return X9.redirect;return X9.ok},eB5=($)=>{return X9[$]||X9.reset},rn=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var bP8=L(()=>{aP();xP8();X9={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 uP8}from"crypto";import{mkdir as $L5,readdir as ZL5,rm as yP8,stat as lP8}from"fs/promises";import{join as ER1,relative as QL5}from"path";import{z as s$}from"zod";function mP8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return ER1(XL5,Z)}function dP8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function jR1($,Z){let Q=mP8($),X=dP8(Z);return ER1(Q,X)}function YL5($,Z,Q,X){let Y=T0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${X}`;return uP8("sha256",Y).update(J).digest("hex")}function hP8($,Z,Q,X,Y){let J=Math.floor(Date.now()/1000)+X,G=YL5(Z,Q,J,Y),K=new URL(`/api/dev-assets/${Z}/${dP8(Q)}`,$);return K.searchParams.set("expires",J.toString()),K.searchParams.set("signature",G),K.searchParams.set("method",Y),K.toString()}function iP8($,Z,Q){let X=`${$}:${Z.getTime()}:${Q}`;return`"${uP8("md5","etag").update(X).digest("hex")}"`}async function pP8($,Z,Q,X,Y){try{let J=await ZL5($,{withFileTypes:!0});for(let G of J){let K=ER1($,G.name),H=QL5(Z,K).replace(/\\/g,"/");if(Q&&!H.startsWith(Q))continue;if(G.isDirectory())if(X){let F=H+"/";if(!Q||F.startsWith(Q)){if(!(Q?H.slice(Q.length):H).includes("/"))Y.commonPrefixes.add(F)}}else await pP8(K,Z,Q,X,Y);else if(G.isFile()){if(X&&Q){let F=H.slice(Q.length);if(F.includes(X)){let U=F.indexOf(X),N=Q+F.slice(0,U+1);Y.commonPrefixes.add(N);continue}}try{let F=await lP8(K);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:iP8(K,F.mtime,F.size)})}catch{}}}}catch{}}function nP8($,Z){let X=U0($).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(Y)=>{let J=Y,G=J.prefix||"",K=J.maxKeys??1000,W=J.delimiter,H=J.continuationToken,F=mP8(X);await $L5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await pP8(F,F,G,W,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+K),O=N+K<U.objects.length,D=O?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:O,nextContinuationToken:D,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(Y)=>{let J=Y,G=jR1(X,J.key),K=await lP8(G);return{contentType:eT1(J.key),contentLength:K.size,lastModified:K.mtime.toISOString(),etag:iP8(G,K.mtime,K.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(Y)=>{let J=Y,G=J.expiresIn??gP8;return{url:hP8(Z,X,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(Y)=>{let J=Y,G=J.expiresIn??gP8;return{url:hP8(Z,X,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(Y)=>{let J=Y,G=jR1(X,J.key);try{return await yP8(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(Y)=>{let J=Y,G=[],K=[];return await Promise.all(J.keys.map(async(W)=>{let H=jR1(X,W);try{await yP8(H),G.push(W)}catch(F){K.push({key:W,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:K}}}]}async function zR1($,Z,Q){let X=nP8(Z,Q),Y=new pw({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:IZ});for(let G of X){let K="shape"in G.inputSchema?G.inputSchema.shape:s$.object({}).shape,W=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:s$.object({}).shape;Y.registerTool(G.name,{description:G.description??"",inputSchema:K,outputSchema:W,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 T3({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(J),YW(Y,J,$,"mcp:dev-assets")}async function tP8($,Z,Q,X){let J=nP8(Q,X).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 XL5="./data/assets",gP8=3600,cP8,oP8;var aP8=L(()=>{H$();Bp();W8();yH0();Np();OJ();ff0();cP8=new J1;cP8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),X=`${Q.protocol}//${Q.host}`;return zR1($.req.raw,Z,X)});oP8=cP8});var rP8={};W0(rP8,{mountDevRoutes:()=>JL5});function JL5($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(X)=>{let Y=X.get("studioContext"),J=new URL(X.req.url),G=`${J.protocol}//${J.host}`;return zR1(X.req.raw,Y,G)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(X)=>{let Y=X.get("studioContext"),J=new URL(X.req.url),G=`${J.protocol}//${J.host}`,K=X.req.param("toolName");if(!K)return X.json({error:"Missing tool name"},400);let W=await X.req.json(),H=await tP8(K,W,Y,G);if(H.isError)return X.json(H.content,500);return X.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",oP8);let Q=new J1;Q.use("*",HF({mountPath:"/api/dev-assets"})),Q.route("/",xf0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var sP8=L(()=>{W8();pT1();ff0();aP8()});var WT8={};W0(WT8,{watchHandler:()=>KT8,resolveCorsOrigin:()=>JT8,isSsoExemptPath:()=>XT8,isAllowedOAuthRedirectUri:()=>GT8,createApp:()=>OL5});import{readFileSync as GL5}from"fs";import{PrometheusSerializer as KL5}from"@opentelemetry/exporter-prometheus";import{DBOS as bO}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as FL5,oAuthProtectedResourceMetadata as UL5}from"better-auth/plugins";async function WL5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,$T8(eP8)])}catch{return Z.then((X)=>X.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),$T8(eP8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function $T8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function XT8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${zf0}/`)||$.startsWith(`${Of0}/`)}function YT8($){return $==="local.studio.decocms.com"}function JT8($,{baseUrl:Z,requestOrigin:Q}){let X;try{X=new URL($).hostname}catch{return null}if(X==="localhost"||X==="127.0.0.1")return $;if(YT8(X))return $;let Y=Z??Q;try{if(new URL(Y).origin===$)return $}catch{}return null}function GT8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"||YT8($.hostname)}async function OL5($={}){let Z=$.database??K8(),Q=!1;E9.stop().catch((Q0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",Q0)});let X,Y,J,G,K=new KR1,W,H,F,U=null;if($.disableNats)W=WR1(),X={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},Y=null,J=null,G=new B60,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(Q0)=>{return(async()=>{let j0=Q0.getReader();try{while(!0){let{done:e}=await j0.read();if(e)break}}catch{}finally{j0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=FP8();let Q0=T0().natsCredsPath,j0;if(Q0)try{j0=GL5(Q0,"utf8")}catch(g0){console.error(`[app] failed to read NATS_CREDS at ${Q0}; connecting anonymously`,g0)}U.init(T0().natsUrls,j0?{creds:j0}:void 0);let e=HG1()?new pJ1({getJetStream:()=>U.getJetStream()}):null;e?.init().catch(()=>{}),X=e;let n=new YF1({getJetStream:()=>U.getJetStream()});n.init().catch(()=>{}),Y=n;let p0=new vy(mN1,{getJetStream:()=>U.getJetStream()}),k0=new vy(C40,{getJetStream:()=>U.getJetStream()});p0.init().catch(()=>{}),k0.init().catch(()=>{}),J={reads:p0,cards:k0};let r0=new zO1({getJetStream:()=>U.getJetStream()});r0.init().catch(()=>{}),G=r0,W=WR1({getConnection:()=>U.getConnection()}),H=new HR1({getConnection:()=>U.getConnection()}),F=new NR1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),jB8(U),U.onReady(()=>{e?.init().catch((g0)=>{console.error("[McpListCache] Deferred init failed:",g0)}),n.init().catch((g0)=>{console.error("[SkillCatalogCache] Deferred init failed:",g0)}),p0.init().catch((g0)=>{console.error("[PrReadCache] Deferred init failed:",g0)}),k0.init().catch((g0)=>{console.error("[PrCardCache] Deferred init failed:",g0)}),r0.init().catch((g0)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",g0)}),W.start(),M_$(()=>U.getConnection()),F.init().catch((g0)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",g0)})})}if(xz)await xz();nJ1(X),GF1(Y),dN1(J),PO1(G);let B={storage:new fl(Z.db),sseHub:E9,onThreadFinished:async(Q0,j0)=>oi(new D3(Z.db),Q0,j0,new fG(Z.db))},O=new QL1(B),D=new C50(Z.db),w=new BR1(D);w.start(),Z88(H),H.start((Q0)=>{fS0(Q0),O.execute({type:"CANCEL",taskId:Q0}).catch((j0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",j0)})}).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;cT1(j),U?.onReady(()=>cT1(j)),eO1(j),U?.onReady(()=>eO1(j)),F.init().catch((Q0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",Q0)}),xz=async()=>{await O.stopAll(),O.dispose(),w.dispose(),H.stop().catch(()=>{}),kL8(),F.teardown(),X?.teardown(),Y?.teardown(),J?.reads.teardown(),J?.cards.teardown(),K.teardown(),W.teardown(),I_$(),G.teardown(),nJ1(null),GF1(null),dN1(null),PO1(null)};let E=new J1;if(E.use("*",wO1({enabled:(Q0)=>wn(Q0,"debug")==="1"})),E.use("*",uo0),E.use("/*",BB8({origin:(Q0,j0)=>JT8(Q0,{baseUrl:T0().baseUrl,requestOrigin:new URL(j0.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,j0)=>{if(await j0(),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'")}),!T0().noTui)E.use("*",fP8());E.use("*",async(Q0,j0)=>{if(await j0(),Ka(Q0.req.path))return;if(Q0.res.status>=500){let n=await Q0.res.clone().text();console.error(`[5xx Response] ${Q0.req.method} ${Q0.req.path} - ${Q0.res.status}:`,n)}}),E.get(WY.HEALTH,(Q0)=>{if(Q)return Q0.json({status:"shutting_down"},503);return Q0.json({status:"ok"})}),E.get(WY.HEALTH_LIVE,(Q0)=>{return Q0.json({status:"ok"})}),E.get(WY.HEALTH_READY,async(Q0)=>{if(Q)return Q0.json({status:"shutting_down"},503);let j0={};if(j0.postgres={status:await WL5(Z.pool)?"up":"down"},U)j0.nats=U.isConnected()?{status:"up"}:{status:"down"};else j0.nats={status:"down"};let e=j0.postgres.status==="up",n=e?200:503;return Q0.json({status:e?"ready":"not_ready",services:j0},n)}),E.get(WY.METRICS,async(Q0)=>{try{let j0=await do0.collect(),e=HL5.serialize(j0.resourceMetrics);return Q0.text(e,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(j0){return console.error("Failed to collect metrics:",j0),Q0.text("# Error collecting metrics",500)}});let z=1800000;E.get(`${WY.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(Q0)=>{let j0=Q0.req.param("queueName");if(!NL5.has(j0))return Q0.json({error:`Unknown queue: ${j0}`},404);let[e,n]=await Promise.all([bO.listQueuedWorkflows({queueName:j0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),bO.listQueuedWorkflows({queueName:j0,status:"PENDING",loadInput:!1,loadOutput:!1,dequeuedAfter:new Date(Date.now()-z).toISOString()})]);return Q0.json({queue_length:e.length,in_flight:n.length})}),E.route("/api/config",Ez8),E.route("/api/_reports",Sz8),E.route("/api/_stripe",XR1),E.route("/api/_github",vz8({taskBoard:()=>u,contextFactory:()=>g})),E.route("/api/_git",qn);let A={db:Z.db,encryptionKey:T0().encryptionKey};E.route("/api/_jira",yz8(A)),E.route("/api/_jira",fz8(A)),E.route("/report",Iz8($.clientDir)),E.route("/api/auth/custom",gB8),E.route("/api/auth/desktop",cB8),E.all("/api/auth/admin/*",OL8),E.all("/api/auth/*",async(Q0)=>{return await _8.handler(Q0.req.raw)});let P=iU8();P.use("/.well-known/oauth-protected-resource/mcp/:connectionId",i50),P.use("/mcp/:connectionId/.well-known/oauth-protected-resource",i50),E.route("/",P),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",I50),E.route("/",aU8()),E.use("/oauth-proxy/:connectionId/*",i50),E.all("/oauth-proxy/:connectionId/*",ZT8);let T=async(Q0)=>{let e=await BL5()(Q0.req.raw),n=await e.json();return Response.json(n,e)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",i50),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",T);let q=async(Q0)=>{let e=await LL5()(Q0.req.raw),n=await e.json();return Response.json(n,e)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",q);let f=OB8({ttlMs:120000}),C=await uN8({db:Z.db,auth:_8,encryption:{key:T0().encryptionKey},observability:{tracer:vD,meter:A$},modelListCache:K,providerKeyCache:W,memberRoleCache:f});dQ.set(C),fJ$({db:Z.db,baseUrl:y5()}),lN8({db:Z.db}),iN8({db:Z.db}),eN8({db:Z.db}),uz8({db:Z.db,encryptionKey:T0().encryptionKey}),_s$({db:Z.db}),JB8({db:Z.db}),Ze$({db:Z.db});let V=MW0(Z.db),h=new ds(Z.db),g=_P8({db:Z.db});BO1({storage:V,studioContextFactory:g}),NL1({systemDatabaseUrl:GG0(T0().databaseUrl,T0().databasePgSsl),studioContextFactory:g,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:E9}}),JL1({dispatchRunFn:i18,studioContextFactory:g,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:E9}});let l=new fl(Z.db),u=new D3(Z.db),d=new fG(Z.db),K0=new LR1(u,g,d);if(T0().taskBoardReviewSweeperEnabled){K0.start();let Q0=xz;xz=async()=>{await Q0?.(),K0.dispose()}}N$8({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let Q0=U?.getConnection();return Q0?await QT8.jetstreamManager(Q0):null},messageParts:l.messageParts(),resolveRun:async(Q0)=>{let j0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",Q0).executeTakeFirst();return j0?{orgId:j0.organization_id,createdBy:j0.created_by,version:j0.message_storage_version??1,status:j0.status,runFenceToken:j0.run_fence_token,title:j0.title??null}:null},completeRunIfNotCompleted:async(Q0,j0)=>{let e=await l.completeRunIfNotCompleted(Q0,j0);if(cb0(E9,j0,Q0,e),e)await oi(u,Q0,j0,d);return e},markRunRequiresAction:async(Q0,j0)=>{let e=await l.requiresActionIfInProgress(Q0,j0);return cb0(E9,j0,Q0,e),e},markRunFailed:async(Q0,j0,e,n)=>{let p0=await l.markRunFailed(Q0,j0,e,n);if(cb0(E9,j0,Q0,p0),p0)await oi(u,Q0,j0,d);return p0},clearSynthesizedError:async(Q0,j0)=>{await l.messageParts().replaceMessageParts(Q0,eE(Q0,j0),[])},persistTitle:(Q0,j0,e)=>l.update(Q0,j0,{title:e}),onTitleUpdated:async({runId:Q0,orgId:j0,title:e})=>{let n=await l.get(Q0,j0).catch(()=>null);E9.emit(j0,cF(Q0,n?.status??"in_progress",{title:e,virtualMcpId:n?.virtual_mcp_id??void 0,createdBy:n?.created_by,triggerId:n?.trigger_id,branch:n?.branch??null,harnessId:n?.harness_id??void 0,createdAt:n?.created_at,updatedAt:n?.updated_at}))},bumpProgress:async({runId:Q0,orgId:j0})=>{await l.bumpProgress(Q0,j0)},recordCompleted:async({runId:Q0,orgId:j0,distinctId:e,usage:n})=>{u1.capture({distinctId:e,event:"chat_message_completed",groups:{organization:j0},properties:{organization_id:j0,thread_id:Q0,transport:"projector",input_tokens:n.inputTokens,output_tokens:n.outputTokens,total_tokens:n.totalTokens}})},recordFailed:async({runId:Q0,orgId:j0,distinctId:e,reason:n,kind:p0})=>{u1.capture({distinctId:e,event:"chat_message_failed",groups:{organization:j0},properties:{organization_id:j0,thread_id:Q0,transport:"projector",error_category:p0,error_message:n}})},purgeRun:async(Q0)=>{F.purge(Q0)}}),w18({studioContextFactory:g,systemDatabaseUrl:GG0(T0().databaseUrl,T0().databasePgSsl),streamBuffer:F}),SP8(),bJ$(),mN8(),nN8(),ZB8(),mz8(),ys$(),KB8(),Qe$();let E0=async(Q0,j0,e)=>{let n=await V.findById(Q0,j0);if(!n)throw Error("Automation not found");return DO1({automationId:n.id,organizationId:n.organization_id,triggerId:null})},J0=new An(V,({automation:Q0,trigger:j0,contextMessages:e,idempotencyKey:n})=>N60({automationId:Q0.id,organizationId:Q0.organization_id,triggerId:j0.id,contextMessages:e},{idempotencyKey:n})),F0=[SW(),lu(),PB()];for(let Q0 of F0)ib0(Q0).then(()=>{}).catch((j0)=>console.error("[monitoring] Retention cleanup failed:",j0));let X0=()=>_8.api.deleteAllExpiredApiKeys().catch((Q0)=>console.error("[auth] Expired API key cleanup failed:",Q0));X0(),setInterval(X0,86400000).unref(),E.use("*",async(Q0,j0)=>{if(go0(Q0.req.path))return j0();let e={measure:async(p0,k0)=>{XW(Q0,p0);try{return await k0()}finally{A3(Q0,p0)}}},n=await dQ.create(Q0.req.raw,{timings:e});n.automationRunner=E0,Q0.set("studioContext",n);try{await j0()}finally{let p0=n.pendingRevalidations;if(p0.length>0)Promise.race([Promise.allSettled(p0),k$(30000)]).catch((r0)=>console.error("[studio] revalidation cleanup error:",r0))}}),E.use("/api/:org/decopilot/*",En),E.use("/api/:org/v1/*",En),E.use("/api/:org/files/*",En),E.use("*",async(Q0,j0)=>{if(XT8(Q0.req.path))return j0();let e=Q0.get("studioContext");if(!e?.organization?.id||!e?.auth?.user?.id)return j0();if(!(await e.storage.orgSsoConfig.getByOrgId(e.organization.id))?.enforced)return j0();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 j0()});let t=new J1;t.use("*",HF({mountPath:"/api/org-sso"})),t.route("/",Af0()),E.route("/api/org-sso",t),E.get("/api/tools/management",(Q0)=>{return Q0.json({tools:t61,grouped:nT()})}),E.use("/mcp/*",async(Q0,j0)=>{XW(Q0,"mcp");try{return await j0()}finally{A3(Q0,"mcp")}});let s=async(Q0,j0)=>{let e=Q0.var.studioContext;if(!e.auth.user?.id&&!e.auth.apiKey?.id){let n=new URL(Q0.req.url),p0=Q0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),k0=p0?`${p0}://${n.host}`:n.origin;return Q0.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${k0}${n.pathname}/.well-known/oauth-protected-resource"`}})}return await j0()};if(E.use("/mcp/:connectionId?",s),E.use("/mcp/gateway/:virtualMcpId?",s),E.use("/mcp/virtual-mcp/:virtualMcpId?",s),E.use("/mcp/self",s),fK()){let{mountDevRoutes:Q0}=(sP8(),eb0(rP8));Q0(E,s)}let Z0=new J1;Z0.use("*",HF({mountPath:"/mcp"})),Z0.route("/",qC0()),E.route("/mcp",Z0);let G0=new J1;G0.use("*",HF({mountPath:"/mcp/self"})),G0.route("/",Nb0()),E.route("/mcp/self",G0);let i0=new J1;i0.use("*",HF({mountPath:"/mcp"})),i0.route("/",VC0()),E.route("/mcp",i0),E.use("/api/:org/models/*",async(Q0,j0)=>{XW(Q0,"llm_models");try{return await j0()}finally{A3(Q0,"llm_models")}});let C0=CL8({cancelBroadcast:H,streamBuffer:F,runRegistry:O});E.route("/api",C0),E.route("/api",nz8);let P1=new J1;P1.use("*",HF({mountPath:"/api"})),P1.route("/",Db0()),E.route("/api",P1),E.route("/api",Lz8);let c0=new J1;c0.use("*",HF({mountPath:"/api"})),c0.route("/",wb0({tokenStorage:h,automationEventDispatcher:J0})),E.route("/api",c0);let z0=new ps(Z.db),P0=new J1;P0.use("*",HF({mountPath:"/api"})),P0.route("/",Vf0()),E.route("/api",P0),E.route("/api/deco-sites",iL8()),E.route("/api/deco-apps",Wz8());let Z1=new J1;Z1.use("*",HF({mountPath:"/api/deco-sites"})),Z1.route("/",Sf0()),E.route("/api/deco-sites",Z1),E.route(zf0,DL8()),E.route(Aj8,Mj8()),E.route("/api/_editor-resolve",Dz8()),E.route(dB8,iB8()),E.route(Of0,ZL8());let R1=Gz8({kvStorage:z0,runRegistry:O,streamBuffer:F,sseHub:E9,cancelBroadcast:H,tokenStorage:h,automationEventDispatcher:J0,mountDevAssets:fK(),mcpAuth:s,oauthProxyHandler:ZT8,watchHandler:KT8,betterAuthProtectedResourceHandler:T,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",R1),E.notFound((Q0)=>{return Q0.json({error:"Not Found",path:Q0.req.path},404)}),E.onError(xL8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([E9.stop(),xz?Promise.resolve(xz()).finally(()=>{xz=null}):Promise.resolve()]),U)await U.drain().catch((Q0)=>console.error("[shutdown] NATS drain error:",Q0));console.log("[shutdown] Flushing telemetry..."),await YJ().catch((Q0)=>console.error("[shutdown] Telemetry flush error:",Q0)),console.log("[shutdown] Closing database..."),await bD(Z).catch((Q0)=>console.error("[shutdown] Database close error:",Q0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await bO.registerQueue(ZK,{partitionQueue:!0,concurrency:FO1,minPollingIntervalMs:UO1}),await bO.registerQueue($K,{partitionQueue:!0,concurrency:FL1,priorityEnabled:!0}),await bO.registerQueue(qB,{workerConcurrency:T0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await bO.registerQueue(MB,{workerConcurrency:T0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await bO.registerQueue(dD,{partitionQueue:!0,concurrency:D18}),await bO.registerQueue(sP,$e$),await nT1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((Q0)=>bO.deleteQueue(Q0))),await NO1(Z.pool),fA$().catch((Q0)=>{console.error("[studio-pack-backfill] failed:",Q0)}),yJ$().catch((Q0)=>{console.error("[org-fs] public-sets boot sync kick failed:",Q0)})}})}var QT8,eP8=5000,xz=null,ZT8=async($)=>{let Z=$.req.param("connectionId");if(!Z)return $.json({error:"Missing connectionId"},400);let Q=$.req.path.split("/").filter(Boolean),X=Q[Q.length-1],Y=$.get("studioContext");if(!Y)Y=await dQ.create($.req.raw),$.set("studioContext",Y);let J=$.req.param("org")?Y.organization?.id:void 0,G=await Y.storage.connections.findById(Z,J);if(!G?.connection_url)return $.json({error:"Connection not found"},404);if(X==="register"&&G.oauth_config?.clientId){let h=await $.req.json().catch(()=>({}));return $.json({...typeof h==="object"&&h!==null?h:{},client_id:G.oauth_config.clientId,...G.oauth_config.clientSecret?{client_secret:G.oauth_config.clientSecret}:{},client_secret_expires_at:0})}let K=await Bn(G.connection_url),W,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(K.ok)W=(await K.json()).authorization_servers?.[0];if(!W)W=H.origin;let N=await V50(W);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),O;if(X==="authorize")O=B.authorization_endpoint;else if(X==="token")O=B.token_endpoint;else if(X==="register")O=B.registration_endpoint;if(!O)return $.json({error:`Unknown OAuth endpoint: ${X}`},404);let D=oU8(O);if(D)return D;let w=new URL(O),j=new URL($.req.url);if(w.search=j.search,X==="authorize"){let h=w.searchParams.get("redirect_uri");if(h){let g=T0().baseUrl??j.origin;try{if(!GT8(new URL(h),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",h)}if(w.searchParams.has("resource"))w.searchParams.set("resource",U);if(HB8(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 A=$.req.header("Authorization");if(A)E.Authorization=A;let P,T=null,q=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(X==="token"&&z?.includes("application/x-www-form-urlencoded")){if(A?.toLowerCase().startsWith("basic "))try{let d=atob(A.slice(6).trim()),K0=d.indexOf(":");if(K0!==-1){let E0=decodeURIComponent(d.slice(0,K0)),J0=decodeURIComponent(d.slice(K0+1));T=E0||null,q=J0||null}}catch{}let h=await $.req.formData();if(h.has("resource"))h.set("resource",U);let g=h.get("client_id"),l=h.get("client_secret");if(typeof g==="string"&&g)T=g;if(typeof l==="string"&&l)q=l;let u=new URLSearchParams;for(let[d,K0]of h.entries())u.append(d,K0.toString());P=u.toString()}else if(X==="register"&&z?.toLowerCase().includes("application/json")){let h=await Y.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 u=typeof l==="object"&&l!==null&&!Array.isArray(l);if(P===void 0&&!u)P=g;if(P===void 0){let d=l,K0=d.metadata&&typeof d.metadata==="object"?d.metadata:{};d.metadata={...K0,organization_id:G.organization_id,...h?.slug?{organization_slug:h.slug}:{},...h?.name?{organization_name:h.name}:{}},P=JSON.stringify(d),E["Content-Type"]="application/json"}}else P=$.req.raw.body??void 0;let f=await fetch(w.toString(),{method:$.req.method,headers:E,body:P,duplex:"half",redirect:"manual"}),C=new Headers,V=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[h,g]of f.headers.entries())if(!V.includes(h.toLowerCase()))C.set(h,g);if(X==="token"&&f.ok){let h=await f.text();try{let g=JSON.parse(h);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,u=null;try{u=await Ln(G.connection_url)??O}catch{u=O}let d={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:T,clientSecret:q,tokenEndpoint:u};await new O9(Y.db,Y.vault).upsert(d)}}catch(g){console.error("[oauth-proxy] failed to persist downstream token:",g)}return new Response(h,{status:f.status,statusText:f.statusText,headers:C})}return new Response(f.body,{status:f.status,statusText:f.statusText,headers:C})},KT8=async($)=>{let Z=$.var.studioContext;if(!(Z.auth.user?.id??Z.auth.apiKey?.userId))return $.json({error:"Unauthorized"},401);let X=Z.organization?.id;if(!X)return $.json({error:"organization id missing"},400);let Y=$.req.query("types"),J=Y?Y.split(",").map((K)=>K.trim()).filter(Boolean):null,G=crypto.randomUUID();return _O($,async(K)=>{if(await K.writeSSE({event:"connected",data:JSON.stringify({listenerId:G,organizationId:X,typePatterns:J,connectedAt:new Date().toISOString()})}),!E9.add({id:G,organizationId:X,typePatterns:J?.length?J:null,push:(F)=>{K.writeSSE({id:F.id,event:F.type,data:JSON.stringify(F)}).catch(()=>{E9.remove(X,G)})}})){await K.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let H=setInterval(()=>{K.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(H)})},30000);await new Promise((F)=>{K.onAbort(()=>{clearInterval(H),E9.remove(X,G),F()})})})},HL5,NL5,BL5=()=>UL5(_8),LL5=()=>FL5(_8);var HT8=L(()=>{w8();H$();gJ$();dN8();tN8();QB8();j60();MN1();WB8();S40();F9();qd();Z4();W8();Ff0();LB8();jO1();Y3();lU();jT1();NX();_6();N6();qT1();mB8();pB8();QL8();CT1();wL8();hT1();_L8();iT1();SH();nx0();pT1();fL8();Nf0();Kz8();aT1();Hz8();MC0();L60();Oz8();kC0();q21();wz8();A21();zz8();Vz8();Cz8();_z8();xz8();bz8();gz8();dz8();ZA1();tz8();R21();z21();QG0();UP8();_J();kV0();pN1();U$0();B$0();AO1();NP8();LP8();mT1();PP8();XL1();TP8();Vr();ts();JO();f9();gP1();IP8();CP8();HU0();OR1();o3();tT1();YO();$L1();HU0();iS0();b61();y61();vP8();bc();bP8();ln();jT1();Yp();bS0();QT8=_(vB(),1);HL5=new KL5,NL5=new Set([ZK,$K,qB,MB,dD,sP])});var BT8={};W0(BT8,{resolveClientDir:()=>TL5,resolveAssetPathWithTraversalCheck:()=>NT8,isPathWithinDirectory:()=>UT8,createAssetHandler:()=>AL5});import{resolve as _90,dirname as DL5,join as wL5,extname as jL5,basename as EL5,sep as FT8}from"path";function zL5($,Z){if($===Z||EL5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${FT8}assets${FT8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function UT8($,Z){let Q=_90(Z),X=_90($);return X===Q||X.startsWith(Q+"/")}function NT8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,X=_90(Z,Q);if(!UT8(X,Z))return null;return X}function TL5($,Z="../client"){let Q=new URL($),X=DL5(Q.pathname);return _90(X,Z)}function AL5($={}){let{env:Z="production",clientDir:Q=PL5,isServerPath:X=()=>!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),K;try{K=decodeURIComponent(G.pathname)}catch{return null}if(X(K))return null;let W=NT8({requestPath:K,clientDir:Q});if(!W)return null;let H=wL5(W,"index.html"),F=_90(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(jL5(W))?[H,F]:[];for(let O of[W,...B])try{let D=Bun.file(O);if(await D.exists())return new Response(D,{headers:zL5(O,F)})}catch{}if(K.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var PL5="./dist/client";var LT8=()=>{};var OT8={};W0(OT8,{tryUpgradePreviewWs:()=>SL5,tryHandlePreviewHttp:()=>kL5,previewWebSocketHandler:()=>CL5,parsePreviewBaseDomain:()=>VL5,isPreviewWsData:()=>pb0,extractHandleFromHost:()=>PR1});function ML5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function IL5(){return new Response(qL5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function VL5($){if(!$||$.trim()==="")return null;let Z=$.includes("{handle}")?$.replace("{handle}","__handle__"):$,Q;try{Q=new URL(Z)}catch{return null}let X=Q.hostname;if($.includes("{handle}")){let Y=X.indexOf(".");if(Y<=0||Y===X.length-1)return null;return X.slice(Y+1)}return X}function PR1($,Z){if(!$||!Z)return null;let Q=$.indexOf(":"),X=(Q>=0?$.slice(0,Q):$).toLowerCase(),J=`.${Z.toLowerCase().replace(/^\.+|\.+$/g,"")}`;if(!X.endsWith(J))return null;let G=X.slice(0,X.length-J.length);if(!G||G.includes("."))return null;return G}async function kL5($,Z){let Q=PR1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let X=await Z.getRunner();if(!X)return x90(503,"preview proxy not configured");let Y=await X.proxyPreviewRequest(Q,$);if(Y.headers.get(Ky)&&ML5($))return IL5();return Y.headers.delete(Ky),Y}function x90($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function pb0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function SL5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let X=PR1($.headers.get("host"),Q.baseDomain);if(!X)return null;let Y=await Q.getRunner();if(!Y)return x90(503,"preview proxy not configured");let J=await Y.resolvePreviewUpstreamUrl(X);if(!J)return x90(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return x90(404,"not found");let K=`${J.replace(/^http/,"ws")}${G.pathname}${G.search}`,W=$.headers.get("sec-websocket-protocol"),H=W?W.split(",").map((N)=>N.trim()).filter(Boolean):[],F={kind:"preview",upstreamUrl:K,upstreamProtocols:H,pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:F}))return x90(426,"upgrade failed");return}function v90($,Z,Q,X){if(Z.closed)return;Z.closed=!0;try{$.close(Q,X)}catch{}try{Z.upstream?.close()}catch{}}var RL5=256,qL5='<!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>',CL5;var DT8=L(()=>{gH1();CL5={open($){let Z=$.data;if(!pb0(Z))return;let Q;try{Q=Z.upstreamProtocols.length>0?new WebSocket(Z.upstreamUrl,Z.upstreamProtocols):new WebSocket(Z.upstreamUrl)}catch(X){console.warn(`[preview-ws] failed to dial upstream ${Z.upstreamUrl}: ${X instanceof Error?X.message:String(X)}`),v90($,Z,1011,"upstream connect failed");return}Q.binaryType="arraybuffer",Z.upstream=Q,Q.addEventListener("open",()=>{while(Z.pending.length>0){let X=Z.pending.shift();if(X!==void 0)Q.send(X)}}),Q.addEventListener("message",(X)=>{if(Z.closed)return;$.send(X.data)}),Q.addEventListener("close",(X)=>{v90($,Z,X.code||1000,X.reason||"")}),Q.addEventListener("error",()=>{v90($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!pb0(Q))return;let X=Q.upstream;if(X&&X.readyState===WebSocket.OPEN){X.send(Z);return}if(Q.pending.length>=RL5){v90($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!pb0(Z))return;v90($,Z,1000,"")}}});var oL5={};import{existsSync as hL5}from"fs";function IR1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}function cL5($){let Z=new Headers($.headers);for(let[Q,X]of Object.entries(lL5))Z.set(Q,X);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}async function tL5($){let Z;try{Z=await _L5.create({systemDatabaseUrl:IR1(WG.databaseUrl,WG.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:$K,executorId:$,loadInput:!1,loadOutput:!1});if(Q.length===0){console.log(`[shutdown] no in-flight thread-gate gates to hand off (executor ${$})`);return}let X=Q.map((Y)=>Y.workflowID);await Z.resumeWorkflows(X,{queueName:$K}),console.log(`[shutdown] re-enqueued ${X.length} in-flight thread-gate gate(s) for re-adoption by a live executor (from ${$}):`,X)}catch(Q){console.error("[shutdown] thread-gate handoff failed:",Q)}finally{await Z?.destroy().catch(()=>{})}}async function tb0($){if(zT8)return;zT8=!0,console.log(`
5423
+ </head>`)}function Iz8($){let Z=new J1;return Z.get("/:domain/og.png",async(Q)=>{let X=an(Q.req.param("domain")),Y=async()=>{let J=$?Bun.file(Mz8($,"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(`${vU({})}/api/v2/public/diagnostics/${encodeURIComponent(X)}/og.png`,{signal:AbortSignal.timeout(yN5)}),G=J.headers.get("content-type")??"";if(!J.ok||!G.startsWith("image/")||!J.body)return Y();return Q.body(J.body,200,{"Content-Type":G,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(Q)=>{let X=Q.req.param("domain"),Y=$?Mz8($,"index.html"):null,J=Y?Bun.file(Y):null;if(!J||!await J.exists())return Q.notFound();let G=await J.text();try{let K=await xN5(an(X)),W=fN5(X,K);return Q.html(bN5(G,W),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var vN5=2500,yN5=1e4;var Vz8=L(()=>{W8();QR1();$2();H$()});function S90($,Z){return fetch(`${vU({})}${$}`,Z)}async function gN5($,Z,Q){let X=new URLSearchParams;if(Z)X.set("pw",Z);if(Q)X.set("lang",Q);let Y=X.toString()?`?${X.toString()}`:"",J=await S90(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(J.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!J.ok)throw Error(`report read HTTP ${J.status}`);let G=await J.json(),{deck:K,drops:W}=yb0(G);return{status:K.slides.length?"ready":"empty",deck:K,scanned_at:G.scanned_at,drops:W}}var hN5,xO,kz8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Sz8;var Cz8=L(()=>{W8();Y3();$2();QR1();hN5=new Set(["complete","errored","terminated","unknown"]),xO=new J1;xO.use("*",async($,Z)=>{let Q=await _8.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});xO.use("/link-token/*",kz8);xO.use("/suggest",kz8);xO.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.get("reportUser"),X=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let J=await gN5(Z,X,Y);if($.header("Cache-Control","private, no-store"),Q||!J.deck)return $.json(J);return $.json({...J,deck:{...J.deck,slides:J.deck.slides.slice(0,1)},truncated:J.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});xO.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let X=typeof Q.domain==="string"?Q.domain.trim():"";if(!X)return $.json({error:"domain is required"},400);let Y=Z?.email,J=typeof Q.distinctId==="string"&&Q.distinctId.trim()&&Q.distinctId.length<=200?Q.distinctId.trim():void 0;try{let G=await S90("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${eA({})}`},body:JSON.stringify({url:X,...Y?{email:Y}:{},distinct_id:J})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let K=await G.json(),W=K.blocked?{state:"blocked"}:K.status==="fresh"?{state:"fresh"}:K.mode==="sync"?{state:"sync"}:{state:"running",id:K.id??null};return $.json(W)}catch{return $.json({error:"run failed"},502)}});xO.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await S90(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${eA({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let Y=(await Q.json()).status??"unknown",J={done:hN5.has(Y),status:Y};return $.json(J)}catch{return $.json({error:"status failed"},502)}});xO.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await S90(`/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)}});xO.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await S90(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let X=await Q.json();return $.json({suggestions:Array.isArray(X.suggestions)?X.suggestions:[]})}catch{return $.json({suggestions:[]})}});Sz8=xO});var uN5=1048576,XR1;var _z8=L(()=>{W8();WF();H$();FT1();XR1=new J1;XR1.post("/webhook",z9({maxSize:uN5,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=T0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!aN8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=rN8(Q);if(!Y)return $.json({error:"invalid payload"},400);let J=await sN8(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as lN5}from"crypto";function dN5($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let X=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==X.length)return!1;return lN5(Buffer.from(Y),Buffer.from(X))}function iN5($,Z){let Q=Z,X=Q?.repository?.name,Y=Q?.repository?.owner?.login;if(typeof X!=="string"||typeof Y!=="string")return[];let J=[];if($==="check_suite"){if(Q.action!=="completed")return[];let G=Q.check_suite?.pull_requests;for(let K of Array.isArray(G)?G:[]){let W=K?.number;if(typeof W==="number")J.push(W)}}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:Y,repoName:X,number:G}))}function vz8($){let Z=new J1;return Z.post("/webhook",z9({maxSize:cN5,onError:(Q)=>Q.json({error:"payload too large"},413)}),async(Q)=>{let X=process.env.GITHUB_WEBHOOK_SECRET;if(!X)return Q.json({error:"github webhook not configured"},503);let Y=await Q.req.text();if(!dN5(Y,Q.req.header("x-hub-signature-256"),X))return Q.json({error:"invalid signature"},400);let J=Q.req.header("x-github-event");if(J!=="push"&&!mN5.has(J??""))return Q.json({ok:!0,ignored:"event"});let G;try{G=JSON.parse(Y)}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 mH1())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let K=iN5(J??"",G);if(K.length===0)return Q.json({ok:!0,ignored:"no-pr"});let W=await pN5($,K);return Q.json({ok:!0,refreshed:W})}),Z}async function pN5($,Z){let Q=0;for(let X of Z){let Y=$.taskBoard(),J;try{J=await Y.findPrLinks(X)}catch(G){console.error("[github-webhook] pr link lookup failed:",G);continue}for(let G of J)try{let K=await Y.getById(G.taskBoardItemId,G.organizationId),W=K?await $.contextFactory()(G.organizationId,K.assignedBy??K.createdBy):null;if(!W)continue;if(await Oe$(W,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(K){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,K)}}return Q}var cN5=5242880,mN5;var xz8=L(()=>{W8();WF();lH();V7();mN5=new Set(["check_suite","issue_comment"])});function fz8($){let Z=new TO($.db,new SG($.encryptionKey)),Q=new J1;return Q.get("/attachments/:token",async(X)=>{let Y=vr$(X.req.param("token"));if(!Y)return X.json({error:"Invalid or expired link"},404);let J=await Z.getByOrg(Y.organizationId);if(!J)return X.json({error:"Jira is not connected"},404);let K=await new lY(J.siteUrl,J.email,J.apiToken).downloadAttachment(Y.attachmentId);if(!K.ok||!K.body)return X.json({error:"Jira refused the download"},502);let W=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=K.headers.get(H);if(F)W.set(H,F)}return W.set("cache-control","no-store"),new Response(K.body,{status:200,headers:W})}),Q}var bz8=L(()=>{W8();LT();oU1();pE()});function yz8($){let Z=new TO($.db,new SG($.encryptionKey));async function Q(Y,J){let G=pW8(J);if(!G)return;let K=await Z.getByWebhookSecret(Y);if(!K?.enabled)return;let W=await sK($.db,K.organizationId);if(!W)return;if(await Rx0(W,K,G)==="started")console.log(`[jira-webhook] started a run for ${G.issueKey} entering "${G.toStatus}"`)}let X=new J1;return X.post("/webhook/:secret",z9({maxSize:nN5}),async(Y)=>{let J=Y.req.param("secret");if(!await Z.getByWebhookSecret(J))return Y.json({error:"Unknown webhook"},404);let K;try{K=await Y.req.json()}catch{return Y.json({error:"Body must be JSON"},400)}return Q(J,K).catch((W)=>{console.error("[jira-webhook] trigger failed",W)}),Y.body(null,202)}),X}var nN5=1048576;var gz8=L(()=>{W8();WF();LT();qx0();Sy()});import{DBOS as gb0,SchedulerMode as tN5}from"@dbos-inc/dbos-sdk";function uz8($){JR1=$}function lz8(){if(!JR1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return JR1}function cz8(){let $=lz8();return new TO($.db,new SG($.encryptionKey))}async function rN5($,Z){try{let Q=await cz8().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let X=await sK(lz8().db,Q.organizationId);if(!X)return{integrationId:$,started:0};if((await X.storage.jiraIntegrations.listAutomations(Q.organizationId)).length===0)return{integrationId:$,started:0};let J=new lY(Q.siteUrl,Q.email,Q.apiToken),K=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${hz8}m"`,W=0,H;for(let F=0;F<aN5;F++){let U=await J.searchIssues({jql:K,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=nW8(N,N.changelog?.histories??[],Z);for(let O of B)if(await Rx0(X,Q,O)==="started")W++}if(H=U.nextPageToken??void 0,!H)break}return{integrationId:$,started:W}}catch(Q){return{integrationId:$,started:0,error:Q instanceof Error?Q.message:String(Q)}}}async function sN5($,Z){let Q=new Date($.getTime()-hz8*60000),X=await gb0.runStep(()=>cz8().listEnabledIds(),{name:"loadJiraIntegrations"});if(X.length===0)return;let Y=await Promise.all(X.map((J)=>gb0.runStep(()=>rN5(J,Q),{name:`sweepJira:${J}`})));for(let J of Y)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 mz8(){if(YR1)return;YR1=gb0.registerWorkflow(sN5,{name:"jiraTriggerSweepWorkflow"}),gb0.registerScheduled(YR1,{name:"jiraTriggerSweepWorkflow",crontab:oN5,mode:tN5.ExactlyOncePerIntervalWhenActive})}var oN5="7-59/10 * * * *",hz8=35,aN5=5,JR1=null,YR1=null;var dz8=L(()=>{LT();Sy();pE();qx0()});function iz8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var pz8,eN5,$B5,nz8;var tz8=L(()=>{W8();HH();ri();qd();pz8=new J1,eN5=["range","if-none-match","if-modified-since"],$B5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];pz8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(jn($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new q$(401,{message:"Authentication required"})}if(!Q)throw new q$(401,{message:"Organization context required"});let X=$.req.path.replace(/^.*\/files\//,"");if(!X)throw new q$(400,{message:"Missing file key"});let Y=await n40(X,Z);if(!Y)throw new q$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&fK()){let W=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!W)throw new q$(500,{message:"Invalid data URL from storage"});let[,H,F]=W,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return iz8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let W of eN5){let H=$.req.header(W);if(H)J.set(W,H)}let G=await fetch(Y,{headers:J});if(G.status===403||G.status===404)throw new q$(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:`,X),new q$(502,{message:"Upstream storage error"});let K=new Headers;for(let W of $B5){let H=G.headers.get(W);if(H)K.set(W,H)}return K.set("Cache-Control","private, max-age=86400"),iz8(K,K.get("content-type")??""),new Response(G.body,{status:G.status,headers:K})});nz8=pz8});var C90=b((og)=>{var ZB5=og&&og.__createBinding||(Object.create?function($,Z,Q,X){if(X===void 0)X=Q;var Y=Object.getOwnPropertyDescriptor(Z,Q);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,X,Y)}:function($,Z,Q,X){if(X===void 0)X=Q;$[X]=Z[Q]}),QB5=og&&og.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))ZB5(Z,$,Q)};Object.defineProperty(og,"__esModule",{value:!0});QB5(IG(),og)});var rz8=b((oz8)=>{Object.defineProperty(oz8,"__esModule",{value:!0});oz8.version=void 0;oz8.version="3.4.0"});var $P8=b((gN)=>{var XB5=gN&&gN.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(gN,"__esModule",{value:!0});gN.NodeTransport=gN.VERSION=void 0;gN.nodeResolveHost=HB5;var p5=C90(),YB5=B0("net"),GR1=B0("tls"),JB5=B0("path"),sz8=B0("fs"),GB5=XB5(B0("dns")),KB5=rz8();gN.VERSION=KB5.version;var WB5="nats.js";class ez8{socket;version;lang;yields=[];signal=(0,p5.deferred)();closedNotification=(0,p5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=WB5,this.version=gN.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:X}=Q||{};try{if(X===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,p5.checkOptions)(Y,Z);let{tls_required:J,tls_available:G}=Y,K=G===!0&&Z.tls!==null;if(!X&&(J||K))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw p5.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let J=Y;if(!J)J=new p5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,K=G==="ECONNREFUSED"?new p5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),K}}dial($){let Z=(0,p5.deferred)(),Q,X=(0,YB5.createConnection)($.port,$.hostname,()=>{Z.resolve(X),X.removeAllListeners()});return X.on("error",(Y)=>{Q=Y}),X.on("close",()=>{X.removeAllListeners(),Z.reject(Q)}),X.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,p5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let X=p5.DataBuffer.concat(...this.yields),Y=(0,p5.extractProtocolMessage)(X);if(Y!=="")try{let J=p5.INFO.exec(Y);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,p5.deferred)();try{if($=(0,JB5.resolve)($),!(0,sz8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,sz8.readFile)($,(Q,X)=>{if(Q)return Z.reject(Q);Z.resolve(X)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:X,ca:Y,keyFile:J,key:G}=this.options.tls;try{if(Z){let K=await this.loadFile(Z);if(K)$.cert=K}else if(Q)$.cert=Q;if(J){let K=await this.loadFile(J);if(K)$.key=K}else if(G)$.key=G;if(X){let K=await this.loadFile(X);if(K)$.ca=[K]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(K){return Promise.reject(K)}}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 Y=await this.loadClientCerts()||{};Q=(0,p5.extend)(Q,this.options.tls,Y)}catch(Y){return Promise.reject(new p5.errors.ConnectionError(Y.message,{cause:Y}))}let X=(0,p5.deferred)();try{let Y=(0,GR1.connect)($.port,$.hostname,Q,()=>{Y.removeAllListeners(),X.resolve(Y)});Y.on("error",(J)=>{Z=J}),Y.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{X.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){X.reject(new p5.errors.ConnectionError(Y.message,{cause:Y}))}return X}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Z=(0,p5.extend)(Z,this.options.tls,X)}catch(X){return Promise.reject(new p5.errors.ConnectionError(X.message,{cause:X}))}let Q=(0,p5.deferred)();try{let X=(0,GR1.connect)(Z,()=>{X.removeAllListeners(),Q.resolve(X)});X.on("error",(Y)=>{$=Y}),X.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Q.reject($),X.removeAllListeners()})}catch(X){Q.reject(new p5.errors.ConnectionError(X.message,{cause:X}))}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,p5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,p5.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 GR1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,p5.render)($)}`);let Z=(0,p5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,p5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,p5.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}}gN.NodeTransport=ez8;function HB5($){let Z=(0,p5.deferred)();return GB5.default.lookup($,{all:!0},(Q,X)=>{if(Q){Z.reject(Q);return}let Y=[];for(let J of X)Y.push(J.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var JP8=b((YP8)=>{Object.defineProperty(YP8,"__esModule",{value:!0});YP8.connect=FB5;var ZP8=$P8(),QP8=C90(),XP8=C90();function FB5($={}){if((0,XP8.hasWsProtocol)($))return Promise.reject(XP8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,QP8.setTransportFactory)({factory:()=>{return new ZP8.NodeTransport},dnsResolveFn:ZP8.nodeResolveHost}),QP8.NatsConnectionImpl.connect($)}});var GP8=b((fO)=>{var NB5=fO&&fO.__createBinding||(Object.create?function($,Z,Q,X){if(X===void 0)X=Q;var Y=Object.getOwnPropertyDescriptor(Z,Q);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,X,Y)}:function($,Z,Q,X){if(X===void 0)X=Q;$[X]=Z[Q]}),BB5=fO&&fO.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))NB5(Z,$,Q)};Object.defineProperty(fO,"__esModule",{value:!0});fO.connect=void 0;var LB5=JP8();Object.defineProperty(fO,"connect",{enumerable:!0,get:function(){return LB5.connect}});BB5(C90(),fO)});function FP8($){let Z=$?.connectFn??jB5,Q=null,X=null,Y=!1,J=!1,G=!1,K=[];function W(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${K.length} callbacks`);for(let N of K)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,X=null,H()})().catch(()=>{})}async function U(N,B){let O=0;while(!J)try{Q=await Z({servers:N,timeout:wB5,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${O} attempt(s)`),X=null,G=!1,F(Q),H();return}catch{O++;let D=NQ(DB5,OB5,O-1,2,0.5);await k$(D)}}return{init(N,B){if(Y)return;Y=!0,J=!1;let O=B?.creds?KP8.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(N,O).catch(()=>{})},isConnected(){return W()},getConnection(){return W()?Q:null},getJetStream(){if(!W())return null;if(!X)X=HP8.jetstream(Q);return X},onReady(N){if(K.push(N),W())try{N()}catch{}},async drain(){if(J=!0,Y=!1,X=null,G=!1,Q){let N=Q;Q=null,await N.drain().catch(()=>{})}}}}function jB5($){return WP8.connect($)}var KP8,WP8,HP8,OB5=100,DB5=3000,wB5=3000;var UP8=L(()=>{w8();KP8=_(sa(),1),WP8=_(GP8(),1),HP8=_(vB(),1)});function hb0($){let Z=$?.ttlMs??60000,Q=$?.maxSize??1e4,X=$?.updateRecencyOnGet??!1,Y=new Map;function J(){if(Y.size<=Q)return;let G=Date.now();for(let[K,W]of Y)if(W.expiresAt<=G)Y.delete(K);while(Y.size>Q){let K=Y.keys().next().value;if(K===void 0)break;Y.delete(K)}}return{get(G){let K=Y.get(G);if(!K)return;if(K.expiresAt<=Date.now()){Y.delete(G);return}if(X)Y.delete(G),Y.set(G,K);return K.value},set(G,K){Y.delete(G),Y.set(G,{value:K,expiresAt:Date.now()+Z}),J()},delete(G){Y.delete(G)},clear(){Y.clear()},size(){return Y.size}}}function ub0($,Z){return`${$}.${Z}`}class KR1{cache;constructor($){this.cache=hb0({ttlMs:$?.ttlMs??EB5,maxSize:$?.maxSize??zB5})}async get($,Z){return this.cache.get(ub0($,Z))??null}async set($,Z,Q){this.cache.set(ub0($,Z),Q)}async invalidate($,Z){this.cache.delete(ub0($,Z)),this.cache.delete(ub0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var EB5=600000,zB5=5000;var NP8=()=>{};function lb0($,Z){return`${$}:${Z}`}function WR1($){let Z=hb0({ttlMs:$?.ttlMs??PB5,maxSize:$?.maxSize??TB5}),Q=$?.getConnection,X=crypto.randomUUID(),Y=new TextEncoder,J=new TextDecoder,G=null;function K(W,H){let F=Q?.();if(!F)return;try{F.publish(BP8,Y.encode(JSON.stringify({organizationId:W,keyId:H,originId:X})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(W,H){return Z.get(lb0(W,H))},set(W,H,F){Z.set(lb0(W,H),F)},invalidate(W,H){Z.delete(lb0(W,H)),K(W,H)},start(){if(G)return;let W=Q?.();if(!W)return;G=W.subscribe(BP8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===X)continue;Z.delete(lb0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var BP8="studio.ai-provider-keys.invalidate",PB5=30000,TB5=5000;var LP8=()=>{};class HR1{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,X=Z.subscribe("studio.decopilot.cancel");this.subscription=X,(async()=>{for await(let Y of X)try{let J=JSON.parse(Q.decode(Y.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 OP8=($)=>{let Z;return()=>Z??=$()},FR1,UR1;var DP8=L(()=>{_6();FR1=OP8(()=>A$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),UR1=OP8(()=>A$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function kB5($=EP8){return{name:BN,subjects:[`${nB1}.>`],storage:UF.StorageType.File,max_age:qB5,max_bytes:IB5,max_msgs_per_subject:VB5,discard:UF.DiscardPolicy.Old,retention:UF.RetentionPolicy.Limits,duplicate_window:MB5,num_replicas:$}}class zP8{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 wP8($){let Z=jP8.headers();for(let[Q,X]of Object.entries($))Z.set(Q,X);return Z}function vB5($,Z){let Q=0;return{publish(X,Y,J,G){X.publish(Y,J,G?{headers:G}:void 0).catch((K)=>{if(Q++,RB5().add(1,{"org.id":Z??"unknown"}),Q===1||Q%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${Q} total):`,K)})},get errorCount(){return Q}}}function xB5($,Z){return $.info?.cluster?Z:1}function fB5($){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 NR1{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(X,Y)=>{let J=kB5(Y);try{await X.streams.info(BN),await X.streams.update(BN,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await X.streams.add(J),await X.streams.update(BN,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await X.streams.delete(BN),await X.streams.add(J);else throw G}},Q=await u8(async()=>{let X=this.options.getJetStreamManager?await this.options.getJetStreamManager():await UF.jetstreamManager($),Y=xB5($,EP8);try{await Z(X,Y)}catch(J){if(Y<=1||!fB5(J))throw J;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${Y} (${J.message}); falling back to an unreplicated stream`),await Z(X,1)}return X},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:Gp});this.js=this.options.getJetStream(),this.jsm=Q,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,Q,X){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let J=vB5(Z,X),G=!1,K=()=>{if(G)return;G=!0;let H=e18(Z);Y.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",K,{once:!0});let W=(H)=>{let F=performance.now(),U=oB1(H,{runId:Z}),N=performance.now()-F;FR1().record(N),UR1().add(1,{"org.id":X??"unknown"}),_B5?.record(N,U.reduce((B,O)=>B+O.data.length,0));for(let B of U)J.publish(Y,B.subject,B.data,B.headers?wP8(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(W(O),U++,++F>=64)F=0,await new Promise((D)=>setImmediate(D))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),K(),CB5)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 u8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:wP8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Gp}),!0}catch(Q){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,Q),!1}}async publishRawChunk($,Z,Q){let X=this.js;if(!X)return!1;let Y=performance.now(),J=oB1(Z,{runId:$,dedup:Q});FR1().record(performance.now()-Y),UR1().add(1);for(let G of J)if(!await this.publishSerialized(X,G))return!1;return!0}async publishDone($,Z,Q){let X=this.js;if(!X)return!1;let Y=s18({runId:$,fenceToken:Z,finalSeq:Q});return await this.publishSerialized(X,Y)}async createTailStream($,Z,Q){let X=this.js;if(!X)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=Q?.deliverPolicy==="new"?UF.DeliverPolicy.New:UF.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=$z($),K;try{K=await u8(async()=>{return(await X.consumers.get(BN,{filter_subjects:G,deliver_policy:Y})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Gp})}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let F=aS0({messages:async function*(){try{for await(let D of K)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{K.stop()}}(),onCancel:()=>K.stop()}).pipeThrough(pS0()).pipeThrough(nS0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,O=()=>{if(B)return;B=!0,K.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:w,value:j}=await F.read();if(w){O(),D.close();return}let E=j;if(E.kind==="done"){if(J){O(),D.close();return}continue}D.enqueue(E.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(BN,{filter:$z($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var UF,jP8,AB5=($)=>{let Z;return()=>Z??=$()},RB5,qB5=86400000000000,MB5=120000000000,IB5=4294967296,EP8,VB5=500000,SB5,CB5,_B5;var PP8=L(()=>{w8();aB1();rS0();tS0();_6();DP8();UF=_(vB(),1),jP8=_(sa(),1),RB5=AB5(()=>A$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),EP8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);SB5=process.env.STREAM_ENCODE_TRACE==="1",CB5=process.env.DECOPILOT_STREAM_TRACE==="1";_B5=SB5?new zP8:null});function cb0($,Z,Q,X){if(!X)return!1;return $.emit(Z,cF(Q,X.status,{title:X.title??void 0,virtualMcpId:X.virtual_mcp_id??void 0,createdBy:X.created_by??void 0,triggerId:X.trigger_id??null,branch:X.branch??null,harnessId:X.harness_id??void 0,createdAt:X.created_at,updatedAt:X.updated_at})),!0}var TP8=L(()=>{Z4()});class BR1{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 bB5($,Z){let Q=$.startsWith("thread:")?cH($):$;return[...new Set([Z,Q].filter((X)=>!!X))]}async function AP8($,Z){let Q=Z.organizationId;try{let X=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let Y of X){let J=await XN($,Y);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(Y),K=await Ni($,{threadId:Y,runBranch:G?.branch}),W=bB5(K,await OV0($,Y)),H=await t$0($,Q,wK1(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 W){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 w3(Q).catch(()=>{}),console.log(`[task-board] ${Z.id}: linked ${U.url} found on branch ${F}`),!0}}}catch(X){console.error("[task-board] PR lookup by branch failed",X)}return!1}var RP8=L(()=>{aZ();tK();V7()});async function qP8($,Z,Q){let X=Z.organizationId;if(!oJ(Z))return!1;if(!Cy(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,X))return!1;let Y=await $.storage.organizationSettings.get(X),J=dU(Y?.flags),G=await $.storage.taskBoard.update(Z.id,X,{status:J},Z.updatedBy);return await o6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),P8(X,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var MP8=L(()=>{v4();cX();di();nH();f9()});function mB5($){return $ instanceof vY}function dB5($,Z){return Z-$>=lB5}class LR1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,Q,X={}){this.taskBoard=$;this.contextFactory=Z;this.billing=Q;this.options=X}start(){if(this.timer)return;let $=this.options.intervalMs??yB5;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??hB5,Q=this.options.itemIntervalMs??gB5,X=new Date(Date.now()-Q),Y=await this.taskBoard.listItemsPendingReview(Z,this.cursor,X),J=Y.at(-1);this.cursor=Y.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:K}of Y)try{if(await this.reconcileItem(G,K,X))$++}catch(W){console.error(`[task-board-review-sweeper] ${G} failed`,W)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}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()-mU1),QB1);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()-cB5));for(let{id:Q,organizationId:X,threadId:Y}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${Q}`),await eN1(this.taskBoard,Y,X),await $B1(this.taskBoard,this.billing,Y,X)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async dispatchDueRetries($){let Z=0,Q=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:X,organizationId:Y,attempts:J}of Q)try{if(!await this.taskBoard.claimDueRetry(X,Y,new Date))continue;let G=await this.taskBoard.getById(X,Y);if(!G||G.status!==u$.progress||G.assigneeId!==M8)continue;let K=await this.contextFactory(Y,G.assignedBy??G.createdBy);if(!K)continue;await tH(K,G,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${X} after a failure (attempt ${J})`)}catch(G){if(console.error(`[task-board-review-sweeper] retry dispatch for ${X} failed`,G),mB5(G)){await this.returnToTodo(X,Y,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(X,Y,J,new Date(Date.now()+uB5)).catch((K)=>console.error(`[task-board-review-sweeper] re-arming ${X} failed`,K))}return Z}async returnToTodo($,Z,Q){try{let X=await this.taskBoard.getById($,Z);if(!X||X.status!==u$.progress)return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,X.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q}}).catch(()=>{}),P8(Z,Y)}catch(X){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,X)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!dB5(_L(Q,Z.reviewCycleStartedAt),Date.now()))return;await FN($,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 X=await this.taskBoard.getById($,Z);if(!X)return!1;if(!oJ(X))return!1;let Y=X.assigneeId===M8,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,X.assignedBy??X.createdBy);if(!G)return!1;if(J.length===0){if(await AP8(G,X))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(Y)await this.handOffReviewWithoutPr(G,X);return!1}}let K=await Promise.all(J.map(async(W)=>({...W,...await ni(Z,W)})));if(K.every((W)=>W.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${K.length} PR(s)) \u2014 proceeding on unknown`);if(await qP8(G,X,K))return!0;if(await X88(G,X))return!0;if(await this.resolveConflictFromSweep(G,X,K))return!0;if(!Y)return!1;if(!oN1(K))return!1;return await ii(G,X,{previewMatchesHead:aN1(K)}),!0}async resolveConflictFromSweep($,Z,Q){let X=Q.find((Y)=>Y.state!=="closed"&&Y.conflict===!0);if(!X)return!1;return await aE($,Z.organizationId,Z,{pr:{number:X.number,url:X.url},conflict:!0}).catch((Y)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",Y),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var yB5=60000,gB5=300000,hB5=50,uB5=60000,lB5=900000,cB5=120000;var IP8=L(()=>{v4();HS0();RP8();UN();Y60();nH();MP8();f9();lK();XB1();V7();S40();pi()});import{readdir as iB5,rm as mb0}from"fs/promises";import{join as db0}from"path";async function ib0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-pB5),Z.setUTCHours(0,0,0,0);let Q=0;try{let X=await ag($);for(let Y of X)if(/^\d{4}$/.test(Y))Q+=await VP8($,Y,Z);else if(!Y.startsWith(".")){let J=db0($,Y),G=await ag(J);for(let W of G){if(!/^\d{4}$/.test(W))continue;Q+=await VP8(J,W,Z)}if((await ag(J)).length===0)await mb0(J,{recursive:!0,force:!0})}}catch(X){console.warn("monitoring retention cleanup failed:",X)}return Q}async function VP8($,Z,Q){let X=0,Y=db0($,Z),J=await ag(Y);for(let K of J){if(!/^\d{2}$/.test(K))continue;let W=db0(Y,K),H=await ag(W);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${K}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=db0(W,U);await mb0(B,{recursive:!0,force:!0}),X++}}if((await ag(W)).length===0)await mb0(W,{recursive:!0,force:!0})}if((await ag(Y)).length===0)await mb0(Y,{recursive:!0,force:!0});return X}async function ag($){try{return(await iB5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var pB5=30;var OR1=()=>{};import{DBOS as DR1,SchedulerMode as nB5}from"@dbos-inc/dbos-sdk";async function oB5(){let $=[SW(),lu(),PB()],Z=0;for(let Q of $)try{Z+=await ib0(Q)}catch(X){console.error("[monitoring-retention] cleanup failed:",X)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function aB5($,Z){await DR1.runStep(()=>oB5(),{name:"monitoringRetention"})}function SP8(){if(kP8)return;kP8=!0;let $=DR1.registerWorkflow(aB5,{name:"monitoringRetentionWorkflow"});DR1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:tB5,mode:nB5.ExactlyOncePerIntervalWhenActive})}var tB5="23 4 * * *",kP8=!1;var CP8=L(()=>{o3();OR1()});function _P8($){return async(Z,Q)=>{let X=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(!X)return console.warn(`[automationContextFactory] User ${Q} not found in org ${Z} \u2014 returning null`),null;let Y=await dQ.create();Y.auth.user={id:Q,role:X.role},Y.organization={id:X.orgId,slug:X.orgSlug,name:X.orgName};let J=await F2($.db,Z,X.role);return Y.boundAuth=QT1({auth:Y.authInstance,headers:new Headers,role:X.role,permissions:J,userId:Q}),Y.access=new tT(Q,void 0,Y.boundAuth,X.role,"self"),oE(Y,{id:X.orgId,slug:X.orgSlug}),Y}}var vP8=L(()=>{eW();lU()});import{EventEmitter as rB5}from"events";var wR1;var xP8=L(()=>{aP();wR1=new rB5;wR1.on("request",($)=>{cD($)})});function fP8(){return async($,Z)=>{let Q=Date.now(),X=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let J="",G=!1;if(Y.startsWith("/mcp")&&X==="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=rn(N.params.name),O=N.params.arguments||{},D=Object.keys(O).map((j)=>rn(j)),w=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";J=`${X9.tool}${B}${X9.dim}(${w})${X9.reset}`}else if(N.method)J=`${X9.dim}${rn(N.method)}${X9.reset}`}}catch{}}let K=rn(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";K=`/mcp/${X9.mcp}${rn(F.slice(0,12))}\u2026${X9.reset}`}else if(Y==="/mcp")K=`${X9.mcp}/mcp${X9.reset}`;else if(Y==="/mcp/registry")K=`${X9.mcp}/mcp/registry${X9.reset}`;let W=eB5(X),H=G?"\u25C0":"\u2190";if(!rG0())console.log(`${X9.dim}${H}${X9.reset} ${W}${X}${X9.reset} ${K}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=sB5(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=G?"\u25B6":"\u2192";if(!rG0())console.log(`${X9.dim}${O}${X9.reset} ${W}${X}${X9.reset} ${K}${J?` ${J}`:""} ${N}${U}${X9.reset} ${X9.duration}${B}${X9.reset}`);wR1.emit("request",{method:X,path:rn(Y),status:U,duration:F,timestamp:new Date})}}}var X9,sB5=($)=>{if($>=500)return X9.serverError;if($>=400)return X9.clientError;if($>=300)return X9.redirect;return X9.ok},eB5=($)=>{return X9[$]||X9.reset},rn=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var bP8=L(()=>{aP();xP8();X9={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 uP8}from"crypto";import{mkdir as $L5,readdir as ZL5,rm as yP8,stat as lP8}from"fs/promises";import{join as ER1,relative as QL5}from"path";import{z as s$}from"zod";function mP8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return ER1(XL5,Z)}function dP8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function jR1($,Z){let Q=mP8($),X=dP8(Z);return ER1(Q,X)}function YL5($,Z,Q,X){let Y=T0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${X}`;return uP8("sha256",Y).update(J).digest("hex")}function hP8($,Z,Q,X,Y){let J=Math.floor(Date.now()/1000)+X,G=YL5(Z,Q,J,Y),K=new URL(`/api/dev-assets/${Z}/${dP8(Q)}`,$);return K.searchParams.set("expires",J.toString()),K.searchParams.set("signature",G),K.searchParams.set("method",Y),K.toString()}function iP8($,Z,Q){let X=`${$}:${Z.getTime()}:${Q}`;return`"${uP8("md5","etag").update(X).digest("hex")}"`}async function pP8($,Z,Q,X,Y){try{let J=await ZL5($,{withFileTypes:!0});for(let G of J){let K=ER1($,G.name),H=QL5(Z,K).replace(/\\/g,"/");if(Q&&!H.startsWith(Q))continue;if(G.isDirectory())if(X){let F=H+"/";if(!Q||F.startsWith(Q)){if(!(Q?H.slice(Q.length):H).includes("/"))Y.commonPrefixes.add(F)}}else await pP8(K,Z,Q,X,Y);else if(G.isFile()){if(X&&Q){let F=H.slice(Q.length);if(F.includes(X)){let U=F.indexOf(X),N=Q+F.slice(0,U+1);Y.commonPrefixes.add(N);continue}}try{let F=await lP8(K);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:iP8(K,F.mtime,F.size)})}catch{}}}}catch{}}function nP8($,Z){let X=U0($).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(Y)=>{let J=Y,G=J.prefix||"",K=J.maxKeys??1000,W=J.delimiter,H=J.continuationToken,F=mP8(X);await $L5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await pP8(F,F,G,W,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+K),O=N+K<U.objects.length,D=O?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:O,nextContinuationToken:D,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(Y)=>{let J=Y,G=jR1(X,J.key),K=await lP8(G);return{contentType:eT1(J.key),contentLength:K.size,lastModified:K.mtime.toISOString(),etag:iP8(G,K.mtime,K.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(Y)=>{let J=Y,G=J.expiresIn??gP8;return{url:hP8(Z,X,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(Y)=>{let J=Y,G=J.expiresIn??gP8;return{url:hP8(Z,X,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(Y)=>{let J=Y,G=jR1(X,J.key);try{return await yP8(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(Y)=>{let J=Y,G=[],K=[];return await Promise.all(J.keys.map(async(W)=>{let H=jR1(X,W);try{await yP8(H),G.push(W)}catch(F){K.push({key:W,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:K}}}]}async function zR1($,Z,Q){let X=nP8(Z,Q),Y=new pw({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:IZ});for(let G of X){let K="shape"in G.inputSchema?G.inputSchema.shape:s$.object({}).shape,W=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:s$.object({}).shape;Y.registerTool(G.name,{description:G.description??"",inputSchema:K,outputSchema:W,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 T3({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(J),YW(Y,J,$,"mcp:dev-assets")}async function tP8($,Z,Q,X){let J=nP8(Q,X).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 XL5="./data/assets",gP8=3600,cP8,oP8;var aP8=L(()=>{H$();Bp();W8();yH0();Np();OJ();ff0();cP8=new J1;cP8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),X=`${Q.protocol}//${Q.host}`;return zR1($.req.raw,Z,X)});oP8=cP8});var rP8={};W0(rP8,{mountDevRoutes:()=>JL5});function JL5($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(X)=>{let Y=X.get("studioContext"),J=new URL(X.req.url),G=`${J.protocol}//${J.host}`;return zR1(X.req.raw,Y,G)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(X)=>{let Y=X.get("studioContext"),J=new URL(X.req.url),G=`${J.protocol}//${J.host}`,K=X.req.param("toolName");if(!K)return X.json({error:"Missing tool name"},400);let W=await X.req.json(),H=await tP8(K,W,Y,G);if(H.isError)return X.json(H.content,500);return X.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",oP8);let Q=new J1;Q.use("*",HF({mountPath:"/api/dev-assets"})),Q.route("/",xf0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var sP8=L(()=>{W8();pT1();ff0();aP8()});var WT8={};W0(WT8,{watchHandler:()=>KT8,resolveCorsOrigin:()=>JT8,isSsoExemptPath:()=>XT8,isAllowedOAuthRedirectUri:()=>GT8,createApp:()=>OL5});import{readFileSync as GL5}from"fs";import{PrometheusSerializer as KL5}from"@opentelemetry/exporter-prometheus";import{DBOS as bO}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as FL5,oAuthProtectedResourceMetadata as UL5}from"better-auth/plugins";async function WL5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,$T8(eP8)])}catch{return Z.then((X)=>X.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),$T8(eP8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function $T8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function XT8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${zf0}/`)||$.startsWith(`${Of0}/`)}function YT8($){return $==="local.studio.decocms.com"}function JT8($,{baseUrl:Z,requestOrigin:Q}){let X;try{X=new URL($).hostname}catch{return null}if(X==="localhost"||X==="127.0.0.1")return $;if(YT8(X))return $;let Y=Z??Q;try{if(new URL(Y).origin===$)return $}catch{}return null}function GT8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"||YT8($.hostname)}async function OL5($={}){let Z=$.database??K8(),Q=!1;E9.stop().catch((Q0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",Q0)});let X,Y,J,G,K=new KR1,W,H,F,U=null;if($.disableNats)W=WR1(),X={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},Y=null,J=null,G=new B60,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(Q0)=>{return(async()=>{let j0=Q0.getReader();try{while(!0){let{done:e}=await j0.read();if(e)break}}catch{}finally{j0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=FP8();let Q0=T0().natsCredsPath,j0;if(Q0)try{j0=GL5(Q0,"utf8")}catch(g0){console.error(`[app] failed to read NATS_CREDS at ${Q0}; connecting anonymously`,g0)}U.init(T0().natsUrls,j0?{creds:j0}:void 0);let e=HG1()?new pJ1({getJetStream:()=>U.getJetStream()}):null;e?.init().catch(()=>{}),X=e;let n=new YF1({getJetStream:()=>U.getJetStream()});n.init().catch(()=>{}),Y=n;let p0=new vy(mN1,{getJetStream:()=>U.getJetStream()}),k0=new vy(C40,{getJetStream:()=>U.getJetStream()});p0.init().catch(()=>{}),k0.init().catch(()=>{}),J={reads:p0,cards:k0};let r0=new zO1({getJetStream:()=>U.getJetStream()});r0.init().catch(()=>{}),G=r0,W=WR1({getConnection:()=>U.getConnection()}),H=new HR1({getConnection:()=>U.getConnection()}),F=new NR1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),jB8(U),U.onReady(()=>{e?.init().catch((g0)=>{console.error("[McpListCache] Deferred init failed:",g0)}),n.init().catch((g0)=>{console.error("[SkillCatalogCache] Deferred init failed:",g0)}),p0.init().catch((g0)=>{console.error("[PrReadCache] Deferred init failed:",g0)}),k0.init().catch((g0)=>{console.error("[PrCardCache] Deferred init failed:",g0)}),r0.init().catch((g0)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",g0)}),W.start(),M_$(()=>U.getConnection()),F.init().catch((g0)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",g0)})})}if(xz)await xz();nJ1(X),GF1(Y),dN1(J),PO1(G);let B={storage:new fl(Z.db),sseHub:E9,onThreadFinished:async(Q0,j0)=>oi(new D3(Z.db),Q0,j0,new fG(Z.db))},O=new QL1(B),D=new C50(Z.db),w=new BR1(D);w.start(),Z88(H),H.start((Q0)=>{fS0(Q0),O.execute({type:"CANCEL",taskId:Q0}).catch((j0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",j0)})}).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;cT1(j),U?.onReady(()=>cT1(j)),eO1(j),U?.onReady(()=>eO1(j)),F.init().catch((Q0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",Q0)}),xz=async()=>{await O.stopAll(),O.dispose(),w.dispose(),H.stop().catch(()=>{}),kL8(),F.teardown(),X?.teardown(),Y?.teardown(),J?.reads.teardown(),J?.cards.teardown(),K.teardown(),W.teardown(),I_$(),G.teardown(),nJ1(null),GF1(null),dN1(null),PO1(null)};let E=new J1;if(E.use("*",wO1({enabled:(Q0)=>wn(Q0,"debug")==="1"})),E.use("*",uo0),E.use("/*",BB8({origin:(Q0,j0)=>JT8(Q0,{baseUrl:T0().baseUrl,requestOrigin:new URL(j0.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,j0)=>{if(await j0(),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'")}),!T0().noTui)E.use("*",fP8());E.use("*",async(Q0,j0)=>{if(await j0(),Ka(Q0.req.path))return;if(Q0.res.status>=500){let n=await Q0.res.clone().text();console.error(`[5xx Response] ${Q0.req.method} ${Q0.req.path} - ${Q0.res.status}:`,n)}}),E.get(WY.HEALTH,(Q0)=>{if(Q)return Q0.json({status:"shutting_down"},503);return Q0.json({status:"ok"})}),E.get(WY.HEALTH_LIVE,(Q0)=>{return Q0.json({status:"ok"})}),E.get(WY.HEALTH_READY,async(Q0)=>{if(Q)return Q0.json({status:"shutting_down"},503);let j0={};if(j0.postgres={status:await WL5(Z.pool)?"up":"down"},U)j0.nats=U.isConnected()?{status:"up"}:{status:"down"};else j0.nats={status:"down"};let e=j0.postgres.status==="up",n=e?200:503;return Q0.json({status:e?"ready":"not_ready",services:j0},n)}),E.get(WY.METRICS,async(Q0)=>{try{let j0=await do0.collect(),e=HL5.serialize(j0.resourceMetrics);return Q0.text(e,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(j0){return console.error("Failed to collect metrics:",j0),Q0.text("# Error collecting metrics",500)}});let z=1800000;E.get(`${WY.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(Q0)=>{let j0=Q0.req.param("queueName");if(!NL5.has(j0))return Q0.json({error:`Unknown queue: ${j0}`},404);let[e,n]=await Promise.all([bO.listQueuedWorkflows({queueName:j0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),bO.listQueuedWorkflows({queueName:j0,status:"PENDING",loadInput:!1,loadOutput:!1,dequeuedAfter:new Date(Date.now()-z).toISOString()})]);return Q0.json({queue_length:e.length,in_flight:n.length})}),E.route("/api/config",Ez8),E.route("/api/_reports",Sz8),E.route("/api/_stripe",XR1),E.route("/api/_github",vz8({taskBoard:()=>u,contextFactory:()=>g})),E.route("/api/_git",qn);let A={db:Z.db,encryptionKey:T0().encryptionKey};E.route("/api/_jira",yz8(A)),E.route("/api/_jira",fz8(A)),E.route("/report",Iz8($.clientDir)),E.route("/api/auth/custom",gB8),E.route("/api/auth/desktop",cB8),E.all("/api/auth/admin/*",OL8),E.all("/api/auth/*",async(Q0)=>{return await _8.handler(Q0.req.raw)});let P=iU8();P.use("/.well-known/oauth-protected-resource/mcp/:connectionId",i50),P.use("/mcp/:connectionId/.well-known/oauth-protected-resource",i50),E.route("/",P),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",I50),E.route("/",aU8()),E.use("/oauth-proxy/:connectionId/*",i50),E.all("/oauth-proxy/:connectionId/*",ZT8);let T=async(Q0)=>{let e=await BL5()(Q0.req.raw),n=await e.json();return Response.json(n,e)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",i50),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",T);let q=async(Q0)=>{let e=await LL5()(Q0.req.raw),n=await e.json();return Response.json(n,e)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",q);let f=OB8({ttlMs:120000}),C=await uN8({db:Z.db,auth:_8,encryption:{key:T0().encryptionKey},observability:{tracer:vD,meter:A$},modelListCache:K,providerKeyCache:W,memberRoleCache:f});dQ.set(C),fJ$({db:Z.db,baseUrl:y5()}),lN8({db:Z.db}),iN8({db:Z.db}),eN8({db:Z.db}),uz8({db:Z.db,encryptionKey:T0().encryptionKey}),_s$({db:Z.db}),JB8({db:Z.db}),Ze$({db:Z.db});let V=MW0(Z.db),h=new ds(Z.db),g=_P8({db:Z.db});BO1({storage:V,studioContextFactory:g}),NL1({systemDatabaseUrl:GG0(T0().databaseUrl,T0().databasePgSsl),studioContextFactory:g,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:E9}}),JL1({dispatchRunFn:i18,studioContextFactory:g,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:E9}});let l=new fl(Z.db),u=new D3(Z.db),d=new fG(Z.db),K0=new LR1(u,g,d);if(T0().taskBoardReviewSweeperEnabled){K0.start();let Q0=xz;xz=async()=>{await Q0?.(),K0.dispose()}}N$8({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let Q0=U?.getConnection();return Q0?await QT8.jetstreamManager(Q0):null},messageParts:l.messageParts(),resolveRun:async(Q0)=>{let j0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",Q0).executeTakeFirst();return j0?{orgId:j0.organization_id,createdBy:j0.created_by,version:j0.message_storage_version??1,status:j0.status,runFenceToken:j0.run_fence_token,title:j0.title??null}:null},completeRunIfNotCompleted:async(Q0,j0)=>{let e=await l.completeRunIfNotCompleted(Q0,j0);if(cb0(E9,j0,Q0,e),e)await oi(u,Q0,j0,d);return e},markRunRequiresAction:async(Q0,j0)=>{let e=await l.requiresActionIfInProgress(Q0,j0);return cb0(E9,j0,Q0,e),e},markRunFailed:async(Q0,j0,e,n)=>{let p0=await l.markRunFailed(Q0,j0,e,n);if(cb0(E9,j0,Q0,p0),p0)await oi(u,Q0,j0,d);return p0},clearSynthesizedError:async(Q0,j0)=>{await l.messageParts().replaceMessageParts(Q0,eE(Q0,j0),[])},persistTitle:(Q0,j0,e)=>l.update(Q0,j0,{title:e}),onTitleUpdated:async({runId:Q0,orgId:j0,title:e})=>{let n=await l.get(Q0,j0).catch(()=>null);E9.emit(j0,cF(Q0,n?.status??"in_progress",{title:e,virtualMcpId:n?.virtual_mcp_id??void 0,createdBy:n?.created_by,triggerId:n?.trigger_id,branch:n?.branch??null,harnessId:n?.harness_id??void 0,createdAt:n?.created_at,updatedAt:n?.updated_at}))},bumpProgress:async({runId:Q0,orgId:j0})=>{await l.bumpProgress(Q0,j0)},recordCompleted:async({runId:Q0,orgId:j0,distinctId:e,usage:n})=>{u1.capture({distinctId:e,event:"chat_message_completed",groups:{organization:j0},properties:{organization_id:j0,thread_id:Q0,transport:"projector",input_tokens:n.inputTokens,output_tokens:n.outputTokens,total_tokens:n.totalTokens}})},recordFailed:async({runId:Q0,orgId:j0,distinctId:e,reason:n,kind:p0})=>{u1.capture({distinctId:e,event:"chat_message_failed",groups:{organization:j0},properties:{organization_id:j0,thread_id:Q0,transport:"projector",error_category:p0,error_message:n}})},purgeRun:async(Q0)=>{F.purge(Q0)}}),w18({studioContextFactory:g,systemDatabaseUrl:GG0(T0().databaseUrl,T0().databasePgSsl),streamBuffer:F}),SP8(),bJ$(),mN8(),nN8(),ZB8(),mz8(),ys$(),KB8(),Qe$();let E0=async(Q0,j0,e)=>{let n=await V.findById(Q0,j0);if(!n)throw Error("Automation not found");return DO1({automationId:n.id,organizationId:n.organization_id,triggerId:null})},J0=new An(V,({automation:Q0,trigger:j0,contextMessages:e,idempotencyKey:n})=>N60({automationId:Q0.id,organizationId:Q0.organization_id,triggerId:j0.id,contextMessages:e},{idempotencyKey:n})),F0=[SW(),lu(),PB()];for(let Q0 of F0)ib0(Q0).then(()=>{}).catch((j0)=>console.error("[monitoring] Retention cleanup failed:",j0));let X0=()=>_8.api.deleteAllExpiredApiKeys().catch((Q0)=>console.error("[auth] Expired API key cleanup failed:",Q0));X0(),setInterval(X0,86400000).unref(),E.use("*",async(Q0,j0)=>{if(go0(Q0.req.path))return j0();let e={measure:async(p0,k0)=>{XW(Q0,p0);try{return await k0()}finally{A3(Q0,p0)}}},n=await dQ.create(Q0.req.raw,{timings:e});n.automationRunner=E0,Q0.set("studioContext",n);try{await j0()}finally{let p0=n.pendingRevalidations;if(p0.length>0)Promise.race([Promise.allSettled(p0),k$(30000)]).catch((r0)=>console.error("[studio] revalidation cleanup error:",r0))}}),E.use("/api/:org/decopilot/*",En),E.use("/api/:org/v1/*",En),E.use("/api/:org/files/*",En),E.use("*",async(Q0,j0)=>{if(XT8(Q0.req.path))return j0();let e=Q0.get("studioContext");if(!e?.organization?.id||!e?.auth?.user?.id)return j0();if(!(await e.storage.orgSsoConfig.getByOrgId(e.organization.id))?.enforced)return j0();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 j0()});let t=new J1;t.use("*",HF({mountPath:"/api/org-sso"})),t.route("/",Af0()),E.route("/api/org-sso",t),E.get("/api/tools/management",(Q0)=>{return Q0.json({tools:t61,grouped:nT()})}),E.use("/mcp/*",async(Q0,j0)=>{XW(Q0,"mcp");try{return await j0()}finally{A3(Q0,"mcp")}});let s=async(Q0,j0)=>{let e=Q0.var.studioContext;if(!e.auth.user?.id&&!e.auth.apiKey?.id){let n=new URL(Q0.req.url),p0=Q0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),k0=p0?`${p0}://${n.host}`:n.origin;return Q0.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${k0}${n.pathname}/.well-known/oauth-protected-resource"`}})}return await j0()};if(E.use("/mcp/:connectionId?",s),E.use("/mcp/gateway/:virtualMcpId?",s),E.use("/mcp/virtual-mcp/:virtualMcpId?",s),E.use("/mcp/self",s),fK()){let{mountDevRoutes:Q0}=(sP8(),eb0(rP8));Q0(E,s)}let Z0=new J1;Z0.use("*",HF({mountPath:"/mcp"})),Z0.route("/",qC0()),E.route("/mcp",Z0);let G0=new J1;G0.use("*",HF({mountPath:"/mcp/self"})),G0.route("/",Nb0()),E.route("/mcp/self",G0);let i0=new J1;i0.use("*",HF({mountPath:"/mcp"})),i0.route("/",VC0()),E.route("/mcp",i0),E.use("/api/:org/models/*",async(Q0,j0)=>{XW(Q0,"llm_models");try{return await j0()}finally{A3(Q0,"llm_models")}});let C0=CL8({cancelBroadcast:H,streamBuffer:F,runRegistry:O});E.route("/api",C0),E.route("/api",nz8);let P1=new J1;P1.use("*",HF({mountPath:"/api"})),P1.route("/",Db0()),E.route("/api",P1),E.route("/api",Lz8);let c0=new J1;c0.use("*",HF({mountPath:"/api"})),c0.route("/",wb0({tokenStorage:h,automationEventDispatcher:J0})),E.route("/api",c0);let z0=new ps(Z.db),P0=new J1;P0.use("*",HF({mountPath:"/api"})),P0.route("/",Vf0()),E.route("/api",P0),E.route("/api/deco-sites",iL8()),E.route("/api/deco-apps",Wz8());let Z1=new J1;Z1.use("*",HF({mountPath:"/api/deco-sites"})),Z1.route("/",Sf0()),E.route("/api/deco-sites",Z1),E.route(zf0,DL8()),E.route(Aj8,Mj8()),E.route("/api/_editor-resolve",Dz8()),E.route(dB8,iB8()),E.route(Of0,ZL8());let R1=Gz8({kvStorage:z0,runRegistry:O,streamBuffer:F,sseHub:E9,cancelBroadcast:H,tokenStorage:h,automationEventDispatcher:J0,mountDevAssets:fK(),mcpAuth:s,oauthProxyHandler:ZT8,watchHandler:KT8,betterAuthProtectedResourceHandler:T,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",R1),E.notFound((Q0)=>{return Q0.json({error:"Not Found",path:Q0.req.path},404)}),E.onError(xL8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([E9.stop(),xz?Promise.resolve(xz()).finally(()=>{xz=null}):Promise.resolve()]),U)await U.drain().catch((Q0)=>console.error("[shutdown] NATS drain error:",Q0));console.log("[shutdown] Flushing telemetry..."),await YJ().catch((Q0)=>console.error("[shutdown] Telemetry flush error:",Q0)),console.log("[shutdown] Closing database..."),await bD(Z).catch((Q0)=>console.error("[shutdown] Database close error:",Q0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await bO.registerQueue(ZK,{partitionQueue:!0,concurrency:FO1,minPollingIntervalMs:UO1}),await bO.registerQueue($K,{partitionQueue:!0,concurrency:FL1,priorityEnabled:!0}),await bO.registerQueue(qB,{workerConcurrency:T0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await bO.registerQueue(MB,{workerConcurrency:T0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await bO.registerQueue(dD,{partitionQueue:!0,concurrency:D18}),await bO.registerQueue(sP,$e$),await nT1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((Q0)=>bO.deleteQueue(Q0))),await NO1(Z.pool),fA$().catch((Q0)=>{console.error("[studio-pack-backfill] failed:",Q0)}),yJ$().catch((Q0)=>{console.error("[org-fs] public-sets boot sync kick failed:",Q0)})}})}var QT8,eP8=5000,xz=null,ZT8=async($)=>{let Z=$.req.param("connectionId");if(!Z)return $.json({error:"Missing connectionId"},400);let Q=$.req.path.split("/").filter(Boolean),X=Q[Q.length-1],Y=$.get("studioContext");if(!Y)Y=await dQ.create($.req.raw),$.set("studioContext",Y);let J=$.req.param("org")?Y.organization?.id:void 0,G=await Y.storage.connections.findById(Z,J);if(!G?.connection_url)return $.json({error:"Connection not found"},404);if(X==="register"&&G.oauth_config?.clientId){let h=await $.req.json().catch(()=>({}));return $.json({...typeof h==="object"&&h!==null?h:{},client_id:G.oauth_config.clientId,...G.oauth_config.clientSecret?{client_secret:G.oauth_config.clientSecret}:{},client_secret_expires_at:0})}let K=await Bn(G.connection_url),W,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(K.ok)W=(await K.json()).authorization_servers?.[0];if(!W)W=H.origin;let N=await V50(W);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),O;if(X==="authorize")O=B.authorization_endpoint;else if(X==="token")O=B.token_endpoint;else if(X==="register")O=B.registration_endpoint;if(!O)return $.json({error:`Unknown OAuth endpoint: ${X}`},404);let D=oU8(O);if(D)return D;let w=new URL(O),j=new URL($.req.url);if(w.search=j.search,X==="authorize"){let h=w.searchParams.get("redirect_uri");if(h){let g=T0().baseUrl??j.origin;try{if(!GT8(new URL(h),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",h)}if(w.searchParams.has("resource"))w.searchParams.set("resource",U);if(HB8(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 A=$.req.header("Authorization");if(A)E.Authorization=A;let P,T=null,q=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(X==="token"&&z?.includes("application/x-www-form-urlencoded")){if(A?.toLowerCase().startsWith("basic "))try{let d=atob(A.slice(6).trim()),K0=d.indexOf(":");if(K0!==-1){let E0=decodeURIComponent(d.slice(0,K0)),J0=decodeURIComponent(d.slice(K0+1));T=E0||null,q=J0||null}}catch{}let h=await $.req.formData();if(h.has("resource"))h.set("resource",U);let g=h.get("client_id"),l=h.get("client_secret");if(typeof g==="string"&&g)T=g;if(typeof l==="string"&&l)q=l;let u=new URLSearchParams;for(let[d,K0]of h.entries())u.append(d,K0.toString());P=u.toString()}else if(X==="register"&&z?.toLowerCase().includes("application/json")){let h=await Y.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 u=typeof l==="object"&&l!==null&&!Array.isArray(l);if(P===void 0&&!u)P=g;if(P===void 0){let d=l,K0=d.metadata&&typeof d.metadata==="object"?d.metadata:{};d.metadata={...K0,organization_id:G.organization_id,...h?.slug?{organization_slug:h.slug}:{},...h?.name?{organization_name:h.name}:{}},P=JSON.stringify(d),E["Content-Type"]="application/json"}}else P=$.req.raw.body??void 0;let f=await fetch(w.toString(),{method:$.req.method,headers:E,body:P,duplex:"half",redirect:"manual"}),C=new Headers,V=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[h,g]of f.headers.entries())if(!V.includes(h.toLowerCase()))C.set(h,g);if(X==="token"&&f.ok){let h=await f.text();try{let g=JSON.parse(h);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,u=null;try{u=await Ln(G.connection_url)??O}catch{u=O}let d={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:T,clientSecret:q,tokenEndpoint:u};await new O9(Y.db,Y.vault).upsert(d)}}catch(g){console.error("[oauth-proxy] failed to persist downstream token:",g)}return new Response(h,{status:f.status,statusText:f.statusText,headers:C})}return new Response(f.body,{status:f.status,statusText:f.statusText,headers:C})},KT8=async($)=>{let Z=$.var.studioContext;if(!(Z.auth.user?.id??Z.auth.apiKey?.userId))return $.json({error:"Unauthorized"},401);let X=Z.organization?.id;if(!X)return $.json({error:"organization id missing"},400);let Y=$.req.query("types"),J=Y?Y.split(",").map((K)=>K.trim()).filter(Boolean):null,G=crypto.randomUUID();return _O($,async(K)=>{if(await K.writeSSE({event:"connected",data:JSON.stringify({listenerId:G,organizationId:X,typePatterns:J,connectedAt:new Date().toISOString()})}),!E9.add({id:G,organizationId:X,typePatterns:J?.length?J:null,push:(F)=>{K.writeSSE({id:F.id,event:F.type,data:JSON.stringify(F)}).catch(()=>{E9.remove(X,G)})}})){await K.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let H=setInterval(()=>{K.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(H)})},30000);await new Promise((F)=>{K.onAbort(()=>{clearInterval(H),E9.remove(X,G),F()})})})},HL5,NL5,BL5=()=>UL5(_8),LL5=()=>FL5(_8);var HT8=L(()=>{w8();H$();gJ$();dN8();tN8();QB8();j60();MN1();WB8();S40();F9();qd();Z4();W8();Ff0();LB8();jO1();Y3();lU();jT1();NX();_6();N6();qT1();mB8();pB8();QL8();CT1();wL8();hT1();_L8();iT1();SH();nx0();pT1();fL8();Nf0();Kz8();aT1();Hz8();MC0();L60();Oz8();kC0();q21();wz8();A21();zz8();Vz8();Cz8();_z8();xz8();bz8();gz8();dz8();ZA1();tz8();R21();z21();QG0();UP8();_J();kV0();pN1();U$0();B$0();AO1();NP8();LP8();mT1();PP8();XL1();TP8();Vr();ts();JO();f9();gP1();IP8();CP8();HU0();OR1();o3();tT1();YO();$L1();HU0();iS0();b61();y61();vP8();bc();bP8();ln();jT1();Yp();bS0();QT8=_(vB(),1);HL5=new KL5,NL5=new Set([ZK,$K,qB,MB,dD,sP])});var BT8={};W0(BT8,{resolveClientDir:()=>TL5,resolveAssetPathWithTraversalCheck:()=>NT8,isPathWithinDirectory:()=>UT8,createAssetHandler:()=>AL5});import{resolve as _90,dirname as DL5,join as wL5,extname as jL5,basename as EL5,sep as FT8}from"path";function zL5($,Z){if($===Z||EL5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${FT8}assets${FT8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function UT8($,Z){let Q=_90(Z),X=_90($);return X===Q||X.startsWith(Q+"/")}function NT8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,X=_90(Z,Q);if(!UT8(X,Z))return null;return X}function TL5($,Z="../client"){let Q=new URL($),X=DL5(Q.pathname);return _90(X,Z)}function AL5($={}){let{env:Z="production",clientDir:Q=PL5,isServerPath:X=()=>!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),K;try{K=decodeURIComponent(G.pathname)}catch{return null}if(X(K))return null;let W=NT8({requestPath:K,clientDir:Q});if(!W)return null;let H=wL5(W,"index.html"),F=_90(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(jL5(W))?[H,F]:[];for(let O of[W,...B])try{let D=Bun.file(O);if(await D.exists())return new Response(D,{headers:zL5(O,F)})}catch{}if(K.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var PL5="./dist/client";var LT8=()=>{};var OT8={};W0(OT8,{tryUpgradePreviewWs:()=>SL5,tryHandlePreviewHttp:()=>kL5,previewWebSocketHandler:()=>CL5,parsePreviewBaseDomain:()=>VL5,isPreviewWsData:()=>pb0,extractHandleFromHost:()=>PR1});function ML5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function IL5(){return new Response(qL5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function VL5($){if(!$||$.trim()==="")return null;let Z=$.includes("{handle}")?$.replace("{handle}","__handle__"):$,Q;try{Q=new URL(Z)}catch{return null}let X=Q.hostname;if($.includes("{handle}")){let Y=X.indexOf(".");if(Y<=0||Y===X.length-1)return null;return X.slice(Y+1)}return X}function PR1($,Z){if(!$||!Z)return null;let Q=$.indexOf(":"),X=(Q>=0?$.slice(0,Q):$).toLowerCase(),J=`.${Z.toLowerCase().replace(/^\.+|\.+$/g,"")}`;if(!X.endsWith(J))return null;let G=X.slice(0,X.length-J.length);if(!G||G.includes("."))return null;return G}async function kL5($,Z){let Q=PR1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let X=await Z.getRunner();if(!X)return x90(503,"preview proxy not configured");let Y=await X.proxyPreviewRequest(Q,$);if(Y.headers.get(Ky)&&ML5($))return IL5();return Y.headers.delete(Ky),Y}function x90($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function pb0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function SL5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let X=PR1($.headers.get("host"),Q.baseDomain);if(!X)return null;let Y=await Q.getRunner();if(!Y)return x90(503,"preview proxy not configured");let J=await Y.resolvePreviewUpstreamUrl(X);if(!J)return x90(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return x90(404,"not found");let K=`${J.replace(/^http/,"ws")}${G.pathname}${G.search}`,W=$.headers.get("sec-websocket-protocol"),H=W?W.split(",").map((N)=>N.trim()).filter(Boolean):[],F={kind:"preview",upstreamUrl:K,upstreamProtocols:H,pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:F}))return x90(426,"upgrade failed");return}function v90($,Z,Q,X){if(Z.closed)return;Z.closed=!0;try{$.close(Q,X)}catch{}try{Z.upstream?.close()}catch{}}var RL5=256,qL5='<!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>',CL5;var DT8=L(()=>{gH1();CL5={open($){let Z=$.data;if(!pb0(Z))return;let Q;try{Q=Z.upstreamProtocols.length>0?new WebSocket(Z.upstreamUrl,Z.upstreamProtocols):new WebSocket(Z.upstreamUrl)}catch(X){console.warn(`[preview-ws] failed to dial upstream ${Z.upstreamUrl}: ${X instanceof Error?X.message:String(X)}`),v90($,Z,1011,"upstream connect failed");return}Q.binaryType="arraybuffer",Z.upstream=Q,Q.addEventListener("open",()=>{while(Z.pending.length>0){let X=Z.pending.shift();if(X!==void 0)Q.send(X)}}),Q.addEventListener("message",(X)=>{if(Z.closed)return;$.send(X.data)}),Q.addEventListener("close",(X)=>{v90($,Z,X.code||1000,X.reason||"")}),Q.addEventListener("error",()=>{v90($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!pb0(Q))return;let X=Q.upstream;if(X&&X.readyState===WebSocket.OPEN){X.send(Z);return}if(Q.pending.length>=RL5){v90($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!pb0(Z))return;v90($,Z,1000,"")}}});var oL5={};import{existsSync as hL5}from"fs";function IR1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}function cL5($){let Z=new Headers($.headers);for(let[Q,X]of Object.entries(lL5))Z.set(Q,X);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}async function tL5($){let Z;try{Z=await _L5.create({systemDatabaseUrl:IR1(WG.databaseUrl,WG.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:$K,executorId:$,loadInput:!1,loadOutput:!1});if(Q.length===0){console.log(`[shutdown] no in-flight thread-gate gates to hand off (executor ${$})`);return}let X=Q.map((Y)=>Y.workflowID);await Z.resumeWorkflows(X,{queueName:$K}),console.log(`[shutdown] re-enqueued ${X.length} in-flight thread-gate gate(s) for re-adoption by a live executor (from ${$}):`,X)}catch(Q){console.error("[shutdown] thread-gate handoff failed:",Q)}finally{await Z?.destroy().catch(()=>{})}}async function tb0($){if(zT8)return;zT8=!0,console.log(`
5424
5424
  [shutdown] Received ${$}, shutting down gracefully...`);let Z=Number(process.env.SHUTDOWN_GRACE_SECONDS??60)*1000,Q=Math.max(Z-5000,1e4),X=setTimeout(()=>{console.error(`[shutdown] Timed out after ${Q}ms, forcing exit.`),process.exit(1)},Q);X.unref?.();let Y=0;try{nL5(),nb0.markShuttingDown();let J=wI1(WG.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await k$(J),await pL5.stop(!0);let G=f90.executorID;await f90.shutdown(),await tL5(G),await nb0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),Y=1}clearTimeout(X),process.exit(Y)}var WG,f90,_L5,vL5,xL5,fL5,bL5,yL5,PT8,gL5,wT8,TT8,uL5,lL5,mL5,dL5,iL5,TR1,AR1,AT8,RT8,jT8,nb0,RR1,ET8,qR1=5,MR1=0,pL5,nL5,zT8=!1;var qT8=L(async()=>{w8();N7$();O7$();H$();Ch();_6();T7$();WG=T0();t8$();({DBOS:f90,DBOSClient:_L5}=await import("@dbos-inc/dbos-sdk"));vL5=[ZK,$K,qB,MB,dD,sP],xL5=WG.dispatchRole==="worker"?vL5:WG.dispatchRole==="api"?[]:void 0;f90.setConfig(U7$({systemDatabaseUrl:IR1(WG.databaseUrl,WG.databasePgSsl),poolSize:WG.dbosPoolSize,executorID:WG.podName,listenQueues:xL5}));({createApp:fL5}=await Promise.resolve().then(() => (HT8(),WT8))),{isServerPath:bL5}=await Promise.resolve().then(() => (QG0(),C8$)),{createAssetHandler:yL5,resolveClientDir:PT8}=await Promise.resolve().then(() => (LT8(),BT8)),gL5=WG.port,wT8=PT8(import.meta.url,"../client"),TT8=hL5(wT8)?wT8:PT8(import.meta.url,"../dist/client"),uL5=yL5({clientDir:TT8,isServerPath:bL5}),lL5={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};({parsePreviewBaseDomain:mL5,tryHandlePreviewHttp:dL5,tryUpgradePreviewWs:iL5,previewWebSocketHandler:TR1,isPreviewWsData:AR1}=await Promise.resolve().then(() => (DT8(),OT8))),{getOrInitSharedRunner:AT8}=await Promise.resolve().then(() => (lH(),Lm$)),RT8=mL5(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),jT8={baseDomain:RT8??"",getRunner:AT8};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())AT8().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});nb0=await fL5({clientDir:TT8}),RR1=process.env.DBOS_CONDUCTOR_KEY?.trim(),ET8=process.env.DBOS_CONDUCTOR_URL?.trim();await L7$({databaseUrl:IR1(WG.databaseUrl,WG.databasePgSsl)},()=>f90.launch({...RR1?{conductorKey:RR1}:{},...RR1&&ET8?{conductorURL:ET8}:{}}));console.log(`[dbos] application version: ${f90.applicationVersion}`);await u8(async()=>{MR1++;try{return await nb0.initDbos()}catch($){let Z=MR1>=qR1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${MR1}/${qR1} failed, ${Z}`,$),$}},{maxAttempts:qR1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});if(!WG.isCli){let{bannerLines:$}=await Promise.resolve().then(() => (za(),PG0));console.log("");for(let Z of $())console.log(Z)}pL5=Bun.serve({idleTimeout:0,port:gL5,hostname:"0.0.0.0",fetch:async($,Z)=>{if(RT8){let X=await iL5($,Z,jT8);if(X===void 0)return;if(X)return X;let Y=await dL5($,jT8);if(Y)return Y}let Q=await uL5($);if(Q)return cL5(Q);return nb0.fetch($,{server:Z})},websocket:{open($){if(AR1($.data))TR1.open($)},message($,Z){if(AR1($.data))TR1.message($,Z)},close($){if(AR1($.data))TR1.close($)}},development:!1}),nL5=P7$();if(WG.localMode)Promise.resolve().then(() => (by(),AS0)).then(async({seedLocalMode:$,markSeedComplete:Z,healLocalJwks:Q})=>{try{let X=await Q();if(X>0)console.log(`[local-mode] cleared ${X} undecryptable JWKS key(s); Better Auth will generate a fresh one`);let Y=await $()}catch(X){console.error("Failed to seed local mode:",X)}finally{Z()}}).catch(async($)=>{console.error("Failed to load local-mode module:",$);try{let{markSeedComplete:Z}=await Promise.resolve().then(() => (by(),AS0));Z()}catch{}});process.on("SIGTERM",()=>tb0("SIGTERM"));process.on("SIGINT",()=>tb0("SIGINT"));process.on("SIGHUP",()=>tb0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),tb0("uncaughtException")})});var VR1={};W0(VR1,{startServer:()=>rL5,interceptConsoleForTui:()=>aL5});function aL5(){let{log:$,warn:Z,error:Q}=console;function X(...Y){let J=Y.map((G)=>typeof G==="string"?G:Bun.inspect(G)).join(" ");for(let G of J.split(`
5425
5425
  `)){let K=Bun.stripANSI(G).trim();if(!K)continue;cD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}return console.log=X,console.warn=X,console.error=X,aG0(!0),()=>{console.log=$,console.warn=Z,console.error=Q,aG0(!1)}}async function rL5($){let Z=await ga(Number($.port)),{settings:Q,services:X}=await oG0({port:String(Z),home:$.home,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui});for(let Y of X)oP({name:Y.name,status:"ready",port:Y.port});ba(),await qT8().then(() => oL5),ya(`http://localhost:${Q.port}`)}var kR1=L(()=>{p01();aP();a01()});import{parseArgs as sL5}from"util";import{homedir as SR1}from"os";import{join as IT8}from"path";function $y0($){if($.noTui)return!1;return $.isTty===!0}function Yt($,Z,Q){if(Z===void 0)return;let X=Number(Z);if(!Number.isSafeInteger(X)||X<=0||Q!==void 0&&X>Q)throw Error(`Invalid --${$} "${Z}" \u2014 must be a positive integer${Q!==void 0?` up to ${Q}`:""}.`);return X}var{values:s9,positionals:b90}=sL5({args:process.argv.slice(2),options:{port:{type:"string",short:"p",default:process.env.PORT||"3000"},"vite-port":{type:"string",default:process.env.VITE_PORT||"4000"},home:{type:"string"},"base-url":{type:"string"},help:{type:"boolean",short:"h",default:!1},version:{type:"boolean",short:"v",default:!1},"skip-migrations":{type:"boolean",default:!1},"no-tui":{type:"boolean",default:!1},"no-local-mode":{type:"boolean",default:!1},target:{type:"string"},"dry-run":{type:"boolean",default:!1},batch:{type:"string"},limit:{type:"string"},org:{type:"string"}},allowPositionals:!0});try{Yt("port",s9.port,65535),Yt("vite-port",s9["vite-port"],65535)}catch($){console.error($.message),process.exit(1)}if(s9.help)console.log(`
5426
5426
  Deco CMS \u2014 Open-source control plane for your AI agents