decocms 4.371.4 → 4.371.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) hide show
  1. package/dist/client/assets/{AlertCircle-DkoTBUue.js → AlertCircle-DvBbVFl2.js} +1 -1
  2. package/dist/client/assets/{AreaChart-DlexVvHr.js → AreaChart-CNXBC2N-.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-eoxjWHed.js → ArrowLeft-wI4krJ9Y.js} +1 -1
  4. package/dist/client/assets/{ArrowRight-BbuAJZmx.js → ArrowRight-CJoVEu8j.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-CseIJyft.js → ArrowUp-C1e0rkBx.js} +1 -1
  6. package/dist/client/assets/{CartesianChart--SFPDO1V.js → CartesianChart-B1JNpS0v.js} +1 -1
  7. package/dist/client/assets/{Check-BDjrzcrN.js → Check-Cxzkl-yh.js} +1 -1
  8. package/dist/client/assets/{CheckCircle-CSZ4Kehv.js → CheckCircle-DDBAaANE.js} +1 -1
  9. package/dist/client/assets/{ChevronRight-DFWFq-ve.js → ChevronRight-Di63O0-s.js} +1 -1
  10. package/dist/client/assets/{ChevronSelectorVertical-C9J9C02y.js → ChevronSelectorVertical-UUOgZ2AB.js} +1 -1
  11. package/dist/client/assets/{ChevronUp-BrOu8rnp.js → ChevronUp-C3BACdf2.js} +1 -1
  12. package/dist/client/assets/{Copy01-CCOGzU1d.js → Copy01-Bv1k7w6n.js} +1 -1
  13. package/dist/client/assets/{CreditCard01-CuoUWRm0.js → CreditCard01-CccHRTMw.js} +1 -1
  14. package/dist/client/assets/{Database01-CJba45_T.js → Database01-DVg7hkmv.js} +1 -1
  15. package/dist/client/assets/{DotsVertical-mYRVr9AH.js → DotsVertical-lajzikiZ.js} +1 -1
  16. package/dist/client/assets/{Download01-Bd0rofRl.js → Download01-BNWtA4eM.js} +1 -1
  17. package/dist/client/assets/{ErrorBarContext-C0lyL2YC.js → ErrorBarContext-CnWQDTNc.js} +1 -1
  18. package/dist/client/assets/{Eye-74QOe9cC.js → Eye-BZdMUyFo.js} +1 -1
  19. package/dist/client/assets/{File02-CmMbIRXN.js → File02-a9yLOR3g.js} +1 -1
  20. package/dist/client/assets/{GitBranch01-BKO8WN_h.js → GitBranch01-D5TBCGBU.js} +1 -1
  21. package/dist/client/assets/{Globe01-Ck7RTkU3.js → Globe01-APrZahgX.js} +1 -1
  22. package/dist/client/assets/{HardDrive-DU6J9iPu.js → HardDrive-CG35ynrA.js} +1 -1
  23. package/dist/client/assets/{Image01-DnYDSI2h.js → Image01-BhGz13Q2.js} +1 -1
  24. package/dist/client/assets/{Key01-BZd6Jwvq.js → Key01-CFB1jqqu.js} +1 -1
  25. package/dist/client/assets/{Line-G0r0o9gn.js → Line-DDrDkd01.js} +1 -1
  26. package/dist/client/assets/{Link01-B52qN1xV.js → Link01-Cd_6IOej.js} +1 -1
  27. package/dist/client/assets/{LinkExternal01-BDgcOJqm.js → LinkExternal01-Bf93S5X1.js} +1 -1
  28. package/dist/client/assets/{MessageCircle01-CwQvoxPA.js → MessageCircle01-D8e4seU4.js} +1 -1
  29. package/dist/client/assets/{Monitor01-BcYUPleF.js → Monitor01-DFIqZEjO.js} +1 -1
  30. package/dist/client/assets/{Package-C4SRuwMw.js → Package-BO4bTpkD.js} +1 -1
  31. package/dist/client/assets/{Palette-C9EL1sNC.js → Palette-BXvQWS6f.js} +1 -1
  32. package/dist/client/assets/{Play-CyyInR_v.js → Play-2DhOE_I8.js} +1 -1
  33. package/dist/client/assets/{Plus-BEdGLMcS.js → Plus-mTbvMfTr.js} +1 -1
  34. package/dist/client/assets/{Printer-BgQcHd8s.js → Printer-BXAxYkki.js} +1 -1
  35. package/dist/client/assets/{SearchLg-D8sOk12E.js → SearchLg-Dhcwbcep.js} +1 -1
  36. package/dist/client/assets/{SearchMd-CVv1yVth.js → SearchMd-odD-lg41.js} +1 -1
  37. package/dist/client/assets/{Sector-CvQy_NRt.js → Sector-DGpJVCkP.js} +1 -1
  38. package/dist/client/assets/{Settings02-7e_CWXN4.js → Settings02-Ky6GgfHc.js} +1 -1
  39. package/dist/client/assets/{Share07-CWr7FJF7.js → Share07-Di5cvJUV.js} +1 -1
  40. package/dist/client/assets/{Shield01-B8e5sZlX.js → Shield01-DGqn0GF7.js} +1 -1
  41. package/dist/client/assets/{Stars01-DtXaEO3a.js → Stars01-D7Yd9FWF.js} +1 -1
  42. package/dist/client/assets/{Sun-I1e-KcTY.js → Sun-lw0EfACM.js} +1 -1
  43. package/dist/client/assets/{SwitchHorizontal01-BRr1FvfD.js → SwitchHorizontal01-DFrX1mB1.js} +1 -1
  44. package/dist/client/assets/{Tool01-dFp1h9Fm.js → Tool01-CRVAydql.js} +1 -1
  45. package/dist/client/assets/{Tool02-DEN5a-af.js → Tool02-C5SroA8Z.js} +1 -1
  46. package/dist/client/assets/{Trash01-DGA8npEZ.js → Trash01-CpkPv_9i.js} +1 -1
  47. package/dist/client/assets/{TrendUp01-BK_K6NH_.js → TrendUp01-BKZoyaLF.js} +1 -1
  48. package/dist/client/assets/{Upload01-B3v_JBAz.js → Upload01-DrX9It_D.js} +1 -1
  49. package/dist/client/assets/{User01-Dbdndpwo.js → User01-KomMNUAk.js} +1 -1
  50. package/dist/client/assets/{UserSquare-DZNy5OUH.js → UserSquare-CiYReCPp.js} +1 -1
  51. package/dist/client/assets/{Users01-AYbQCr7m.js → Users01-CUkpRrgA.js} +1 -1
  52. package/dist/client/assets/{Users03-CUK-7hPD.js → Users03-Q8n4oEYP.js} +1 -1
  53. package/dist/client/assets/{X-BH7q4C1t.js → X-xvdY-IP3.js} +1 -1
  54. package/dist/client/assets/{XCircle-CFDcIdAJ.js → XCircle-Cm0q40Bp.js} +1 -1
  55. package/dist/client/assets/{XClose-2vlbdyhB.js → XClose-B0out0G8.js} +1 -1
  56. package/dist/client/assets/{Zap-Df8_LH9g.js → Zap-Ds3cA-1E.js} +1 -1
  57. package/dist/client/assets/{ZoomOut-CvFdKFHJ.js → ZoomOut-CkKqfrID.js} +1 -1
  58. package/dist/client/assets/{access-gate-Bz_XB_uN.js → access-gate-blDozGWR.js} +1 -1
  59. package/dist/client/assets/{add-connection-dialog-CazdSHRl.js → add-connection-dialog-BDIrfhzH.js} +1 -1
  60. package/dist/client/assets/{agent-analytics-BUU5OHJ0.js → agent-analytics-BV5JC5r_.js} +1 -1
  61. package/dist/client/assets/agent-app-B3LVEWM9.js +1 -0
  62. package/dist/client/assets/{agent-assets-koBUkOuF.js → agent-assets-CXjf1pVc.js} +1 -1
  63. package/dist/client/assets/{agent-automation-s5o8QjN7.js → agent-automation-E1FJgffp.js} +1 -1
  64. package/dist/client/assets/{agent-automations-BEgeK_8a.js → agent-automations-B_nM6Hcl.js} +1 -1
  65. package/dist/client/assets/{agent-connect-sources-Cw1ElYdi.js → agent-connect-sources-D4-tWFb-.js} +1 -1
  66. package/dist/client/assets/agent-deck-CUDniMqu.js +1 -0
  67. package/dist/client/assets/{agent-e2e-D0tGNaa-.js → agent-e2e-C-OQSGO4.js} +1 -1
  68. package/dist/client/assets/{agent-experiments-CF1wr09V.js → agent-experiments-BI4okidg.js} +1 -1
  69. package/dist/client/assets/agent-file-QbD9SRv2.js +1 -0
  70. package/dist/client/assets/{agent-git-X9feic8X.js → agent-git-Dvq8Seyv.js} +1 -1
  71. package/dist/client/assets/{agent-hosting-CiIEbvp9.js → agent-hosting-DrvWjfNg.js} +1 -1
  72. package/dist/client/assets/{agent-icon-CWoY8dlp.js → agent-icon-CqLreCFl.js} +1 -1
  73. package/dist/client/assets/agent-library-file-JlNcL2FU.js +1 -0
  74. package/dist/client/assets/{agent-monitor-dM1U0oHi.js → agent-monitor-C5-kms7W.js} +1 -1
  75. package/dist/client/assets/{agent-overview-b_OH54f9.js → agent-overview-6rkN6b2F.js} +1 -1
  76. package/dist/client/assets/agent-settings-ySUyWCOK.js +1 -0
  77. package/dist/client/assets/{agent-site-editor-BBBwvkn-.js → agent-site-editor-D4WEaCig.js} +1 -1
  78. package/dist/client/assets/agent-site-editor-code-Bh_ZZ7R1.js +2 -0
  79. package/dist/client/assets/{agent-site-editor-content-6RAz4TG_.js → agent-site-editor-content-BwEtJ4T2.js} +2 -2
  80. package/dist/client/assets/{agent-site-editor-preview-Dgz_F_iP.js → agent-site-editor-preview-C_JrP8iZ.js} +3 -3
  81. package/dist/client/assets/agent-view-Dl1hyNsP.js +1 -0
  82. package/dist/client/assets/{agent-view-guard-BwVsll67.js → agent-view-guard-02MPEKYe.js} +1 -1
  83. package/dist/client/assets/{agents-list-saY2e2oN.js → agents-list-DkNhFhW5.js} +1 -1
  84. package/dist/client/assets/{ai-providers-nN3i3GvB.js → ai-providers-D-k5TiHj.js} +1 -1
  85. package/dist/client/assets/{alert-CHNmHigh.js → alert-BpxB9H28.js} +1 -1
  86. package/dist/client/assets/{alert-dialog-Cj4mq8qj.js → alert-dialog-DvlBeRZ8.js} +1 -1
  87. package/dist/client/assets/api-keys-19zucl3O.js +1 -0
  88. package/dist/client/assets/{api-keys-DrOs-ajg.js → api-keys-CFO0TqPw.js} +1 -1
  89. package/dist/client/assets/app-editor-B6yi7Dq3.js +1 -0
  90. package/dist/client/assets/{asset-utils-B6xmdxJ-.js → asset-utils-Bo7_Zche.js} +1 -1
  91. package/dist/client/assets/{auth-DQLPrt1d.js → auth-CKeyq_SN.js} +1 -1
  92. package/dist/client/assets/{auth-catchall-C1NwExr2.js → auth-catchall-BRUglBJo.js} +1 -1
  93. package/dist/client/assets/{auth-entry-BFo2L_uA.js → auth-entry-C8956edt.js} +1 -1
  94. package/dist/client/assets/{auth-split-layout-CyH5oyMl.js → auth-split-layout-TYbK0F1z.js} +1 -1
  95. package/dist/client/assets/{authenticate-and-persist-oauth-DiSz7oRO.js → authenticate-and-persist-oauth-BXCIEb9M.js} +1 -1
  96. package/dist/client/assets/{automation-list-row-ToSx3G2V.js → automation-list-row-DlgjVXhV.js} +1 -1
  97. package/dist/client/assets/{automation-runs-D-Y_3Wp_.js → automation-runs-D2wLuras.js} +1 -1
  98. package/dist/client/assets/automations-C1tjCxH0.js +1 -0
  99. package/dist/client/assets/{autosend-DBLW1BiY.js → autosend-CIiCHHwS.js} +1 -1
  100. package/dist/client/assets/{avatar-CA5LIB-l.js → avatar-DbDjz_Du.js} +1 -1
  101. package/dist/client/assets/{badge-BHHKIdAQ.js → badge-Du_nFAw4.js} +1 -1
  102. package/dist/client/assets/{block-document-CKFsXR2D.js → block-document-BuKCa_oz.js} +1 -1
  103. package/dist/client/assets/{blocks-preview-workspace-context-DD1sbvCI.js → blocks-preview-workspace-context-COtWJivz.js} +1 -1
  104. package/dist/client/assets/{breadcrumb-CtLbOAvM.js → breadcrumb-BWN1-eL-.js} +1 -1
  105. package/dist/client/assets/{buckets-n4oqlL53.js → buckets-KfTJhT70.js} +1 -1
  106. package/dist/client/assets/{build-improve-prompt-doc-C0Pcb13i.js → build-improve-prompt-doc-1MAYpXbX.js} +1 -1
  107. package/dist/client/assets/{bulk-category-panel-LlH8_RXq.js → bulk-category-panel-Be3E453p.js} +1 -1
  108. package/dist/client/assets/{calendar-CuSfsKMP.js → calendar-gEz3T8Nx.js} +1 -1
  109. package/dist/client/assets/{capability-load-error-nTuuTH9K.js → capability-load-error-CCrUkwjh.js} +1 -1
  110. package/dist/client/assets/{cards-D_qYJSBL.js → cards-DH_a9rYw.js} +1 -1
  111. package/dist/client/assets/category-editor-C9vS3rZZ.js +1 -0
  112. package/dist/client/assets/{chart-3a-OWzYT.js → chart-Ddl0aS6X.js} +1 -1
  113. package/dist/client/assets/{chat-context-Bu5sIHkQ.js → chat-context--wnB8OwP.js} +1 -1
  114. package/dist/client/assets/{chat-draft-CDnPwvf3.js → chat-draft-BcKBBuxe.js} +1 -1
  115. package/dist/client/assets/{checkbox-KtkqQde0.js → checkbox-CDn9FtiK.js} +1 -1
  116. package/dist/client/assets/{choose-editor-Dn1tw3t6.js → choose-editor-DXATx_XM.js} +1 -1
  117. package/dist/client/assets/{cli-auth-success-Dk6ZAOHg.js → cli-auth-success-C_Hu_E3J.js} +1 -1
  118. package/dist/client/assets/{client-icons-BZbx9xet.js → client-icons-BJCNad4R.js} +1 -1
  119. package/dist/client/assets/{collapsible--RUSBZp8.js → collapsible-BXxfSgrJ.js} +1 -1
  120. package/dist/client/assets/{collection-detail-DeDEzfsH.js → collection-detail-TcNGooD4.js} +1 -1
  121. package/dist/client/assets/{collection-display-button-CSCRl1NG.js → collection-display-button-DX_tFbek.js} +1 -1
  122. package/dist/client/assets/{collection-search-CYFbkY1e.js → collection-search-QXxUQBEV.js} +1 -1
  123. package/dist/client/assets/{collection-table-wrapper-B0GV6KfT.js → collection-table-wrapper-BHPLfSHM.js} +1 -1
  124. package/dist/client/assets/{collection-tabs-Cub0gFzH.js → collection-tabs-Djjl9DeE.js} +1 -1
  125. package/dist/client/assets/{combobox-DKSSMn_F.js → combobox-C2v7IR1r.js} +1 -1
  126. package/dist/client/assets/{command-Aa0mYduw.js → command-DiiYEOpg.js} +1 -1
  127. package/dist/client/assets/{command-palette-store-AuoaPk0G.js → command-palette-store-BWoPJ6nr.js} +1 -1
  128. package/dist/client/assets/{companion-mcps-section-Cm96EPtV.js → companion-mcps-section-B1Bzna9Q.js} +1 -1
  129. package/dist/client/assets/{connect-RwN6Lb1O.js → connect-DX5HC2F6.js} +1 -1
  130. package/dist/client/assets/{connect-layout-BUZjF8sB.js → connect-layout-CpgVqqqj.js} +1 -1
  131. package/dist/client/assets/{connection-BYV9fPN2.js → connection-IJKDt107.js} +1 -1
  132. package/dist/client/assets/{connection-card-Dr9bHZoV.js → connection-card-CGNRKyOF.js} +1 -1
  133. package/dist/client/assets/{connection-detail-CIfYvjz9.js → connection-detail-DZ9RTovJ.js} +1 -1
  134. package/dist/client/assets/{connection-form-helpers-BXp-lVpJ.js → connection-form-helpers-C-g1JeOF.js} +1 -1
  135. package/dist/client/assets/{connections-CHaTlyIC.js → connections-D8guU7fO.js} +1 -1
  136. package/dist/client/assets/{create-organization-dialog-yNI_6UTh.js → create-organization-dialog-BLuhxE_t.js} +1 -1
  137. package/dist/client/assets/{decofile-api-DEul9pGZ.js → decofile-api-CmVJnPGm.js} +1 -1
  138. package/dist/client/assets/{decopilot-C-Fh2iwl.js → decopilot-CUS1CMeB.js} +1 -1
  139. package/dist/client/assets/{dialog-D57kq_tP.js → dialog-P7nKOpzv.js} +1 -1
  140. package/dist/client/assets/{discover-D4y-o31j.js → discover-HGKN31xL.js} +1 -1
  141. package/dist/client/assets/{domain-settings-Ch5rCYKa.js → domain-settings-BVsB1XPJ.js} +1 -1
  142. package/dist/client/assets/{download-app-dialog-Dd6sw41_.js → download-app-dialog-BL1dFfWU.js} +1 -1
  143. package/dist/client/assets/{drawer-DDadqt4q.js → drawer-CxIpjRdt.js} +1 -1
  144. package/dist/client/assets/{dropdown-menu-l7cu0teq.js → dropdown-menu-BfsxnUa0.js} +1 -1
  145. package/dist/client/assets/{editor-DhL1XnKC.js → editor-CXcyGlES.js} +1 -1
  146. package/dist/client/assets/{empty-state-CbrMvgMW.js → empty-state-CjDpy9eU.js} +1 -1
  147. package/dist/client/assets/{empty-state-Cad5zFK6.js → empty-state-DMD6mNdW.js} +1 -1
  148. package/dist/client/assets/{extract-connection-data-Dh_Eo1wZ.js → extract-connection-data-DwqsKwas.js} +1 -1
  149. package/dist/client/assets/{feature-gate-OPGtzGpZ.js → feature-gate-DIfFBquO.js} +1 -1
  150. package/dist/client/assets/{feature-paywall-DsAStIcU.js → feature-paywall-tbozEC7n.js} +1 -1
  151. package/dist/client/assets/{file-explorer-DAxbvkJk.js → file-explorer-Djy00IuA.js} +1 -1
  152. package/dist/client/assets/{file-preview-CDdVdNDx.js → file-preview-C_SJoE1r.js} +1 -1
  153. package/dist/client/assets/{file-share-button-DTqbvQ69.js → file-share-button-BZYG01SF.js} +1 -1
  154. package/dist/client/assets/{file-type-icon-DwxUV7LB.js → file-type-icon-CgWpVSlD.js} +1 -1
  155. package/dist/client/assets/{folder-icon-Xf_qPSHt.js → folder-icon-_n7socYy.js} +1 -1
  156. package/dist/client/assets/{form-x2RdyMbl.js → form-D306U3SV.js} +1 -1
  157. package/dist/client/assets/{gateway-client-D1lNGMSB.js → gateway-client-DGCwfPrr.js} +1 -1
  158. package/dist/client/assets/{general-qL4c5feU.js → general-CogkCEuK.js} +1 -1
  159. package/dist/client/assets/{github-icon-BO2ZIrI7.js → github-icon-BUCFfahn.js} +1 -1
  160. package/dist/client/assets/{home-CLq77ImN.js → home-Dc8EKy9y.js} +1 -1
  161. package/dist/client/assets/{hooks-ClWLwZb6.js → hooks-CUNvs2La.js} +1 -1
  162. package/dist/client/assets/{hooks-BX3ndMg6.js → hooks-ChkSy8jk.js} +1 -1
  163. package/dist/client/assets/{index-DHMJogsX.js → index-7M-DdZrv.js} +1 -1
  164. package/dist/client/assets/{index-Da4w1ozj.js → index-B2zzbmky.js} +1 -1
  165. package/dist/client/assets/{index-BYo7xjw_.js → index-BAe_o13_.js} +4 -4
  166. package/dist/client/assets/{index-dzbklFKC.js → index-BE-bpB6s.js} +1 -1
  167. package/dist/client/assets/{index-DIk-Tdn7.js → index-Bpw3Y5k_.js} +1 -1
  168. package/dist/client/assets/{index-Br-oQZuQ.js → index-BtBksYaT.js} +1 -1
  169. package/dist/client/assets/{index-DqscriGX.js → index-CExp-jpH.js} +1 -1
  170. package/dist/client/assets/{index-CSGdKnA2.js → index-CLL08oUq.js} +1 -1
  171. package/dist/client/assets/{index-B4f3l0bW.js → index-CWU70Bsp.js} +1 -1
  172. package/dist/client/assets/{index-BCcWkCUf.js → index-CfyT02p0.js} +1 -1
  173. package/dist/client/assets/{index-C_tMl4q8.js → index-DX2SQGmg.js} +1 -1
  174. package/dist/client/assets/{index-DMoDLIev.js → index-Dn6rpyBU.js} +1 -1
  175. package/dist/client/assets/{index-Ciq75byn.js → index-DzTKEAfr.js} +1 -1
  176. package/dist/client/assets/{index-BhSpAyPc.js → index-JwT2j16o.js} +1 -1
  177. package/dist/client/assets/{index-redirect-CgpYz1_8.js → index-redirect-BPc0IGq8.js} +1 -1
  178. package/dist/client/assets/{index-D04wJiA7.js → index-xqCO1OT5.js} +1 -1
  179. package/dist/client/assets/{infiniteQueryObserver-BegmJhfO.js → infiniteQueryObserver-DEPfmhJT.js} +1 -1
  180. package/dist/client/assets/{infra-billing-BcAZoLz6.js → infra-billing-Dv5K2K4U.js} +1 -1
  181. package/dist/client/assets/{input-Dzyq242f.js → input-B12R82KE.js} +1 -1
  182. package/dist/client/assets/{input-BWSDRY3j.js → input-BSxVBqme.js} +1 -1
  183. package/dist/client/assets/{input-B0Uinzv0.js → input-DAZB1IQp.js} +1 -1
  184. package/dist/client/assets/{integration-icon-Jv69owhG.js → integration-icon-CCLad1Hm.js} +1 -1
  185. package/dist/client/assets/{label-B9P1qvVv.js → label-B2x-OzbQ.js} +1 -1
  186. package/dist/client/assets/{last-preview-page-By8mKu-G.js → last-preview-page-Dj534Vr-.js} +1 -1
  187. package/dist/client/assets/{layout-BiLsgaKY.js → layout-C0GUxl-u.js} +1 -1
  188. package/dist/client/assets/{legacy-agents-deep-ARL8jf0f.js → legacy-agents-deep-BT2pSszW.js} +1 -1
  189. package/dist/client/assets/{legacy-main-redirect-CU9SDsoJ.js → legacy-main-redirect-BvTDuMyT.js} +1 -1
  190. package/dist/client/assets/{library-lIdeMZNG.js → library-BVxjfVxJ.js} +1 -1
  191. package/dist/client/assets/{login-B-zmZILz.js → login-41LOFYrM.js} +1 -1
  192. package/dist/client/assets/{markdown-BLbEs4th.js → markdown-DfzYqcpd.js} +1 -1
  193. package/dist/client/assets/{mcp-app-renderer-BuE-fXND.js → mcp-app-renderer-DsTkInwc.js} +1 -1
  194. package/dist/client/assets/{mcp-oauth-gEPmFmtm.js → mcp-oauth-Cyin1NWl.js} +1 -1
  195. package/dist/client/assets/{members-DPanptly.js → members-CXUn6k7f.js} +1 -1
  196. package/dist/client/assets/{message-templates-eLGXNsTs.js → message-templates-Dfmfd__o.js} +1 -1
  197. package/dist/client/assets/{mini-report-page-B9cbP96Z.js → mini-report-page-BUlZ1nk_.js} +1 -1
  198. package/dist/client/assets/{mock-board-CuyyHaan.js → mock-board-Dunv2jbB.js} +3 -3
  199. package/dist/client/assets/{monaco-editor-DL6feSNU.js → monaco-editor-BaJ_FwkQ.js} +1 -1
  200. package/dist/client/assets/{monitoring-stats-row-DqxN6GUk.js → monitoring-stats-row-Dggp83t3.js} +1 -1
  201. package/dist/client/assets/{multi-select-oKdD9DyQ.js → multi-select-BjZuNC8-.js} +1 -1
  202. package/dist/client/assets/{mustache-DJBjSsyb.js → mustache-Lt-oOxg-.js} +1 -1
  203. package/dist/client/assets/{oauth-callback-BZYyT9aM.js → oauth-callback-DMNislTd.js} +1 -1
  204. package/dist/client/assets/{oauth-callback-ai-provider-7PpM7Rdj.js → oauth-callback-ai-provider-DxK2zKq2.js} +1 -1
  205. package/dist/client/assets/{onboarding-YCDpp7Hz.js → onboarding-izENNi1v.js} +1 -1
  206. package/dist/client/assets/{optimistic-project-sidebar-views-Drp0GaY-.js → optimistic-project-sidebar-views-BP4ZudiL.js} +1 -1
  207. package/dist/client/assets/{org-file-open-context-BFThBGhY.js → org-file-open-context-D1pGpxmw.js} +1 -1
  208. package/dist/client/assets/{organization-choice-BmTH1TFX.js → organization-choice-B0W7tTUR.js} +1 -1
  209. package/dist/client/assets/{orgs-Bg15s_t6.js → orgs-CzAPfqci.js} +1 -1
  210. package/dist/client/assets/{page-seo-form-2XHO2I5J.js → page-seo-form-CdpRcwf1.js} +1 -1
  211. package/dist/client/assets/{pair-CyjnQvo_.js → pair-BaO4UX6i.js} +1 -1
  212. package/dist/client/assets/{plan-ladder-BxTjLX-u.js → plan-ladder-exGKO-OT.js} +1 -1
  213. package/dist/client/assets/{popover-ZSYA9qhq.js → popover-D_Th7_sq.js} +1 -1
  214. package/dist/client/assets/{post-calendar-Dk7gydQI.js → post-calendar-2LAkL10X.js} +1 -1
  215. package/dist/client/assets/{post-editor-EUWIRS7z.js → post-editor-q7_zlPtJ.js} +1 -1
  216. package/dist/client/assets/{preview-content-DfENsiTd.js → preview-content-CuRTn8bu.js} +1 -1
  217. package/dist/client/assets/{preview-dialog-CZ7yktMz.js → preview-dialog-BjUtwhAH.js} +1 -1
  218. package/dist/client/assets/{primitives-Dc8nwNgw.js → primitives-CywJUIZZ.js} +1 -1
  219. package/dist/client/assets/{profile-RjcjGxIC.js → profile-DbHfcC2F.js} +1 -1
  220. package/dist/client/assets/{project-app-view-vHys_Fc0.js → project-app-view-DXHuBtnA.js} +1 -1
  221. package/dist/client/assets/{project-feed-BQriF9RR.js → project-feed-CpBgUN64.js} +1 -1
  222. package/dist/client/assets/{project-icon-B44PuWmC.js → project-icon-FeJ0RNfM.js} +1 -1
  223. package/dist/client/assets/project-reports-CGHkLS5V.js +1 -0
  224. package/dist/client/assets/project-tasks-B2mVIUT1.js +1 -0
  225. package/dist/client/assets/{prompts-DxKpvN4f.js → prompts-BRFYOtU6.js} +1 -1
  226. package/dist/client/assets/record-editor-shDJTvt5.js +1 -0
  227. package/dist/client/assets/{redirect-editor-QSnnvJNH.js → redirect-editor-BMuUFVWa.js} +1 -1
  228. package/dist/client/assets/registry-_INwJVQ0.js +2 -0
  229. package/dist/client/assets/{registry-layout-CS36QyR-.js → registry-layout-C6u19jo2.js} +1 -1
  230. package/dist/client/assets/reports-7EiX8-Jn.js +1 -0
  231. package/dist/client/assets/{reports-Caz12sYh.js → reports-CzNOD1PK.js} +1 -1
  232. package/dist/client/assets/{reports-onboarding-CpuoVkUT.js → reports-onboarding-BfzJa5Gk.js} +1 -1
  233. package/dist/client/assets/{reports-tab-CTyrZeC2.js → reports-tab-DVUKm5d7.js} +2 -2
  234. package/dist/client/assets/{repositories-Css_5oB-.js → repositories-BPfbQo8S.js} +1 -1
  235. package/dist/client/assets/{repository-import-picker-BBGtjhUh.js → repository-import-picker-DgYZBVUY.js} +1 -1
  236. package/dist/client/assets/{repository-picker-C-TSiXvU.js → repository-picker-DtNB3YXJ.js} +1 -1
  237. package/dist/client/assets/{require-capability-BGOQRUEv.js → require-capability-DhnY1zOU.js} +1 -1
  238. package/dist/client/assets/{required-auth-layout-DfvknvbD.js → required-auth-layout-D4NtQ8aQ.js} +1 -1
  239. package/dist/client/assets/{reset-password-DqPNpLik.js → reset-password-CGZ1xzBE.js} +1 -1
  240. package/dist/client/assets/{resizable-DtEfzvUR.js → resizable-BCFQ8_mU.js} +1 -1
  241. package/dist/client/assets/{review-settings-DCvHN4QQ.js → review-settings-BYSEbbhD.js} +1 -1
  242. package/dist/client/assets/{rich-text-link-control-S-iuuCcb.js → rich-text-link-control-Cr4zLCon.js} +1 -1
  243. package/dist/client/assets/{roles-JesQ45E4.js → roles-DvnyQ4R5.js} +1 -1
  244. package/dist/client/assets/{route-BHp1yMIV.js → route-BnDGKN7C.js} +1 -1
  245. package/dist/client/assets/{route-DYcLUzKq.js → route-DBoaNcGA.js} +1 -1
  246. package/dist/client/assets/{route-DxO9zGI3.js → route-DyU2SqNZ.js} +1 -1
  247. package/dist/client/assets/{runnable-block-editor-D2pnRUMc.js → runnable-block-editor-CiMMS_WZ.js} +1 -1
  248. package/dist/client/assets/{sandbox-lifecycle-context-BKxKj4xP.js → sandbox-lifecycle-context-DayGvfz9.js} +1 -1
  249. package/dist/client/assets/{schema-CGSQcL_x.js → schema-DbE0ILDN.js} +1 -1
  250. package/dist/client/assets/{scroll-area-DEsjJURz.js → scroll-area-DHkadmMB.js} +1 -1
  251. package/dist/client/assets/{search-input-Ckzw9Q8f.js → search-input-BY84D0zC.js} +1 -1
  252. package/dist/client/assets/{secrets-B-ypyy2r.js → secrets-BnRWms7m.js} +1 -1
  253. package/dist/client/assets/{sections-editor-CH88tIrj.js → sections-editor-DtnTsXnj.js} +1 -1
  254. package/dist/client/assets/{select-KcyEErkL.js → select-CSMuQolx.js} +1 -1
  255. package/dist/client/assets/{select-model-DMvqNufS.js → select-model-CVcpSBbf.js} +1 -1
  256. package/dist/client/assets/{seo-editor-CAiJAVeJ.js → seo-editor-Dl4ztoqk.js} +1 -1
  257. package/dist/client/assets/{settings-tab-BeEZ3rCK.js → settings-tab-Czy9lzY6.js} +1 -1
  258. package/dist/client/assets/{sheet-CuLnIbRo.js → sheet-B28ugFTA.js} +1 -1
  259. package/dist/client/assets/{shell-layout-C6AQzwc3.js → shell-layout-CIzHgA5L.js} +1 -1
  260. package/dist/client/assets/{sidebar-BhJ_FDqo.js → sidebar-DYn95fz3.js} +1 -1
  261. package/dist/client/assets/{skill-preview-Cd79qVc9.js → skill-preview-CwkocLtc.js} +1 -1
  262. package/dist/client/assets/{skills-yKnfnfGJ.js → skills-DRD-wA_C.js} +1 -1
  263. package/dist/client/assets/{sso-BUabXZ66.js → sso-D0V9h73e.js} +1 -1
  264. package/dist/client/assets/{store-3eZAp6_n.js → store-CweiCCMm.js} +1 -1
  265. package/dist/client/assets/store-registry-B1zHPePT.js +2 -0
  266. package/dist/client/assets/{switch-C4XaykKw.js → switch-BqxMQqEk.js} +1 -1
  267. package/dist/client/assets/{synced-repos-DcnAsWA0.js → synced-repos-Dx6hMZYH.js} +1 -1
  268. package/dist/client/assets/{table-CuChyRJ6.js → table-CncpY_U9.js} +1 -1
  269. package/dist/client/assets/{tabs-CU7XBCqm.js → tabs-phpgyu6t.js} +1 -1
  270. package/dist/client/assets/{task-board-DyB0568a.js → task-board-B1w2Rkog.js} +1 -1
  271. package/dist/client/assets/{task-route-DadSSpKF.js → task-route-BW82nSL6.js} +1 -1
  272. package/dist/client/assets/{task-status-BlXRiQX3.js → task-status-BZUo5ULn.js} +1 -1
  273. package/dist/client/assets/{taskboard-analytics-DAdOZgEg.js → taskboard-analytics-BteSA91N.js} +1 -1
  274. package/dist/client/assets/{tasks-BfdiokBG.js → tasks-BAYMSKYS.js} +1 -1
  275. package/dist/client/assets/tasks-Cc643FEA.js +1 -0
  276. package/dist/client/assets/{textarea-__p0yo6J.js → textarea-A-sh80rP.js} +1 -1
  277. package/dist/client/assets/{thread-intent-D1siGaGJ.js → thread-intent-C55s0pEB.js} +1 -1
  278. package/dist/client/assets/{thread-route-CP3pE7Uw.js → thread-route-6-bE9uXL.js} +1 -1
  279. package/dist/client/assets/{thread-route-DNm3Iu0z.js → thread-route-DPIYNBsG.js} +1 -1
  280. package/dist/client/assets/{thread-sheet-body-BXdoz1zb.js → thread-sheet-body-lUFbUTLU.js} +1 -1
  281. package/dist/client/assets/{toggle-group-DngX-VZh.js → toggle-group-kiZeVeGT.js} +1 -1
  282. package/dist/client/assets/{toolbar-icon-button-CoaHzqzV.js → toolbar-icon-button-Bq1hfOJh.js} +1 -1
  283. package/dist/client/assets/{tooltip-DiUW72WF.js → tooltip-CIXbcLPC.js} +1 -1
  284. package/dist/client/assets/{track-BkvZQsBp.js → track-BLssb4CV.js} +1 -1
  285. package/dist/client/assets/{types-CVnCSrZu.js → types-C5ReWHjT.js} +1 -1
  286. package/dist/client/assets/{usage-stats-BXE2Nb57.js → usage-stats-BX9N4kgl.js} +1 -1
  287. package/dist/client/assets/{use-ai-providers-CTTRbTuh.js → use-ai-providers-BdaCm75P.js} +1 -1
  288. package/dist/client/assets/{use-automations-DcNKFRtS.js → use-automations-DvotSKoK.js} +1 -1
  289. package/dist/client/assets/{use-autosave-CoCLYAKc.js → use-autosave-DjhzKyb5.js} +1 -1
  290. package/dist/client/assets/{use-connect-companion-B81sEzsb.js → use-connect-companion-D7p0UoHt.js} +1 -1
  291. package/dist/client/assets/{use-connection-CM4EgQPU.js → use-connection-BULo2w2y.js} +1 -1
  292. package/dist/client/assets/{use-copy-C3r_mwJc.js → use-copy-GCjFNzMF.js} +1 -1
  293. package/dist/client/assets/{use-create-virtual-mcp-4OanjUDo.js → use-create-virtual-mcp-BfPzako8.js} +1 -1
  294. package/dist/client/assets/{use-date-fns-locale-Bwn26aTV.js → use-date-fns-locale-CUcTqWo5.js} +1 -1
  295. package/dist/client/assets/{use-debounced-autosave-CDIZf7vS.js → use-debounced-autosave-DDwH2i40.js} +1 -1
  296. package/dist/client/assets/{use-debounced-value-Dt5Xp7np.js → use-debounced-value-CxG5RnfF.js} +1 -1
  297. package/dist/client/assets/{use-deco-credits-BHIJCyKo.js → use-deco-credits-Q7VBtSbi.js} +1 -1
  298. package/dist/client/assets/{use-decopilot-events-B1TzFZ8t.js → use-decopilot-events-BkBya-2Z.js} +1 -1
  299. package/dist/client/assets/{use-delete-connection-MEDuWXFM.js → use-delete-connection-D4Qlsjvp.js} +1 -1
  300. package/dist/client/assets/{use-deployment-admin-DhSh82eL.js → use-deployment-admin-BJZdPo88.js} +1 -1
  301. package/dist/client/assets/{use-entitlements-Du1tEG7N.js → use-entitlements-CmLmpU7O.js} +1 -1
  302. package/dist/client/assets/{use-fast-preview-draft-url-JhDvVPsK.js → use-fast-preview-draft-url-CDCgyRCo.js} +1 -1
  303. package/dist/client/assets/{use-file-configs-BlwCwjVB.js → use-file-configs-BIxnU35a.js} +1 -1
  304. package/dist/client/assets/{use-infinite-scroll-C-upQcAM.js → use-infinite-scroll-CiHJK8Fp.js} +1 -1
  305. package/dist/client/assets/{use-join-requests-B0KW0ohy.js → use-join-requests-BFNe-8vJ.js} +1 -1
  306. package/dist/client/assets/{use-main-panel-tabs-A9lWrQg1.js → use-main-panel-tabs-DFwbOSWr.js} +1 -1
  307. package/dist/client/assets/{use-mcp-auth-status-DbP9ug3L.js → use-mcp-auth-status-CVk4lVgD.js} +1 -1
  308. package/dist/client/assets/{use-mcp-client-D-7BuLrC.js → use-mcp-client-BZQknWjD.js} +1 -1
  309. package/dist/client/assets/{use-mcp-prompts-OVUxMbpa.js → use-mcp-prompts-CVcqO70A.js} +1 -1
  310. package/dist/client/assets/{use-mcp-tools-Bka5B8hg.js → use-mcp-tools-Bib1tK8U.js} +1 -1
  311. package/dist/client/assets/{use-members-0fLORe9n.js → use-members-CIJ6YEXF.js} +1 -1
  312. package/dist/client/assets/{use-mobile-C2LLCzmr.js → use-mobile-BxTk3Oju.js} +1 -1
  313. package/dist/client/assets/{use-navigate-to-agent-C_uFa92h.js → use-navigate-to-agent-CJb4YZhI.js} +1 -1
  314. package/dist/client/assets/{use-open-billing-url-CDGeF8Bu.js → use-open-billing-url-Bw8fLJ97.js} +1 -1
  315. package/dist/client/assets/{use-org-auth-client-B9bt8Cd1.js → use-org-auth-client-Dkurnb6X.js} +1 -1
  316. package/dist/client/assets/{use-org-fs-B-yTulsp.js → use-org-fs-C1mbGTyD.js} +1 -1
  317. package/dist/client/assets/{use-org-notice-CKxbuoVc.js → use-org-notice-BJTFU8Ij.js} +1 -1
  318. package/dist/client/assets/{use-org-sso-DDMls_8S.js → use-org-sso-Ba23AHpT.js} +1 -1
  319. package/dist/client/assets/{use-organization-roles-B8cSYq0q.js → use-organization-roles-gZMLdZFL.js} +1 -1
  320. package/dist/client/assets/{use-organization-settings-DmPwVQte.js → use-organization-settings-D7GHyVHo.js} +1 -1
  321. package/dist/client/assets/{use-panel-navigate-ambGkCyT.js → use-panel-navigate-oG67IXer.js} +1 -1
  322. package/dist/client/assets/{use-project-native-view-presence-BG-Guaa9.js → use-project-native-view-presence-X2YAvfNz.js} +1 -1
  323. package/dist/client/assets/{use-project-scope-CQpPI5pW.js → use-project-scope-CIXN10BN.js} +1 -1
  324. package/dist/client/assets/{use-registry-connections-Dwr4-IPF.js → use-registry-connections-CeDuSPRn.js} +1 -1
  325. package/dist/client/assets/{use-releases-B5rxjDuL.js → use-releases-BIbWCMyU.js} +1 -1
  326. package/dist/client/assets/{use-reports-diagnostic-DmNTAMUo.js → use-reports-diagnostic-DPKlaDs-.js} +1 -1
  327. package/dist/client/assets/{use-route-default-main-BGhZVnpH.js → use-route-default-main-A4wWyyYE.js} +1 -1
  328. package/dist/client/assets/{use-secrets-2K048iDI.js → use-secrets-BsJeTPlj.js} +1 -1
  329. package/dist/client/assets/{use-section-preview-base-DGf1SdCz.js → use-section-preview-base-DzysJ_ub.js} +1 -1
  330. package/dist/client/assets/{use-session-runtime-DRNcjNGp.js → use-session-runtime-DEXgUSVy.js} +1 -1
  331. package/dist/client/assets/{use-tags-Dz0JHmit.js → use-tags-Cy707gRp.js} +1 -1
  332. package/dist/client/assets/{use-task-board-analytics-BAbIvIck.js → use-task-board-analytics-BDsFgilp.js} +1 -1
  333. package/dist/client/assets/{use-task-metadata-DFjC02ql.js → use-task-metadata-CSJCHVe3.js} +1 -1
  334. package/dist/client/assets/{use-thread-outputs-CNFVOo0z.js → use-thread-outputs-CeLGBWMi.js} +1 -1
  335. package/dist/client/assets/{use-view-mode-8Q0KLbhQ.js → use-view-mode-DZAJ8Ezx.js} +1 -1
  336. package/dist/client/assets/{use-virtual-mcp-BqJjq2ej.js → use-virtual-mcp-5_LmHClQ.js} +1 -1
  337. package/dist/client/assets/useInfiniteQuery-6UUyLG5q.js +1 -0
  338. package/dist/client/assets/{useQueries-CA76Qw5x.js → useQueries-D6QI0O0n.js} +1 -1
  339. package/dist/client/assets/useSuspenseInfiniteQuery-DxuXEhD8.js +1 -0
  340. package/dist/client/assets/{users-CxTXFPjN.js → users-YoYfh25Z.js} +1 -1
  341. package/dist/client/assets/{utils-Bsd7FiR5.js → utils-DouGzYPl.js} +1 -1
  342. package/dist/client/assets/{variant-calendar-un_6bKKS.js → variant-calendar-BfGXAz3H.js} +1 -1
  343. package/dist/client/assets/{variant-matcher-override-DxweoUUC.js → variant-matcher-override-C3nTKSL4.js} +1 -1
  344. package/dist/client/assets/{view-mode-toggle-DYM-xxC9.js → view-mode-toggle-BiIuGK5N.js} +1 -1
  345. package/dist/client/assets/{virtual-mcp-DuQ9gz9U.js → virtual-mcp-CSWeSKXb.js} +1 -1
  346. package/dist/client/index.html +1 -1
  347. package/dist/server/cli.js +1 -1
  348. package/dist/server/server.js +1 -1
  349. package/package.json +1 -1
  350. package/dist/client/assets/agent-app-CVC_Lvyo.js +0 -1
  351. package/dist/client/assets/agent-deck-7gpymxb7.js +0 -1
  352. package/dist/client/assets/agent-file-CSxJMcjv.js +0 -1
  353. package/dist/client/assets/agent-library-file-ISKmBGds.js +0 -1
  354. package/dist/client/assets/agent-settings-DWKPsWvq.js +0 -1
  355. package/dist/client/assets/agent-site-editor-code-Cafkyw0y.js +0 -2
  356. package/dist/client/assets/agent-view-DZGYQu75.js +0 -1
  357. package/dist/client/assets/api-keys-Cx887mfW.js +0 -1
  358. package/dist/client/assets/app-editor-FvLT9tg7.js +0 -1
  359. package/dist/client/assets/automations-stm8A17b.js +0 -1
  360. package/dist/client/assets/category-editor-m0T0M7LG.js +0 -1
  361. package/dist/client/assets/project-reports-BN2wnBRk.js +0 -1
  362. package/dist/client/assets/project-tasks-BiN2QJyD.js +0 -1
  363. package/dist/client/assets/record-editor-C0OpqhBn.js +0 -1
  364. package/dist/client/assets/registry-BNANrwsH.js +0 -2
  365. package/dist/client/assets/reports-ClRllm5D.js +0 -1
  366. package/dist/client/assets/store-registry-BSlzFQHg.js +0 -2
  367. package/dist/client/assets/tasks-CJSTXe38.js +0 -1
  368. package/dist/client/assets/useInfiniteQuery-BigrA6tZ.js +0 -1
  369. package/dist/client/assets/useSuspenseInfiniteQuery-OUbXRXpI.js +0 -1
