decocms 4.229.0 → 4.229.1

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 (232) hide show
  1. package/dist/client/assets/{AlertCircle-DyNbH3vh.js → AlertCircle-BDtiI4Xm.js} +1 -1
  2. package/dist/client/assets/{AreaChart-BgnOjAJo.js → AreaChart-BdIbhR66.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-jhC-o_eH.js → ArrowLeft-B2yD79DE.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-BWHSQWah.js → ArrowUp-B4-x_IkJ.js} +1 -1
  5. package/dist/client/assets/{ArrowUpRight-B-lsdTis.js → ArrowUpRight-DBBa8eD5.js} +1 -1
  6. package/dist/client/assets/{Check-BFwC9McE.js → Check-DUKNRr2z.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-Dsz-beL9.js → CheckCircle-BMGPEueC.js} +1 -1
  8. package/dist/client/assets/{ChevronDown-DaKCVVqH.js → ChevronDown-CS0YifLw.js} +1 -1
  9. package/dist/client/assets/{ChevronRight-CdZVbxvO.js → ChevronRight-DqIa4Sgm.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-B4USk3si.js → ChevronUp-BsE8Tylm.js} +1 -1
  11. package/dist/client/assets/{Copy01-D1hL8vAj.js → Copy01-DdtUCbwk.js} +1 -1
  12. package/dist/client/assets/{CpuChip01-DXBUNprG.js → CpuChip01-BKipxWOG.js} +1 -1
  13. package/dist/client/assets/{CreditCard01-6Ln9_s7e.js → CreditCard01-BT0ifT6o.js} +1 -1
  14. package/dist/client/assets/{DotsVertical-Z483JAA5.js → DotsVertical-BgQO9UBp.js} +1 -1
  15. package/dist/client/assets/{Eye-CwY1Ho4c.js → Eye-B-sq5aCO.js} +1 -1
  16. package/dist/client/assets/{FilterLines-DV4OKnip.js → FilterLines-C3MEvaCx.js} +1 -1
  17. package/dist/client/assets/{Globe01-CnSQQVXx.js → Globe01-Bdahn28X.js} +1 -1
  18. package/dist/client/assets/{Globe04-BhuzXP_C.js → Globe04-DxZad6we.js} +1 -1
  19. package/dist/client/assets/{HardDrive-bcNTGG4e.js → HardDrive-ChQzOH9G.js} +1 -1
  20. package/dist/client/assets/{Key01-5SUagYTo.js → Key01-T_Ebj3KB.js} +1 -1
  21. package/dist/client/assets/{LayoutLeft-Bi5oqvzj.js → LayoutLeft-D2n3hRPq.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-O0IVtd-r.js → LinkExternal01-C_tjPL1u.js} +1 -1
  23. package/dist/client/assets/{LogOut01-ChJauGSQ.js → LogOut01-BXvVi2w_.js} +1 -1
  24. package/dist/client/assets/{Monitor01-Di7Pu1lT.js → Monitor01-DgAwosnh.js} +1 -1
  25. package/dist/client/assets/{Palette-iVRdQ1dD.js → Palette-BQfq-Axu.js} +1 -1
  26. package/dist/client/assets/{Play-Ci9YZfcX.js → Play-sMTuGDUj.js} +1 -1
  27. package/dist/client/assets/{Plus-CRZWuc0n.js → Plus-BLJInupf.js} +1 -1
  28. package/dist/client/assets/{SearchLg-CEnL-IQ7.js → SearchLg-yQqQetrr.js} +1 -1
  29. package/dist/client/assets/{SearchMd-CeAr8ElU.js → SearchMd-LoPoxp-V.js} +1 -1
  30. package/dist/client/assets/{Settings02-C62Y8zGf.js → Settings02-DcB6_Chw.js} +1 -1
  31. package/dist/client/assets/{Share07-DVm9oZF5.js → Share07-DPA0Mq1F.js} +1 -1
  32. package/dist/client/assets/{Shield01-D7a1abj1.js → Shield01-6ZaEuMtN.js} +1 -1
  33. package/dist/client/assets/{Star01-CVy5Ouny.js → Star01-NZ1l_D5S.js} +1 -1
  34. package/dist/client/assets/{Stars01-DujbKes7.js → Stars01-B7jSYG3p.js} +1 -1
  35. package/dist/client/assets/{Stars02-B-cOKSIc.js → Stars02-DFnXM8VM.js} +1 -1
  36. package/dist/client/assets/{Sun-C-SmUW_E.js → Sun-Dv58XZP4.js} +1 -1
  37. package/dist/client/assets/{SwitchHorizontal01-VckBG7kd.js → SwitchHorizontal01-68t6C-n3.js} +1 -1
  38. package/dist/client/assets/{Tool01-DbG9CCKn.js → Tool01-iW8kXo8c.js} +1 -1
  39. package/dist/client/assets/{Tool02-ekuUnlYU.js → Tool02-Cc9A5SX0.js} +1 -1
  40. package/dist/client/assets/{Trash01-DhROXMD5.js → Trash01-DQNuiKEi.js} +1 -1
  41. package/dist/client/assets/{TrendUp01-DOU6wdvo.js → TrendUp01-C91cTZJ1.js} +1 -1
  42. package/dist/client/assets/{Upload01-DBn-z_F5.js → Upload01-Bv-7lGMT.js} +1 -1
  43. package/dist/client/assets/{User01-CAEp-cSn.js → User01-BqFeSPLV.js} +1 -1
  44. package/dist/client/assets/{Users01-CrenvaGj.js → Users01-C1PhiIcC.js} +1 -1
  45. package/dist/client/assets/{Users03-D8mSBEpJ.js → Users03-B3XraapT.js} +1 -1
  46. package/dist/client/assets/{X-C-Ej21Ga.js → X-DPrT7uQH.js} +1 -1
  47. package/dist/client/assets/{XCircle-CA7XvjQz.js → XCircle-Bca5jkzJ.js} +1 -1
  48. package/dist/client/assets/{XClose-CRsGOvBA.js → XClose-CF4ixpTG.js} +1 -1
  49. package/dist/client/assets/{YAxis-BGAUofHm.js → YAxis-Bh3igZB4.js} +1 -1
  50. package/dist/client/assets/{Zap-zOwYtQGz.js → Zap-BBWhlBsY.js} +1 -1
  51. package/dist/client/assets/{ZapSquare-CIYYThxd.js → ZapSquare-DMumDlFU.js} +1 -1
  52. package/dist/client/assets/{access-gate-D3POpBoB.js → access-gate-vL3SLX46.js} +1 -1
  53. package/dist/client/assets/{agent-icon-240wRiU-.js → agent-icon-BSTBCKYA.js} +1 -1
  54. package/dist/client/assets/{agents-list-wvZk7jhH.js → agents-list-Bti0U40V.js} +1 -1
  55. package/dist/client/assets/{ai-providers-nP9IquD0.js → ai-providers-Dd9yLAVN.js} +1 -1
  56. package/dist/client/assets/{alert-LCjAK5av.js → alert-Cg_VA0j7.js} +1 -1
  57. package/dist/client/assets/{alert-dialog-DZPISKJR.js → alert-dialog-CZqHwwN6.js} +1 -1
  58. package/dist/client/assets/{api-keys-DPysFUUY.js → api-keys-DST5Ctpv.js} +1 -1
  59. package/dist/client/assets/{app-editor-DZ6NLQ5U.js → app-editor-6oqMJZPt.js} +1 -1
  60. package/dist/client/assets/{auth-IStUgQMe.js → auth-B9S07pEm.js} +1 -1
  61. package/dist/client/assets/{auth-catchall-O3GaWsza.js → auth-catchall-BYWj9CGK.js} +1 -1
  62. package/dist/client/assets/{auth-entry-6XkXLHgW.js → auth-entry-BnaXXXTx.js} +1 -1
  63. package/dist/client/assets/{auth-split-layout-CJAn4xmG.js → auth-split-layout-CglehoNb.js} +1 -1
  64. package/dist/client/assets/{authenticate-and-persist-oauth-ePSevids.js → authenticate-and-persist-oauth-BaWE3LoD.js} +1 -1
  65. package/dist/client/assets/{automation-list-row-CJedoYYs.js → automation-list-row-Clg0j60Z.js} +1 -1
  66. package/dist/client/assets/{automation-runs-5mN7EQoM.js → automation-runs-0I3BQr9s.js} +1 -1
  67. package/dist/client/assets/{automations-DZBj7kDw.js → automations-BsaDfm-4.js} +1 -1
  68. package/dist/client/assets/{avatar-Dsd7yOPc.js → avatar-C35A5GH1.js} +1 -1
  69. package/dist/client/assets/{badge-DG9Xlz00.js → badge-CjTyp2xp.js} +1 -1
  70. package/dist/client/assets/{billing-CGbfUyvi.js → billing-Cdwqdznd.js} +1 -1
  71. package/dist/client/assets/{block-document-p8jcZnNK.js → block-document-CeBvWRhr.js} +1 -1
  72. package/dist/client/assets/{brand-context-BHoeRtfj.js → brand-context-WIkv0L4e.js} +1 -1
  73. package/dist/client/assets/{buckets-CIyqL1l8.js → buckets-c385-7Z-.js} +1 -1
  74. package/dist/client/assets/{bulk-category-panel-CAbBOB_o.js → bulk-category-panel-BpSCqeHX.js} +1 -1
  75. package/dist/client/assets/{capability-load-error-DFAlPDO1.js → capability-load-error-4SbUaIBQ.js} +1 -1
  76. package/dist/client/assets/{card-DGBvcESV.js → card-w-H6PyT8.js} +1 -1
  77. package/dist/client/assets/{cards-CNNbhpwl.js → cards-Ds4bFd-6.js} +1 -1
  78. package/dist/client/assets/{category-editor-EvPAT7i1.js → category-editor-3Bukw8Rk.js} +1 -1
  79. package/dist/client/assets/{chart-BQBLKCv-.js → chart-CJoGh74g.js} +1 -1
  80. package/dist/client/assets/{chat-context-FxlzwnJR.js → chat-context-B57g0GOw.js} +1 -1
  81. package/dist/client/assets/{checkbox-DQyo0vjh.js → checkbox-znzLSdSK.js} +1 -1
  82. package/dist/client/assets/{cli-auth-success-u-QnwV25.js → cli-auth-success-Dcc3TnZa.js} +1 -1
  83. package/dist/client/assets/{collection-detail-DYqH71Ks.js → collection-detail-utoBd9FR.js} +1 -1
  84. package/dist/client/assets/{collection-display-button-CDhXvlua.js → collection-display-button-jGAOWrgx.js} +1 -1
  85. package/dist/client/assets/{collection-search-BqZvztIK.js → collection-search-C3MlBNL_.js} +1 -1
  86. package/dist/client/assets/{collection-table-wrapper-DTV77txm.js → collection-table-wrapper-DCpmQNcP.js} +1 -1
  87. package/dist/client/assets/{collection-tabs-DagZxzR6.js → collection-tabs-fAIxFJse.js} +1 -1
  88. package/dist/client/assets/{command-CYeiF9j5.js → command-BwiCPHf6.js} +1 -1
  89. package/dist/client/assets/{commerce-onboarding-p5_7eGrc.js → commerce-onboarding-fZbihpuP.js} +1 -1
  90. package/dist/client/assets/{connect-CtrhpVjx.js → connect-1pio838s.js} +1 -1
  91. package/dist/client/assets/{connection-CBwu5Dfv.js → connection-DBWOPMzI.js} +1 -1
  92. package/dist/client/assets/{connection-card-Cr5HN4f5.js → connection-card-D5oCrIjY.js} +1 -1
  93. package/dist/client/assets/{connection-detail-Cv6Kt1Ng.js → connection-detail-DlAD4XtT.js} +1 -1
  94. package/dist/client/assets/{connection-form-helpers-Cir-JUG1.js → connection-form-helpers-CpKiRxxJ.js} +1 -1
  95. package/dist/client/assets/{connections-CMQRHhGa.js → connections-B6unSy5e.js} +1 -1
  96. package/dist/client/assets/{decopilot-sse-pool-r9vz33V5.js → decopilot-sse-pool-CR2loKys.js} +1 -1
  97. package/dist/client/assets/{dialog-Dgg6PlGH.js → dialog-BJD2-w1b.js} +1 -1
  98. package/dist/client/assets/{domain-settings-B053RfCo.js → domain-settings-BQw5etkB.js} +1 -1
  99. package/dist/client/assets/{drawer-BmkVbcbk.js → drawer-Dn-aVmHV.js} +1 -1
  100. package/dist/client/assets/{dropdown-menu-BhD3cdJU.js → dropdown-menu-RrrOyTli.js} +1 -1
  101. package/dist/client/assets/{empty-state-Bhn5ROe8.js → empty-state-KgBf2b0y.js} +1 -1
  102. package/dist/client/assets/{extract-connection-data-VlJk472h.js → extract-connection-data-DJpLASNz.js} +1 -1
  103. package/dist/client/assets/{file-explorer-BvGoMGBW.js → file-explorer-BE3efrRp.js} +1 -1
  104. package/dist/client/assets/{file-type-icon-CC8RuzMr.js → file-type-icon-lW-PdLds.js} +1 -1
  105. package/dist/client/assets/{form-DInwT_Br.js → form-DDzlk6WA.js} +1 -1
  106. package/dist/client/assets/{general-CirIUonf.js → general-Crf__4RR.js} +1 -1
  107. package/dist/client/assets/{github-repo-picker-BvffkmIS.js → github-repo-picker-D3D5axan.js} +1 -1
  108. package/dist/client/assets/{hooks-Dx7vYMww.js → hooks-BMgGF81U.js} +1 -1
  109. package/dist/client/assets/{index-JUmXcCVC.js → index-3SKCZVvD.js} +1 -1
  110. package/dist/client/assets/{index-HQmnt7Ae.js → index-B2RG3TCe.js} +1 -1
  111. package/dist/client/assets/{index-6ZAlKXAE.js → index-BJn2RNmE.js} +1 -1
  112. package/dist/client/assets/{index-Csep9Z5u.js → index-BMT9Ukt-.js} +1 -1
  113. package/dist/client/assets/{index-BcTx_-zg.js → index-CBU0uT6n.js} +1 -1
  114. package/dist/client/assets/{index-DfPn3iDg.js → index-CIllBTS8.js} +3 -3
  115. package/dist/client/assets/{index-B_I-N4LH.js → index-CLvztXkQ.js} +1 -1
  116. package/dist/client/assets/{index-Cw4Tk07I.js → index-DGSJU5Zp.js} +1 -1
  117. package/dist/client/assets/{index-CGQxpIVr.js → index-DjOKLt28.js} +5 -5
  118. package/dist/client/assets/{index-DJHc6NX1.js → index-F481NrTx.js} +1 -1
  119. package/dist/client/assets/{index-redirect-fljg8Ecg.js → index-redirect-CFqcuo7u.js} +1 -1
  120. package/dist/client/assets/{infra-billing-BdjfHYVy.js → infra-billing-CKUXYUPK.js} +1 -1
  121. package/dist/client/assets/{input-BFxK8-HF.js → input-8GTmIuWY.js} +1 -1
  122. package/dist/client/assets/{integration-icon-DbODIxus.js → integration-icon-ClMdizSN.js} +1 -1
  123. package/dist/client/assets/{invite-member-dialog-BAxDS9G9.js → invite-member-dialog-D2yBfhHG.js} +1 -1
  124. package/dist/client/assets/{label-57FtAP1W.js → label-k4LVLcIA.js} +1 -1
  125. package/dist/client/assets/{layout-Bdat8rI7.js → layout-BU_HFCxo.js} +1 -1
  126. package/dist/client/assets/{login-BidlNf04.js → login-DKRI6LON.js} +1 -1
  127. package/dist/client/assets/{mcp-oauth-Ck5r5WOE.js → mcp-oauth-_iJ5t1bJ.js} +1 -1
  128. package/dist/client/assets/{members-dgRsKnZH.js → members-C3a2lv9G.js} +1 -1
  129. package/dist/client/assets/{monaco-editor-Cdptf6b-.js → monaco-editor-CgX5eDQJ.js} +1 -1
  130. package/dist/client/assets/{monitoring-stats-row-DnRYwlH8.js → monitoring-stats-row-CakfsjUh.js} +1 -1
  131. package/dist/client/assets/{multi-select-GQ_B3WmY.js → multi-select-Bvz7uBdD.js} +1 -1
  132. package/dist/client/assets/{oauth-callback-CX3SeKq7.js → oauth-callback-CyY8EUfW.js} +1 -1
  133. package/dist/client/assets/{oauth-callback-ai-provider-BSTURmTA.js → oauth-callback-ai-provider-2jmIIg-N.js} +1 -1
  134. package/dist/client/assets/{onboarding-C8hryXMN.js → onboarding-CMUt-y-E.js} +1 -1
  135. package/dist/client/assets/{org-layout-CSX9mbpP.js → org-layout-DjXKuDZJ.js} +1 -1
  136. package/dist/client/assets/{organization-choice-UmGiJVNF.js → organization-choice-FnK4r05r.js} +1 -1
  137. package/dist/client/assets/{orgs-BM-B1yHf.js → orgs-DVE6qsq6.js} +1 -1
  138. package/dist/client/assets/{page-seo-form-nAlkqeuj.js → page-seo-form-yXvEtvyB.js} +1 -1
  139. package/dist/client/assets/{popover-BW1OC1_7.js → popover-DzxofIpE.js} +1 -1
  140. package/dist/client/assets/{post-editor-BQgIB1AU.js → post-editor-BatxLm-0.js} +1 -1
  141. package/dist/client/assets/{primitives-CQNaBCD6.js → primitives-Cj9r2RtB.js} +1 -1
  142. package/dist/client/assets/{profile-DiAzD8pY.js → profile-DHHdOiHk.js} +1 -1
  143. package/dist/client/assets/{project-app-view-DOtCeQS0.js → project-app-view-jF26L6Jd.js} +1 -1
  144. package/dist/client/assets/record-editor-BezB2i7p.js +1 -0
  145. package/dist/client/assets/{redirect-editor-Cy8W_zUR.js → redirect-editor-XWLXtY9S.js} +1 -1
  146. package/dist/client/assets/registry-DBojw-Lv.js +2 -0
  147. package/dist/client/assets/{registry-layout-e9EO4PaI.js → registry-layout-cFOA8YDv.js} +1 -1
  148. package/dist/client/assets/{reports-B-I_7zAP.js → reports-Cd1Nys_o.js} +1 -1
  149. package/dist/client/assets/{require-capability-B1Mzk-2K.js → require-capability-B2S6xXZZ.js} +1 -1
  150. package/dist/client/assets/{required-auth-layout-DcP-pRv2.js → required-auth-layout-BjNQvg0s.js} +1 -1
  151. package/dist/client/assets/{reset-password-Cj4Ef0I3.js → reset-password-DfYk4GqM.js} +1 -1
  152. package/dist/client/assets/{roles-DQHIepLR.js → roles-CR6AqI75.js} +1 -1
  153. package/dist/client/assets/{search-input-E4Qkkuf4.js → search-input-efjrQMLX.js} +1 -1
  154. package/dist/client/assets/{secrets-XWijnPER.js → secrets-D6zzW4cd.js} +1 -1
  155. package/dist/client/assets/{sections-editor-CrmF0rFe.js → sections-editor-Bgg9R8oK.js} +1 -1
  156. package/dist/client/assets/{select-DV3aWD87.js → select-DqRFMd3O.js} +1 -1
  157. package/dist/client/assets/{select-model-C3c_mGAH.js → select-model-CHinBIgM.js} +1 -1
  158. package/dist/client/assets/{self-tool-result-CnwDQQvj.js → self-tool-result-DUUQXcR5.js} +1 -1
  159. package/dist/client/assets/{seo-editor-a53spu9J.js → seo-editor-CnbYleWM.js} +1 -1
  160. package/dist/client/assets/{settings-layout-BecEk_dX.js → settings-layout-Qp-aa8BT.js} +1 -1
  161. package/dist/client/assets/{settings-section-uZTugzhG.js → settings-section-De3tXryS.js} +1 -1
  162. package/dist/client/assets/{shell-controls-Cr_MsGqp.js → shell-controls-CCjwF65i.js} +1 -1
  163. package/dist/client/assets/{shell-layout-CslJFnFr.js → shell-layout-BqpdNv_g.js} +1 -1
  164. package/dist/client/assets/{sidebar-8A05Jrab.js → sidebar-CoaLdGA8.js} +1 -1
  165. package/dist/client/assets/{skeleton-C-UkG_re.js → skeleton-B2J19LtI.js} +1 -1
  166. package/dist/client/assets/{spinner-paA7C_Rf.js → spinner-BJq_p5Kt.js} +1 -1
  167. package/dist/client/assets/{sso-BArVersQ.js → sso-rF574BMn.js} +1 -1
  168. package/dist/client/assets/{store-J0dMcRM3.js → store-CE3WzCD-.js} +1 -1
  169. package/dist/client/assets/store-registry-CB0b2GhK.js +2 -0
  170. package/dist/client/assets/{studio-tools-BEvrasuC.js → studio-tools-D5xYZX7O.js} +1 -1
  171. package/dist/client/assets/{switch-CMI4U9UO.js → switch-GN9hO9KY.js} +1 -1
  172. package/dist/client/assets/{synced-repos-Bm9j-uqL.js → synced-repos-Cya9UzRi.js} +1 -1
  173. package/dist/client/assets/{tab-id-1JiBO4Hl.js → tab-id-CkA4gZjM.js} +1 -1
  174. package/dist/client/assets/{table-DVvjt8b7.js → table-QoRdjZkg.js} +1 -1
  175. package/dist/client/assets/{tabs-D_4qUUvf.js → tabs-Biq2paoX.js} +1 -1
  176. package/dist/client/assets/{textarea-DSxwoXGc.js → textarea-DjDXJLSy.js} +1 -1
  177. package/dist/client/assets/{toggle-group-Dy-Ry41_.js → toggle-group-BOaJ_bvn.js} +1 -1
  178. package/dist/client/assets/{toolbar-GEIP3zkf.js → toolbar-D0tLWlyM.js} +1 -1
  179. package/dist/client/assets/{tooltip-Bi8tCssy.js → tooltip-Bb8mSTBF.js} +1 -1
  180. package/dist/client/assets/{track-BzQyVpjR.js → track-BB0pTlAa.js} +1 -1
  181. package/dist/client/assets/{types-CpJmlFId.js → types-BILMBV1X.js} +1 -1
  182. package/dist/client/assets/{use-ai-providers-Nl7kneTJ.js → use-ai-providers-8FSvZT7l.js} +1 -1
  183. package/dist/client/assets/{use-api-keys-sOCYl89e.js → use-api-keys-DlI5RXtV.js} +1 -1
  184. package/dist/client/assets/{use-automations-BblENUPD.js → use-automations-CYZ3QUmX.js} +1 -1
  185. package/dist/client/assets/{use-autosave-BP4Sbact.js → use-autosave-DbBL6a6e.js} +1 -1
  186. package/dist/client/assets/{use-capability-B0gUZW5E.js → use-capability-c9j_J0ih.js} +1 -1
  187. package/dist/client/assets/{use-clock-tick-CuMMGb9r.js → use-clock-tick-nH0mc81X.js} +1 -1
  188. package/dist/client/assets/{use-commerce-diagnostic-BTqIEofr.js → use-commerce-diagnostic-BNV6CZGJ.js} +1 -1
  189. package/dist/client/assets/{use-connection-CrvRfmX0.js → use-connection-CwHV0WN0.js} +1 -1
  190. package/dist/client/assets/{use-copy-s98HyIcj.js → use-copy-DGSHqx-a.js} +1 -1
  191. package/dist/client/assets/{use-create-virtual-mcp-DeJJ2toV.js → use-create-virtual-mcp-Cp12lD_X.js} +1 -1
  192. package/dist/client/assets/{use-debounced-autosave-BX0eYViB.js → use-debounced-autosave-0OMOfNqt.js} +1 -1
  193. package/dist/client/assets/{use-debounced-value-DGU4iZ73.js → use-debounced-value-BpEUjb9U.js} +1 -1
  194. package/dist/client/assets/{use-decopilot-events-mMKx0M7_.js → use-decopilot-events-6dnWppw9.js} +1 -1
  195. package/dist/client/assets/{use-delete-connection-jq8m4Prx.js → use-delete-connection-QIhLspxt.js} +1 -1
  196. package/dist/client/assets/{use-deployment-admin-BJx1k45a.js → use-deployment-admin-DDi9C2wW.js} +1 -1
  197. package/dist/client/assets/{use-file-configs-BsRVFTSl.js → use-file-configs-Crw4zAL8.js} +1 -1
  198. package/dist/client/assets/{use-infinite-scroll-ClaRlzr-.js → use-infinite-scroll-Ds-1FALh.js} +1 -1
  199. package/dist/client/assets/{use-infra-billing-mnvgGnki.js → use-infra-billing-Y6b8x_8O.js} +1 -1
  200. package/dist/client/assets/{use-join-requests-yZ13XEGB.js → use-join-requests-02DdKhio.js} +1 -1
  201. package/dist/client/assets/{use-mcp-client-5ioMJLkh.js → use-mcp-client-gPNmfT00.js} +1 -1
  202. package/dist/client/assets/{use-mcp-tools-D1WB9xO9.js → use-mcp-tools-BvSTbaGB.js} +1 -1
  203. package/dist/client/assets/{use-members-BnDUp0-0.js → use-members-BahguJ5t.js} +1 -1
  204. package/dist/client/assets/{use-mobile-D1cSOCkB.js → use-mobile-DgPFLCjJ.js} +1 -1
  205. package/dist/client/assets/{use-navigate-to-agent-BT0uQqq9.js → use-navigate-to-agent-DboDuzHI.js} +1 -1
  206. package/dist/client/assets/{use-open-billing-url-jnaw3oeM.js → use-open-billing-url-CYnhqYfq.js} +1 -1
  207. package/dist/client/assets/{use-org-auth-client-Cjr_8NWS.js → use-org-auth-client-GCHWq6ke.js} +1 -1
  208. package/dist/client/assets/{use-org-sso-Bi8sjYkK.js → use-org-sso-DYhyQMNG.js} +1 -1
  209. package/dist/client/assets/{use-organization-roles-_viGftSA.js → use-organization-roles-DoIVH8FN.js} +1 -1
  210. package/dist/client/assets/{use-organization-settings-CqFOI4_7.js → use-organization-settings-BZmbej7d.js} +1 -1
  211. package/dist/client/assets/{use-registry-connections-CFb4BqkP.js → use-registry-connections-BdJ6m63Y.js} +1 -1
  212. package/dist/client/assets/{use-secrets-C10eUqEi.js → use-secrets-Bhj0sIXg.js} +1 -1
  213. package/dist/client/assets/{use-section-preview-base-DLY7i9kW.js → use-section-preview-base-BRUJInZX.js} +1 -1
  214. package/dist/client/assets/{use-status-sounds-ysKRt8lX.js → use-status-sounds-PV6ltblN.js} +1 -1
  215. package/dist/client/assets/{use-tags-aTb6dgeL.js → use-tags-B8-W6t2_.js} +1 -1
  216. package/dist/client/assets/{use-view-mode-B7JiTw-k.js → use-view-mode-urjXAC-u.js} +1 -1
  217. package/dist/client/assets/{use-virtual-mcp-2SgiC_cD.js → use-virtual-mcp-djImvqFp.js} +1 -1
  218. package/dist/client/assets/useInfiniteQuery-B-1EdE22.js +1 -0
  219. package/dist/client/assets/{useRouterState-CQO8pnYz.js → useRouterState-DdjV6uyA.js} +1 -1
  220. package/dist/client/assets/useSuspenseInfiniteQuery-C8Iiti5O.js +1 -0
  221. package/dist/client/assets/{users-CmdJEyh-.js → users-Df_WXwEx.js} +1 -1
  222. package/dist/client/assets/{variant-calendar-B8ijUQ7g.js → variant-calendar-Cd37mbIK.js} +1 -1
  223. package/dist/client/assets/{view-mode-toggle-oJjUikLX.js → view-mode-toggle-BpdDDuL3.js} +1 -1
  224. package/dist/client/index.html +1 -1
  225. package/dist/server/cli.js +2 -2
  226. package/dist/server/server.js +2 -2
  227. package/package.json +1 -1
  228. package/dist/client/assets/record-editor-BH2O2vWT.js +0 -1
  229. package/dist/client/assets/registry-DuIi4ZW5.js +0 -2
  230. package/dist/client/assets/store-registry-BYDseqvB.js +0 -2
  231. package/dist/client/assets/useInfiniteQuery-ywF9p0-d.js +0 -1
  232. package/dist/client/assets/useSuspenseInfiniteQuery-GSTuhXj-.js +0 -1
