decocms 4.252.7 → 4.252.8

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 (222) hide show
  1. package/dist/client/assets/{AlertCircle-DZsaQFP0.js → AlertCircle-rdAVWZfH.js} +1 -1
  2. package/dist/client/assets/{AreaChart-Bij1L6CK.js → AreaChart-B_9gZk0m.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-Dki1TeJa.js → ArrowLeft-4TVAtR2_.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-C8oBiEtw.js → ArrowUp-3awPuZ9Q.js} +1 -1
  5. package/dist/client/assets/{Check-DkIifbiA.js → Check-DPx2Kmlh.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-BOH1ljhz.js → CheckCircle-1NiWuTFt.js} +1 -1
  7. package/dist/client/assets/{ChevronDown-0amSAjsV.js → ChevronDown-BfgSfnty.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-MavwbD4w.js → ChevronRight-CgXjS5t8.js} +1 -1
  9. package/dist/client/assets/{ChevronSelectorVertical-CRk0cZeJ.js → ChevronSelectorVertical-DkLU2_Y1.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-C9anA-E6.js → ChevronUp-C1JmNo9u.js} +1 -1
  11. package/dist/client/assets/{Copy01-Bf7136IA.js → Copy01-CkFN__N1.js} +1 -1
  12. package/dist/client/assets/{CreditCard01-IWGtGm1W.js → CreditCard01-B6bLgeAo.js} +1 -1
  13. package/dist/client/assets/{DotsVertical-CR0lYNk-.js → DotsVertical-CQ9-vMtC.js} +1 -1
  14. package/dist/client/assets/{Download01-Dg6NesfY.js → Download01-B3UoN7dM.js} +1 -1
  15. package/dist/client/assets/{Eye-chpz-iD6.js → Eye-kVg2zcMs.js} +1 -1
  16. package/dist/client/assets/{FilterLines-CBlP9vLc.js → FilterLines-DacbfZsX.js} +1 -1
  17. package/dist/client/assets/{Globe01-BlG2bFbG.js → Globe01-C2QdJ3jE.js} +1 -1
  18. package/dist/client/assets/{Globe04-B94HGGMZ.js → Globe04-DOu7pS4Y.js} +1 -1
  19. package/dist/client/assets/{HardDrive-CiwN6Fy1.js → HardDrive-B0Yvr0zf.js} +1 -1
  20. package/dist/client/assets/{Key01-DqU-ZZ-c.js → Key01-B612tD-X.js} +1 -1
  21. package/dist/client/assets/{LinkExternal01-7e4b6esH.js → LinkExternal01-BkphY-lR.js} +1 -1
  22. package/dist/client/assets/{LockUnlocked01-BSziY5OG.js → LockUnlocked01-By0B1iLK.js} +1 -1
  23. package/dist/client/assets/{LogOut01-kmh1YiOW.js → LogOut01-BzhW67H6.js} +1 -1
  24. package/dist/client/assets/{Monitor01-CyppPVOw.js → Monitor01-ByYBH9QP.js} +1 -1
  25. package/dist/client/assets/{Palette-rCAi-zrG.js → Palette-QZeQXr1U.js} +1 -1
  26. package/dist/client/assets/{Play-CVRgbrLg.js → Play-E44WU2hG.js} +1 -1
  27. package/dist/client/assets/{Plus-BcWyxvSW.js → Plus-BA4EtMaU.js} +1 -1
  28. package/dist/client/assets/{SearchLg-CpkLQ15a.js → SearchLg-BZjCqQqA.js} +1 -1
  29. package/dist/client/assets/{SearchMd-DvwVdzYo.js → SearchMd-CHL4P32i.js} +1 -1
  30. package/dist/client/assets/{Settings02-CC4b_9Kj.js → Settings02-CJPaWXkp.js} +1 -1
  31. package/dist/client/assets/{Share07-Bi2eK41m.js → Share07-B758qPmE.js} +1 -1
  32. package/dist/client/assets/{Shield01-3xvIqBi2.js → Shield01-CZTtWyVc.js} +1 -1
  33. package/dist/client/assets/{Stars01-BWP_9TC1.js → Stars01-IzX05Aun.js} +1 -1
  34. package/dist/client/assets/{Stars02-Cm3C173h.js → Stars02-CjkzRqXw.js} +1 -1
  35. package/dist/client/assets/{Sun-CTakNFOt.js → Sun-CZA2dBZd.js} +1 -1
  36. package/dist/client/assets/{SwitchHorizontal01-BeMFka3N.js → SwitchHorizontal01-DIiYmGcz.js} +1 -1
  37. package/dist/client/assets/{Tool01-DsCX5o1L.js → Tool01-Bn8CrMNo.js} +1 -1
  38. package/dist/client/assets/{Tool02-DMGRYdRe.js → Tool02-Te0Phzlo.js} +1 -1
  39. package/dist/client/assets/{Trash01-lrkOD3LI.js → Trash01-72b9k5z4.js} +1 -1
  40. package/dist/client/assets/{TrendUp01-BVn6HyCF.js → TrendUp01-D1DWIg9N.js} +1 -1
  41. package/dist/client/assets/{Upload01-CndB6L-1.js → Upload01-DtIY1WL-.js} +1 -1
  42. package/dist/client/assets/{User01-BnBSlK-N.js → User01-CgamuEUA.js} +1 -1
  43. package/dist/client/assets/{UserSquare-zRdDnlzE.js → UserSquare-DYr0XCct.js} +1 -1
  44. package/dist/client/assets/{Users01-BDacA4yM.js → Users01-P5Y9N-RI.js} +1 -1
  45. package/dist/client/assets/{Users03-Bk7jdYrd.js → Users03-CZLGg-0i.js} +1 -1
  46. package/dist/client/assets/{XCircle-CzWZHxMA.js → XCircle-Bby7HVd0.js} +1 -1
  47. package/dist/client/assets/{XClose-CBr7jhSX.js → XClose-gkSXXq6l.js} +1 -1
  48. package/dist/client/assets/{YAxis-DSFmgSMK.js → YAxis-C9bVEfQ5.js} +1 -1
  49. package/dist/client/assets/{Zap-DN9d602n.js → Zap-Dp9UujFl.js} +1 -1
  50. package/dist/client/assets/{ZapSquare-DdnGMpSr.js → ZapSquare-vktHdJqO.js} +1 -1
  51. package/dist/client/assets/{access-gate-DSfyS-1Q.js → access-gate-DzC0iDLT.js} +1 -1
  52. package/dist/client/assets/{agent-icon-B1RZW5py.js → agent-icon-DyqQ4gDl.js} +1 -1
  53. package/dist/client/assets/{agents-list-B2E2xju6.js → agents-list-DN0GD8Gk.js} +1 -1
  54. package/dist/client/assets/{ai-providers-oM9hLJOA.js → ai-providers-CR7fOyQz.js} +1 -1
  55. package/dist/client/assets/{alert-CV5SIB4Y.js → alert-CrZhH8At.js} +1 -1
  56. package/dist/client/assets/{alert-dialog-CYOEoGHB.js → alert-dialog-BfWEFU4g.js} +1 -1
  57. package/dist/client/assets/{api-keys-B10VWDvH.js → api-keys-DrfDPvfM.js} +1 -1
  58. package/dist/client/assets/{app-editor-BkUM-UA6.js → app-editor-OQG2hWAy.js} +1 -1
  59. package/dist/client/assets/{auth-CPSixqc5.js → auth-1RTeJgPy.js} +1 -1
  60. package/dist/client/assets/{auth-catchall-CScBKe5s.js → auth-catchall-DVjV4i3k.js} +1 -1
  61. package/dist/client/assets/{auth-entry-ClamuEKN.js → auth-entry-Di-MID0W.js} +1 -1
  62. package/dist/client/assets/{auth-split-layout-CMAeyVtB.js → auth-split-layout-DpquAq3q.js} +1 -1
  63. package/dist/client/assets/{authenticate-and-persist-oauth-tneNkKmS.js → authenticate-and-persist-oauth-U1HYHLCa.js} +1 -1
  64. package/dist/client/assets/{automation-list-row-mIutZcoc.js → automation-list-row-OHjyS9qk.js} +1 -1
  65. package/dist/client/assets/{automation-runs-D0K9p7O-.js → automation-runs-CH7AXE4b.js} +1 -1
  66. package/dist/client/assets/{automations-DWuswrlY.js → automations-BNb9fWBx.js} +1 -1
  67. package/dist/client/assets/{avatar-ClV2R_mb.js → avatar-4gBsNm8q.js} +1 -1
  68. package/dist/client/assets/{badge-cv9UGLmS.js → badge-BE8Rx537.js} +1 -1
  69. package/dist/client/assets/{block-document-Cq_hH0nw.js → block-document-tP_XP3Py.js} +1 -1
  70. package/dist/client/assets/{buckets-DvcdebMW.js → buckets-BlDrXRUt.js} +1 -1
  71. package/dist/client/assets/{bulk-category-panel-CVlNNWrV.js → bulk-category-panel-CSHQndT1.js} +1 -1
  72. package/dist/client/assets/{capability-load-error-9GhAvmsJ.js → capability-load-error-DjtQpKq3.js} +1 -1
  73. package/dist/client/assets/{cards-C7pYARPH.js → cards-4mq_h9ft.js} +1 -1
  74. package/dist/client/assets/{category-editor-DcPfB_hV.js → category-editor-DXLEgUDg.js} +1 -1
  75. package/dist/client/assets/{chart-DHgYC4B5.js → chart-dKDmWdyA.js} +1 -1
  76. package/dist/client/assets/{chat-context-DXgk36Kq.js → chat-context-CHFzAnQv.js} +1 -1
  77. package/dist/client/assets/{checkbox-B9Fl0mQa.js → checkbox-Dlz6yUP0.js} +1 -1
  78. package/dist/client/assets/{choose-editor-Grof5S5p.js → choose-editor-nbY9Rqt6.js} +1 -1
  79. package/dist/client/assets/{cli-auth-success-B0hDTE9k.js → cli-auth-success-CgK8oG_o.js} +1 -1
  80. package/dist/client/assets/{collection-detail-CShNEjjb.js → collection-detail-CIZ4AtXB.js} +1 -1
  81. package/dist/client/assets/{collection-display-button-DghxFKGL.js → collection-display-button-BGIrq6Jj.js} +1 -1
  82. package/dist/client/assets/{collection-search-C8FmBUby.js → collection-search-qs5IG49t.js} +1 -1
  83. package/dist/client/assets/{collection-table-wrapper-CZAyqF3S.js → collection-table-wrapper-BS0Di3E_.js} +1 -1
  84. package/dist/client/assets/{collection-tabs-5rKmzhSy.js → collection-tabs-BuECnx5v.js} +1 -1
  85. package/dist/client/assets/{command-DBJ46wCN.js → command-CoPe02Ak.js} +1 -1
  86. package/dist/client/assets/{commerce-onboarding-DNJrL2l0.js → commerce-onboarding-DPd46a76.js} +1 -1
  87. package/dist/client/assets/{connect-Dz1h3Wub.js → connect-LuAbXBqU.js} +1 -1
  88. package/dist/client/assets/{connection-CPNeVVl_.js → connection-DQQQtroA.js} +1 -1
  89. package/dist/client/assets/{connection-card-Ce3u1KIu.js → connection-card-Cqi_h5v2.js} +1 -1
  90. package/dist/client/assets/{connection-detail-Dct2Z3Et.js → connection-detail-BH0ZvShf.js} +1 -1
  91. package/dist/client/assets/{connection-form-helpers-CYJyaLQN.js → connection-form-helpers-DhK84E8T.js} +1 -1
  92. package/dist/client/assets/{connections-DzrV_fRy.js → connections-iMZwlb1w.js} +1 -1
  93. package/dist/client/assets/{decopilot-sse-pool-DqNjHkOv.js → decopilot-sse-pool-DHGZjQY2.js} +1 -1
  94. package/dist/client/assets/{dialog-BJqj7y-e.js → dialog-DAG3T4fS.js} +1 -1
  95. package/dist/client/assets/{domain-settings-C0Ue1i-T.js → domain-settings-DtnTYQ_2.js} +1 -1
  96. package/dist/client/assets/{drawer-C066bWMW.js → drawer-D-IiR8oh.js} +1 -1
  97. package/dist/client/assets/{dropdown-menu-CGjT0h5K.js → dropdown-menu-ClPPh6iP.js} +1 -1
  98. package/dist/client/assets/{empty-state-ChZmE6vA.js → empty-state-YTUULpXB.js} +1 -1
  99. package/dist/client/assets/{extract-connection-data-D6pFj4iN.js → extract-connection-data-D64C6s5e.js} +1 -1
  100. package/dist/client/assets/{file-explorer-BQVK-AaN.js → file-explorer-DHjGTavy.js} +1 -1
  101. package/dist/client/assets/{file-type-icon-CeMMkuT6.js → file-type-icon-DQWCz7K8.js} +1 -1
  102. package/dist/client/assets/{form-ezR2Bgah.js → form-DtXZPWnJ.js} +1 -1
  103. package/dist/client/assets/{general-DTao5a0B.js → general-MlndyFz4.js} +1 -1
  104. package/dist/client/assets/{github-repo-picker-B_8OFv2m.js → github-repo-picker-DF9OYZ5W.js} +1 -1
  105. package/dist/client/assets/{hooks-7NK0F0cE.js → hooks-Cpa8xoau.js} +1 -1
  106. package/dist/client/assets/{index-NEfLNGb_.js → index-6I7GR6cH.js} +1 -1
  107. package/dist/client/assets/{index-Bmhu6LOF.js → index-B2NYK6ta.js} +1 -1
  108. package/dist/client/assets/{index-CWEOxNZq.js → index-BL_Hy-nr.js} +1 -1
  109. package/dist/client/assets/{index-BQbxjsmm.js → index-BdcElfIq.js} +1 -1
  110. package/dist/client/assets/{index-mNSVuYa1.js → index-CXG5G_Pl.js} +1 -1
  111. package/dist/client/assets/{index-CEWXZtQh.js → index-DCXeccQP.js} +1 -1
  112. package/dist/client/assets/{index-BDCehBoK.js → index-DHhwnEdM.js} +1 -1
  113. package/dist/client/assets/{index-Dj4DiKL1.js → index-DW_QUyN3.js} +3 -3
  114. package/dist/client/assets/{index-Dt5L7Kba.js → index-aPA-eLR9.js} +5 -5
  115. package/dist/client/assets/{index-redirect-Bu7s6qY_.js → index-redirect-XM6U4boc.js} +1 -1
  116. package/dist/client/assets/{index-I582kTlj.js → index-tPSUyYat.js} +1 -1
  117. package/dist/client/assets/{infra-billing-P2VqSjxb.js → infra-billing-BJc-syg-.js} +1 -1
  118. package/dist/client/assets/{input-WqIRcdd5.js → input-RrBHTL2W.js} +1 -1
  119. package/dist/client/assets/{integration-icon-CYx8LMu3.js → integration-icon-CZlEZTMW.js} +1 -1
  120. package/dist/client/assets/{invite-member-dialog-BZLMwCLw.js → invite-member-dialog-BARXpQno.js} +1 -1
  121. package/dist/client/assets/{label-C1zwNBve.js → label-CXaeT3rp.js} +1 -1
  122. package/dist/client/assets/{layout-DoccO4xy.js → layout-B8KWsJUQ.js} +1 -1
  123. package/dist/client/assets/{login-CgMCJRz9.js → login-CpiQo0hn.js} +1 -1
  124. package/dist/client/assets/{mcp-oauth-gW3GWlhB.js → mcp-oauth-CBSIZ1Rn.js} +1 -1
  125. package/dist/client/assets/{members-DvoXSP6d.js → members-Cr_kKOnW.js} +1 -1
  126. package/dist/client/assets/{monaco-editor-B5VjDROn.js → monaco-editor-BqNoHxtM.js} +1 -1
  127. package/dist/client/assets/{monitoring-stats-row-BUXcCPEU.js → monitoring-stats-row-CxtCv21s.js} +1 -1
  128. package/dist/client/assets/{multi-select-BAxR1mT4.js → multi-select-B8uoA445.js} +1 -1
  129. package/dist/client/assets/{oauth-callback-DtZIWk6c.js → oauth-callback-CiV4eUHk.js} +1 -1
  130. package/dist/client/assets/{oauth-callback-ai-provider-Cr2NAY8J.js → oauth-callback-ai-provider-fnu3sq96.js} +1 -1
  131. package/dist/client/assets/{onboarding-CMwA-5NC.js → onboarding-CoBy0px-.js} +1 -1
  132. package/dist/client/assets/{org-layout-Dlyr90j7.js → org-layout-CzKimziC.js} +1 -1
  133. package/dist/client/assets/{organization-choice-CKclIvQH.js → organization-choice-DZ4A9ZtW.js} +1 -1
  134. package/dist/client/assets/{orgs-Cwg3IKVu.js → orgs-CuDhb272.js} +1 -1
  135. package/dist/client/assets/{page-seo-form-C0wrGZ4b.js → page-seo-form-D0wCAPq9.js} +1 -1
  136. package/dist/client/assets/{popover-BS7Ijllp.js → popover-D3Fjj-Al.js} +1 -1
  137. package/dist/client/assets/{post-editor-COgI89pK.js → post-editor-B-4YbK8K.js} +1 -1
  138. package/dist/client/assets/{primitives-RMIXhUht.js → primitives-CO_NdipZ.js} +1 -1
  139. package/dist/client/assets/{profile-CQHIXRo4.js → profile-bcEr7W76.js} +1 -1
  140. package/dist/client/assets/{project-app-view-CgEbOrxT.js → project-app-view-DQM1c5is.js} +1 -1
  141. package/dist/client/assets/record-editor-BsYBdh1l.js +1 -0
  142. package/dist/client/assets/{redirect-editor-BZ81HMvN.js → redirect-editor-IyjKBevR.js} +1 -1
  143. package/dist/client/assets/{registry-layout-BU7pE6If.js → registry-layout-D1QSC7Xz.js} +1 -1
  144. package/dist/client/assets/registry-wj4GnN8r.js +2 -0
  145. package/dist/client/assets/{reports-D8s2NwO8.js → reports-DSgJEMuz.js} +1 -1
  146. package/dist/client/assets/{require-capability-Csx6UR3V.js → require-capability-D9f9Bm6P.js} +1 -1
  147. package/dist/client/assets/{required-auth-layout-Dg1XkSB2.js → required-auth-layout-D3IafDKq.js} +1 -1
  148. package/dist/client/assets/{reset-password-BYh8sP04.js → reset-password-BnGkwQX5.js} +1 -1
  149. package/dist/client/assets/{roles-MJaZCCUs.js → roles-ejOlyxT0.js} +1 -1
  150. package/dist/client/assets/{search-input-3VFdhX2g.js → search-input-MzUd0dWM.js} +1 -1
  151. package/dist/client/assets/{secrets-jpJYm1hv.js → secrets-VSPN7cSy.js} +1 -1
  152. package/dist/client/assets/{sections-editor-Ci-kiSEO.js → sections-editor-CyBs5ueL.js} +1 -1
  153. package/dist/client/assets/{select-CQbypN2U.js → select-ZW4GkNMc.js} +1 -1
  154. package/dist/client/assets/{select-model-COyEyVqj.js → select-model-DIn25Ilf.js} +1 -1
  155. package/dist/client/assets/{self-tool-result-CrYKnQc4.js → self-tool-result-aMLlLeZ7.js} +1 -1
  156. package/dist/client/assets/{seo-editor-Bv7MPAJC.js → seo-editor-ccSrvrk9.js} +1 -1
  157. package/dist/client/assets/{settings-layout-DH2-C2_D.js → settings-layout-CZUE17te.js} +1 -1
  158. package/dist/client/assets/{shell-controls-BqdOCCJg.js → shell-controls-DTRGHjRM.js} +1 -1
  159. package/dist/client/assets/{shell-layout-BEsFrxoz.js → shell-layout-ChuqyHcK.js} +1 -1
  160. package/dist/client/assets/{spinner-B4nE5frW.js → spinner-Ch7fYI66.js} +1 -1
  161. package/dist/client/assets/{sso-DyNp6c5-.js → sso-fqxKckIl.js} +1 -1
  162. package/dist/client/assets/{store-C3wwrfFg.js → store--EwdBJA1.js} +1 -1
  163. package/dist/client/assets/store-registry-CsuHcTEU.js +2 -0
  164. package/dist/client/assets/{switch-DRfGGRto.js → switch-DI4F8LfO.js} +1 -1
  165. package/dist/client/assets/{synced-repos-BR1-aKmZ.js → synced-repos-zgSSUrDd.js} +1 -1
  166. package/dist/client/assets/{tab-id-Cop5yrKB.js → tab-id-DKYasDpx.js} +1 -1
  167. package/dist/client/assets/{table-nyIA6VkN.js → table-BA1Rj9tJ.js} +1 -1
  168. package/dist/client/assets/{tabs-sFgcxWPr.js → tabs-CgIPGKIZ.js} +1 -1
  169. package/dist/client/assets/{task-key-1e5QcdQ0.js → task-key-BfZROsiF.js} +1 -1
  170. package/dist/client/assets/{tasks-dbu_C5Ni.js → tasks-DokC_xiX.js} +1 -1
  171. package/dist/client/assets/{textarea-fio1fsB-.js → textarea-DTIjb2OC.js} +1 -1
  172. package/dist/client/assets/{toggle-group-Cr1m6Gp4.js → toggle-group-CDMkOOAM.js} +1 -1
  173. package/dist/client/assets/{toolbar-DNvH542e.js → toolbar-DuscS5uJ.js} +1 -1
  174. package/dist/client/assets/{track-DsBqmGmP.js → track-CatvO9D9.js} +1 -1
  175. package/dist/client/assets/{types-BZmkV3q5.js → types-BS5DC2wk.js} +1 -1
  176. package/dist/client/assets/{use-ai-providers-CiI6ZWkB.js → use-ai-providers-DYPXnNx0.js} +1 -1
  177. package/dist/client/assets/{use-api-keys-Cpo1MYM1.js → use-api-keys-CP4O3iZe.js} +1 -1
  178. package/dist/client/assets/{use-automations-CWAeTnIs.js → use-automations-DTN_7sLa.js} +1 -1
  179. package/dist/client/assets/{use-autosave-CdaDGr0q.js → use-autosave-DHiGNmRR.js} +1 -1
  180. package/dist/client/assets/{use-clock-tick-FrtuQikY.js → use-clock-tick-CKqVDP8h.js} +1 -1
  181. package/dist/client/assets/{use-commerce-diagnostic-DODwuMLX.js → use-commerce-diagnostic-Cqjzxdxb.js} +1 -1
  182. package/dist/client/assets/{use-connection-Cl7B1D7N.js → use-connection-BnBiDJsH.js} +1 -1
  183. package/dist/client/assets/{use-copy-YdDsFuXw.js → use-copy-BqNGNqm1.js} +1 -1
  184. package/dist/client/assets/{use-create-virtual-mcp-BqxzzRg2.js → use-create-virtual-mcp-Cbmd-Dva.js} +1 -1
  185. package/dist/client/assets/{use-debounced-autosave-DnThKKar.js → use-debounced-autosave-B5Smb3tE.js} +1 -1
  186. package/dist/client/assets/{use-debounced-value-CpC8hNSQ.js → use-debounced-value-oMi29myP.js} +1 -1
  187. package/dist/client/assets/{use-decopilot-events-CT3DufS7.js → use-decopilot-events-BSEkXeAZ.js} +1 -1
  188. package/dist/client/assets/{use-delete-connection-CcsdQhUb.js → use-delete-connection-rDMKBXEm.js} +1 -1
  189. package/dist/client/assets/{use-deployment-admin-BCzrIfS8.js → use-deployment-admin-wIDGOMoP.js} +1 -1
  190. package/dist/client/assets/{use-file-configs-DIIZBKDz.js → use-file-configs-BIOJbgTV.js} +1 -1
  191. package/dist/client/assets/{use-infinite-scroll-C8dK5V5a.js → use-infinite-scroll-vZUlcPIa.js} +1 -1
  192. package/dist/client/assets/{use-join-requests-DKeG-qZs.js → use-join-requests-5R7tKSZI.js} +1 -1
  193. package/dist/client/assets/{use-mcp-client-KykQjryc.js → use-mcp-client-Dvi5LyLh.js} +1 -1
  194. package/dist/client/assets/{use-mcp-tools-Bi5GFC1j.js → use-mcp-tools-BdP4QWgb.js} +1 -1
  195. package/dist/client/assets/{use-members-Bq_njsAn.js → use-members--YNEQboR.js} +1 -1
  196. package/dist/client/assets/{use-navigate-to-agent-CGTOFk-y.js → use-navigate-to-agent-uX8Ju_mQ.js} +1 -1
  197. package/dist/client/assets/{use-org-auth-client-DQmA2kdY.js → use-org-auth-client-CUtOm6q2.js} +1 -1
  198. package/dist/client/assets/{use-org-repo-syncs-qm0esouY.js → use-org-repo-syncs-CGexjn6d.js} +1 -1
  199. package/dist/client/assets/{use-org-sso-Bn98t9aS.js → use-org-sso-BZCH0Jyg.js} +1 -1
  200. package/dist/client/assets/{use-organization-roles-L64TVPJv.js → use-organization-roles-BgQM-09T.js} +1 -1
  201. package/dist/client/assets/{use-organization-settings-DILBdekz.js → use-organization-settings-103W6S6S.js} +1 -1
  202. package/dist/client/assets/{use-registry-connections-CwlB0Yn2.js → use-registry-connections-BHPNfBQE.js} +1 -1
  203. package/dist/client/assets/{use-secrets-4lO9QZFW.js → use-secrets-B0lZkLvp.js} +1 -1
  204. package/dist/client/assets/{use-section-preview-base-BDzihOuQ.js → use-section-preview-base-CpVYlPwl.js} +1 -1
  205. package/dist/client/assets/{use-status-sounds-DGR_pA7Q.js → use-status-sounds-BHhRjK0r.js} +1 -1
  206. package/dist/client/assets/{use-tags-CCL6Gkja.js → use-tags-D76skIBC.js} +1 -1
  207. package/dist/client/assets/{use-view-mode-rtRrBype.js → use-view-mode-5An0RYUT.js} +1 -1
  208. package/dist/client/assets/{use-virtual-mcp-CdzcvapQ.js → use-virtual-mcp-BWaZz9eh.js} +1 -1
  209. package/dist/client/assets/useInfiniteQuery-CzDl8ckV.js +1 -0
  210. package/dist/client/assets/useSuspenseInfiniteQuery-CqWIRxQy.js +1 -0
  211. package/dist/client/assets/{users-kLKOnHiL.js → users-CVscwIHo.js} +1 -1
  212. package/dist/client/assets/{variant-calendar-DiFZ-BHH.js → variant-calendar-C-uAXb-Z.js} +1 -1
  213. package/dist/client/assets/{view-mode-toggle-1XBV2Qf0.js → view-mode-toggle-4F2aLenh.js} +1 -1
  214. package/dist/client/index.html +1 -1
  215. package/dist/server/cli.js +1 -1
  216. package/dist/server/server.js +1 -1
  217. package/package.json +1 -1
  218. package/dist/client/assets/record-editor-BpbZJ_l8.js +0 -1
  219. package/dist/client/assets/registry-DONWBYhy.js +0 -2
  220. package/dist/client/assets/store-registry-Ch10qOp2.js +0 -2
  221. package/dist/client/assets/useInfiniteQuery-hqfkn01u.js +0 -1
  222. package/dist/client/assets/useSuspenseInfiniteQuery-CoKXbJr2.js +0 -1