@@ -2076,7 +2076,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var T0$=D(()=>{fg()});f
2076
2076
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${G}/${K}, keeping in old table`);continue}}await Ku`
2077
2077
  DELETE FROM kysely_migration WHERE name = ${Q}
2078
2078
  `.execute($)}}async function p6$($){await VX4($),await kX4($);let Z=new d6$({db:$,provider:{getMigrations:()=>Promise.resolve(Is0)}}),{error:Q,results:X}=await Z.migrateToLatest(),Y=0;if(X?.forEach((J)=>{if(J.status==="Success")Y++;else if(J.status==="Error")console.error(`Failed to execute migration "${J.migrationName}"`)}),Q)throw console.error("Failed to migrate"),console.error(Q),Q;return Y}async function SX4($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await pn0();let J=Q??l$(),G=async()=>{if(!Z&&!Q)await yD(J).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await p6$(J.db);return await G(),{betterAuth:Y,kysely:K}}catch(K){throw await G(),K}}async function CX4(){let $=l$(),Z=new d6$({db:$.db,provider:{getMigrations:()=>Promise.resolve(Is0)}}),{error:Q,results:X}=await Z.migrateDown();if(X?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),Q)throw console.error("Failed to rollback migration"),console.error(Q),Q}var t6$=D(()=>{m6$();nn0();dQ()});async function OJ0($){let Z={...process.env},Q=X90($,Z);console.log(qR1(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?Z$$(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (DY0(),OY0)),{outputs:J,services:G}=await Y({home:Q.settings.dataDir,externalDatabaseUrl:Q.externalDatabaseUrl,externalNatsUrl:Q.externalNatsUrl});if(!Q.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (nn0(),X$$));await W(J.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (dQ(),E1$)),{migrateToLatest:F}=await Promise.resolve().then(() => (t6$(),n6$)),U=H(J.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...Q.settings,betterAuthSecret:X,databaseUrl:J.databaseUrl,natsUrls:J.natsUrls,...J.s3?{s3Endpoint:J.s3.endpoint,s3Bucket:J.s3.bucket,s3AccessKeyId:J.s3.accessKeyId,s3SecretAccessKey:J.s3.secretAccessKey,s3ForcePathStyle:J.s3.forcePathStyle}:{}};return R0$(K),{settings:K,services:G.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:G.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var Vs0=D(()=>{fg();Q$$();t1()});var s6$={};$0(s6$,{updateService:()=>mz,subscribeCliState:()=>Cs0,setTuiConsoleIntercepted:()=>DJ0,setServerUrl:()=>Po,setMigrationsDone:()=>zo,setDevMode:()=>vX4,resetCliStateForTests:()=>_X4,isTuiConsoleIntercepted:()=>LJ0,getCliState:()=>Ss0,addLogEntry:()=>mD});function o6$(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function r6$(){return{services:o6$(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function _X4(){_Y=r6$()}function Eo(){for(let $ of ks0)$()}function Ss0(){return _Y}function Cs0($){return ks0.add($),()=>ks0.delete($)}function mz($){_Y={..._Y,services:_Y.services.map((Z)=>Z.name===$.name?$:Z)},Eo()}function zo(){_Y={..._Y,migrationsStatus:"done"},Eo()}function Po($){_Y={..._Y,serverUrl:$},Eo()}function mD($){let Z=[..._Y.logs,$];_Y={..._Y,logs:Z.length>500?Z.slice(-500):Z},Eo()}function vX4(){_Y={..._Y,services:[...o6$(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Eo()}function DJ0($){a6$=$}function LJ0(){return a6$}var _Y,ks0,a6$=!1;var dz=D(()=>{_Y=r6$();ks0=new Set});import{createServer as e6$}from"net";function xX4($){return new Promise((Z)=>{let Q=e6$();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function Ao($){if(await xX4($))return $;let Z=await new Promise((Q,X)=>{let Y=e6$();Y.once("error",X),Y.listen(0,"0.0.0.0",()=>{let J=Y.address(),G=typeof J==="object"&&J?J.port:0;Y.close(()=>Q(G))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var _s0=()=>{};var xs0={};$0(xs0,{startDevServer:()=>bX4,pipeToLogStore:()=>vs0});import{join as fX4}from"path";function vs0($){let Z=$.getReader(),Q=new TextDecoder,X="";function Y(){let J=X.split(`