@@ -1332,7 +1332,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var qm1=O(()=>{ex()});f
1332
1332
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await Mb`
1333
1333
  DELETE FROM kysely_migration WHERE name = ${X}
1334
1334
  `.execute($)}}async function dt1($){await $n6($),await Zn6($);let Z=new ct1({db:$,provider:{getMigrations:()=>Promise.resolve(pm0)}}),{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 Xn6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Dc0();let G=X??U6(),J=async()=>{if(!Z&&!X)await MB(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await dt1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function Qn6(){let $=U6(),Z=new ct1({db:$.db,provider:{getMigrations:()=>Promise.resolve(pm0)}}),{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 it1=O(()=>{ut1();Ec0();ZX()});async function $Z0($){let Z={...process.env},X=i10($,Z);console.log(JO1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Xn1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (W90(),K90)),{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(() => (Ec0(),Yn1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (ZX(),Pi1)),{migrateToLatest:N}=await Promise.resolve().then(() => (it1(),mt1)),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 Mm1(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 tm0=O(()=>{ex();Qn1();q8()});var tt1={};w0(tt1,{updateService:()=>WE,subscribeCliState:()=>am0,setTuiConsoleIntercepted:()=>ZZ0,setServerUrl:()=>wi,setMigrationsDone:()=>Bi,setDevMode:()=>Jn6,resetCliStateForTests:()=>Yn6,isTuiConsoleIntercepted:()=>XZ0,getCliState:()=>rm0,addLogEntry:()=>_B});function nt1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function Yn6(){hQ=nt1()}function Gn6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Fi(){for(let $ of om0)$()}function rm0(){return hQ}function am0($){return om0.add($),()=>om0.delete($)}function WE($){hQ={...hQ,services:hQ.services.map((Z)=>Z.name===$.name?$:Z)},Fi()}function Bi(){hQ={...hQ,migrationsStatus:"done"},Fi()}function wi($){hQ={...hQ,serverUrl:$},Fi()}function _B($){let Z=[...hQ.logs,$];hQ={...hQ,logs:Z.length>500?Z.slice(-500):Z},Fi()}function Jn6(){hQ={...hQ,services:[...Gn6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Fi()}function ZZ0($){pt1=$}function XZ0(){return pt1}var hQ,om0,pt1=!1;var HE=O(()=>{hQ=nt1();om0=new Set});import{createServer as ot1}from"net";function Kn6($){return new Promise((Z)=>{let X=ot1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function Oi($){if(await Kn6($))return $;let Z=await new Promise((X,Q)=>{let Y=ot1();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 sm0=()=>{};function Li($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var em0={};w0(em0,{startDevServer:()=>Hn6});import{join as Wn6}from"path";function rt1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
1335
- `);Q=G.pop()??"";for(let J of G){let K=Li(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;_B({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=Li(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)_B({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function Hn6($){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 Oi(Number(Y)+1):await Oi(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await $Z0({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)WE({name:L.name,status:"ready",port:L.port});Bi();let N=Wn6(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)rt1(F.stdout),rt1(F.stderr);wi(G),WE({name:"Vite",status:"ready",port:Number(Y)}),WE({name:"API",status:"ready",port:Number(K.port)});let w=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (W90(),K90));await D(K.dataDir)}};return process.on("SIGINT",()=>w("SIGINT")),process.on("SIGTERM",()=>w("SIGTERM")),{port:Number(Y),process:F}}var $i0=O(()=>{tm0();HE();sm0()});var QZ0;var Zi0=O(()=>{QZ0={name:"decocms",version:"4.229.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^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 Un6,Text as at1}from"ink";import{jsx as Fn6,jsxs as st1}from"react/jsx-runtime";function et1({version:$}){return st1(Un6,{flexDirection:"column",marginTop:1,children:[C90.map((Z,X)=>Fn6(at1,{color:_90[X],children:Z},X)),st1(at1,{dimColor:!0,children:[" v",$]})]})}var $o1=O(()=>{Zi()});import{Box as NE,Text as vB}from"ink";import{Spinner as Bn6}from"@inkjs/ui";import{jsx as rY,jsxs as Vb}from"react/jsx-runtime";function Zo1({status:$}){if($==="pending")return rY(Bn6,{label:""});return rY(vB,{color:"green",children:"\u2713"})}function wn6($){return`${$.name}: ${$.port||"...."}`}function Xo1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Vb(NE,{flexDirection:"column",paddingBottom:1,children:[rY(et1,{version:QZ0.version}),rY(NE,{marginBottom:1,children:rY(vB,{dimColor:!0,children:"\u2500".repeat(80)})}),rY(NE,{children:Vb(vB,{dimColor:!0,children:["Home: ",X]})}),Vb(NE,{gap:2,children:[$.map((Y)=>Vb(NE,{gap:1,children:[rY(vB,{children:wn6(Y)}),rY(Zo1,{status:Y.status})]},Y.name)),Vb(NE,{gap:1,children:[rY(vB,{children:"Migrations"}),rY(Zo1,{status:Z})]})]}),rY(NE,{children:Q?Vb(vB,{children:["Open in browser: ",rY(vB,{color:"cyan",children:Q})]}):rY(vB,{dimColor:!0,children:"Starting..."})})]})}var Qo1=O(()=>{Zi0();$o1()});import{Box as On6,Text as Di}from"ink";import{jsx as Xi0,jsxs as Qi0}from"react/jsx-runtime";function Ln6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Yo1({logs:$}){return Xi0(On6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Xi0(Di,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Qi0(Di,{children:[Qi0(Di,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Xi0(Di,{color:Ln6(Z.status),children:Z.status}),Qi0(Di,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Go1=()=>{};var Yi0={};w0(Yi0,{App:()=>zn6});import{Box as Dn6}from"ink";import{useSyncExternalStore as En6}from"react";import{jsx as Jo1,jsxs as jn6}from"react/jsx-runtime";function zn6({home:$}){let Z=En6(am0,rm0);return jn6(Dn6,{flexDirection:"column",children:[Jo1(Xo1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Jo1(Yo1,{logs:Z.logs})]})}var Gi0=O(()=>{Qo1();Go1();HE()});var SJ="thread-gate",dN="decopilot-hosted-harness",H3="automations",xB="background-tools",UE="task-board-github-reads";var Ko1="7";function Wo1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Ko1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Ho1=()=>{};function Pn6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Ji0($,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 No1(){let $=Pn6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Ji0($,"--cpu-prof-dir")??process.cwd(),name:Ji0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Ji0($,"--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 Uo1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=YE();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(()=>{}),YZ0=setInterval(()=>void Z().catch(()=>{}),$),YZ0.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(YZ0)clearInterval(YZ0)}}var YZ0;var Fo1=()=>{};import*as An6 from"bun:jsc";function Bo1(){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{Tn6()}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=Rn6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((w)=>w.sourceURL&&!/Unknown Executable/.test(w.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(B,(W.get(B)??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 Tn6,Rn6;var wo1=O(()=>{({startSamplingProfiler:Tn6,samplingProfilerStackTraces:Rn6}=An6)});function Oo1(){No1();let $=[Uo1(),Bi1(),Bo1()];return()=>{for(let Z of $)Z()}}var Lo1=O(()=>{Kc0();Fo1();wo1()});var FE=_((Do1)=>{Object.defineProperty(Do1,"__esModule",{value:!0});Do1.RepublishHeaders=Do1.DirectMsgHeaders=Do1.JsHeaders=Do1.AdvisoryKind=void 0;Do1.isOrderedPushConsumerOptions=In6;Do1.isPullConsumer=qn6;Do1.isPushConsumer=Mn6;Do1.isBoundPushConsumerOptions=Vn6;function In6($){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 qn6($){return $.isPullConsumer()}function Mn6($){return $.isPushConsumer()}function Vn6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Do1.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"};Do1.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"};Do1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Do1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var aY=_((zo1)=>{Object.defineProperty(zo1,"__esModule",{value:!0});zo1.TD=zo1.TE=zo1.Empty=void 0;zo1.encode=yn6;zo1.decode=gn6;zo1.Empty=new Uint8Array(0);zo1.TE=new TextEncoder;zo1.TD=new TextDecoder;function bn6(...$){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 yn6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(zo1.TE.encode($[X]));if(Z.length===0)return zo1.Empty;if(Z.length===1)return Z[0];return bn6(...Z)}function gn6($){if(!$||$.length===0)return"";return zo1.TD.decode($)}});var sY=_((Ao1)=>{Object.defineProperty(Ao1,"__esModule",{value:!0});Ao1.errors=Ao1.PermissionViolationError=Ao1.NoRespondersError=Ao1.TimeoutError=Ao1.RequestError=Ao1.ProtocolError=Ao1.ConnectionError=Ao1.DrainingConnectionError=Ao1.ClosedConnectionError=Ao1.AuthorizationError=Ao1.UserAuthenticationExpiredError=Ao1.InvalidOperationError=Ao1.InvalidArgumentError=Ao1.InvalidSubjectError=void 0;class Wi0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Ao1.InvalidSubjectError=Wi0;class GZ0 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 GZ0(`${$} ${Z}`,X)}}Ao1.InvalidArgumentError=GZ0;class Hi0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Ao1.InvalidOperationError=Hi0;class JZ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new JZ0($);return null}}Ao1.UserAuthenticationExpiredError=JZ0;class KZ0 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 KZ0($);return null}}Ao1.AuthorizationError=KZ0;class Ni0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Ao1.ClosedConnectionError=Ni0;class Ui0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Ao1.DrainingConnectionError=Ui0;class Fi0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Ao1.ConnectionError=Fi0;class Bi0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Ao1.ProtocolError=Bi0;class wi0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof WZ0}}Ao1.RequestError=wi0;class Oi0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Ao1.TimeoutError=Oi0;class WZ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Ao1.NoRespondersError=WZ0;class HZ0 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 HZ0($,X,Q,Y)}}Ao1.PermissionViolationError=HZ0;Ao1.errors={AuthorizationError:KZ0,ClosedConnectionError:Ni0,ConnectionError:Fi0,DrainingConnectionError:Ui0,InvalidArgumentError:GZ0,InvalidOperationError:Hi0,InvalidSubjectError:Wi0,NoRespondersError:WZ0,PermissionViolationError:HZ0,ProtocolError:Bi0,RequestError:wi0,TimeoutError:Oi0,UserAuthenticationExpiredError:JZ0}});var CJ=_((Mo1)=>{Object.defineProperty(Mo1,"__esModule",{value:!0});Mo1.SimpleMutex=Mo1.Perf=void 0;Mo1.extend=Zp6;Mo1.render=Xp6;Mo1.timeout=Qp6;Mo1.delay=Yp6;Mo1.deadline=Gp6;Mo1.deferred=Di0;Mo1.debugDeferred=Jp6;Mo1.shuffle=Kp6;Mo1.collect=Wp6;Mo1.jitter=qo1;Mo1.backoff=Hp6;Mo1.nanos=Np6;Mo1.millis=Up6;Mo1.randomToken=wp6;var $p6=aY(),Li0=sY();function Zp6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Xp6($){return $p6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Qp6($,Z=!0){let X=Z?new Li0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Li0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Yp6($=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 Gp6($,Z=1000){let X=Di0(),Q=setTimeout(()=>{X.reject(new Li0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Di0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function Jp6(){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 Kp6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Wp6($){let Z=[];for await(let X of $)Z.push(X);return Z}class Ro1{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})}),$}}Mo1.Perf=Ro1;class Io1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Di0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Mo1.SimpleMutex=Io1;function qo1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Hp6($=[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 qo1(X>Z?$[Z]:$[X])}}}function Np6($){return $*1e6}function Up6($){return Math.floor($/1e6)}var Fp6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",mN=new Uint8Array(62);for(let $=0;$<62;$++)mN[$]=Fp6.charCodeAt($);var Bp6=218340105584896;function wp6(){let $=Math.floor(Math.random()*Bp6),Z=$%62,X=mN[Z];$=($-Z)/62,Z=$%62;let Q=mN[Z];$=($-Z)/62,Z=$%62;let Y=mN[Z];$=($-Z)/62,Z=$%62;let G=mN[Z];$=($-Z)/62,Z=$%62;let J=mN[Z];$=($-Z)/62,Z=$%62;let K=mN[Z];$=($-Z)/62,Z=$%62;let W=mN[Z];$=($-Z)/62;let H=mN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var fo1=_((vo1)=>{Object.defineProperty(vo1,"__esModule",{value:!0});vo1.nuid=vo1.NuidImpl=void 0;var Sp6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",fB=62,UZ0=12,Co1=10,ko1=33,Cp6=333,So1=UZ0+Co1,zi0=new Uint8Array(fB);for(let $=0;$<fB;$++)zi0[$]=Sp6.charCodeAt($);var NZ0=4294967296,_o1=BigInt(fB)**BigInt(Co1),Ei=Number(_o1/(1n<<32n)),Ei0=Number(_o1%(1n<<32n));function _p6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function vp6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else _p6($)}class ji0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(So1),this.cbuf=new Uint8Array(UZ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Ei+1)),this.seqLo=Math.floor(Math.random()*NZ0);while($++<8&&this.seqHi===Ei&&this.seqLo>=Ei0);if(this.seqHi===Ei&&this.seqLo>=Ei0)this.seqLo=0;this.inc=Math.random()*(Cp6-ko1)+ko1|0}setPre(){vp6(this.cbuf);for(let $=0;$<UZ0;$++)this.buf[$]=zi0[this.cbuf[$]%fB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=So1-1;X>=UZ0;X--){let Q=Math.floor($/fB),G=($-Q*fB)*NZ0+Z,J=Math.floor(G/fB),K=G-J*fB;this.buf[X]=zi0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=NZ0)this.seqLo-=NZ0,this.seqHi+=1;if(this.seqHi>Ei||this.seqHi===Ei&&this.seqLo>=Ei0)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()}}vo1.NuidImpl=ji0;vo1.nuid=new ji0});var ho1=_((yo1)=>{Object.defineProperty(yo1,"__esModule",{value:!0});yo1.nuid=yo1.Nuid=void 0;var bo1=fo1();yo1.Nuid=bo1.NuidImpl;yo1.nuid=bo1.nuid});var BZ0=_((FZ0)=>{Object.defineProperty(FZ0,"__esModule",{value:!0});FZ0.nuid=FZ0.Nuid=void 0;var uo1=ho1();Object.defineProperty(FZ0,"Nuid",{enumerable:!0,get:function(){return uo1.Nuid}});Object.defineProperty(FZ0,"nuid",{enumerable:!0,get:function(){return uo1.nuid}})});var bB=_((co1)=>{Object.defineProperty(co1,"__esModule",{value:!0});co1.DEFAULT_HOST=co1.DEFAULT_PORT=co1.Match=void 0;co1.syncIterator=hp6;co1.createInbox=up6;var yp6=BZ0(),gp6=sY();co1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function hp6($){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 up6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw gp6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${yp6.nuid.next()}`}co1.DEFAULT_PORT=4222;co1.DEFAULT_HOST="127.0.0.1"});var zi=_((io1)=>{Object.defineProperty(io1,"__esModule",{value:!0});io1.DataBuffer=void 0;var do1=aY();class mo1{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 do1.TE.encode($)}static toAscii($){return do1.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}}io1.DataBuffer=mo1});var BE=_((to1)=>{Object.defineProperty(to1,"__esModule",{value:!0});to1.LF=to1.CR=to1.CRLF=to1.CR_LF_LEN=to1.CR_LF=void 0;to1.setTransportFactory=tp6;to1.defaultPort=op6;to1.getUrlParseFn=rp6;to1.newTransport=ap6;to1.getResolveFn=sp6;to1.protoLen=po1;to1.extractProtocolMessage=ep6;var ip6=aY(),np6=bB(),pp6=zi(),eY;function tp6($){eY=$}function op6(){return eY!==void 0&&eY.defaultPort!==void 0?eY.defaultPort:np6.DEFAULT_PORT}function rp6(){return eY!==void 0&&eY.urlParseFn?eY.urlParseFn:void 0}function ap6(){if(!eY||typeof eY.factory!=="function")throw Error("transport fn is not set");return eY.factory()}function sp6(){return eY!==void 0&&eY.dnsResolveFn?eY.dnsResolveFn:void 0}to1.CR_LF=`\r
1335
+ `);Q=G.pop()??"";for(let J of G){let K=Li(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;_B({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=Li(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)_B({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function Hn6($){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 Oi(Number(Y)+1):await Oi(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await $Z0({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)WE({name:L.name,status:"ready",port:L.port});Bi();let N=Wn6(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)rt1(F.stdout),rt1(F.stderr);wi(G),WE({name:"Vite",status:"ready",port:Number(Y)}),WE({name:"API",status:"ready",port:Number(K.port)});let w=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (W90(),K90));await D(K.dataDir)}};return process.on("SIGINT",()=>w("SIGINT")),process.on("SIGTERM",()=>w("SIGTERM")),{port:Number(Y),process:F}}var $i0=O(()=>{tm0();HE();sm0()});var QZ0;var Zi0=O(()=>{QZ0={name:"decocms",version:"4.229.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^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 Un6,Text as at1}from"ink";import{jsx as Fn6,jsxs as st1}from"react/jsx-runtime";function et1({version:$}){return st1(Un6,{flexDirection:"column",marginTop:1,children:[C90.map((Z,X)=>Fn6(at1,{color:_90[X],children:Z},X)),st1(at1,{dimColor:!0,children:[" v",$]})]})}var $o1=O(()=>{Zi()});import{Box as NE,Text as vB}from"ink";import{Spinner as Bn6}from"@inkjs/ui";import{jsx as rY,jsxs as Vb}from"react/jsx-runtime";function Zo1({status:$}){if($==="pending")return rY(Bn6,{label:""});return rY(vB,{color:"green",children:"\u2713"})}function wn6($){return`${$.name}: ${$.port||"...."}`}function Xo1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Vb(NE,{flexDirection:"column",paddingBottom:1,children:[rY(et1,{version:QZ0.version}),rY(NE,{marginBottom:1,children:rY(vB,{dimColor:!0,children:"\u2500".repeat(80)})}),rY(NE,{children:Vb(vB,{dimColor:!0,children:["Home: ",X]})}),Vb(NE,{gap:2,children:[$.map((Y)=>Vb(NE,{gap:1,children:[rY(vB,{children:wn6(Y)}),rY(Zo1,{status:Y.status})]},Y.name)),Vb(NE,{gap:1,children:[rY(vB,{children:"Migrations"}),rY(Zo1,{status:Z})]})]}),rY(NE,{children:Q?Vb(vB,{children:["Open in browser: ",rY(vB,{color:"cyan",children:Q})]}):rY(vB,{dimColor:!0,children:"Starting..."})})]})}var Qo1=O(()=>{Zi0();$o1()});import{Box as On6,Text as Di}from"ink";import{jsx as Xi0,jsxs as Qi0}from"react/jsx-runtime";function Ln6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Yo1({logs:$}){return Xi0(On6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Xi0(Di,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Qi0(Di,{children:[Qi0(Di,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Xi0(Di,{color:Ln6(Z.status),children:Z.status}),Qi0(Di,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Go1=()=>{};var Yi0={};w0(Yi0,{App:()=>zn6});import{Box as Dn6}from"ink";import{useSyncExternalStore as En6}from"react";import{jsx as Jo1,jsxs as jn6}from"react/jsx-runtime";function zn6({home:$}){let Z=En6(am0,rm0);return jn6(Dn6,{flexDirection:"column",children:[Jo1(Xo1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Jo1(Yo1,{logs:Z.logs})]})}var Gi0=O(()=>{Qo1();Go1();HE()});var SJ="thread-gate",dN="decopilot-hosted-harness",H3="automations",xB="background-tools",UE="task-board-github-reads";var Ko1="7";function Wo1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Ko1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Ho1=()=>{};function Pn6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Ji0($,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 No1(){let $=Pn6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Ji0($,"--cpu-prof-dir")??process.cwd(),name:Ji0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Ji0($,"--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 Uo1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=YE();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(()=>{}),YZ0=setInterval(()=>void Z().catch(()=>{}),$),YZ0.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(YZ0)clearInterval(YZ0)}}var YZ0;var Fo1=()=>{};import*as An6 from"bun:jsc";function Bo1(){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{Tn6()}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=Rn6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((w)=>w.sourceURL&&!/Unknown Executable/.test(w.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(B,(W.get(B)??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 Tn6,Rn6;var wo1=O(()=>{({startSamplingProfiler:Tn6,samplingProfilerStackTraces:Rn6}=An6)});function Oo1(){No1();let $=[Uo1(),Bi1(),Bo1()];return()=>{for(let Z of $)Z()}}var Lo1=O(()=>{Kc0();Fo1();wo1()});var FE=_((Do1)=>{Object.defineProperty(Do1,"__esModule",{value:!0});Do1.RepublishHeaders=Do1.DirectMsgHeaders=Do1.JsHeaders=Do1.AdvisoryKind=void 0;Do1.isOrderedPushConsumerOptions=In6;Do1.isPullConsumer=qn6;Do1.isPushConsumer=Mn6;Do1.isBoundPushConsumerOptions=Vn6;function In6($){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 qn6($){return $.isPullConsumer()}function Mn6($){return $.isPushConsumer()}function Vn6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Do1.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"};Do1.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"};Do1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Do1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var aY=_((zo1)=>{Object.defineProperty(zo1,"__esModule",{value:!0});zo1.TD=zo1.TE=zo1.Empty=void 0;zo1.encode=yn6;zo1.decode=gn6;zo1.Empty=new Uint8Array(0);zo1.TE=new TextEncoder;zo1.TD=new TextDecoder;function bn6(...$){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 yn6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(zo1.TE.encode($[X]));if(Z.length===0)return zo1.Empty;if(Z.length===1)return Z[0];return bn6(...Z)}function gn6($){if(!$||$.length===0)return"";return zo1.TD.decode($)}});var sY=_((Ao1)=>{Object.defineProperty(Ao1,"__esModule",{value:!0});Ao1.errors=Ao1.PermissionViolationError=Ao1.NoRespondersError=Ao1.TimeoutError=Ao1.RequestError=Ao1.ProtocolError=Ao1.ConnectionError=Ao1.DrainingConnectionError=Ao1.ClosedConnectionError=Ao1.AuthorizationError=Ao1.UserAuthenticationExpiredError=Ao1.InvalidOperationError=Ao1.InvalidArgumentError=Ao1.InvalidSubjectError=void 0;class Wi0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Ao1.InvalidSubjectError=Wi0;class GZ0 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 GZ0(`${$} ${Z}`,X)}}Ao1.InvalidArgumentError=GZ0;class Hi0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Ao1.InvalidOperationError=Hi0;class JZ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new JZ0($);return null}}Ao1.UserAuthenticationExpiredError=JZ0;class KZ0 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 KZ0($);return null}}Ao1.AuthorizationError=KZ0;class Ni0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Ao1.ClosedConnectionError=Ni0;class Ui0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Ao1.DrainingConnectionError=Ui0;class Fi0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Ao1.ConnectionError=Fi0;class Bi0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Ao1.ProtocolError=Bi0;class wi0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof WZ0}}Ao1.RequestError=wi0;class Oi0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Ao1.TimeoutError=Oi0;class WZ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Ao1.NoRespondersError=WZ0;class HZ0 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 HZ0($,X,Q,Y)}}Ao1.PermissionViolationError=HZ0;Ao1.errors={AuthorizationError:KZ0,ClosedConnectionError:Ni0,ConnectionError:Fi0,DrainingConnectionError:Ui0,InvalidArgumentError:GZ0,InvalidOperationError:Hi0,InvalidSubjectError:Wi0,NoRespondersError:WZ0,PermissionViolationError:HZ0,ProtocolError:Bi0,RequestError:wi0,TimeoutError:Oi0,UserAuthenticationExpiredError:JZ0}});var CJ=_((Mo1)=>{Object.defineProperty(Mo1,"__esModule",{value:!0});Mo1.SimpleMutex=Mo1.Perf=void 0;Mo1.extend=Zp6;Mo1.render=Xp6;Mo1.timeout=Qp6;Mo1.delay=Yp6;Mo1.deadline=Gp6;Mo1.deferred=Di0;Mo1.debugDeferred=Jp6;Mo1.shuffle=Kp6;Mo1.collect=Wp6;Mo1.jitter=qo1;Mo1.backoff=Hp6;Mo1.nanos=Np6;Mo1.millis=Up6;Mo1.randomToken=wp6;var $p6=aY(),Li0=sY();function Zp6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Xp6($){return $p6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Qp6($,Z=!0){let X=Z?new Li0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Li0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Yp6($=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 Gp6($,Z=1000){let X=Di0(),Q=setTimeout(()=>{X.reject(new Li0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Di0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function Jp6(){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 Kp6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Wp6($){let Z=[];for await(let X of $)Z.push(X);return Z}class Ro1{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})}),$}}Mo1.Perf=Ro1;class Io1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Di0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Mo1.SimpleMutex=Io1;function qo1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Hp6($=[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 qo1(X>Z?$[Z]:$[X])}}}function Np6($){return $*1e6}function Up6($){return Math.floor($/1e6)}var Fp6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",mN=new Uint8Array(62);for(let $=0;$<62;$++)mN[$]=Fp6.charCodeAt($);var Bp6=218340105584896;function wp6(){let $=Math.floor(Math.random()*Bp6),Z=$%62,X=mN[Z];$=($-Z)/62,Z=$%62;let Q=mN[Z];$=($-Z)/62,Z=$%62;let Y=mN[Z];$=($-Z)/62,Z=$%62;let G=mN[Z];$=($-Z)/62,Z=$%62;let J=mN[Z];$=($-Z)/62,Z=$%62;let K=mN[Z];$=($-Z)/62,Z=$%62;let W=mN[Z];$=($-Z)/62;let H=mN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var fo1=_((vo1)=>{Object.defineProperty(vo1,"__esModule",{value:!0});vo1.nuid=vo1.NuidImpl=void 0;var Sp6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",fB=62,UZ0=12,Co1=10,ko1=33,Cp6=333,So1=UZ0+Co1,zi0=new Uint8Array(fB);for(let $=0;$<fB;$++)zi0[$]=Sp6.charCodeAt($);var NZ0=4294967296,_o1=BigInt(fB)**BigInt(Co1),Ei=Number(_o1/(1n<<32n)),Ei0=Number(_o1%(1n<<32n));function _p6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function vp6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else _p6($)}class ji0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(So1),this.cbuf=new Uint8Array(UZ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Ei+1)),this.seqLo=Math.floor(Math.random()*NZ0);while($++<8&&this.seqHi===Ei&&this.seqLo>=Ei0);if(this.seqHi===Ei&&this.seqLo>=Ei0)this.seqLo=0;this.inc=Math.random()*(Cp6-ko1)+ko1|0}setPre(){vp6(this.cbuf);for(let $=0;$<UZ0;$++)this.buf[$]=zi0[this.cbuf[$]%fB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=So1-1;X>=UZ0;X--){let Q=Math.floor($/fB),G=($-Q*fB)*NZ0+Z,J=Math.floor(G/fB),K=G-J*fB;this.buf[X]=zi0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=NZ0)this.seqLo-=NZ0,this.seqHi+=1;if(this.seqHi>Ei||this.seqHi===Ei&&this.seqLo>=Ei0)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()}}vo1.NuidImpl=ji0;vo1.nuid=new ji0});var ho1=_((yo1)=>{Object.defineProperty(yo1,"__esModule",{value:!0});yo1.nuid=yo1.Nuid=void 0;var bo1=fo1();yo1.Nuid=bo1.NuidImpl;yo1.nuid=bo1.nuid});var BZ0=_((FZ0)=>{Object.defineProperty(FZ0,"__esModule",{value:!0});FZ0.nuid=FZ0.Nuid=void 0;var uo1=ho1();Object.defineProperty(FZ0,"Nuid",{enumerable:!0,get:function(){return uo1.Nuid}});Object.defineProperty(FZ0,"nuid",{enumerable:!0,get:function(){return uo1.nuid}})});var bB=_((co1)=>{Object.defineProperty(co1,"__esModule",{value:!0});co1.DEFAULT_HOST=co1.DEFAULT_PORT=co1.Match=void 0;co1.syncIterator=hp6;co1.createInbox=up6;var yp6=BZ0(),gp6=sY();co1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function hp6($){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 up6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw gp6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${yp6.nuid.next()}`}co1.DEFAULT_PORT=4222;co1.DEFAULT_HOST="127.0.0.1"});var zi=_((io1)=>{Object.defineProperty(io1,"__esModule",{value:!0});io1.DataBuffer=void 0;var do1=aY();class mo1{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 do1.TE.encode($)}static toAscii($){return do1.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}}io1.DataBuffer=mo1});var BE=_((to1)=>{Object.defineProperty(to1,"__esModule",{value:!0});to1.LF=to1.CR=to1.CRLF=to1.CR_LF_LEN=to1.CR_LF=void 0;to1.setTransportFactory=tp6;to1.defaultPort=op6;to1.getUrlParseFn=rp6;to1.newTransport=ap6;to1.getResolveFn=sp6;to1.protoLen=po1;to1.extractProtocolMessage=ep6;var ip6=aY(),np6=bB(),pp6=zi(),eY;function tp6($){eY=$}function op6(){return eY!==void 0&&eY.defaultPort!==void 0?eY.defaultPort:np6.DEFAULT_PORT}function rp6(){return eY!==void 0&&eY.urlParseFn?eY.urlParseFn:void 0}function ap6(){if(!eY||typeof eY.factory!=="function")throw Error("transport fn is not set");return eY.factory()}function sp6(){return eY!==void 0&&eY.dnsResolveFn?eY.dnsResolveFn:void 0}to1.CR_LF=`\r
1336
1336
  `;to1.CR_LF_LEN=to1.CR_LF.length;to1.CRLF=pp6.DataBuffer.fromAscii(to1.CR_LF);to1.CR=new Uint8Array(to1.CRLF)[0];to1.LF=new Uint8Array(to1.CRLF)[1];function po1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===to1.CR&&$[X]===to1.LF)return X+1}return 0}function ep6($){let Z=po1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return ip6.TD.decode(Q)}return""}});var Ii0=_((Xr1)=>{Object.defineProperty(Xr1,"__esModule",{value:!0});Xr1.ipV4=eo1;Xr1.isIP=Nt6;Xr1.parseIP=$r1;var ji=4,wE=16,wZ0=48,so1=57,ro1=65,Wt6=70,ao1=97,Ht6=102,Ri0=16777215;function eo1($,Z,X,Q){let Y=new Uint8Array(wE);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 Nt6($){return $r1($)!==void 0}function $r1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return Zr1($);case":":return Ut6($)}return}function Zr1($){let Z=new Uint8Array(ji);for(let X=0;X<ji;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=Ft6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return eo1(Z[0],Z[1],Z[2],Z[3])}function Ut6($){let Z=new Uint8Array(wE),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<wE){let{n:Y,c:G,ok:J}=Bt6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=wE-ji)return;if(Q+ji>wE)return;let K=Zr1($);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+=ji;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<wE){if(X<0)return;let Y=wE-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 Ft6($){let Z=0,X=0;for(Z=0;Z<$.length&&wZ0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=so1;Z++)if(X=X*10+($.charCodeAt(Z)-wZ0),X>=Ri0)return{n:Ri0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function Bt6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(wZ0<=$.charCodeAt(X)&&$.charCodeAt(X)<=so1)Z*=16,Z+=$.charCodeAt(X)-wZ0;else if(ao1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Ht6)Z*=16,Z+=$.charCodeAt(X)-ao1+10;else if(ro1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Wt6)Z*=16,Z+=$.charCodeAt(X)-ro1+10;else break;if(Z>=Ri0)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 Ci0=_((Yr1)=>{Object.defineProperty(Yr1,"__esModule",{value:!0});Yr1.Servers=Yr1.ServerImpl=void 0;Yr1.isIPV4OrHostname=Qr1;Yr1.hostPort=Si0;var qi0=BE(),Mi0=CJ(),Vi0=Ii0(),Dt6=bB(),Et6=sY();function Qr1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function ki0($){return!Qr1($)}function zt6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function Si0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=zt6($),ki0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=ki0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):Dt6.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 kb{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=Si0($);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,Vi0.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}://${ki0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new kb(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Mi0.shuffle)(Z);return this.resolves=Z,Z}}Yr1.ServerImpl=kb;class OZ0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw Et6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,qi0.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}=Si0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new kb(Y))}if(this.randomize)(0,Mi0.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,Vi0.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,qi0.getUrlParseFn)();$=X?X($):$;let Q=new kb($,Z);if((0,Vi0.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 OZ0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return OZ0.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,qi0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new kb(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,Mi0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}Yr1.Servers=OZ0});var LZ0=_((Wr1)=>{Object.defineProperty(Wr1,"__esModule",{value:!0});Wr1.QueuedIteratorImpl=void 0;var _i0=CJ(),Jr1=sY();class Kr1{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,_i0.deferred)(),this.yields=[],this.iterClosed=(0,_i0.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 Jr1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Jr1.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,_i0.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}}Wr1.QueuedIteratorImpl=Kr1});var vi0=_((Fr1)=>{Object.defineProperty(Fr1,"__esModule",{value:!0});Fr1.MuxSubscription=void 0;var Tt6=bB(),Nr1=sY();class Ur1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Tt6.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 Nr1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new Nr1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Fr1.MuxSubscription=Ur1});var xi0=_((Or1)=>{Object.defineProperty(Or1,"__esModule",{value:!0});Or1.Heartbeat=void 0;var Rt6=CJ();class wr1{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,Rt6.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})}}Or1.Heartbeat=wr1});var yi0=_((jr1)=>{Object.defineProperty(jr1,"__esModule",{value:!0});jr1.DenoBuffer=jr1.MAX_SIZE=jr1.AssertionError=void 0;jr1.assert=Er1;jr1.concat=zr1;jr1.append=qt6;jr1.readAll=Mt6;jr1.writeAll=Vt6;var It6=aY();class fi0 extends Error{constructor($){super($);this.name="AssertionError"}}jr1.AssertionError=fi0;function Er1($,Z="Assertion failed."){if(!$)throw new fi0(Z)}var Dr1=32768;jr1.MAX_SIZE=4294967294;function DZ0($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function zr1($,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 qt6($,Z){return zr1($,Uint8Array.of(Z))}class bi0{_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($){Er1($<=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=DZ0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(It6.TE.encode($))}write($){let Z=this._grow($.byteLength);return DZ0($,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)DZ0(this._buf.subarray(this._off),this._buf);else if(Q+$>jr1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,jr1.MAX_SIZE));DZ0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,jr1.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(Dr1);while(!0){let Q=this.capacity-this.length<Dr1,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}}}jr1.DenoBuffer=bi0;function Mt6($){let Z=new bi0;return Z.readFrom($),Z.bytes()}function Vt6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var ui0=_((Ir1)=>{Object.defineProperty(Ir1,"__esModule",{value:!0});Ir1.cc=Ir1.State=Ir1.Parser=Ir1.Kind=void 0;Ir1.describe=ft6;var gi0=yi0(),hi0=aY();Ir1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function ft6($){let Z,X="";switch($.kind){case Ir1.Kind.MSG:Z="MSG";break;case Ir1.Kind.OK:Z="OK";break;case Ir1.Kind.ERR:Z="ERR",X=hi0.TD.decode($.data);break;case Ir1.Kind.PING:Z="PING";break;case Ir1.Kind.PONG:Z="PONG";break;case Ir1.Kind.INFO:Z="INFO",X=hi0.TD.decode($.data)}return`${Z}: ${X}`}function Ar1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var Tr1=48,bt6=57,Sb=67108864;class Rr1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=Ir1.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 Ir1.State.OP_START:switch(X){case Ir1.cc.M:case Ir1.cc.m:this.state=Ir1.State.OP_M,this.hdr=-1,this.ma=Ar1();break;case Ir1.cc.H:case Ir1.cc.h:this.state=Ir1.State.OP_H,this.hdr=0,this.ma=Ar1();break;case Ir1.cc.P:case Ir1.cc.p:this.state=Ir1.State.OP_P;break;case Ir1.cc.PLUS:this.state=Ir1.State.OP_PLUS;break;case Ir1.cc.MINUS:this.state=Ir1.State.OP_MINUS;break;case Ir1.cc.I:case Ir1.cc.i:this.state=Ir1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_H:switch(X){case Ir1.cc.M:case Ir1.cc.m:this.state=Ir1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_M:switch(X){case Ir1.cc.S:case Ir1.cc.s:this.state=Ir1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_MS:switch(X){case Ir1.cc.G:case Ir1.cc.g:this.state=Ir1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_MSG:switch(X){case Ir1.cc.SPACE:case Ir1.cc.TAB:this.state=Ir1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_MSG_SPC:switch(X){case Ir1.cc.SPACE:case Ir1.cc.TAB:continue;default:this.state=Ir1.State.MSG_ARG,this.as=Z}break;case Ir1.State.MSG_ARG:switch(X){case Ir1.cc.CR:this.drop=1;break;case Ir1.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=Ir1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case Ir1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:Ir1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Ir1.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:Ir1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Ir1.State.MSG_END;break;case Ir1.State.MSG_END:switch(X){case Ir1.cc.NL:this.drop=0,this.as=Z+1,this.state=Ir1.State.OP_START;break;default:continue}break;case Ir1.State.OP_PLUS:switch(X){case Ir1.cc.O:case Ir1.cc.o:this.state=Ir1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_PLUS_O:switch(X){case Ir1.cc.K:case Ir1.cc.k:this.state=Ir1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_PLUS_OK:switch(X){case Ir1.cc.NL:this.dispatcher.push({kind:Ir1.Kind.OK}),this.drop=0,this.state=Ir1.State.OP_START;break}break;case Ir1.State.OP_MINUS:switch(X){case Ir1.cc.E:case Ir1.cc.e:this.state=Ir1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_MINUS_E:switch(X){case Ir1.cc.R:case Ir1.cc.r:this.state=Ir1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_MINUS_ER:switch(X){case Ir1.cc.R:case Ir1.cc.r:this.state=Ir1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_MINUS_ERR:switch(X){case Ir1.cc.SPACE:case Ir1.cc.TAB:this.state=Ir1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_MINUS_ERR_SPC:switch(X){case Ir1.cc.SPACE:case Ir1.cc.TAB:continue;default:this.state=Ir1.State.MINUS_ERR_ARG,this.as=Z}break;case Ir1.State.MINUS_ERR_ARG:switch(X){case Ir1.cc.CR:this.drop=1;break;case Ir1.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:Ir1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=Ir1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case Ir1.State.OP_P:switch(X){case Ir1.cc.I:case Ir1.cc.i:this.state=Ir1.State.OP_PI;break;case Ir1.cc.O:case Ir1.cc.o:this.state=Ir1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_PO:switch(X){case Ir1.cc.N:case Ir1.cc.n:this.state=Ir1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_PON:switch(X){case Ir1.cc.G:case Ir1.cc.g:this.state=Ir1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_PONG:switch(X){case Ir1.cc.NL:this.dispatcher.push({kind:Ir1.Kind.PONG}),this.drop=0,this.state=Ir1.State.OP_START;break}break;case Ir1.State.OP_PI:switch(X){case Ir1.cc.N:case Ir1.cc.n:this.state=Ir1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_PIN:switch(X){case Ir1.cc.G:case Ir1.cc.g:this.state=Ir1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_PING:switch(X){case Ir1.cc.NL:this.dispatcher.push({kind:Ir1.Kind.PING}),this.drop=0,this.state=Ir1.State.OP_START;break}break;case Ir1.State.OP_I:switch(X){case Ir1.cc.N:case Ir1.cc.n:this.state=Ir1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_IN:switch(X){case Ir1.cc.F:case Ir1.cc.f:this.state=Ir1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_INF:switch(X){case Ir1.cc.O:case Ir1.cc.o:this.state=Ir1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_INFO:switch(X){case Ir1.cc.SPACE:case Ir1.cc.TAB:this.state=Ir1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case Ir1.State.OP_INFO_SPC:switch(X){case Ir1.cc.SPACE:case Ir1.cc.TAB:continue;default:this.state=Ir1.State.INFO_ARG,this.as=Z}break;case Ir1.State.INFO_ARG:switch(X){case Ir1.cc.CR:this.drop=1;break;case Ir1.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:Ir1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=Ir1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===Ir1.State.MSG_ARG||this.state===Ir1.State.MINUS_ERR_ARG||this.state===Ir1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new gi0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===Ir1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new gi0.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 gi0.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 Ir1.cc.SPACE:case Ir1.cc.TAB:case Ir1.cc.CR:case Ir1.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],Sb);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],Sb);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}: ${hi0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case Ir1.cc.SPACE:case Ir1.cc.TAB:case Ir1.cc.CR:case Ir1.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],Sb),this.ma.size=this.protoParseInt(Z[3],Sb);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],Sb),this.ma.size=this.protoParseInt(Z[4],Sb);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]<Tr1||$[Q]>bt6)return-1;X=X*10+($[Q]-Tr1)}return Z!==void 0&&X>Z?-1:X}}Ir1.Parser=Rr1;Ir1.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};Ir1.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 jZ0=_((Mr1)=>{Object.defineProperty(Mr1,"__esModule",{value:!0});Mr1.MsgHdrsImpl=void 0;Mr1.canonicalMIMEHeaderKey=li0;Mr1.headers=ht6;var qr1=aY(),_J=bB(),zZ0=sY();function li0($){let N=!0,U=Array($.length);for(let F=0;F<$.length;F++){let B=$.charCodeAt(F);if(B===58||B<33||B>126)throw zZ0.InvalidArgumentError.format("header",`'${$[F]}' is not a valid character in a header name`);if(N&&97<=B&&B<=122)B-=32;else if(!N&&65<=B&&B<=90)B+=32;U[F]=B,N=B==45}return String.fromCharCode(...U)}function ht6($=0,Z=""){if($===0&&Z!=="")throw zZ0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw zZ0.InvalidArgumentError.format("description","is required");return new Cb($,Z)}var ci0="NATS/1.0";class Cb{_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 Cb,Q=qr1.TD.decode($).split(`\r
1337
1337
  `),Y=Q[0];if(Y!==ci0){let G=Y.replace(ci0,"").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 $=ci0;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
1338
1338
  ${Z}: ${X[Q]}`;return`${$}\r
@@ -4037,7 +4037,7 @@ Do NOT require review (requiresReview = false) when the changes are low-risk, su
4037
4037
 
4038
4038
  When unsure between the two, lean toward NOT requiring review for small frontend-only diffs, and toward requiring it for anything backend or large.
4039
4039
 
4040
- Respond with the structured verdict and a short reason.`,j56;var A56=O(()=>{l4();lO();qU1();ev$=MU1.object({requiresReview:MU1.boolean().describe("true if the changes should go through pull-request review"),reason:MU1.string().describe("One short sentence explaining the decision (max ~120 chars)")});j56={requiresReview:!1,reason:""}});function T56(){return process.env.GITHUB_API_BASE_URL??"https://api.github.com"}function R56($,Z){return $==="GET"&&!Z.includes("/git/blobs/")&&!Z.includes("/git/trees/")&&!Z.includes("/tarball/")}function I56($){let Z=Il.get($);if(!Z)return;Il.delete($),VU1-=Z.bytes}function Gx$($,Z,X){let Q;try{Q=JSON.stringify(X)?.length??0}catch{return}if(I56($),Q>Yx$)return;Il.set($,{etag:Z,body:X,bytes:Q}),VU1+=Q;while(VU1>Qx$||Il.size>Xx$){let Y=Il.keys().next().value;if(Y===void 0)break;I56(Y)}}function q56($){let{owner:Z,repo:X,accessToken:Q}=$,Y=`/repos/${Z}/${X}`,G=null;async function J(K,W,H,N){let U=`${T56()}${W}`,F=R56(K,W)?Il.get(U):void 0,B=await fetch(U,{method:K,headers:{Accept:"application/vnd.github+json","User-Agent":"studio-decofile",Authorization:`token ${Q}`,...F?{"If-None-Match":F.etag}:{},...H!==void 0?{"content-type":"application/json"}:{}},body:H!==void 0?JSON.stringify(H):void 0,signal:AbortSignal.timeout(15000)});if(F&&B.status===304)return{status:200,json:F.body};if(!B.ok&&!N?.allow?.includes(B.status)){let L=await B.text().catch(()=>""),D=L;try{D=JSON.parse(L).message??L}catch{}throw new i$(B.status,K,W,D)}let w=B.status===204?void 0:await B.json();if(B.status===200&&R56(K,W)){let L=B.headers.get("etag");if(L)Gx$(U,L,w)}return{status:B.status,json:w}}return{owner:Z,repo:X,async getDefaultBranch(){if(G)return G;let{json:K}=await J("GET",Y);return G=K.default_branch,G},async getHeadSha(K){let{json:W}=await J("GET",`${Y}/git/ref/heads/${Dx(K)}`);return W.object.sha},async getTarballStream(K){let W=`${Y}/tarball/${Dx(K)}`,H=await fetch(`${T56()}${W}`,{headers:{"User-Agent":"studio-decofile",Authorization:`token ${Q}`},signal:AbortSignal.timeout(60000)});if(!H.ok){let N=await H.text().catch(()=>"");throw new i$(H.status,"GET",W,N.slice(0,300))}if(!H.body)throw new i$(502,"GET",W,"tarball had no body");return H.body},async getCommitTreeSha(K){let{json:W}=await J("GET",`${Y}/git/commits/${K}`);return W.tree.sha},async getTreeRecursive(K){let{json:W}=await J("GET",`${Y}/git/trees/${K}?recursive=1`);if(W.truncated)throw new i$(502,"GET",`${Y}/git/trees/${K}`,"tree listing truncated by GitHub; repo too large for recursive read");return W.tree},async getBlobText(K){let{json:W}=await J("GET",`${Y}/git/blobs/${K}`);if(W.encoding!=="base64")throw new i$(502,"GET",`${Y}/git/blobs/${K}`,`unexpected blob encoding ${W.encoding}`);return Buffer.from(W.content,"base64").toString("utf-8")},async createBlob(K){let{json:W}=await J("POST",`${Y}/git/blobs`,{content:K,encoding:"utf-8"});return W.sha},async createTree(K,W){let{json:H}=await J("POST",`${Y}/git/trees`,{base_tree:K,tree:W});return H.sha},async createCommit({message:K,treeSha:W,parentShas:H}){let{json:N}=await J("POST",`${Y}/git/commits`,{message:K,tree:W,parents:H});return N.sha},async updateRef(K,W){await J("PATCH",`${Y}/git/refs/heads/${Dx(K)}`,{sha:W,force:!1})},async createRef(K,W){await J("POST",`${Y}/git/refs`,{ref:`refs/heads/${K}`,sha:W})},async mergeBranch(K,W,H){let{status:N,json:U}=await J("POST",`${Y}/merges`,{base:K,head:W,commit_message:H},{allow:[204]});return N===204?null:U?.sha??null},async createPullRequest({base:K,head:W,title:H}){let{json:N}=await J("POST",`${Y}/pulls`,{base:K,head:W,title:H});return{number:N.number,html_url:N.html_url}},async findOpenPullRequest(K,W){let{json:H}=await J("GET",`${Y}/pulls?state=open&base=${encodeURIComponent(K)}&head=${encodeURIComponent(`${Z}:${W}`)}`),N=H[0];return N?{number:N.number,html_url:N.html_url}:null},async compare(K,W){let{json:H}=await J("GET",`${Y}/compare/${Dx(K)}...${Dx(W)}`);return{aheadBy:H.ahead_by,behindBy:H.behind_by}},async compareDetailed(K,W){let{json:H}=await J("GET",`${Y}/compare/${Dx(K)}...${Dx(W)}`);return{aheadBy:H.ahead_by,behindBy:H.behind_by,mergeBaseSha:H.merge_base_commit.sha,files:(H.files??[]).map((N)=>({filename:N.filename,status:N.status,sha:N.sha,...N.previous_filename?{previousFilename:N.previous_filename}:{}}))}}}}function Dx($){return $.split("/").map(encodeURIComponent).join("/")}var Xx$=512,Qx$=8388608,Yx$=262144,Il,VU1=0,i$;var Ex=O(()=>{Il=new Map;i$=class i$ extends Error{status;method;path;constructor($,Z,X,Q){super(`GitHub ${Z} ${X} failed (${$}): ${Q}`);this.status=$;this.method=Z;this.path=X;this.name="GitHubApiError"}}});async function TM0($,Z,X){if(!X.connectionId)throw new i$(401,"AUTH","connection","Project's GitHub connection is missing \u2014 reconnect GitHub");let Q=await $.storage.connections.findById(X.connectionId,Z);if(!Q)throw new i$(401,"AUTH","connection","Project's GitHub connection is missing \u2014 reconnect GitHub");let Y=await Jx$($,Q);if(!Y)throw new i$(401,"AUTH","connection",eZ);return q56({owner:X.owner,repo:X.name,accessToken:Y})}async function Jx$($,Z){if(y5(Z)?.sourceConnectionId)return Ah($,Z);return(await jG({connectionId:Z.id,connectionUrl:Z.connection_url,tokenStorage:new u$($.db,$.vault)})).accessToken}var kU1=O(()=>{eQ();e30();zK();BG();Ex()});function Kx$($){if(!$||$.includes("\\")||$.includes("..")||$.includes("\x00"))return!0;try{let Z=decodeURIComponent($);if(Z.includes("\\")||Z.includes("..")||Z.includes("\x00"))return!0;if(Z!==$&&Z.includes("/")){let X=($.match(/\//g)??[]).length;if((Z.match(/\//g)??[]).length>X)return!0}return!1}catch{return!0}}function RM0($){if(Kx$($))throw Error(`Invalid block key: ${$||"(empty)"}`)}function ql($){let Z=$;for(;;){let X;try{X=decodeURIComponent(Z)}catch{return Z}if(X===Z)return Z;Z=X}}function SU1($){return RM0($),encodeURIComponent($)}function f00($){let Z=$.map((G)=>({file:G,name:`${G.stem}.json`})).sort((G,J)=>G.name<J.name?-1:G.name>J.name?1:0),X=[],Q="{",Y=!0;for(let{file:G}of Z){let J=G.content.trim();if(J.length===0)continue;try{JSON.parse(J)}catch(K){X.push({key:ql(G.stem),stem:G.stem,error:K instanceof Error?K.message:String(K)});continue}if(!Y)Q+=",";Y=!1,Q+=`${JSON.stringify(ql(G.stem))}:${J}`}return{decofile:`${Q}}`,skipped:X}}var M56=()=>{};var IM0=O(()=>{M56()});function Wx$($){return $.startsWith("merged/")?"merged":"blobs"}function CU1($,Z){let X=new Map;for(let G of $){let J=X.get(G.path);if(!J||G.mtimeMs>=J.mtimeMs)X.set(G.path,{bytes:G.bytes,mtimeMs:G.mtimeMs})}let Q=[...X.entries()].sort((G,J)=>G[1].mtimeMs-J[1].mtimeMs),Y={config:Z,entries:new Map,totalBytes:0,areaBytes:{blobs:0,merged:0}};for(let[G,{bytes:J}]of Q){let K=Wx$(G);Y.entries.set(G,{bytes:J,area:K}),Y.totalBytes+=J,Y.areaBytes[K]+=J}return Y}function V56($,Z){let X=$.entries.get(Z);if(!X)return;$.entries.delete(Z),$.entries.set(Z,X)}function Ml($,Z){let X=$.entries.get(Z);if(!X)return;$.entries.delete(Z),$.totalBytes-=X.bytes,$.areaBytes[X.area]-=X.bytes}function k56($,Z){let{path:X,bytes:Q,area:Y}=Z,{config:G}=$;if(!Number.isFinite(Q)||Q<0||Q>G.maxEntryBytes[Y]||Q>G.maxTotalBytes||Y==="merged"&&Q>G.maxMergedBytes)return{admitted:!1,evict:[]};let K=$.entries.get(X),W=$.totalBytes-(K?.bytes??0),H=$.areaBytes.merged-(K?.area==="merged"?K.bytes:0),N=[],U=new Set;if(Y==="merged")for(let[F,B]of $.entries){if(H+Q<=G.maxMergedBytes)break;if(F===X||B.area!=="merged")continue;N.push(F),U.add(F),H-=B.bytes,W-=B.bytes}for(let[F,B]of $.entries){if(W+Q<=G.maxTotalBytes)break;if(F===X||U.has(F))continue;N.push(F),U.add(F),W-=B.bytes}for(let F of N)Ml($,F);return Ml($,X),$.entries.set(X,{bytes:Q,area:Y}),$.totalBytes+=Q,$.areaBytes[Y]+=Q,{admitted:!0,evict:N}}function b00($){if($==="")throw TypeError("cache path segment must not be empty");let Z=$.toLowerCase(),X="";for(let Q of new TextEncoder().encode(Z)){let Y=String.fromCharCode(Q);X+=/[a-z0-9._-]/.test(Y)?Y:`%${Q.toString(16).padStart(2,"0")}`}if(X==="."||X==="..")X=X.replaceAll(".","%2e");return X}function _U1($){return/^[0-9a-f]{40}$/.test($)}import{randomUUID as f56}from"crypto";import{mkdir as y00,readdir as Hx$,readFile as Nx$,rename as Ux$,rm as b56,stat as y56,statfs as Fx$,unlink as Bx$,writeFile as wx$}from"fs/promises";import{tmpdir as Ox$}from"os";import{dirname as Lx$,join as d7}from"path";function Vl($,Z){let X=Bun.env[$];if(X===void 0||X==="")return Z;let Q=Number(X);return Number.isFinite(Q)&&Q>=0?Math.floor(Q):Z}function zx$(){if(qM0)return qM0;let $=Bun.env.FAST_PREVIEW_CACHE_DIR,Z=$===void 0?d7(Ox$(),"studio-fast-preview-cache"):$;return qM0={enabled:Z!=="",root:Z,index:{maxTotalBytes:Vl("FAST_PREVIEW_CACHE_MAX_BYTES",2*S56),maxMergedBytes:Vl("FAST_PREVIEW_CACHE_MERGED_MAX_BYTES",512*MM0),maxEntryBytes:{blobs:Vl("FAST_PREVIEW_CACHE_MAX_BLOB_BYTES",MM0),merged:Vl("FAST_PREVIEW_CACHE_MAX_MERGED_BYTES",32*MM0)}},freeFloorBytes:Vl("FAST_PREVIEW_CACHE_FREE_FLOOR_BYTES",S56),sweepIntervalMs:Vl("FAST_PREVIEW_CACHE_SWEEP_INTERVAL_MS",600000)},qM0}function jx$(){return{hits:{blobs:0,merged:0},misses:{blobs:0,merged:0},evictions:0,errors:0,floorSkips:0,invalidKeySkips:0,admissionRefusals:0}}function Px$(){if(pL)return;pL={hits:x8.createCounter("fast_preview_cache_hits",{description:"Decofile disk cache hits by area",unit:"{reads}"}),misses:x8.createCounter("fast_preview_cache_misses",{description:"Decofile disk cache misses by area",unit:"{reads}"}),evictions:x8.createCounter("fast_preview_cache_evictions",{description:"Decofile disk cache entries evicted",unit:"{entries}"}),errors:x8.createCounter("fast_preview_cache_errors",{description:"Decofile disk cache swallowed errors by operation",unit:"{errors}"}),floorSkips:x8.createCounter("fast_preview_cache_floor_skips",{description:"Decofile disk cache writes skipped by the free-space floor",unit:"{writes}"})},x8.createObservableGauge("fast_preview_cache_bytes",{description:"Decofile disk cache bytes by area",unit:"By"}).addCallback(($)=>{if(!kl)return;$.observe(kl.index.areaBytes.blobs,{area:"blobs"}),$.observe(kl.index.areaBytes.merged,{area:"merged"})}),x8.createObservableGauge("fast_preview_cache_entries",{description:"Decofile disk cache entry count by area",unit:"{entries}"}).addCallback(($)=>{if(!kl)return;let Z={blobs:0,merged:0};for(let X of kl.index.entries.values())Z[X.area]+=1;$.observe(Z.blobs,{area:"blobs"}),$.observe(Z.merged,{area:"merged"})})}function Ax$($){zx.hits[$]+=1,pL?.hits.add(1,{area:$})}function C56($){zx.misses[$]+=1,pL?.misses.add(1,{area:$})}function vU1(){zx.evictions+=1,pL?.evictions.add(1)}function vF($){zx.errors+=1,pL?.errors.add(1,{op:$})}function Tx$($){zx.invalidKeySkips+=1,pL?.errors.add(1,{op:`${$}_invalid_key`})}function xU1(){return _56??=Ix$(),_56}async function Ix$(){let $=zx$();if(!$.enabled)return null;Px$();try{await y00(d7($.root,"blobs"),{recursive:!0}),await y00(d7($.root,"merged"),{recursive:!0}),await y00(d7($.root,"tmp"),{recursive:!0})}catch{return vF("init"),null}let Z=[];try{Z=await g56($.root)}catch{vF("scan"),Z=[]}let X={root:$.root,index:CU1(Z,$.index),cfg:$};return kl=X,Vx$(X),X}async function VM0($){try{return await Hx$($)}catch{return[]}}async function g56($){let Z=[];for(let X of["blobs","merged"]){let Q=d7($,X);for(let Y of await VM0(Q)){let G=d7(Q,Y);for(let J of await VM0(G)){let K=d7(G,J);for(let W of await VM0(K))try{let H=await y56(d7(K,W));if(!H.isFile())continue;Z.push({path:`${X}/${Y}/${J}/${W}`,bytes:H.size,mtimeMs:H.mtimeMs})}catch{}}}}return Z}function h56($,Z,X){if(!_U1(X))return null;try{return`blobs/${b00($)}/${b00(Z)}/${X}`}catch{return null}}function u56($,Z,X){if(!_U1(X))return null;try{return`merged/${b00($)}/${b00(Z)}/${X}.json`}catch{return null}}async function c56($,Z){try{let X=await xU1();if(!X)return null;if(Z===null)return C56($),null;try{let Q=await Nx$(d7(X.root,Z),"utf8");return V56(X.index,Z),Ax$($),Q}catch{return C56($),null}}catch{return vF(`get_${$}`),null}}function l56($,Z,X){return c56("blobs",h56($,Z,X))}function d56($,Z,X){return c56("merged",u56($,Z,X))}async function qx$($){if($.cfg.freeFloorBytes<=0)return!0;try{let Z=await Fx$($.root);return Z.bavail*Z.bsize>=$.cfg.freeFloorBytes}catch{return!0}}async function kM0($){try{await Bx$($)}catch{}}async function Mx$($){try{let Z=$.cfg.index.maxTotalBytes/2;while($.index.totalBytes>Z){let X=$.index.entries.keys().next();if(X.done)break;Ml($.index,X.value),await kM0(d7($.root,X.value)),vU1()}}catch{vF("emergency_evict")}}async function m56($,Z,X,Q){try{let Y=await xU1();if(!Y)return;if(X===null){Tx$(Z);return}if(!await qx$(Y)){zx.floorSkips+=1,pL?.floorSkips.add(1);return}let G=Buffer.byteLength(Q,"utf8"),J=k56(Y.index,{path:X,bytes:G,area:$});if(!J.admitted){zx.admissionRefusals+=1;return}for(let W of J.evict)await kM0(d7(Y.root,W)),vU1();let K=d7(Y.root,"tmp",`stage-${f56()}`);try{await wx$(K,Q,"utf8");let W=d7(Y.root,X);await y00(Lx$(W),{recursive:!0}),await Ux$(K,W)}catch(W){if(Ml(Y.index,X),await kM0(K),vF(Z),W?.code==="ENOSPC")await Mx$(Y)}}catch{vF(Z)}}function SM0($,Z,X,Q){return m56("blobs","put_blob",h56($,Z,X),Q)}function i56($,Z,X,Q){return m56("merged","put_merged",u56($,Z,X),Q)}async function n56(){try{let $=await xU1();if(!$)return null;let Z=d7($.root,"tmp",f56());return await y00(Z,{recursive:!0}),Z}catch{return vF("make_scratch"),null}}async function p56($){try{await b56($,{recursive:!0,force:!0})}catch{vF("remove_scratch")}}function Vx$($){let Z=$.cfg.sweepIntervalMs;if(Z<=0)return;v56=new AbortController,z8(Math.random()*Z,{signal:v56.signal}).then(()=>{x56($);let X=setInterval(()=>void x56($),Z);X.unref?.(),Rx$=X}).catch(()=>{})}async function x56($){try{let Z=CU1(await g56($.root),$.cfg.index),X=$.cfg.index;for(let[G,J]of Z.entries){let K=Z.totalBytes>X.maxTotalBytes,W=Z.areaBytes.merged>X.maxMergedBytes;if(!K&&!W)break;if(!K&&W&&J.area!=="merged")continue;Ml(Z,G),await kM0(d7($.root,G)),vU1()}$.index=Z;let Q=d7($.root,"tmp"),Y=Date.now();for(let G of await VM0(Q)){let J=d7(Q,G);try{let K=await y56(J);if(Y-K.mtimeMs>Ex$)await b56(J,{recursive:!0,force:!0})}catch{}}}catch{vF("sweep")}}var Dx$=1024,MM0,S56,Ex$=3600000,qM0=null,pL=null,zx,_56=null,kl=null,Rx$=null,v56=null;var t56=O(()=>{t4();o$();MM0=1024*Dx$,S56=1024*MM0;zx=jx$()});function o56(){let $=new Map;return{run(Z,X){let Q=$.get(Z);if(Q)return Q;let Y=Promise.resolve().then(X).finally(()=>{$.delete(Z)});return $.set(Z,Y),Y}}}import{readdir as kx$,stat as Sx$}from"fs/promises";import{join as r56}from"path";function Cx$($,Z,X){let Q=["-xz","--strip-components=1","-C",Z];return $==="gnu"?[...Q,"--wildcards",X]:[...Q,X]}function _x$(){return a56??=(async()=>{try{let $=Bun.spawn(["tar","--version"],{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),Z=await new Response($.stdout).text();return await $.exited,Z.includes("GNU")?"gnu":"bsd"}catch{return"bsd"}})(),a56}async function s56($,Z,X){let Q=X.replace(/^\.\//,"").replace(/^\/+/,"").replace(/\/+$/,"");if(Q===""||Q.split("/").includes(".."))throw new g00(`invalid blocks path prefix: ${X}`);let Y=await _x$(),G=`*/${Q}/*.json`,J=()=>Bun.spawn(["tar",...Cx$(Y,Z,G)],{stdin:$,stdout:"ignore",stderr:"pipe"}),K;try{K=J()}catch(U){throw new g00("failed to spawn tar",{cause:U})}let W=new Response(K.stderr).text().catch(()=>""),H=await K.exited;if(H!==0){let U=(await W).trim().slice(0,500);throw new g00(`tar exited with code ${H}${U?`: ${U}`:""}`)}let N=await vx$(Z,Q);if(N.length===0)throw new g00(`tar extracted no ${G} members into ${Z}`);return N}async function vx$($,Z){let X=r56($,...Z.split("/")),Q;try{Q=await kx$(X)}catch{return[]}let Y=[];for(let G of Q){if(!G.endsWith(".json"))continue;let J=r56(X,G);try{if(!(await Sx$(J)).isFile())continue}catch{continue}Y.push({path:`${Z}/${G}`,diskPath:J})}return Y.sort((G,J)=>G.path.localeCompare(J.path))}var g00,a56=null;var e56=O(()=>{g00=class g00 extends Error{constructor($,Z){super($,Z);this.name="TarExtractError"}}});import{createHash as xx$}from"crypto";import{readFile as fx$}from"fs/promises";async function h00($,Z){try{return await $.getHeadSha(Z)}catch(Q){if(!(Q instanceof i$)||Q.status!==404)throw Q}let X=await $.getHeadSha(await $.getDefaultBranch());try{return await $.createRef(Z,X),X}catch(Q){if(Q instanceof i$&&Q.status===422)return $.getHeadSha(Z);throw Q}}function yx$(){let $=Bun.env.FAST_PREVIEW_COLD_TARBALL_MAX_BYTES;if($===void 0||$==="")return Z96;let Z=Number($);return Number.isFinite(Z)&&Z>=0?Math.floor(Z):Z96}function gx$($){X96??=x8.createCounter("decofile_cold_reads",{description:"Decofile cold snapshot reads by resolution path",unit:"{reads}"}),X96.add(1,{path:$})}function hx$($){Q96??=x8.createCounter("decofile_skipped_blocks",{description:"Decofile blocks dropped from a merge for not being valid JSON",unit:"{blocks}"}),Q96.add($)}async function CM0($,Z,X){let Q=Array($.length),Y=0,G=Array.from({length:Math.min(Z,$.length)},async()=>{for(;;){let J=Y++;if(J>=$.length)return;Q[J]=await X($[J])}});return await Promise.all(G),Q}function _M0($){return $?`${$}/.deco/blocks`:".deco/blocks"}function fU1($,Z){let X=`${_M0(Z)}/`,Q=[];for(let Y of $){if(Y.type!=="blob"||!Y.path.startsWith(X))continue;let G=Y.path.slice(X.length);if(G.includes("/"))continue;if(!G.toLowerCase().endsWith(".json"))continue;Q.push({stem:G.slice(0,-5),sha:Y.sha,path:Y.path,size:Y.size})}return Q}function bU1($,Z){return $.filter((X)=>ql(X.stem)===Z).map((X)=>X.path).sort()}function Y96($,Z,X,Q){return SM0($,Z,X,Q)}function cx$($,Z){return xx$("sha1").update(`${ux$}:${$}:${Z??""}`).digest("hex")}async function G96($,Z,X,Q){let Y=Q?.createBranchIfMissing?await h00($,Z):await $.getHeadSha(Z);return lx$.run(`${$.owner}/${$.repo}@${Y}:${X??""}`,()=>dx$($,Y,X))}async function dx$($,Z,X){let{owner:Q,repo:Y}=$,G=cx$(Z,X),J=await d56(Q,Y,G);if(J!==null)return{sha:Z,decofile:J};let K=await $.getCommitTreeSha(Z),W=await $.getTreeRecursive(K),H=fU1(W,X),N=new Map;if(await CM0(H,$96,async(L)=>{let D=await l56(Q,Y,L.sha);if(D!==null)N.set(L.path,D)}),H.length-N.size>bx$){let L=await mx$($,Z,X,H);if(gx$(L!==null?"tarball":"blobs"),L!==null)for(let[D,E]of L)N.set(D,E)}let F=await CM0(H,$96,async(L)=>{let D=N.get(L.path);if(D!==void 0)return{stem:L.stem,content:D};let E=await $.getBlobText(L.sha);return await SM0(Q,Y,L.sha,E),{stem:L.stem,content:E}}),{decofile:B,skipped:w}=f00(F);if(w.length>0)hx$(w.length),console.warn("decofile read: dropped blocks that were not valid JSON",{repo:`${Q}/${Y}`,sha:Z,packagePath:X,blocks:w.map((L)=>L.key)});return await i56(Q,Y,G,B),{sha:Z,decofile:B}}async function mx$($,Z,X,Q){let Y=`${$.owner}/${$.repo}`,G=yx$(),J=0;for(let W of Q){if(W.size===void 0)return console.warn("decofile cold read: tarball skipped (tree entry missing size; cannot pre-validate)",{repo:Y,sha:Z,path:W.path}),null;J+=W.size}if(J>G)return console.warn("decofile cold read: tarball skipped (blocks over FAST_PREVIEW_COLD_TARBALL_MAX_BYTES)",{repo:Y,sha:Z,aggregateBytes:J,maxBytes:G}),null;let K=await n56();if(K===null)return null;try{let W=await $.getTarballStream(Z),H=await s56(W,K,_M0(X)),N=new Map(Q.map((F)=>[F.path,F.sha])),U=new Map;for(let F of H){let B=N.get(F.path);if(B===void 0)continue;let w=await fx$(F.diskPath,"utf8");await SM0($.owner,$.repo,B,w),U.set(F.path,w)}return U}catch(W){return console.warn("decofile cold read: tarball path failed; falling back to blob fetches",{repo:Y,sha:Z,error:W instanceof Error?W.message:String(W)}),null}finally{await p56(K)}}var $96=12,bx$=50,Z96=134217728,X96=null,Q96=null,ux$="2",lx$;var vM0=O(()=>{IM0();o$();t56();Ex();e56();lx$=o56()});async function xM0($,Z){let X=await $.getDefaultBranch(),Q=await h00($,Z),Y=X===Z?{aheadBy:0,behindBy:0}:await $.compare(X,Z);return{not_added:[],conflicted:[],created:[],deleted:[],modified:[],renamed:[],files:[],staged:[],ahead:0,behind:0,current:Z,tracking:`origin/${Z}`,detached:!1,base:X,aheadOfBase:Y.aheadBy,behindBase:Y.behindBy,headSha:Q,unpushed:0}}async function fM0($,Z,X){let Q=X??await $.getDefaultBranch(),Y=await $.compareDetailed(Q,Z),G=Y.files.slice(0,ix$),J=await $.getCommitTreeSha(Y.mergeBaseSha),K=await $.getTreeRecursive(J),W=new Map(K.filter((N)=>N.type==="blob").map((N)=>[N.path,N.sha])),H=await CM0(G,nx$,async(N)=>{let U=N.previousFilename??N.filename,F=N.status==="added"?void 0:W.get(U),B=F?await $.getBlobText(F):null,w=N.status==="removed"?null:await $.getBlobText(N.sha);return[N.filename,{from:B,to:w}]});return{diffs:Object.fromEntries(H),mergeBaseSha:Y.mergeBaseSha}}async function J96($,Z,X,Q="fail"){try{await $.mergeBranch(Z,X,`chore(decofile): merge ${X} into ${Z}`);return}catch(Y){if(!(Y instanceof i$&&Y.status===409))throw Y;if(Q!=="branch-wins")throw new i$(409,"POST","merges",`Merge conflict updating ${Z} from ${X} \u2014 resolve on GitHub`)}await ox$($,Z,X)}async function ox$($,Z,X){for(let Q=1;;Q++){let Y=await $.getHeadSha(Z),G=await $.getHeadSha(X),{files:J}=await $.compareDetailed(X,Z);if(J.length>=px$)throw new i$(409,"POST","merges",`Too many changed files on ${Z} to auto-merge (${J.length}); resolve on GitHub`);let K=await $.getTreeRecursive(await $.getCommitTreeSha(Y)),W=new Map(K.filter((F)=>F.type==="blob").map((F)=>[F.path,F])),H=[];for(let F of J){let B=W.get(F.filename);if(F.status==="removed"||!B)H.push({path:F.filename,mode:"100644",type:"blob",sha:null});else H.push({path:F.filename,mode:"100644",type:"blob",sha:B.sha});if(F.previousFilename&&F.previousFilename!==F.filename)H.push({path:F.previousFilename,mode:"100644",type:"blob",sha:null})}let N=await $.createTree(await $.getCommitTreeSha(G),H),U=await $.createCommit({message:`chore(decofile): merge ${X} into ${Z} (branch content wins)`,treeSha:N,parentShas:[Y,G]});try{await $.updateRef(Z,U);return}catch(F){if(F instanceof i$&&F.status===422&&Q<tx$)continue;throw F}}}var ix$=200,nx$=12,px$=300,tx$=3;var K96=O(()=>{Ex();vM0()});function ax$($){if(!$||$.includes(".."))return!1;return rx$.test($)}function W96($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!ax$(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function H96($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var rx$;var N96=O(()=>{rx$=/^[\w./@-]+$/});function yU1($){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 u00($,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 U96($,Z,X,Q){if(!Q.connectionId)throw new jx("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new jx(eZ);await AO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(N)=>{let U=N instanceof Error?N.message:eZ;throw new jx(U)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:K}=await TO(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((N)=>{let{code:U,message:F}=SE8(N instanceof Error?N.message:String(N));throw U?new jx(F):N}),W=Rl($),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 uO(H,sx$).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var sx$=10485760,jx;var gU1=O(()=>{zK();AM0();Ir();L61();Th();jx=class jx extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function $f$($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!ex$.test(Z))throw Error(`Invalid branch name: ${$}`)}function Px($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(Xf$)])}function Qf$($,Z,X){let Q=M5($)[Z]?.[X];return!!Q&&Object.keys(YG(Q)).length>0}function Ax($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function c00($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=u00(Z,X);if(!Y)throw new i$(404,"AUTH","repo","Project has no GitHub repository");let G=X0(Q);return TM0(Q,G.id,Y)}function hU1($,Z){if(Z instanceof i$){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,l9)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,l9)}async function w96($){try{let Z=await c00($),X=await xM0(Z,$.get("vmClaim").branch);return $.json(X,200,l9)}catch(Z){return hU1($,Z)}}function yM0($,Z){let Q=(bM0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return bM0.set($,Y),Y.finally(()=>{if(bM0.get($)===Y)bM0.delete($)}),Q}async function W7($,Z,X){if($.get("vmClaim").fastPreview)return $.json({error:"sandbox not found: Fast Preview projects are sandbox-less"},404,l9);let Q=Ax($);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 B=await Q.proxyDaemonRequest(Y,Z,U);if(X?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))B=await Q.proxyDaemonRequest(Y,Z,U);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...l9}})}}let w=await B.text(),L=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?Gf$(w):w,D=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":D,...l9}})};try{if(N){let B=F();return B.catch(()=>{}),await Promise.race([B,new Promise((L,D)=>{if(N.aborted)return D(N.reason);N.addEventListener("abort",()=>D(N.reason),{once:!0})})])}return await F()}catch(B){let w=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${w}`},502)}}function Gf$($){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 gM0($,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){let K=`Daemon error (${G.status})`;try{K=JSON.parse(J).error??K}catch{}throw Error(K)}return JSON.parse(J)}function Jf$($){return O96.includes($)}var ex$,F96=524288,Zf$=65536,Xf$=1e4,B96=2000,Yf$,bM0,l9,O96,L96=()=>{let $=new I1;$.use("/:virtualMcpId/:branch/*",Yf$),$.post("/:virtualMcpId/:branch/write",(X)=>W7(X,"/_sandbox/write",{forwardJsonBody:!0,signal:Px(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>W7(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:Px(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>W7(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:Px(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>W7(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:Px(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>W7(X,"/_sandbox/read",{forwardJsonBody:!0,signal:Px(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>W7(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:Px(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>W7(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:Px(X)})),$.post("/:virtualMcpId/:branch/exec/:script",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return W7(X,`/_sandbox/exec/${encodeURIComponent(Q)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return W7(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>W7(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>W7(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!Jf$(Q))return X.json({error:`step must be one of: ${O96.join(", ")}`},400);if(Q==="start"){let Y=X.get("vmClaim");if(Y.runner){let G=X0(X.var.studioContext),J=uh(Y.virtualMcpMetadata);try{await Cj0({ctx:X.var.studioContext,runner:Y.runner,handle:Y.claimName,orgId:G.id,userId:Y.callerUserId,entries:J})}catch(K){let W=K instanceof Error?K.message:String(K);return X.json({error:`Failed to push env to daemon: ${W}`},502)}}}return W7(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return _F(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return w56(X,{ctx:X.var.studioContext,claimName:Q.claimName,runner:Q.runner,virtualMcpId:Q.virtualMcpId,branch:Q.branch,userId:Q.userId,projectRef:Q.projectRef,virtualMcpMetadata:Q.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return w96(X);return Z(X)});let Z=(X)=>W7(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(B96)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return w96(X);return W7(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(B96)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)try{let Y=await X.req.json().catch(()=>({})),G=await c00(X),J=await fM0(G,Q.branch,Y.base);return X.json(J,200,l9)}catch(Y){return hU1(X,Y)}return W7(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").fastPreview)return X.json({ok:!0},200,l9);let Q=Ax(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),K=X.var.studioContext;return yM0(Y,async()=>{try{await jU1(K,Q,Y);let W=u00(G,J);if(W)await U96(K,Q,Y,W)}catch(W){if(W instanceof jx)return X.json({error:W.message},403,l9);let H=W instanceof Error?W.message:String(W);return X.json({error:H},502,l9)}return W7(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let{claimName:Q,fastPreview:Y}=X.get("vmClaim");if(Y)return X.json({error:"Nothing to discard: Fast Preview projects have no working tree"},400,l9);return yM0(Q,()=>W7(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return yM0(Q.claimName,async()=>{try{let K=await X.req.json().catch(()=>({})),W=await c00(X),H=K.base??await W.getDefaultBranch();return await J96(W,Q.branch,H,K.onConflict==="branch-wins"?"branch-wins":"fail"),X.json({ok:!0},200,l9)}catch(K){return hU1(X,K)}});let Y=Ax(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return yM0(G,async()=>{try{await jU1(J,Y,G)}catch(K){let W=K instanceof Error?K.message:String(K);return X.json({error:W},502,l9)}return W7(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",vZ({maxSize:F96,onError:(X)=>X.json({error:"Payload too large"},413,l9)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=Ax(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:K}=Q,W=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),N=H.status,U=H.diff,F=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,w]=TU1(N)&&F?[N,U]:Y?await Promise.all([gM0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:K}),gM0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:K})]):await(async()=>{let D=await c00(X);return Promise.all([xM0(D,Q.branch),fM0(D,Q.branch)])})(),L=await z56(W,B,w);return X.json(L,200,l9)}catch(H){let N=H instanceof Error?H.message:String(H);if(N==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,l9);return X.json({error:N},502,l9)}}),$.post("/:virtualMcpId/:branch/git/judge-review",vZ({maxSize:F96,onError:(X)=>X.json({error:"Payload too large"},413,l9)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=Ax(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:K}=Q,W=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),N=H.status,U=H.diff,F=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,w]=TU1(N)&&F?[N,U]:Y?await Promise.all([gM0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:K}),gM0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:K})]):await(async()=>{let D=await c00(X);return Promise.all([xM0(D,Q.branch),fM0(D,Q.branch)])})(),L=await P56(W,B,w,typeof H.language==="string"?H.language:void 0);return X.json(L,200,l9)}catch(H){let N=H instanceof Error?H.message:String(H);if(N==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,l9);return X.json({error:N},502,l9)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=Ax(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let K=J.replace(/\/+$/,""),W=yU1(`${K}${G}`),H;try{H=await fetch(W?.url??`${K}${G}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return X.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",vZ({maxSize:Zf$,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=Ax(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G;try{G=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!G)return X.json({error:"Preview not available"},502);let J;try{J=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return X.json({error:"Invalid JSON body"},400);let K=W96(J);if(!K)return X.json({error:"Invalid or missing __resolveType"},400);let W=H96(G,K.resolveType),H=yU1(W),N;try{N=await fetch(H?.url??W,{method:"POST",headers:{"content-type":"application/json",...H?{host:H.hostHeader}:{}},body:JSON.stringify(K.payload),signal:AbortSignal.timeout(30000)})}catch{return X.json({error:"Preview unreachable"},502)}let U;try{U=await N.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(U,{status:N.status,headers:{"content-type":N.headers.get("content-type")??"application/json"}})}),$};var D96=O(()=>{d6();lL();Tl();zU1();vU();F56();IK();wQ();j6();W91();bO();B56();O56();b$1();Tr();qU1();A56();kU1();Ex();K96();N96();gU1();ex$=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Yf$=PM0(async($,Z)=>{let X=$.var.studioContext;try{K0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=z1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=X0(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{$f$(J)}catch(B){let w=B instanceof Error?B.message:String(B);return $.json({error:w},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=mo({orgId:Y.id,virtualMcpId:G,branch:J}),H=await dU(X,J,Q),N=U56({userId:H,projectRef:W}),U=K.metadata??null;if(tk8(U).fastPreviewCapability&&!Qf$(U,H,J))return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:H,projectRef:W,virtualMcpMetadata:U,connectionIds:K.connections?.map((B)=>B.connection_id)??[],fastPreview:!0}),Z();let F;try{F=(await jQ(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((B)=>B.connection_id)??[]}),Z()});bM0=new Map;l9={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};O96=["clone","install","start"]});function E96($,Z,X){let Q=uU1.get($);if(!Q)Q={pending:null,running:!1},uU1.set($,Q);if(!Q.pending)Q.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=Q.pending;Y.deps=Z;for(let[J,K]of Object.entries(X.set??{}))Y.set.set(J,K),Y.del.delete(J);for(let J of X.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,K)=>{Y.resolvers.push(J),Y.rejecters.push(K)});if(!Q.running)Wf$($,Q);return G}async function Wf$($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await Hf$(X);for(let Y of X.resolvers)Y(Q)}catch(Q){for(let Y of X.rejecters)Y(Q)}}}finally{if(Z.running=!1,!Z.pending)uU1.delete($)}}async function Hf$($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await h00(Z,X),J=await Z.getCommitTreeSha(G),K=await Z.getTreeRecursive(J),W=fU1(K,Q),H=[],N=new Map(W.map((w)=>[w.path,{stem:w.stem,sha:w.sha}]));for(let[w,L]of $.set){let D=bU1(W,w),E=`${JSON.stringify(L,null,2)}
4040
+ Respond with the structured verdict and a short reason.`,j56;var A56=O(()=>{l4();lO();qU1();ev$=MU1.object({requiresReview:MU1.boolean().describe("true if the changes should go through pull-request review"),reason:MU1.string().describe("One short sentence explaining the decision (max ~120 chars)")});j56={requiresReview:!1,reason:""}});function T56(){return process.env.GITHUB_API_BASE_URL??"https://api.github.com"}function R56($,Z){return $==="GET"&&!Z.includes("/git/blobs/")&&!Z.includes("/git/trees/")&&!Z.includes("/tarball/")}function I56($){let Z=Il.get($);if(!Z)return;Il.delete($),VU1-=Z.bytes}function Gx$($,Z,X){let Q;try{Q=JSON.stringify(X)?.length??0}catch{return}if(I56($),Q>Yx$)return;Il.set($,{etag:Z,body:X,bytes:Q}),VU1+=Q;while(VU1>Qx$||Il.size>Xx$){let Y=Il.keys().next().value;if(Y===void 0)break;I56(Y)}}function q56($){let{owner:Z,repo:X,accessToken:Q}=$,Y=`/repos/${Z}/${X}`,G=null;async function J(K,W,H,N){let U=`${T56()}${W}`,F=R56(K,W)?Il.get(U):void 0,B=await fetch(U,{method:K,headers:{Accept:"application/vnd.github+json","User-Agent":"studio-decofile",Authorization:`token ${Q}`,...F?{"If-None-Match":F.etag}:{},...H!==void 0?{"content-type":"application/json"}:{}},body:H!==void 0?JSON.stringify(H):void 0,signal:AbortSignal.timeout(15000)});if(F&&B.status===304)return{status:200,json:F.body};if(!B.ok&&!N?.allow?.includes(B.status)){let L=await B.text().catch(()=>""),D=L;try{D=JSON.parse(L).message??L}catch{}throw new i$(B.status,K,W,D)}let w=B.status===204?void 0:await B.json();if(B.status===200&&R56(K,W)){let L=B.headers.get("etag");if(L)Gx$(U,L,w)}return{status:B.status,json:w}}return{owner:Z,repo:X,async getDefaultBranch(){if(G)return G;let{json:K}=await J("GET",Y);return G=K.default_branch,G},async getHeadSha(K){let{json:W}=await J("GET",`${Y}/git/ref/heads/${Dx(K)}`);return W.object.sha},async getTarballStream(K){let W=`${Y}/tarball/${Dx(K)}`,H=await fetch(`${T56()}${W}`,{headers:{"User-Agent":"studio-decofile",Authorization:`token ${Q}`},signal:AbortSignal.timeout(60000)});if(!H.ok){let N=await H.text().catch(()=>"");throw new i$(H.status,"GET",W,N.slice(0,300))}if(!H.body)throw new i$(502,"GET",W,"tarball had no body");return H.body},async getCommitTreeSha(K){let{json:W}=await J("GET",`${Y}/git/commits/${K}`);return W.tree.sha},async getTreeRecursive(K){let{json:W}=await J("GET",`${Y}/git/trees/${K}?recursive=1`);if(W.truncated)throw new i$(502,"GET",`${Y}/git/trees/${K}`,"tree listing truncated by GitHub; repo too large for recursive read");return W.tree},async getBlobText(K){let{json:W}=await J("GET",`${Y}/git/blobs/${K}`);if(W.encoding!=="base64")throw new i$(502,"GET",`${Y}/git/blobs/${K}`,`unexpected blob encoding ${W.encoding}`);return Buffer.from(W.content,"base64").toString("utf-8")},async createBlob(K){let{json:W}=await J("POST",`${Y}/git/blobs`,{content:K,encoding:"utf-8"});return W.sha},async createTree(K,W){let{json:H}=await J("POST",`${Y}/git/trees`,{base_tree:K,tree:W});return H.sha},async createCommit({message:K,treeSha:W,parentShas:H}){let{json:N}=await J("POST",`${Y}/git/commits`,{message:K,tree:W,parents:H});return N.sha},async updateRef(K,W){await J("PATCH",`${Y}/git/refs/heads/${Dx(K)}`,{sha:W,force:!1})},async createRef(K,W){await J("POST",`${Y}/git/refs`,{ref:`refs/heads/${K}`,sha:W})},async mergeBranch(K,W,H){let{status:N,json:U}=await J("POST",`${Y}/merges`,{base:K,head:W,commit_message:H},{allow:[204]});return N===204?null:U?.sha??null},async createPullRequest({base:K,head:W,title:H}){let{json:N}=await J("POST",`${Y}/pulls`,{base:K,head:W,title:H});return{number:N.number,html_url:N.html_url}},async findOpenPullRequest(K,W){let{json:H}=await J("GET",`${Y}/pulls?state=open&base=${encodeURIComponent(K)}&head=${encodeURIComponent(`${Z}:${W}`)}`),N=H[0];return N?{number:N.number,html_url:N.html_url}:null},async compare(K,W){let{json:H}=await J("GET",`${Y}/compare/${Dx(K)}...${Dx(W)}`);return{aheadBy:H.ahead_by,behindBy:H.behind_by}},async compareDetailed(K,W){let{json:H}=await J("GET",`${Y}/compare/${Dx(K)}...${Dx(W)}`);return{aheadBy:H.ahead_by,behindBy:H.behind_by,mergeBaseSha:H.merge_base_commit.sha,files:(H.files??[]).map((N)=>({filename:N.filename,status:N.status,sha:N.sha,...N.previous_filename?{previousFilename:N.previous_filename}:{}}))}}}}function Dx($){return $.split("/").map(encodeURIComponent).join("/")}var Xx$=512,Qx$=8388608,Yx$=262144,Il,VU1=0,i$;var Ex=O(()=>{Il=new Map;i$=class i$ extends Error{status;method;path;constructor($,Z,X,Q){super(`GitHub ${Z} ${X} failed (${$}): ${Q}`);this.status=$;this.method=Z;this.path=X;this.name="GitHubApiError"}}});async function TM0($,Z,X){if(!X.connectionId)throw new i$(401,"AUTH","connection","Project's GitHub connection is missing \u2014 reconnect GitHub");let Q=await $.storage.connections.findById(X.connectionId,Z);if(!Q)throw new i$(401,"AUTH","connection","Project's GitHub connection is missing \u2014 reconnect GitHub");let Y=await Jx$($,Q);if(!Y)throw new i$(401,"AUTH","connection",eZ);return q56({owner:X.owner,repo:X.name,accessToken:Y})}async function Jx$($,Z){if(y5(Z)?.sourceConnectionId)return Ah($,Z);return(await jG({connectionId:Z.id,connectionUrl:Z.connection_url,tokenStorage:new u$($.db,$.vault)})).accessToken}var kU1=O(()=>{eQ();e30();zK();BG();Ex()});function Kx$($){if(!$||$.includes("\\")||$.includes("..")||$.includes("\x00"))return!0;try{let Z=decodeURIComponent($);if(Z.includes("\\")||Z.includes("..")||Z.includes("\x00"))return!0;if(Z!==$&&Z.includes("/")){let X=($.match(/\//g)??[]).length;if((Z.match(/\//g)??[]).length>X)return!0}return!1}catch{return!0}}function RM0($){if(Kx$($))throw Error(`Invalid block key: ${$||"(empty)"}`)}function ql($){try{return decodeURIComponent($)}catch{return $}}function SU1($){return RM0($),encodeURIComponent($)}function f00($){let Z=$.map((G)=>({file:G,name:`${G.stem}.json`})).sort((G,J)=>G.name<J.name?-1:G.name>J.name?1:0),X=[],Q="{",Y=!0;for(let{file:G}of Z){let J=G.content.trim();if(J.length===0)continue;try{JSON.parse(J)}catch(K){X.push({key:ql(G.stem),stem:G.stem,error:K instanceof Error?K.message:String(K)});continue}if(!Y)Q+=",";Y=!1,Q+=`${JSON.stringify(ql(G.stem))}:${J}`}return{decofile:`${Q}}`,skipped:X}}var M56=()=>{};var IM0=O(()=>{M56()});function Wx$($){return $.startsWith("merged/")?"merged":"blobs"}function CU1($,Z){let X=new Map;for(let G of $){let J=X.get(G.path);if(!J||G.mtimeMs>=J.mtimeMs)X.set(G.path,{bytes:G.bytes,mtimeMs:G.mtimeMs})}let Q=[...X.entries()].sort((G,J)=>G[1].mtimeMs-J[1].mtimeMs),Y={config:Z,entries:new Map,totalBytes:0,areaBytes:{blobs:0,merged:0}};for(let[G,{bytes:J}]of Q){let K=Wx$(G);Y.entries.set(G,{bytes:J,area:K}),Y.totalBytes+=J,Y.areaBytes[K]+=J}return Y}function V56($,Z){let X=$.entries.get(Z);if(!X)return;$.entries.delete(Z),$.entries.set(Z,X)}function Ml($,Z){let X=$.entries.get(Z);if(!X)return;$.entries.delete(Z),$.totalBytes-=X.bytes,$.areaBytes[X.area]-=X.bytes}function k56($,Z){let{path:X,bytes:Q,area:Y}=Z,{config:G}=$;if(!Number.isFinite(Q)||Q<0||Q>G.maxEntryBytes[Y]||Q>G.maxTotalBytes||Y==="merged"&&Q>G.maxMergedBytes)return{admitted:!1,evict:[]};let K=$.entries.get(X),W=$.totalBytes-(K?.bytes??0),H=$.areaBytes.merged-(K?.area==="merged"?K.bytes:0),N=[],U=new Set;if(Y==="merged")for(let[F,B]of $.entries){if(H+Q<=G.maxMergedBytes)break;if(F===X||B.area!=="merged")continue;N.push(F),U.add(F),H-=B.bytes,W-=B.bytes}for(let[F,B]of $.entries){if(W+Q<=G.maxTotalBytes)break;if(F===X||U.has(F))continue;N.push(F),U.add(F),W-=B.bytes}for(let F of N)Ml($,F);return Ml($,X),$.entries.set(X,{bytes:Q,area:Y}),$.totalBytes+=Q,$.areaBytes[Y]+=Q,{admitted:!0,evict:N}}function b00($){if($==="")throw TypeError("cache path segment must not be empty");let Z=$.toLowerCase(),X="";for(let Q of new TextEncoder().encode(Z)){let Y=String.fromCharCode(Q);X+=/[a-z0-9._-]/.test(Y)?Y:`%${Q.toString(16).padStart(2,"0")}`}if(X==="."||X==="..")X=X.replaceAll(".","%2e");return X}function _U1($){return/^[0-9a-f]{40}$/.test($)}import{randomUUID as f56}from"crypto";import{mkdir as y00,readdir as Hx$,readFile as Nx$,rename as Ux$,rm as b56,stat as y56,statfs as Fx$,unlink as Bx$,writeFile as wx$}from"fs/promises";import{tmpdir as Ox$}from"os";import{dirname as Lx$,join as d7}from"path";function Vl($,Z){let X=Bun.env[$];if(X===void 0||X==="")return Z;let Q=Number(X);return Number.isFinite(Q)&&Q>=0?Math.floor(Q):Z}function zx$(){if(qM0)return qM0;let $=Bun.env.FAST_PREVIEW_CACHE_DIR,Z=$===void 0?d7(Ox$(),"studio-fast-preview-cache"):$;return qM0={enabled:Z!=="",root:Z,index:{maxTotalBytes:Vl("FAST_PREVIEW_CACHE_MAX_BYTES",2*S56),maxMergedBytes:Vl("FAST_PREVIEW_CACHE_MERGED_MAX_BYTES",512*MM0),maxEntryBytes:{blobs:Vl("FAST_PREVIEW_CACHE_MAX_BLOB_BYTES",MM0),merged:Vl("FAST_PREVIEW_CACHE_MAX_MERGED_BYTES",32*MM0)}},freeFloorBytes:Vl("FAST_PREVIEW_CACHE_FREE_FLOOR_BYTES",S56),sweepIntervalMs:Vl("FAST_PREVIEW_CACHE_SWEEP_INTERVAL_MS",600000)},qM0}function jx$(){return{hits:{blobs:0,merged:0},misses:{blobs:0,merged:0},evictions:0,errors:0,floorSkips:0,invalidKeySkips:0,admissionRefusals:0}}function Px$(){if(pL)return;pL={hits:x8.createCounter("fast_preview_cache_hits",{description:"Decofile disk cache hits by area",unit:"{reads}"}),misses:x8.createCounter("fast_preview_cache_misses",{description:"Decofile disk cache misses by area",unit:"{reads}"}),evictions:x8.createCounter("fast_preview_cache_evictions",{description:"Decofile disk cache entries evicted",unit:"{entries}"}),errors:x8.createCounter("fast_preview_cache_errors",{description:"Decofile disk cache swallowed errors by operation",unit:"{errors}"}),floorSkips:x8.createCounter("fast_preview_cache_floor_skips",{description:"Decofile disk cache writes skipped by the free-space floor",unit:"{writes}"})},x8.createObservableGauge("fast_preview_cache_bytes",{description:"Decofile disk cache bytes by area",unit:"By"}).addCallback(($)=>{if(!kl)return;$.observe(kl.index.areaBytes.blobs,{area:"blobs"}),$.observe(kl.index.areaBytes.merged,{area:"merged"})}),x8.createObservableGauge("fast_preview_cache_entries",{description:"Decofile disk cache entry count by area",unit:"{entries}"}).addCallback(($)=>{if(!kl)return;let Z={blobs:0,merged:0};for(let X of kl.index.entries.values())Z[X.area]+=1;$.observe(Z.blobs,{area:"blobs"}),$.observe(Z.merged,{area:"merged"})})}function Ax$($){zx.hits[$]+=1,pL?.hits.add(1,{area:$})}function C56($){zx.misses[$]+=1,pL?.misses.add(1,{area:$})}function vU1(){zx.evictions+=1,pL?.evictions.add(1)}function vF($){zx.errors+=1,pL?.errors.add(1,{op:$})}function Tx$($){zx.invalidKeySkips+=1,pL?.errors.add(1,{op:`${$}_invalid_key`})}function xU1(){return _56??=Ix$(),_56}async function Ix$(){let $=zx$();if(!$.enabled)return null;Px$();try{await y00(d7($.root,"blobs"),{recursive:!0}),await y00(d7($.root,"merged"),{recursive:!0}),await y00(d7($.root,"tmp"),{recursive:!0})}catch{return vF("init"),null}let Z=[];try{Z=await g56($.root)}catch{vF("scan"),Z=[]}let X={root:$.root,index:CU1(Z,$.index),cfg:$};return kl=X,Vx$(X),X}async function VM0($){try{return await Hx$($)}catch{return[]}}async function g56($){let Z=[];for(let X of["blobs","merged"]){let Q=d7($,X);for(let Y of await VM0(Q)){let G=d7(Q,Y);for(let J of await VM0(G)){let K=d7(G,J);for(let W of await VM0(K))try{let H=await y56(d7(K,W));if(!H.isFile())continue;Z.push({path:`${X}/${Y}/${J}/${W}`,bytes:H.size,mtimeMs:H.mtimeMs})}catch{}}}}return Z}function h56($,Z,X){if(!_U1(X))return null;try{return`blobs/${b00($)}/${b00(Z)}/${X}`}catch{return null}}function u56($,Z,X){if(!_U1(X))return null;try{return`merged/${b00($)}/${b00(Z)}/${X}.json`}catch{return null}}async function c56($,Z){try{let X=await xU1();if(!X)return null;if(Z===null)return C56($),null;try{let Q=await Nx$(d7(X.root,Z),"utf8");return V56(X.index,Z),Ax$($),Q}catch{return C56($),null}}catch{return vF(`get_${$}`),null}}function l56($,Z,X){return c56("blobs",h56($,Z,X))}function d56($,Z,X){return c56("merged",u56($,Z,X))}async function qx$($){if($.cfg.freeFloorBytes<=0)return!0;try{let Z=await Fx$($.root);return Z.bavail*Z.bsize>=$.cfg.freeFloorBytes}catch{return!0}}async function kM0($){try{await Bx$($)}catch{}}async function Mx$($){try{let Z=$.cfg.index.maxTotalBytes/2;while($.index.totalBytes>Z){let X=$.index.entries.keys().next();if(X.done)break;Ml($.index,X.value),await kM0(d7($.root,X.value)),vU1()}}catch{vF("emergency_evict")}}async function m56($,Z,X,Q){try{let Y=await xU1();if(!Y)return;if(X===null){Tx$(Z);return}if(!await qx$(Y)){zx.floorSkips+=1,pL?.floorSkips.add(1);return}let G=Buffer.byteLength(Q,"utf8"),J=k56(Y.index,{path:X,bytes:G,area:$});if(!J.admitted){zx.admissionRefusals+=1;return}for(let W of J.evict)await kM0(d7(Y.root,W)),vU1();let K=d7(Y.root,"tmp",`stage-${f56()}`);try{await wx$(K,Q,"utf8");let W=d7(Y.root,X);await y00(Lx$(W),{recursive:!0}),await Ux$(K,W)}catch(W){if(Ml(Y.index,X),await kM0(K),vF(Z),W?.code==="ENOSPC")await Mx$(Y)}}catch{vF(Z)}}function SM0($,Z,X,Q){return m56("blobs","put_blob",h56($,Z,X),Q)}function i56($,Z,X,Q){return m56("merged","put_merged",u56($,Z,X),Q)}async function n56(){try{let $=await xU1();if(!$)return null;let Z=d7($.root,"tmp",f56());return await y00(Z,{recursive:!0}),Z}catch{return vF("make_scratch"),null}}async function p56($){try{await b56($,{recursive:!0,force:!0})}catch{vF("remove_scratch")}}function Vx$($){let Z=$.cfg.sweepIntervalMs;if(Z<=0)return;v56=new AbortController,z8(Math.random()*Z,{signal:v56.signal}).then(()=>{x56($);let X=setInterval(()=>void x56($),Z);X.unref?.(),Rx$=X}).catch(()=>{})}async function x56($){try{let Z=CU1(await g56($.root),$.cfg.index),X=$.cfg.index;for(let[G,J]of Z.entries){let K=Z.totalBytes>X.maxTotalBytes,W=Z.areaBytes.merged>X.maxMergedBytes;if(!K&&!W)break;if(!K&&W&&J.area!=="merged")continue;Ml(Z,G),await kM0(d7($.root,G)),vU1()}$.index=Z;let Q=d7($.root,"tmp"),Y=Date.now();for(let G of await VM0(Q)){let J=d7(Q,G);try{let K=await y56(J);if(Y-K.mtimeMs>Ex$)await b56(J,{recursive:!0,force:!0})}catch{}}}catch{vF("sweep")}}var Dx$=1024,MM0,S56,Ex$=3600000,qM0=null,pL=null,zx,_56=null,kl=null,Rx$=null,v56=null;var t56=O(()=>{t4();o$();MM0=1024*Dx$,S56=1024*MM0;zx=jx$()});function o56(){let $=new Map;return{run(Z,X){let Q=$.get(Z);if(Q)return Q;let Y=Promise.resolve().then(X).finally(()=>{$.delete(Z)});return $.set(Z,Y),Y}}}import{readdir as kx$,stat as Sx$}from"fs/promises";import{join as r56}from"path";function Cx$($,Z,X){let Q=["-xz","--strip-components=1","-C",Z];return $==="gnu"?[...Q,"--wildcards",X]:[...Q,X]}function _x$(){return a56??=(async()=>{try{let $=Bun.spawn(["tar","--version"],{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),Z=await new Response($.stdout).text();return await $.exited,Z.includes("GNU")?"gnu":"bsd"}catch{return"bsd"}})(),a56}async function s56($,Z,X){let Q=X.replace(/^\.\//,"").replace(/^\/+/,"").replace(/\/+$/,"");if(Q===""||Q.split("/").includes(".."))throw new g00(`invalid blocks path prefix: ${X}`);let Y=await _x$(),G=`*/${Q}/*.json`,J=()=>Bun.spawn(["tar",...Cx$(Y,Z,G)],{stdin:$,stdout:"ignore",stderr:"pipe"}),K;try{K=J()}catch(U){throw new g00("failed to spawn tar",{cause:U})}let W=new Response(K.stderr).text().catch(()=>""),H=await K.exited;if(H!==0){let U=(await W).trim().slice(0,500);throw new g00(`tar exited with code ${H}${U?`: ${U}`:""}`)}let N=await vx$(Z,Q);if(N.length===0)throw new g00(`tar extracted no ${G} members into ${Z}`);return N}async function vx$($,Z){let X=r56($,...Z.split("/")),Q;try{Q=await kx$(X)}catch{return[]}let Y=[];for(let G of Q){if(!G.endsWith(".json"))continue;let J=r56(X,G);try{if(!(await Sx$(J)).isFile())continue}catch{continue}Y.push({path:`${Z}/${G}`,diskPath:J})}return Y.sort((G,J)=>G.path.localeCompare(J.path))}var g00,a56=null;var e56=O(()=>{g00=class g00 extends Error{constructor($,Z){super($,Z);this.name="TarExtractError"}}});import{createHash as xx$}from"crypto";import{readFile as fx$}from"fs/promises";async function h00($,Z){try{return await $.getHeadSha(Z)}catch(Q){if(!(Q instanceof i$)||Q.status!==404)throw Q}let X=await $.getHeadSha(await $.getDefaultBranch());try{return await $.createRef(Z,X),X}catch(Q){if(Q instanceof i$&&Q.status===422)return $.getHeadSha(Z);throw Q}}function yx$(){let $=Bun.env.FAST_PREVIEW_COLD_TARBALL_MAX_BYTES;if($===void 0||$==="")return Z96;let Z=Number($);return Number.isFinite(Z)&&Z>=0?Math.floor(Z):Z96}function gx$($){X96??=x8.createCounter("decofile_cold_reads",{description:"Decofile cold snapshot reads by resolution path",unit:"{reads}"}),X96.add(1,{path:$})}function hx$($){Q96??=x8.createCounter("decofile_skipped_blocks",{description:"Decofile blocks dropped from a merge for not being valid JSON",unit:"{blocks}"}),Q96.add($)}async function CM0($,Z,X){let Q=Array($.length),Y=0,G=Array.from({length:Math.min(Z,$.length)},async()=>{for(;;){let J=Y++;if(J>=$.length)return;Q[J]=await X($[J])}});return await Promise.all(G),Q}function _M0($){return $?`${$}/.deco/blocks`:".deco/blocks"}function fU1($,Z){let X=`${_M0(Z)}/`,Q=[];for(let Y of $){if(Y.type!=="blob"||!Y.path.startsWith(X))continue;let G=Y.path.slice(X.length);if(G.includes("/"))continue;if(!G.toLowerCase().endsWith(".json"))continue;Q.push({stem:G.slice(0,-5),sha:Y.sha,path:Y.path,size:Y.size})}return Q}function bU1($,Z){return $.filter((X)=>ql(X.stem)===Z).map((X)=>X.path).sort()}function Y96($,Z,X,Q){return SM0($,Z,X,Q)}function cx$($,Z){return xx$("sha1").update(`${ux$}:${$}:${Z??""}`).digest("hex")}async function G96($,Z,X,Q){let Y=Q?.createBranchIfMissing?await h00($,Z):await $.getHeadSha(Z);return lx$.run(`${$.owner}/${$.repo}@${Y}:${X??""}`,()=>dx$($,Y,X))}async function dx$($,Z,X){let{owner:Q,repo:Y}=$,G=cx$(Z,X),J=await d56(Q,Y,G);if(J!==null)return{sha:Z,decofile:J};let K=await $.getCommitTreeSha(Z),W=await $.getTreeRecursive(K),H=fU1(W,X),N=new Map;if(await CM0(H,$96,async(L)=>{let D=await l56(Q,Y,L.sha);if(D!==null)N.set(L.path,D)}),H.length-N.size>bx$){let L=await mx$($,Z,X,H);if(gx$(L!==null?"tarball":"blobs"),L!==null)for(let[D,E]of L)N.set(D,E)}let F=await CM0(H,$96,async(L)=>{let D=N.get(L.path);if(D!==void 0)return{stem:L.stem,content:D};let E=await $.getBlobText(L.sha);return await SM0(Q,Y,L.sha,E),{stem:L.stem,content:E}}),{decofile:B,skipped:w}=f00(F);if(w.length>0)hx$(w.length),console.warn("decofile read: dropped blocks that were not valid JSON",{repo:`${Q}/${Y}`,sha:Z,packagePath:X,blocks:w.map((L)=>L.key)});return await i56(Q,Y,G,B),{sha:Z,decofile:B}}async function mx$($,Z,X,Q){let Y=`${$.owner}/${$.repo}`,G=yx$(),J=0;for(let W of Q){if(W.size===void 0)return console.warn("decofile cold read: tarball skipped (tree entry missing size; cannot pre-validate)",{repo:Y,sha:Z,path:W.path}),null;J+=W.size}if(J>G)return console.warn("decofile cold read: tarball skipped (blocks over FAST_PREVIEW_COLD_TARBALL_MAX_BYTES)",{repo:Y,sha:Z,aggregateBytes:J,maxBytes:G}),null;let K=await n56();if(K===null)return null;try{let W=await $.getTarballStream(Z),H=await s56(W,K,_M0(X)),N=new Map(Q.map((F)=>[F.path,F.sha])),U=new Map;for(let F of H){let B=N.get(F.path);if(B===void 0)continue;let w=await fx$(F.diskPath,"utf8");await SM0($.owner,$.repo,B,w),U.set(F.path,w)}return U}catch(W){return console.warn("decofile cold read: tarball path failed; falling back to blob fetches",{repo:Y,sha:Z,error:W instanceof Error?W.message:String(W)}),null}finally{await p56(K)}}var $96=12,bx$=50,Z96=134217728,X96=null,Q96=null,ux$="3",lx$;var vM0=O(()=>{IM0();o$();t56();Ex();e56();lx$=o56()});async function xM0($,Z){let X=await $.getDefaultBranch(),Q=await h00($,Z),Y=X===Z?{aheadBy:0,behindBy:0}:await $.compare(X,Z);return{not_added:[],conflicted:[],created:[],deleted:[],modified:[],renamed:[],files:[],staged:[],ahead:0,behind:0,current:Z,tracking:`origin/${Z}`,detached:!1,base:X,aheadOfBase:Y.aheadBy,behindBase:Y.behindBy,headSha:Q,unpushed:0}}async function fM0($,Z,X){let Q=X??await $.getDefaultBranch(),Y=await $.compareDetailed(Q,Z),G=Y.files.slice(0,ix$),J=await $.getCommitTreeSha(Y.mergeBaseSha),K=await $.getTreeRecursive(J),W=new Map(K.filter((N)=>N.type==="blob").map((N)=>[N.path,N.sha])),H=await CM0(G,nx$,async(N)=>{let U=N.previousFilename??N.filename,F=N.status==="added"?void 0:W.get(U),B=F?await $.getBlobText(F):null,w=N.status==="removed"?null:await $.getBlobText(N.sha);return[N.filename,{from:B,to:w}]});return{diffs:Object.fromEntries(H),mergeBaseSha:Y.mergeBaseSha}}async function J96($,Z,X,Q="fail"){try{await $.mergeBranch(Z,X,`chore(decofile): merge ${X} into ${Z}`);return}catch(Y){if(!(Y instanceof i$&&Y.status===409))throw Y;if(Q!=="branch-wins")throw new i$(409,"POST","merges",`Merge conflict updating ${Z} from ${X} \u2014 resolve on GitHub`)}await ox$($,Z,X)}async function ox$($,Z,X){for(let Q=1;;Q++){let Y=await $.getHeadSha(Z),G=await $.getHeadSha(X),{files:J}=await $.compareDetailed(X,Z);if(J.length>=px$)throw new i$(409,"POST","merges",`Too many changed files on ${Z} to auto-merge (${J.length}); resolve on GitHub`);let K=await $.getTreeRecursive(await $.getCommitTreeSha(Y)),W=new Map(K.filter((F)=>F.type==="blob").map((F)=>[F.path,F])),H=[];for(let F of J){let B=W.get(F.filename);if(F.status==="removed"||!B)H.push({path:F.filename,mode:"100644",type:"blob",sha:null});else H.push({path:F.filename,mode:"100644",type:"blob",sha:B.sha});if(F.previousFilename&&F.previousFilename!==F.filename)H.push({path:F.previousFilename,mode:"100644",type:"blob",sha:null})}let N=await $.createTree(await $.getCommitTreeSha(G),H),U=await $.createCommit({message:`chore(decofile): merge ${X} into ${Z} (branch content wins)`,treeSha:N,parentShas:[Y,G]});try{await $.updateRef(Z,U);return}catch(F){if(F instanceof i$&&F.status===422&&Q<tx$)continue;throw F}}}var ix$=200,nx$=12,px$=300,tx$=3;var K96=O(()=>{Ex();vM0()});function ax$($){if(!$||$.includes(".."))return!1;return rx$.test($)}function W96($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!ax$(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function H96($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var rx$;var N96=O(()=>{rx$=/^[\w./@-]+$/});function yU1($){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 u00($,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 U96($,Z,X,Q){if(!Q.connectionId)throw new jx("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new jx(eZ);await AO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(N)=>{let U=N instanceof Error?N.message:eZ;throw new jx(U)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:K}=await TO(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((N)=>{let{code:U,message:F}=SE8(N instanceof Error?N.message:String(N));throw U?new jx(F):N}),W=Rl($),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 uO(H,sx$).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var sx$=10485760,jx;var gU1=O(()=>{zK();AM0();Ir();L61();Th();jx=class jx extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function $f$($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!ex$.test(Z))throw Error(`Invalid branch name: ${$}`)}function Px($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(Xf$)])}function Qf$($,Z,X){let Q=M5($)[Z]?.[X];return!!Q&&Object.keys(YG(Q)).length>0}function Ax($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function c00($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=u00(Z,X);if(!Y)throw new i$(404,"AUTH","repo","Project has no GitHub repository");let G=X0(Q);return TM0(Q,G.id,Y)}function hU1($,Z){if(Z instanceof i$){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,l9)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,l9)}async function w96($){try{let Z=await c00($),X=await xM0(Z,$.get("vmClaim").branch);return $.json(X,200,l9)}catch(Z){return hU1($,Z)}}function yM0($,Z){let Q=(bM0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return bM0.set($,Y),Y.finally(()=>{if(bM0.get($)===Y)bM0.delete($)}),Q}async function W7($,Z,X){if($.get("vmClaim").fastPreview)return $.json({error:"sandbox not found: Fast Preview projects are sandbox-less"},404,l9);let Q=Ax($);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 B=await Q.proxyDaemonRequest(Y,Z,U);if(X?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))B=await Q.proxyDaemonRequest(Y,Z,U);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...l9}})}}let w=await B.text(),L=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?Gf$(w):w,D=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":D,...l9}})};try{if(N){let B=F();return B.catch(()=>{}),await Promise.race([B,new Promise((L,D)=>{if(N.aborted)return D(N.reason);N.addEventListener("abort",()=>D(N.reason),{once:!0})})])}return await F()}catch(B){let w=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${w}`},502)}}function Gf$($){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 gM0($,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){let K=`Daemon error (${G.status})`;try{K=JSON.parse(J).error??K}catch{}throw Error(K)}return JSON.parse(J)}function Jf$($){return O96.includes($)}var ex$,F96=524288,Zf$=65536,Xf$=1e4,B96=2000,Yf$,bM0,l9,O96,L96=()=>{let $=new I1;$.use("/:virtualMcpId/:branch/*",Yf$),$.post("/:virtualMcpId/:branch/write",(X)=>W7(X,"/_sandbox/write",{forwardJsonBody:!0,signal:Px(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>W7(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:Px(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>W7(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:Px(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>W7(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:Px(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>W7(X,"/_sandbox/read",{forwardJsonBody:!0,signal:Px(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>W7(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:Px(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>W7(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:Px(X)})),$.post("/:virtualMcpId/:branch/exec/:script",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return W7(X,`/_sandbox/exec/${encodeURIComponent(Q)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return W7(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>W7(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>W7(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!Jf$(Q))return X.json({error:`step must be one of: ${O96.join(", ")}`},400);if(Q==="start"){let Y=X.get("vmClaim");if(Y.runner){let G=X0(X.var.studioContext),J=uh(Y.virtualMcpMetadata);try{await Cj0({ctx:X.var.studioContext,runner:Y.runner,handle:Y.claimName,orgId:G.id,userId:Y.callerUserId,entries:J})}catch(K){let W=K instanceof Error?K.message:String(K);return X.json({error:`Failed to push env to daemon: ${W}`},502)}}}return W7(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return _F(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return w56(X,{ctx:X.var.studioContext,claimName:Q.claimName,runner:Q.runner,virtualMcpId:Q.virtualMcpId,branch:Q.branch,userId:Q.userId,projectRef:Q.projectRef,virtualMcpMetadata:Q.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return w96(X);return Z(X)});let Z=(X)=>W7(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(B96)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return w96(X);return W7(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(B96)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)try{let Y=await X.req.json().catch(()=>({})),G=await c00(X),J=await fM0(G,Q.branch,Y.base);return X.json(J,200,l9)}catch(Y){return hU1(X,Y)}return W7(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").fastPreview)return X.json({ok:!0},200,l9);let Q=Ax(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),K=X.var.studioContext;return yM0(Y,async()=>{try{await jU1(K,Q,Y);let W=u00(G,J);if(W)await U96(K,Q,Y,W)}catch(W){if(W instanceof jx)return X.json({error:W.message},403,l9);let H=W instanceof Error?W.message:String(W);return X.json({error:H},502,l9)}return W7(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let{claimName:Q,fastPreview:Y}=X.get("vmClaim");if(Y)return X.json({error:"Nothing to discard: Fast Preview projects have no working tree"},400,l9);return yM0(Q,()=>W7(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return yM0(Q.claimName,async()=>{try{let K=await X.req.json().catch(()=>({})),W=await c00(X),H=K.base??await W.getDefaultBranch();return await J96(W,Q.branch,H,K.onConflict==="branch-wins"?"branch-wins":"fail"),X.json({ok:!0},200,l9)}catch(K){return hU1(X,K)}});let Y=Ax(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return yM0(G,async()=>{try{await jU1(J,Y,G)}catch(K){let W=K instanceof Error?K.message:String(K);return X.json({error:W},502,l9)}return W7(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",vZ({maxSize:F96,onError:(X)=>X.json({error:"Payload too large"},413,l9)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=Ax(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:K}=Q,W=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),N=H.status,U=H.diff,F=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,w]=TU1(N)&&F?[N,U]:Y?await Promise.all([gM0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:K}),gM0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:K})]):await(async()=>{let D=await c00(X);return Promise.all([xM0(D,Q.branch),fM0(D,Q.branch)])})(),L=await z56(W,B,w);return X.json(L,200,l9)}catch(H){let N=H instanceof Error?H.message:String(H);if(N==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,l9);return X.json({error:N},502,l9)}}),$.post("/:virtualMcpId/:branch/git/judge-review",vZ({maxSize:F96,onError:(X)=>X.json({error:"Payload too large"},413,l9)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=Ax(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:K}=Q,W=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),N=H.status,U=H.diff,F=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,w]=TU1(N)&&F?[N,U]:Y?await Promise.all([gM0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:K}),gM0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:K})]):await(async()=>{let D=await c00(X);return Promise.all([xM0(D,Q.branch),fM0(D,Q.branch)])})(),L=await P56(W,B,w,typeof H.language==="string"?H.language:void 0);return X.json(L,200,l9)}catch(H){let N=H instanceof Error?H.message:String(H);if(N==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,l9);return X.json({error:N},502,l9)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=Ax(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let K=J.replace(/\/+$/,""),W=yU1(`${K}${G}`),H;try{H=await fetch(W?.url??`${K}${G}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return X.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",vZ({maxSize:Zf$,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=Ax(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G;try{G=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!G)return X.json({error:"Preview not available"},502);let J;try{J=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return X.json({error:"Invalid JSON body"},400);let K=W96(J);if(!K)return X.json({error:"Invalid or missing __resolveType"},400);let W=H96(G,K.resolveType),H=yU1(W),N;try{N=await fetch(H?.url??W,{method:"POST",headers:{"content-type":"application/json",...H?{host:H.hostHeader}:{}},body:JSON.stringify(K.payload),signal:AbortSignal.timeout(30000)})}catch{return X.json({error:"Preview unreachable"},502)}let U;try{U=await N.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(U,{status:N.status,headers:{"content-type":N.headers.get("content-type")??"application/json"}})}),$};var D96=O(()=>{d6();lL();Tl();zU1();vU();F56();IK();wQ();j6();W91();bO();B56();O56();b$1();Tr();qU1();A56();kU1();Ex();K96();N96();gU1();ex$=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Yf$=PM0(async($,Z)=>{let X=$.var.studioContext;try{K0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=z1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=X0(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{$f$(J)}catch(B){let w=B instanceof Error?B.message:String(B);return $.json({error:w},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=mo({orgId:Y.id,virtualMcpId:G,branch:J}),H=await dU(X,J,Q),N=U56({userId:H,projectRef:W}),U=K.metadata??null;if(tk8(U).fastPreviewCapability&&!Qf$(U,H,J))return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:H,projectRef:W,virtualMcpMetadata:U,connectionIds:K.connections?.map((B)=>B.connection_id)??[],fastPreview:!0}),Z();let F;try{F=(await jQ(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((B)=>B.connection_id)??[]}),Z()});bM0=new Map;l9={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};O96=["clone","install","start"]});function E96($,Z,X){let Q=uU1.get($);if(!Q)Q={pending:null,running:!1},uU1.set($,Q);if(!Q.pending)Q.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=Q.pending;Y.deps=Z;for(let[J,K]of Object.entries(X.set??{}))Y.set.set(J,K),Y.del.delete(J);for(let J of X.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,K)=>{Y.resolvers.push(J),Y.rejecters.push(K)});if(!Q.running)Wf$($,Q);return G}async function Wf$($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await Hf$(X);for(let Y of X.resolvers)Y(Q)}catch(Q){for(let Y of X.rejecters)Y(Q)}}}finally{if(Z.running=!1,!Z.pending)uU1.delete($)}}async function Hf$($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await h00(Z,X),J=await Z.getCommitTreeSha(G),K=await Z.getTreeRecursive(J),W=fU1(K,Q),H=[],N=new Map(W.map((w)=>[w.path,{stem:w.stem,sha:w.sha}]));for(let[w,L]of $.set){let D=bU1(W,w),E=`${JSON.stringify(L,null,2)}
4041
4041
  `,z=await Z.createBlob(E);await Y96(Z.owner,Z.repo,z,E);let j=D[0]??`${_M0(Q)}/${SU1(w)}.json`;H.push({path:j,mode:"100644",type:"blob",sha:z});let P=j.slice(j.lastIndexOf("/")+1,-5);N.set(j,{stem:P,sha:z,content:E});for(let A of D.slice(1))H.push({path:A,mode:"100644",type:"blob",sha:null}),N.delete(A)}for(let w of $.del)for(let L of bU1(W,w))H.push({path:L,mode:"100644",type:"blob",sha:null}),N.delete(L);if(H.length===0)return G;let U=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(K.some((w)=>w.type==="blob"&&w.path===U)){let w=await Promise.all([...N.values()].map(async(z)=>({stem:z.stem,content:z.content??await Z.getBlobText(z.sha)}))),{decofile:L,skipped:D}=f00(w);if(D.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:D.map((z)=>z.key)});let E=await Z.createBlob(L);H.push({path:U,mode:"100644",type:"blob",sha:E})}let F=await Z.createTree(J,H),B=await Z.createCommit({message:Nf$($),treeSha:F,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(w){if(!(w instanceof i$&&w.status===422)||Y>=Kf$-1)throw w;await z8(H7(2000,200,Y,2,0.5))}}}function Nf$($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return K61(Q,$.deps.coAuthor)}var Kf$=3,uU1;var z96=O(()=>{Tj0();IM0();t4();Ex();vM0();uU1=new Map});import{createHmac as j96,randomBytes as Uf$,timingSafeEqual as Ff$}from"crypto";function P96(){if(hM0)return hM0;let $;try{let Z=o0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return hM0=$?Buffer.from($):Uf$(32),hM0}function cU1($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+Bf$)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=j96("sha256",P96()).update(Q).digest("base64url");return`${Q}.${Y}`}function A96($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(j96("sha256",P96()).update(Q).digest("base64url"));if(Y.length!==G.length||!Ff$(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let K=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=K}var Bf$=21600000,hM0=null;var T96=O(()=>{q8()});import{z as Sl}from"zod";function Of$($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&wf$.test($)}function I96($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function uM0($){let Z=$.get("decofileScope");return TM0($.var.studioContext,Z.organizationId,Z.githubRepo)}function cM0($,Z){if(Z instanceof i$){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function q96(){let $=new I1;return $.use("/:virtualMcpId/:branch",R96),$.use("/:virtualMcpId/:branch/*",R96),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await uM0(Z),Y=await G96(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=cU1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(I96(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return cM0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=Lf$.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{RM0(J)}catch(K){let W=K instanceof Error?K.message:String(K);return Z.json({error:W},400)}for(let[J,K]of Object.entries(G.set??{}))if(typeof K!=="object"||K===null||Array.isArray(K))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await uM0(Z),K=await E96(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:Rl(Q)},G),W=cU1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:K,token:W,apiHost:I96(Z)})}catch(J){return cM0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await uM0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);try{let G=await Q.mergeBranch(Y,X.branch,`chore(decofile): publish ${X.branch}`);return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(G instanceof i$&&G.status===409)return Z.json({error:"merge-conflict"},409);if(G instanceof i$&&G.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw G}}catch(Q){return cM0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await uM0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof i$&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return cM0(Z,Q)}}),$}var wf$,Lf$,R96;var M96=O(()=>{IM0();d6();zU1();AM0();gU1();kU1();z96();T96();Ex();vM0();wf$=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Lf$=Sl.object({set:Sl.record(Sl.string(),Sl.unknown()).optional(),delete:Sl.array(Sl.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),R96=PM0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!Of$(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!A96(B,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let K=await X.storage.virtualMcps.findById(Y);if(!K||K.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let W=K.metadata??null;if(!xP0(W)||W?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let N=K.connections?.map((B)=>B.connection_id)??[],U=u00(W,N);if(!U)return $.json({error:"Project has no GitHub repository"},404);let F=W?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:F?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:J}),Z()})});var V96=($)=>{let Z=new I1;if(Z.use("*",Nx),Z.route("/",gq0()),Z.route("/",s86()),Z.route("/",s$6()),Z.route("/",o$6()),Z.route("/",EM0()),Z.route("/tools",G56()),Z.route("/",X56()),Z.route("/",C$6({kvStorage:$.kvStorage})),Z.route("/",k$6()),Z.route("/fs",l$6({getConnection:$.getNatsConnection})),Z.route("/sandbox",L96()),Z.route("/decofile",q96()),Z.route("/",n$6()),Z.route("/deco-sites",uq0()),Z.route("/sso",_q0()),Z.route("/",zM0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",m86()),$.mountDevAssets)Z.route("/dev-assets",cq0({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("/",S06()),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",m$6()),Z.route("/mcp",oA0()),Z.route("/mcp/self",DM0()),Z.route("/mcp",sA0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var k96=O(()=>{d6();cH1();i86();iH1();lq0();W00();hH1();S$6();_$6();d$6();ja();CH1();eA0();FU1();i$6();p$6();r$6();e$6();Q56();wU1();J56();OU1();rA0();D96();M96()});function Df$($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var Ef$=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},S96=()=>{let $=new I1;return $.use("*",Ef$),$.get("/",async(Z)=>{let X=o0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await K7(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:Df$(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var C96=O(()=>{d6();q8();lI0()});import{z as u1}from"zod";function QN($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function Vf$($){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 kf$($,Z,X){try{return JSON.parse($)}catch{throw new x96(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function Sf$($){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:kf$(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 Cf$($){let Z=$.map((X)=>{let Q=X.function.parameters?EG(X.function.parameters):EG({type:"object",properties:{}});return[X.function.name,d8({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function _f$($){if(!$)return;return{openai:{response_format:$}}}function vf$(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function _96($,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 v96($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var zf$=256,jf$,Pf$,Af$,Tf$,Rf$,If$,qf$,Mf$,x96,f96,b96;var y96=O(()=>{l4();d6();Tl();FF();jf$=u1.object({type:u1.literal("function"),function:u1.object({name:u1.string(),description:u1.string().optional(),parameters:u1.record(u1.string(),u1.unknown()).optional()})}),Pf$=u1.object({id:u1.string(),type:u1.literal("function"),function:u1.object({name:u1.string(),arguments:u1.string()})}),Af$=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(Pf$).optional()}),u1.object({role:u1.literal("tool"),content:u1.string(),tool_call_id:u1.string()})]),Tf$=u1.object({type:u1.literal("text")}),Rf$=u1.object({type:u1.literal("json_object")}),If$=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()})}),qf$=u1.union([Tf$,Rf$,If$]),Mf$=u1.object({model:u1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:u1.array(Af$),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(jf$).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:qf$.optional(),user:u1.string().optional()});x96=class x96 extends Error{constructor($){super($);this.name="MessageConversionError"}};f96=new I1;f96.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(QN("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(QN("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(QN("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=Mf$.safeParse(Q);if(!Y.success){let D=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(QN(`Invalid request: ${D.message}`,"invalid_request_error",D.path.length>0?D.path.join("."):null),400)}let G=Y.data,J=Vf$(G.model);if(!J)return $.json(QN("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)=>VE(z.providerId));if(!E)return $.json(QN("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(QN(`AI provider credential not found or inaccessible: ${K}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(W),U=Sf$(G.messages),F=G.tools?Cf$(G.tools):void 0,B=_f$(G.response_format),w=vf$(),L=Math.floor(Date.now()/1000);if(G.stream)return _F($,async(D)=>{let E=_96(N,U,F,G,B,$.req.raw.signal);try{let z=jO(E),j=!1,P=0,A="",I=async()=>{if(A.length===0)return;let M=A;A="",await D.writeSSE({data:JSON.stringify({id:w,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{content:M},finish_reason:null}]})})};for await(let M of z.fullStream){if(!j&&(M.type==="text-delta"||M.type==="tool-call"))await D.writeSSE({data:JSON.stringify({id:w,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),j=!0;if(M.type==="text-delta"){if(A+=M.text,A.length>=zf$)await I()}else if(M.type==="tool-call"){await I();let V=P++;await D.writeSSE({data:JSON.stringify({id:w,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:V,id:M.toolCallId,type:"function",function:{name:M.toolName,arguments:JSON.stringify(M.input)}}]},finish_reason:null}]})})}else if(M.type==="finish")await I(),await D.writeSSE({data:JSON.stringify({id:w,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:v96(M.finishReason)}],usage:M.totalUsage?{prompt_tokens:M.totalUsage.inputTokens??0,completion_tokens:M.totalUsage.outputTokens??0,total_tokens:M.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=_96(N,U,F,G,B,$.req.raw.signal),E=await EO(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:w,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:z,finish_reason:v96(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(QN("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(QN(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(QN(Y.message,"server_error"),500)}});b96=f96});function ff$(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??xf$}}var g96,xf$="https://ph.studio.decocms.com",h96;var u96=O(()=>{d6();cs0();e_();n9();q8();qH1();Zi0();g96=new I1;g96.get("/",($)=>{let Z={version:QZ0.version,theme:YG8(),...Dz().logo&&{logo:Dz().logo},...qH()&&{internalUrl:bi1()},...o0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!o0().firecrawlApiKey,auth:K86(),posthog:ff$(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!qH()&&o0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});h96=g96});function Cl($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function lU1($){return(Cl($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function l96($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Cl($))}&sz=${Z}`}function c96($,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 d96($){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()?c96(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):c96(`How does ${X} really perform? ${J}`,200);return{title:G,description:K}}import{z as X1}from"zod";var Tx,bf$,yf$,gf$,hf$,m96;var i96=O(()=>{Tx=X1.enum(["good","bad","neutral"]),bf$=X1.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},X1.object({kind:X1.enum(["text","number","sparkline","badge","score"]).catch("text"),value:X1.coerce.string().optional(),tone:Tx.optional(),muted:X1.boolean().optional(),delta:X1.coerce.string().optional(),deltaDir:X1.enum(["up","down","neutral"]).optional(),points:X1.array(X1.coerce.number()).optional(),label:X1.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 $})),yf$=X1.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},X1.array(bf$)),gf$={key:X1.coerce.string(),title:X1.coerce.string(),eyebrow:X1.coerce.string().optional(),headline:X1.coerce.string(),annotation:X1.coerce.string().optional(),methodology:X1.coerce.string().optional(),sources:X1.array(X1.object({name:X1.coerce.string(),logoUrl:X1.coerce.string()})).optional()},hf$=X1.discriminatedUnion("template",[X1.object({template:X1.literal("cover"),score:X1.object({value:X1.coerce.number(),max:X1.coerce.number().optional(),grade:X1.coerce.string().optional(),label:X1.coerce.string().optional()}).optional(),brandImage:X1.coerce.string().optional(),screenshot:X1.coerce.string().optional(),mobileScreenshot:X1.coerce.string().optional()}),X1.object({template:X1.literal("cta"),ctaUrl:X1.coerce.string().optional(),ctaLabel:X1.coerce.string().optional(),bullets:X1.array(X1.coerce.string()).optional()}),X1.object({template:X1.literal("series"),points:X1.array(X1.coerce.number()).min(2),xLabels:X1.array(X1.coerce.string()).min(1),unit:X1.coerce.string().optional(),callout:X1.object({index:X1.coerce.number(),value:X1.coerce.string(),tone:Tx.optional()})}),X1.object({template:X1.literal("threshold"),value:X1.coerce.string().default(""),metricLabel:X1.coerce.string().optional(),ratio:X1.coerce.number(),thresholdRatio:X1.coerce.number().optional(),thresholdLabel:X1.coerce.string().default(""),tone:Tx.optional()}),X1.object({template:X1.literal("stats"),stats:X1.array(X1.object({value:X1.coerce.string(),label:X1.coerce.string(),tone:Tx.optional()})).min(1)}),X1.object({template:X1.literal("bars"),items:X1.array(X1.object({value:X1.coerce.string(),label:X1.coerce.string(),ratio:X1.coerce.number(),tone:Tx.optional()})).min(1)}),X1.object({template:X1.literal("gauges"),gauges:X1.array(X1.object({label:X1.coerce.string(),value:X1.coerce.string(),status:X1.enum(["good","warn","bad"]).catch("warn"),caption:X1.coerce.string().optional(),ratio:X1.coerce.number().optional()})).min(1)}),X1.object({template:X1.literal("checklist"),checks:X1.array(X1.object({label:X1.coerce.string(),status:X1.enum(["pass","fail","warn"]).catch("fail"),value:X1.coerce.string().optional()})).min(1)}),X1.object({template:X1.literal("table"),columns:X1.array(X1.object({label:X1.coerce.string(),align:X1.enum(["left","right"]).optional()})).min(1),rows:X1.array(yf$).min(1),highlightRow:X1.coerce.number().optional()}),X1.object({template:X1.literal("products"),products:X1.array(X1.object({name:X1.coerce.string(),price:X1.coerce.string().optional(),image:X1.coerce.string().optional(),url:X1.coerce.string().optional()})).min(1)}),X1.object({template:X1.literal("list"),entries:X1.array(X1.object({label:X1.coerce.string(),severity:X1.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:X1.coerce.number().optional()}),X1.object({template:X1.literal("keywords"),volumeLabel:X1.coerce.string().optional(),keywords:X1.array(X1.object({term:X1.coerce.string(),volume:X1.coerce.string(),position:X1.coerce.number().catch(0)})).min(1)}),X1.object({template:X1.literal("competitor"),metricLabel:X1.coerce.string().optional(),competitors:X1.array(X1.object({name:X1.coerce.string(),value:X1.coerce.string(),tone:Tx.optional(),isYou:X1.boolean().optional()})).min(1)}),X1.object({template:X1.literal("scorecard"),rivalLabel:X1.coerce.string().optional(),dimensions:X1.array(X1.object({label:X1.coerce.string(),you:X1.coerce.string(),rival:X1.coerce.string().optional(),rivalName:X1.coerce.string().optional(),tone:Tx.optional()})).min(1)})]),m96=X1.object({...gf$,template:hf$})});function lM0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=m96.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var dU1=O(()=>{i96()});import{join as n96}from"path";async function cf$($){try{let Z=await fetch(`${aW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(uf$)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=lM0(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()||lU1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function cG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function lf$($,Z){let X=Cl($),Q=Z?.brand?.trim()||lU1(X),Y=l96(X,128),J=`${(o0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:K,description:W}=d96({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${cG(K)}</title>`,`<meta name="description" content="${cG(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="${cG(K)}" />`,`<meta property="og:description" content="${cG(W)}" />`,`<meta property="og:url" content="${cG(J)}" />`,`<meta property="og:image" content="${cG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${cG(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${cG(K)}" />`,`<meta name="twitter:description" content="${cG(W)}" />`,`<meta name="twitter:image" content="${cG(H)}" />`,`<meta name="twitter:image:alt" content="${cG(N)}" />`,`<link rel="canonical" href="${cG(J)}" />`,`<link rel="icon" href="${cG(Y)}" sizes="any" />`].join(`
4042
4042
  `)}function df$($,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}
4043
4043
  </head>`)}function p96($){let Z=new I1;return Z.get("/:domain/og.png",async(X)=>{let Q=Cl(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(n96($,"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(mf$)}),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=$?n96($,"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 cf$(Cl(Q)),W=lf$(Q,K);return X.html(df$(J,W),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var uf$=2500,mf$=1e4;var t96=O(()=>{d6();dU1();Cz();q8()});function l00($,Z){return fetch(`${aW({})}${$}`,Z)}async function if$($,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 l00(`/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}=lM0(J);return{status:K.slides.length?"ready":"empty",deck:K,scanned_at:J.scanned_at,drops:W}}var nf$,xF,o96=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},r96;var a96=O(()=>{d6();k3();Cz();dU1();nf$=new Set(["complete","errored","terminated","unknown"]),xF=new I1;xF.use("*",async($,Z)=>{let X=await V6.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});xF.use("/link-token/*",o96);xF.use("/suggest",o96);xF.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 if$(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)}});xF.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 l00("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Sz({})}`},body:JSON.stringify({url:Q,...Y?{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)}});xF.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await l00(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${Sz({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:nf$.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});xF.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await l00(`/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)}});xF.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await l00(`/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:[]})}});r96=xF});import{createHmac as pf$,timingSafeEqual as tf$}from"crypto";function e96($,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)>of$)return!1;let K=pf$("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&&tf$(W,N)})}function $Z6($){let Z;try{Z=JSON.parse($)}catch{return null}let X=NJ(Z),Q=NJ(NJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:YN(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 ZZ6($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function YN($){return typeof $==="string"?$:void 0}function NJ($){return typeof $==="object"&&$!==null?$:void 0}function dM0($){return typeof $==="number"?new Date($*1000):null}function nU1($){return YN($)??YN(NJ($)?.id)}function rf$($){return nU1($.subscription)??YN(NJ(NJ($.parent)?.subscription_details)?.subscription)}function af$($){let Z=dM0($.current_period_end);if(Z)return Z;let X=NJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=NJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function mU1($,Z){let X=dM0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function iU1($,Z){let X=dM0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function sf$($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=YN(NJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(YN(NJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(YN(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=YN(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(NJ(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:NJ(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(YN(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=nU1(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(mU1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:nU1(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:iU1(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=YN(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&&mU1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":ZZ6(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:af$(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:iU1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=rf$(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(mU1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:dM0(X.period_end),lastStripeEventAt:iU1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function ef$($,Z){if(!Z.handled||$.livemode===!1)return null;let X=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:ZZ6(X.status),...typeof X.cancel_at_period_end==="boolean"?{cancel_at_period_end:X.cancel_at_period_end}:{}}};case"invoice.paid":if(X.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function s96($,Z){let X=ef$($,Z);if(!X)return;HG({event:X.name,organizationId:X.organizationId,...$.id?{uuid:FJ8(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function XZ6($){let Z=new pW(U6().db),X=await sf$(Z,$);if(!(X.handled&&X.topUp))s96($,X);if(X.handled&&X.topUp)await Py8({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),s96($,X);if(!X.handled&&X.orphanSubscriptionId)try{await LF8(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof OG&&(Q.status===400||Q.status===404)))throw Q}return X}var of$=300;var QZ6=O(()=>{ZX();y4();UY0();uz();UY1()});var $b$=1048576,pU1;var YZ6=O(()=>{d6();lL();q8();QZ6();pU1=new I1;pU1.post("/webhook",vZ({maxSize:$b$,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=o0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!e96(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=$Z6(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await XZ6(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as Zb$}from"crypto";function Qb$($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==Q.length)return!1;return Zb$(Buffer.from(Y),Buffer.from(Q))}var Xb$=5242880,tU1;var GZ6=O(()=>{d6();lL();jr();tU1=new I1;tU1.post("/webhook",vZ({maxSize:Xb$,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=process.env.GITHUB_WEBHOOK_SECRET;if(!Z)return $.json({error:"github webhook not configured"},503);let X=await $.req.text();if(!Qb$(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let Y=Q.ref,G=Q.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let K=(await S$1())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:K})})});function JZ6($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var KZ6,Yb$,Gb$,WZ6;var HZ6=O(()=>{d6();XK();Zu();$h();KZ6=new I1,Yb$=["range","if-none-match","if-modified-since"],Gb$=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];KZ6.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Gl($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new K8(401,{message:"Authentication required"})}if(!X)throw new K8(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new K8(400,{message:"Missing file key"});let Y=await sr(Q,Z);if(!Y)throw new K8(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&KK()){let W=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!W)throw new K8(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 JZ6(F,H),new Response(U,{status:200,headers:F})}let G=new Headers;for(let W of Yb$){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 K8(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 K8(502,{message:"Upstream storage error"});let K=new Headers;for(let W of Gb$){let H=J.headers.get(W);if(H)K.set(W,H)}return K.set("Cache-Control","private, max-age=86400"),JZ6(K,K.get("content-type")??""),new Response(J.body,{status:J.status,headers:K})});WZ6=KZ6});var d00=_((Rx)=>{var Jb$=Rx&&Rx.__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]}),Kb$=Rx&&Rx.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))Jb$(Z,$,X)};Object.defineProperty(Rx,"__esModule",{value:!0});Kb$($G(),Rx)});var FZ6=_((NZ6)=>{Object.defineProperty(NZ6,"__esModule",{value:!0});NZ6.version=void 0;NZ6.version="3.4.0"});var OZ6=_((GN)=>{var Wb$=GN&&GN.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(GN,"__esModule",{value:!0});GN.NodeTransport=GN.VERSION=void 0;GN.nodeResolveHost=wb$;var J5=d00(),Hb$=U0("net"),oU1=U0("tls"),Nb$=U0("path"),BZ6=U0("fs"),Ub$=Wb$(U0("dns")),Fb$=FZ6();GN.VERSION=Fb$.version;var Bb$="nats.js";class wZ6{socket;version;lang;yields=[];signal=(0,J5.deferred)();closedNotification=(0,J5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=Bb$,this.version=GN.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,J5.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 J5.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 J5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,K=J==="ECONNREFUSED"?new J5.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),K}}dial($){let Z=(0,J5.deferred)(),X,Q=(0,Hb$.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,J5.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=J5.DataBuffer.concat(...this.yields),Y=(0,J5.extractProtocolMessage)(Q);if(Y!=="")try{let G=J5.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,J5.deferred)();try{if($=(0,Nb$.resolve)($),!(0,BZ6.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,BZ6.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,J5.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new J5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,J5.deferred)();try{let Y=(0,oU1.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 J5.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,J5.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new J5.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,J5.deferred)();try{let Q=(0,oU1.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 J5.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,J5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,J5.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 oU1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,J5.render)($)}`);let Z=(0,J5.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,J5.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,J5.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}}GN.NodeTransport=wZ6;function wb$($){let Z=(0,J5.deferred)();return Ub$.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 jZ6=_((zZ6)=>{Object.defineProperty(zZ6,"__esModule",{value:!0});zZ6.connect=Ob$;var LZ6=OZ6(),DZ6=d00(),EZ6=d00();function Ob$($={}){if((0,EZ6.hasWsProtocol)($))return Promise.reject(EZ6.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,DZ6.setTransportFactory)({factory:()=>{return new LZ6.NodeTransport},dnsResolveFn:LZ6.nodeResolveHost}),DZ6.NatsConnectionImpl.connect($)}});var PZ6=_((fF)=>{var Db$=fF&&fF.__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]}),Eb$=fF&&fF.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))Db$(Z,$,X)};Object.defineProperty(fF,"__esModule",{value:!0});fF.connect=void 0;var zb$=jZ6();Object.defineProperty(fF,"connect",{enumerable:!0,get:function(){return zb$.connect}});Eb$(d00(),fF)});function IZ6($){let Z=$?.connectFn??Tb$,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 B of F.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function U(F,B){let w=0;while(!G)try{X=await Z({servers:F,timeout:Ab$,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${w} attempt(s)`),Q=null,J=!1,N(X),H();return}catch{w++;let L=H7(Pb$,jb$,w-1,2,0.5);await z8(L)}}return{init(F,B){if(Y)return;Y=!0,G=!1;let w=B?.creds?AZ6.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(F,w).catch(()=>{})},isConnected(){return W()},getConnection(){return W()?X:null},getJetStream(){if(!W())return null;if(!Q)Q=RZ6.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 Tb$($){return TZ6.connect($)}var AZ6,TZ6,RZ6,jb$=100,Pb$=3000,Ab$=3000;var qZ6=O(()=>{t4();AZ6=k(Si(),1),TZ6=k(PZ6(),1),RZ6=k(TE(),1)});function rU1($,Z){return`${$}.${Z}`}class aU1{cache;constructor($){this.cache=nc({ttlMs:$?.ttlMs??Rb$,maxSize:$?.maxSize??Ib$})}async get($,Z){return this.cache.get(rU1($,Z))??null}async set($,Z,X){this.cache.set(rU1($,Z),X)}async invalidate($,Z){this.cache.delete(rU1($,Z))}teardown(){this.cache.clear()}}var Rb$=600000,Ib$=5000;var MZ6=()=>{};function mM0($,Z){return`${$}:${Z}`}function sU1($){let Z=nc({ttlMs:$?.ttlMs??qb$,maxSize:$?.maxSize??Mb$}),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(VZ6,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(mM0(W,H))},set(W,H,N){Z.set(mM0(W,H),N)},invalidate(W,H){Z.delete(mM0(W,H)),K(W,H)},start(){if(J)return;let W=X?.();if(!W)return;J=W.subscribe(VZ6),(async()=>{for await(let H of J)try{let N=JSON.parse(G.decode(H.data));if(N.originId===Q)continue;Z.delete(mM0(N.organizationId,N.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var VZ6="studio.ai-provider-keys.invalidate",qb$=30000,Mb$=5000;var kZ6=()=>{};class eU1{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=SZ6.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 SZ6)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 SZ6;var CZ6=O(()=>{SZ6=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var _Z6=($)=>{let Z;return()=>Z??=$()},$F1,ZF1;var vZ6=O(()=>{o$();$F1=_Z6(()=>x8.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),ZF1=_Z6(()=>x8.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function xb$(){return{name:$F,subjects:[`${FA0}.>`],storage:aK.StorageType.File,max_age:Sb$,max_bytes:_b$,max_msgs_per_subject:vb$,discard:aK.DiscardPolicy.Old,retention:aK.RetentionPolicy.Limits,duplicate_window:Cb$,num_replicas:1}}class bZ6{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 xZ6($){let Z=fZ6.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function gb$($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((K)=>{if(X++,kb$().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 hb$($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class XF1{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=xb$(),X=await i5(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await aK.jetstreamManager($);try{await Q.streams.info($F),await Q.streams.update($F,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($F),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:hb$});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=gb$(Z,Q),J=!1,K=()=>{if(J)return;J=!0;let H=sC8(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",K,{once:!0});let W=(H)=>{let N=performance.now(),U=GZ1(H,{runId:Z}),F=performance.now()-N;if($F1().record(F),ZF1().add(1,{"org.id":Q??"unknown"}),yb$?.record(F,U.reduce((B,w)=>B+w.data.length,0)),U.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let B of U)G.publish(Y,B.subject,B.data,B.headers?xZ6(B.headers):void 0)};return(async()=>{let H=$.getReader(),N=0,U=0,F;try{while(!0){let{done:B,value:w}=await H.read();if(B)break;if(W(w),U++,++N>=64)N=0,await new Promise((L)=>setImmediate(L))}}catch(B){F=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),K(),bb$)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=GZ1(Z,{runId:$,dedup:X});if($F1().record(performance.now()-Y),ZF1().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:xZ6(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=aC8({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"?aK.DeliverPolicy.New:aK.DeliverPolicy.All,G=X?.closeOnDone??!1,J=$L($),K;try{K=await(await Q.consumers.get($F,{filter_subjects:J,deliver_policy:Y})).consume()}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let N=DA0({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(BA0()).pipeThrough(wA0()).getReader(),U=!1,F=()=>{if(U)return;U=!0;try{N.releaseLock()}catch{}},B=!1,w=()=>{if(B)return;B=!0,K.stop(),N.cancel().catch(()=>{}),F()};return Z?.addEventListener("abort",w,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:D,value:E}=await N.read();if(D){w(),L.close();return}let z=E;if(z.kind==="done"){if(G){w(),L.close();return}continue}L.enqueue(z.chunk);return}},cancel(){w()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge($F,{filter:$L($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var aK,fZ6,Vb$=($)=>{let Z;return()=>Z??=$()},kb$,Sb$=86400000000000,Cb$=120000000000,_b$=4294967296,vb$=500000,fb$,bb$,yb$;var yZ6=O(()=>{t4();JZ1();EA0();OA0();o$();vZ6();aK=k(TE(),1),fZ6=k(Si(),1),kb$=Vb$(()=>x8.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));fb$=process.env.STREAM_ENCODE_TRACE==="1",bb$=process.env.DECOPILOT_STREAM_TRACE==="1";yb$=fb$?new bZ6:null});function iM0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,SW(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 gZ6=O(()=>{j6()});class QF1{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}function nb$($){return $ instanceof LX}function pb$($,Z){return Z-$>=mb$}class YF1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,X,Q={}){this.taskBoard=$;this.contextFactory=Z;this.billing=X;this.options=Q}start(){if(this.timer)return;let $=this.options.intervalMs??ub$;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??lb$,X=this.options.itemIntervalMs??cb$,Q=new Date(Date.now()-X),Y=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Q),G=Y.at(-1);this.cursor=Y.length===Z&&G?{updatedAt:G.updatedAt,id:G.id}:null;for(let{id:J,organizationId:K}of Y)try{if(await this.reconcileItem(J,K,Q))$++}catch(W){console.error(`[task-board-review-sweeper] ${J} failed`,W)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-G91),iZ1);for(let X of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${X.threadId} on ${X.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-ib$));for(let{id:X,organizationId:Q,threadId:Y}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${X}`),await q91(this.taskBoard,Y,Q),await M91(this.taskBoard,this.billing,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y);if(!J||J.status!=="in_progress"||J.assigneeId!==V4)continue;let K=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!K)continue;await ZF(K,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${G})`)}catch(J){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),nb$(J)){await this.returnToTodo(Q,Y,J instanceof Error?J.message:String(J));continue}await this.taskBoard.scheduleRunRetry(Q,Y,G,new Date(Date.now()+db$)).catch((K)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,K))}return Z}async returnToTodo($,Z,X){try{let Q=await this.taskBoard.getById($,Z);if(!Q||Q.status!=="in_progress")return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,Q.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),G4(Z,Y)}catch(Q){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Q)}}async handOffReviewWithoutPr($,Z){let X=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!pb$(MU(X),Date.now()))return;await MH($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,X){if(!await this.taskBoard.claimSweep($,Z,X))return!1;let Q=await this.taskBoard.getById($,Z);if(!Q)return!1;if(Q.status!=="in_review")return!1;let Y=Q.assigneeId===V4,G=await this.taskBoard.listPrs($,Z),J=await this.contextFactory(Z,Q.assignedBy??Q.createdBy);if(!J)return!1;if(G.length===0){if(Y)await this.handOffReviewWithoutPr(J,Q);return!1}if(await Fv8(J,Q))return!0;if(!Y)return!1;let K=await Promise.all(G.map(async(W)=>({...W,...await Ou(Z,W)})));if(K.every((W)=>W.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${K.length} PR(s)) \u2014 proceeding on unknown`);if(!cZ1(K))return!1;return await RA0(J,Q,{previewMatchesHead:lZ1(K)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var ub$=60000,cb$=300000,lb$=50,db$=60000,mb$=900000,ib$=120000;var hZ6=O(()=>{e9();vZ1();ZL();Oa();c9();FK();nZ1();kH();Na()});import{readdir as tb$,rm as nM0}from"fs/promises";import{join as pM0}from"path";async function tM0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-ob$),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await Ix($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await uZ6($,Y,Z);else if(!Y.startsWith(".")){let G=pM0($,Y),J=await Ix(G);for(let W of J){if(!/^\d{4}$/.test(W))continue;X+=await uZ6(G,W,Z)}if((await Ix(G)).length===0)await nM0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function uZ6($,Z,X){let Q=0,Y=pM0($,Z),G=await Ix(Y);for(let K of G){if(!/^\d{2}$/.test(K))continue;let W=pM0(Y,K),H=await Ix(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 B=pM0(W,U);await nM0(B,{recursive:!0,force:!0}),Q++}}if((await Ix(W)).length===0)await nM0(W,{recursive:!0,force:!0})}if((await Ix(Y)).length===0)await nM0(Y,{recursive:!0,force:!0});return Q}async function Ix($){try{return(await tb$($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var ob$=30;var GF1=()=>{};import{DBOS as JF1,SchedulerMode as rb$}from"@dbos-inc/dbos-sdk";async function sb$(){let $=[qJ(),wb(),uN()],Z=0;for(let X of $)try{Z+=await tM0(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 eb$($,Z){await JF1.runStep(()=>sb$(),{name:"monitoringRetention"})}function lZ6(){if(cZ6)return;cZ6=!0;let $=JF1.registerWorkflow(eb$,{name:"monitoringRetentionWorkflow"});JF1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:ab$,mode:rb$.ExactlyOncePerIntervalWhenActive})}var ab$="23 4 * * *",cZ6=!1;var dZ6=O(()=>{tY();GF1()});function mZ6($){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 d3.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await WH1($.db,Z,Q.role);return Y.boundAuth=KH1({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new Bz(X,void 0,Y.boundAuth,Q.role,"self"),XL(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var iZ6=O(()=>{wz();Qv()});import{EventEmitter as $y$}from"events";var KF1;var nZ6=O(()=>{HE();KF1=new $y$;KF1.on("request",($)=>{_B($)})});function pZ6(){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 B=_l(F.params.name),w=F.params.arguments||{},L=Object.keys(w).map((E)=>_l(E)),D=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";G=`${O5.tool}${B}${O5.dim}(${D})${O5.reset}`}else if(F.method)G=`${O5.dim}${_l(F.method)}${O5.reset}`}}catch{}}let K=_l(Y);if(Y.startsWith("/mcp/conn_")){let N=Y.split("/")[2]??"";K=`/mcp/${O5.mcp}${_l(N.slice(0,12))}\u2026${O5.reset}`}else if(Y==="/mcp")K=`${O5.mcp}/mcp${O5.reset}`;else if(Y==="/mcp/registry")K=`${O5.mcp}/mcp/registry${O5.reset}`;let W=Xy$(Q),H=J?"\u25C0":"\u2190";if(!XZ0())console.log(`${O5.dim}${H}${O5.reset} ${W}${Q}${O5.reset} ${K}${G?` ${G}`:""}`);try{await Z()}finally{let N=Date.now()-X,U=$.res.status,F=Zy$(U),B=N<1000?`${N}ms`:`${(N/1000).toFixed(1)}s`,w=J?"\u25B6":"\u2192";if(!XZ0())console.log(`${O5.dim}${w}${O5.reset} ${W}${Q}${O5.reset} ${K}${G?` ${G}`:""} ${F}${U}${O5.reset} ${O5.duration}${B}${O5.reset}`);KF1.emit("request",{method:Q,path:_l(Y),status:U,duration:N,timestamp:new Date})}}}var O5,Zy$=($)=>{if($>=500)return O5.serverError;if($>=400)return O5.clientError;if($>=300)return O5.redirect;return O5.ok},Xy$=($)=>{return O5[$]||O5.reset},_l=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var tZ6=O(()=>{HE();nZ6();O5={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 sZ6}from"crypto";import{mkdir as Qy$,readdir as Yy$,rm as oZ6,stat as eZ6}from"fs/promises";import{join as HF1,relative as Gy$}from"path";import{z as k8}from"zod";function Z76($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return HF1(Jy$,Z)}function X76($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function WF1($,Z){let X=Z76($),Q=X76(Z);return HF1(X,Q)}function Ky$($,Z,X,Q){let Y=o0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return sZ6("sha256",Y).update(G).digest("hex")}function aZ6($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=Ky$(Z,X,G,Y),K=new URL(`/api/dev-assets/${Z}/${X76(X)}`,$);return K.searchParams.set("expires",G.toString()),K.searchParams.set("signature",J),K.searchParams.set("method",Y),K.toString()}function Q76($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${sZ6("md5","etag").update(Q).digest("hex")}"`}async function Y76($,Z,X,Q,Y){try{let G=await Yy$($,{withFileTypes:!0});for(let J of G){let K=HF1($,J.name),H=Gy$(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 Y76(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 eZ6(K);Y.objects.push({key:H,size:N.size,lastModified:N.mtime.toISOString(),etag:Q76(K,N.mtime,N.size)})}catch{}}}}catch{}}function G76($,Z){let Q=X0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:k8.object({prefix:k8.string().optional(),maxKeys:k8.number().optional().default(1000),continuationToken:k8.string().optional(),delimiter:k8.string().optional()}),outputSchema:k8.object({objects:k8.array(k8.object({key:k8.string(),size:k8.number(),lastModified:k8.string(),etag:k8.string()})),nextContinuationToken:k8.string().optional(),isTruncated:k8.boolean(),commonPrefixes:k8.array(k8.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",K=G.maxKeys??1000,W=G.delimiter,H=G.continuationToken,N=Z76(Q);await Qy$(N,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await Y76(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 B=U.objects.slice(F,F+K),w=F+K<U.objects.length,L=w?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:w,nextContinuationToken:L,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:k8.object({key:k8.string()}),outputSchema:k8.object({contentType:k8.string().optional(),contentLength:k8.number(),lastModified:k8.string(),etag:k8.string(),metadata:k8.record(k8.string(),k8.string()).optional()}),handler:async(Y)=>{let G=Y,J=WF1(Q,G.key),K=await eZ6(J);return{contentType:pH1(G.key),contentLength:K.size,lastModified:K.mtime.toISOString(),etag:Q76(J,K.mtime,K.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:k8.object({key:k8.string(),expiresIn:k8.number().optional()}),outputSchema:k8.object({url:k8.string(),expiresIn:k8.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??rZ6;return{url:aZ6(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:k8.object({key:k8.string(),expiresIn:k8.number().optional(),contentType:k8.string().optional()}),outputSchema:k8.object({url:k8.string(),expiresIn:k8.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??rZ6;return{url:aZ6(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:k8.object({key:k8.string()}),outputSchema:k8.object({success:k8.boolean(),key:k8.string()}),handler:async(Y)=>{let G=Y,J=WF1(Q,G.key);try{return await oZ6(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:k8.object({keys:k8.array(k8.string()).max(1000)}),outputSchema:k8.object({deleted:k8.array(k8.string()),errors:k8.array(k8.object({key:k8.string(),message:k8.string()}))}),handler:async(Y)=>{let G=Y,J=[],K=[];return await Promise.all(G.keys.map(async(W)=>{let H=WF1(Q,W);try{await oZ6(H),J.push(W)}catch(N){K.push({key:W,message:N instanceof Error?N.message:"Unknown error"})}})),{deleted:J,errors:K}}}]}async function NF1($,Z,X){let Q=G76(Z,X),Y=new yW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:A5});for(let J of Q){let K="shape"in J.inputSchema?J.inputSchema.shape:k8.object({}).shape,W=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:k8.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 AQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),o3(Y,G,$,"mcp:dev-assets")}async function J76($,Z,X,Q){let G=G76(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 Jy$="./data/assets",rZ6=3600,$76,K76;var W76=O(()=>{q8();Au();d6();fn();Wv();XQ();lq0();$76=new I1;$76.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return NF1($.req.raw,Z,Q)});K76=$76});var H76={};w0(H76,{mountDevRoutes:()=>Wy$});function Wy$($,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 NF1(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 J76(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",K76);let X=new I1;X.use("*",oK({mountPath:"/api/dev-assets"})),X.route("/",cq0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var N76=O(()=>{d6();uH1();lq0();W76()});import{sql as Hy$}from"kysely";import{randomUUID as U76}from"crypto";import{z as Ny$}from"zod";async function Fy$($){let Z=new Date().toISOString(),X=U76(),Q=e4.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:U76(),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 Hy$`SELECT