decocms 4.462.2 → 4.462.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/dist/client/assets/{AlertCircle-BOqaZFXA.js → AlertCircle-rm9vrEtW.js} +1 -1
  2. package/dist/client/assets/{AreaChart-BVBZ_mBW.js → AreaChart-Bxeu7Flp.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-BsFMaTJ5.js → ArrowLeft-q0aoA66K.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-Bi8YJGtE.js → ArrowUp-wgeukGJg.js} +1 -1
  5. package/dist/client/assets/{Building02-BG4IPwQ3.js → Building02-BPTZeJ83.js} +1 -1
  6. package/dist/client/assets/{CartesianChart-BROP1iuM.js → CartesianChart-CeNVmGpJ.js} +1 -1
  7. package/dist/client/assets/{Check-ChBZV9OV.js → Check-ycQN3J2t.js} +1 -1
  8. package/dist/client/assets/{CheckCircle-D49A5hws.js → CheckCircle-C2px0gfY.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-wB5J5ntl.js → ChevronUp-B8UqekRj.js} +1 -1
  10. package/dist/client/assets/{Copy01-C4tt-_AN.js → Copy01-DFSuVPvj.js} +1 -1
  11. package/dist/client/assets/{CreditCard01-DCvyy0kz.js → CreditCard01-C13hgCp6.js} +1 -1
  12. package/dist/client/assets/{DotsVertical-BWwzMO41.js → DotsVertical-8YiGOIqq.js} +1 -1
  13. package/dist/client/assets/{ErrorBarContext-Ct0GvI3W.js → ErrorBarContext-DRxvuP2h.js} +1 -1
  14. package/dist/client/assets/{Image01-B4l0All3.js → Image01-CgjyCWgG.js} +1 -1
  15. package/dist/client/assets/{Key01-DNpH0NnO.js → Key01-B1-8KpSg.js} +1 -1
  16. package/dist/client/assets/{Line-Bq7EY1pw.js → Line-DkNHkEZJ.js} +1 -1
  17. package/dist/client/assets/{Link01-DZVgeeWe.js → Link01-B8ajBJDc.js} +1 -1
  18. package/dist/client/assets/{LinkBroken01-CNbQoBrl.js → LinkBroken01-C78kyif5.js} +1 -1
  19. package/dist/client/assets/{LinkExternal01-D73wyIiU.js → LinkExternal01-Bn0SPqIC.js} +1 -1
  20. package/dist/client/assets/{Monitor01-BJ23zU-n.js → Monitor01-DC2k418g.js} +1 -1
  21. package/dist/client/assets/{Palette-BKZ5R7W4.js → Palette-DOpFqZPK.js} +1 -1
  22. package/dist/client/assets/{Plus-CP_oegJ7.js → Plus-DC_7nhbs.js} +1 -1
  23. package/dist/client/assets/{SearchMd-D2OTQFME.js → SearchMd-Be3GMdpX.js} +1 -1
  24. package/dist/client/assets/{Sector-OlKrChyD.js → Sector-CASMflPE.js} +1 -1
  25. package/dist/client/assets/{ShoppingBag01-BfMGWAwv.js → ShoppingBag01-DNQzuGTX.js} +1 -1
  26. package/dist/client/assets/{Sun-BAfhxpb-.js → Sun-COaeigjT.js} +1 -1
  27. package/dist/client/assets/{Tool01-B_dduyQs.js → Tool01-BNeCU30E.js} +1 -1
  28. package/dist/client/assets/{Trash01-C4sE_NGv.js → Trash01-BTpCOmuX.js} +1 -1
  29. package/dist/client/assets/{Upload01-qBk1AINH.js → Upload01-Dfmvp3DJ.js} +1 -1
  30. package/dist/client/assets/{User01-DcjCdViP.js → User01-4R_aUn4g.js} +1 -1
  31. package/dist/client/assets/{UserSquare-CQZbVq0f.js → UserSquare-DJ8hiuYq.js} +1 -1
  32. package/dist/client/assets/{Users01-DR0sKzFO.js → Users01-v0Jyk4Ot.js} +1 -1
  33. package/dist/client/assets/{X-DJN31Nfv.js → X-DLYqFuX1.js} +1 -1
  34. package/dist/client/assets/{XAxis-C3Bf1J_u.js → XAxis-Dt1OJoaL.js} +1 -1
  35. package/dist/client/assets/{XClose-D0KEw8ZX.js → XClose-BbdvFCiX.js} +1 -1
  36. package/dist/client/assets/{ZoomOut-UxLkEy8R.js → ZoomOut-DFERFVow.js} +1 -1
  37. package/dist/client/assets/{access-gate-RAaA3S4I.js → access-gate-CDypY0PL.js} +1 -1
  38. package/dist/client/assets/{add-connection-dialog-BY0I55_H.js → add-connection-dialog-C7D8wNe0.js} +1 -1
  39. package/dist/client/assets/{agent-analytics-BkAfBBox.js → agent-analytics-BImzDnhS.js} +1 -1
  40. package/dist/client/assets/agent-app-CoPaMo44.js +1 -0
  41. package/dist/client/assets/{agent-assets-B3yLb2yB.js → agent-assets-TjuTBaEj.js} +1 -1
  42. package/dist/client/assets/{agent-automation-B2a9NwZW.js → agent-automation-jGaRzmAt.js} +1 -1
  43. package/dist/client/assets/{agent-automations-4swr6ii9.js → agent-automations-Dfj6v173.js} +1 -1
  44. package/dist/client/assets/{agent-connect-sources-DScLzDRG.js → agent-connect-sources-BGMBLNVm.js} +1 -1
  45. package/dist/client/assets/agent-deck-LRjwh5gJ.js +1 -0
  46. package/dist/client/assets/{agent-e2e-BYVtzJn1.js → agent-e2e-D-iDy0X1.js} +1 -1
  47. package/dist/client/assets/{agent-experiments-BytI8p3-.js → agent-experiments-CrLfobcW.js} +1 -1
  48. package/dist/client/assets/{agent-file-YzyYVZ_N.js → agent-file-CpxoMhYy.js} +1 -1
  49. package/dist/client/assets/{agent-hosting-XjyAni_P.js → agent-hosting-Ccr3JHE_.js} +1 -1
  50. package/dist/client/assets/{agent-icon-DGDGzDPg.js → agent-icon-BhZZd37x.js} +1 -1
  51. package/dist/client/assets/agent-library-Bg7R_pV5.js +1 -0
  52. package/dist/client/assets/agent-library-file-C8OO6Uy9.js +1 -0
  53. package/dist/client/assets/{agent-monitor-BeZr1N-B.js → agent-monitor-tFj42gZE.js} +1 -1
  54. package/dist/client/assets/{agent-overview-qqA1EvR2.js → agent-overview-nEVkVUxO.js} +1 -1
  55. package/dist/client/assets/agent-settings-OH2hBY9j.js +1 -0
  56. package/dist/client/assets/{agent-site-editor-3yAc0dAv.js → agent-site-editor-CSh7k9QL.js} +1 -1
  57. package/dist/client/assets/agent-site-editor-code-DEtiY7c_.js +2 -0
  58. package/dist/client/assets/{agent-site-editor-content-BVsrDzv_.js → agent-site-editor-content-nUoK_dJG.js} +3 -3
  59. package/dist/client/assets/{agent-site-editor-preview-CWeO_adL.js → agent-site-editor-preview-Bz2ZTG6q.js} +3 -3
  60. package/dist/client/assets/agent-view-ByM1tns8.js +1 -0
  61. package/dist/client/assets/{agent-view-guard--aoytX6B.js → agent-view-guard-w0LVmZ_n.js} +1 -1
  62. package/dist/client/assets/{agents-list-Bh-3TBuf.js → agents-list-DgxnnHSC.js} +1 -1
  63. package/dist/client/assets/{ai-providers-DKS3l98n.js → ai-providers-B6rDuzxD.js} +1 -1
  64. package/dist/client/assets/{alert-DSsZdX1z.js → alert-DjgCgioe.js} +1 -1
  65. package/dist/client/assets/{alert-dialog-CiySziMD.js → alert-dialog-PTVX9d3Y.js} +1 -1
  66. package/dist/client/assets/{analytics-sections-Cl2mCPG9.js → analytics-sections-DBNJksaf.js} +1 -1
  67. package/dist/client/assets/{api-keys-DT79lla9.js → api-keys-CRRGgTH5.js} +1 -1
  68. package/dist/client/assets/api-keys-DwkggND0.js +1 -0
  69. package/dist/client/assets/app-editor-uI7CZhyW.js +1 -0
  70. package/dist/client/assets/{asset-utils-Co49serB.js → asset-utils-Dv9Q2xbg.js} +1 -1
  71. package/dist/client/assets/{auth-Cs4gU6Jt.js → auth-CWILNz-R.js} +1 -1
  72. package/dist/client/assets/{auth-catchall-472LoEBQ.js → auth-catchall-Cc5_u2IL.js} +1 -1
  73. package/dist/client/assets/{auth-entry-wcuFRPik.js → auth-entry-C9RssKbo.js} +1 -1
  74. package/dist/client/assets/{auth-split-layout-wSdRvsPt.js → auth-split-layout-D_hmCTq4.js} +1 -1
  75. package/dist/client/assets/{authenticate-and-persist-oauth-VlIk_G_o.js → authenticate-and-persist-oauth-_u_GUn2l.js} +1 -1
  76. package/dist/client/assets/{automation-list-row-CuueSCf2.js → automation-list-row-DfDWaaDG.js} +1 -1
  77. package/dist/client/assets/{automation-runs-BnertJ4X.js → automation-runs-CiGqMkAr.js} +1 -1
  78. package/dist/client/assets/{automations-DdJEP87b.js → automations-17MTzB0I.js} +1 -1
  79. package/dist/client/assets/{autosend-D7eBSjvh.js → autosend-C7DyeWiW.js} +1 -1
  80. package/dist/client/assets/{avatar-BeFOPb9J.js → avatar-Dl_cPf4a.js} +1 -1
  81. package/dist/client/assets/{badge-SOygJ_ut.js → badge-DhrYVT6A.js} +1 -1
  82. package/dist/client/assets/{block-document-Cu1aHoUW.js → block-document-C4jgXyrX.js} +1 -1
  83. package/dist/client/assets/{blocks-preview-workspace-context-BUj7HSJ8.js → blocks-preview-workspace-context-CJB53TYU.js} +1 -1
  84. package/dist/client/assets/{blog-schema-BMIbFol2.js → blog-schema-Cm8V0ekp.js} +1 -1
  85. package/dist/client/assets/{buckets-BA7hLRYf.js → buckets-Cu7VxrxX.js} +1 -1
  86. package/dist/client/assets/{build-improve-prompt-doc-DRPd_i83.js → build-improve-prompt-doc-DzdB1psZ.js} +1 -1
  87. package/dist/client/assets/{calendar-oXQevmTG.js → calendar-BLwaxQ6A.js} +1 -1
  88. package/dist/client/assets/{capability-load-error-dMTmC9nh.js → capability-load-error-Gcuy_zZQ.js} +1 -1
  89. package/dist/client/assets/{category-editor-1_2fvb3e.js → category-editor-qccGK1pF.js} +1 -1
  90. package/dist/client/assets/{chart-VsbCVKFV.js → chart-m7qkl4bi.js} +1 -1
  91. package/dist/client/assets/{chat-context-DiXJfhIa.js → chat-context-Dx9zNHfj.js} +1 -1
  92. package/dist/client/assets/{chat-draft-Bpba7nd9.js → chat-draft-BmX0POEt.js} +1 -1
  93. package/dist/client/assets/{checkbox-Dz205M-t.js → checkbox-BGY2RDHl.js} +1 -1
  94. package/dist/client/assets/{choose-editor-sM1ArvsC.js → choose-editor-Drm1rWH4.js} +1 -1
  95. package/dist/client/assets/{claim-phase-copy-Dd94Yylk.js → claim-phase-copy-B4wRGWwJ.js} +1 -1
  96. package/dist/client/assets/{cli-auth-success-B9VS9AxW.js → cli-auth-success-Bhd55UzL.js} +1 -1
  97. package/dist/client/assets/{client-icons-pHlGrnda.js → client-icons-Nclcrk8y.js} +1 -1
  98. package/dist/client/assets/{collapsible-CfObde3Q.js → collapsible-BUVugLgs.js} +1 -1
  99. package/dist/client/assets/{collection-detail-Db-KUOBe.js → collection-detail-DP3jpGJn.js} +1 -1
  100. package/dist/client/assets/{collection-display-button-BkekuxeX.js → collection-display-button-T5vUt9Xp.js} +1 -1
  101. package/dist/client/assets/{collection-search-D2PZ787d.js → collection-search-CKuVhNj4.js} +1 -1
  102. package/dist/client/assets/{collection-table-wrapper-CiNVnoGZ.js → collection-table-wrapper-DjPT86lv.js} +1 -1
  103. package/dist/client/assets/{collection-tabs-BPj0wxo8.js → collection-tabs-BamuvkGL.js} +1 -1
  104. package/dist/client/assets/{column-rules-DHSys_Pp.js → column-rules-Xz3xzzP-.js} +1 -1
  105. package/dist/client/assets/{combobox-Cio7ykEV.js → combobox-CgUwJrOG.js} +1 -1
  106. package/dist/client/assets/{command-CxzepSXP.js → command-Czt06b2r.js} +1 -1
  107. package/dist/client/assets/{companion-mcps-section-Cv04Xa58.js → companion-mcps-section-KDtsEeuf.js} +1 -1
  108. package/dist/client/assets/{config-Ct9Qi8LT.js → config-CGLxG-Gg.js} +1 -1
  109. package/dist/client/assets/{connect-CGibdNE5.js → connect-Dz_UGWIS.js} +1 -1
  110. package/dist/client/assets/{connect-layout-BxAxcInI.js → connect-layout-Diov8B69.js} +1 -1
  111. package/dist/client/assets/{connection-DbyDLRig.js → connection-Dyn6n84s.js} +1 -1
  112. package/dist/client/assets/{connection-card-DUnGN1LQ.js → connection-card-ZezUc4CB.js} +1 -1
  113. package/dist/client/assets/{connection-detail-CYpkfAUI.js → connection-detail-BJExNdyL.js} +1 -1
  114. package/dist/client/assets/{connection-form-helpers-B-IGiex0.js → connection-form-helpers-DBYs_bI7.js} +1 -1
  115. package/dist/client/assets/{connections-8PptZe-N.js → connections-oiXlAgUF.js} +1 -1
  116. package/dist/client/assets/{context-CqJX50Y5.js → context-BjfN_2Ri.js} +1 -1
  117. package/dist/client/assets/{context-menu-X12cIwS3.js → context-menu-DlkAUkV8.js} +1 -1
  118. package/dist/client/assets/{core.esm-BND19H8a.js → core.esm-B3puu65K.js} +1 -1
  119. package/dist/client/assets/{create-organization-dialog-DvoetHmh.js → create-organization-dialog-CQl1wPgd.js} +1 -1
  120. package/dist/client/assets/{daily-pulse-VPctcCpq.js → daily-pulse-Cap6vUBG.js} +1 -1
  121. package/dist/client/assets/{decopilot-RuTJJBbl.js → decopilot-CVtUuYjj.js} +1 -1
  122. package/dist/client/assets/{device-hint-BJfRFQKk.js → device-hint-EZG6wkKu.js} +1 -1
  123. package/dist/client/assets/{dialog-D_5RxDc9.js → dialog-C8AdhrG0.js} +1 -1
  124. package/dist/client/assets/{discover-DtRS1x6t.js → discover-DzeJVPL8.js} +1 -1
  125. package/dist/client/assets/{domain-settings-BGARHR_o.js → domain-settings-DSaE4wpm.js} +1 -1
  126. package/dist/client/assets/{download-app-dialog-RU0ZYOfB.js → download-app-dialog-URSdQ4ke.js} +1 -1
  127. package/dist/client/assets/{drawer-Br_av5UR.js → drawer-BZnmFrAT.js} +1 -1
  128. package/dist/client/assets/{editor-KC3-U1Hv.js → editor-CK9raNB0.js} +1 -1
  129. package/dist/client/assets/{empty-state-DNTQ1C-X.js → empty-state-CmS3chTn.js} +1 -1
  130. package/dist/client/assets/{empty-state-Bzg2RaeW.js → empty-state-CoOL0M6Y.js} +1 -1
  131. package/dist/client/assets/{extract-connection-data-BFG_cq-0.js → extract-connection-data-Ch1WBTd_.js} +1 -1
  132. package/dist/client/assets/{feature-gate-B2dCnM8L.js → feature-gate-Dzatwf08.js} +1 -1
  133. package/dist/client/assets/{feature-paywall-CVOfOt8x.js → feature-paywall-BoMIgBMw.js} +1 -1
  134. package/dist/client/assets/{file-explorer-wKCmBF67.js → file-explorer-nSFWWRTB.js} +1 -1
  135. package/dist/client/assets/{file-preview-VEd_A7P9.js → file-preview-DGEdQu7O.js} +1 -1
  136. package/dist/client/assets/{file-share-button-DkiNZpp9.js → file-share-button-CpGZhwcv.js} +1 -1
  137. package/dist/client/assets/{file-type-icon-CfnH9Twn.js → file-type-icon-D3P3r_PX.js} +1 -1
  138. package/dist/client/assets/flat-project-Crgd2_CA.js +1 -0
  139. package/dist/client/assets/{folder-icon-CzsWuPW5.js → folder-icon-DmaVPQUY.js} +1 -1
  140. package/dist/client/assets/{form-juLaUBrF.js → form-C_wkYdWR.js} +1 -1
  141. package/dist/client/assets/{gateway-client-CZQ4II3C.js → gateway-client-n3scD1Cq.js} +1 -1
  142. package/dist/client/assets/{general-DxW1EaZc.js → general-DY3X6fO5.js} +1 -1
  143. package/dist/client/assets/{home-m5VhYXeH.js → home-D9b2CIU1.js} +1 -1
  144. package/dist/client/assets/{icon-button-CMxGCJDP.js → icon-button-C_Cp_29j.js} +1 -1
  145. package/dist/client/assets/{index-CCXcZJGG.js → index-B-oPHPrA.js} +1 -1
  146. package/dist/client/assets/{index-CyAv4Ino.js → index-BADmvvU8.js} +1 -1
  147. package/dist/client/assets/{index-C1hd3ai4.js → index-BIGakDd7.js} +1 -1
  148. package/dist/client/assets/{index-CsKm2ubF.js → index-BSg0zn4o.js} +2 -2
  149. package/dist/client/assets/{index-C5X8q_Pi.js → index-BWQjqyyC.js} +1 -1
  150. package/dist/client/assets/{index-WJJsnt-n.js → index-BfKeTOyQ.js} +1 -1
  151. package/dist/client/assets/{index-CzdEzd_G.js → index-BmBDGBX2.js} +1 -1
  152. package/dist/client/assets/{index-DCcjp4nP.js → index-CFZz__Xz.js} +1 -1
  153. package/dist/client/assets/{index-BC7i1Aoz.js → index-CYmKWEH9.js} +1 -1
  154. package/dist/client/assets/{index-DyC292ZS.js → index-Cd-_V0_9.js} +1 -1
  155. package/dist/client/assets/{index-G0I4ayW-.js → index-CrcosZHv.js} +1 -1
  156. package/dist/client/assets/{index-CpnRViDi.js → index-Crqv9xoR.js} +3 -3
  157. package/dist/client/assets/{index-CycACfp6.js → index-D-Q4GsTp.js} +1 -1
  158. package/dist/client/assets/{index-BgwBy5oM.js → index-DZYzJ3Ve.js} +1 -1
  159. package/dist/client/assets/{index-CZNblbQa.js → index-hcdrCnDP.js} +1 -1
  160. package/dist/client/assets/{index-redirect-_gwqEShi.js → index-redirect-CTFASjG4.js} +1 -1
  161. package/dist/client/assets/{infiniteQueryObserver-DaqTQDCS.js → infiniteQueryObserver-ByHfufml.js} +1 -1
  162. package/dist/client/assets/{infra-billing-DCtNAzlT.js → infra-billing-xdyFXGeK.js} +1 -1
  163. package/dist/client/assets/{input-hKftpNOz.js → input-CCnRshRN.js} +1 -1
  164. package/dist/client/assets/{input-DFO5Hmip.js → input-D1Ki90Pm.js} +3 -3
  165. package/dist/client/assets/{input-BhJziSQi.js → input-DyRkn4pn.js} +1 -1
  166. package/dist/client/assets/{integration-icon-CTkfXIOR.js → integration-icon-BiZmEnVi.js} +1 -1
  167. package/dist/client/assets/{label-Bfbz6otc.js → label-Du2iAGWx.js} +1 -1
  168. package/dist/client/assets/{layout-ZwTrfTZi.js → layout-D_g2vZ02.js} +1 -1
  169. package/dist/client/assets/{legacy-agents-deep-DMwbwAKI.js → legacy-agents-deep-CzmcMxWx.js} +1 -1
  170. package/dist/client/assets/{legacy-main-redirect-BGY6ia4w.js → legacy-main-redirect-CVsh9CL4.js} +1 -1
  171. package/dist/client/assets/library-D0xoHpix.js +1 -0
  172. package/dist/client/assets/{library-tab-BcgjMyrL.js → library-tab-C48kInYl.js} +1 -1
  173. package/dist/client/assets/{login-DCqry8Ay.js → login-CWsZk4Ka.js} +1 -1
  174. package/dist/client/assets/{markdown-Bx2p9OGj.js → markdown-DienvDaS.js} +1 -1
  175. package/dist/client/assets/{mcp-app-renderer-d-JulMSx.js → mcp-app-renderer-CNPl_E2S.js} +1 -1
  176. package/dist/client/assets/{mcp-oauth-BOCq2t4w.js → mcp-oauth-BEjgJ8S3.js} +1 -1
  177. package/dist/client/assets/{members-xhc9KLWq.js → members-2EErop1f.js} +1 -1
  178. package/dist/client/assets/{memory-VJT_lSNB.js → memory-yCjJoNDd.js} +1 -1
  179. package/dist/client/assets/{mini-report-page-YCYdK64Z.js → mini-report-page-pXF8ynkH.js} +1 -1
  180. package/dist/client/assets/{mock-board-DcCpR66D.js → mock-board-TQ8xh6Aq.js} +1 -1
  181. package/dist/client/assets/{monaco-editor-CkJpx19Y.js → monaco-editor-Ddyrxhnd.js} +1 -1
  182. package/dist/client/assets/{monitoring-stats-row-Cqs-6_S6.js → monitoring-stats-row-k_A2nsj4.js} +1 -1
  183. package/dist/client/assets/{multi-select-DW-NLuy4.js → multi-select-C5JMY5HA.js} +1 -1
  184. package/dist/client/assets/{mustache-Q-UGwUPM.js → mustache-2Fdvii3x.js} +1 -1
  185. package/dist/client/assets/{new-project-dialog-BR_BdAk-.js → new-project-dialog-B7NjXDr6.js} +1 -1
  186. package/dist/client/assets/{oauth-callback-CRloSDTl.js → oauth-callback-D5zHk1ID.js} +1 -1
  187. package/dist/client/assets/{oauth-callback-ai-provider-2uzVHGZK.js → oauth-callback-ai-provider-CpRYlq4A.js} +1 -1
  188. package/dist/client/assets/{onboarding-DkT61UKY.js → onboarding-C6mBd0qU.js} +1 -1
  189. package/dist/client/assets/{openai-conversation-Bo2nNgKY.js → openai-conversation-BwKz3ZIx.js} +1 -1
  190. package/dist/client/assets/{optimistic-project-sidebar-views-DfbOaqQl.js → optimistic-project-sidebar-views-B5YhmCh5.js} +1 -1
  191. package/dist/client/assets/{org-file-open-context-BHXXOOHS.js → org-file-open-context-CYLtVxSO.js} +1 -1
  192. package/dist/client/assets/{organization-choice-B8_GAtl-.js → organization-choice-BkwWYz2E.js} +1 -1
  193. package/dist/client/assets/{orgs-BuJtkddf.js → orgs-DlLwRria.js} +1 -1
  194. package/dist/client/assets/{page-seo-form-5o5iVNld.js → page-seo-form-D8Vne1WG.js} +1 -1
  195. package/dist/client/assets/{pair-gpe5yzQs.js → pair-BRY0hFhL.js} +1 -1
  196. package/dist/client/assets/{plan-ladder-DionZok_.js → plan-ladder-CqI-1A4t.js} +1 -1
  197. package/dist/client/assets/{popover-DH3Sl61q.js → popover-CXCkGdFS.js} +1 -1
  198. package/dist/client/assets/{post-calendar-tH162nXm.js → post-calendar-tlpRGAwb.js} +1 -1
  199. package/dist/client/assets/{post-editor-D1gbYoHN.js → post-editor-DrQUoUR6.js} +1 -1
  200. package/dist/client/assets/{preview-content-SoUMkfQg.js → preview-content-C6-NXNqs.js} +1 -1
  201. package/dist/client/assets/{preview-dialog-DPOzbA4Y.js → preview-dialog-mKfjI5de.js} +1 -1
  202. package/dist/client/assets/{preview-panel-CywYdFpJ.js → preview-panel-CYOl_eyz.js} +1 -1
  203. package/dist/client/assets/{profile-Dmb0eg_9.js → profile-DolOUYa-.js} +1 -1
  204. package/dist/client/assets/{project-app-view-gFsgFZJs.js → project-app-view-BT7xMHiG.js} +1 -1
  205. package/dist/client/assets/{project-feed-LDtRi-aY.js → project-feed-DzOwWrsA.js} +1 -1
  206. package/dist/client/assets/{project-icon-DxklOC8j.js → project-icon-BtaqB0ne.js} +1 -1
  207. package/dist/client/assets/project-reports-CUmY8yFG.js +1 -0
  208. package/dist/client/assets/project-tasks-B-l5cw7H.js +1 -0
  209. package/dist/client/assets/{projects-Dq4GZ2RU.js → projects-Ox8W8ETP.js} +1 -1
  210. package/dist/client/assets/{projects-empty-state-LXUf6lw8.js → projects-empty-state-C6gu1t-4.js} +1 -1
  211. package/dist/client/assets/{prompts-DpoYq-C8.js → prompts-CoL_Tpxk.js} +1 -1
  212. package/dist/client/assets/record-editor-BrASt4GH.js +1 -0
  213. package/dist/client/assets/{redirect-editor-h2jfnY0r.js → redirect-editor-lIGVngPQ.js} +1 -1
  214. package/dist/client/assets/{reports-BkGvj-AQ.js → reports-BEsbbpXT.js} +1 -1
  215. package/dist/client/assets/reports-C91C_dGk.js +1 -0
  216. package/dist/client/assets/{reports-onboarding-D2nAyEQg.js → reports-onboarding-nf8zCR8E.js} +1 -1
  217. package/dist/client/assets/{reports-tab-C4Iuixxf.js → reports-tab-B-zoXuhY.js} +2 -2
  218. package/dist/client/assets/{repositories-CInM2D5H.js → repositories-C6qG4TgY.js} +1 -1
  219. package/dist/client/assets/{repository-binding-ebck0c8n.js → repository-binding-CKlCwDDd.js} +1 -1
  220. package/dist/client/assets/{repository-import-picker-CTs8TUdw.js → repository-import-picker-BWcgounQ.js} +1 -1
  221. package/dist/client/assets/{repository-picker-BwC54VM6.js → repository-picker-DJEubVOt.js} +1 -1
  222. package/dist/client/assets/{require-capability-C0TsXxTO.js → require-capability-CMsD4Xq5.js} +1 -1
  223. package/dist/client/assets/{required-auth-layout-D4fpdDYn.js → required-auth-layout-DXP1Sqka.js} +1 -1
  224. package/dist/client/assets/{reset-password-BW6tqvrs.js → reset-password-YWpHSvq5.js} +1 -1
  225. package/dist/client/assets/{resizable-DENddsry.js → resizable-Cvf4_ymQ.js} +1 -1
  226. package/dist/client/assets/{resolve-tab-icon-BGgWJEJh.js → resolve-tab-icon-D9ziRjGB.js} +1 -1
  227. package/dist/client/assets/{review-settings-KWioU3vH.js → review-settings-Btnt9yMf.js} +1 -1
  228. package/dist/client/assets/{rich-text-link-control-DdGTIpxo.js → rich-text-link-control-D3iH-JTZ.js} +1 -1
  229. package/dist/client/assets/{roles-B73i-5IT.js → roles-BVDu3Xxj.js} +1 -1
  230. package/dist/client/assets/route-Bt9vgrKS.js +1 -0
  231. package/dist/client/assets/{route-Do1Yrs9w.js → route-D7ZfYats.js} +1 -1
  232. package/dist/client/assets/{route-CwP5bQeO.js → route-DgSk67PK.js} +1 -1
  233. package/dist/client/assets/{runnable-block-editor-Dl0N0zCW.js → runnable-block-editor-Yuh74xe3.js} +1 -1
  234. package/dist/client/assets/{sandbox-lifecycle-context-B_NAJSjm.js → sandbox-lifecycle-context-C5QKAHul.js} +1 -1
  235. package/dist/client/assets/{schema-bIq2BT73.js → schema-XbMJIWRo.js} +1 -1
  236. package/dist/client/assets/{scroll-area-DgvMLOUX.js → scroll-area-rRniZYni.js} +1 -1
  237. package/dist/client/assets/{search-input-Dxc4Q9oE.js → search-input-f14Hs9DC.js} +1 -1
  238. package/dist/client/assets/{search-toggle-BB2lVgeF.js → search-toggle-ydmpt0vj.js} +1 -1
  239. package/dist/client/assets/{secret-picker-CBx3NT_r.js → secret-picker-DA-ZCB_H.js} +1 -1
  240. package/dist/client/assets/{secrets-Bds2fazx.js → secrets-CQ_mYMKv.js} +1 -1
  241. package/dist/client/assets/{sections-editor-BHKheRNV.js → sections-editor-CWdchB_1.js} +1 -1
  242. package/dist/client/assets/{select-ERtFaSl0.js → select-Bur9VSDp.js} +1 -1
  243. package/dist/client/assets/{select-model-DMNOi0UH.js → select-model-zDpmpaQm.js} +1 -1
  244. package/dist/client/assets/{seo-editor-Cl9glbjm.js → seo-editor-DKGGKomG.js} +1 -1
  245. package/dist/client/assets/{separator-CuY7Q1Gl.js → separator-B9VOmM03.js} +1 -1
  246. package/dist/client/assets/{settings-tab-D7GiwWK4.js → settings-tab-DZnwlssY.js} +1 -1
  247. package/dist/client/assets/{sheet-nJD4St3t.js → sheet-BB4O5OwT.js} +1 -1
  248. package/dist/client/assets/{shell-layout-CsK_iJoM.js → shell-layout-BirRSTwU.js} +1 -1
  249. package/dist/client/assets/{skills-BpYdnG8K.js → skills-BKzwcH1e.js} +1 -1
  250. package/dist/client/assets/{sso-CUH5oWF7.js → sso-Cc-0CboC.js} +1 -1
  251. package/dist/client/assets/{suggestion-CVmYJ2-l.js → suggestion-IyavxmVa.js} +1 -1
  252. package/dist/client/assets/{switch-BhR8nlxD.js → switch-DcSUAA1j.js} +1 -1
  253. package/dist/client/assets/{synced-repos-C5uktY6M.js → synced-repos-flwxau-o.js} +1 -1
  254. package/dist/client/assets/{tab-icon-glyph-DDGnTEUb.js → tab-icon-glyph-9bAxbZkC.js} +1 -1
  255. package/dist/client/assets/{table-BghtXeZn.js → table-CRO39QUH.js} +1 -1
  256. package/dist/client/assets/{tabs-BdEjeb3h.js → tabs-Bc9RHMFB.js} +1 -1
  257. package/dist/client/assets/{task-board-CC3VTzd7.js → task-board-Cd9YAvG-.js} +1 -1
  258. package/dist/client/assets/{task-route-CzV6Ggve.js → task-route-CkQytW7C.js} +1 -1
  259. package/dist/client/assets/{task-status-MdR-wgNu.js → task-status-BOm3EuKx.js} +1 -1
  260. package/dist/client/assets/{taskboard-analytics-CjgkuySj.js → taskboard-analytics-OFa_uhmF.js} +1 -1
  261. package/dist/client/assets/{tasks-B7Pdi00T.js → tasks-BG9XYgI5.js} +1 -1
  262. package/dist/client/assets/tasks-D5n9wt3t.js +1 -0
  263. package/dist/client/assets/{textarea-CFMwKhM9.js → textarea-DDxcalk2.js} +1 -1
  264. package/dist/client/assets/{thread-analytics-BeZ0CZhF.js → thread-analytics-DOsXcQeb.js} +1 -1
  265. package/dist/client/assets/{thread-button-DdmUMrmT.js → thread-button-ch7Mep8K.js} +1 -1
  266. package/dist/client/assets/{thread-intent-Dg3GQUH3.js → thread-intent-2fXPHcAu.js} +1 -1
  267. package/dist/client/assets/{thread-route-C5YO0tNH.js → thread-route-2otWdMgJ.js} +1 -1
  268. package/dist/client/assets/{thread-route-BPJPEkBO.js → thread-route-BT336v58.js} +1 -1
  269. package/dist/client/assets/{thread-sheet-body-Ci751mbw.js → thread-sheet-body-BbK1ZoYh.js} +1 -1
  270. package/dist/client/assets/{toggle-group-DLp7Wh-7.js → toggle-group-CdYcnuUH.js} +1 -1
  271. package/dist/client/assets/{toolbar-icon-button-CMClok1k.js → toolbar-icon-button-DUnRowf-.js} +1 -1
  272. package/dist/client/assets/{tooltip-17PKNCMM.js → tooltip-Dmxy6Iwp.js} +1 -1
  273. package/dist/client/assets/{track-A4Z9PFKK.js → track-BtwskyUg.js} +1 -1
  274. package/dist/client/assets/{types-Zt76-Urn.js → types-Bme2CFon.js} +1 -1
  275. package/dist/client/assets/{usage-stats-Di6th6eM.js → usage-stats-DpcWm2xr.js} +1 -1
  276. package/dist/client/assets/{use-ai-providers-DXMywQjn.js → use-ai-providers-Br3ruvyh.js} +1 -1
  277. package/dist/client/assets/{use-automations-BIkU0R2i.js → use-automations-CnXDK6LR.js} +1 -1
  278. package/dist/client/assets/{use-autosave-D7Dc_Y3x.js → use-autosave-CTFYBfkb.js} +1 -1
  279. package/dist/client/assets/{use-chat-layout-state-CcVNkckt.js → use-chat-layout-state-DVSuwZNL.js} +1 -1
  280. package/dist/client/assets/{use-chat-navigation-EErRoLjo.js → use-chat-navigation-ouFeOKae.js} +1 -1
  281. package/dist/client/assets/{use-clock-tick-Bs0g2LMm.js → use-clock-tick-_TChM0B6.js} +1 -1
  282. package/dist/client/assets/{use-connect-companion-BV3jBqGw.js → use-connect-companion-BwQTXyWc.js} +1 -1
  283. package/dist/client/assets/{use-connection-hWK0p_4I.js → use-connection-KD1C-9SB.js} +1 -1
  284. package/dist/client/assets/{use-copy-eIJpbbHo.js → use-copy-DbnPtzRq.js} +1 -1
  285. package/dist/client/assets/{use-create-virtual-mcp-CFCczIE_.js → use-create-virtual-mcp-aO-X73SS.js} +1 -1
  286. package/dist/client/assets/{use-date-fns-locale-CViyxf02.js → use-date-fns-locale-CaAoeC3-.js} +1 -1
  287. package/dist/client/assets/{use-debounced-autosave-B4SAaEhH.js → use-debounced-autosave-BAYPxxZJ.js} +1 -1
  288. package/dist/client/assets/{use-debounced-value-Dws83Fd6.js → use-debounced-value-B8x7v3h2.js} +1 -1
  289. package/dist/client/assets/{use-deco-credits-YDPWVl4H.js → use-deco-credits-8WOAM4-s.js} +1 -1
  290. package/dist/client/assets/{use-decopilot-events-BlCOqvv5.js → use-decopilot-events-Cq-KvUjE.js} +1 -1
  291. package/dist/client/assets/{use-delete-connection-CEwDeoWa.js → use-delete-connection-Bffk9q4E.js} +1 -1
  292. package/dist/client/assets/{use-deployment-admin-B2zM8cA7.js → use-deployment-admin-D0HzXml2.js} +1 -1
  293. package/dist/client/assets/{use-ensure-project-folder-jggJOZhf.js → use-ensure-project-folder-CB3UqvjF.js} +1 -1
  294. package/dist/client/assets/{use-fast-preview-draft-url-B8A09d5h.js → use-fast-preview-draft-url-SLEqabcE.js} +1 -1
  295. package/dist/client/assets/{use-file-configs-WonDx6od.js → use-file-configs-CL6vJq8e.js} +1 -1
  296. package/dist/client/assets/{use-infinite-scroll-CvbHrO1A.js → use-infinite-scroll-CZDZwEPK.js} +1 -1
  297. package/dist/client/assets/{use-join-requests-Dkum0YOb.js → use-join-requests-DDvLcfrT.js} +1 -1
  298. package/dist/client/assets/{use-main-panel-tabs-DM4i9k_8.js → use-main-panel-tabs-CMbieCSL.js} +1 -1
  299. package/dist/client/assets/{use-mcp-auth-status-CifzBBCu.js → use-mcp-auth-status-BUlD-JC0.js} +1 -1
  300. package/dist/client/assets/{use-mcp-client-C7yhsDUq.js → use-mcp-client-DtG-9LNW.js} +1 -1
  301. package/dist/client/assets/{use-mcp-prompts-BZp7FUGA.js → use-mcp-prompts-Dv23JU44.js} +1 -1
  302. package/dist/client/assets/{use-mcp-tools-B-fAu-Lb.js → use-mcp-tools-CZKyId72.js} +1 -1
  303. package/dist/client/assets/{use-members-muYuUKl8.js → use-members-3vohvwE9.js} +1 -1
  304. package/dist/client/assets/{use-mobile-h60o0kDh.js → use-mobile-Bym6FABz.js} +1 -1
  305. package/dist/client/assets/{use-navigate-to-agent-DpJjb9Ad.js → use-navigate-to-agent-nbLDGPuK.js} +1 -1
  306. package/dist/client/assets/use-new-blocks-editor-0oELLtma.js +1 -0
  307. package/dist/client/assets/{use-open-billing-url-CqRpsDrV.js → use-open-billing-url-cGocgOTK.js} +1 -1
  308. package/dist/client/assets/{use-org-auth-client-CPl2reDK.js → use-org-auth-client-CtCYentb.js} +1 -1
  309. package/dist/client/assets/{use-org-fs-DuUomCai.js → use-org-fs-C77pAkF9.js} +1 -1
  310. package/dist/client/assets/{use-org-repo-syncs-4sBt09GE.js → use-org-repo-syncs-UmpiXEvv.js} +1 -1
  311. package/dist/client/assets/{use-org-sso-DHgm8_xi.js → use-org-sso-wmpr49G0.js} +1 -1
  312. package/dist/client/assets/{use-organization-roles-BV3iU524.js → use-organization-roles-Q3cNmSGK.js} +1 -1
  313. package/dist/client/assets/{use-organization-settings-C9LFE9dH.js → use-organization-settings-DZQdd38B.js} +1 -1
  314. package/dist/client/assets/{use-panel-navigate-BoWMxqfw.js → use-panel-navigate-RzIXYjdO.js} +1 -1
  315. package/dist/client/assets/{use-project-scope-Bq9_CxnF.js → use-project-scope--vhdJJ3J.js} +1 -1
  316. package/dist/client/assets/{use-releases-BBaBeMfL.js → use-releases-DBacCX5N.js} +1 -1
  317. package/dist/client/assets/{use-reports-diagnostic-G1zwph_0.js → use-reports-diagnostic-E_xn3Cgh.js} +1 -1
  318. package/dist/client/assets/{use-secrets-Ct52FR_G.js → use-secrets-17a_0cVZ.js} +1 -1
  319. package/dist/client/assets/{use-section-preview-base-DOtesyFx.js → use-section-preview-base-DMPxgaEy.js} +1 -1
  320. package/dist/client/assets/{use-session-runtime-DCyDQGsH.js → use-session-runtime-CLu1QwVf.js} +1 -1
  321. package/dist/client/assets/{use-tags-pyv75hiG.js → use-tags-CuO6eJY0.js} +1 -1
  322. package/dist/client/assets/{use-task-board-analytics-BJyBRcs8.js → use-task-board-analytics-Cs7ROzdM.js} +1 -1
  323. package/dist/client/assets/{use-task-board-events-Bz8ommc9.js → use-task-board-events-Bv_4UM8-.js} +1 -1
  324. package/dist/client/assets/{use-task-metadata-C_1RsAj0.js → use-task-metadata--tlu5jBn.js} +1 -1
  325. package/dist/client/assets/{use-thread-analytics-CVwQKqXG.js → use-thread-analytics-aeaCgBwr.js} +1 -1
  326. package/dist/client/assets/{use-thread-outputs-Co6FxFAd.js → use-thread-outputs-9ggjmILA.js} +1 -1
  327. package/dist/client/assets/useInfiniteQuery-BXyifNbh.js +1 -0
  328. package/dist/client/assets/{useQueries-4js0NmfF.js → useQueries-Cqn1aSQB.js} +1 -1
  329. package/dist/client/assets/useSuspenseInfiniteQuery-Cwe5IPmT.js +1 -0
  330. package/dist/client/assets/{users-DFphiLPz.js → users-CsqcV55O.js} +1 -1
  331. package/dist/client/assets/{utils-7wkojbq8.js → utils-BH5vUtAG.js} +1 -1
  332. package/dist/client/assets/{variant-calendar-hQb_6Knv.js → variant-calendar-DkQ9UHQw.js} +1 -1
  333. package/dist/client/assets/{variant-matcher-override-B7_BSavX.js → variant-matcher-override-BYGwhlzE.js} +1 -1
  334. package/dist/client/assets/{view-mode-toggle-I-eGSI3M.js → view-mode-toggle-X9MGawfA.js} +1 -1
  335. package/dist/client/assets/{virtual-mcp-CZeK9_Zn.js → virtual-mcp-BWO_9b2I.js} +1 -1
  336. package/dist/client/index.html +1 -1
  337. package/dist/server/cli.js +2 -2
  338. package/dist/server/server.js +2 -2
  339. package/package.json +1 -1
  340. package/dist/client/assets/agent-app-BjfUl_0f.js +0 -1
  341. package/dist/client/assets/agent-deck-qy9xDSPf.js +0 -1
  342. package/dist/client/assets/agent-library-DmwLcUW5.js +0 -1
  343. package/dist/client/assets/agent-library-file-BhecoKGR.js +0 -1
  344. package/dist/client/assets/agent-settings-Cg5Aii0O.js +0 -1
  345. package/dist/client/assets/agent-site-editor-code-nkVrwBja.js +0 -2
  346. package/dist/client/assets/agent-view-5udch1Zo.js +0 -1
  347. package/dist/client/assets/api-keys-TdHJQ9tA.js +0 -1
  348. package/dist/client/assets/app-editor-BMX-mtW-.js +0 -1
  349. package/dist/client/assets/flat-project-DkZ9ut26.js +0 -1
  350. package/dist/client/assets/library-DlOv00rX.js +0 -1
  351. package/dist/client/assets/project-reports-DA_DcXq0.js +0 -1
  352. package/dist/client/assets/project-tasks-6O_Gw9mX.js +0 -1
  353. package/dist/client/assets/record-editor-CiRyw1Eu.js +0 -1
  354. package/dist/client/assets/reports-C9YxMpwW.js +0 -1
  355. package/dist/client/assets/route-XcpEoNu9.js +0 -1
  356. package/dist/client/assets/tasks-Lm1DDtMB.js +0 -1
  357. package/dist/client/assets/use-new-blocks-editor-DRLHOxEJ.js +0 -1
  358. package/dist/client/assets/useInfiniteQuery-SgJx2z0R.js +0 -1
  359. package/dist/client/assets/useSuspenseInfiniteQuery-BCL_lLFm.js +0 -1
