decocms 4.186.5 → 4.187.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/dist/client/assets/{AlertCircle-BuFhkPjW.js → AlertCircle-KczI-CU4.js} +1 -1
  2. package/dist/client/assets/{AreaChart-tMFvaLFr.js → AreaChart-C4ImOsI6.js} +1 -1
  3. package/dist/client/assets/{ArrowUp-Dpr3PXpY.js → ArrowUp-Puvp0Fyx.js} +1 -1
  4. package/dist/client/assets/{ArrowUpRight-FeXz1-eP.js → ArrowUpRight-BGg5iVdX.js} +1 -1
  5. package/dist/client/assets/{Check-C6iuqeCa.js → Check-Dhoc1Lst.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-DuosICoI.js → CheckCircle-BPyDMGsL.js} +1 -1
  7. package/dist/client/assets/{ChevronDown-BtmIMCYI.js → ChevronDown-BoW3EdNl.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-CcIYds1f.js → ChevronRight-DGgdWB7Q.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-DnpGaTD4.js → ChevronUp-BfmqQ3El.js} +1 -1
  10. package/dist/client/assets/{Copy01-BjkMuSop.js → Copy01-DN3Xx-wy.js} +1 -1
  11. package/dist/client/assets/{CpuChip01-uVRH_vMc.js → CpuChip01-DvL6lI_3.js} +1 -1
  12. package/dist/client/assets/{CreditCard01-Ahegjt4i.js → CreditCard01-DQRUYITg.js} +1 -1
  13. package/dist/client/assets/{DotsVertical-B7ApCE-s.js → DotsVertical-HU79lr3G.js} +1 -1
  14. package/dist/client/assets/{Eye-CPDJnitO.js → Eye-C1OktLHw.js} +1 -1
  15. package/dist/client/assets/{FilterLines-DBLrLgPK.js → FilterLines-H7D9AZ8F.js} +1 -1
  16. package/dist/client/assets/{HardDrive-C6c9YnSs.js → HardDrive-C0Knj6z9.js} +1 -1
  17. package/dist/client/assets/{Key01-BJh_78xX.js → Key01-BHEq37J4.js} +1 -1
  18. package/dist/client/assets/{LayoutLeft-wyHeLWHb.js → LayoutLeft-BxmLtT9f.js} +1 -1
  19. package/dist/client/assets/{LinkExternal01-JrFW6Ggm.js → LinkExternal01-B1d60lbc.js} +1 -1
  20. package/dist/client/assets/{LogOut01-Def2dNtm.js → LogOut01-CwtBK3JF.js} +1 -1
  21. package/dist/client/assets/{Monitor01-w93oMMcR.js → Monitor01-DncSaKSN.js} +1 -1
  22. package/dist/client/assets/{Palette-CsifyrT9.js → Palette-CQsRGpaJ.js} +1 -1
  23. package/dist/client/assets/{Play-CmSYy_2H.js → Play-J2iKbkbr.js} +1 -1
  24. package/dist/client/assets/{Plus-CSPGnFOt.js → Plus-CuYtRh7P.js} +1 -1
  25. package/dist/client/assets/{SearchLg-D_wLtN2p.js → SearchLg-Br4HAS98.js} +1 -1
  26. package/dist/client/assets/{SearchMd-CSAYncOn.js → SearchMd-JvnPD3Ga.js} +1 -1
  27. package/dist/client/assets/{Settings02-CQDOSDIF.js → Settings02-DsuQo4S_.js} +1 -1
  28. package/dist/client/assets/{Shield01-BTrectWG.js → Shield01-DBvxzZEA.js} +1 -1
  29. package/dist/client/assets/{Star01-BpInO3Uq.js → Star01-B-eMI8Lc.js} +1 -1
  30. package/dist/client/assets/{Stars01-CnSLagZ6.js → Stars01-mJZ-hwii.js} +1 -1
  31. package/dist/client/assets/{Stars02-BkL3zwzc.js → Stars02-BmWwNPd7.js} +1 -1
  32. package/dist/client/assets/{Sun-oIKRaOud.js → Sun-DJy2ivtu.js} +1 -1
  33. package/dist/client/assets/{SwitchHorizontal01-s9lH1DvI.js → SwitchHorizontal01-CB5Nt5i8.js} +1 -1
  34. package/dist/client/assets/{Tool01-Bzz7SFWe.js → Tool01-B5aWRWj3.js} +1 -1
  35. package/dist/client/assets/{Tool02-CQLEP5o6.js → Tool02-CUm7J-Ue.js} +1 -1
  36. package/dist/client/assets/{Trash01-Cl7U4IYc.js → Trash01-CNDXobjp.js} +1 -1
  37. package/dist/client/assets/{TrendUp01-Dgn1PFSH.js → TrendUp01-HTmwnH_3.js} +1 -1
  38. package/dist/client/assets/{Upload01-D7GECqHa.js → Upload01-B4oDU3__.js} +1 -1
  39. package/dist/client/assets/{User01-BrigYrAY.js → User01-XsUwJd-X.js} +1 -1
  40. package/dist/client/assets/{Users01-DzT0HFvI.js → Users01-BXDwCXK6.js} +1 -1
  41. package/dist/client/assets/{Users03-32StMAPG.js → Users03-DXCC9KhQ.js} +1 -1
  42. package/dist/client/assets/{X-vPeL8IIS.js → X-cU0vVjLw.js} +1 -1
  43. package/dist/client/assets/{XCircle-B3oJTK9U.js → XCircle-B9gHR2aV.js} +1 -1
  44. package/dist/client/assets/{XClose-CiIGMqbS.js → XClose-6fobFlqM.js} +1 -1
  45. package/dist/client/assets/{Zap-DJ4iAYGa.js → Zap-COITZTlR.js} +1 -1
  46. package/dist/client/assets/{ZapSquare-BJq8V5cG.js → ZapSquare-CaEeWyIO.js} +1 -1
  47. package/dist/client/assets/{access-gate-CYSG0IpG.js → access-gate-CoWZhdrL.js} +1 -1
  48. package/dist/client/assets/{add-section-modal-B5xvoilM.js → add-section-modal-Cbl7pBe8.js} +1 -1
  49. package/dist/client/assets/{agent-icon-B95O9Ir1.js → agent-icon-DnItcGJs.js} +1 -1
  50. package/dist/client/assets/{agents-list-C9f3BVn7.js → agents-list-CWm2OycI.js} +1 -1
  51. package/dist/client/assets/{ai-providers-B7uF3OlP.js → ai-providers-D5jx0aLC.js} +1 -1
  52. package/dist/client/assets/{alert-B70qVWPO.js → alert-BScEkD8H.js} +1 -1
  53. package/dist/client/assets/{alert-dialog-DEj93rlA.js → alert-dialog-RSQVVBER.js} +1 -1
  54. package/dist/client/assets/{app-editor-DuTEELkb.js → app-editor-BYmAqLDP.js} +1 -1
  55. package/dist/client/assets/{auth-Bg3bBhoI.js → auth-BzVU6bWh.js} +1 -1
  56. package/dist/client/assets/{auth-catchall-C7TysTHe.js → auth-catchall-5V-1LOXR.js} +1 -1
  57. package/dist/client/assets/{auth-entry-BEvJmEOH.js → auth-entry-Bz5e_tiR.js} +1 -1
  58. package/dist/client/assets/{auth-split-layout-BbFwLnbm.js → auth-split-layout-BVnzrUGM.js} +1 -1
  59. package/dist/client/assets/{authenticate-and-persist-oauth-DqUiAM2d.js → authenticate-and-persist-oauth-W0vuFUDB.js} +1 -1
  60. package/dist/client/assets/{automation-list-row-bEMzh1zT.js → automation-list-row-BzBNPnzg.js} +1 -1
  61. package/dist/client/assets/{automation-runs-COn5vRuH.js → automation-runs-Bt-sFQEz.js} +1 -1
  62. package/dist/client/assets/{automations-BX2fbLKF.js → automations-B2OXxe1v.js} +1 -1
  63. package/dist/client/assets/{avatar-Ba-aHNYy.js → avatar-waBkYHG8.js} +1 -1
  64. package/dist/client/assets/{badge-By-VPeoP.js → badge-YEHrGACs.js} +1 -1
  65. package/dist/client/assets/{billing-Cbv1vlDc.js → billing-BSTcjZ1M.js} +1 -1
  66. package/dist/client/assets/{block-document-YlojyN00.js → block-document-D23Idkxj.js} +1 -1
  67. package/dist/client/assets/{brand-context-Dv9R-Bi1.js → brand-context-DdcHpmZP.js} +1 -1
  68. package/dist/client/assets/{buckets-D57-Mou7.js → buckets-BMWXl5oe.js} +1 -1
  69. package/dist/client/assets/{bulk-category-panel-BevMtFk_.js → bulk-category-panel-C0Agxw_q.js} +1 -1
  70. package/dist/client/assets/{capability-load-error-DbOflvHY.js → capability-load-error-B-zvIo7q.js} +1 -1
  71. package/dist/client/assets/{card-BBd491uR.js → card-BvBEehJ6.js} +1 -1
  72. package/dist/client/assets/{category-editor-Yd32ktdG.js → category-editor-viXCncrv.js} +1 -1
  73. package/dist/client/assets/{chat-context-DVN6zs4v.js → chat-context-DDsV016d.js} +1 -1
  74. package/dist/client/assets/{checkbox-DoYYVNec.js → checkbox-CQCyGXT2.js} +1 -1
  75. package/dist/client/assets/{cli-auth-success-BeztJoKu.js → cli-auth-success-D8_zO846.js} +1 -1
  76. package/dist/client/assets/{collection-detail-Ct420ZT1.js → collection-detail-D3VwUbf3.js} +1 -1
  77. package/dist/client/assets/{collection-display-button-CBfmCJ_f.js → collection-display-button-CJFg2Aqc.js} +1 -1
  78. package/dist/client/assets/{collection-search-uro-w3iN.js → collection-search-CwoLRrr3.js} +1 -1
  79. package/dist/client/assets/{collection-table-wrapper-j1DUM_ko.js → collection-table-wrapper-CsRkZtVU.js} +1 -1
  80. package/dist/client/assets/{collection-tabs-CIf_8Jg2.js → collection-tabs-CkHDL7pi.js} +1 -1
  81. package/dist/client/assets/{command-vYhFgIXK.js → command-B6Ulnz09.js} +1 -1
  82. package/dist/client/assets/{commerce-onboarding-CQHK945A.js → commerce-onboarding-CqSTLoOZ.js} +1 -1
  83. package/dist/client/assets/{connect-CuLTTHgZ.js → connect-CR_-tWtu.js} +1 -1
  84. package/dist/client/assets/{connection-Bm78imAu.js → connection-BPSOj8bM.js} +1 -1
  85. package/dist/client/assets/{connection-card-DUAn27aB.js → connection-card-D7Gw_vYN.js} +1 -1
  86. package/dist/client/assets/{connection-detail-BqjheNhd.js → connection-detail-CfqiqVqL.js} +1 -1
  87. package/dist/client/assets/{connection-form-helpers-9z0Ee9Ax.js → connection-form-helpers-DMlzOJDg.js} +1 -1
  88. package/dist/client/assets/{connections-H7bvKWLi.js → connections-vO2xAA-X.js} +1 -1
  89. package/dist/client/assets/{decopilot-sse-pool-Dsho1jui.js → decopilot-sse-pool-BkM0-8we.js} +1 -1
  90. package/dist/client/assets/{dialog-CWRSEMxh.js → dialog-Bra3MyFJ.js} +1 -1
  91. package/dist/client/assets/{domain-settings-DSpyQKeq.js → domain-settings-BXDi19Mz.js} +1 -1
  92. package/dist/client/assets/{drawer-BAGB2i5e.js → drawer-DzFXmovp.js} +1 -1
  93. package/dist/client/assets/{dropdown-menu-BBzbEvdx.js → dropdown-menu-BGVBD9az.js} +1 -1
  94. package/dist/client/assets/{empty-state-CJEZ2CIU.js → empty-state-CcPoG0UZ.js} +1 -1
  95. package/dist/client/assets/{extract-connection-data-D9-uOnkC.js → extract-connection-data-BzzkWkZV.js} +1 -1
  96. package/dist/client/assets/{file-explorer-C-nSYD2Z.js → file-explorer-Cz4AQihB.js} +1 -1
  97. package/dist/client/assets/{form-C4BCW6_K.js → form-CjZXtTSa.js} +1 -1
  98. package/dist/client/assets/{general-C7YvJ-e5.js → general-CqcMQz7S.js} +1 -1
  99. package/dist/client/assets/{github-repo-picker-DbLNbWuL.js → github-repo-picker-D-88aPgK.js} +1 -1
  100. package/dist/client/assets/{hooks-kKeZ25fN.js → hooks-DcBuFhPd.js} +1 -1
  101. package/dist/client/assets/{index-BHQj04Pb.js → index-B2Bf_YcE.js} +1 -1
  102. package/dist/client/assets/{index-DMAeCPwc.js → index-BBiw4WW_.js} +3 -3
  103. package/dist/client/assets/{index-Bdt1MtDY.js → index-BGrWt8k2.js} +1 -1
  104. package/dist/client/assets/{index-iiHz_5As.js → index-BuFI8oC0.js} +1 -1
  105. package/dist/client/assets/{index-Dmmh4NNo.js → index-Bw_30boX.js} +1 -1
  106. package/dist/client/assets/{index-wSA3_tmV.js → index-CNvLwxuj.js} +1 -1
  107. package/dist/client/assets/{index-Bdm4_4e1.js → index-CQyWGbyW.js} +1 -1
  108. package/dist/client/assets/{index-OZtIPA3V.js → index-CbjUxvEk.js} +1 -1
  109. package/dist/client/assets/{index-DpjV5q-2.js → index-DonBlPEy.js} +5 -5
  110. package/dist/client/assets/{index-BUD_uLOp.js → index-DvX78KWV.js} +1 -1
  111. package/dist/client/assets/{index-CCUdcCF3.js → index-mtVuI_P1.js} +1 -1
  112. package/dist/client/assets/{index-redirect-FQs-8OMy.js → index-redirect-Bkuo-hDj.js} +1 -1
  113. package/dist/client/assets/{input-D2cgwgHs.js → input-C-zalgaE.js} +1 -1
  114. package/dist/client/assets/{integration-icon-D-4nYjxT.js → integration-icon-BuvhW-8p.js} +1 -1
  115. package/dist/client/assets/{invite-member-dialog-CmEO4b7j.js → invite-member-dialog-C7EZkOz2.js} +1 -1
  116. package/dist/client/assets/{label-Cih2lSUy.js → label-Cg5bA3Ox.js} +1 -1
  117. package/dist/client/assets/{layout-Be3dVDlW.js → layout-Dpj6E4mc.js} +1 -1
  118. package/dist/client/assets/{login-DcvFULic.js → login-nfeJPClS.js} +1 -1
  119. package/dist/client/assets/{mcp-oauth-Di93u_nE.js → mcp-oauth-z0Dd20vj.js} +1 -1
  120. package/dist/client/assets/{members-Df3vyEpX.js → members-DnlrOgVj.js} +1 -1
  121. package/dist/client/assets/{monaco-editor-CsRzqy0G.js → monaco-editor-DsGHs-49.js} +1 -1
  122. package/dist/client/assets/{monitoring-stats-row-DmIJqpsU.js → monitoring-stats-row-BoVaDogM.js} +1 -1
  123. package/dist/client/assets/{multi-select-Bl7q6QM5.js → multi-select-Ct9gqZAw.js} +1 -1
  124. package/dist/client/assets/{oauth-callback-Di2KsC7T.js → oauth-callback-D_gwd7xT.js} +1 -1
  125. package/dist/client/assets/{oauth-callback-ai-provider-CuDeSp4w.js → oauth-callback-ai-provider-fnm3-Muz.js} +1 -1
  126. package/dist/client/assets/{onboarding-BoX_rtxV.js → onboarding-CKoFrT-U.js} +1 -1
  127. package/dist/client/assets/{org-layout-CAR8y3Sz.js → org-layout-Du8CUmq2.js} +1 -1
  128. package/dist/client/assets/{organization-choice-DVmiUVYn.js → organization-choice-BT7aGbot.js} +1 -1
  129. package/dist/client/assets/{orgs-BUmjkff7.js → orgs-BvYX17Go.js} +1 -1
  130. package/dist/client/assets/{page-seo-form-B90103D7.js → page-seo-form-neTHfPuU.js} +1 -1
  131. package/dist/client/assets/{popover-CYvFDNCV.js → popover-BjTm0IXB.js} +1 -1
  132. package/dist/client/assets/{post-editor-Cj9tzQTd.js → post-editor-K8Gqwrnt.js} +1 -1
  133. package/dist/client/assets/{primitives-CYThaUhB.js → primitives-DGzP_CR6.js} +1 -1
  134. package/dist/client/assets/{profile-BVOtsJXF.js → profile-CXk4zgHq.js} +1 -1
  135. package/dist/client/assets/project-app-view-DGnyIRs5.js +1 -0
  136. package/dist/client/assets/record-editor-DIxqzGtw.js +1 -0
  137. package/dist/client/assets/{redirect-editor-BGlyHHxi.js → redirect-editor-CV4HqBb9.js} +1 -1
  138. package/dist/client/assets/registry-C-wMCIhO.js +2 -0
  139. package/dist/client/assets/{registry-layout-C9Ya5jYm.js → registry-layout-BXBDjqUg.js} +1 -1
  140. package/dist/client/assets/{reports-BVBYboiK.js → reports-1xVbqNaD.js} +1 -1
  141. package/dist/client/assets/{require-capability-BM9tAXSC.js → require-capability-BEJcYqn_.js} +1 -1
  142. package/dist/client/assets/{required-auth-layout-BdkooXmz.js → required-auth-layout-FQyEqYzo.js} +1 -1
  143. package/dist/client/assets/{reset-password-BXy-W4dD.js → reset-password-DbWuGCAS.js} +1 -1
  144. package/dist/client/assets/{roles-JOhtFprP.js → roles-DaYB9KCT.js} +1 -1
  145. package/dist/client/assets/{search-input-jm9rHuE0.js → search-input-Cc9IfjOQ.js} +1 -1
  146. package/dist/client/assets/{secrets-C2p7ualF.js → secrets-xVFgVvuf.js} +1 -1
  147. package/dist/client/assets/{sections-editor-BfdV_DMx.js → sections-editor-CjSC4I0U.js} +1 -1
  148. package/dist/client/assets/{select-Dzh6t1Qc.js → select-CfJpftJq.js} +1 -1
  149. package/dist/client/assets/{select-model-BfW94K4G.js → select-model-BKC4BmoK.js} +1 -1
  150. package/dist/client/assets/self-tool-result-De4daZvB.js +1 -0
  151. package/dist/client/assets/{seo-editor-CRkYIsrt.js → seo-editor-I4oOFhoY.js} +1 -1
  152. package/dist/client/assets/{settings-layout-Bsf-JBgC.js → settings-layout-DbBvcqeq.js} +1 -1
  153. package/dist/client/assets/{settings-section-DooKWQox.js → settings-section-CN6oPewm.js} +1 -1
  154. package/dist/client/assets/{shell-controls-2k-CdOGJ.js → shell-controls-Ct8R-j9Y.js} +1 -1
  155. package/dist/client/assets/{shell-layout-BfkP0M8k.js → shell-layout-BZrHG63z.js} +1 -1
  156. package/dist/client/assets/{sidebar-Bi14aJ6Q.js → sidebar-BiGG50b5.js} +1 -1
  157. package/dist/client/assets/{skeleton-B5MUnuf-.js → skeleton-B6az8LzG.js} +1 -1
  158. package/dist/client/assets/{spinner-DRLcUSvi.js → spinner-CvbVb1eZ.js} +1 -1
  159. package/dist/client/assets/{sso-LwXwOiv1.js → sso-CRf5WTH_.js} +1 -1
  160. package/dist/client/assets/{store-BlVrxeEP.js → store-Puqj5X6N.js} +1 -1
  161. package/dist/client/assets/store-registry-DqK0tAWN.js +2 -0
  162. package/dist/client/assets/{studio-tools-DXB56m-I.js → studio-tools-CPEJD8dS.js} +1 -1
  163. package/dist/client/assets/{switch-BJftNIuu.js → switch-CY5TdqDM.js} +1 -1
  164. package/dist/client/assets/{tab-id-BB5R77Zb.js → tab-id-D1oAGZ76.js} +1 -1
  165. package/dist/client/assets/{table-C24ebVr8.js → table-BfJxX96Q.js} +1 -1
  166. package/dist/client/assets/{tabs-bTtd-T4E.js → tabs-DbnHw0Q-.js} +1 -1
  167. package/dist/client/assets/{textarea-98BhtzTb.js → textarea-Uw8o2WKM.js} +1 -1
  168. package/dist/client/assets/{toggle-group-DRus78K2.js → toggle-group-C2tSd60y.js} +1 -1
  169. package/dist/client/assets/{toolbar-CMBY2dP9.js → toolbar-C1AkFBPG.js} +1 -1
  170. package/dist/client/assets/{tooltip-B1dzxtxl.js → tooltip-BwLKnB94.js} +1 -1
  171. package/dist/client/assets/{use-ai-providers-DBCz8w-H.js → use-ai-providers-CoR4OWdo.js} +1 -1
  172. package/dist/client/assets/{use-automations-BXUkBG07.js → use-automations-BdHLTcR5.js} +1 -1
  173. package/dist/client/assets/{use-autosave-z9O2a3E2.js → use-autosave-umrMmWRg.js} +1 -1
  174. package/dist/client/assets/{use-capability-QCltGwJr.js → use-capability-y58qCjug.js} +1 -1
  175. package/dist/client/assets/{use-clock-tick-DY--rUt9.js → use-clock-tick-CHjshdMv.js} +1 -1
  176. package/dist/client/assets/{use-connection-DTq_vVoq.js → use-connection-B9AnMmU_.js} +1 -1
  177. package/dist/client/assets/{use-copy-GU1QUF2W.js → use-copy-BQWR3Nyl.js} +1 -1
  178. package/dist/client/assets/{use-create-virtual-mcp-CXKIqSEX.js → use-create-virtual-mcp-CciZvML4.js} +1 -1
  179. package/dist/client/assets/{use-debounced-autosave-Zmb9T1D-.js → use-debounced-autosave-B-0WNvoE.js} +1 -1
  180. package/dist/client/assets/{use-debounced-value-Dmz0vYZQ.js → use-debounced-value-D_Wg4nEJ.js} +1 -1
  181. package/dist/client/assets/{use-deco-credits-BRBQWiSH.js → use-deco-credits-CVcn5Vt0.js} +1 -1
  182. package/dist/client/assets/{use-decopilot-events-CdVUwq3q.js → use-decopilot-events-DvKGuIV9.js} +1 -1
  183. package/dist/client/assets/{use-delete-connection-DcZ86UGx.js → use-delete-connection-BlAR4tSS.js} +1 -1
  184. package/dist/client/assets/{use-deployment-admin-B_5ERRAe.js → use-deployment-admin-CrQoQloU.js} +1 -1
  185. package/dist/client/assets/{use-file-configs-BaQEYWlm.js → use-file-configs-CfkzXAKJ.js} +1 -1
  186. package/dist/client/assets/{use-infinite-scroll-BQfm646h.js → use-infinite-scroll-C-YUX9ro.js} +1 -1
  187. package/dist/client/assets/{use-join-requests-CW4NM-Fq.js → use-join-requests-B8zkCy0E.js} +1 -1
  188. package/dist/client/assets/{use-mcp-client-DOcr5mrj.js → use-mcp-client-DGLnutwB.js} +1 -1
  189. package/dist/client/assets/{use-mcp-tools-Dde0_gbe.js → use-mcp-tools-DLPmIkoR.js} +1 -1
  190. package/dist/client/assets/{use-members-CAJIqsl1.js → use-members-BqJl464i.js} +1 -1
  191. package/dist/client/assets/{use-mobile-BY6OV0X_.js → use-mobile-Dn6AtDG-.js} +1 -1
  192. package/dist/client/assets/{use-navigate-to-agent-p3kzJu9p.js → use-navigate-to-agent-D9xH0bMo.js} +1 -1
  193. package/dist/client/assets/{use-open-billing-url-BdQQ1vKm.js → use-open-billing-url-DFoCErTP.js} +1 -1
  194. package/dist/client/assets/{use-org-auth-client-B8kLvFMp.js → use-org-auth-client-D5ZZAlgp.js} +1 -1
  195. package/dist/client/assets/{use-org-sso-hk0q3waB.js → use-org-sso-CTPMeoXv.js} +1 -1
  196. package/dist/client/assets/{use-organization-roles-B03GRNcA.js → use-organization-roles-pj1XYysb.js} +1 -1
  197. package/dist/client/assets/{use-organization-settings-Phqg4PqT.js → use-organization-settings-m4Rxay8A.js} +1 -1
  198. package/dist/client/assets/{use-registry-connections-BemQpSSz.js → use-registry-connections-BGd4ggyw.js} +1 -1
  199. package/dist/client/assets/{use-secrets-BicjdZd3.js → use-secrets-D6UKv3Pf.js} +1 -1
  200. package/dist/client/assets/{use-status-sounds-BsWsmFYM.js → use-status-sounds-C3VxcpZW.js} +1 -1
  201. package/dist/client/assets/{use-tags-5SE9S1Lq.js → use-tags-BTCF49fJ.js} +1 -1
  202. package/dist/client/assets/{use-view-mode-DzvDF325.js → use-view-mode-DNpApfOe.js} +1 -1
  203. package/dist/client/assets/{use-virtual-mcp-PhLsmZQO.js → use-virtual-mcp-Cu6-RjT3.js} +1 -1
  204. package/dist/client/assets/useInfiniteQuery-yE7zn8x1.js +1 -0
  205. package/dist/client/assets/{useRouterState-DBRjjuns.js → useRouterState-DwqIhDDB.js} +1 -1
  206. package/dist/client/assets/useSuspenseInfiniteQuery-DFOyO7uQ.js +1 -0
  207. package/dist/client/assets/{users-CBcpj_ww.js → users-_06PeWr0.js} +1 -1
  208. package/dist/client/assets/{variant-calendar-CwememIV.js → variant-calendar-S88qxrfK.js} +1 -1
  209. package/dist/client/assets/{view-mode-toggle-CQURbLhP.js → view-mode-toggle-CxQwDkSN.js} +1 -1
  210. package/dist/client/index.html +1 -1
  211. package/dist/server/cli.js +3 -3
  212. package/dist/server/server.js +3 -3
  213. package/package.json +1 -1
  214. package/dist/client/assets/project-app-view-Dcqil-Dd.js +0 -1
  215. package/dist/client/assets/record-editor-BVlXNnJb.js +0 -1
  216. package/dist/client/assets/registry-AS5BcbMh.js +0 -2
  217. package/dist/client/assets/self-tool-result-D_ABh5a-.js +0 -1
  218. package/dist/client/assets/store-registry-fUAr0lF_.js +0 -2
  219. package/dist/client/assets/useInfiniteQuery-DVfcwIte.js +0 -1
  220. package/dist/client/assets/useSuspenseInfiniteQuery-QXBIm_Yf.js +0 -1