@@ -50,7 +50,7 @@
50
50
  <meta name="twitter:description" content="Hire specialized agents, give them access to your tools, and let them deliver real projects — with planning, verification, and observability built in." />
51
51
  <meta name="twitter:image" content="/og-image.png" />
52
52
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
53
- <script type="module" crossorigin src="/assets/index-Dj4DiKL1.js"></script>
53
+ <script type="module" crossorigin src="/assets/index-DW_QUyN3.js"></script>
54
54
  <link rel="stylesheet" crossorigin href="/assets/index-DZ9B9lIh.css">
55
55
  </head>
56
56
  <body>
@@ -1388,7 +1388,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var vi1=L(()=>{zf()});f
1388
1388
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await tb`
1389
1389
  DELETE FROM kysely_migration WHERE name = ${X}
1390
1390
  `.execute($)}}async function $r1($){await Mt6($),await Vt6($);let Z=new so1({db:$,provider:{getMigrations:()=>Promise.resolve(di0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function kt6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Fl0();let G=X??K6(),J=async()=>{if(!Z&&!X)await cB(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await $r1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function St6(){let $=K6(),Z=new so1({db:$.db,provider:{getMigrations:()=>Promise.resolve(di0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var Xr1=L(()=>{ao1();Nl0();YX()});async function fZ0($){let Z={...process.env},X=q80($,Z);console.log(Bw1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Hp1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (d90(),l90)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Nl0(),Np1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (YX(),Vn1)),{migrateToLatest:F}=await Promise.resolve().then(() => (Xr1(),Zr1)),N=H(G.databaseUrl);await F({keepOpen:!0,database:N,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return xi1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var mi0=L(()=>{zf();Fp1();_8()});var Gr1={};U0(Gr1,{updateService:()=>TE,subscribeCliState:()=>pi0,setTuiConsoleIntercepted:()=>bZ0,setServerUrl:()=>hi,setMigrationsDone:()=>gi,setDevMode:()=>vt6,resetCliStateForTests:()=>Ct6,isTuiConsoleIntercepted:()=>yZ0,getCliState:()=>ni0,addLogEntry:()=>nB});function Qr1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function Ct6(){pQ=Qr1()}function _t6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function yi(){for(let $ of ii0)$()}function ni0(){return pQ}function pi0($){return ii0.add($),()=>ii0.delete($)}function TE($){pQ={...pQ,services:pQ.services.map((Z)=>Z.name===$.name?$:Z)},yi()}function gi(){pQ={...pQ,migrationsStatus:"done"},yi()}function hi($){pQ={...pQ,serverUrl:$},yi()}function nB($){let Z=[...pQ.logs,$];pQ={...pQ,logs:Z.length>500?Z.slice(-500):Z},yi()}function vt6(){pQ={...pQ,services:[..._t6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},yi()}function bZ0($){Yr1=$}function yZ0(){return Yr1}var pQ,ii0,Yr1=!1;var RE=L(()=>{pQ=Qr1();ii0=new Set});import{createServer as Jr1}from"net";function xt6($){return new Promise((Z)=>{let X=Jr1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function ui($){if(await xt6($))return $;let Z=await new Promise((X,Q)=>{let Y=Jr1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var ti0=()=>{};function ci($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var oi0={};U0(oi0,{startDevServer:()=>bt6});import{join as ft6}from"path";function Kr1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
1391
- `);Q=G.pop()??"";for(let J of G){let K=ci(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;nB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=ci(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)nB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function bt6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await ui(Number(Y)+1):await ui(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await fZ0({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let w of W)TE({name:w.name,status:"ready",port:w.port});gi();let F=ft6(import.meta.dir,"..","..","..","..",".."),N=X===!0,U=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:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Kr1(U.stdout),Kr1(U.stderr);hi(G),TE({name:"Vite",status:"ready",port:Number(Y)}),TE({name:"API",status:"ready",port:Number(K.port)});let O=async(w)=>{if(U.kill(w),await U.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (d90(),l90));await D(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var ri0=L(()=>{mi0();RE();ti0()});var gZ0;var ai0=L(()=>{gZ0={name:"decocms",version:"4.252.7",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as gt6,Text as Wr1}from"ink";import{jsx as ht6,jsxs as Hr1}from"react/jsx-runtime";function Fr1({version:$}){return Hr1(gt6,{flexDirection:"column",marginTop:1,children:[UZ0.map((Z,X)=>ht6(Wr1,{color:BZ0[X],children:Z},X)),Hr1(Wr1,{dimColor:!0,children:[" v",$]})]})}var Nr1=L(()=>{qi()});import{Box as IE,Text as pB}from"ink";import{Spinner as ut6}from"@inkjs/ui";import{jsx as eY,jsxs as ob}from"react/jsx-runtime";function Ur1({status:$}){if($==="pending")return eY(ut6,{label:""});return eY(pB,{color:"green",children:"\u2713"})}function ct6($){return`${$.name}: ${$.port||"...."}`}function Br1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return ob(IE,{flexDirection:"column",paddingBottom:1,children:[eY(Fr1,{version:gZ0.version}),eY(IE,{marginBottom:1,children:eY(pB,{dimColor:!0,children:"\u2500".repeat(80)})}),eY(IE,{children:ob(pB,{dimColor:!0,children:["Home: ",X]})}),ob(IE,{gap:2,children:[$.map((Y)=>ob(IE,{gap:1,children:[eY(pB,{children:ct6(Y)}),eY(Ur1,{status:Y.status})]},Y.name)),ob(IE,{gap:1,children:[eY(pB,{children:"Migrations"}),eY(Ur1,{status:Z})]})]}),eY(IE,{children:Q?ob(pB,{children:["Open in browser: ",eY(pB,{color:"cyan",children:Q})]}):eY(pB,{dimColor:!0,children:"Starting..."})})]})}var Or1=L(()=>{ai0();Nr1()});import{Box as lt6,Text as li}from"ink";import{jsx as si0,jsxs as ei0}from"react/jsx-runtime";function dt6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Lr1({logs:$}){return si0(lt6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return si0(li,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return ei0(li,{children:[ei0(li,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),si0(li,{color:dt6(Z.status),children:Z.status}),ei0(li,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var wr1=()=>{};var $n0={};U0($n0,{App:()=>nt6});import{Box as mt6}from"ink";import{useSyncExternalStore as it6}from"react";import{jsx as Dr1,jsxs as pt6}from"react/jsx-runtime";function nt6({home:$}){let Z=it6(pi0,ni0);return pt6(mt6,{flexDirection:"column",children:[Dr1(Br1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Dr1(Lr1,{logs:Z.logs})]})}var Zn0=L(()=>{Or1();wr1();RE()});var gJ="thread-gate",$N="decopilot-hosted-harness",ZN="decopilot-hosted-harness-sandboxed",U3="automations",tB="background-tools",qE="task-board-github-reads",ME="jira-push";var Er1="7";function jr1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Er1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var zr1=()=>{};function tt6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Xn0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Pr1(){let $=tt6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Xn0($,"--cpu-prof-dir")??process.cwd(),name:Xn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Xn0($,"--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 Ar1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=jE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),hZ0=setInterval(()=>void Z().catch(()=>{}),$),hZ0.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(hZ0)clearInterval(hZ0)}}var hZ0;var Tr1=()=>{};import*as ot6 from"bun:jsc";function Rr1(){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{rt6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=at6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var rt6,at6;var Ir1=L(()=>{({startSamplingProfiler:rt6,samplingProfilerStackTraces:at6}=ot6)});function qr1(){Pr1();let $=[Ar1(),zn1(),Rr1()];return()=>{for(let Z of $)Z()}}var Mr1=L(()=>{$l0();Tr1();Ir1()});var VE=v((Vr1)=>{Object.defineProperty(Vr1,"__esModule",{value:!0});Vr1.RepublishHeaders=Vr1.DirectMsgHeaders=Vr1.JsHeaders=Vr1.AdvisoryKind=void 0;Vr1.isOrderedPushConsumerOptions=st6;Vr1.isPullConsumer=et6;Vr1.isPushConsumer=$o6;Vr1.isBoundPushConsumerOptions=Zo6;function st6($){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 et6($){return $.isPullConsumer()}function $o6($){return $.isPushConsumer()}function Zo6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Vr1.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"};Vr1.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"};Vr1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Vr1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var $G=v((Sr1)=>{Object.defineProperty(Sr1,"__esModule",{value:!0});Sr1.TD=Sr1.TE=Sr1.Empty=void 0;Sr1.encode=Fo6;Sr1.decode=No6;Sr1.Empty=new Uint8Array(0);Sr1.TE=new TextEncoder;Sr1.TD=new TextDecoder;function Ho6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Fo6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Sr1.TE.encode($[X]));if(Z.length===0)return Sr1.Empty;if(Z.length===1)return Z[0];return Ho6(...Z)}function No6($){if(!$||$.length===0)return"";return Sr1.TD.decode($)}});var ZG=v((vr1)=>{Object.defineProperty(vr1,"__esModule",{value:!0});vr1.errors=vr1.PermissionViolationError=vr1.NoRespondersError=vr1.TimeoutError=vr1.RequestError=vr1.ProtocolError=vr1.ConnectionError=vr1.DrainingConnectionError=vr1.ClosedConnectionError=vr1.AuthorizationError=vr1.UserAuthenticationExpiredError=vr1.InvalidOperationError=vr1.InvalidArgumentError=vr1.InvalidSubjectError=void 0;class Yn0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}vr1.InvalidSubjectError=Yn0;class uZ0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new uZ0(`${$} ${Z}`,X)}}vr1.InvalidArgumentError=uZ0;class Gn0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}vr1.InvalidOperationError=Gn0;class cZ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new cZ0($);return null}}vr1.UserAuthenticationExpiredError=cZ0;class lZ0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new lZ0($);return null}}vr1.AuthorizationError=lZ0;class Jn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}vr1.ClosedConnectionError=Jn0;class Kn0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}vr1.DrainingConnectionError=Kn0;class Wn0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}vr1.ConnectionError=Wn0;class Hn0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}vr1.ProtocolError=Hn0;class Fn0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof dZ0}}vr1.RequestError=Fn0;class Nn0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}vr1.TimeoutError=Nn0;class dZ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}vr1.NoRespondersError=dZ0;class mZ0 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new mZ0($,X,Q,Y)}}vr1.PermissionViolationError=mZ0;vr1.errors={AuthorizationError:lZ0,ClosedConnectionError:Jn0,ConnectionError:Wn0,DrainingConnectionError:Kn0,InvalidArgumentError:uZ0,InvalidOperationError:Gn0,InvalidSubjectError:Yn0,NoRespondersError:dZ0,PermissionViolationError:mZ0,ProtocolError:Hn0,RequestError:Fn0,TimeoutError:Nn0,UserAuthenticationExpiredError:cZ0}});var hJ=v((gr1)=>{Object.defineProperty(gr1,"__esModule",{value:!0});gr1.SimpleMutex=gr1.Perf=void 0;gr1.extend=Vo6;gr1.render=ko6;gr1.timeout=So6;gr1.delay=Co6;gr1.deadline=_o6;gr1.deferred=Bn0;gr1.debugDeferred=vo6;gr1.shuffle=xo6;gr1.collect=fo6;gr1.jitter=yr1;gr1.backoff=bo6;gr1.nanos=yo6;gr1.millis=go6;gr1.randomToken=co6;var Mo6=$G(),Un0=ZG();function Vo6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function ko6($){return Mo6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function So6($,Z=!0){let X=Z?new Un0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Un0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Co6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function _o6($,Z=1000){let X=Bn0(),Q=setTimeout(()=>{X.reject(new Un0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Bn0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function vo6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function xo6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function fo6($){let Z=[];for await(let X of $)Z.push(X);return Z}class fr1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}gr1.Perf=fr1;class br1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Bn0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}gr1.SimpleMutex=br1;function yr1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function bo6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return yr1(X>Z?$[Z]:$[X])}}}function yo6($){return $*1e6}function go6($){return Math.floor($/1e6)}var ho6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",XN=new Uint8Array(62);for(let $=0;$<62;$++)XN[$]=ho6.charCodeAt($);var uo6=218340105584896;function co6(){let $=Math.floor(Math.random()*uo6),Z=$%62,X=XN[Z];$=($-Z)/62,Z=$%62;let Q=XN[Z];$=($-Z)/62,Z=$%62;let Y=XN[Z];$=($-Z)/62,Z=$%62;let G=XN[Z];$=($-Z)/62,Z=$%62;let J=XN[Z];$=($-Z)/62,Z=$%62;let K=XN[Z];$=($-Z)/62,Z=$%62;let W=XN[Z];$=($-Z)/62;let H=XN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var nr1=v((mr1)=>{Object.defineProperty(mr1,"__esModule",{value:!0});mr1.nuid=mr1.NuidImpl=void 0;var Qr6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",oB=62,nZ0=12,lr1=10,ur1=33,Yr6=333,cr1=nZ0+lr1,Ln0=new Uint8Array(oB);for(let $=0;$<oB;$++)Ln0[$]=Qr6.charCodeAt($);var iZ0=4294967296,dr1=BigInt(oB)**BigInt(lr1),di=Number(dr1/(1n<<32n)),On0=Number(dr1%(1n<<32n));function Gr6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Jr6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Gr6($)}class wn0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(cr1),this.cbuf=new Uint8Array(nZ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(di+1)),this.seqLo=Math.floor(Math.random()*iZ0);while($++<8&&this.seqHi===di&&this.seqLo>=On0);if(this.seqHi===di&&this.seqLo>=On0)this.seqLo=0;this.inc=Math.random()*(Yr6-ur1)+ur1|0}setPre(){Jr6(this.cbuf);for(let $=0;$<nZ0;$++)this.buf[$]=Ln0[this.cbuf[$]%oB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=cr1-1;X>=nZ0;X--){let Q=Math.floor($/oB),G=($-Q*oB)*iZ0+Z,J=Math.floor(G/oB),K=G-J*oB;this.buf[X]=Ln0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=iZ0)this.seqLo-=iZ0,this.seqHi+=1;if(this.seqHi>di||this.seqHi===di&&this.seqLo>=On0)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()}}mr1.NuidImpl=wn0;mr1.nuid=new wn0});var rr1=v((tr1)=>{Object.defineProperty(tr1,"__esModule",{value:!0});tr1.nuid=tr1.Nuid=void 0;var pr1=nr1();tr1.Nuid=pr1.NuidImpl;tr1.nuid=pr1.nuid});var tZ0=v((pZ0)=>{Object.defineProperty(pZ0,"__esModule",{value:!0});pZ0.nuid=pZ0.Nuid=void 0;var ar1=rr1();Object.defineProperty(pZ0,"Nuid",{enumerable:!0,get:function(){return ar1.Nuid}});Object.defineProperty(pZ0,"nuid",{enumerable:!0,get:function(){return ar1.nuid}})});var rB=v((sr1)=>{Object.defineProperty(sr1,"__esModule",{value:!0});sr1.DEFAULT_HOST=sr1.DEFAULT_PORT=sr1.Match=void 0;sr1.syncIterator=Ur6;sr1.createInbox=Br6;var Fr6=tZ0(),Nr6=ZG();sr1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Ur6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function Br6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Nr6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Fr6.nuid.next()}`}sr1.DEFAULT_PORT=4222;sr1.DEFAULT_HOST="127.0.0.1"});var mi=v((Xa1)=>{Object.defineProperty(Xa1,"__esModule",{value:!0});Xa1.DataBuffer=void 0;var $a1=$G();class Za1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return $a1.TE.encode($)}static toAscii($){return $a1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Xa1.DataBuffer=Za1});var kE=v((Ga1)=>{Object.defineProperty(Ga1,"__esModule",{value:!0});Ga1.LF=Ga1.CR=Ga1.CRLF=Ga1.CR_LF_LEN=Ga1.CR_LF=void 0;Ga1.setTransportFactory=Pr6;Ga1.defaultPort=Ar6;Ga1.getUrlParseFn=Tr6;Ga1.newTransport=Rr6;Ga1.getResolveFn=Ir6;Ga1.protoLen=Ya1;Ga1.extractProtocolMessage=qr6;var Er6=$G(),jr6=rB(),zr6=mi(),XG;function Pr6($){XG=$}function Ar6(){return XG!==void 0&&XG.defaultPort!==void 0?XG.defaultPort:jr6.DEFAULT_PORT}function Tr6(){return XG!==void 0&&XG.urlParseFn?XG.urlParseFn:void 0}function Rr6(){if(!XG||typeof XG.factory!=="function")throw Error("transport fn is not set");return XG.factory()}function Ir6(){return XG!==void 0&&XG.dnsResolveFn?XG.dnsResolveFn:void 0}Ga1.CR_LF=`\r
1391
+ `);Q=G.pop()??"";for(let J of G){let K=ci(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;nB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=ci(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)nB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function bt6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await ui(Number(Y)+1):await ui(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await fZ0({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let w of W)TE({name:w.name,status:"ready",port:w.port});gi();let F=ft6(import.meta.dir,"..","..","..","..",".."),N=X===!0,U=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:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Kr1(U.stdout),Kr1(U.stderr);hi(G),TE({name:"Vite",status:"ready",port:Number(Y)}),TE({name:"API",status:"ready",port:Number(K.port)});let O=async(w)=>{if(U.kill(w),await U.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (d90(),l90));await D(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var ri0=L(()=>{mi0();RE();ti0()});var gZ0;var ai0=L(()=>{gZ0={name:"decocms",version:"4.252.8",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as gt6,Text as Wr1}from"ink";import{jsx as ht6,jsxs as Hr1}from"react/jsx-runtime";function Fr1({version:$}){return Hr1(gt6,{flexDirection:"column",marginTop:1,children:[UZ0.map((Z,X)=>ht6(Wr1,{color:BZ0[X],children:Z},X)),Hr1(Wr1,{dimColor:!0,children:[" v",$]})]})}var Nr1=L(()=>{qi()});import{Box as IE,Text as pB}from"ink";import{Spinner as ut6}from"@inkjs/ui";import{jsx as eY,jsxs as ob}from"react/jsx-runtime";function Ur1({status:$}){if($==="pending")return eY(ut6,{label:""});return eY(pB,{color:"green",children:"\u2713"})}function ct6($){return`${$.name}: ${$.port||"...."}`}function Br1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return ob(IE,{flexDirection:"column",paddingBottom:1,children:[eY(Fr1,{version:gZ0.version}),eY(IE,{marginBottom:1,children:eY(pB,{dimColor:!0,children:"\u2500".repeat(80)})}),eY(IE,{children:ob(pB,{dimColor:!0,children:["Home: ",X]})}),ob(IE,{gap:2,children:[$.map((Y)=>ob(IE,{gap:1,children:[eY(pB,{children:ct6(Y)}),eY(Ur1,{status:Y.status})]},Y.name)),ob(IE,{gap:1,children:[eY(pB,{children:"Migrations"}),eY(Ur1,{status:Z})]})]}),eY(IE,{children:Q?ob(pB,{children:["Open in browser: ",eY(pB,{color:"cyan",children:Q})]}):eY(pB,{dimColor:!0,children:"Starting..."})})]})}var Or1=L(()=>{ai0();Nr1()});import{Box as lt6,Text as li}from"ink";import{jsx as si0,jsxs as ei0}from"react/jsx-runtime";function dt6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Lr1({logs:$}){return si0(lt6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return si0(li,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return ei0(li,{children:[ei0(li,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),si0(li,{color:dt6(Z.status),children:Z.status}),ei0(li,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var wr1=()=>{};var $n0={};U0($n0,{App:()=>nt6});import{Box as mt6}from"ink";import{useSyncExternalStore as it6}from"react";import{jsx as Dr1,jsxs as pt6}from"react/jsx-runtime";function nt6({home:$}){let Z=it6(pi0,ni0);return pt6(mt6,{flexDirection:"column",children:[Dr1(Br1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Dr1(Lr1,{logs:Z.logs})]})}var Zn0=L(()=>{Or1();wr1();RE()});var gJ="thread-gate",$N="decopilot-hosted-harness",ZN="decopilot-hosted-harness-sandboxed",U3="automations",tB="background-tools",qE="task-board-github-reads",ME="jira-push";var Er1="7";function jr1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Er1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var zr1=()=>{};function tt6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Xn0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Pr1(){let $=tt6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Xn0($,"--cpu-prof-dir")??process.cwd(),name:Xn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Xn0($,"--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 Ar1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=jE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),hZ0=setInterval(()=>void Z().catch(()=>{}),$),hZ0.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(hZ0)clearInterval(hZ0)}}var hZ0;var Tr1=()=>{};import*as ot6 from"bun:jsc";function Rr1(){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{rt6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=at6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var rt6,at6;var Ir1=L(()=>{({startSamplingProfiler:rt6,samplingProfilerStackTraces:at6}=ot6)});function qr1(){Pr1();let $=[Ar1(),zn1(),Rr1()];return()=>{for(let Z of $)Z()}}var Mr1=L(()=>{$l0();Tr1();Ir1()});var VE=v((Vr1)=>{Object.defineProperty(Vr1,"__esModule",{value:!0});Vr1.RepublishHeaders=Vr1.DirectMsgHeaders=Vr1.JsHeaders=Vr1.AdvisoryKind=void 0;Vr1.isOrderedPushConsumerOptions=st6;Vr1.isPullConsumer=et6;Vr1.isPushConsumer=$o6;Vr1.isBoundPushConsumerOptions=Zo6;function st6($){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 et6($){return $.isPullConsumer()}function $o6($){return $.isPushConsumer()}function Zo6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Vr1.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"};Vr1.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"};Vr1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Vr1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var $G=v((Sr1)=>{Object.defineProperty(Sr1,"__esModule",{value:!0});Sr1.TD=Sr1.TE=Sr1.Empty=void 0;Sr1.encode=Fo6;Sr1.decode=No6;Sr1.Empty=new Uint8Array(0);Sr1.TE=new TextEncoder;Sr1.TD=new TextDecoder;function Ho6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Fo6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Sr1.TE.encode($[X]));if(Z.length===0)return Sr1.Empty;if(Z.length===1)return Z[0];return Ho6(...Z)}function No6($){if(!$||$.length===0)return"";return Sr1.TD.decode($)}});var ZG=v((vr1)=>{Object.defineProperty(vr1,"__esModule",{value:!0});vr1.errors=vr1.PermissionViolationError=vr1.NoRespondersError=vr1.TimeoutError=vr1.RequestError=vr1.ProtocolError=vr1.ConnectionError=vr1.DrainingConnectionError=vr1.ClosedConnectionError=vr1.AuthorizationError=vr1.UserAuthenticationExpiredError=vr1.InvalidOperationError=vr1.InvalidArgumentError=vr1.InvalidSubjectError=void 0;class Yn0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}vr1.InvalidSubjectError=Yn0;class uZ0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new uZ0(`${$} ${Z}`,X)}}vr1.InvalidArgumentError=uZ0;class Gn0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}vr1.InvalidOperationError=Gn0;class cZ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new cZ0($);return null}}vr1.UserAuthenticationExpiredError=cZ0;class lZ0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new lZ0($);return null}}vr1.AuthorizationError=lZ0;class Jn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}vr1.ClosedConnectionError=Jn0;class Kn0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}vr1.DrainingConnectionError=Kn0;class Wn0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}vr1.ConnectionError=Wn0;class Hn0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}vr1.ProtocolError=Hn0;class Fn0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof dZ0}}vr1.RequestError=Fn0;class Nn0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}vr1.TimeoutError=Nn0;class dZ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}vr1.NoRespondersError=dZ0;class mZ0 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new mZ0($,X,Q,Y)}}vr1.PermissionViolationError=mZ0;vr1.errors={AuthorizationError:lZ0,ClosedConnectionError:Jn0,ConnectionError:Wn0,DrainingConnectionError:Kn0,InvalidArgumentError:uZ0,InvalidOperationError:Gn0,InvalidSubjectError:Yn0,NoRespondersError:dZ0,PermissionViolationError:mZ0,ProtocolError:Hn0,RequestError:Fn0,TimeoutError:Nn0,UserAuthenticationExpiredError:cZ0}});var hJ=v((gr1)=>{Object.defineProperty(gr1,"__esModule",{value:!0});gr1.SimpleMutex=gr1.Perf=void 0;gr1.extend=Vo6;gr1.render=ko6;gr1.timeout=So6;gr1.delay=Co6;gr1.deadline=_o6;gr1.deferred=Bn0;gr1.debugDeferred=vo6;gr1.shuffle=xo6;gr1.collect=fo6;gr1.jitter=yr1;gr1.backoff=bo6;gr1.nanos=yo6;gr1.millis=go6;gr1.randomToken=co6;var Mo6=$G(),Un0=ZG();function Vo6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function ko6($){return Mo6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function So6($,Z=!0){let X=Z?new Un0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Un0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Co6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function _o6($,Z=1000){let X=Bn0(),Q=setTimeout(()=>{X.reject(new Un0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Bn0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function vo6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function xo6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function fo6($){let Z=[];for await(let X of $)Z.push(X);return Z}class fr1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}gr1.Perf=fr1;class br1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Bn0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}gr1.SimpleMutex=br1;function yr1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function bo6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return yr1(X>Z?$[Z]:$[X])}}}function yo6($){return $*1e6}function go6($){return Math.floor($/1e6)}var ho6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",XN=new Uint8Array(62);for(let $=0;$<62;$++)XN[$]=ho6.charCodeAt($);var uo6=218340105584896;function co6(){let $=Math.floor(Math.random()*uo6),Z=$%62,X=XN[Z];$=($-Z)/62,Z=$%62;let Q=XN[Z];$=($-Z)/62,Z=$%62;let Y=XN[Z];$=($-Z)/62,Z=$%62;let G=XN[Z];$=($-Z)/62,Z=$%62;let J=XN[Z];$=($-Z)/62,Z=$%62;let K=XN[Z];$=($-Z)/62,Z=$%62;let W=XN[Z];$=($-Z)/62;let H=XN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var nr1=v((mr1)=>{Object.defineProperty(mr1,"__esModule",{value:!0});mr1.nuid=mr1.NuidImpl=void 0;var Qr6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",oB=62,nZ0=12,lr1=10,ur1=33,Yr6=333,cr1=nZ0+lr1,Ln0=new Uint8Array(oB);for(let $=0;$<oB;$++)Ln0[$]=Qr6.charCodeAt($);var iZ0=4294967296,dr1=BigInt(oB)**BigInt(lr1),di=Number(dr1/(1n<<32n)),On0=Number(dr1%(1n<<32n));function Gr6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Jr6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Gr6($)}class wn0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(cr1),this.cbuf=new Uint8Array(nZ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(di+1)),this.seqLo=Math.floor(Math.random()*iZ0);while($++<8&&this.seqHi===di&&this.seqLo>=On0);if(this.seqHi===di&&this.seqLo>=On0)this.seqLo=0;this.inc=Math.random()*(Yr6-ur1)+ur1|0}setPre(){Jr6(this.cbuf);for(let $=0;$<nZ0;$++)this.buf[$]=Ln0[this.cbuf[$]%oB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=cr1-1;X>=nZ0;X--){let Q=Math.floor($/oB),G=($-Q*oB)*iZ0+Z,J=Math.floor(G/oB),K=G-J*oB;this.buf[X]=Ln0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=iZ0)this.seqLo-=iZ0,this.seqHi+=1;if(this.seqHi>di||this.seqHi===di&&this.seqLo>=On0)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()}}mr1.NuidImpl=wn0;mr1.nuid=new wn0});var rr1=v((tr1)=>{Object.defineProperty(tr1,"__esModule",{value:!0});tr1.nuid=tr1.Nuid=void 0;var pr1=nr1();tr1.Nuid=pr1.NuidImpl;tr1.nuid=pr1.nuid});var tZ0=v((pZ0)=>{Object.defineProperty(pZ0,"__esModule",{value:!0});pZ0.nuid=pZ0.Nuid=void 0;var ar1=rr1();Object.defineProperty(pZ0,"Nuid",{enumerable:!0,get:function(){return ar1.Nuid}});Object.defineProperty(pZ0,"nuid",{enumerable:!0,get:function(){return ar1.nuid}})});var rB=v((sr1)=>{Object.defineProperty(sr1,"__esModule",{value:!0});sr1.DEFAULT_HOST=sr1.DEFAULT_PORT=sr1.Match=void 0;sr1.syncIterator=Ur6;sr1.createInbox=Br6;var Fr6=tZ0(),Nr6=ZG();sr1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Ur6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function Br6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Nr6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Fr6.nuid.next()}`}sr1.DEFAULT_PORT=4222;sr1.DEFAULT_HOST="127.0.0.1"});var mi=v((Xa1)=>{Object.defineProperty(Xa1,"__esModule",{value:!0});Xa1.DataBuffer=void 0;var $a1=$G();class Za1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return $a1.TE.encode($)}static toAscii($){return $a1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Xa1.DataBuffer=Za1});var kE=v((Ga1)=>{Object.defineProperty(Ga1,"__esModule",{value:!0});Ga1.LF=Ga1.CR=Ga1.CRLF=Ga1.CR_LF_LEN=Ga1.CR_LF=void 0;Ga1.setTransportFactory=Pr6;Ga1.defaultPort=Ar6;Ga1.getUrlParseFn=Tr6;Ga1.newTransport=Rr6;Ga1.getResolveFn=Ir6;Ga1.protoLen=Ya1;Ga1.extractProtocolMessage=qr6;var Er6=$G(),jr6=rB(),zr6=mi(),XG;function Pr6($){XG=$}function Ar6(){return XG!==void 0&&XG.defaultPort!==void 0?XG.defaultPort:jr6.DEFAULT_PORT}function Tr6(){return XG!==void 0&&XG.urlParseFn?XG.urlParseFn:void 0}function Rr6(){if(!XG||typeof XG.factory!=="function")throw Error("transport fn is not set");return XG.factory()}function Ir6(){return XG!==void 0&&XG.dnsResolveFn?XG.dnsResolveFn:void 0}Ga1.CR_LF=`\r
1392
1392
  `;Ga1.CR_LF_LEN=Ga1.CR_LF.length;Ga1.CRLF=zr6.DataBuffer.fromAscii(Ga1.CR_LF);Ga1.CR=new Uint8Array(Ga1.CRLF)[0];Ga1.LF=new Uint8Array(Ga1.CRLF)[1];function Ya1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===Ga1.CR&&$[X]===Ga1.LF)return X+1}return 0}function qr6($){let Z=Ya1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return Er6.TD.decode(Q)}return""}});var Pn0=v((Ba1)=>{Object.defineProperty(Ba1,"__esModule",{value:!0});Ba1.ipV4=Fa1;Ba1.isIP=yr6;Ba1.parseIP=Na1;var ii=4,SE=16,oZ0=48,Ha1=57,Ka1=65,fr6=70,Wa1=97,br6=102,zn0=16777215;function Fa1($,Z,X,Q){let Y=new Uint8Array(SE);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function yr6($){return Na1($)!==void 0}function Na1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return Ua1($);case":":return gr6($)}return}function Ua1($){let Z=new Uint8Array(ii);for(let X=0;X<ii;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=hr6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return Fa1(Z[0],Z[1],Z[2],Z[3])}function gr6($){let Z=new Uint8Array(SE),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<SE){let{n:Y,c:G,ok:J}=ur6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=SE-ii)return;if(Q+ii>SE)return;let K=Ua1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=ii;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<SE){if(X<0)return;let Y=SE-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function hr6($){let Z=0,X=0;for(Z=0;Z<$.length&&oZ0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=Ha1;Z++)if(X=X*10+($.charCodeAt(Z)-oZ0),X>=zn0)return{n:zn0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function ur6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(oZ0<=$.charCodeAt(X)&&$.charCodeAt(X)<=Ha1)Z*=16,Z+=$.charCodeAt(X)-oZ0;else if(Wa1<=$.charCodeAt(X)&&$.charCodeAt(X)<=br6)Z*=16,Z+=$.charCodeAt(X)-Wa1+10;else if(Ka1<=$.charCodeAt(X)&&$.charCodeAt(X)<=fr6)Z*=16,Z+=$.charCodeAt(X)-Ka1+10;else break;if(Z>=zn0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var Mn0=v((La1)=>{Object.defineProperty(La1,"__esModule",{value:!0});La1.Servers=La1.ServerImpl=void 0;La1.isIPV4OrHostname=Oa1;La1.hostPort=qn0;var An0=kE(),Tn0=hJ(),Rn0=Pn0(),mr6=rB(),ir6=ZG();function Oa1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function In0($){return!Oa1($)}function nr6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function qn0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=nr6($),In0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=In0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):mr6.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class rb{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=qn0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Rn0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${In0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new rb(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Tn0.shuffle)(Z);return this.resolves=Z,Z}}La1.ServerImpl=rb;class rZ0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw ir6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,An0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=qn0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new rb(Y))}if(this.randomize)(0,Tn0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Rn0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,An0.getUrlParseFn)();$=X?X($):$;let Q=new rb($,Z);if((0,Rn0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return rZ0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return rZ0.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,An0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new rb(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Tn0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}La1.Servers=rZ0});var aZ0=v((ja1)=>{Object.defineProperty(ja1,"__esModule",{value:!0});ja1.QueuedIteratorImpl=void 0;var Vn0=hJ(),Da1=ZG();class Ea1{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,Vn0.deferred)(),this.yields=[],this.iterClosed=(0,Vn0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new Da1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Da1.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,Vn0.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}}ja1.QueuedIteratorImpl=Ea1});var kn0=v((Ta1)=>{Object.defineProperty(Ta1,"__esModule",{value:!0});Ta1.MuxSubscription=void 0;var rr6=rB(),Pa1=ZG();class Aa1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,rr6.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new Pa1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new Pa1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Ta1.MuxSubscription=Aa1});var Sn0=v((qa1)=>{Object.defineProperty(qa1,"__esModule",{value:!0});qa1.Heartbeat=void 0;var ar6=hJ();class Ia1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,ar6.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})}}qa1.Heartbeat=Ia1});var vn0=v((Ca1)=>{Object.defineProperty(Ca1,"__esModule",{value:!0});Ca1.DenoBuffer=Ca1.MAX_SIZE=Ca1.AssertionError=void 0;Ca1.assert=ka1;Ca1.concat=Sa1;Ca1.append=er6;Ca1.readAll=$a6;Ca1.writeAll=Za6;var sr6=$G();class Cn0 extends Error{constructor($){super($);this.name="AssertionError"}}Ca1.AssertionError=Cn0;function ka1($,Z="Assertion failed."){if(!$)throw new Cn0(Z)}var Va1=32768;Ca1.MAX_SIZE=4294967294;function sZ0($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function Sa1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function er6($,Z){return Sa1($,Uint8Array.of(Z))}class _n0{_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($){ka1($<=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=sZ0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(sr6.TE.encode($))}write($){let Z=this._grow($.byteLength);return sZ0($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)sZ0(this._buf.subarray(this._off),this._buf);else if(Q+$>Ca1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,Ca1.MAX_SIZE));sZ0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,Ca1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(Va1);while(!0){let Q=this.capacity-this.length<Va1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}Ca1.DenoBuffer=_n0;function $a6($){let Z=new _n0;return Z.readFrom($),Z.bytes()}function Za6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var bn0=v((ba1)=>{Object.defineProperty(ba1,"__esModule",{value:!0});ba1.cc=ba1.State=ba1.Parser=ba1.Kind=void 0;ba1.describe=Wa6;var xn0=vn0(),fn0=$G();ba1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function Wa6($){let Z,X="";switch($.kind){case ba1.Kind.MSG:Z="MSG";break;case ba1.Kind.OK:Z="OK";break;case ba1.Kind.ERR:Z="ERR",X=fn0.TD.decode($.data);break;case ba1.Kind.PING:Z="PING";break;case ba1.Kind.PONG:Z="PONG";break;case ba1.Kind.INFO:Z="INFO",X=fn0.TD.decode($.data)}return`${Z}: ${X}`}function va1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var xa1=48,Ha6=57,ab=67108864;class fa1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=ba1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case ba1.State.OP_START:switch(X){case ba1.cc.M:case ba1.cc.m:this.state=ba1.State.OP_M,this.hdr=-1,this.ma=va1();break;case ba1.cc.H:case ba1.cc.h:this.state=ba1.State.OP_H,this.hdr=0,this.ma=va1();break;case ba1.cc.P:case ba1.cc.p:this.state=ba1.State.OP_P;break;case ba1.cc.PLUS:this.state=ba1.State.OP_PLUS;break;case ba1.cc.MINUS:this.state=ba1.State.OP_MINUS;break;case ba1.cc.I:case ba1.cc.i:this.state=ba1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_H:switch(X){case ba1.cc.M:case ba1.cc.m:this.state=ba1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_M:switch(X){case ba1.cc.S:case ba1.cc.s:this.state=ba1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_MS:switch(X){case ba1.cc.G:case ba1.cc.g:this.state=ba1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_MSG:switch(X){case ba1.cc.SPACE:case ba1.cc.TAB:this.state=ba1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_MSG_SPC:switch(X){case ba1.cc.SPACE:case ba1.cc.TAB:continue;default:this.state=ba1.State.MSG_ARG,this.as=Z}break;case ba1.State.MSG_ARG:switch(X){case ba1.cc.CR:this.drop=1;break;case ba1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=ba1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case ba1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:ba1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=ba1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:ba1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=ba1.State.MSG_END;break;case ba1.State.MSG_END:switch(X){case ba1.cc.NL:this.drop=0,this.as=Z+1,this.state=ba1.State.OP_START;break;default:continue}break;case ba1.State.OP_PLUS:switch(X){case ba1.cc.O:case ba1.cc.o:this.state=ba1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_PLUS_O:switch(X){case ba1.cc.K:case ba1.cc.k:this.state=ba1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_PLUS_OK:switch(X){case ba1.cc.NL:this.dispatcher.push({kind:ba1.Kind.OK}),this.drop=0,this.state=ba1.State.OP_START;break}break;case ba1.State.OP_MINUS:switch(X){case ba1.cc.E:case ba1.cc.e:this.state=ba1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_MINUS_E:switch(X){case ba1.cc.R:case ba1.cc.r:this.state=ba1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_MINUS_ER:switch(X){case ba1.cc.R:case ba1.cc.r:this.state=ba1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_MINUS_ERR:switch(X){case ba1.cc.SPACE:case ba1.cc.TAB:this.state=ba1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_MINUS_ERR_SPC:switch(X){case ba1.cc.SPACE:case ba1.cc.TAB:continue;default:this.state=ba1.State.MINUS_ERR_ARG,this.as=Z}break;case ba1.State.MINUS_ERR_ARG:switch(X){case ba1.cc.CR:this.drop=1;break;case ba1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:ba1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=ba1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case ba1.State.OP_P:switch(X){case ba1.cc.I:case ba1.cc.i:this.state=ba1.State.OP_PI;break;case ba1.cc.O:case ba1.cc.o:this.state=ba1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_PO:switch(X){case ba1.cc.N:case ba1.cc.n:this.state=ba1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_PON:switch(X){case ba1.cc.G:case ba1.cc.g:this.state=ba1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_PONG:switch(X){case ba1.cc.NL:this.dispatcher.push({kind:ba1.Kind.PONG}),this.drop=0,this.state=ba1.State.OP_START;break}break;case ba1.State.OP_PI:switch(X){case ba1.cc.N:case ba1.cc.n:this.state=ba1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_PIN:switch(X){case ba1.cc.G:case ba1.cc.g:this.state=ba1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_PING:switch(X){case ba1.cc.NL:this.dispatcher.push({kind:ba1.Kind.PING}),this.drop=0,this.state=ba1.State.OP_START;break}break;case ba1.State.OP_I:switch(X){case ba1.cc.N:case ba1.cc.n:this.state=ba1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_IN:switch(X){case ba1.cc.F:case ba1.cc.f:this.state=ba1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_INF:switch(X){case ba1.cc.O:case ba1.cc.o:this.state=ba1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_INFO:switch(X){case ba1.cc.SPACE:case ba1.cc.TAB:this.state=ba1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case ba1.State.OP_INFO_SPC:switch(X){case ba1.cc.SPACE:case ba1.cc.TAB:continue;default:this.state=ba1.State.INFO_ARG,this.as=Z}break;case ba1.State.INFO_ARG:switch(X){case ba1.cc.CR:this.drop=1;break;case ba1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:ba1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=ba1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===ba1.State.MSG_ARG||this.state===ba1.State.MINUS_ERR_ARG||this.state===ba1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new xn0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===ba1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new xn0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new xn0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case ba1.cc.SPACE:case ba1.cc.TAB:case ba1.cc.CR:case ba1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],ab);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],ab);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}: ${fn0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case ba1.cc.SPACE:case ba1.cc.TAB:case ba1.cc.CR:case ba1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],ab),this.ma.size=this.protoParseInt(Z[3],ab);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],ab),this.ma.size=this.protoParseInt(Z[4],ab);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<xa1||$[Q]>Ha6)return-1;X=X*10+($[Q]-xa1)}return Z!==void 0&&X>Z?-1:X}}ba1.Parser=fa1;ba1.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};ba1.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 Z70=v((ga1)=>{Object.defineProperty(ga1,"__esModule",{value:!0});ga1.MsgHdrsImpl=void 0;ga1.canonicalMIMEHeaderKey=gn0;ga1.headers=Ua6;var ya1=$G(),uJ=rB(),$70=ZG();function gn0($){let F=!0,N=Array($.length);for(let U=0;U<$.length;U++){let B=$.charCodeAt(U);if(B===58||B<33||B>126)throw $70.InvalidArgumentError.format("header",`'${$[U]}' 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;N[U]=B,F=B==45}return String.fromCharCode(...N)}function Ua6($=0,Z=""){if($===0&&Z!=="")throw $70.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw $70.InvalidArgumentError.format("description","is required");return new sb($,Z)}var yn0="NATS/1.0";class sb{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new sb,Q=ya1.TD.decode($).split(`\r
1393
1393
  `),Y=Q[0];if(Y!==yn0){let G=Y.replace(yn0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=yn0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
1394
1394
  ${Z}: ${X[Q]}`;return`${$}\r
@@ -2910,7 +2910,7 @@ Respond with the structured verdict and a short reason.`,Dg$;var Eg$=w(()=>{v4()
2910
2910
  ${G.join(`
2911
2911
  `)}`:Y}function iJ6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
2912
2912
  `)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var Xh$=200,xJ6=12,gJ6,uJ6=300,y91=3;var g91=w(()=>{S_();ZA0();gJ6={aheadBy:0,behindBy:0,files:[]}});function nJ6($){if(!$||$.includes(".."))return!1;return pJ6.test($)}function Yh$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!nJ6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Gh$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var pJ6;var Jh$=w(()=>{pJ6=/^[\w./@-]+$/});function h91($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function wa($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function Wh$($,Z,X,Q){if(!Q.connectionId)throw new __("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new __(Q9);await rO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(H)=>{let N=H instanceof Error?H.message:Q9;throw new __(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await aO(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((H)=>{let{code:N,message:U}=q4$(H instanceof Error?H.message:String(H));throw N?new __(U):H}),K=th($),F=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!F.ok){let H=await wB(F,tJ6).catch(()=>F.statusText);throw Error(`Failed to refresh sandbox git credentials (${F.status}): ${H}`)}}var tJ6=10485760,__;var u91=w(()=>{mG();dP0();ip();Gm0();mx();__=class __ extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function rJ6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!oJ6.test(Z))throw Error(`Invalid branch name: ${$}`)}function v_($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(sJ6)])}function eJ6($,Z,X){let Q=w5($)[Z]?.[X];return!!Q&&Object.keys(IY(Q)).length>0}function f_($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function $u($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=wa(Z,X);if(!Y)throw new g4(404,"AUTH","repo","Project has no GitHub repository");let G=t(Q);return iP0(Q,G.id,Y)}function c91($,Z){if(Z instanceof mP0)return $.json({error:Z.message},429,{...C5,...Z.retryAfterMs===null?{}:{"Retry-After":String(Math.ceil(Z.retryAfterMs/1000))}});if(Z instanceof g4){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,C5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,C5)}async function Hh$($,Z,X){let Q;try{Q=await fetch(Z,X)}catch{return $.json({error:"Preview unreachable"},502)}let Y;try{Y=await Q.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(Y,{status:Q.status,headers:{"content-type":Q.headers.get("content-type")??"application/json"}})}async function Nh$($){try{let Z=await $u($),X=await XA0(Z,$.get("vmClaim").branch);return $.json(X,200,C5)}catch(Z){return c91($,Z)}}function Da($,Z){let Q=(GA0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return GA0.set($,Y),Y.finally(()=>{if(GA0.get($)===Y)GA0.delete($)}),Q}async function mZ($,Z,X){if($.get("vmClaim").fastPreview)return $.json({error:"sandbox not found: Fast Preview projects are sandbox-less"},404,C5);let Q=f_($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,F=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,F.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),F.set("content-type","application/json");let H=X?.signal,N={method:W,headers:F,body:K,...H?{signal:H}:{}},U=async()=>{let O=await Q.proxyDaemonRequest(Y,Z,N);if(X?.map404to410&&O.status===404){try{await O.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))O=await Q.proxyDaemonRequest(Y,Z,N);if(O.status===404){try{await O.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",...C5}})}}let B=await O.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?Z36(B):B,L=O.headers.get("content-type")??"application/json";return new Response(D,{status:O.status,headers:{"content-type":L,...C5}})};try{if(H){let O=U();return O.catch(()=>{}),await Promise.race([O,new Promise((D,L)=>{if(H.aborted)return L(H.reason);H.addEventListener("abort",()=>L(H.reason),{once:!0})})])}return await U()}catch(O){let B=O instanceof Error?O.message:String(O);return $.json({error:`Daemon unreachable: ${B}`},502)}}function Z36($){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 JA0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function X36($){return Uh$.includes($)}var oJ6,Kh$=524288,aJ6=65536,sJ6=1e4,Fh$=2000,$36,GA0,C5,Uh$,Oh$=()=>{let $=new H1;$.use("/:virtualMcpId/:branch/*",$36),$.post("/:virtualMcpId/:branch/write",(X)=>mZ(X,"/_sandbox/write",{forwardJsonBody:!0,signal:v_(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>mZ(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:v_(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>mZ(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:v_(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>mZ(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:v_(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>mZ(X,"/_sandbox/read",{forwardJsonBody:!0,signal:v_(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>mZ(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:v_(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>mZ(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:v_(X)})),$.post("/:virtualMcpId/:branch/exec/:script",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return mZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return mZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>mZ(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>mZ(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!X36(Q))return X.json({error:`step must be one of: ${Uh$.join(", ")}`},400);if(Q==="start"){let Y=X.get("vmClaim");if(Y.runner){let G=t(X.var.studioContext),J=Ky(Y.virtualMcpMetadata);try{await dO0({ctx:X.var.studioContext,runner:Y.runner,handle:Y.claimName,orgId:G.id,userId:Y.callerUserId,entries:J})}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:`Failed to push env to daemon: ${K}`},502)}}}return mZ(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return IN(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return Hg$(X,{ctx:X.var.studioContext,claimName:Q.claimName,runner:Q.runner,virtualMcpId:Q.virtualMcpId,branch:Q.branch,userId:Q.userId,projectRef:Q.projectRef,virtualMcpMetadata:Q.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return Nh$(X);return Z(X)});let Z=(X)=>mZ(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Fh$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return Nh$(X);return mZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Fh$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)try{let Y=await X.req.json().catch(()=>({})),G=await $u(X),J=await QA0(G,Q.branch,Y.base);return X.json(J,200,C5)}catch(Y){return c91(X,Y)}return mZ(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").fastPreview)return X.json({ok:!0},200,C5);let Q=f_(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return Da(Y,async()=>{try{await E91(W,Q,Y);let K=wa(G,J);if(K)await Wh$(W,Q,Y,K)}catch(K){if(K instanceof __)return X.json({error:K.message},403,C5);let F=K instanceof Error?K.message:String(K);return X.json({error:F},502,C5)}return mZ(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return Da(Q.claimName,async()=>{let Y=await X.req.json().catch(()=>({})),G=Array.isArray(Y.filepaths)?Y.filepaths.filter((J)=>typeof J==="string"):[];if(G.length===0)return X.json({error:"filepaths is required"},400,C5);try{let J=await $u(X);return await Qh$(J,Q.branch,G),X.json({ok:!0},200,C5)}catch(J){let W=J instanceof g4&&J.status===409?409:502,K=J instanceof Error?J.message:String(J);return X.json({error:K},W,C5)}});return Da(Q.claimName,()=>mZ(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return Da(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await $u(X),F=W.base??await K.getDefaultBranch();return await YA0(K,Q.branch,F),X.json({ok:!0},200,C5)}catch(W){return c91(X,W)}});let Y=f_(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return Da(G,async()=>{try{await E91(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,C5)}return mZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",k9({maxSize:Kh$,onError:(X)=>X.json({error:"Payload too large"},413,C5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let F=f_(X);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let F=await X.req.json().catch(()=>({})),H=F.status,N=F.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[O,B]=P91(H)&&U?[H,N]:Y?await Promise.all([JA0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),JA0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await $u(X);return Promise.all([XA0(L,Q.branch),QA0(L,Q.branch)])})(),D=await wg$(K,O,B);return X.json(D,200,C5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,C5);return X.json({error:H},502,C5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",k9({maxSize:Kh$,onError:(X)=>X.json({error:"Payload too large"},413,C5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let F=f_(X);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let F=await X.req.json().catch(()=>({})),H=F.status,N=F.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[O,B]=P91(H)&&U?[H,N]:Y?await Promise.all([JA0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),JA0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await $u(X);return Promise.all([XA0(L,Q.branch),QA0(L,Q.branch)])})(),D=await Lg$(K,O,B,typeof F.language==="string"?F.language:void 0);return X.json(D,200,C5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,C5);return X.json({error:H},502,C5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=f_(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,""),K=h91(`${W}${G}`);return Hh$(X,K?.url??`${W}${G}`,{...K?{headers:{host:K.hostHeader}}:{}})}),$.post("/:virtualMcpId/:branch/preview-invoke",k9({maxSize:aJ6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=f_(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G;try{G=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!G)return X.json({error:"Preview not available"},502);let J;try{J=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return X.json({error:"Invalid JSON body"},400);let W=Yh$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Gh$(G,W.resolveType),F=h91(K);return Hh$(X,F?.url??K,{method:"POST",headers:{"content-type":"application/json",...F?{host:F.hostHeader}:{}},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var Bh$=w(()=>{D8();DN();nh();L91();IH();Kg$();_3();pX();O8();dB0();NB();Fg$();Ng$();Mp0();dp();R91();Eg$();V91();S_();g91();Jh$();u91();oJ6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;$36=lP0(async($,Z)=>{let X=$.var.studioContext;try{r(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=G1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=t(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{rJ6(J)}catch(O){let B=O instanceof Error?O.message:String(O);return $.json({error:B},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=Jp({orgId:Y.id,virtualMcpId:G,branch:J}),F=await bH(X,J,Q),H=Wg$({userId:F,projectRef:K}),N=W.metadata??null;if(lW$(N).fastPreviewCapability&&!eJ6(N,F,J))return $.set("vmClaim",{claimName:H,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[],fastPreview:!0}),Z();let U;try{U=(await sX(X,{userId:F,branch:J,virtualMcpMetadata:N})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:H,callerUserId:Q,runner:U,virtualMcpId:G,branch:J,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[]}),Z()});GA0=new Map;C5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Uh$=["clone","install","start"]});function wh$($,Z,X){let Q=l91.get($);if(!Q)Q={pending:null,running:!1},l91.set($,Q);if(!Q.pending)Q.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=Q.pending;Y.deps=Z;for(let[J,W]of Object.entries(X.set??{}))Y.set.set(J,W),Y.del.delete(J);for(let J of X.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,W)=>{Y.resolvers.push(J),Y.rejecters.push(W)});if(!Q.running)Y36($,Q);return G}async function Y36($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await G36(X);for(let Y of X.resolvers)Y(Q)}catch(Q){for(let Y of X.rejecters)Y(Q)}}}finally{if(Z.running=!1,!Z.pending)l91.delete($)}}async function G36($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await eh(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getTreeRecursive(J),K=b91(W,Q),F=[],H=new Map(K.map((B)=>[B.path,{stem:B.stem,sha:B.sha}]));for(let[B,D]of $.set){let L=x91(K,B),E=`${JSON.stringify(D,null,2)}
2913
- `,j=await Z.createBlob(E);await eg$(Z.owner,Z.repo,j,E);let z=L[0]??`${$A0(Q)}/${S91(B)}.json`;F.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);H.set(z,{stem:A,sha:j,content:E});for(let P of L.slice(1))F.push({path:P,mode:"100644",type:"blob",sha:null}),H.delete(P)}for(let B of $.del)for(let D of x91(K,B))F.push({path:D,mode:"100644",type:"blob",sha:null}),H.delete(D);if(F.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...H.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:L}=Na(B);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(D);F.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,F),O=await Z.createCommit({message:J36($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof g4&&B.status===422)||Y>=Q36-1)throw B;await M$(nZ(2000,200,Y,2,0.5))}}}function J36($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return rd0(Q,$.deps.coAuthor)}var Q36=3,l91;var Dh$=w(()=>{bO0();nP0();u4();S_();ZA0();l91=new Map});import{createHmac as Lh$,randomBytes as W36,timingSafeEqual as K36}from"crypto";function Eh$(){if(WA0)return WA0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return WA0=$?Buffer.from($):W36(32),WA0}function d91($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+F36)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Lh$("sha256",Eh$()).update(Q).digest("base64url");return`${Q}.${Y}`}function jh$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Lh$("sha256",Eh$()).update(Q).digest("base64url"));if(Y.length!==G.length||!K36(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var F36=21600000,WA0=null;var zh$=w(()=>{R$()});import{z as Zu}from"zod";function N36($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&H36.test($)}function Ah$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function KA0($){let Z=$.get("decofileScope");return iP0($.var.studioContext,Z.organizationId,Z.githubRepo)}function FA0($,Z){if(Z instanceof g4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function Th$(){let $=new H1;return $.use("/:virtualMcpId/:branch",Ph$),$.use("/:virtualMcpId/:branch/*",Ph$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await KA0(Z),Y=await $h$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=d91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(Ah$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return FA0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=U36.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{pP0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await KA0(Z),W=await wh$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:th(Q)},G),K=d91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:Ah$(Z)})}catch(J){return FA0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await KA0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof g4&&W.status===409))throw W;await YA0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof g4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof g4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return FA0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await KA0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof g4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return FA0(Z,Q)}}),$}var H36,U36,Ph$;var Rh$=w(()=>{nP0();D8();L91();dP0();u91();V91();Dh$();zh$();g91();S_();ZA0();H36=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;U36=Zu.object({set:Zu.record(Zu.string(),Zu.unknown()).optional(),delete:Zu.array(Zu.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),Ph$=lP0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!N36(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!jh$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!lB0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let H=W.connections?.map((O)=>O.connection_id)??[],N=wa(K,H);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var Ih$=($)=>{let Z=new H1;if(Z.use("*",P_),Z.route("/",GP0()),Z.route("/",lf$()),Z.route("/",ty$()),Z.route("/",iy$()),Z.route("/",hP0()),Z.route("/tools",Zg$()),Z.route("/",sy$()),Z.route("/",Ry$({kvStorage:$.kvStorage})),Z.route("/",Ay$()),Z.route("/fs",gy$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Oh$()),Z.route("/decofile",Th$()),Z.route("/",ly$()),Z.route("/deco-sites",WP0()),Z.route("/sso",ez0()),Z.route("/",uP0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",ff$()),$.mountDevAssets)Z.route("/dev-assets",KP0({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("/",w_$()),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",uy$()),Z.route("/mcp",KD0()),Z.route("/mcp/self",gP0()),Z.route("/mcp",ND0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var qh$=w(()=>{D8();h61();bf$();d61();FP0();yr();y61();Ty$();Iy$();hy$();dn();V61();UD0();H91();cy$();dy$();py$();oy$();ey$();U91();Xg$();O91();FD0();Bh$();Rh$()});function O36($){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 B36=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Mh$=()=>{let $=new H1;return $.use("*",B36),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await dZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:O36(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var kh$=w(()=>{D8();R$();Xz0()});import{z as M1}from"zod";function GF($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function R36($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function I36($,Z,X){try{return JSON.parse($)}catch{throw new Ch$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function q36($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:I36(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function M36($){let Z=$.map((X)=>{let Q=X.function.parameters?hY(X.function.parameters):hY({type:"object",properties:{}});return[X.function.name,b$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function k36($){if(!$)return;return{openai:{response_format:$}}}function V36(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Vh$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function Sh$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var w36=256,D36,L36,E36,j36,z36,P36,A36,T36,Ch$,_h$,vh$;var fh$=w(()=>{v4();D8();nh();YN();D36=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),L36=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),E36=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(L36).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),j36=M1.object({type:M1.literal("text")}),z36=M1.object({type:M1.literal("json_object")}),P36=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),A36=M1.union([j36,z36,P36]),T36=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(E36),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(D36).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:A36.optional(),user:M1.string().optional()});Ch$=class Ch$ extends Error{constructor($){super($);this.name="MessageConversionError"}};_h$=new H1;_h$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(GF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(GF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(GF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=T36.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(GF(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=R36(G.model);if(!J)return $.json(GF("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}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>fD(j.providerId));if(!E)return $.json(GF("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=E.id}let F;try{F=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(GF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),N=q36(G.messages),U=G.tools?M36(G.tools):void 0,O=k36(G.response_format),B=V36(),D=Math.floor(Date.now()/1000);if(G.stream)return IN($,async(L)=>{let E=Vh$(H,N,U,G,O,$.req.raw.signal);try{let j=tO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=w36)await I()}else if(k.type==="tool-call"){await I();let q=A++;await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:Sh$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=Vh$(H,N,U,G,O,$.req.raw.signal),E=await pO(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:B,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:Sh$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(GF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(GF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(GF(Y.message,"server_error"),500)}});vh$=_h$});function S36($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function bh$(){let $=new H1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=G1(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!uG(G))return Z.json({error:"Invalid site slug"},400);let J=await X.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","=",Q).execute(),W=[];for(let F of J){if(!F.slug||W7(F))continue;let H=await X.storage.virtualMcps.list(F.id);for(let N of H){if(Ba1(N)!==G)continue;if(!S36(N.metadata))continue;W.push({orgSlug:F.slug,orgName:F.name??F.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var xh$=w(()=>{D8();fO()});var gh$;var yh$=w(()=>{gh$={name:"decocms",version:"4.252.7",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function v36(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??_36}}var hh$,_36="https://ph.studio.decocms.com",uh$;var ch$=w(()=>{D8();Mh0();KC();f9();R$();R61();yh$();hh$=new H1;hh$.get("/",($)=>{let Z={version:gh$.version,theme:gd1(),...RL().logo&&{logo:RL().logo},...qK()&&{internalUrl:wS1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:ev$(),posthog:v36(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!qK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});uh$=hh$});function Xu($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function m91($){return(Xu($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function dh$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Xu($))}&sz=${Z}`}function lh$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function mh$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?lh$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):lh$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var b_,f36,b36,x36,y36,ih$;var ph$=w(()=>{b_=l0.enum(["good","bad","neutral"]),f36=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:b_.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.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 $})),b36=l0.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},l0.array(f36)),x36={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},y36=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:b_.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:b_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:b_.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:b_.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(b36).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:b_.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:b_.optional()})).min(1)})]),ih$=l0.object({...x36,template:y36})});function HA0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=ih$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var i91=w(()=>{ph$()});import{join as nh$}from"path";async function h36($){try{let Z=await fetch(`${aW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(g36)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=HA0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||m91($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function WG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function u36($,Z){let X=Xu($),Q=Z?.brand?.trim()||m91(X),Y=dh$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=mh$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${Q} commerce report by decocms`;return[`<title>${WG(W)}</title>`,`<meta name="description" content="${WG(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="${WG(W)}" />`,`<meta property="og:description" content="${WG(K)}" />`,`<meta property="og:url" content="${WG(J)}" />`,`<meta property="og:image" content="${WG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${WG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${WG(W)}" />`,`<meta name="twitter:description" content="${WG(K)}" />`,`<meta name="twitter:image" content="${WG(F)}" />`,`<meta name="twitter:image:alt" content="${WG(H)}" />`,`<link rel="canonical" href="${WG(J)}" />`,`<link rel="icon" href="${WG(Y)}" sizes="any" />`].join(`
2913
+ `,j=await Z.createBlob(E);await eg$(Z.owner,Z.repo,j,E);let z=L[0]??`${$A0(Q)}/${S91(B)}.json`;F.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);H.set(z,{stem:A,sha:j,content:E});for(let P of L.slice(1))F.push({path:P,mode:"100644",type:"blob",sha:null}),H.delete(P)}for(let B of $.del)for(let D of x91(K,B))F.push({path:D,mode:"100644",type:"blob",sha:null}),H.delete(D);if(F.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...H.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:L}=Na(B);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(D);F.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,F),O=await Z.createCommit({message:J36($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof g4&&B.status===422)||Y>=Q36-1)throw B;await M$(nZ(2000,200,Y,2,0.5))}}}function J36($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return rd0(Q,$.deps.coAuthor)}var Q36=3,l91;var Dh$=w(()=>{bO0();nP0();u4();S_();ZA0();l91=new Map});import{createHmac as Lh$,randomBytes as W36,timingSafeEqual as K36}from"crypto";function Eh$(){if(WA0)return WA0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return WA0=$?Buffer.from($):W36(32),WA0}function d91($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+F36)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Lh$("sha256",Eh$()).update(Q).digest("base64url");return`${Q}.${Y}`}function jh$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Lh$("sha256",Eh$()).update(Q).digest("base64url"));if(Y.length!==G.length||!K36(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var F36=21600000,WA0=null;var zh$=w(()=>{R$()});import{z as Zu}from"zod";function N36($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&H36.test($)}function Ah$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function KA0($){let Z=$.get("decofileScope");return iP0($.var.studioContext,Z.organizationId,Z.githubRepo)}function FA0($,Z){if(Z instanceof g4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function Th$(){let $=new H1;return $.use("/:virtualMcpId/:branch",Ph$),$.use("/:virtualMcpId/:branch/*",Ph$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await KA0(Z),Y=await $h$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=d91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(Ah$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return FA0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=U36.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{pP0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await KA0(Z),W=await wh$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:th(Q)},G),K=d91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:Ah$(Z)})}catch(J){return FA0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await KA0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof g4&&W.status===409))throw W;await YA0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof g4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof g4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return FA0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await KA0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof g4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return FA0(Z,Q)}}),$}var H36,U36,Ph$;var Rh$=w(()=>{nP0();D8();L91();dP0();u91();V91();Dh$();zh$();g91();S_();ZA0();H36=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;U36=Zu.object({set:Zu.record(Zu.string(),Zu.unknown()).optional(),delete:Zu.array(Zu.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),Ph$=lP0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!N36(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!jh$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!lB0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let H=W.connections?.map((O)=>O.connection_id)??[],N=wa(K,H);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var Ih$=($)=>{let Z=new H1;if(Z.use("*",P_),Z.route("/",GP0()),Z.route("/",lf$()),Z.route("/",ty$()),Z.route("/",iy$()),Z.route("/",hP0()),Z.route("/tools",Zg$()),Z.route("/",sy$()),Z.route("/",Ry$({kvStorage:$.kvStorage})),Z.route("/",Ay$()),Z.route("/fs",gy$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Oh$()),Z.route("/decofile",Th$()),Z.route("/",ly$()),Z.route("/deco-sites",WP0()),Z.route("/sso",ez0()),Z.route("/",uP0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",ff$()),$.mountDevAssets)Z.route("/dev-assets",KP0({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("/",w_$()),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",uy$()),Z.route("/mcp",KD0()),Z.route("/mcp/self",gP0()),Z.route("/mcp",ND0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var qh$=w(()=>{D8();h61();bf$();d61();FP0();yr();y61();Ty$();Iy$();hy$();dn();V61();UD0();H91();cy$();dy$();py$();oy$();ey$();U91();Xg$();O91();FD0();Bh$();Rh$()});function O36($){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 B36=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Mh$=()=>{let $=new H1;return $.use("*",B36),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await dZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:O36(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var kh$=w(()=>{D8();R$();Xz0()});import{z as M1}from"zod";function GF($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function R36($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function I36($,Z,X){try{return JSON.parse($)}catch{throw new Ch$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function q36($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:I36(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function M36($){let Z=$.map((X)=>{let Q=X.function.parameters?hY(X.function.parameters):hY({type:"object",properties:{}});return[X.function.name,b$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function k36($){if(!$)return;return{openai:{response_format:$}}}function V36(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Vh$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function Sh$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var w36=256,D36,L36,E36,j36,z36,P36,A36,T36,Ch$,_h$,vh$;var fh$=w(()=>{v4();D8();nh();YN();D36=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),L36=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),E36=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(L36).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),j36=M1.object({type:M1.literal("text")}),z36=M1.object({type:M1.literal("json_object")}),P36=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),A36=M1.union([j36,z36,P36]),T36=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(E36),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(D36).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:A36.optional(),user:M1.string().optional()});Ch$=class Ch$ extends Error{constructor($){super($);this.name="MessageConversionError"}};_h$=new H1;_h$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(GF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(GF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(GF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=T36.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(GF(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=R36(G.model);if(!J)return $.json(GF("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}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>fD(j.providerId));if(!E)return $.json(GF("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=E.id}let F;try{F=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(GF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),N=q36(G.messages),U=G.tools?M36(G.tools):void 0,O=k36(G.response_format),B=V36(),D=Math.floor(Date.now()/1000);if(G.stream)return IN($,async(L)=>{let E=Vh$(H,N,U,G,O,$.req.raw.signal);try{let j=tO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=w36)await I()}else if(k.type==="tool-call"){await I();let q=A++;await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:Sh$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=Vh$(H,N,U,G,O,$.req.raw.signal),E=await pO(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:B,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:Sh$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(GF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(GF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(GF(Y.message,"server_error"),500)}});vh$=_h$});function S36($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function bh$(){let $=new H1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=G1(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!uG(G))return Z.json({error:"Invalid site slug"},400);let J=await X.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","=",Q).execute(),W=[];for(let F of J){if(!F.slug||W7(F))continue;let H=await X.storage.virtualMcps.list(F.id);for(let N of H){if(Ba1(N)!==G)continue;if(!S36(N.metadata))continue;W.push({orgSlug:F.slug,orgName:F.name??F.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var xh$=w(()=>{D8();fO()});var gh$;var yh$=w(()=>{gh$={name:"decocms",version:"4.252.8",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function v36(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??_36}}var hh$,_36="https://ph.studio.decocms.com",uh$;var ch$=w(()=>{D8();Mh0();KC();f9();R$();R61();yh$();hh$=new H1;hh$.get("/",($)=>{let Z={version:gh$.version,theme:gd1(),...RL().logo&&{logo:RL().logo},...qK()&&{internalUrl:wS1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:ev$(),posthog:v36(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!qK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});uh$=hh$});function Xu($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function m91($){return(Xu($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function dh$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Xu($))}&sz=${Z}`}function lh$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function mh$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?lh$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):lh$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var b_,f36,b36,x36,y36,ih$;var ph$=w(()=>{b_=l0.enum(["good","bad","neutral"]),f36=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:b_.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.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 $})),b36=l0.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},l0.array(f36)),x36={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},y36=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:b_.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:b_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:b_.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:b_.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(b36).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:b_.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:b_.optional()})).min(1)})]),ih$=l0.object({...x36,template:y36})});function HA0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=ih$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var i91=w(()=>{ph$()});import{join as nh$}from"path";async function h36($){try{let Z=await fetch(`${aW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(g36)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=HA0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||m91($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function WG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function u36($,Z){let X=Xu($),Q=Z?.brand?.trim()||m91(X),Y=dh$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=mh$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${Q} commerce report by decocms`;return[`<title>${WG(W)}</title>`,`<meta name="description" content="${WG(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="${WG(W)}" />`,`<meta property="og:description" content="${WG(K)}" />`,`<meta property="og:url" content="${WG(J)}" />`,`<meta property="og:image" content="${WG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${WG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${WG(W)}" />`,`<meta name="twitter:description" content="${WG(K)}" />`,`<meta name="twitter:image" content="${WG(F)}" />`,`<meta name="twitter:image:alt" content="${WG(H)}" />`,`<link rel="canonical" href="${WG(J)}" />`,`<link rel="icon" href="${WG(Y)}" sizes="any" />`].join(`
2914
2914
  `)}function c36($,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}
2915
2915
  </head>`)}function th$($){let Z=new H1;return Z.get("/:domain/og.png",async(X)=>{let Q=Xu(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(nh$($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${aW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(l36)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?nh$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let W=await h36(Xu(Q)),K=u36(Q,W);return X.html(c36(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var g36=2500,l36=1e4;var oh$=w(()=>{D8();i91();gL();R$()});function La($,Z){return fetch(`${aW({})}${$}`,Z)}async function d36($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await La(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:W,drops:K}=HA0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var m36,MN,rh$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},ah$;var sh$=w(()=>{D8();bY();gL();i91();m36=new Set(["complete","errored","terminated","unknown"]),MN=new H1;MN.use("*",async($,Z)=>{let X=await F8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});MN.use("/link-token/*",rh$);MN.use("/suggest",rh$);MN.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),Q=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await d36(Z,Q,Y);if($.header("Cache-Control","private, no-store"),X||!G.deck)return $.json(G);return $.json({...G,deck:{...G.deck,slides:G.deck.slides.slice(0,1)},truncated:G.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});MN.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Q=typeof X.domain==="string"?X.domain.trim():"";if(!Q)return $.json({error:"domain is required"},400);let Y=Z?.email,G=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await La("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${yL({})}`},body:JSON.stringify({url:Q,...Y?{email:Y}:{},distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.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)}});MN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await La(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${yL({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:m36.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});MN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await La(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});MN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await La(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});ah$=MN});import{createHmac as i36,timingSafeEqual as p36}from"crypto";function $u$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let F of Z.split(",")){let H=F.indexOf("=");if(H<=0)continue;let N=F.slice(0,H).trim(),U=F.slice(H+1).trim();if(N==="t")Y=U;else if(N==="v1")G.push(U)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>n36)return!1;let W=i36("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((F)=>{let H=Buffer.from(F,"hex");return K.length===H.length&&p36(K,H)})}function Zu$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=IJ(Z),Q=IJ(IJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:JF(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function Xu$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function JF($){return typeof $==="string"?$:void 0}function IJ($){return typeof $==="object"&&$!==null?$:void 0}function NA0($){return typeof $==="number"?new Date($*1000):null}function t91($){return JF($)??JF(IJ($)?.id)}function t36($){return t91($.subscription)??JF(IJ(IJ($.parent)?.subscription_details)?.subscription)}function o36($){let Z=NA0($.current_period_end);if(Z)return Z;let X=IJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=IJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function p91($,Z){let X=NA0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function n91($,Z){let X=NA0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function r36($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=JF(IJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(JF(IJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(JF(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=JF(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(IJ(X.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:IJ(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(JF(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};let G=t91(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(p91(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:t91(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:n91(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=JF(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&p91(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Xu$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:o36(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:n91(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=t36(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(p91(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:NA0(X.period_end),lastStripeEventAt:n91(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function a36($,Z){if(!Z.handled||$.livemode===!1)return null;let X=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:Xu$(X.status),...typeof X.cancel_at_period_end==="boolean"?{cancel_at_period_end:X.cancel_at_period_end}:{}}};case"invoice.paid":if(X.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function eh$($,Z){let X=a36($,Z);if(!X)return;SY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:pi1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Qu$($){let Z=new nW(u8().db),X=await r36(Z,$);if(!(X.handled&&X.topUp))eh$($,X);if(X.handled&&X.topUp)await yw$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),eh$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await Hs1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof xY&&(Q.status===400||Q.status===404)))throw Q}return X}var n36=300;var Yu$=w(()=>{bG();k4();j60();nL();Je0()});var s36=1048576,o91;var Gu$=w(()=>{D8();DN();R$();Yu$();o91=new H1;o91.post("/webhook",k9({maxSize:s36,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=b0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!$u$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Zu$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await Qu$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as e36}from"crypto";function ZW6($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==Q.length)return!1;return e36(Buffer.from(Y),Buffer.from(Q))}var $W6=5242880,r91;var Ju$=w(()=>{D8();DN();up();r91=new H1;r91.post("/webhook",k9({maxSize:$W6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=process.env.GITHUB_WEBHOOK_SECRET;if(!Z)return $.json({error:"github webhook not configured"},503);let X=await $.req.text();if(!ZW6(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let Y=Q.ref,G=Q.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await Pp0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function Wu$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Ku$,XW6,QW6,Fu$;var Hu$=w(()=>{D8();N3();Ry();Px();Ku$=new H1,XW6=["range","if-none-match","if-modified-since"],QW6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Ku$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(kh($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new $$(401,{message:"Authentication required"})}if(!X)throw new $$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new $$(400,{message:"Missing file key"});let Y=await Dn(Q,Z);if(!Y)throw new $$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&D3()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new $$(500,{message:"Invalid data URL from storage"});let[,F,H]=K,N=Buffer.from(H,"base64"),U=new Headers({"Content-Type":F,"Cache-Control":"private, max-age=86400"});return Wu$(U,F),new Response(N,{status:200,headers:U})}let G=new Headers;for(let K of XW6){let F=$.req.header(K);if(F)G.set(K,F)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new $$(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new $$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of QW6){let F=J.headers.get(K);if(F)W.set(K,F)}return W.set("Cache-Control","private, max-age=86400"),Wu$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});Fu$=Ku$});var Ea=_((x_)=>{var YW6=x_&&x_.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),GW6=x_&&x_.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))YW6(Z,$,X)};Object.defineProperty(x_,"__esModule",{value:!0});GW6(OY(),x_)});var Ou$=_((Nu$)=>{Object.defineProperty(Nu$,"__esModule",{value:!0});Nu$.version=void 0;Nu$.version="3.4.0"});var Du$=_((WF)=>{var JW6=WF&&WF.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(WF,"__esModule",{value:!0});WF.NodeTransport=WF.VERSION=void 0;WF.nodeResolveHost=UW6;var r6=Ea(),WW6=z0("net"),a91=z0("tls"),KW6=z0("path"),Bu$=z0("fs"),FW6=JW6(z0("dns")),HW6=Ou$();WF.VERSION=HW6.version;var NW6="nats.js";class wu${socket;version;lang;yields=[];signal=(0,r6.deferred)();closedNotification=(0,r6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=NW6,this.version=WF.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,r6.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,W=J===!0&&Z.tls!==null;if(!Q&&(G||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw r6.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new r6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new r6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,r6.deferred)(),X,Q=(0,WW6.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,r6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=r6.DataBuffer.concat(...this.yields),Y=(0,r6.extractProtocolMessage)(Q);if(Y!=="")try{let G=r6.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,r6.deferred)();try{if($=(0,KW6.resolve)($),!(0,Bu$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,Bu$.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(G){let W=await this.loadFile(G);if(W)$.key=W}else if(J)$.key=J;if(Q){let W=await this.loadFile(Q);if(W)$.ca=[W]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,r6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new r6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,r6.deferred)();try{let Y=(0,a91.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new r6.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,r6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new r6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,r6.deferred)();try{let Q=(0,a91.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new r6.errors.ConnectionError(Q.message,{cause:Q}))}return X}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,r6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,r6.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 a91.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,r6.render)($)}`);let Z=(0,r6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,r6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,r6.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}WF.NodeTransport=wu$;function UW6($){let Z=(0,r6.deferred)();return FW6.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let Y=[];for(let G of Q)Y.push(G.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var Pu$=_((zu$)=>{Object.defineProperty(zu$,"__esModule",{value:!0});zu$.connect=OW6;var Lu$=Du$(),Eu$=Ea(),ju$=Ea();function OW6($={}){if((0,ju$.hasWsProtocol)($))return Promise.reject(ju$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Eu$.setTransportFactory)({factory:()=>{return new Lu$.NodeTransport},dnsResolveFn:Lu$.nodeResolveHost}),Eu$.NatsConnectionImpl.connect($)}});var Au$=_((kN)=>{var wW6=kN&&kN.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),DW6=kN&&kN.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))wW6(Z,$,X)};Object.defineProperty(kN,"__esModule",{value:!0});kN.connect=void 0;var LW6=Pu$();Object.defineProperty(kN,"connect",{enumerable:!0,get:function(){return LW6.connect}});DW6(Ea(),kN)});function qu$($){let Z=$?.connectFn??PW6,X=null,Q=null,Y=!1,G=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function F(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function H(U){(async()=>{for await(let O of U.status())if(O.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(O.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,F()})().catch(()=>{})}async function N(U,O){let B=0;while(!G)try{X=await Z({servers:U,timeout:zW6,reconnect:!0,maxReconnectAttempts:-1,...O?{authenticator:O}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${B} attempt(s)`),Q=null,J=!1,H(X),F();return}catch{B++;let D=nZ(jW6,EW6,B-1,2,0.5);await M$(D)}}return{init(U,O){if(Y)return;Y=!0,G=!1;let B=O?.creds?Tu$.credsAuthenticator(new TextEncoder().encode(O.creds)):void 0;N(U,B).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=Iu$.jetstream(X);return Q},onReady(U){if(W.push(U),K())try{U()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function PW6($){return Ru$.connect($)}var Tu$,Ru$,Iu$,EW6=100,jW6=3000,zW6=3000;var Mu$=w(()=>{u4();Tu$=V(Mu(),1),Ru$=V(Au$(),1),Iu$=V(uw(),1)});function s91($,Z){return`${$}.${Z}`}class e91{cache;constructor($){this.cache=Bh({ttlMs:$?.ttlMs??AW6,maxSize:$?.maxSize??TW6})}async get($,Z){return this.cache.get(s91($,Z))??null}async set($,Z,X){this.cache.set(s91($,Z),X)}async invalidate($,Z){this.cache.delete(s91($,Z))}teardown(){this.cache.clear()}}var AW6=600000,TW6=5000;var ku$=()=>{};function UA0($,Z){return`${$}:${Z}`}function $Z1($){let Z=Bh({ttlMs:$?.ttlMs??RW6,maxSize:$?.maxSize??IW6}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function W(K,F){let H=X?.();if(!H)return;try{H.publish(Vu$,Y.encode(JSON.stringify({organizationId:K,keyId:F,originId:Q})))}catch(N){console.warn("[ProviderKeyCache] Publish failed (non-critical):",N)}}return{get(K,F){return Z.get(UA0(K,F))},set(K,F,H){Z.set(UA0(K,F),H)},invalidate(K,F){Z.delete(UA0(K,F)),W(K,F)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(Vu$),(async()=>{for await(let F of J)try{let H=JSON.parse(G.decode(F.data));if(H.originId===Q)continue;Z.delete(UA0(H.organizationId,H.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var Vu$="studio.ai-provider-keys.invalidate",RW6=30000,IW6=5000;var Su$=()=>{};class ZZ1{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder;this.subscriptions=Cu$.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;if(G.messageId&&this.hasSeen(G.messageId))continue;this.onCancel?.(G.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId,messageId:crypto.randomUUID()}));for(let Q of Cu$)Z.publish(Q,X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}publishControlFrame($,Z){}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.onCancel=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var Cu$;var _u$=w(()=>{Cu$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var vu$=($)=>{let Z;return()=>Z??=$()},XZ1,QZ1;var fu$=w(()=>{R6();XZ1=vu$(()=>w$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),QZ1=vu$(()=>w$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function _W6(){return{name:pH,subjects:[`${Mw0}.>`],storage:WW.StorageType.File,max_age:kW6,max_bytes:SW6,max_msgs_per_subject:CW6,discard:WW.DiscardPolicy.Old,retention:WW.RetentionPolicy.Limits,duplicate_window:VW6,num_replicas:1}}class yu${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 bu$($){let Z=xu$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function xW6($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,MW6().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,W)})},get errorCount(){return X}}}function yW6($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class YZ1{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=_W6(),X=await v5(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await WW.jetstreamManager($);try{await Q.streams.info(pH),await Q.streams.update(pH,Z)}catch(Y){if(Y instanceof Error&&Y.message.includes("stream not found"))await Q.streams.add(Z);else if(Y instanceof Error&&/can ?not change.*storage|storage type/i.test(Y.message))await Q.streams.delete(pH),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:yW6});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let G=xW6(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let F=wH$(Z);Y.publish(F.subject,F.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(F)=>{let H=performance.now(),N=Yo0(F,{runId:Z}),U=performance.now()-H;if(XZ1().record(U),QZ1().add(1,{"org.id":Q??"unknown"}),bW6?.record(U,N.reduce((O,B)=>O+B.data.length,0)),N.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let O of N)G.publish(Y,O.subject,O.data,O.headers?bu$(O.headers):void 0)};return(async()=>{let F=$.getReader(),H=0,N=0,U;try{while(!0){let{done:O,value:B}=await F.read();if(O)break;if(K(B),N++,++H>=64)H=0,await new Promise((D)=>setImmediate(D))}}catch(O){U=O,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,O?.message??O)}finally{if(F.releaseLock(),W(),fW6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:N,publishErrors:G.errorCount}))}if(U!==void 0)throw U})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=Yo0(Z,{runId:$,dedup:X});if(XZ1().record(performance.now()-Y),QZ1().add(1),G.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of G)await Q.publish(J.subject,J.data,{...J.headers?{headers:bu$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=BH$({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?WW.DeliverPolicy.New:WW.DeliverPolicy.All,G=X?.closeOnDone??!1,J=CB($),W;try{W=await(await Q.consumers.get(pH,{filter_subjects:J,deliver_policy:Y})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let H=_w0({messages:async function*(){try{for await(let D of W)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(kw0()).pipeThrough(Vw0()).getReader(),N=!1,U=()=>{if(N)return;N=!0;try{H.releaseLock()}catch{}},O=!1,B=()=>{if(O)return;O=!0,W.stop(),H.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",B,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:L,value:E}=await H.read();if(L){B(),D.close();return}let j=E;if(j.kind==="done"){if(G){B(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){B()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(pH,{filter:CB($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var WW,xu$,qW6=($)=>{let Z;return()=>Z??=$()},MW6,kW6=86400000000000,VW6=120000000000,SW6=4294967296,CW6=500000,vW6,fW6,bW6;var gu$=w(()=>{u4();Go0();vw0();Sw0();R6();fu$();WW=V(uw(),1),xu$=V(Mu(),1),MW6=qW6(()=>w$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));vW6=process.env.STREAM_ENCODE_TRACE==="1",fW6=process.env.DECOPILOT_STREAM_TRACE==="1";bW6=vW6?new yu$:null});function OA0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,SW(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,harnessId:Q.harness_id??void 0,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var hu$=w(()=>{O8()});class GZ1{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}}async function uu$($,Z,X){let Q=Z.organizationId;if(Z.status!=="in_review")return!1;if(!Sr(X))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Q))return!1;let Y=await $.storage.taskBoard.update(Z.id,Q,{status:"done"},Z.updatedBy);return await v6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:"done",reason:"pr_merged"}}),H8(Q,Y),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to done`),!0}var cu$=w(()=>{ZQ();Cr();l5()});function mW6($){return $ instanceof t7}function iW6($,Z){return Z-$>=lW6}class JZ1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,X,Q={}){this.taskBoard=$;this.contextFactory=Z;this.billing=X;this.options=Q}start(){if(this.timer)return;let $=this.options.intervalMs??gW6;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??uW6,X=this.options.itemIntervalMs??hW6,Q=new Date(Date.now()-X),Y=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Q),G=Y.at(-1);this.cursor=Y.length===Z&&G?{updatedAt:G.updatedAt,id:G.id}:null;for(let{id:J,organizationId:W}of Y)try{if(await this.reconcileItem(J,W,Q))$++}catch(K){console.error(`[task-board-review-sweeper] ${J} 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()-on0),co0);for(let X of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${X.threadId} on ${X.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-dW6));for(let{id:X,organizationId:Q,threadId:Y}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${X}`),await Mt0(this.taskBoard,Y,Q),await kt0(this.taskBoard,this.billing,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y);if(!J||J.status!=="in_progress"||J.assigneeId!==t8)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await nH(W,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${G})`)}catch(J){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),mW6(J)){await this.returnToTodo(Q,Y,J instanceof Error?J.message:String(J));continue}await this.taskBoard.scheduleRunRetry(Q,Y,G,new Date(Date.now()+cW6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async returnToTodo($,Z,X){try{let Q=await this.taskBoard.getById($,Z);if(!Q||Q.status!=="in_progress")return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,Q.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),H8(Z,Y)}catch(Q){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Q)}}async handOffReviewWithoutPr($,Z){let X=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!iW6(jH(X),Date.now()))return;await VK($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,X){if(!await this.taskBoard.claimSweep($,Z,X))return!1;let Q=await this.taskBoard.getById($,Z);if(!Q)return!1;if(Q.status!=="in_review")return!1;let Y=Q.assigneeId===t8,G=await this.taskBoard.listPrs($,Z),J=await this.contextFactory(Z,Q.assignedBy??Q.createdBy);if(!J)return!1;if(G.length===0){if(Y)await this.handOffReviewWithoutPr(J,Q);return!1}let W=await Promise.all(G.map(async(K)=>({...K,...await gy(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 uu$(J,Q,W.map((K)=>K.merged)))return!0;if(await MN$(J,Q))return!0;if(!Y)return!1;if(!yo0(W))return!1;return await hw0(J,Q,{previewMatchesHead:go0(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var gW6=60000,hW6=300000,uW6=50,cW6=60000,lW6=900000,dW6=120000;var lu$=w(()=>{j9();Vo0();dH();gn();cu$();l5();z3();lo0();CK();Cn()});import{readdir as pW6,rm as BA0}from"fs/promises";import{join as wA0}from"path";async function DA0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-nW6),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await y_($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await du$($,Y,Z);else if(!Y.startsWith(".")){let G=wA0($,Y),J=await y_(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await du$(G,K,Z)}if((await y_(G)).length===0)await BA0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function du$($,Z,X){let Q=0,Y=wA0($,Z),G=await y_(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=wA0(Y,W),F=await y_(K);for(let N of F){if(!/^\d{2}$/.test(N))continue;let U=new Date(`${Z}-${W}-${N}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let O=wA0(K,N);await BA0(O,{recursive:!0,force:!0}),Q++}}if((await y_(K)).length===0)await BA0(K,{recursive:!0,force:!0})}if((await y_(Y)).length===0)await BA0(Y,{recursive:!0,force:!0});return Q}async function y_($){try{return(await pW6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var nW6=30;var WZ1=()=>{};import{DBOS as KZ1,SchedulerMode as tW6}from"@dbos-inc/dbos-sdk";async function rW6(){let $=[VJ(),g_(),NF()],Z=0;for(let X of $)try{Z+=await DA0(X)}catch(Q){console.error("[monitoring-retention] cleanup failed:",Q)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function aW6($,Z){await KZ1.runStep(()=>rW6(),{name:"monitoringRetention"})}function iu$(){if(mu$)return;mu$=!0;let $=KZ1.registerWorkflow(aW6,{name:"monitoringRetentionWorkflow"});KZ1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:oW6,mode:tW6.ExactlyOncePerIntervalWhenActive})}var oW6="23 4 * * *",mu$=!1;var pu$=w(()=>{FY();WZ1()});function nu$($){return async(Z,X)=>{let Q=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await XJ.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await W61($.db,Z,Q.role);return Y.boundAuth=J61({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new zL(X,void 0,Y.boundAuth,Q.role,"self"),qB(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var tu$=w(()=>{PL();FC()});function sW6(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function $K6(){for(let $ of eW6)$()}function ou$($){let Z=[...FZ1.logs,$];FZ1={...FZ1,logs:Z.length>500?Z.slice(-500):Z},$K6()}function HZ1(){return ZK6}var FZ1,eW6,ZK6=!1;var NZ1=w(()=>{FZ1=sW6(),eW6=new Set});import{EventEmitter as XK6}from"events";var UZ1;var ru$=w(()=>{NZ1();UZ1=new XK6;UZ1.on("request",($)=>{ou$($)})});function au$(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let O=Qu(U.params.name),B=U.params.arguments||{},D=Object.keys(B).map((E)=>Qu(E)),L=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";G=`${G5.tool}${O}${G5.dim}(${L})${G5.reset}`}else if(U.method)G=`${G5.dim}${Qu(U.method)}${G5.reset}`}}catch{}}let W=Qu(Y);if(Y.startsWith("/mcp/conn_")){let H=Y.split("/")[2]??"";W=`/mcp/${G5.mcp}${Qu(H.slice(0,12))}\u2026${G5.reset}`}else if(Y==="/mcp")W=`${G5.mcp}/mcp${G5.reset}`;else if(Y==="/mcp/registry")W=`${G5.mcp}/mcp/registry${G5.reset}`;let K=YK6(Q),F=J?"\u25C0":"\u2190";if(!HZ1())console.log(`${G5.dim}${F}${G5.reset} ${K}${Q}${G5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let H=Date.now()-X,N=$.res.status,U=QK6(N),O=H<1000?`${H}ms`:`${(H/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!HZ1())console.log(`${G5.dim}${B}${G5.reset} ${K}${Q}${G5.reset} ${W}${G?` ${G}`:""} ${U}${N}${G5.reset} ${G5.duration}${O}${G5.reset}`);UZ1.emit("request",{method:Q,path:Qu(Y),status:N,duration:H,timestamp:new Date})}}}var G5,QK6=($)=>{if($>=500)return G5.serverError;if($>=400)return G5.clientError;if($>=300)return G5.redirect;return G5.ok},YK6=($)=>{return G5[$]||G5.reset},Qu=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var su$=w(()=>{NZ1();ru$();G5={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 Xc$}from"crypto";import{mkdir as GK6,readdir as JK6,rm as eu$,stat as Qc$}from"fs/promises";import{join as BZ1,relative as WK6}from"path";import{z as P$}from"zod";function Gc$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return BZ1(KK6,Z)}function Jc$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function OZ1($,Z){let X=Gc$($),Q=Jc$(Z);return BZ1(X,Q)}function FK6($,Z,X,Q){let Y=b0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return Xc$("sha256",Y).update(G).digest("hex")}function Zc$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=FK6(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${Jc$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function Wc$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${Xc$("md5","etag").update(Q).digest("hex")}"`}async function Kc$($,Z,X,Q,Y){try{let G=await JK6($,{withFileTypes:!0});for(let J of G){let W=BZ1($,J.name),F=WK6(Z,W).replace(/\\/g,"/");if(X&&!F.startsWith(X))continue;if(J.isDirectory())if(Q){let H=F+"/";if(!X||H.startsWith(X)){if(!(X?F.slice(X.length):F).includes("/"))Y.commonPrefixes.add(H)}}else await Kc$(W,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let H=F.slice(X.length);if(H.includes(Q)){let N=H.indexOf(Q),U=X+H.slice(0,N+1);Y.commonPrefixes.add(U);continue}}try{let H=await Qc$(W);Y.objects.push({key:F,size:H.size,lastModified:H.mtime.toISOString(),etag:Wc$(W,H.mtime,H.size)})}catch{}}}}catch{}}function Fc$($,Z){let Q=t($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:P$.object({prefix:P$.string().optional(),maxKeys:P$.number().optional().default(1000),continuationToken:P$.string().optional(),delimiter:P$.string().optional()}),outputSchema:P$.object({objects:P$.array(P$.object({key:P$.string(),size:P$.number(),lastModified:P$.string(),etag:P$.string()})),nextContinuationToken:P$.string().optional(),isTruncated:P$.boolean(),commonPrefixes:P$.array(P$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,F=G.continuationToken,H=Gc$(Q);await GK6(H,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await Kc$(H,H,J,K,N),N.objects.sort((L,E)=>L.key.localeCompare(E.key));let U=0;if(F){if(U=N.objects.findIndex((L)=>L.key>F),U===-1)U=N.objects.length}let O=N.objects.slice(U,U+W),B=U+W<N.objects.length,D=B?O[O.length-1]?.key:void 0;return{objects:O,isTruncated:B,nextContinuationToken:D,commonPrefixes:Array.from(N.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:P$.object({key:P$.string()}),outputSchema:P$.object({contentType:P$.string().optional(),contentLength:P$.number(),lastModified:P$.string(),etag:P$.string(),metadata:P$.record(P$.string(),P$.string()).optional()}),handler:async(Y)=>{let G=Y,J=OZ1(Q,G.key),W=await Qc$(J);return{contentType:i61(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Wc$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:P$.object({key:P$.string(),expiresIn:P$.number().optional()}),outputSchema:P$.object({url:P$.string(),expiresIn:P$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??$c$;return{url:Zc$(Z,Q,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:P$.object({key:P$.string(),expiresIn:P$.number().optional(),contentType:P$.string().optional()}),outputSchema:P$.object({url:P$.string(),expiresIn:P$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??$c$;return{url:Zc$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:P$.object({key:P$.string()}),outputSchema:P$.object({success:P$.boolean(),key:P$.string()}),handler:async(Y)=>{let G=Y,J=OZ1(Q,G.key);try{return await eu$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:P$.object({keys:P$.array(P$.string()).max(1000)}),outputSchema:P$.object({deleted:P$.array(P$.string()),errors:P$.array(P$.object({key:P$.string(),message:P$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let F=OZ1(Q,K);try{await eu$(F),J.push(K)}catch(H){W.push({key:K,message:H instanceof Error?H.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function wZ1($,Z,X){let Q=Fc$(Z,X),Y=new yW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:H5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:P$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:P$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(F)=>{try{let H=await J.handler(F);return{content:[{type:"text",text:JSON.stringify(H)}],structuredContent:H}}catch(H){return{content:[{type:"text",text:`Error: ${H.message}`}],isError:!0}}})}let G=new XQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),FJ(Y,G,$,"mcp:dev-assets")}async function Hc$($,Z,X,Q){let G=Fc$(X,Q).find((J)=>J.name===$);if(!G)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await G.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var KK6="./data/assets",$c$=3600,Yc$,Nc$;var Uc$=w(()=>{R$();my();D8();rl();zC();fX();FP0();Yc$=new H1;Yc$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return wZ1($.req.raw,Z,Q)});Nc$=Yc$});var Oc$={};G4(Oc$,{mountDevRoutes:()=>HK6});function HK6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`;return wZ1(Q.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`,W=Q.req.param("toolName");if(!W)return Q.json({error:"Missing tool name"},400);let K=await Q.req.json(),F=await Hc$(W,K,Y,J);if(F.isError)return Q.json(F.content,500);return Q.json(F.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",Nc$);let X=new H1;X.use("*",GW({mountPath:"/api/dev-assets"})),X.route("/",KP0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var Bc$=w(()=>{D8();g61();FP0();Uc$()});import{sql as NK6}from"kysely";import{randomUUID as wc$}from"crypto";import{z as UK6}from"zod";async function BK6($){let Z=new Date().toISOString(),X=wc$(),Q=m4.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((W)=>({id:wc$(),event_id:X,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await NK6`SELECT
2916
2916
  pg_notify('studio_events', ${X}),