@@ -2214,7 +2214,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var OQ$=L(()=>{jl()});f
2214
2214
  `.execute($)}}async function hE4($){if(!await X61($,"kysely_migration"))return{};let{rows:Z}=await kA`
2215
2215
  SELECT name FROM kysely_migration
2216
2216
  `.execute($),Q=Z.map((X)=>X.name).filter((X)=>!Object.hasOwn(HH0,X));if(Q.length>0)console.warn(`Database has migrations this build does not know, assuming a newer release applied them: ${Q.join(", ")}`);return Object.fromEntries(Q.map((X)=>[X,{up:async()=>{}}]))}async function jW$($){await yE4($),await gE4($);let Z=new OW$({db:$,provider:{getMigrations:async()=>({...await hE4($),...HH0})}}),{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 uE4($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await se0();let J=Q??Z8(),G=async()=>{if(!Z&&!Q)await oj(J).catch((W)=>{console.warn("Warning: Error closing database:",W)})};try{let W=await jW$(J.db);return await G(),{betterAuth:Y,kysely:W}}catch(W){throw await G(),W}}async function lE4(){let $=Z8(),Z=new OW$({db:$.db,provider:{getMigrations:()=>Promise.resolve(HH0)}}),{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 EW$=L(()=>{DW$();ee0();cQ()});async function FH0($){let Z={...process.env},Q=aX0($,Z);console.log(wx1(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?JY$(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (KK0(),WK0)),{outputs:J,services:G}=await Y({home:Q.settings.dataDir,externalDatabaseUrl:Q.externalDatabaseUrl,externalNatsUrl:Q.externalNatsUrl});if(!Q.skipMigrations){let{migrateBetterAuth:K}=await Promise.resolve().then(() => (ee0(),WY$));await K(J.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (cQ(),BX$)),{migrateToLatest:F}=await Promise.resolve().then(() => (EW$(),wW$)),U=H(J.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let W={...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 jQ$(W),{settings:W,services:G.map((K)=>({name:K.name==="PostgreSQL"?"Postgres":K.name,port:K.port})),managedServiceNames:G.filter((K)=>K.owner==="managed").map((K)=>K.name)}}var Y61=L(()=>{jl();GY$();o1()});var TW$={};J0(TW$,{updateService:()=>CA,subscribeCliState:()=>W61,setTuiConsoleIntercepted:()=>UH0,setServerUrl:()=>Ue,setMigrationsDone:()=>Fe,setDevMode:()=>cE4,resetCliStateForTests:()=>mE4,isTuiConsoleIntercepted:()=>NH0,getCliState:()=>G61,addLogEntry:()=>Zw});function zW$(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function PW$(){return{services:zW$(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function mE4(){pJ=PW$()}function He(){for(let $ of J61)$()}function G61(){return pJ}function W61($){return J61.add($),()=>J61.delete($)}function CA($){pJ={...pJ,services:pJ.services.map((Z)=>Z.name===$.name?$:Z)},He()}function Fe(){pJ={...pJ,migrationsStatus:"done"},He()}function Ue($){pJ={...pJ,serverUrl:$},He()}function Zw($){let Z=[...pJ.logs,$];pJ={...pJ,logs:Z.length>500?Z.slice(-500):Z},He()}function cE4(){pJ={...pJ,services:[...zW$(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},He()}function UH0($){AW$=$}function NH0(){return AW$}var pJ,J61,AW$=!1;var SA=L(()=>{pJ=PW$();J61=new Set});import{createServer as RW$}from"net";function dE4($){return new Promise((Z)=>{let Q=RW$();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function Ne($){if(await dE4($))return $;let Z=await new Promise((Q,X)=>{let Y=RW$();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 K61=()=>{};var F61={};J0(F61,{startDevServer:()=>pE4,pipeToLogStore:()=>H61});import{join as iE4}from"path";function H61($){let Z=$.getReader(),Q=new TextDecoder,X="";function Y(){let J=X.split(`