@@ -1292,7 +1292,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var fu1=O(()=>{zx()});f
1292
1292
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await pf`
1293
1293
  DELETE FROM kysely_migration WHERE name = ${X}
1294
1294
  `.execute($)}}async function pm1($){await Th6($),await Rh6($);let Z=new im1({db:$,provider:{getMigrations:()=>Promise.resolve(Fl0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function Ih6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await dg0();let G=X??H6(),J=async()=>{if(!Z&&!X)await Jw(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await pm1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function qh6(){let $=H6(),Z=new im1({db:$.db,provider:{getMigrations:()=>Promise.resolve(Fl0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.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}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var om1=O(()=>{mm1();mg0();m7()});async function x50($){let Z={...process.env},X=V00($,Z);console.log(OU1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Fl1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (n$0(),i$0)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (mg0(),Bl1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (m7(),Sc1)),{migrateToLatest:N}=await Promise.resolve().then(() => (om1(),tm1)),U=H(G.databaseUrl);await N({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return bu1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var wl0=O(()=>{zx();wl1();y8()});var sm1={};w0(sm1,{updateService:()=>gD,subscribeCliState:()=>Ll0,setTuiConsoleIntercepted:()=>f50,setServerUrl:()=>Em,setMigrationsDone:()=>Dm,setDevMode:()=>Vh6,resetCliStateForTests:()=>Mh6,isTuiConsoleIntercepted:()=>b50,getCliState:()=>Ol0,addLogEntry:()=>Uw});function rm1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function Mh6(){kQ=rm1()}function kh6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Lm(){for(let $ of Bl0)$()}function Ol0(){return kQ}function Ll0($){return Bl0.add($),()=>Bl0.delete($)}function gD($){kQ={...kQ,services:kQ.services.map((Z)=>Z.name===$.name?$:Z)},Lm()}function Dm(){kQ={...kQ,migrationsStatus:"done"},Lm()}function Em($){kQ={...kQ,serverUrl:$},Lm()}function Uw($){let Z=[...kQ.logs,$];kQ={...kQ,logs:Z.length>500?Z.slice(-500):Z},Lm()}function Vh6(){kQ={...kQ,services:[...kh6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Lm()}function f50($){am1=$}function b50(){return am1}var kQ,Bl0,am1=!1;var hD=O(()=>{kQ=rm1();Bl0=new Set});import{createServer as em1}from"net";function Sh6($){return new Promise((Z)=>{let X=em1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function zm($){if(await Sh6($))return $;let Z=await new Promise((X,Q)=>{let Y=em1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var Dl0=()=>{};function jm($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var El0={};w0(El0,{startDevServer:()=>_h6});import{join as Ch6}from"path";function $i1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
1295
- `);Q=G.pop()??"";for(let J of G){let K=jm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;Uw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=jm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)Uw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function _h6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await zm(Number(Y)+1):await zm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await x50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)gD({name:L.name,status:"ready",port:L.port});Dm();let N=Ch6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)$i1(F.stdout),$i1(F.stderr);Em(G),gD({name:"Vite",status:"ready",port:Number(Y)}),gD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (n$0(),i$0));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var zl0=O(()=>{wl0();hD();Dl0()});var y50;var jl0=O(()=>{y50={name:"decocms",version:"4.186.5",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.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":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@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":"^2.9.1","@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":"^3.0.10","@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","@nats-io/jwt":"0.0.10-5","@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:"^6.0.208","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 xh6,Text as Zi1}from"ink";import{jsx as fh6,jsxs as Xi1}from"react/jsx-runtime";function Qi1({version:$}){return Xi1(xh6,{flexDirection:"column",marginTop:1,children:[w50.map((Z,X)=>fh6(Zi1,{color:B50[X],children:Z},X)),Xi1(Zi1,{dimColor:!0,children:[" v",$]})]})}var Yi1=O(()=>{Gm()});import{Box as uD,Text as Fw}from"ink";import{Spinner as bh6}from"@inkjs/ui";import{jsx as fY,jsxs as tf}from"react/jsx-runtime";function Gi1({status:$}){if($==="pending")return fY(bh6,{label:""});return fY(Fw,{color:"green",children:"\u2713"})}function yh6($){return`${$.name}: ${$.port||"...."}`}function Ji1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return tf(uD,{flexDirection:"column",paddingBottom:1,children:[fY(Qi1,{version:y50.version}),fY(uD,{marginBottom:1,children:fY(Fw,{dimColor:!0,children:"\u2500".repeat(80)})}),fY(uD,{children:tf(Fw,{dimColor:!0,children:["Home: ",X]})}),tf(uD,{gap:2,children:[$.map((Y)=>tf(uD,{gap:1,children:[fY(Fw,{children:yh6(Y)}),fY(Gi1,{status:Y.status})]},Y.name)),tf(uD,{gap:1,children:[fY(Fw,{children:"Migrations"}),fY(Gi1,{status:Z})]})]}),fY(uD,{children:Q?tf(Fw,{children:["Open in browser: ",fY(Fw,{color:"cyan",children:Q})]}):fY(Fw,{dimColor:!0,children:"Starting..."})})]})}var Ki1=O(()=>{jl0();Yi1()});import{Box as gh6,Text as Pm}from"ink";import{jsx as Pl0,jsxs as Al0}from"react/jsx-runtime";function hh6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Wi1({logs:$}){return Pl0(gh6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Pl0(Pm,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Al0(Pm,{children:[Al0(Pm,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Pl0(Pm,{color:hh6(Z.status),children:Z.status}),Al0(Pm,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Hi1=()=>{};var Tl0={};w0(Tl0,{App:()=>lh6});import{Box as uh6}from"ink";import{useSyncExternalStore as ch6}from"react";import{jsx as Ni1,jsxs as dh6}from"react/jsx-runtime";function lh6({home:$}){let Z=ch6(Ll0,Ol0);return dh6(uh6,{flexDirection:"column",children:[Ni1(Ji1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ni1(Wi1,{logs:Z.logs})]})}var Rl0=O(()=>{Ki1();Hi1();hD()});var JJ="thread-gate",IN="decopilot-hosted-harness",lG="automations",ww="background-tools";var Ui1="7";function Fi1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Ui1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var wi1=()=>{};function mh6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Il0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Bi1(){let $=mh6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Il0($,"--cpu-prof-dir")??process.cwd(),name:Il0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Il0($,"--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 Oi1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=xD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),g50=setInterval(()=>void Z().catch(()=>{}),$),g50.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(g50)clearInterval(g50)}}var g50;var Li1=()=>{};import*as ih6 from"bun:jsc";function Di1(){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{nh6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=ph6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((N,U)=>U[1]-N[1]).slice(0,8).map(([N,U])=>({frame:N,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var nh6,ph6;var Ei1=O(()=>{({startSamplingProfiler:nh6,samplingProfilerStackTraces:ph6}=ih6)});function zi1(){Bi1();let $=[Oi1(),Ac1(),Di1()];return()=>{for(let Z of $)Z()}}var ji1=O(()=>{vg0();Li1();Ei1()});var cD=_((Pi1)=>{Object.defineProperty(Pi1,"__esModule",{value:!0});Pi1.RepublishHeaders=Pi1.DirectMsgHeaders=Pi1.JsHeaders=Pi1.AdvisoryKind=void 0;Pi1.isOrderedPushConsumerOptions=th6;Pi1.isPullConsumer=oh6;Pi1.isPushConsumer=rh6;Pi1.isBoundPushConsumerOptions=ah6;function th6($){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 oh6($){return $.isPullConsumer()}function rh6($){return $.isPushConsumer()}function ah6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Pi1.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"};Pi1.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"};Pi1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Pi1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var bY=_((Ti1)=>{Object.defineProperty(Ti1,"__esModule",{value:!0});Ti1.TD=Ti1.TE=Ti1.Empty=void 0;Ti1.encode=Ju6;Ti1.decode=Ku6;Ti1.Empty=new Uint8Array(0);Ti1.TE=new TextEncoder;Ti1.TD=new TextDecoder;function Gu6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Ju6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Ti1.TE.encode($[X]));if(Z.length===0)return Ti1.Empty;if(Z.length===1)return Z[0];return Gu6(...Z)}function Ku6($){if(!$||$.length===0)return"";return Ti1.TD.decode($)}});var yY=_((qi1)=>{Object.defineProperty(qi1,"__esModule",{value:!0});qi1.errors=qi1.PermissionViolationError=qi1.NoRespondersError=qi1.TimeoutError=qi1.RequestError=qi1.ProtocolError=qi1.ConnectionError=qi1.DrainingConnectionError=qi1.ClosedConnectionError=qi1.AuthorizationError=qi1.UserAuthenticationExpiredError=qi1.InvalidOperationError=qi1.InvalidArgumentError=qi1.InvalidSubjectError=void 0;class Ml0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}qi1.InvalidSubjectError=Ml0;class h50 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new h50(`${$} ${Z}`,X)}}qi1.InvalidArgumentError=h50;class kl0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}qi1.InvalidOperationError=kl0;class u50 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new u50($);return null}}qi1.UserAuthenticationExpiredError=u50;class c50 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new c50($);return null}}qi1.AuthorizationError=c50;class Vl0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}qi1.ClosedConnectionError=Vl0;class Sl0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}qi1.DrainingConnectionError=Sl0;class Cl0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}qi1.ConnectionError=Cl0;class _l0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}qi1.ProtocolError=_l0;class vl0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof l50}}qi1.RequestError=vl0;class xl0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}qi1.TimeoutError=xl0;class l50 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}qi1.NoRespondersError=l50;class d50 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new d50($,X,Q,Y)}}qi1.PermissionViolationError=d50;qi1.errors={AuthorizationError:c50,ClosedConnectionError:Vl0,ConnectionError:Cl0,DrainingConnectionError:Sl0,InvalidArgumentError:h50,InvalidOperationError:kl0,InvalidSubjectError:Ml0,NoRespondersError:l50,PermissionViolationError:d50,ProtocolError:_l0,RequestError:vl0,TimeoutError:xl0,UserAuthenticationExpiredError:u50}});var KJ=_((Ci1)=>{Object.defineProperty(Ci1,"__esModule",{value:!0});Ci1.SimpleMutex=Ci1.Perf=void 0;Ci1.extend=Ru6;Ci1.render=Iu6;Ci1.timeout=qu6;Ci1.delay=Mu6;Ci1.deadline=ku6;Ci1.deferred=bl0;Ci1.debugDeferred=Vu6;Ci1.shuffle=Su6;Ci1.collect=Cu6;Ci1.jitter=Si1;Ci1.backoff=_u6;Ci1.nanos=vu6;Ci1.millis=xu6;Ci1.randomToken=yu6;var Tu6=bY(),fl0=yY();function Ru6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Iu6($){return Tu6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function qu6($,Z=!0){let X=Z?new fl0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new fl0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Mu6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function ku6($,Z=1000){let X=bl0(),Q=setTimeout(()=>{X.reject(new fl0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function bl0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function Vu6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function Su6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Cu6($){let Z=[];for await(let X of $)Z.push(X);return Z}class ki1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}Ci1.Perf=ki1;class Vi1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=bl0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Ci1.SimpleMutex=Vi1;function Si1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function _u6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return Si1(X>Z?$[Z]:$[X])}}}function vu6($){return $*1e6}function xu6($){return Math.floor($/1e6)}var fu6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",qN=new Uint8Array(62);for(let $=0;$<62;$++)qN[$]=fu6.charCodeAt($);var bu6=218340105584896;function yu6(){let $=Math.floor(Math.random()*bu6),Z=$%62,X=qN[Z];$=($-Z)/62,Z=$%62;let Q=qN[Z];$=($-Z)/62,Z=$%62;let Y=qN[Z];$=($-Z)/62,Z=$%62;let G=qN[Z];$=($-Z)/62,Z=$%62;let J=qN[Z];$=($-Z)/62,Z=$%62;let K=qN[Z];$=($-Z)/62,Z=$%62;let W=qN[Z];$=($-Z)/62;let H=qN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var hi1=_((yi1)=>{Object.defineProperty(yi1,"__esModule",{value:!0});yi1.nuid=yi1.NuidImpl=void 0;var eu6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Bw=62,i50=12,fi1=10,vi1=33,$c6=333,xi1=i50+fi1,gl0=new Uint8Array(Bw);for(let $=0;$<Bw;$++)gl0[$]=eu6.charCodeAt($);var m50=4294967296,bi1=BigInt(Bw)**BigInt(fi1),Am=Number(bi1/(1n<<32n)),yl0=Number(bi1%(1n<<32n));function Zc6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Xc6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Zc6($)}class hl0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(xi1),this.cbuf=new Uint8Array(i50),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Am+1)),this.seqLo=Math.floor(Math.random()*m50);while($++<8&&this.seqHi===Am&&this.seqLo>=yl0);if(this.seqHi===Am&&this.seqLo>=yl0)this.seqLo=0;this.inc=Math.random()*($c6-vi1)+vi1|0}setPre(){Xc6(this.cbuf);for(let $=0;$<i50;$++)this.buf[$]=gl0[this.cbuf[$]%Bw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=xi1-1;X>=i50;X--){let Q=Math.floor($/Bw),G=($-Q*Bw)*m50+Z,J=Math.floor(G/Bw),K=G-J*Bw;this.buf[X]=gl0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=m50)this.seqLo-=m50,this.seqHi+=1;if(this.seqHi>Am||this.seqHi===Am&&this.seqLo>=yl0)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()}}yi1.NuidImpl=hl0;yi1.nuid=new hl0});var di1=_((ci1)=>{Object.defineProperty(ci1,"__esModule",{value:!0});ci1.nuid=ci1.Nuid=void 0;var ui1=hi1();ci1.Nuid=ui1.NuidImpl;ci1.nuid=ui1.nuid});var p50=_((n50)=>{Object.defineProperty(n50,"__esModule",{value:!0});n50.nuid=n50.Nuid=void 0;var mi1=di1();Object.defineProperty(n50,"Nuid",{enumerable:!0,get:function(){return mi1.Nuid}});Object.defineProperty(n50,"nuid",{enumerable:!0,get:function(){return mi1.nuid}})});var Ow=_((ii1)=>{Object.defineProperty(ii1,"__esModule",{value:!0});ii1.DEFAULT_HOST=ii1.DEFAULT_PORT=ii1.Match=void 0;ii1.syncIterator=Wc6;ii1.createInbox=Hc6;var Jc6=p50(),Kc6=yY();ii1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Wc6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function Hc6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Kc6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Jc6.nuid.next()}`}ii1.DEFAULT_PORT=4222;ii1.DEFAULT_HOST="127.0.0.1"});var Tm=_((oi1)=>{Object.defineProperty(oi1,"__esModule",{value:!0});oi1.DataBuffer=void 0;var pi1=bY();class ti1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return pi1.TE.encode($)}static toAscii($){return pi1.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 X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].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 X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].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}}oi1.DataBuffer=ti1});var lD=_((si1)=>{Object.defineProperty(si1,"__esModule",{value:!0});si1.LF=si1.CR=si1.CRLF=si1.CR_LF_LEN=si1.CR_LF=void 0;si1.setTransportFactory=Dc6;si1.defaultPort=Ec6;si1.getUrlParseFn=zc6;si1.newTransport=jc6;si1.getResolveFn=Pc6;si1.protoLen=ai1;si1.extractProtocolMessage=Ac6;var Bc6=bY(),Oc6=Ow(),Lc6=Tm(),gY;function Dc6($){gY=$}function Ec6(){return gY!==void 0&&gY.defaultPort!==void 0?gY.defaultPort:Oc6.DEFAULT_PORT}function zc6(){return gY!==void 0&&gY.urlParseFn?gY.urlParseFn:void 0}function jc6(){if(!gY||typeof gY.factory!=="function")throw Error("transport fn is not set");return gY.factory()}function Pc6(){return gY!==void 0&&gY.dnsResolveFn?gY.dnsResolveFn:void 0}si1.CR_LF=`\r
1295
+ `);Q=G.pop()??"";for(let J of G){let K=jm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;Uw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=jm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)Uw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function _h6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await zm(Number(Y)+1):await zm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await x50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)gD({name:L.name,status:"ready",port:L.port});Dm();let N=Ch6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)$i1(F.stdout),$i1(F.stderr);Em(G),gD({name:"Vite",status:"ready",port:Number(Y)}),gD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (n$0(),i$0));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var zl0=O(()=>{wl0();hD();Dl0()});var y50;var jl0=O(()=>{y50={name:"decocms",version:"4.187.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.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":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@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":"^2.9.1","@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":"^3.0.10","@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","@nats-io/jwt":"0.0.10-5","@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:"^6.0.208","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 xh6,Text as Zi1}from"ink";import{jsx as fh6,jsxs as Xi1}from"react/jsx-runtime";function Qi1({version:$}){return Xi1(xh6,{flexDirection:"column",marginTop:1,children:[w50.map((Z,X)=>fh6(Zi1,{color:B50[X],children:Z},X)),Xi1(Zi1,{dimColor:!0,children:[" v",$]})]})}var Yi1=O(()=>{Gm()});import{Box as uD,Text as Fw}from"ink";import{Spinner as bh6}from"@inkjs/ui";import{jsx as fY,jsxs as tf}from"react/jsx-runtime";function Gi1({status:$}){if($==="pending")return fY(bh6,{label:""});return fY(Fw,{color:"green",children:"\u2713"})}function yh6($){return`${$.name}: ${$.port||"...."}`}function Ji1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return tf(uD,{flexDirection:"column",paddingBottom:1,children:[fY(Qi1,{version:y50.version}),fY(uD,{marginBottom:1,children:fY(Fw,{dimColor:!0,children:"\u2500".repeat(80)})}),fY(uD,{children:tf(Fw,{dimColor:!0,children:["Home: ",X]})}),tf(uD,{gap:2,children:[$.map((Y)=>tf(uD,{gap:1,children:[fY(Fw,{children:yh6(Y)}),fY(Gi1,{status:Y.status})]},Y.name)),tf(uD,{gap:1,children:[fY(Fw,{children:"Migrations"}),fY(Gi1,{status:Z})]})]}),fY(uD,{children:Q?tf(Fw,{children:["Open in browser: ",fY(Fw,{color:"cyan",children:Q})]}):fY(Fw,{dimColor:!0,children:"Starting..."})})]})}var Ki1=O(()=>{jl0();Yi1()});import{Box as gh6,Text as Pm}from"ink";import{jsx as Pl0,jsxs as Al0}from"react/jsx-runtime";function hh6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Wi1({logs:$}){return Pl0(gh6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Pl0(Pm,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Al0(Pm,{children:[Al0(Pm,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Pl0(Pm,{color:hh6(Z.status),children:Z.status}),Al0(Pm,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Hi1=()=>{};var Tl0={};w0(Tl0,{App:()=>lh6});import{Box as uh6}from"ink";import{useSyncExternalStore as ch6}from"react";import{jsx as Ni1,jsxs as dh6}from"react/jsx-runtime";function lh6({home:$}){let Z=ch6(Ll0,Ol0);return dh6(uh6,{flexDirection:"column",children:[Ni1(Ji1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ni1(Wi1,{logs:Z.logs})]})}var Rl0=O(()=>{Ki1();Hi1();hD()});var JJ="thread-gate",IN="decopilot-hosted-harness",lG="automations",ww="background-tools";var Ui1="7";function Fi1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Ui1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var wi1=()=>{};function mh6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Il0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Bi1(){let $=mh6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Il0($,"--cpu-prof-dir")??process.cwd(),name:Il0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Il0($,"--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 Oi1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=xD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),g50=setInterval(()=>void Z().catch(()=>{}),$),g50.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(g50)clearInterval(g50)}}var g50;var Li1=()=>{};import*as ih6 from"bun:jsc";function Di1(){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{nh6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=ph6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((N,U)=>U[1]-N[1]).slice(0,8).map(([N,U])=>({frame:N,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var nh6,ph6;var Ei1=O(()=>{({startSamplingProfiler:nh6,samplingProfilerStackTraces:ph6}=ih6)});function zi1(){Bi1();let $=[Oi1(),Ac1(),Di1()];return()=>{for(let Z of $)Z()}}var ji1=O(()=>{vg0();Li1();Ei1()});var cD=_((Pi1)=>{Object.defineProperty(Pi1,"__esModule",{value:!0});Pi1.RepublishHeaders=Pi1.DirectMsgHeaders=Pi1.JsHeaders=Pi1.AdvisoryKind=void 0;Pi1.isOrderedPushConsumerOptions=th6;Pi1.isPullConsumer=oh6;Pi1.isPushConsumer=rh6;Pi1.isBoundPushConsumerOptions=ah6;function th6($){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 oh6($){return $.isPullConsumer()}function rh6($){return $.isPushConsumer()}function ah6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Pi1.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"};Pi1.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"};Pi1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Pi1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var bY=_((Ti1)=>{Object.defineProperty(Ti1,"__esModule",{value:!0});Ti1.TD=Ti1.TE=Ti1.Empty=void 0;Ti1.encode=Ju6;Ti1.decode=Ku6;Ti1.Empty=new Uint8Array(0);Ti1.TE=new TextEncoder;Ti1.TD=new TextDecoder;function Gu6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Ju6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Ti1.TE.encode($[X]));if(Z.length===0)return Ti1.Empty;if(Z.length===1)return Z[0];return Gu6(...Z)}function Ku6($){if(!$||$.length===0)return"";return Ti1.TD.decode($)}});var yY=_((qi1)=>{Object.defineProperty(qi1,"__esModule",{value:!0});qi1.errors=qi1.PermissionViolationError=qi1.NoRespondersError=qi1.TimeoutError=qi1.RequestError=qi1.ProtocolError=qi1.ConnectionError=qi1.DrainingConnectionError=qi1.ClosedConnectionError=qi1.AuthorizationError=qi1.UserAuthenticationExpiredError=qi1.InvalidOperationError=qi1.InvalidArgumentError=qi1.InvalidSubjectError=void 0;class Ml0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}qi1.InvalidSubjectError=Ml0;class h50 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new h50(`${$} ${Z}`,X)}}qi1.InvalidArgumentError=h50;class kl0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}qi1.InvalidOperationError=kl0;class u50 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new u50($);return null}}qi1.UserAuthenticationExpiredError=u50;class c50 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new c50($);return null}}qi1.AuthorizationError=c50;class Vl0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}qi1.ClosedConnectionError=Vl0;class Sl0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}qi1.DrainingConnectionError=Sl0;class Cl0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}qi1.ConnectionError=Cl0;class _l0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}qi1.ProtocolError=_l0;class vl0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof l50}}qi1.RequestError=vl0;class xl0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}qi1.TimeoutError=xl0;class l50 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}qi1.NoRespondersError=l50;class d50 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new d50($,X,Q,Y)}}qi1.PermissionViolationError=d50;qi1.errors={AuthorizationError:c50,ClosedConnectionError:Vl0,ConnectionError:Cl0,DrainingConnectionError:Sl0,InvalidArgumentError:h50,InvalidOperationError:kl0,InvalidSubjectError:Ml0,NoRespondersError:l50,PermissionViolationError:d50,ProtocolError:_l0,RequestError:vl0,TimeoutError:xl0,UserAuthenticationExpiredError:u50}});var KJ=_((Ci1)=>{Object.defineProperty(Ci1,"__esModule",{value:!0});Ci1.SimpleMutex=Ci1.Perf=void 0;Ci1.extend=Ru6;Ci1.render=Iu6;Ci1.timeout=qu6;Ci1.delay=Mu6;Ci1.deadline=ku6;Ci1.deferred=bl0;Ci1.debugDeferred=Vu6;Ci1.shuffle=Su6;Ci1.collect=Cu6;Ci1.jitter=Si1;Ci1.backoff=_u6;Ci1.nanos=vu6;Ci1.millis=xu6;Ci1.randomToken=yu6;var Tu6=bY(),fl0=yY();function Ru6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Iu6($){return Tu6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function qu6($,Z=!0){let X=Z?new fl0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new fl0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Mu6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function ku6($,Z=1000){let X=bl0(),Q=setTimeout(()=>{X.reject(new fl0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function bl0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function Vu6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function Su6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Cu6($){let Z=[];for await(let X of $)Z.push(X);return Z}class ki1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}Ci1.Perf=ki1;class Vi1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=bl0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Ci1.SimpleMutex=Vi1;function Si1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function _u6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return Si1(X>Z?$[Z]:$[X])}}}function vu6($){return $*1e6}function xu6($){return Math.floor($/1e6)}var fu6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",qN=new Uint8Array(62);for(let $=0;$<62;$++)qN[$]=fu6.charCodeAt($);var bu6=218340105584896;function yu6(){let $=Math.floor(Math.random()*bu6),Z=$%62,X=qN[Z];$=($-Z)/62,Z=$%62;let Q=qN[Z];$=($-Z)/62,Z=$%62;let Y=qN[Z];$=($-Z)/62,Z=$%62;let G=qN[Z];$=($-Z)/62,Z=$%62;let J=qN[Z];$=($-Z)/62,Z=$%62;let K=qN[Z];$=($-Z)/62,Z=$%62;let W=qN[Z];$=($-Z)/62;let H=qN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var hi1=_((yi1)=>{Object.defineProperty(yi1,"__esModule",{value:!0});yi1.nuid=yi1.NuidImpl=void 0;var eu6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Bw=62,i50=12,fi1=10,vi1=33,$c6=333,xi1=i50+fi1,gl0=new Uint8Array(Bw);for(let $=0;$<Bw;$++)gl0[$]=eu6.charCodeAt($);var m50=4294967296,bi1=BigInt(Bw)**BigInt(fi1),Am=Number(bi1/(1n<<32n)),yl0=Number(bi1%(1n<<32n));function Zc6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Xc6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Zc6($)}class hl0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(xi1),this.cbuf=new Uint8Array(i50),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Am+1)),this.seqLo=Math.floor(Math.random()*m50);while($++<8&&this.seqHi===Am&&this.seqLo>=yl0);if(this.seqHi===Am&&this.seqLo>=yl0)this.seqLo=0;this.inc=Math.random()*($c6-vi1)+vi1|0}setPre(){Xc6(this.cbuf);for(let $=0;$<i50;$++)this.buf[$]=gl0[this.cbuf[$]%Bw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=xi1-1;X>=i50;X--){let Q=Math.floor($/Bw),G=($-Q*Bw)*m50+Z,J=Math.floor(G/Bw),K=G-J*Bw;this.buf[X]=gl0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=m50)this.seqLo-=m50,this.seqHi+=1;if(this.seqHi>Am||this.seqHi===Am&&this.seqLo>=yl0)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()}}yi1.NuidImpl=hl0;yi1.nuid=new hl0});var di1=_((ci1)=>{Object.defineProperty(ci1,"__esModule",{value:!0});ci1.nuid=ci1.Nuid=void 0;var ui1=hi1();ci1.Nuid=ui1.NuidImpl;ci1.nuid=ui1.nuid});var p50=_((n50)=>{Object.defineProperty(n50,"__esModule",{value:!0});n50.nuid=n50.Nuid=void 0;var mi1=di1();Object.defineProperty(n50,"Nuid",{enumerable:!0,get:function(){return mi1.Nuid}});Object.defineProperty(n50,"nuid",{enumerable:!0,get:function(){return mi1.nuid}})});var Ow=_((ii1)=>{Object.defineProperty(ii1,"__esModule",{value:!0});ii1.DEFAULT_HOST=ii1.DEFAULT_PORT=ii1.Match=void 0;ii1.syncIterator=Wc6;ii1.createInbox=Hc6;var Jc6=p50(),Kc6=yY();ii1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Wc6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function Hc6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Kc6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Jc6.nuid.next()}`}ii1.DEFAULT_PORT=4222;ii1.DEFAULT_HOST="127.0.0.1"});var Tm=_((oi1)=>{Object.defineProperty(oi1,"__esModule",{value:!0});oi1.DataBuffer=void 0;var pi1=bY();class ti1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return pi1.TE.encode($)}static toAscii($){return pi1.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 X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].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 X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].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}}oi1.DataBuffer=ti1});var lD=_((si1)=>{Object.defineProperty(si1,"__esModule",{value:!0});si1.LF=si1.CR=si1.CRLF=si1.CR_LF_LEN=si1.CR_LF=void 0;si1.setTransportFactory=Dc6;si1.defaultPort=Ec6;si1.getUrlParseFn=zc6;si1.newTransport=jc6;si1.getResolveFn=Pc6;si1.protoLen=ai1;si1.extractProtocolMessage=Ac6;var Bc6=bY(),Oc6=Ow(),Lc6=Tm(),gY;function Dc6($){gY=$}function Ec6(){return gY!==void 0&&gY.defaultPort!==void 0?gY.defaultPort:Oc6.DEFAULT_PORT}function zc6(){return gY!==void 0&&gY.urlParseFn?gY.urlParseFn:void 0}function jc6(){if(!gY||typeof gY.factory!=="function")throw Error("transport fn is not set");return gY.factory()}function Pc6(){return gY!==void 0&&gY.dnsResolveFn?gY.dnsResolveFn:void 0}si1.CR_LF=`\r
1296
1296
  `;si1.CR_LF_LEN=si1.CR_LF.length;si1.CRLF=Lc6.DataBuffer.fromAscii(si1.CR_LF);si1.CR=new Uint8Array(si1.CRLF)[0];si1.LF=new Uint8Array(si1.CRLF)[1];function ai1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===si1.CR&&$[X]===si1.LF)return X+1}return 0}function Ac6($){let Z=ai1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return Bc6.TD.decode(Q)}return""}});var ml0=_((Jn1)=>{Object.defineProperty(Jn1,"__esModule",{value:!0});Jn1.ipV4=Qn1;Jn1.isIP=vc6;Jn1.parseIP=Yn1;var Rm=4,dD=16,t50=48,Xn1=57,$n1=65,Cc6=70,Zn1=97,_c6=102,dl0=16777215;function Qn1($,Z,X,Q){let Y=new Uint8Array(dD);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function vc6($){return Yn1($)!==void 0}function Yn1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return Gn1($);case":":return xc6($)}return}function Gn1($){let Z=new Uint8Array(Rm);for(let X=0;X<Rm;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=fc6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return Qn1(Z[0],Z[1],Z[2],Z[3])}function xc6($){let Z=new Uint8Array(dD),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<dD){let{n:Y,c:G,ok:J}=bc6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=dD-Rm)return;if(Q+Rm>dD)return;let K=Gn1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=Rm;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<dD){if(X<0)return;let Y=dD-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function fc6($){let Z=0,X=0;for(Z=0;Z<$.length&&t50<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=Xn1;Z++)if(X=X*10+($.charCodeAt(Z)-t50),X>=dl0)return{n:dl0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function bc6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(t50<=$.charCodeAt(X)&&$.charCodeAt(X)<=Xn1)Z*=16,Z+=$.charCodeAt(X)-t50;else if(Zn1<=$.charCodeAt(X)&&$.charCodeAt(X)<=_c6)Z*=16,Z+=$.charCodeAt(X)-Zn1+10;else if($n1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Cc6)Z*=16,Z+=$.charCodeAt(X)-$n1+10;else break;if(Z>=dl0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var rl0=_((Wn1)=>{Object.defineProperty(Wn1,"__esModule",{value:!0});Wn1.Servers=Wn1.ServerImpl=void 0;Wn1.isIPV4OrHostname=Kn1;Wn1.hostPort=ol0;var il0=lD(),nl0=KJ(),pl0=ml0(),uc6=Ow(),cc6=yY();function Kn1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function tl0($){return!Kn1($)}function lc6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function ol0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=lc6($),tl0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=tl0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):uc6.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class of{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=ol0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.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,pl0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${tl0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new of(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,nl0.shuffle)(Z);return this.resolves=Z,Z}}Wn1.ServerImpl=of;class o50{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw cc6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,il0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=ol0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new of(Y))}if(this.randomize)(0,nl0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,pl0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,il0.getUrlParseFn)();$=X?X($):$;let Q=new of($,Z);if((0,pl0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}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 o50.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return o50.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 X=[],Q=[],Y=(0,il0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new of(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,nl0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}Wn1.Servers=o50});var r50=_((Fn1)=>{Object.defineProperty(Fn1,"__esModule",{value:!0});Fn1.QueuedIteratorImpl=void 0;var al0=KJ(),Nn1=yY();class Un1{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,al0.deferred)(),this.yields=[],this.iterClosed=(0,al0.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(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new Nn1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Nn1.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 Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,al0.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}}Fn1.QueuedIteratorImpl=Un1});var sl0=_((Ln1)=>{Object.defineProperty(Ln1,"__esModule",{value:!0});Ln1.MuxSubscription=void 0;var nc6=Ow(),Bn1=yY();class On1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,nc6.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((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new Bn1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new Bn1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Ln1.MuxSubscription=On1});var el0=_((zn1)=>{Object.defineProperty(zn1,"__esModule",{value:!0});zn1.Heartbeat=void 0;var pc6=KJ();class En1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,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,pc6.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})}}zn1.Heartbeat=En1});var Xd0=_((Rn1)=>{Object.defineProperty(Rn1,"__esModule",{value:!0});Rn1.DenoBuffer=Rn1.MAX_SIZE=Rn1.AssertionError=void 0;Rn1.assert=An1;Rn1.concat=Tn1;Rn1.append=oc6;Rn1.readAll=rc6;Rn1.writeAll=ac6;var tc6=bY();class $d0 extends Error{constructor($){super($);this.name="AssertionError"}}Rn1.AssertionError=$d0;function An1($,Z="Assertion failed."){if(!$)throw new $d0(Z)}var Pn1=32768;Rn1.MAX_SIZE=4294967294;function a50($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function Tn1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function oc6($,Z){return Tn1($,Uint8Array.of(Z))}class Zd0{_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($){An1($<=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=a50(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(tc6.TE.encode($))}write($){let Z=this._grow($.byteLength);return a50($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)a50(this._buf.subarray(this._off),this._buf);else if(Q+$>Rn1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,Rn1.MAX_SIZE));a50(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,Rn1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(Pn1);while(!0){let Q=this.capacity-this.length<Pn1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}Rn1.DenoBuffer=Zd0;function rc6($){let Z=new Zd0;return Z.readFrom($),Z.bytes()}function ac6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var Gd0=_((Vn1)=>{Object.defineProperty(Vn1,"__esModule",{value:!0});Vn1.cc=Vn1.State=Vn1.Parser=Vn1.Kind=void 0;Vn1.describe=Yl6;var Qd0=Xd0(),Yd0=bY();Vn1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function Yl6($){let Z,X="";switch($.kind){case Vn1.Kind.MSG:Z="MSG";break;case Vn1.Kind.OK:Z="OK";break;case Vn1.Kind.ERR:Z="ERR",X=Yd0.TD.decode($.data);break;case Vn1.Kind.PING:Z="PING";break;case Vn1.Kind.PONG:Z="PONG";break;case Vn1.Kind.INFO:Z="INFO",X=Yd0.TD.decode($.data)}return`${Z}: ${X}`}function qn1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var Mn1=48,Gl6=57,rf=67108864;class kn1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=Vn1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case Vn1.State.OP_START:switch(X){case Vn1.cc.M:case Vn1.cc.m:this.state=Vn1.State.OP_M,this.hdr=-1,this.ma=qn1();break;case Vn1.cc.H:case Vn1.cc.h:this.state=Vn1.State.OP_H,this.hdr=0,this.ma=qn1();break;case Vn1.cc.P:case Vn1.cc.p:this.state=Vn1.State.OP_P;break;case Vn1.cc.PLUS:this.state=Vn1.State.OP_PLUS;break;case Vn1.cc.MINUS:this.state=Vn1.State.OP_MINUS;break;case Vn1.cc.I:case Vn1.cc.i:this.state=Vn1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_H:switch(X){case Vn1.cc.M:case Vn1.cc.m:this.state=Vn1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_M:switch(X){case Vn1.cc.S:case Vn1.cc.s:this.state=Vn1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_MS:switch(X){case Vn1.cc.G:case Vn1.cc.g:this.state=Vn1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_MSG:switch(X){case Vn1.cc.SPACE:case Vn1.cc.TAB:this.state=Vn1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_MSG_SPC:switch(X){case Vn1.cc.SPACE:case Vn1.cc.TAB:continue;default:this.state=Vn1.State.MSG_ARG,this.as=Z}break;case Vn1.State.MSG_ARG:switch(X){case Vn1.cc.CR:this.drop=1;break;case Vn1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=Vn1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case Vn1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:Vn1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Vn1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:Vn1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Vn1.State.MSG_END;break;case Vn1.State.MSG_END:switch(X){case Vn1.cc.NL:this.drop=0,this.as=Z+1,this.state=Vn1.State.OP_START;break;default:continue}break;case Vn1.State.OP_PLUS:switch(X){case Vn1.cc.O:case Vn1.cc.o:this.state=Vn1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_PLUS_O:switch(X){case Vn1.cc.K:case Vn1.cc.k:this.state=Vn1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_PLUS_OK:switch(X){case Vn1.cc.NL:this.dispatcher.push({kind:Vn1.Kind.OK}),this.drop=0,this.state=Vn1.State.OP_START;break}break;case Vn1.State.OP_MINUS:switch(X){case Vn1.cc.E:case Vn1.cc.e:this.state=Vn1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_MINUS_E:switch(X){case Vn1.cc.R:case Vn1.cc.r:this.state=Vn1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_MINUS_ER:switch(X){case Vn1.cc.R:case Vn1.cc.r:this.state=Vn1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_MINUS_ERR:switch(X){case Vn1.cc.SPACE:case Vn1.cc.TAB:this.state=Vn1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_MINUS_ERR_SPC:switch(X){case Vn1.cc.SPACE:case Vn1.cc.TAB:continue;default:this.state=Vn1.State.MINUS_ERR_ARG,this.as=Z}break;case Vn1.State.MINUS_ERR_ARG:switch(X){case Vn1.cc.CR:this.drop=1;break;case Vn1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:Vn1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=Vn1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case Vn1.State.OP_P:switch(X){case Vn1.cc.I:case Vn1.cc.i:this.state=Vn1.State.OP_PI;break;case Vn1.cc.O:case Vn1.cc.o:this.state=Vn1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_PO:switch(X){case Vn1.cc.N:case Vn1.cc.n:this.state=Vn1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_PON:switch(X){case Vn1.cc.G:case Vn1.cc.g:this.state=Vn1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_PONG:switch(X){case Vn1.cc.NL:this.dispatcher.push({kind:Vn1.Kind.PONG}),this.drop=0,this.state=Vn1.State.OP_START;break}break;case Vn1.State.OP_PI:switch(X){case Vn1.cc.N:case Vn1.cc.n:this.state=Vn1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_PIN:switch(X){case Vn1.cc.G:case Vn1.cc.g:this.state=Vn1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_PING:switch(X){case Vn1.cc.NL:this.dispatcher.push({kind:Vn1.Kind.PING}),this.drop=0,this.state=Vn1.State.OP_START;break}break;case Vn1.State.OP_I:switch(X){case Vn1.cc.N:case Vn1.cc.n:this.state=Vn1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_IN:switch(X){case Vn1.cc.F:case Vn1.cc.f:this.state=Vn1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_INF:switch(X){case Vn1.cc.O:case Vn1.cc.o:this.state=Vn1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_INFO:switch(X){case Vn1.cc.SPACE:case Vn1.cc.TAB:this.state=Vn1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case Vn1.State.OP_INFO_SPC:switch(X){case Vn1.cc.SPACE:case Vn1.cc.TAB:continue;default:this.state=Vn1.State.INFO_ARG,this.as=Z}break;case Vn1.State.INFO_ARG:switch(X){case Vn1.cc.CR:this.drop=1;break;case Vn1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:Vn1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=Vn1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===Vn1.State.MSG_ARG||this.state===Vn1.State.MINUS_ERR_ARG||this.state===Vn1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new Qd0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===Vn1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new Qd0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new Qd0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case Vn1.cc.SPACE:case Vn1.cc.TAB:case Vn1.cc.CR:case Vn1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));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],rf);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],rf);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}: ${Yd0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case Vn1.cc.SPACE:case Vn1.cc.TAB:case Vn1.cc.CR:case Vn1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));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],rf),this.ma.size=this.protoParseInt(Z[3],rf);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],rf),this.ma.size=this.protoParseInt(Z[4],rf);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 X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<Mn1||$[Q]>Gl6)return-1;X=X*10+($[Q]-Mn1)}return Z!==void 0&&X>Z?-1:X}}Vn1.Parser=kn1;Vn1.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};Vn1.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 $90=_((Cn1)=>{Object.defineProperty(Cn1,"__esModule",{value:!0});Cn1.MsgHdrsImpl=void 0;Cn1.canonicalMIMEHeaderKey=Kd0;Cn1.headers=Wl6;var Sn1=bY(),WJ=Ow(),e50=yY();function Kd0($){let N=!0,U=Array($.length);for(let F=0;F<$.length;F++){let w=$.charCodeAt(F);if(w===58||w<33||w>126)throw e50.InvalidArgumentError.format("header",`'${$[F]}' is not a valid character in a header name`);if(N&&97<=w&&w<=122)w-=32;else if(!N&&65<=w&&w<=90)w+=32;U[F]=w,N=w==45}return String.fromCharCode(...U)}function Wl6($=0,Z=""){if($===0&&Z!=="")throw e50.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw e50.InvalidArgumentError.format("description","is required");return new af($,Z)}var Jd0="NATS/1.0";class af{_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,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new af,Q=Sn1.TD.decode($).split(`\r
1297
1297
  `),Y=Q[0];if(Y!==Jd0){let G=Y.replace(Jd0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=Jd0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
1298
1298
  ${Z}: ${X[Q]}`;return`${$}\r
@@ -2805,7 +2805,7 @@ ${$.description}
2805
2805
  Task description:
2806
2806
  ${Z.description}
2807
2807
  `:"","How to work:",`- Call \`${W}\` with the task id below to find the pull request under review.`,J?`- The repository ${J.owner}/${J.name} is already cloned at your working directory and \`git\` and \`gh\` are authenticated \u2014 check the PR's branch out there to inspect / exercise the change.`:K?"- Your working directory is EMPTY. Call `mcp__studio__TASK_ADD_REPO` with the connectionId of the PR's repository FIRST; it clones the repository and waits for the checkout, and `git` and `gh` are authenticated once it returns.":"- Load the PR's repository to inspect / exercise the change.",`- End the run by calling \`${H}\` exactly once with the task id, reviewer "${X}", the reviewToken below, and your decision:`," - `approve` when it's good to ship. Include a short summary of what you verified."," - `request_changes` when something is wrong or missing. Include specific, actionable notes \u2014 the task goes back to the Super Agent with your notes.","- The reviewToken proves you are this reviewer \u2014 pass it through EXACTLY as given. Without it your approval won't count toward an automatic merge.",`- \`${H}\` is how the verdict is recorded. A review that ends without it is thrown away and the task stays stuck In Review, so call it even when your notes are short.`,"",`(task id: ${Z.id})`,`(reviewToken: ${Q})`].join(`
2808
- `);await Ia($,Z,{title:`${Qt[X]}: ${Z.title}`,prompt:U,temperature:0.3,...K?{harnessId:"claude-code",agent:{instructions:N,disallowedTools:Qd4[X]}}:{},...J?{repo:J}:{}}),await AX($,{taskBoardItemId:Z.id,action:"review_requested",actorId:null,data:{reviewer:X}});let F=await $.storage.taskBoard.getById(Z.id,Y);if(F)K5(Y,F)}var Xd4,Qd4,Yd4;var OZ1=O(()=>{$Q();DH();jX();KZ1();WZ1();Xd4=new Set(["completed","failed","expired"]),Qd4={qa:["Edit","NotebookEdit"],code_review:["Write","Edit","NotebookEdit"]},Yd4={qa:"You are the QA Agent. Your job is to confirm the task ACTUALLY SOLVED THE "+"PROBLEM \u2014 not to review code style. Exercise the feature/behavior the task "+"describes (use the PR's preview / dev server when available), check the acceptance criteria implied by the title and description, and look for regressions in the affected flow. Judge outcomes, not the diff.",code_review:"You are the Code Reviewer. Review the code changes for correctness, security, and quality. FIRST look for a review skill/command appropriate to this repository's stack (e.g. a `/review`, `code-review`, or `security-review` skill, or the repo's CONTRIBUTING/review guidelines) and use it. Read the diff critically and flag concrete issues with file/line references."}});function Wd4($){return $.filter((X)=>X.action==="merge_conflict_resolution").length>=z_8}async function uP0($,Z,X,Q){if(X.status!=="in_review")return!1;if(X.assigneeId!==m$)return!1;if(Q.conflict!==!0)return!1;let G=(await $.storage.organizationSettings.get(Z))?.flags??{};if(G.auto_merge!==!0)return!1;let J=uJ.filter((N)=>G[yB[N]]===!0),K=await $.storage.taskBoard.listActivity(X.id,Z);if(!qg(K,J,{verifiedOnly:!0}))return!1;if(Wd4(K))return console.warn(`[task-board] conflict auto-resolve cap (${z_8}) reached on task ${X.id} \u2014 leaving the PR for a human`),!1;let W=Q.pr,H=await $.storage.taskBoard.claimConflictResolution(X.id,Z,X.updatedBy);if(!H)return!1;await AX($,{taskBoardItemId:X.id,action:"merge_conflict_resolution",actorId:null,data:{prNumber:W.number}}),K5(Z,H);try{await p_($,H,{pr:{number:W.number,url:W.url},resolveConflict:!0})}catch(N){throw await $.storage.taskBoard.update(H.id,Z,{status:"in_review"},"system").then((U)=>K5(Z,U)).catch((U)=>console.error("[task-board] conflict-resolution status revert failed",U)),N}return!0}var z_8=3;var LZ1=O(()=>{$Q();DH();jX();t_()});import{z as cP0}from"zod";async function Ma($,Z,X,Q){if(X){let J=await $.storage.connections.findById(X,Z);if(J&&J.status==="active")return J}let{items:Y}=await $.storage.connections.list(Z,{slug:"mcp-github"}),G=Y.filter((J)=>J.status==="active");if(Q){let J=G.find((K)=>{let W=QQ(K);return W?.owner===Q.owner&&W?.repo===Q.name});if(J)return J}return G.find((J)=>QQ(J)===null)??G[0]??null}function ka($){if(!$||typeof $!=="object")return null;let Z=$;if(Z.isError)return null;if(Z.structuredContent&&typeof Z.structuredContent==="object"&&Object.keys(Z.structuredContent).length>0)return Z.structuredContent;let X=Z.content?.find((Q)=>Q.type==="text")?.text;if(!X)return null;try{return JSON.parse(X)}catch{return null}}function EZ1($){let Z;try{Z=new URL($).hostname.toLowerCase()}catch{return!1}return Z==="deco.site"||Z.endsWith(".decocdn.com")||Z.endsWith(".deco-cx.workers.dev")||Z.endsWith(".deco.site")}function Hd4($){if(!$||!Array.isArray($.statuses))return null;let Z=$.statuses.map((X)=>X&&typeof X==="object"?X:null).filter((X)=>!!X&&typeof X.target_url==="string"&&EZ1(X.target_url));if(Z.length===0)return null;return Z.find((X)=>X.state==="success")?.target_url??Z[0].target_url}function Nd4($){let Z=Array.isArray($)?$:Array.isArray($?.comments)?$.comments:Array.isArray($?.items)?$.items:[];for(let X of Z){let Q=X&&typeof X.body==="string"?X.body:"";if(!Q)continue;let Y=Q.match(/href=['"]([^'"]+)['"][^>]*>\s*Branch Preview/i);if(Y?.[1]&&EZ1(Y[1]))return Y[1];let G=(Q.match(/https?:\/\/[^\s"'<>)\]]+/g)??[]).find((J)=>EZ1(J));if(G)return G}return null}function j_8($){if(!$)return null;if((typeof $.total_count==="number"?$.total_count:null)===0)return null;switch($.state){case"success":return"passing";case"failure":case"error":return"failing";case"pending":return"pending";default:return null}}function A_8($){let Z=Array.isArray($)?$:Array.isArray($?.check_runs)?$.check_runs:[];if(Z.length===0)return null;let X=!1,Q=!1;for(let Y of Z){if(!Y||typeof Y!=="object")continue;let{status:G,conclusion:J}=Y;if(G!=="completed")Q=!0;else if(typeof J==="string"&&P_8.has(J))X=!0}if(X)return"failing";if(Q)return"pending";return"passing"}function T_8($,Z){if($==="failing"||Z==="failing")return"failing";if($==="pending"||Z==="pending")return"pending";if($==="passing"||Z==="passing")return"passing";return null}function Ud4($){let Z=Array.isArray($)?$:Array.isArray($?.check_runs)?$.check_runs:[],X=[];for(let Q of Z){if(!Q||typeof Q!=="object")continue;let Y=Q;X.push({id:typeof Y.id==="number"?Y.id:null,name:typeof Y.name==="string"?Y.name:"",status:typeof Y.status==="string"?Y.status:"completed",conclusion:typeof Y.conclusion==="string"?Y.conclusion:null,detailsUrl:typeof Y.html_url==="string"?Y.html_url:typeof Y.details_url==="string"?Y.details_url:null})}return X}function Fd4($){return $.status==="completed"&&$.conclusion!=null&&P_8.has($.conclusion)}async function wd4($,Z,X){try{let Y=ka(await $.callTool({name:"GET_CHECK_RUN",arguments:{owner:Z.repoOwner,repo:Z.repoName,checkRunId:X}},void 0,{timeout:qa}))?.output,G=typeof Y?.summary==="string"?Y.summary:null,J=typeof Y?.text==="string"?Y.text:null;return G??J??null}catch{return null}}async function R_8($,Z,X){let Q=await Ma($,Z,X.connectionId,{owner:X.repoOwner,name:X.repoName});if(!Q)return null;let Y=await h5(Q,$,!0),G=async(J)=>ka(await Y.callTool({name:"pull_request_read",arguments:{method:J,owner:X.repoOwner,repo:X.repoName,pullNumber:X.number}},void 0,{timeout:qa}));try{let J=null;try{J=j_8(await G("get_status"))}catch{}try{J=T_8(J,A_8(await G("get_check_runs")))}catch{}return J}finally{await Y.close().catch(()=>{})}}function I_8($){if(!$)return null;if($.state!=="open")return!1;return typeof $.mergeable==="boolean"?!$.mergeable:null}async function q_8($,Z,X){let Q=await Ma($,Z,X.connectionId,{owner:X.repoOwner,name:X.repoName});if(!Q)return null;let Y=await h5(Q,$,!0);try{return I_8(ka(await Y.callTool({name:"pull_request_read",arguments:{method:"get",owner:X.repoOwner,repo:X.repoName,pullNumber:X.number}},void 0,{timeout:qa})))}catch{return null}finally{await Y.close().catch(()=>{})}}async function Bd4($,Z){let X=async(H)=>{try{return ka(await $.callTool({name:"pull_request_read",arguments:{method:H,owner:Z.repoOwner,repo:Z.repoName,pullNumber:Z.number}},void 0,{timeout:qa}))}catch{return null}},[Q,Y,G]=await Promise.all([X("get_status"),X("get_check_runs"),X("get_comments")]),J=T_8(j_8(Q),A_8(Y)),K=Hd4(Q)??Nd4(G),W=await Promise.all(Ud4(Y).map(async(H)=>({name:H.name,status:H.status,conclusion:H.conclusion,detailsUrl:H.detailsUrl,summary:Fd4(H)&&H.id!=null?await wd4($,Z,H.id):null})));return{checksStatus:J,checks:W,previewUrl:K}}async function jZ1($,Z,X){let Q=await Ma($,Z,X.connectionId,{owner:X.repoOwner,name:X.repoName});if(!Q)return DZ1;let Y=await h5(Q,$,!0);try{let[G,J]=await Promise.all([Y.callTool({name:"pull_request_read",arguments:{method:"get",owner:X.repoOwner,repo:X.repoName,pullNumber:X.number}},void 0,{timeout:qa}),Bd4(Y,X)]),K=ka(G);if(!K)return DZ1;let W=K.state,H=W==="open";return{title:typeof K.title==="string"?K.title:null,body:typeof K.body==="string"?K.body:null,state:W==="closed"?"closed":H?"open":null,draft:typeof K.draft==="boolean"?K.draft:null,merged:typeof K.merged==="boolean"?K.merged:null,mergeable:H&&typeof K.mergeable==="boolean"?K.mergeable:null,checksStatus:H?J.checksStatus:null,checks:H?J.checks:[],previewUrl:H?J.previewUrl:null}}catch{return DZ1}finally{await Y.close().catch(()=>{})}}var qa=8000,DZ1,P_8,zZ1=($)=>{let Z=$.find((X)=>X.state==="open"&&!X.merged);return Z!=null&&Z.checksStatus!=="pending"&&Z.checksStatus!=="failing"},PZ1;var Va=O(()=>{t0();zU();pW();$Q();UH();DH();jX();OZ1();LZ1();XP0();DZ1={title:null,body:null,state:null,draft:null,merged:null,mergeable:null,checksStatus:null,checks:[],previewUrl:null};P_8=new Set(["failure","cancelled","timed_out","action_required","startup_failure","stale"]);PZ1=o({name:"TASK_BOARD_ITEM_PRS_GET",description:"Get the GitHub pull requests linked to a task board item, each enriched with live state (title, open/closed, draft, merged) fetched from GitHub.",annotations:{title:"Get Task Board Item Pull Requests",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:cP0.object({taskBoardItemId:cP0.string()}),outputSchema:cP0.object({prs:cP0.array(AM8)}),handler:async({taskBoardItemId:$},Z)=>{N0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X);for(let W of Q?.threads??[]){let H=W.lastMessage?Xu(W.lastMessage):null;if(!H)continue;try{await Z.storage.taskBoard.linkPr({taskBoardItemId:$,organizationId:X,url:H.url,prNumber:H.number,repoOwner:H.owner,repoName:H.repo,connectionId:null})}catch(N){console.error("[task-board] PR recovery from thread text failed",N)}}let Y=await Z.storage.taskBoard.listPrs($,X),G=await Promise.all(Y.map(async(W)=>{let H=await jZ1(Z,X,W);return{url:W.url,number:W.number,repoOwner:W.repoOwner,repoName:W.repoName,createdAt:W.createdAt,...H}})),J=G.find((W)=>W.state==="open"&&!W.merged);if(Q&&Q.status==="in_review"&&Q.assigneeId===m$&&zZ1(G))await hP0(Z,Q).catch((W)=>{console.error("[task-board] reviewer auto-handoff failed",W)});let K=J?I_8({state:J.state,mergeable:J.mergeable}):null;if(Q&&Q.status==="in_review"&&Q.assigneeId===m$&&J&&K===!0)await uP0(Z,X,Q,{pr:{number:J.number,url:J.url},conflict:!0}).catch((W)=>{console.error("[task-board] conflict auto-resolve failed",W)});if(G.some((W)=>W.merged))try{if(Q&&Q.status!=="done"){let W=await Z.storage.taskBoard.update($,X,{status:"done"},Q.updatedBy);await AX(Z,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:Q.status,to:"done"}}),K5(X,W)}}catch(W){console.error("[task-board] merge\u2192done reconcile failed",W)}return{prs:G}}})});import{z as Fu}from"zod";function Ld4($){return $.threads.filter((Z)=>Z.status!==null&&!Yt.has(Z.status)).map((Z)=>Z.threadId)}var Od4="Superseded by a manual re-run of this task",AZ1;var M_8=O(()=>{t0();$Q();Nz();DH();jX();t_();AZ1=o({name:"TASK_BOARD_ITEM_RERUN",description:"Re-run a task board item with the Super Agent, whatever lane it is in. Use this to retry a task that stalled, finished without doing the job, or is already assigned to the Super Agent (in which case re-assigning it does nothing). Fails any run still holding the task open, moves it to In Progress, and queues a fresh run.",annotations:{title:"Re-run Task",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:Fu.object({id:Fu.string().describe("The task board item to re-run.")}),outputSchema:Fu.object({status:Fu.string().describe("The task's lane after the re-run was queued."),supersededThreadIds:Fu.array(Fu.string()).describe("Runs that were failed to make room for this one.")}),handler:async({id:$},Z)=>{N0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X);if(!Q)throw Error(`Task board item not found: ${$}`);if(Q.assigneeId!==m$)throw Error("Only a task assigned to the Super Agent can be re-run. Assign it to "+"the Super Agent instead \u2014 that queues a run by itself.");let Y=[];for(let J of Ld4(Q))if(await Z.storage.threads.failIfNotTerminal(J,Od4,"superseded"))Y.push(J);let G=await Z.storage.taskBoard.update($,X,{status:"in_progress"},z1(Z));return await AX(Z,{taskBoardItemId:$,action:"status_changed",actorId:z1(Z),data:{from:Q.status,to:"in_progress",reason:"rerun"}}),K5(X,G),await p_(Z,G),{status:G.status,supersededThreadIds:Y}}})});async function lP0($,Z,X){let Y=(await $.storage.taskBoard.listPrs(X,Z))[0];if(!Y)return!1;let G=await R_8($,Z,Y);if(G==="failing"||G==="pending")return console.warn(`[task-board] merge blocked \u2014 checks ${G} on PR #${Y.number}`),!1;let J=await Ma($,Z,Y.connectionId,{owner:Y.repoOwner,name:Y.repoName});if(!J)return!1;let K=await h5(J,$,!0);try{return!(await K.callTool({name:"merge_pull_request",arguments:{owner:Y.repoOwner,repo:Y.repoName,pullNumber:Y.number}},void 0,{timeout:Dd4}))?.isError}catch(W){return console.error("[task-board] merge PR failed",W),!1}finally{await K.close().catch(()=>{})}}var Dd4=15000;var TZ1=O(()=>{zU();Va()});import{z as tO}from"zod";async function Ed4($,Z,X){let Y=(await $.storage.organizationSettings.get(Z))?.flags??{},G=uJ.filter((K)=>Y[yB[K]]===!0),J=await $.storage.taskBoard.listActivity(X,Z);return qg(J,G,{verifiedOnly:!0})}var RZ1;var k_8=O(()=>{t0();$Q();UH();DH();jX();t_();TZ1();Va();LZ1();YU();RZ1=o({name:"TASK_BOARD_REVIEW_DECISION",description:"Record a reviewer's decision for a task under review. `approve` marks the pull request approved by that reviewer (and, once EVERY enabled reviewer has approved, merges it when the org enabled auto-merge, advancing the task to Done); `request_changes` hands the task back to the Super Agent with your notes so it can fix the PR.",annotations:{title:"Review Decision",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:tO.object({taskBoardItemId:tO.string(),reviewer:tO.enum(["qa","code_review"]).describe("Which reviewer you are: `qa` (QA Agent) or `code_review` (Code Reviewer)."),reviewToken:tO.string().optional().describe("The reviewToken from your prompt \u2014 proves you are this reviewer. "+"Pass it through exactly; an approval without a valid token is recorded but does NOT count toward an automatic merge."),decision:tO.enum(["approve","request_changes"]),notes:tO.string().min(1).describe("For approve: a short summary of what you verified. For request_changes: specific, actionable feedback the Super Agent must address.")}),outputSchema:tO.object({status:yU,merged:tO.boolean().describe("True when this approval completed the review and merged the PR.")}),handler:async({taskBoardItemId:$,reviewer:Z,reviewToken:X,decision:Q,notes:Y},G)=>{N0(G),await G.access.check();let J=G.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");let K=await G.storage.taskBoard.getById($,J);if(!K)throw Error(`Task board item not found: ${$}`);let H=(X?await G.storage.taskBoard.resolveReviewClaimByToken($,X):null)?.reviewer===Z;if(Q==="request_changes"){let L=await G.storage.taskBoard.claimReviewChangesBounce($,J,K.updatedBy);if(await AX(G,{taskBoardItemId:$,action:"review_changes_requested",actorId:null,data:{reviewer:Z,notes:Y,verified:H}}),!L)return{status:(await G.storage.taskBoard.getById($,J)??K).status,merged:!1};K5(J,L);let E=(await G.storage.taskBoard.listPrs($,J))[0];return await p_(G,L,{feedback:`${Qt[Z]}: ${Y}`,pr:E?{number:E.number,url:E.url}:void 0}).catch((z)=>{if(z instanceof J3)throw z;console.error("[task-board] request_changes re-enqueue failed",z)}),{status:L.status,merged:!1}}if(await AX(G,{taskBoardItemId:$,action:"review_approved",actorId:null,data:{reviewer:Z,notes:Y,verified:H}}),!await Ed4(G,J,$)){let L=await G.storage.taskBoard.getById($,J)??K;return K5(J,L),{status:L.status,merged:!1}}let F=(await G.storage.organizationSettings.get(J))?.flags?.auto_merge===!0;if(F?await lP0(G,J,$):!1){let L=await G.storage.taskBoard.update($,J,{status:"done"},K.updatedBy);return await AX(G,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:K.status,to:"done"}}),K5(J,L),{status:L.status,merged:!0}}let B=await G.storage.taskBoard.getById($,J)??K;if(F){let D=(await G.storage.taskBoard.listPrs($,J))[0];if(D?await uP0(G,J,B,{pr:{number:D.number,url:D.url},conflict:await q_8(G,J,D)}).catch((z)=>{if(z instanceof J3)throw z;return console.error("[task-board] conflict auto-resolve failed",z),!1}):!1)return{status:(await G.storage.taskBoard.getById($,J)??B).status,merged:!1}}return K5(J,B),{status:B.status,merged:!1}}})});import{z as dP0}from"zod";function zd4($,Z,X){if($!=="in_review")return!1;return X.length===0||qg(Z,X)}var IZ1;var V_8=O(()=>{t0();$Q();UH();DH();jX();TZ1();IZ1=o({name:"TASK_BOARD_PROMOTE_TO_PRODUCTION",description:"Ship a reviewed task: merge its open pull request and move the task to Done. Used by the board's 'Ship to production' button after the enabled reviewers approved, when auto-merge is off (a human does the final merge).",annotations:{title:"Ship to Production",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:dP0.object({taskBoardItemId:dP0.string()}),outputSchema:dP0.object({status:yU,merged:dP0.boolean().describe("True when the PR was merged.")}),handler:async({taskBoardItemId:$},Z)=>{N0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X);if(!Q)throw Error(`Task board item not found: ${$}`);let G=(await Z.storage.organizationSettings.get(X))?.flags??{},J=uJ.filter((N)=>G[yB[N]]===!0),K=await Z.storage.taskBoard.listActivity($,X);if(!zd4(Q.status,K,J))throw Error("Task is not ready to ship: it must be In Review with every enabled reviewer approved");if(!await lP0(Z,X,$))return{status:Q.status,merged:!1};let H=await Z.storage.taskBoard.update($,X,{status:"done"},Q.updatedBy);if(Q.status!=="done")await AX(Z,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:Q.status,to:"done"}});return K5(X,H),{status:H.status,merged:!0}}})});import{z as M3}from"zod";function S_8($){if(!$)throw Error("Organization ID required (no active organization in context)");return $}var jd4,qZ1,MZ1;var C_8=O(()=>{t0();jd4=M3.object({externalKey:M3.string(),dismissedBy:M3.string(),dismissedAt:M3.string()});qZ1=o({name:"TASK_BOARD_DISMISSED_LIST",description:"List the diagnostic findings this organization has dismissed by deleting their task board cards. The import skips these until they're restored.",annotations:{title:"List Dismissed Findings",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:M3.object({}),outputSchema:M3.object({findings:M3.array(jd4)}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=S_8(Z.organization?.id);return{findings:await Z.storage.taskBoard.listDismissedFindings(X)}}}),MZ1=o({name:"TASK_BOARD_DISMISSED_RESTORE",description:"Un-dismiss diagnostic findings, returning their cards to the board. Omit externalKeys to restore every dismissed finding.",annotations:{title:"Restore Dismissed Findings",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:M3.object({externalKeys:M3.array(M3.string()).optional()}),outputSchema:M3.object({restored:M3.number()}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=S_8(Z.organization?.id);return{restored:await Z.storage.taskBoard.restoreDismissedFindings(X,$.externalKeys)}}})});import{z as t$}from"zod";function mP0($){let Z=$.organization?.id;if(!Z)throw Error("Organization ID required (no active organization in context)");return Z}var kZ1,VZ1,SZ1,CZ1,_Z1;var __8=O(()=>{t0();$Q();kj0();kZ1=t$.object({id:t$.string(),taskBoardItemId:t$.string(),parentId:t$.string().nullable(),authorId:t$.string(),body:t$.string(),resolved:t$.boolean(),createdAt:t$.string(),updatedAt:t$.string()});VZ1=o({name:"TASK_BOARD_COMMENT_LIST",description:"List a task board item's comments (flat, oldest first; replies carry parentId).",annotations:{title:"List Task Comments",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:t$.object({taskBoardItemId:t$.string()}),outputSchema:t$.object({comments:t$.array(kZ1)}),handler:async($,Z)=>{return N0(Z),await Z.access.check(),{comments:await Z.storage.taskBoard.listComments($.taskBoardItemId,mP0(Z))}}}),SZ1=o({name:"TASK_BOARD_COMMENT_CREATE",description:"Post a comment on a task board item, or a reply to one.",annotations:{title:"Create Task Comment",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:t$.object({taskBoardItemId:t$.string(),body:t$.string().trim().min(1),parentId:t$.string().nullish()}),outputSchema:t$.object({comment:kZ1}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=await Z.storage.taskBoard.createComment({taskBoardItemId:$.taskBoardItemId,organizationId:mP0(Z),parentId:$.parentId??null,authorId:Ja.getStore()?m$:z1(Z),body:$.body});if(!X)throw Error("Task board item not found");return{comment:X}}}),CZ1=o({name:"TASK_BOARD_COMMENT_UPDATE",description:"Edit your own comment's body, or resolve/unresolve a comment thread (root only, any org member may toggle it).",annotations:{title:"Update Task Comment",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:t$.object({id:t$.string(),body:t$.string().trim().min(1).optional(),resolved:t$.boolean().optional()}),outputSchema:t$.object({comment:kZ1}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=await Z.storage.taskBoard.updateComment({id:$.id,organizationId:mP0(Z),callerId:z1(Z),body:$.body,resolved:$.resolved});if(!X)throw Error("Comment not found, or you can only edit your own comments");return{comment:X}}}),_Z1=o({name:"TASK_BOARD_COMMENT_DELETE",description:"Delete your own comment. Deleting a thread root deletes its replies too.",annotations:{title:"Delete Task Comment",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:t$.object({id:t$.string()}),outputSchema:t$.object({success:t$.boolean()}),handler:async($,Z)=>{return N0(Z),await Z.access.check(),{success:await Z.storage.taskBoard.deleteComment($.id,mP0(Z),z1(Z))}}})});var v_8=O(()=>{PM8();w_8();L_8();D_8();E_8();Va();M_8();k_8();V_8();DH();C_8();__8()});import{z as lU}from"zod";var vZ1;var x_8=O(()=>{t0();vZ1=o({name:"TAGS_LIST",description:"List all tags available in the organization.",annotations:{title:"List Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:lU.object({}),outputSchema:lU.object({tags:lU.array(lU.object({id:lU.string(),organizationId:lU.string(),name:lU.string(),color:lU.string().nullable(),createdAt:lU.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=J0(Z);return{tags:(await Z.storage.tags.listOrgTags(X.id)).map((Y)=>({...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():String(Y.createdAt)}))}}})});import{z as EH}from"zod";var xZ1;var f_8=O(()=>{t0();xZ1=o({name:"TAGS_CREATE",description:"Create a new tag, usable on organization members and task board items.",annotations:{title:"Create Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:EH.object({name:EH.string().min(1).max(50).describe("Tag name"),color:EH.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional().describe('Hex color the tag renders its dot with, e.g. "#3b82f6"')}),outputSchema:EH.object({tag:EH.object({id:EH.string(),organizationId:EH.string(),name:EH.string(),color:EH.string().nullable(),createdAt:EH.string().describe("ISO 8601 timestamp")})}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=J0(Z),Q=await Z.storage.tags.createTag(X.id,$.name,$.color);return{tag:{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():String(Q.createdAt)}}}})});import{z as iP0}from"zod";var fZ1;var b_8=O(()=>{t0();fZ1=o({name:"TAGS_DELETE",description:"Delete a tag and automatically remove it from all assigned members.",annotations:{title:"Delete Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:iP0.object({tagId:iP0.string().describe("Tag ID to delete")}),outputSchema:iP0.object({success:iP0.boolean()}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=J0(Z),Q=await Z.storage.tags.getTag($.tagId);if(!Q)throw Error("Tag not found");if(Q.organizationId!==X.id)throw Error("Tag does not belong to this organization");return await Z.storage.tags.deleteTag($.tagId),{success:!0}}})});import{z as zH}from"zod";var bZ1;var y_8=O(()=>{t0();bZ1=o({name:"MEMBER_TAGS_GET",description:"Get all tags currently assigned to a specific member.",annotations:{title:"Get Member Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:zH.object({memberId:zH.string().describe("Member ID")}),outputSchema:zH.object({tags:zH.array(zH.object({id:zH.string(),organizationId:zH.string(),name:zH.string(),color:zH.string().nullable(),createdAt:zH.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=J0(Z);if(!await Z.storage.tags.verifyMemberOrg($.memberId,X.id))throw Error(`Member not found in this organization: ${$.memberId}`);return{tags:(await Z.storage.tags.getMemberTags($.memberId)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():String(G.createdAt)}))}}})});import{z as k3}from"zod";var yZ1;var g_8=O(()=>{t0();yZ1=o({name:"MEMBER_TAGS_SET",description:"Replace all tags on a member with the given set. Pass empty array to clear.",annotations:{title:"Set Member Tags",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:k3.object({memberId:k3.string().describe("Member ID"),tagIds:k3.array(k3.string()).describe("Array of tag IDs to assign")}),outputSchema:k3.object({success:k3.boolean(),tags:k3.array(k3.object({id:k3.string(),organizationId:k3.string(),name:k3.string(),createdAt:k3.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=J0(Z);if(!await Z.storage.tags.verifyMemberOrg($.memberId,X.id))throw Error(`Member not found in this organization: ${$.memberId}`);for(let G of $.tagIds){let J=await Z.storage.tags.getTag(G);if(!J)throw Error(`Tag not found: ${G}`);if(J.organizationId!==X.id)throw Error(`Tag does not belong to this organization: ${G}`)}return await Z.storage.tags.setMemberTags($.memberId,$.tagIds),{success:!0,tags:(await Z.storage.tags.getMemberTags($.memberId)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():String(G.createdAt)}))}}})});var h_8=O(()=>{x_8();f_8();b_8();y_8();g_8()});import{z as u_8}from"zod";function Id4($,Z){let X=$?.[Z];if(!X)return;return Object.entries(X).sort(([,Y],[,G])=>{let J=Math.max(0,...Object.values(Y).map((W)=>W.createdAt??0));return Math.max(0,...Object.values(G).map((W)=>W.createdAt??0))-J})[0]?.[0]}var Td4,Rd4,gZ1;var c_8=O(()=>{S$();t0();h_();iX();Td4=u_8.object({data:yV8.describe("Data for the new thread (id is auto-generated if not provided)")}),Rd4=u_8.object({item:BH.describe("The created thread entity")});gZ1=o({name:"COLLECTION_THREADS_CREATE",description:"Create a new thread for organizing messages and conversations.",annotations:{title:"Create Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Td4,outputSchema:Rd4,handler:async($,Z)=>{N0(Z);let X=J0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("User ID required to create thread");let{data:Y}=$,G=Y.id??$4("thrd"),J=await Z.storage.virtualMcps.findById(Y.virtual_mcp_id,X.id);if(!J||J.organization_id!==X.id)throw Error(`Virtual MCP not found: ${Y.virtual_mcp_id}`);let K=J.metadata,W=K?.githubRepo,H=null;if(W)H=Y.branch??Id4(K?.sandboxMap,Q)??Rj0(Tj0(Z.auth.user));let N=await Z.storage.threads.create({id:G,organization_id:X.id,title:Y.title,description:Y.description,virtual_mcp_id:Y.virtual_mcp_id,branch:H,created_by:Q});if(N.isNew)n1.capture({distinctId:Q,event:"chat_started",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:G,has_title:!!$.data.title,created_via:"tool"}});return{item:q3(N)}}})});import{z as hZ1}from"zod";var qd4,Md4,uZ1;var l_8=O(()=>{S$();t0();h_();qd4=hZ1.object({id:hZ1.string().describe("ID of the thread to update"),data:gV8.describe("Partial thread data to update")}),Md4=hZ1.object({item:BH.describe("The updated thread entity")}),uZ1=o({name:"COLLECTION_THREADS_UPDATE",description:"Update a thread's title, description, or visibility.",annotations:{title:"Update Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:qd4,outputSchema:Md4,handler:async($,Z)=>{N0(Z);let X=J0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("User ID required to update thread");let{id:Y,data:G}=$,J=await Z.storage.threads.get(Y);if(!J)throw Error("Thread not found in organization");if(G.virtual_mcp_id!==void 0){let H=await Z.storage.virtualMcps.findById(G.virtual_mcp_id,X.id);if(!H||H.organization_id!==X.id)throw Error(`Virtual MCP not found: ${G.virtual_mcp_id}`)}if(G.branch===null&&J.virtual_mcp_id){if((await Z.storage.virtualMcps.findById(J.virtual_mcp_id,X.id))?.metadata?.githubRepo)throw Error("Cannot set branch=null on a github-linked thread (vMCP has githubRepo)")}let K={title:G.title,description:G.description,hidden:G.hidden,updated_by:Q};if(G.status)K.status=G.status;if(G.metadata!==void 0)K.metadata=G.metadata;if(G.branch!==void 0)K.branch=G.branch;if(G.virtual_mcp_id!==void 0)K.virtual_mcp_id=G.virtual_mcp_id;let W=await Z.storage.threads.update(Y,K);if(G.hidden!==void 0&&G.hidden!==J.hidden)n1.capture({distinctId:Q,event:G.hidden?"chat_archived":"chat_unarchived",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:Y}});return{item:q3(W)}}})});var cZ1;var d_8=O(()=>{E3();h_();S$();t0();cZ1=o({name:"COLLECTION_THREADS_DELETE",description:"Permanently delete a thread and all its messages.",annotations:{title:"Delete Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:to,outputSchema:oo(BH),handler:async($,Z)=>{N0(Z);let X=J0(Z);await Z.access.check();let Q=await Z.storage.threads.get($.id);if(!Q)throw Error(`Thread not found: ${$.id}`);await Z.storage.threads.delete($.id);let Y=z1(Z);if(Y)n1.capture({distinctId:Y,event:"chat_deleted",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:$.id}});return{item:q3(Q)}}})});var m_8=O(()=>{c_8();Q91();Y91();l_8();d_8();G91()});function Vd4($){return{type:"doc",content:[{type:"paragraph",content:[{type:"text",text:$}]}]}}function Sd4($){return $.map((Z)=>{let X=Z.metadata;if(X?.tiptapDoc)return Z;let Q=Z.parts.find((Y)=>Y.type==="text"&&typeof Y.text==="string");if(!Q?.text||typeof Q.text!=="string")return Z;return{...Z,metadata:{...X,tiptapDoc:Vd4(Q.text)}}})}function nP0($){let Z;if(typeof $==="string")try{let X=JSON.parse($);if(Array.isArray(X)&&X.length>0&&X[0]?.role&&Array.isArray(X[0]?.parts))Z=X;else Z=[{role:"user",parts:[{type:"text",text:$}]}]}catch{Z=[{role:"user",parts:[{type:"text",text:$}]}]}else Z=$;return Sd4(Z)}import{z as o$}from"zod";var lZ1;var i_8=O(()=>{S$();t0();j3();lZ1=o({name:"AUTOMATION_CREATE",description:"Create an automation that runs an agent thread on trigger fire. Requires virtual_mcp_id + messages.",annotations:{title:"Create Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:o$.object({name:o$.string().min(1).max(255),virtual_mcp_id:o$.string(),messages:o$.union([o$.string(),o$.array(o$.looseObject({id:o$.string().optional(),role:o$.enum(["user","assistant","system"]),parts:o$.array(o$.record(o$.string(),o$.unknown())),metadata:o$.unknown().optional()}))]),models:o$.object({tier:WO,modelId:o$.string().optional(),credentialId:o$.string().optional()}).loose().default({tier:"smart"}),tools:o$.array(o$.string()).nullable().optional(),maxAgentSteps:o$.number().int().min(1).max(100).nullable().optional(),temperature:o$.number().default(0.5),active:o$.boolean().default(!0)}),outputSchema:o$.object({id:o$.string(),name:o$.string(),active:o$.boolean(),created_at:o$.string()}),handler:async($,Z)=>{N0(Z);let X=J0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("Unable to determine user identity");let Y=nP0($.messages),G=await Z.storage.automations.create({organization_id:X.id,created_by:Q,name:$.name,messages:JSON.stringify(Y),models:JSON.stringify($.models),tools:$.tools===void 0||$.tools===null?null:JSON.stringify($.tools),max_agent_steps:$.maxAgentSteps??null,temperature:$.temperature,active:$.active,virtual_mcp_id:$.virtual_mcp_id});return n1.capture({distinctId:Q,event:"automation_created",groups:{organization:X.id},properties:{organization_id:X.id,automation_id:G.id,virtual_mcp_id:$.virtual_mcp_id,active:G.active,tier:$.models.tier}}),{id:G.id,name:G.name,active:G.active,created_at:G.created_at}}})});import{z as y$}from"zod";var dZ1;var n_8=O(()=>{t0();dZ1=o({name:"AUTOMATION_GET",description:"Get an automation's full configuration and triggers by ID.",annotations:{title:"Get Automation",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:y$.object({id:y$.string()}),outputSchema:y$.object({automation:y$.object({id:y$.string(),name:y$.string(),active:y$.boolean(),created_by:y$.string(),created_at:y$.string(),updated_at:y$.string(),virtual_mcp_id:y$.string(),messages:y$.unknown(),models:y$.unknown(),tools:y$.array(y$.string()).nullable(),maxAgentSteps:y$.number().nullable(),temperature:y$.number(),triggers:y$.array(y$.object({id:y$.string(),type:y$.enum(["cron","event","webhook"]),cron_expression:y$.string().nullable(),connection_id:y$.string().nullable(),event_type:y$.string().nullable(),params:y$.unknown().nullable(),last_run_at:y$.string().nullable(),api_key_id:y$.string().nullable(),created_at:y$.string()}))}).nullable()}),handler:async($,Z)=>{N0(Z);let X=J0(Z);await Z.access.check();let Q=await Z.storage.automations.findById($.id,X.id);if(!Q)return{automation:null};let Y=await Z.storage.automations.listTriggers(Q.id);return{automation:{id:Q.id,name:Q.name,active:Q.active,created_by:Q.created_by,created_at:Q.created_at,updated_at:Q.updated_at,virtual_mcp_id:Q.virtual_mcp_id,messages:JSON.parse(Q.messages),models:JSON.parse(Q.models),tools:Q.tools?JSON.parse(Q.tools):null,maxAgentSteps:Q.max_agent_steps,temperature:Q.temperature,triggers:Y.map((G)=>({id:G.id,type:G.type,cron_expression:G.cron_expression,connection_id:G.connection_id,event_type:G.event_type,params:G.params?JSON.parse(G.params):null,last_run_at:G.last_run_at,api_key_id:G.api_key_id,created_at:G.created_at}))}}}})});import{z as wG}from"zod";var mZ1;var p_8=O(()=>{t0();mZ1=o({name:"AUTOMATION_LIST",description:"List automations with their status, triggers, and configuration.",annotations:{title:"List Automations",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:wG.object({virtual_mcp_id:wG.string().optional().nullable()}),outputSchema:wG.object({automations:wG.array(wG.object({id:wG.string(),name:wG.string(),active:wG.boolean(),created_by:wG.string(),created_at:wG.string(),trigger_count:wG.number(),nearest_next_run_at:wG.string().nullable(),virtual_mcp_id:wG.string()}))}),handler:async($,Z)=>{N0(Z);let X=J0(Z);return await Z.access.check(),{automations:(await Z.storage.automations.listWithTriggerCounts(X.id,$.virtual_mcp_id)).map((G)=>({id:G.id,name:G.name,active:G.active,created_by:G.created_by,created_at:G.created_at,trigger_count:G.trigger_count,nearest_next_run_at:G.nearest_next_run_at,virtual_mcp_id:G.virtual_mcp_id}))}}})});function Cd4($){if(!$)return null;try{let Z=JSON.parse($);if(Array.isArray(Z)&&Z.every((X)=>typeof X==="string"))return Z.length>0?Z:null}catch{}return null}function t_8($){return`${$}:context`}function o_8($,Z,X,Q,Y){return{messages:JSON.parse($.messages).map((W,H)=>({...W,id:`${X}:${H}`})),models:{credentialId:Q.credentialId,thinking:Q.thinking,...Q.image?{image:Q.image}:{},...Q.webSearch?{webSearch:Q.webSearch}:{},...Q.deepResearch?{deepResearch:Q.deepResearch}:{}},agent:{id:$.virtual_mcp_id},toolAllowlist:Cd4($.tools),maxAgentSteps:$.max_agent_steps??void 0,temperature:$.temperature??0.5,toolApprovalLevel:"auto",mode:"default",organizationId:$.organization_id,userId:$.created_by,harnessId:"decopilot",sandboxProviderKind:"agent-sandbox",triggerId:Z??void 0,...Y?{runMetadata:Y}:{},taskId:X}}function TX($,Z,X,Q,Y,G,J,K){return TX.fromTZ(TX.tp($,Z,X,Q,Y,G,J),K)}function iZ1($,Z=new Date){let X=Z.toLocaleString("en-US",{timeZone:$,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],Q=Z.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${Q} GMT`)-Date.parse(`${Q} ${X}`)}function _d4($,Z){let X=new Date(Date.parse($));if(isNaN(X))throw Error("minitz: Invalid ISO8601 passed to parser.");let Q=$.substring(9);return $.includes("Z")||Q.includes("-")||Q.includes("+")?TX.tp(X.getUTCFullYear(),X.getUTCMonth()+1,X.getUTCDate(),X.getUTCHours(),X.getUTCMinutes(),X.getUTCSeconds(),"Etc/UTC"):TX.tp(X.getFullYear(),X.getMonth()+1,X.getDate(),X.getHours(),X.getMinutes(),X.getSeconds(),Z)}function vd4($){if($===void 0&&($={}),delete $.name,$.legacyMode=$.legacyMode===void 0?!0:$.legacyMode,$.paused=$.paused===void 0?!1:$.paused,$.maxRuns=$.maxRuns===void 0?1/0:$.maxRuns,$.catch=$.catch===void 0?!1:$.catch,$.interval=$.interval===void 0?0:parseInt($.interval.toString(),10),$.utcOffset=$.utcOffset===void 0?void 0:parseInt($.utcOffset.toString(),10),$.unref=$.unref===void 0?!1:$.unref,$.startAt&&($.startAt=new V3($.startAt,$.timezone)),$.stopAt&&($.stopAt=new V3($.stopAt,$.timezone)),$.interval!==null){if(isNaN($.interval))throw Error("CronOptions: Supplied value for interval is not a number");if($.interval<0)throw Error("CronOptions: Supplied value for interval can not be negative")}if($.utcOffset!==void 0){if(isNaN($.utcOffset))throw Error("CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.");if($.utcOffset<-870||$.utcOffset>870)throw Error("CronOptions: utcOffset out of bounds.");if($.utcOffset!==void 0&&$.timezone)throw Error("CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.")}if($.unref!==!0&&$.unref!==!1)throw Error("CronOptions: Unref should be either true, false or undefined(false).");return $}function Sa($){return Object.prototype.toString.call($)==="[object Function]"||typeof $=="function"||$ instanceof Function}function xd4($){return Sa($)}function fd4($){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer($):$&&typeof $.unref<"u"&&$.unref()}var nZ1=32,Ca,e_8,r_8=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor($,Z){this.pattern=$,this.timezone=Z,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern=="string"||this.pattern instanceof String))throw TypeError("CronPattern: Pattern has to be of type string.");this.pattern.indexOf("@")>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let $=this.pattern.replace(/\s+/g," ").split(" ");if($.length<5||$.length>6)throw TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exactly five or six space separated parts are required.");if($.length===5&&$.unshift("0"),$[3].indexOf("L")>=0&&($[3]=$[3].replace("L",""),this.lastDayOfMonth=!0),$[3]=="*"&&(this.starDOM=!0),$[4].length>=3&&($[4]=this.replaceAlphaMonths($[4])),$[5].length>=3&&($[5]=this.replaceAlphaDays($[5])),$[5]=="*"&&(this.starDOW=!0),this.pattern.indexOf("?")>=0){let Z=new V3(new Date,this.timezone).getDate(!0);$[0]=$[0].replace("?",Z.getSeconds().toString()),$[1]=$[1].replace("?",Z.getMinutes().toString()),$[2]=$[2].replace("?",Z.getHours().toString()),this.starDOM||($[3]=$[3].replace("?",Z.getDate().toString())),$[4]=$[4].replace("?",(Z.getMonth()+1).toString()),this.starDOW||($[5]=$[5].replace("?",Z.getDay().toString()))}this.throwAtIllegalCharacters($),this.partToArray("second",$[0],0,1),this.partToArray("minute",$[1],0,1),this.partToArray("hour",$[2],0,1),this.partToArray("day",$[3],-1,1),this.partToArray("month",$[4],-1,1),this.partToArray("dayOfWeek",$[5],0,Ca),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray($,Z,X,Q){let Y=this[$],G=$==="day"&&this.lastDayOfMonth;if(Z===""&&!G)throw TypeError("CronPattern: configuration entry "+$+" ("+Z+") is empty, check for trailing spaces.");if(Z==="*")return Y.fill(Q);let J=Z.split(",");if(J.length>1)for(let K=0;K<J.length;K++)this.partToArray($,J[K],X,Q);else Z.indexOf("-")!==-1&&Z.indexOf("/")!==-1?this.handleRangeWithStepping(Z,$,X,Q):Z.indexOf("-")!==-1?this.handleRange(Z,$,X,Q):Z.indexOf("/")!==-1?this.handleStepping(Z,$,X,Q):Z!==""&&this.handleNumber(Z,$,X,Q)}throwAtIllegalCharacters($){for(let Z=0;Z<$.length;Z++)if((Z===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test($[Z]))throw TypeError("CronPattern: configuration entry "+Z+" ("+$[Z]+") contains illegal characters.")}handleNumber($,Z,X,Q){let Y=this.extractNth($,Z),G=parseInt(Y[0],10)+X;if(isNaN(G))throw TypeError("CronPattern: "+Z+" is not a number: '"+$+"'");this.setPart(Z,G,Y[1]||Q)}setPart($,Z,X){if(!Object.prototype.hasOwnProperty.call(this,$))throw TypeError("CronPattern: Invalid part specified: "+$);if($==="dayOfWeek"){if(Z===7&&(Z=0),Z<0||Z>6)throw RangeError("CronPattern: Invalid value for dayOfWeek: "+Z);this.setNthWeekdayOfMonth(Z,X);return}if($==="second"||$==="minute"){if(Z<0||Z>=60)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="hour"){if(Z<0||Z>=24)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="day"){if(Z<0||Z>=31)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="month"&&(Z<0||Z>=12))throw RangeError("CronPattern: Invalid value for "+$+": "+Z);this[$][Z]=X}handleRangeWithStepping($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(G===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+$+"'");let[,J,K,W]=G,H=parseInt(J,10)+X,N=parseInt(K,10)+X,U=parseInt(W,10);if(isNaN(H))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(N))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(U))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(U===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(U>this[Z].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[Z].length+")");if(H>N)throw TypeError("CronPattern: From value is larger than to value: '"+$+"'");for(let F=H;F<=N;F+=U)this.setPart(Z,F,Y[1]||Q)}extractNth($,Z){let X=$,Q;if(X.includes("#")){if(Z!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");Q=X.split("#")[1],X=X.split("#")[0]}return[X,Q]}handleRange($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].split("-");if(G.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+$+"'");let J=parseInt(G[0],10)+X,K=parseInt(G[1],10)+X;if(isNaN(J))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(J>K)throw TypeError("CronPattern: From value is larger than to value: '"+$+"'");for(let W=J;W<=K;W++)this.setPart(Z,W,Y[1]||Q)}handleStepping($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].split("/");if(G.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+$+"'");G[0]===""&&(G[0]="*");let J=0;G[0]!=="*"&&(J=parseInt(G[0],10)+X);let K=parseInt(G[1],10);if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(K===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(K>this[Z].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[Z].length+")");for(let W=J;W<this[Z].length;W+=K)this.setPart(Z,W,Y[1]||Q)}replaceAlphaDays($){return $.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths($){return $.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames($){let Z=$.trim().toLowerCase();return Z==="@yearly"||Z==="@annually"?"0 0 1 1 *":Z==="@monthly"?"0 0 1 * *":Z==="@weekly"?"0 0 * * 0":Z==="@daily"?"0 0 * * *":Z==="@hourly"?"0 * * * *":$}setNthWeekdayOfMonth($,Z){if(typeof Z!="number"&&Z==="L")this.dayOfWeek[$]=this.dayOfWeek[$]|nZ1;else if(Z===Ca)this.dayOfWeek[$]=Ca;else if(Z<6&&Z>0)this.dayOfWeek[$]=this.dayOfWeek[$]|e_8[Z-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${Z}, Type: ${typeof Z}`)}},a_8,dU,V3=class ${tz;ms;second;minute;hour;day;month;year;constructor(Z,X){if(this.tz=X,Z&&Z instanceof Date)if(!isNaN(Z))this.fromDate(Z);else throw TypeError("CronDate: Invalid date passed to CronDate constructor");else if(Z===void 0)this.fromDate(new Date);else if(Z&&typeof Z=="string")this.fromString(Z);else if(Z instanceof $)this.fromCronDate(Z);else throw TypeError("CronDate: Invalid type ("+typeof Z+") passed to CronDate constructor")}isNthWeekdayOfMonth(Z,X,Q,Y){let G=new Date(Date.UTC(Z,X,Q)).getUTCDay(),J=0;for(let K=1;K<=Q;K++)new Date(Date.UTC(Z,X,K)).getUTCDay()===G&&J++;if(Y&Ca&&e_8[J-1]&Y)return!0;if(Y&nZ1){let K=new Date(Date.UTC(Z,X+1,0)).getUTCDate();for(let W=Q+1;W<=K;W++)if(new Date(Date.UTC(Z,X,W)).getUTCDay()===G)return!1;return!0}return!1}fromDate(Z){if(this.tz!==void 0)if(typeof this.tz=="number")this.ms=Z.getUTCMilliseconds(),this.second=Z.getUTCSeconds(),this.minute=Z.getUTCMinutes()+this.tz,this.hour=Z.getUTCHours(),this.day=Z.getUTCDate(),this.month=Z.getUTCMonth(),this.year=Z.getUTCFullYear(),this.apply();else{let X=TX.toTZ(Z,this.tz);this.ms=Z.getMilliseconds(),this.second=X.s,this.minute=X.i,this.hour=X.h,this.day=X.d,this.month=X.m-1,this.year=X.y}else this.ms=Z.getMilliseconds(),this.second=Z.getSeconds(),this.minute=Z.getMinutes(),this.hour=Z.getHours(),this.day=Z.getDate(),this.month=Z.getMonth(),this.year=Z.getFullYear()}fromCronDate(Z){this.tz=Z.tz,this.year=Z.year,this.month=Z.month,this.day=Z.day,this.hour=Z.hour,this.minute=Z.minute,this.second=Z.second,this.ms=Z.ms}apply(){if(this.month>11||this.day>a_8[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let Z=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=Z.getUTCMilliseconds(),this.second=Z.getUTCSeconds(),this.minute=Z.getUTCMinutes(),this.hour=Z.getUTCHours(),this.day=Z.getUTCDate(),this.month=Z.getUTCMonth(),this.year=Z.getUTCFullYear(),!0}else return!1}fromString(Z){if(typeof this.tz=="number"){let X=TX.fromTZISO(Z);this.ms=X.getUTCMilliseconds(),this.second=X.getUTCSeconds(),this.minute=X.getUTCMinutes(),this.hour=X.getUTCHours(),this.day=X.getUTCDate(),this.month=X.getUTCMonth(),this.year=X.getUTCFullYear(),this.apply()}else return this.fromDate(TX.fromTZISO(Z,this.tz))}findNext(Z,X,Q,Y){let G=this[X],J;Q.lastDayOfMonth&&(this.month!==1?J=a_8[this.month]:J=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let K=!Q.starDOW&&X=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let W=this[X]+Y;W<Q[X].length;W++){let H=Q[X][W];if(X==="day"&&Q.lastDayOfMonth&&W-Y==J&&(H=1),X==="day"&&!Q.starDOW){let N=Q.dayOfWeek[(K+(W-Y-1))%7];if(N&&N&Ca)N=this.isNthWeekdayOfMonth(this.year,this.month,W-Y,N)?1:0;else if(N)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${N}`);Z.legacyMode&&!Q.starDOM?H=H||N:H=H&&N}if(H)return this[X]=W-Y,G!==this[X]?2:1}return 3}recurse(Z,X,Q){let Y=this.findNext(X,dU[Q][0],Z,dU[Q][2]);if(Y>1){let G=Q+1;for(;G<dU.length;)this[dU[G][0]]=-dU[G][2],G++;if(Y===3)return this[dU[Q][1]]++,this[dU[Q][0]]=-dU[Q][2],this.apply(),this.recurse(Z,X,0);if(this.apply())return this.recurse(Z,X,Q-1)}return Q+=1,Q>=dU.length?this:this.year>=3000?null:this.recurse(Z,X,Q)}increment(Z,X,Q){return this.second+=X.interval!==void 0&&X.interval>1&&Q?X.interval:1,this.ms=0,this.apply(),this.recurse(Z,X,0)}getDate(Z){return Z||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz=="number"?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):TX.fromTZ(TX.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}},s_8=30000,pP0,tP0=class{name;options;_states;fn;constructor($,Z,X){let Q,Y;if(Sa(Z))Y=Z;else if(typeof Z=="object")Q=Z;else if(Z!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(Sa(X))Y=X;else if(typeof X=="object")Q=X;else if(X!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=Q?.name,this.options=vd4(Q),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:Q?Q.maxRuns:void 0,paused:Q?Q.paused:!1,pattern:new r_8("* * * * *")},$&&($ instanceof Date||typeof $=="string"&&$.indexOf(":")>0)?this._states.once=new V3($,this.options.timezone||this.options.utcOffset):this._states.pattern=new r_8($,this.options.timezone),this.name){if(pP0.find((G)=>G.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");pP0.push(this)}return Y!==void 0&&xd4(Y)&&(this.fn=Y,this.schedule()),this}nextRun($){let Z=this._next($);return Z?Z.getDate(!1):null}nextRuns($,Z){this._states.maxRuns!==void 0&&$>this._states.maxRuns&&($=this._states.maxRuns);let X=[],Q=Z||this._states.currentRun||void 0;for(;$--&&(Q=this.nextRun(Q));)X.push(Q);return X}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let $=this.nextRun(this._states.currentRun),Z=!this._states.paused,X=this.fn!==void 0,Q=!this._states.kill;return Z&&X&&Q&&$!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext($){let Z=this._next($);return Z?$ instanceof V3||$ instanceof Date?Z.getTime()-$.getTime():Z.getTime()-new V3($).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let $=pP0.indexOf(this);$>=0&&pP0.splice($,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule($){if($&&this.fn)throw Error("Cron: It is not allowed to schedule two functions using the same Croner instance.");$&&(this.fn=$);let Z=this.msToNext(),X=this.nextRun(this._states.currentRun);return Z==null||isNaN(Z)||X===null?this:(Z>s_8&&(Z=s_8),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(X),Z),this._states.currentTimeout&&this.options.unref&&fd4(this._states.currentTimeout),this)}async _trigger($){if(this._states.blocking=!0,this._states.currentRun=new V3(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(Z){Sa(this.options.catch)&&this.options.catch(Z,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new V3($,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger($){let Z=new Date,X=!this._states.paused&&Z.getTime()>=$.getTime(),Q=this._states.blocking&&this.options.protect;X&&!Q?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):X&&Q&&Sa(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next($){let Z=!!($||this._states.currentRun),X=!1;!$&&this.options.startAt&&this.options.interval&&([$,Z]=this._calculatePreviousRun($,Z),X=!$),$=new V3($,this.options.timezone||this.options.utcOffset),this.options.startAt&&$&&$.getTime()<this.options.startAt.getTime()&&($=this.options.startAt);let Q=this._states.once||new V3($,this.options.timezone||this.options.utcOffset);return!X&&Q!==this._states.once&&(Q=Q.increment(this._states.pattern,this.options,Z)),this._states.once&&this._states.once.getTime()<=$.getTime()||Q===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&Q.getTime()>=this.options.stopAt.getTime()?null:Q}_calculatePreviousRun($,Z){let X=new V3(void 0,this.options.timezone||this.options.utcOffset),Q=$;if(this.options.startAt.getTime()<=X.getTime()){Q=this.options.startAt;let Y=Q.getTime()+this.options.interval*1000;for(;Y<=X.getTime();)Q=new V3(Q,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),Y=Q.getTime()+this.options.interval*1000;Z=!0}return Q===null&&(Q=void 0),[Q,Z]}};var pZ1=O(()=>{TX.fromTZISO=($,Z,X)=>TX.fromTZ(_d4($,Z),X);TX.fromTZ=function($,Z){let X=new Date(Date.UTC($.y,$.m-1,$.d,$.h,$.i,$.s)),Q=iZ1($.tz,X),Y=new Date(X.getTime()-Q),G=iZ1($.tz,Y);if(G-Q===0)return Y;{let J=new Date(X.getTime()-G),K=iZ1($.tz,J);if(K-G===0)return J;if(!Z&&K-G>0)return J;if(Z)throw Error("Invalid date passed to fromTZ()");return Y}};TX.toTZ=function($,Z){let X=$.toLocaleString("en-US",{timeZone:Z}).replace(/[\u202f]/," "),Q=new Date(X);return{y:Q.getFullYear(),m:Q.getMonth()+1,d:Q.getDate(),h:Q.getHours(),i:Q.getMinutes(),s:Q.getSeconds(),tz:Z}};TX.tp=($,Z,X,Q,Y,G,J)=>({y:$,m:Z,d:X,h:Q,i:Y,s:G,tz:J});TX.minitz=TX;Ca=31|nZ1,e_8=[1,2,4,8,16],a_8=[31,28,31,30,31,30,31,31,30,31,30,31],dU=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]];pP0=[]});function oP0($,Z){try{return new tP0($,{timezone:"UTC"}).nextRun(Z)??null}catch{return null}}var tZ1=O(()=>{pZ1()});import{DBOS as A7,SchedulerMode as bd4}from"@dbos-inc/dbos-sdk";async function eZ1($){try{let{rows:Z}=await $.query(`SELECT q.name FROM dbos.queues q
2808
+ `);await Ia($,Z,{title:`${Qt[X]}: ${Z.title}`,prompt:U,temperature:0.3,...K?{harnessId:"claude-code",agent:{instructions:N,disallowedTools:Qd4[X]}}:{},...J?{repo:J}:{}}),await AX($,{taskBoardItemId:Z.id,action:"review_requested",actorId:null,data:{reviewer:X}});let F=await $.storage.taskBoard.getById(Z.id,Y);if(F)K5(Y,F)}var Xd4,Qd4,Yd4;var OZ1=O(()=>{$Q();DH();jX();KZ1();WZ1();Xd4=new Set(["completed","failed","expired"]),Qd4={qa:["Edit","NotebookEdit"],code_review:["Write","Edit","NotebookEdit"]},Yd4={qa:"You are the QA Agent. Your job is to confirm the task ACTUALLY SOLVED THE "+"PROBLEM \u2014 not to review code style. Exercise the feature/behavior the task "+"describes (use the PR's preview / dev server when available), check the acceptance criteria implied by the title and description, and look for regressions in the affected flow. Judge outcomes, not the diff.",code_review:"You are the Code Reviewer. Review the code changes for correctness, security, and quality. FIRST look for a review skill/command appropriate to this repository's stack (e.g. a `/review`, `code-review`, or `security-review` skill, or the repo's CONTRIBUTING/review guidelines) and use it. Read the diff critically and flag concrete issues with file/line references."}});function Wd4($){return $.filter((X)=>X.action==="merge_conflict_resolution").length>=z_8}async function uP0($,Z,X,Q){if(X.status!=="in_review")return!1;if(X.assigneeId!==m$)return!1;if(Q.conflict!==!0)return!1;let G=(await $.storage.organizationSettings.get(Z))?.flags??{};if(G.auto_merge!==!0)return!1;let J=uJ.filter((N)=>G[yB[N]]===!0),K=await $.storage.taskBoard.listActivity(X.id,Z);if(!qg(K,J,{verifiedOnly:!0}))return!1;if(Wd4(K))return console.warn(`[task-board] conflict auto-resolve cap (${z_8}) reached on task ${X.id} \u2014 leaving the PR for a human`),!1;let W=Q.pr,H=await $.storage.taskBoard.claimConflictResolution(X.id,Z,X.updatedBy);if(!H)return!1;await AX($,{taskBoardItemId:X.id,action:"merge_conflict_resolution",actorId:null,data:{prNumber:W.number}}),K5(Z,H);try{await p_($,H,{pr:{number:W.number,url:W.url},resolveConflict:!0})}catch(N){throw await $.storage.taskBoard.update(H.id,Z,{status:"in_review"},"system").then((U)=>K5(Z,U)).catch((U)=>console.error("[task-board] conflict-resolution status revert failed",U)),N}return!0}var z_8=3;var LZ1=O(()=>{$Q();DH();jX();t_()});import{z as cP0}from"zod";async function Ma($,Z,X,Q){if(X){let J=await $.storage.connections.findById(X,Z);if(J&&J.status==="active")return J}let{items:Y}=await $.storage.connections.list(Z,{slug:"mcp-github"}),G=Y.filter((J)=>J.status==="active");if(Q){let J=G.find((K)=>{let W=QQ(K);return W?.owner===Q.owner&&W?.repo===Q.name});if(J)return J}return G.find((J)=>QQ(J)===null)??G[0]??null}function ka($){if(!$||typeof $!=="object")return null;let Z=$;if(Z.isError)return null;if(Z.structuredContent&&typeof Z.structuredContent==="object"&&Object.keys(Z.structuredContent).length>0)return Z.structuredContent;let X=Z.content?.find((Q)=>Q.type==="text")?.text;if(!X)return null;try{return JSON.parse(X)}catch{return null}}function EZ1($){let Z;try{Z=new URL($).hostname.toLowerCase()}catch{return!1}return Z==="deco.site"||Z.endsWith(".decocdn.com")||Z.endsWith(".deco-cx.workers.dev")||Z.endsWith(".deco.site")}function Hd4($){if(!$||!Array.isArray($.statuses))return null;let Z=$.statuses.map((X)=>X&&typeof X==="object"?X:null).filter((X)=>!!X&&typeof X.target_url==="string"&&EZ1(X.target_url));if(Z.length===0)return null;return Z.find((X)=>X.state==="success")?.target_url??Z[0].target_url}function Nd4($){let Z=Array.isArray($)?$:Array.isArray($?.comments)?$.comments:Array.isArray($?.items)?$.items:[];for(let X of Z){let Q=X&&typeof X.body==="string"?X.body:"";if(!Q)continue;let Y=Q.match(/href=['"]([^'"]+)['"][^>]*>\s*Branch Preview/i);if(Y?.[1]&&EZ1(Y[1]))return Y[1];let G=(Q.match(/https?:\/\/[^\s"'<>)\]]+/g)??[]).find((J)=>EZ1(J));if(G)return G}return null}function j_8($){if(!$)return null;if((typeof $.total_count==="number"?$.total_count:null)===0)return null;switch($.state){case"success":return"passing";case"failure":case"error":return"failing";case"pending":return"pending";default:return null}}function A_8($){let Z=Array.isArray($)?$:Array.isArray($?.check_runs)?$.check_runs:[];if(Z.length===0)return null;let X=!1,Q=!1;for(let Y of Z){if(!Y||typeof Y!=="object")continue;let{status:G,conclusion:J}=Y;if(G!=="completed")Q=!0;else if(typeof J==="string"&&P_8.has(J))X=!0}if(X)return"failing";if(Q)return"pending";return"passing"}function T_8($,Z){if($==="failing"||Z==="failing")return"failing";if($==="pending"||Z==="pending")return"pending";if($==="passing"||Z==="passing")return"passing";return null}function Ud4($){let Z=Array.isArray($)?$:Array.isArray($?.check_runs)?$.check_runs:[],X=[];for(let Q of Z){if(!Q||typeof Q!=="object")continue;let Y=Q;X.push({id:typeof Y.id==="number"?Y.id:null,name:typeof Y.name==="string"?Y.name:"",status:typeof Y.status==="string"?Y.status:"completed",conclusion:typeof Y.conclusion==="string"?Y.conclusion:null,detailsUrl:typeof Y.html_url==="string"?Y.html_url:typeof Y.details_url==="string"?Y.details_url:null})}return X}function Fd4($){return $.status==="completed"&&$.conclusion!=null&&P_8.has($.conclusion)}async function wd4($,Z,X){try{let Y=ka(await $.callTool({name:"GET_CHECK_RUN",arguments:{owner:Z.repoOwner,repo:Z.repoName,checkRunId:X}},void 0,{timeout:qa}))?.output,G=typeof Y?.summary==="string"?Y.summary:null,J=typeof Y?.text==="string"?Y.text:null;return G??J??null}catch{return null}}async function R_8($,Z,X){let Q=await Ma($,Z,X.connectionId,{owner:X.repoOwner,name:X.repoName});if(!Q)return null;let Y=await h5(Q,$,!0),G=async(J)=>ka(await Y.callTool({name:"pull_request_read",arguments:{method:J,owner:X.repoOwner,repo:X.repoName,pullNumber:X.number}},void 0,{timeout:qa}));try{let J=null;try{J=j_8(await G("get_status"))}catch{}try{J=T_8(J,A_8(await G("get_check_runs")))}catch{}return J}finally{await Y.close().catch(()=>{})}}function I_8($){if(!$)return null;if($.state!=="open")return!1;return typeof $.mergeable==="boolean"?!$.mergeable:null}async function q_8($,Z,X){let Q=await Ma($,Z,X.connectionId,{owner:X.repoOwner,name:X.repoName});if(!Q)return null;let Y=await h5(Q,$,!0);try{return I_8(ka(await Y.callTool({name:"pull_request_read",arguments:{method:"get",owner:X.repoOwner,repo:X.repoName,pullNumber:X.number}},void 0,{timeout:qa})))}catch{return null}finally{await Y.close().catch(()=>{})}}async function Bd4($,Z){let X=async(H)=>{try{return ka(await $.callTool({name:"pull_request_read",arguments:{method:H,owner:Z.repoOwner,repo:Z.repoName,pullNumber:Z.number}},void 0,{timeout:qa}))}catch{return null}},[Q,Y,G]=await Promise.all([X("get_status"),X("get_check_runs"),X("get_comments")]),J=T_8(j_8(Q),A_8(Y)),K=Hd4(Q)??Nd4(G),W=await Promise.all(Ud4(Y).map(async(H)=>({name:H.name,status:H.status,conclusion:H.conclusion,detailsUrl:H.detailsUrl,summary:Fd4(H)&&H.id!=null?await wd4($,Z,H.id):null})));return{checksStatus:J,checks:W,previewUrl:K}}async function jZ1($,Z,X){let Q=await Ma($,Z,X.connectionId,{owner:X.repoOwner,name:X.repoName});if(!Q)return DZ1;let Y=await h5(Q,$,!0);try{let[G,J]=await Promise.all([Y.callTool({name:"pull_request_read",arguments:{method:"get",owner:X.repoOwner,repo:X.repoName,pullNumber:X.number}},void 0,{timeout:qa}),Bd4(Y,X)]),K=ka(G);if(!K)return DZ1;let W=K.state,H=W==="open";return{title:typeof K.title==="string"?K.title:null,body:typeof K.body==="string"?K.body:null,state:W==="closed"?"closed":H?"open":null,draft:typeof K.draft==="boolean"?K.draft:null,merged:typeof K.merged==="boolean"?K.merged:null,mergeable:H&&typeof K.mergeable==="boolean"?K.mergeable:null,checksStatus:H?J.checksStatus:null,checks:H?J.checks:[],previewUrl:H?J.previewUrl:null}}catch{return DZ1}finally{await Y.close().catch(()=>{})}}var qa=8000,DZ1,P_8,zZ1=($)=>{let Z=$.find((X)=>X.state!=="closed"&&X.merged!==!0);return Z!=null&&Z.checksStatus!=="pending"&&Z.checksStatus!=="failing"},PZ1;var Va=O(()=>{t0();zU();pW();$Q();UH();DH();jX();OZ1();LZ1();XP0();DZ1={title:null,body:null,state:null,draft:null,merged:null,mergeable:null,checksStatus:null,checks:[],previewUrl:null};P_8=new Set(["failure","cancelled","timed_out","action_required","startup_failure","stale"]);PZ1=o({name:"TASK_BOARD_ITEM_PRS_GET",description:"Get the GitHub pull requests linked to a task board item, each enriched with live state (title, open/closed, draft, merged) fetched from GitHub.",annotations:{title:"Get Task Board Item Pull Requests",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:cP0.object({taskBoardItemId:cP0.string()}),outputSchema:cP0.object({prs:cP0.array(AM8)}),handler:async({taskBoardItemId:$},Z)=>{N0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X);for(let W of Q?.threads??[]){let H=W.lastMessage?Xu(W.lastMessage):null;if(!H)continue;try{await Z.storage.taskBoard.linkPr({taskBoardItemId:$,organizationId:X,url:H.url,prNumber:H.number,repoOwner:H.owner,repoName:H.repo,connectionId:null})}catch(N){console.error("[task-board] PR recovery from thread text failed",N)}}let Y=await Z.storage.taskBoard.listPrs($,X),G=await Promise.all(Y.map(async(W)=>{let H=await jZ1(Z,X,W);return{url:W.url,number:W.number,repoOwner:W.repoOwner,repoName:W.repoName,createdAt:W.createdAt,...H}})),J=G.find((W)=>W.state==="open"&&!W.merged);if(Q&&Q.status==="in_review"&&Q.assigneeId===m$&&zZ1(G))await hP0(Z,Q).catch((W)=>{console.error("[task-board] reviewer auto-handoff failed",W)});let K=J?I_8({state:J.state,mergeable:J.mergeable}):null;if(Q&&Q.status==="in_review"&&Q.assigneeId===m$&&J&&K===!0)await uP0(Z,X,Q,{pr:{number:J.number,url:J.url},conflict:!0}).catch((W)=>{console.error("[task-board] conflict auto-resolve failed",W)});if(G.some((W)=>W.merged))try{if(Q&&Q.status!=="done"){let W=await Z.storage.taskBoard.update($,X,{status:"done"},Q.updatedBy);await AX(Z,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:Q.status,to:"done"}}),K5(X,W)}}catch(W){console.error("[task-board] merge\u2192done reconcile failed",W)}return{prs:G}}})});import{z as Fu}from"zod";function Ld4($){return $.threads.filter((Z)=>Z.status!==null&&!Yt.has(Z.status)).map((Z)=>Z.threadId)}var Od4="Superseded by a manual re-run of this task",AZ1;var M_8=O(()=>{t0();$Q();Nz();DH();jX();t_();AZ1=o({name:"TASK_BOARD_ITEM_RERUN",description:"Re-run a task board item with the Super Agent, whatever lane it is in. Use this to retry a task that stalled, finished without doing the job, or is already assigned to the Super Agent (in which case re-assigning it does nothing). Fails any run still holding the task open, moves it to In Progress, and queues a fresh run.",annotations:{title:"Re-run Task",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:Fu.object({id:Fu.string().describe("The task board item to re-run.")}),outputSchema:Fu.object({status:Fu.string().describe("The task's lane after the re-run was queued."),supersededThreadIds:Fu.array(Fu.string()).describe("Runs that were failed to make room for this one.")}),handler:async({id:$},Z)=>{N0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X);if(!Q)throw Error(`Task board item not found: ${$}`);if(Q.assigneeId!==m$)throw Error("Only a task assigned to the Super Agent can be re-run. Assign it to "+"the Super Agent instead \u2014 that queues a run by itself.");let Y=[];for(let J of Ld4(Q))if(await Z.storage.threads.failIfNotTerminal(J,Od4,"superseded"))Y.push(J);let G=await Z.storage.taskBoard.update($,X,{status:"in_progress"},z1(Z));return await AX(Z,{taskBoardItemId:$,action:"status_changed",actorId:z1(Z),data:{from:Q.status,to:"in_progress",reason:"rerun"}}),K5(X,G),await p_(Z,G),{status:G.status,supersededThreadIds:Y}}})});async function lP0($,Z,X){let Y=(await $.storage.taskBoard.listPrs(X,Z))[0];if(!Y)return console.warn(`[task-board] merge skipped \u2014 no linked PR on ${X}`),!1;let G=await R_8($,Z,Y);if(G==="failing"||G==="pending")return console.warn(`[task-board] merge blocked \u2014 checks ${G} on PR #${Y.number}`),!1;let J=await Ma($,Z,Y.connectionId,{owner:Y.repoOwner,name:Y.repoName});if(!J)return console.warn("[task-board] merge blocked \u2014 no active GitHub connection for "+`${Y.repoOwner}/${Y.repoName} (PR #${Y.number})`),!1;let K=await h5(J,$,!0);try{let W=await K.callTool({name:"merge_pull_request",arguments:{owner:Y.repoOwner,repo:Y.repoName,pullNumber:Y.number}},void 0,{timeout:Dd4});if(W?.isError)return console.error(`[task-board] merge refused by GitHub on PR #${Y.number}:`,JSON.stringify(W?.content)),!1;return!0}catch(W){return console.error("[task-board] merge PR failed",W),!1}finally{await K.close().catch(()=>{})}}var Dd4=15000;var TZ1=O(()=>{zU();Va()});import{z as tO}from"zod";async function Ed4($,Z,X){let Y=(await $.storage.organizationSettings.get(Z))?.flags??{},G=uJ.filter((K)=>Y[yB[K]]===!0),J=await $.storage.taskBoard.listActivity(X,Z);return qg(J,G,{verifiedOnly:!0})}var RZ1;var k_8=O(()=>{t0();$Q();UH();DH();jX();t_();TZ1();Va();LZ1();YU();RZ1=o({name:"TASK_BOARD_REVIEW_DECISION",description:"Record a reviewer's decision for a task under review. `approve` marks the pull request approved by that reviewer (and, once EVERY enabled reviewer has approved, merges it when the org enabled auto-merge, advancing the task to Done); `request_changes` hands the task back to the Super Agent with your notes so it can fix the PR.",annotations:{title:"Review Decision",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:tO.object({taskBoardItemId:tO.string(),reviewer:tO.enum(["qa","code_review"]).describe("Which reviewer you are: `qa` (QA Agent) or `code_review` (Code Reviewer)."),reviewToken:tO.string().optional().describe("The reviewToken from your prompt \u2014 proves you are this reviewer. "+"Pass it through exactly; an approval without a valid token is recorded but does NOT count toward an automatic merge."),decision:tO.enum(["approve","request_changes"]),notes:tO.string().min(1).describe("For approve: a short summary of what you verified. For request_changes: specific, actionable feedback the Super Agent must address.")}),outputSchema:tO.object({status:yU,merged:tO.boolean().describe("True when this approval completed the review and merged the PR.")}),handler:async({taskBoardItemId:$,reviewer:Z,reviewToken:X,decision:Q,notes:Y},G)=>{N0(G),await G.access.check();let J=G.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");let K=await G.storage.taskBoard.getById($,J);if(!K)throw Error(`Task board item not found: ${$}`);let H=(X?await G.storage.taskBoard.resolveReviewClaimByToken($,X):null)?.reviewer===Z;if(Q==="request_changes"){let L=await G.storage.taskBoard.claimReviewChangesBounce($,J,K.updatedBy);if(await AX(G,{taskBoardItemId:$,action:"review_changes_requested",actorId:null,data:{reviewer:Z,notes:Y,verified:H}}),!L)return{status:(await G.storage.taskBoard.getById($,J)??K).status,merged:!1};K5(J,L);let E=(await G.storage.taskBoard.listPrs($,J))[0];return await p_(G,L,{feedback:`${Qt[Z]}: ${Y}`,pr:E?{number:E.number,url:E.url}:void 0}).catch((z)=>{if(z instanceof J3)throw z;console.error("[task-board] request_changes re-enqueue failed",z)}),{status:L.status,merged:!1}}if(await AX(G,{taskBoardItemId:$,action:"review_approved",actorId:null,data:{reviewer:Z,notes:Y,verified:H}}),!await Ed4(G,J,$)){let L=await G.storage.taskBoard.getById($,J)??K;return K5(J,L),{status:L.status,merged:!1}}let F=(await G.storage.organizationSettings.get(J))?.flags?.auto_merge===!0;if(F?await lP0(G,J,$):!1){let L=await G.storage.taskBoard.update($,J,{status:"done"},K.updatedBy);return await AX(G,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:K.status,to:"done"}}),K5(J,L),{status:L.status,merged:!0}}let B=await G.storage.taskBoard.getById($,J)??K;if(F){let D=(await G.storage.taskBoard.listPrs($,J))[0];if(D?await uP0(G,J,B,{pr:{number:D.number,url:D.url},conflict:await q_8(G,J,D)}).catch((z)=>{if(z instanceof J3)throw z;return console.error("[task-board] conflict auto-resolve failed",z),!1}):!1)return{status:(await G.storage.taskBoard.getById($,J)??B).status,merged:!1}}return K5(J,B),{status:B.status,merged:!1}}})});import{z as dP0}from"zod";function zd4($,Z,X){if($!=="in_review")return!1;return X.length===0||qg(Z,X)}var IZ1;var V_8=O(()=>{t0();$Q();UH();DH();jX();TZ1();IZ1=o({name:"TASK_BOARD_PROMOTE_TO_PRODUCTION",description:"Ship a reviewed task: merge its open pull request and move the task to Done. Used by the board's 'Ship to production' button after the enabled reviewers approved, when auto-merge is off (a human does the final merge).",annotations:{title:"Ship to Production",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:dP0.object({taskBoardItemId:dP0.string()}),outputSchema:dP0.object({status:yU,merged:dP0.boolean().describe("True when the PR was merged.")}),handler:async({taskBoardItemId:$},Z)=>{N0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X);if(!Q)throw Error(`Task board item not found: ${$}`);let G=(await Z.storage.organizationSettings.get(X))?.flags??{},J=uJ.filter((N)=>G[yB[N]]===!0),K=await Z.storage.taskBoard.listActivity($,X);if(!zd4(Q.status,K,J))throw Error("Task is not ready to ship: it must be In Review with every enabled reviewer approved");if(!await lP0(Z,X,$))return{status:Q.status,merged:!1};let H=await Z.storage.taskBoard.update($,X,{status:"done"},Q.updatedBy);if(Q.status!=="done")await AX(Z,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:Q.status,to:"done"}});return K5(X,H),{status:H.status,merged:!0}}})});import{z as M3}from"zod";function S_8($){if(!$)throw Error("Organization ID required (no active organization in context)");return $}var jd4,qZ1,MZ1;var C_8=O(()=>{t0();jd4=M3.object({externalKey:M3.string(),dismissedBy:M3.string(),dismissedAt:M3.string()});qZ1=o({name:"TASK_BOARD_DISMISSED_LIST",description:"List the diagnostic findings this organization has dismissed by deleting their task board cards. The import skips these until they're restored.",annotations:{title:"List Dismissed Findings",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:M3.object({}),outputSchema:M3.object({findings:M3.array(jd4)}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=S_8(Z.organization?.id);return{findings:await Z.storage.taskBoard.listDismissedFindings(X)}}}),MZ1=o({name:"TASK_BOARD_DISMISSED_RESTORE",description:"Un-dismiss diagnostic findings, returning their cards to the board. Omit externalKeys to restore every dismissed finding.",annotations:{title:"Restore Dismissed Findings",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:M3.object({externalKeys:M3.array(M3.string()).optional()}),outputSchema:M3.object({restored:M3.number()}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=S_8(Z.organization?.id);return{restored:await Z.storage.taskBoard.restoreDismissedFindings(X,$.externalKeys)}}})});import{z as t$}from"zod";function mP0($){let Z=$.organization?.id;if(!Z)throw Error("Organization ID required (no active organization in context)");return Z}var kZ1,VZ1,SZ1,CZ1,_Z1;var __8=O(()=>{t0();$Q();kj0();kZ1=t$.object({id:t$.string(),taskBoardItemId:t$.string(),parentId:t$.string().nullable(),authorId:t$.string(),body:t$.string(),resolved:t$.boolean(),createdAt:t$.string(),updatedAt:t$.string()});VZ1=o({name:"TASK_BOARD_COMMENT_LIST",description:"List a task board item's comments (flat, oldest first; replies carry parentId).",annotations:{title:"List Task Comments",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:t$.object({taskBoardItemId:t$.string()}),outputSchema:t$.object({comments:t$.array(kZ1)}),handler:async($,Z)=>{return N0(Z),await Z.access.check(),{comments:await Z.storage.taskBoard.listComments($.taskBoardItemId,mP0(Z))}}}),SZ1=o({name:"TASK_BOARD_COMMENT_CREATE",description:"Post a comment on a task board item, or a reply to one.",annotations:{title:"Create Task Comment",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:t$.object({taskBoardItemId:t$.string(),body:t$.string().trim().min(1),parentId:t$.string().nullish()}),outputSchema:t$.object({comment:kZ1}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=await Z.storage.taskBoard.createComment({taskBoardItemId:$.taskBoardItemId,organizationId:mP0(Z),parentId:$.parentId??null,authorId:Ja.getStore()?m$:z1(Z),body:$.body});if(!X)throw Error("Task board item not found");return{comment:X}}}),CZ1=o({name:"TASK_BOARD_COMMENT_UPDATE",description:"Edit your own comment's body, or resolve/unresolve a comment thread (root only, any org member may toggle it).",annotations:{title:"Update Task Comment",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:t$.object({id:t$.string(),body:t$.string().trim().min(1).optional(),resolved:t$.boolean().optional()}),outputSchema:t$.object({comment:kZ1}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=await Z.storage.taskBoard.updateComment({id:$.id,organizationId:mP0(Z),callerId:z1(Z),body:$.body,resolved:$.resolved});if(!X)throw Error("Comment not found, or you can only edit your own comments");return{comment:X}}}),_Z1=o({name:"TASK_BOARD_COMMENT_DELETE",description:"Delete your own comment. Deleting a thread root deletes its replies too.",annotations:{title:"Delete Task Comment",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:t$.object({id:t$.string()}),outputSchema:t$.object({success:t$.boolean()}),handler:async($,Z)=>{return N0(Z),await Z.access.check(),{success:await Z.storage.taskBoard.deleteComment($.id,mP0(Z),z1(Z))}}})});var v_8=O(()=>{PM8();w_8();L_8();D_8();E_8();Va();M_8();k_8();V_8();DH();C_8();__8()});import{z as lU}from"zod";var vZ1;var x_8=O(()=>{t0();vZ1=o({name:"TAGS_LIST",description:"List all tags available in the organization.",annotations:{title:"List Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:lU.object({}),outputSchema:lU.object({tags:lU.array(lU.object({id:lU.string(),organizationId:lU.string(),name:lU.string(),color:lU.string().nullable(),createdAt:lU.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=J0(Z);return{tags:(await Z.storage.tags.listOrgTags(X.id)).map((Y)=>({...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():String(Y.createdAt)}))}}})});import{z as EH}from"zod";var xZ1;var f_8=O(()=>{t0();xZ1=o({name:"TAGS_CREATE",description:"Create a new tag, usable on organization members and task board items.",annotations:{title:"Create Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:EH.object({name:EH.string().min(1).max(50).describe("Tag name"),color:EH.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional().describe('Hex color the tag renders its dot with, e.g. "#3b82f6"')}),outputSchema:EH.object({tag:EH.object({id:EH.string(),organizationId:EH.string(),name:EH.string(),color:EH.string().nullable(),createdAt:EH.string().describe("ISO 8601 timestamp")})}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=J0(Z),Q=await Z.storage.tags.createTag(X.id,$.name,$.color);return{tag:{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():String(Q.createdAt)}}}})});import{z as iP0}from"zod";var fZ1;var b_8=O(()=>{t0();fZ1=o({name:"TAGS_DELETE",description:"Delete a tag and automatically remove it from all assigned members.",annotations:{title:"Delete Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:iP0.object({tagId:iP0.string().describe("Tag ID to delete")}),outputSchema:iP0.object({success:iP0.boolean()}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=J0(Z),Q=await Z.storage.tags.getTag($.tagId);if(!Q)throw Error("Tag not found");if(Q.organizationId!==X.id)throw Error("Tag does not belong to this organization");return await Z.storage.tags.deleteTag($.tagId),{success:!0}}})});import{z as zH}from"zod";var bZ1;var y_8=O(()=>{t0();bZ1=o({name:"MEMBER_TAGS_GET",description:"Get all tags currently assigned to a specific member.",annotations:{title:"Get Member Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:zH.object({memberId:zH.string().describe("Member ID")}),outputSchema:zH.object({tags:zH.array(zH.object({id:zH.string(),organizationId:zH.string(),name:zH.string(),color:zH.string().nullable(),createdAt:zH.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=J0(Z);if(!await Z.storage.tags.verifyMemberOrg($.memberId,X.id))throw Error(`Member not found in this organization: ${$.memberId}`);return{tags:(await Z.storage.tags.getMemberTags($.memberId)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():String(G.createdAt)}))}}})});import{z as k3}from"zod";var yZ1;var g_8=O(()=>{t0();yZ1=o({name:"MEMBER_TAGS_SET",description:"Replace all tags on a member with the given set. Pass empty array to clear.",annotations:{title:"Set Member Tags",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:k3.object({memberId:k3.string().describe("Member ID"),tagIds:k3.array(k3.string()).describe("Array of tag IDs to assign")}),outputSchema:k3.object({success:k3.boolean(),tags:k3.array(k3.object({id:k3.string(),organizationId:k3.string(),name:k3.string(),createdAt:k3.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{N0(Z),await Z.access.check();let X=J0(Z);if(!await Z.storage.tags.verifyMemberOrg($.memberId,X.id))throw Error(`Member not found in this organization: ${$.memberId}`);for(let G of $.tagIds){let J=await Z.storage.tags.getTag(G);if(!J)throw Error(`Tag not found: ${G}`);if(J.organizationId!==X.id)throw Error(`Tag does not belong to this organization: ${G}`)}return await Z.storage.tags.setMemberTags($.memberId,$.tagIds),{success:!0,tags:(await Z.storage.tags.getMemberTags($.memberId)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():String(G.createdAt)}))}}})});var h_8=O(()=>{x_8();f_8();b_8();y_8();g_8()});import{z as u_8}from"zod";function Id4($,Z){let X=$?.[Z];if(!X)return;return Object.entries(X).sort(([,Y],[,G])=>{let J=Math.max(0,...Object.values(Y).map((W)=>W.createdAt??0));return Math.max(0,...Object.values(G).map((W)=>W.createdAt??0))-J})[0]?.[0]}var Td4,Rd4,gZ1;var c_8=O(()=>{S$();t0();h_();iX();Td4=u_8.object({data:yV8.describe("Data for the new thread (id is auto-generated if not provided)")}),Rd4=u_8.object({item:BH.describe("The created thread entity")});gZ1=o({name:"COLLECTION_THREADS_CREATE",description:"Create a new thread for organizing messages and conversations.",annotations:{title:"Create Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Td4,outputSchema:Rd4,handler:async($,Z)=>{N0(Z);let X=J0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("User ID required to create thread");let{data:Y}=$,G=Y.id??$4("thrd"),J=await Z.storage.virtualMcps.findById(Y.virtual_mcp_id,X.id);if(!J||J.organization_id!==X.id)throw Error(`Virtual MCP not found: ${Y.virtual_mcp_id}`);let K=J.metadata,W=K?.githubRepo,H=null;if(W)H=Y.branch??Id4(K?.sandboxMap,Q)??Rj0(Tj0(Z.auth.user));let N=await Z.storage.threads.create({id:G,organization_id:X.id,title:Y.title,description:Y.description,virtual_mcp_id:Y.virtual_mcp_id,branch:H,created_by:Q});if(N.isNew)n1.capture({distinctId:Q,event:"chat_started",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:G,has_title:!!$.data.title,created_via:"tool"}});return{item:q3(N)}}})});import{z as hZ1}from"zod";var qd4,Md4,uZ1;var l_8=O(()=>{S$();t0();h_();qd4=hZ1.object({id:hZ1.string().describe("ID of the thread to update"),data:gV8.describe("Partial thread data to update")}),Md4=hZ1.object({item:BH.describe("The updated thread entity")}),uZ1=o({name:"COLLECTION_THREADS_UPDATE",description:"Update a thread's title, description, or visibility.",annotations:{title:"Update Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:qd4,outputSchema:Md4,handler:async($,Z)=>{N0(Z);let X=J0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("User ID required to update thread");let{id:Y,data:G}=$,J=await Z.storage.threads.get(Y);if(!J)throw Error("Thread not found in organization");if(G.virtual_mcp_id!==void 0){let H=await Z.storage.virtualMcps.findById(G.virtual_mcp_id,X.id);if(!H||H.organization_id!==X.id)throw Error(`Virtual MCP not found: ${G.virtual_mcp_id}`)}if(G.branch===null&&J.virtual_mcp_id){if((await Z.storage.virtualMcps.findById(J.virtual_mcp_id,X.id))?.metadata?.githubRepo)throw Error("Cannot set branch=null on a github-linked thread (vMCP has githubRepo)")}let K={title:G.title,description:G.description,hidden:G.hidden,updated_by:Q};if(G.status)K.status=G.status;if(G.metadata!==void 0)K.metadata=G.metadata;if(G.branch!==void 0)K.branch=G.branch;if(G.virtual_mcp_id!==void 0)K.virtual_mcp_id=G.virtual_mcp_id;let W=await Z.storage.threads.update(Y,K);if(G.hidden!==void 0&&G.hidden!==J.hidden)n1.capture({distinctId:Q,event:G.hidden?"chat_archived":"chat_unarchived",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:Y}});return{item:q3(W)}}})});var cZ1;var d_8=O(()=>{E3();h_();S$();t0();cZ1=o({name:"COLLECTION_THREADS_DELETE",description:"Permanently delete a thread and all its messages.",annotations:{title:"Delete Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:to,outputSchema:oo(BH),handler:async($,Z)=>{N0(Z);let X=J0(Z);await Z.access.check();let Q=await Z.storage.threads.get($.id);if(!Q)throw Error(`Thread not found: ${$.id}`);await Z.storage.threads.delete($.id);let Y=z1(Z);if(Y)n1.capture({distinctId:Y,event:"chat_deleted",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:$.id}});return{item:q3(Q)}}})});var m_8=O(()=>{c_8();Q91();Y91();l_8();d_8();G91()});function Vd4($){return{type:"doc",content:[{type:"paragraph",content:[{type:"text",text:$}]}]}}function Sd4($){return $.map((Z)=>{let X=Z.metadata;if(X?.tiptapDoc)return Z;let Q=Z.parts.find((Y)=>Y.type==="text"&&typeof Y.text==="string");if(!Q?.text||typeof Q.text!=="string")return Z;return{...Z,metadata:{...X,tiptapDoc:Vd4(Q.text)}}})}function nP0($){let Z;if(typeof $==="string")try{let X=JSON.parse($);if(Array.isArray(X)&&X.length>0&&X[0]?.role&&Array.isArray(X[0]?.parts))Z=X;else Z=[{role:"user",parts:[{type:"text",text:$}]}]}catch{Z=[{role:"user",parts:[{type:"text",text:$}]}]}else Z=$;return Sd4(Z)}import{z as o$}from"zod";var lZ1;var i_8=O(()=>{S$();t0();j3();lZ1=o({name:"AUTOMATION_CREATE",description:"Create an automation that runs an agent thread on trigger fire. Requires virtual_mcp_id + messages.",annotations:{title:"Create Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:o$.object({name:o$.string().min(1).max(255),virtual_mcp_id:o$.string(),messages:o$.union([o$.string(),o$.array(o$.looseObject({id:o$.string().optional(),role:o$.enum(["user","assistant","system"]),parts:o$.array(o$.record(o$.string(),o$.unknown())),metadata:o$.unknown().optional()}))]),models:o$.object({tier:WO,modelId:o$.string().optional(),credentialId:o$.string().optional()}).loose().default({tier:"smart"}),tools:o$.array(o$.string()).nullable().optional(),maxAgentSteps:o$.number().int().min(1).max(100).nullable().optional(),temperature:o$.number().default(0.5),active:o$.boolean().default(!0)}),outputSchema:o$.object({id:o$.string(),name:o$.string(),active:o$.boolean(),created_at:o$.string()}),handler:async($,Z)=>{N0(Z);let X=J0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("Unable to determine user identity");let Y=nP0($.messages),G=await Z.storage.automations.create({organization_id:X.id,created_by:Q,name:$.name,messages:JSON.stringify(Y),models:JSON.stringify($.models),tools:$.tools===void 0||$.tools===null?null:JSON.stringify($.tools),max_agent_steps:$.maxAgentSteps??null,temperature:$.temperature,active:$.active,virtual_mcp_id:$.virtual_mcp_id});return n1.capture({distinctId:Q,event:"automation_created",groups:{organization:X.id},properties:{organization_id:X.id,automation_id:G.id,virtual_mcp_id:$.virtual_mcp_id,active:G.active,tier:$.models.tier}}),{id:G.id,name:G.name,active:G.active,created_at:G.created_at}}})});import{z as y$}from"zod";var dZ1;var n_8=O(()=>{t0();dZ1=o({name:"AUTOMATION_GET",description:"Get an automation's full configuration and triggers by ID.",annotations:{title:"Get Automation",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:y$.object({id:y$.string()}),outputSchema:y$.object({automation:y$.object({id:y$.string(),name:y$.string(),active:y$.boolean(),created_by:y$.string(),created_at:y$.string(),updated_at:y$.string(),virtual_mcp_id:y$.string(),messages:y$.unknown(),models:y$.unknown(),tools:y$.array(y$.string()).nullable(),maxAgentSteps:y$.number().nullable(),temperature:y$.number(),triggers:y$.array(y$.object({id:y$.string(),type:y$.enum(["cron","event","webhook"]),cron_expression:y$.string().nullable(),connection_id:y$.string().nullable(),event_type:y$.string().nullable(),params:y$.unknown().nullable(),last_run_at:y$.string().nullable(),api_key_id:y$.string().nullable(),created_at:y$.string()}))}).nullable()}),handler:async($,Z)=>{N0(Z);let X=J0(Z);await Z.access.check();let Q=await Z.storage.automations.findById($.id,X.id);if(!Q)return{automation:null};let Y=await Z.storage.automations.listTriggers(Q.id);return{automation:{id:Q.id,name:Q.name,active:Q.active,created_by:Q.created_by,created_at:Q.created_at,updated_at:Q.updated_at,virtual_mcp_id:Q.virtual_mcp_id,messages:JSON.parse(Q.messages),models:JSON.parse(Q.models),tools:Q.tools?JSON.parse(Q.tools):null,maxAgentSteps:Q.max_agent_steps,temperature:Q.temperature,triggers:Y.map((G)=>({id:G.id,type:G.type,cron_expression:G.cron_expression,connection_id:G.connection_id,event_type:G.event_type,params:G.params?JSON.parse(G.params):null,last_run_at:G.last_run_at,api_key_id:G.api_key_id,created_at:G.created_at}))}}}})});import{z as wG}from"zod";var mZ1;var p_8=O(()=>{t0();mZ1=o({name:"AUTOMATION_LIST",description:"List automations with their status, triggers, and configuration.",annotations:{title:"List Automations",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:wG.object({virtual_mcp_id:wG.string().optional().nullable()}),outputSchema:wG.object({automations:wG.array(wG.object({id:wG.string(),name:wG.string(),active:wG.boolean(),created_by:wG.string(),created_at:wG.string(),trigger_count:wG.number(),nearest_next_run_at:wG.string().nullable(),virtual_mcp_id:wG.string()}))}),handler:async($,Z)=>{N0(Z);let X=J0(Z);return await Z.access.check(),{automations:(await Z.storage.automations.listWithTriggerCounts(X.id,$.virtual_mcp_id)).map((G)=>({id:G.id,name:G.name,active:G.active,created_by:G.created_by,created_at:G.created_at,trigger_count:G.trigger_count,nearest_next_run_at:G.nearest_next_run_at,virtual_mcp_id:G.virtual_mcp_id}))}}})});function Cd4($){if(!$)return null;try{let Z=JSON.parse($);if(Array.isArray(Z)&&Z.every((X)=>typeof X==="string"))return Z.length>0?Z:null}catch{}return null}function t_8($){return`${$}:context`}function o_8($,Z,X,Q,Y){return{messages:JSON.parse($.messages).map((W,H)=>({...W,id:`${X}:${H}`})),models:{credentialId:Q.credentialId,thinking:Q.thinking,...Q.image?{image:Q.image}:{},...Q.webSearch?{webSearch:Q.webSearch}:{},...Q.deepResearch?{deepResearch:Q.deepResearch}:{}},agent:{id:$.virtual_mcp_id},toolAllowlist:Cd4($.tools),maxAgentSteps:$.max_agent_steps??void 0,temperature:$.temperature??0.5,toolApprovalLevel:"auto",mode:"default",organizationId:$.organization_id,userId:$.created_by,harnessId:"decopilot",sandboxProviderKind:"agent-sandbox",triggerId:Z??void 0,...Y?{runMetadata:Y}:{},taskId:X}}function TX($,Z,X,Q,Y,G,J,K){return TX.fromTZ(TX.tp($,Z,X,Q,Y,G,J),K)}function iZ1($,Z=new Date){let X=Z.toLocaleString("en-US",{timeZone:$,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],Q=Z.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${Q} GMT`)-Date.parse(`${Q} ${X}`)}function _d4($,Z){let X=new Date(Date.parse($));if(isNaN(X))throw Error("minitz: Invalid ISO8601 passed to parser.");let Q=$.substring(9);return $.includes("Z")||Q.includes("-")||Q.includes("+")?TX.tp(X.getUTCFullYear(),X.getUTCMonth()+1,X.getUTCDate(),X.getUTCHours(),X.getUTCMinutes(),X.getUTCSeconds(),"Etc/UTC"):TX.tp(X.getFullYear(),X.getMonth()+1,X.getDate(),X.getHours(),X.getMinutes(),X.getSeconds(),Z)}function vd4($){if($===void 0&&($={}),delete $.name,$.legacyMode=$.legacyMode===void 0?!0:$.legacyMode,$.paused=$.paused===void 0?!1:$.paused,$.maxRuns=$.maxRuns===void 0?1/0:$.maxRuns,$.catch=$.catch===void 0?!1:$.catch,$.interval=$.interval===void 0?0:parseInt($.interval.toString(),10),$.utcOffset=$.utcOffset===void 0?void 0:parseInt($.utcOffset.toString(),10),$.unref=$.unref===void 0?!1:$.unref,$.startAt&&($.startAt=new V3($.startAt,$.timezone)),$.stopAt&&($.stopAt=new V3($.stopAt,$.timezone)),$.interval!==null){if(isNaN($.interval))throw Error("CronOptions: Supplied value for interval is not a number");if($.interval<0)throw Error("CronOptions: Supplied value for interval can not be negative")}if($.utcOffset!==void 0){if(isNaN($.utcOffset))throw Error("CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.");if($.utcOffset<-870||$.utcOffset>870)throw Error("CronOptions: utcOffset out of bounds.");if($.utcOffset!==void 0&&$.timezone)throw Error("CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.")}if($.unref!==!0&&$.unref!==!1)throw Error("CronOptions: Unref should be either true, false or undefined(false).");return $}function Sa($){return Object.prototype.toString.call($)==="[object Function]"||typeof $=="function"||$ instanceof Function}function xd4($){return Sa($)}function fd4($){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer($):$&&typeof $.unref<"u"&&$.unref()}var nZ1=32,Ca,e_8,r_8=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor($,Z){this.pattern=$,this.timezone=Z,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern=="string"||this.pattern instanceof String))throw TypeError("CronPattern: Pattern has to be of type string.");this.pattern.indexOf("@")>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let $=this.pattern.replace(/\s+/g," ").split(" ");if($.length<5||$.length>6)throw TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exactly five or six space separated parts are required.");if($.length===5&&$.unshift("0"),$[3].indexOf("L")>=0&&($[3]=$[3].replace("L",""),this.lastDayOfMonth=!0),$[3]=="*"&&(this.starDOM=!0),$[4].length>=3&&($[4]=this.replaceAlphaMonths($[4])),$[5].length>=3&&($[5]=this.replaceAlphaDays($[5])),$[5]=="*"&&(this.starDOW=!0),this.pattern.indexOf("?")>=0){let Z=new V3(new Date,this.timezone).getDate(!0);$[0]=$[0].replace("?",Z.getSeconds().toString()),$[1]=$[1].replace("?",Z.getMinutes().toString()),$[2]=$[2].replace("?",Z.getHours().toString()),this.starDOM||($[3]=$[3].replace("?",Z.getDate().toString())),$[4]=$[4].replace("?",(Z.getMonth()+1).toString()),this.starDOW||($[5]=$[5].replace("?",Z.getDay().toString()))}this.throwAtIllegalCharacters($),this.partToArray("second",$[0],0,1),this.partToArray("minute",$[1],0,1),this.partToArray("hour",$[2],0,1),this.partToArray("day",$[3],-1,1),this.partToArray("month",$[4],-1,1),this.partToArray("dayOfWeek",$[5],0,Ca),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray($,Z,X,Q){let Y=this[$],G=$==="day"&&this.lastDayOfMonth;if(Z===""&&!G)throw TypeError("CronPattern: configuration entry "+$+" ("+Z+") is empty, check for trailing spaces.");if(Z==="*")return Y.fill(Q);let J=Z.split(",");if(J.length>1)for(let K=0;K<J.length;K++)this.partToArray($,J[K],X,Q);else Z.indexOf("-")!==-1&&Z.indexOf("/")!==-1?this.handleRangeWithStepping(Z,$,X,Q):Z.indexOf("-")!==-1?this.handleRange(Z,$,X,Q):Z.indexOf("/")!==-1?this.handleStepping(Z,$,X,Q):Z!==""&&this.handleNumber(Z,$,X,Q)}throwAtIllegalCharacters($){for(let Z=0;Z<$.length;Z++)if((Z===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test($[Z]))throw TypeError("CronPattern: configuration entry "+Z+" ("+$[Z]+") contains illegal characters.")}handleNumber($,Z,X,Q){let Y=this.extractNth($,Z),G=parseInt(Y[0],10)+X;if(isNaN(G))throw TypeError("CronPattern: "+Z+" is not a number: '"+$+"'");this.setPart(Z,G,Y[1]||Q)}setPart($,Z,X){if(!Object.prototype.hasOwnProperty.call(this,$))throw TypeError("CronPattern: Invalid part specified: "+$);if($==="dayOfWeek"){if(Z===7&&(Z=0),Z<0||Z>6)throw RangeError("CronPattern: Invalid value for dayOfWeek: "+Z);this.setNthWeekdayOfMonth(Z,X);return}if($==="second"||$==="minute"){if(Z<0||Z>=60)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="hour"){if(Z<0||Z>=24)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="day"){if(Z<0||Z>=31)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="month"&&(Z<0||Z>=12))throw RangeError("CronPattern: Invalid value for "+$+": "+Z);this[$][Z]=X}handleRangeWithStepping($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(G===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+$+"'");let[,J,K,W]=G,H=parseInt(J,10)+X,N=parseInt(K,10)+X,U=parseInt(W,10);if(isNaN(H))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(N))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(U))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(U===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(U>this[Z].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[Z].length+")");if(H>N)throw TypeError("CronPattern: From value is larger than to value: '"+$+"'");for(let F=H;F<=N;F+=U)this.setPart(Z,F,Y[1]||Q)}extractNth($,Z){let X=$,Q;if(X.includes("#")){if(Z!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");Q=X.split("#")[1],X=X.split("#")[0]}return[X,Q]}handleRange($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].split("-");if(G.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+$+"'");let J=parseInt(G[0],10)+X,K=parseInt(G[1],10)+X;if(isNaN(J))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(J>K)throw TypeError("CronPattern: From value is larger than to value: '"+$+"'");for(let W=J;W<=K;W++)this.setPart(Z,W,Y[1]||Q)}handleStepping($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].split("/");if(G.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+$+"'");G[0]===""&&(G[0]="*");let J=0;G[0]!=="*"&&(J=parseInt(G[0],10)+X);let K=parseInt(G[1],10);if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(K===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(K>this[Z].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[Z].length+")");for(let W=J;W<this[Z].length;W+=K)this.setPart(Z,W,Y[1]||Q)}replaceAlphaDays($){return $.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths($){return $.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames($){let Z=$.trim().toLowerCase();return Z==="@yearly"||Z==="@annually"?"0 0 1 1 *":Z==="@monthly"?"0 0 1 * *":Z==="@weekly"?"0 0 * * 0":Z==="@daily"?"0 0 * * *":Z==="@hourly"?"0 * * * *":$}setNthWeekdayOfMonth($,Z){if(typeof Z!="number"&&Z==="L")this.dayOfWeek[$]=this.dayOfWeek[$]|nZ1;else if(Z===Ca)this.dayOfWeek[$]=Ca;else if(Z<6&&Z>0)this.dayOfWeek[$]=this.dayOfWeek[$]|e_8[Z-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${Z}, Type: ${typeof Z}`)}},a_8,dU,V3=class ${tz;ms;second;minute;hour;day;month;year;constructor(Z,X){if(this.tz=X,Z&&Z instanceof Date)if(!isNaN(Z))this.fromDate(Z);else throw TypeError("CronDate: Invalid date passed to CronDate constructor");else if(Z===void 0)this.fromDate(new Date);else if(Z&&typeof Z=="string")this.fromString(Z);else if(Z instanceof $)this.fromCronDate(Z);else throw TypeError("CronDate: Invalid type ("+typeof Z+") passed to CronDate constructor")}isNthWeekdayOfMonth(Z,X,Q,Y){let G=new Date(Date.UTC(Z,X,Q)).getUTCDay(),J=0;for(let K=1;K<=Q;K++)new Date(Date.UTC(Z,X,K)).getUTCDay()===G&&J++;if(Y&Ca&&e_8[J-1]&Y)return!0;if(Y&nZ1){let K=new Date(Date.UTC(Z,X+1,0)).getUTCDate();for(let W=Q+1;W<=K;W++)if(new Date(Date.UTC(Z,X,W)).getUTCDay()===G)return!1;return!0}return!1}fromDate(Z){if(this.tz!==void 0)if(typeof this.tz=="number")this.ms=Z.getUTCMilliseconds(),this.second=Z.getUTCSeconds(),this.minute=Z.getUTCMinutes()+this.tz,this.hour=Z.getUTCHours(),this.day=Z.getUTCDate(),this.month=Z.getUTCMonth(),this.year=Z.getUTCFullYear(),this.apply();else{let X=TX.toTZ(Z,this.tz);this.ms=Z.getMilliseconds(),this.second=X.s,this.minute=X.i,this.hour=X.h,this.day=X.d,this.month=X.m-1,this.year=X.y}else this.ms=Z.getMilliseconds(),this.second=Z.getSeconds(),this.minute=Z.getMinutes(),this.hour=Z.getHours(),this.day=Z.getDate(),this.month=Z.getMonth(),this.year=Z.getFullYear()}fromCronDate(Z){this.tz=Z.tz,this.year=Z.year,this.month=Z.month,this.day=Z.day,this.hour=Z.hour,this.minute=Z.minute,this.second=Z.second,this.ms=Z.ms}apply(){if(this.month>11||this.day>a_8[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let Z=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=Z.getUTCMilliseconds(),this.second=Z.getUTCSeconds(),this.minute=Z.getUTCMinutes(),this.hour=Z.getUTCHours(),this.day=Z.getUTCDate(),this.month=Z.getUTCMonth(),this.year=Z.getUTCFullYear(),!0}else return!1}fromString(Z){if(typeof this.tz=="number"){let X=TX.fromTZISO(Z);this.ms=X.getUTCMilliseconds(),this.second=X.getUTCSeconds(),this.minute=X.getUTCMinutes(),this.hour=X.getUTCHours(),this.day=X.getUTCDate(),this.month=X.getUTCMonth(),this.year=X.getUTCFullYear(),this.apply()}else return this.fromDate(TX.fromTZISO(Z,this.tz))}findNext(Z,X,Q,Y){let G=this[X],J;Q.lastDayOfMonth&&(this.month!==1?J=a_8[this.month]:J=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let K=!Q.starDOW&&X=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let W=this[X]+Y;W<Q[X].length;W++){let H=Q[X][W];if(X==="day"&&Q.lastDayOfMonth&&W-Y==J&&(H=1),X==="day"&&!Q.starDOW){let N=Q.dayOfWeek[(K+(W-Y-1))%7];if(N&&N&Ca)N=this.isNthWeekdayOfMonth(this.year,this.month,W-Y,N)?1:0;else if(N)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${N}`);Z.legacyMode&&!Q.starDOM?H=H||N:H=H&&N}if(H)return this[X]=W-Y,G!==this[X]?2:1}return 3}recurse(Z,X,Q){let Y=this.findNext(X,dU[Q][0],Z,dU[Q][2]);if(Y>1){let G=Q+1;for(;G<dU.length;)this[dU[G][0]]=-dU[G][2],G++;if(Y===3)return this[dU[Q][1]]++,this[dU[Q][0]]=-dU[Q][2],this.apply(),this.recurse(Z,X,0);if(this.apply())return this.recurse(Z,X,Q-1)}return Q+=1,Q>=dU.length?this:this.year>=3000?null:this.recurse(Z,X,Q)}increment(Z,X,Q){return this.second+=X.interval!==void 0&&X.interval>1&&Q?X.interval:1,this.ms=0,this.apply(),this.recurse(Z,X,0)}getDate(Z){return Z||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz=="number"?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):TX.fromTZ(TX.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}},s_8=30000,pP0,tP0=class{name;options;_states;fn;constructor($,Z,X){let Q,Y;if(Sa(Z))Y=Z;else if(typeof Z=="object")Q=Z;else if(Z!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(Sa(X))Y=X;else if(typeof X=="object")Q=X;else if(X!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=Q?.name,this.options=vd4(Q),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:Q?Q.maxRuns:void 0,paused:Q?Q.paused:!1,pattern:new r_8("* * * * *")},$&&($ instanceof Date||typeof $=="string"&&$.indexOf(":")>0)?this._states.once=new V3($,this.options.timezone||this.options.utcOffset):this._states.pattern=new r_8($,this.options.timezone),this.name){if(pP0.find((G)=>G.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");pP0.push(this)}return Y!==void 0&&xd4(Y)&&(this.fn=Y,this.schedule()),this}nextRun($){let Z=this._next($);return Z?Z.getDate(!1):null}nextRuns($,Z){this._states.maxRuns!==void 0&&$>this._states.maxRuns&&($=this._states.maxRuns);let X=[],Q=Z||this._states.currentRun||void 0;for(;$--&&(Q=this.nextRun(Q));)X.push(Q);return X}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let $=this.nextRun(this._states.currentRun),Z=!this._states.paused,X=this.fn!==void 0,Q=!this._states.kill;return Z&&X&&Q&&$!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext($){let Z=this._next($);return Z?$ instanceof V3||$ instanceof Date?Z.getTime()-$.getTime():Z.getTime()-new V3($).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let $=pP0.indexOf(this);$>=0&&pP0.splice($,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule($){if($&&this.fn)throw Error("Cron: It is not allowed to schedule two functions using the same Croner instance.");$&&(this.fn=$);let Z=this.msToNext(),X=this.nextRun(this._states.currentRun);return Z==null||isNaN(Z)||X===null?this:(Z>s_8&&(Z=s_8),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(X),Z),this._states.currentTimeout&&this.options.unref&&fd4(this._states.currentTimeout),this)}async _trigger($){if(this._states.blocking=!0,this._states.currentRun=new V3(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(Z){Sa(this.options.catch)&&this.options.catch(Z,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new V3($,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger($){let Z=new Date,X=!this._states.paused&&Z.getTime()>=$.getTime(),Q=this._states.blocking&&this.options.protect;X&&!Q?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):X&&Q&&Sa(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next($){let Z=!!($||this._states.currentRun),X=!1;!$&&this.options.startAt&&this.options.interval&&([$,Z]=this._calculatePreviousRun($,Z),X=!$),$=new V3($,this.options.timezone||this.options.utcOffset),this.options.startAt&&$&&$.getTime()<this.options.startAt.getTime()&&($=this.options.startAt);let Q=this._states.once||new V3($,this.options.timezone||this.options.utcOffset);return!X&&Q!==this._states.once&&(Q=Q.increment(this._states.pattern,this.options,Z)),this._states.once&&this._states.once.getTime()<=$.getTime()||Q===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&Q.getTime()>=this.options.stopAt.getTime()?null:Q}_calculatePreviousRun($,Z){let X=new V3(void 0,this.options.timezone||this.options.utcOffset),Q=$;if(this.options.startAt.getTime()<=X.getTime()){Q=this.options.startAt;let Y=Q.getTime()+this.options.interval*1000;for(;Y<=X.getTime();)Q=new V3(Q,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),Y=Q.getTime()+this.options.interval*1000;Z=!0}return Q===null&&(Q=void 0),[Q,Z]}};var pZ1=O(()=>{TX.fromTZISO=($,Z,X)=>TX.fromTZ(_d4($,Z),X);TX.fromTZ=function($,Z){let X=new Date(Date.UTC($.y,$.m-1,$.d,$.h,$.i,$.s)),Q=iZ1($.tz,X),Y=new Date(X.getTime()-Q),G=iZ1($.tz,Y);if(G-Q===0)return Y;{let J=new Date(X.getTime()-G),K=iZ1($.tz,J);if(K-G===0)return J;if(!Z&&K-G>0)return J;if(Z)throw Error("Invalid date passed to fromTZ()");return Y}};TX.toTZ=function($,Z){let X=$.toLocaleString("en-US",{timeZone:Z}).replace(/[\u202f]/," "),Q=new Date(X);return{y:Q.getFullYear(),m:Q.getMonth()+1,d:Q.getDate(),h:Q.getHours(),i:Q.getMinutes(),s:Q.getSeconds(),tz:Z}};TX.tp=($,Z,X,Q,Y,G,J)=>({y:$,m:Z,d:X,h:Q,i:Y,s:G,tz:J});TX.minitz=TX;Ca=31|nZ1,e_8=[1,2,4,8,16],a_8=[31,28,31,30,31,30,31,31,30,31,30,31],dU=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]];pP0=[]});function oP0($,Z){try{return new tP0($,{timezone:"UTC"}).nextRun(Z)??null}catch{return null}}var tZ1=O(()=>{pZ1()});import{DBOS as A7,SchedulerMode as bd4}from"@dbos-inc/dbos-sdk";async function eZ1($){try{let{rows:Z}=await $.query(`SELECT q.name FROM dbos.queues q
2809
2809
  WHERE q.name LIKE $1
2810
2810
  AND NOT EXISTS (
2811
2811
  SELECT 1 FROM dbos.workflow_status w
@@ -3971,7 +3971,7 @@ When unsure between the two, lean toward NOT requiring review for small frontend
3971
3971
 
3972
3972
  Respond with the structured verdict and a short reason.`,X16;var Y16=O(()=>{u4();gO();pK1();yI$=tK1.object({requiresReview:tK1.boolean().describe("true if the changes should go through pull-request review"),reason:tK1.string().describe("One short sentence explaining the decision (max ~120 chars)")});X16={requiresReview:!1,reason:""}});function cI$($){if(!$||$.includes(".."))return!1;return uI$.test($)}function G16($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!cI$(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function J16($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var uI$;var K16=O(()=>{uI$=/^[\w./@-]+$/});function oK1($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function W16($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function H16($,Z,X,Q){if(!Q.connectionId)throw new xc("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new xc(UX);await qh({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(N)=>{let U=N instanceof Error?N.message:UX;throw new xc(U)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:K}=await jO(Q.connectionId,Q.owner,Q.name,$.db,$.vault),W=N20($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:K}},...W?{operator:W}:{}})});if(!H.ok){let N=await yO(H,lI$).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var lI$=10485760,xc;var N16=O(()=>{QO();uK1();Ya();Sr();xc=class xc extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function mI$($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!dI$.test(Z))throw Error(`Invalid branch name: ${$}`)}function lv($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(nI$)])}function dv($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function rK1($,Z){let Q=(U20.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return U20.set($,Y),Y.finally(()=>{if(U20.get($)===Y)U20.delete($)}),Q}async function rZ($,Z,X){let Q=dv($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),K=X?.method??"POST",W=null,H=new Headers;if(X?.jsonBody!==void 0)W=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)W=await $.req.text(),H.set("content-type","application/json");let N=X?.signal,U={method:K,headers:H,body:W,...N?{signal:N}:{}},F=async()=>{let w=await Q.proxyDaemonRequest(Y,Z,U);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))w=await Q.proxyDaemonRequest(Y,Z,U);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...zG}})}}let B=await w.text(),L=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?tI$(B):B,D=w.headers.get("content-type")??"application/json";return new Response(L,{status:w.status,headers:{"content-type":D,...zG}})};try{if(N){let w=F();return w.catch(()=>{}),await Promise.race([w,new Promise((L,D)=>{if(N.aborted)return D(N.reason);N.addEventListener("abort",()=>D(N.reason),{once:!0})})])}return await F()}catch(w){let B=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${B}`},502)}}function tI$($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function F20($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok)try{let K=JSON.parse(J);throw Error(K.error??`Daemon error (${G.status})`)}catch(K){if(K instanceof Error&&K.message!==J)throw K;throw Error(`Daemon error (${G.status})`)}return JSON.parse(J)}function oI$($){return w16.includes($)}var dI$,U16=524288,iI$=65536,nI$=1e4,F16=2000,pI$,U20,zG,w16,B16=()=>{let $=new C1;return $.use("/:virtualMcpId/:branch/*",pI$),$.post("/:virtualMcpId/:branch/write",(Z)=>rZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:lv(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>rZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:lv(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>rZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:lv(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>rZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:lv(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>rZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:lv(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>rZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:lv(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>rZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:lv(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return rZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return rZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>rZ(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>rZ(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!oI$(X))return Z.json({error:`step must be one of: ${w16.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let Y=J0(Z.var.studioContext),G=Pj0(Q.virtualMcpMetadata);try{await Aj0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:Y.id,userId:Q.callerUserId,entries:G})}catch(J){let K=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${K}`},502)}}}return rZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return wF(Z,async(Q)=>{await Q.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return r06(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>rZ(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(F16)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>rZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(F16)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>rZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=dv(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:Y,connectionIds:G}=Z.get("vmClaim"),J=Z.var.studioContext;return rK1(Q,async()=>{try{await cK1(J,X,Q);let K=W16(Y,G);if(K)await H16(J,X,Q,K)}catch(K){if(K instanceof xc)return Z.json({error:K.message},403,zG);let W=K instanceof Error?K.message:String(K);return Z.json({error:W},502,zG)}return rZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return rK1(X,()=>rZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=dv(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.var.studioContext;return rK1(Q,async()=>{try{await cK1(Y,X,Q)}catch(G){let J=G instanceof Error?G.message:String(G);return Z.json({error:J},502,zG)}return rZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",C7({maxSize:U16,onError:(Z)=>Z.json({error:"Payload too large"},413,zG)}),async(Z)=>{let X=dv(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let K=await Z.req.json().catch(()=>({})),W=K.status,H=K.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[U,F]=mK1(W)&&N?[W,H]:await Promise.all([F20(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),F20(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await Z16(J,U,F);return Z.json(w,200,zG)}catch(K){let W=K instanceof Error?K.message:String(K);if(W==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,zG);return Z.json({error:W},502,zG)}}),$.post("/:virtualMcpId/:branch/git/judge-review",C7({maxSize:U16,onError:(Z)=>Z.json({error:"Payload too large"},413,zG)}),async(Z)=>{let X=dv(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let K=await Z.req.json().catch(()=>({})),W=K.status,H=K.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[U,F]=mK1(W)&&N?[W,H]:await Promise.all([F20(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),F20(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await Q16(J,U,F,typeof K.language==="string"?K.language:void 0);return Z.json(w,200,zG)}catch(K){let W=K instanceof Error?K.message:String(K);if(W==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,zG);return Z.json({error:W},502,zG)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=dv(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.req.query("path");if(!Y||!Y.startsWith("/")||Y.startsWith("//")||Y.includes("..")||Y.includes("\\"))return Z.json({error:"Path not allowed"},403);let G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let J=G.replace(/\/+$/,""),K=oK1(`${J}${Y}`),W;try{W=await fetch(K?.url??`${J}${Y}`,{...K?{headers:{host:K.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await W.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:W.status,headers:{"content-type":W.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",C7({maxSize:iI$,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=dv(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let G;try{G=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Z.json({error:"Invalid JSON body"},400);let J=G16(G);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let K=J16(Y,J.resolveType),W=oK1(K),H;try{H=await fetch(W?.url??K,{method:"POST",headers:{"content-type":"application/json",...W?{host:W.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$};var O16=O(()=>{e6();vv();vc();n06();kU();t06();wK();xO();o06();a06();F51();Qa();pK1();Y16();K16();N16();dI$=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;pI$=i06(async($,Z)=>{let X=$.var.studioContext;try{N0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=z1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=J0(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{mI$(J)}catch(w){let B=w instanceof Error?w.message:String(w);return $.json({error:B},400)}let K=await X.storage.virtualMcps.findById(G);if(!K||K.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let W=Ir({orgId:Y.id,virtualMcpId:G,branch:J}),H=await bU(X,J,Q),N=p06({userId:H,projectRef:W}),U=K.metadata??null,F;try{F=(await NQ(X,{userId:H,branch:J,virtualMcpMetadata:U})).provider}catch{F=null}if(!F)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:F,virtualMcpId:G,branch:J,userId:H,projectRef:W,virtualMcpMetadata:U,connectionIds:K.connections?.map((w)=>w.connection_id)??[]}),Z()});U20=new Map;zG={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};w16=["clone","install","start"]});var L16=($)=>{let Z=new C1;if(Z.use("*",_v),Z.route("/",MI0()),Z.route("/",Sa8()),Z.route("/",_06()),Z.route("/",S06()),Z.route("/",K20()),Z.route("/tools",h06()),Z.route("/",b06()),Z.route("/",F06({kvStorage:$.kvStorage})),Z.route("/",N06()),Z.route("/fs",T06({getConnection:$.getNatsConnection})),Z.route("/sandbox",B16()),Z.route("/",M06()),Z.route("/deco-sites",VI0()),Z.route("/sso",jI0()),Z.route("/",W20({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Aa8()),$.mountDevAssets)Z.route("/dev-assets",SI0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",ww8()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",I06()),Z.route("/mcp",ZA0()),Z.route("/mcp/self",J20()),Z.route("/mcp",YA0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var D16=O(()=>{e6();KJ1();Ta8();FJ1();CI0();es();GJ1();U06();w06();R06();vo();r31();GA0();vK1();q06();k06();C06();v06();y06();fK1();u06();bK1();XA0();O16()});function aI$($){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}}))}async function sI$($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(rI$)});if(!X.ok){let Q=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${Q.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var rI$=1e4,eI$=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},E16=()=>{let $=new C1;return $.use("*",eI$),$.get("/",async(Z)=>{let X=Q1(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await sI$(Q,Y);return Z.json({apps:aI$(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var z16=O(()=>{e6();y8()});import{z as u1}from"zod";function hH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function H2$($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function N2$($,Z,X){try{return JSON.parse($)}catch{throw new A16(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function U2$($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:N2$(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function F2$($){let Z=$.map((X)=>{let Q=X.function.parameters?eY(X.function.parameters):eY({type:"object",properties:{}});return[X.function.name,l8({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function w2$($){if(!$)return;return{openai:{response_format:$}}}function B2$(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function j16($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function P16($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var $2$=256,Z2$,X2$,Q2$,Y2$,G2$,J2$,K2$,W2$,A16,T16,R16;var I16=O(()=>{u4();e6();vc();nU();Z2$=u1.object({type:u1.literal("function"),function:u1.object({name:u1.string(),description:u1.string().optional(),parameters:u1.record(u1.string(),u1.unknown()).optional()})}),X2$=u1.object({id:u1.string(),type:u1.literal("function"),function:u1.object({name:u1.string(),arguments:u1.string()})}),Q2$=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(X2$).optional()}),u1.object({role:u1.literal("tool"),content:u1.string(),tool_call_id:u1.string()})]),Y2$=u1.object({type:u1.literal("text")}),G2$=u1.object({type:u1.literal("json_object")}),J2$=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()})}),K2$=u1.union([Y2$,G2$,J2$]),W2$=u1.object({model:u1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:u1.array(Q2$),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(Z2$).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:K2$.optional(),user:u1.string().optional()});A16=class A16 extends Error{constructor($){super($);this.name="MessageConversionError"}};T16=new C1;T16.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(hH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(hH("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(hH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=W2$.safeParse(Q);if(!Y.success){let D=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(hH(`Invalid request: ${D.message}`,"invalid_request_error",D.path.length>0?D.path.join("."):null),400)}let G=Y.data,J=H2$(G.model);if(!J)return $.json(hH("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:K}=J,{modelId:W}=J;if(!K){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((z)=>QE(z.providerId));if(!E)return $.json(hH("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);K=E.id}let H;try{H=await Z.aiProviders.activate(K,Z.organization.id)}catch{return $.json(hH(`AI provider credential not found or inaccessible: ${K}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(W),U=U2$(G.messages),F=G.tools?F2$(G.tools):void 0,w=w2$(G.response_format),B=B2$(),L=Math.floor(Date.now()/1000);if(G.stream)return wF($,async(D)=>{let E=j16(N,U,F,G,w,$.req.raw.signal);try{let z=EO(E),j=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of z.fullStream){if(!j&&(k.type==="text-delta"||k.type==="tool-call"))await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),j=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=$2$)await I()}else if(k.type==="tool-call"){await I();let q=A++;await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:P16(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await D.writeSSE({data:"[DONE]"})}catch(z){let j=z;console.error("[openai-compat:stream] Error:",j.message),await D.writeSSE({data:JSON.stringify({error:{message:j.message,type:"server_error"}})})}});else{let D=j16(N,U,F,G,w,$.req.raw.signal),E=await LO(D),z={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)z.tool_calls=E.toolCalls.map((j)=>({id:j.toolCallId,type:"function",function:{name:j.toolName,arguments:JSON.stringify("input"in j?j.input:{})}})),z.content=null;return $.json({id:B,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:z,finish_reason:P16(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(hH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(hH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(hH(Y.message,"server_error"),500)}});R16=T16});function L2$(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??O2$}}var q16,O2$="https://ph.studio.decocms.com",M16;var k16=O(()=>{e6();Ii0();d_();QZ();y8();i31();jl0();q16=new C1;q16.get("/",($)=>{let Z={version:y50.version,theme:Ca1(),...WE().logo&&{logo:WE().logo},...OH()&&{internalUrl:ic1()},...Q1().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!Q1().firecrawlApiKey,auth:yr8(),posthog:L2$(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!OH()&&Q1().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});M16=q16});function fc($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function aK1($){return(fc($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function S16($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(fc($))}&sz=${Z}`}function V16($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function C16($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,K=Y?.trim()?V16(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):V16(`How does ${X} really perform? ${J}`,200);return{title:G,description:K}}import{z as Z1}from"zod";var mv,D2$,E2$,z2$,j2$,_16;var v16=O(()=>{mv=Z1.enum(["good","bad","neutral"]),D2$=Z1.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},Z1.object({kind:Z1.enum(["text","number","sparkline","badge","score"]).catch("text"),value:Z1.coerce.string().optional(),tone:mv.optional(),muted:Z1.boolean().optional(),delta:Z1.coerce.string().optional(),deltaDir:Z1.enum(["up","down","neutral"]).optional(),points:Z1.array(Z1.coerce.number()).optional(),label:Z1.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),E2$=Z1.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},Z1.array(D2$)),z2$={key:Z1.coerce.string(),title:Z1.coerce.string(),eyebrow:Z1.coerce.string().optional(),headline:Z1.coerce.string(),annotation:Z1.coerce.string().optional(),methodology:Z1.coerce.string().optional(),sources:Z1.array(Z1.object({name:Z1.coerce.string(),logoUrl:Z1.coerce.string()})).optional()},j2$=Z1.discriminatedUnion("template",[Z1.object({template:Z1.literal("cover"),score:Z1.object({value:Z1.coerce.number(),max:Z1.coerce.number().optional(),grade:Z1.coerce.string().optional(),label:Z1.coerce.string().optional()}).optional(),brandImage:Z1.coerce.string().optional(),screenshot:Z1.coerce.string().optional(),mobileScreenshot:Z1.coerce.string().optional()}),Z1.object({template:Z1.literal("cta"),ctaUrl:Z1.coerce.string().optional(),ctaLabel:Z1.coerce.string().optional(),bullets:Z1.array(Z1.coerce.string()).optional()}),Z1.object({template:Z1.literal("series"),points:Z1.array(Z1.coerce.number()).min(2),xLabels:Z1.array(Z1.coerce.string()).min(1),unit:Z1.coerce.string().optional(),callout:Z1.object({index:Z1.coerce.number(),value:Z1.coerce.string(),tone:mv.optional()})}),Z1.object({template:Z1.literal("threshold"),value:Z1.coerce.string().default(""),metricLabel:Z1.coerce.string().optional(),ratio:Z1.coerce.number(),thresholdRatio:Z1.coerce.number().optional(),thresholdLabel:Z1.coerce.string().default(""),tone:mv.optional()}),Z1.object({template:Z1.literal("stats"),stats:Z1.array(Z1.object({value:Z1.coerce.string(),label:Z1.coerce.string(),tone:mv.optional()})).min(1)}),Z1.object({template:Z1.literal("bars"),items:Z1.array(Z1.object({value:Z1.coerce.string(),label:Z1.coerce.string(),ratio:Z1.coerce.number(),tone:mv.optional()})).min(1)}),Z1.object({template:Z1.literal("gauges"),gauges:Z1.array(Z1.object({label:Z1.coerce.string(),value:Z1.coerce.string(),status:Z1.enum(["good","warn","bad"]).catch("warn"),caption:Z1.coerce.string().optional(),ratio:Z1.coerce.number().optional()})).min(1)}),Z1.object({template:Z1.literal("checklist"),checks:Z1.array(Z1.object({label:Z1.coerce.string(),status:Z1.enum(["pass","fail","warn"]).catch("fail"),value:Z1.coerce.string().optional()})).min(1)}),Z1.object({template:Z1.literal("table"),columns:Z1.array(Z1.object({label:Z1.coerce.string(),align:Z1.enum(["left","right"]).optional()})).min(1),rows:Z1.array(E2$).min(1),highlightRow:Z1.coerce.number().optional()}),Z1.object({template:Z1.literal("products"),products:Z1.array(Z1.object({name:Z1.coerce.string(),price:Z1.coerce.string().optional(),image:Z1.coerce.string().optional(),url:Z1.coerce.string().optional()})).min(1)}),Z1.object({template:Z1.literal("list"),entries:Z1.array(Z1.object({label:Z1.coerce.string(),severity:Z1.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:Z1.coerce.number().optional()}),Z1.object({template:Z1.literal("keywords"),volumeLabel:Z1.coerce.string().optional(),keywords:Z1.array(Z1.object({term:Z1.coerce.string(),volume:Z1.coerce.string(),position:Z1.coerce.number().catch(0)})).min(1)}),Z1.object({template:Z1.literal("competitor"),metricLabel:Z1.coerce.string().optional(),competitors:Z1.array(Z1.object({name:Z1.coerce.string(),value:Z1.coerce.string(),tone:mv.optional(),isYou:Z1.boolean().optional()})).min(1)}),Z1.object({template:Z1.literal("scorecard"),rivalLabel:Z1.coerce.string().optional(),dimensions:Z1.array(Z1.object({label:Z1.coerce.string(),you:Z1.coerce.string(),rival:Z1.coerce.string().optional(),rivalName:Z1.coerce.string().optional(),tone:mv.optional()})).min(1)})]),_16=Z1.object({...z2$,template:j2$})});function w20($){let Z=[],X=[...$.sections].sort((Q,Y)=>Q.position-Y.position).map((Q)=>{let Y=_16.safeParse(Q.props);if(Y.success)return Y.data;let G=Y.error.issues[0];return Z.push({section_type:Q.section_type,position:Q.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((Q)=>Q!==null);return{deck:{meta:{...$.meta,scores:$.summary?.scores},slides:X},drops:Z}}var sK1=O(()=>{v16()});import{join as x16}from"path";async function A2$($){try{let Z=await fetch(`${AW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(P2$)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=w20(X);if(!Q.slides.length)return null;let Y=Q.slides.find((K)=>K.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||aK1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function jG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function T2$($,Z){let X=fc($),Q=Z?.brand?.trim()||aK1(X),Y=S16(X,128),J=`${(Q1().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:K,description:W}=C16({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${jG(K)}</title>`,`<meta name="description" content="${jG(W)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${jG(K)}" />`,`<meta property="og:description" content="${jG(W)}" />`,`<meta property="og:url" content="${jG(J)}" />`,`<meta property="og:image" content="${jG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${jG(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${jG(K)}" />`,`<meta name="twitter:description" content="${jG(W)}" />`,`<meta name="twitter:image" content="${jG(H)}" />`,`<meta name="twitter:image:alt" content="${jG(N)}" />`,`<link rel="canonical" href="${jG(J)}" />`,`<link rel="icon" href="${jG(Y)}" sizes="any" />`].join(`
3973
3973
  `)}function R2$($,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}
3974
- </head>`)}function f16($){let Z=new C1;return Z.get("/:domain/og.png",async(X)=>{let Q=fc(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(x16($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${AW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(I2$)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?x16($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let K=await A2$(fc(Q)),W=T2$(Q,K);return X.html(R2$(J,W),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var P2$=2500,I2$=1e4;var b16=O(()=>{e6();sK1();xE();y8()});function qe($,Z){return fetch(`${AW({})}${$}`,Z)}async function q2$($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await qe(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:K,drops:W}=w20(J);return{status:K.slides.length?"ready":"empty",deck:K,scanned_at:J.scanned_at,drops:W}}var M2$,SK,B20=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},y16;var g16=O(()=>{e6();L3();xE();sK1();M2$=new Set(["complete","errored","terminated","unknown"]),SK=new C1;SK.use("*",async($,Z)=>{let X=await M6.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});SK.use("/run",B20);SK.use("/status",B20);SK.use("/link-token/*",B20);SK.use("/suggest",B20);SK.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),Q=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await q2$(Z,Q,Y);if($.header("Cache-Control","private, no-store"),X||!G.deck)return $.json(G);return $.json({...G,deck:{...G.deck,slides:G.deck.slides.slice(0,1)},truncated:G.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});SK.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Q=typeof X.domain==="string"?X.domain.trim():"";if(!Q)return $.json({error:"domain is required"},400);let Y=Z.email,G=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await qe("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${vE({})}`},body:JSON.stringify({url:Q,email:Y,distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let K=await J.json(),W=K.blocked?{state:"blocked"}:K.status==="fresh"?{state:"fresh"}:K.mode==="sync"?{state:"sync"}:{state:"running",id:K.id??null};return $.json(W)}catch{return $.json({error:"run failed"},502)}});SK.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await qe(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${vE({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:M2$.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});SK.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await qe(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});SK.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await qe(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});y16=SK});import{createHmac as k2$,timingSafeEqual as V2$}from"crypto";function h16($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let H of Z.split(",")){let N=H.indexOf("=");if(N<=0)continue;let U=H.slice(0,N).trim(),F=H.slice(N+1).trim();if(U==="t")Y=F;else if(U==="v1")G.push(F)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>S2$)return!1;let K=k2$("sha256",X).update(`${Y}.${$}`).digest("hex"),W=Buffer.from(K,"hex");return G.some((H)=>{let N=Buffer.from(H,"hex");return W.length===N.length&&V2$(W,N)})}function u16($){let Z;try{Z=JSON.parse($)}catch{return null}let X=h3(Z),Q=h3(h3(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:uH(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function C2$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function uH($){return typeof $==="string"?$:void 0}function h3($){return typeof $==="object"&&$!==null?$:void 0}function O20($){return typeof $==="number"?new Date($*1000):null}function ZW1($){return uH($)??uH(h3($)?.id)}function _2$($){return ZW1($.subscription)??uH(h3(h3($.parent)?.subscription_details)?.subscription)}function v2$($){let Z=O20($.current_period_end);if(Z)return Z;let X=h3($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=h3(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function eK1($,Z){let X=O20($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function $W1($,Z){let X=O20($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function x2$($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=uH(h3(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(uH(h3(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(uH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=uH(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let K=Number(h3(X.metadata)?.creditCents);if(!Number.isInteger(K)||K<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:h3(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:K,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(uH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};let G=ZW1(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(eK1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:ZW1(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:$W1(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=uH(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&eK1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":C2$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:v2$(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:$W1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=_2$(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(eK1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:O20(X.period_end),lastStripeEventAt:$W1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}async function c16($){let Z=new _W(H6().db),X=await x2$(Z,$);if(X.handled&&X.topUp)await pv8({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId});if(!X.handled&&X.orphanSubscriptionId)try{await $L8(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof YK&&(Q.status===400||Q.status===404)))throw Q}return X}var S2$=300;var l16=O(()=>{m7();Jr();C71()});var f2$=1048576,XW1;var d16=O(()=>{e6();vv();y8();l16();XW1=new C1;XW1.post("/webhook",C7({maxSize:f2$,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=Q1().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!h16(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=u16(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await c16(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});function m16($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var i16,b2$,y2$,n16;var p16=O(()=>{e6();jJ();Zu();jb();i16=new C1,b2$=["range","if-none-match","if-modified-since"],y2$=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];i16.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Bc($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new H8(401,{message:"Authentication required"})}if(!X)throw new H8(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new H8(400,{message:"Missing file key"});let Y=await Da(Q,Z);if(!Y)throw new H8(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&zJ()){let W=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!W)throw new H8(500,{message:"Invalid data URL from storage"});let[,H,N]=W,U=Buffer.from(N,"base64"),F=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return m16(F,H),new Response(U,{status:200,headers:F})}let G=new Headers;for(let W of b2$){let H=$.req.header(W);if(H)G.set(W,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new H8(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new H8(502,{message:"Upstream storage error"});let K=new Headers;for(let W of y2$){let H=J.headers.get(W);if(H)K.set(W,H)}return K.set("Cache-Control","private, max-age=86400"),m16(K,K.get("content-type")??""),new Response(J.body,{status:J.status,headers:K})});n16=i16});var Me=_((iv)=>{var g2$=iv&&iv.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),h2$=iv&&iv.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))g2$(Z,$,X)};Object.defineProperty(iv,"__esModule",{value:!0});h2$(hY(),iv)});var r16=_((t16)=>{Object.defineProperty(t16,"__esModule",{value:!0});t16.version=void 0;t16.version="3.4.0"});var e16=_((cH)=>{var u2$=cH&&cH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(cH,"__esModule",{value:!0});cH.NodeTransport=cH.VERSION=void 0;cH.nodeResolveHost=n2$;var s$=Me(),c2$=U0("net"),QW1=U0("tls"),l2$=U0("path"),a16=U0("fs"),d2$=u2$(U0("dns")),m2$=r16();cH.VERSION=m2$.version;var i2$="nats.js";class s16{socket;version;lang;yields=[];signal=(0,s$.deferred)();closedNotification=(0,s$.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=i2$,this.version=cH.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,s$.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,K=J===!0&&Z.tls!==null;if(!Q&&(G||K))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw s$.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new s$.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,K=J==="ECONNREFUSED"?new s$.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),K}}dial($){let Z=(0,s$.deferred)(),X,Q=(0,c2$.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,s$.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=s$.DataBuffer.concat(...this.yields),Y=(0,s$.extractProtocolMessage)(Q);if(Y!=="")try{let G=s$.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,s$.deferred)();try{if($=(0,l2$.resolve)($),!(0,a16.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,a16.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let K=await this.loadFile(Z);if(K)$.cert=K}else if(X)$.cert=X;if(G){let K=await this.loadFile(G);if(K)$.key=K}else if(J)$.key=J;if(Q){let K=await this.loadFile(Q);if(K)$.ca=[K]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(K){return Promise.reject(K)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,s$.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new s$.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,s$.deferred)();try{let Y=(0,QW1.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new s$.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,s$.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new s$.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,s$.deferred)();try{let Q=(0,QW1.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new s$.errors.ConnectionError(Q.message,{cause:Q}))}return X}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,s$.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,s$.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 QW1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,s$.render)($)}`);let Z=(0,s$.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,s$.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,s$.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}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(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}cH.NodeTransport=s16;function n2$($){let Z=(0,s$.deferred)();return d2$.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let Y=[];for(let G of Q)Y.push(G.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var Y86=_((Q86)=>{Object.defineProperty(Q86,"__esModule",{value:!0});Q86.connect=p2$;var $86=e16(),Z86=Me(),X86=Me();function p2$($={}){if((0,X86.hasWsProtocol)($))return Promise.reject(X86.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Z86.setTransportFactory)({factory:()=>{return new $86.NodeTransport},dnsResolveFn:$86.nodeResolveHost}),Z86.NatsConnectionImpl.connect($)}});var G86=_((BF)=>{var o2$=BF&&BF.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),r2$=BF&&BF.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))o2$(Z,$,X)};Object.defineProperty(BF,"__esModule",{value:!0});BF.connect=void 0;var a2$=Y86();Object.defineProperty(BF,"connect",{enumerable:!0,get:function(){return a2$.connect}});r2$(Me(),BF)});function H86($){let Z=$?.connectFn??Zq$,X=null,Q=null,Y=!1,G=!1,J=!1,K=[];function W(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${K.length} callbacks`);for(let F of K)try{F()}catch{}}function N(F){(async()=>{for await(let w of F.status())if(w.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(w.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function U(F,w){let B=0;while(!G)try{X=await Z({servers:F,timeout:$q$,reconnect:!0,maxReconnectAttempts:-1,...w?{authenticator:w}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${B} attempt(s)`),Q=null,J=!1,N(X),H();return}catch{B++;let L=RY(e2$,s2$,B-1,2,0.5);await h8(L)}}return{init(F,w){if(Y)return;Y=!0,G=!1;let B=w?.creds?J86.credsAuthenticator(new TextEncoder().encode(w.creds)):void 0;U(F,B).catch(()=>{})},isConnected(){return W()},getConnection(){return W()?X:null},getJetStream(){if(!W())return null;if(!Q)Q=W86.jetstream(X);return Q},onReady(F){if(K.push(F),W())try{F()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let F=X;X=null,await F.drain().catch(()=>{})}}}}function Zq$($){return K86.connect($)}var J86,K86,W86,s2$=100,e2$=3000,$q$=3000;var N86=O(()=>{e$();J86=V(xm(),1),K86=V(G86(),1),W86=V(sD(),1)});function YW1($,Z){return`${$}.${Z}`}class GW1{cache;constructor($){this.cache=Nc({ttlMs:$?.ttlMs??Xq$,maxSize:$?.maxSize??Qq$})}async get($,Z){return this.cache.get(YW1($,Z))??null}async set($,Z,X){this.cache.set(YW1($,Z),X)}async invalidate($,Z){this.cache.delete(YW1($,Z))}teardown(){this.cache.clear()}}var Xq$=600000,Qq$=5000;var U86=()=>{};function L20($,Z){return`${$}:${Z}`}function JW1($){let Z=Nc({ttlMs:$?.ttlMs??Yq$,maxSize:$?.maxSize??Gq$}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function K(W,H){let N=X?.();if(!N)return;try{N.publish(F86,Y.encode(JSON.stringify({organizationId:W,keyId:H,originId:Q})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(W,H){return Z.get(L20(W,H))},set(W,H,N){Z.set(L20(W,H),N)},invalidate(W,H){Z.delete(L20(W,H)),K(W,H)},start(){if(J)return;let W=X?.();if(!W)return;J=W.subscribe(F86),(async()=>{for await(let H of J)try{let N=JSON.parse(G.decode(H.data));if(N.originId===Q)continue;Z.delete(L20(N.organizationId,N.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var F86="studio.ai-provider-keys.invalidate",Yq$=30000,Gq$=5000;var w86=()=>{};class KW1{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder;this.subscriptions=B86.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;if(G.messageId&&this.hasSeen(G.messageId))continue;this.onCancel?.(G.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 X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId,messageId:crypto.randomUUID()}));for(let Q of B86)Z.publish(Q,X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}publishControlFrame($,Z){}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.onCancel=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var B86;var O86=O(()=>{B86=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var L86=($)=>{let Z;return()=>Z??=$()},WW1,HW1;var D86=O(()=>{I5();WW1=L86(()=>D6.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),HW1=L86(()=>D6.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function Fq$(){return{name:cU,subjects:[`${qP0}.>`],storage:CK.StorageType.File,max_age:Wq$,max_bytes:Nq$,max_msgs_per_subject:Uq$,discard:CK.DiscardPolicy.Old,retention:CK.RetentionPolicy.Limits,duplicate_window:Hq$,num_replicas:1}}class j86{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 E86($){let Z=z86.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function Lq$($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((K)=>{if(X++,Kq$().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,K)})},get errorCount(){return X}}}function Dq$($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class NW1{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=Fq$(),X=await aZ(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await CK.jetstreamManager($);try{await Q.streams.info(cU),await Q.streams.update(cU,Z)}catch(Y){if(Y instanceof Error&&Y.message.includes("stream not found"))await Q.streams.add(Z);else if(Y instanceof Error&&/can ?not change.*storage|storage type/i.test(Y.message))await Q.streams.delete(cU),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:Dq$});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){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 G=Lq$(Z,Q),J=!1,K=()=>{if(J)return;J=!0;let H=VC8(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",K,{once:!0});let W=(H)=>{let N=performance.now(),U=h91(H,{runId:Z}),F=performance.now()-N;if(WW1().record(F),HW1().add(1,{"org.id":Q??"unknown"}),Oq$?.record(F,U.reduce((w,B)=>w+B.data.length,0)),U.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let w of U)G.publish(Y,w.subject,w.data,w.headers?E86(w.headers):void 0)};return(async()=>{let H=$.getReader(),N=0,U=0,F;try{while(!0){let{done:w,value:B}=await H.read();if(w)break;if(W(B),U++,++N>=64)N=0,await new Promise((L)=>setImmediate(L))}}catch(w){F=w,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,w?.message??w)}finally{if(H.releaseLock(),K(),Bq$)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:G.errorCount}))}if(F!==void 0)throw F})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=h91(Z,{runId:$,dedup:X});if(WW1().record(performance.now()-Y),HW1().add(1),G.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of G)await Q.publish(J.subject,J.data,{...J.headers?{headers:E86(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=kC8({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?CK.DeliverPolicy.New:CK.DeliverPolicy.All,G=X?.closeOnDone??!1,J=nO($),K;try{K=await(await Q.consumers.get(cU,{filter_subjects:J,deliver_policy:Y})).consume()}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let N=CP0({messages:async function*(){try{for await(let L of K)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{K.stop()}}(),onCancel:()=>K.stop()}).pipeThrough(MP0()).pipeThrough(kP0()).getReader(),U=!1,F=()=>{if(U)return;U=!0;try{N.releaseLock()}catch{}},w=!1,B=()=>{if(w)return;w=!0,K.stop(),N.cancel().catch(()=>{}),F()};return Z?.addEventListener("abort",B,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:D,value:E}=await N.read();if(D){B(),L.close();return}let z=E;if(z.kind==="done"){if(G){B(),L.close();return}continue}L.enqueue(z.chunk);return}},cancel(){B()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(cU,{filter:nO($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var CK,z86,Jq$=($)=>{let Z;return()=>Z??=$()},Kq$,Wq$=86400000000000,Hq$=120000000000,Nq$=4294967296,Uq$=500000,wq$,Bq$,Oq$;var P86=O(()=>{e$();u91();_P0();VP0();I5();D86();CK=V(sD(),1),z86=V(xm(),1),Kq$=Jq$(()=>D6.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));wq$=process.env.STREAM_ENCODE_TRACE==="1",Bq$=process.env.DECOPILOT_STREAM_TRACE==="1";Oq$=wq$?new j86:null});function D20($,Z,X,Q){if(!Q)return!1;return $.emit(Z,HW(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,harnessId:Q.harness_id??void 0,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var A86=O(()=>{R6()});class UW1{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}}class FW1{taskBoard;contextFactory;options;timer=null;running=!1;cursor=null;constructor($,Z,X={}){this.taskBoard=$;this.contextFactory=Z;this.options=X}start(){if(this.timer)return;let $=this.options.intervalMs??Eq$;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??zq$,X=await this.taskBoard.listItemsPendingReview(Z,this.cursor),Q=X.at(-1);this.cursor=X.length===Z&&Q?{updatedAt:Q.updatedAt,id:Q.id}:null;for(let{id:Y,organizationId:G}of X)try{if(await this.reconcileItem(Y,G))$++}catch(J){console.error(`[task-board-review-sweeper] ${Y} failed`,J)}}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reconcileItem($,Z){let X=await this.taskBoard.getById($,Z);if(!X)return!1;for(let J of X.threads){let K=J.lastMessage?Xu(J.lastMessage):null;if(!K)continue;await this.taskBoard.linkPr({taskBoardItemId:$,organizationId:Z,url:K.url,prNumber:K.number,repoOwner:K.owner,repoName:K.repo,connectionId:null})}let Q=await this.taskBoard.listPrs($,Z);if(Q.length===0)return!1;let Y=await this.contextFactory(Z,X.assignedBy??X.createdBy);if(!Y)return!1;let G=await Promise.all(Q.map(async(J)=>({...J,...await jZ1(Y,Z,J)})));if(!zZ1(G))return!1;return await hP0(Y,X),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var Eq$=60000,zq$=50;var T86=O(()=>{XP0();OZ1();Va()});import{readdir as jq$,rm as E20}from"fs/promises";import{join as z20}from"path";async function j20($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-Pq$),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await nv($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await R86($,Y,Z);else if(!Y.startsWith(".")){let G=z20($,Y),J=await nv(G);for(let W of J){if(!/^\d{4}$/.test(W))continue;X+=await R86(G,W,Z)}if((await nv(G)).length===0)await E20(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function R86($,Z,X){let Q=0,Y=z20($,Z),G=await nv(Y);for(let K of G){if(!/^\d{2}$/.test(K))continue;let W=z20(Y,K),H=await nv(W);for(let U of H){if(!/^\d{2}$/.test(U))continue;let F=new Date(`${Z}-${K}-${U}T00:00:00Z`);if(isNaN(F.getTime()))continue;if(F<X){let w=z20(W,U);await E20(w,{recursive:!0,force:!0}),Q++}}if((await nv(W)).length===0)await E20(W,{recursive:!0,force:!0})}if((await nv(Y)).length===0)await E20(Y,{recursive:!0,force:!0});return Q}async function nv($){try{return(await jq$($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var Pq$=30;var wW1=()=>{};import{DBOS as BW1,SchedulerMode as Aq$}from"@dbos-inc/dbos-sdk";async function Rq$(){let $=[XJ(),vf(),AN()],Z=0;for(let X of $)try{Z+=await j20(X)}catch(Q){console.error("[monitoring-retention] cleanup failed:",Q)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function Iq$($,Z){await BW1.runStep(()=>Rq$(),{name:"monitoringRetention"})}function q86(){if(I86)return;I86=!0;let $=BW1.registerWorkflow(Iq$,{name:"monitoringRetentionWorkflow"});BW1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:Tq$,mode:Aq$.ExactlyOncePerIntervalWhenActive})}var Tq$="23 4 * * *",I86=!1;var M86=O(()=>{vY();wW1()});function k86($){return async(Z,X)=>{let Q=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","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await XO.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await N11($.db,Z,Q.role);return Y.boundAuth=H11({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new Jz(X,void 0,Y.boundAuth,Q.role,"self"),_G0(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var V86=O(()=>{Kz();So()});import{EventEmitter as qq$}from"events";var OW1;var S86=O(()=>{hD();OW1=new qq$;OW1.on("request",($)=>{Uw($)})});function C86(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let F=await $.req.raw.clone().json();if(F.method==="tools/call"&&F.params?.name){let w=bc(F.params.name),B=F.params.arguments||{},L=Object.keys(B).map((E)=>bc(E)),D=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";G=`${W5.tool}${w}${W5.dim}(${D})${W5.reset}`}else if(F.method)G=`${W5.dim}${bc(F.method)}${W5.reset}`}}catch{}}let K=bc(Y);if(Y.startsWith("/mcp/conn_")){let N=Y.split("/")[2]??"";K=`/mcp/${W5.mcp}${bc(N.slice(0,12))}\u2026${W5.reset}`}else if(Y==="/mcp")K=`${W5.mcp}/mcp${W5.reset}`;else if(Y==="/mcp/registry")K=`${W5.mcp}/mcp/registry${W5.reset}`;let W=kq$(Q),H=J?"\u25C0":"\u2190";if(!b50())console.log(`${W5.dim}${H}${W5.reset} ${W}${Q}${W5.reset} ${K}${G?` ${G}`:""}`);try{await Z()}finally{let N=Date.now()-X,U=$.res.status,F=Mq$(U),w=N<1000?`${N}ms`:`${(N/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!b50())console.log(`${W5.dim}${B}${W5.reset} ${W}${Q}${W5.reset} ${K}${G?` ${G}`:""} ${F}${U}${W5.reset} ${W5.duration}${w}${W5.reset}`);OW1.emit("request",{method:Q,path:bc(Y),status:U,duration:N,timestamp:new Date})}}}var W5,Mq$=($)=>{if($>=500)return W5.serverError;if($>=400)return W5.clientError;if($>=300)return W5.redirect;return W5.ok},kq$=($)=>{return W5[$]||W5.reset},bc=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var _86=O(()=>{hD();S86();W5={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 b86}from"crypto";import{mkdir as Vq$,readdir as Sq$,rm as v86,stat as y86}from"fs/promises";import{join as DW1,relative as Cq$}from"path";import{z as I8}from"zod";function h86($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return DW1(_q$,Z)}function u86($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function LW1($,Z){let X=h86($),Q=u86(Z);return DW1(X,Q)}function vq$($,Z,X,Q){let Y=Q1().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return b86("sha256",Y).update(G).digest("hex")}function f86($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=vq$(Z,X,G,Y),K=new URL(`/api/dev-assets/${Z}/${u86(X)}`,$);return K.searchParams.set("expires",G.toString()),K.searchParams.set("signature",J),K.searchParams.set("method",Y),K.toString()}function c86($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${b86("md5","etag").update(Q).digest("hex")}"`}async function l86($,Z,X,Q,Y){try{let G=await Sq$($,{withFileTypes:!0});for(let J of G){let K=DW1($,J.name),H=Cq$(Z,K).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let N=H+"/";if(!X||N.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))Y.commonPrefixes.add(N)}}else await l86(K,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let N=H.slice(X.length);if(N.includes(Q)){let U=N.indexOf(Q),F=X+N.slice(0,U+1);Y.commonPrefixes.add(F);continue}}try{let N=await y86(K);Y.objects.push({key:H,size:N.size,lastModified:N.mtime.toISOString(),etag:c86(K,N.mtime,N.size)})}catch{}}}}catch{}}function d86($,Z){let Q=J0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:I8.object({prefix:I8.string().optional(),maxKeys:I8.number().optional().default(1000),continuationToken:I8.string().optional(),delimiter:I8.string().optional()}),outputSchema:I8.object({objects:I8.array(I8.object({key:I8.string(),size:I8.number(),lastModified:I8.string(),etag:I8.string()})),nextContinuationToken:I8.string().optional(),isTruncated:I8.boolean(),commonPrefixes:I8.array(I8.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",K=G.maxKeys??1000,W=G.delimiter,H=G.continuationToken,N=h86(Q);await Vq$(N,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await l86(N,N,J,W,U),U.objects.sort((D,E)=>D.key.localeCompare(E.key));let F=0;if(H){if(F=U.objects.findIndex((D)=>D.key>H),F===-1)F=U.objects.length}let w=U.objects.slice(F,F+K),B=F+K<U.objects.length,L=B?w[w.length-1]?.key:void 0;return{objects:w,isTruncated:B,nextContinuationToken:L,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:I8.object({key:I8.string()}),outputSchema:I8.object({contentType:I8.string().optional(),contentLength:I8.number(),lastModified:I8.string(),etag:I8.string(),metadata:I8.record(I8.string(),I8.string()).optional()}),handler:async(Y)=>{let G=Y,J=LW1(Q,G.key),K=await y86(J);return{contentType:BJ1(G.key),contentLength:K.size,lastModified:K.mtime.toISOString(),etag:c86(J,K.mtime,K.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:I8.object({key:I8.string(),expiresIn:I8.number().optional()}),outputSchema:I8.object({url:I8.string(),expiresIn:I8.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??x86;return{url:f86(Z,Q,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:I8.object({key:I8.string(),expiresIn:I8.number().optional(),contentType:I8.string().optional()}),outputSchema:I8.object({url:I8.string(),expiresIn:I8.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??x86;return{url:f86(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:I8.object({key:I8.string()}),outputSchema:I8.object({success:I8.boolean(),key:I8.string()}),handler:async(Y)=>{let G=Y,J=LW1(Q,G.key);try{return await v86(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:I8.object({keys:I8.array(I8.string()).max(1000)}),outputSchema:I8.object({deleted:I8.array(I8.string()),errors:I8.array(I8.object({key:I8.string(),message:I8.string()}))}),handler:async(Y)=>{let G=Y,J=[],K=[];return await Promise.all(G.keys.map(async(W)=>{let H=LW1(Q,W);try{await v86(H),J.push(W)}catch(N){K.push({key:W,message:N instanceof Error?N.message:"Unknown error"})}})),{deleted:J,errors:K}}}]}async function EW1($,Z,X){let Q=d86(Z,X),Y=new zW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:O5});for(let J of Q){let K="shape"in J.inputSchema?J.inputSchema.shape:I8.object({}).shape,W=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:I8.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:K,outputSchema:W,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let N=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(N)}],structuredContent:N}}catch(N){return{content:[{type:"text",text:`Error: ${N.message}`}],isError:!0}}})}let G=new FQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),S3(Y,G,$,"mcp:dev-assets")}async function m86($,Z,X,Q){let G=d86(X,Q).find((J)=>J.name===$);if(!G)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await G.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var _q$="./data/assets",x86=3600,g86,i86;var n86=O(()=>{y8();Ou();e6();Un();a_();rX();CI0();g86=new C1;g86.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return EW1($.req.raw,Z,Q)});i86=g86});var p86={};w0(p86,{mountDevRoutes:()=>xq$});function xq$($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`;return EW1(Q.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`,K=Q.req.param("toolName");if(!K)return Q.json({error:"Missing tool name"},400);let W=await Q.req.json(),H=await m86(K,W,Y,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",i86);let X=new C1;X.use("*",kK({mountPath:"/api/dev-assets"})),X.route("/",SI0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var t86=O(()=>{e6();JJ1();CI0();n86()});import{sql as fq$}from"kysely";import{randomUUID as o86}from"crypto";import{z as bq$}from"zod";async function gq$($){let Z=new Date().toISOString(),X=o86(),Q=t4.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((K)=>K.or([K("publisher","is",null),K("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((K)=>({id:o86(),event_id:X,subscription_id:K.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await fq$`SELECT
3974
+ </head>`)}function f16($){let Z=new C1;return Z.get("/:domain/og.png",async(X)=>{let Q=fc(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(x16($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${AW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(I2$)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?x16($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let K=await A2$(fc(Q)),W=T2$(Q,K);return X.html(R2$(J,W),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var P2$=2500,I2$=1e4;var b16=O(()=>{e6();sK1();xE();y8()});function qe($,Z){return fetch(`${AW({})}${$}`,Z)}async function q2$($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await qe(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:K,drops:W}=w20(J);return{status:K.slides.length?"ready":"empty",deck:K,scanned_at:J.scanned_at,drops:W}}var M2$,SK,B20=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},y16;var g16=O(()=>{e6();L3();xE();sK1();M2$=new Set(["complete","errored","terminated","unknown"]),SK=new C1;SK.use("*",async($,Z)=>{let X=await M6.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});SK.use("/run",B20);SK.use("/status",B20);SK.use("/link-token/*",B20);SK.use("/suggest",B20);SK.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),Q=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await q2$(Z,Q,Y);if($.header("Cache-Control","private, no-store"),X||!G.deck)return $.json(G);return $.json({...G,deck:{...G.deck,slides:G.deck.slides.slice(0,1)},truncated:G.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});SK.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Q=typeof X.domain==="string"?X.domain.trim():"";if(!Q)return $.json({error:"domain is required"},400);let Y=Z.email,G=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await qe("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${vE({})}`},body:JSON.stringify({url:Q,email:Y,distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let K=await J.json(),W=K.blocked?{state:"blocked"}:K.status==="fresh"?{state:"fresh"}:K.mode==="sync"?{state:"sync"}:{state:"running",id:K.id??null};return $.json(W)}catch{return $.json({error:"run failed"},502)}});SK.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await qe(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${vE({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:M2$.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});SK.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await qe(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});SK.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await qe(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});y16=SK});import{createHmac as k2$,timingSafeEqual as V2$}from"crypto";function h16($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let H of Z.split(",")){let N=H.indexOf("=");if(N<=0)continue;let U=H.slice(0,N).trim(),F=H.slice(N+1).trim();if(U==="t")Y=F;else if(U==="v1")G.push(F)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>S2$)return!1;let K=k2$("sha256",X).update(`${Y}.${$}`).digest("hex"),W=Buffer.from(K,"hex");return G.some((H)=>{let N=Buffer.from(H,"hex");return W.length===N.length&&V2$(W,N)})}function u16($){let Z;try{Z=JSON.parse($)}catch{return null}let X=h3(Z),Q=h3(h3(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:uH(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function C2$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function uH($){return typeof $==="string"?$:void 0}function h3($){return typeof $==="object"&&$!==null?$:void 0}function O20($){return typeof $==="number"?new Date($*1000):null}function ZW1($){return uH($)??uH(h3($)?.id)}function _2$($){return ZW1($.subscription)??uH(h3(h3($.parent)?.subscription_details)?.subscription)}function v2$($){let Z=O20($.current_period_end);if(Z)return Z;let X=h3($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=h3(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function eK1($,Z){let X=O20($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function $W1($,Z){let X=O20($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function x2$($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=uH(h3(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(uH(h3(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(uH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=uH(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let K=Number(h3(X.metadata)?.creditCents);if(!Number.isInteger(K)||K<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:h3(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:K,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(uH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};let G=ZW1(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(eK1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:ZW1(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:$W1(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=uH(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&eK1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":C2$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:v2$(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:$W1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=_2$(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(eK1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:O20(X.period_end),lastStripeEventAt:$W1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}async function c16($){let Z=new _W(H6().db),X=await x2$(Z,$);if(X.handled&&X.topUp)await pv8({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId});if(!X.handled&&X.orphanSubscriptionId)try{await $L8(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof YK&&(Q.status===400||Q.status===404)))throw Q}return X}var S2$=300;var l16=O(()=>{m7();Jr();C71()});var f2$=1048576,XW1;var d16=O(()=>{e6();vv();y8();l16();XW1=new C1;XW1.post("/webhook",C7({maxSize:f2$,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=Q1().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!h16(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=u16(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await c16(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});function m16($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var i16,b2$,y2$,n16;var p16=O(()=>{e6();jJ();Zu();jb();i16=new C1,b2$=["range","if-none-match","if-modified-since"],y2$=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];i16.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Bc($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new H8(401,{message:"Authentication required"})}if(!X)throw new H8(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new H8(400,{message:"Missing file key"});let Y=await Da(Q,Z);if(!Y)throw new H8(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&zJ()){let W=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!W)throw new H8(500,{message:"Invalid data URL from storage"});let[,H,N]=W,U=Buffer.from(N,"base64"),F=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return m16(F,H),new Response(U,{status:200,headers:F})}let G=new Headers;for(let W of b2$){let H=$.req.header(W);if(H)G.set(W,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new H8(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new H8(502,{message:"Upstream storage error"});let K=new Headers;for(let W of y2$){let H=J.headers.get(W);if(H)K.set(W,H)}return K.set("Cache-Control","private, max-age=86400"),m16(K,K.get("content-type")??""),new Response(J.body,{status:J.status,headers:K})});n16=i16});var Me=_((iv)=>{var g2$=iv&&iv.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),h2$=iv&&iv.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))g2$(Z,$,X)};Object.defineProperty(iv,"__esModule",{value:!0});h2$(hY(),iv)});var r16=_((t16)=>{Object.defineProperty(t16,"__esModule",{value:!0});t16.version=void 0;t16.version="3.4.0"});var e16=_((cH)=>{var u2$=cH&&cH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(cH,"__esModule",{value:!0});cH.NodeTransport=cH.VERSION=void 0;cH.nodeResolveHost=n2$;var s$=Me(),c2$=U0("net"),QW1=U0("tls"),l2$=U0("path"),a16=U0("fs"),d2$=u2$(U0("dns")),m2$=r16();cH.VERSION=m2$.version;var i2$="nats.js";class s16{socket;version;lang;yields=[];signal=(0,s$.deferred)();closedNotification=(0,s$.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=i2$,this.version=cH.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,s$.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,K=J===!0&&Z.tls!==null;if(!Q&&(G||K))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw s$.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new s$.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,K=J==="ECONNREFUSED"?new s$.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),K}}dial($){let Z=(0,s$.deferred)(),X,Q=(0,c2$.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,s$.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=s$.DataBuffer.concat(...this.yields),Y=(0,s$.extractProtocolMessage)(Q);if(Y!=="")try{let G=s$.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,s$.deferred)();try{if($=(0,l2$.resolve)($),!(0,a16.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,a16.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let K=await this.loadFile(Z);if(K)$.cert=K}else if(X)$.cert=X;if(G){let K=await this.loadFile(G);if(K)$.key=K}else if(J)$.key=J;if(Q){let K=await this.loadFile(Q);if(K)$.ca=[K]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(K){return Promise.reject(K)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,s$.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new s$.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,s$.deferred)();try{let Y=(0,QW1.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new s$.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,s$.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new s$.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,s$.deferred)();try{let Q=(0,QW1.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new s$.errors.ConnectionError(Q.message,{cause:Q}))}return X}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,s$.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,s$.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 QW1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,s$.render)($)}`);let Z=(0,s$.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,s$.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,s$.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}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(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}cH.NodeTransport=s16;function n2$($){let Z=(0,s$.deferred)();return d2$.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let Y=[];for(let G of Q)Y.push(G.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var Y86=_((Q86)=>{Object.defineProperty(Q86,"__esModule",{value:!0});Q86.connect=p2$;var $86=e16(),Z86=Me(),X86=Me();function p2$($={}){if((0,X86.hasWsProtocol)($))return Promise.reject(X86.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Z86.setTransportFactory)({factory:()=>{return new $86.NodeTransport},dnsResolveFn:$86.nodeResolveHost}),Z86.NatsConnectionImpl.connect($)}});var G86=_((BF)=>{var o2$=BF&&BF.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),r2$=BF&&BF.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))o2$(Z,$,X)};Object.defineProperty(BF,"__esModule",{value:!0});BF.connect=void 0;var a2$=Y86();Object.defineProperty(BF,"connect",{enumerable:!0,get:function(){return a2$.connect}});r2$(Me(),BF)});function H86($){let Z=$?.connectFn??Zq$,X=null,Q=null,Y=!1,G=!1,J=!1,K=[];function W(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${K.length} callbacks`);for(let F of K)try{F()}catch{}}function N(F){(async()=>{for await(let w of F.status())if(w.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(w.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function U(F,w){let B=0;while(!G)try{X=await Z({servers:F,timeout:$q$,reconnect:!0,maxReconnectAttempts:-1,...w?{authenticator:w}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${B} attempt(s)`),Q=null,J=!1,N(X),H();return}catch{B++;let L=RY(e2$,s2$,B-1,2,0.5);await h8(L)}}return{init(F,w){if(Y)return;Y=!0,G=!1;let B=w?.creds?J86.credsAuthenticator(new TextEncoder().encode(w.creds)):void 0;U(F,B).catch(()=>{})},isConnected(){return W()},getConnection(){return W()?X:null},getJetStream(){if(!W())return null;if(!Q)Q=W86.jetstream(X);return Q},onReady(F){if(K.push(F),W())try{F()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let F=X;X=null,await F.drain().catch(()=>{})}}}}function Zq$($){return K86.connect($)}var J86,K86,W86,s2$=100,e2$=3000,$q$=3000;var N86=O(()=>{e$();J86=V(xm(),1),K86=V(G86(),1),W86=V(sD(),1)});function YW1($,Z){return`${$}.${Z}`}class GW1{cache;constructor($){this.cache=Nc({ttlMs:$?.ttlMs??Xq$,maxSize:$?.maxSize??Qq$})}async get($,Z){return this.cache.get(YW1($,Z))??null}async set($,Z,X){this.cache.set(YW1($,Z),X)}async invalidate($,Z){this.cache.delete(YW1($,Z))}teardown(){this.cache.clear()}}var Xq$=600000,Qq$=5000;var U86=()=>{};function L20($,Z){return`${$}:${Z}`}function JW1($){let Z=Nc({ttlMs:$?.ttlMs??Yq$,maxSize:$?.maxSize??Gq$}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function K(W,H){let N=X?.();if(!N)return;try{N.publish(F86,Y.encode(JSON.stringify({organizationId:W,keyId:H,originId:Q})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(W,H){return Z.get(L20(W,H))},set(W,H,N){Z.set(L20(W,H),N)},invalidate(W,H){Z.delete(L20(W,H)),K(W,H)},start(){if(J)return;let W=X?.();if(!W)return;J=W.subscribe(F86),(async()=>{for await(let H of J)try{let N=JSON.parse(G.decode(H.data));if(N.originId===Q)continue;Z.delete(L20(N.organizationId,N.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var F86="studio.ai-provider-keys.invalidate",Yq$=30000,Gq$=5000;var w86=()=>{};class KW1{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder;this.subscriptions=B86.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;if(G.messageId&&this.hasSeen(G.messageId))continue;this.onCancel?.(G.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 X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId,messageId:crypto.randomUUID()}));for(let Q of B86)Z.publish(Q,X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}publishControlFrame($,Z){}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.onCancel=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var B86;var O86=O(()=>{B86=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var L86=($)=>{let Z;return()=>Z??=$()},WW1,HW1;var D86=O(()=>{I5();WW1=L86(()=>D6.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),HW1=L86(()=>D6.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function Fq$(){return{name:cU,subjects:[`${qP0}.>`],storage:CK.StorageType.File,max_age:Wq$,max_bytes:Nq$,max_msgs_per_subject:Uq$,discard:CK.DiscardPolicy.Old,retention:CK.RetentionPolicy.Limits,duplicate_window:Hq$,num_replicas:1}}class j86{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 E86($){let Z=z86.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function Lq$($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((K)=>{if(X++,Kq$().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,K)})},get errorCount(){return X}}}function Dq$($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class NW1{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=Fq$(),X=await aZ(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await CK.jetstreamManager($);try{await Q.streams.info(cU),await Q.streams.update(cU,Z)}catch(Y){if(Y instanceof Error&&Y.message.includes("stream not found"))await Q.streams.add(Z);else if(Y instanceof Error&&/can ?not change.*storage|storage type/i.test(Y.message))await Q.streams.delete(cU),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:Dq$});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){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 G=Lq$(Z,Q),J=!1,K=()=>{if(J)return;J=!0;let H=VC8(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",K,{once:!0});let W=(H)=>{let N=performance.now(),U=h91(H,{runId:Z}),F=performance.now()-N;if(WW1().record(F),HW1().add(1,{"org.id":Q??"unknown"}),Oq$?.record(F,U.reduce((w,B)=>w+B.data.length,0)),U.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let w of U)G.publish(Y,w.subject,w.data,w.headers?E86(w.headers):void 0)};return(async()=>{let H=$.getReader(),N=0,U=0,F;try{while(!0){let{done:w,value:B}=await H.read();if(w)break;if(W(B),U++,++N>=64)N=0,await new Promise((L)=>setImmediate(L))}}catch(w){F=w,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,w?.message??w)}finally{if(H.releaseLock(),K(),Bq$)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:G.errorCount}))}if(F!==void 0)throw F})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=h91(Z,{runId:$,dedup:X});if(WW1().record(performance.now()-Y),HW1().add(1),G.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of G)await Q.publish(J.subject,J.data,{...J.headers?{headers:E86(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=kC8({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?CK.DeliverPolicy.New:CK.DeliverPolicy.All,G=X?.closeOnDone??!1,J=nO($),K;try{K=await(await Q.consumers.get(cU,{filter_subjects:J,deliver_policy:Y})).consume()}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let N=CP0({messages:async function*(){try{for await(let L of K)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{K.stop()}}(),onCancel:()=>K.stop()}).pipeThrough(MP0()).pipeThrough(kP0()).getReader(),U=!1,F=()=>{if(U)return;U=!0;try{N.releaseLock()}catch{}},w=!1,B=()=>{if(w)return;w=!0,K.stop(),N.cancel().catch(()=>{}),F()};return Z?.addEventListener("abort",B,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:D,value:E}=await N.read();if(D){B(),L.close();return}let z=E;if(z.kind==="done"){if(G){B(),L.close();return}continue}L.enqueue(z.chunk);return}},cancel(){B()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(cU,{filter:nO($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var CK,z86,Jq$=($)=>{let Z;return()=>Z??=$()},Kq$,Wq$=86400000000000,Hq$=120000000000,Nq$=4294967296,Uq$=500000,wq$,Bq$,Oq$;var P86=O(()=>{e$();u91();_P0();VP0();I5();D86();CK=V(sD(),1),z86=V(xm(),1),Kq$=Jq$(()=>D6.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));wq$=process.env.STREAM_ENCODE_TRACE==="1",Bq$=process.env.DECOPILOT_STREAM_TRACE==="1";Oq$=wq$?new j86:null});function D20($,Z,X,Q){if(!Q)return!1;return $.emit(Z,HW(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,harnessId:Q.harness_id??void 0,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var A86=O(()=>{R6()});class UW1{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}}class FW1{taskBoard;contextFactory;options;timer=null;running=!1;cursor=null;constructor($,Z,X={}){this.taskBoard=$;this.contextFactory=Z;this.options=X}start(){if(this.timer)return;let $=this.options.intervalMs??Eq$;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??zq$,X=await this.taskBoard.listItemsPendingReview(Z,this.cursor),Q=X.at(-1);this.cursor=X.length===Z&&Q?{updatedAt:Q.updatedAt,id:Q.id}:null;for(let{id:Y,organizationId:G}of X)try{if(await this.reconcileItem(Y,G))$++}catch(J){console.error(`[task-board-review-sweeper] ${Y} failed`,J)}}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reconcileItem($,Z){let X=await this.taskBoard.getById($,Z);if(!X)return!1;for(let J of X.threads){let K=J.lastMessage?Xu(J.lastMessage):null;if(!K)continue;await this.taskBoard.linkPr({taskBoardItemId:$,organizationId:Z,url:K.url,prNumber:K.number,repoOwner:K.owner,repoName:K.repo,connectionId:null})}let Q=await this.taskBoard.listPrs($,Z);if(Q.length===0)return!1;let Y=await this.contextFactory(Z,X.assignedBy??X.createdBy);if(!Y)return!1;let G=await Promise.all(Q.map(async(J)=>({...J,...await jZ1(Y,Z,J)})));if(G.every((J)=>J.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${G.length} PR(s)) \u2014 proceeding on unknown`);if(!zZ1(G))return!1;return await hP0(Y,X),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var Eq$=60000,zq$=50;var T86=O(()=>{XP0();OZ1();Va()});import{readdir as jq$,rm as E20}from"fs/promises";import{join as z20}from"path";async function j20($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-Pq$),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await nv($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await R86($,Y,Z);else if(!Y.startsWith(".")){let G=z20($,Y),J=await nv(G);for(let W of J){if(!/^\d{4}$/.test(W))continue;X+=await R86(G,W,Z)}if((await nv(G)).length===0)await E20(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function R86($,Z,X){let Q=0,Y=z20($,Z),G=await nv(Y);for(let K of G){if(!/^\d{2}$/.test(K))continue;let W=z20(Y,K),H=await nv(W);for(let U of H){if(!/^\d{2}$/.test(U))continue;let F=new Date(`${Z}-${K}-${U}T00:00:00Z`);if(isNaN(F.getTime()))continue;if(F<X){let w=z20(W,U);await E20(w,{recursive:!0,force:!0}),Q++}}if((await nv(W)).length===0)await E20(W,{recursive:!0,force:!0})}if((await nv(Y)).length===0)await E20(Y,{recursive:!0,force:!0});return Q}async function nv($){try{return(await jq$($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var Pq$=30;var wW1=()=>{};import{DBOS as BW1,SchedulerMode as Aq$}from"@dbos-inc/dbos-sdk";async function Rq$(){let $=[XJ(),vf(),AN()],Z=0;for(let X of $)try{Z+=await j20(X)}catch(Q){console.error("[monitoring-retention] cleanup failed:",Q)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function Iq$($,Z){await BW1.runStep(()=>Rq$(),{name:"monitoringRetention"})}function q86(){if(I86)return;I86=!0;let $=BW1.registerWorkflow(Iq$,{name:"monitoringRetentionWorkflow"});BW1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:Tq$,mode:Aq$.ExactlyOncePerIntervalWhenActive})}var Tq$="23 4 * * *",I86=!1;var M86=O(()=>{vY();wW1()});function k86($){return async(Z,X)=>{let Q=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","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await XO.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await N11($.db,Z,Q.role);return Y.boundAuth=H11({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new Jz(X,void 0,Y.boundAuth,Q.role,"self"),_G0(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var V86=O(()=>{Kz();So()});import{EventEmitter as qq$}from"events";var OW1;var S86=O(()=>{hD();OW1=new qq$;OW1.on("request",($)=>{Uw($)})});function C86(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let F=await $.req.raw.clone().json();if(F.method==="tools/call"&&F.params?.name){let w=bc(F.params.name),B=F.params.arguments||{},L=Object.keys(B).map((E)=>bc(E)),D=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";G=`${W5.tool}${w}${W5.dim}(${D})${W5.reset}`}else if(F.method)G=`${W5.dim}${bc(F.method)}${W5.reset}`}}catch{}}let K=bc(Y);if(Y.startsWith("/mcp/conn_")){let N=Y.split("/")[2]??"";K=`/mcp/${W5.mcp}${bc(N.slice(0,12))}\u2026${W5.reset}`}else if(Y==="/mcp")K=`${W5.mcp}/mcp${W5.reset}`;else if(Y==="/mcp/registry")K=`${W5.mcp}/mcp/registry${W5.reset}`;let W=kq$(Q),H=J?"\u25C0":"\u2190";if(!b50())console.log(`${W5.dim}${H}${W5.reset} ${W}${Q}${W5.reset} ${K}${G?` ${G}`:""}`);try{await Z()}finally{let N=Date.now()-X,U=$.res.status,F=Mq$(U),w=N<1000?`${N}ms`:`${(N/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!b50())console.log(`${W5.dim}${B}${W5.reset} ${W}${Q}${W5.reset} ${K}${G?` ${G}`:""} ${F}${U}${W5.reset} ${W5.duration}${w}${W5.reset}`);OW1.emit("request",{method:Q,path:bc(Y),status:U,duration:N,timestamp:new Date})}}}var W5,Mq$=($)=>{if($>=500)return W5.serverError;if($>=400)return W5.clientError;if($>=300)return W5.redirect;return W5.ok},kq$=($)=>{return W5[$]||W5.reset},bc=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var _86=O(()=>{hD();S86();W5={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 b86}from"crypto";import{mkdir as Vq$,readdir as Sq$,rm as v86,stat as y86}from"fs/promises";import{join as DW1,relative as Cq$}from"path";import{z as I8}from"zod";function h86($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return DW1(_q$,Z)}function u86($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function LW1($,Z){let X=h86($),Q=u86(Z);return DW1(X,Q)}function vq$($,Z,X,Q){let Y=Q1().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return b86("sha256",Y).update(G).digest("hex")}function f86($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=vq$(Z,X,G,Y),K=new URL(`/api/dev-assets/${Z}/${u86(X)}`,$);return K.searchParams.set("expires",G.toString()),K.searchParams.set("signature",J),K.searchParams.set("method",Y),K.toString()}function c86($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${b86("md5","etag").update(Q).digest("hex")}"`}async function l86($,Z,X,Q,Y){try{let G=await Sq$($,{withFileTypes:!0});for(let J of G){let K=DW1($,J.name),H=Cq$(Z,K).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let N=H+"/";if(!X||N.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))Y.commonPrefixes.add(N)}}else await l86(K,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let N=H.slice(X.length);if(N.includes(Q)){let U=N.indexOf(Q),F=X+N.slice(0,U+1);Y.commonPrefixes.add(F);continue}}try{let N=await y86(K);Y.objects.push({key:H,size:N.size,lastModified:N.mtime.toISOString(),etag:c86(K,N.mtime,N.size)})}catch{}}}}catch{}}function d86($,Z){let Q=J0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:I8.object({prefix:I8.string().optional(),maxKeys:I8.number().optional().default(1000),continuationToken:I8.string().optional(),delimiter:I8.string().optional()}),outputSchema:I8.object({objects:I8.array(I8.object({key:I8.string(),size:I8.number(),lastModified:I8.string(),etag:I8.string()})),nextContinuationToken:I8.string().optional(),isTruncated:I8.boolean(),commonPrefixes:I8.array(I8.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",K=G.maxKeys??1000,W=G.delimiter,H=G.continuationToken,N=h86(Q);await Vq$(N,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await l86(N,N,J,W,U),U.objects.sort((D,E)=>D.key.localeCompare(E.key));let F=0;if(H){if(F=U.objects.findIndex((D)=>D.key>H),F===-1)F=U.objects.length}let w=U.objects.slice(F,F+K),B=F+K<U.objects.length,L=B?w[w.length-1]?.key:void 0;return{objects:w,isTruncated:B,nextContinuationToken:L,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:I8.object({key:I8.string()}),outputSchema:I8.object({contentType:I8.string().optional(),contentLength:I8.number(),lastModified:I8.string(),etag:I8.string(),metadata:I8.record(I8.string(),I8.string()).optional()}),handler:async(Y)=>{let G=Y,J=LW1(Q,G.key),K=await y86(J);return{contentType:BJ1(G.key),contentLength:K.size,lastModified:K.mtime.toISOString(),etag:c86(J,K.mtime,K.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:I8.object({key:I8.string(),expiresIn:I8.number().optional()}),outputSchema:I8.object({url:I8.string(),expiresIn:I8.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??x86;return{url:f86(Z,Q,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:I8.object({key:I8.string(),expiresIn:I8.number().optional(),contentType:I8.string().optional()}),outputSchema:I8.object({url:I8.string(),expiresIn:I8.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??x86;return{url:f86(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:I8.object({key:I8.string()}),outputSchema:I8.object({success:I8.boolean(),key:I8.string()}),handler:async(Y)=>{let G=Y,J=LW1(Q,G.key);try{return await v86(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:I8.object({keys:I8.array(I8.string()).max(1000)}),outputSchema:I8.object({deleted:I8.array(I8.string()),errors:I8.array(I8.object({key:I8.string(),message:I8.string()}))}),handler:async(Y)=>{let G=Y,J=[],K=[];return await Promise.all(G.keys.map(async(W)=>{let H=LW1(Q,W);try{await v86(H),J.push(W)}catch(N){K.push({key:W,message:N instanceof Error?N.message:"Unknown error"})}})),{deleted:J,errors:K}}}]}async function EW1($,Z,X){let Q=d86(Z,X),Y=new zW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:O5});for(let J of Q){let K="shape"in J.inputSchema?J.inputSchema.shape:I8.object({}).shape,W=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:I8.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:K,outputSchema:W,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let N=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(N)}],structuredContent:N}}catch(N){return{content:[{type:"text",text:`Error: ${N.message}`}],isError:!0}}})}let G=new FQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),S3(Y,G,$,"mcp:dev-assets")}async function m86($,Z,X,Q){let G=d86(X,Q).find((J)=>J.name===$);if(!G)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await G.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var _q$="./data/assets",x86=3600,g86,i86;var n86=O(()=>{y8();Ou();e6();Un();a_();rX();CI0();g86=new C1;g86.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return EW1($.req.raw,Z,Q)});i86=g86});var p86={};w0(p86,{mountDevRoutes:()=>xq$});function xq$($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`;return EW1(Q.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`,K=Q.req.param("toolName");if(!K)return Q.json({error:"Missing tool name"},400);let W=await Q.req.json(),H=await m86(K,W,Y,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",i86);let X=new C1;X.use("*",kK({mountPath:"/api/dev-assets"})),X.route("/",SI0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var t86=O(()=>{e6();JJ1();CI0();n86()});import{sql as fq$}from"kysely";import{randomUUID as o86}from"crypto";import{z as bq$}from"zod";async function gq$($){let Z=new Date().toISOString(),X=o86(),Q=t4.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((K)=>K.or([K("publisher","is",null),K("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((K)=>({id:o86(),event_id:X,subscription_id:K.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await fq$`SELECT
3975
3975
  pg_notify('studio_events', ${X}),
3976
3976
  pg_notify('mesh_events', ${X})
3977
3977
  `.execute($.db)}catch{}}async function hq$($,Z){let Q=(await $.selectFrom("organization").select(["id"]).where("id","=",Z).execute())[0];if(Q?.id)return Q.id;return(await $.selectFrom("organization").select(["id"]).where("slug","=",Z).execute())[0]?.id??null}async function uq$($,Z){let X=await $.selectFrom("virtual_mcp_plugin_configs").innerJoin("connections","connections.id","virtual_mcp_plugin_configs.virtual_mcp_id").select(["virtual_mcp_plugin_configs.settings as settings"]).where("connections.organization_id","=",Z).where("virtual_mcp_plugin_configs.plugin_id","=",Vv).execute();for(let Q of X){let Y=Q.settings,G=typeof Y==="string"?(()=>{try{return JSON.parse(Y)}catch{return{}}})():Y??{};if(G.acceptPublishRequests===!0){let J=G.rateLimitWindow==="minute"?"minute":"hour",K=G.rateLimitMax,W=typeof K==="number"&&Number.isFinite(K)&&K>=1?Math.floor(K):a86;return{acceptPublishRequests:!0,requireApiToken:G.requireApiToken===!0,rateLimitEnabled:G.rateLimitEnabled===void 0?r86:G.rateLimitEnabled===!0,rateLimitWindow:J,rateLimitMax:W}}}return{acceptPublishRequests:!1,requireApiToken:!1,rateLimitEnabled:r86,rateLimitWindow:yq$,rateLimitMax:a86}}async function cq$($,Z,X){let Q=X==="minute"?60000:3600000,Y=new Date(Date.now()-Q).toISOString(),G=await $.selectFrom("private_registry_publish_request").select((J)=>J.fn.countAll().as("count")).where("organization_id","=",Z).where("created_at",">=",Y).executeTakeFirst();return Number(G?.count??0)}async function lq$($,Z,X,Q){let Y=await $.selectFrom("private_registry_item").select(["id","title"]).where("organization_id","=",Z).where((G)=>G.or([G("id","=",X),G("title","=",Q)])).executeTakeFirst();return Y?{id:String(Y.id),title:String(Y.title)}:null}function s86($){let{db:Z,db:X}=$,Q=new Lg(X),Y=new Dg(X);return async(G)=>{let J=G.req.param("orgRef")??G.req.param("org");if(!J)return G.json({error:"Organization not found"},404);let K=await hq$(Z,J);if(!K)return G.json({error:"Organization not found"},404);let W=await uq$(Z,K);if(!W.acceptPublishRequests)return G.json({error:"Publish requests are not enabled for this registry."},403);if(W.requireApiToken){let w=G.req.header("Authorization"),B=w?.startsWith("Bearer ")?w.slice(7).trim():null;if(!B)return G.json({error:"API key required. Use Authorization: Bearer <key>"},401);if(!await Y.validate(K,B))return G.json({error:"Invalid API key"},401)}if(W.rateLimitEnabled){if(await cq$(X,K,W.rateLimitWindow)>=W.rateLimitMax)return G.json({error:"Too many publish requests. Please try again later.",retryAfterSeconds:W.rateLimitWindow==="minute"?60:3600},429)}let H;try{H=await G.req.json()}catch{return G.json({error:"Invalid JSON body"},400)}let N=pp8.safeParse(H);if(!N.success)return G.json({error:"Invalid publish request payload",details:bq$.treeifyError(N.error)},400);let U=await lq$(X,K,N.data.data.id,N.data.data.title);if(U)return G.json({error:"A registry item with the same id or title already exists. Please use a different name/id.",conflict:U},409);let F=await Q.createOrUpdate({organization_id:K,requested_id:N.data.data.id,title:N.data.data.title,description:N.data.data.description??null,_meta:N.data.data._meta,server:N.data.data.server,requester_name:N.data.requester?.name??null,requester_email:N.data.requester?.email??null});try{await gq$({db:Z,organizationId:K,request:F})}catch(w){console.warn("[private-registry] failed to emit publish-request event:",w)}return n1.capture({distinctId:N.data.requester?.email??`org:${K}`,event:"registry_publish_request_submitted",groups:{organization:K},properties:{organization_id:K,request_id:F.id,requested_id:F.requested_id,title:N.data.data.title,requester_email:N.data.requester?.email??null}}),G.json({id:F.id,requested_id:F.requested_id,status:F.status},201)}}var r86=!0,yq$="hour",a86=100;var e86=O(()=>{S$();R6();Fc();va0();xa0();L9()});var $66={};w0($66,{createPublishRequestHandler:()=>s86,createPublicMCPHandler:()=>ep8});var Z66=O(()=>{Uc();e86()});var H66={};w0(H66,{watchHandler:()=>W66,resolveCorsOrigin:()=>K66,isSsoExemptPath:()=>J66,createApp:()=>$M$});import{readFileSync as dq$}from"fs";import{PrometheusSerializer as mq$}from"@opentelemetry/exporter-prometheus";import{DBOS as yc}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as oq$,oAuthProtectedResourceMetadata as rq$}from"better-auth/plugins";async function iq$($){let Z=$.connect(),X;try{X=await Promise.race([Z,Q66(X66)])}catch{return Z.then((Q)=>Q.release(!0)).catch(()=>{}),!1}try{return await Promise.race([X.query("SELECT 1"),Q66(X66)]),X.release(),!0}catch{return X.release(!0),!1}}function Q66($){return new Promise((Z,X)=>setTimeout(()=>X(Error("pg health-check timeout")),$))}async function nq$($,Z){let{items:X}=await $.storage.connections.list(Z,{where:{field:["connection_url"],operator:"like",value:`${br1}%`},limit:1}),Q=X[0];if(!Q?.configuration_state)return null;return Q.configuration_state.project_locator}function pq$($){let Z=new URLSearchParams;if($){let[X,Q]=$.split("/");if(X)Z.set("workspace_hint",X);if(Q)Z.set("project_hint",Q)}else Z.set("auto_personal","true");return Z.set("force_new","true"),Z}function J66($){return $.startsWith("/api/org-sso/")||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${n31}/`)}function K66($,{baseUrl:Z,requestOrigin:X}){let Q;try{Q=new URL($).hostname}catch{return null}if(Q==="localhost"||Q==="127.0.0.1")return $;let Y=Z??X;try{if(new URL(Y).origin===$)return $}catch{}return null}async function $M$($={}){let Z=$.database??H6(),X=!1;w9.stop().catch((r)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",r)});let Q,Y,G=new GW1,J,K,W,H=null;if($.disableNats)J=JW1(),Q={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},Y=new va,K={start:async()=>{},broadcast:()=>{},publishControlFrame:()=>{},stop:async()=>{}},W={init:async()=>{},pump:(r)=>{return(async()=>{let m0=r.getReader();try{while(!0){let{done:F1}=await m0.read();if(F1)break}}catch{}finally{m0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{H=H86();let r=Q1().natsCredsPath,m0;if(r)try{m0=dq$(r,"utf8")}catch(u0){console.error(`[app] failed to read NATS_CREDS at ${r}; connecting anonymously`,u0)}H.init(Q1().natsUrls,m0?{creds:m0}:void 0);let F1=la0()?new So0({getJetStream:()=>H.getJetStream()}):null;F1?.init().catch(()=>{}),Q=F1;let R1=new G71({getJetStream:()=>H.getJetStream()});R1.init().catch(()=>{}),Y=R1,J=JW1({getConnection:()=>H.getConnection()}),K=new KW1({getConnection:()=>H.getConnection()}),W=new NW1({getConnection:()=>H.getConnection(),getJetStream:()=>H.getJetStream()}),Dr8(H),H.onReady(()=>{F1?.init().catch((u0)=>{console.error("[McpListCache] Deferred init failed:",u0)}),R1.init().catch((u0)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",u0)}),J.start(),qJ8(()=>H.getConnection()),W.init().catch((u0)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",u0)})})}if(RL)await RL();Co0(Q),J71(Y);let U={storage:new Rg(Z.db),sseHub:w9,onThreadFinished:(r,m0)=>Yu(new GU(Z.db),r,m0,new _W(Z.db))},F=new n91(U),w=new Zt(Z.db),B=new UW1(w);B.start(),K.start((r)=>{NP0(r),F.execute({type:"CANCEL",taskId:r}).catch((m0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",m0)})}).catch((r)=>{console.error("[Decopilot] CancelBroadcast start failed:",r)}),H?.onReady(()=>{K.start().catch((r)=>{console.error("[CancelBroadcast] Deferred start failed:",r)})});let L=()=>H?.getConnection()??null;e31(L),H?.onReady(()=>e31(L)),W.init().catch((r)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",r)}),RL=async()=>{await F.stopAll(),F.dispose(),B.dispose(),K.stop().catch(()=>{}),Ya8(),W.teardown(),Q?.teardown(),G.teardown(),J.teardown(),MJ8(),Y.teardown(),Co0(null),J71(null)};let D=new C1;if(D.use("*",zi0({enabled:(r)=>Tb(r,"debug")==="1"})),D.use("*",Rg0),D.use("/*",Pa1({origin:(r,m0)=>K66(r,{baseUrl:Q1().baseUrl,requestOrigin:new URL(m0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),D.use("*",async(r,m0)=>{if(await m0(),r.req.path.includes("/files/"))return;if(r.req.path.includes("/fs/")&&r.req.path.endsWith("/read"))return;r.header("X-Frame-Options","DENY"),r.header("Content-Security-Policy","frame-ancestors 'none'")}),!Q1().noTui)D.use("*",C86());D.use("*",async(r,m0)=>{if(await m0(),nd(r.req.path))return;if(r.res.status>=500){let R1=await r.res.clone().text();console.error(`[5xx Response] ${r.req.method} ${r.req.path} - ${r.res.status}:`,R1)}}),D.get(G7.HEALTH,(r)=>{if(X)return r.json({status:"shutting_down"},503);return r.json({status:"ok"})}),D.get(G7.HEALTH_LIVE,(r)=>{return r.json({status:"ok"})}),D.get(G7.HEALTH_READY,async(r)=>{if(X)return r.json({status:"shutting_down"},503);let m0={};if(m0.postgres={status:await iq$(Z.pool)?"up":"down"},H)m0.nats=H.isConnected()?{status:"up"}:{status:"down"};else m0.nats={status:"down"};let F1=m0.postgres.status==="up",R1=F1?200:503;return r.json({status:F1?"ready":"not_ready",services:m0},R1)}),D.get(G7.METRICS,async(r)=>{try{let m0=await kg0.collect(),F1=tq$.serialize(m0.resourceMetrics);return r.text(F1,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(m0){return console.error("Failed to collect metrics:",m0),r.text("# Error collecting metrics",500)}}),D.get(`${G7.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(r)=>{let m0=r.req.param("queueName");if(!aq$.has(m0))return r.json({error:`Unknown queue: ${m0}`},404);let F1=await yc.listQueuedWorkflows({queueName:m0,status:"ENQUEUED"});return r.json({queue_length:F1.length})}),D.get(G7.HOSTED_RUN_PENDING,(r)=>{let{active:m0,pending:F1,max:R1}=Y_8();return r.json({pending:F1,active:m0,max:R1})}),D.route("/api/config",M16),D.route("/api/_reports",y16),D.route("/api/_stripe",XW1),D.route("/report",f16($.clientDir)),D.route("/api/auth/custom",gr8),D.route("/api/auth/desktop",cr8),D.all("/api/auth/admin/*",ir8),D.all("/api/auth/*",async(r)=>{return await M6.handler(r.req.raw)});let E=Fw8();E.use("/.well-known/oauth-protected-resource/mcp/:connectionId",Cv),E.use("/mcp/:connectionId/.well-known/oauth-protected-resource",Cv),D.route("/",E),D.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",Co),D.route("/",Lw8()),D.use("/oauth-proxy/:connectionId/*",Cv),D.all("/oauth-proxy/:connectionId/*",Y66);let z=async(r)=>{let F1=await sq$()(r.req.raw),R1=await F1.json();return Response.json(R1,F1)};D.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",Cv),D.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",z);let j=async(r)=>{let F1=await eq$()(r.req.raw),R1=await F1.json();return Response.json(R1,F1)};D.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",j);let A=Br8({ttlMs:120000}),P=await rF8({db:Z.db,auth:M6,encryption:{key:Q1().encryptionKey},observability:{tracer:Qw,meter:D6},modelListCache:G,providerKeyCache:J,memberRoleCache:A});XO.set(P);let I=new lN(Q1().encryptionKey);So1({db:Z.db,baseUrl:MQ()});let k=cQ0(Z.db),q=new np(Z.db),S=k86({db:Z.db});$71({storage:k,studioContextFactory:S}),JZ1({studioContextFactory:S,deps:{runRegistry:F,cancelBroadcast:K,streamBuffer:W,sseHub:w9}}),e91({dispatchRunFn:jC8,studioContextFactory:S,deps:{runRegistry:F,cancelBroadcast:K,streamBuffer:W,sseHub:w9}});let m=new Rg(Z.db),f=new GU(Z.db),b=new FW1(f,S);if(Q1().taskBoardReviewSweeperEnabled){b.start();let r=RL;RL=async()=>{await r?.(),b.dispose()}}let t=new _W(Z.db);lC8({getJetStream:()=>H?.getJetStream()??null,getJetStreamManager:async()=>{let r=H?.getConnection();return r?await G66.jetstreamManager(r):null},messageParts:m.messageParts(),resolveRun:async(r)=>{let m0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",r).executeTakeFirst();return m0?{orgId:m0.organization_id,createdBy:m0.created_by,version:m0.message_storage_version??1,status:m0.status,runFenceToken:m0.run_fence_token,title:m0.title??null}:null},completeRunIfNotCompleted:async(r,m0)=>{let F1=await m.completeRunIfNotCompleted(r,m0);if(D20(w9,m0,r,F1),F1)await Yu(f,r,m0,t);return F1},markRunRequiresAction:async(r,m0)=>{let F1=await m.requiresActionIfInProgress(r,m0);return D20(w9,m0,r,F1),F1},markRunFailed:async(r,m0,F1,R1)=>{let u0=await m.markRunFailed(r,m0,F1,R1);if(D20(w9,m0,r,u0),u0)await Yu(f,r,m0,t);return u0},clearSynthesizedError:async(r,m0)=>{await m.messageParts().replaceMessageParts(r,iO(r,m0),[])},persistTitle:(r,m0,F1)=>m.update(r,m0,{title:F1}),onTitleUpdated:async({runId:r,orgId:m0,title:F1})=>{let R1=await m.get(r,m0).catch(()=>null);w9.emit(m0,HW(r,R1?.status??"in_progress",{title:F1,virtualMcpId:R1?.virtual_mcp_id??void 0,createdBy:R1?.created_by,triggerId:R1?.trigger_id,branch:R1?.branch??null,harnessId:R1?.harness_id??void 0,createdAt:R1?.created_at,updatedAt:R1?.updated_at}))},bumpProgress:async({runId:r,orgId:m0})=>{await m.bumpProgress(r,m0)},recordCompleted:async({runId:r,orgId:m0,distinctId:F1,usage:R1})=>{n1.capture({distinctId:F1,event:"chat_message_completed",groups:{organization:m0},properties:{organization_id:m0,thread_id:r,transport:"projector",input_tokens:R1.inputTokens,output_tokens:R1.outputTokens,total_tokens:R1.totalTokens}})},recordFailed:async({runId:r,orgId:m0,distinctId:F1,reason:R1,kind:u0})=>{n1.capture({distinctId:F1,event:"chat_message_failed",groups:{organization:m0},properties:{organization_id:m0,thread_id:r,transport:"projector",error_category:u0,error_message:R1}})},purgeRun:async(r)=>{W.purge(r)}}),lS8({studioContextFactory:S,systemDatabaseUrl:xg0(Q1().databaseUrl,Q1().databasePgSsl),streamBuffer:W}),q86(),Co1();let y=async(r,m0,F1)=>{let R1=await k.findById(r,m0);if(!R1)throw Error("Automation not found");return Q71({automationId:R1.id,organizationId:R1.organization_id,triggerId:null})},Z0=new Oc(k,({automation:r,trigger:m0,contextMessages:F1,idempotencyKey:R1})=>_a({automationId:r.id,organizationId:r.organization_id,triggerId:m0.id,contextMessages:F1},{idempotencyKey:R1})),D0=[XJ(),vf(),AN()];for(let r of D0)j20(r).then(()=>{}).catch((m0)=>console.error("[monitoring] Retention cleanup failed:",m0));let R0=()=>Z.db.deleteFrom("apikey").where("expiresAt","<",new Date).execute().then(()=>{}).catch((r)=>console.error("[auth] Expired API key cleanup failed:",r));R0(),setInterval(R0,86400000).unref(),D.use("*",async(r,m0)=>{if(Ag0(r.req.path))return m0();let F1={measure:async(u0,l1)=>{pG(r,u0);try{return await l1()}finally{mY(r,u0)}}},R1=await XO.create(r.req.raw,{timings:F1});R1.automationRunner=y,r.set("studioContext",R1);try{await m0()}finally{let u0=R1.pendingRevalidations;if(u0.length>0)Promise.race([Promise.allSettled(u0),h8(30000)]).catch((C8)=>console.error("[studio] revalidation cleanup error:",C8))}}),D.use("/api/:org/decopilot/*",_v),D.use("/api/:org/v1/*",_v),D.use("/api/:org/files/*",_v),D.use("*",async(r,m0)=>{if(J66(r.req.path))return m0();let F1=r.get("studioContext");if(!F1?.organization?.id||!F1?.auth?.user?.id)return m0();if(!(await F1.storage.orgSsoConfig.getByOrgId(F1.organization.id))?.enforced)return m0();if(!await F1.storage.orgSsoSessions.isValid(F1.auth.user.id,F1.organization.id))return r.json({error:"SSO authentication required for this organization"},403);return m0()});let $0=new C1;$0.use("*",kK({mountPath:"/api/org-sso"})),$0.route("/",jI0()),D.route("/api/org-sso",$0),D.get("/api/tools/management",(r)=>{return r.json({tools:Pi0,grouped:KE()})}),D.use("/mcp/*",async(r,m0)=>{pG(r,"mcp");try{return await m0()}finally{mY(r,"mcp")}});let s=async(r,m0)=>{let F1=r.var.studioContext;if(!F1.auth.user?.id&&!F1.auth.apiKey?.id){let R1=new URL(r.req.url),u0=r.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),l1=u0?`${u0}://${R1.host}`:R1.origin;return r.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${l1}${R1.pathname}/.well-known/oauth-protected-resource"`}})}return await m0()};if(D.use("/mcp/:connectionId?",s),D.use("/mcp/gateway/:virtualMcpId?",s),D.use("/mcp/virtual-mcp/:virtualMcpId?",s),D.use("/mcp/self",s),zJ()){let{mountDevRoutes:r}=(t86(),q20(p86));r(D,s)}let A0=new C1;A0.use("*",kK({mountPath:"/mcp"})),A0.route("/",ZA0()),D.route("/mcp",A0);let Q0=new C1;Q0.use("*",kK({mountPath:"/mcp/self"})),Q0.route("/",J20()),D.route("/mcp/self",Q0);let I0=new C1;I0.use("*",kK({mountPath:"/mcp"})),I0.route("/",YA0()),D.route("/mcp",I0),D.use("/api/:org/models/*",async(r,m0)=>{pG(r,"llm_models");try{return await m0()}finally{mY(r,"llm_models")}});let p0=YJ1({cancelBroadcast:K,streamBuffer:W,runRegistry:F});D.route("/api",p0),D.use("/api/:org/files/*",_v),D.route("/api",n16);let d0=new C1;d0.use("*",kK({mountPath:"/api"})),d0.route("/",K20()),D.route("/api",d0),D.route("/api",R16);let a0=new C1;a0.use("*",kK({mountPath:"/api"})),a0.route("/",W20({tokenStorage:q,automationEventDispatcher:Z0})),D.route("/api",a0);let W0=new tp(Z.db),k0=new C1;k0.use("*",kK({mountPath:"/api"})),k0.route("/",MI0()),D.route("/api",k0),D.route("/api/deco-sites",Ma8()),D.route("/api/deco-apps",E16());let S0=new C1;S0.use("*",kK({mountPath:"/api/deco-sites"})),S0.route("/",VI0()),D.route("/api/deco-sites",S0);let{createPublishRequestHandler:q0,createPublicMCPHandler:X0}=await Promise.resolve().then(() => (Z66(),$66)),H0={db:Z.db,vault:{encrypt:(r)=>I.encrypt(r),decrypt:(r)=>I.decrypt(r)}},y0=q0(H0),F0=X0(H0);D.use("/org/:orgRef/registry/publish-request",Cv),D.post("/org/:orgRef/registry/publish-request",y0),D.use("/org/:orgSlug/registry/*",Cv),D.all("/org/:orgSlug/registry/*",F0),D.post("/api/:org/registry/publish-request",y0),D.all("/api/:org/registry/*",F0),D.route(n31,nr8());let j0=L16({kvStorage:W0,runRegistry:F,streamBuffer:W,sseHub:w9,cancelBroadcast:K,tokenStorage:q,automationEventDispatcher:Z0,mountDevAssets:zJ(),mcpAuth:s,oauthProxyHandler:Y66,watchHandler:W66,betterAuthProtectedResourceHandler:z,getNatsConnection:()=>H?.getConnection()??null});return D.route("/api/:org",j0),D.notFound((r)=>{return r.json({error:"Not Found",path:r.req.path},404)}),D.onError(Ba8),Object.assign(D,{markShuttingDown:()=>{X=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([w9.stop(),RL?Promise.resolve(RL()).finally(()=>{RL=null}):Promise.resolve()]),H)await H.drain().catch((r)=>console.error("[shutdown] NATS drain error:",r));console.log("[shutdown] Flushing telemetry..."),await hG().catch((r)=>console.error("[shutdown] Telemetry flush error:",r)),console.log("[shutdown] Closing database..."),await Jw(Z).catch((r)=>console.error("[shutdown] Database close error:",r)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await yc.registerQueue(lG,{partitionQueue:!0,concurrency:aZ1,minPollingIntervalMs:sZ1}),await yc.registerQueue(JJ,{partitionQueue:!0,concurrency:YZ1}),await yc.registerQueue(IN,{partitionQueue:!0,concurrency:s91}),await yc.registerQueue(ww,{partitionQueue:!0,concurrency:cS8}),await WJ1(k),await Promise.allSettled(["automations-gate","automations-global"].map((r)=>yc.deleteQueue(r))),await eZ1(Z.pool),U78().catch((r)=>{console.error("[studio-pack-backfill] failed:",r)}),_o1().catch((r)=>{console.error("[org-fs] public-sets boot sync kick failed:",r)})}})}var G66,X66=5000,RL=null,Y66=async($)=>{let Z=$.req.param("connectionId");if(!Z)return $.json({error:"Missing connectionId"},400);let X=$.req.path.split("/").filter(Boolean),Q=X[X.length-1],Y=$.get("studioContext");if(!Y)Y=await XO.create($.req.raw),$.set("studioContext",Y);let G=$.req.param("org")?Y.organization?.id:void 0,J=await Y.storage.connections.findById(Z,G);if(!J?.connection_url)return $.json({error:"Connection not found"},404);let K=await Kh(J.connection_url),W,H=new URL(J.connection_url),U=(typeof J.metadata?.oauthResource==="string"&&J.metadata.oauthResource.length>0?J.metadata.oauthResource:void 0)??J.connection_url;if(K.ok)W=(await K.json()).authorization_servers?.[0];if(!W)W=H.origin;let F=await _o(W);if(!F.ok)return $.json({error:"Failed to get auth server metadata"},502);let w=await F.json(),B;if(Q==="authorize")B=w.authorization_endpoint;else if(Q==="token")B=w.token_endpoint;else if(Q==="register")B=w.registration_endpoint;if(!B)return $.json({error:`Unknown OAuth endpoint: ${Q}`},404);let L=new URL(B),D=new URL($.req.url);if(L.search=D.search,Q==="authorize"){let m=L.searchParams.get("redirect_uri");if(m){let f=Q1().baseUrl??D.origin;try{let b=new URL(m),t=new URL(f);if(!(b.origin===t.origin||b.hostname==="localhost"))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)}L.searchParams.set("redirect_uri",m)}if(L.searchParams.has("resource"))L.searchParams.set("resource",U);if(yr1(J.connection_url))try{let f=await nq$(Y,J.organization_id),b=pq$(f);for(let[t,y]of b)L.searchParams.set(t,y)}catch(f){console.warn("[oauth-proxy] Failed to get smart OAuth params, proceeding without:",f)}return $.redirect(L.toString(),302)}let E={Accept:$.req.header("Accept")||"application/json"},z=$.req.header("Content-Type");if(z)E["Content-Type"]=z;let j=$.req.header("Authorization");if(j)E.Authorization=j;let A,P=null,I=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(Q==="token"&&z?.includes("application/x-www-form-urlencoded")){if(j?.toLowerCase().startsWith("basic "))try{let y=atob(j.slice(6).trim()),Z0=y.indexOf(":");if(Z0!==-1){let D0=decodeURIComponent(y.slice(0,Z0)),R0=decodeURIComponent(y.slice(Z0+1));P=D0||null,I=R0||null}}catch{}let m=await $.req.formData();if(m.has("resource"))m.set("resource",U);let f=m.get("client_id"),b=m.get("client_secret");if(typeof f==="string"&&f)P=f;if(typeof b==="string"&&b)I=b;let t=new URLSearchParams;for(let[y,Z0]of m.entries())t.append(y,Z0.toString());A=t.toString()}else if(Q==="register"&&z?.toLowerCase().includes("application/json")){let m=await Y.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",J.organization_id).executeTakeFirst(),f=await $.req.text(),b={};try{b=f?JSON.parse(f):{}}catch{A=f}let t=typeof b==="object"&&b!==null&&!Array.isArray(b);if(A===void 0&&!t)A=f;if(A===void 0){let y=b,Z0=y.metadata&&typeof y.metadata==="object"?y.metadata:{};y.metadata={...Z0,organization_id:J.organization_id,...m?.slug?{organization_slug:m.slug}:{},...m?.name?{organization_name:m.name}:{}},A=JSON.stringify(y),E["Content-Type"]="application/json"}}else A=$.req.raw.body??void 0;let k=await fetch(L.toString(),{method:$.req.method,headers:E,body:A,duplex:"half",redirect:"manual"}),q=new Headers,S=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[m,f]of k.headers.entries())if(!S.includes(m.toLowerCase()))q.set(m,f);if(Q==="token"&&k.ok){let m=await k.text();try{let f=JSON.parse(m);if(typeof f.access_token==="string"&&f.access_token){let b=typeof f.expires_in==="number"?new Date(Date.now()+f.expires_in*1000):null,t=null;try{t=await Wh(J.connection_url)??B}catch{t=B}let y={connectionId:Z,accessToken:f.access_token,refreshToken:typeof f.refresh_token==="string"?f.refresh_token:null,scope:typeof f.scope==="string"?f.scope:null,expiresAt:b,clientId:P,clientSecret:I,tokenEndpoint:t};await new S5(Y.db,Y.vault).upsert(y)}}catch(f){console.error("[oauth-proxy] failed to persist downstream token:",f)}return new Response(m,{status:k.status,statusText:k.statusText,headers:q})}return new Response(k.body,{status:k.status,statusText:k.statusText,headers:q})},W66=async($)=>{let Z=$.var.studioContext;if(!(Z.auth.user?.id??Z.auth.apiKey?.userId))return $.json({error:"Unauthorized"},401);let Q=Z.organization?.id;if(!Q)return $.json({error:"organization id missing"},400);let Y=$.req.query("types"),G=Y?Y.split(",").map((K)=>K.trim()).filter(Boolean):null,J=crypto.randomUUID();return wF($,async(K)=>{if(await K.writeSSE({event:"connected",data:JSON.stringify({listenerId:J,organizationId:Q,typePatterns:G,connectedAt:new Date().toISOString()})}),!w9.add({id:J,organizationId:Q,typePatterns:G?.length?G:null,push:(N)=>{K.writeSSE({id:N.id,event:N.type,data:JSON.stringify(N)}).catch(()=>{w9.remove(Q,J)})}})){await K.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let H=setInterval(()=>{K.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(H)})},30000);await new Promise((N)=>{K.onAbort(()=>{clearInterval(H),w9.remove(Q,J),N()})})})},tq$,aq$,sq$=()=>rq$(M6),eq$=()=>oq$(M6);var N66=O(()=>{e$();y8();vo1();QZ();jb();R6();e6();AZ0();Aa1();ji0();L3();So();g31();m7();I5();S$();i31();lr8();pr8();r31();Fa8();GJ1();sJ();vG0();JJ1();Oa8();KJ1();D16();FJ1();z16();XA0();vo();I16();GA0();bK1();k16();b16();g16();d16();p16();fK1();vK1();s$0();fi();N86();tY();HY0();ap();W71();U86();w86();O86();$J1();P86();p91();A86();Xs0();Nz();jX();Ks0();T86();M86();vX0();wW1();vY();HJ1();i_();r91();m91();vX0();IP0();Ta0();Ra0();V86();Rb();_86();vc();g31();DP0();UP0();G66=V(sD(),1);tq$=new mq$,aq$=new Set([lG,JJ,IN,ww])});var B66={};w0(B66,{resolveClientDir:()=>KM$,resolveAssetPathWithTraversalCheck:()=>w66,isPathWithinDirectory:()=>F66,createAssetHandler:()=>WM$});import{resolve as ke,dirname as ZM$,join as XM$,extname as QM$,basename as YM$,sep as U66}from"path";function GM$($,Z){if($===Z||YM$($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${U66}assets${U66}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function F66($,Z){let X=ke(Z),Q=ke($);return Q===X||Q.startsWith(X+"/")}function w66({requestPath:$,clientDir:Z}){let X=$.startsWith("/")?$.slice(1):$,Q=ke(Z,X);if(!F66(Q,Z))return null;return Q}function KM$($,Z="../client"){let X=new URL($),Q=ZM$(X.pathname);return ke(Q,Z)}function WM$($={}){let{env:Z="production",clientDir:X=JM$,isServerPath:Q=()=>!1}=$;if(Z==="development")return async function(G){return null};return async function(G){if(G.method!=="GET")return null;let J=new URL(G.url),K;try{K=decodeURIComponent(J.pathname)}catch{return null}if(Q(K))return null;let W=w66({requestPath:K,clientDir:X});if(!W)return null;let H=XM$(W,"index.html"),N=ke(X,"index.html"),U=G.headers.get("accept"),w=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(QM$(W))?[H,N]:[];for(let B of[W,...w])try{let L=Bun.file(B);if(await L.exists())return new Response(L,{headers:GM$(B,N)})}catch{}if(K.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var JM$="./dist/client";var O66=()=>{};var L66={};w0(L66,{tryUpgradePreviewWs:()=>OM$,tryHandlePreviewHttp:()=>BM$,previewWebSocketHandler:()=>LM$,parsePreviewBaseDomain:()=>wM$,isPreviewWsData:()=>P20,extractHandleFromHost:()=>zW1});function UM$($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function FM$(){return new Response(NM$,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function wM$($){if(!$||$.trim()==="")return null;let Z=$.includes("{handle}")?$.replace("{handle}","__handle__"):$,X;try{X=new URL(Z)}catch{return null}let Q=X.hostname;if($.includes("{handle}")){let Y=Q.indexOf(".");if(Y<=0||Y===Q.length-1)return null;return Q.slice(Y+1)}return Q}function zW1($,Z){if(!$||!Z)return null;let X=$.indexOf(":"),Q=(X>=0?$.slice(0,X):$).toLowerCase(),G=`.${Z.toLowerCase().replace(/^\.+|\.+$/g,"")}`;if(!Q.endsWith(G))return null;let J=Q.slice(0,Q.length-G.length);if(!J||J.includes("."))return null;return J}async function BM$($,Z){let X=zW1($.headers.get("host"),Z.baseDomain);if(!X)return null;let Q=await Z.getRunner();if(!Q)return Se(503,"preview proxy not configured");let Y=await Q.proxyPreviewRequest(X,$);if(Y.headers.get(x_)&&UM$($))return FM$();return Y.headers.delete(x_),Y}function Se($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function P20($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function OM$($,Z,X){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Q=zW1($.headers.get("host"),X.baseDomain);if(!Q)return null;let Y=await X.getRunner();if(!Y)return Se(503,"preview proxy not configured");let G=await Y.resolvePreviewUpstreamUrl(Q);if(!G)return Se(404,"sandbox not found");let J=new URL($.url);if(J.pathname.startsWith("/_sandbox")||J.pathname.startsWith("/_decopilot_vm"))return Se(404,"not found");let K=`${G.replace(/^http/,"ws")}${J.pathname}${J.search}`,W=$.headers.get("sec-websocket-protocol"),H=W?W.split(",").map((F)=>F.trim()).filter(Boolean):[],N={kind:"preview",upstreamUrl:K,upstreamProtocols:H,pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:N}))return Se(426,"upgrade failed");return}function Ve($,Z,X,Q){if(Z.closed)return;Z.closed=!0;try{$.close(X,Q)}catch{}try{Z.upstream?.close()}catch{}}var HM$=256,NM$='<!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>',LM$;var D66=O(()=>{J51();LM$={open($){let Z=$.data;if(!P20(Z))return;let X;try{X=Z.upstreamProtocols.length>0?new WebSocket(Z.upstreamUrl,Z.upstreamProtocols):new WebSocket(Z.upstreamUrl)}catch(Q){console.warn(`[preview-ws] failed to dial upstream ${Z.upstreamUrl}: ${Q instanceof Error?Q.message:String(Q)}`),Ve($,Z,1011,"upstream connect failed");return}X.binaryType="arraybuffer",Z.upstream=X,X.addEventListener("open",()=>{while(Z.pending.length>0){let Q=Z.pending.shift();if(Q!==void 0)X.send(Q)}}),X.addEventListener("message",(Q)=>{if(Z.closed)return;$.send(Q.data)}),X.addEventListener("close",(Q)=>{Ve($,Z,Q.code||1000,Q.reason||"")}),X.addEventListener("error",()=>{Ve($,Z,1011,"upstream error")})},message($,Z){let X=$.data;if(!P20(X))return;let Q=X.upstream;if(Q&&Q.readyState===WebSocket.OPEN){Q.send(Z);return}if(X.pending.length>=HM$){Ve($,X,1011,"preview ws backlog overflow");return}X.pending.push(Z)},close($){let Z=$.data;if(!P20(Z))return;Ve($,Z,1000,"")}}});var fM$={};import{existsSync as RM$}from"fs";function A66($,Z){if(!Z)return $;let X=new URL($);if(!X.searchParams.has("sslmode"))X.searchParams.set("sslmode","verify-full");return X.toString()}function MM$($){let Z=new Headers($.headers);for(let[X,Q]of Object.entries(qM$))Z.set(X,Q);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}async function xM$($){let Z;try{Z=await DM$.create({systemDatabaseUrl:A66(u3.databaseUrl,u3.databasePgSsl),systemDatabaseSchemaName:"dbos"});let X=await Z.listWorkflows({status:"PENDING",queueName:JJ,executorId:$,loadInput:!1,loadOutput:!1});if(X.length===0){console.log(`[shutdown] no in-flight thread-gate gates to hand off (executor ${$})`);return}let Q=X.map((Y)=>Y.workflowID);await Z.resumeWorkflows(Q,{queueName:JJ}),console.log(`[shutdown] re-enqueued ${Q.length} in-flight thread-gate gate(s) for re-adoption by a live executor (from ${$}):`,Q)}catch(X){console.error("[shutdown] thread-gate handoff failed:",X)}finally{await Z?.destroy().catch(()=>{})}}async function T20($){if(P66)return;P66=!0,console.log(`