2079
- `);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;mD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)mD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function bX4($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await Ao(Number(Y)+1):await Ao(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await OJ0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)mz({name:L.name,status:"ready",port:L.port});zo();let F=fX4(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:J,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)vs0(N.stdout),vs0(N.stderr);Po(J),mz({name:"Vite",status:"ready",port:Number(Y)}),mz({name:"API",status:"ready",port:Number(K.port)});let O=async(L)=>{if(N.kill(L),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (DY0(),OY0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var fs0=D(()=>{Vs0();dz();_s0()});var wJ0;var bs0=D(()=>{wJ0={name:"decocms",version:"4.371.4",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^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","@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 gX4,Text as $5$}from"ink";import{jsx as hX4,jsxs as Z5$}from"react/jsx-runtime";function Q5$({version:$}){return Z5$(gX4,{flexDirection:"column",marginTop:1,children:[gY0.map((Z,Q)=>hX4($5$,{color:hY0[Q],children:Z},Q)),Z5$($5$,{dimColor:!0,children:[" v",$]})]})}var X5$=D(()=>{Jo()});import{Box as iz,Text as dD}from"ink";import{Spinner as uX4}from"@inkjs/ui";import{jsx as aJ,jsxs as Wu}from"react/jsx-runtime";function Y5$({status:$}){if($==="pending")return aJ(uX4,{label:""});return aJ(dD,{color:"green",children:"\u2713"})}function lX4($){return`${$.name}: ${$.port||"...."}`}function J5$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return Wu(iz,{flexDirection:"column",paddingBottom:1,children:[aJ(Q5$,{version:wJ0.version}),aJ(iz,{marginBottom:1,children:aJ(dD,{dimColor:!0,children:"\u2500".repeat(80)})}),aJ(iz,{children:Wu(dD,{dimColor:!0,children:["Home: ",Q]})}),Wu(iz,{gap:2,children:[$.map((Y)=>Wu(iz,{gap:1,children:[aJ(dD,{children:lX4(Y)}),aJ(Y5$,{status:Y.status})]},Y.name)),Wu(iz,{gap:1,children:[aJ(dD,{children:"Migrations"}),aJ(Y5$,{status:Z})]})]}),aJ(iz,{children:X?Wu(dD,{children:["Open in browser: ",aJ(dD,{color:"cyan",children:X})]}):aJ(dD,{dimColor:!0,children:"Starting..."})})]})}var G5$=D(()=>{bs0();X5$()});import{Box as cX4,Text as To}from"ink";import{jsx as ys0,jsxs as gs0}from"react/jsx-runtime";function mX4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function K5$({logs:$}){return ys0(cX4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return ys0(To,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return gs0(To,{children:[gs0(To,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),ys0(To,{color:mX4(Z.status),children:Z.status}),gs0(To,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var W5$=()=>{};var hs0={};$0(hs0,{App:()=>pX4});import{Box as dX4}from"ink";import{useSyncExternalStore as iX4}from"react";import{jsx as H5$,jsxs as nX4}from"react/jsx-runtime";function pX4({home:$}){let Z=iX4(Cs0,Ss0);return nX4(dX4,{flexDirection:"column",children:[H5$(J5$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),H5$(K5$,{logs:Z.logs})]})}var us0=D(()=>{G5$();W5$();dz()});var TG="thread-gate",yN="decopilot-hosted-harness",gN="decopilot-hosted-harness-sandboxed",RG="automations",iD="background-tools",pz="task-board-github-reads";var F5$="11";function U5$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:F5$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var N5$=()=>{};import tX4 from"pg";async function O5$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=oX4}=$,Y=$.log??((W)=>console.log(W)),J=new tX4.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[B5$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await O$(rX4)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[B5$.toString()])}catch{}await J.end().catch(()=>{})}}var B5$=8314027461559302n,oX4=600000,rX4=500;var D5$=D(()=>{i$()});function aX4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function ls0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function L5$(){let $=aX4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:ls0($,"--cpu-prof-dir")??process.cwd(),name:ls0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(ls0($,"--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 w5$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=hz();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),jJ0=setInterval(()=>void Z().catch(()=>{}),$),jJ0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(jJ0)clearInterval(jJ0)}}var jJ0;var j5$=()=>{};import*as sX4 from"bun:jsc";function E5$(){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{eX4()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=$Y4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var eX4,$Y4;var z5$=D(()=>{({startSamplingProfiler:eX4,samplingProfilerStackTraces:$Y4}=sX4)});function P5$(){L5$();let $=[w5$(),U1$(),E5$()];return()=>{for(let Z of $)Z()}}var A5$=D(()=>{gn0();j5$();z5$()});var nz=v((T5$)=>{Object.defineProperty(T5$,"__esModule",{value:!0});T5$.RepublishHeaders=T5$.DirectMsgHeaders=T5$.JsHeaders=T5$.AdvisoryKind=void 0;T5$.isOrderedPushConsumerOptions=ZY4;T5$.isPullConsumer=QY4;T5$.isPushConsumer=XY4;T5$.isBoundPushConsumerOptions=YY4;function ZY4($){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 QY4($){return $.isPullConsumer()}function XY4($){return $.isPushConsumer()}function YY4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}T5$.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"};T5$.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"};T5$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};T5$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var sJ=v((q5$)=>{Object.defineProperty(q5$,"__esModule",{value:!0});q5$.TD=q5$.TE=q5$.Empty=void 0;q5$.encode=BY4;q5$.decode=OY4;q5$.Empty=new Uint8Array(0);q5$.TE=new TextEncoder;q5$.TD=new TextDecoder;function NY4(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function BY4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(q5$.TE.encode($[Q]));if(Z.length===0)return q5$.Empty;if(Z.length===1)return Z[0];return NY4(...Z)}function OY4($){if(!$||$.length===0)return"";return q5$.TD.decode($)}});var eJ=v((V5$)=>{Object.defineProperty(V5$,"__esModule",{value:!0});V5$.errors=V5$.PermissionViolationError=V5$.NoRespondersError=V5$.TimeoutError=V5$.RequestError=V5$.ProtocolError=V5$.ConnectionError=V5$.DrainingConnectionError=V5$.ClosedConnectionError=V5$.AuthorizationError=V5$.UserAuthenticationExpiredError=V5$.InvalidOperationError=V5$.InvalidArgumentError=V5$.InvalidSubjectError=void 0;class ms0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}V5$.InvalidSubjectError=ms0;class EJ0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new EJ0(`${$} ${Z}`,Q)}}V5$.InvalidArgumentError=EJ0;class ds0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}V5$.InvalidOperationError=ds0;class zJ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new zJ0($);return null}}V5$.UserAuthenticationExpiredError=zJ0;class PJ0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new PJ0($);return null}}V5$.AuthorizationError=PJ0;class is0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}V5$.ClosedConnectionError=is0;class ps0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}V5$.DrainingConnectionError=ps0;class ns0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}V5$.ConnectionError=ns0;class ts0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}V5$.ProtocolError=ts0;class os0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof AJ0}}V5$.RequestError=os0;class rs0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}V5$.TimeoutError=rs0;class AJ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}V5$.NoRespondersError=AJ0;class TJ0 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new TJ0($,Q,X,Y)}}V5$.PermissionViolationError=TJ0;V5$.errors={AuthorizationError:PJ0,ClosedConnectionError:is0,ConnectionError:ns0,DrainingConnectionError:ps0,InvalidArgumentError:EJ0,InvalidOperationError:ds0,InvalidSubjectError:ms0,NoRespondersError:AJ0,PermissionViolationError:TJ0,ProtocolError:ts0,RequestError:os0,TimeoutError:rs0,UserAuthenticationExpiredError:zJ0}});var QW=v((v5$)=>{Object.defineProperty(v5$,"__esModule",{value:!0});v5$.SimpleMutex=v5$.Perf=void 0;v5$.extend=CY4;v5$.render=_Y4;v5$.timeout=vY4;v5$.delay=xY4;v5$.deadline=fY4;v5$.deferred=ss0;v5$.debugDeferred=bY4;v5$.shuffle=yY4;v5$.collect=gY4;v5$.jitter=_5$;v5$.backoff=hY4;v5$.nanos=uY4;v5$.millis=lY4;v5$.randomToken=dY4;var SY4=sJ(),as0=eJ();function CY4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function _Y4($){return SY4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function vY4($,Z=!0){let Q=Z?new as0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new as0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function xY4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function fY4($,Z=1000){let Q=ss0(),X=setTimeout(()=>{Q.reject(new as0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function ss0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function bY4(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function yY4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function gY4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class S5${timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}v5$.Perf=S5$;class C5${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=ss0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}v5$.SimpleMutex=C5$;function _5$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function hY4($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return _5$(Q>Z?$[Z]:$[Q])}}}function uY4($){return $*1e6}function lY4($){return Math.floor($/1e6)}var cY4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",hN=new Uint8Array(62);for(let $=0;$<62;$++)hN[$]=cY4.charCodeAt($);var mY4=218340105584896;function dY4(){let $=Math.floor(Math.random()*mY4),Z=$%62,Q=hN[Z];$=($-Z)/62,Z=$%62;let X=hN[Z];$=($-Z)/62,Z=$%62;let Y=hN[Z];$=($-Z)/62,Z=$%62;let J=hN[Z];$=($-Z)/62,Z=$%62;let G=hN[Z];$=($-Z)/62,Z=$%62;let K=hN[Z];$=($-Z)/62,Z=$%62;let W=hN[Z];$=($-Z)/62;let H=hN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var l5$=v((h5$)=>{Object.defineProperty(h5$,"__esModule",{value:!0});h5$.nuid=h5$.NuidImpl=void 0;var GJ4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",pD=62,qJ0=12,y5$=10,f5$=33,KJ4=333,b5$=qJ0+y5$,$e0=new Uint8Array(pD);for(let $=0;$<pD;$++)$e0[$]=GJ4.charCodeAt($);var RJ0=4294967296,g5$=BigInt(pD)**BigInt(y5$),Ro=Number(g5$/(1n<<32n)),es0=Number(g5$%(1n<<32n));function WJ4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function HJ4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else WJ4($)}class Ze0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(b5$),this.cbuf=new Uint8Array(qJ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Ro+1)),this.seqLo=Math.floor(Math.random()*RJ0);while($++<8&&this.seqHi===Ro&&this.seqLo>=es0);if(this.seqHi===Ro&&this.seqLo>=es0)this.seqLo=0;this.inc=Math.random()*(KJ4-f5$)+f5$|0}setPre(){HJ4(this.cbuf);for(let $=0;$<qJ0;$++)this.buf[$]=$e0[this.cbuf[$]%pD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=b5$-1;Q>=qJ0;Q--){let X=Math.floor($/pD),J=($-X*pD)*RJ0+Z,G=Math.floor(J/pD),K=J-G*pD;this.buf[Q]=$e0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=RJ0)this.seqLo-=RJ0,this.seqHi+=1;if(this.seqHi>Ro||this.seqHi===Ro&&this.seqLo>=es0)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()}}h5$.NuidImpl=Ze0;h5$.nuid=new Ze0});var i5$=v((m5$)=>{Object.defineProperty(m5$,"__esModule",{value:!0});m5$.nuid=m5$.Nuid=void 0;var c5$=l5$();m5$.Nuid=c5$.NuidImpl;m5$.nuid=c5$.nuid});var IJ0=v((MJ0)=>{Object.defineProperty(MJ0,"__esModule",{value:!0});MJ0.nuid=MJ0.Nuid=void 0;var p5$=i5$();Object.defineProperty(MJ0,"Nuid",{enumerable:!0,get:function(){return p5$.Nuid}});Object.defineProperty(MJ0,"nuid",{enumerable:!0,get:function(){return p5$.nuid}})});var nD=v((n5$)=>{Object.defineProperty(n5$,"__esModule",{value:!0});n5$.DEFAULT_HOST=n5$.DEFAULT_PORT=n5$.Match=void 0;n5$.syncIterator=DJ4;n5$.createInbox=LJ4;var BJ4=IJ0(),OJ4=eJ();n5$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function DJ4($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function LJ4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw OJ4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${BJ4.nuid.next()}`}n5$.DEFAULT_PORT=4222;n5$.DEFAULT_HOST="127.0.0.1"});var qo=v((a5$)=>{Object.defineProperty(a5$,"__esModule",{value:!0});a5$.DataBuffer=void 0;var o5$=sJ();class r5${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return o5$.TE.encode($)}static toAscii($){return o5$.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}a5$.DataBuffer=r5$});var tz=v(($9$)=>{Object.defineProperty($9$,"__esModule",{value:!0});$9$.LF=$9$.CR=$9$.CRLF=$9$.CR_LF_LEN=$9$.CR_LF=void 0;$9$.setTransportFactory=RJ4;$9$.defaultPort=qJ4;$9$.getUrlParseFn=MJ4;$9$.newTransport=IJ4;$9$.getResolveFn=VJ4;$9$.protoLen=e5$;$9$.extractProtocolMessage=kJ4;var PJ4=sJ(),AJ4=nD(),TJ4=qo(),$3;function RJ4($){$3=$}function qJ4(){return $3!==void 0&&$3.defaultPort!==void 0?$3.defaultPort:AJ4.DEFAULT_PORT}function MJ4(){return $3!==void 0&&$3.urlParseFn?$3.urlParseFn:void 0}function IJ4(){if(!$3||typeof $3.factory!=="function")throw Error("transport fn is not set");return $3.factory()}function VJ4(){return $3!==void 0&&$3.dnsResolveFn?$3.dnsResolveFn:void 0}$9$.CR_LF=`\r
2079
+ `);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;mD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)mD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function bX4($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await Ao(Number(Y)+1):await Ao(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await OJ0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)mz({name:L.name,status:"ready",port:L.port});zo();let F=fX4(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:J,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)vs0(N.stdout),vs0(N.stderr);Po(J),mz({name:"Vite",status:"ready",port:Number(Y)}),mz({name:"API",status:"ready",port:Number(K.port)});let O=async(L)=>{if(N.kill(L),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (DY0(),OY0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var fs0=D(()=>{Vs0();dz();_s0()});var wJ0;var bs0=D(()=>{wJ0={name:"decocms",version:"4.371.5",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^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","@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 gX4,Text as $5$}from"ink";import{jsx as hX4,jsxs as Z5$}from"react/jsx-runtime";function Q5$({version:$}){return Z5$(gX4,{flexDirection:"column",marginTop:1,children:[gY0.map((Z,Q)=>hX4($5$,{color:hY0[Q],children:Z},Q)),Z5$($5$,{dimColor:!0,children:[" v",$]})]})}var X5$=D(()=>{Jo()});import{Box as iz,Text as dD}from"ink";import{Spinner as uX4}from"@inkjs/ui";import{jsx as aJ,jsxs as Wu}from"react/jsx-runtime";function Y5$({status:$}){if($==="pending")return aJ(uX4,{label:""});return aJ(dD,{color:"green",children:"\u2713"})}function lX4($){return`${$.name}: ${$.port||"...."}`}function J5$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return Wu(iz,{flexDirection:"column",paddingBottom:1,children:[aJ(Q5$,{version:wJ0.version}),aJ(iz,{marginBottom:1,children:aJ(dD,{dimColor:!0,children:"\u2500".repeat(80)})}),aJ(iz,{children:Wu(dD,{dimColor:!0,children:["Home: ",Q]})}),Wu(iz,{gap:2,children:[$.map((Y)=>Wu(iz,{gap:1,children:[aJ(dD,{children:lX4(Y)}),aJ(Y5$,{status:Y.status})]},Y.name)),Wu(iz,{gap:1,children:[aJ(dD,{children:"Migrations"}),aJ(Y5$,{status:Z})]})]}),aJ(iz,{children:X?Wu(dD,{children:["Open in browser: ",aJ(dD,{color:"cyan",children:X})]}):aJ(dD,{dimColor:!0,children:"Starting..."})})]})}var G5$=D(()=>{bs0();X5$()});import{Box as cX4,Text as To}from"ink";import{jsx as ys0,jsxs as gs0}from"react/jsx-runtime";function mX4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function K5$({logs:$}){return ys0(cX4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return ys0(To,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return gs0(To,{children:[gs0(To,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),ys0(To,{color:mX4(Z.status),children:Z.status}),gs0(To,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var W5$=()=>{};var hs0={};$0(hs0,{App:()=>pX4});import{Box as dX4}from"ink";import{useSyncExternalStore as iX4}from"react";import{jsx as H5$,jsxs as nX4}from"react/jsx-runtime";function pX4({home:$}){let Z=iX4(Cs0,Ss0);return nX4(dX4,{flexDirection:"column",children:[H5$(J5$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),H5$(K5$,{logs:Z.logs})]})}var us0=D(()=>{G5$();W5$();dz()});var TG="thread-gate",yN="decopilot-hosted-harness",gN="decopilot-hosted-harness-sandboxed",RG="automations",iD="background-tools",pz="task-board-github-reads";var F5$="11";function U5$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:F5$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var N5$=()=>{};import tX4 from"pg";async function O5$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=oX4}=$,Y=$.log??((W)=>console.log(W)),J=new tX4.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[B5$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await O$(rX4)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[B5$.toString()])}catch{}await J.end().catch(()=>{})}}var B5$=8314027461559302n,oX4=600000,rX4=500;var D5$=D(()=>{i$()});function aX4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function ls0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function L5$(){let $=aX4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:ls0($,"--cpu-prof-dir")??process.cwd(),name:ls0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(ls0($,"--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 w5$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=hz();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),jJ0=setInterval(()=>void Z().catch(()=>{}),$),jJ0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(jJ0)clearInterval(jJ0)}}var jJ0;var j5$=()=>{};import*as sX4 from"bun:jsc";function E5$(){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{eX4()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=$Y4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var eX4,$Y4;var z5$=D(()=>{({startSamplingProfiler:eX4,samplingProfilerStackTraces:$Y4}=sX4)});function P5$(){L5$();let $=[w5$(),U1$(),E5$()];return()=>{for(let Z of $)Z()}}var A5$=D(()=>{gn0();j5$();z5$()});var nz=v((T5$)=>{Object.defineProperty(T5$,"__esModule",{value:!0});T5$.RepublishHeaders=T5$.DirectMsgHeaders=T5$.JsHeaders=T5$.AdvisoryKind=void 0;T5$.isOrderedPushConsumerOptions=ZY4;T5$.isPullConsumer=QY4;T5$.isPushConsumer=XY4;T5$.isBoundPushConsumerOptions=YY4;function ZY4($){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 QY4($){return $.isPullConsumer()}function XY4($){return $.isPushConsumer()}function YY4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}T5$.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"};T5$.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"};T5$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};T5$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var sJ=v((q5$)=>{Object.defineProperty(q5$,"__esModule",{value:!0});q5$.TD=q5$.TE=q5$.Empty=void 0;q5$.encode=BY4;q5$.decode=OY4;q5$.Empty=new Uint8Array(0);q5$.TE=new TextEncoder;q5$.TD=new TextDecoder;function NY4(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function BY4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(q5$.TE.encode($[Q]));if(Z.length===0)return q5$.Empty;if(Z.length===1)return Z[0];return NY4(...Z)}function OY4($){if(!$||$.length===0)return"";return q5$.TD.decode($)}});var eJ=v((V5$)=>{Object.defineProperty(V5$,"__esModule",{value:!0});V5$.errors=V5$.PermissionViolationError=V5$.NoRespondersError=V5$.TimeoutError=V5$.RequestError=V5$.ProtocolError=V5$.ConnectionError=V5$.DrainingConnectionError=V5$.ClosedConnectionError=V5$.AuthorizationError=V5$.UserAuthenticationExpiredError=V5$.InvalidOperationError=V5$.InvalidArgumentError=V5$.InvalidSubjectError=void 0;class ms0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}V5$.InvalidSubjectError=ms0;class EJ0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new EJ0(`${$} ${Z}`,Q)}}V5$.InvalidArgumentError=EJ0;class ds0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}V5$.InvalidOperationError=ds0;class zJ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new zJ0($);return null}}V5$.UserAuthenticationExpiredError=zJ0;class PJ0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new PJ0($);return null}}V5$.AuthorizationError=PJ0;class is0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}V5$.ClosedConnectionError=is0;class ps0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}V5$.DrainingConnectionError=ps0;class ns0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}V5$.ConnectionError=ns0;class ts0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}V5$.ProtocolError=ts0;class os0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof AJ0}}V5$.RequestError=os0;class rs0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}V5$.TimeoutError=rs0;class AJ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}V5$.NoRespondersError=AJ0;class TJ0 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new TJ0($,Q,X,Y)}}V5$.PermissionViolationError=TJ0;V5$.errors={AuthorizationError:PJ0,ClosedConnectionError:is0,ConnectionError:ns0,DrainingConnectionError:ps0,InvalidArgumentError:EJ0,InvalidOperationError:ds0,InvalidSubjectError:ms0,NoRespondersError:AJ0,PermissionViolationError:TJ0,ProtocolError:ts0,RequestError:os0,TimeoutError:rs0,UserAuthenticationExpiredError:zJ0}});var QW=v((v5$)=>{Object.defineProperty(v5$,"__esModule",{value:!0});v5$.SimpleMutex=v5$.Perf=void 0;v5$.extend=CY4;v5$.render=_Y4;v5$.timeout=vY4;v5$.delay=xY4;v5$.deadline=fY4;v5$.deferred=ss0;v5$.debugDeferred=bY4;v5$.shuffle=yY4;v5$.collect=gY4;v5$.jitter=_5$;v5$.backoff=hY4;v5$.nanos=uY4;v5$.millis=lY4;v5$.randomToken=dY4;var SY4=sJ(),as0=eJ();function CY4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function _Y4($){return SY4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function vY4($,Z=!0){let Q=Z?new as0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new as0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function xY4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function fY4($,Z=1000){let Q=ss0(),X=setTimeout(()=>{Q.reject(new as0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function ss0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function bY4(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function yY4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function gY4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class S5${timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}v5$.Perf=S5$;class C5${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=ss0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}v5$.SimpleMutex=C5$;function _5$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function hY4($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return _5$(Q>Z?$[Z]:$[Q])}}}function uY4($){return $*1e6}function lY4($){return Math.floor($/1e6)}var cY4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",hN=new Uint8Array(62);for(let $=0;$<62;$++)hN[$]=cY4.charCodeAt($);var mY4=218340105584896;function dY4(){let $=Math.floor(Math.random()*mY4),Z=$%62,Q=hN[Z];$=($-Z)/62,Z=$%62;let X=hN[Z];$=($-Z)/62,Z=$%62;let Y=hN[Z];$=($-Z)/62,Z=$%62;let J=hN[Z];$=($-Z)/62,Z=$%62;let G=hN[Z];$=($-Z)/62,Z=$%62;let K=hN[Z];$=($-Z)/62,Z=$%62;let W=hN[Z];$=($-Z)/62;let H=hN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var l5$=v((h5$)=>{Object.defineProperty(h5$,"__esModule",{value:!0});h5$.nuid=h5$.NuidImpl=void 0;var GJ4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",pD=62,qJ0=12,y5$=10,f5$=33,KJ4=333,b5$=qJ0+y5$,$e0=new Uint8Array(pD);for(let $=0;$<pD;$++)$e0[$]=GJ4.charCodeAt($);var RJ0=4294967296,g5$=BigInt(pD)**BigInt(y5$),Ro=Number(g5$/(1n<<32n)),es0=Number(g5$%(1n<<32n));function WJ4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function HJ4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else WJ4($)}class Ze0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(b5$),this.cbuf=new Uint8Array(qJ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Ro+1)),this.seqLo=Math.floor(Math.random()*RJ0);while($++<8&&this.seqHi===Ro&&this.seqLo>=es0);if(this.seqHi===Ro&&this.seqLo>=es0)this.seqLo=0;this.inc=Math.random()*(KJ4-f5$)+f5$|0}setPre(){HJ4(this.cbuf);for(let $=0;$<qJ0;$++)this.buf[$]=$e0[this.cbuf[$]%pD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=b5$-1;Q>=qJ0;Q--){let X=Math.floor($/pD),J=($-X*pD)*RJ0+Z,G=Math.floor(J/pD),K=J-G*pD;this.buf[Q]=$e0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=RJ0)this.seqLo-=RJ0,this.seqHi+=1;if(this.seqHi>Ro||this.seqHi===Ro&&this.seqLo>=es0)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()}}h5$.NuidImpl=Ze0;h5$.nuid=new Ze0});var i5$=v((m5$)=>{Object.defineProperty(m5$,"__esModule",{value:!0});m5$.nuid=m5$.Nuid=void 0;var c5$=l5$();m5$.Nuid=c5$.NuidImpl;m5$.nuid=c5$.nuid});var IJ0=v((MJ0)=>{Object.defineProperty(MJ0,"__esModule",{value:!0});MJ0.nuid=MJ0.Nuid=void 0;var p5$=i5$();Object.defineProperty(MJ0,"Nuid",{enumerable:!0,get:function(){return p5$.Nuid}});Object.defineProperty(MJ0,"nuid",{enumerable:!0,get:function(){return p5$.nuid}})});var nD=v((n5$)=>{Object.defineProperty(n5$,"__esModule",{value:!0});n5$.DEFAULT_HOST=n5$.DEFAULT_PORT=n5$.Match=void 0;n5$.syncIterator=DJ4;n5$.createInbox=LJ4;var BJ4=IJ0(),OJ4=eJ();n5$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function DJ4($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function LJ4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw OJ4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${BJ4.nuid.next()}`}n5$.DEFAULT_PORT=4222;n5$.DEFAULT_HOST="127.0.0.1"});var qo=v((a5$)=>{Object.defineProperty(a5$,"__esModule",{value:!0});a5$.DataBuffer=void 0;var o5$=sJ();class r5${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return o5$.TE.encode($)}static toAscii($){return o5$.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}a5$.DataBuffer=r5$});var tz=v(($9$)=>{Object.defineProperty($9$,"__esModule",{value:!0});$9$.LF=$9$.CR=$9$.CRLF=$9$.CR_LF_LEN=$9$.CR_LF=void 0;$9$.setTransportFactory=RJ4;$9$.defaultPort=qJ4;$9$.getUrlParseFn=MJ4;$9$.newTransport=IJ4;$9$.getResolveFn=VJ4;$9$.protoLen=e5$;$9$.extractProtocolMessage=kJ4;var PJ4=sJ(),AJ4=nD(),TJ4=qo(),$3;function RJ4($){$3=$}function qJ4(){return $3!==void 0&&$3.defaultPort!==void 0?$3.defaultPort:AJ4.DEFAULT_PORT}function MJ4(){return $3!==void 0&&$3.urlParseFn?$3.urlParseFn:void 0}function IJ4(){if(!$3||typeof $3.factory!=="function")throw Error("transport fn is not set");return $3.factory()}function VJ4(){return $3!==void 0&&$3.dnsResolveFn?$3.dnsResolveFn:void 0}$9$.CR_LF=`\r
2080
2080
  `;$9$.CR_LF_LEN=$9$.CR_LF.length;$9$.CRLF=TJ4.DataBuffer.fromAscii($9$.CR_LF);$9$.CR=new Uint8Array($9$.CRLF)[0];$9$.LF=new Uint8Array($9$.CRLF)[1];function e5$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===$9$.CR&&$[Q]===$9$.LF)return Q+1}return 0}function kJ4($){let Z=e5$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return PJ4.TD.decode(X)}return""}});var Ge0=v((W9$)=>{Object.defineProperty(W9$,"__esModule",{value:!0});W9$.ipV4=J9$;W9$.isIP=uJ4;W9$.parseIP=G9$;var Mo=4,oz=16,VJ0=48,Y9$=57,Q9$=65,gJ4=70,X9$=97,hJ4=102,Je0=16777215;function J9$($,Z,Q,X){let Y=new Uint8Array(oz);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((G,K)=>{Y[K]=G}),Y[12]=$,Y[13]=Z,Y[14]=Q,Y[15]=X,Y}function uJ4($){return G9$($)!==void 0}function G9$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return K9$($);case":":return lJ4($)}return}function K9$($){let Z=new Uint8Array(Mo);for(let Q=0;Q<Mo;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:J}=cJ4($);if(!J||X>255)return;$=$.substring(Y),Z[Q]=X}return J9$(Z[0],Z[1],Z[2],Z[3])}function lJ4($){let Z=new Uint8Array(oz),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<oz){let{n:Y,c:J,ok:G}=mJ4($);if(!G||Y>65535)return;if(J<$.length&&$[J]==="."){if(Q<0&&X!=oz-Mo)return;if(X+Mo>oz)return;let K=K9$($);if(K===void 0)return;Z[X]=K[12],Z[X+1]=K[13],Z[X+2]=K[14],Z[X+3]=K[15],$="",X+=Mo;break}if(Z[X]=Y>>8,Z[X+1]=Y,X+=2,$=$.substring(J),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(Q>=0)return;if(Q=X,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(X<oz){if(Q<0)return;let Y=oz-X;for(let J=X-1;J>=Q;J--)Z[J+Y]=Z[J];for(let J=Q+Y-1;J>=Q;J--)Z[J]=0}else if(Q>=0)return;return Z}function cJ4($){let Z=0,Q=0;for(Z=0;Z<$.length&&VJ0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=Y9$;Z++)if(Q=Q*10+($.charCodeAt(Z)-VJ0),Q>=Je0)return{n:Je0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function mJ4($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(VJ0<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=Y9$)Z*=16,Z+=$.charCodeAt(Q)-VJ0;else if(X9$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=hJ4)Z*=16,Z+=$.charCodeAt(Q)-X9$+10;else if(Q9$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=gJ4)Z*=16,Z+=$.charCodeAt(Q)-Q9$+10;else break;if(Z>=Je0)return{n:0,c:Q,ok:!1}}if(Q===0)return{n:0,c:Q,ok:!1};return{n:Z,c:Q,ok:!0}}});var Ne0=v((F9$)=>{Object.defineProperty(F9$,"__esModule",{value:!0});F9$.Servers=F9$.ServerImpl=void 0;F9$.isIPV4OrHostname=H9$;F9$.hostPort=Ue0;var Ke0=tz(),We0=QW(),He0=Ge0(),nJ4=nD(),tJ4=eJ();function H9$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Fe0($){return!H9$($)}function oJ4($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function Ue0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=oJ4($),Fe0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Fe0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):nJ4.DEFAULT_PORT,Y=new URL(`${Q===80?"https":"http"}://${$}`);Y.port=`${Q}`;let J=Y.hostname;if(J.charAt(0)==="[")J=J.substring(1,J.length-1);return{listen:Y.host,hostname:J,port:Q}}class Hu{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=Ue0($);this.listen=Q.listen,this.hostname=Q.hostname,this.port=Q.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,He0.isIP)(this.hostname))return[this];else{let Q=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${Q.join(",")}`);for(let X of Q){let Y=this.port===80?"https":"http",J=new URL(`${Y}://${Fe0(X)?"["+X+"]":X}`);J.port=`${this.port}`;let G=new Hu(J.host,!1);G.tlsName=this.hostname,Z.push(G)}}if($.randomize)(0,We0.shuffle)(Z);return this.resolves=Z,Z}}F9$.ServerImpl=Hu;class kJ0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw tJ4.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Ke0.getUrlParseFn)(),Q=new Map;for(let Y of this.servers)Q.set(Y.listen,Y);let X=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:J}=Ue0(Y),G=Q.get(J);if(G)G.gossiped=!1,X.push(G);else X.push(new Hu(Y))}if(this.randomize)(0,We0.shuffle)(X);if(this.servers=X,this.currentServer===void 0||!X.includes(this.currentServer))this.currentServer=X[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,He0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let Q=(0,Ke0.getUrlParseFn)();$=Q?Q($):$;let X=new Hu($,Z);if((0,He0.isIP)(X.hostname))X.tlsName=this.tlsName;this.servers.push(X)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return kJ0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return kJ0.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let Q=[],X=[],Y=(0,Ke0.getUrlParseFn)(),J=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Hu(K,!0);J.set(K,W)});let G=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&J.get(H)===void 0)G.push(W);J.delete(H)}),G.reverse(),G.forEach((K)=>{let W=this.servers.splice(K,1);X=X.concat(W[0].listen)}),J.forEach((K,W)=>{this.servers.push(K),Q.push(W)}),this.randomize&&Q.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,We0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}F9$.Servers=kJ0});var SJ0=v((O9$)=>{Object.defineProperty(O9$,"__esModule",{value:!0});O9$.QueuedIteratorImpl=void 0;var Be0=QW(),N9$=eJ();class B9${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,Be0.deferred)(),this.yields=[],this.iterClosed=(0,Be0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(Q){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new N9$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new N9$.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let X=$[Z];try{X()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let Q=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-Q:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,Be0.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}}O9$.QueuedIteratorImpl=B9$});var Oe0=v((j9$)=>{Object.defineProperty(j9$,"__esModule",{value:!0});j9$.MuxSubscription=void 0;var eJ4=nD(),L9$=eJ();class w9${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,eJ4.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((Q)=>{Q.resolver(Z,{})}),!0;if(Z.operation==="publish"){let Q=this.all().find((X)=>{return X.requestSubject===Z.subject});if(Q)return Q.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let Q=this.getToken(Z);if(Q){let X=this.get(Q);if(X){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new L9$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new L9$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}j9$.MuxSubscription=w9$});var De0=v((P9$)=>{Object.defineProperty(P9$,"__esModule",{value:!0});P9$.Heartbeat=void 0;var $34=QW();class z9${ph;interval;maxOut;timer;pendings;constructor($,Z,Q){this.ph=$,this.interval=Z,this.maxOut=Q,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,$34.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})}}P9$.Heartbeat=z9$});var je0=v((M9$)=>{Object.defineProperty(M9$,"__esModule",{value:!0});M9$.DenoBuffer=M9$.MAX_SIZE=M9$.AssertionError=void 0;M9$.assert=R9$;M9$.concat=q9$;M9$.append=Q34;M9$.readAll=X34;M9$.writeAll=Y34;var Z34=sJ();class Le0 extends Error{constructor($){super($);this.name="AssertionError"}}M9$.AssertionError=Le0;function R9$($,Z="Assertion failed."){if(!$)throw new Le0(Z)}var T9$=32768;M9$.MAX_SIZE=4294967294;function CJ0($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function q9$($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let Q=new Uint8Array($.length+Z.length);return Q.set($,0),Q.set(Z,$.length),Q}function Q34($,Z){return q9$($,Uint8Array.of(Z))}class we0{_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($){R9$($<=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=CJ0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(Z34.TE.encode($))}write($){let Z=this._grow($.byteLength);return CJ0($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let Q=this._tryGrowByReslice($);if(Q>=0)return Q;let X=this.capacity;if($<=Math.floor(X/2)-Z)CJ0(this._buf.subarray(this._off),this._buf);else if(X+$>M9$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,M9$.MAX_SIZE));CJ0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,M9$.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,Q=new Uint8Array(T9$);while(!0){let X=this.capacity-this.length<T9$,Y=X?Q:new Uint8Array(this._buf.buffer,this.length),J=$.read(Y);if(J===null)return Z;if(X)this.write(Y.subarray(0,J));else this._reslice(this.length+J);Z+=J}}}M9$.DenoBuffer=we0;function X34($){let Z=new we0;return Z.readFrom($),Z.bytes()}function Y34($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var Pe0=v((C9$)=>{Object.defineProperty(C9$,"__esModule",{value:!0});C9$.cc=C9$.State=C9$.Parser=C9$.Kind=void 0;C9$.describe=U34;var Ee0=je0(),ze0=sJ();C9$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function U34($){let Z,Q="";switch($.kind){case C9$.Kind.MSG:Z="MSG";break;case C9$.Kind.OK:Z="OK";break;case C9$.Kind.ERR:Z="ERR",Q=ze0.TD.decode($.data);break;case C9$.Kind.PING:Z="PING";break;case C9$.Kind.PONG:Z="PONG";break;case C9$.Kind.INFO:Z="INFO",Q=ze0.TD.decode($.data)}return`${Z}: ${Q}`}function V9$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var k9$=48,N34=57,Fu=67108864;class S9${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=C9$.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let Q=$[Z];switch(this.state){case C9$.State.OP_START:switch(Q){case C9$.cc.M:case C9$.cc.m:this.state=C9$.State.OP_M,this.hdr=-1,this.ma=V9$();break;case C9$.cc.H:case C9$.cc.h:this.state=C9$.State.OP_H,this.hdr=0,this.ma=V9$();break;case C9$.cc.P:case C9$.cc.p:this.state=C9$.State.OP_P;break;case C9$.cc.PLUS:this.state=C9$.State.OP_PLUS;break;case C9$.cc.MINUS:this.state=C9$.State.OP_MINUS;break;case C9$.cc.I:case C9$.cc.i:this.state=C9$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_H:switch(Q){case C9$.cc.M:case C9$.cc.m:this.state=C9$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_M:switch(Q){case C9$.cc.S:case C9$.cc.s:this.state=C9$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_MS:switch(Q){case C9$.cc.G:case C9$.cc.g:this.state=C9$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_MSG:switch(Q){case C9$.cc.SPACE:case C9$.cc.TAB:this.state=C9$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_MSG_SPC:switch(Q){case C9$.cc.SPACE:case C9$.cc.TAB:continue;default:this.state=C9$.State.MSG_ARG,this.as=Z}break;case C9$.State.MSG_ARG:switch(Q){case C9$.cc.CR:this.drop=1;break;case C9$.cc.NL:{let X=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(X),this.drop=0,this.as=Z+1,this.state=C9$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case C9$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:C9$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=C9$.State.MSG_END}else{let X=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<X)X=Y;if(X>0)this.msgBuf.write($.subarray(Z,Z+X)),Z=Z+X-1;else this.msgBuf.writeByte(Q)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:C9$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=C9$.State.MSG_END;break;case C9$.State.MSG_END:switch(Q){case C9$.cc.NL:this.drop=0,this.as=Z+1,this.state=C9$.State.OP_START;break;default:continue}break;case C9$.State.OP_PLUS:switch(Q){case C9$.cc.O:case C9$.cc.o:this.state=C9$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_PLUS_O:switch(Q){case C9$.cc.K:case C9$.cc.k:this.state=C9$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_PLUS_OK:switch(Q){case C9$.cc.NL:this.dispatcher.push({kind:C9$.Kind.OK}),this.drop=0,this.state=C9$.State.OP_START;break}break;case C9$.State.OP_MINUS:switch(Q){case C9$.cc.E:case C9$.cc.e:this.state=C9$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_MINUS_E:switch(Q){case C9$.cc.R:case C9$.cc.r:this.state=C9$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_MINUS_ER:switch(Q){case C9$.cc.R:case C9$.cc.r:this.state=C9$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_MINUS_ERR:switch(Q){case C9$.cc.SPACE:case C9$.cc.TAB:this.state=C9$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_MINUS_ERR_SPC:switch(Q){case C9$.cc.SPACE:case C9$.cc.TAB:continue;default:this.state=C9$.State.MINUS_ERR_ARG,this.as=Z}break;case C9$.State.MINUS_ERR_ARG:switch(Q){case C9$.cc.CR:this.drop=1;break;case C9$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:C9$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=C9$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case C9$.State.OP_P:switch(Q){case C9$.cc.I:case C9$.cc.i:this.state=C9$.State.OP_PI;break;case C9$.cc.O:case C9$.cc.o:this.state=C9$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_PO:switch(Q){case C9$.cc.N:case C9$.cc.n:this.state=C9$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_PON:switch(Q){case C9$.cc.G:case C9$.cc.g:this.state=C9$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_PONG:switch(Q){case C9$.cc.NL:this.dispatcher.push({kind:C9$.Kind.PONG}),this.drop=0,this.state=C9$.State.OP_START;break}break;case C9$.State.OP_PI:switch(Q){case C9$.cc.N:case C9$.cc.n:this.state=C9$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_PIN:switch(Q){case C9$.cc.G:case C9$.cc.g:this.state=C9$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_PING:switch(Q){case C9$.cc.NL:this.dispatcher.push({kind:C9$.Kind.PING}),this.drop=0,this.state=C9$.State.OP_START;break}break;case C9$.State.OP_I:switch(Q){case C9$.cc.N:case C9$.cc.n:this.state=C9$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_IN:switch(Q){case C9$.cc.F:case C9$.cc.f:this.state=C9$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_INF:switch(Q){case C9$.cc.O:case C9$.cc.o:this.state=C9$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_INFO:switch(Q){case C9$.cc.SPACE:case C9$.cc.TAB:this.state=C9$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case C9$.State.OP_INFO_SPC:switch(Q){case C9$.cc.SPACE:case C9$.cc.TAB:continue;default:this.state=C9$.State.INFO_ARG,this.as=Z}break;case C9$.State.INFO_ARG:switch(Q){case C9$.cc.CR:this.drop=1;break;case C9$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:C9$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=C9$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===C9$.State.MSG_ARG||this.state===C9$.State.MINUS_ERR_ARG||this.state===C9$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new Ee0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===C9$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new Ee0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,Q=new Uint8Array($+Z);if(Q.set(this.ma.subject),this.ma.reply)Q.set(this.ma.reply,$);if(this.argBuf=new Ee0.DenoBuffer(Q),this.ma.subject=Q.subarray(0,$),this.ma.reply)this.ma.reply=Q.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case C9$.cc.SPACE:case C9$.cc.TAB:case C9$.cc.CR:case C9$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Fu);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],Fu);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}: ${ze0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case C9$.cc.SPACE:case C9$.cc.TAB:case C9$.cc.CR:case C9$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Fu),this.ma.size=this.protoParseInt(Z[3],Fu);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],Fu),this.ma.size=this.protoParseInt(Z[4],Fu);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let Q=0;for(let X=0;X<$.length;X++){if($[X]<k9$||$[X]>N34)return-1;Q=Q*10+($[X]-k9$)}return Z!==void 0&&Q>Z?-1:Q}}C9$.Parser=S9$;C9$.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};C9$.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 xJ0=v((v9$)=>{Object.defineProperty(v9$,"__esModule",{value:!0});v9$.MsgHdrsImpl=void 0;v9$.canonicalMIMEHeaderKey=Te0;v9$.headers=D34;var _9$=sJ(),XW=nD(),vJ0=eJ();function Te0($){let F=!0,U=Array($.length);for(let N=0;N<$.length;N++){let B=$.charCodeAt(N);if(B===58||B<33||B>126)throw vJ0.InvalidArgumentError.format("header",`'${$[N]}' is not a valid character in a header name`);if(F&&97<=B&&B<=122)B-=32;else if(!F&&65<=B&&B<=90)B+=32;U[N]=B,F=B==45}return String.fromCharCode(...U)}function D34($=0,Z=""){if($===0&&Z!=="")throw vJ0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw vJ0.InvalidArgumentError.format("description","is required");return new Uu($,Z)}var Ae0="NATS/1.0";class Uu{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,Q]of this.headers){let X=$.values(Z);if(Q.length!==X.length)return!1;let Y=[...Q].sort(),J=[...X].sort();for(let G=0;G<Y.length;G++)if(Y[G]!==J[G])return!1}return!0}return!1}static decode($){let Z=new Uu,X=_9$.TD.decode($).split(`\r
2081
2081
  `),Y=X[0];if(Y!==Ae0){let J=Y.replace(Ae0,"").trim();if(J.length>0){if(Z._code=parseInt(J,10),isNaN(Z._code))Z._code=0;let G=Z._code.toString();J=J.replace(G,""),Z._description=J.trim()}}if(X.length>=1)X.slice(1).map((J)=>{if(J){let G=J.indexOf(":");if(G>-1){let K=J.slice(0,G),W=J.slice(G+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=Ae0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,Q]of this.headers)for(let X=0;X<Q.length;X++)$=`${$}\r
2082
2082
  ${Z}: ${Q[X]}`;return`${$}\r
@@ -3375,7 +3375,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
3375
3375
  ${J.join(`
3376
3376
  `)}`:X}function iM6($){let Z=new Set;for(let Q of $)for(let Y of Q.split(`
3377
3377
  `)){let X=Y.trim();if(/^Co-authored-by:\s/i.test(X))Z.add(X)}return[...Z]}var aa$=200,bM6=12,yM6,hM6=300,XI0=3;var LW1=O(()=>{pZ();u$();YI0();yM6={aheadBy:0,behindBy:0,files:[]}});function nM6($){if(!$||$.includes(".."))return!1;return pM6.test($)}function $e$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!nM6(Z))return null;let{__resolveType:Q,...Y}=$;return{resolveType:Z,payload:Y}}function Ze$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var pM6;var Qe$=O(()=>{pM6=/^[\w./@-]+$/});function a10($,Z){let Q=$?.githubRepo;if(!Q?.owner||!Q?.name)return null;if(!Q.connectionId)return Q;if(!Z.includes(Q.connectionId))return null;return Q}async function Xe$($,Z,Q,Y){let X=$.organization?.id;if(!X)throw new iw(iZ);let J=await kL($.storage,X,Y);if(J&&await AN($.storage,J)){let F=await sH($,J,{forceRefresh:!0}).catch((U)=>{throw new iw(U instanceof Error?U.message:iZ)});await Ye$($,Z,Q,F);return}let G=Y.connectionId??J?.legacyConnectionId;if(!G)throw new iw("Push requires a connected git account. Connect the repository's provider for this project and restart the sandbox.");await nu({ctx:$,connectionId:G,organizationId:X,forceRefresh:!0,onLegacyMintError:(F)=>{let U=F instanceof Error?F.message:iZ;throw new iw(U)}});let{cloneUrl:W,gitUserName:K,gitUserEmail:H}=await aH(G,Y.owner,Y.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=H3$(F instanceof Error?F.message:String(F));throw U?new iw(N):F});await Ye$($,Z,Q,{cloneUrl:W,gitUserName:K,gitUserEmail:H})}async function Ye$($,Z,Q,Y){let{cloneUrl:X,gitUserName:J,gitUserEmail:G}=Y,W=yd($),K=await Z.proxyDaemonRequest(Q,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:X},identity:{userName:J,userEmail:G}},...W?{operator:W}:{}})});if(!K.ok){let H=await eL(K,tM6).catch(()=>K.statusText);throw Error(`Failed to refresh sandbox git credentials (${K.status}): ${H}`)}}var tM6=10485760,iw;var wW1=O(()=>{O3();tM0();fa();KG0();Ss();pZ();iw=class iw extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function rM6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!oM6.test(Z))throw Error(`Invalid branch name: ${$}`)}function sb($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(aM6)])}async function $I6($,Z){let Q=$.var.studioContext,Y=GF(Z.branch),X=$.req.query("thread")??Y,J=X&&X===Y?Z.branchThread:X?await Q.storage.threads.get(X).catch(()=>null):null,G=J?.virtual_mcp_id===Z.virtualMcpId?J:null,W=Bf(G?.metadata?.runtime);if(W)return W;let K=iz0(Z.virtualMcpMetadata),H=K==="cms"?await r31(Q,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&K==="cms");if(U&&G)ba(Q,G.id,F);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:G?"unstamped":"threadless",liveness:H,resolved:F,stamped:U});return F}async function ZI6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await iY($.var.studioContext)}catch{return null}}function ab($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function cd($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),Y=$.var.studioContext,X=a10(Z,Q);if(!X)throw new f0({provider:"github",status:404,message:"Project has no GitHub repository"});let J=i(Y);return iu(Y,J.id,X)}function jW1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=yJ$(Z);if(Y!==void 0)return $.json({error:Q},429,{...R5,...Y===null?{}:{"Retry-After":String(Math.ceil(Y/1000))}});if(Z instanceof z6)return $.json({error:Q},409,R5);let X=E3(Z);if(X!==null){let J=X===404?404:X===409||X===422?409:502;return $.json({error:Q},J,R5)}return $.json({error:Q},502,R5)}async function We$($,Z,Q){let Y;try{Y=await fetch(Z,Q)}catch{return $.json({error:"Preview unreachable"},502)}let X;try{X=await Y.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(X,{status:Y.status,headers:{"content-type":Y.headers.get("content-type")??"application/json"}})}async function Ke$($){try{let Z=await cd($),Q=await JI0(Z,$.get("vmClaim").branch);return $.json(Q,200,R5)}catch(Z){return jW1($,Z)}}function e10($,Z){let Y=(KI0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return KI0.set($,X),X.finally(()=>{if(KI0.get($)===X)KI0.delete($)}),Y}async function I7($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,R5);let Y=Q?.runner??ab($);if(Y instanceof Response)return Y;let{claimName:X,userId:J,projectRef:G}=$.get("vmClaim"),W=Q?.method??"POST",K=null,H=new Headers;if(Q?.jsonBody!==void 0)K=Q.jsonBody,H.set("content-type","application/json");else if(Q?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=Q?.signal,U={method:W,headers:H,body:K,...F?{signal:F}:{}},N=async()=>{let B=await Y.proxyDaemonRequest(X,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Y.adoptLiveClaim({userId:J,projectRef:G},X))B=await Y.proxyDaemonRequest(X,Z,U);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...R5}})}}let D=await B.text(),L=Q?.redactRepoDir?QI6(D):D,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...R5}})};try{if(F){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((L,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await N()}catch(B){let D=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${D}`},502)}}function QI6($){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 HI0($,Z,Q,Y="GET",X){let J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null});if(J.status===404&&X){try{await J.body?.cancel()}catch{}if(await $.adoptLiveClaim(X,Z))J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null})}if(J.status===404){try{await J.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let G=await J.text();if(!J.ok){let W=`Daemon error (${J.status})`;try{W=JSON.parse(G).error??W}catch{}throw Error(W)}return JSON.parse(G)}function YI6($){return He$.includes($)}var oM6,Je$=524288,sM6=65536,aM6=1e4,Ge$=2000,eM6,KI0,R5,He$,Fe$=()=>{let $=new e0;$.use("/:virtualMcpId/:branch/*",eM6),$.post("/:virtualMcpId/:branch/write",(Q)=>I7(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>I7(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>I7(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>I7(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>I7(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>I7(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>I7(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return I7(Q,`/_sandbox/exec/${encodeURIComponent(Y)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return I7(Q,`/_sandbox/exec/${encodeURIComponent(Y)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>I7(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>I7(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let Y=Q.req.param("step");if(!Y||!YI6(Y))return Q.json({error:`step must be one of: ${He$.join(", ")}`},400);let X=Q.get("vmClaim"),J=await r31(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await ZI6(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,R5);if(Y==="start"){let G=i(Q.var.studioContext),W=ql(X.virtualMcpMetadata);try{await lz0({ctx:Q.var.studioContext,runner:J,handle:X.claimName,orgId:G.id,userId:X.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return Q.json({error:`Failed to push env to daemon: ${H}`},502)}}return I7(Q,`/_sandbox/setup/${Y}`,{signal:Q.req.raw.signal,map404to410:!0,runner:J})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let Y=Q.get("vmClaim");if(!Y.runner)return PB(Q,async(X)=>{await X.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return Ha$(Q,{ctx:Q.var.studioContext,claimName:Y.claimName,runner:Y.runner,virtualMcpId:Y.virtualMcpId,branch:Y.branch,userId:Y.userId,projectRef:Y.projectRef,virtualMcpMetadata:Y.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Ke$(Q);return Z(Q)});let Z=(Q)=>I7(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(Ge$)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Ke$(Q);return I7(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(Ge$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")try{let X=await Q.req.json().catch(()=>({})),J=await cd(Q),G=await GI0(J,Y.branch,X.base);return Q.json(G,200,R5)}catch(X){return jW1(Q,X)}return I7(Q,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Q.json({ok:!0},200,R5);let Y=ab(Q);if(Y instanceof Response)return Y;let{claimName:X,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return e10(X,async()=>{try{await s31(W,Y,X);let K=a10(J,G);if(K)await Xe$(W,Y,X,K)}catch(K){if(K instanceof iw)return Q.json({error:K.message},403,R5);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,R5)}return I7(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return e10(Y.claimName,async()=>{let X=await Q.req.json().catch(()=>({})),J=Array.isArray(X.filepaths)?X.filepaths.filter((G)=>typeof G==="string"):[];if(J.length===0)return Q.json({error:"filepaths is required"},400,R5);try{let G=await cd(Q);return await ea$(G,Y.branch,J),Q.json({ok:!0},200,R5)}catch(G){let W=E3(G)===409||G instanceof z6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,R5)}});return e10(Y.claimName,()=>I7(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return e10(Y.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await cd(Q),H=W.base??await K.getDefaultBranch();return await WI0(K,Y.branch,H),Q.json({ok:!0},200,R5)}catch(W){return jW1(Q,W)}});let X=ab(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return e10(J,async()=>{try{await s31(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,R5)}return I7(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",l5({maxSize:Je$,onError:(Q)=>Q.json({error:"Payload too large"},413,R5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=ab(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,D]=$W1(F)&&N?[F,U]:X?await Promise.all([HI0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),HI0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await cd(Q);return Promise.all([JI0(w,Y.branch),GI0(w,Y.branch)])})();await kW(K,i(K).id,"suggesting a commit message");let L=await Da$(K,B,D);return Q.json(L,200,R5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return Q.json({error:F},502,R5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",l5({maxSize:Je$,onError:(Q)=>Q.json({error:"Payload too large"},413,R5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=ab(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,D]=$W1(F)&&N?[F,U]:X?await Promise.all([HI0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),HI0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await cd(Q);return Promise.all([JI0(w,Y.branch),GI0(w,Y.branch)])})();await kW(K,i(K).id,"judging whether a change needs review");let L=await La$(K,B,D,typeof H.language==="string"?H.language:void 0);return Q.json(L,200,R5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return Q.json({error:F},502,R5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let Y=ab(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J=Q.req.query("path");if(!J||!J.startsWith("/")||J.startsWith("//")||J.includes("..")||J.includes("\\"))return Q.json({error:"Path not allowed"},403);let G;try{G=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W=G.replace(/\/+$/,"");return We$(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",l5({maxSize:sM6,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=ab(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J;try{J=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!J)return Q.json({error:"Preview not available"},502);let G;try{G=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Q.json({error:"Invalid JSON body"},400);let W=$e$(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=Ze$(J,W.resolveType);return We$(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var Ue$=O(()=>{y$();_K();xd();o31();Sa();Ga$();R3();Ml();Wa$();WK();jH();Ka$();Fa$();v$1();_a();YW1();wa$();pZ();d6();LW1();Qe$();wW1();oM6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;eM6=nM0(async($,Z)=>{let Q=$.var.studioContext;try{p(Q)}catch{return $.json({error:"Unauthorized"},401)}let Y=c0(Q);if(!Y)return $.json({error:"Unauthorized"},401);let X;try{X=i(Q)}catch{return $.json({error:"Organization scope required"},403)}let J=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!J||!G)return $.json({error:"virtualMcpId and branch are required"},400);try{rM6(G)}catch(L){let w=L instanceof Error?L.message:String(L);return $.json({error:w},400)}let W=await Q.storage.virtualMcps.findById(J);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=Za({orgId:X.id,virtualMcpId:J,branch:G}),H=await U11(Q,G),F=N11(H,Y),U=Ja$({userId:F,projectRef:K}),N=W.metadata??null,B=await $I6($,{claimName:U,branch:G,virtualMcpId:J,sandboxUserId:F,virtualMcpMetadata:N,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:null,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z();let D;try{D=await iY(Q)}catch{D=null}if(!D)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:D,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z()});KI0=new Map;R5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};He$=["clone","install","start"]});function Ne$($,Z,Q){let Y=EW1.get($);if(!Y)Y={pending:null,running:!1},EW1.set($,Y);if(!Y.pending)Y.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let X=Y.pending;X.deps=Z;for(let[G,W]of Object.entries(Q.set??{}))X.set.set(G,W),X.del.delete(G);for(let G of Q.delete??[])X.del.add(G),X.set.delete(G);let J=new Promise((G,W)=>{X.resolvers.push(G),X.rejecters.push(W)});if(!Y.running)JI6($,Y);return J}async function JI6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let Y=await GI6(Q);for(let X of Q.resolvers)X(Y)}catch(Y){for(let X of Q.rejecters)X(Y)}}}finally{if(Z.running=!1,!Z.pending)EW1.delete($)}}async function GI6($){let{client:Z,branch:Q,packagePath:Y}=$.deps,X=new Map;for(let J=0;;J++){let G=await ld(Z,Q),W=await Z.listDecofileEntries(G,Y),K=BW1(W,Y),H=[],F=new Map(K.map((N)=>[N.path,{stem:N.stem,sha:N.sha}]));for(let[N,B]of $.set){let D=DW1(K,N),L=`${JSON.stringify(B,null,2)}
3378
- `;await ta$(Z.repo,L);let w=D[0]??`${QI0(Y)}/${GW1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of D.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of DW1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await oa$(Z,F.values(),X),{decofile:B,skipped:D}=n10(N);if(D.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:nW(Z.repo),branch:Q,packagePath:Y,blocks:D.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:WI6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof z6)||J>=XI6-1)throw N;await P$(S7(2000,200,J,2,0.5))}}}function WI6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return g01(Y,$.deps.coAuthor)}var XI6=3,EW1;var Be$=O(()=>{bE0();rM0();X6();u$();pZ();YI0();EW1=new Map});import{createHmac as De$,randomBytes as KI6,timingSafeEqual as HI6}from"crypto";function Oe$(){if(FI0)return FI0;let $;try{let Z=O0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return FI0=$?Buffer.from($):KI6(32),FI0}function zW1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+FI6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=De$("sha256",Oe$()).update(Y).digest("base64url");return`${Y}.${X}`}function Le$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(De$("sha256",Oe$()).update(Y).digest("base64url"));if(X.length!==J.length||!HI6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var FI6=21600000,FI0=null;var we$=O(()=>{t1()});import{z as dd}from"zod";function NI6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&UI6.test($)}function Ae$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function $$0($){let Z=$.get("decofileScope");return iu($.var.studioContext,Z.organizationId,Z.githubRepo)}function Z$0($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof z6)return $.json({error:Q},409);let Y=E3(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function Te$(){let $=new e0;return $.use("/:virtualMcpId/:branch",Pe$),$.use("/:virtualMcpId/:branch/*",Pe$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await $$0(Z),X=await ra$(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(X.decofile,200,{...J,"content-type":"application/json"});let G=zW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(Ae$(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return Z$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await $$0(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return Z$0(Z,X)}}),$.patch("/:virtualMcpId/:branch",DI6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=OI6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J=X.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{oM0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(JW1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await $$0(Z),W=await Ne$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:yd(Y)},J),K=zW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:Ae$(Z)})}catch(G){return Z$0(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await $$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(E3(W)!==409)throw W;await WI0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(E3(G)===409)return Z.json({error:"merge-conflict"},409);if(E3(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return Z$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await $$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(E3(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return Z$0(Z,Y)}}),$}var UI6,je$=500,Ee$=1048576,ze$=1024,BI6=8388608,DI6,OI6,Pe$;var Re$=O(()=>{f$1();rM0();y$();_K();o31();tM0();wW1();pZ();Be$();we$();LW1();YI0();jH();UI6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;DI6=l5({maxSize:BI6,onError:($)=>$.json({error:"Payload too large"},413)}),OI6=dd.object({set:dd.record(dd.string(),dd.unknown()).optional(),delete:dd.array(dd.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=je$,{message:`Patch cannot touch more than ${je$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Ee$),{message:`Each block must be at most ${Ee$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=ze$),{message:`Each block key must be at most ${ze$} characters`}),Pe$=nM0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!NI6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!Le$(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await sG(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!mz0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=a10(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var qe$=($)=>{let Z=new e0;if(Z.use("*",Dd),Z.use("*",$t$),Z.route("/",YM0()),Z.route("/",xt$()),Z.route("/",At$()),Z.route("/",ps$()),Z.route("/",ys$()),Z.route("/",ds$()),Z.route("/",hs$()),Z.route("/",mM0()),Z.route("/tools",es$()),Z.route("/",rs$()),Z.route("/",Os$({kvStorage:$.kvStorage})),Z.route("/",Bs$()),Z.route("/fs",Vs$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Fe$()),Z.route("/decofile",Te$()),Z.route("/",fs$()),Z.route("/",Ss$()),Z.route("/deco-sites",JM0()),Z.route("/hosting",Ut$()),Z.route("/monitor",jt$()),Z.route("/sso",aq0()),Z.route("/",iM0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Gt$()),$.mountDevAssets)Z.route("/dev-assets",HM0({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("/",Ki$()),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",_s$()),Z.route("/mcp",pA0()),Z.route("/mcp/self",lM0()),Z.route("/mcp",oA0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Me$=O(()=>{y$();Zt$();lq0();Wt$();LG1();Nt$();Et$();FM0();hb();UG1();PG1();Ds$();Ls$();ks$();Cs$();Ce();JG1();rA0();u31();vs$();bs$();gs$();us$();d31();ns$();ss$();m31();$a$();i31();nA0();Ue$();Re$()});function LI6($){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 wI6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Ie$=()=>{let $=new e0;return $.use("*",wI6),$.get("/",async(Z)=>{let Q=O0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await GJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:LI6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var Ve$=O(()=>{y$();t1();cR0()});import{z as V1}from"zod";function iF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function II6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function VI6($,Z,Q){try{return JSON.parse($)}catch{throw new Ce$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function kI6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:VI6(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function SI6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?SJ(Q.function.parameters):SJ({type:"object",properties:{}});return[Q.function.name,X$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function CI6($){if(!$)return;return{openai:{response_format:$}}}function _I6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function ke$($,Z,Q,Y,X,J){let G={model:$,messages:Z,tools:Q,temperature:Y.temperature,maxTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function Se$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var jI6=256,EI6,zI6,PI6,AI6,TI6,RI6,qI6,MI6,Ce$,_e$,ve$;var fe$=O(()=>{b4();y$();xd();EK();EI6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),zI6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),PI6=V1.discriminatedUnion("role",[V1.object({role:V1.literal("system"),content:V1.string(),name:V1.string().optional()}),V1.object({role:V1.literal("user"),content:V1.union([V1.string(),V1.array(V1.union([V1.object({type:V1.literal("text"),text:V1.string()}),V1.object({type:V1.literal("image_url"),image_url:V1.object({url:V1.string(),detail:V1.string().optional()})})]))]),name:V1.string().optional()}),V1.object({role:V1.literal("assistant"),content:V1.string().nullable().optional(),name:V1.string().optional(),tool_calls:V1.array(zI6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),AI6=V1.object({type:V1.literal("text")}),TI6=V1.object({type:V1.literal("json_object")}),RI6=V1.object({type:V1.literal("json_schema"),json_schema:V1.object({name:V1.string(),description:V1.string().optional(),schema:V1.record(V1.string(),V1.unknown()),strict:V1.boolean().optional()})}),qI6=V1.union([AI6,TI6,RI6]),MI6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(PI6),stream:V1.boolean().optional().default(!1),temperature:V1.number().min(0).max(2).optional(),max_tokens:V1.number().positive().optional(),top_p:V1.number().min(0).max(1).optional(),frequency_penalty:V1.number().min(-2).max(2).optional(),presence_penalty:V1.number().min(-2).max(2).optional(),stop:V1.union([V1.string(),V1.array(V1.string())]).optional(),tools:V1.array(EI6).optional(),tool_choice:V1.union([V1.literal("auto"),V1.literal("none"),V1.literal("required"),V1.object({type:V1.literal("function"),function:V1.object({name:V1.string()})})]).optional(),response_format:qI6.optional(),user:V1.string().optional()});Ce$=class Ce$ extends Error{constructor($){super($);this.name="MessageConversionError"}};_e$=new e0;_e$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(iF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(iF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(iF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=MI6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(iF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=II6(J.model);if(!G)return $.json(iF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>ZE(E.providerId));if(!j)return $.json(iF("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(iF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=kI6(J.messages),N=J.tools?SI6(J.tools):void 0,B=CI6(J.response_format),D=_I6(),L=Math.floor(Date.now()/1000);if(J.stream)return PB($,async(w)=>{let j=ke$(F,U,N,J,B,$.req.raw.signal);try{let E=rL(j),z=!1,P=0,A="",q=async()=>{if(A.length===0)return;let k=A;A="",await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of E.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=jI6)await q()}else if(k.type==="tool-call"){await q();let M=P++;await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await q(),await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:Se$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await q(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=ke$(F,U,N,J,B,$.req.raw.signal),j=await tL(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:Se$(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(iF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(iF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(iF(X.message,"server_error"),500)}});ve$=_e$});function vI6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function be$(){let $=new e0;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=c0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!mZ(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||r5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(EJ0(U)!==J)continue;if(!vI6(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var xe$=O(()=>{y$();L3()});var ge$;var ye$=O(()=>{ge$={name:"decocms",version:"4.371.4",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^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","@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"}}});function xI6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??bI6}}var he$,bI6="https://ph.studio.decocms.com",ue$;var le$=O(()=>{y$();Xr();gf();k5();t1();iJ1();ye$();he$=new e0;he$.get("/",($)=>{let Z={version:ge$.version,theme:L5$(),...iW().logo&&{logo:iW().logo},...pN()&&{internalUrl:sg1()},...O0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!O0().firecrawlApiKey,hostingEnabled:!!O0().controlplaneRestUrl&&!!O0().controlplaneServiceToken,hostingControlPlaneGa:O0().hostingControlPlaneGa,monitorEnabled:!!O0().clickhouseAnalyticsUrl&&!!O0().clickhouseAnalyticsPassword,monitorGa:O0().monitorGa,plansEnabled:O0().plansEnabled,auth:Zn$(),posthog:xI6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:IB()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});ue$=he$});function md($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function PW1($){return(md($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function de$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(md($))}&sz=${Z}`}function ce$($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function me$($){let{brand:Z,domain:Q,score:Y,verdict:X}=$,J=typeof Y==="number"?`${Z} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=X?.trim()?ce$(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):ce$(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as m0}from"zod";var eb,yI6,gI6,hI6,uI6,ie$;var pe$=O(()=>{eb=m0.enum(["good","bad","neutral"]),yI6=m0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},m0.object({kind:m0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:m0.coerce.string().optional(),tone:eb.optional(),muted:m0.boolean().optional(),delta:m0.coerce.string().optional(),deltaDir:m0.enum(["up","down","neutral"]).optional(),points:m0.array(m0.coerce.number()).optional(),label:m0.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 $})),gI6=m0.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},m0.array(yI6)),hI6={key:m0.coerce.string(),title:m0.coerce.string(),eyebrow:m0.coerce.string().optional(),headline:m0.coerce.string(),annotation:m0.coerce.string().optional(),methodology:m0.coerce.string().optional(),sources:m0.array(m0.object({name:m0.coerce.string(),logoUrl:m0.coerce.string()})).optional()},uI6=m0.discriminatedUnion("template",[m0.object({template:m0.literal("cover"),score:m0.object({value:m0.coerce.number(),max:m0.coerce.number().optional(),grade:m0.coerce.string().optional(),label:m0.coerce.string().optional()}).optional(),brandImage:m0.coerce.string().optional(),screenshot:m0.coerce.string().optional(),mobileScreenshot:m0.coerce.string().optional()}),m0.object({template:m0.literal("cta"),ctaUrl:m0.coerce.string().optional(),ctaLabel:m0.coerce.string().optional(),bullets:m0.array(m0.coerce.string()).optional()}),m0.object({template:m0.literal("series"),points:m0.array(m0.coerce.number()).min(2),xLabels:m0.array(m0.coerce.string()).min(1),unit:m0.coerce.string().optional(),callout:m0.object({index:m0.coerce.number(),value:m0.coerce.string(),tone:eb.optional()})}),m0.object({template:m0.literal("threshold"),value:m0.coerce.string().default(""),metricLabel:m0.coerce.string().optional(),ratio:m0.coerce.number(),thresholdRatio:m0.coerce.number().optional(),thresholdLabel:m0.coerce.string().default(""),tone:eb.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:eb.optional()})).min(1)}),m0.object({template:m0.literal("bars"),items:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),ratio:m0.coerce.number(),tone:eb.optional()})).min(1)}),m0.object({template:m0.literal("gauges"),gauges:m0.array(m0.object({label:m0.coerce.string(),value:m0.coerce.string(),status:m0.enum(["good","warn","bad"]).catch("warn"),caption:m0.coerce.string().optional(),ratio:m0.coerce.number().optional()})).min(1)}),m0.object({template:m0.literal("checklist"),checks:m0.array(m0.object({label:m0.coerce.string(),status:m0.enum(["pass","fail","warn"]).catch("fail"),value:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("table"),columns:m0.array(m0.object({label:m0.coerce.string(),align:m0.enum(["left","right"]).optional()})).min(1),rows:m0.array(gI6).min(1),highlightRow:m0.coerce.number().optional()}),m0.object({template:m0.literal("products"),products:m0.array(m0.object({name:m0.coerce.string(),price:m0.coerce.string().optional(),image:m0.coerce.string().optional(),url:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("list"),entries:m0.array(m0.object({label:m0.coerce.string(),severity:m0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:m0.coerce.number().optional()}),m0.object({template:m0.literal("keywords"),volumeLabel:m0.coerce.string().optional(),keywords:m0.array(m0.object({term:m0.coerce.string(),volume:m0.coerce.string(),position:m0.coerce.number().catch(0)})).min(1)}),m0.object({template:m0.literal("competitor"),metricLabel:m0.coerce.string().optional(),competitors:m0.array(m0.object({name:m0.coerce.string(),value:m0.coerce.string(),tone:eb.optional(),isYou:m0.boolean().optional()})).min(1)}),m0.object({template:m0.literal("scorecard"),rivalLabel:m0.coerce.string().optional(),dimensions:m0.array(m0.object({label:m0.coerce.string(),you:m0.coerce.string(),rival:m0.coerce.string().optional(),rivalName:m0.coerce.string().optional(),tone:eb.optional()})).min(1)})]),ie$=m0.object({...hI6,template:uI6})});function UI0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=ie$.safeParse(X.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:X.section_type,position:X.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((X)=>X!==null),Y=Q.filter((X)=>X.template.template!=="cover"&&X.template.template!=="cta").map((X)=>({key:X.key,title:X.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Y},slides:Q},drops:Z}}var AW1=O(()=>{pe$()});import{join as ne$}from"path";async function cI6($){try{let Z=await fetch(`${bH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(lI6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=UI0(Q);if(!Y.slides.length)return null;let X=Y.slides.find((W)=>W.template.template==="cover"),J=X?.template,G=J&&J.template==="cover"?J:void 0;return{brand:Y.meta.brand?.trim()||PW1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function EG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function dI6($,Z){let Q=md($),Y=Z?.brand?.trim()||PW1(Q),X=de$(Q,128),G=`${(O0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=me$({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${EG(W)}</title>`,`<meta name="description" content="${EG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${EG(W)}" />`,`<meta property="og:description" content="${EG(K)}" />`,`<meta property="og:url" content="${EG(G)}" />`,`<meta property="og:image" content="${EG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${EG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${EG(W)}" />`,`<meta name="twitter:description" content="${EG(K)}" />`,`<meta name="twitter:image" content="${EG(H)}" />`,`<meta name="twitter:image:alt" content="${EG(F)}" />`,`<link rel="canonical" href="${EG(G)}" />`,`<link rel="icon" href="${EG(X)}" sizes="any" />`].join(`
3378
+ `;await ta$(Z.repo,L);let w=D[0]??`${QI0(Y)}/${GW1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of D.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of DW1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await oa$(Z,F.values(),X),{decofile:B,skipped:D}=n10(N);if(D.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:nW(Z.repo),branch:Q,packagePath:Y,blocks:D.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:WI6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof z6)||J>=XI6-1)throw N;await P$(S7(2000,200,J,2,0.5))}}}function WI6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return g01(Y,$.deps.coAuthor)}var XI6=3,EW1;var Be$=O(()=>{bE0();rM0();X6();u$();pZ();YI0();EW1=new Map});import{createHmac as De$,randomBytes as KI6,timingSafeEqual as HI6}from"crypto";function Oe$(){if(FI0)return FI0;let $;try{let Z=O0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return FI0=$?Buffer.from($):KI6(32),FI0}function zW1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+FI6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=De$("sha256",Oe$()).update(Y).digest("base64url");return`${Y}.${X}`}function Le$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(De$("sha256",Oe$()).update(Y).digest("base64url"));if(X.length!==J.length||!HI6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var FI6=21600000,FI0=null;var we$=O(()=>{t1()});import{z as dd}from"zod";function NI6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&UI6.test($)}function Ae$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function $$0($){let Z=$.get("decofileScope");return iu($.var.studioContext,Z.organizationId,Z.githubRepo)}function Z$0($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof z6)return $.json({error:Q},409);let Y=E3(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function Te$(){let $=new e0;return $.use("/:virtualMcpId/:branch",Pe$),$.use("/:virtualMcpId/:branch/*",Pe$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await $$0(Z),X=await ra$(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(X.decofile,200,{...J,"content-type":"application/json"});let G=zW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(Ae$(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return Z$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await $$0(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return Z$0(Z,X)}}),$.patch("/:virtualMcpId/:branch",DI6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=OI6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J=X.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{oM0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(JW1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await $$0(Z),W=await Ne$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:yd(Y)},J),K=zW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:Ae$(Z)})}catch(G){return Z$0(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await $$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(E3(W)!==409)throw W;await WI0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(E3(G)===409)return Z.json({error:"merge-conflict"},409);if(E3(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return Z$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await $$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(E3(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return Z$0(Z,Y)}}),$}var UI6,je$=500,Ee$=1048576,ze$=1024,BI6=8388608,DI6,OI6,Pe$;var Re$=O(()=>{f$1();rM0();y$();_K();o31();tM0();wW1();pZ();Be$();we$();LW1();YI0();jH();UI6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;DI6=l5({maxSize:BI6,onError:($)=>$.json({error:"Payload too large"},413)}),OI6=dd.object({set:dd.record(dd.string(),dd.unknown()).optional(),delete:dd.array(dd.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=je$,{message:`Patch cannot touch more than ${je$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Ee$),{message:`Each block must be at most ${Ee$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=ze$),{message:`Each block key must be at most ${ze$} characters`}),Pe$=nM0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!NI6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!Le$(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await sG(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!mz0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=a10(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var qe$=($)=>{let Z=new e0;if(Z.use("*",Dd),Z.use("*",$t$),Z.route("/",YM0()),Z.route("/",xt$()),Z.route("/",At$()),Z.route("/",ps$()),Z.route("/",ys$()),Z.route("/",ds$()),Z.route("/",hs$()),Z.route("/",mM0()),Z.route("/tools",es$()),Z.route("/",rs$()),Z.route("/",Os$({kvStorage:$.kvStorage})),Z.route("/",Bs$()),Z.route("/fs",Vs$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Fe$()),Z.route("/decofile",Te$()),Z.route("/",fs$()),Z.route("/",Ss$()),Z.route("/deco-sites",JM0()),Z.route("/hosting",Ut$()),Z.route("/monitor",jt$()),Z.route("/sso",aq0()),Z.route("/",iM0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Gt$()),$.mountDevAssets)Z.route("/dev-assets",HM0({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("/",Ki$()),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",_s$()),Z.route("/mcp",pA0()),Z.route("/mcp/self",lM0()),Z.route("/mcp",oA0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Me$=O(()=>{y$();Zt$();lq0();Wt$();LG1();Nt$();Et$();FM0();hb();UG1();PG1();Ds$();Ls$();ks$();Cs$();Ce();JG1();rA0();u31();vs$();bs$();gs$();us$();d31();ns$();ss$();m31();$a$();i31();nA0();Ue$();Re$()});function LI6($){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 wI6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Ie$=()=>{let $=new e0;return $.use("*",wI6),$.get("/",async(Z)=>{let Q=O0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await GJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:LI6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var Ve$=O(()=>{y$();t1();cR0()});import{z as V1}from"zod";function iF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function II6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function VI6($,Z,Q){try{return JSON.parse($)}catch{throw new Ce$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function kI6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:VI6(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function SI6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?SJ(Q.function.parameters):SJ({type:"object",properties:{}});return[Q.function.name,X$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function CI6($){if(!$)return;return{openai:{response_format:$}}}function _I6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function ke$($,Z,Q,Y,X,J){let G={model:$,messages:Z,tools:Q,temperature:Y.temperature,maxTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function Se$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var jI6=256,EI6,zI6,PI6,AI6,TI6,RI6,qI6,MI6,Ce$,_e$,ve$;var fe$=O(()=>{b4();y$();xd();EK();EI6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),zI6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),PI6=V1.discriminatedUnion("role",[V1.object({role:V1.literal("system"),content:V1.string(),name:V1.string().optional()}),V1.object({role:V1.literal("user"),content:V1.union([V1.string(),V1.array(V1.union([V1.object({type:V1.literal("text"),text:V1.string()}),V1.object({type:V1.literal("image_url"),image_url:V1.object({url:V1.string(),detail:V1.string().optional()})})]))]),name:V1.string().optional()}),V1.object({role:V1.literal("assistant"),content:V1.string().nullable().optional(),name:V1.string().optional(),tool_calls:V1.array(zI6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),AI6=V1.object({type:V1.literal("text")}),TI6=V1.object({type:V1.literal("json_object")}),RI6=V1.object({type:V1.literal("json_schema"),json_schema:V1.object({name:V1.string(),description:V1.string().optional(),schema:V1.record(V1.string(),V1.unknown()),strict:V1.boolean().optional()})}),qI6=V1.union([AI6,TI6,RI6]),MI6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(PI6),stream:V1.boolean().optional().default(!1),temperature:V1.number().min(0).max(2).optional(),max_tokens:V1.number().positive().optional(),top_p:V1.number().min(0).max(1).optional(),frequency_penalty:V1.number().min(-2).max(2).optional(),presence_penalty:V1.number().min(-2).max(2).optional(),stop:V1.union([V1.string(),V1.array(V1.string())]).optional(),tools:V1.array(EI6).optional(),tool_choice:V1.union([V1.literal("auto"),V1.literal("none"),V1.literal("required"),V1.object({type:V1.literal("function"),function:V1.object({name:V1.string()})})]).optional(),response_format:qI6.optional(),user:V1.string().optional()});Ce$=class Ce$ extends Error{constructor($){super($);this.name="MessageConversionError"}};_e$=new e0;_e$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(iF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(iF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(iF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=MI6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(iF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=II6(J.model);if(!G)return $.json(iF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>ZE(E.providerId));if(!j)return $.json(iF("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(iF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=kI6(J.messages),N=J.tools?SI6(J.tools):void 0,B=CI6(J.response_format),D=_I6(),L=Math.floor(Date.now()/1000);if(J.stream)return PB($,async(w)=>{let j=ke$(F,U,N,J,B,$.req.raw.signal);try{let E=rL(j),z=!1,P=0,A="",q=async()=>{if(A.length===0)return;let k=A;A="",await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of E.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=jI6)await q()}else if(k.type==="tool-call"){await q();let M=P++;await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await q(),await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:Se$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await q(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=ke$(F,U,N,J,B,$.req.raw.signal),j=await tL(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:Se$(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(iF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(iF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(iF(X.message,"server_error"),500)}});ve$=_e$});function vI6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function be$(){let $=new e0;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=c0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!mZ(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||r5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(EJ0(U)!==J)continue;if(!vI6(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var xe$=O(()=>{y$();L3()});var ge$;var ye$=O(()=>{ge$={name:"decocms",version:"4.371.5",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^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","@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"}}});function xI6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??bI6}}var he$,bI6="https://ph.studio.decocms.com",ue$;var le$=O(()=>{y$();Xr();gf();k5();t1();iJ1();ye$();he$=new e0;he$.get("/",($)=>{let Z={version:ge$.version,theme:L5$(),...iW().logo&&{logo:iW().logo},...pN()&&{internalUrl:sg1()},...O0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!O0().firecrawlApiKey,hostingEnabled:!!O0().controlplaneRestUrl&&!!O0().controlplaneServiceToken,hostingControlPlaneGa:O0().hostingControlPlaneGa,monitorEnabled:!!O0().clickhouseAnalyticsUrl&&!!O0().clickhouseAnalyticsPassword,monitorGa:O0().monitorGa,plansEnabled:O0().plansEnabled,auth:Zn$(),posthog:xI6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:IB()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});ue$=he$});function md($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function PW1($){return(md($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function de$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(md($))}&sz=${Z}`}function ce$($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function me$($){let{brand:Z,domain:Q,score:Y,verdict:X}=$,J=typeof Y==="number"?`${Z} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=X?.trim()?ce$(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):ce$(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as m0}from"zod";var eb,yI6,gI6,hI6,uI6,ie$;var pe$=O(()=>{eb=m0.enum(["good","bad","neutral"]),yI6=m0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},m0.object({kind:m0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:m0.coerce.string().optional(),tone:eb.optional(),muted:m0.boolean().optional(),delta:m0.coerce.string().optional(),deltaDir:m0.enum(["up","down","neutral"]).optional(),points:m0.array(m0.coerce.number()).optional(),label:m0.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 $})),gI6=m0.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},m0.array(yI6)),hI6={key:m0.coerce.string(),title:m0.coerce.string(),eyebrow:m0.coerce.string().optional(),headline:m0.coerce.string(),annotation:m0.coerce.string().optional(),methodology:m0.coerce.string().optional(),sources:m0.array(m0.object({name:m0.coerce.string(),logoUrl:m0.coerce.string()})).optional()},uI6=m0.discriminatedUnion("template",[m0.object({template:m0.literal("cover"),score:m0.object({value:m0.coerce.number(),max:m0.coerce.number().optional(),grade:m0.coerce.string().optional(),label:m0.coerce.string().optional()}).optional(),brandImage:m0.coerce.string().optional(),screenshot:m0.coerce.string().optional(),mobileScreenshot:m0.coerce.string().optional()}),m0.object({template:m0.literal("cta"),ctaUrl:m0.coerce.string().optional(),ctaLabel:m0.coerce.string().optional(),bullets:m0.array(m0.coerce.string()).optional()}),m0.object({template:m0.literal("series"),points:m0.array(m0.coerce.number()).min(2),xLabels:m0.array(m0.coerce.string()).min(1),unit:m0.coerce.string().optional(),callout:m0.object({index:m0.coerce.number(),value:m0.coerce.string(),tone:eb.optional()})}),m0.object({template:m0.literal("threshold"),value:m0.coerce.string().default(""),metricLabel:m0.coerce.string().optional(),ratio:m0.coerce.number(),thresholdRatio:m0.coerce.number().optional(),thresholdLabel:m0.coerce.string().default(""),tone:eb.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:eb.optional()})).min(1)}),m0.object({template:m0.literal("bars"),items:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),ratio:m0.coerce.number(),tone:eb.optional()})).min(1)}),m0.object({template:m0.literal("gauges"),gauges:m0.array(m0.object({label:m0.coerce.string(),value:m0.coerce.string(),status:m0.enum(["good","warn","bad"]).catch("warn"),caption:m0.coerce.string().optional(),ratio:m0.coerce.number().optional()})).min(1)}),m0.object({template:m0.literal("checklist"),checks:m0.array(m0.object({label:m0.coerce.string(),status:m0.enum(["pass","fail","warn"]).catch("fail"),value:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("table"),columns:m0.array(m0.object({label:m0.coerce.string(),align:m0.enum(["left","right"]).optional()})).min(1),rows:m0.array(gI6).min(1),highlightRow:m0.coerce.number().optional()}),m0.object({template:m0.literal("products"),products:m0.array(m0.object({name:m0.coerce.string(),price:m0.coerce.string().optional(),image:m0.coerce.string().optional(),url:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("list"),entries:m0.array(m0.object({label:m0.coerce.string(),severity:m0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:m0.coerce.number().optional()}),m0.object({template:m0.literal("keywords"),volumeLabel:m0.coerce.string().optional(),keywords:m0.array(m0.object({term:m0.coerce.string(),volume:m0.coerce.string(),position:m0.coerce.number().catch(0)})).min(1)}),m0.object({template:m0.literal("competitor"),metricLabel:m0.coerce.string().optional(),competitors:m0.array(m0.object({name:m0.coerce.string(),value:m0.coerce.string(),tone:eb.optional(),isYou:m0.boolean().optional()})).min(1)}),m0.object({template:m0.literal("scorecard"),rivalLabel:m0.coerce.string().optional(),dimensions:m0.array(m0.object({label:m0.coerce.string(),you:m0.coerce.string(),rival:m0.coerce.string().optional(),rivalName:m0.coerce.string().optional(),tone:eb.optional()})).min(1)})]),ie$=m0.object({...hI6,template:uI6})});function UI0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=ie$.safeParse(X.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:X.section_type,position:X.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((X)=>X!==null),Y=Q.filter((X)=>X.template.template!=="cover"&&X.template.template!=="cta").map((X)=>({key:X.key,title:X.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Y},slides:Q},drops:Z}}var AW1=O(()=>{pe$()});import{join as ne$}from"path";async function cI6($){try{let Z=await fetch(`${bH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(lI6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=UI0(Q);if(!Y.slides.length)return null;let X=Y.slides.find((W)=>W.template.template==="cover"),J=X?.template,G=J&&J.template==="cover"?J:void 0;return{brand:Y.meta.brand?.trim()||PW1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function EG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function dI6($,Z){let Q=md($),Y=Z?.brand?.trim()||PW1(Q),X=de$(Q,128),G=`${(O0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=me$({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${EG(W)}</title>`,`<meta name="description" content="${EG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${EG(W)}" />`,`<meta property="og:description" content="${EG(K)}" />`,`<meta property="og:url" content="${EG(G)}" />`,`<meta property="og:image" content="${EG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${EG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${EG(W)}" />`,`<meta name="twitter:description" content="${EG(K)}" />`,`<meta name="twitter:image" content="${EG(H)}" />`,`<meta name="twitter:image:alt" content="${EG(F)}" />`,`<link rel="canonical" href="${EG(G)}" />`,`<link rel="icon" href="${EG(X)}" sizes="any" />`].join(`
3379
3379
  `)}function mI6($,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}
3380
3380
  </head>`)}function te$($){let Z=new e0;return Z.get("/:domain/og.png",async(Q)=>{let Y=md(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(ne$($,"report-og-fallback.png")):null;if(!J||!await J.exists())return Q.notFound();return Q.body(new Uint8Array(await J.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let J=await fetch(`${bH({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(iI6)}),G=J.headers.get("content-type")??"";if(!J.ok||!G.startsWith("image/")||!J.body)return X();return Q.body(J.body,200,{"Content-Type":G,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return X()}}),Z.get("/:domain",async(Q)=>{let Y=Q.req.param("domain"),X=$?ne$($,"index.html"):null,J=X?Bun.file(X):null;if(!J||!await J.exists())return Q.notFound();let G=await J.text();try{let W=await cI6(md(Y)),K=dI6(Y,W);return Q.html(mI6(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var lI6=2500,iI6=1e4;var oe$=O(()=>{y$();AW1();cz();t1()});function Q$0($,Z){return fetch(`${bH({})}${$}`,Z)}async function pI6($,Z,Q){let Y=new URLSearchParams;if(Z)Y.set("pw",Z);if(Q)Y.set("lang",Q);let X=Y.toString()?`?${Y.toString()}`:"",J=await Q$0(`/api/v2/public/diagnostics/${encodeURIComponent($)}${X}`,{headers:{Accept:"application/json"}});if(J.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!J.ok)throw Error(`report read HTTP ${J.status}`);let G=await J.json(),{deck:W,drops:K}=UI0(G);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:G.scanned_at,drops:K}}var nI6,TB,re$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},se$;var ae$=O(()=>{y$();oJ();cz();AW1();nI6=new Set(["complete","errored","terminated","unknown"]),TB=new e0;TB.use("*",async($,Z)=>{let Q=await W8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",Q?.user?.id?{email:Q.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});TB.use("/link-token/*",re$);TB.use("/suggest",re$);TB.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.get("reportUser"),Y=$.req.query("key")?.trim()||void 0,X=$.req.query("lang")?.trim()||void 0;try{let J=await pI6(Z,Y,X);if($.header("Cache-Control","private, no-store"),Q||!J.deck)return $.json(J);return $.json({...J,deck:{...J.deck,slides:J.deck.slides.slice(0,1)},truncated:J.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});TB.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Y=typeof Q.domain==="string"?Q.domain.trim():"";if(!Y)return $.json({error:"domain is required"},400);let X=Z?.email,J=typeof Q.distinctId==="string"&&Q.distinctId.trim()&&Q.distinctId.length<=200?Q.distinctId.trim():void 0;try{let G=await Q$0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${lz({})}`},body:JSON.stringify({url:Y,...X?{email:X}:{},distinct_id:J})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let W=await G.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});TB.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await Q$0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${lz({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:nI6.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});TB.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await Q$0(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(Q.status===404)return $.json(null);if(!Q.ok)return $.json({error:`link token HTTP ${Q.status}`},502);return $.json(await Q.json())}catch{return $.json({error:"link token resolve failed"},502)}});TB.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await Q$0(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let Y=await Q.json();return $.json({suggestions:Array.isArray(Y.suggestions)?Y.suggestions:[]})}catch{return $.json({suggestions:[]})}});se$=TB});var tI6=1048576,TW1;var ee$=O(()=>{y$();_K();t1();SJ1();TW1=new e0;TW1.post("/webhook",l5({maxSize:tI6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=O0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!Bp$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=Dp$(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await Op$(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as oI6}from"crypto";function aI6($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let Y=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),X=Z.slice(7);if(X.length!==Y.length)return!1;return oI6(Buffer.from(X),Buffer.from(Y))}function eI6($,Z){let Q=Z,Y=Q?.repository?.name,X=Q?.repository?.owner?.login;if(typeof Y!=="string"||typeof X!=="string")return[];let J=[];if($==="check_suite"){if(Q.action!=="completed")return[];let G=Q.check_suite?.pull_requests;for(let W of Array.isArray(G)?G:[]){let K=W?.number;if(typeof K==="number")J.push(K)}}else if($==="issue_comment"&&Q.issue?.pull_request){let G=Q.issue.number;if(typeof G==="number")J.push(G)}return[...new Set(J)].map((G)=>({repoOwner:X,repoName:Y,number:G}))}function $08($){let Z=new e0;return Z.post("/webhook",l5({maxSize:rI6,onError:(Q)=>Q.json({error:"payload too large"},413)}),async(Q)=>{let Y=process.env.GITHUB_WEBHOOK_SECRET;if(!Y)return Q.json({error:"github webhook not configured"},503);let X=await Q.req.text();if(!aI6(X,Q.req.header("x-hub-signature-256"),Y))return Q.json({error:"invalid signature"},400);let J=Q.req.header("x-github-event");if(J!=="push"&&!sI6.has(J??""))return Q.json({ok:!0,ignored:"event"});let G;try{G=JSON.parse(X)}catch{return Q.json({error:"invalid payload"},400)}if(J==="push"){let H=G.ref,F=G.repository?.full_name;if(!H||!F)return Q.json({ok:!0,ignored:"shape"});let N=(await K11())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let W=eI6(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await $V6($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function $V6($,Z){let Q=0;for(let Y of Z){let X=$.taskBoard(),J;try{J=await X.findPrLinks(Y)}catch(G){console.error("[github-webhook] pr link lookup failed:",G);continue}for(let G of J)try{let W=await X.getById(G.taskBoardItemId,G.organizationId),K=W?await $.contextFactory()(G.organizationId,W.assignedBy??W.createdBy):null;if(!K)continue;if(await SA$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var rI6=5242880,sI6;var Z08=O(()=>{y$();_K();WK();rZ();sI6=new Set(["check_suite","issue_comment"])});function Q08($){let Z=new UB($.db,new AY($.encryptionKey)),Q=new e0;return Q.get("/attachments/:token",async(Y)=>{let X=sz$(Y.req.param("token"));if(!X)return Y.json({error:"Invalid or expired link"},404);let J=await Z.getByOrg(X.organizationId);if(!J)return Y.json({error:"Jira is not connected"},404);let W=await new KG(J.siteUrl,J.email,J.apiToken).downloadAttachment(X.attachmentId);if(!W.ok||!W.body)return Y.json({error:"Jira refused the download"},502);let K=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=W.headers.get(H);if(F)K.set(H,F)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var Y08=O(()=>{y$();DD();G81();Pf()});function X08($){let Z=new UB($.db,new AY($.encryptionKey));async function Q(X,J){let G=mh$(J);if(!G)return;let W=await Z.getByWebhookSecret(X);if(!W?.enabled)return;let K=await k3($.db,W.organizationId);if(!K)return;if(await mR0(K,W,G)==="started")console.log(`[jira-webhook] started a run for ${G.issueKey} entering "${G.toStatus}"`)}let Y=new e0;return Y.post("/webhook/:secret",l5({maxSize:ZV6}),async(X)=>{let J=X.req.param("secret");if(!await Z.getByWebhookSecret(J))return X.json({error:"Unknown webhook"},404);let W;try{W=await X.req.json()}catch{return X.json({error:"Body must be JSON"},400)}return Q(J,W).catch((K)=>{console.error("[jira-webhook] trigger failed",K)}),X.body(null,202)}),Y}var ZV6=1048576;var J08=O(()=>{y$();_K();DD();iR0();kf()});import{DBOS as NI0,SchedulerMode as QV6}from"@dbos-inc/dbos-sdk";function W08($){qW1=$}function K08(){if(!qW1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return qW1}function H08(){let $=K08();return new UB($.db,new AY($.encryptionKey))}async function JV6($,Z){try{let Q=await H08().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let Y=await k3(K08().db,Q.organizationId);if(!Y)return{integrationId:$,started:0};if((await Y.storage.jiraIntegrations.listAutomations(Q.organizationId)).length===0)return{integrationId:$,started:0};let J=new KG(Q.siteUrl,Q.email,Q.apiToken),W=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${G08}m"`,K=0,H;for(let F=0;F<XV6;F++){let U=await J.searchIssues({jql:W,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=ih$(N,N.changelog?.histories??[],Z);for(let D of B)if(await mR0(Y,Q,D)==="started")K++}if(H=U.nextPageToken??void 0,!H)break}return{integrationId:$,started:K}}catch(Q){return{integrationId:$,started:0,error:Q instanceof Error?Q.message:String(Q)}}}async function GV6($,Z){let Q=new Date($.getTime()-G08*60000),Y=await NI0.runStep(()=>H08().listEnabledIds(),{name:"loadJiraIntegrations"});if(Y.length===0)return;let X=await Promise.all(Y.map((J)=>NI0.runStep(()=>JV6(J,Q),{name:`sweepJira:${J}`})));for(let J of X)if(J.error)console.warn(`[jira-trigger] integration ${J.integrationId} failed: ${J.error}`);else if(J.started>0)console.log(`[jira-trigger] integration ${J.integrationId} started ${J.started} run(s) the webhook missed`)}function F08(){if(RW1)return;RW1=NI0.registerWorkflow(GV6,{name:"jiraTriggerSweepWorkflow"}),NI0.registerScheduled(RW1,{name:"jiraTriggerSweepWorkflow",crontab:YV6,mode:QV6.ExactlyOncePerIntervalWhenActive})}var YV6="7-59/10 * * * *",G08=15,XV6=5,qW1=null,RW1=null;var U08=O(()=>{DD();kf();Pf();iR0()});function N08($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var B08,WV6,KV6,D08;var O08=O(()=>{y$();mW();ll();rz();B08=new e0,WV6=["range","if-none-match","if-modified-since"],KV6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];B08.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(Bd($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new J$(401,{message:"Authentication required"})}if(!Q)throw new J$(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new J$(400,{message:"Missing file key"});let X=await Ke(Y,Z);if(!X)throw new J$(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&_X()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new J$(500,{message:"Invalid data URL from storage"});let[,H,F]=K,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return N08(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of WV6){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(X,{headers:J});if(G.status===403||G.status===404)throw new J$(404,{message:"File not found"});if(!G.ok&&G.status!==304&&G.status!==416)throw console.error(`[files] upstream storage error ${G.status} for key:`,Y),new J$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of KV6){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),N08(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});D08=B08});var Y$0=_(($x)=>{var HV6=$x&&$x.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),FV6=$x&&$x.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))HV6(Z,$,Q)};Object.defineProperty($x,"__esModule",{value:!0});FV6(OJ(),$x)});var j08=_((L08)=>{Object.defineProperty(L08,"__esModule",{value:!0});L08.version=void 0;L08.version="3.4.0"});var P08=_((pF)=>{var UV6=pF&&pF.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(pF,"__esModule",{value:!0});pF.NodeTransport=pF.VERSION=void 0;pF.nodeResolveHost=wV6;var L5=Y$0(),NV6=A0("net"),MW1=A0("tls"),BV6=A0("path"),E08=A0("fs"),DV6=UV6(A0("dns")),OV6=j08();pF.VERSION=OV6.version;var LV6="nats.js";class z08{socket;version;lang;yields=[];signal=(0,L5.deferred)();closedNotification=(0,L5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=LV6,this.version=pF.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:Y}=Q||{};try{if(Y===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let X=await this.peekInfo();(0,L5.checkOptions)(X,Z);let{tls_required:J,tls_available:G}=X,W=G===!0&&Z.tls!==null;if(!Y&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw L5.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(X){let J=X;if(!J)J=new L5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new L5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,L5.deferred)(),Q,Y=(0,NV6.createConnection)($.port,$.hostname,()=>{Z.resolve(Y),Y.removeAllListeners()});return Y.on("error",(X)=>{Q=X}),Y.on("close",()=>{Y.removeAllListeners(),Z.reject(Q)}),Y.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,L5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=L5.DataBuffer.concat(...this.yields),X=(0,L5.extractProtocolMessage)(Y);if(X!=="")try{let J=L5.INFO.exec(X);if(!J)throw Error("unexpected response from server");let G=JSON.parse(J[1]);$.resolve(G)}catch(J){$.reject(J)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(Q)=>{Z=Q}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,L5.deferred)();try{if($=(0,BV6.resolve)($),!(0,E08.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,E08.readFile)($,(Q,Y)=>{if(Q)return Z.reject(Q);Z.resolve(Y)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:Y,ca:X,keyFile:J,key:G}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(Q)$.cert=Q;if(J){let W=await this.loadFile(J);if(W)$.key=W}else if(G)$.key=G;if(Y){let W=await this.loadFile(Y);if(W)$.ca=[W]}else if(X)$.ca=X;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Q=(0,L5.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new L5.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,L5.deferred)();try{let X=(0,MW1.connect)($.port,$.hostname,Q,()=>{X.removeAllListeners(),Y.resolve(X)});X.on("error",(J)=>{Z=J}),X.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Y.reject(Z),X.removeAllListeners()}),X.setNoDelay(!0)}catch(X){Y.reject(new L5.errors.ConnectionError(X.message,{cause:X}))}return Y}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Z=(0,L5.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new L5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,L5.deferred)();try{let Y=(0,MW1.connect)(Z,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(X)=>{$=X}),Y.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject($),Y.removeAllListeners()})}catch(Y){Q.reject(new L5.errors.ConnectionError(Y.message,{cause:Y}))}return Q}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,L5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,L5.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 MW1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,L5.render)($)}`);let Z=(0,L5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,L5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,L5.render)($)}: ${Q}`);Z.reject(Q)}return Z}send($){this._send($).catch((Q)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(Q){if(this.options.debug)console.log("transport close terminated with an error",Q)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(Q){console.log(Q)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}pF.NodeTransport=z08;function wV6($){let Z=(0,L5.deferred)();return DV6.default.lookup($,{all:!0},(Q,Y)=>{if(Q){Z.reject(Q);return}let X=[];for(let J of Y)X.push(J.address);if(X.length===0)X.push($);Z.resolve(X)}),Z}});var M08=_((q08)=>{Object.defineProperty(q08,"__esModule",{value:!0});q08.connect=jV6;var A08=P08(),T08=Y$0(),R08=Y$0();function jV6($={}){if((0,R08.hasWsProtocol)($))return Promise.reject(R08.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,T08.setTransportFactory)({factory:()=>{return new A08.NodeTransport},dnsResolveFn:A08.nodeResolveHost}),T08.NatsConnectionImpl.connect($)}});var I08=_((RB)=>{var zV6=RB&&RB.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),PV6=RB&&RB.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))zV6(Z,$,Q)};Object.defineProperty(RB,"__esModule",{value:!0});RB.connect=void 0;var AV6=M08();Object.defineProperty(RB,"connect",{enumerable:!0,get:function(){return AV6.connect}});PV6(Y$0(),RB)});function C08($){let Z=$?.connectFn??MV6,Q=null,Y=null,X=!1,J=!1,G=!1,W=[];function K(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let N of W)try{N()}catch{}}function F(N){(async()=>{for await(let B of N.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),G=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),G=!1,Y=null,H()})().catch(()=>{})}async function U(N,B){let D=0;while(!J)try{Q=await Z({servers:N,timeout:qV6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${D} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{D++;let L=S7(RV6,TV6,D-1,2,0.5);await P$(L)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?V08.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(N,D).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!Y)Y=S08.jetstream(Q);return Y},onReady(N){if(W.push(N),K())try{N()}catch{}},async drain(){if(J=!0,X=!1,Y=null,G=!1,Q){let N=Q;Q=null,await N.drain().catch(()=>{})}}}}function MV6($){return k08.connect($)}var V08,k08,S08,TV6=100,RV6=3000,qV6=3000;var _08=O(()=>{u$();V08=V(Om(),1),k08=V(I08(),1),S08=V(QU(),1)});function IW1($,Z){return`${$}.${Z}`}class VW1{cache;constructor($){this.cache=Qd({ttlMs:$?.ttlMs??IV6,maxSize:$?.maxSize??VV6})}async get($,Z){return this.cache.get(IW1($,Z))??null}async set($,Z,Q){this.cache.set(IW1($,Z),Q)}async invalidate($,Z){this.cache.delete(IW1($,Z))}teardown(){this.cache.clear()}}var IV6=600000,VV6=5000;var v08=()=>{};function BI0($,Z){return`${$}:${Z}`}function kW1($){let Z=Qd({ttlMs:$?.ttlMs??kV6,maxSize:$?.maxSize??SV6}),Q=$?.getConnection,Y=crypto.randomUUID(),X=new TextEncoder,J=new TextDecoder,G=null;function W(K,H){let F=Q?.();if(!F)return;try{F.publish(f08,X.encode(JSON.stringify({organizationId:K,keyId:H,originId:Y})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(K,H){return Z.get(BI0(K,H))},set(K,H,F){Z.set(BI0(K,H),F)},invalidate(K,H){Z.delete(BI0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(f08),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(BI0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var f08="studio.ai-provider-keys.invalidate",kV6=30000,SV6=5000;var b08=()=>{};class SW1{options;subscription=null;onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscription)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let Q=new TextDecoder,Y=Z.subscribe("studio.decopilot.cancel");this.subscription=Y,(async()=>{for await(let X of Y)try{let J=JSON.parse(Q.decode(X.data));if(J.originId===this.originId)continue;this.onCancel?.(J.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let Q=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId}));Z.publish("studio.decopilot.cancel",Q)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var x08=($)=>{let Z;return()=>Z??=$()},CW1,_W1;var y08=O(()=>{W6();CW1=x08(()=>Q$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),_W1=x08(()=>Q$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function yV6($=u08){return{name:EF,subjects:[`${Q61}.>`],storage:bK.StorageType.File,max_age:vV6,max_bytes:bV6,max_msgs_per_subject:xV6,discard:bK.DiscardPolicy.Old,retention:bK.RetentionPolicy.Limits,duplicate_window:fV6,num_replicas:$}}class l08{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 g08($){let Z=h08.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function lV6($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,_V6().add(1,{"org.id":Z??"unknown"}),Q===1||Q%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${Q} total):`,W)})},get errorCount(){return Q}}}function cV6($,Z){return $.info?.cluster?Z:1}function dV6($){if(!($ instanceof Error))return!1;if(/non-clustered/i.test($.message))return!0;return/replicas?\b/i.test($.message)&&/not supported|can ?not|exceed|insufficient|greater than/i.test($.message)}class vW1{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=async(Y,X)=>{let J=yV6(X);try{await Y.streams.info(EF),await Y.streams.update(EF,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(EF,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(EF),await Y.streams.add(J);else throw G}},Q=await N8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await bK.jetstreamManager($),X=cV6($,u08);try{await Z(Y,X)}catch(J){if(X<=1||!dV6(J))throw J;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${X} (${J.message}); falling back to an unreplicated stream`),await Z(Y,1)}return Y},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:sl});this.js=this.options.getJetStream(),this.jsm=Q,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,Q,Y){let X=this.js;if(!X)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let J=lV6(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=NR$(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=X61(H,{runId:Z}),N=performance.now()-F;CW1().record(N),_W1().add(1,{"org.id":Y??"unknown"}),uV6?.record(N,U.reduce((B,D)=>B+D.data.length,0));for(let B of U)J.publish(X,B.subject,B.data,B.headers?g08(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:D}=await H.read();if(B)break;if(K(D),U++,++F>=64)F=0,await new Promise((L)=>setImmediate(L))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),hV6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:J.errorCount}))}if(N!==void 0)throw N})()}async publishSerialized($,Z){try{return await N8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:g08(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:sl}),!0}catch(Q){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,Q),!1}}async publishRawChunk($,Z,Q){let Y=this.js;if(!Y)return!1;let X=performance.now(),J=X61(Z,{runId:$,dedup:Q});CW1().record(performance.now()-X),_W1().add(1);for(let G of J)if(!await this.publishSerialized(Y,G))return!1;return!0}async publishDone($,Z,Q){let Y=this.js;if(!Y)return!1;let X=UR$({runId:$,fenceToken:Z,finalSeq:Q});return await this.publishSerialized(Y,X)}async createTailStream($,Z,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let X=Q?.deliverPolicy==="new"?bK.DeliverPolicy.New:bK.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=Fw($),W;try{W=await N8(async()=>{return(await Y.consumers.get(EF,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:sl})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=jA0({messages:async function*(){try{for await(let L of W)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(DA0()).pipeThrough(OA0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,D=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",D,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:j}=await F.read();if(w){D(),L.close();return}let E=j;if(E.kind==="done"){if(J){D(),L.close();return}continue}L.enqueue(E.chunk);return}},cancel(){D()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(EF,{filter:Fw($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var bK,h08,CV6=($)=>{let Z;return()=>Z??=$()},_V6,vV6=86400000000000,fV6=120000000000,bV6=4294967296,u08,xV6=500000,gV6,hV6,uV6;var c08=O(()=>{u$();J61();EA0();LA0();W6();y08();bK=V(QU(),1),h08=V(Om(),1),_V6=CV6(()=>Q$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),u08=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);gV6=process.env.STREAM_ENCODE_TRACE==="1",hV6=process.env.DECOPILOT_STREAM_TRACE==="1";uV6=gV6?new l08:null});function DI0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,$H(Q,Y.status,{title:Y.title??void 0,virtualMcpId:Y.virtual_mcp_id??void 0,createdBy:Y.created_by??void 0,triggerId:Y.trigger_id??null,branch:Y.branch??null,harnessId:Y.harness_id??void 0,createdAt:Y.created_at,updatedAt:Y.updated_at})),!0}var d08=O(()=>{q8()});class fW1{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 mV6($,Z){let Q=$.startsWith("thread:")?KK($):$;return[...new Set([Z,Q].filter((Y)=>!!Y))]}async function m08($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await WF($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await Fl($,{threadId:X,runBranch:G?.branch}),K=mV6(W,await mE0($,X)),H=await Ms($,Q,xa0(J)).catch(()=>null);if(!H){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}for(let F of K){let U=await H.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:H.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await S3(Q).catch(()=>{}),console.log(`[task-board] ${Z.id}: linked ${U.url} found on branch ${F}`),!0}}}catch(Y){console.error("[task-board] PR lookup by branch failed",Y)}return!1}var i08=O(()=>{pZ();R3();rZ()});async function p08($,Z,Q){let Y=Z.organizationId;if(!rX(Z))return!1;if(!If(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=await $.storage.organizationSettings.get(Y),J=tH(X?.flags),G=await $.storage.taskBoard.update(Z.id,Y,{status:J},Z.updatedBy);return await y6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),r$(Y,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var n08=O(()=>{A4();$Y();xl();OK();$9()});function sV6($){return $ instanceof yY}function aV6($,Z){return Z-$>=oV6}class bW1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,Q,Y={}){this.taskBoard=$;this.contextFactory=Z;this.billing=Q;this.options=Y}start(){if(this.timer)return;let $=this.options.intervalMs??iV6;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??nV6,Q=this.options.itemIntervalMs??pV6,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}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()-$81),N41);for(let Q of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${Q.threadId} on ${Q.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-rV6));for(let{id:Q,organizationId:Y,threadId:X}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${Q}`),await H41(this.taskBoard,X,Y),await F41(this.taskBoard,this.billing,X,Y)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async dispatchDueRetries($){let Z=0,Q=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Y,organizationId:X,attempts:J}of Q)try{if(!await this.taskBoard.claimDueRetry(Y,X,new Date))continue;let G=await this.taskBoard.getById(Y,X);if(!G||G.status!==T$.progress||G.assigneeId!==o$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await LK(W,G,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Y} after a failure (attempt ${J})`)}catch(G){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Y} failed`,G),sV6(G)){await this.returnToTodo(Y,X,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(Y,X,J,new Date(Date.now()+tV6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async returnToTodo($,Z,Q){try{let Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!==T$.progress)return;let X=await this.taskBoard.returnToTodoAfterFailure($,Z,Y.updatedBy);if(!X)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q}}).catch(()=>{}),r$(Z,X)}catch(Y){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Y)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!aV6(DN(Q,Z.reviewCycleStartedAt),Date.now()))return;await LF($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,Q){if(!await this.taskBoard.claimSweep($,Z,Q))return!1;let Y=await this.taskBoard.getById($,Z);if(!Y)return!1;if(!rX(Y))return!1;let X=Y.assigneeId===o$,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,Y.assignedBy??Y.createdBy);if(!G)return!1;if(J.length===0){if(await m08(G,Y))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(X)await this.handOffReviewWithoutPr(G,Y);return!1}}let W=await Promise.all(J.map(async(K)=>({...K,...await gl(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(await p08(G,Y,W))return!0;if(await Qq$(G,Y))return!0;if(await this.resolveConflictFromSweep(G,Y,W))return!0;if(!X)return!1;if(!J41(W))return!1;return await CP0(G,Y,{previewMatchesHead:G41(W)}),!0}async resolveConflictFromSweep($,Z,Q){let Y=Q.find((X)=>X.state!=="closed"&&X.conflict===!0);if(!Y)return!1;return await Jw($,Z.organizationId,Z,{pr:{number:Y.number,url:Y.url},conflict:!0}).catch((X)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",X),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var iV6=60000,pV6=300000,nV6=50,tV6=60000,oV6=900000,rV6=120000;var t08=O(()=>{A4();n81();i08();wF();Ee();OK();n08();$9();j3();B41();rZ();Xe();yl()});import{readdir as eV6,rm as OI0}from"fs/promises";import{join as LI0}from"path";async function wI0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-$k6),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await Zx($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await o08($,X,Z);else if(!X.startsWith(".")){let J=LI0($,X),G=await Zx(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await o08(J,K,Z)}if((await Zx(J)).length===0)await OI0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function o08($,Z,Q){let Y=0,X=LI0($,Z),J=await Zx(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=LI0(X,W),H=await Zx(K);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${W}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=LI0(K,U);await OI0(B,{recursive:!0,force:!0}),Y++}}if((await Zx(K)).length===0)await OI0(K,{recursive:!0,force:!0})}if((await Zx(X)).length===0)await OI0(X,{recursive:!0,force:!0});return Y}async function Zx($){try{return(await eV6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var $k6=30;var xW1=()=>{};import{DBOS as yW1,SchedulerMode as Zk6}from"@dbos-inc/dbos-sdk";async function Yk6(){let $=[n3(),Qx(),oF()],Z=0;for(let Q of $)try{Z+=await wI0(Q)}catch(Y){console.error("[monitoring-retention] cleanup failed:",Y)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function Xk6($,Z){await yW1.runStep(()=>Yk6(),{name:"monitoringRetention"})}function s08(){if(r08)return;r08=!0;let $=yW1.registerWorkflow(Xk6,{name:"monitoringRetentionWorkflow"});yW1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:Qk6,mode:Zk6.ExactlyOncePerIntervalWhenActive})}var Qk6="23 4 * * *",r08=!1;var a08=O(()=>{RG();xW1()});function e08($){return async(Z,Q)=>{let Y=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",Q).where("member.organizationId","=",Z).executeTakeFirst();if(!Y)return console.warn(`[automationContextFactory] User ${Q} not found in org ${Z} \u2014 returning null`),null;let X=await XQ.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await ZP($.db,Z,Y.role);return X.boundAuth=AJ1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new YE(Q,void 0,X.boundAuth,Y.role,"self"),Gw(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var $18=O(()=>{OW();mH()});function Jk6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Gk6(){return{services:Jk6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function Kk6(){for(let $ of Wk6)$()}function Z18($){let Z=[...gW1.logs,$];gW1={...gW1,logs:Z.length>500?Z.slice(-500):Z},Kk6()}function hW1(){return Hk6}var gW1,Wk6,Hk6=!1;var uW1=O(()=>{gW1=Gk6(),Wk6=new Set});import{EventEmitter as Fk6}from"events";var lW1;var Q18=O(()=>{uW1();lW1=new Fk6;lW1.on("request",($)=>{Z18($)})});function Y18(){return async($,Z)=>{let Q=Date.now(),Y=$.req.method,X=$.req.path;if(X==="/api/auth/get-session"||X.includes("favicon")){await Z();return}let J="",G=!1;if(X.startsWith("/mcp")&&Y==="POST"){G=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let N=await $.req.raw.clone().json();if(N.method==="tools/call"&&N.params?.name){let B=id(N.params.name),D=N.params.arguments||{},L=Object.keys(D).map((j)=>id(j)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";J=`${q5.tool}${B}${q5.dim}(${w})${q5.reset}`}else if(N.method)J=`${q5.dim}${id(N.method)}${q5.reset}`}}catch{}}let W=id(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${q5.mcp}${id(F.slice(0,12))}\u2026${q5.reset}`}else if(X==="/mcp")W=`${q5.mcp}/mcp${q5.reset}`;else if(X==="/mcp/registry")W=`${q5.mcp}/mcp/registry${q5.reset}`;let K=Nk6(Y),H=G?"\u25C0":"\u2190";if(!hW1())console.log(`${q5.dim}${H}${q5.reset} ${K}${Y}${q5.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=Uk6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";if(!hW1())console.log(`${q5.dim}${D}${q5.reset} ${K}${Y}${q5.reset} ${W}${J?` ${J}`:""} ${N}${U}${q5.reset} ${q5.duration}${B}${q5.reset}`);lW1.emit("request",{method:Y,path:id(X),status:U,duration:F,timestamp:new Date})}}}var q5,Uk6=($)=>{if($>=500)return q5.serverError;if($>=400)return q5.clientError;if($>=300)return q5.redirect;return q5.ok},Nk6=($)=>{return q5[$]||q5.reset},id=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var X18=O(()=>{uW1();Q18();q5={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 K18}from"crypto";import{mkdir as Bk6,readdir as Dk6,rm as J18,stat as H18}from"fs/promises";import{join as dW1,relative as Ok6}from"path";import{z as V$}from"zod";function U18($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return dW1(Lk6,Z)}function N18($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function cW1($,Z){let Q=U18($),Y=N18(Z);return dW1(Q,Y)}function wk6($,Z,Q,Y){let X=O0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return K18("sha256",X).update(J).digest("hex")}function W18($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=wk6(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${N18(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function B18($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${K18("md5","etag").update(Y).digest("hex")}"`}async function D18($,Z,Q,Y,X){try{let J=await Dk6($,{withFileTypes:!0});for(let G of J){let W=dW1($,G.name),H=Ok6(Z,W).replace(/\\/g,"/");if(Q&&!H.startsWith(Q))continue;if(G.isDirectory())if(Y){let F=H+"/";if(!Q||F.startsWith(Q)){if(!(Q?H.slice(Q.length):H).includes("/"))X.commonPrefixes.add(F)}}else await D18(W,Z,Q,Y,X);else if(G.isFile()){if(Y&&Q){let F=H.slice(Q.length);if(F.includes(Y)){let U=F.indexOf(Y),N=Q+F.slice(0,U+1);X.commonPrefixes.add(N);continue}}try{let F=await H18(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:B18(W,F.mtime,F.size)})}catch{}}}}catch{}}function O18($,Z){let Y=i($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:V$.object({prefix:V$.string().optional(),maxKeys:V$.number().optional().default(1000),continuationToken:V$.string().optional(),delimiter:V$.string().optional()}),outputSchema:V$.object({objects:V$.array(V$.object({key:V$.string(),size:V$.number(),lastModified:V$.string(),etag:V$.string()})),nextContinuationToken:V$.string().optional(),isTruncated:V$.boolean(),commonPrefixes:V$.array(V$.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=U18(Y);await Bk6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await D18(F,F,G,K,U),U.objects.sort((w,j)=>w.key.localeCompare(j.key));let N=0;if(H){if(N=U.objects.findIndex((w)=>w.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),D=N+W<U.objects.length,L=D?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:D,nextContinuationToken:L,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:V$.object({key:V$.string()}),outputSchema:V$.object({contentType:V$.string().optional(),contentLength:V$.number(),lastModified:V$.string(),etag:V$.string(),metadata:V$.record(V$.string(),V$.string()).optional()}),handler:async(X)=>{let J=X,G=cW1(Y,J.key),W=await H18(G);return{contentType:EG1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:B18(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:V$.object({key:V$.string(),expiresIn:V$.number().optional()}),outputSchema:V$.object({url:V$.string(),expiresIn:V$.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??G18;return{url:W18(Z,Y,J.key,G,"GET"),expiresIn:G}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:V$.object({key:V$.string(),expiresIn:V$.number().optional(),contentType:V$.string().optional()}),outputSchema:V$.object({url:V$.string(),expiresIn:V$.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??G18;return{url:W18(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:V$.object({key:V$.string()}),outputSchema:V$.object({success:V$.boolean(),key:V$.string()}),handler:async(X)=>{let J=X,G=cW1(Y,J.key);try{return await J18(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:V$.object({keys:V$.array(V$.string()).max(1000)}),outputSchema:V$.object({deleted:V$.array(V$.string()),errors:V$.array(V$.object({key:V$.string(),message:V$.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=cW1(Y,K);try{await J18(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function mW1($,Z,Q){let Y=O18(Z,Q),X=new RH({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:f5});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:V$.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:V$.object({}).shape;X.registerTool(G.name,{description:G.description??"",inputSchema:W,outputSchema:K,annotations:G.annotations,_meta:G._meta},async(H)=>{try{let F=await G.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let J=new nY({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),x3(X,J,$,"mcp:dev-assets")}async function L18($,Z,Q,Y){let J=O18(Q,Y).find((G)=>G.name===$);if(!J)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let G=await J.handler(Z);return{content:[{type:"text",text:JSON.stringify(G)}]}}catch(G){return{content:[{type:"text",text:G instanceof Error?G.message:String(G)}],isError:!0}}}var Lk6="./data/assets",G18=3600,F18,w18;var j18=O(()=>{t1();Xc();y$();zt();ef();hQ();FM0();F18=new e0;F18.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return mW1($.req.raw,Z,Y)});w18=F18});var E18={};q4(E18,{mountDevRoutes:()=>jk6});function jk6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`;return mW1(Y.req.raw,X,G)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`,W=Y.req.param("toolName");if(!W)return Y.json({error:"Missing tool name"},400);let K=await Y.req.json(),H=await L18(W,K,X,G);if(H.isError)return Y.json(H.content,500);return Y.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",w18);let Q=new e0;Q.use("*",vK({mountPath:"/api/dev-assets"})),Q.route("/",HM0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var z18=O(()=>{y$();NG1();FM0();j18()});import{sql as Ek6}from"kysely";import{randomUUID as P18}from"crypto";import{z as zk6}from"zod";async function Ak6($){let Z=new Date().toISOString(),Q=P18(),Y=R8.SELF($.organizationId),X="registry.publish_request.created",J={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:Q,organization_id:$.organizationId,type:"registry.publish_request.created",source:Y,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(J),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let G=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Y)])).execute();if(G.length>0)await $.db.insertInto("event_deliveries").values(G.map((W)=>({id:P18(),event_id:Q,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await Ek6`SELECT
3381
3381
  pg_notify('studio_events', ${Q}),