2217
- `);X=J.pop()??"";for(let G of J){let W=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!W)continue;Zw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}}(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)Zw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function pE4($){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 Ne(Number(Y)+1):await Ne(Number($.port)),{settings:W,services:K,managedServiceNames:H}=await FH0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let O of K)CA({name:O.name,status:"ready",port:O.port});Fe();let F=iE4(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(W.port),VITE_PORT:String(Y),DATABASE_URL:W.databaseUrl,NATS_URL:W.natsUrls.join(","),NODE_ENV:W.nodeEnv,BASE_URL:J,DECOCMS_LOCAL_MODE:String(W.localMode),DECOCMS_HOME:W.dataDir,DATA_DIR:W.dataDir,DECO_CLI:"1",...W.betterAuthSecret?{BETTER_AUTH_SECRET:W.betterAuthSecret}:{},...W.s3Endpoint?{S3_ENDPOINT:W.s3Endpoint,S3_BUCKET:W.s3Bucket??"",S3_ACCESS_KEY_ID:W.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:W.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(W.s3ForcePathStyle)}:{},...W.natsCredsPath?{NATS_CREDS:W.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)H61(N.stdout),H61(N.stderr);Ue(J),CA({name:"Vite",status:"ready",port:Number(Y)}),CA({name:"API",status:"ready",port:Number(W.port)});let D=async(O)=>{if(N.kill(O),await N.exited,H.length>0){let{stopServices:j}=await Promise.resolve().then(() => (KK0(),WK0));await j(W.dataDir)}};return process.on("SIGINT",()=>D("SIGINT")),process.on("SIGTERM",()=>D("SIGTERM")),{port:Number(Y),process:N}}var U61=L(()=>{Y61();SA();K61()});var BH0;var N61=L(()=>{BH0={name:"decocms",version:"4.462.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^3.1.0","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^7.0.107","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as tE4,Text as qW$}from"ink";import{jsx as oE4,jsxs as MW$}from"react/jsx-runtime";function IW$({version:$}){return MW$(tE4,{flexDirection:"column",marginTop:1,children:[_K0.map((Z,Q)=>oE4(qW$,{color:vK0[Q],children:Z},Q)),MW$(qW$,{dimColor:!0,children:[" v",$]})]})}var VW$=L(()=>{ps()});import{Box as _A,Text as Qw}from"ink";import{Spinner as aE4}from"@inkjs/ui";import{jsx as U3,jsxs as pm}from"react/jsx-runtime";function kW$({status:$}){if($==="pending")return U3(aE4,{label:""});return U3(Qw,{color:"green",children:"\u2713"})}function rE4($){return`${$.name}: ${$.port||"...."}`}function CW$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return pm(_A,{flexDirection:"column",paddingBottom:1,children:[U3(IW$,{version:BH0.version}),U3(_A,{marginBottom:1,children:U3(Qw,{dimColor:!0,children:"\u2500".repeat(80)})}),U3(_A,{children:pm(Qw,{dimColor:!0,children:["Home: ",Q]})}),pm(_A,{gap:2,children:[$.map((Y)=>pm(_A,{gap:1,children:[U3(Qw,{children:rE4(Y)}),U3(kW$,{status:Y.status})]},Y.name)),pm(_A,{gap:1,children:[U3(Qw,{children:"Migrations"}),U3(kW$,{status:Z})]})]}),U3(_A,{children:X?pm(Qw,{children:["Open in browser: ",U3(Qw,{color:"cyan",children:X})]}):U3(Qw,{dimColor:!0,children:"Starting..."})})]})}var SW$=L(()=>{N61();VW$()});import{Box as sE4,Text as Be}from"ink";import{jsx as B61,jsxs as L61}from"react/jsx-runtime";function eE4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function _W$({logs:$}){return B61(sE4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return B61(Be,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return L61(Be,{children:[L61(Be,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),B61(Be,{color:eE4(Z.status),children:Z.status}),L61(Be,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var vW$=()=>{};var D61={};J0(D61,{App:()=>Qz4});import{Box as $z4}from"ink";import{useSyncExternalStore as Zz4}from"react";import{jsx as xW$,jsxs as Xz4}from"react/jsx-runtime";function Qz4({home:$}){let Z=Zz4(W61,G61);return Xz4($z4,{flexDirection:"column",children:[xW$(CW$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),xW$(_W$,{logs:Z.logs})]})}var O61=L(()=>{SW$();vW$();SA()});var dW="thread-gate",vL="decopilot-hosted-harness",xL="decopilot-hosted-harness-sandboxed",iW="automations",Xw="background-tools",vA="task-board-github-reads";var fW$="13";function bW$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:fW$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var yW$=()=>{};import Yz4 from"pg";async function hW$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=Jz4}=$,Y=$.log??((K)=>console.log(K)),J=new Yz4.Client({connectionString:Q});await J.connect();let G=Date.now(),W=!1;try{while(!W){if(W=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[gW$.toString()])).rows[0]?.locked===!0,W)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 Z$(Gz4)}let K=Date.now()-G;if(K>1000)Y(`[dbos] waited ${K}ms for the migration lock; another process migrated first`);return await Z()}finally{if(W)try{await J.query("SELECT pg_advisory_unlock($1)",[gW$.toString()])}catch{}await J.end().catch(()=>{})}}var gW$=8314027461559302n,Jz4=600000,Gz4=500;var uW$=L(()=>{o$()});function Wz4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function j61($,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 lW$(){let $=Wz4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:j61($,"--cpu-prof-dir")??process.cwd(),name:j61($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(j61($,"--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 mW$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=TA();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((W,K)=>K[1]-W[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(()=>{}),LH0=setInterval(()=>void Z().catch(()=>{}),$),LH0.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(LH0)clearInterval(LH0)}}var LH0;var cW$=()=>{};import*as Kz4 from"bun:jsc";function dW$(){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{Hz4()}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 W=[];try{W=Fz4()?.traces??[]}catch{}if(G>$&&W.length>0){let K=new Map;for(let F of W){let U=F.frames.find((D)=>D.sourceURL&&!/Unknown Executable/.test(D.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;K.set(B,(K.get(B)??0)+1)}let H=[...K.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:W.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var Hz4,Fz4;var iW$=L(()=>{({startSamplingProfiler:Hz4,samplingProfilerStackTraces:Fz4}=Kz4)});function pW$(){lW$();let $=[mW$(),YX$(),dW$()];return()=>{for(let Z of $)Z()}}var nW$=L(()=>{de0();cW$();iW$()});var xA=f((tW$)=>{Object.defineProperty(tW$,"__esModule",{value:!0});tW$.RepublishHeaders=tW$.DirectMsgHeaders=tW$.JsHeaders=tW$.AdvisoryKind=void 0;tW$.isOrderedPushConsumerOptions=Uz4;tW$.isPullConsumer=Nz4;tW$.isPushConsumer=Bz4;tW$.isBoundPushConsumerOptions=Lz4;function Uz4($){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 Nz4($){return $.isPullConsumer()}function Bz4($){return $.isPushConsumer()}function Lz4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}tW$.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"};tW$.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"};tW$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};tW$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var N3=f((aW$)=>{Object.defineProperty(aW$,"__esModule",{value:!0});aW$.TD=aW$.TE=aW$.Empty=void 0;aW$.encode=Tz4;aW$.decode=Rz4;aW$.Empty=new Uint8Array(0);aW$.TE=new TextEncoder;aW$.TD=new TextDecoder;function Az4(...$){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 Tz4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(aW$.TE.encode($[Q]));if(Z.length===0)return aW$.Empty;if(Z.length===1)return Z[0];return Az4(...Z)}function Rz4($){if(!$||$.length===0)return"";return aW$.TD.decode($)}});var B3=f((eW$)=>{Object.defineProperty(eW$,"__esModule",{value:!0});eW$.errors=eW$.PermissionViolationError=eW$.NoRespondersError=eW$.TimeoutError=eW$.RequestError=eW$.ProtocolError=eW$.ConnectionError=eW$.DrainingConnectionError=eW$.ClosedConnectionError=eW$.AuthorizationError=eW$.UserAuthenticationExpiredError=eW$.InvalidOperationError=eW$.InvalidArgumentError=eW$.InvalidSubjectError=void 0;class E61 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}eW$.InvalidSubjectError=E61;class DH0 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 DH0(`${$} ${Z}`,Q)}}eW$.InvalidArgumentError=DH0;class z61 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}eW$.InvalidOperationError=z61;class OH0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new OH0($);return null}}eW$.UserAuthenticationExpiredError=OH0;class jH0 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 jH0($);return null}}eW$.AuthorizationError=jH0;class P61 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}eW$.ClosedConnectionError=P61;class A61 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}eW$.DrainingConnectionError=A61;class T61 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}eW$.ConnectionError=T61;class R61 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}eW$.ProtocolError=R61;class q61 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof wH0}}eW$.RequestError=q61;class M61 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}eW$.TimeoutError=M61;class wH0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}eW$.NoRespondersError=wH0;class EH0 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 EH0($,Q,X,Y)}}eW$.PermissionViolationError=EH0;eW$.errors={AuthorizationError:jH0,ClosedConnectionError:P61,ConnectionError:T61,DrainingConnectionError:A61,InvalidArgumentError:DH0,InvalidOperationError:z61,InvalidSubjectError:E61,NoRespondersError:wH0,PermissionViolationError:EH0,ProtocolError:R61,RequestError:q61,TimeoutError:M61,UserAuthenticationExpiredError:OH0}});var vH=f((YK$)=>{Object.defineProperty(YK$,"__esModule",{value:!0});YK$.SimpleMutex=YK$.Perf=void 0;YK$.extend=lz4;YK$.render=mz4;YK$.timeout=cz4;YK$.delay=dz4;YK$.deadline=iz4;YK$.deferred=V61;YK$.debugDeferred=pz4;YK$.shuffle=nz4;YK$.collect=tz4;YK$.jitter=XK$;YK$.backoff=oz4;YK$.nanos=az4;YK$.millis=rz4;YK$.randomToken=$P4;var uz4=N3(),I61=B3();function lz4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function mz4($){return uz4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function cz4($,Z=!0){let Q=Z?new I61.TimeoutError:null,X,Y,J=new Promise((G,W)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)W(new I61.TimeoutError);else W(Q)},$)});return Object.assign(J,X)}function dz4($=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 iz4($,Z=1000){let Q=V61(),X=setTimeout(()=>{Q.reject(new I61.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function V61(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function pz4(){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 nz4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function tz4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class ZK${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})}),$}}YK$.Perf=ZK$;class QK${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=V61();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}YK$.SimpleMutex=QK$;function XK$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function oz4($=[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 XK$(Q>Z?$[Z]:$[Q])}}}function az4($){return $*1e6}function rz4($){return Math.floor($/1e6)}var sz4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",fL=new Uint8Array(62);for(let $=0;$<62;$++)fL[$]=sz4.charCodeAt($);var ez4=218340105584896;function $P4(){let $=Math.floor(Math.random()*ez4),Z=$%62,Q=fL[Z];$=($-Z)/62,Z=$%62;let X=fL[Z];$=($-Z)/62,Z=$%62;let Y=fL[Z];$=($-Z)/62,Z=$%62;let J=fL[Z];$=($-Z)/62,Z=$%62;let G=fL[Z];$=($-Z)/62,Z=$%62;let W=fL[Z];$=($-Z)/62,Z=$%62;let K=fL[Z];$=($-Z)/62;let H=fL[$];return String.fromCharCode(Q,X,Y,J,G,W,K,H)}});var NK$=f((FK$)=>{Object.defineProperty(FK$,"__esModule",{value:!0});FK$.nuid=FK$.NuidImpl=void 0;var OP4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Yw=62,PH0=12,KK$=10,GK$=33,jP4=333,WK$=PH0+KK$,C61=new Uint8Array(Yw);for(let $=0;$<Yw;$++)C61[$]=OP4.charCodeAt($);var zH0=4294967296,HK$=BigInt(Yw)**BigInt(KK$),Le=Number(HK$/(1n<<32n)),k61=Number(HK$%(1n<<32n));function wP4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function EP4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else wP4($)}class S61{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(WK$),this.cbuf=new Uint8Array(PH0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Le+1)),this.seqLo=Math.floor(Math.random()*zH0);while($++<8&&this.seqHi===Le&&this.seqLo>=k61);if(this.seqHi===Le&&this.seqLo>=k61)this.seqLo=0;this.inc=Math.random()*(jP4-GK$)+GK$|0}setPre(){EP4(this.cbuf);for(let $=0;$<PH0;$++)this.buf[$]=C61[this.cbuf[$]%Yw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=WK$-1;Q>=PH0;Q--){let X=Math.floor($/Yw),J=($-X*Yw)*zH0+Z,G=Math.floor(J/Yw),W=J-G*Yw;this.buf[Q]=C61[W],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=zH0)this.seqLo-=zH0,this.seqHi+=1;if(this.seqHi>Le||this.seqHi===Le&&this.seqLo>=k61)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()}}FK$.NuidImpl=S61;FK$.nuid=new S61});var OK$=f((LK$)=>{Object.defineProperty(LK$,"__esModule",{value:!0});LK$.nuid=LK$.Nuid=void 0;var BK$=NK$();LK$.Nuid=BK$.NuidImpl;LK$.nuid=BK$.nuid});var TH0=f((AH0)=>{Object.defineProperty(AH0,"__esModule",{value:!0});AH0.nuid=AH0.Nuid=void 0;var jK$=OK$();Object.defineProperty(AH0,"Nuid",{enumerable:!0,get:function(){return jK$.Nuid}});Object.defineProperty(AH0,"nuid",{enumerable:!0,get:function(){return jK$.nuid}})});var Jw=f((wK$)=>{Object.defineProperty(wK$,"__esModule",{value:!0});wK$.DEFAULT_HOST=wK$.DEFAULT_PORT=wK$.Match=void 0;wK$.syncIterator=qP4;wK$.createInbox=MP4;var TP4=TH0(),RP4=B3();wK$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function qP4($){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 MP4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw RP4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${TP4.nuid.next()}`}wK$.DEFAULT_PORT=4222;wK$.DEFAULT_HOST="127.0.0.1"});var De=f((AK$)=>{Object.defineProperty(AK$,"__esModule",{value:!0});AK$.DataBuffer=void 0;var zK$=N3();class PK${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 zK$.TE.encode($)}static toAscii($){return zK$.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}}AK$.DataBuffer=PK$});var fA=f((qK$)=>{Object.defineProperty(qK$,"__esModule",{value:!0});qK$.LF=qK$.CR=qK$.CRLF=qK$.CR_LF_LEN=qK$.CR_LF=void 0;qK$.setTransportFactory=xP4;qK$.defaultPort=fP4;qK$.getUrlParseFn=bP4;qK$.newTransport=yP4;qK$.getResolveFn=gP4;qK$.protoLen=RK$;qK$.extractProtocolMessage=hP4;var SP4=N3(),_P4=Jw(),vP4=De(),L3;function xP4($){L3=$}function fP4(){return L3!==void 0&&L3.defaultPort!==void 0?L3.defaultPort:_P4.DEFAULT_PORT}function bP4(){return L3!==void 0&&L3.urlParseFn?L3.urlParseFn:void 0}function yP4(){if(!L3||typeof L3.factory!=="function")throw Error("transport fn is not set");return L3.factory()}function gP4(){return L3!==void 0&&L3.dnsResolveFn?L3.dnsResolveFn:void 0}qK$.CR_LF=`\r
2217
+ `);X=J.pop()??"";for(let G of J){let W=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!W)continue;Zw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}}(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)Zw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function pE4($){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 Ne(Number(Y)+1):await Ne(Number($.port)),{settings:W,services:K,managedServiceNames:H}=await FH0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let O of K)CA({name:O.name,status:"ready",port:O.port});Fe();let F=iE4(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(W.port),VITE_PORT:String(Y),DATABASE_URL:W.databaseUrl,NATS_URL:W.natsUrls.join(","),NODE_ENV:W.nodeEnv,BASE_URL:J,DECOCMS_LOCAL_MODE:String(W.localMode),DECOCMS_HOME:W.dataDir,DATA_DIR:W.dataDir,DECO_CLI:"1",...W.betterAuthSecret?{BETTER_AUTH_SECRET:W.betterAuthSecret}:{},...W.s3Endpoint?{S3_ENDPOINT:W.s3Endpoint,S3_BUCKET:W.s3Bucket??"",S3_ACCESS_KEY_ID:W.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:W.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(W.s3ForcePathStyle)}:{},...W.natsCredsPath?{NATS_CREDS:W.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)H61(N.stdout),H61(N.stderr);Ue(J),CA({name:"Vite",status:"ready",port:Number(Y)}),CA({name:"API",status:"ready",port:Number(W.port)});let D=async(O)=>{if(N.kill(O),await N.exited,H.length>0){let{stopServices:j}=await Promise.resolve().then(() => (KK0(),WK0));await j(W.dataDir)}};return process.on("SIGINT",()=>D("SIGINT")),process.on("SIGTERM",()=>D("SIGTERM")),{port:Number(Y),process:N}}var U61=L(()=>{Y61();SA();K61()});var BH0;var N61=L(()=>{BH0={name:"decocms",version:"4.462.3",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run 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 tE4,Text as qW$}from"ink";import{jsx as oE4,jsxs as MW$}from"react/jsx-runtime";function IW$({version:$}){return MW$(tE4,{flexDirection:"column",marginTop:1,children:[_K0.map((Z,Q)=>oE4(qW$,{color:vK0[Q],children:Z},Q)),MW$(qW$,{dimColor:!0,children:[" v",$]})]})}var VW$=L(()=>{ps()});import{Box as _A,Text as Qw}from"ink";import{Spinner as aE4}from"@inkjs/ui";import{jsx as U3,jsxs as pm}from"react/jsx-runtime";function kW$({status:$}){if($==="pending")return U3(aE4,{label:""});return U3(Qw,{color:"green",children:"\u2713"})}function rE4($){return`${$.name}: ${$.port||"...."}`}function CW$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return pm(_A,{flexDirection:"column",paddingBottom:1,children:[U3(IW$,{version:BH0.version}),U3(_A,{marginBottom:1,children:U3(Qw,{dimColor:!0,children:"\u2500".repeat(80)})}),U3(_A,{children:pm(Qw,{dimColor:!0,children:["Home: ",Q]})}),pm(_A,{gap:2,children:[$.map((Y)=>pm(_A,{gap:1,children:[U3(Qw,{children:rE4(Y)}),U3(kW$,{status:Y.status})]},Y.name)),pm(_A,{gap:1,children:[U3(Qw,{children:"Migrations"}),U3(kW$,{status:Z})]})]}),U3(_A,{children:X?pm(Qw,{children:["Open in browser: ",U3(Qw,{color:"cyan",children:X})]}):U3(Qw,{dimColor:!0,children:"Starting..."})})]})}var SW$=L(()=>{N61();VW$()});import{Box as sE4,Text as Be}from"ink";import{jsx as B61,jsxs as L61}from"react/jsx-runtime";function eE4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function _W$({logs:$}){return B61(sE4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return B61(Be,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return L61(Be,{children:[L61(Be,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),B61(Be,{color:eE4(Z.status),children:Z.status}),L61(Be,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var vW$=()=>{};var D61={};J0(D61,{App:()=>Qz4});import{Box as $z4}from"ink";import{useSyncExternalStore as Zz4}from"react";import{jsx as xW$,jsxs as Xz4}from"react/jsx-runtime";function Qz4({home:$}){let Z=Zz4(W61,G61);return Xz4($z4,{flexDirection:"column",children:[xW$(CW$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),xW$(_W$,{logs:Z.logs})]})}var O61=L(()=>{SW$();vW$();SA()});var dW="thread-gate",vL="decopilot-hosted-harness",xL="decopilot-hosted-harness-sandboxed",iW="automations",Xw="background-tools",vA="task-board-github-reads";var fW$="13";function bW$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:fW$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var yW$=()=>{};import Yz4 from"pg";async function hW$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=Jz4}=$,Y=$.log??((K)=>console.log(K)),J=new Yz4.Client({connectionString:Q});await J.connect();let G=Date.now(),W=!1;try{while(!W){if(W=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[gW$.toString()])).rows[0]?.locked===!0,W)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 Z$(Gz4)}let K=Date.now()-G;if(K>1000)Y(`[dbos] waited ${K}ms for the migration lock; another process migrated first`);return await Z()}finally{if(W)try{await J.query("SELECT pg_advisory_unlock($1)",[gW$.toString()])}catch{}await J.end().catch(()=>{})}}var gW$=8314027461559302n,Jz4=600000,Gz4=500;var uW$=L(()=>{o$()});function Wz4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function j61($,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 lW$(){let $=Wz4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:j61($,"--cpu-prof-dir")??process.cwd(),name:j61($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(j61($,"--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 mW$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=TA();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((W,K)=>K[1]-W[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(()=>{}),LH0=setInterval(()=>void Z().catch(()=>{}),$),LH0.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(LH0)clearInterval(LH0)}}var LH0;var cW$=()=>{};import*as Kz4 from"bun:jsc";function dW$(){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{Hz4()}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 W=[];try{W=Fz4()?.traces??[]}catch{}if(G>$&&W.length>0){let K=new Map;for(let F of W){let U=F.frames.find((D)=>D.sourceURL&&!/Unknown Executable/.test(D.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;K.set(B,(K.get(B)??0)+1)}let H=[...K.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:W.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var Hz4,Fz4;var iW$=L(()=>{({startSamplingProfiler:Hz4,samplingProfilerStackTraces:Fz4}=Kz4)});function pW$(){lW$();let $=[mW$(),YX$(),dW$()];return()=>{for(let Z of $)Z()}}var nW$=L(()=>{de0();cW$();iW$()});var xA=f((tW$)=>{Object.defineProperty(tW$,"__esModule",{value:!0});tW$.RepublishHeaders=tW$.DirectMsgHeaders=tW$.JsHeaders=tW$.AdvisoryKind=void 0;tW$.isOrderedPushConsumerOptions=Uz4;tW$.isPullConsumer=Nz4;tW$.isPushConsumer=Bz4;tW$.isBoundPushConsumerOptions=Lz4;function Uz4($){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 Nz4($){return $.isPullConsumer()}function Bz4($){return $.isPushConsumer()}function Lz4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}tW$.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"};tW$.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"};tW$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};tW$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var N3=f((aW$)=>{Object.defineProperty(aW$,"__esModule",{value:!0});aW$.TD=aW$.TE=aW$.Empty=void 0;aW$.encode=Tz4;aW$.decode=Rz4;aW$.Empty=new Uint8Array(0);aW$.TE=new TextEncoder;aW$.TD=new TextDecoder;function Az4(...$){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 Tz4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(aW$.TE.encode($[Q]));if(Z.length===0)return aW$.Empty;if(Z.length===1)return Z[0];return Az4(...Z)}function Rz4($){if(!$||$.length===0)return"";return aW$.TD.decode($)}});var B3=f((eW$)=>{Object.defineProperty(eW$,"__esModule",{value:!0});eW$.errors=eW$.PermissionViolationError=eW$.NoRespondersError=eW$.TimeoutError=eW$.RequestError=eW$.ProtocolError=eW$.ConnectionError=eW$.DrainingConnectionError=eW$.ClosedConnectionError=eW$.AuthorizationError=eW$.UserAuthenticationExpiredError=eW$.InvalidOperationError=eW$.InvalidArgumentError=eW$.InvalidSubjectError=void 0;class E61 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}eW$.InvalidSubjectError=E61;class DH0 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 DH0(`${$} ${Z}`,Q)}}eW$.InvalidArgumentError=DH0;class z61 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}eW$.InvalidOperationError=z61;class OH0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new OH0($);return null}}eW$.UserAuthenticationExpiredError=OH0;class jH0 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 jH0($);return null}}eW$.AuthorizationError=jH0;class P61 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}eW$.ClosedConnectionError=P61;class A61 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}eW$.DrainingConnectionError=A61;class T61 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}eW$.ConnectionError=T61;class R61 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}eW$.ProtocolError=R61;class q61 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof wH0}}eW$.RequestError=q61;class M61 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}eW$.TimeoutError=M61;class wH0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}eW$.NoRespondersError=wH0;class EH0 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 EH0($,Q,X,Y)}}eW$.PermissionViolationError=EH0;eW$.errors={AuthorizationError:jH0,ClosedConnectionError:P61,ConnectionError:T61,DrainingConnectionError:A61,InvalidArgumentError:DH0,InvalidOperationError:z61,InvalidSubjectError:E61,NoRespondersError:wH0,PermissionViolationError:EH0,ProtocolError:R61,RequestError:q61,TimeoutError:M61,UserAuthenticationExpiredError:OH0}});var vH=f((YK$)=>{Object.defineProperty(YK$,"__esModule",{value:!0});YK$.SimpleMutex=YK$.Perf=void 0;YK$.extend=lz4;YK$.render=mz4;YK$.timeout=cz4;YK$.delay=dz4;YK$.deadline=iz4;YK$.deferred=V61;YK$.debugDeferred=pz4;YK$.shuffle=nz4;YK$.collect=tz4;YK$.jitter=XK$;YK$.backoff=oz4;YK$.nanos=az4;YK$.millis=rz4;YK$.randomToken=$P4;var uz4=N3(),I61=B3();function lz4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function mz4($){return uz4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function cz4($,Z=!0){let Q=Z?new I61.TimeoutError:null,X,Y,J=new Promise((G,W)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)W(new I61.TimeoutError);else W(Q)},$)});return Object.assign(J,X)}function dz4($=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 iz4($,Z=1000){let Q=V61(),X=setTimeout(()=>{Q.reject(new I61.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function V61(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function pz4(){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 nz4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function tz4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class ZK${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})}),$}}YK$.Perf=ZK$;class QK${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=V61();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}YK$.SimpleMutex=QK$;function XK$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function oz4($=[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 XK$(Q>Z?$[Z]:$[Q])}}}function az4($){return $*1e6}function rz4($){return Math.floor($/1e6)}var sz4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",fL=new Uint8Array(62);for(let $=0;$<62;$++)fL[$]=sz4.charCodeAt($);var ez4=218340105584896;function $P4(){let $=Math.floor(Math.random()*ez4),Z=$%62,Q=fL[Z];$=($-Z)/62,Z=$%62;let X=fL[Z];$=($-Z)/62,Z=$%62;let Y=fL[Z];$=($-Z)/62,Z=$%62;let J=fL[Z];$=($-Z)/62,Z=$%62;let G=fL[Z];$=($-Z)/62,Z=$%62;let W=fL[Z];$=($-Z)/62,Z=$%62;let K=fL[Z];$=($-Z)/62;let H=fL[$];return String.fromCharCode(Q,X,Y,J,G,W,K,H)}});var NK$=f((FK$)=>{Object.defineProperty(FK$,"__esModule",{value:!0});FK$.nuid=FK$.NuidImpl=void 0;var OP4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Yw=62,PH0=12,KK$=10,GK$=33,jP4=333,WK$=PH0+KK$,C61=new Uint8Array(Yw);for(let $=0;$<Yw;$++)C61[$]=OP4.charCodeAt($);var zH0=4294967296,HK$=BigInt(Yw)**BigInt(KK$),Le=Number(HK$/(1n<<32n)),k61=Number(HK$%(1n<<32n));function wP4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function EP4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else wP4($)}class S61{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(WK$),this.cbuf=new Uint8Array(PH0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Le+1)),this.seqLo=Math.floor(Math.random()*zH0);while($++<8&&this.seqHi===Le&&this.seqLo>=k61);if(this.seqHi===Le&&this.seqLo>=k61)this.seqLo=0;this.inc=Math.random()*(jP4-GK$)+GK$|0}setPre(){EP4(this.cbuf);for(let $=0;$<PH0;$++)this.buf[$]=C61[this.cbuf[$]%Yw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=WK$-1;Q>=PH0;Q--){let X=Math.floor($/Yw),J=($-X*Yw)*zH0+Z,G=Math.floor(J/Yw),W=J-G*Yw;this.buf[Q]=C61[W],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=zH0)this.seqLo-=zH0,this.seqHi+=1;if(this.seqHi>Le||this.seqHi===Le&&this.seqLo>=k61)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()}}FK$.NuidImpl=S61;FK$.nuid=new S61});var OK$=f((LK$)=>{Object.defineProperty(LK$,"__esModule",{value:!0});LK$.nuid=LK$.Nuid=void 0;var BK$=NK$();LK$.Nuid=BK$.NuidImpl;LK$.nuid=BK$.nuid});var TH0=f((AH0)=>{Object.defineProperty(AH0,"__esModule",{value:!0});AH0.nuid=AH0.Nuid=void 0;var jK$=OK$();Object.defineProperty(AH0,"Nuid",{enumerable:!0,get:function(){return jK$.Nuid}});Object.defineProperty(AH0,"nuid",{enumerable:!0,get:function(){return jK$.nuid}})});var Jw=f((wK$)=>{Object.defineProperty(wK$,"__esModule",{value:!0});wK$.DEFAULT_HOST=wK$.DEFAULT_PORT=wK$.Match=void 0;wK$.syncIterator=qP4;wK$.createInbox=MP4;var TP4=TH0(),RP4=B3();wK$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function qP4($){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 MP4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw RP4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${TP4.nuid.next()}`}wK$.DEFAULT_PORT=4222;wK$.DEFAULT_HOST="127.0.0.1"});var De=f((AK$)=>{Object.defineProperty(AK$,"__esModule",{value:!0});AK$.DataBuffer=void 0;var zK$=N3();class PK${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 zK$.TE.encode($)}static toAscii($){return zK$.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}}AK$.DataBuffer=PK$});var fA=f((qK$)=>{Object.defineProperty(qK$,"__esModule",{value:!0});qK$.LF=qK$.CR=qK$.CRLF=qK$.CR_LF_LEN=qK$.CR_LF=void 0;qK$.setTransportFactory=xP4;qK$.defaultPort=fP4;qK$.getUrlParseFn=bP4;qK$.newTransport=yP4;qK$.getResolveFn=gP4;qK$.protoLen=RK$;qK$.extractProtocolMessage=hP4;var SP4=N3(),_P4=Jw(),vP4=De(),L3;function xP4($){L3=$}function fP4(){return L3!==void 0&&L3.defaultPort!==void 0?L3.defaultPort:_P4.DEFAULT_PORT}function bP4(){return L3!==void 0&&L3.urlParseFn?L3.urlParseFn:void 0}function yP4(){if(!L3||typeof L3.factory!=="function")throw Error("transport fn is not set");return L3.factory()}function gP4(){return L3!==void 0&&L3.dnsResolveFn?L3.dnsResolveFn:void 0}qK$.CR_LF=`\r
2218
2218
  `;qK$.CR_LF_LEN=qK$.CR_LF.length;qK$.CRLF=vP4.DataBuffer.fromAscii(qK$.CR_LF);qK$.CR=new Uint8Array(qK$.CRLF)[0];qK$.LF=new Uint8Array(qK$.CRLF)[1];function RK$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===qK$.CR&&$[Q]===qK$.LF)return Q+1}return 0}function hP4($){let Z=RK$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return SP4.TD.decode(X)}return""}});var b61=f((vK$)=>{Object.defineProperty(vK$,"__esModule",{value:!0});vK$.ipV4=CK$;vK$.isIP=aP4;vK$.parseIP=SK$;var Oe=4,bA=16,RH0=48,kK$=57,IK$=65,tP4=70,VK$=97,oP4=102,f61=16777215;function CK$($,Z,Q,X){let Y=new Uint8Array(bA);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((G,W)=>{Y[W]=G}),Y[12]=$,Y[13]=Z,Y[14]=Q,Y[15]=X,Y}function aP4($){return SK$($)!==void 0}function SK$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return _K$($);case":":return rP4($)}return}function _K$($){let Z=new Uint8Array(Oe);for(let Q=0;Q<Oe;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:J}=sP4($);if(!J||X>255)return;$=$.substring(Y),Z[Q]=X}return CK$(Z[0],Z[1],Z[2],Z[3])}function rP4($){let Z=new Uint8Array(bA),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<bA){let{n:Y,c:J,ok:G}=eP4($);if(!G||Y>65535)return;if(J<$.length&&$[J]==="."){if(Q<0&&X!=bA-Oe)return;if(X+Oe>bA)return;let W=_K$($);if(W===void 0)return;Z[X]=W[12],Z[X+1]=W[13],Z[X+2]=W[14],Z[X+3]=W[15],$="",X+=Oe;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<bA){if(Q<0)return;let Y=bA-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 sP4($){let Z=0,Q=0;for(Z=0;Z<$.length&&RH0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=kK$;Z++)if(Q=Q*10+($.charCodeAt(Z)-RH0),Q>=f61)return{n:f61,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function eP4($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(RH0<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=kK$)Z*=16,Z+=$.charCodeAt(Q)-RH0;else if(VK$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=oP4)Z*=16,Z+=$.charCodeAt(Q)-VK$+10;else if(IK$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=tP4)Z*=16,Z+=$.charCodeAt(Q)-IK$+10;else break;if(Z>=f61)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 m61=f((fK$)=>{Object.defineProperty(fK$,"__esModule",{value:!0});fK$.Servers=fK$.ServerImpl=void 0;fK$.isIPV4OrHostname=xK$;fK$.hostPort=l61;var y61=fA(),g61=vH(),h61=b61(),X24=Jw(),Y24=B3();function xK$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function u61($){return!xK$($)}function J24($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function l61($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=J24($),u61($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=u61($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):X24.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 nm{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=l61($);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,h61.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}://${u61(X)?"["+X+"]":X}`);J.port=`${this.port}`;let G=new nm(J.host,!1);G.tlsName=this.hostname,Z.push(G)}}if($.randomize)(0,g61.shuffle)(Z);return this.resolves=Z,Z}}fK$.ServerImpl=nm;class qH0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw Y24.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,y61.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}=l61(Y),G=Q.get(J);if(G)G.gossiped=!1,X.push(G);else X.push(new nm(Y))}if(this.randomize)(0,g61.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,h61.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,y61.getUrlParseFn)();$=Q?Q($):$;let X=new nm($,Z);if((0,h61.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 qH0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return qH0.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,y61.getUrlParseFn)(),J=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((W)=>{W=Y?Y(W,Z):W;let K=new nm(W,!0);J.set(W,K)});let G=[];if(this.servers.forEach((W,K)=>{let H=W.listen;if(W.gossiped&&this.currentServer.listen!==H&&J.get(H)===void 0)G.push(K);J.delete(H)}),G.reverse(),G.forEach((W)=>{let K=this.servers.splice(W,1);X=X.concat(K[0].listen)}),J.forEach((W,K)=>{this.servers.push(W),Q.push(K)}),this.randomize&&Q.length>0){let W=this.currentServer,K=this.servers.filter((H)=>H!==W);(0,g61.shuffle)(K),this.servers=W?[W,...K]:K}return{added:Q,deleted:X}}}fK$.Servers=qH0});var MH0=f((hK$)=>{Object.defineProperty(hK$,"__esModule",{value:!0});hK$.QueuedIteratorImpl=void 0;var c61=vH(),yK$=B3();class gK${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,c61.deferred)(),this.yields=[],this.iterClosed=(0,c61.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 yK$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new yK$.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,c61.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}}hK$.QueuedIteratorImpl=gK$});var d61=f((cK$)=>{Object.defineProperty(cK$,"__esModule",{value:!0});cK$.MuxSubscription=void 0;var H24=Jw(),lK$=B3();class mK${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,H24.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 lK$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new lK$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}cK$.MuxSubscription=mK$});var i61=f((pK$)=>{Object.defineProperty(pK$,"__esModule",{value:!0});pK$.Heartbeat=void 0;var F24=vH();class iK${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,F24.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})}}pK$.Heartbeat=iK$});var t61=f((rK$)=>{Object.defineProperty(rK$,"__esModule",{value:!0});rK$.DenoBuffer=rK$.MAX_SIZE=rK$.AssertionError=void 0;rK$.assert=oK$;rK$.concat=aK$;rK$.append=N24;rK$.readAll=B24;rK$.writeAll=L24;var U24=N3();class p61 extends Error{constructor($){super($);this.name="AssertionError"}}rK$.AssertionError=p61;function oK$($,Z="Assertion failed."){if(!$)throw new p61(Z)}var tK$=32768;rK$.MAX_SIZE=4294967294;function IH0($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function aK$($,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 N24($,Z){return aK$($,Uint8Array.of(Z))}class n61{_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($){oK$($<=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=IH0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(U24.TE.encode($))}write($){let Z=this._grow($.byteLength);return IH0($,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)IH0(this._buf.subarray(this._off),this._buf);else if(X+$>rK$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,rK$.MAX_SIZE));IH0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,rK$.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(tK$);while(!0){let X=this.capacity-this.length<tK$,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}}}rK$.DenoBuffer=n61;function B24($){let Z=new n61;return Z.readFrom($),Z.bytes()}function L24($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var r61=f((QH$)=>{Object.defineProperty(QH$,"__esModule",{value:!0});QH$.cc=QH$.State=QH$.Parser=QH$.Kind=void 0;QH$.describe=P24;var o61=t61(),a61=N3();QH$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function P24($){let Z,Q="";switch($.kind){case QH$.Kind.MSG:Z="MSG";break;case QH$.Kind.OK:Z="OK";break;case QH$.Kind.ERR:Z="ERR",Q=a61.TD.decode($.data);break;case QH$.Kind.PING:Z="PING";break;case QH$.Kind.PONG:Z="PONG";break;case QH$.Kind.INFO:Z="INFO",Q=a61.TD.decode($.data)}return`${Z}: ${Q}`}function eK$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var $H$=48,A24=57,tm=67108864;class ZH${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=QH$.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 QH$.State.OP_START:switch(Q){case QH$.cc.M:case QH$.cc.m:this.state=QH$.State.OP_M,this.hdr=-1,this.ma=eK$();break;case QH$.cc.H:case QH$.cc.h:this.state=QH$.State.OP_H,this.hdr=0,this.ma=eK$();break;case QH$.cc.P:case QH$.cc.p:this.state=QH$.State.OP_P;break;case QH$.cc.PLUS:this.state=QH$.State.OP_PLUS;break;case QH$.cc.MINUS:this.state=QH$.State.OP_MINUS;break;case QH$.cc.I:case QH$.cc.i:this.state=QH$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_H:switch(Q){case QH$.cc.M:case QH$.cc.m:this.state=QH$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_M:switch(Q){case QH$.cc.S:case QH$.cc.s:this.state=QH$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_MS:switch(Q){case QH$.cc.G:case QH$.cc.g:this.state=QH$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_MSG:switch(Q){case QH$.cc.SPACE:case QH$.cc.TAB:this.state=QH$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_MSG_SPC:switch(Q){case QH$.cc.SPACE:case QH$.cc.TAB:continue;default:this.state=QH$.State.MSG_ARG,this.as=Z}break;case QH$.State.MSG_ARG:switch(Q){case QH$.cc.CR:this.drop=1;break;case QH$.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=QH$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case QH$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:QH$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=QH$.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:QH$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=QH$.State.MSG_END;break;case QH$.State.MSG_END:switch(Q){case QH$.cc.NL:this.drop=0,this.as=Z+1,this.state=QH$.State.OP_START;break;default:continue}break;case QH$.State.OP_PLUS:switch(Q){case QH$.cc.O:case QH$.cc.o:this.state=QH$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_PLUS_O:switch(Q){case QH$.cc.K:case QH$.cc.k:this.state=QH$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_PLUS_OK:switch(Q){case QH$.cc.NL:this.dispatcher.push({kind:QH$.Kind.OK}),this.drop=0,this.state=QH$.State.OP_START;break}break;case QH$.State.OP_MINUS:switch(Q){case QH$.cc.E:case QH$.cc.e:this.state=QH$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_MINUS_E:switch(Q){case QH$.cc.R:case QH$.cc.r:this.state=QH$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_MINUS_ER:switch(Q){case QH$.cc.R:case QH$.cc.r:this.state=QH$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_MINUS_ERR:switch(Q){case QH$.cc.SPACE:case QH$.cc.TAB:this.state=QH$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_MINUS_ERR_SPC:switch(Q){case QH$.cc.SPACE:case QH$.cc.TAB:continue;default:this.state=QH$.State.MINUS_ERR_ARG,this.as=Z}break;case QH$.State.MINUS_ERR_ARG:switch(Q){case QH$.cc.CR:this.drop=1;break;case QH$.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:QH$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=QH$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case QH$.State.OP_P:switch(Q){case QH$.cc.I:case QH$.cc.i:this.state=QH$.State.OP_PI;break;case QH$.cc.O:case QH$.cc.o:this.state=QH$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_PO:switch(Q){case QH$.cc.N:case QH$.cc.n:this.state=QH$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_PON:switch(Q){case QH$.cc.G:case QH$.cc.g:this.state=QH$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_PONG:switch(Q){case QH$.cc.NL:this.dispatcher.push({kind:QH$.Kind.PONG}),this.drop=0,this.state=QH$.State.OP_START;break}break;case QH$.State.OP_PI:switch(Q){case QH$.cc.N:case QH$.cc.n:this.state=QH$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_PIN:switch(Q){case QH$.cc.G:case QH$.cc.g:this.state=QH$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_PING:switch(Q){case QH$.cc.NL:this.dispatcher.push({kind:QH$.Kind.PING}),this.drop=0,this.state=QH$.State.OP_START;break}break;case QH$.State.OP_I:switch(Q){case QH$.cc.N:case QH$.cc.n:this.state=QH$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_IN:switch(Q){case QH$.cc.F:case QH$.cc.f:this.state=QH$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_INF:switch(Q){case QH$.cc.O:case QH$.cc.o:this.state=QH$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_INFO:switch(Q){case QH$.cc.SPACE:case QH$.cc.TAB:this.state=QH$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case QH$.State.OP_INFO_SPC:switch(Q){case QH$.cc.SPACE:case QH$.cc.TAB:continue;default:this.state=QH$.State.INFO_ARG,this.as=Z}break;case QH$.State.INFO_ARG:switch(Q){case QH$.cc.CR:this.drop=1;break;case QH$.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:QH$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=QH$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===QH$.State.MSG_ARG||this.state===QH$.State.MINUS_ERR_ARG||this.state===QH$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new o61.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===QH$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new o61.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 o61.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 QH$.cc.SPACE:case QH$.cc.TAB:case QH$.cc.CR:case QH$.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],tm);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],tm);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}: ${a61.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case QH$.cc.SPACE:case QH$.cc.TAB:case QH$.cc.CR:case QH$.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],tm),this.ma.size=this.protoParseInt(Z[3],tm);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],tm),this.ma.size=this.protoParseInt(Z[4],tm);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]<$H$||$[X]>A24)return-1;Q=Q*10+($[X]-$H$)}return Z!==void 0&&Q>Z?-1:Q}}QH$.Parser=ZH$;QH$.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};QH$.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 CH0=f((YH$)=>{Object.defineProperty(YH$,"__esModule",{value:!0});YH$.MsgHdrsImpl=void 0;YH$.canonicalMIMEHeaderKey=e61;YH$.headers=q24;var XH$=N3(),xH=Jw(),kH0=B3();function e61($){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 kH0.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 q24($=0,Z=""){if($===0&&Z!=="")throw kH0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw kH0.InvalidArgumentError.format("description","is required");return new om($,Z)}var s61="NATS/1.0";class om{_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 om,X=XH$.TD.decode($).split(`\r
2219
2219
  `),Y=X[0];if(Y!==s61){let J=Y.replace(s61,"").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 W=J.slice(0,G),K=J.slice(G+1).trim();Z.append(W,K)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=s61;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
2220
2220
  ${Z}: ${Q[X]}`;return`${$}\r
@@ -5893,7 +5893,7 @@ ${J.join(`
5893
5893
  `;await AC8(Z.repo,O);let j=D[0]??`${Pu0(X)}/${AC1(N)}.json`;H.push({path:j,content:O});let w=j.slice(j.lastIndexOf("/")+1,-5);F.set(j,{stem:w,content:O});for(let E of D.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of CC1(K,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(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await TC8(Z,F.values(),Y),{decofile:B,skipped:D}=_Q0(N);if(D.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:AF(Z.repo),branch:Q,packagePath:X,blocks:D.map((O)=>O.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:cI5($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof G5)||J>=uI5-1)throw N;await Z$(I7(2000,200,J,2,0.5))}}}function cI5($){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 $L1(X,$.deps.coAuthor)}var uI5=3,uC1;var uC8=L(()=>{jS0();Du0();a4();o$();O7();Au0();uC1=new Map});import{createHmac as lC8,randomBytes as dI5,timingSafeEqual as iI5}from"crypto";function mC8(){if(Mu0)return Mu0;let $;try{let Z=w0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return Mu0=$?Buffer.from($):dI5(32),Mu0}function lC1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+pI5)/1000)},X=Buffer.from(JSON.stringify(Q)).toString("base64url"),Y=lC8("sha256",mC8()).update(X).digest("base64url");return`${X}.${Y}`}function cC8($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let X=$.slice(0,Q),Y=Buffer.from($.slice(Q+1)),J=Buffer.from(lC8("sha256",mC8()).update(X).digest("base64url"));if(Y.length!==J.length||!iI5(Y,J))return!1;let G;try{G=JSON.parse(Buffer.from(X,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var pI5=21600000,Mu0=null;var dC8=L(()=>{o1()});function Iu0($){return $&&typeof $==="object"&&!Array.isArray($)?$:null}function nI5($){for(let[Z,Q]of Object.entries($)){if(!Z.startsWith("collections/blog/posts/"))continue;let X=Iu0(Q)?.__resolveType;if(typeof X==="string"&&X)return X}return"blog/loaders/Blogpost.ts"}function iC8($){let Z;try{Z=Iu0(JSON.parse($))}catch{return $}if(!Z)return $;let Q=nI5(Z),X={...Z},Y=0;for(let[J,G]of Object.entries(Z)){if(!J.startsWith("blog-manager/posts/"))continue;let W=Iu0(G),K=W&&Iu0(W.post);if(!K)continue;if(K.status==="archived")continue;if(typeof K.slug!=="string"||!K.slug)continue;let F=`collections/blog/posts/${J.slice(19)}`;if(Object.hasOwn(X,F))continue;X[F]={name:F,__resolveType:Q,["post"]:{...K,status:"published"}},Y++}return Y>0?JSON.stringify(X):$}import{z as Oa}from"zod";function oI5($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&tI5.test($)}function aC8($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function mQ0($){let Z=$.get("decofileScope");return lp($.var.studioContext,Z.organizationId,Z.repository)}function cQ0($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof G5)return $.json({error:Q},409);let X=xK(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 rC8(){let $=new X1;return $.use("/:virtualMcpId/:branch",oC8),$.use("/:virtualMcpId/:branch/*",oC8),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await mQ0(Z),Y=await RC8(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(iC8(Y.decofile),200,{...J,"content-type":"application/json"});let G=lC1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(aC8(Z))},"decofile":${Y.decofile}}`,200,{...J,"content-type":"application/json"})}catch(X){return cQ0(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 mQ0(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 cQ0(Z,Y)}}),$.patch("/:virtualMcpId/:branch",rI5,async(Z)=>{let Q=Z.get("decofileScope"),X=Z.var.studioContext,Y=sI5.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let J;try{J=vQ0(Y.data)}catch(G){if(G instanceof xQ0)return Z.json({error:G.message},400);throw G}for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{Lu0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(PC1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await mQ0(Z),W=await hC8(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:Fa(X)},J),K=lC1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:aC8(Z)})}catch(G){return cQ0(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await mQ0(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(W){if(xK(W)!==409)throw W;await Ru0(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(xK(G)===409)return Z.json({error:"merge-conflict"},409);if(xK(G)===405){let K=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:K.number,url:K.url})}throw G}}catch(X){return cQ0(Z,X)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await mQ0(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:J,behindBy:G}=await X.compare(Y,Q.branch);return Z.json({baseBranch:Y,aheadBy:J,behindBy:G})}catch(J){if(xK(J)===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw J}}catch(X){return cQ0(Z,X)}}),$}var tI5,pC8=500,nC8=1048576,tC8=1024,aI5=8388608,rI5,sI5,oC8;var sC8=L(()=>{sS0();Du0();U8();JH();DC1();Bu0();yC1();O7();uC8();dC8();xC1();Au0();PF();tI5=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;rI5=W9({maxSize:aI5,onError:($)=>$.json({error:"Payload too large"},413)}),sI5=Oa.object({set:Oa.record(Oa.string(),Oa.unknown()).optional(),delete:Oa.array(Oa.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)<=pC8,{message:`Patch cannot touch more than ${pC8} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=nC8),{message:`Each block must be at most ${nC8} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=tC8),{message:`Each block key must be at most ${tC8} characters`}),oC8=Nu0(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(!oI5(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||!cC8(B,{organizationId:X.id,virtualMcpId:Y,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await wG(Q,X.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!Tn(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=hQ0(K,F);if(!U)return $.json({error:"Project has no repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:X.id,virtualMcpId:Y,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,repository:U,userId:G}),Z()})});var eC8=($)=>{let Z=new X1;if(Z.use("*",ho),Z.use("*",qq8),Z.route("/",Tq8($.voiceSessions)),Z.route("/",Ph0()),Z.route("/",WM8()),Z.route("/",nq8()),Z.route("/",Ok8()),Z.route("/",wk8()),Z.route("/",Kk8()),Z.route("/",Lk8()),Z.route("/",Fk8()),Z.route("/",Hu0()),Z.route("/tools",qk8()),Z.route("/",Ak8()),Z.route("/",uV8({kvStorage:$.kvStorage})),Z.route("/",gV8()),Z.route("/fs",eV8({getConnection:$.getNatsConnection})),Z.route("/sandbox",yC8()),Z.route("/decofile",rC8()),Z.route("/",Jk8()),Z.route("/",Zk8()),Z.route("/deco-sites",Th0()),Z.route("/hosting",bq8()),Z.route("/monitor",cq8()),Z.route("/sso",Dh0()),Z.route("/",Fu0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Sq8()),$.mountDevAssets)Z.route("/dev-assets",Ih0({orgFromPath:!0}));Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth);for(let Q of GC1)Z.use(`${Q}/:threadId`,$.mcpAuth);Z.route("/",LA8()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler);for(let Q of GC1)Z.route(Q,Xk8());return Z.route("/mcp",Df0()),Z.route("/mcp/self",Ju0()),Z.route("/mcp",wf0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var $S8=L(()=>{U8();Rq8();Mq8();Yh0();_q8();xV1();yq8();dq8();Vh0();Q2();kV1();hV1();hV8();lV8();$k8();Qk8();AZ0();zV1();Ef0();JC1();Yk8();Gk8();Hk8();Uk8();HC1();jk8();Ek8();Tk8();FC1();Mk8();UC1();Of0();gC8();sC8()});import{z as vu}from"zod";class mC1{adapter;getConnection;kvPromise;constructor($,Z){this.adapter=$;this.getConnection=Z}kv(){let $=this.getConnection();if(!$||$.isClosed())throw new M1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new XS8.Kvm(Vu0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Vu0.StorageType.Memory,ttl:YS8.nanos(WO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}async conversationAgent($){let Z=await this.kv(),Q=`agent.${$.conversationKey}`,X=Date.now()+45000;while(Date.now()<X){let Y=await Z.get(Q),J=Y?.operation==="PUT"?QS8.parse(Y.json()):null;if(J?.state==="ready")return J.agentId;if(J?.state==="creating"&&J.expiresAt>Date.now()){await Z$(200);continue}let G=ZS8.encode(JSON.stringify({state:"creating",expiresAt:Date.now()+40000})),W;try{W=Y&&J?await Z.update(Q,G,Y.revision):await Z.create(Q,G)}catch{await Z$(200);continue}try{let K=await $.ensureConversationAgent();return await Z.update(Q,ZS8.encode(JSON.stringify({state:"ready",agentId:K})),W),K}catch(K){throw await Z.delete(Q,{previousSeq:W}).catch(()=>{}),K}}throw new M1(503,{message:"Voice conversation is starting; try again"})}async createSession($){let Z=this.adapter.forConversationModel($.model),Q=await this.conversationAgent(Z);try{return{provider:"elevenlabs",conversationToken:await Z.createConversationToken(Q)}}catch(X){let Y=await this.kv(),J=`agent.${Z.conversationKey}`,G=await Y.get(J),W=G?.operation==="PUT"?QS8.parse(G.json()):null;if(G&&W?.state==="ready"&&W.agentId===Q)await Y.delete(J,{previousSeq:G.revision}).catch(()=>{});throw X}}}var Vu0,XS8,YS8,ZS8,QS8;var JS8=L(()=>{GG();FB();o$();Vu0=_(uH(),1),XS8=_(xR(),1),YS8=_(mA(),1),ZS8=new TextEncoder,QS8=vu.discriminatedUnion("state",[vu.object({state:vu.literal("ready"),agentId:vu.string()}),vu.object({state:vu.literal("creating"),expiresAt:vu.number()})])});import{z as ja}from"zod";function eI5($){return{model:$.model,instructions:`${O08}
5894
5894
  Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class cC1{config;constructor($){this.config=$}async createSession(){return{provider:"openai",transport:"webrtc"}}async negotiate($){let Z=await fetch("https://api.openai.com/v1/live/sessions",{method:"POST",headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json","OpenAI-Safety-Identifier":$.safetyIdentifier},body:JSON.stringify({session:eI5({...this.config,language:$.language,model:$.model}),transport:{type:"webrtc",sdp:$.sdp}}),signal:AbortSignal.timeout(15000)});if(!Z.ok)throw await Z.body?.cancel(),Error(`OpenAI Live request failed (${Z.status})`);return{sdp:ja.object({session:ja.object({id:ja.string().min(1)}),transport:ja.object({type:ja.literal("webrtc"),sdp:ja.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var GS8=L(()=>{FB()});var WS8;var KS8=L(()=>{WS8=[{name:"delegate_to_agent",description:"Submit a complete request to the selected Studio agent. Returns after acceptance while work continues in the background. Results arrive later.",parameters:{type:"object",properties:{request:{type:"string",description:"The complete user request, with relevant conversational details. Preserve intent and constraints."}},required:["request"]}},{name:"get_agent_status",description:"Read the current chat's work status and known results. This does not track independent organization tasks; delegate fresh task-status queries to the Studio agent. Use when asked, never poll.",parameters:{type:"object",properties:{}}},{name:"stop_agent_work",description:"Request cancellation in the current chat ONLY when the user explicitly asks. Speaking over the companion is not cancellation. To stop independent tasks, delegate that request to the Studio agent.",parameters:{type:"object",properties:{}}}]});function dC1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:L08,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:WS8.map((Z)=>({...Z,type:"client",expects_response:!0,response_timeout_secs:Z.name==="delegate_to_agent"?20:5,...Z.name==="delegate_to_agent"?{execution_mode:"async",interruption_mode:"allow",pre_tool_speech:"off"}:{}}))}},asr:{provider:"scribe_realtime",quality:"high"},turn:{turn_eagerness:"normal",turn_timeout:-1,silence_end_call_timeout:-1},tts:{voice_id:$.voiceId,model_id:$.model},conversation:{max_duration_seconds:WO/1000,client_events:["audio","interruption","user_transcript","agent_response","client_tool_call","vad_score"]}},platform_settings:{auth:{enable_auth:!0},privacy:{record_voice:!1,retention_days:1,delete_audio:!0,delete_transcript_and_pii:!0},overrides:{conversation_config_override:{agent:{language:!0}}}}}}var HS8=L(()=>{FB();KS8()});import{z as vJ}from"zod";import{createHash as $V5,createHmac as ZV5}from"crypto";class ku0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=$V5("sha256").update(JSON.stringify(dC1($))).digest("hex"),this.conversationKey=ZV5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new ku0({...this.config,conversationModel:$})}async request($,Z,Q){let X=await fetch(`https://api.elevenlabs.io/v1${$}`,{method:Z===void 0?"GET":"POST",headers:{"xi-api-key":this.config.apiKey,"Content-Type":"application/json"},body:JSON.stringify(Z),signal:Q});if(!X.ok)throw await X.body?.cancel(),Error(`ElevenLabs request failed (${X.status})`);return X}async ensureConversationAgent(){let $=`Studio voice ${this.configurationKey.slice(0,24)}`,Z=await this.request(`/convai/agents?search=${encodeURIComponent($)}&page_size=100`,void 0,AbortSignal.timeout(15000)),{agents:Q}=vJ.object({agents:vJ.array(vJ.object({agent_id:vJ.string(),name:vJ.string()}))}).parse(await Z.json()),X=Q.find((J)=>J.name===$);if(X){let J=await this.request(`/convai/agents/${encodeURIComponent(X.agent_id)}`,void 0,AbortSignal.timeout(15000));return vJ.object({platform_settings:vJ.object({auth:vJ.object({enable_auth:vJ.literal(!0)})})}).parse(await J.json()),X.agent_id}let Y=await this.request("/convai/agents/create",{name:$,...dC1(this.config)},AbortSignal.timeout(15000));return vJ.object({agent_id:vJ.string().min(1)}).parse(await Y.json()).agent_id}async createConversationToken($){let Z=await this.request(`/convai/conversation/token?agent_id=${encodeURIComponent($)}`,void 0,AbortSignal.timeout(15000));return vJ.object({token:vJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return vJ.object({token:vJ.string().min(1)}).parse(await $.json()).token}synthesize($,Z){return this.request(`/text-to-speech/${encodeURIComponent(this.config.voiceId)}/stream?output_format=mp3_44100_128`,{text:$,model_id:this.config.model},AbortSignal.any([Z,AbortSignal.timeout(60000)]))}}var FS8=L(()=>{HS8()});import{createHmac as QV5,timingSafeEqual as XV5}from"crypto";import{z as wa}from"zod";function NS8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return QV5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function BS8($,Z){let Q=Buffer.from(JSON.stringify(US8.parse($))).toString("base64url");return`${Q}.${NS8(Q,Z)}`}function LS8($,Z,Q=Date.now()){if(!Z||$.length>4096)return null;let X=$.split(".");if(X.length!==2)return null;let[Y,J]=X;if(!Y||!J)return null;let G=Buffer.from(NS8(Y,Z)),W=Buffer.from(J);if(W.length!==G.length||!XV5(W,G))return null;try{let K=US8.safeParse(JSON.parse(Buffer.from(Y,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+WO)return null;return K.data}catch{return null}}var US8;var DS8=L(()=>{FB();US8=wa.object({sessionId:wa.string().uuid(),organizationId:wa.string().min(1).max(256),userId:wa.string().min(1).max(256),threadId:wa.string().min(1).max(256),expiresAt:wa.number().int().positive()})});import{z as iC1}from"zod";function OS8($,Z){if(Z?.voice_model!=null&&Z.voice_provider==null)throw Error("A voice model override requires a provider");let Q=Z?.voice_provider??$.voiceConversationProvider;return pC1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var pC1;var jS8=L(()=>{pC1=iC1.object({provider:iC1.enum(["elevenlabs","openai"]),model:iC1.string().trim().min(1).max(128)})});import{createHash as YV5}from"crypto";import{z as Ea}from"zod";function za($){return`user.${YV5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class tC1{deps;kvPromise;constructor($){this.deps=$}kv(){let $=this.deps.getConnection();if(!$||$.isClosed())throw new M1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new wS8.Kvm(Su0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Su0.StorageType.Memory,ttl:ES8.nanos(WO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}adapter(){if(!this.deps.adapter)throw new M1(503,{message:"Voice is not configured on this deployment"});return this.deps.adapter}async create($,Z=!1,Q="en",X){let Y;if(Z)try{Y=OS8(this.deps.defaults,X)}catch{throw new M1(503,{message:"Voice configuration is invalid"})}let J=Y?this.deps.conversationAdapters[Y.provider]:this.adapter();if(!J)throw new M1(503,{message:"Voice is not configured on this deployment"});let G={...$,sessionId:crypto.randomUUID(),expiresAt:Date.now()+WO},W=BS8(G,this.deps.secret),K=await this.kv(),H=za(G),F=await K.get(H),U=F?.operation==="PUT"?Cu0.parse(F.json()):null,N=nC1.encode(JSON.stringify({sessionId:G.sessionId,expiresAt:G.expiresAt,conversation:Y,characters:0,requests:0}));try{if(F&&U&&U.expiresAt<=Date.now())await K.update(H,N,F.revision);else await K.create(H,N)}catch{throw new M1(409,{message:"Close your other voice session before starting a new one"})}try{if(Y&&"createSession"in J){let D=await J.createSession({language:Q,model:Y.model,safetyIdentifier:za($)});return{token:W,...D,expiresAt:G.expiresAt}}let B=await this.adapter().createTranscriptionToken();return{token:W,transcriptionToken:B,expiresAt:G.expiresAt}}catch(B){throw await this.release(G),B}}authorize($,Z){let Q=LS8(Z,this.deps.secret);if(!Q||Q.organizationId!==$.organizationId||Q.userId!==$.userId||Q.threadId!==$.threadId)throw new M1(403,{message:"Invalid voice session"});return Q}async connect($,Z){let Q=this.authorize($,Z.token),X=await this.kv(),Y=za(Q),J=await X.get(Y),G=J?.operation==="PUT"?Cu0.parse(J.json()):null;if(!J||!G||G.sessionId!==Q.sessionId||G.expiresAt<=Date.now())throw new M1(403,{message:"Voice session expired"});let W=G.conversation?this.deps.conversationAdapters[G.conversation.provider]:null;if(!W?.negotiate||!G.conversation)throw new M1(409,{message:"Voice session does not support SDP negotiation"});if(G.connected)throw new M1(409,{message:"Voice session already connected"});try{await X.update(Y,nC1.encode(JSON.stringify({...G,connected:!0})),J.revision)}catch{throw new M1(409,{message:"Voice session is busy"})}return W.negotiate({sdp:Z.sdp,language:Z.language,model:G.conversation.model,safetyIdentifier:Y})}async speak($,Z,Q,X){let Y=this.authorize($,Z),J=await this.kv(),G=za(Y);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Cu0.parse(K.json()):null;if(!K||!H||H.sessionId!==Y.sessionId||H.expiresAt<=Date.now())throw new M1(403,{message:"Voice session expired"});if(H.characters+Q.length>24000||H.requests>=120)throw new M1(429,{message:"Voice session speech limit reached"});try{await J.update(G,nC1.encode(JSON.stringify({...H,characters:H.characters+Q.length,requests:H.requests+1})),K.revision);break}catch{if(W>=2)throw new M1(409,{message:"Voice session is busy"})}}return this.adapter().synthesize(Q,X)}async release($){let Z=await this.kv(),Q=await Z.get(za($));if(Q?.operation==="PUT"&&Cu0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(za($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var Su0,wS8,ES8,Cu0,nC1;var zS8=L(()=>{GG();FB();DS8();jS8();Su0=_(uH(),1),wS8=_(xR(),1),ES8=_(mA(),1),Cu0=Ea.object({sessionId:Ea.string().uuid(),expiresAt:Ea.number(),connected:Ea.boolean().optional(),conversation:pC1.optional(),characters:Ea.number().int().nonnegative(),requests:Ea.number().int().nonnegative()}),nC1=new TextEncoder});function JV5($){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 GV5=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},PS8=()=>{let $=new X1;return $.use("*",GV5),$.get("/",async(Z)=>{let Q=w0(),X=Q.decoSupabaseUrl,Y=Q.decoSupabaseServiceKey;if(!X||!Y)return Z.json({apps:[]});try{let J=await pG(X,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:JV5(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var AS8=L(()=>{U8();o1();Hg0()});import{z as u1}from"zod";function iB($,Z="invalid_request_error",Q=null,X=null){return{error:{message:$,type:Z,param:Q,code:X}}}function OV5($){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 jV5($,Z,Q){try{return JSON.parse($)}catch{throw new qS8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function wV5($){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:jV5(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 EV5($){let Z=$.map((Q)=>{let X=Q.function.parameters?AN(Q.function.parameters):AN({type:"object",properties:{}});return[Q.function.name,r$({description:Q.function.description,inputSchema:X})]});return Object.fromEntries(Z)}function zV5($){if(!$)return;return{openai:{response_format:$}}}function PV5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function TS8($,Z,Q,X,Y,J){let G={model:$,instructions:Z.filter((W)=>W.role==="system"),messages:Z.filter((W)=>W.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 RS8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var WV5=256,KV5,HV5,FV5,UV5,NV5,BV5,LV5,DV5,qS8,MS8,IS8;var VS8=L(()=>{s4();U8();Ha();tF();KV5=u1.object({type:u1.literal("function"),function:u1.object({name:u1.string(),description:u1.string().optional(),parameters:u1.record(u1.string(),u1.unknown()).optional()})}),HV5=u1.object({id:u1.string(),type:u1.literal("function"),function:u1.object({name:u1.string(),arguments:u1.string()})}),FV5=u1.discriminatedUnion("role",[u1.object({role:u1.literal("system"),content:u1.string(),name:u1.string().optional()}),u1.object({role:u1.literal("user"),content:u1.union([u1.string(),u1.array(u1.union([u1.object({type:u1.literal("text"),text:u1.string()}),u1.object({type:u1.literal("image_url"),image_url:u1.object({url:u1.string(),detail:u1.string().optional()})})]))]),name:u1.string().optional()}),u1.object({role:u1.literal("assistant"),content:u1.string().nullable().optional(),name:u1.string().optional(),tool_calls:u1.array(HV5).optional()}),u1.object({role:u1.literal("tool"),content:u1.string(),tool_call_id:u1.string()})]),UV5=u1.object({type:u1.literal("text")}),NV5=u1.object({type:u1.literal("json_object")}),BV5=u1.object({type:u1.literal("json_schema"),json_schema:u1.object({name:u1.string(),description:u1.string().optional(),schema:u1.record(u1.string(),u1.unknown()),strict:u1.boolean().optional()})}),LV5=u1.union([UV5,NV5,BV5]),DV5=u1.object({model:u1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:u1.array(FV5),stream:u1.boolean().optional().default(!1),temperature:u1.number().min(0).max(2).optional(),max_tokens:u1.number().positive().optional(),top_p:u1.number().min(0).max(1).optional(),frequency_penalty:u1.number().min(-2).max(2).optional(),presence_penalty:u1.number().min(-2).max(2).optional(),stop:u1.union([u1.string(),u1.array(u1.string())]).optional(),tools:u1.array(KV5).optional(),tool_choice:u1.union([u1.literal("auto"),u1.literal("none"),u1.literal("required"),u1.object({type:u1.literal("function"),function:u1.object({name:u1.string()})})]).optional(),response_format:LV5.optional(),user:u1.string().optional()});qS8=class qS8 extends Error{constructor($){super($);this.name="MessageConversionError"}};MS8=new X1;MS8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(iB("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(iB("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(iB("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let X=await $.req.json(),Y=DV5.safeParse(X);if(!Y.success){let j=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(iB(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=Y.data,G=OV5(J.model);if(!G)return $.json(iB("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let w=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>oA(E.providerId));if(!w)return $.json(iB("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=w.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(iB(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=wV5(J.messages),N=J.tools?EV5(J.tools):void 0,B=zV5(J.response_format),D=PV5(),O=Math.floor(Date.now()/1000);if(J.stream)return nO($,async(j)=>{let w=TS8(F,U,N,J,B,$.req.raw.signal);try{let E=mn(w),z=!1,T=0,P="",A=async()=>{if(P.length===0)return;let q=P;P="",await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,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 j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=WV5)await A()}else if(q.type==="tool-call"){await A();let b=T++;await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:b,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await A(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:RS8(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await A(),await j.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await j.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let j=TS8(F,U,N,J,B,$.req.raw.signal),w=await HP(j),E={role:"assistant",content:w.text||null};if(w.toolCalls&&w.toolCalls.length>0)E.tool_calls=w.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:D,object:"chat.completion",created:O,model:J.model,choices:[{index:0,message:E,finish_reason:RS8(w.finishReason)}],usage:{prompt_tokens:w.usage?.inputTokens??0,completion_tokens:w.usage?.outputTokens??0,total_tokens:w.usage?.totalTokens??0}})}}catch(X){let Y=X;if(Y.name==="AbortError")return $.json(iB("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(iB(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(iB(Y.message,"server_error"),500)}});IS8=MS8});function AV5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function kS8(){let $=new X1;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=m0(Q);if(!X)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!vZ(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(),W=[];for(let H of G){if(!H.slug||d9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(tR(U)!==J)continue;if(!AV5(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var CS8=L(()=>{U8();m3()});function RV5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??TV5}}var SS8,TV5="https://ph.studio.decocms.com",_S8;var vS8=L(()=>{U8();w$0();qh();R9();o1();JV1();N61();SS8=new X1;SS8.get("/",($)=>{let Z={version:BH0.version,theme:iR$(),...GF().logo&&{logo:GF().logo},...wO()&&{internalUrl:VX$()},...w0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!w0().firecrawlApiKey,hostingEnabled:!!w0().controlplaneRestUrl&&!!w0().controlplaneServiceToken,hostingControlPlaneGa:w0().hostingControlPlaneGa,monitorEnabled:!!w0().clickhouseAnalyticsUrl&&!!w0().clickhouseAnalyticsPassword,monitorGa:w0().monitorGa,plansEnabled:w0().plansEnabled,auth:HR8(),posthog:RV5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:qU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});_S8=SS8});function xu($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function oC1($){return(xu($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function xS8($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(xu($))}&sz=${Z}`}function qV5($,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 fS8($){let{brand:Z,domain:Q,score:X}=$,Y=typeof X==="number"?`${Z} Deco Score \u2014 ${Math.round(X)}/100 \xB7 decocms`:`${Z} Deco Score \xB7 decocms`,J=qV5(`How does ${Q} really perform? See the full ${Z} Deco Score \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,200);return{title:Y,description:J}}import{z as q$}from"zod";var MV5,bS8;var yS8=L(()=>{MV5=q$.object({check_id:q$.string(),title:q$.string(),description:q$.string().optional(),impact:q$.string().optional(),why:q$.string().optional(),category:q$.string(),severity:q$.string(),value_band:q$.string().optional(),value_driver:q$.string().optional(),controllability:q$.string().optional(),pages:q$.array(q$.string()),tasks:q$.array(q$.string()),evidence:q$.string(),sample_scope:q$.string().optional(),sources:q$.array(q$.string())}),bS8=q$.object({domain:q$.string(),brand:q$.string(),favicon:q$.string().optional(),scanned_at:q$.string().nullable(),lang:q$.string(),score:q$.number().nullable(),band:q$.string().nullable(),totals:q$.object({measured:q$.number(),registry_total:q$.number(),passed:q$.number(),failed:q$.number(),blocked:q$.number()}),buckets:q$.array(q$.object({id:q$.enum(["critical","important","worth"]),label:q$.string(),items:q$.array(MV5)})),passing:q$.object({count:q$.number(),items:q$.array(q$.object({check_id:q$.string(),title:q$.string()}))}),not_measured:q$.object({count:q$.number(),groups:q$.array(q$.object({reason:q$.string(),label:q$.string(),count:q$.number(),checks:q$.array(q$.string())}))}),categories:q$.array(q$.object({key:q$.string(),label:q$.string(),score:q$.number().nullable(),band:q$.string().nullable(),pass:q$.number(),fail:q$.number()})),screenshots:q$.array(q$.object({url:q$.string(),page_type:q$.string().optional(),viewport:q$.enum(["desktop","mobile"]),image_url:q$.string()}))})});function gS8($,Z,Q){let X=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${TK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${X}`}async function _u0($,Z={}){let Q=await fetch(gS8($,"",Z.lang),{headers:{Accept:"application/json"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager read HTTP ${Q.status}`);return bS8.parse(await Q.json())}async function hS8($,Z={}){let Q=await fetch(gS8($,".md",Z.lang),{headers:{Accept:"text/markdown"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager markdown HTTP ${Q.status}`);return Q.text()}var aC1=L(()=>{yS8();ID()});import{join as uS8}from"path";async function VV5($){try{let Z=await _u0($,{signal:AbortSignal.timeout(IV5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||oC1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function aG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function kV5($,Z){let Q=xu($),X=Z?.brand?.trim()||oC1(Q),Y=xS8(Q,128),G=`${(w0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=fS8({brand:X,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${X} Deco Score by decocms`;return[`<title>${aG(W)}</title>`,`<meta name="description" content="${aG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${aG(W)}" />`,`<meta property="og:description" content="${aG(K)}" />`,`<meta property="og:url" content="${aG(G)}" />`,`<meta property="og:image" content="${aG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${aG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${aG(W)}" />`,`<meta name="twitter:description" content="${aG(K)}" />`,`<meta name="twitter:image" content="${aG(H)}" />`,`<meta name="twitter:image:alt" content="${aG(F)}" />`,`<link rel="canonical" href="${aG(G)}" />`,`<link rel="alternate" type="text/markdown" href="${aG(G)}.md" />`,`<link rel="icon" href="${aG(Y)}" sizes="any" />`].join(`
5895
5895
  `)}function CV5($,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}
5896
- </head>`)}function lS8($){let Z=new X1;return Z.get("/:domain/og.png",async(Q)=>{let X=xu(Q.req.param("domain")),Y=async()=>{let J=$?Bun.file(uS8($,"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(`${TK({})}/api/v2/public/diagnostics/${encodeURIComponent(X)}/og.png`,{signal:AbortSignal.timeout(SV5)}),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("/:file{.+\\.md}",async(Q)=>{let X=xu(Q.req.param("file").replace(/\.md$/,""));try{let Y=await hS8(X,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(_V5)});if(Y===null)return Q.text("Deco Score not found",404);return Q.body(Y,200,{"Content-Type":"text/markdown; charset=utf-8","Cache-Control":"public, max-age=600, stale-while-revalidate=3600","Access-Control-Allow-Origin":"*"})}catch{return Q.text("Deco Score unavailable",502)}}),Z.get("/:domain",async(Q)=>{let X=Q.req.param("domain"),Y=$?uS8($,"index.html"):null,J=Y?Bun.file(Y):null;if(!J||!await J.exists())return Q.notFound();let G=await J.text();try{let W=await VV5(xu(X)),K=kV5(X,W);return Q.html(CV5(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var IV5=2500,SV5=1e4,_V5=1e4;var mS8=L(()=>{U8();ID();aC1();o1()});function vu0($,Z){return fetch(`${TK({})}${$}`,Z)}async function vV5($,Z){let Q=await _u0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function fV5($){let Z=typeof $==="object"&&$!==null?$:{},Q=typeof Z.domain==="string"?Z.domain.trim():"",X=typeof Z.distinctId==="string"&&Z.distinctId.trim()&&Z.distinctId.length<=200?Z.distinctId.trim():void 0;return{domain:Q,distinctId:X}}var xV5,oO,cS8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},dS8;var iS8=L(()=>{U8();i3();ID();aC1();xV5=new Set(["complete","errored","terminated","unknown"]);oO=new X1;oO.use("*",async($,Z)=>{let Q=await h8.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});oO.use("/link-token/*",cS8);oO.use("/suggest",cS8);oO.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.req.query("lang")?.trim()||void 0;try{return $.json(await vV5(Z,Q))}catch{return $.json({error:"report read failed"},502)}});oO.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let{domain:X,distinctId:Y}=fV5(Q);if(!X)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await vu0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${$z({})}`},body:JSON.stringify({url:X,...J?{email:J}:{},distinct_id:Y})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let W=await G.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});oO.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await vu0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${$z({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let Y=(await Q.json()).status??"unknown",J={done:xV5.has(Y),status:Y};return $.json(J)}catch{return $.json({error:"status failed"},502)}});oO.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await vu0(`/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)}});oO.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await vu0(`/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:[]})}});dS8=oO});var bV5=1048576,rC1;var pS8=L(()=>{U8();JH();o1();dI1();rC1=new X1;rC1.post("/webhook",W9({maxSize:bV5,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=w0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!AT8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=TT8(Q);if(!Y)return $.json({error:"invalid payload"},400);let J=await RT8(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as yV5}from"crypto";function uV5($,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 yV5(Buffer.from(Y),Buffer.from(X))}function lV5($,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 W of Array.isArray(G)?G:[]){let K=W?.number;if(typeof K==="number")J.push(K)}}else if($==="issue_comment"&&Q.issue?.pull_request){let G=Q.issue.number;if(typeof G==="number")J.push(G)}return[...new Set(J)].map((G)=>({repoOwner:Y,repoName:X,number:G}))}function nS8($){let Z=new X1;return Z.post("/webhook",W9({maxSize:gV5,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(!uV5(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"&&!hV5.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"});return q50().then((U)=>U?.markTenantPoolsDirty(`https://github.com/${F}`,H)).catch((U)=>console.warn(`[github-webhook] tenant pool refresh for ${F}@${H} failed: ${U instanceof Error?U.message:String(U)}`)),Q.json({ok:!0})}let W=lV5(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await mV5($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function mV5($,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 W=await Y.getById(G.taskBoardItemId,G.organizationId),K=W?await $.contextFactory()(G.organizationId,W.assignedBy??W.createdBy):null;if(!K)continue;if(await u78(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var gV5=5242880,hV5;var tS8=L(()=>{U8();JH();_G();a7();hV5=new Set(["check_suite","issue_comment"])});import{DBOS as eC1,SchedulerMode as cV5}from"@dbos-inc/dbos-sdk";async function iV5(){try{return await pV5()}catch($){return console.warn(`[sandbox-credential-push] push failed: ${$ instanceof Error?$.message:String($)}`),null}}async function pV5(){if(!R50())return null;let[{RemoteSandboxProvider:$},{SandboxProviderRouter:Z}]=await Promise.all([Promise.resolve().then(() => (BD1(),ND1)),Promise.resolve().then(() => (UD1(),FD1))]),Q=await q50(),X=Q instanceof Z?Q.providers.kubernetes:Q;if(!(X instanceof $))return null;let{db:Y}=Z8(),{sandboxes:J,pools:G}=await X.list(),W=Date.now(),K=Xs$({sandboxes:J,pools:G,records:await Ys$(Y,J,G),legacyPools:CS0(process.env.STUDIO_SANDBOX_TENANT_POOLS),now:W}),{batches:H,failed:F}=await Js$(K,rj0(Y,new oY(w0().encryptionKey)),{now:W,orgFsLifetimeMs:vS0}),U=0,N=0,B=0;for(let D of H)try{let O=await X.pushCredentials(D);U+=O.stored,N+=O.kept}catch(O){B++,console.warn(`[sandbox-credential-push] a push batch failed: ${O instanceof Error?O.message:String(O)}`)}return{sandboxes:J.length,pushed:U,kept:N,refused:K.refused,failed:F+B}}async function nV5($,Z){let Q=await eC1.runStep(iV5,{name:"pushSandboxCredentials"});if(Q&&(Q.refused>0||Q.failed>0))console.warn(`[sandbox-credential-push] ${Q.sandboxes} sandboxes: pushed ${Q.pushed}, kept ${Q.kept}, refused ${Q.refused}, failed ${Q.failed}`)}function oS8(){if(sC1)return;if(!w0().agentSandboxEnabled||!R50())return;sC1=eC1.registerWorkflow(nV5,{name:"sandboxCredentialPushWorkflow"}),eC1.registerScheduled(sC1,{name:"sandboxCredentialPushWorkflow",crontab:dV5,mode:cV5.ExactlyOncePerIntervalWhenActive})}var dV5="1-59/10 * * * *",sC1=null;var aS8=L(()=>{cQ();Bw();eU1();xS0();SS0();_G();o1()});function rS8($){let Z=new bO($.db,new oY($.encryptionKey)),Q=new X1;return Q.get("/attachments/:token",async(X)=>{let Y=n98(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 W=await new BX(J.siteUrl,J.email,J.apiToken).downloadAttachment(Y.attachmentId);if(!W.ok||!W.body)return X.json({error:"Jira refused the download"},502);let K=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=W.headers.get(H);if(F)K.set(H,F)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var sS8=L(()=>{U8();Bw();_j1();DP();i70()});import{DBOS as F2,SchedulerMode as tV5}from"@dbos-inc/dbos-sdk";function eS8($){ZS1=$}function XS1(){if(!ZS1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return ZS1}function YS1(){let $=XS1();return new bO($.db,new oY($.encryptionKey))}async function eV5($){try{let Z=await YS1().getById($);if(!Z?.enabled||!Z.boardId)return{integrationId:$,started:0};let Q=await cF(XS1().db,Z.organizationId);if(!Q)return{integrationId:$,started:0};if((await Q.storage.jiraIntegrations.listAutomations(Z.organizationId)).length===0)return{integrationId:$,started:0};let Y=new BX(Z.siteUrl,Z.email,Z.apiToken),G=`(${await Y.getBoardScopeJql(Z.boardId)}) AND status CHANGED AFTER "-${aV5}m"`,W=0,K;for(let H=0;H<rV5;H++){let F=await Y.searchIssues({jql:G,nextPageToken:K});for(let U of F.issues)if(await sq1(Q,Z,{issueId:U.id,now:Date.now()})==="started")W++;if(K=F.nextPageToken??void 0,!K)break}return{integrationId:$,started:W}}catch(Z){return{integrationId:$,started:0,error:Z instanceof Error?Z.message:String(Z)}}}async function $k5($,Z){let Q=await F2.runStep(()=>YS1().listEnabledIds(),{name:"loadJiraIntegrations"});if(Q.length===0)return;let X=await Promise.all(Q.map((Y)=>F2.runStep(()=>eV5(Y),{name:`sweepJira:${Y}`})));for(let Y of X)if(Y.error)console.warn(`[jira-trigger] integration ${Y.integrationId} failed: ${Y.error}`);else if(Y.started>0)console.log(`[jira-trigger] integration ${Y.integrationId} started ${Y.started} run(s) the webhook missed`)}async function Zk5($,Z){try{let Q=await YS1().getById($);if(!Q?.enabled)return"disabled";let X=await cF(XS1().db,Q.organizationId);if(!X)return"disabled";let Y=await sq1(X,Q,{issueId:Z.issueId,changelogId:Z.changelogId});if(Y==="started")console.log(`[jira-trigger] started a run for ${Z.issueKey} after it settled`);else if(Y==="returned")console.log(`[jira-trigger] ${Z.issueKey} went back where it was before settling in "${Z.toStatus}"; no run`);return Y}catch(Q){return console.error(`[jira-trigger] settling ${Z.issueKey} failed`,Q instanceof Error?Q.message:Q),"error"}}async function Qk5($,Z){await F2.sleep(Ng0()+sV5),await F2.runStep(()=>Zk5($,Z),{name:"settleJiraMove"})}async function $_8($,Z){if(!QS1)throw Error("[jira-trigger] settle workflow is not registered");await F2.startWorkflow(QS1,{workflowID:`jira-settle:${$}:${Z.changelogId}`})($,Z)}function Z_8(){if($S1)return;QS1=F2.registerWorkflow(Qk5,{name:"jiraSettleWorkflow"}),$S1=F2.registerWorkflow($k5,{name:"jiraTriggerSweepWorkflow"}),F2.registerScheduled($S1,{name:"jiraTriggerSweepWorkflow",crontab:oV5,mode:tV5.ExactlyOncePerIntervalWhenActive})}var oV5="7-59/10 * * * *",aV5=35,rV5=5,sV5=5000,ZS1=null,QS1=null,$S1=null;var JS1=L(()=>{Bw();i70();Yt();DP();aq1();Bg0()});function Q_8($){let Z=new bO($.db,new oY($.encryptionKey));async function Q(Y,J){let G=gE8(J);if(!G)return;let W=await Z.getByWebhookSecret(Y);if(!W?.enabled)return;if((await Z.listAutomations(W.organizationId)).length===0)return;await $_8(W.id,G)}let X=new X1;return X.post("/webhook/:secret",W9({maxSize:Xk5}),async(Y)=>{let J=Y.req.param("secret");if(!await Z.getByWebhookSecret(J))return Y.json({error:"Unknown webhook"},404);let W;try{W=await Y.req.json()}catch{return Y.json({error:"Body must be JSON"},400)}return Q(J,W).catch((K)=>{console.error("[jira-webhook] trigger failed",K)}),Y.body(null,202)}),X}var Xk5=1048576;var X_8=L(()=>{U8();JH();Bw();JS1();Bg0();i70()});function Y_8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var J_8,Yk5,Jk5,G_8;var W_8=L(()=>{U8();GG();Nt();zp();J_8=new X1,Yk5=["range","if-none-match","if-modified-since"],Jk5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];J_8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(go($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new M1(401,{message:"Authentication required"})}if(!Q)throw new M1(401,{message:"Organization context required"});let X=$.req.path.replace(/^.*\/files\//,"");if(!X)throw new M1(400,{message:"Missing file key"});let Y=await $Z0(X,Z);if(!Y)throw new M1(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&MK()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new M1(500,{message:"Invalid data URL from storage"});let[,H,F]=K,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return Y_8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of Yk5){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(Y,{headers:J});if(G.status===403||G.status===404)throw new M1(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 M1(502,{message:"Upstream storage error"});let W=new Headers;for(let K of Jk5){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Y_8(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});G_8=J_8});var dQ0=f((fu)=>{var Gk5=fu&&fu.__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]}),Wk5=fu&&fu.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))Gk5(Z,$,Q)};Object.defineProperty(fu,"__esModule",{value:!0});Wk5(D3(),fu)});var F_8=f((K_8)=>{Object.defineProperty(K_8,"__esModule",{value:!0});K_8.version=void 0;K_8.version="3.4.0"});var B_8=f((pB)=>{var Kk5=pB&&pB.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(pB,"__esModule",{value:!0});pB.NodeTransport=pB.VERSION=void 0;pB.nodeResolveHost=Lk5;var K9=dQ0(),Hk5=L0("net"),GS1=L0("tls"),Fk5=L0("path"),U_8=L0("fs"),Uk5=Kk5(L0("dns")),Nk5=F_8();pB.VERSION=Nk5.version;var Bk5="nats.js";class N_8{socket;version;lang;yields=[];signal=(0,K9.deferred)();closedNotification=(0,K9.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=Bk5,this.version=pB.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,K9.checkOptions)(Y,Z);let{tls_required:J,tls_available:G}=Y,W=G===!0&&Z.tls!==null;if(!X&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw K9.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 K9.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new K9.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,K9.deferred)(),Q,X=(0,Hk5.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,K9.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let X=K9.DataBuffer.concat(...this.yields),Y=(0,K9.extractProtocolMessage)(X);if(Y!=="")try{let J=K9.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,K9.deferred)();try{if($=(0,Fk5.resolve)($),!(0,U_8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,U_8.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 W=await this.loadFile(Z);if(W)$.cert=W}else if(Q)$.cert=Q;if(J){let W=await this.loadFile(J);if(W)$.key=W}else if(G)$.key=G;if(X){let W=await this.loadFile(X);if(W)$.ca=[W]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Q=(0,K9.extend)(Q,this.options.tls,Y)}catch(Y){return Promise.reject(new K9.errors.ConnectionError(Y.message,{cause:Y}))}let X=(0,K9.deferred)();try{let Y=(0,GS1.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 K9.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,K9.extend)(Z,this.options.tls,X)}catch(X){return Promise.reject(new K9.errors.ConnectionError(X.message,{cause:X}))}let Q=(0,K9.deferred)();try{let X=(0,GS1.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 K9.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,K9.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,K9.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 GS1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,K9.render)($)}`);let Z=(0,K9.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,K9.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,K9.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}}pB.NodeTransport=N_8;function Lk5($){let Z=(0,K9.deferred)();return Uk5.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 w_8=f((j_8)=>{Object.defineProperty(j_8,"__esModule",{value:!0});j_8.connect=Dk5;var L_8=B_8(),D_8=dQ0(),O_8=dQ0();function Dk5($={}){if((0,O_8.hasWsProtocol)($))return Promise.reject(O_8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,D_8.setTransportFactory)({factory:()=>{return new L_8.NodeTransport},dnsResolveFn:L_8.nodeResolveHost}),D_8.NatsConnectionImpl.connect($)}});var E_8=f((aO)=>{var jk5=aO&&aO.__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]}),wk5=aO&&aO.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))jk5(Z,$,Q)};Object.defineProperty(aO,"__esModule",{value:!0});aO.connect=void 0;var Ek5=w_8();Object.defineProperty(aO,"connect",{enumerable:!0,get:function(){return Ek5.connect}});wk5(dQ0(),aO)});function T_8($){let Z=$?.connectFn??Tk5,Q=null,X=null,Y=!1,J=!1,G=!1,W=[];function K(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let N of W)try{N()}catch{}}function F(N){(async()=>{for await(let B of N.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),G=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),G=!1,X=null,H()})().catch(()=>{})}async function U(N,B){let D=0;while(!J)try{Q=await Z({servers:N,timeout:Ak5,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${D} attempt(s)`),X=null,G=!1,F(Q),H();return}catch{D++;let O=I7(Pk5,zk5,D-1,2,0.5);await Z$(O)}}return{init(N,B){if(Y)return;Y=!0,J=!1;let D=B?.creds?z_8.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(N,D).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!X)X=A_8.jetstream(Q);return X},onReady(N){if(W.push(N),K())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 Tk5($){return P_8.connect($)}var z_8,P_8,A_8,zk5=100,Pk5=3000,Ak5=3000;var R_8=L(()=>{o$();z_8=_(mA(),1),P_8=_(E_8(),1),A_8=_(uH(),1)});function xu0($){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[W,K]of Y)if(K.expiresAt<=G)Y.delete(W);while(Y.size>Q){let W=Y.keys().next().value;if(W===void 0)break;Y.delete(W)}}return{get(G){let W=Y.get(G);if(!W)return;if(W.expiresAt<=Date.now()){Y.delete(G);return}if(X)Y.delete(G),Y.set(G,W);return W.value},set(G,W){Y.delete(G),Y.set(G,{value:W,expiresAt:Date.now()+Z}),J()},delete(G){Y.delete(G)},clear(){Y.clear()},size(){return Y.size}}}function fu0($,Z){return`${$}.${Z}`}class WS1{cache;constructor($){this.cache=xu0({ttlMs:$?.ttlMs??Rk5,maxSize:$?.maxSize??qk5})}async get($,Z){return this.cache.get(fu0($,Z))??null}async set($,Z,Q){this.cache.set(fu0($,Z),Q)}async invalidate($,Z){this.cache.delete(fu0($,Z)),this.cache.delete(fu0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var Rk5=600000,qk5=5000;var q_8=()=>{};function bu0($,Z){return`${$}:${Z}`}function KS1($){let Z=xu0({ttlMs:$?.ttlMs??Mk5,maxSize:$?.maxSize??Ik5}),Q=$?.getConnection,X=crypto.randomUUID(),Y=new TextEncoder,J=new TextDecoder,G=null;function W(K,H){let F=Q?.();if(!F)return;try{F.publish(M_8,Y.encode(JSON.stringify({organizationId:K,keyId:H,originId:X})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(K,H){return Z.get(bu0(K,H))},set(K,H,F){Z.set(bu0(K,H),F)},invalidate(K,H){Z.delete(bu0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(M_8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===X)continue;Z.delete(bu0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var M_8="studio.ai-provider-keys.invalidate",Mk5=30000,Ik5=5000;var I_8=()=>{};class HS1{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 V_8=($)=>{let Z;return()=>Z??=$()},FS1,US1;var k_8=L(()=>{y6();FS1=V_8(()=>G$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),US1=V_8(()=>G$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function xk5($=__8){return{name:zB,subjects:[`${Qz1}.>`],storage:KU.StorageType.File,max_age:Ck5,max_bytes:_k5,max_msgs_per_subject:vk5,discard:KU.DiscardPolicy.Old,retention:KU.RetentionPolicy.Limits,duplicate_window:Sk5,num_replicas:$}}class v_8{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 C_8($){let Z=S_8.headers();for(let[Q,X]of Object.entries($))Z.set(Q,X);return Z}function gk5($,Z){let Q=0;return{publish(X,Y,J,G){X.publish(Y,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,kk5().add(1,{"org.id":Z??"unknown"}),Q===1||Q%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${Q} total):`,W)})},get errorCount(){return Q}}}function hk5($,Z){return $.info?.cluster?Z:1}function uk5($){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 NS1{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=xk5(Y);try{await X.streams.info(zB),await X.streams.update(zB,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await X.streams.add(J),await X.streams.update(zB,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await X.streams.delete(zB),await X.streams.add(J);else throw G}},Q=await j8(async()=>{let X=this.options.getJetStreamManager?await this.options.getJetStreamManager():await KU.jetstreamManager($),Y=hk5($,__8);try{await Z(X,Y)}catch(J){if(Y<=1||!uk5(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:Tt});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=gk5(Z,X),G=!1,W=()=>{if(G)return;G=!0;let H=gY8(Z);Y.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=Yz1(H,{runId:Z}),N=performance.now()-F;FS1().record(N),US1().add(1,{"org.id":X??"unknown"}),yk5?.record(N,U.reduce((B,D)=>B+D.data.length,0));for(let B of U)J.publish(Y,B.subject,B.data,B.headers?C_8(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:D}=await H.read();if(B)break;if(K(D),U++,++F>=64)F=0,await new Promise((O)=>setImmediate(O))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),bk5)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 j8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:C_8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Tt}),!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=Yz1(Z,{runId:$,dedup:Q});FS1().record(performance.now()-Y),US1().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=yY8({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"?KU.DeliverPolicy.New:KU.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=TP($),W;try{W=await j8(async()=>{return(await X.consumers.get(zB,{filter_subjects:G,deliver_policy:Y})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Tt})}catch(O){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",O?.message??O),null}let F=yx0({messages:async function*(){try{for await(let O of W)yield{subject:O.subject,data:O.data,headers:O.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(vx0()).pipeThrough(xx0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,D=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",D,{once:!0}),new ReadableStream({async pull(O){for(;;){let{done:j,value:w}=await F.read();if(j){D(),O.close();return}let E=w;if(E.kind==="done"){if(J){D(),O.close();return}continue}O.enqueue(E.chunk);return}},cancel(){D()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(zB,{filter:TP($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var KU,S_8,Vk5=($)=>{let Z;return()=>Z??=$()},kk5,Ck5=86400000000000,Sk5=120000000000,_k5=4294967296,__8,vk5=500000,fk5,bk5,yk5;var x_8=L(()=>{o$();Jz1();gx0();fx0();y6();k_8();KU=_(uH(),1),S_8=_(mA(),1),kk5=Vk5(()=>G$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),__8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);fk5=process.env.STREAM_ENCODE_TRACE==="1",bk5=process.env.DECOPILOT_STREAM_TRACE==="1";yk5=fk5?new v_8:null});function yu0($,Z,Q,X){if(!X)return!1;return $.emit(Z,dU(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 f_8=L(()=>{r8()});class BS1{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 lk5($,Z,Q={}){let X=$.startsWith("thread:")?yF($,Q):$;return[...new Set([Z,X].filter((Y)=>!!Y))]}async function LS1($,Z){let Q=Z.organizationId;try{let X=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let Y of X){let J=await HB($,Y);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(Y),W=await ZP($,{threadId:Y,runBranch:G?.branch}),K=await C60($,Q,oU1(J)).catch(()=>null);if(!K){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}let H=lk5(W,await $_0($,Y),{flat:tg(K.repo.provider)});for(let F of H){let U=await K.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:K.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await JW(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 b_8=L(()=>{O7();DY();a7()});async function y_8($,Z,Q){let X=Z.organizationId;if(!IJ(Z))return!1;if(!zh(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,X))return!1;let Y=await $.storage.organizationSettings.get(X),J=tN(Y?.flags),G=await $.storage.taskBoard.update(Z.id,X,{status:J},Z.updatedBy);return await F5($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),A8(X,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var g_8=L(()=>{_4();PY();Gt();dF();f9()});function tk5($){return $ instanceof DJ}function h_8($,Z){return Z-$>=pk5}class DS1{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??mk5;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??dk5,Q=this.options.itemIntervalMs??ck5,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:W}of Y)try{if(await this.reconcileItem(G,W,X))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z),$+=await this.settleFinishedRunsWithoutPr(Z,X)}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()-Mj1),aw1);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()-nk5));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 nw1(this.taskBoard,Y,X),await tw1(this.taskBoard,this.billing,Y,X)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async settleFinishedRunsWithoutPr($,Z){let Q=0,X=await this.taskBoard.listItemsFinishedWithoutPr($,Z);for(let{id:Y,organizationId:J,finishedAt:G}of X)try{if(!await this.taskBoard.claimSweep(Y,J,Z))continue;let W=await this.taskBoard.getById(Y,J);if(!W||W.status!==Y$.progress||IJ(W)||W.assigneeId!==V8)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await LS1(K,W)){if(await this.taskBoard.clearSweepBudget(Y,J),await this.reconcileItem(Y,J,Z))Q++;continue}if(!h_8(G.getTime(),Date.now()))continue;let H="the run finished without opening a pull request \u2014 there is "+"nothing for a reviewer to review",F=await this.taskBoard.advanceToReviewIfInProgress(Y,J,W.updatedBy);if(!F)continue;await this.taskBoard.recordActivity({taskBoardItemId:Y,action:"status_changed",actorId:null,data:{from:Y$.progress,to:Y$.review,reason:H}}).catch(()=>{}),A8(J,F),await iF(K,F,H)}catch(W){console.error(`[task-board-review-sweeper] settling finished run on ${Y} failed`,W)}return Q}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!==Y$.progress||G.assigneeId!==V8)continue;let W=await this.contextFactory(Y,G.assignedBy??G.createdBy);if(!W)continue;await pF(W,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),tk5(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()+ik5)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${X} failed`,W))}return Z}async returnToTodo($,Z,Q){try{let X=await this.taskBoard.getById($,Z);if(!X||X.status!==Y$.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(()=>{}),A8(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(!h_8(lD(Q,Z.reviewCycleStartedAt),Date.now()))return;await iF($,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(!IJ(X))return!1;let Y=X.assigneeId===V8,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 LS1(G,X))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(Y)await this.handOffReviewWithoutPr(G,X);return!1}}let W=await Promise.all(J.map(async(K)=>({...K,...await Ht(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(await y_8(G,X,W))return!0;if(await MJ8(G,X))return!0;if(await this.resolveConflictFromSweep(G,X,W))return!0;if(!Y)return!1;if(!cw1(W))return!1;return await Wt(G,X,{previewMatchesHead:dw1(W)}),!0}async resolveConflictFromSweep($,Z,Q){let X=Q.find((Y)=>Y.state!=="closed"&&Y.conflict===!0);if(!X)return!1;return await EP($,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 mk5=60000,ck5=300000,dk5=50,ik5=60000,pk5=900000,nk5=120000;var u_8=L(()=>{_4();dv0();b_8();wB();NZ0();dF();g_8();f9();vK();rw1();a7();C90();Kt()});import{readdir as ok5,rm as gu0}from"fs/promises";import{join as hu0}from"path";async function uu0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-ak5),Z.setUTCHours(0,0,0,0);let Q=0;try{let X=await bu($);for(let Y of X)if(/^\d{4}$/.test(Y))Q+=await l_8($,Y,Z);else if(!Y.startsWith(".")){let J=hu0($,Y),G=await bu(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await l_8(J,K,Z)}if((await bu(J)).length===0)await gu0(J,{recursive:!0,force:!0})}}catch(X){console.warn("monitoring retention cleanup failed:",X)}return Q}async function l_8($,Z,Q){let X=0,Y=hu0($,Z),J=await bu(Y);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=hu0(Y,W),H=await bu(K);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${W}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=hu0(K,U);await gu0(B,{recursive:!0,force:!0}),X++}}if((await bu(K)).length===0)await gu0(K,{recursive:!0,force:!0})}if((await bu(Y)).length===0)await gu0(Y,{recursive:!0,force:!0});return X}async function bu($){try{return(await ok5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var ak5=30;var OS1=()=>{};import{DBOS as jS1,SchedulerMode as rk5}from"@dbos-inc/dbos-sdk";async function ek5(){let $=[qH(),Im(),kL()],Z=0;for(let Q of $)try{Z+=await uu0(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 $C5($,Z){await jS1.runStep(()=>ek5(),{name:"monitoringRetention"})}function c_8(){if(m_8)return;m_8=!0;let $=jS1.registerWorkflow($C5,{name:"monitoringRetentionWorkflow"});jS1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:sk5,mode:rk5.ExactlyOncePerIntervalWhenActive})}var sk5="23 4 * * *",m_8=!1;var d_8=L(()=>{hW();OS1()});function i_8($){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 LX.create();Y.auth.user={id:Q,role:X.role},Y.organization={id:X.orgId,slug:X.orgSlug,name:X.orgName};let J=await dR($.db,Z,X.role);return Y.boundAuth=bI1({auth:Y.authInstance,headers:new Headers,role:X.role,permissions:J,userId:Q}),Y.access=new IT(Q,void 0,Y.boundAuth,X.role,"self"),wP(Y,{id:X.orgId,slug:X.orgSlug}),Y}}var p_8=L(()=>{YK();pN()});import{EventEmitter as ZC5}from"events";var wS1;var n_8=L(()=>{SA();wS1=new ZC5;wS1.on("request",($)=>{Zw($)})});function t_8(){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=Pa(N.params.name),D=N.params.arguments||{},O=Object.keys(D).map((w)=>Pa(w)),j=O.length>0?O.slice(0,3).join(",")+(O.length>3?"\u2026":""):"";J=`${j9.tool}${B}${j9.dim}(${j})${j9.reset}`}else if(N.method)J=`${j9.dim}${Pa(N.method)}${j9.reset}`}}catch{}}let W=Pa(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";W=`/mcp/${j9.mcp}${Pa(F.slice(0,12))}\u2026${j9.reset}`}else if(Y==="/mcp")W=`${j9.mcp}/mcp${j9.reset}`;else if(Y==="/mcp/registry")W=`${j9.mcp}/mcp/registry${j9.reset}`;let K=XC5(X),H=G?"\u25C0":"\u2190";if(!NH0())console.log(`${j9.dim}${H}${j9.reset} ${K}${X}${j9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=QC5(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";if(!NH0())console.log(`${j9.dim}${D}${j9.reset} ${K}${X}${j9.reset} ${W}${J?` ${J}`:""} ${N}${U}${j9.reset} ${j9.duration}${B}${j9.reset}`);wS1.emit("request",{method:X,path:Pa(Y),status:U,duration:F,timestamp:new Date})}}}var j9,QC5=($)=>{if($>=500)return j9.serverError;if($>=400)return j9.clientError;if($>=300)return j9.redirect;return j9.ok},XC5=($)=>{return j9[$]||j9.reset},Pa=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var o_8=L(()=>{SA();n_8();j9={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 e_8}from"crypto";import{mkdir as YC5,readdir as JC5,rm as a_8,stat as $v8}from"fs/promises";import{join as zS1,relative as GC5}from"path";import{z as K8}from"zod";function Qv8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return zS1(WC5,Z)}function Xv8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function ES1($,Z){let Q=Qv8($),X=Xv8(Z);return zS1(Q,X)}function KC5($,Z,Q,X){let Y=w0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${X}`;return e_8("sha256",Y).update(J).digest("hex")}function s_8($,Z,Q,X,Y){let J=Math.floor(Date.now()/1000)+X,G=KC5(Z,Q,J,Y),W=new URL(`/api/dev-assets/${Z}/${Xv8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",Y),W.toString()}function Yv8($,Z,Q){let X=`${$}:${Z.getTime()}:${Q}`;return`"${e_8("md5","etag").update(X).digest("hex")}"`}async function Jv8($,Z,Q,X,Y){try{let J=await JC5($,{withFileTypes:!0});for(let G of J){let W=zS1($,G.name),H=GC5(Z,W).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 Jv8(W,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 $v8(W);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:Yv8(W,F.mtime,F.size)})}catch{}}}}catch{}}function Gv8($,Z){let X=G0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:K8.object({prefix:K8.string().optional(),maxKeys:K8.number().optional().default(1000),continuationToken:K8.string().optional(),delimiter:K8.string().optional()}),outputSchema:K8.object({objects:K8.array(K8.object({key:K8.string(),size:K8.number(),lastModified:K8.string(),etag:K8.string()})),nextContinuationToken:K8.string().optional(),isTruncated:K8.boolean(),commonPrefixes:K8.array(K8.string()).optional()}),handler:async(Y)=>{let J=Y,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=Qv8(X);await YC5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await Jv8(F,F,G,K,U),U.objects.sort((j,w)=>j.key.localeCompare(w.key));let N=0;if(H){if(N=U.objects.findIndex((j)=>j.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),D=N+W<U.objects.length,O=D?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:D,nextContinuationToken:O,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:K8.object({key:K8.string()}),outputSchema:K8.object({contentType:K8.string().optional(),contentLength:K8.number(),lastModified:K8.string(),etag:K8.string(),metadata:K8.record(K8.string(),K8.string()).optional()}),handler:async(Y)=>{let J=Y,G=ES1(X,J.key),W=await $v8(G);return{contentType:yV1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Yv8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:K8.object({key:K8.string(),expiresIn:K8.number().optional()}),outputSchema:K8.object({url:K8.string(),expiresIn:K8.number()}),handler:async(Y)=>{let J=Y,G=SO(J.expiresIn,r_8);return{url:s_8(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:K8.object({key:K8.string(),expiresIn:K8.number().optional(),contentType:K8.string().optional()}),outputSchema:K8.object({url:K8.string(),expiresIn:K8.number()}),handler:async(Y)=>{let J=Y,G=SO(J.expiresIn,r_8);return{url:s_8(Z,X,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:K8.object({key:K8.string()}),outputSchema:K8.object({success:K8.boolean(),key:K8.string()}),handler:async(Y)=>{let J=Y,G=ES1(X,J.key);try{return await a_8(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:K8.object({keys:K8.array(K8.string()).max(1000)}),outputSchema:K8.object({deleted:K8.array(K8.string()),errors:K8.array(K8.object({key:K8.string(),message:K8.string()}))}),handler:async(Y)=>{let J=Y,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=ES1(X,K);try{await a_8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function PS1($,Z,Q){let X=Gv8(Z,Q),Y=new FE({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:tZ});for(let G of X){let W="shape"in G.inputSchema?G.inputSchema.shape:K8.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:K8.object({}).shape;Y.registerTool(G.name,{description:G.description??"",inputSchema:W,outputSchema:K,annotations:G.annotations,_meta:G._meta},async(H)=>{try{let F=await G.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let J=new FW({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(J),oK(Y,J,$,"mcp:dev-assets")}async function Wv8($,Z,Q,X){let J=Gv8(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 WC5="./data/assets",r_8=3600,Zv8,Kv8;var Hv8=L(()=>{o1();St();U8();ZB0();Ct();XG();_O();Vh0();Zv8=new X1;Zv8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),X=`${Q.protocol}//${Q.host}`;return PS1($.req.raw,Z,X)});Kv8=Zv8});var Fv8={};J0(Fv8,{mountDevRoutes:()=>HC5});function HC5($,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 PS1(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}`,W=X.req.param("toolName");if(!W)return X.json({error:"Missing tool name"},400);let K=await X.req.json(),H=await Wv8(W,K,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",Kv8);let Q=new X1;Q.use("*",GU({mountPath:"/api/dev-assets"})),Q.route("/",Ih0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var Uv8=L(()=>{U8();CV1();Vh0();Hv8()});var Pv8={};J0(Pv8,{watchHandler:()=>zv8,resolveCorsOrigin:()=>wv8,isSsoExemptPath:()=>Ov8,isAllowedOAuthRedirectUri:()=>Ev8,createApp:()=>EC5});import{readFileSync as FC5}from"fs";import{PrometheusSerializer as UC5}from"@opentelemetry/exporter-prometheus";import{DBOS as rO}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as LC5,oAuthProtectedResourceMetadata as DC5}from"better-auth/plugins";async function NC5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,Bv8(Nv8)])}catch{return Z.then((X)=>X.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),Bv8(Nv8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function Bv8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function Ov8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${Nh0}/`)||$.startsWith(`${Gh0}/`)}function jv8($){return $==="local.studio.decocms.com"}function wv8($,{baseUrl:Z,requestOrigin:Q}){let X;try{X=new URL($).hostname}catch{return null}if(X==="localhost"||X==="127.0.0.1")return $;if(jv8(X))return $;let Y=Z??Q;try{if(new URL(Y).origin===$)return $}catch{}return null}function Ev8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"||jv8($.hostname)}async function EC5($={}){let Z=$.database??Z8(),Q=!1;H5.stop().catch((W0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",W0)});let X,Y,J,G,W=new WS1,K,H,F,U=null;if($.disableNats)K=KS1(),X={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},Y=null,J=null,G=new PZ0,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(W0)=>{return(async()=>{let F0=W0.getReader();try{while(!0){let{done:q0}=await F0.read();if(q0)break}}catch{}finally{F0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=T_8();let W0=w0().natsCredsPath,F0;if(W0)try{F0=FC5(W0,"utf8")}catch(L8){console.error(`[app] failed to read NATS_CREDS at ${W0}; connecting anonymously`,L8)}U.init(w0().natsUrls,F0?{creds:F0}:void 0);let q0=qH1()?new KH1({getJetStream:()=>U.getJetStream()}):null;q0?.init().catch(()=>{}),X=q0;let M0=new cH1({getJetStream:()=>U.getJetStream()});M0.init().catch(()=>{}),Y=M0;let U1=new Ah(yw1,{getJetStream:()=>U.getJetStream()}),p$=new Ah(S90,{getJetStream:()=>U.getJetStream()});U1.init().catch(()=>{}),p$.init().catch(()=>{}),J={reads:U1,cards:p$};let e$=new vP1({getJetStream:()=>U.getJetStream()});e$.init().catch(()=>{}),G=e$,K=KS1({getConnection:()=>U.getConnection()}),H=new HS1({getConnection:()=>U.getConnection()}),F=new NS1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),dT8(U),U.onReady(()=>{q0?.init().catch((L8)=>{console.error("[McpListCache] Deferred init failed:",L8)}),M0.init().catch((L8)=>{console.error("[SkillCatalogCache] Deferred init failed:",L8)}),U1.init().catch((L8)=>{console.error("[PrReadCache] Deferred init failed:",L8)}),p$.init().catch((L8)=>{console.error("[PrCardCache] Deferred init failed:",L8)}),e$.init().catch((L8)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",L8)}),K.start(),Lu$(()=>U.getConnection()),F.init().catch((L8)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",L8)})})}if(U2)await U2();HH1(X),iH1(Y),nH1(()=>U?.getConnection()??null),gw1(J),xP1(G);let B={storage:new Ac(Z.db),sseHub:H5,onThreadFinished:async(W0,F0)=>Ut(new YW(Z.db),W0,F0,new A3(Z.db))},D=new ME1(B),O=new m70(Z.db),j=new BS1(O);j.start(),RJ8(H),H.start((W0)=>{Tx0(W0),D.execute({type:"CANCEL",taskId:W0}).catch((F0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",F0)})}).catch((W0)=>{console.error("[Decopilot] CancelBroadcast start failed:",W0)}),U?.onReady(()=>{H.start().catch((W0)=>{console.error("[CancelBroadcast] Deferred start failed:",W0)})});let w=()=>U?.getConnection()??null;RV1(w),U?.onReady(()=>RV1(w)),L21(w),U?.onReady(()=>L21(w)),F.init().catch((W0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",W0)}),U2=async()=>{await D.stopAll(),D.dispose(),j.dispose(),H.stop().catch(()=>{}),Nq8(),F.teardown(),X?.teardown(),Y?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),Du$(),G.teardown(),HH1(null),iH1(null),nH1(null),gw1(null),xP1(null)};let E=new X1;if(E.use("*",CP1({enabled:(W0)=>yo(W0,"debug")==="1"})),E.use("*",fe0),E.use("/*",hT8({origin:(W0,F0)=>wv8(W0,{baseUrl:w0().baseUrl,requestOrigin:new URL(F0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),E.use("*",async(W0,F0)=>{if(await F0(),W0.req.path.includes("/files/"))return;if(W0.req.path.includes("/fs/")&&W0.req.path.endsWith("/read"))return;W0.header("X-Frame-Options","DENY"),W0.header("Content-Security-Policy","frame-ancestors 'none'")}),!w0().noTui)E.use("*",t_8());E.use("*",async(W0,F0)=>{if(await F0(),Ss(W0.req.path))return;if(W0.res.status>=500){let M0=await W0.res.clone().text();console.error(`[5xx Response] ${W0.req.method} ${W0.req.path} - ${W0.res.status}:`,M0)}}),E.get(mY.HEALTH,(W0)=>{if(Q)return W0.json({status:"shutting_down"},503);return W0.json({status:"ok"})}),E.get(mY.HEALTH_LIVE,(W0)=>{return W0.json({status:"ok"})}),E.get(mY.HEALTH_READY,async(W0)=>{if(Q)return W0.json({status:"shutting_down"},503);let F0={};if(F0.postgres={status:await NC5(Z.pool)?"up":"down"},U)F0.nats=U.isConnected()?{status:"up"}:{status:"down"};else F0.nats={status:"down"};let q0=F0.postgres.status==="up",M0=q0?200:503;return W0.json({status:q0?"ready":"not_ready",services:F0},M0)}),E.get(mY.METRICS,async(W0)=>{try{let F0=await he0.collect(),q0=BC5.serialize(F0.resourceMetrics);return W0.text(q0,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(F0){return console.error("Failed to collect metrics:",F0),W0.text("# Error collecting metrics",500)}});let z=1800000;E.get(`${mY.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(W0)=>{let F0=W0.req.param("queueName");if(!OC5.has(F0))return W0.json({error:`Unknown queue: ${F0}`},404);let[q0,M0]=await Promise.all([rO.listQueuedWorkflows({queueName:F0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),rO.listQueuedWorkflows({queueName:F0,status:"PENDING",loadInput:!1,loadOutput:!1,dequeuedAfter:new Date(Date.now()-z).toISOString()})]);return W0.json({queue_length:q0.length,in_flight:M0.length})}),E.route("/api/config",_S8),E.route("/api/_reports",dS8),E.route("/api/_stripe",rC1),E.route("/api/_github",nS8({taskBoard:()=>h,contextFactory:()=>y})),E.route("/api/_git",po);let T={db:Z.db,encryptionKey:w0().encryptionKey};E.route("/api/_jira",Q_8(T)),E.route("/api/_jira",rS8(T)),E.route("/report",lS8($.clientDir)),E.route("/api/auth/custom",FR8),E.route("/api/auth/desktop",LR8),E.all("/api/auth/admin/*",eR8),E.all("/api/auth/*",async(W0)=>{return await h8.handler(W0.req.raw)});let P=BA8();P.use("/.well-known/oauth-protected-resource/mcp/:connectionId",QQ0),P.use("/mcp/:connectionId/.well-known/oauth-protected-resource",QQ0),E.route("/",P),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",u70),E.route("/",wA8()),E.use("/oauth-proxy/:connectionId/*",QQ0),E.all("/oauth-proxy/:connectionId/*",Lv8);let A=async(W0)=>{let q0=await jC5()(W0.req.raw),M0=await q0.json();return Response.json(M0,q0)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",QQ0),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let q=async(W0)=>{let q0=await wC5()(W0.req.raw),M0=await q0.json();return Response.json(M0,q0)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",q);let b=lT8({ttlMs:120000}),S=await NT8({db:Z.db,auth:h8,encryption:{key:w0().encryptionKey},observability:{tracer:pj,meter:G$},modelListCache:W,providerKeyCache:K,memberRoleCache:b});LX.set(S),FN$({db:Z.db,baseUrl:r5()}),BT8({db:Z.db}),jT8({db:Z.db}),qT8({db:Z.db}),eS8({db:Z.db,encryptionKey:w0().encryptionKey}),aZ8({db:Z.db}),ST8({db:Z.db}),M78({db:Z.db});let V=cU0(Z.db),u=new z10(Z.db),y=i_8({db:Z.db});MP1({storage:V,studioContextFactory:y}),wz1({systemDatabaseUrl:wK0(w0().databaseUrl,w0().databasePgSsl),studioContextFactory:y,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:H5}}),Uz1({dispatchRunFn:CY8,studioContextFactory:y,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:H5}});let l=new Ac(Z.db),h=new YW(Z.db),i=new A3(Z.db),K0=new DS1(h,y,i);if(w0().taskBoardReviewSweeperEnabled){K0.start();let W0=U2;U2=async()=>{await W0?.(),K0.dispose()}}rY8({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let W0=U?.getConnection();return W0?await Dv8.jetstreamManager(W0):null},messageParts:l.messageParts(),resolveRun:async(W0)=>{let F0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",W0).executeTakeFirst();return F0?{orgId:F0.organization_id,createdBy:F0.created_by,version:F0.message_storage_version??1,status:F0.status,runFenceToken:F0.run_fence_token,title:F0.title??null}:null},completeRunIfNotCompleted:async(W0,F0)=>{let q0=await l.completeRunIfNotCompleted(W0,F0);if(yu0(H5,F0,W0,q0),q0)await Ut(h,W0,F0,i);return q0},markRunRequiresAction:async(W0,F0)=>{let q0=await l.requiresActionIfInProgress(W0,F0);return yu0(H5,F0,W0,q0),q0},markRunFailed:async(W0,F0,q0,M0)=>{let U1=await l.markRunFailed(W0,F0,q0,M0);if(yu0(H5,F0,W0,U1),U1)await Ut(h,W0,F0,i);return U1},clearSynthesizedError:async(W0,F0)=>{await l.messageParts().replaceMessageParts(W0,AP(W0,F0),[])},persistTitle:(W0,F0,q0)=>l.update(W0,F0,{title:q0}),onTitleUpdated:async({runId:W0,orgId:F0,title:q0})=>{let M0=await l.get(W0,F0).catch(()=>null);H5.emit(F0,dU(W0,M0?.status??"in_progress",{title:q0,virtualMcpId:M0?.virtual_mcp_id??void 0,createdBy:M0?.created_by,triggerId:M0?.trigger_id,branch:M0?.branch??null,harnessId:M0?.harness_id??void 0,createdAt:M0?.created_at,updatedAt:M0?.updated_at}))},bumpProgress:async({runId:W0,orgId:F0})=>{await l.bumpProgress(W0,F0)},recordCompleted:async({runId:W0,orgId:F0,distinctId:q0,usage:M0})=>{h1.capture({distinctId:q0,event:"chat_message_completed",groups:{organization:F0},properties:{organization_id:F0,thread_id:W0,transport:"projector",input_tokens:M0.inputTokens,output_tokens:M0.outputTokens,total_tokens:M0.totalTokens}})},recordFailed:async({runId:W0,orgId:F0,distinctId:q0,reason:M0,kind:U1})=>{h1.capture({distinctId:q0,event:"chat_message_failed",groups:{organization:F0},properties:{organization_id:F0,thread_id:W0,transport:"projector",error_category:U1,error_message:M0}})},purgeRun:async(W0)=>{F.purge(W0)}}),QY8({studioContextFactory:y,systemDatabaseUrl:wK0(w0().databaseUrl,w0().databasePgSsl),streamBuffer:F}),c_8(),UN$(),DT8(),ET8(),IT8(),Z_8(),Z78(),vT8(),I78(),oS8();let R0=async(W0,F0,q0)=>{let M0=await V.findById(W0,F0);if(!M0)throw Error("Automation not found");return kP1({automationId:M0.id,organizationId:M0.organization_id,triggerId:null})},X0=new co(V,({automation:W0,trigger:F0,contextMessages:q0,idempotencyKey:M0})=>zZ0({automationId:W0.id,organizationId:W0.organization_id,triggerId:F0.id,contextMessages:q0},{idempotencyKey:M0})),N0=[qH(),Im(),kL()];for(let W0 of N0)uu0(W0).then(()=>{}).catch((F0)=>console.error("[monitoring] Retention cleanup failed:",F0));let n=()=>h8.api.deleteAllExpiredApiKeys().catch((W0)=>console.error("[auth] Expired API key cleanup failed:",W0));n(),setInterval(n,86400000).unref(),E.use("*",async(W0,F0)=>{if(ve0(W0.req.path))return F0();let q0={measure:async(U1,p$)=>{tK(W0,U1);try{return await p$()}finally{UW(W0,U1)}}},M0=await LX.create(W0.req.raw,{timings:q0});M0.automationRunner=R0,W0.set("studioContext",M0);try{await F0()}finally{let U1=M0.pendingRevalidations;if(U1.length>0)Promise.race([Promise.allSettled(U1),Z$(30000)]).catch((e$)=>console.error("[studio] revalidation cleanup error:",e$))}}),E.use("/api/:org/decopilot/*",ho),E.use("/api/:org/v1/*",ho),E.use("/api/:org/files/*",ho),E.use("*",async(W0,F0)=>{if(Ov8(W0.req.path))return F0();let q0=W0.get("studioContext");if(!q0?.organization?.id||!q0?.auth?.user?.id)return F0();if(!(await q0.storage.orgSsoConfig.getByOrgId(q0.organization.id))?.enforced)return F0();if(!await q0.storage.orgSsoSessions.isValid(q0.auth.user.id,q0.organization.id))return W0.json({error:"SSO authentication required for this organization"},403);return F0()});let o=new X1;o.use("*",GU({mountPath:"/api/org-sso"})),o.route("/",Dh0()),E.route("/api/org-sso",o),E.get("/api/tools/management",(W0)=>{return W0.json({tools:M10,grouped:MT()})}),E.use("/mcp/*",async(W0,F0)=>{tK(W0,"mcp");try{return await F0()}finally{UW(W0,"mcp")}});let r=async(W0,F0)=>{let q0=W0.var.studioContext;if(!q0.auth.user?.id&&!q0.auth.apiKey?.id){let M0=new URL(W0.req.url),U1=W0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),p$=U1?`${U1}://${M0.host}`:M0.origin;return W0.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${p$}${M0.pathname}/.well-known/oauth-protected-resource"`}})}return await F0()};if(E.use("/mcp/:connectionId?",r),E.use("/mcp/gateway/:virtualMcpId?",r),E.use("/mcp/virtual-mcp/:virtualMcpId?",r),E.use("/mcp/self",r),MK()){let{mountDevRoutes:W0}=(Uv8(),tu0(Fv8));W0(E,r)}let Z0=new X1;Z0.use("*",GU({mountPath:"/mcp"})),Z0.route("/",Df0()),E.route("/mcp",Z0);let Y0=new X1;Y0.use("*",GU({mountPath:"/mcp/self"})),Y0.route("/",Ju0()),E.route("/mcp/self",Y0);let u0=new X1;u0.use("*",GU({mountPath:"/mcp"})),u0.route("/",wf0()),E.route("/mcp",u0),E.use("/api/:org/models/*",async(W0,F0)=>{tK(W0,"llm_models");try{return await F0()}finally{UW(W0,"llm_models")}});let C0=Eq8({cancelBroadcast:H,streamBuffer:F,runRegistry:D});E.route("/api",C0),E.route("/api",G_8);let K1=new X1;K1.use("*",GU({mountPath:"/api"})),K1.route("/",Hu0()),E.route("/api",K1),E.route("/api",IS8);let d0=new X1;d0.use("*",GU({mountPath:"/api"})),d0.route("/",Fu0({tokenStorage:u,automationEventDispatcher:X0})),E.route("/api",d0);let E0=new A10(Z.db),P0=new X1;P0.use("*",GU({mountPath:"/api"})),P0.route("/",Ph0()),E.route("/api",P0),E.route("/api/deco-sites",xq8()),E.route("/api/deco-apps",PS8());let o0=new X1;o0.use("*",GU({mountPath:"/api/deco-sites"})),o0.route("/",Th0()),E.route("/api/deco-sites",o0),E.route(Nh0,$q8()),E.route(Nk8,Dk8()),E.route("/api/_editor-resolve",kS8()),E.route(wR8,ER8()),E.route(Gh0,xR8());let L1=w0(),r0=L1.elevenlabsApiKey?new ku0({apiKey:L1.elevenlabsApiKey,model:L1.elevenlabsVoiceModel,conversationModel:L1.elevenlabsConversationModel,voiceId:L1.elevenlabsVoiceId}):null,f0={openai:L1.openaiLiveApiKey?new cC1({apiKey:L1.openaiLiveApiKey,voice:L1.openaiLiveVoice}):null,elevenlabs:r0?new mC1(r0,()=>U?.getConnection()??null):null},p0=new tC1({adapter:r0,conversationAdapters:f0,defaults:L1,secret:L1.studioJwtSecret??L1.betterAuthSecret,getConnection:()=>U?.getConnection()??null}),n0=eC8({voiceSessions:p0,kvStorage:E0,runRegistry:D,streamBuffer:F,sseHub:H5,cancelBroadcast:H,tokenStorage:u,automationEventDispatcher:X0,mountDevAssets:MK(),mcpAuth:r,oauthProxyHandler:Lv8,watchHandler:zv8,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",n0),E.notFound((W0)=>{return W0.json({error:"Not Found",path:W0.req.path},404)}),E.onError(Pq8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([H5.stop(),U2?Promise.resolve(U2()).finally(()=>{U2=null}):Promise.resolve()]),U)await U.drain().catch((W0)=>console.error("[shutdown] NATS drain error:",W0));console.log("[shutdown] Flushing telemetry..."),await iJ().catch((W0)=>console.error("[shutdown] Telemetry flush error:",W0)),console.log("[shutdown] Closing database..."),await oj(Z).catch((W0)=>console.error("[shutdown] Database close error:",W0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await rO.registerQueue(iW,{partitionQueue:!0,concurrency:TP1,minPollingIntervalMs:RP1}),await rO.registerQueue(dW,{partitionQueue:!0,concurrency:Oz1,priorityEnabled:!0}),await rO.registerQueue(vL,{workerConcurrency:w0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await rO.registerQueue(xL,{workerConcurrency:w0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await rO.registerQueue(Xw,{partitionQueue:!0,concurrency:ZY8}),await rO.registerQueue(vA,q78),await SV1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((W0)=>rO.deleteQueue(W0))),await qP1(Z.pool),zC$().catch((W0)=>{console.error("[studio-pack-backfill] failed:",W0)}),NN$().catch((W0)=>{console.error("[org-fs] public-sets boot sync kick failed:",W0)})}})}var Dv8,Nv8=5000,U2=null,Lv8=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 LX.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 u=await $.req.json().catch(()=>({}));return $.json({...typeof u==="object"&&u!==null?u:{},client_id:G.oauth_config.clientId,...G.oauth_config.clientSecret?{client_secret:G.oauth_config.clientSecret}:{},client_secret_expires_at:0})}let W=await vo(G.connection_url),K,H=new URL(G.connection_url),U=(typeof G.metadata?.oauthResource==="string"&&G.metadata.oauthResource.length>0?G.metadata.oauthResource:void 0)??G.connection_url;if(W.ok)K=(await W.json()).authorization_servers?.[0];if(!K)K=H.origin;let N=await l70(K);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),D;if(X==="authorize")D=B.authorization_endpoint;else if(X==="token")D=B.token_endpoint;else if(X==="register")D=B.registration_endpoint;if(!D)return $.json({error:`Unknown OAuth endpoint: ${X}`},404);let O=jA8(D);if(O)return O;let j=new URL(D),w=new URL($.req.url);if(j.search=w.search,X==="authorize"){let u=j.searchParams.get("redirect_uri");if(u){let y=w0().baseUrl??w.origin;try{if(!Ev8(new URL(u),y))return $.json({error:"invalid_request",error_description:"redirect_uri is not allowed"},400)}catch{return $.json({error:"invalid_request",error_description:"redirect_uri is malformed"},400)}j.searchParams.set("redirect_uri",u)}if(j.searchParams.has("resource"))j.searchParams.set("resource",U);if(fT8(G.connection_url))j.searchParams.set("auto_personal","true"),j.searchParams.set("force_new","true");return $.redirect(j.toString(),302)}let E={Accept:$.req.header("Accept")||"application/json"},z=$.req.header("Content-Type");if(z)E["Content-Type"]=z;let T=$.req.header("Authorization");if(T)E.Authorization=T;let P,A=null,q=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(X==="token"&&z?.includes("application/x-www-form-urlencoded")){if(T?.toLowerCase().startsWith("basic "))try{let i=atob(T.slice(6).trim()),K0=i.indexOf(":");if(K0!==-1){let R0=decodeURIComponent(i.slice(0,K0)),X0=decodeURIComponent(i.slice(K0+1));A=R0||null,q=X0||null}}catch{}let u=await $.req.formData();if(u.has("resource"))u.set("resource",U);let y=u.get("client_id"),l=u.get("client_secret");if(typeof y==="string"&&y)A=y;if(typeof l==="string"&&l)q=l;let h=new URLSearchParams;for(let[i,K0]of u.entries())h.append(i,K0.toString());P=h.toString()}else if(X==="register"&&z?.toLowerCase().includes("application/json")){let u=await Y.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",G.organization_id).executeTakeFirst(),y=await $.req.text(),l={};try{l=y?JSON.parse(y):{}}catch{P=y}let h=typeof l==="object"&&l!==null&&!Array.isArray(l);if(P===void 0&&!h)P=y;if(P===void 0){let i=l,K0=i.metadata&&typeof i.metadata==="object"?i.metadata:{};i.metadata={...K0,organization_id:G.organization_id,...u?.slug?{organization_slug:u.slug}:{},...u?.name?{organization_name:u.name}:{}},P=JSON.stringify(i),E["Content-Type"]="application/json"}}else P=$.req.raw.body??void 0;let b=await fetch(j.toString(),{method:$.req.method,headers:E,body:P,duplex:"half",redirect:"manual"}),S=new Headers,V=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[u,y]of b.headers.entries())if(!V.includes(u.toLowerCase()))S.set(u,y);if(X==="token"&&b.ok){let u=await b.text();try{let y=JSON.parse(u);if(typeof y.access_token==="string"&&y.access_token){let l=typeof y.expires_in==="number"?new Date(Date.now()+y.expires_in*1000):null,h=null;try{h=await xo(G.connection_url)??D}catch{h=D}let i={connectionId:Z,accessToken:y.access_token,refreshToken:typeof y.refresh_token==="string"?y.refresh_token:null,scope:typeof y.scope==="string"?y.scope:null,expiresAt:l,clientId:A,clientSecret:q,tokenEndpoint:h};await new C9(Y.db,Y.vault).upsert(i)}}catch(y){console.error("[oauth-proxy] failed to persist downstream token:",y)}return new Response(u,{status:b.status,statusText:b.statusText,headers:S})}return new Response(b.body,{status:b.status,statusText:b.statusText,headers:S})},zv8=async($)=>{let Z=$.var.studioContext,Q=Z.auth.user?.id??Z.auth.apiKey?.userId;if(!Q)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((H)=>H.trim()).filter(Boolean):null,G=$.req.query("scope")==="all";if(G&&(!OB(X)||!await jB(Z)))return $.json({error:"forbidden"},403);let W=G?kv0:X;if(G)DO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:X,targetOrgId:"all"});let K=crypto.randomUUID();return nO($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:X,typePatterns:J,connectedAt:new Date().toISOString()})}),!H5.add({id:K,organizationId:W,typePatterns:J?.length?J:null,push:(N,B)=>{H.writeSSE({id:N.id,event:N.type,data:JSON.stringify(G?{...N,organizationId:B}:N)}).catch(()=>{H5.remove(W,K)})}})){await H.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let U=setInterval(()=>{H.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(U),H5.remove(W,K)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),H5.remove(W,K),N()})})})},BC5,OC5,jC5=()=>DC5(h8),wC5=()=>LC5(h8);var Av8=L(()=>{o$();o1();BN$();OT8();zT8();VT8();VZ0();zw1();xT8();C90();R9();zp();r8();U8();Qh0();uT8();SP1();i3();pN();sI1();cQ();y6();J6();JV1();DR8();zR8();fR8();UV1();Zq8();zV1();VV1();kV1();qF();gg0();CV1();Aq8();Yh0();$S8();JS8();GS8();FS8();zS8();xV1();AS8();Of0();AZ0();VS8();Ef0();UC1();CS8();HC1();vS8();mS8();iS8();pS8();tS8();aS8();sS8();X_8();JS1();hV1();W_8();FC1();JC1();LK0();R_8();NJ();Xj0();Yj0();uw1();l40();c40();bP1();q_8();I_8();qV1();x_8();Bx0();f_8();X00();q10();LO();f9();wI1();u_8();d_8();qL0();OS1();hW();_V1();BO();Hz1();qL0();_x0();e71();$Q1();p_8();ew();o_8();Ha();sI1();Xt();Pt();Rx0();Dv8=_(uH(),1);BC5=new UC5,OC5=new Set([iW,dW,vL,xL,Xw,vA])});var Mv8={};J0(Mv8,{resolveClientDir:()=>MC5,resolveAssetPathWithTraversalCheck:()=>qv8,isPathWithinDirectory:()=>Rv8,createAssetHandler:()=>IC5});import{resolve as iQ0,dirname as zC5,join as PC5,extname as AC5,basename as TC5,sep as Tv8}from"path";function RC5($,Z){if($===Z||TC5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${Tv8}assets${Tv8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function Rv8($,Z){let Q=iQ0(Z),X=iQ0($);return X===Q||X.startsWith(Q+"/")}function qv8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,X=iQ0(Z,Q);if(!Rv8(X,Z))return null;return X}function MC5($,Z="../client"){let Q=new URL($),X=zC5(Q.pathname);return iQ0(X,Z)}function IC5($={}){let{env:Z="production",clientDir:Q=qC5,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),W;try{W=decodeURIComponent(G.pathname)}catch{return null}if(X(W))return null;let K=qv8({requestPath:W,clientDir:Q});if(!K)return null;let H=PC5(K,"index.html"),F=iQ0(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(AC5(K))?[H,F]:[];for(let D of[K,...B])try{let O=Bun.file(D);if(await O.exists())return new Response(O,{headers:RC5(D,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var qC5="./dist/client";var Iv8=()=>{};var Vv8={};J0(Vv8,{tryUpgradePreviewWs:()=>xC5,tryHandlePreviewHttp:()=>vC5,previewWebSocketHandler:()=>fC5,parsePreviewBaseDomain:()=>_C5,isPreviewWsData:()=>lu0,extractHandleFromHost:()=>AS1});function CC5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function SC5(){return new Response(kC5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function _C5($){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 AS1($,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 vC5($,Z){let Q=AS1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let X=await Z.getRunner();if(!X)return nQ0(503,"preview proxy not configured");let Y=await X.proxyPreviewRequest(Q,$);if(Y.headers.get(Nn)&&CC5($))return SC5();return Y.headers.delete(Nn),Y}function nQ0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function lu0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function xC5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let X=AS1($.headers.get("host"),Q.baseDomain);if(!X)return null;let Y=await Q.getRunner();if(!Y)return nQ0(503,"preview proxy not configured");let J=await Y.resolvePreviewUpstreamUrl(X);if(!J)return nQ0(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return nQ0(404,"not found");let W=`${J.replace(/^http/,"ws")}${G.pathname}${G.search}`,K=$.headers.get("sec-websocket-protocol"),H=K?K.split(",").map((N)=>N.trim()).filter(Boolean):[],F={kind:"preview",upstreamUrl:W,upstreamProtocols:H,pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:F}))return nQ0(426,"upgrade failed");return}function pQ0($,Z,Q,X){if(Z.closed)return;Z.closed=!0;try{$.close(Q,X)}catch{}try{Z.upstream?.close()}catch{}}var VC5=256,kC5='<!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>',fC5;var kv8=L(()=>{L50();fC5={open($){let Z=$.data;if(!lu0(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)}`),pQ0($,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)=>{pQ0($,Z,X.code||1000,X.reason||"")}),Q.addEventListener("error",()=>{pQ0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!lu0(Q))return;let X=Q.upstream;if(X&&X.readyState===WebSocket.OPEN){X.send(Z);return}if(Q.pending.length>=VC5){pQ0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!lu0(Z))return;pQ0($,Z,1000,"")}}});var eC5={};import{existsSync as cC5}from"fs";function VS1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}function pC5($){let Z=new Headers($.headers);for(let[Q,X]of Object.entries(iC5))Z.set(Q,X);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}async function sC5($){let Z;try{Z=await bC5.create({systemDatabaseUrl:VS1(rG.databaseUrl,rG.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:dW,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:dW}),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 cu0($){if(vv8)return;vv8=!0,console.log(`
5896
+ </head>`)}function lS8($){let Z=new X1;return Z.get("/:domain/og.png",async(Q)=>{let X=xu(Q.req.param("domain")),Y=async()=>{let J=$?Bun.file(uS8($,"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(`${TK({})}/api/v2/public/diagnostics/${encodeURIComponent(X)}/og.png`,{signal:AbortSignal.timeout(SV5)}),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("/:file{.+\\.md}",async(Q)=>{let X=xu(Q.req.param("file").replace(/\.md$/,""));try{let Y=await hS8(X,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(_V5)});if(Y===null)return Q.text("Deco Score not found",404);return Q.body(Y,200,{"Content-Type":"text/markdown; charset=utf-8","Cache-Control":"public, max-age=600, stale-while-revalidate=3600","Access-Control-Allow-Origin":"*"})}catch{return Q.text("Deco Score unavailable",502)}}),Z.get("/:domain",async(Q)=>{let X=Q.req.param("domain"),Y=$?uS8($,"index.html"):null,J=Y?Bun.file(Y):null;if(!J||!await J.exists())return Q.notFound();let G=await J.text();try{let W=await VV5(xu(X)),K=kV5(X,W);return Q.html(CV5(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var IV5=2500,SV5=1e4,_V5=1e4;var mS8=L(()=>{U8();ID();aC1();o1()});function vu0($,Z){return fetch(`${TK({})}${$}`,Z)}async function vV5($,Z){let Q=await _u0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function fV5($){let Z=typeof $==="object"&&$!==null?$:{},Q=typeof Z.domain==="string"?Z.domain.trim():"",X=typeof Z.distinctId==="string"&&Z.distinctId.trim()&&Z.distinctId.length<=200?Z.distinctId.trim():void 0;return{domain:Q,distinctId:X}}var xV5,oO,cS8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},dS8;var iS8=L(()=>{U8();i3();ID();aC1();xV5=new Set(["complete","errored","terminated","unknown"]);oO=new X1;oO.use("*",async($,Z)=>{let Q=await h8.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});oO.use("/link-token/*",cS8);oO.use("/suggest",cS8);oO.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.req.query("lang")?.trim()||void 0;try{return $.json(await vV5(Z,Q))}catch{return $.json({error:"report read failed"},502)}});oO.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let{domain:X,distinctId:Y}=fV5(Q);if(!X)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await vu0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${$z({})}`},body:JSON.stringify({url:X,...J?{email:J}:{},distinct_id:Y})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let W=await G.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});oO.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await vu0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${$z({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let Y=(await Q.json()).status??"unknown",J={done:xV5.has(Y),status:Y};return $.json(J)}catch{return $.json({error:"status failed"},502)}});oO.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await vu0(`/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)}});oO.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await vu0(`/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:[]})}});dS8=oO});var bV5=1048576,rC1;var pS8=L(()=>{U8();JH();o1();dI1();rC1=new X1;rC1.post("/webhook",W9({maxSize:bV5,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=w0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!AT8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=TT8(Q);if(!Y)return $.json({error:"invalid payload"},400);let J=await RT8(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as yV5}from"crypto";function uV5($,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 yV5(Buffer.from(Y),Buffer.from(X))}function lV5($,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 W of Array.isArray(G)?G:[]){let K=W?.number;if(typeof K==="number")J.push(K)}}else if($==="issue_comment"&&Q.issue?.pull_request){let G=Q.issue.number;if(typeof G==="number")J.push(G)}return[...new Set(J)].map((G)=>({repoOwner:Y,repoName:X,number:G}))}function nS8($){let Z=new X1;return Z.post("/webhook",W9({maxSize:gV5,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(!uV5(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"&&!hV5.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"});return q50().then((U)=>U?.markTenantPoolsDirty(`https://github.com/${F}`,H)).catch((U)=>console.warn(`[github-webhook] tenant pool refresh for ${F}@${H} failed: ${U instanceof Error?U.message:String(U)}`)),Q.json({ok:!0})}let W=lV5(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await mV5($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function mV5($,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 W=await Y.getById(G.taskBoardItemId,G.organizationId),K=W?await $.contextFactory()(G.organizationId,W.assignedBy??W.createdBy):null;if(!K)continue;if(await u78(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var gV5=5242880,hV5;var tS8=L(()=>{U8();JH();_G();a7();hV5=new Set(["check_suite","issue_comment"])});import{DBOS as eC1,SchedulerMode as cV5}from"@dbos-inc/dbos-sdk";async function iV5(){try{return await pV5()}catch($){return console.warn(`[sandbox-credential-push] push failed: ${$ instanceof Error?$.message:String($)}`),null}}async function pV5(){if(!R50())return null;let[{RemoteSandboxProvider:$},{SandboxProviderRouter:Z}]=await Promise.all([Promise.resolve().then(() => (BD1(),ND1)),Promise.resolve().then(() => (UD1(),FD1))]),Q=await q50(),X=Q instanceof Z?Q.providers.kubernetes:Q;if(!(X instanceof $))return null;let{db:Y}=Z8(),{sandboxes:J,pools:G}=await X.list(),W=Date.now(),K=Xs$({sandboxes:J,pools:G,records:await Ys$(Y,J,G),legacyPools:CS0(process.env.STUDIO_SANDBOX_TENANT_POOLS),now:W}),{batches:H,failed:F}=await Js$(K,rj0(Y,new oY(w0().encryptionKey)),{now:W,orgFsLifetimeMs:vS0}),U=0,N=0,B=0;for(let D of H)try{let O=await X.pushCredentials(D);U+=O.stored,N+=O.kept}catch(O){B++,console.warn(`[sandbox-credential-push] a push batch failed: ${O instanceof Error?O.message:String(O)}`)}return{sandboxes:J.length,pushed:U,kept:N,refused:K.refused,failed:F+B}}async function nV5($,Z){let Q=await eC1.runStep(iV5,{name:"pushSandboxCredentials"});if(Q&&(Q.refused>0||Q.failed>0))console.warn(`[sandbox-credential-push] ${Q.sandboxes} sandboxes: pushed ${Q.pushed}, kept ${Q.kept}, refused ${Q.refused}, failed ${Q.failed}`)}function oS8(){if(sC1)return;if(!w0().agentSandboxEnabled||!R50())return;sC1=eC1.registerWorkflow(nV5,{name:"sandboxCredentialPushWorkflow"}),eC1.registerScheduled(sC1,{name:"sandboxCredentialPushWorkflow",crontab:dV5,mode:cV5.ExactlyOncePerIntervalWhenActive})}var dV5="1-59/10 * * * *",sC1=null;var aS8=L(()=>{cQ();Bw();eU1();xS0();SS0();_G();o1()});function rS8($){let Z=new bO($.db,new oY($.encryptionKey)),Q=new X1;return Q.get("/attachments/:token",async(X)=>{let Y=n98(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 W=await new BX(J.siteUrl,J.email,J.apiToken).downloadAttachment(Y.attachmentId);if(!W.ok||!W.body)return X.json({error:"Jira refused the download"},502);let K=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=W.headers.get(H);if(F)K.set(H,F)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var sS8=L(()=>{U8();Bw();_j1();DP();i70()});import{DBOS as F2,SchedulerMode as tV5}from"@dbos-inc/dbos-sdk";function eS8($){ZS1=$}function XS1(){if(!ZS1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return ZS1}function YS1(){let $=XS1();return new bO($.db,new oY($.encryptionKey))}async function eV5($){try{let Z=await YS1().getById($);if(!Z?.enabled||!Z.boardId)return{integrationId:$,started:0};let Q=await cF(XS1().db,Z.organizationId);if(!Q)return{integrationId:$,started:0};if((await Q.storage.jiraIntegrations.listAutomations(Z.organizationId)).length===0)return{integrationId:$,started:0};let Y=new BX(Z.siteUrl,Z.email,Z.apiToken),G=`(${await Y.getBoardScopeJql(Z.boardId)}) AND status CHANGED AFTER "-${aV5}m"`,W=0,K;for(let H=0;H<rV5;H++){let F=await Y.searchIssues({jql:G,nextPageToken:K});for(let U of F.issues)if(await sq1(Q,Z,{issueId:U.id,now:Date.now()})==="started")W++;if(K=F.nextPageToken??void 0,!K)break}return{integrationId:$,started:W}}catch(Z){return{integrationId:$,started:0,error:Z instanceof Error?Z.message:String(Z)}}}async function $k5($,Z){let Q=await F2.runStep(()=>YS1().listEnabledIds(),{name:"loadJiraIntegrations"});if(Q.length===0)return;let X=await Promise.all(Q.map((Y)=>F2.runStep(()=>eV5(Y),{name:`sweepJira:${Y}`})));for(let Y of X)if(Y.error)console.warn(`[jira-trigger] integration ${Y.integrationId} failed: ${Y.error}`);else if(Y.started>0)console.log(`[jira-trigger] integration ${Y.integrationId} started ${Y.started} run(s) the webhook missed`)}async function Zk5($,Z){try{let Q=await YS1().getById($);if(!Q?.enabled)return"disabled";let X=await cF(XS1().db,Q.organizationId);if(!X)return"disabled";let Y=await sq1(X,Q,{issueId:Z.issueId,changelogId:Z.changelogId});if(Y==="started")console.log(`[jira-trigger] started a run for ${Z.issueKey} after it settled`);else if(Y==="returned")console.log(`[jira-trigger] ${Z.issueKey} went back where it was before settling in "${Z.toStatus}"; no run`);return Y}catch(Q){return console.error(`[jira-trigger] settling ${Z.issueKey} failed`,Q instanceof Error?Q.message:Q),"error"}}async function Qk5($,Z){await F2.sleep(Ng0()+sV5),await F2.runStep(()=>Zk5($,Z),{name:"settleJiraMove"})}async function $_8($,Z){if(!QS1)throw Error("[jira-trigger] settle workflow is not registered");await F2.startWorkflow(QS1,{workflowID:`jira-settle:${$}:${Z.changelogId}`})($,Z)}function Z_8(){if($S1)return;QS1=F2.registerWorkflow(Qk5,{name:"jiraSettleWorkflow"}),$S1=F2.registerWorkflow($k5,{name:"jiraTriggerSweepWorkflow"}),F2.registerScheduled($S1,{name:"jiraTriggerSweepWorkflow",crontab:oV5,mode:tV5.ExactlyOncePerIntervalWhenActive})}var oV5="*/5 * * * *",aV5=20,rV5=5,sV5=5000,ZS1=null,QS1=null,$S1=null;var JS1=L(()=>{Bw();i70();Yt();DP();aq1();Bg0()});function Q_8($){let Z=new bO($.db,new oY($.encryptionKey));async function Q(Y,J){let G=gE8(J);if(!G)return;let W=await Z.getByWebhookSecret(Y);if(!W?.enabled)return;if((await Z.listAutomations(W.organizationId)).length===0)return;await $_8(W.id,G)}let X=new X1;return X.post("/webhook/:secret",W9({maxSize:Xk5}),async(Y)=>{let J=Y.req.param("secret");if(!await Z.getByWebhookSecret(J))return Y.json({error:"Unknown webhook"},404);let W;try{W=await Y.req.json()}catch{return Y.json({error:"Body must be JSON"},400)}return Q(J,W).catch((K)=>{console.error("[jira-webhook] trigger failed",K)}),Y.body(null,202)}),X}var Xk5=1048576;var X_8=L(()=>{U8();JH();Bw();JS1();Bg0();i70()});function Y_8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var J_8,Yk5,Jk5,G_8;var W_8=L(()=>{U8();GG();Nt();zp();J_8=new X1,Yk5=["range","if-none-match","if-modified-since"],Jk5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];J_8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(go($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new M1(401,{message:"Authentication required"})}if(!Q)throw new M1(401,{message:"Organization context required"});let X=$.req.path.replace(/^.*\/files\//,"");if(!X)throw new M1(400,{message:"Missing file key"});let Y=await $Z0(X,Z);if(!Y)throw new M1(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&MK()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new M1(500,{message:"Invalid data URL from storage"});let[,H,F]=K,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return Y_8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of Yk5){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(Y,{headers:J});if(G.status===403||G.status===404)throw new M1(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 M1(502,{message:"Upstream storage error"});let W=new Headers;for(let K of Jk5){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Y_8(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});G_8=J_8});var dQ0=f((fu)=>{var Gk5=fu&&fu.__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]}),Wk5=fu&&fu.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))Gk5(Z,$,Q)};Object.defineProperty(fu,"__esModule",{value:!0});Wk5(D3(),fu)});var F_8=f((K_8)=>{Object.defineProperty(K_8,"__esModule",{value:!0});K_8.version=void 0;K_8.version="3.4.0"});var B_8=f((pB)=>{var Kk5=pB&&pB.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(pB,"__esModule",{value:!0});pB.NodeTransport=pB.VERSION=void 0;pB.nodeResolveHost=Lk5;var K9=dQ0(),Hk5=L0("net"),GS1=L0("tls"),Fk5=L0("path"),U_8=L0("fs"),Uk5=Kk5(L0("dns")),Nk5=F_8();pB.VERSION=Nk5.version;var Bk5="nats.js";class N_8{socket;version;lang;yields=[];signal=(0,K9.deferred)();closedNotification=(0,K9.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=Bk5,this.version=pB.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,K9.checkOptions)(Y,Z);let{tls_required:J,tls_available:G}=Y,W=G===!0&&Z.tls!==null;if(!X&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw K9.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 K9.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new K9.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,K9.deferred)(),Q,X=(0,Hk5.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,K9.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let X=K9.DataBuffer.concat(...this.yields),Y=(0,K9.extractProtocolMessage)(X);if(Y!=="")try{let J=K9.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,K9.deferred)();try{if($=(0,Fk5.resolve)($),!(0,U_8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,U_8.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 W=await this.loadFile(Z);if(W)$.cert=W}else if(Q)$.cert=Q;if(J){let W=await this.loadFile(J);if(W)$.key=W}else if(G)$.key=G;if(X){let W=await this.loadFile(X);if(W)$.ca=[W]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Q=(0,K9.extend)(Q,this.options.tls,Y)}catch(Y){return Promise.reject(new K9.errors.ConnectionError(Y.message,{cause:Y}))}let X=(0,K9.deferred)();try{let Y=(0,GS1.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 K9.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,K9.extend)(Z,this.options.tls,X)}catch(X){return Promise.reject(new K9.errors.ConnectionError(X.message,{cause:X}))}let Q=(0,K9.deferred)();try{let X=(0,GS1.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 K9.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,K9.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,K9.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 GS1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,K9.render)($)}`);let Z=(0,K9.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,K9.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,K9.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}}pB.NodeTransport=N_8;function Lk5($){let Z=(0,K9.deferred)();return Uk5.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 w_8=f((j_8)=>{Object.defineProperty(j_8,"__esModule",{value:!0});j_8.connect=Dk5;var L_8=B_8(),D_8=dQ0(),O_8=dQ0();function Dk5($={}){if((0,O_8.hasWsProtocol)($))return Promise.reject(O_8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,D_8.setTransportFactory)({factory:()=>{return new L_8.NodeTransport},dnsResolveFn:L_8.nodeResolveHost}),D_8.NatsConnectionImpl.connect($)}});var E_8=f((aO)=>{var jk5=aO&&aO.__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]}),wk5=aO&&aO.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))jk5(Z,$,Q)};Object.defineProperty(aO,"__esModule",{value:!0});aO.connect=void 0;var Ek5=w_8();Object.defineProperty(aO,"connect",{enumerable:!0,get:function(){return Ek5.connect}});wk5(dQ0(),aO)});function T_8($){let Z=$?.connectFn??Tk5,Q=null,X=null,Y=!1,J=!1,G=!1,W=[];function K(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let N of W)try{N()}catch{}}function F(N){(async()=>{for await(let B of N.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),G=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),G=!1,X=null,H()})().catch(()=>{})}async function U(N,B){let D=0;while(!J)try{Q=await Z({servers:N,timeout:Ak5,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${D} attempt(s)`),X=null,G=!1,F(Q),H();return}catch{D++;let O=I7(Pk5,zk5,D-1,2,0.5);await Z$(O)}}return{init(N,B){if(Y)return;Y=!0,J=!1;let D=B?.creds?z_8.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(N,D).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!X)X=A_8.jetstream(Q);return X},onReady(N){if(W.push(N),K())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 Tk5($){return P_8.connect($)}var z_8,P_8,A_8,zk5=100,Pk5=3000,Ak5=3000;var R_8=L(()=>{o$();z_8=_(mA(),1),P_8=_(E_8(),1),A_8=_(uH(),1)});function xu0($){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[W,K]of Y)if(K.expiresAt<=G)Y.delete(W);while(Y.size>Q){let W=Y.keys().next().value;if(W===void 0)break;Y.delete(W)}}return{get(G){let W=Y.get(G);if(!W)return;if(W.expiresAt<=Date.now()){Y.delete(G);return}if(X)Y.delete(G),Y.set(G,W);return W.value},set(G,W){Y.delete(G),Y.set(G,{value:W,expiresAt:Date.now()+Z}),J()},delete(G){Y.delete(G)},clear(){Y.clear()},size(){return Y.size}}}function fu0($,Z){return`${$}.${Z}`}class WS1{cache;constructor($){this.cache=xu0({ttlMs:$?.ttlMs??Rk5,maxSize:$?.maxSize??qk5})}async get($,Z){return this.cache.get(fu0($,Z))??null}async set($,Z,Q){this.cache.set(fu0($,Z),Q)}async invalidate($,Z){this.cache.delete(fu0($,Z)),this.cache.delete(fu0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var Rk5=600000,qk5=5000;var q_8=()=>{};function bu0($,Z){return`${$}:${Z}`}function KS1($){let Z=xu0({ttlMs:$?.ttlMs??Mk5,maxSize:$?.maxSize??Ik5}),Q=$?.getConnection,X=crypto.randomUUID(),Y=new TextEncoder,J=new TextDecoder,G=null;function W(K,H){let F=Q?.();if(!F)return;try{F.publish(M_8,Y.encode(JSON.stringify({organizationId:K,keyId:H,originId:X})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(K,H){return Z.get(bu0(K,H))},set(K,H,F){Z.set(bu0(K,H),F)},invalidate(K,H){Z.delete(bu0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(M_8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===X)continue;Z.delete(bu0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var M_8="studio.ai-provider-keys.invalidate",Mk5=30000,Ik5=5000;var I_8=()=>{};class HS1{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 V_8=($)=>{let Z;return()=>Z??=$()},FS1,US1;var k_8=L(()=>{y6();FS1=V_8(()=>G$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),US1=V_8(()=>G$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function xk5($=__8){return{name:zB,subjects:[`${Qz1}.>`],storage:KU.StorageType.File,max_age:Ck5,max_bytes:_k5,max_msgs_per_subject:vk5,discard:KU.DiscardPolicy.Old,retention:KU.RetentionPolicy.Limits,duplicate_window:Sk5,num_replicas:$}}class v_8{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 C_8($){let Z=S_8.headers();for(let[Q,X]of Object.entries($))Z.set(Q,X);return Z}function gk5($,Z){let Q=0;return{publish(X,Y,J,G){X.publish(Y,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,kk5().add(1,{"org.id":Z??"unknown"}),Q===1||Q%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${Q} total):`,W)})},get errorCount(){return Q}}}function hk5($,Z){return $.info?.cluster?Z:1}function uk5($){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 NS1{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=xk5(Y);try{await X.streams.info(zB),await X.streams.update(zB,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await X.streams.add(J),await X.streams.update(zB,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await X.streams.delete(zB),await X.streams.add(J);else throw G}},Q=await j8(async()=>{let X=this.options.getJetStreamManager?await this.options.getJetStreamManager():await KU.jetstreamManager($),Y=hk5($,__8);try{await Z(X,Y)}catch(J){if(Y<=1||!uk5(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:Tt});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=gk5(Z,X),G=!1,W=()=>{if(G)return;G=!0;let H=gY8(Z);Y.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=Yz1(H,{runId:Z}),N=performance.now()-F;FS1().record(N),US1().add(1,{"org.id":X??"unknown"}),yk5?.record(N,U.reduce((B,D)=>B+D.data.length,0));for(let B of U)J.publish(Y,B.subject,B.data,B.headers?C_8(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:D}=await H.read();if(B)break;if(K(D),U++,++F>=64)F=0,await new Promise((O)=>setImmediate(O))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),bk5)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 j8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:C_8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Tt}),!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=Yz1(Z,{runId:$,dedup:Q});FS1().record(performance.now()-Y),US1().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=yY8({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"?KU.DeliverPolicy.New:KU.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=TP($),W;try{W=await j8(async()=>{return(await X.consumers.get(zB,{filter_subjects:G,deliver_policy:Y})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Tt})}catch(O){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",O?.message??O),null}let F=yx0({messages:async function*(){try{for await(let O of W)yield{subject:O.subject,data:O.data,headers:O.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(vx0()).pipeThrough(xx0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,D=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",D,{once:!0}),new ReadableStream({async pull(O){for(;;){let{done:j,value:w}=await F.read();if(j){D(),O.close();return}let E=w;if(E.kind==="done"){if(J){D(),O.close();return}continue}O.enqueue(E.chunk);return}},cancel(){D()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(zB,{filter:TP($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var KU,S_8,Vk5=($)=>{let Z;return()=>Z??=$()},kk5,Ck5=86400000000000,Sk5=120000000000,_k5=4294967296,__8,vk5=500000,fk5,bk5,yk5;var x_8=L(()=>{o$();Jz1();gx0();fx0();y6();k_8();KU=_(uH(),1),S_8=_(mA(),1),kk5=Vk5(()=>G$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),__8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);fk5=process.env.STREAM_ENCODE_TRACE==="1",bk5=process.env.DECOPILOT_STREAM_TRACE==="1";yk5=fk5?new v_8:null});function yu0($,Z,Q,X){if(!X)return!1;return $.emit(Z,dU(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 f_8=L(()=>{r8()});class BS1{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 lk5($,Z,Q={}){let X=$.startsWith("thread:")?yF($,Q):$;return[...new Set([Z,X].filter((Y)=>!!Y))]}async function LS1($,Z){let Q=Z.organizationId;try{let X=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let Y of X){let J=await HB($,Y);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(Y),W=await ZP($,{threadId:Y,runBranch:G?.branch}),K=await C60($,Q,oU1(J)).catch(()=>null);if(!K){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}let H=lk5(W,await $_0($,Y),{flat:tg(K.repo.provider)});for(let F of H){let U=await K.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:K.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await JW(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 b_8=L(()=>{O7();DY();a7()});async function y_8($,Z,Q){let X=Z.organizationId;if(!IJ(Z))return!1;if(!zh(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,X))return!1;let Y=await $.storage.organizationSettings.get(X),J=tN(Y?.flags),G=await $.storage.taskBoard.update(Z.id,X,{status:J},Z.updatedBy);return await F5($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),A8(X,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var g_8=L(()=>{_4();PY();Gt();dF();f9()});function tk5($){return $ instanceof DJ}function h_8($,Z){return Z-$>=pk5}class DS1{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??mk5;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??dk5,Q=this.options.itemIntervalMs??ck5,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:W}of Y)try{if(await this.reconcileItem(G,W,X))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z),$+=await this.settleFinishedRunsWithoutPr(Z,X)}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()-Mj1),aw1);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()-nk5));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 nw1(this.taskBoard,Y,X),await tw1(this.taskBoard,this.billing,Y,X)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async settleFinishedRunsWithoutPr($,Z){let Q=0,X=await this.taskBoard.listItemsFinishedWithoutPr($,Z);for(let{id:Y,organizationId:J,finishedAt:G}of X)try{if(!await this.taskBoard.claimSweep(Y,J,Z))continue;let W=await this.taskBoard.getById(Y,J);if(!W||W.status!==Y$.progress||IJ(W)||W.assigneeId!==V8)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await LS1(K,W)){if(await this.taskBoard.clearSweepBudget(Y,J),await this.reconcileItem(Y,J,Z))Q++;continue}if(!h_8(G.getTime(),Date.now()))continue;let H="the run finished without opening a pull request \u2014 there is "+"nothing for a reviewer to review",F=await this.taskBoard.advanceToReviewIfInProgress(Y,J,W.updatedBy);if(!F)continue;await this.taskBoard.recordActivity({taskBoardItemId:Y,action:"status_changed",actorId:null,data:{from:Y$.progress,to:Y$.review,reason:H}}).catch(()=>{}),A8(J,F),await iF(K,F,H)}catch(W){console.error(`[task-board-review-sweeper] settling finished run on ${Y} failed`,W)}return Q}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!==Y$.progress||G.assigneeId!==V8)continue;let W=await this.contextFactory(Y,G.assignedBy??G.createdBy);if(!W)continue;await pF(W,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),tk5(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()+ik5)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${X} failed`,W))}return Z}async returnToTodo($,Z,Q){try{let X=await this.taskBoard.getById($,Z);if(!X||X.status!==Y$.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(()=>{}),A8(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(!h_8(lD(Q,Z.reviewCycleStartedAt),Date.now()))return;await iF($,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(!IJ(X))return!1;let Y=X.assigneeId===V8,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 LS1(G,X))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(Y)await this.handOffReviewWithoutPr(G,X);return!1}}let W=await Promise.all(J.map(async(K)=>({...K,...await Ht(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(await y_8(G,X,W))return!0;if(await MJ8(G,X))return!0;if(await this.resolveConflictFromSweep(G,X,W))return!0;if(!Y)return!1;if(!cw1(W))return!1;return await Wt(G,X,{previewMatchesHead:dw1(W)}),!0}async resolveConflictFromSweep($,Z,Q){let X=Q.find((Y)=>Y.state!=="closed"&&Y.conflict===!0);if(!X)return!1;return await EP($,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 mk5=60000,ck5=300000,dk5=50,ik5=60000,pk5=900000,nk5=120000;var u_8=L(()=>{_4();dv0();b_8();wB();NZ0();dF();g_8();f9();vK();rw1();a7();C90();Kt()});import{readdir as ok5,rm as gu0}from"fs/promises";import{join as hu0}from"path";async function uu0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-ak5),Z.setUTCHours(0,0,0,0);let Q=0;try{let X=await bu($);for(let Y of X)if(/^\d{4}$/.test(Y))Q+=await l_8($,Y,Z);else if(!Y.startsWith(".")){let J=hu0($,Y),G=await bu(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await l_8(J,K,Z)}if((await bu(J)).length===0)await gu0(J,{recursive:!0,force:!0})}}catch(X){console.warn("monitoring retention cleanup failed:",X)}return Q}async function l_8($,Z,Q){let X=0,Y=hu0($,Z),J=await bu(Y);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=hu0(Y,W),H=await bu(K);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${W}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=hu0(K,U);await gu0(B,{recursive:!0,force:!0}),X++}}if((await bu(K)).length===0)await gu0(K,{recursive:!0,force:!0})}if((await bu(Y)).length===0)await gu0(Y,{recursive:!0,force:!0});return X}async function bu($){try{return(await ok5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var ak5=30;var OS1=()=>{};import{DBOS as jS1,SchedulerMode as rk5}from"@dbos-inc/dbos-sdk";async function ek5(){let $=[qH(),Im(),kL()],Z=0;for(let Q of $)try{Z+=await uu0(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 $C5($,Z){await jS1.runStep(()=>ek5(),{name:"monitoringRetention"})}function c_8(){if(m_8)return;m_8=!0;let $=jS1.registerWorkflow($C5,{name:"monitoringRetentionWorkflow"});jS1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:sk5,mode:rk5.ExactlyOncePerIntervalWhenActive})}var sk5="23 4 * * *",m_8=!1;var d_8=L(()=>{hW();OS1()});function i_8($){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 LX.create();Y.auth.user={id:Q,role:X.role},Y.organization={id:X.orgId,slug:X.orgSlug,name:X.orgName};let J=await dR($.db,Z,X.role);return Y.boundAuth=bI1({auth:Y.authInstance,headers:new Headers,role:X.role,permissions:J,userId:Q}),Y.access=new IT(Q,void 0,Y.boundAuth,X.role,"self"),wP(Y,{id:X.orgId,slug:X.orgSlug}),Y}}var p_8=L(()=>{YK();pN()});import{EventEmitter as ZC5}from"events";var wS1;var n_8=L(()=>{SA();wS1=new ZC5;wS1.on("request",($)=>{Zw($)})});function t_8(){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=Pa(N.params.name),D=N.params.arguments||{},O=Object.keys(D).map((w)=>Pa(w)),j=O.length>0?O.slice(0,3).join(",")+(O.length>3?"\u2026":""):"";J=`${j9.tool}${B}${j9.dim}(${j})${j9.reset}`}else if(N.method)J=`${j9.dim}${Pa(N.method)}${j9.reset}`}}catch{}}let W=Pa(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";W=`/mcp/${j9.mcp}${Pa(F.slice(0,12))}\u2026${j9.reset}`}else if(Y==="/mcp")W=`${j9.mcp}/mcp${j9.reset}`;else if(Y==="/mcp/registry")W=`${j9.mcp}/mcp/registry${j9.reset}`;let K=XC5(X),H=G?"\u25C0":"\u2190";if(!NH0())console.log(`${j9.dim}${H}${j9.reset} ${K}${X}${j9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=QC5(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";if(!NH0())console.log(`${j9.dim}${D}${j9.reset} ${K}${X}${j9.reset} ${W}${J?` ${J}`:""} ${N}${U}${j9.reset} ${j9.duration}${B}${j9.reset}`);wS1.emit("request",{method:X,path:Pa(Y),status:U,duration:F,timestamp:new Date})}}}var j9,QC5=($)=>{if($>=500)return j9.serverError;if($>=400)return j9.clientError;if($>=300)return j9.redirect;return j9.ok},XC5=($)=>{return j9[$]||j9.reset},Pa=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var o_8=L(()=>{SA();n_8();j9={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 e_8}from"crypto";import{mkdir as YC5,readdir as JC5,rm as a_8,stat as $v8}from"fs/promises";import{join as zS1,relative as GC5}from"path";import{z as K8}from"zod";function Qv8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return zS1(WC5,Z)}function Xv8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function ES1($,Z){let Q=Qv8($),X=Xv8(Z);return zS1(Q,X)}function KC5($,Z,Q,X){let Y=w0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${X}`;return e_8("sha256",Y).update(J).digest("hex")}function s_8($,Z,Q,X,Y){let J=Math.floor(Date.now()/1000)+X,G=KC5(Z,Q,J,Y),W=new URL(`/api/dev-assets/${Z}/${Xv8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",Y),W.toString()}function Yv8($,Z,Q){let X=`${$}:${Z.getTime()}:${Q}`;return`"${e_8("md5","etag").update(X).digest("hex")}"`}async function Jv8($,Z,Q,X,Y){try{let J=await JC5($,{withFileTypes:!0});for(let G of J){let W=zS1($,G.name),H=GC5(Z,W).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 Jv8(W,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 $v8(W);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:Yv8(W,F.mtime,F.size)})}catch{}}}}catch{}}function Gv8($,Z){let X=G0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:K8.object({prefix:K8.string().optional(),maxKeys:K8.number().optional().default(1000),continuationToken:K8.string().optional(),delimiter:K8.string().optional()}),outputSchema:K8.object({objects:K8.array(K8.object({key:K8.string(),size:K8.number(),lastModified:K8.string(),etag:K8.string()})),nextContinuationToken:K8.string().optional(),isTruncated:K8.boolean(),commonPrefixes:K8.array(K8.string()).optional()}),handler:async(Y)=>{let J=Y,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=Qv8(X);await YC5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await Jv8(F,F,G,K,U),U.objects.sort((j,w)=>j.key.localeCompare(w.key));let N=0;if(H){if(N=U.objects.findIndex((j)=>j.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),D=N+W<U.objects.length,O=D?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:D,nextContinuationToken:O,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:K8.object({key:K8.string()}),outputSchema:K8.object({contentType:K8.string().optional(),contentLength:K8.number(),lastModified:K8.string(),etag:K8.string(),metadata:K8.record(K8.string(),K8.string()).optional()}),handler:async(Y)=>{let J=Y,G=ES1(X,J.key),W=await $v8(G);return{contentType:yV1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Yv8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:K8.object({key:K8.string(),expiresIn:K8.number().optional()}),outputSchema:K8.object({url:K8.string(),expiresIn:K8.number()}),handler:async(Y)=>{let J=Y,G=SO(J.expiresIn,r_8);return{url:s_8(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:K8.object({key:K8.string(),expiresIn:K8.number().optional(),contentType:K8.string().optional()}),outputSchema:K8.object({url:K8.string(),expiresIn:K8.number()}),handler:async(Y)=>{let J=Y,G=SO(J.expiresIn,r_8);return{url:s_8(Z,X,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:K8.object({key:K8.string()}),outputSchema:K8.object({success:K8.boolean(),key:K8.string()}),handler:async(Y)=>{let J=Y,G=ES1(X,J.key);try{return await a_8(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:K8.object({keys:K8.array(K8.string()).max(1000)}),outputSchema:K8.object({deleted:K8.array(K8.string()),errors:K8.array(K8.object({key:K8.string(),message:K8.string()}))}),handler:async(Y)=>{let J=Y,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=ES1(X,K);try{await a_8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function PS1($,Z,Q){let X=Gv8(Z,Q),Y=new FE({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:tZ});for(let G of X){let W="shape"in G.inputSchema?G.inputSchema.shape:K8.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:K8.object({}).shape;Y.registerTool(G.name,{description:G.description??"",inputSchema:W,outputSchema:K,annotations:G.annotations,_meta:G._meta},async(H)=>{try{let F=await G.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let J=new FW({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(J),oK(Y,J,$,"mcp:dev-assets")}async function Wv8($,Z,Q,X){let J=Gv8(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 WC5="./data/assets",r_8=3600,Zv8,Kv8;var Hv8=L(()=>{o1();St();U8();ZB0();Ct();XG();_O();Vh0();Zv8=new X1;Zv8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),X=`${Q.protocol}//${Q.host}`;return PS1($.req.raw,Z,X)});Kv8=Zv8});var Fv8={};J0(Fv8,{mountDevRoutes:()=>HC5});function HC5($,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 PS1(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}`,W=X.req.param("toolName");if(!W)return X.json({error:"Missing tool name"},400);let K=await X.req.json(),H=await Wv8(W,K,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",Kv8);let Q=new X1;Q.use("*",GU({mountPath:"/api/dev-assets"})),Q.route("/",Ih0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var Uv8=L(()=>{U8();CV1();Vh0();Hv8()});var Pv8={};J0(Pv8,{watchHandler:()=>zv8,resolveCorsOrigin:()=>wv8,isSsoExemptPath:()=>Ov8,isAllowedOAuthRedirectUri:()=>Ev8,createApp:()=>EC5});import{readFileSync as FC5}from"fs";import{PrometheusSerializer as UC5}from"@opentelemetry/exporter-prometheus";import{DBOS as rO}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as LC5,oAuthProtectedResourceMetadata as DC5}from"better-auth/plugins";async function NC5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,Bv8(Nv8)])}catch{return Z.then((X)=>X.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),Bv8(Nv8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function Bv8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function Ov8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${Nh0}/`)||$.startsWith(`${Gh0}/`)}function jv8($){return $==="local.studio.decocms.com"}function wv8($,{baseUrl:Z,requestOrigin:Q}){let X;try{X=new URL($).hostname}catch{return null}if(X==="localhost"||X==="127.0.0.1")return $;if(jv8(X))return $;let Y=Z??Q;try{if(new URL(Y).origin===$)return $}catch{}return null}function Ev8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"||jv8($.hostname)}async function EC5($={}){let Z=$.database??Z8(),Q=!1;H5.stop().catch((W0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",W0)});let X,Y,J,G,W=new WS1,K,H,F,U=null;if($.disableNats)K=KS1(),X={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},Y=null,J=null,G=new PZ0,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(W0)=>{return(async()=>{let F0=W0.getReader();try{while(!0){let{done:q0}=await F0.read();if(q0)break}}catch{}finally{F0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=T_8();let W0=w0().natsCredsPath,F0;if(W0)try{F0=FC5(W0,"utf8")}catch(L8){console.error(`[app] failed to read NATS_CREDS at ${W0}; connecting anonymously`,L8)}U.init(w0().natsUrls,F0?{creds:F0}:void 0);let q0=qH1()?new KH1({getJetStream:()=>U.getJetStream()}):null;q0?.init().catch(()=>{}),X=q0;let M0=new cH1({getJetStream:()=>U.getJetStream()});M0.init().catch(()=>{}),Y=M0;let U1=new Ah(yw1,{getJetStream:()=>U.getJetStream()}),p$=new Ah(S90,{getJetStream:()=>U.getJetStream()});U1.init().catch(()=>{}),p$.init().catch(()=>{}),J={reads:U1,cards:p$};let e$=new vP1({getJetStream:()=>U.getJetStream()});e$.init().catch(()=>{}),G=e$,K=KS1({getConnection:()=>U.getConnection()}),H=new HS1({getConnection:()=>U.getConnection()}),F=new NS1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),dT8(U),U.onReady(()=>{q0?.init().catch((L8)=>{console.error("[McpListCache] Deferred init failed:",L8)}),M0.init().catch((L8)=>{console.error("[SkillCatalogCache] Deferred init failed:",L8)}),U1.init().catch((L8)=>{console.error("[PrReadCache] Deferred init failed:",L8)}),p$.init().catch((L8)=>{console.error("[PrCardCache] Deferred init failed:",L8)}),e$.init().catch((L8)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",L8)}),K.start(),Lu$(()=>U.getConnection()),F.init().catch((L8)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",L8)})})}if(U2)await U2();HH1(X),iH1(Y),nH1(()=>U?.getConnection()??null),gw1(J),xP1(G);let B={storage:new Ac(Z.db),sseHub:H5,onThreadFinished:async(W0,F0)=>Ut(new YW(Z.db),W0,F0,new A3(Z.db))},D=new ME1(B),O=new m70(Z.db),j=new BS1(O);j.start(),RJ8(H),H.start((W0)=>{Tx0(W0),D.execute({type:"CANCEL",taskId:W0}).catch((F0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",F0)})}).catch((W0)=>{console.error("[Decopilot] CancelBroadcast start failed:",W0)}),U?.onReady(()=>{H.start().catch((W0)=>{console.error("[CancelBroadcast] Deferred start failed:",W0)})});let w=()=>U?.getConnection()??null;RV1(w),U?.onReady(()=>RV1(w)),L21(w),U?.onReady(()=>L21(w)),F.init().catch((W0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",W0)}),U2=async()=>{await D.stopAll(),D.dispose(),j.dispose(),H.stop().catch(()=>{}),Nq8(),F.teardown(),X?.teardown(),Y?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),Du$(),G.teardown(),HH1(null),iH1(null),nH1(null),gw1(null),xP1(null)};let E=new X1;if(E.use("*",CP1({enabled:(W0)=>yo(W0,"debug")==="1"})),E.use("*",fe0),E.use("/*",hT8({origin:(W0,F0)=>wv8(W0,{baseUrl:w0().baseUrl,requestOrigin:new URL(F0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),E.use("*",async(W0,F0)=>{if(await F0(),W0.req.path.includes("/files/"))return;if(W0.req.path.includes("/fs/")&&W0.req.path.endsWith("/read"))return;W0.header("X-Frame-Options","DENY"),W0.header("Content-Security-Policy","frame-ancestors 'none'")}),!w0().noTui)E.use("*",t_8());E.use("*",async(W0,F0)=>{if(await F0(),Ss(W0.req.path))return;if(W0.res.status>=500){let M0=await W0.res.clone().text();console.error(`[5xx Response] ${W0.req.method} ${W0.req.path} - ${W0.res.status}:`,M0)}}),E.get(mY.HEALTH,(W0)=>{if(Q)return W0.json({status:"shutting_down"},503);return W0.json({status:"ok"})}),E.get(mY.HEALTH_LIVE,(W0)=>{return W0.json({status:"ok"})}),E.get(mY.HEALTH_READY,async(W0)=>{if(Q)return W0.json({status:"shutting_down"},503);let F0={};if(F0.postgres={status:await NC5(Z.pool)?"up":"down"},U)F0.nats=U.isConnected()?{status:"up"}:{status:"down"};else F0.nats={status:"down"};let q0=F0.postgres.status==="up",M0=q0?200:503;return W0.json({status:q0?"ready":"not_ready",services:F0},M0)}),E.get(mY.METRICS,async(W0)=>{try{let F0=await he0.collect(),q0=BC5.serialize(F0.resourceMetrics);return W0.text(q0,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(F0){return console.error("Failed to collect metrics:",F0),W0.text("# Error collecting metrics",500)}});let z=1800000;E.get(`${mY.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(W0)=>{let F0=W0.req.param("queueName");if(!OC5.has(F0))return W0.json({error:`Unknown queue: ${F0}`},404);let[q0,M0]=await Promise.all([rO.listQueuedWorkflows({queueName:F0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),rO.listQueuedWorkflows({queueName:F0,status:"PENDING",loadInput:!1,loadOutput:!1,dequeuedAfter:new Date(Date.now()-z).toISOString()})]);return W0.json({queue_length:q0.length,in_flight:M0.length})}),E.route("/api/config",_S8),E.route("/api/_reports",dS8),E.route("/api/_stripe",rC1),E.route("/api/_github",nS8({taskBoard:()=>h,contextFactory:()=>y})),E.route("/api/_git",po);let T={db:Z.db,encryptionKey:w0().encryptionKey};E.route("/api/_jira",Q_8(T)),E.route("/api/_jira",rS8(T)),E.route("/report",lS8($.clientDir)),E.route("/api/auth/custom",FR8),E.route("/api/auth/desktop",LR8),E.all("/api/auth/admin/*",eR8),E.all("/api/auth/*",async(W0)=>{return await h8.handler(W0.req.raw)});let P=BA8();P.use("/.well-known/oauth-protected-resource/mcp/:connectionId",QQ0),P.use("/mcp/:connectionId/.well-known/oauth-protected-resource",QQ0),E.route("/",P),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",u70),E.route("/",wA8()),E.use("/oauth-proxy/:connectionId/*",QQ0),E.all("/oauth-proxy/:connectionId/*",Lv8);let A=async(W0)=>{let q0=await jC5()(W0.req.raw),M0=await q0.json();return Response.json(M0,q0)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",QQ0),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let q=async(W0)=>{let q0=await wC5()(W0.req.raw),M0=await q0.json();return Response.json(M0,q0)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",q);let b=lT8({ttlMs:120000}),S=await NT8({db:Z.db,auth:h8,encryption:{key:w0().encryptionKey},observability:{tracer:pj,meter:G$},modelListCache:W,providerKeyCache:K,memberRoleCache:b});LX.set(S),FN$({db:Z.db,baseUrl:r5()}),BT8({db:Z.db}),jT8({db:Z.db}),qT8({db:Z.db}),eS8({db:Z.db,encryptionKey:w0().encryptionKey}),aZ8({db:Z.db}),ST8({db:Z.db}),M78({db:Z.db});let V=cU0(Z.db),u=new z10(Z.db),y=i_8({db:Z.db});MP1({storage:V,studioContextFactory:y}),wz1({systemDatabaseUrl:wK0(w0().databaseUrl,w0().databasePgSsl),studioContextFactory:y,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:H5}}),Uz1({dispatchRunFn:CY8,studioContextFactory:y,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:H5}});let l=new Ac(Z.db),h=new YW(Z.db),i=new A3(Z.db),K0=new DS1(h,y,i);if(w0().taskBoardReviewSweeperEnabled){K0.start();let W0=U2;U2=async()=>{await W0?.(),K0.dispose()}}rY8({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let W0=U?.getConnection();return W0?await Dv8.jetstreamManager(W0):null},messageParts:l.messageParts(),resolveRun:async(W0)=>{let F0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",W0).executeTakeFirst();return F0?{orgId:F0.organization_id,createdBy:F0.created_by,version:F0.message_storage_version??1,status:F0.status,runFenceToken:F0.run_fence_token,title:F0.title??null}:null},completeRunIfNotCompleted:async(W0,F0)=>{let q0=await l.completeRunIfNotCompleted(W0,F0);if(yu0(H5,F0,W0,q0),q0)await Ut(h,W0,F0,i);return q0},markRunRequiresAction:async(W0,F0)=>{let q0=await l.requiresActionIfInProgress(W0,F0);return yu0(H5,F0,W0,q0),q0},markRunFailed:async(W0,F0,q0,M0)=>{let U1=await l.markRunFailed(W0,F0,q0,M0);if(yu0(H5,F0,W0,U1),U1)await Ut(h,W0,F0,i);return U1},clearSynthesizedError:async(W0,F0)=>{await l.messageParts().replaceMessageParts(W0,AP(W0,F0),[])},persistTitle:(W0,F0,q0)=>l.update(W0,F0,{title:q0}),onTitleUpdated:async({runId:W0,orgId:F0,title:q0})=>{let M0=await l.get(W0,F0).catch(()=>null);H5.emit(F0,dU(W0,M0?.status??"in_progress",{title:q0,virtualMcpId:M0?.virtual_mcp_id??void 0,createdBy:M0?.created_by,triggerId:M0?.trigger_id,branch:M0?.branch??null,harnessId:M0?.harness_id??void 0,createdAt:M0?.created_at,updatedAt:M0?.updated_at}))},bumpProgress:async({runId:W0,orgId:F0})=>{await l.bumpProgress(W0,F0)},recordCompleted:async({runId:W0,orgId:F0,distinctId:q0,usage:M0})=>{h1.capture({distinctId:q0,event:"chat_message_completed",groups:{organization:F0},properties:{organization_id:F0,thread_id:W0,transport:"projector",input_tokens:M0.inputTokens,output_tokens:M0.outputTokens,total_tokens:M0.totalTokens}})},recordFailed:async({runId:W0,orgId:F0,distinctId:q0,reason:M0,kind:U1})=>{h1.capture({distinctId:q0,event:"chat_message_failed",groups:{organization:F0},properties:{organization_id:F0,thread_id:W0,transport:"projector",error_category:U1,error_message:M0}})},purgeRun:async(W0)=>{F.purge(W0)}}),QY8({studioContextFactory:y,systemDatabaseUrl:wK0(w0().databaseUrl,w0().databasePgSsl),streamBuffer:F}),c_8(),UN$(),DT8(),ET8(),IT8(),Z_8(),Z78(),vT8(),I78(),oS8();let R0=async(W0,F0,q0)=>{let M0=await V.findById(W0,F0);if(!M0)throw Error("Automation not found");return kP1({automationId:M0.id,organizationId:M0.organization_id,triggerId:null})},X0=new co(V,({automation:W0,trigger:F0,contextMessages:q0,idempotencyKey:M0})=>zZ0({automationId:W0.id,organizationId:W0.organization_id,triggerId:F0.id,contextMessages:q0},{idempotencyKey:M0})),N0=[qH(),Im(),kL()];for(let W0 of N0)uu0(W0).then(()=>{}).catch((F0)=>console.error("[monitoring] Retention cleanup failed:",F0));let n=()=>h8.api.deleteAllExpiredApiKeys().catch((W0)=>console.error("[auth] Expired API key cleanup failed:",W0));n(),setInterval(n,86400000).unref(),E.use("*",async(W0,F0)=>{if(ve0(W0.req.path))return F0();let q0={measure:async(U1,p$)=>{tK(W0,U1);try{return await p$()}finally{UW(W0,U1)}}},M0=await LX.create(W0.req.raw,{timings:q0});M0.automationRunner=R0,W0.set("studioContext",M0);try{await F0()}finally{let U1=M0.pendingRevalidations;if(U1.length>0)Promise.race([Promise.allSettled(U1),Z$(30000)]).catch((e$)=>console.error("[studio] revalidation cleanup error:",e$))}}),E.use("/api/:org/decopilot/*",ho),E.use("/api/:org/v1/*",ho),E.use("/api/:org/files/*",ho),E.use("*",async(W0,F0)=>{if(Ov8(W0.req.path))return F0();let q0=W0.get("studioContext");if(!q0?.organization?.id||!q0?.auth?.user?.id)return F0();if(!(await q0.storage.orgSsoConfig.getByOrgId(q0.organization.id))?.enforced)return F0();if(!await q0.storage.orgSsoSessions.isValid(q0.auth.user.id,q0.organization.id))return W0.json({error:"SSO authentication required for this organization"},403);return F0()});let o=new X1;o.use("*",GU({mountPath:"/api/org-sso"})),o.route("/",Dh0()),E.route("/api/org-sso",o),E.get("/api/tools/management",(W0)=>{return W0.json({tools:M10,grouped:MT()})}),E.use("/mcp/*",async(W0,F0)=>{tK(W0,"mcp");try{return await F0()}finally{UW(W0,"mcp")}});let r=async(W0,F0)=>{let q0=W0.var.studioContext;if(!q0.auth.user?.id&&!q0.auth.apiKey?.id){let M0=new URL(W0.req.url),U1=W0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),p$=U1?`${U1}://${M0.host}`:M0.origin;return W0.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${p$}${M0.pathname}/.well-known/oauth-protected-resource"`}})}return await F0()};if(E.use("/mcp/:connectionId?",r),E.use("/mcp/gateway/:virtualMcpId?",r),E.use("/mcp/virtual-mcp/:virtualMcpId?",r),E.use("/mcp/self",r),MK()){let{mountDevRoutes:W0}=(Uv8(),tu0(Fv8));W0(E,r)}let Z0=new X1;Z0.use("*",GU({mountPath:"/mcp"})),Z0.route("/",Df0()),E.route("/mcp",Z0);let Y0=new X1;Y0.use("*",GU({mountPath:"/mcp/self"})),Y0.route("/",Ju0()),E.route("/mcp/self",Y0);let u0=new X1;u0.use("*",GU({mountPath:"/mcp"})),u0.route("/",wf0()),E.route("/mcp",u0),E.use("/api/:org/models/*",async(W0,F0)=>{tK(W0,"llm_models");try{return await F0()}finally{UW(W0,"llm_models")}});let C0=Eq8({cancelBroadcast:H,streamBuffer:F,runRegistry:D});E.route("/api",C0),E.route("/api",G_8);let K1=new X1;K1.use("*",GU({mountPath:"/api"})),K1.route("/",Hu0()),E.route("/api",K1),E.route("/api",IS8);let d0=new X1;d0.use("*",GU({mountPath:"/api"})),d0.route("/",Fu0({tokenStorage:u,automationEventDispatcher:X0})),E.route("/api",d0);let E0=new A10(Z.db),P0=new X1;P0.use("*",GU({mountPath:"/api"})),P0.route("/",Ph0()),E.route("/api",P0),E.route("/api/deco-sites",xq8()),E.route("/api/deco-apps",PS8());let o0=new X1;o0.use("*",GU({mountPath:"/api/deco-sites"})),o0.route("/",Th0()),E.route("/api/deco-sites",o0),E.route(Nh0,$q8()),E.route(Nk8,Dk8()),E.route("/api/_editor-resolve",kS8()),E.route(wR8,ER8()),E.route(Gh0,xR8());let L1=w0(),r0=L1.elevenlabsApiKey?new ku0({apiKey:L1.elevenlabsApiKey,model:L1.elevenlabsVoiceModel,conversationModel:L1.elevenlabsConversationModel,voiceId:L1.elevenlabsVoiceId}):null,f0={openai:L1.openaiLiveApiKey?new cC1({apiKey:L1.openaiLiveApiKey,voice:L1.openaiLiveVoice}):null,elevenlabs:r0?new mC1(r0,()=>U?.getConnection()??null):null},p0=new tC1({adapter:r0,conversationAdapters:f0,defaults:L1,secret:L1.studioJwtSecret??L1.betterAuthSecret,getConnection:()=>U?.getConnection()??null}),n0=eC8({voiceSessions:p0,kvStorage:E0,runRegistry:D,streamBuffer:F,sseHub:H5,cancelBroadcast:H,tokenStorage:u,automationEventDispatcher:X0,mountDevAssets:MK(),mcpAuth:r,oauthProxyHandler:Lv8,watchHandler:zv8,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",n0),E.notFound((W0)=>{return W0.json({error:"Not Found",path:W0.req.path},404)}),E.onError(Pq8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([H5.stop(),U2?Promise.resolve(U2()).finally(()=>{U2=null}):Promise.resolve()]),U)await U.drain().catch((W0)=>console.error("[shutdown] NATS drain error:",W0));console.log("[shutdown] Flushing telemetry..."),await iJ().catch((W0)=>console.error("[shutdown] Telemetry flush error:",W0)),console.log("[shutdown] Closing database..."),await oj(Z).catch((W0)=>console.error("[shutdown] Database close error:",W0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await rO.registerQueue(iW,{partitionQueue:!0,concurrency:TP1,minPollingIntervalMs:RP1}),await rO.registerQueue(dW,{partitionQueue:!0,concurrency:Oz1,priorityEnabled:!0}),await rO.registerQueue(vL,{workerConcurrency:w0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await rO.registerQueue(xL,{workerConcurrency:w0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await rO.registerQueue(Xw,{partitionQueue:!0,concurrency:ZY8}),await rO.registerQueue(vA,q78),await SV1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((W0)=>rO.deleteQueue(W0))),await qP1(Z.pool),zC$().catch((W0)=>{console.error("[studio-pack-backfill] failed:",W0)}),NN$().catch((W0)=>{console.error("[org-fs] public-sets boot sync kick failed:",W0)})}})}var Dv8,Nv8=5000,U2=null,Lv8=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 LX.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 u=await $.req.json().catch(()=>({}));return $.json({...typeof u==="object"&&u!==null?u:{},client_id:G.oauth_config.clientId,...G.oauth_config.clientSecret?{client_secret:G.oauth_config.clientSecret}:{},client_secret_expires_at:0})}let W=await vo(G.connection_url),K,H=new URL(G.connection_url),U=(typeof G.metadata?.oauthResource==="string"&&G.metadata.oauthResource.length>0?G.metadata.oauthResource:void 0)??G.connection_url;if(W.ok)K=(await W.json()).authorization_servers?.[0];if(!K)K=H.origin;let N=await l70(K);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),D;if(X==="authorize")D=B.authorization_endpoint;else if(X==="token")D=B.token_endpoint;else if(X==="register")D=B.registration_endpoint;if(!D)return $.json({error:`Unknown OAuth endpoint: ${X}`},404);let O=jA8(D);if(O)return O;let j=new URL(D),w=new URL($.req.url);if(j.search=w.search,X==="authorize"){let u=j.searchParams.get("redirect_uri");if(u){let y=w0().baseUrl??w.origin;try{if(!Ev8(new URL(u),y))return $.json({error:"invalid_request",error_description:"redirect_uri is not allowed"},400)}catch{return $.json({error:"invalid_request",error_description:"redirect_uri is malformed"},400)}j.searchParams.set("redirect_uri",u)}if(j.searchParams.has("resource"))j.searchParams.set("resource",U);if(fT8(G.connection_url))j.searchParams.set("auto_personal","true"),j.searchParams.set("force_new","true");return $.redirect(j.toString(),302)}let E={Accept:$.req.header("Accept")||"application/json"},z=$.req.header("Content-Type");if(z)E["Content-Type"]=z;let T=$.req.header("Authorization");if(T)E.Authorization=T;let P,A=null,q=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(X==="token"&&z?.includes("application/x-www-form-urlencoded")){if(T?.toLowerCase().startsWith("basic "))try{let i=atob(T.slice(6).trim()),K0=i.indexOf(":");if(K0!==-1){let R0=decodeURIComponent(i.slice(0,K0)),X0=decodeURIComponent(i.slice(K0+1));A=R0||null,q=X0||null}}catch{}let u=await $.req.formData();if(u.has("resource"))u.set("resource",U);let y=u.get("client_id"),l=u.get("client_secret");if(typeof y==="string"&&y)A=y;if(typeof l==="string"&&l)q=l;let h=new URLSearchParams;for(let[i,K0]of u.entries())h.append(i,K0.toString());P=h.toString()}else if(X==="register"&&z?.toLowerCase().includes("application/json")){let u=await Y.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",G.organization_id).executeTakeFirst(),y=await $.req.text(),l={};try{l=y?JSON.parse(y):{}}catch{P=y}let h=typeof l==="object"&&l!==null&&!Array.isArray(l);if(P===void 0&&!h)P=y;if(P===void 0){let i=l,K0=i.metadata&&typeof i.metadata==="object"?i.metadata:{};i.metadata={...K0,organization_id:G.organization_id,...u?.slug?{organization_slug:u.slug}:{},...u?.name?{organization_name:u.name}:{}},P=JSON.stringify(i),E["Content-Type"]="application/json"}}else P=$.req.raw.body??void 0;let b=await fetch(j.toString(),{method:$.req.method,headers:E,body:P,duplex:"half",redirect:"manual"}),S=new Headers,V=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[u,y]of b.headers.entries())if(!V.includes(u.toLowerCase()))S.set(u,y);if(X==="token"&&b.ok){let u=await b.text();try{let y=JSON.parse(u);if(typeof y.access_token==="string"&&y.access_token){let l=typeof y.expires_in==="number"?new Date(Date.now()+y.expires_in*1000):null,h=null;try{h=await xo(G.connection_url)??D}catch{h=D}let i={connectionId:Z,accessToken:y.access_token,refreshToken:typeof y.refresh_token==="string"?y.refresh_token:null,scope:typeof y.scope==="string"?y.scope:null,expiresAt:l,clientId:A,clientSecret:q,tokenEndpoint:h};await new C9(Y.db,Y.vault).upsert(i)}}catch(y){console.error("[oauth-proxy] failed to persist downstream token:",y)}return new Response(u,{status:b.status,statusText:b.statusText,headers:S})}return new Response(b.body,{status:b.status,statusText:b.statusText,headers:S})},zv8=async($)=>{let Z=$.var.studioContext,Q=Z.auth.user?.id??Z.auth.apiKey?.userId;if(!Q)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((H)=>H.trim()).filter(Boolean):null,G=$.req.query("scope")==="all";if(G&&(!OB(X)||!await jB(Z)))return $.json({error:"forbidden"},403);let W=G?kv0:X;if(G)DO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:X,targetOrgId:"all"});let K=crypto.randomUUID();return nO($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:X,typePatterns:J,connectedAt:new Date().toISOString()})}),!H5.add({id:K,organizationId:W,typePatterns:J?.length?J:null,push:(N,B)=>{H.writeSSE({id:N.id,event:N.type,data:JSON.stringify(G?{...N,organizationId:B}:N)}).catch(()=>{H5.remove(W,K)})}})){await H.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let U=setInterval(()=>{H.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(U),H5.remove(W,K)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),H5.remove(W,K),N()})})})},BC5,OC5,jC5=()=>DC5(h8),wC5=()=>LC5(h8);var Av8=L(()=>{o$();o1();BN$();OT8();zT8();VT8();VZ0();zw1();xT8();C90();R9();zp();r8();U8();Qh0();uT8();SP1();i3();pN();sI1();cQ();y6();J6();JV1();DR8();zR8();fR8();UV1();Zq8();zV1();VV1();kV1();qF();gg0();CV1();Aq8();Yh0();$S8();JS8();GS8();FS8();zS8();xV1();AS8();Of0();AZ0();VS8();Ef0();UC1();CS8();HC1();vS8();mS8();iS8();pS8();tS8();aS8();sS8();X_8();JS1();hV1();W_8();FC1();JC1();LK0();R_8();NJ();Xj0();Yj0();uw1();l40();c40();bP1();q_8();I_8();qV1();x_8();Bx0();f_8();X00();q10();LO();f9();wI1();u_8();d_8();qL0();OS1();hW();_V1();BO();Hz1();qL0();_x0();e71();$Q1();p_8();ew();o_8();Ha();sI1();Xt();Pt();Rx0();Dv8=_(uH(),1);BC5=new UC5,OC5=new Set([iW,dW,vL,xL,Xw,vA])});var Mv8={};J0(Mv8,{resolveClientDir:()=>MC5,resolveAssetPathWithTraversalCheck:()=>qv8,isPathWithinDirectory:()=>Rv8,createAssetHandler:()=>IC5});import{resolve as iQ0,dirname as zC5,join as PC5,extname as AC5,basename as TC5,sep as Tv8}from"path";function RC5($,Z){if($===Z||TC5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${Tv8}assets${Tv8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function Rv8($,Z){let Q=iQ0(Z),X=iQ0($);return X===Q||X.startsWith(Q+"/")}function qv8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,X=iQ0(Z,Q);if(!Rv8(X,Z))return null;return X}function MC5($,Z="../client"){let Q=new URL($),X=zC5(Q.pathname);return iQ0(X,Z)}function IC5($={}){let{env:Z="production",clientDir:Q=qC5,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),W;try{W=decodeURIComponent(G.pathname)}catch{return null}if(X(W))return null;let K=qv8({requestPath:W,clientDir:Q});if(!K)return null;let H=PC5(K,"index.html"),F=iQ0(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(AC5(K))?[H,F]:[];for(let D of[K,...B])try{let O=Bun.file(D);if(await O.exists())return new Response(O,{headers:RC5(D,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var qC5="./dist/client";var Iv8=()=>{};var Vv8={};J0(Vv8,{tryUpgradePreviewWs:()=>xC5,tryHandlePreviewHttp:()=>vC5,previewWebSocketHandler:()=>fC5,parsePreviewBaseDomain:()=>_C5,isPreviewWsData:()=>lu0,extractHandleFromHost:()=>AS1});function CC5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function SC5(){return new Response(kC5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function _C5($){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 AS1($,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 vC5($,Z){let Q=AS1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let X=await Z.getRunner();if(!X)return nQ0(503,"preview proxy not configured");let Y=await X.proxyPreviewRequest(Q,$);if(Y.headers.get(Nn)&&CC5($))return SC5();return Y.headers.delete(Nn),Y}function nQ0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function lu0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function xC5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let X=AS1($.headers.get("host"),Q.baseDomain);if(!X)return null;let Y=await Q.getRunner();if(!Y)return nQ0(503,"preview proxy not configured");let J=await Y.resolvePreviewUpstreamUrl(X);if(!J)return nQ0(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return nQ0(404,"not found");let W=`${J.replace(/^http/,"ws")}${G.pathname}${G.search}`,K=$.headers.get("sec-websocket-protocol"),H=K?K.split(",").map((N)=>N.trim()).filter(Boolean):[],F={kind:"preview",upstreamUrl:W,upstreamProtocols:H,pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:F}))return nQ0(426,"upgrade failed");return}function pQ0($,Z,Q,X){if(Z.closed)return;Z.closed=!0;try{$.close(Q,X)}catch{}try{Z.upstream?.close()}catch{}}var VC5=256,kC5='<!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>',fC5;var kv8=L(()=>{L50();fC5={open($){let Z=$.data;if(!lu0(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)}`),pQ0($,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)=>{pQ0($,Z,X.code||1000,X.reason||"")}),Q.addEventListener("error",()=>{pQ0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!lu0(Q))return;let X=Q.upstream;if(X&&X.readyState===WebSocket.OPEN){X.send(Z);return}if(Q.pending.length>=VC5){pQ0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!lu0(Z))return;pQ0($,Z,1000,"")}}});var eC5={};import{existsSync as cC5}from"fs";function VS1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}function pC5($){let Z=new Headers($.headers);for(let[Q,X]of Object.entries(iC5))Z.set(Q,X);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}async function sC5($){let Z;try{Z=await bC5.create({systemDatabaseUrl:VS1(rG.databaseUrl,rG.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:dW,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:dW}),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 cu0($){if(vv8)return;vv8=!0,console.log(`
5897
5897
  [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{rC5(),mu0.markShuttingDown();let J=jx1(rG.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await Z$(J),await aC5.stop(!0);let G=tQ0.executorID;await tQ0.shutdown(),await sC5(G),await mu0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),Y=1}clearTimeout(X),process.exit(Y)}var rG,tQ0,bC5,yC5,gC5,hC5,uC5,lC5,xv8,mC5,Cv8,fv8,dC5,iC5,nC5,tC5,oC5,TS1,RS1,bv8,yv8,Sv8,mu0,qS1,_v8,MS1=5,IS1=0,aC5,rC5,vv8=!1;var gv8=L(async()=>{o$();yW$();uW$();o1();jl();y6();nW$();rG=w0();tQ$();({DBOS:tQ0,DBOSClient:bC5}=await import("@dbos-inc/dbos-sdk"));yC5=[iW,dW,vL,xL,Xw,vA],gC5=rG.dispatchRole==="worker"?yC5:rG.dispatchRole==="api"?[]:void 0;tQ0.setConfig(bW$({systemDatabaseUrl:VS1(rG.databaseUrl,rG.databasePgSsl),poolSize:rG.dbosPoolSize,executorID:rG.podName,listenQueues:gC5}));({createApp:hC5}=await Promise.resolve().then(() => (Av8(),Pv8))),{isServerPath:uC5}=await Promise.resolve().then(() => (LK0(),SQ$)),{createAssetHandler:lC5,resolveClientDir:xv8}=await Promise.resolve().then(() => (Iv8(),Mv8)),mC5=rG.port,Cv8=xv8(import.meta.url,"../client"),fv8=cC5(Cv8)?Cv8:xv8(import.meta.url,"../dist/client"),dC5=lC5({clientDir:fv8,isServerPath:uC5}),iC5={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};({parsePreviewBaseDomain:nC5,tryHandlePreviewHttp:tC5,tryUpgradePreviewWs:oC5,previewWebSocketHandler:TS1,isPreviewWsData:RS1}=await Promise.resolve().then(() => (kv8(),Vv8))),{getOrInitSharedRunner:bv8}=await Promise.resolve().then(() => (_G(),Oe$)),yv8=nC5(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),Sv8={baseDomain:yv8??"",getRunner:bv8};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())bv8().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});mu0=await hC5({clientDir:fv8}),qS1=process.env.DBOS_CONDUCTOR_KEY?.trim(),_v8=process.env.DBOS_CONDUCTOR_URL?.trim();await hW$({databaseUrl:VS1(rG.databaseUrl,rG.databasePgSsl)},()=>tQ0.launch({...qS1?{conductorKey:qS1}:{},...qS1&&_v8?{conductorURL:_v8}:{}}));console.log(`[dbos] application version: ${tQ0.applicationVersion}`);await j8(async()=>{IS1++;try{return await mu0.initDbos()}catch($){let Z=IS1>=MS1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${IS1}/${MS1} failed, ${Z}`,$),$}},{maxAttempts:MS1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});if(!rG.isCli){let{bannerLines:$}=await Promise.resolve().then(() => (ps(),xK0));console.log("");for(let Z of $())console.log(Z)}aC5=Bun.serve({idleTimeout:0,port:mC5,hostname:"0.0.0.0",fetch:async($,Z)=>{if(yv8){let X=await oC5($,Z,Sv8);if(X===void 0)return;if(X)return X;let Y=await tC5($,Sv8);if(Y)return Y}let Q=await dC5($);if(Q)return pC5(Q);return mu0.fetch($,{server:Z})},websocket:{open($){if(RS1($.data))TS1.open($)},message($,Z){if(RS1($.data))TS1.message($,Z)},close($){if(RS1($.data))TS1.close($)}},development:!1}),rC5=pW$();if(rG.localMode)Promise.resolve().then(() => (qh(),Wx0)).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(() => (qh(),Wx0));Z()}catch{}});process.on("SIGTERM",()=>cu0("SIGTERM"));process.on("SIGINT",()=>cu0("SIGINT"));process.on("SIGHUP",()=>cu0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),cu0("uncaughtException")})});var kS1={};J0(kS1,{startServer:()=>ZS5,interceptConsoleForTui:()=>$S5});function $S5(){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(`
5898
5898
  `)){let W=Bun.stripANSI(G).trim();if(!W)continue;Zw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}}return console.log=X,console.warn=X,console.error=X,UH0(!0),()=>{console.log=$,console.warn=Z,console.error=Q,UH0(!1)}}async function ZS5($){let Z=await Ne(Number($.port)),{settings:Q,services:X}=await FH0({port:String(Z),home:$.home,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui});for(let Y of X)CA({name:Y.name,status:"ready",port:Y.port});Fe(),await gv8().then(() => eC5),Ue(`http://localhost:${Q.port}`)}var CS1=L(()=>{Y61();SA();K61()});import{parseArgs as QS5}from"util";import{homedir as SS1}from"os";import{join as uv8}from"path";function ou0($){if($.noTui)return!1;return $.isTty===!0}function ka($,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:w6,positionals:N2}=QS5({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"},method:{type:"string",short:"X"},data:{type:"string",short:"d"},header:{type:"string",short:"H",multiple:!0},json:{type:"boolean",default:!1}},allowPositionals:!0});try{ka("port",w6.port,65535),ka("vite-port",w6["vite-port"],65535)}catch($){console.error($.message),process.exit(1)}if(w6.help)console.log(`
5899
5899
  Deco CMS \u2014 Open-source control plane for your AI agents