decocms 4.378.5 → 4.378.6

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 (360) hide show
  1. package/dist/client/assets/{AlertCircle-DUQUFYaF.js → AlertCircle-C8J_5OD-.js} +1 -1
  2. package/dist/client/assets/{AreaChart-De0rzDSG.js → AreaChart-TP66AE4u.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-Y9la6rZZ.js → ArrowLeft-NXmrtSZ9.js} +1 -1
  4. package/dist/client/assets/{ArrowRight-BBKECzS9.js → ArrowRight-DY51oJBF.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-6pRC5zxT.js → ArrowUp-3u51v_nn.js} +1 -1
  6. package/dist/client/assets/{CartesianChart-D24glgKF.js → CartesianChart-DT-YCii5.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-1npsquac.js → CheckCircle-BSF_60Rb.js} +1 -1
  8. package/dist/client/assets/{ChevronUp-DEm3RB07.js → ChevronUp-DwkYjKCN.js} +1 -1
  9. package/dist/client/assets/{Copy01-C8ZVxwty.js → Copy01-WOPqiSpQ.js} +1 -1
  10. package/dist/client/assets/{CreditCard01-h8nLE_EA.js → CreditCard01-lcAl62WX.js} +1 -1
  11. package/dist/client/assets/{DotsVertical-_C5DpumE.js → DotsVertical-IlF6zgHP.js} +1 -1
  12. package/dist/client/assets/{Download01-Cx-FY4dE.js → Download01-BKWwtlM9.js} +1 -1
  13. package/dist/client/assets/{ErrorBarContext-vWtpQHka.js → ErrorBarContext-DtcfMp3W.js} +1 -1
  14. package/dist/client/assets/{Eye-CpuYUC0F.js → Eye-C4mCgYZN.js} +1 -1
  15. package/dist/client/assets/{Globe01-Bib8-TUj.js → Globe01-C_TtWVoU.js} +1 -1
  16. package/dist/client/assets/{Globe04-V9Mfy9Iv.js → Globe04-BW3SZNKr.js} +1 -1
  17. package/dist/client/assets/{Image01-CH3lG_1n.js → Image01-CGdxk7_Z.js} +1 -1
  18. package/dist/client/assets/{Key01-BIDbA3UJ.js → Key01-C6v_ajaP.js} +1 -1
  19. package/dist/client/assets/{LayoutLeft-BJ1TrIOg.js → LayoutLeft-1tsW1DhZ.js} +1 -1
  20. package/dist/client/assets/{Line-DWAiS1xS.js → Line-xv3m3DGi.js} +1 -1
  21. package/dist/client/assets/{Link01-CaDYgjtx.js → Link01-CYhkQTJt.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-CjYoJMe3.js → LinkExternal01-BqctQuDZ.js} +1 -1
  23. package/dist/client/assets/{Monitor01-AD78jdqt.js → Monitor01-BZ8To8Fp.js} +1 -1
  24. package/dist/client/assets/{Package-Cat5_UNe.js → Package-DGZwUf6v.js} +1 -1
  25. package/dist/client/assets/{Palette-CzTz2LtS.js → Palette-Djht5dup.js} +1 -1
  26. package/dist/client/assets/{Play-BdI0zbSO.js → Play-DvkHcc1q.js} +1 -1
  27. package/dist/client/assets/{Plus-CwgG72IO.js → Plus-CGSoF5CG.js} +1 -1
  28. package/dist/client/assets/{SearchLg-ZvRcqn3W.js → SearchLg-Cx-MwTcY.js} +1 -1
  29. package/dist/client/assets/{SearchMd-B0VdgyKU.js → SearchMd-CAhL0r0l.js} +1 -1
  30. package/dist/client/assets/{Sector-DaqxbEsS.js → Sector-Af8W-T2v.js} +1 -1
  31. package/dist/client/assets/{Settings02-Baqg3CUl.js → Settings02-Cqb1qnlG.js} +1 -1
  32. package/dist/client/assets/{Share07-CWvJdFTO.js → Share07-B6vLrcUr.js} +1 -1
  33. package/dist/client/assets/{Stars01-CMLlnK1V.js → Stars01-CF8bc5RJ.js} +1 -1
  34. package/dist/client/assets/{Sun-BsR4wR1s.js → Sun-bBHl3Dld.js} +1 -1
  35. package/dist/client/assets/{Tool01-CGOI2oHu.js → Tool01-CZtPNpr-.js} +1 -1
  36. package/dist/client/assets/{Tool02-906BAkI6.js → Tool02-J3K1QQtC.js} +1 -1
  37. package/dist/client/assets/{Trash01-CjUG9I2s.js → Trash01-OoqrOGXJ.js} +1 -1
  38. package/dist/client/assets/{TrendUp01-D0eD1Hpk.js → TrendUp01-Bg-hcltX.js} +1 -1
  39. package/dist/client/assets/{Upload01-CnXbdhM1.js → Upload01-DYLPTPqp.js} +1 -1
  40. package/dist/client/assets/{User01-Bc75Ax_-.js → User01-xIK6O0Ml.js} +1 -1
  41. package/dist/client/assets/{UserSquare-Bi3r4CZX.js → UserSquare-CLORvhc5.js} +1 -1
  42. package/dist/client/assets/{Users01-CgTx_1CO.js → Users01-D6AfO54P.js} +1 -1
  43. package/dist/client/assets/{X-BitUdCux.js → X-C-NTz7Ff.js} +1 -1
  44. package/dist/client/assets/{XCircle-Bq4XYEO_.js → XCircle-BPYYRi-R.js} +1 -1
  45. package/dist/client/assets/{XClose-BEaOQ5-a.js → XClose-D8-lO7UW.js} +1 -1
  46. package/dist/client/assets/{Zap-BTaWy9tI.js → Zap-B8_3XfrJ.js} +1 -1
  47. package/dist/client/assets/{ZoomOut-CR3hlPod.js → ZoomOut-D9zZ0TL1.js} +1 -1
  48. package/dist/client/assets/{access-gate-PlDRl2uB.js → access-gate-llnbqAn3.js} +1 -1
  49. package/dist/client/assets/{add-connection-dialog-ucLlAXth.js → add-connection-dialog-BzULEfGr.js} +1 -1
  50. package/dist/client/assets/{agent-analytics-sRd5vsr9.js → agent-analytics-DGSQ2UgT.js} +1 -1
  51. package/dist/client/assets/agent-app-Chz9tQSs.js +1 -0
  52. package/dist/client/assets/{agent-assets-DZ-h1nZ5.js → agent-assets-KEOS2fmx.js} +1 -1
  53. package/dist/client/assets/{agent-automation-tp7-YZPr.js → agent-automation-1W4id8O6.js} +1 -1
  54. package/dist/client/assets/{agent-automations-BnJQAsBZ.js → agent-automations-CL6a7rRQ.js} +1 -1
  55. package/dist/client/assets/{agent-connect-sources-CzxHnTy-.js → agent-connect-sources-C9-gZLP6.js} +1 -1
  56. package/dist/client/assets/agent-deck-DU2oZyDO.js +1 -0
  57. package/dist/client/assets/{agent-e2e-HCnKLTiw.js → agent-e2e-BpNbgO7Y.js} +1 -1
  58. package/dist/client/assets/{agent-experiments-CmBk3ixz.js → agent-experiments-IQ8p_5pL.js} +1 -1
  59. package/dist/client/assets/agent-file-Gg_uYp0K.js +1 -0
  60. package/dist/client/assets/{agent-git-Dpf_t-lE.js → agent-git-CfHhzAxo.js} +1 -1
  61. package/dist/client/assets/{agent-hosting-Bw9zZLwt.js → agent-hosting-Dk1eSeLD.js} +1 -1
  62. package/dist/client/assets/{agent-icon-B9Ovc7Gv.js → agent-icon-BxBMICNf.js} +1 -1
  63. package/dist/client/assets/agent-library-file-DbDPIP1r.js +1 -0
  64. package/dist/client/assets/{agent-monitor-j0d998L3.js → agent-monitor-BYQWE_P-.js} +1 -1
  65. package/dist/client/assets/{agent-overview-xT2L8TX7.js → agent-overview-yKlaxhtx.js} +1 -1
  66. package/dist/client/assets/agent-settings-Dybr1a_G.js +1 -0
  67. package/dist/client/assets/{agent-site-editor-Chz-N3NP.js → agent-site-editor-bCwu7syk.js} +1 -1
  68. package/dist/client/assets/agent-site-editor-code-IbWXqk6B.js +2 -0
  69. package/dist/client/assets/{agent-site-editor-content-wKSoBZ56.js → agent-site-editor-content-Dt1c_eoE.js} +2 -2
  70. package/dist/client/assets/{agent-site-editor-preview-Dxd0UPLk.js → agent-site-editor-preview-CuZXUc9j.js} +3 -3
  71. package/dist/client/assets/agent-view-BsftJPUe.js +1 -0
  72. package/dist/client/assets/{agent-view-guard-DaHNXwEz.js → agent-view-guard-YMHgRp39.js} +1 -1
  73. package/dist/client/assets/{agents-list-CHnO30aL.js → agents-list-DD7YHIij.js} +1 -1
  74. package/dist/client/assets/{ai-providers-BFflcTan.js → ai-providers-BwLlqau0.js} +1 -1
  75. package/dist/client/assets/{alert-D7CPM4CB.js → alert-DzP5mor0.js} +1 -1
  76. package/dist/client/assets/{alert-dialog-yn-CBCTa.js → alert-dialog-Cpy9pq73.js} +1 -1
  77. package/dist/client/assets/api-keys-kB7bXYZi.js +1 -0
  78. package/dist/client/assets/{api-keys-BpvtIH-U.js → api-keys-t0atwhAP.js} +1 -1
  79. package/dist/client/assets/app-editor-CyDbFmvE.js +1 -0
  80. package/dist/client/assets/{asset-utils-B6FcZESP.js → asset-utils-Cf386_TL.js} +1 -1
  81. package/dist/client/assets/{auth-CDTDu40D.js → auth-CvPXxmqe.js} +1 -1
  82. package/dist/client/assets/{auth-catchall-KUYXzB2E.js → auth-catchall-BPCrgHcJ.js} +1 -1
  83. package/dist/client/assets/{auth-entry-BqYXeH-n.js → auth-entry-CDwtMpXU.js} +1 -1
  84. package/dist/client/assets/{auth-split-layout-CohyRVh_.js → auth-split-layout-6cO54JDE.js} +1 -1
  85. package/dist/client/assets/{authenticate-and-persist-oauth-d4wbGos9.js → authenticate-and-persist-oauth-dYToHnTo.js} +1 -1
  86. package/dist/client/assets/{automation-list-row-1CzMRzk9.js → automation-list-row-DTTnYXRq.js} +1 -1
  87. package/dist/client/assets/{automation-runs-BKdmaI3q.js → automation-runs-DNMYq5Mk.js} +1 -1
  88. package/dist/client/assets/{automations-CqpFUp4c.js → automations-BGNiXT4Z.js} +1 -1
  89. package/dist/client/assets/{autosend-DjtetB08.js → autosend-LbMiIEzD.js} +1 -1
  90. package/dist/client/assets/{avatar-D0st77WU.js → avatar-B2v4_6Qb.js} +1 -1
  91. package/dist/client/assets/{badge-DxiEk-Wv.js → badge-CSyGhw9b.js} +1 -1
  92. package/dist/client/assets/{block-document-VCTwzWmm.js → block-document-z6XDyyH_.js} +1 -1
  93. package/dist/client/assets/{blocks-preview-workspace-context-oS85YcHi.js → blocks-preview-workspace-context-w9NxFM0F.js} +1 -1
  94. package/dist/client/assets/{breadcrumb-BNI5grY1.js → breadcrumb-BmjFWuy6.js} +1 -1
  95. package/dist/client/assets/{buckets-z-At-LeQ.js → buckets-B2obZKQb.js} +1 -1
  96. package/dist/client/assets/{build-improve-prompt-doc-zaBBP95f.js → build-improve-prompt-doc-DL2NsUpR.js} +1 -1
  97. package/dist/client/assets/{bulk-category-panel-DtTZhqNs.js → bulk-category-panel-CJJ15WIG.js} +1 -1
  98. package/dist/client/assets/{calendar-CO6fov1b.js → calendar-CZaIhXkh.js} +1 -1
  99. package/dist/client/assets/{capability-load-error-7flA6gOC.js → capability-load-error-6qeWYunS.js} +1 -1
  100. package/dist/client/assets/category-editor-CSpW3qkz.js +1 -0
  101. package/dist/client/assets/{chart-CXSOAmEt.js → chart-D4sKKBn6.js} +1 -1
  102. package/dist/client/assets/{chat-context-lBgdOyCx.js → chat-context-BR3TxYpY.js} +1 -1
  103. package/dist/client/assets/{chat-draft-D1NCaXPy.js → chat-draft-ChZIc1th.js} +1 -1
  104. package/dist/client/assets/{checkbox-DskoM8tv.js → checkbox-D9HkVzO7.js} +1 -1
  105. package/dist/client/assets/{choose-editor-DOzItUyO.js → choose-editor-CTTULhqU.js} +1 -1
  106. package/dist/client/assets/{cli-auth-success-CKkmd5GE.js → cli-auth-success-D55M8ixe.js} +1 -1
  107. package/dist/client/assets/{client-icons-DWc1MqCi.js → client-icons-Ct3015ck.js} +1 -1
  108. package/dist/client/assets/{collapsible-DprE22lR.js → collapsible-7ctuvNsV.js} +1 -1
  109. package/dist/client/assets/{collection-detail-BQwLYKQ3.js → collection-detail-DiOuwxH4.js} +1 -1
  110. package/dist/client/assets/{collection-display-button-CNJhQHEe.js → collection-display-button-B8FWDSqF.js} +1 -1
  111. package/dist/client/assets/{collection-search-YpYcQtCi.js → collection-search-Cllz941g.js} +1 -1
  112. package/dist/client/assets/{collection-table-wrapper-B7dAqd-x.js → collection-table-wrapper-CVytdmif.js} +1 -1
  113. package/dist/client/assets/{collection-tabs-YHW8ukTb.js → collection-tabs-BJEMsXSV.js} +1 -1
  114. package/dist/client/assets/{combobox-CXcmgLlC.js → combobox-SDqJL17e.js} +1 -1
  115. package/dist/client/assets/{command-BGd4vbTf.js → command-DVhZPqo-.js} +1 -1
  116. package/dist/client/assets/{companion-mcps-section-C0yPI2u4.js → companion-mcps-section-gDOW8nru.js} +1 -1
  117. package/dist/client/assets/{connect-rJ70Js7A.js → connect-DoIh35up.js} +1 -1
  118. package/dist/client/assets/{connect-layout-BBL59zGb.js → connect-layout-NTatStbe.js} +1 -1
  119. package/dist/client/assets/{connection-DzMOW2xr.js → connection-D9WUOz9f.js} +1 -1
  120. package/dist/client/assets/{connection-card-F7s_sFsc.js → connection-card-DeRzo7Np.js} +1 -1
  121. package/dist/client/assets/{connection-detail-MPVQti9D.js → connection-detail-4rDFFt8I.js} +1 -1
  122. package/dist/client/assets/{connection-form-helpers-C9m_Mx2-.js → connection-form-helpers-BIrkW8oD.js} +1 -1
  123. package/dist/client/assets/{connections-aO5U6h4k.js → connections-DxfyI6zm.js} +1 -1
  124. package/dist/client/assets/{create-organization-dialog-BIPTgOT1.js → create-organization-dialog-Bbuhr1SX.js} +1 -1
  125. package/dist/client/assets/{decofile-api-CRRYWSZp.js → decofile-api-DmWvc73_.js} +1 -1
  126. package/dist/client/assets/{decopilot-DBApDyob.js → decopilot-nwA07KQe.js} +1 -1
  127. package/dist/client/assets/{dialog-goOlhXJo.js → dialog-nqNOYTcf.js} +1 -1
  128. package/dist/client/assets/{discover-DCRWHQ1Y.js → discover-DEhyUH_d.js} +1 -1
  129. package/dist/client/assets/{domain-settings-C_W5PIdl.js → domain-settings-B7KNpSP-.js} +1 -1
  130. package/dist/client/assets/{download-app-dialog-3rTznN2X.js → download-app-dialog-CvV4q-Zn.js} +1 -1
  131. package/dist/client/assets/{drawer-By4r6IsU.js → drawer-DorjaNaA.js} +1 -1
  132. package/dist/client/assets/{editor-B-eI672E.js → editor-BKz4OxTG.js} +1 -1
  133. package/dist/client/assets/{empty-state-BK1JqU2j.js → empty-state-4GG-FJJI.js} +1 -1
  134. package/dist/client/assets/{empty-state-Cg4Ma2xY.js → empty-state-CImG8m1c.js} +1 -1
  135. package/dist/client/assets/{extract-connection-data-DNwMdoTh.js → extract-connection-data-n3FtGXPY.js} +1 -1
  136. package/dist/client/assets/{feature-gate-0NNz8e1a.js → feature-gate-DQcnAo2U.js} +1 -1
  137. package/dist/client/assets/{feature-paywall-BPWMjWBw.js → feature-paywall-g73HMCfq.js} +1 -1
  138. package/dist/client/assets/{file-explorer-MrJVuuro.js → file-explorer-CtlkbP3P.js} +1 -1
  139. package/dist/client/assets/{file-preview-D8gWgUuQ.js → file-preview-DrulRthQ.js} +1 -1
  140. package/dist/client/assets/{file-share-button-BRGcnxJB.js → file-share-button-DXozbsCG.js} +1 -1
  141. package/dist/client/assets/{file-type-icon-D-ju5BhN.js → file-type-icon-CAAznf1U.js} +1 -1
  142. package/dist/client/assets/{folder-icon-BpbqYQ7_.js → folder-icon-B85DLPhy.js} +1 -1
  143. package/dist/client/assets/{form-U3K_sLLF.js → form-_CWmpc9x.js} +1 -1
  144. package/dist/client/assets/{gateway-client--6W-HSOB.js → gateway-client-CXW3G5Wu.js} +1 -1
  145. package/dist/client/assets/{general-BwZw1cr9.js → general-1Cmkl-Jk.js} +1 -1
  146. package/dist/client/assets/{github-icon-CTLvfMfm.js → github-icon-DijeQA9v.js} +1 -1
  147. package/dist/client/assets/{home-BDaRr1Wv.js → home-Cb5tf65i.js} +1 -1
  148. package/dist/client/assets/{hooks-6TcjjOJk.js → hooks-BPwxMsEw.js} +1 -1
  149. package/dist/client/assets/{hooks-D1g36Tjv.js → hooks-Dms2_dmv.js} +1 -1
  150. package/dist/client/assets/{icon-button-0sq4yzUq.js → icon-button-DVm2V_v3.js} +1 -1
  151. package/dist/client/assets/{index-BIAXzm9t.js → index-9bZFY7qj.js} +1 -1
  152. package/dist/client/assets/{index-CpTCZd2v.js → index-B8SeRHgO.js} +1 -1
  153. package/dist/client/assets/{index-CAdtaAAF.js → index-Bcl8IK6G.js} +1 -1
  154. package/dist/client/assets/{index-igKotsxi.js → index-BkyFRnOx.js} +1 -1
  155. package/dist/client/assets/{index-Dqao3o7w.js → index-C4D5WPS3.js} +2 -2
  156. package/dist/client/assets/{index-C8n50X2b.js → index-CZmI-F5h.js} +1 -1
  157. package/dist/client/assets/{index-DpPyfLll.js → index-Cilgva3Z.js} +1 -1
  158. package/dist/client/assets/{index-Df9c3ehM.js → index-DNZf1jFh.js} +1 -1
  159. package/dist/client/assets/{index-BfYkzuN5.js → index-DWXneIe6.js} +1 -1
  160. package/dist/client/assets/{index-w4oABX8T.js → index-DcjIsxdn.js} +1 -1
  161. package/dist/client/assets/{index-ClXBCHGr.js → index-DhA87jVD.js} +1 -1
  162. package/dist/client/assets/{index-CEo_EvLm.js → index-DrpPwp3X.js} +1 -1
  163. package/dist/client/assets/{index-CFlUyKSK.js → index-_pfY0rBi.js} +1 -1
  164. package/dist/client/assets/{index-redirect-C7-jIChc.js → index-redirect-DMvmfZN7.js} +1 -1
  165. package/dist/client/assets/{index-BRt8AMxN.js → index-wZcL3YUL.js} +1 -1
  166. package/dist/client/assets/{infiniteQueryObserver-JEjgZTKi.js → infiniteQueryObserver-CUCEOa2C.js} +1 -1
  167. package/dist/client/assets/{infra-billing-D0GeGoA6.js → infra-billing-3Ohd_9Qi.js} +1 -1
  168. package/dist/client/assets/{input-CzOfwsbe.js → input-BHHwfO8L.js} +1 -1
  169. package/dist/client/assets/{input-BiKaQJTe.js → input-Dj599yLK.js} +1 -1
  170. package/dist/client/assets/{input-Cp20Sq13.js → input-Yx4fNU0S.js} +1 -1
  171. package/dist/client/assets/{integration-icon-BxF2ZWka.js → integration-icon-CKOIc1TL.js} +1 -1
  172. package/dist/client/assets/{label-7KE19Fdc.js → label-BE8PwIRm.js} +1 -1
  173. package/dist/client/assets/{last-preview-page-kAs6ifNV.js → last-preview-page-Bw8ycOv8.js} +1 -1
  174. package/dist/client/assets/{layout-Dl9GzWHu.js → layout-B9e8T_8z.js} +1 -1
  175. package/dist/client/assets/{legacy-agents-deep-D9TW7PsM.js → legacy-agents-deep-zJyaAHRn.js} +1 -1
  176. package/dist/client/assets/{legacy-main-redirect-jjqZJcln.js → legacy-main-redirect-DJGd_X67.js} +1 -1
  177. package/dist/client/assets/{library-CTLBQCTW.js → library-gDahNbZ-.js} +1 -1
  178. package/dist/client/assets/{login-B6HXSOPN.js → login-C79WY03V.js} +1 -1
  179. package/dist/client/assets/{markdown-DRG7XKmO.js → markdown-COZ8Zf0d.js} +1 -1
  180. package/dist/client/assets/{mcp-app-renderer-uMgKrVo-.js → mcp-app-renderer-DYSkANSY.js} +1 -1
  181. package/dist/client/assets/{mcp-oauth-Dsvwqhz5.js → mcp-oauth-jtvl0YoP.js} +1 -1
  182. package/dist/client/assets/{members-B7LJieLt.js → members-CfuojVrl.js} +1 -1
  183. package/dist/client/assets/{message-templates-h3W8tmtO.js → message-templates-DxDX6BFG.js} +1 -1
  184. package/dist/client/assets/{mini-report-page-Bc6vW6xX.js → mini-report-page-B_pvV1EH.js} +1 -1
  185. package/dist/client/assets/{mock-board-BD1kpOZg.js → mock-board-DMmcbSPl.js} +3 -3
  186. package/dist/client/assets/{monaco-editor-ozcdZTYP.js → monaco-editor-Bsw82XKF.js} +1 -1
  187. package/dist/client/assets/{monitoring-stats-row-BL9B-YQt.js → monitoring-stats-row-BMCxrM71.js} +1 -1
  188. package/dist/client/assets/{multi-select-B2gMyJrW.js → multi-select-B2DiPp85.js} +1 -1
  189. package/dist/client/assets/{mustache-C5ochPJT.js → mustache-DUWLoszF.js} +1 -1
  190. package/dist/client/assets/{oauth-callback-qaazNmaj.js → oauth-callback-DUXZuYvq.js} +1 -1
  191. package/dist/client/assets/{oauth-callback-ai-provider-Bfck72cm.js → oauth-callback-ai-provider-CCzda8oM.js} +1 -1
  192. package/dist/client/assets/{onboarding-DRTT6V2b.js → onboarding-D2daUPyK.js} +1 -1
  193. package/dist/client/assets/{optimistic-project-sidebar-views-B9v4-DIt.js → optimistic-project-sidebar-views-BfAkO0vy.js} +1 -1
  194. package/dist/client/assets/{org-file-open-context-CN8gdvw_.js → org-file-open-context-CEPySix7.js} +1 -1
  195. package/dist/client/assets/{organization-choice-BuJq2CBt.js → organization-choice-BPnX7X7N.js} +1 -1
  196. package/dist/client/assets/{orgs-DdrweKOE.js → orgs-BNFpYgKg.js} +1 -1
  197. package/dist/client/assets/{page-seo-form-_CrBW00u.js → page-seo-form-CcEwS14s.js} +1 -1
  198. package/dist/client/assets/{pair-CnFu0Tkh.js → pair-DbDfdCee.js} +1 -1
  199. package/dist/client/assets/{plan-ladder-Cuev7CBS.js → plan-ladder-BvnPATWo.js} +1 -1
  200. package/dist/client/assets/{popover-Blnc0to3.js → popover-C0ZfjA5Y.js} +1 -1
  201. package/dist/client/assets/{post-calendar-PoEgYOYV.js → post-calendar-BRgP3Ibf.js} +1 -1
  202. package/dist/client/assets/{post-editor-BvW3C-rs.js → post-editor-61ODA8S7.js} +1 -1
  203. package/dist/client/assets/{preview-content-Bmnl5h-x.js → preview-content-BSj86a5i.js} +1 -1
  204. package/dist/client/assets/{preview-dialog-rhBx16p2.js → preview-dialog-CMD1gJok.js} +1 -1
  205. package/dist/client/assets/{primitives-kotBbvO0.js → primitives-DzZBndgG.js} +1 -1
  206. package/dist/client/assets/{profile-ChoWMHA6.js → profile-Dr2FXs35.js} +1 -1
  207. package/dist/client/assets/{project-app-view-CKelCKga.js → project-app-view-DlPLbw36.js} +1 -1
  208. package/dist/client/assets/{project-feed-DIVXhIDG.js → project-feed-Cb1RpeNh.js} +1 -1
  209. package/dist/client/assets/{project-icon-B0C-pcKb.js → project-icon-DyPTp2g3.js} +1 -1
  210. package/dist/client/assets/project-reports-C7fLNs9t.js +1 -0
  211. package/dist/client/assets/project-tasks-hI2CtoVv.js +1 -0
  212. package/dist/client/assets/{prompts-B7l0QzPX.js → prompts-DdkYVKeJ.js} +1 -1
  213. package/dist/client/assets/record-editor-Ce6YT1Ua.js +1 -0
  214. package/dist/client/assets/{redirect-editor-CfqsFciy.js → redirect-editor-BIJTNcka.js} +1 -1
  215. package/dist/client/assets/registry-CC4wEV4H.js +2 -0
  216. package/dist/client/assets/{registry-layout-BmLE9VoC.js → registry-layout-CJ5PD5hC.js} +1 -1
  217. package/dist/client/assets/reports-Byf4EUTp.js +1 -0
  218. package/dist/client/assets/{reports-CbYXmVTK.js → reports-DxrhJPFn.js} +1 -1
  219. package/dist/client/assets/{reports-onboarding-B_077qJH.js → reports-onboarding-B8h50ZnU.js} +1 -1
  220. package/dist/client/assets/{reports-tab-Z-DzcyRs.js → reports-tab-D4qU9uYo.js} +2 -2
  221. package/dist/client/assets/{repositories-R2gQOWTh.js → repositories-DXcy4eTd.js} +1 -1
  222. package/dist/client/assets/{repository-import-picker-Cxc3zStZ.js → repository-import-picker-BwVynZIn.js} +1 -1
  223. package/dist/client/assets/{repository-picker-CPWPMa1z.js → repository-picker-B2A7S9bS.js} +1 -1
  224. package/dist/client/assets/{require-capability-KHfuPVlZ.js → require-capability-f8OcFa65.js} +1 -1
  225. package/dist/client/assets/{required-auth-layout-BJDtR2sf.js → required-auth-layout-CAvQncpv.js} +1 -1
  226. package/dist/client/assets/{reset-password-5I4TBoEH.js → reset-password-B-D-4-3N.js} +1 -1
  227. package/dist/client/assets/{resizable-0MDw90Gg.js → resizable-cFczxib2.js} +1 -1
  228. package/dist/client/assets/{review-settings-BEC2Tnkk.js → review-settings-BMs7PeD7.js} +1 -1
  229. package/dist/client/assets/{rich-text-link-control-vO39ZAxY.js → rich-text-link-control-3-vMeyxI.js} +1 -1
  230. package/dist/client/assets/{roles-B5Ef72nC.js → roles-Cmdr8QdH.js} +1 -1
  231. package/dist/client/assets/{route-DK-bX4Ey.js → route-CfRc6_gk.js} +1 -1
  232. package/dist/client/assets/{route-Crlon5aK.js → route-CpdIiZ7q.js} +1 -1
  233. package/dist/client/assets/{route-pAYIaa24.js → route-DhIu0HwY.js} +1 -1
  234. package/dist/client/assets/{route-page-header-s4gxQfrH.js → route-page-header-yYASB2W7.js} +1 -1
  235. package/dist/client/assets/{runnable-block-editor-CiQ4NAyH.js → runnable-block-editor-B5SGQnCw.js} +1 -1
  236. package/dist/client/assets/{sandbox-lifecycle-context-7guycN-K.js → sandbox-lifecycle-context-N5IFYJNN.js} +1 -1
  237. package/dist/client/assets/{schema-DpJ14-bb.js → schema-oRB8q4X9.js} +1 -1
  238. package/dist/client/assets/{scroll-area-BO6lWU5U.js → scroll-area-DT8zsvFy.js} +1 -1
  239. package/dist/client/assets/{search-input-BoXJWgWp.js → search-input-VhabAXUC.js} +1 -1
  240. package/dist/client/assets/{search-toggle-Da_h2dsL.js → search-toggle-mxN7fw9K.js} +1 -1
  241. package/dist/client/assets/{secrets-B0TRv-Qd.js → secrets-DUZPHEcn.js} +1 -1
  242. package/dist/client/assets/{sections-editor-Di9Ntocm.js → sections-editor-C8ay4aEI.js} +1 -1
  243. package/dist/client/assets/{select-model-DIpsCv6W.js → select-model-DJPgdLHa.js} +1 -1
  244. package/dist/client/assets/{select-BUebXFpZ.js → select-w2qmJgjl.js} +1 -1
  245. package/dist/client/assets/{seo-editor-I0cKGZeU.js → seo-editor-BYC-TXRR.js} +1 -1
  246. package/dist/client/assets/{separator-BHwsQiw2.js → separator-DSGgBkEn.js} +1 -1
  247. package/dist/client/assets/{settings-tab-B69gqGr1.js → settings-tab-BgxWPNjh.js} +1 -1
  248. package/dist/client/assets/{sheet-CZiOMLMT.js → sheet-DJ082J_Q.js} +1 -1
  249. package/dist/client/assets/{shell-layout-DQQ7GbTN.js → shell-layout-B5TCiOXQ.js} +1 -1
  250. package/dist/client/assets/{sidebar-BQf__r7e.js → sidebar-BENAFWnN.js} +1 -1
  251. package/dist/client/assets/{skill-preview-CPsdPvuq.js → skill-preview-D_VJlUCY.js} +1 -1
  252. package/dist/client/assets/{skills-CMoFbP0A.js → skills-C3ed8KLe.js} +1 -1
  253. package/dist/client/assets/{sso-BcDBn8o-.js → sso-CB6_i-p5.js} +1 -1
  254. package/dist/client/assets/store-registry-D1fCswMK.js +2 -0
  255. package/dist/client/assets/{store-Cw4e8Nr2.js → store-t1L4JSiR.js} +1 -1
  256. package/dist/client/assets/{switch-kI5UyNbv.js → switch-CsAFKXy5.js} +1 -1
  257. package/dist/client/assets/{synced-repos-DAF87glO.js → synced-repos-BOBwNgRC.js} +1 -1
  258. package/dist/client/assets/{table-DZWYZvhY.js → table-CjzPjMVZ.js} +1 -1
  259. package/dist/client/assets/{tabs-CZrOjKZC.js → tabs-CXRvmfC6.js} +1 -1
  260. package/dist/client/assets/{task-board-D4lbA7ou.js → task-board-BiwyxfRN.js} +1 -1
  261. package/dist/client/assets/{task-route-DhUsIpyF.js → task-route-efbDqMEf.js} +1 -1
  262. package/dist/client/assets/{task-status-CThzMNsa.js → task-status-CrNs36B5.js} +1 -1
  263. package/dist/client/assets/{taskboard-analytics-CU2qVhNj.js → taskboard-analytics-DyL6uuZg.js} +1 -1
  264. package/dist/client/assets/tasks-CwL-9H-v.js +1 -0
  265. package/dist/client/assets/{tasks-DYAiWb91.js → tasks-DoiW9Zmo.js} +1 -1
  266. package/dist/client/assets/{textarea-CJKi_Atc.js → textarea-DccV7C8O.js} +1 -1
  267. package/dist/client/assets/{thread-button-DUtv3mjQ.js → thread-button-BvvGVIpd.js} +1 -1
  268. package/dist/client/assets/{thread-intent-YR5p4Kky.js → thread-intent-CAUH7YoC.js} +1 -1
  269. package/dist/client/assets/{thread-route-DGVg-k9W.js → thread-route--IntZpKJ.js} +1 -1
  270. package/dist/client/assets/{thread-route-B5gBIznS.js → thread-route-CFZruFMJ.js} +1 -1
  271. package/dist/client/assets/{thread-sheet-body-B2oaIkoP.js → thread-sheet-body-B374LO98.js} +1 -1
  272. package/dist/client/assets/{toggle-group-BPRDEhqx.js → toggle-group-DnJNTzA3.js} +1 -1
  273. package/dist/client/assets/{toolbar-icon-button-BMVwlKxQ.js → toolbar-icon-button-Dezq9myT.js} +1 -1
  274. package/dist/client/assets/{tooltip-CF4dwrh2.js → tooltip-DIraYTo1.js} +1 -1
  275. package/dist/client/assets/{track-CixO_v3B.js → track-t-wDZzfl.js} +1 -1
  276. package/dist/client/assets/{types-DhyonOMn.js → types-BsB0KN6-.js} +1 -1
  277. package/dist/client/assets/{usage-stats-DvQ297Yx.js → usage-stats-D5vigVWL.js} +1 -1
  278. package/dist/client/assets/{use-ai-providers-vEz3ro7k.js → use-ai-providers-C7nj7TI7.js} +1 -1
  279. package/dist/client/assets/{use-automations-DANxIF3h.js → use-automations-B8JEOqfX.js} +1 -1
  280. package/dist/client/assets/{use-autosave-CG23D772.js → use-autosave-Dnd1twQr.js} +1 -1
  281. package/dist/client/assets/{use-connect-companion-Dk6y80m_.js → use-connect-companion-G00KIy91.js} +1 -1
  282. package/dist/client/assets/{use-connection-QJoKwO5e.js → use-connection-C_2fR0SN.js} +1 -1
  283. package/dist/client/assets/{use-copy-DHjSsTks.js → use-copy-BB5cS2zz.js} +1 -1
  284. package/dist/client/assets/{use-create-virtual-mcp-yn1APflL.js → use-create-virtual-mcp-BnR_0sN3.js} +1 -1
  285. package/dist/client/assets/{use-date-fns-locale-BUuLToKi.js → use-date-fns-locale-ByCgxbf8.js} +1 -1
  286. package/dist/client/assets/{use-debounced-autosave-CPNHgCy0.js → use-debounced-autosave-KVvNrO5l.js} +1 -1
  287. package/dist/client/assets/{use-debounced-value-D9VzG-vp.js → use-debounced-value-CDc5vVFx.js} +1 -1
  288. package/dist/client/assets/{use-deco-credits-BG6Zh6Dt.js → use-deco-credits-BE2QdukV.js} +1 -1
  289. package/dist/client/assets/{use-decopilot-events-C2JOXMtB.js → use-decopilot-events-DeIEfboq.js} +1 -1
  290. package/dist/client/assets/{use-delete-connection-DZQS1UGs.js → use-delete-connection-_qCyAVPr.js} +1 -1
  291. package/dist/client/assets/{use-deployment-admin-Cw9xnGal.js → use-deployment-admin-BArJGMXk.js} +1 -1
  292. package/dist/client/assets/{use-entitlements-CQERN3rv.js → use-entitlements-D_m5Ltup.js} +1 -1
  293. package/dist/client/assets/{use-fast-preview-draft-url-D_HdZxtv.js → use-fast-preview-draft-url-cGEdAb1N.js} +1 -1
  294. package/dist/client/assets/{use-file-configs-X2SDrIhL.js → use-file-configs-BU38nOy_.js} +1 -1
  295. package/dist/client/assets/{use-in-settings-CkVnfSch.js → use-in-settings-BoAoToEK.js} +1 -1
  296. package/dist/client/assets/{use-infinite-scroll-DBnUXxiH.js → use-infinite-scroll-Ce8qpOcJ.js} +1 -1
  297. package/dist/client/assets/{use-join-requests-DEQcz79p.js → use-join-requests-CW76mlxp.js} +1 -1
  298. package/dist/client/assets/{use-main-panel-tabs-BEvW4S_x.js → use-main-panel-tabs-B9dFUEKf.js} +1 -1
  299. package/dist/client/assets/{use-mcp-auth-status-CgBdvNTB.js → use-mcp-auth-status-BDakpxu6.js} +1 -1
  300. package/dist/client/assets/{use-mcp-client-BFa3VhRq.js → use-mcp-client-Cesfi_7b.js} +1 -1
  301. package/dist/client/assets/{use-mcp-prompts-Cf4K9jTL.js → use-mcp-prompts-gHiLeqgc.js} +1 -1
  302. package/dist/client/assets/{use-mcp-tools-DLU1fFgW.js → use-mcp-tools-BR7vevjO.js} +1 -1
  303. package/dist/client/assets/{use-members-CSi53FnV.js → use-members-hb0GJpQA.js} +1 -1
  304. package/dist/client/assets/{use-mobile-D_zVYNYk.js → use-mobile-CIIXM8q9.js} +1 -1
  305. package/dist/client/assets/{use-navigate-to-agent-B8ixZy6F.js → use-navigate-to-agent-l34sE8Ny.js} +1 -1
  306. package/dist/client/assets/{use-open-billing-url-CpnATgxC.js → use-open-billing-url-DsCDhMD6.js} +1 -1
  307. package/dist/client/assets/{use-org-auth-client-jWveZsH5.js → use-org-auth-client-BThAJvaU.js} +1 -1
  308. package/dist/client/assets/{use-org-fs-CYT17juv.js → use-org-fs-BbCNMpEE.js} +1 -1
  309. package/dist/client/assets/{use-org-repo-syncs-tWLgS-M8.js → use-org-repo-syncs-DB3FRN4L.js} +1 -1
  310. package/dist/client/assets/{use-org-sso-BpKh9tYw.js → use-org-sso-CcdPhBOt.js} +1 -1
  311. package/dist/client/assets/{use-organization-roles-CxbQnYmJ.js → use-organization-roles-BKoFEoqa.js} +1 -1
  312. package/dist/client/assets/{use-organization-settings-DtqAkPaw.js → use-organization-settings-nMCs47Iz.js} +1 -1
  313. package/dist/client/assets/{use-panel-navigate-D88z3Lo_.js → use-panel-navigate-Ck4MA22j.js} +1 -1
  314. package/dist/client/assets/{use-project-native-view-presence-CGIi0SQc.js → use-project-native-view-presence-BbsMAM9n.js} +1 -1
  315. package/dist/client/assets/{use-project-scope-DmR2XH7n.js → use-project-scope-87FX0yHr.js} +1 -1
  316. package/dist/client/assets/{use-registry-connections-Bkn7UeFm.js → use-registry-connections-Cog2-3vX.js} +1 -1
  317. package/dist/client/assets/{use-releases-CdMZq1z2.js → use-releases-Cu4cJ8ti.js} +1 -1
  318. package/dist/client/assets/{use-reports-diagnostic-DHtqiF5D.js → use-reports-diagnostic-DV-wzrmt.js} +1 -1
  319. package/dist/client/assets/{use-route-default-main-BO9PFgJ7.js → use-route-default-main-Ct79y-vo.js} +1 -1
  320. package/dist/client/assets/{use-secrets-qkEaoUMp.js → use-secrets-bO0Rl7TB.js} +1 -1
  321. package/dist/client/assets/{use-section-preview-base-uXunhgTC.js → use-section-preview-base-uc4gC-qO.js} +1 -1
  322. package/dist/client/assets/{use-session-runtime-CUvOMag5.js → use-session-runtime-BuDnzXl8.js} +1 -1
  323. package/dist/client/assets/{use-tags-DN9kBegx.js → use-tags-B8hN3tcj.js} +1 -1
  324. package/dist/client/assets/{use-task-board-analytics-BGQzDjUa.js → use-task-board-analytics-DVmmA5qK.js} +1 -1
  325. package/dist/client/assets/{use-task-metadata-DlyUHKcB.js → use-task-metadata-DEk9Zkp0.js} +1 -1
  326. package/dist/client/assets/{use-thread-outputs-Chha-Yt1.js → use-thread-outputs-CemKLTVn.js} +1 -1
  327. package/dist/client/assets/{use-view-mode-BIG5Ox_d.js → use-view-mode-CR9woT6i.js} +1 -1
  328. package/dist/client/assets/{use-virtual-mcp-BwaPOYs3.js → use-virtual-mcp-DxMrXdTq.js} +1 -1
  329. package/dist/client/assets/useInfiniteQuery-KXhLkSY7.js +1 -0
  330. package/dist/client/assets/{useQueries-B_mqosXB.js → useQueries-CvGNJ1xF.js} +1 -1
  331. package/dist/client/assets/useSuspenseInfiniteQuery-nP29phsw.js +1 -0
  332. package/dist/client/assets/{users-Ct_duE0I.js → users-DLnRyEWD.js} +1 -1
  333. package/dist/client/assets/{utils-MC99lYCV.js → utils-atkxBfcg.js} +1 -1
  334. package/dist/client/assets/{variant-calendar-CExFhrl-.js → variant-calendar-Z7KqWiV6.js} +1 -1
  335. package/dist/client/assets/{variant-matcher-override-k8GGNGM4.js → variant-matcher-override-C-y6nyvs.js} +1 -1
  336. package/dist/client/assets/{view-mode-toggle-hzBqY-70.js → view-mode-toggle-15pnYcYc.js} +1 -1
  337. package/dist/client/assets/{virtual-mcp-DCxvdSa5.js → virtual-mcp-MbtSLjYn.js} +1 -1
  338. package/dist/client/index.html +1 -1
  339. package/dist/server/cli.js +2 -2
  340. package/dist/server/server.js +2 -2
  341. package/package.json +1 -1
  342. package/dist/client/assets/agent-app-DqL-XCZj.js +0 -1
  343. package/dist/client/assets/agent-deck-BGMF-QnV.js +0 -1
  344. package/dist/client/assets/agent-file-BTXxiJn2.js +0 -1
  345. package/dist/client/assets/agent-library-file-CfejwvoE.js +0 -1
  346. package/dist/client/assets/agent-settings-CY8tCQmO.js +0 -1
  347. package/dist/client/assets/agent-site-editor-code-Ci9vlrhp.js +0 -2
  348. package/dist/client/assets/agent-view-KN8Gv6OX.js +0 -1
  349. package/dist/client/assets/api-keys-DtuP6akM.js +0 -1
  350. package/dist/client/assets/app-editor-B7tL_i_q.js +0 -1
  351. package/dist/client/assets/category-editor-CExcfq1d.js +0 -1
  352. package/dist/client/assets/project-reports-DCsiG9mu.js +0 -1
  353. package/dist/client/assets/project-tasks-18OmnMcn.js +0 -1
  354. package/dist/client/assets/record-editor-BAalChdW.js +0 -1
  355. package/dist/client/assets/registry-BvzQPKBW.js +0 -2
  356. package/dist/client/assets/reports-B1XANEsY.js +0 -1
  357. package/dist/client/assets/store-registry-DjRAfeET.js +0 -2
  358. package/dist/client/assets/tasks-BJjg86UK.js +0 -1
  359. package/dist/client/assets/useInfiniteQuery-B8pg6tEa.js +0 -1
  360. package/dist/client/assets/useSuspenseInfiniteQuery-BslO8w1X.js +0 -1
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- var b$8=Object.create;var{getPrototypeOf:x$8,defineProperty:ed,getOwnPropertyNames:_K1,getOwnPropertyDescriptor:y$8}=Object,vK1=Object.prototype.hasOwnProperty;function fK1($){return this[$]}var g$8,h$8,V=($,Z,Q)=>{var Y=$!=null&&typeof $==="object";if(Y){var X=Z?g$8??=new WeakMap:h$8??=new WeakMap,J=X.get($);if(J)return J}Q=$!=null?b$8(x$8($)):{};let G=Z||!$||!$.__esModule?ed(Q,"default",{value:$,enumerable:!0}):Q;for(let W of _K1($))if(!vK1.call(G,W))ed(G,W,{get:fK1.bind($,W),enumerable:!0});if(Y)X.set($,G);return G},eI0=($)=>{var Z=(CK1??=new WeakMap).get($),Q;if(Z)return Z;if(Z=ed({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function"){for(var Y of _K1($))if(!vK1.call(Z,Y))ed(Z,Y,{get:fK1.bind($,Y),enumerable:!(Q=y$8($,Y))||Q.enumerable})}return CK1.set($,Z),Z},CK1,_=($,Z)=>()=>(Z||$((Z={exports:{}}).exports,Z),Z.exports);var u$8=($)=>$;function l$8($,Z){this[$]=u$8.bind(null,Z)}var q4=($,Z)=>{for(var Q in Z)ed($,Q,{get:Z[Q],enumerable:!0,configurable:!0,set:l$8.bind(Z,Q)})};var O=($,Z)=>()=>($&&(Z=$($=0)),Z);var A0=import.meta.require;function P$($,Z={}){let{signal:Q}=Z;if(Q?.aborted)return Promise.reject(Q.reason);return new Promise((Y,X)=>{let J=()=>{clearTimeout(+W),X(Q?.reason)},W=c$8(()=>{Q?.removeEventListener("abort",J),Y()},$);Q?.addEventListener("abort",J,{once:!0})})}function c$8($,Z){if(Z=Math.trunc(Math.max(Z,0)||0),Z<=$V0){let J=Number(setTimeout($,Z));return{valueOf:()=>J}}let Q=Date.now(),Y,X=()=>{let J=Z-(Date.now()-Q);Y=J>$V0?Number(setTimeout(X,$V0)):Number(setTimeout($,J))};return X(),{valueOf:()=>Y}}var $V0=2147483647;function _7($,Z,Q,Y,X){let J=Math.min($,Z*Y**Q);return(1-X*Math.random())*J}async function A8($,Z){let{multiplier:Q=2,maxTimeout:Y=60000,maxAttempts:X=5,minTimeout:J=1000,jitter:G=1,isRetriable:W=()=>!0,signal:K}=Z??{};if(!Number.isInteger(X)||X<1)throw RangeError(`Cannot retry as 'maxAttempts' must be a positive integer: current value is ${X}`);if(!Number.isFinite(Q)||Q<1)throw RangeError(`Cannot retry as 'multiplier' must be a finite number >= 1: current value is ${Q}`);if(Number.isNaN(Y)||Y<=0)throw RangeError(`Cannot retry as 'maxTimeout' must be a positive number: current value is ${Y}`);if(Number.isNaN(J)||J<0)throw RangeError(`Cannot retry as 'minTimeout' must be >= 0: current value is ${J}`);if(J>Y)throw RangeError(`Cannot retry as 'minTimeout' must be <= 'maxTimeout': current values 'minTimeout=${J}', 'maxTimeout=${Y}'`);if(Number.isNaN(G)||G<0||G>1)throw RangeError(`Cannot retry as 'jitter' must be between 0 and 1: current value is ${G}`);let H=0;while(!0){K?.throwIfAborted();try{return await $()}catch(F){if(!W(F))throw F;if(H+1>=X)throw new L5(F,X);let U=_7(Y,J,H,Q,G);await P$(U,K?{signal:K}:void 0)}H++}}var L5;var bK1=O(()=>{L5=class L5 extends Error{constructor($,Z){super(`Retrying exceeded the maxAttempts (${Z}).`);this.name="RetryError",this.cause=$}}});async function MZ($,Z,Q){let Y=Array($.length),X=0,J=Array.from({length:Math.min(Z,$.length)},async()=>{for(;;){let G=X++;if(G>=$.length)return;Y[G]=await Q($[G])}});return await Promise.all(J),Y}var m$=O(()=>{bK1()});var I3="thread-gate",eF="decopilot-hosted-harness",$U="decopilot-hosted-harness-sandboxed",V3="automations",CB="background-tools",Zj="task-board-github-reads";import{homedir as p$8}from"os";function t$8($){let Z=($??"").trim();return n$8.has(Z)?Z:"all"}function r$8($){let Z=($??"").trim();return o$8.has(Z)?Z:"development"}function lK1($,Z,Q){let Y=$==="worker"?0:Math.floor(Z*0.6);if(Q===void 0||Q==="")return Y;let X=Number(Q);return Number.isFinite(X)&&X>=0?X:Y}function DJ($){return $==="true"||$==="1"}function QV0($,Z,Q){if(Z===void 0||Z==="")return;let Y=Number(Z);if(!Number.isSafeInteger(Y)||Y<=0)throw Error(`${$} must be a positive integer`);if(Q!==void 0&&Y>Q)throw Error(`${$} must be at most ${Q}`);return Y}function uK($,Z,Q,Y){return QV0($,Z,Y)??Q}function s$8($){let Z={};for(let Q of($??"").split(",")){let Y=Q.trim();if(!Y)continue;let X=Y.indexOf("="),J=X>0?Y.slice(0,X).trim():"",G=X>0?Y.slice(X+1).trim():"";if(!J||!G){console.warn(`STRIPE_PLAN_PRICE_IDS: ignoring unparseable entry "${Y}" \u2014 expected price_xxx=planId`);continue}Z[J]=G}return Z}function a$8($,Z,Q,Y){if(Z===void 0||Z==="")return Q;let X=Number(Z);if(!Number.isSafeInteger(X)||X<0)throw Error(`${$} must be a non-negative integer`);if(Y!==void 0&&X>Y)throw Error(`${$} must be at most ${Y}`);return X}function ZV0($,Z){if($===void 0||$==="")return Z;return $==="true"||$==="1"}function uK1($){if(!$)return null;try{let Q=new URL($).hostname.replace(/^\[|\]$/g,"");if(Q==="localhost"||Q==="127.0.0.1"||Q==="::1")return null;return $}catch{return null}}function e$8($){return $===void 0||$===""||$==="true"||$==="1"}function $m($,Z){return $||Z}function cK1($,Z){let Q=$.home||Z.DATA_DIR||Z.DECOCMS_HOME||`${p$8()}/deco`,Y=$.localMode,X=$.nodeEnv||r$8(Z.NODE_ENV),J=Z.NATS_URL||"nats://localhost:4222",G={nodeEnv:X,port:uK("PORT",$.port||Z.PORT,3000,65535),baseUrl:$.baseUrl||Z.BASE_URL,publicUrl:$m(Z.STUDIO_PUBLIC_URL,Z.MESH_PUBLIC_URL),dataDir:Q,databasePgSsl:DJ(Z.DATABASE_PG_SSL),databasePoolMax:uK("DATABASE_POOL_MAX",Z.DATABASE_POOL_MAX,5),dbosPoolSize:uK("DBOS_POOL_SIZE",Z.DBOS_POOL_SIZE,5),betterAuthSecret:Z.BETTER_AUTH_SECRET||"",encryptionKey:Z.ENCRYPTION_KEY||"",studioJwtSecret:$m(Z.STUDIO_JWT_SECRET,Z.MESH_JWT_SECRET),localMode:Y,disableRateLimit:DJ(Z.DISABLE_RATE_LIMIT),jiraAllowLocalSiteUrl:DJ(Z.JIRA_ALLOW_LOCAL_SITE_URL),studioProvisionSecretKey:Z.STUDIO_PROVISION_SECRET_KEY,deploymentAdminEmails:(Z.DEPLOYMENT_ADMIN_EMAILS??"").split(",").map((W)=>W.trim().toLowerCase()).filter(Boolean),taskBoardAdminOrgIds:(Z.STUDIO_ADMIN_ORG_IDS??"").split(",").map((W)=>W.trim()).filter(Boolean),deploymentAdminToken:Z.DEPLOYMENT_ADMIN_TOKEN||void 0,clickhouseUrl:Z.CLICKHOUSE_URL,clickhouseMaxMemoryUsage:QV0("CLICKHOUSE_MAX_MEMORY_USAGE",Z.CLICKHOUSE_MAX_MEMORY_USAGE),monitoringOtlpEndpoint:Z.MONITORING_OTLP_ENDPOINT,otelServiceName:Z.OTEL_SERVICE_NAME||"studio",natsCredsPath:Z.NATS_CREDS,configPath:Z.CONFIG_PATH||"./config.json",aiGatewayEnabled:DJ(Z.DECO_AI_GATEWAY_ENABLED),aiGatewayUrl:Z.DECO_AI_GATEWAY_URL||"https://ai-site.deco.site",aiGatewayAdminToken:Z.DECO_AI_GATEWAY_ADMIN_TOKEN,stripeWebhookSecret:Z.STRIPE_WEBHOOK_SECRET,stripeSecretKey:Z.STRIPE_SECRET_KEY,stripeOrgPriceId:Z.STRIPE_ORG_PRICE_ID,stripePlanPriceIds:s$8(Z.STRIPE_PLAN_PRICE_IDS),stripePortalConfigurationId:Z.STRIPE_PORTAL_CONFIGURATION_ID,stripeTopupProductId:Z.STRIPE_TOPUP_PRODUCT_ID,topupFeePercent:a$8("STUDIO_TOPUP_FEE_PERCENT",Z.STUDIO_TOPUP_FEE_PERCENT,15,100),taskQuotaEnforced:DJ(Z.STUDIO_TASK_QUOTA_ENFORCED),freeTaskExecutions:uK("STUDIO_FREE_TASKS",Z.STUDIO_FREE_TASKS,3),monthlyTaskExecutions:uK("STUDIO_MONTHLY_TASKS",Z.STUDIO_MONTHLY_TASKS,10),maxRunsPerTask:uK("STUDIO_MAX_RUNS_PER_TASK",Z.STUDIO_MAX_RUNS_PER_TASK,5),enableDecoImport:DJ(Z.ENABLE_DECO_IMPORT),hostingControlPlaneGa:DJ(Z.HOSTING_CONTROL_PLANE_GA),monitorGa:DJ(Z.MONITOR_GA),plansEnabled:DJ(Z.STUDIO_PLANS_ENABLED),mcpCacheEnabled:ZV0(Z.MCP_CACHE_ENABLED,X!=="development"),orgFsPublicSetsJson:Z.ORGFS_PUBLIC_SETS,orgFsMountsDisabled:DJ(Z.DISABLE_ORGFS_MOUNTS),decopilotMaxConcurrentSubagents:uK("DECOPILOT_MAX_CONCURRENT_SUBAGENTS",Z.DECOPILOT_MAX_CONCURRENT_SUBAGENTS,4),decopilotMaxConcurrentHostedRuns:uK("DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS",Z.DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS,3),taskBoardReviewSweeperEnabled:ZV0(Z.TASK_BOARD_REVIEW_SWEEPER_ENABLED,!0),sandboxMaxConcurrentHostedRuns:uK("SANDBOX_MAX_CONCURRENT_HOSTED_RUNS",Z.SANDBOX_MAX_CONCURRENT_HOSTED_RUNS,12),s3Endpoint:Z.S3_ENDPOINT,s3Bucket:Z.S3_BUCKET,s3Region:Z.S3_REGION||"auto",s3AccessKeyId:Z.S3_ACCESS_KEY_ID,s3SecretAccessKey:Z.S3_SECRET_ACCESS_KEY,s3ForcePathStyle:e$8(Z.S3_FORCE_PATH_STYLE),monitoringS3Bucket:Z.MONITORING_S3_BUCKET,monitoringS3Endpoint:Z.MONITORING_S3_ENDPOINT,monitoringS3Region:Z.MONITORING_S3_REGION,monitoringS3AccessKeyId:Z.MONITORING_S3_ACCESS_KEY_ID,monitoringS3SecretAccessKey:Z.MONITORING_S3_SECRET_ACCESS_KEY,monitoringS3Prefix:Z.MONITORING_S3_PREFIX,duckdbExtensionDirectory:Z.DUCKDB_EXTENSION_DIRECTORY||"/opt/duckdb/extensions",duckdbMemoryLimit:Z.DUCKDB_MEMORY_LIMIT||void 0,duckdbThreads:QV0("DUCKDB_THREADS",Z.DUCKDB_THREADS),isCli:!0,noTui:$.noTui===!0,podName:Z.POD_NAME||crypto.randomUUID(),dispatchRole:t$8($m(Z.STUDIO_DISPATCH_ROLE,Z.MESH_DISPATCH_ROLE)),agentSandboxEnabled:DJ(Z.STUDIO_AGENT_SANDBOX_ENABLED),sandboxStickyHeadRefEnabled:DJ(Z.SANDBOX_STICKY_HEAD_REF),taskBoardRerunReusesPrBranch:ZV0(Z.TASK_BOARD_RERUN_REUSES_PR_BRANCH,!0),sandboxReleaseOnRunEndEnabled:DJ(Z.SANDBOX_RELEASE_ON_RUN_END),sandboxReleaseGraceMs:uK("SANDBOX_RELEASE_GRACE_MS",Z.SANDBOX_RELEASE_GRACE_MS,120000),decoSupabaseUrl:Z.DECO_SUPABASE_URL,decoSupabaseServiceKey:Z.DECO_SUPABASE_SERVICE_KEY,firecrawlApiKey:Z.FIRECRAWL_API_KEY,controlplaneRestUrl:Z.CONTROLPLANE_REST_URL,controlplaneServiceToken:Z.CONTROLPLANE_SERVICE_TOKEN,analyticsDataUrl:Z.ANALYTICS_URL,analyticsMasterToken:Z.ANALYTICS_MASTER_TOKEN,clickhouseAnalyticsUrl:Z.CLICKHOUSE_ANALYTICS_ADDRESS,clickhouseAnalyticsUsername:Z.CLICKHOUSE_ANALYTICS_USERNAME||"admin_monitor",clickhouseAnalyticsPassword:Z.CLICKHOUSE_ANALYTICS_PASSWORD,oneDollarStatsApiKey:Z.ONEDOLLAR_BACKEND_API_KEY,reportsInternalApiUrl:$m(Z.REPORTS_INTERNAL_API_URL,Z.COMMERCE_DISCOVERY_INTERNAL_API_URL),reportsInternalApiKey:$m(Z.REPORTS_INTERNAL_API_KEY,Z.COMMERCE_DISCOVERY_INTERNAL_API_KEY),s3TenantBucket:Z.S3_TENANT_BUCKET||"new-deco-sites-assets",s3TenantRegion:Z.S3_TENANT_REGION||"us-west-2",s3TenantEndpoint:Z.S3_TENANT_ENDPOINT,s3TenantPublicUrlBase:Z.S3_TENANT_PUBLIC_URL_BASE||"https://decoims.com",awsS3TenantRoleArn:Z.AWS_S3_TENANT_ROLE_ARN,awsS3TenantProvisionerAccessKeyId:Z.AWS_S3_TENANT_PROVISIONER_ACCESS_KEY_ID,awsS3TenantProvisionerSecretAccessKey:Z.AWS_S3_TENANT_PROVISIONER_SECRET_ACCESS_KEY};if(G.plansEnabled&&!G.studioJwtSecret)throw Error("STUDIO_PLANS_ENABLED requires an explicit gateway JWT secret. Set STUDIO_JWT_SECRET (or its legacy alias MESH_JWT_SECRET) to the same value as the gateway's MESH_JWT_SECRET. Refusing to fall back to BETTER_AUTH_SECRET: that mismatch 401s every entitlements call, which every feature gate reads as 'no answer' and fails OPEN.");if(G.plansEnabled&&!G.studioProvisionSecretKey)throw Error("STUDIO_PLANS_ENABLED requires STUDIO_PROVISION_SECRET_KEY, set to the same value as the gateway's STUDIO_PROVISION_KEY. Without it the gateway cannot identify this server, falls back to a per-user membership callback that 401s for any user who never completed the gateway OAuth flow, and every feature gate then fails OPEN.");if(G.plansEnabled&&!G.aiGatewayEnabled)throw Error("STUDIO_PLANS_ENABLED requires DECO_AI_GATEWAY_ENABLED=true. Plans are read from the gateway; with it disabled there is no adapter to ask, so every feature gate fails OPEN on both server and client and the paid product is free fleet-wide.");if(G.plansEnabled&&Object.keys(G.stripePlanPriceIds).length>0&&!G.aiGatewayAdminToken)throw Error("STRIPE_PLAN_PRICE_IDS is set but DECO_AI_GATEWAY_ADMIN_TOKEN is not. The Stripe webhook places the paid tier through the gateway's admin API, so without the token a customer is charged and the entitlement "+"is never granted \u2014 and AI_PLAN_SET cannot repair it, it accepts only "+"'free'.");if(G.plansEnabled&&Object.keys(G.stripePlanPriceIds).length>1&&!G.stripePortalConfigurationId)console.warn("STRIPE_PLAN_PRICE_IDS maps more than one plan but STRIPE_PORTAL_CONFIGURATION_ID is unset. An org that already has a subscription cannot change tier: the account's default portal configuration lists only the legacy plans, not the tiers, so Stripe refuses the update flow. First-time checkout is unaffected.");return{settings:G,externalDatabaseUrl:uK1(Z.DATABASE_URL),externalNatsUrl:uK1(J),skipMigrations:$.skipMigrations}}var n$8,o$8;var YV0=O(()=>{n$8=new Set(["all","worker","api"]);o$8=new Set(["production","development","test"])});function O0(){if(!I$0)$88();return I$0}function _B(){let $=O0();return!$.localMode&&$.agentSandboxEnabled}function $88(){if(I$0)return;let $={...process.env},Z=cK1({port:$.PORT||"3000",home:$.DATA_DIR||$.DECOCMS_HOME||"",localMode:$.DECOCMS_LOCAL_MODE==="true",skipMigrations:!0,noTui:$.DECO_NO_TUI==="true",vitePort:$.VITE_PORT,baseUrl:$.BASE_URL},$);I$0=Object.freeze({...Z.settings,databaseUrl:$.DATABASE_URL||"postgresql://postgres:postgres@localhost:5432/postgres",natsUrls:($.NATS_URL||"nats://localhost:4222").split(",").map((Q)=>Q.trim()).filter(Boolean)})}var I$0=null;var t1=O(()=>{YV0()});import{context as Z88,propagation as Q88,SpanKind as Y88,SpanStatusCode as XV0}from"@opentelemetry/api";function J88($,Z){let Q=$ instanceof Error?$.name:void 0;if(Q==="TimeoutError")return"timeout";if(Q==="AbortError")return"cancelled";if(Z?.aborted)return"cancelled";return null}function G88($,Z){if(Z.startsWith("/_sandbox/")){if($===404)return"daemon_gone";if($===409)return"daemon_not_ready"}if($===404&&Z.includes("/sandboxclaims/"))return"claim_gone";return null}function W88($,Z){if($===404&&(Z==="/.decofile"||Z==="/live/_meta"||Z==="/sprites.svg"))return"not_a_deco_site";return null}function K88($){if(!($ instanceof Error))return!1;if($.message.includes("socket connection was closed"))return!0;let Z=$.code;return Z==="ECONNRESET"||Z==="EPIPE"}async function H88($,Z){let Q,Y;if($ instanceof Request)Q=new URL($.url),Y=Z?.method??$.method;else if($ instanceof URL)Q=$,Y=Z?.method??"GET";else Q=new URL($),Y=Z?.method??"GET";let X=`${Y} ${Q.host}`;return vB.startActiveSpan(X,{kind:Y88.CLIENT,attributes:{"http.request.method":Y,"url.full":Q.href,"url.scheme":Q.protocol.replace(":",""),"url.path":Q.pathname,"url.query":Q.search||void 0,"server.address":Q.hostname,"server.port":Q.port?Number(Q.port):void 0}},async(J)=>{try{let G=new Headers(Z?.headers??($ instanceof Request?$.headers:{}));Q88.inject(Z88.active(),G,{set:(N,B,D)=>N.set(B,D)});let W={...Z,headers:G},K=await X88($,W);J.setAttribute("http.response.status_code",K.status);let H=K.status===405&&Y==="GET"&&(G.get("accept")??"").includes("text/event-stream"),F=K.status>=400?G88(K.status,Q.pathname):null,U=K.status>=400?W88(K.status,Q.pathname):null;if(K.status>=400&&!H&&!F&&!U)J.setStatus({code:XV0.ERROR,message:`HTTP ${K.status}`});else{if(F)J.setAttribute("sandbox.lifecycle",F);if(U)J.setAttribute("preview.probe",U);J.setStatus({code:XV0.OK})}return K}catch(G){let W=Z?.signal??($ instanceof Request?$.signal:void 0),K=J88(G,W??void 0);if(K)J.setAttribute("abort.reason",K);else if(K88(G)&&Q.pathname.startsWith("/_sandbox/"))J.setAttribute("sandbox.lifecycle","connection_closed");else J.recordException(G),J.setStatus({code:XV0.ERROR,message:G instanceof Error?G.message:"Fetch failed"});throw G}finally{J.end()}})}function dK1(){globalThis.fetch=H88}var X88;var mK1=O(()=>{W6();X88=globalThis.fetch});import{join as JV0}from"path";function sG(){return JV0(O0().dataDir,"logs")}function Yx(){return JV0(O0().dataDir,"traces")}function ZU(){return JV0(O0().dataDir,"metrics")}function fB($,Z){let Q=$[Z];return Q!=null?String(Q):""}function Zm($,Z){let Q=$[Z];return Q!=null&&Q!==""?String(Q):null}function pK1($){let{attributes:Z}=$,Q=Z[M4.IS_ERROR],Y=Z[M4.DURATION_MS];return{v:1,id:$.id,type:fB(Z,M4.TYPE)||Qm,organization_id:fB(Z,M4.ORGANIZATION_ID),connection_id:fB(Z,M4.CONNECTION_ID),connection_title:fB(Z,M4.CONNECTION_TITLE),tool_name:fB(Z,M4.TOOL_NAME),input:fB(Z,M4.INPUT),output:fB(Z,M4.OUTPUT),is_error:Q===!0||Q===1||Q==="true"?1:0,error_message:Zm(Z,M4.ERROR_MESSAGE),duration_ms:typeof Y==="number"?Y:Number(Y)||0,timestamp:new Date(Number($.timestampNano/1000000n)).toISOString(),user_id:Zm(Z,M4.USER_ID),request_id:fB(Z,M4.REQUEST_ID),user_agent:Zm(Z,M4.USER_AGENT),virtual_mcp_id:Zm(Z,M4.VIRTUAL_MCP_ID),properties:Zm(Z,M4.PROPERTIES)}}function k$0($){return $[0]*1000+$[1]/1e6}function Jx($){return new Date(k$0($)).toISOString()}var iK1="mcp.proxy.callTool",M4,Qm="tool_call",Xx="llm_call",V$0="decopilot";var k3=O(()=>{t1();M4={TYPE:"studio.monitoring.type",ORGANIZATION_ID:"studio.monitoring.organization_id",CONNECTION_ID:"studio.monitoring.connection_id",CONNECTION_TITLE:"studio.monitoring.connection_title",TOOL_NAME:"studio.monitoring.tool_name",INPUT:"studio.monitoring.input",OUTPUT:"studio.monitoring.output",IS_ERROR:"studio.monitoring.is_error",ERROR_MESSAGE:"studio.monitoring.error_message",DURATION_MS:"studio.monitoring.duration_ms",USER_ID:"studio.monitoring.user_id",REQUEST_ID:"studio.monitoring.request_id",USER_AGENT:"studio.monitoring.user_agent",VIRTUAL_MCP_ID:"studio.monitoring.virtual_mcp_id",PROPERTIES:"studio.monitoring.properties"}});import{ExportResultCode as S$0}from"@opentelemetry/core";import{mkdir as F88,rename as U88,writeFile as N88}from"fs/promises";import{join as C$0}from"path";class Qj{bufferItems=[];bufferBytes=0;flushTimer=null;flushQueue=Promise.resolve();basePath;flushThreshold;maxBufferBytes;isShutdown=!1;knownDirs=new Set;partitionKey;constructor($){this.basePath=$.basePath,this.flushThreshold=$.flushThreshold??1000,this.maxBufferBytes=$.maxBufferBytes??10485760,this.partitionKey=$.partitionKey;let Z=$.flushIntervalMs??60000;if(Z>0&&Z<3600000){if(this.flushTimer=setInterval(()=>{this.flush().catch((Q)=>{console.error("[NDJSONExporter] Timer flush failed:",Q)})},Z),this.flushTimer&&typeof this.flushTimer==="object"&&"unref"in this.flushTimer)this.flushTimer.unref()}}exportRows($){if(this.isShutdown)return Promise.resolve({code:S$0.FAILED});for(let Z of $){let Q=JSON.stringify(Z),Y=this.partitionKey?this.partitionKey(Z):"";this.bufferItems.push({partition:Y,json:Q}),this.bufferBytes+=Buffer.byteLength(Q,"utf8")+1}if(this.bufferItems.length>=this.flushThreshold||this.bufferBytes>=this.maxBufferBytes)return this.flush().then(()=>({code:S$0.SUCCESS})).catch((Z)=>{return console.error("[NDJSONExporter] Flush failed:",Z),{code:S$0.FAILED}});return Promise.resolve({code:S$0.SUCCESS})}async shutdown(){if(this.isShutdown=!0,this.flushTimer)clearInterval(this.flushTimer),this.flushTimer=null;try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}async forceFlush(){try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}flush(){let Z=this.flushQueue.catch(()=>{}).then(()=>this.doFlush());return this.flushQueue=Z,Z}async doFlush(){if(this.bufferItems.length===0)return;let $=this.bufferItems;this.bufferItems=[],this.bufferBytes=0;let Z=new Map;for(let X of $){let J=Z.get(X.partition);if(!J)J=[],Z.set(X.partition,J);J.push(X.json)}let Q=await Promise.allSettled(Array.from(Z.entries()).map(([X,J])=>this.writeNDJSON(J,X).then(()=>X))),Y=Q.find((X)=>X.status==="rejected");if(Y){let X=new Set;for(let G of Q)if(G.status==="fulfilled")X.add(G.value);let J=$.filter((G)=>!X.has(G.partition));this.bufferItems=J.concat(this.bufferItems),this.bufferBytes=0;for(let G of this.bufferItems)this.bufferBytes+=Buffer.byteLength(G.json,"utf8")+1;throw Y.reason}}async writeNDJSON($,Z){let Q=new Date,Y=[String(Q.getUTCFullYear()),String(Q.getUTCMonth()+1).padStart(2,"0"),String(Q.getUTCDate()).padStart(2,"0"),String(Q.getUTCHours()).padStart(2,"0")],X=Z?C$0(this.basePath,Z,...Y):C$0(this.basePath,...Y);if(!this.knownDirs.has(X))await F88(X,{recursive:!0,mode:448}),this.knownDirs.add(X);let J=`${crypto.randomUUID()}.ndjson`,G=C$0(X,`.${J}.tmp`),W=C$0(X,J),K=$.join(`
2
+ var b$8=Object.create;var{getPrototypeOf:x$8,defineProperty:ed,getOwnPropertyNames:_K1,getOwnPropertyDescriptor:y$8}=Object,vK1=Object.prototype.hasOwnProperty;function fK1($){return this[$]}var g$8,h$8,V=($,Z,Q)=>{var Y=$!=null&&typeof $==="object";if(Y){var X=Z?g$8??=new WeakMap:h$8??=new WeakMap,J=X.get($);if(J)return J}Q=$!=null?b$8(x$8($)):{};let G=Z||!$||!$.__esModule?ed(Q,"default",{value:$,enumerable:!0}):Q;for(let W of _K1($))if(!vK1.call(G,W))ed(G,W,{get:fK1.bind($,W),enumerable:!0});if(Y)X.set($,G);return G},eI0=($)=>{var Z=(CK1??=new WeakMap).get($),Q;if(Z)return Z;if(Z=ed({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function"){for(var Y of _K1($))if(!vK1.call(Z,Y))ed(Z,Y,{get:fK1.bind($,Y),enumerable:!(Q=y$8($,Y))||Q.enumerable})}return CK1.set($,Z),Z},CK1,_=($,Z)=>()=>(Z||$((Z={exports:{}}).exports,Z),Z.exports);var u$8=($)=>$;function l$8($,Z){this[$]=u$8.bind(null,Z)}var q4=($,Z)=>{for(var Q in Z)ed($,Q,{get:Z[Q],enumerable:!0,configurable:!0,set:l$8.bind(Z,Q)})};var O=($,Z)=>()=>($&&(Z=$($=0)),Z);var A0=import.meta.require;function P$($,Z={}){let{signal:Q}=Z;if(Q?.aborted)return Promise.reject(Q.reason);return new Promise((Y,X)=>{let J=()=>{clearTimeout(+W),X(Q?.reason)},W=c$8(()=>{Q?.removeEventListener("abort",J),Y()},$);Q?.addEventListener("abort",J,{once:!0})})}function c$8($,Z){if(Z=Math.trunc(Math.max(Z,0)||0),Z<=$V0){let J=Number(setTimeout($,Z));return{valueOf:()=>J}}let Q=Date.now(),Y,X=()=>{let J=Z-(Date.now()-Q);Y=J>$V0?Number(setTimeout(X,$V0)):Number(setTimeout($,J))};return X(),{valueOf:()=>Y}}var $V0=2147483647;function _7($,Z,Q,Y,X){let J=Math.min($,Z*Y**Q);return(1-X*Math.random())*J}async function A8($,Z){let{multiplier:Q=2,maxTimeout:Y=60000,maxAttempts:X=5,minTimeout:J=1000,jitter:G=1,isRetriable:W=()=>!0,signal:K}=Z??{};if(!Number.isInteger(X)||X<1)throw RangeError(`Cannot retry as 'maxAttempts' must be a positive integer: current value is ${X}`);if(!Number.isFinite(Q)||Q<1)throw RangeError(`Cannot retry as 'multiplier' must be a finite number >= 1: current value is ${Q}`);if(Number.isNaN(Y)||Y<=0)throw RangeError(`Cannot retry as 'maxTimeout' must be a positive number: current value is ${Y}`);if(Number.isNaN(J)||J<0)throw RangeError(`Cannot retry as 'minTimeout' must be >= 0: current value is ${J}`);if(J>Y)throw RangeError(`Cannot retry as 'minTimeout' must be <= 'maxTimeout': current values 'minTimeout=${J}', 'maxTimeout=${Y}'`);if(Number.isNaN(G)||G<0||G>1)throw RangeError(`Cannot retry as 'jitter' must be between 0 and 1: current value is ${G}`);let H=0;while(!0){K?.throwIfAborted();try{return await $()}catch(F){if(!W(F))throw F;if(H+1>=X)throw new L5(F,X);let U=_7(Y,J,H,Q,G);await P$(U,K?{signal:K}:void 0)}H++}}var L5;var bK1=O(()=>{L5=class L5 extends Error{constructor($,Z){super(`Retrying exceeded the maxAttempts (${Z}).`);this.name="RetryError",this.cause=$}}});async function MZ($,Z,Q){let Y=Array($.length),X=0,J=Array.from({length:Math.min(Z,$.length)},async()=>{for(;;){let G=X++;if(G>=$.length)return;Y[G]=await Q($[G])}});return await Promise.all(J),Y}var m$=O(()=>{bK1()});var I3="thread-gate",eF="decopilot-hosted-harness",$U="decopilot-hosted-harness-sandboxed",V3="automations",CB="background-tools",Zj="task-board-github-reads";import{homedir as p$8}from"os";function t$8($){let Z=($??"").trim();return n$8.has(Z)?Z:"all"}function r$8($){let Z=($??"").trim();return o$8.has(Z)?Z:"development"}function lK1($,Z,Q){let Y=$==="worker"?0:Math.floor(Z*0.6);if(Q===void 0||Q==="")return Y;let X=Number(Q);return Number.isFinite(X)&&X>=0?X:Y}function DJ($){return $==="true"||$==="1"}function QV0($,Z,Q){if(Z===void 0||Z==="")return;let Y=Number(Z);if(!Number.isSafeInteger(Y)||Y<=0)throw Error(`${$} must be a positive integer`);if(Q!==void 0&&Y>Q)throw Error(`${$} must be at most ${Q}`);return Y}function uK($,Z,Q,Y){return QV0($,Z,Y)??Q}function s$8($){let Z={};for(let Q of($??"").split(",")){let Y=Q.trim();if(!Y)continue;let X=Y.indexOf("="),J=X>0?Y.slice(0,X).trim():"",G=X>0?Y.slice(X+1).trim():"";if(!J||!G){console.warn(`STRIPE_PLAN_PRICE_IDS: ignoring unparseable entry "${Y}" \u2014 expected price_xxx=planId`);continue}Z[J]=G}return Z}function a$8($,Z,Q,Y){if(Z===void 0||Z==="")return Q;let X=Number(Z);if(!Number.isSafeInteger(X)||X<0)throw Error(`${$} must be a non-negative integer`);if(Y!==void 0&&X>Y)throw Error(`${$} must be at most ${Y}`);return X}function ZV0($,Z){if($===void 0||$==="")return Z;return $==="true"||$==="1"}function uK1($){if(!$)return null;try{let Q=new URL($).hostname.replace(/^\[|\]$/g,"");if(Q==="localhost"||Q==="127.0.0.1"||Q==="::1")return null;return $}catch{return null}}function e$8($){return $===void 0||$===""||$==="true"||$==="1"}function $m($,Z){return $||Z}function cK1($,Z){let Q=$.home||Z.DATA_DIR||Z.DECOCMS_HOME||`${p$8()}/deco`,Y=$.localMode,X=$.nodeEnv||r$8(Z.NODE_ENV),J=Z.NATS_URL||"nats://localhost:4222",G={nodeEnv:X,port:uK("PORT",$.port||Z.PORT,3000,65535),baseUrl:$.baseUrl||Z.BASE_URL,publicUrl:$m(Z.STUDIO_PUBLIC_URL,Z.MESH_PUBLIC_URL),dataDir:Q,databasePgSsl:DJ(Z.DATABASE_PG_SSL),databasePoolMax:uK("DATABASE_POOL_MAX",Z.DATABASE_POOL_MAX,5),dbosPoolSize:uK("DBOS_POOL_SIZE",Z.DBOS_POOL_SIZE,5),betterAuthSecret:Z.BETTER_AUTH_SECRET||"",encryptionKey:Z.ENCRYPTION_KEY||"",studioJwtSecret:$m(Z.STUDIO_JWT_SECRET,Z.MESH_JWT_SECRET),localMode:Y,disableRateLimit:DJ(Z.DISABLE_RATE_LIMIT),jiraAllowLocalSiteUrl:DJ(Z.JIRA_ALLOW_LOCAL_SITE_URL),studioProvisionSecretKey:Z.STUDIO_PROVISION_SECRET_KEY,deploymentAdminEmails:(Z.DEPLOYMENT_ADMIN_EMAILS??"").split(",").map((W)=>W.trim().toLowerCase()).filter(Boolean),taskBoardAdminOrgIds:(Z.STUDIO_ADMIN_ORG_IDS??"").split(",").map((W)=>W.trim()).filter(Boolean),deploymentAdminToken:Z.DEPLOYMENT_ADMIN_TOKEN||void 0,clickhouseUrl:Z.CLICKHOUSE_URL,clickhouseMaxMemoryUsage:QV0("CLICKHOUSE_MAX_MEMORY_USAGE",Z.CLICKHOUSE_MAX_MEMORY_USAGE),monitoringOtlpEndpoint:Z.MONITORING_OTLP_ENDPOINT,otelServiceName:Z.OTEL_SERVICE_NAME||"studio",natsCredsPath:Z.NATS_CREDS,configPath:Z.CONFIG_PATH||"./config.json",aiGatewayEnabled:DJ(Z.DECO_AI_GATEWAY_ENABLED),aiGatewayUrl:Z.DECO_AI_GATEWAY_URL||"https://ai-site.deco.site",aiGatewayAdminToken:Z.DECO_AI_GATEWAY_ADMIN_TOKEN,stripeWebhookSecret:Z.STRIPE_WEBHOOK_SECRET,stripeSecretKey:Z.STRIPE_SECRET_KEY,stripeOrgPriceId:Z.STRIPE_ORG_PRICE_ID,stripePlanPriceIds:s$8(Z.STRIPE_PLAN_PRICE_IDS),stripePortalConfigurationId:Z.STRIPE_PORTAL_CONFIGURATION_ID,stripeTopupProductId:Z.STRIPE_TOPUP_PRODUCT_ID,topupFeePercent:a$8("STUDIO_TOPUP_FEE_PERCENT",Z.STUDIO_TOPUP_FEE_PERCENT,15,100),taskQuotaEnforced:DJ(Z.STUDIO_TASK_QUOTA_ENFORCED),freeTaskExecutions:uK("STUDIO_FREE_TASKS",Z.STUDIO_FREE_TASKS,3),monthlyTaskExecutions:uK("STUDIO_MONTHLY_TASKS",Z.STUDIO_MONTHLY_TASKS,10),maxRunsPerTask:uK("STUDIO_MAX_RUNS_PER_TASK",Z.STUDIO_MAX_RUNS_PER_TASK,5),enableDecoImport:DJ(Z.ENABLE_DECO_IMPORT),hostingControlPlaneGa:DJ(Z.HOSTING_CONTROL_PLANE_GA),monitorGa:DJ(Z.MONITOR_GA),plansEnabled:DJ(Z.STUDIO_PLANS_ENABLED),mcpCacheEnabled:ZV0(Z.MCP_CACHE_ENABLED,X!=="development"),orgFsPublicSetsJson:Z.ORGFS_PUBLIC_SETS,orgFsMountsDisabled:DJ(Z.DISABLE_ORGFS_MOUNTS),decopilotMaxConcurrentSubagents:uK("DECOPILOT_MAX_CONCURRENT_SUBAGENTS",Z.DECOPILOT_MAX_CONCURRENT_SUBAGENTS,4),decopilotMaxConcurrentHostedRuns:uK("DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS",Z.DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS,3),taskBoardReviewSweeperEnabled:ZV0(Z.TASK_BOARD_REVIEW_SWEEPER_ENABLED,!0),sandboxMaxConcurrentHostedRuns:uK("SANDBOX_MAX_CONCURRENT_HOSTED_RUNS",Z.SANDBOX_MAX_CONCURRENT_HOSTED_RUNS,12),s3Endpoint:Z.S3_ENDPOINT,s3Bucket:Z.S3_BUCKET,s3Region:Z.S3_REGION||"auto",s3AccessKeyId:Z.S3_ACCESS_KEY_ID,s3SecretAccessKey:Z.S3_SECRET_ACCESS_KEY,s3ForcePathStyle:e$8(Z.S3_FORCE_PATH_STYLE),monitoringS3Bucket:Z.MONITORING_S3_BUCKET,monitoringS3Endpoint:Z.MONITORING_S3_ENDPOINT,monitoringS3Region:Z.MONITORING_S3_REGION,monitoringS3AccessKeyId:Z.MONITORING_S3_ACCESS_KEY_ID,monitoringS3SecretAccessKey:Z.MONITORING_S3_SECRET_ACCESS_KEY,monitoringS3Prefix:Z.MONITORING_S3_PREFIX,duckdbExtensionDirectory:Z.DUCKDB_EXTENSION_DIRECTORY||"/opt/duckdb/extensions",duckdbMemoryLimit:Z.DUCKDB_MEMORY_LIMIT||void 0,duckdbThreads:QV0("DUCKDB_THREADS",Z.DUCKDB_THREADS),isCli:!0,noTui:$.noTui===!0,podName:Z.POD_NAME||crypto.randomUUID(),dispatchRole:t$8($m(Z.STUDIO_DISPATCH_ROLE,Z.MESH_DISPATCH_ROLE)),agentSandboxEnabled:DJ(Z.STUDIO_AGENT_SANDBOX_ENABLED),sandboxStickyHeadRefEnabled:DJ(Z.SANDBOX_STICKY_HEAD_REF),taskBoardRerunReusesPrBranch:ZV0(Z.TASK_BOARD_RERUN_REUSES_PR_BRANCH,!0),sandboxReleaseOnRunEndEnabled:DJ(Z.SANDBOX_RELEASE_ON_RUN_END),sandboxReleaseGraceMs:uK("SANDBOX_RELEASE_GRACE_MS",Z.SANDBOX_RELEASE_GRACE_MS,120000),decoSupabaseUrl:Z.DECO_SUPABASE_URL,decoSupabaseServiceKey:Z.DECO_SUPABASE_SERVICE_KEY,firecrawlApiKey:Z.FIRECRAWL_API_KEY,controlplaneRestUrl:Z.CONTROLPLANE_REST_URL,controlplaneServiceToken:Z.CONTROLPLANE_SERVICE_TOKEN,analyticsDataUrl:Z.ANALYTICS_URL,analyticsMasterToken:Z.ANALYTICS_MASTER_TOKEN,clickhouseAnalyticsUrl:Z.CLICKHOUSE_ANALYTICS_ADDRESS,clickhouseAnalyticsUsername:Z.CLICKHOUSE_ANALYTICS_USERNAME||"admin_monitor",clickhouseAnalyticsPassword:Z.CLICKHOUSE_ANALYTICS_PASSWORD,oneDollarStatsApiKey:Z.ONEDOLLAR_BACKEND_API_KEY,reportsInternalApiUrl:$m(Z.REPORTS_INTERNAL_API_URL,Z.COMMERCE_DISCOVERY_INTERNAL_API_URL),reportsInternalApiKey:$m(Z.REPORTS_INTERNAL_API_KEY,Z.COMMERCE_DISCOVERY_INTERNAL_API_KEY),s3TenantBucket:Z.S3_TENANT_BUCKET||"new-deco-sites-assets",s3TenantRegion:Z.S3_TENANT_REGION||"us-west-2",s3TenantEndpoint:Z.S3_TENANT_ENDPOINT,s3TenantPublicUrlBase:Z.S3_TENANT_PUBLIC_URL_BASE||"https://decoims.com",awsS3TenantRoleArn:Z.AWS_S3_TENANT_ROLE_ARN,awsS3TenantProvisionerAccessKeyId:Z.AWS_S3_TENANT_PROVISIONER_ACCESS_KEY_ID,awsS3TenantProvisionerSecretAccessKey:Z.AWS_S3_TENANT_PROVISIONER_SECRET_ACCESS_KEY};if(G.plansEnabled&&!G.studioJwtSecret)throw Error("STUDIO_PLANS_ENABLED requires an explicit gateway JWT secret. Set STUDIO_JWT_SECRET (or its legacy alias MESH_JWT_SECRET) to the same value as the gateway's MESH_JWT_SECRET. Refusing to fall back to BETTER_AUTH_SECRET: that mismatch 401s every entitlements call, which every feature gate reads as 'no answer' and fails OPEN.");if(G.plansEnabled&&!G.studioProvisionSecretKey)throw Error("STUDIO_PLANS_ENABLED requires STUDIO_PROVISION_SECRET_KEY, set to the same value as the gateway's STUDIO_PROVISION_KEY. Without it the gateway cannot identify this server, falls back to a per-user membership callback that 401s for any user who never completed the gateway OAuth flow, and every feature gate then fails OPEN.");if(G.plansEnabled&&!G.aiGatewayEnabled)throw Error("STUDIO_PLANS_ENABLED requires DECO_AI_GATEWAY_ENABLED=true. Plans are read from the gateway; with it disabled there is no adapter to ask, so every feature gate fails OPEN on both server and client and the paid product is free fleet-wide.");if(G.plansEnabled&&Object.keys(G.stripePlanPriceIds).length>0&&!G.aiGatewayAdminToken)throw Error("STRIPE_PLAN_PRICE_IDS is set but DECO_AI_GATEWAY_ADMIN_TOKEN is not. The Stripe webhook places the paid tier through the gateway's admin API, so without the token a customer is charged and the entitlement "+"is never granted \u2014 and AI_PLAN_SET cannot repair it, it accepts only "+"'free'.");if(G.plansEnabled&&Object.keys(G.stripePlanPriceIds).length>1&&!G.stripePortalConfigurationId)console.warn("STRIPE_PLAN_PRICE_IDS maps more than one plan but STRIPE_PORTAL_CONFIGURATION_ID is unset. An org that already has a subscription cannot change tier: the account's default portal configuration lists only the legacy plans, not the tiers, so Stripe refuses the update flow. First-time checkout is unaffected.");return{settings:G,externalDatabaseUrl:uK1(Z.DATABASE_URL),externalNatsUrl:uK1(J),skipMigrations:$.skipMigrations}}var n$8,o$8;var YV0=O(()=>{n$8=new Set(["all","worker","api"]);o$8=new Set(["production","development","test"])});function O0(){if(!I$0)$88();return I$0}function _B(){return O0().agentSandboxEnabled}function $88(){if(I$0)return;let $={...process.env},Z=cK1({port:$.PORT||"3000",home:$.DATA_DIR||$.DECOCMS_HOME||"",localMode:$.DECOCMS_LOCAL_MODE==="true",skipMigrations:!0,noTui:$.DECO_NO_TUI==="true",vitePort:$.VITE_PORT,baseUrl:$.BASE_URL},$);I$0=Object.freeze({...Z.settings,databaseUrl:$.DATABASE_URL||"postgresql://postgres:postgres@localhost:5432/postgres",natsUrls:($.NATS_URL||"nats://localhost:4222").split(",").map((Q)=>Q.trim()).filter(Boolean)})}var I$0=null;var t1=O(()=>{YV0()});import{context as Z88,propagation as Q88,SpanKind as Y88,SpanStatusCode as XV0}from"@opentelemetry/api";function J88($,Z){let Q=$ instanceof Error?$.name:void 0;if(Q==="TimeoutError")return"timeout";if(Q==="AbortError")return"cancelled";if(Z?.aborted)return"cancelled";return null}function G88($,Z){if(Z.startsWith("/_sandbox/")){if($===404)return"daemon_gone";if($===409)return"daemon_not_ready"}if($===404&&Z.includes("/sandboxclaims/"))return"claim_gone";return null}function W88($,Z){if($===404&&(Z==="/.decofile"||Z==="/live/_meta"||Z==="/sprites.svg"))return"not_a_deco_site";return null}function K88($){if(!($ instanceof Error))return!1;if($.message.includes("socket connection was closed"))return!0;let Z=$.code;return Z==="ECONNRESET"||Z==="EPIPE"}async function H88($,Z){let Q,Y;if($ instanceof Request)Q=new URL($.url),Y=Z?.method??$.method;else if($ instanceof URL)Q=$,Y=Z?.method??"GET";else Q=new URL($),Y=Z?.method??"GET";let X=`${Y} ${Q.host}`;return vB.startActiveSpan(X,{kind:Y88.CLIENT,attributes:{"http.request.method":Y,"url.full":Q.href,"url.scheme":Q.protocol.replace(":",""),"url.path":Q.pathname,"url.query":Q.search||void 0,"server.address":Q.hostname,"server.port":Q.port?Number(Q.port):void 0}},async(J)=>{try{let G=new Headers(Z?.headers??($ instanceof Request?$.headers:{}));Q88.inject(Z88.active(),G,{set:(N,B,D)=>N.set(B,D)});let W={...Z,headers:G},K=await X88($,W);J.setAttribute("http.response.status_code",K.status);let H=K.status===405&&Y==="GET"&&(G.get("accept")??"").includes("text/event-stream"),F=K.status>=400?G88(K.status,Q.pathname):null,U=K.status>=400?W88(K.status,Q.pathname):null;if(K.status>=400&&!H&&!F&&!U)J.setStatus({code:XV0.ERROR,message:`HTTP ${K.status}`});else{if(F)J.setAttribute("sandbox.lifecycle",F);if(U)J.setAttribute("preview.probe",U);J.setStatus({code:XV0.OK})}return K}catch(G){let W=Z?.signal??($ instanceof Request?$.signal:void 0),K=J88(G,W??void 0);if(K)J.setAttribute("abort.reason",K);else if(K88(G)&&Q.pathname.startsWith("/_sandbox/"))J.setAttribute("sandbox.lifecycle","connection_closed");else J.recordException(G),J.setStatus({code:XV0.ERROR,message:G instanceof Error?G.message:"Fetch failed"});throw G}finally{J.end()}})}function dK1(){globalThis.fetch=H88}var X88;var mK1=O(()=>{W6();X88=globalThis.fetch});import{join as JV0}from"path";function sG(){return JV0(O0().dataDir,"logs")}function Yx(){return JV0(O0().dataDir,"traces")}function ZU(){return JV0(O0().dataDir,"metrics")}function fB($,Z){let Q=$[Z];return Q!=null?String(Q):""}function Zm($,Z){let Q=$[Z];return Q!=null&&Q!==""?String(Q):null}function pK1($){let{attributes:Z}=$,Q=Z[M4.IS_ERROR],Y=Z[M4.DURATION_MS];return{v:1,id:$.id,type:fB(Z,M4.TYPE)||Qm,organization_id:fB(Z,M4.ORGANIZATION_ID),connection_id:fB(Z,M4.CONNECTION_ID),connection_title:fB(Z,M4.CONNECTION_TITLE),tool_name:fB(Z,M4.TOOL_NAME),input:fB(Z,M4.INPUT),output:fB(Z,M4.OUTPUT),is_error:Q===!0||Q===1||Q==="true"?1:0,error_message:Zm(Z,M4.ERROR_MESSAGE),duration_ms:typeof Y==="number"?Y:Number(Y)||0,timestamp:new Date(Number($.timestampNano/1000000n)).toISOString(),user_id:Zm(Z,M4.USER_ID),request_id:fB(Z,M4.REQUEST_ID),user_agent:Zm(Z,M4.USER_AGENT),virtual_mcp_id:Zm(Z,M4.VIRTUAL_MCP_ID),properties:Zm(Z,M4.PROPERTIES)}}function k$0($){return $[0]*1000+$[1]/1e6}function Jx($){return new Date(k$0($)).toISOString()}var iK1="mcp.proxy.callTool",M4,Qm="tool_call",Xx="llm_call",V$0="decopilot";var k3=O(()=>{t1();M4={TYPE:"studio.monitoring.type",ORGANIZATION_ID:"studio.monitoring.organization_id",CONNECTION_ID:"studio.monitoring.connection_id",CONNECTION_TITLE:"studio.monitoring.connection_title",TOOL_NAME:"studio.monitoring.tool_name",INPUT:"studio.monitoring.input",OUTPUT:"studio.monitoring.output",IS_ERROR:"studio.monitoring.is_error",ERROR_MESSAGE:"studio.monitoring.error_message",DURATION_MS:"studio.monitoring.duration_ms",USER_ID:"studio.monitoring.user_id",REQUEST_ID:"studio.monitoring.request_id",USER_AGENT:"studio.monitoring.user_agent",VIRTUAL_MCP_ID:"studio.monitoring.virtual_mcp_id",PROPERTIES:"studio.monitoring.properties"}});import{ExportResultCode as S$0}from"@opentelemetry/core";import{mkdir as F88,rename as U88,writeFile as N88}from"fs/promises";import{join as C$0}from"path";class Qj{bufferItems=[];bufferBytes=0;flushTimer=null;flushQueue=Promise.resolve();basePath;flushThreshold;maxBufferBytes;isShutdown=!1;knownDirs=new Set;partitionKey;constructor($){this.basePath=$.basePath,this.flushThreshold=$.flushThreshold??1000,this.maxBufferBytes=$.maxBufferBytes??10485760,this.partitionKey=$.partitionKey;let Z=$.flushIntervalMs??60000;if(Z>0&&Z<3600000){if(this.flushTimer=setInterval(()=>{this.flush().catch((Q)=>{console.error("[NDJSONExporter] Timer flush failed:",Q)})},Z),this.flushTimer&&typeof this.flushTimer==="object"&&"unref"in this.flushTimer)this.flushTimer.unref()}}exportRows($){if(this.isShutdown)return Promise.resolve({code:S$0.FAILED});for(let Z of $){let Q=JSON.stringify(Z),Y=this.partitionKey?this.partitionKey(Z):"";this.bufferItems.push({partition:Y,json:Q}),this.bufferBytes+=Buffer.byteLength(Q,"utf8")+1}if(this.bufferItems.length>=this.flushThreshold||this.bufferBytes>=this.maxBufferBytes)return this.flush().then(()=>({code:S$0.SUCCESS})).catch((Z)=>{return console.error("[NDJSONExporter] Flush failed:",Z),{code:S$0.FAILED}});return Promise.resolve({code:S$0.SUCCESS})}async shutdown(){if(this.isShutdown=!0,this.flushTimer)clearInterval(this.flushTimer),this.flushTimer=null;try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}async forceFlush(){try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}flush(){let Z=this.flushQueue.catch(()=>{}).then(()=>this.doFlush());return this.flushQueue=Z,Z}async doFlush(){if(this.bufferItems.length===0)return;let $=this.bufferItems;this.bufferItems=[],this.bufferBytes=0;let Z=new Map;for(let X of $){let J=Z.get(X.partition);if(!J)J=[],Z.set(X.partition,J);J.push(X.json)}let Q=await Promise.allSettled(Array.from(Z.entries()).map(([X,J])=>this.writeNDJSON(J,X).then(()=>X))),Y=Q.find((X)=>X.status==="rejected");if(Y){let X=new Set;for(let G of Q)if(G.status==="fulfilled")X.add(G.value);let J=$.filter((G)=>!X.has(G.partition));this.bufferItems=J.concat(this.bufferItems),this.bufferBytes=0;for(let G of this.bufferItems)this.bufferBytes+=Buffer.byteLength(G.json,"utf8")+1;throw Y.reason}}async writeNDJSON($,Z){let Q=new Date,Y=[String(Q.getUTCFullYear()),String(Q.getUTCMonth()+1).padStart(2,"0"),String(Q.getUTCDate()).padStart(2,"0"),String(Q.getUTCHours()).padStart(2,"0")],X=Z?C$0(this.basePath,Z,...Y):C$0(this.basePath,...Y);if(!this.knownDirs.has(X))await F88(X,{recursive:!0,mode:448}),this.knownDirs.add(X);let J=`${crypto.randomUUID()}.ndjson`,G=C$0(X,`.${J}.tmp`),W=C$0(X,J),K=$.join(`
3
3
  `)+`
4
4
  `;await N88(G,K,{mode:384}),await U88(G,W)}}var _$0=()=>{};import{ExportResultCode as B88}from"@opentelemetry/core";class GV0{inner;constructor($){this.inner=new Qj({...$,partitionKey:(Z)=>Z.organization_id})}export($,Z){let Q=[];for(let Y of $){if(!D88.has(Y.attributes[M4.TYPE]))continue;let X={};for(let[K,H]of Object.entries(Y.attributes))if(typeof H==="string"||typeof H==="number"||typeof H==="boolean")X[K]=H;let J=Y.spanContext?.spanId??crypto.randomUUID(),G=Y.hrTime,W=BigInt(G[0])*1000000000n+BigInt(G[1]);Q.push(pK1({id:J,timestampNano:W,attributes:X}))}this.inner.exportRows(Q).then((Y)=>Z(Y)).catch(()=>Z({code:B88.FAILED}))}async shutdown(){await this.inner.shutdown()}async forceFlush(){await this.inner.forceFlush()}}var D88;var nK1=O(()=>{k3();_$0();D88=new Set([Qm,Xx])});import{ExportResultCode as O88}from"@opentelemetry/core";import{AggregationTemporality as L88,DataPointType as tK1}from"@opentelemetry/sdk-metrics";class WV0{inner;constructor($){this.inner=new Qj({...$,partitionKey:(Z)=>Z.organization_id})}selectAggregationTemporality($){return L88.DELTA}export($,Z){let Q=[];for(let Y of $.scopeMetrics)for(let X of Y.metrics){let{descriptor:J,dataPointType:G}=X;if(G===tK1.SUM)for(let W of X.dataPoints){let K=W.attributes;Q.push({v:1,name:J.name,type:"sum",unit:J.unit,timestamp:Jx(W.endTime),organization_id:String(K["organization.id"]??""),connection_id:String(K["connection.id"]??""),tool_name:String(K["tool.name"]??""),status:String(K.status??""),error_type:String(K["error.type"]??""),value:W.value,hist_count:0,hist_sum:0,hist_min:0,hist_max:0,hist_boundaries:"[]",hist_bucket_counts:"[]"})}else if(G===tK1.HISTOGRAM)for(let W of X.dataPoints){let{attributes:K,value:H}=W;Q.push({v:1,name:J.name,type:"histogram",unit:J.unit,timestamp:Jx(W.endTime),organization_id:String(K["organization.id"]??""),connection_id:String(K["connection.id"]??""),tool_name:String(K["tool.name"]??""),status:String(K.status??""),error_type:String(K["error.type"]??""),value:H.count,hist_count:H.count,hist_sum:H.sum??0,hist_min:H.min??0,hist_max:H.max??0,hist_boundaries:JSON.stringify(H.buckets.boundaries),hist_bucket_counts:JSON.stringify(H.buckets.counts)})}}this.inner.exportRows(Q).then((Y)=>Z(Y)).catch(()=>Z({code:O88.FAILED}))}async shutdown(){await this.inner.shutdown()}async forceFlush(){await this.inner.forceFlush()}}var oK1=O(()=>{k3();_$0()});import{ExportResultCode as w88}from"@opentelemetry/core";function j88($){let Z=$.resource,Q=Z.attributes["service.name"]??"unknown";return{v:1,trace_id:$.spanContext().traceId,span_id:$.spanContext().spanId,parent_span_id:$.parentSpanContext?.spanId||null,name:$.name,kind:$.kind,status:$.status.code,status_message:$.status.message||null,start_time:Jx($.startTime),end_time:Jx($.endTime),duration_ms:k$0($.endTime)-k$0($.startTime),service_name:Q,attributes:JSON.stringify($.attributes),events:JSON.stringify($.events),links:JSON.stringify($.links),resource:JSON.stringify(Z.attributes)}}class KV0{inner;constructor($){this.inner=new Qj($)}export($,Z){let Q=$.map(j88);this.inner.exportRows(Q).then((Y)=>Z(Y)).catch(()=>Z({code:w88.FAILED}))}async shutdown(){await this.inner.shutdown()}async forceFlush(){await this.inner.forceFlush()}}var rK1=O(()=>{k3();_$0()});function Gx($,Z=65536){if($.length<=Z&&Buffer.byteLength($,"utf8")<=Z)return $;let Q=Z-E88;if(Q<=0)return"... [TRUNCATED]".slice(0,Z);let Y=0,X=0;for(let J of $){let G=J.charCodeAt(0)<=127?1:Buffer.byteLength(J,"utf8");if(Y+G>Q)break;Y+=G,X+=J.length}return $.slice(0,X)+"... [TRUNCATED]"}var E88;var HV0=O(()=>{E88=Buffer.byteLength("... [TRUNCATED]","utf8")});import{NOOP_LOGGER as z88}from"@opentelemetry/api-logs";function aK1($){sK1=$.getLogger(P88,A88)}function eK1(){return sK1}var P88="studio.monitoring",A88="1.0.0",sK1;var FV0=O(()=>{sK1=z88});var QH1={};q4(QH1,{shouldSkipStudioContext:()=>UV0,isServerPath:()=>R88,isHealthPath:()=>Ym,SYSTEM_PATHS:()=>FY});function Ym($){return $===FY.HEALTH||$===FY.HEALTH_LIVE||$===FY.HEALTH_READY}function $H1($){return $===FY.HEALTH||$===FY.HEALTH_LIVE||$===FY.HEALTH_READY||$===FY.METRICS||$.startsWith(Yj.WELL_KNOWN)||$.startsWith(FY.DBOS_QUEUE_DEPTH_PREFIX)}function ZH1($){return $.startsWith(Yj.API)}function R88($){return ZH1($)||$==="/mcp"||$.startsWith(Yj.MCP)||$.startsWith(Yj.OAUTH_PROXY)||$.startsWith(Yj.ORG)||$.startsWith(Yj.REPORT)||$H1($)}function UV0($){return $==="/"||$.startsWith(Yj.API_AUTH)||$==="/api/trigger-callback"||$H1($)||!ZH1($)&&T88.test($)}var FY,Yj,T88;var v$0=O(()=>{FY={HEALTH:"/health",HEALTH_LIVE:"/health/live",HEALTH_READY:"/health/ready",METRICS:"/metrics",DBOS_QUEUE_DEPTH_PREFIX:"/dbos-queue-depth/"},Yj={API:"/api/",API_AUTH:"/api/auth/",MCP:"/mcp/",OAUTH_PROXY:"/oauth-proxy/",WELL_KNOWN:"/.well-known",ORG:"/org/",REPORT:"/report/"},T88=/\.(html|css|js|ico|svg|png|jpg|jpeg|gif|webp|woff|woff2)$/});import{SpanStatusCode as NV0}from"@opentelemetry/api";var q88,M88=()=>q88??=Q$.createHistogram("http.server.request.duration",{description:"Duration of inbound HTTP requests handled by the API.",unit:"s",advice:{explicitBucketBoundaries:[0.005,0.01,0.025,0.05,0.075,0.1,0.25,0.5,0.75,1,2.5,5,7.5,10]}}),BV0=async($,Z)=>{if(Ym($.req.path))return Z();let Q=$.req.raw,Y=new URL(Q.url),X=performance.now(),J=JH1(Q),G=DV0(Q),W={"http.request.url":Q.url,"http.request.method":Q.method,"http.request.body.size":Q.headers.get("content-length")??void 0,"url.scheme":Y.protocol.replace(":",""),"server.address":Y.host,"url.query":Y.search||void 0,"url.path":Y.pathname,"user_agent.original":Q.headers.get("user-agent")??void 0,"request.internal":Q.headers.has("traceparent"),...G?{"trace.debug.id":G}:{}};await vB.startActiveSpan(`${Q.method} ${Y.pathname}`,{attributes:W},J,async(K)=>{$.set("rootSpan",K);try{await Z()}catch(H){K.recordException(H),K.setStatus({code:NV0.ERROR});let F=typeof H==="object"&&H&&"message"in H?String(H.message):JSON.stringify(H);throw console.error("error: ",F,W),H}finally{let H=$.res?.status??500,F=H>=500;K.setStatus({code:F?NV0.ERROR:NV0.OK}),K.setAttribute("http.response.status_code",H);let U=$.get("studioContext");if(U){if(U.auth.user?.id)K.setAttribute("studio.user.id",U.auth.user.id);if(U.auth.apiKey?.id)K.setAttribute("studio.api_key.id",U.auth.apiKey.id);if(U.organization?.id)K.setAttribute("studio.organization.id",U.organization.id)}if(G)XH1($.res.headers,G);M88().record((performance.now()-X)/1000,{"http.request.method":Q.method,"http.route":$.req.routePath,"http.response.status_code":H}),K.end()}})};var YH1=O(()=>{W6();v$0()});import{createContextKey as I88,metrics as NH1,propagation as V88,ROOT_CONTEXT as k88,SpanStatusCode as GH1,trace as LV0}from"@opentelemetry/api";import{logs as BH1,SeverityNumber as Hm}from"@opentelemetry/api-logs";import{OTLPLogExporter as WH1}from"@opentelemetry/exporter-logs-otlp-proto";import{PrometheusExporter as S88}from"@opentelemetry/exporter-prometheus";import{OTLPTraceExporter as C88}from"@opentelemetry/exporter-trace-otlp-proto";import{RuntimeNodeInstrumentation as _88}from"@opentelemetry/instrumentation-runtime-node";import{BatchLogRecordProcessor as OV0,LoggerProvider as KH1}from"@opentelemetry/sdk-logs";import{detectResources as v88,envDetector as f88,hostDetector as b88,osDetector as x88,processDetector as y88,resourceFromAttributes as HH1}from"@opentelemetry/resources";import{PeriodicExportingMetricReader as g88}from"@opentelemetry/sdk-metrics";import{NodeSDK as h88}from"@opentelemetry/sdk-node";import{BatchSpanProcessor as FH1,SamplingDecision as Wx}from"@opentelemetry/sdk-trace-base";class OH1{inner;ratio;constructor($,Z){this.inner=$;this.ratio=Z}onEmit($,Z){if($.severityNumber!==void 0&&$.severityNumber>=Hm.ERROR||Math.random()<this.ratio)this.inner.onEmit($,Z)}forceFlush(){return this.inner.forceFlush()}shutdown(){return this.inner.shutdown()}}class LH1{inner;maxBytes;constructor($,Z){this.inner=$;this.maxBytes=Z}onEmit($,Z){let Q=M4.OUTPUT,Y=$.attributes?.[Q];if(typeof Y==="string"&&Y.length>this.maxBytes){let X=Gx(Y,this.maxBytes);this.inner.onEmit({...$,attributes:{...$.attributes,[Q]:X}},Z)}else this.inner.onEmit($,Z)}forceFlush(){return this.inner.forceFlush()}shutdown(){return this.inner.shutdown()}}class wH1{inner;constructor($){this.inner=$}shouldSample($,Z,Q,Y,X,J){let G=$.getValue(DH1);if(!G){if(this.inner)return this.inner.shouldSample($,Z,Q,Y,X,J);return{decision:Wx.RECORD_AND_SAMPLED}}let W=DV0(G);if(W)return{decision:Wx.RECORD_AND_SAMPLED,attributes:{"trace.debug.id":W}};if(this.inner){let K=this.inner.shouldSample($,Z,Q,Y,X,J);if(K.decision===Wx.RECORD_AND_SAMPLED){let H=crypto.randomUUID();K.attributes={...K.attributes??{},"trace.debug.id":H}}return K}return{decision:Wx.NOT_RECORD}}toString(){return"DebugSampler"}}class jH1{ratio;constructor($){this.ratio=$}shouldSample(){if(Math.random()<this.ratio)return{decision:Wx.RECORD_AND_SAMPLED};return{decision:Wx.NOT_RECORD}}toString(){return`RatioSampler(${this.ratio})`}}function EH1(){if(UH1)return;let $=O0(),Z=!!process.env.OTEL_EXPORTER_OTLP_ENDPOINT,Q=Z?new C88:void 0;Xm=$.nodeEnv==="test"?null:new GV0({basePath:sG()}),Jm=$.nodeEnv==="test"?null:new KV0({basePath:Yx()}),Gm=$.nodeEnv==="test"?null:new WV0({basePath:ZU()}),Wm=Gm?new g88({exporter:Gm,exportIntervalMillis:60000}):null;let Y=process.env.STUDIO_ENV??"production"??"unknown",X={};if(!process.env.OTEL_RESOURCE_ATTRIBUTES?.includes("deployment.environment"))X["deployment.environment"]=Y;new h88({serviceName:$.otelServiceName,resource:HH1(X),metricReaders:[wV0,...Wm?[Wm]:[]],sampler:c88,spanProcessors:[...Q?[new FH1(Q,{scheduledDelayMillis:60000,maxExportBatchSize:1000})]:[],...Jm?[new FH1(Jm,{scheduledDelayMillis:60000,maxExportBatchSize:250})]:[]],instrumentations:[new _88]}).start(),Q$=NH1.getMeter("studio","1.0.0"),vB=LV0.getTracer("studio","1.0.0");let G=v88({detectors:[f88,b88,x88,y88]}).merge(HH1({"service.name":$.otelServiceName,...X})),W=[];if(Z){let U=Y==="prod"||Y==="production"?1:0.1,N=process.env.INFRA_LOG_SAMPLE_RATIO,B=U;if(N!==void 0){let D=Number(N);if(Number.isFinite(D)&&D>=0&&D<=1)B=D;else console.warn(`[observability] Ignoring invalid INFRA_LOG_SAMPLE_RATIO="${N}" (expected 0..1); using ${U}`)}W.push(new OH1(new OV0(new WH1),B))}Km=new KH1({resource:G,processors:W}),BH1.setGlobalLoggerProvider(Km),zH1=Km.getLogger("studio","1.0.0");let K=$.monitoringOtlpEndpoint??process.env.OTEL_EXPORTER_OTLP_ENDPOINT,H=[];if(K){let F=K.replace(/\/$/,""),U=F.endsWith("/v1/logs")?F:`${F}/v1/logs`;H.push(new LH1(new OV0(new WH1({url:U})),8000))}if(Xm)H.push(new OV0(Xm,{scheduledDelayMillis:60000,maxExportBatchSize:250}));f$0=new KH1({resource:G,processors:H}),aK1(f$0),dK1(),UH1=!0}async function eY(){let Z=(await Promise.allSettled([Km?Km.forceFlush():Promise.resolve(),(async()=>{if(f$0)await f$0.forceFlush();if(Xm)await Xm.forceFlush()})(),(async()=>{let Q=LV0.getTracerProvider();if("forceFlush"in Q)await Q.forceFlush();if(Jm)await Jm.forceFlush()})(),(async()=>{if(Wm)await Wm.forceFlush();if(Gm)await Gm.forceFlush()})()])).find((Q)=>Q.status==="rejected");if(Z)throw Z.reason}function PH1($,Z,Q){return vB.startActiveSpan($,{attributes:Q},async(Y)=>{try{let X=await Z(Y);return Y.setStatus({code:GH1.OK}),X}catch(X){let J=X instanceof Error?X:Error(String(X??"unknown"));throw Y.setStatus({code:GH1.ERROR,message:J.message}),Y.recordException(J),X}finally{Y.end()}})}var u88="__d",DH1,l88=1,DV0=($)=>{let Q=new URL($.url).searchParams.get(u88);if(Q==="")return crypto.randomUUID();if(!Q)Q=$.headers.get("x-trace-debug-id");return Q},XH1=($,Z)=>{try{$.set("x-trace-debug-id",Z)}catch{}},wV0,c88,Xm=null,Jm=null,Gm=null,Wm=null,Km=null,f$0=null,UH1=!1,vB,Q$,zH1,jV0=($,Z,Q)=>{let Y={},X=Q,J=Q[Q.length-1];if(J!==null&&typeof J==="object"&&!Array.isArray(J)&&!(J instanceof Error)&&Object.getPrototypeOf(J)===Object.prototype)Y=J,X=Q.slice(0,-1);let G=X.map((W)=>{if(W instanceof Error)return`${W.name}: ${W.message}`;if(typeof W==="object")try{return JSON.stringify(W)}catch{return"[Object]"}return String(W)}).join(" ");zH1.emit({severityNumber:$,severityText:Z,body:G,attributes:{"log.source":"console",...Y}})},EV0,JH1=($)=>{return V88.extract(k88,$.headers,{get:(Q,Y)=>Q.get(Y)??void 0,keys:(Q)=>[...Q.keys()]}).setValue(DH1,$)};var W6=O(()=>{mK1();nK1();oK1();rK1();k3();HV0();t1();FV0();YH1();DH1=I88("Current request");wV0=new S88({preventServerStart:!0}),c88=new wH1(new jH1(l88));vB=LV0.getTracer("studio","1.0.0"),Q$=NH1.getMeter("studio","1.0.0"),zH1=BH1.getLogger("studio","1.0.0"),EV0={error:console.error.bind(console),warn:console.warn.bind(console),debug:console.debug.bind(console)};console.error=(...$)=>{jV0(Hm.ERROR,"ERROR",$),EV0.error(...$)};console.warn=(...$)=>{jV0(Hm.WARN,"WARN",$),EV0.warn(...$)};console.debug=(...$)=>{jV0(Hm.DEBUG,"DEBUG",$),EV0.debug(...$)}});function Xj(){try{return process.memoryUsage()}catch{return null}}import{Session as m88}from"inspector";function Jj($,Z){return new Promise((Q,Y)=>Kx.post($,Z,(X,J)=>X?Y(X):Q(J??{})))}async function TH1($){try{return Kx=new m88,Kx.connect(),await Jj("Profiler.enable"),await Jj("Profiler.setSamplingInterval",{interval:$}),await Jj("Profiler.start"),Fx=!0,!0}catch{return Fx=!1,Kx=null,!1}}function i88($,Z){let{nodes:Q,samples:Y,timeDeltas:X}=$;if(!Y?.length)return null;let J=new Map,G=new Map;for(let L of Q){J.set(L.id,L);for(let w of L.children??[])G.set(w,L.id)}let W=Math.max(1,Z)*1000,K=0,H=new Map;for(let L=Y.length-1;L>=0;L--){K+=X[L]??0;let w=Y[L];if(w!==void 0)H.set(w,(H.get(w)??0)+1);if(K>=W)break}let F=-1,U=0;for(let[L,w]of H)if(w>U)U=w,F=L;if(F<0)return null;let N=[],B=new Set,D=F;while(D!=null&&!B.has(D)){B.add(D);let L=J.get(D);if(!L)break;let w=L.callFrame,j=w.url?` ${w.url}:${w.lineNumber+1}`:"";N.push(`${w.functionName||"(anonymous)"}${j}`),D=G.get(D)}return N}async function RH1($){if(!Fx||!Kx||Hx)return null;Hx=!0;try{let{profile:Z}=await Jj("Profiler.stop"),Q=Z?i88(Z,$):null;return await Jj("Profiler.start"),Q}catch{return Fx=!1,null}finally{Hx=!1}}async function qH1(){if(!Fx||!Kx||Hx)return;Hx=!0;try{await Jj("Profiler.stop"),await Jj("Profiler.start")}catch{Fx=!1}finally{Hx=!1}}var Kx=null,Fx=!1,Hx=!1;var MH1=()=>{};function VH1(){if(PV0)return;let $=performance.now()+AV0;PV0=setInterval(()=>{let Z=performance.now();IH1=Math.max(0,Z-$),$=Z+AV0},AV0),PV0.unref?.()}function kH1(){return VH1(),IH1}function SH1(){if(VH1(),process.env.EVENT_LOOP_MONITOR!=="1")return()=>{};let $=Number(process.env.EVENT_LOOP_INTERVAL_MS??250),Z=Number(process.env.EVENT_LOOP_SPIKE_MS??100),Q=process.env.EVENT_LOOP_PROFILE==="1",Y=Number(process.env.EVENT_LOOP_PROFILE_MS??1000),X=Number(process.env.EVENT_LOOP_PROFILE_INTERVAL_US??1e4),J=30000,G=performance.now();if(Q)TH1(X).then((H)=>{console.warn(JSON.stringify({msg:"event-loop-profiler",status:H?"started":"unavailable",intervalUs:X}))});let W=Q$.createHistogram("eventloop.delay",{description:"Event-loop lag measured as timer scheduling drift",unit:"ms"}),K=performance.now()+$;return b$0=setInterval(()=>{let H=performance.now(),F=Math.max(0,H-K);if(K=H+$,W.record(F),F>Z){let U=Xj();console.warn(JSON.stringify({msg:"event-loop-stall",ts:new Date().toISOString(),lagMs:Math.round(F),rss:U?.rss,heapUsed:U?.heapUsed,heapTotal:U?.heapTotal,external:U?.external}))}if(Q){if(F>Y)RH1(Math.round(F)).then((U)=>{if(U?.length)console.warn(JSON.stringify({msg:"event-loop-stall-profile",ts:new Date().toISOString(),lagMs:Math.round(F),stack:U}))}),G=H;else if(H-G>J)qH1(),G=H}},$),b$0.unref?.(),()=>{if(b$0)clearInterval(b$0)}}var b$0,PV0,IH1=0,AV0=500;var TV0=O(()=>{W6();MH1()});var Gj=_((fH1)=>{Object.defineProperty(fH1,"__esModule",{value:!0});fH1.RepublishHeaders=fH1.DirectMsgHeaders=fH1.JsHeaders=fH1.AdvisoryKind=void 0;fH1.isOrderedPushConsumerOptions=o88;fH1.isPullConsumer=r88;fH1.isPushConsumer=s88;fH1.isBoundPushConsumerOptions=a88;function o88($){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 r88($){return $.isPullConsumer()}function s88($){return $.isPushConsumer()}function a88($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}fH1.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"};fH1.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"};fH1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};fH1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var OJ=_((xH1)=>{Object.defineProperty(xH1,"__esModule",{value:!0});xH1.TD=xH1.TE=xH1.Empty=void 0;xH1.encode=W48;xH1.decode=K48;xH1.Empty=new Uint8Array(0);xH1.TE=new TextEncoder;xH1.TD=new TextDecoder;function G48(...$){let Z=0;for(let X=0;X<$.length;X++)Z+=$[X].length;let Q=new Uint8Array(Z),Y=0;for(let X=0;X<$.length;X++)Q.set($[X],Y),Y+=$[X].length;return Q}function W48(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(xH1.TE.encode($[Q]));if(Z.length===0)return xH1.Empty;if(Z.length===1)return Z[0];return G48(...Z)}function K48($){if(!$||$.length===0)return"";return xH1.TD.decode($)}});var LJ=_((hH1)=>{Object.defineProperty(hH1,"__esModule",{value:!0});hH1.errors=hH1.PermissionViolationError=hH1.NoRespondersError=hH1.TimeoutError=hH1.RequestError=hH1.ProtocolError=hH1.ConnectionError=hH1.DrainingConnectionError=hH1.ClosedConnectionError=hH1.AuthorizationError=hH1.UserAuthenticationExpiredError=hH1.InvalidOperationError=hH1.InvalidArgumentError=hH1.InvalidSubjectError=void 0;class qV0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}hH1.InvalidSubjectError=qV0;class y$0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Y)=>`'${Y}'`),$=$.join(",");else $=`'${$}'`;return new y$0(`${$} ${Z}`,Q)}}hH1.InvalidArgumentError=y$0;class MV0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}hH1.InvalidOperationError=MV0;class g$0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new g$0($);return null}}hH1.UserAuthenticationExpiredError=g$0;class h$0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let Y=0;Y<Z.length;Y++)if(Q.indexOf(Z[Y])!==-1)return new h$0($);return null}}hH1.AuthorizationError=h$0;class IV0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}hH1.ClosedConnectionError=IV0;class VV0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}hH1.DrainingConnectionError=VV0;class kV0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}hH1.ConnectionError=kV0;class SV0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}hH1.ProtocolError=SV0;class CV0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof u$0}}hH1.RequestError=CV0;class _V0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}hH1.TimeoutError=_V0;class u$0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}hH1.NoRespondersError=u$0;class l$0 extends Error{operation;subject;queue;constructor($,Z,Q,Y,X){super($,X);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=Y}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",Y="",X=void 0,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),Y=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)X=G[1]}}return new l$0($,Q,Y,X)}}hH1.PermissionViolationError=l$0;hH1.errors={AuthorizationError:h$0,ClosedConnectionError:IV0,ConnectionError:kV0,DrainingConnectionError:VV0,InvalidArgumentError:y$0,InvalidOperationError:MV0,InvalidSubjectError:qV0,NoRespondersError:u$0,PermissionViolationError:l$0,ProtocolError:SV0,RequestError:CV0,TimeoutError:_V0,UserAuthenticationExpiredError:g$0}});var aG=_((mH1)=>{Object.defineProperty(mH1,"__esModule",{value:!0});mH1.SimpleMutex=mH1.Perf=void 0;mH1.extend=q48;mH1.render=M48;mH1.timeout=I48;mH1.delay=V48;mH1.deadline=k48;mH1.deferred=fV0;mH1.debugDeferred=S48;mH1.shuffle=C48;mH1.collect=_48;mH1.jitter=dH1;mH1.backoff=v48;mH1.nanos=f48;mH1.millis=b48;mH1.randomToken=g48;var R48=OJ(),vV0=LJ();function q48($,...Z){for(let Q=0;Q<Z.length;Q++){let Y=Z[Q];Object.keys(Y).forEach(function(X){$[X]=Y[X]})}return $}function M48($){return R48.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function I48($,Z=!0){let Q=Z?new vV0.TimeoutError:null,Y,X,J=new Promise((G,W)=>{Y={cancel:()=>{if(X)clearTimeout(X)}},X=setTimeout(()=>{if(Q===null)W(new vV0.TimeoutError);else W(Q)},$)});return Object.assign(J,Y)}function V48($=0){let Z,Q=new Promise((Y)=>{let X=setTimeout(()=>{Y()},$);Z={cancel:()=>{if(X)clearTimeout(X),Y()}}});return Object.assign(Q,Z)}async function k48($,Z=1000){let Q=fV0(),Y=setTimeout(()=>{Q.reject(new vV0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(Y)}}function fV0(){let $={},Z=new Promise((Q,Y)=>{$={resolve:Q,reject:Y}});return Object.assign(Z,$)}function S48(){let $={},Z=new Promise((Q,Y)=>{$={resolve:(X)=>{console.trace("resolve",X),Q(X)},reject:(X)=>{console.trace("reject"),Y(X)}}});return Object.assign(Z,$)}function C48($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function _48($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class lH1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let Y=this.timers.get(Z);if(Y===void 0)throw Error(`${Z} is not defined`);let X=this.timers.get(Q);if(X===void 0)throw Error(`${Q} is not defined`);this.measures.set($,X-Y)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}mH1.Perf=lH1;class cH1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=fV0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}mH1.SimpleMutex=cH1;function dH1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function v48($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return dH1(Q>Z?$[Z]:$[Q])}}}function f48($){return $*1e6}function b48($){return Math.floor($/1e6)}var x48="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",QU=new Uint8Array(62);for(let $=0;$<62;$++)QU[$]=x48.charCodeAt($);var y48=218340105584896;function g48(){let $=Math.floor(Math.random()*y48),Z=$%62,Q=QU[Z];$=($-Z)/62,Z=$%62;let Y=QU[Z];$=($-Z)/62,Z=$%62;let X=QU[Z];$=($-Z)/62,Z=$%62;let J=QU[Z];$=($-Z)/62,Z=$%62;let G=QU[Z];$=($-Z)/62,Z=$%62;let W=QU[Z];$=($-Z)/62,Z=$%62;let K=QU[Z];$=($-Z)/62;let H=QU[$];return String.fromCharCode(Q,Y,X,J,G,W,K,H)}});var aH1=_((rH1)=>{Object.defineProperty(rH1,"__esModule",{value:!0});rH1.nuid=rH1.NuidImpl=void 0;var $68="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",bB=62,d$0=12,tH1=10,pH1=33,Z68=333,nH1=d$0+tH1,xV0=new Uint8Array(bB);for(let $=0;$<bB;$++)xV0[$]=$68.charCodeAt($);var c$0=4294967296,oH1=BigInt(bB)**BigInt(tH1),Fm=Number(oH1/(1n<<32n)),bV0=Number(oH1%(1n<<32n));function Q68($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Y68($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Q68($)}class yV0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(nH1),this.cbuf=new Uint8Array(d$0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Fm+1)),this.seqLo=Math.floor(Math.random()*c$0);while($++<8&&this.seqHi===Fm&&this.seqLo>=bV0);if(this.seqHi===Fm&&this.seqLo>=bV0)this.seqLo=0;this.inc=Math.random()*(Z68-pH1)+pH1|0}setPre(){Y68(this.cbuf);for(let $=0;$<d$0;$++)this.buf[$]=xV0[this.cbuf[$]%bB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=nH1-1;Q>=d$0;Q--){let Y=Math.floor($/bB),J=($-Y*bB)*c$0+Z,G=Math.floor(J/bB),W=J-G*bB;this.buf[Q]=xV0[W],$=Y,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=c$0)this.seqLo-=c$0,this.seqHi+=1;if(this.seqHi>Fm||this.seqHi===Fm&&this.seqLo>=bV0)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()}}rH1.NuidImpl=yV0;rH1.nuid=new yV0});var QF1=_(($F1)=>{Object.defineProperty($F1,"__esModule",{value:!0});$F1.nuid=$F1.Nuid=void 0;var eH1=aH1();$F1.Nuid=eH1.NuidImpl;$F1.nuid=eH1.nuid});var i$0=_((m$0)=>{Object.defineProperty(m$0,"__esModule",{value:!0});m$0.nuid=m$0.Nuid=void 0;var YF1=QF1();Object.defineProperty(m$0,"Nuid",{enumerable:!0,get:function(){return YF1.Nuid}});Object.defineProperty(m$0,"nuid",{enumerable:!0,get:function(){return YF1.nuid}})});var xB=_((XF1)=>{Object.defineProperty(XF1,"__esModule",{value:!0});XF1.DEFAULT_HOST=XF1.DEFAULT_PORT=XF1.Match=void 0;XF1.syncIterator=H68;XF1.createInbox=F68;var W68=i$0(),K68=LJ();XF1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function H68($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function F68($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw K68.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${W68.nuid.next()}`}XF1.DEFAULT_PORT=4222;XF1.DEFAULT_HOST="127.0.0.1"});var Um=_((KF1)=>{Object.defineProperty(KF1,"__esModule",{value:!0});KF1.DataBuffer=void 0;var GF1=OJ();class WF1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let X=0;X<$.length;X++)Z+=$[X].length;let Q=new Uint8Array(Z),Y=0;for(let X=0;X<$.length;X++)Q.set($[X],Y),Y+=$[X].length;return Q}static fromAscii($){if(!$)$="";return GF1.TE.encode($)}static toAscii($){return GF1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let Y=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,Y}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}KF1.DataBuffer=WF1});var Wj=_((UF1)=>{Object.defineProperty(UF1,"__esModule",{value:!0});UF1.LF=UF1.CR=UF1.CRLF=UF1.CR_LF_LEN=UF1.CR_LF=void 0;UF1.setTransportFactory=j68;UF1.defaultPort=E68;UF1.getUrlParseFn=z68;UF1.newTransport=P68;UF1.getResolveFn=A68;UF1.protoLen=FF1;UF1.extractProtocolMessage=T68;var O68=OJ(),L68=xB(),w68=Um(),wJ;function j68($){wJ=$}function E68(){return wJ!==void 0&&wJ.defaultPort!==void 0?wJ.defaultPort:L68.DEFAULT_PORT}function z68(){return wJ!==void 0&&wJ.urlParseFn?wJ.urlParseFn:void 0}function P68(){if(!wJ||typeof wJ.factory!=="function")throw Error("transport fn is not set");return wJ.factory()}function A68(){return wJ!==void 0&&wJ.dnsResolveFn?wJ.dnsResolveFn:void 0}UF1.CR_LF=`\r
5
5
  `;UF1.CR_LF_LEN=UF1.CR_LF.length;UF1.CRLF=w68.DataBuffer.fromAscii(UF1.CR_LF);UF1.CR=new Uint8Array(UF1.CRLF)[0];UF1.LF=new Uint8Array(UF1.CRLF)[1];function FF1($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===UF1.CR&&$[Q]===UF1.LF)return Q+1}return 0}function T68($){let Z=FF1($);if(Z>0){let Y=new Uint8Array($).slice(0,Z);return O68.TD.decode(Y)}return""}});var cV0=_((EF1)=>{Object.defineProperty(EF1,"__esModule",{value:!0});EF1.ipV4=LF1;EF1.isIP=f68;EF1.parseIP=wF1;var Nm=4,Kj=16,p$0=48,OF1=57,BF1=65,_68=70,DF1=97,v68=102,lV0=16777215;function LF1($,Z,Q,Y){let X=new Uint8Array(Kj);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((G,W)=>{X[W]=G}),X[12]=$,X[13]=Z,X[14]=Q,X[15]=Y,X}function f68($){return wF1($)!==void 0}function wF1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return jF1($);case":":return b68($)}return}function jF1($){let Z=new Uint8Array(Nm);for(let Q=0;Q<Nm;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:Y,c:X,ok:J}=x68($);if(!J||Y>255)return;$=$.substring(X),Z[Q]=Y}return LF1(Z[0],Z[1],Z[2],Z[3])}function b68($){let Z=new Uint8Array(Kj),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let Y=0;while(Y<Kj){let{n:X,c:J,ok:G}=y68($);if(!G||X>65535)return;if(J<$.length&&$[J]==="."){if(Q<0&&Y!=Kj-Nm)return;if(Y+Nm>Kj)return;let W=jF1($);if(W===void 0)return;Z[Y]=W[12],Z[Y+1]=W[13],Z[Y+2]=W[14],Z[Y+3]=W[15],$="",Y+=Nm;break}if(Z[Y]=X>>8,Z[Y+1]=X,Y+=2,$=$.substring(J),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(Q>=0)return;if(Q=Y,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Y<Kj){if(Q<0)return;let X=Kj-Y;for(let J=Y-1;J>=Q;J--)Z[J+X]=Z[J];for(let J=Q+X-1;J>=Q;J--)Z[J]=0}else if(Q>=0)return;return Z}function x68($){let Z=0,Q=0;for(Z=0;Z<$.length&&p$0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=OF1;Z++)if(Q=Q*10+($.charCodeAt(Z)-p$0),Q>=lV0)return{n:lV0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function y68($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(p$0<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=OF1)Z*=16,Z+=$.charCodeAt(Q)-p$0;else if(DF1<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=v68)Z*=16,Z+=$.charCodeAt(Q)-DF1+10;else if(BF1<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=_68)Z*=16,Z+=$.charCodeAt(Q)-BF1+10;else break;if(Z>=lV0)return{n:0,c:Q,ok:!1}}if(Q===0)return{n:0,c:Q,ok:!1};return{n:Z,c:Q,ok:!0}}});var tV0=_((PF1)=>{Object.defineProperty(PF1,"__esModule",{value:!0});PF1.Servers=PF1.ServerImpl=void 0;PF1.isIPV4OrHostname=zF1;PF1.hostPort=nV0;var dV0=Wj(),mV0=aG(),iV0=cV0(),l68=xB(),c68=LJ();function zF1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function pV0($){return!zF1($)}function d68($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let Y=$.substring(Q+7);return Y=Y.replace("[",""),Y.replace("]","")}return $}function nV0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=d68($),pV0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=pV0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):l68.DEFAULT_PORT,X=new URL(`${Q===80?"https":"http"}://${$}`);X.port=`${Q}`;let J=X.hostname;if(J.charAt(0)==="[")J=J.substring(1,J.length-1);return{listen:X.host,hostname:J,port:Q}}class Ux{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=nV0($);this.listen=Q.listen,this.hostname=Q.hostname,this.port=Q.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,iV0.isIP)(this.hostname))return[this];else{let Q=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${Q.join(",")}`);for(let Y of Q){let X=this.port===80?"https":"http",J=new URL(`${X}://${pV0(Y)?"["+Y+"]":Y}`);J.port=`${this.port}`;let G=new Ux(J.host,!1);G.tlsName=this.hostname,Z.push(G)}}if($.randomize)(0,mV0.shuffle)(Z);return this.resolves=Z,Z}}PF1.ServerImpl=Ux;class n$0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw c68.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,dV0.getUrlParseFn)(),Q=new Map;for(let X of this.servers)Q.set(X.listen,X);let Y=[];for(let X of $){X=Z?Z(X):X;let{listen:J}=nV0(X),G=Q.get(J);if(G)G.gossiped=!1,Y.push(G);else Y.push(new Ux(X))}if(this.randomize)(0,mV0.shuffle)(Y);if(this.servers=Y,this.currentServer===void 0||!Y.includes(this.currentServer))this.currentServer=Y[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,iV0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let Q=(0,dV0.getUrlParseFn)();$=Q?Q($):$;let Y=new Ux($,Z);if((0,iV0.isIP)(Y.hostname))Y.tlsName=this.tlsName;this.servers.push(Y)}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 n$0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return n$0.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let Q=[],Y=[],X=(0,dV0.getUrlParseFn)(),J=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((W)=>{W=X?X(W,Z):W;let K=new Ux(W,!0);J.set(W,K)});let G=[];if(this.servers.forEach((W,K)=>{let H=W.listen;if(W.gossiped&&this.currentServer.listen!==H&&J.get(H)===void 0)G.push(K);J.delete(H)}),G.reverse(),G.forEach((W)=>{let K=this.servers.splice(W,1);Y=Y.concat(K[0].listen)}),J.forEach((W,K)=>{this.servers.push(W),Q.push(K)}),this.randomize&&Q.length>0){let W=this.currentServer,K=this.servers.filter((H)=>H!==W);(0,mV0.shuffle)(K),this.servers=W?[W,...K]:K}return{added:Q,deleted:Y}}}PF1.Servers=n$0});var t$0=_((qF1)=>{Object.defineProperty(qF1,"__esModule",{value:!0});qF1.QueuedIteratorImpl=void 0;var oV0=aG(),TF1=LJ();class RF1{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,oV0.deferred)(),this.yields=[],this.iterClosed=(0,oV0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(Q){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new TF1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new TF1.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 Y=$[Z];try{Y()}catch(X){throw X}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let Q=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-Q:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,oV0.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}}qF1.QueuedIteratorImpl=RF1});var rV0=_((kF1)=>{Object.defineProperty(kF1,"__esModule",{value:!0});kF1.MuxSubscription=void 0;var n68=xB(),IF1=LJ();class VF1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,n68.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((Q)=>{Q.resolver(Z,{})}),!0;if(Z.operation==="publish"){let Q=this.all().find((Y)=>{return Y.requestSubject===Z.subject});if(Q)return Q.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let Q=this.getToken(Z);if(Q){let Y=this.get(Q);if(Y){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new IF1.NoRespondersError(Y.requestSubject):null;Y.resolver($,Z)}}}}close(){let $=new IF1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}kF1.MuxSubscription=VF1});var sV0=_((_F1)=>{Object.defineProperty(_F1,"__esModule",{value:!0});_F1.Heartbeat=void 0;var t68=aG();class CF1{ph;interval;maxOut;timer;pendings;constructor($,Z,Q){this.ph=$,this.interval=Z,this.maxOut=Q,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,t68.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})}}_F1.Heartbeat=CF1});var $k0=_((yF1)=>{Object.defineProperty(yF1,"__esModule",{value:!0});yF1.DenoBuffer=yF1.MAX_SIZE=yF1.AssertionError=void 0;yF1.assert=bF1;yF1.concat=xF1;yF1.append=r68;yF1.readAll=s68;yF1.writeAll=a68;var o68=OJ();class aV0 extends Error{constructor($){super($);this.name="AssertionError"}}yF1.AssertionError=aV0;function bF1($,Z="Assertion failed."){if(!$)throw new aV0(Z)}var fF1=32768;yF1.MAX_SIZE=4294967294;function o$0($,Z,Q=0){let Y=Z.byteLength-Q;if($.byteLength>Y)$=$.subarray(0,Y);return Z.set($,Q),$.byteLength}function xF1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let Q=new Uint8Array($.length+Z.length);return Q.set($,0),Q.set(Z,$.length),Q}function r68($,Z){return xF1($,Uint8Array.of(Z))}class eV0{_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($){bF1($<=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=o$0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(o68.TE.encode($))}write($){let Z=this._grow($.byteLength);return o$0($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let Q=this._tryGrowByReslice($);if(Q>=0)return Q;let Y=this.capacity;if($<=Math.floor(Y/2)-Z)o$0(this._buf.subarray(this._off),this._buf);else if(Y+$>yF1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let X=new Uint8Array(Math.min(2*Y+$,yF1.MAX_SIZE));o$0(this._buf.subarray(this._off),X),this._buf=X}return this._off=0,this._reslice(Math.min(Z+$,yF1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,Q=new Uint8Array(fF1);while(!0){let Y=this.capacity-this.length<fF1,X=Y?Q:new Uint8Array(this._buf.buffer,this.length),J=$.read(X);if(J===null)return Z;if(Y)this.write(X.subarray(0,J));else this._reslice(this.length+J);Z+=J}}}yF1.DenoBuffer=eV0;function s68($){let Z=new eV0;return Z.readFrom($),Z.bytes()}function a68($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var Yk0=_((cF1)=>{Object.defineProperty(cF1,"__esModule",{value:!0});cF1.cc=cF1.State=cF1.Parser=cF1.Kind=void 0;cF1.describe=J58;var Zk0=$k0(),Qk0=OJ();cF1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function J58($){let Z,Q="";switch($.kind){case cF1.Kind.MSG:Z="MSG";break;case cF1.Kind.OK:Z="OK";break;case cF1.Kind.ERR:Z="ERR",Q=Qk0.TD.decode($.data);break;case cF1.Kind.PING:Z="PING";break;case cF1.Kind.PONG:Z="PONG";break;case cF1.Kind.INFO:Z="INFO",Q=Qk0.TD.decode($.data)}return`${Z}: ${Q}`}function hF1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var uF1=48,G58=57,Nx=67108864;class lF1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=cF1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let Q=$[Z];switch(this.state){case cF1.State.OP_START:switch(Q){case cF1.cc.M:case cF1.cc.m:this.state=cF1.State.OP_M,this.hdr=-1,this.ma=hF1();break;case cF1.cc.H:case cF1.cc.h:this.state=cF1.State.OP_H,this.hdr=0,this.ma=hF1();break;case cF1.cc.P:case cF1.cc.p:this.state=cF1.State.OP_P;break;case cF1.cc.PLUS:this.state=cF1.State.OP_PLUS;break;case cF1.cc.MINUS:this.state=cF1.State.OP_MINUS;break;case cF1.cc.I:case cF1.cc.i:this.state=cF1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_H:switch(Q){case cF1.cc.M:case cF1.cc.m:this.state=cF1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_M:switch(Q){case cF1.cc.S:case cF1.cc.s:this.state=cF1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_MS:switch(Q){case cF1.cc.G:case cF1.cc.g:this.state=cF1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_MSG:switch(Q){case cF1.cc.SPACE:case cF1.cc.TAB:this.state=cF1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_MSG_SPC:switch(Q){case cF1.cc.SPACE:case cF1.cc.TAB:continue;default:this.state=cF1.State.MSG_ARG,this.as=Z}break;case cF1.State.MSG_ARG:switch(Q){case cF1.cc.CR:this.drop=1;break;case cF1.cc.NL:{let Y=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Y),this.drop=0,this.as=Z+1,this.state=cF1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case cF1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Y=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:cF1.Kind.MSG,msg:this.ma,data:Y}),this.argBuf=void 0,this.msgBuf=void 0,this.state=cF1.State.MSG_END}else{let Y=this.ma.size-this.msgBuf.length,X=$.length-Z;if(X<Y)Y=X;if(Y>0)this.msgBuf.write($.subarray(Z,Z+Y)),Z=Z+Y-1;else this.msgBuf.writeByte(Q)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:cF1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=cF1.State.MSG_END;break;case cF1.State.MSG_END:switch(Q){case cF1.cc.NL:this.drop=0,this.as=Z+1,this.state=cF1.State.OP_START;break;default:continue}break;case cF1.State.OP_PLUS:switch(Q){case cF1.cc.O:case cF1.cc.o:this.state=cF1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_PLUS_O:switch(Q){case cF1.cc.K:case cF1.cc.k:this.state=cF1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_PLUS_OK:switch(Q){case cF1.cc.NL:this.dispatcher.push({kind:cF1.Kind.OK}),this.drop=0,this.state=cF1.State.OP_START;break}break;case cF1.State.OP_MINUS:switch(Q){case cF1.cc.E:case cF1.cc.e:this.state=cF1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_MINUS_E:switch(Q){case cF1.cc.R:case cF1.cc.r:this.state=cF1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_MINUS_ER:switch(Q){case cF1.cc.R:case cF1.cc.r:this.state=cF1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_MINUS_ERR:switch(Q){case cF1.cc.SPACE:case cF1.cc.TAB:this.state=cF1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_MINUS_ERR_SPC:switch(Q){case cF1.cc.SPACE:case cF1.cc.TAB:continue;default:this.state=cF1.State.MINUS_ERR_ARG,this.as=Z}break;case cF1.State.MINUS_ERR_ARG:switch(Q){case cF1.cc.CR:this.drop=1;break;case cF1.cc.NL:{let Y;if(this.argBuf)Y=this.argBuf.bytes(),this.argBuf=void 0;else Y=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:cF1.Kind.ERR,data:Y}),this.drop=0,this.as=Z+1,this.state=cF1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case cF1.State.OP_P:switch(Q){case cF1.cc.I:case cF1.cc.i:this.state=cF1.State.OP_PI;break;case cF1.cc.O:case cF1.cc.o:this.state=cF1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_PO:switch(Q){case cF1.cc.N:case cF1.cc.n:this.state=cF1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_PON:switch(Q){case cF1.cc.G:case cF1.cc.g:this.state=cF1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_PONG:switch(Q){case cF1.cc.NL:this.dispatcher.push({kind:cF1.Kind.PONG}),this.drop=0,this.state=cF1.State.OP_START;break}break;case cF1.State.OP_PI:switch(Q){case cF1.cc.N:case cF1.cc.n:this.state=cF1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_PIN:switch(Q){case cF1.cc.G:case cF1.cc.g:this.state=cF1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_PING:switch(Q){case cF1.cc.NL:this.dispatcher.push({kind:cF1.Kind.PING}),this.drop=0,this.state=cF1.State.OP_START;break}break;case cF1.State.OP_I:switch(Q){case cF1.cc.N:case cF1.cc.n:this.state=cF1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_IN:switch(Q){case cF1.cc.F:case cF1.cc.f:this.state=cF1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_INF:switch(Q){case cF1.cc.O:case cF1.cc.o:this.state=cF1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_INFO:switch(Q){case cF1.cc.SPACE:case cF1.cc.TAB:this.state=cF1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case cF1.State.OP_INFO_SPC:switch(Q){case cF1.cc.SPACE:case cF1.cc.TAB:continue;default:this.state=cF1.State.INFO_ARG,this.as=Z}break;case cF1.State.INFO_ARG:switch(Q){case cF1.cc.CR:this.drop=1;break;case cF1.cc.NL:{let Y;if(this.argBuf)Y=this.argBuf.bytes(),this.argBuf=void 0;else Y=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:cF1.Kind.INFO,data:Y}),this.drop=0,this.as=Z+1,this.state=cF1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===cF1.State.MSG_ARG||this.state===cF1.State.MINUS_ERR_ARG||this.state===cF1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new Zk0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===cF1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new Zk0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,Q=new Uint8Array($+Z);if(Q.set(this.ma.subject),this.ma.reply)Q.set(this.ma.reply,$);if(this.argBuf=new Zk0.DenoBuffer(Q),this.ma.subject=Q.subarray(0,$),this.ma.reply)this.ma.reply=Q.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],Q=-1;for(let Y=0;Y<$.length;Y++)switch($[Y]){case cF1.cc.SPACE:case cF1.cc.TAB:case cF1.cc.CR:case cF1.cc.NL:if(Q>=0)Z.push($.subarray(Q,Y)),Q=-1;break;default:if(Q<0)Q=Y}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Nx);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],Nx);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}: ${Qk0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let Y=0;Y<$.length;Y++)switch($[Y]){case cF1.cc.SPACE:case cF1.cc.TAB:case cF1.cc.CR:case cF1.cc.NL:if(Q>=0)Z.push($.subarray(Q,Y)),Q=-1;break;default:if(Q<0)Q=Y}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Nx),this.ma.size=this.protoParseInt(Z[3],Nx);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],Nx),this.ma.size=this.protoParseInt(Z[4],Nx);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let Q=0;for(let Y=0;Y<$.length;Y++){if($[Y]<uF1||$[Y]>G58)return-1;Q=Q*10+($[Y]-uF1)}return Z!==void 0&&Q>Z?-1:Q}}cF1.Parser=lF1;cF1.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};cF1.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 a$0=_((mF1)=>{Object.defineProperty(mF1,"__esModule",{value:!0});mF1.MsgHdrsImpl=void 0;mF1.canonicalMIMEHeaderKey=Jk0;mF1.headers=H58;var dF1=OJ(),eG=xB(),s$0=LJ();function Jk0($){let F=!0,U=Array($.length);for(let N=0;N<$.length;N++){let B=$.charCodeAt(N);if(B===58||B<33||B>126)throw s$0.InvalidArgumentError.format("header",`'${$[N]}' is not a valid character in a header name`);if(F&&97<=B&&B<=122)B-=32;else if(!F&&65<=B&&B<=90)B+=32;U[N]=B,F=B==45}return String.fromCharCode(...U)}function H58($=0,Z=""){if($===0&&Z!=="")throw s$0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw s$0.InvalidArgumentError.format("description","is required");return new Bx($,Z)}var Xk0="NATS/1.0";class Bx{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,Q]of this.headers){let Y=$.values(Z);if(Q.length!==Y.length)return!1;let X=[...Q].sort(),J=[...Y].sort();for(let G=0;G<X.length;G++)if(X[G]!==J[G])return!1}return!0}return!1}static decode($){let Z=new Bx,Y=dF1.TD.decode($).split(`\r
@@ -3388,7 +3388,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
3388
3388
  ${J.join(`
3389
3389
  `)}`:X}function vI6($){let Z=new Set;for(let Q of $)for(let Y of Q.split(`
3390
3390
  `)){let X=Y.trim();if(/^Co-authored-by:\s/i.test(X))Z.add(X)}return[...Z]}var Ve$=200,TI6=12,qI6,II6=300,fI0=3;var oW1=O(()=>{ZZ();m$();vI0();qI6={aheadBy:0,behindBy:0,files:[]}});function bI6($){if(!$||$.includes(".."))return!1;return fI6.test($)}function Se$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!bI6(Z))return null;let{__resolveType:Q,...Y}=$;return{resolveType:Z,payload:Y}}function Ce$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var fI6;var _e$=O(()=>{fI6=/^[\w./@-]+$/});function w$0($,Z){let Q=$?.githubRepo;if(!Q?.owner||!Q?.name)return null;if(!Q.connectionId)return Q;if(!Z.includes(Q.connectionId))return null;return Q}async function fe$($,Z,Q,Y){let X=$.organization?.id;if(!X)throw new ew(pZ);let J=await fL($.storage,X,Y);if(J&&await kN($.storage,J)){let F=await QF($,J,{forceRefresh:!0}).catch((U)=>{throw new ew(U instanceof Error?U.message:pZ)});await ve$($,Z,Q,F);return}let G=Y.connectionId??J?.legacyConnectionId;if(!G)throw new ew("Push requires a connected git account. Connect the repository's provider for this project and restart the sandbox.");await eu({ctx:$,connectionId:G,organizationId:X,forceRefresh:!0,onLegacyMintError:(F)=>{let U=F instanceof Error?F.message:pZ;throw new ew(U)}});let{cloneUrl:W,gitUserName:K,gitUserEmail:H}=await YF(G,Y.owner,Y.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=cG$(F instanceof Error?F.message:String(F));throw U?new ew(N):F});await ve$($,Z,Q,{cloneUrl:W,gitUserName:K,gitUserEmail:H})}async function ve$($,Z,Q,Y){let{cloneUrl:X,gitUserName:J,gitUserEmail:G}=Y,W=md($),K=await Z.proxyDaemonRequest(Q,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:X},identity:{userName:J,userEmail:G}},...W?{operator:W}:{}})});if(!K.ok){let H=await Jw(K,xI6).catch(()=>K.statusText);throw Error(`Failed to refresh sandbox git credentials (${K.status}): ${H}`)}}var xI6=10485760,ew;var rW1=O(()=>{zG();RI0();ga();_30();bs();ZZ();ew=class ew extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function gI6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!yI6.test(Z))throw Error(`Invalid branch name: ${$}`)}function ab($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(uI6)])}async function cI6($,Z){let Q=$.var.studioContext,Y=UF(Z.branch),X=$.req.query("thread")??Y,J=X&&X===Y?Z.branchThread:X?await Q.storage.threads.get(X).catch(()=>null):null,G=J?.virtual_mcp_id===Z.virtualMcpId?J:null,W=Pf(G?.metadata?.runtime);if(W)return W;let K=wP0(Z.virtualMcpMetadata),H=K==="cms"?await kW1(Q,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&K==="cms");if(U&&G)ha(Q,G.id,F);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:G?"unstamped":"threadless",liveness:H,resolved:F,stamped:U});return F}async function dI6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await nY($.var.studioContext)}catch{return null}}function eb($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function od($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),Y=$.var.studioContext,X=w$0(Z,Q);if(!X)throw new f0({provider:"github",status:404,message:"Project has no GitHub repository"});let J=i(Y);return su(Y,J.id,X)}function sW1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=L3$(Z);if(Y!==void 0)return $.json({error:Q},429,{...R5,...Y===null?{}:{"Retry-After":String(Math.ceil(Y/1000))}});if(Z instanceof z6)return $.json({error:Q},409,R5);let X=RG(Z);if(X!==null){let J=X===404?404:X===409||X===422?409:502;return $.json({error:Q},J,R5)}return $.json({error:Q},502,R5)}async function ye$($,Z,Q){let Y;try{Y=await fetch(Z,Q)}catch{return $.json({error:"Preview unreachable"},502)}let X;try{X=await Y.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(X,{status:Y.status,headers:{"content-type":Y.headers.get("content-type")??"application/json"}})}async function ge$($){try{let Z=await od($),Q=await bI0(Z,$.get("vmClaim").branch);return $.json(Q,200,R5)}catch(Z){return sW1($,Z)}}function j$0($,Z){let Y=(gI0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return gI0.set($,X),X.finally(()=>{if(gI0.get($)===X)gI0.delete($)}),Y}async function k7($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,R5);let Y=Q?.runner??eb($);if(Y instanceof Response)return Y;let{claimName:X,userId:J,projectRef:G}=$.get("vmClaim"),W=Q?.method??"POST",K=null,H=new Headers;if(Q?.jsonBody!==void 0)K=Q.jsonBody,H.set("content-type","application/json");else if(Q?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=Q?.signal,U={method:W,headers:H,body:K,...F?{signal:F}:{}},N=async()=>{let B=await Y.proxyDaemonRequest(X,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Y.adoptLiveClaim({userId:J,projectRef:G},X))B=await Y.proxyDaemonRequest(X,Z,U);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...R5}})}}let D=await B.text(),L=Q?.redactRepoDir?mI6(D):D,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...R5}})};try{if(F){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((L,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await N()}catch(B){let D=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${D}`},502)}}function mI6($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function hI0($,Z,Q,Y="GET",X){let J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null});if(J.status===404&&X){try{await J.body?.cancel()}catch{}if(await $.adoptLiveClaim(X,Z))J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null})}if(J.status===404){try{await J.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let G=await J.text();if(!J.ok){let W=`Daemon error (${J.status})`;try{W=JSON.parse(G).error??W}catch{}throw Error(W)}return JSON.parse(G)}function iI6($){return he$.includes($)}var yI6,be$=524288,hI6=65536,uI6=1e4,xe$=2000,lI6,gI0,R5,he$,ue$=()=>{let $=new e0;$.use("/:virtualMcpId/:branch/*",lI6),$.post("/:virtualMcpId/:branch/write",(Q)=>k7(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:ab(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>k7(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:ab(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>k7(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:ab(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>k7(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:ab(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>k7(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:ab(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>k7(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:ab(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>k7(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:ab(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return k7(Q,`/_sandbox/exec/${encodeURIComponent(Y)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return k7(Q,`/_sandbox/exec/${encodeURIComponent(Y)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>k7(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>k7(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let Y=Q.req.param("step");if(!Y||!iI6(Y))return Q.json({error:`step must be one of: ${he$.join(", ")}`},400);let X=Q.get("vmClaim"),J=await kW1(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await dI6(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,R5);if(Y==="start"){let G=i(Q.var.studioContext),W=Cl(X.virtualMcpMetadata);try{await BP0({ctx:Q.var.studioContext,runner:J,handle:X.claimName,orgId:G.id,userId:X.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return Q.json({error:`Failed to push env to daemon: ${H}`},502)}}return k7(Q,`/_sandbox/setup/${Y}`,{signal:Q.req.raw.signal,map404to410:!0,runner:J})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let Y=Q.get("vmClaim");if(!Y.runner)return MB(Q,async(X)=>{await X.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return ha$(Q,{ctx:Q.var.studioContext,claimName:Y.claimName,runner:Y.runner,virtualMcpId:Y.virtualMcpId,branch:Y.branch,userId:Y.userId,projectRef:Y.projectRef,virtualMcpMetadata:Y.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return ge$(Q);return Z(Q)});let Z=(Q)=>k7(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(xe$)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return ge$(Q);return k7(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(xe$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")try{let X=await Q.req.json().catch(()=>({})),J=await od(Q),G=await xI0(J,Y.branch,X.base);return Q.json(G,200,R5)}catch(X){return sW1(Q,X)}return k7(Q,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Q.json({ok:!0},200,R5);let Y=eb(Q);if(Y instanceof Response)return Y;let{claimName:X,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return j$0(X,async()=>{try{await SW1(W,Y,X);let K=w$0(J,G);if(K)await fe$(W,Y,X,K)}catch(K){if(K instanceof ew)return Q.json({error:K.message},403,R5);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,R5)}return k7(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return j$0(Y.claimName,async()=>{let X=await Q.req.json().catch(()=>({})),J=Array.isArray(X.filepaths)?X.filepaths.filter((G)=>typeof G==="string"):[];if(J.length===0)return Q.json({error:"filepaths is required"},400,R5);try{let G=await od(Q);return await ke$(G,Y.branch,J),Q.json({ok:!0},200,R5)}catch(G){let W=RG(G)===409||G instanceof z6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,R5)}});return j$0(Y.claimName,()=>k7(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return j$0(Y.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await od(Q),H=W.base??await K.getDefaultBranch();return await yI0(K,Y.branch,H),Q.json({ok:!0},200,R5)}catch(W){return sW1(Q,W)}});let X=eb(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return j$0(J,async()=>{try{await SW1(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,R5)}return k7(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",l5({maxSize:be$,onError:(Q)=>Q.json({error:"Payload too large"},413,R5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=eb(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,D]=vW1(F)&&N?[F,U]:X?await Promise.all([hI0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),hI0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await od(Q);return Promise.all([bI0(w,Y.branch),xI0(w,Y.branch)])})();await vW(K,i(K).id,"suggesting a commit message");let L=await ma$(K,B,D);return Q.json(L,200,R5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return Q.json({error:F},502,R5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",l5({maxSize:be$,onError:(Q)=>Q.json({error:"Payload too large"},413,R5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=eb(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,D]=vW1(F)&&N?[F,U]:X?await Promise.all([hI0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),hI0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await od(Q);return Promise.all([bI0(w,Y.branch),xI0(w,Y.branch)])})();await vW(K,i(K).id,"judging whether a change needs review");let L=await pa$(K,B,D,typeof H.language==="string"?H.language:void 0);return Q.json(L,200,R5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return Q.json({error:F},502,R5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let Y=eb(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J=Q.req.query("path");if(!J||!J.startsWith("/")||J.startsWith("//")||J.includes("..")||J.includes("\\"))return Q.json({error:"Path not allowed"},403);let G;try{G=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W=G.replace(/\/+$/,"");return ye$(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",l5({maxSize:hI6,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=eb(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J;try{J=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!J)return Q.json({error:"Preview not available"},502);let G;try{G=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Q.json({error:"Invalid JSON body"},400);let W=Se$(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=Ce$(J,W.resolveType);return ye$(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var le$=O(()=>{y$();xK();dd();VW1();fa();xa$();kG();_l();ya$();UK();AH();ga$();ua$();H81();xa();xW1();na$();ZZ();c6();oW1();_e$();rW1();yI6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;lI6=TI0(async($,Z)=>{let Q=$.var.studioContext;try{p(Q)}catch{return $.json({error:"Unauthorized"},401)}let Y=u0(Q);if(!Y)return $.json({error:"Unauthorized"},401);let X;try{X=i(Q)}catch{return $.json({error:"Organization scope required"},403)}let J=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!J||!G)return $.json({error:"virtualMcpId and branch are required"},400);try{gI6(G)}catch(L){let w=L instanceof Error?L.message:String(L);return $.json({error:w},400)}let W=await Q.storage.virtualMcps.findById(J);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=Ga({orgId:X.id,virtualMcpId:J,branch:G}),H=await l11(Q,G),F=c11(H,Y),U=ba$({userId:F,projectRef:K}),N=W.metadata??null,B=await cI6($,{claimName:U,branch:G,virtualMcpId:J,sandboxUserId:F,virtualMcpMetadata:N,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:null,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z();let D;try{D=await nY(Q)}catch{D=null}if(!D)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:D,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z()});gI0=new Map;R5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};he$=["clone","install","start"]});function ce$($,Z,Q){let Y=aW1.get($);if(!Y)Y={pending:null,running:!1},aW1.set($,Y);if(!Y.pending)Y.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let X=Y.pending;X.deps=Z;for(let[G,W]of Object.entries(Q.set??{}))X.set.set(G,W),X.del.delete(G);for(let G of Q.delete??[])X.del.add(G),X.set.delete(G);let J=new Promise((G,W)=>{X.resolvers.push(G),X.rejecters.push(W)});if(!Y.running)nI6($,Y);return J}async function nI6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let Y=await tI6(Q);for(let X of Q.resolvers)X(Y)}catch(Y){for(let X of Q.rejecters)X(Y)}}}finally{if(Z.running=!1,!Z.pending)aW1.delete($)}}async function tI6($){let{client:Z,branch:Q,packagePath:Y}=$.deps,X=new Map;for(let J=0;;J++){let G=await td(Z,Q),W=await Z.listDecofileEntries(G,Y),K=pW1(W,Y),H=[],F=new Map(K.map((N)=>[N.path,{stem:N.stem,sha:N.sha}]));for(let[N,B]of $.set){let D=nW1(K,N),L=`${JSON.stringify(B,null,2)}
3391
- `;await Re$(Z.repo,L);let w=D[0]??`${_I0(Y)}/${hW1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of D.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of nW1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await qe$(Z,F.values(),X),{decofile:B,skipped:D}=N$0(N);if(D.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:sW(Z.repo),branch:Q,packagePath:Y,blocks:D.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:oI6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof z6)||J>=pI6-1)throw N;await P$(_7(2000,200,J,2,0.5))}}}function oI6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return D11(Y,$.deps.coAuthor)}var pI6=3,aW1;var de$=O(()=>{Jz0();MI0();X6();m$();ZZ();vI0();aW1=new Map});import{createHmac as me$,randomBytes as rI6,timingSafeEqual as sI6}from"crypto";function ie$(){if(uI0)return uI0;let $;try{let Z=O0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return uI0=$?Buffer.from($):rI6(32),uI0}function eW1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+aI6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=me$("sha256",ie$()).update(Y).digest("base64url");return`${Y}.${X}`}function pe$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(me$("sha256",ie$()).update(Y).digest("base64url"));if(X.length!==J.length||!sI6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var aI6=21600000,uI0=null;var ne$=O(()=>{t1()});import{z as rd}from"zod";function $V6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&eI6.test($)}function ae$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function E$0($){let Z=$.get("decofileScope");return su($.var.studioContext,Z.organizationId,Z.githubRepo)}function z$0($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof z6)return $.json({error:Q},409);let Y=RG(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function ee$(){let $=new e0;return $.use("/:virtualMcpId/:branch",se$),$.use("/:virtualMcpId/:branch/*",se$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await E$0(Z),X=await Me$(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(X.decofile,200,{...J,"content-type":"application/json"});let G=eW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(ae$(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return z$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await E$0(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return z$0(Z,X)}}),$.patch("/:virtualMcpId/:branch",QV6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=YV6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J=X.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{qI0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(gW1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await E$0(Z),W=await ce$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:md(Y)},J),K=eW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:ae$(Z)})}catch(G){return z$0(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await E$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(RG(W)!==409)throw W;await yI0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(RG(G)===409)return Z.json({error:"merge-conflict"},409);if(RG(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return z$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await E$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(RG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return z$0(Z,Y)}}),$}var eI6,te$=500,oe$=1048576,re$=1024,ZV6=8388608,QV6,YV6,se$;var $08=O(()=>{F81();MI0();y$();xK();VW1();RI0();rW1();ZZ();de$();ne$();oW1();vI0();AH();eI6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;QV6=l5({maxSize:ZV6,onError:($)=>$.json({error:"Payload too large"},413)}),YV6=rd.object({set:rd.record(rd.string(),rd.unknown()).optional(),delete:rd.array(rd.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=te$,{message:`Patch cannot touch more than ${te$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=oe$),{message:`Each block must be at most ${oe$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=re$),{message:`Each block key must be at most ${re$} characters`}),se$=TI0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!$V6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!pe$(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await QG(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!LP0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=w$0(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var Z08=($)=>{let Z=new e0;if(Z.use("*",Pd),Z.use("*",St$),Z.route("/",vM0()),Z.route("/",No$()),Z.route("/",at$()),Z.route("/",Aa$()),Z.route("/",Ba$()),Z.route("/",Ea$()),Z.route("/",Oa$()),Z.route("/",zI0()),Z.route("/tools",ka$()),Z.route("/",Ma$()),Z.route("/",is$({kvStorage:$.kvStorage})),Z.route("/",ds$()),Z.route("/fs",Xa$({getConnection:$.getNatsConnection})),Z.route("/sandbox",ue$()),Z.route("/decofile",ee$()),Z.route("/",Fa$()),Z.route("/",Ga$()),Z.route("/deco-sites",bM0()),Z.route("/hosting",lt$()),Z.route("/monitor",tt$()),Z.route("/sso",VM0()),Z.route("/",PI0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",xt$()),$.mountDevAssets)Z.route("/dev-assets",hM0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",ui$()),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",Ka$()),Z.route("/mcp",z20()),Z.route("/mcp/self",wI0()),Z.route("/mcp",T20()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Q08=O(()=>{y$();Ct$();wM0();yt$();o31();ct$();ot$();uM0();ub();m31();$G1();ms$();ps$();Ja$();Wa$();ne();g31();R20();EW1();Ha$();Ua$();Da$();La$();AW1();Ta$();Ia$();TW1();Sa$();RW1();P20();le$();$08()});function XV6($){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 JV6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Y08=()=>{let $=new e0;return $.use("*",JV6),$.get("/",async(Z)=>{let Q=O0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await HJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:XV6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var X08=O(()=>{y$();t1();Lq0()});import{z as V1}from"zod";function sF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function OV6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function LV6($,Z,Q){try{return JSON.parse($)}catch{throw new W08(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function wV6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:LV6(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function jV6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?vJ(Q.function.parameters):vJ({type:"object",properties:{}});return[Q.function.name,D$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function EV6($){if(!$)return;return{openai:{response_format:$}}}function zV6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function J08($,Z,Q,Y,X,J){let G={model:$,messages:Z,tools:Q,temperature:Y.temperature,maxTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function G08($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var GV6=256,WV6,KV6,HV6,FV6,UV6,NV6,BV6,DV6,W08,K08,H08;var F08=O(()=>{b4();y$();dd();TK();WV6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),KV6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),HV6=V1.discriminatedUnion("role",[V1.object({role:V1.literal("system"),content:V1.string(),name:V1.string().optional()}),V1.object({role:V1.literal("user"),content:V1.union([V1.string(),V1.array(V1.union([V1.object({type:V1.literal("text"),text:V1.string()}),V1.object({type:V1.literal("image_url"),image_url:V1.object({url:V1.string(),detail:V1.string().optional()})})]))]),name:V1.string().optional()}),V1.object({role:V1.literal("assistant"),content:V1.string().nullable().optional(),name:V1.string().optional(),tool_calls:V1.array(KV6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),FV6=V1.object({type:V1.literal("text")}),UV6=V1.object({type:V1.literal("json_object")}),NV6=V1.object({type:V1.literal("json_schema"),json_schema:V1.object({name:V1.string(),description:V1.string().optional(),schema:V1.record(V1.string(),V1.unknown()),strict:V1.boolean().optional()})}),BV6=V1.union([FV6,UV6,NV6]),DV6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(HV6),stream:V1.boolean().optional().default(!1),temperature:V1.number().min(0).max(2).optional(),max_tokens:V1.number().positive().optional(),top_p:V1.number().min(0).max(1).optional(),frequency_penalty:V1.number().min(-2).max(2).optional(),presence_penalty:V1.number().min(-2).max(2).optional(),stop:V1.union([V1.string(),V1.array(V1.string())]).optional(),tools:V1.array(WV6).optional(),tool_choice:V1.union([V1.literal("auto"),V1.literal("none"),V1.literal("required"),V1.object({type:V1.literal("function"),function:V1.object({name:V1.string()})})]).optional(),response_format:BV6.optional(),user:V1.string().optional()});W08=class W08 extends Error{constructor($){super($);this.name="MessageConversionError"}};K08=new e0;K08.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(sF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(sF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(sF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=DV6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(sF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=OV6(J.model);if(!G)return $.json(sF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>HE(E.providerId));if(!j)return $.json(sF("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(sF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=wV6(J.messages),N=J.tools?jV6(J.tools):void 0,B=EV6(J.response_format),D=zV6(),L=Math.floor(Date.now()/1000);if(J.stream)return MB($,async(w)=>{let j=J08(F,U,N,J,B,$.req.raw.signal);try{let E=Qw(j),z=!1,P=0,A="",q=async()=>{if(A.length===0)return;let k=A;A="",await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of E.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=GV6)await q()}else if(k.type==="tool-call"){await q();let M=P++;await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await q(),await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:G08(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await q(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=J08(F,U,N,J,B,$.req.raw.signal),j=await $w(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:G08(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(sF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(sF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(sF(X.message,"server_error"),500)}});H08=K08});function PV6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function U08(){let $=new e0;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=u0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!iZ(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||r5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(mJ0(U)!==J)continue;if(!PV6(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var N08=O(()=>{y$();PG()});var D08;var B08=O(()=>{D08={name:"decocms",version:"4.378.5",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function RV6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??TV6}}var O08,TV6="https://ph.studio.decocms.com",L08;var w08=O(()=>{y$();Fr();uf();k5();t1();R31();B08();O08=new e0;O08.get("/",($)=>{let Z={version:D08.version,theme:t5$(),...oW().logo&&{logo:oW().logo},...aN()&&{internalUrl:Sh1()},...O0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!O0().firecrawlApiKey,hostingEnabled:!!O0().controlplaneRestUrl&&!!O0().controlplaneServiceToken,hostingControlPlaneGa:O0().hostingControlPlaneGa,monitorEnabled:!!O0().clickhouseAnalyticsUrl&&!!O0().clickhouseAnalyticsPassword,monitorGa:O0().monitorGa,plansEnabled:O0().plansEnabled,auth:Cn$(),posthog:RV6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:_B()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});L08=O08});function sd($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function $K1($){return(sd($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function E08($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(sd($))}&sz=${Z}`}function j08($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function z08($){let{brand:Z,domain:Q,score:Y,verdict:X}=$,J=typeof Y==="number"?`${Z} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=X?.trim()?j08(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):j08(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as m0}from"zod";var $x,qV6,MV6,IV6,VV6,P08;var A08=O(()=>{$x=m0.enum(["good","bad","neutral"]),qV6=m0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},m0.object({kind:m0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:m0.coerce.string().optional(),tone:$x.optional(),muted:m0.boolean().optional(),delta:m0.coerce.string().optional(),deltaDir:m0.enum(["up","down","neutral"]).optional(),points:m0.array(m0.coerce.number()).optional(),label:m0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),MV6=m0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},m0.array(qV6)),IV6={key:m0.coerce.string(),title:m0.coerce.string(),eyebrow:m0.coerce.string().optional(),headline:m0.coerce.string(),annotation:m0.coerce.string().optional(),methodology:m0.coerce.string().optional(),sources:m0.array(m0.object({name:m0.coerce.string(),logoUrl:m0.coerce.string()})).optional()},VV6=m0.discriminatedUnion("template",[m0.object({template:m0.literal("cover"),score:m0.object({value:m0.coerce.number(),max:m0.coerce.number().optional(),grade:m0.coerce.string().optional(),label:m0.coerce.string().optional()}).optional(),brandImage:m0.coerce.string().optional(),screenshot:m0.coerce.string().optional(),mobileScreenshot:m0.coerce.string().optional()}),m0.object({template:m0.literal("cta"),ctaUrl:m0.coerce.string().optional(),ctaLabel:m0.coerce.string().optional(),bullets:m0.array(m0.coerce.string()).optional()}),m0.object({template:m0.literal("series"),points:m0.array(m0.coerce.number()).min(2),xLabels:m0.array(m0.coerce.string()).min(1),unit:m0.coerce.string().optional(),callout:m0.object({index:m0.coerce.number(),value:m0.coerce.string(),tone:$x.optional()})}),m0.object({template:m0.literal("threshold"),value:m0.coerce.string().default(""),metricLabel:m0.coerce.string().optional(),ratio:m0.coerce.number(),thresholdRatio:m0.coerce.number().optional(),thresholdLabel:m0.coerce.string().default(""),tone:$x.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:$x.optional()})).min(1)}),m0.object({template:m0.literal("bars"),items:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),ratio:m0.coerce.number(),tone:$x.optional()})).min(1)}),m0.object({template:m0.literal("gauges"),gauges:m0.array(m0.object({label:m0.coerce.string(),value:m0.coerce.string(),status:m0.enum(["good","warn","bad"]).catch("warn"),caption:m0.coerce.string().optional(),ratio:m0.coerce.number().optional()})).min(1)}),m0.object({template:m0.literal("checklist"),checks:m0.array(m0.object({label:m0.coerce.string(),status:m0.enum(["pass","fail","warn"]).catch("fail"),value:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("table"),columns:m0.array(m0.object({label:m0.coerce.string(),align:m0.enum(["left","right"]).optional()})).min(1),rows:m0.array(MV6).min(1),highlightRow:m0.coerce.number().optional()}),m0.object({template:m0.literal("products"),products:m0.array(m0.object({name:m0.coerce.string(),price:m0.coerce.string().optional(),image:m0.coerce.string().optional(),url:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("list"),entries:m0.array(m0.object({label:m0.coerce.string(),severity:m0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:m0.coerce.number().optional()}),m0.object({template:m0.literal("keywords"),volumeLabel:m0.coerce.string().optional(),keywords:m0.array(m0.object({term:m0.coerce.string(),volume:m0.coerce.string(),position:m0.coerce.number().catch(0)})).min(1)}),m0.object({template:m0.literal("competitor"),metricLabel:m0.coerce.string().optional(),competitors:m0.array(m0.object({name:m0.coerce.string(),value:m0.coerce.string(),tone:$x.optional(),isYou:m0.boolean().optional()})).min(1)}),m0.object({template:m0.literal("scorecard"),rivalLabel:m0.coerce.string().optional(),dimensions:m0.array(m0.object({label:m0.coerce.string(),you:m0.coerce.string(),rival:m0.coerce.string().optional(),rivalName:m0.coerce.string().optional(),tone:$x.optional()})).min(1)})]),P08=m0.object({...IV6,template:VV6})});function lI0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=P08.safeParse(X.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:X.section_type,position:X.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((X)=>X!==null),Y=Q.filter((X)=>X.template.template!=="cover"&&X.template.template!=="cta").map((X)=>({key:X.key,title:X.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Y},slides:Q},drops:Z}}var ZK1=O(()=>{A08()});import{join as T08}from"path";async function SV6($){try{let Z=await fetch(`${hH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(kV6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=lI0(Q);if(!Y.slides.length)return null;let X=Y.slides.find((W)=>W.template.template==="cover"),J=X?.template,G=J&&J.template==="cover"?J:void 0;return{brand:Y.meta.brand?.trim()||$K1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function R3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function CV6($,Z){let Q=sd($),Y=Z?.brand?.trim()||$K1(Q),X=E08(Q,128),G=`${(O0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=z08({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${R3(W)}</title>`,`<meta name="description" content="${R3(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="${R3(W)}" />`,`<meta property="og:description" content="${R3(K)}" />`,`<meta property="og:url" content="${R3(G)}" />`,`<meta property="og:image" content="${R3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${R3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${R3(W)}" />`,`<meta name="twitter:description" content="${R3(K)}" />`,`<meta name="twitter:image" content="${R3(H)}" />`,`<meta name="twitter:image:alt" content="${R3(F)}" />`,`<link rel="canonical" href="${R3(G)}" />`,`<link rel="icon" href="${R3(X)}" sizes="any" />`].join(`
3391
+ `;await Re$(Z.repo,L);let w=D[0]??`${_I0(Y)}/${hW1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of D.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of nW1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await qe$(Z,F.values(),X),{decofile:B,skipped:D}=N$0(N);if(D.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:sW(Z.repo),branch:Q,packagePath:Y,blocks:D.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:oI6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof z6)||J>=pI6-1)throw N;await P$(_7(2000,200,J,2,0.5))}}}function oI6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return D11(Y,$.deps.coAuthor)}var pI6=3,aW1;var de$=O(()=>{Jz0();MI0();X6();m$();ZZ();vI0();aW1=new Map});import{createHmac as me$,randomBytes as rI6,timingSafeEqual as sI6}from"crypto";function ie$(){if(uI0)return uI0;let $;try{let Z=O0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return uI0=$?Buffer.from($):rI6(32),uI0}function eW1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+aI6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=me$("sha256",ie$()).update(Y).digest("base64url");return`${Y}.${X}`}function pe$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(me$("sha256",ie$()).update(Y).digest("base64url"));if(X.length!==J.length||!sI6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var aI6=21600000,uI0=null;var ne$=O(()=>{t1()});import{z as rd}from"zod";function $V6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&eI6.test($)}function ae$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function E$0($){let Z=$.get("decofileScope");return su($.var.studioContext,Z.organizationId,Z.githubRepo)}function z$0($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof z6)return $.json({error:Q},409);let Y=RG(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function ee$(){let $=new e0;return $.use("/:virtualMcpId/:branch",se$),$.use("/:virtualMcpId/:branch/*",se$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await E$0(Z),X=await Me$(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(X.decofile,200,{...J,"content-type":"application/json"});let G=eW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(ae$(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return z$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await E$0(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return z$0(Z,X)}}),$.patch("/:virtualMcpId/:branch",QV6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=YV6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J=X.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{qI0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(gW1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await E$0(Z),W=await ce$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:md(Y)},J),K=eW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:ae$(Z)})}catch(G){return z$0(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await E$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(RG(W)!==409)throw W;await yI0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(RG(G)===409)return Z.json({error:"merge-conflict"},409);if(RG(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return z$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await E$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(RG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return z$0(Z,Y)}}),$}var eI6,te$=500,oe$=1048576,re$=1024,ZV6=8388608,QV6,YV6,se$;var $08=O(()=>{F81();MI0();y$();xK();VW1();RI0();rW1();ZZ();de$();ne$();oW1();vI0();AH();eI6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;QV6=l5({maxSize:ZV6,onError:($)=>$.json({error:"Payload too large"},413)}),YV6=rd.object({set:rd.record(rd.string(),rd.unknown()).optional(),delete:rd.array(rd.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=te$,{message:`Patch cannot touch more than ${te$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=oe$),{message:`Each block must be at most ${oe$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=re$),{message:`Each block key must be at most ${re$} characters`}),se$=TI0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!$V6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!pe$(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await QG(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!LP0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=w$0(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var Z08=($)=>{let Z=new e0;if(Z.use("*",Pd),Z.use("*",St$),Z.route("/",vM0()),Z.route("/",No$()),Z.route("/",at$()),Z.route("/",Aa$()),Z.route("/",Ba$()),Z.route("/",Ea$()),Z.route("/",Oa$()),Z.route("/",zI0()),Z.route("/tools",ka$()),Z.route("/",Ma$()),Z.route("/",is$({kvStorage:$.kvStorage})),Z.route("/",ds$()),Z.route("/fs",Xa$({getConnection:$.getNatsConnection})),Z.route("/sandbox",ue$()),Z.route("/decofile",ee$()),Z.route("/",Fa$()),Z.route("/",Ga$()),Z.route("/deco-sites",bM0()),Z.route("/hosting",lt$()),Z.route("/monitor",tt$()),Z.route("/sso",VM0()),Z.route("/",PI0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",xt$()),$.mountDevAssets)Z.route("/dev-assets",hM0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",ui$()),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",Ka$()),Z.route("/mcp",z20()),Z.route("/mcp/self",wI0()),Z.route("/mcp",T20()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Q08=O(()=>{y$();Ct$();wM0();yt$();o31();ct$();ot$();uM0();ub();m31();$G1();ms$();ps$();Ja$();Wa$();ne();g31();R20();EW1();Ha$();Ua$();Da$();La$();AW1();Ta$();Ia$();TW1();Sa$();RW1();P20();le$();$08()});function XV6($){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 JV6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Y08=()=>{let $=new e0;return $.use("*",JV6),$.get("/",async(Z)=>{let Q=O0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await HJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:XV6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var X08=O(()=>{y$();t1();Lq0()});import{z as V1}from"zod";function sF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function OV6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function LV6($,Z,Q){try{return JSON.parse($)}catch{throw new W08(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function wV6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:LV6(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function jV6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?vJ(Q.function.parameters):vJ({type:"object",properties:{}});return[Q.function.name,D$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function EV6($){if(!$)return;return{openai:{response_format:$}}}function zV6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function J08($,Z,Q,Y,X,J){let G={model:$,messages:Z,tools:Q,temperature:Y.temperature,maxTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function G08($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var GV6=256,WV6,KV6,HV6,FV6,UV6,NV6,BV6,DV6,W08,K08,H08;var F08=O(()=>{b4();y$();dd();TK();WV6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),KV6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),HV6=V1.discriminatedUnion("role",[V1.object({role:V1.literal("system"),content:V1.string(),name:V1.string().optional()}),V1.object({role:V1.literal("user"),content:V1.union([V1.string(),V1.array(V1.union([V1.object({type:V1.literal("text"),text:V1.string()}),V1.object({type:V1.literal("image_url"),image_url:V1.object({url:V1.string(),detail:V1.string().optional()})})]))]),name:V1.string().optional()}),V1.object({role:V1.literal("assistant"),content:V1.string().nullable().optional(),name:V1.string().optional(),tool_calls:V1.array(KV6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),FV6=V1.object({type:V1.literal("text")}),UV6=V1.object({type:V1.literal("json_object")}),NV6=V1.object({type:V1.literal("json_schema"),json_schema:V1.object({name:V1.string(),description:V1.string().optional(),schema:V1.record(V1.string(),V1.unknown()),strict:V1.boolean().optional()})}),BV6=V1.union([FV6,UV6,NV6]),DV6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(HV6),stream:V1.boolean().optional().default(!1),temperature:V1.number().min(0).max(2).optional(),max_tokens:V1.number().positive().optional(),top_p:V1.number().min(0).max(1).optional(),frequency_penalty:V1.number().min(-2).max(2).optional(),presence_penalty:V1.number().min(-2).max(2).optional(),stop:V1.union([V1.string(),V1.array(V1.string())]).optional(),tools:V1.array(WV6).optional(),tool_choice:V1.union([V1.literal("auto"),V1.literal("none"),V1.literal("required"),V1.object({type:V1.literal("function"),function:V1.object({name:V1.string()})})]).optional(),response_format:BV6.optional(),user:V1.string().optional()});W08=class W08 extends Error{constructor($){super($);this.name="MessageConversionError"}};K08=new e0;K08.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(sF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(sF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(sF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=DV6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(sF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=OV6(J.model);if(!G)return $.json(sF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>HE(E.providerId));if(!j)return $.json(sF("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(sF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=wV6(J.messages),N=J.tools?jV6(J.tools):void 0,B=EV6(J.response_format),D=zV6(),L=Math.floor(Date.now()/1000);if(J.stream)return MB($,async(w)=>{let j=J08(F,U,N,J,B,$.req.raw.signal);try{let E=Qw(j),z=!1,P=0,A="",q=async()=>{if(A.length===0)return;let k=A;A="",await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of E.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=GV6)await q()}else if(k.type==="tool-call"){await q();let M=P++;await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await q(),await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:G08(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await q(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=J08(F,U,N,J,B,$.req.raw.signal),j=await $w(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:G08(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(sF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(sF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(sF(X.message,"server_error"),500)}});H08=K08});function PV6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function U08(){let $=new e0;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=u0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!iZ(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||r5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(mJ0(U)!==J)continue;if(!PV6(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var N08=O(()=>{y$();PG()});var D08;var B08=O(()=>{D08={name:"decocms",version:"4.378.6",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function RV6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??TV6}}var O08,TV6="https://ph.studio.decocms.com",L08;var w08=O(()=>{y$();Fr();uf();k5();t1();R31();B08();O08=new e0;O08.get("/",($)=>{let Z={version:D08.version,theme:t5$(),...oW().logo&&{logo:oW().logo},...aN()&&{internalUrl:Sh1()},...O0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!O0().firecrawlApiKey,hostingEnabled:!!O0().controlplaneRestUrl&&!!O0().controlplaneServiceToken,hostingControlPlaneGa:O0().hostingControlPlaneGa,monitorEnabled:!!O0().clickhouseAnalyticsUrl&&!!O0().clickhouseAnalyticsPassword,monitorGa:O0().monitorGa,plansEnabled:O0().plansEnabled,auth:Cn$(),posthog:RV6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:_B()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});L08=O08});function sd($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function $K1($){return(sd($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function E08($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(sd($))}&sz=${Z}`}function j08($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function z08($){let{brand:Z,domain:Q,score:Y,verdict:X}=$,J=typeof Y==="number"?`${Z} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=X?.trim()?j08(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):j08(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as m0}from"zod";var $x,qV6,MV6,IV6,VV6,P08;var A08=O(()=>{$x=m0.enum(["good","bad","neutral"]),qV6=m0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},m0.object({kind:m0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:m0.coerce.string().optional(),tone:$x.optional(),muted:m0.boolean().optional(),delta:m0.coerce.string().optional(),deltaDir:m0.enum(["up","down","neutral"]).optional(),points:m0.array(m0.coerce.number()).optional(),label:m0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),MV6=m0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},m0.array(qV6)),IV6={key:m0.coerce.string(),title:m0.coerce.string(),eyebrow:m0.coerce.string().optional(),headline:m0.coerce.string(),annotation:m0.coerce.string().optional(),methodology:m0.coerce.string().optional(),sources:m0.array(m0.object({name:m0.coerce.string(),logoUrl:m0.coerce.string()})).optional()},VV6=m0.discriminatedUnion("template",[m0.object({template:m0.literal("cover"),score:m0.object({value:m0.coerce.number(),max:m0.coerce.number().optional(),grade:m0.coerce.string().optional(),label:m0.coerce.string().optional()}).optional(),brandImage:m0.coerce.string().optional(),screenshot:m0.coerce.string().optional(),mobileScreenshot:m0.coerce.string().optional()}),m0.object({template:m0.literal("cta"),ctaUrl:m0.coerce.string().optional(),ctaLabel:m0.coerce.string().optional(),bullets:m0.array(m0.coerce.string()).optional()}),m0.object({template:m0.literal("series"),points:m0.array(m0.coerce.number()).min(2),xLabels:m0.array(m0.coerce.string()).min(1),unit:m0.coerce.string().optional(),callout:m0.object({index:m0.coerce.number(),value:m0.coerce.string(),tone:$x.optional()})}),m0.object({template:m0.literal("threshold"),value:m0.coerce.string().default(""),metricLabel:m0.coerce.string().optional(),ratio:m0.coerce.number(),thresholdRatio:m0.coerce.number().optional(),thresholdLabel:m0.coerce.string().default(""),tone:$x.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:$x.optional()})).min(1)}),m0.object({template:m0.literal("bars"),items:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),ratio:m0.coerce.number(),tone:$x.optional()})).min(1)}),m0.object({template:m0.literal("gauges"),gauges:m0.array(m0.object({label:m0.coerce.string(),value:m0.coerce.string(),status:m0.enum(["good","warn","bad"]).catch("warn"),caption:m0.coerce.string().optional(),ratio:m0.coerce.number().optional()})).min(1)}),m0.object({template:m0.literal("checklist"),checks:m0.array(m0.object({label:m0.coerce.string(),status:m0.enum(["pass","fail","warn"]).catch("fail"),value:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("table"),columns:m0.array(m0.object({label:m0.coerce.string(),align:m0.enum(["left","right"]).optional()})).min(1),rows:m0.array(MV6).min(1),highlightRow:m0.coerce.number().optional()}),m0.object({template:m0.literal("products"),products:m0.array(m0.object({name:m0.coerce.string(),price:m0.coerce.string().optional(),image:m0.coerce.string().optional(),url:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("list"),entries:m0.array(m0.object({label:m0.coerce.string(),severity:m0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:m0.coerce.number().optional()}),m0.object({template:m0.literal("keywords"),volumeLabel:m0.coerce.string().optional(),keywords:m0.array(m0.object({term:m0.coerce.string(),volume:m0.coerce.string(),position:m0.coerce.number().catch(0)})).min(1)}),m0.object({template:m0.literal("competitor"),metricLabel:m0.coerce.string().optional(),competitors:m0.array(m0.object({name:m0.coerce.string(),value:m0.coerce.string(),tone:$x.optional(),isYou:m0.boolean().optional()})).min(1)}),m0.object({template:m0.literal("scorecard"),rivalLabel:m0.coerce.string().optional(),dimensions:m0.array(m0.object({label:m0.coerce.string(),you:m0.coerce.string(),rival:m0.coerce.string().optional(),rivalName:m0.coerce.string().optional(),tone:$x.optional()})).min(1)})]),P08=m0.object({...IV6,template:VV6})});function lI0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=P08.safeParse(X.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:X.section_type,position:X.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((X)=>X!==null),Y=Q.filter((X)=>X.template.template!=="cover"&&X.template.template!=="cta").map((X)=>({key:X.key,title:X.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Y},slides:Q},drops:Z}}var ZK1=O(()=>{A08()});import{join as T08}from"path";async function SV6($){try{let Z=await fetch(`${hH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(kV6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=lI0(Q);if(!Y.slides.length)return null;let X=Y.slides.find((W)=>W.template.template==="cover"),J=X?.template,G=J&&J.template==="cover"?J:void 0;return{brand:Y.meta.brand?.trim()||$K1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function R3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function CV6($,Z){let Q=sd($),Y=Z?.brand?.trim()||$K1(Q),X=E08(Q,128),G=`${(O0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=z08({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${R3(W)}</title>`,`<meta name="description" content="${R3(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="${R3(W)}" />`,`<meta property="og:description" content="${R3(K)}" />`,`<meta property="og:url" content="${R3(G)}" />`,`<meta property="og:image" content="${R3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${R3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${R3(W)}" />`,`<meta name="twitter:description" content="${R3(K)}" />`,`<meta name="twitter:image" content="${R3(H)}" />`,`<meta name="twitter:image:alt" content="${R3(F)}" />`,`<link rel="canonical" href="${R3(G)}" />`,`<link rel="icon" href="${R3(X)}" sizes="any" />`].join(`
3392
3392
  `)}function _V6($,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}
3393
3393
  </head>`)}function R08($){let Z=new e0;return Z.get("/:domain/og.png",async(Q)=>{let Y=sd(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(T08($,"report-og-fallback.png")):null;if(!J||!await J.exists())return Q.notFound();return Q.body(new Uint8Array(await J.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let J=await fetch(`${hH({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(vV6)}),G=J.headers.get("content-type")??"";if(!J.ok||!G.startsWith("image/")||!J.body)return X();return Q.body(J.body,200,{"Content-Type":G,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return X()}}),Z.get("/:domain",async(Q)=>{let Y=Q.req.param("domain"),X=$?T08($,"index.html"):null,J=X?Bun.file(X):null;if(!J||!await J.exists())return Q.notFound();let G=await J.text();try{let W=await SV6(sd(Y)),K=CV6(Y,W);return Q.html(_V6(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var kV6=2500,vV6=1e4;var q08=O(()=>{y$();ZK1();rz();t1()});function P$0($,Z){return fetch(`${hH({})}${$}`,Z)}async function fV6($,Z,Q){let Y=new URLSearchParams;if(Z)Y.set("pw",Z);if(Q)Y.set("lang",Q);let X=Y.toString()?`?${Y.toString()}`:"",J=await P$0(`/api/v2/public/diagnostics/${encodeURIComponent($)}${X}`,{headers:{Accept:"application/json"}});if(J.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!J.ok)throw Error(`report read HTTP ${J.status}`);let G=await J.json(),{deck:W,drops:K}=lI0(G);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:G.scanned_at,drops:K}}var bV6,VB,M08=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},I08;var V08=O(()=>{y$();$3();rz();ZK1();bV6=new Set(["complete","errored","terminated","unknown"]),VB=new e0;VB.use("*",async($,Z)=>{let Q=await W8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",Q?.user?.id?{email:Q.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});VB.use("/link-token/*",M08);VB.use("/suggest",M08);VB.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.get("reportUser"),Y=$.req.query("key")?.trim()||void 0,X=$.req.query("lang")?.trim()||void 0;try{let J=await fV6(Z,Y,X);if($.header("Cache-Control","private, no-store"),Q||!J.deck)return $.json(J);return $.json({...J,deck:{...J.deck,slides:J.deck.slides.slice(0,1)},truncated:J.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});VB.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Y=typeof Q.domain==="string"?Q.domain.trim():"";if(!Y)return $.json({error:"domain is required"},400);let X=Z?.email,J=typeof Q.distinctId==="string"&&Q.distinctId.trim()&&Q.distinctId.length<=200?Q.distinctId.trim():void 0;try{let G=await P$0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${oz({})}`},body:JSON.stringify({url:Y,...X?{email:X}:{},distinct_id:J})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let W=await G.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});VB.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await P$0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${oz({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:bV6.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});VB.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await P$0(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(Q.status===404)return $.json(null);if(!Q.ok)return $.json({error:`link token HTTP ${Q.status}`},502);return $.json(await Q.json())}catch{return $.json({error:"link token resolve failed"},502)}});VB.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await P$0(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let Y=await Q.json();return $.json({suggestions:Array.isArray(Y.suggestions)?Y.suggestions:[]})}catch{return $.json({suggestions:[]})}});I08=VB});var xV6=1048576,QK1;var k08=O(()=>{y$();xK();t1();H31();QK1=new e0;QK1.post("/webhook",l5({maxSize:xV6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=O0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!dp$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=mp$(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await ip$(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as yV6}from"crypto";function uV6($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let Y=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),X=Z.slice(7);if(X.length!==Y.length)return!1;return yV6(Buffer.from(X),Buffer.from(Y))}function lV6($,Z){let Q=Z,Y=Q?.repository?.name,X=Q?.repository?.owner?.login;if(typeof Y!=="string"||typeof X!=="string")return[];let J=[];if($==="check_suite"){if(Q.action!=="completed")return[];let G=Q.check_suite?.pull_requests;for(let W of Array.isArray(G)?G:[]){let K=W?.number;if(typeof K==="number")J.push(K)}}else if($==="issue_comment"&&Q.issue?.pull_request){let G=Q.issue.number;if(typeof G==="number")J.push(G)}return[...new Set(J)].map((G)=>({repoOwner:X,repoName:Y,number:G}))}function S08($){let Z=new e0;return Z.post("/webhook",l5({maxSize:gV6,onError:(Q)=>Q.json({error:"payload too large"},413)}),async(Q)=>{let Y=process.env.GITHUB_WEBHOOK_SECRET;if(!Y)return Q.json({error:"github webhook not configured"},503);let X=await Q.req.text();if(!uV6(X,Q.req.header("x-hub-signature-256"),Y))return Q.json({error:"invalid signature"},400);let J=Q.req.header("x-github-event");if(J!=="push"&&!hV6.has(J??""))return Q.json({ok:!0,ignored:"event"});let G;try{G=JSON.parse(X)}catch{return Q.json({error:"invalid payload"},400)}if(J==="push"){let H=G.ref,F=G.repository?.full_name;if(!H||!F)return Q.json({ok:!0,ignored:"shape"});let N=(await g11())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let W=lV6(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await cV6($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function cV6($,Z){let Q=0;for(let Y of Z){let X=$.taskBoard(),J;try{J=await X.findPrLinks(Y)}catch(G){console.error("[github-webhook] pr link lookup failed:",G);continue}for(let G of J)try{let W=await X.getById(G.taskBoardItemId,G.organizationId),K=W?await $.contextFactory()(G.organizationId,W.assignedBy??W.createdBy):null;if(!K)continue;if(await H2$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var gV6=5242880,hV6;var C08=O(()=>{y$();xK();UK();rZ();hV6=new Set(["check_suite","issue_comment"])});function _08($){let Z=new LB($.db,new TY($.encryptionKey)),Q=new e0;return Q.get("/attachments/:token",async(Y)=>{let X=SP$(Y.req.param("token"));if(!X)return Y.json({error:"Invalid or expired link"},404);let J=await Z.getByOrg(X.organizationId);if(!J)return Y.json({error:"Jira is not connected"},404);let W=await new JQ(J.siteUrl,J.email,J.apiToken).downloadAttachment(X.attachmentId);if(!W.ok||!W.body)return Y.json({error:"Jira refused the download"},502);let K=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=W.headers.get(H);if(F)K.set(H,F)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var v08=O(()=>{y$();ED();x81();nN()});function f08($){let Z=new LB($.db,new TY($.encryptionKey));async function Q(X,J){let G=ju$(J);if(!G)return;let W=await Z.getByWebhookSecret(X);if(!W?.enabled)return;let K=await aX($.db,W.organizationId);if(!K)return;if(await zq0(K,W,G)==="started")console.log(`[jira-webhook] started a run for ${G.issueKey} entering "${G.toStatus}"`)}let Y=new e0;return Y.post("/webhook/:secret",l5({maxSize:dV6}),async(X)=>{let J=X.req.param("secret");if(!await Z.getByWebhookSecret(J))return X.json({error:"Unknown webhook"},404);let W;try{W=await X.req.json()}catch{return X.json({error:"Body must be JSON"},400)}return Q(J,W).catch((K)=>{console.error("[jira-webhook] trigger failed",K)}),X.body(null,202)}),Y}var dV6=1048576;var b08=O(()=>{y$();xK();ED();Y10();Uw()});import{DBOS as cI0,SchedulerMode as mV6}from"@dbos-inc/dbos-sdk";function y08($){XK1=$}function g08(){if(!XK1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return XK1}function h08(){let $=g08();return new LB($.db,new TY($.encryptionKey))}async function nV6($,Z){try{let Q=await h08().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let Y=await aX(g08().db,Q.organizationId);if(!Y)return{integrationId:$,started:0};if((await Y.storage.jiraIntegrations.listAutomations(Q.organizationId)).length===0)return{integrationId:$,started:0};let J=new JQ(Q.siteUrl,Q.email,Q.apiToken),W=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${x08}m"`,K=0,H;for(let F=0;F<pV6;F++){let U=await J.searchIssues({jql:W,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=Eu$(N,N.changelog?.histories??[],Z);for(let D of B)if(await zq0(Y,Q,D)==="started")K++}if(H=U.nextPageToken??void 0,!H)break}return{integrationId:$,started:K}}catch(Q){return{integrationId:$,started:0,error:Q instanceof Error?Q.message:String(Q)}}}async function tV6($,Z){let Q=new Date($.getTime()-x08*60000),Y=await cI0.runStep(()=>h08().listEnabledIds(),{name:"loadJiraIntegrations"});if(Y.length===0)return;let X=await Promise.all(Y.map((J)=>cI0.runStep(()=>nV6(J,Q),{name:`sweepJira:${J}`})));for(let J of X)if(J.error)console.warn(`[jira-trigger] integration ${J.integrationId} failed: ${J.error}`);else if(J.started>0)console.log(`[jira-trigger] integration ${J.integrationId} started ${J.started} run(s) the webhook missed`)}function u08(){if(YK1)return;YK1=cI0.registerWorkflow(tV6,{name:"jiraTriggerSweepWorkflow"}),cI0.registerScheduled(YK1,{name:"jiraTriggerSweepWorkflow",crontab:iV6,mode:mV6.ExactlyOncePerIntervalWhenActive})}var iV6="7-59/10 * * * *",x08=15,pV6=5,XK1=null,YK1=null;var l08=O(()=>{ED();Uw();nN();Y10()});function c08($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var d08,oV6,rV6,m08;var i08=O(()=>{y$();tW();ol();YP();d08=new e0,oV6=["range","if-none-match","if-modified-since"],rV6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];d08.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(zd($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new X$(401,{message:"Authentication required"})}if(!Q)throw new X$(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new X$(400,{message:"Missing file key"});let X=await Me(Y,Z);if(!X)throw new X$(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&fX()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new X$(500,{message:"Invalid data URL from storage"});let[,H,F]=K,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return c08(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of oV6){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(X,{headers:J});if(G.status===403||G.status===404)throw new X$(404,{message:"File not found"});if(!G.ok&&G.status!==304&&G.status!==416)throw console.error(`[files] upstream storage error ${G.status} for key:`,Y),new X$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of rV6){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),c08(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});m08=d08});var A$0=_((Zx)=>{var sV6=Zx&&Zx.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),aV6=Zx&&Zx.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))sV6(Z,$,Q)};Object.defineProperty(Zx,"__esModule",{value:!0});aV6(jJ(),Zx)});var t08=_((p08)=>{Object.defineProperty(p08,"__esModule",{value:!0});p08.version=void 0;p08.version="3.4.0"});var s08=_((aF)=>{var eV6=aF&&aF.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(aF,"__esModule",{value:!0});aF.NodeTransport=aF.VERSION=void 0;aF.nodeResolveHost=Jk6;var O5=A$0(),$k6=A0("net"),JK1=A0("tls"),Zk6=A0("path"),o08=A0("fs"),Qk6=eV6(A0("dns")),Yk6=t08();aF.VERSION=Yk6.version;var Xk6="nats.js";class r08{socket;version;lang;yields=[];signal=(0,O5.deferred)();closedNotification=(0,O5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=Xk6,this.version=aF.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:Y}=Q||{};try{if(Y===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let X=await this.peekInfo();(0,O5.checkOptions)(X,Z);let{tls_required:J,tls_available:G}=X,W=G===!0&&Z.tls!==null;if(!Y&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw O5.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(X){let J=X;if(!J)J=new O5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new O5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,O5.deferred)(),Q,Y=(0,$k6.createConnection)($.port,$.hostname,()=>{Z.resolve(Y),Y.removeAllListeners()});return Y.on("error",(X)=>{Q=X}),Y.on("close",()=>{Y.removeAllListeners(),Z.reject(Q)}),Y.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,O5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=O5.DataBuffer.concat(...this.yields),X=(0,O5.extractProtocolMessage)(Y);if(X!=="")try{let J=O5.INFO.exec(X);if(!J)throw Error("unexpected response from server");let G=JSON.parse(J[1]);$.resolve(G)}catch(J){$.reject(J)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(Q)=>{Z=Q}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,O5.deferred)();try{if($=(0,Zk6.resolve)($),!(0,o08.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,o08.readFile)($,(Q,Y)=>{if(Q)return Z.reject(Q);Z.resolve(Y)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:Y,ca:X,keyFile:J,key:G}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(Q)$.cert=Q;if(J){let W=await this.loadFile(J);if(W)$.key=W}else if(G)$.key=G;if(Y){let W=await this.loadFile(Y);if(W)$.ca=[W]}else if(X)$.ca=X;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Q=(0,O5.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new O5.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,O5.deferred)();try{let X=(0,JK1.connect)($.port,$.hostname,Q,()=>{X.removeAllListeners(),Y.resolve(X)});X.on("error",(J)=>{Z=J}),X.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Y.reject(Z),X.removeAllListeners()}),X.setNoDelay(!0)}catch(X){Y.reject(new O5.errors.ConnectionError(X.message,{cause:X}))}return Y}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Z=(0,O5.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new O5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,O5.deferred)();try{let Y=(0,JK1.connect)(Z,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(X)=>{$=X}),Y.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject($),Y.removeAllListeners()})}catch(Y){Q.reject(new O5.errors.ConnectionError(Y.message,{cause:Y}))}return Q}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,O5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,O5.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 JK1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,O5.render)($)}`);let Z=(0,O5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,O5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,O5.render)($)}: ${Q}`);Z.reject(Q)}return Z}send($){this._send($).catch((Q)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(Q){if(this.options.debug)console.log("transport close terminated with an error",Q)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(Q){console.log(Q)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}aF.NodeTransport=r08;function Jk6($){let Z=(0,O5.deferred)();return Qk6.default.lookup($,{all:!0},(Q,Y)=>{if(Q){Z.reject(Q);return}let X=[];for(let J of Y)X.push(J.address);if(X.length===0)X.push($);Z.resolve(X)}),Z}});var Q18=_((Z18)=>{Object.defineProperty(Z18,"__esModule",{value:!0});Z18.connect=Gk6;var a08=s08(),e08=A$0(),$18=A$0();function Gk6($={}){if((0,$18.hasWsProtocol)($))return Promise.reject($18.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,e08.setTransportFactory)({factory:()=>{return new a08.NodeTransport},dnsResolveFn:a08.nodeResolveHost}),e08.NatsConnectionImpl.connect($)}});var Y18=_((kB)=>{var Kk6=kB&&kB.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),Hk6=kB&&kB.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))Kk6(Z,$,Q)};Object.defineProperty(kB,"__esModule",{value:!0});kB.connect=void 0;var Fk6=Q18();Object.defineProperty(kB,"connect",{enumerable:!0,get:function(){return Fk6.connect}});Hk6(A$0(),kB)});function W18($){let Z=$?.connectFn??Dk6,Q=null,Y=null,X=!1,J=!1,G=!1,W=[];function K(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let N of W)try{N()}catch{}}function F(N){(async()=>{for await(let B of N.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),G=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),G=!1,Y=null,H()})().catch(()=>{})}async function U(N,B){let D=0;while(!J)try{Q=await Z({servers:N,timeout:Bk6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${D} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{D++;let L=_7(Nk6,Uk6,D-1,2,0.5);await P$(L)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?X18.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(N,D).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!Y)Y=G18.jetstream(Q);return Y},onReady(N){if(W.push(N),K())try{N()}catch{}},async drain(){if(J=!0,X=!1,Y=null,G=!1,Q){let N=Q;Q=null,await N.drain().catch(()=>{})}}}}function Dk6($){return J18.connect($)}var X18,J18,G18,Uk6=100,Nk6=3000,Bk6=3000;var K18=O(()=>{m$();X18=V(Am(),1),J18=V(Y18(),1),G18=V(KU(),1)});function GK1($,Z){return`${$}.${Z}`}class WK1{cache;constructor($){this.cache=Hd({ttlMs:$?.ttlMs??Ok6,maxSize:$?.maxSize??Lk6})}async get($,Z){return this.cache.get(GK1($,Z))??null}async set($,Z,Q){this.cache.set(GK1($,Z),Q)}async invalidate($,Z){this.cache.delete(GK1($,Z))}teardown(){this.cache.clear()}}var Ok6=600000,Lk6=5000;var H18=()=>{};function dI0($,Z){return`${$}:${Z}`}function KK1($){let Z=Hd({ttlMs:$?.ttlMs??wk6,maxSize:$?.maxSize??jk6}),Q=$?.getConnection,Y=crypto.randomUUID(),X=new TextEncoder,J=new TextDecoder,G=null;function W(K,H){let F=Q?.();if(!F)return;try{F.publish(F18,X.encode(JSON.stringify({organizationId:K,keyId:H,originId:Y})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(K,H){return Z.get(dI0(K,H))},set(K,H,F){Z.set(dI0(K,H),F)},invalidate(K,H){Z.delete(dI0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(F18),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(dI0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var F18="studio.ai-provider-keys.invalidate",wk6=30000,jk6=5000;var U18=()=>{};class HK1{options;subscription=null;onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscription)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let Q=new TextDecoder,Y=Z.subscribe("studio.decopilot.cancel");this.subscription=Y,(async()=>{for await(let X of Y)try{let J=JSON.parse(Q.decode(X.data));if(J.originId===this.originId)continue;this.onCancel?.(J.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let Q=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId}));Z.publish("studio.decopilot.cancel",Q)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var N18=($)=>{let Z;return()=>Z??=$()},FK1,UK1;var B18=O(()=>{W6();FK1=N18(()=>Q$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),UK1=N18(()=>Q$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function qk6($=L18){return{name:qF,subjects:[`${f61}.>`],storage:hK.StorageType.File,max_age:Pk6,max_bytes:Tk6,max_msgs_per_subject:Rk6,discard:hK.DiscardPolicy.Old,retention:hK.RetentionPolicy.Limits,duplicate_window:Ak6,num_replicas:$}}class w18{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 D18($){let Z=O18.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function kk6($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,zk6().add(1,{"org.id":Z??"unknown"}),Q===1||Q%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${Q} total):`,W)})},get errorCount(){return Q}}}function Sk6($,Z){return $.info?.cluster?Z:1}function Ck6($){if(!($ instanceof Error))return!1;if(/non-clustered/i.test($.message))return!0;return/replicas?\b/i.test($.message)&&/not supported|can ?not|exceed|insufficient|greater than/i.test($.message)}class NK1{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=async(Y,X)=>{let J=qk6(X);try{await Y.streams.info(qF),await Y.streams.update(qF,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(qF,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(qF),await Y.streams.add(J);else throw G}},Q=await A8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await hK.jetstreamManager($),X=Sk6($,L18);try{await Z(Y,X)}catch(J){if(X<=1||!Ck6(J))throw J;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${X} (${J.message}); falling back to an unreplicated stream`),await Z(Y,1)}return Y},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:Jc});this.js=this.options.getJetStream(),this.jsm=Q,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,Q,Y){let X=this.js;if(!X)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let J=kk6(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=iR$(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=x61(H,{runId:Z}),N=performance.now()-F;FK1().record(N),UK1().add(1,{"org.id":Y??"unknown"}),Vk6?.record(N,U.reduce((B,D)=>B+D.data.length,0));for(let B of U)J.publish(X,B.subject,B.data,B.headers?D18(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:D}=await H.read();if(B)break;if(K(D),U++,++F>=64)F=0,await new Promise((L)=>setImmediate(L))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),Ik6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:J.errorCount}))}if(N!==void 0)throw N})()}async publishSerialized($,Z){try{return await A8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:D18(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Jc}),!0}catch(Q){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,Q),!1}}async publishRawChunk($,Z,Q){let Y=this.js;if(!Y)return!1;let X=performance.now(),J=x61(Z,{runId:$,dedup:Q});FK1().record(performance.now()-X),UK1().add(1);for(let G of J)if(!await this.publishSerialized(Y,G))return!1;return!0}async publishDone($,Z,Q){let Y=this.js;if(!Y)return!1;let X=mR$({runId:$,fenceToken:Z,finalSeq:Q});return await this.publishSerialized(Y,X)}async createTailStream($,Z,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let X=Q?.deliverPolicy==="new"?hK.DeliverPolicy.New:hK.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=ww($),W;try{W=await A8(async()=>{return(await Y.consumers.get(qF,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Jc})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=pA0({messages:async function*(){try{for await(let L of W)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(cA0()).pipeThrough(dA0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,D=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",D,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:j}=await F.read();if(w){D(),L.close();return}let E=j;if(E.kind==="done"){if(J){D(),L.close();return}continue}L.enqueue(E.chunk);return}},cancel(){D()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(qF,{filter:ww($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var hK,O18,Ek6=($)=>{let Z;return()=>Z??=$()},zk6,Pk6=86400000000000,Ak6=120000000000,Tk6=4294967296,L18,Rk6=500000,Mk6,Ik6,Vk6;var j18=O(()=>{m$();y61();nA0();mA0();W6();B18();hK=V(KU(),1),O18=V(Am(),1),zk6=Ek6(()=>Q$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),L18=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);Mk6=process.env.STREAM_ENCODE_TRACE==="1",Ik6=process.env.DECOPILOT_STREAM_TRACE==="1";Vk6=Mk6?new w18:null});function mI0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,XH(Q,Y.status,{title:Y.title??void 0,virtualMcpId:Y.virtual_mcp_id??void 0,createdBy:Y.created_by??void 0,triggerId:Y.trigger_id??null,branch:Y.branch??null,harnessId:Y.harness_id??void 0,createdAt:Y.created_at,updatedAt:Y.updated_at})),!0}var E18=O(()=>{q8()});class BK1{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}function _k6($,Z){let Q=$.startsWith("thread:")?NK($):$;return[...new Set([Z,Q].filter((Y)=>!!Y))]}async function z18($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await NF($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await Ll($,{threadId:X,runBranch:G?.branch}),K=_k6(W,await Dz0($,X)),H=await Cs($,Q,Ne0(J)).catch(()=>null);if(!H){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}for(let F of K){let U=await H.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:H.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await fG(Q).catch(()=>{}),console.log(`[task-board] ${Z.id}: linked ${U.url} found on branch ${F}`),!0}}}catch(Y){console.error("[task-board] PR lookup by branch failed",Y)}return!1}var P18=O(()=>{ZZ();kG();rZ()});async function A18($,Z,Q){let Y=Z.organizationId;if(!eX(Z))return!1;if(!bf(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=await $.storage.organizationSettings.get(Y),J=eH(X?.flags),G=await $.storage.taskBoard.update(Z.id,Y,{status:J},Z.updatedBy);return await y6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),r$(Y,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var T18=O(()=>{A4();ZY();dl();EK();$9()});function hk6($){return $ instanceof hY}function uk6($,Z){return Z-$>=yk6}class DK1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,Q,Y={}){this.taskBoard=$;this.contextFactory=Z;this.billing=Q;this.options=Y}start(){if(this.timer)return;let $=this.options.intervalMs??vk6;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??bk6,Q=this.options.itemIntervalMs??fk6,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-S81),d41);for(let Q of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${Q.threadId} on ${Q.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-gk6));for(let{id:Q,organizationId:Y,threadId:X}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${Q}`),await u41(this.taskBoard,X,Y),await l41(this.taskBoard,this.billing,X,Y)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async dispatchDueRetries($){let Z=0,Q=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Y,organizationId:X,attempts:J}of Q)try{if(!await this.taskBoard.claimDueRetry(Y,X,new Date))continue;let G=await this.taskBoard.getById(Y,X);if(!G||G.status!==T$.progress||G.assigneeId!==o$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await zK(W,G,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Y} after a failure (attempt ${J})`)}catch(G){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Y} failed`,G),hk6(G)){await this.returnToTodo(Y,X,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(Y,X,J,new Date(Date.now()+xk6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async returnToTodo($,Z,Q){try{let Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!==T$.progress)return;let X=await this.taskBoard.returnToTodoAfterFailure($,Z,Y.updatedBy);if(!X)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q}}).catch(()=>{}),r$(Z,X)}catch(Y){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Y)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!uk6(PN(Q,Z.reviewCycleStartedAt),Date.now()))return;await AF($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,Q){if(!await this.taskBoard.claimSweep($,Z,Q))return!1;let Y=await this.taskBoard.getById($,Z);if(!Y)return!1;if(!eX(Y))return!1;let X=Y.assigneeId===o$,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,Y.assignedBy??Y.createdBy);if(!G)return!1;if(J.length===0){if(await z18(G,Y))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(X)await this.handOffReviewWithoutPr(G,Y);return!1}}let W=await Promise.all(J.map(async(K)=>({...K,...await il(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 A18(G,Y,W))return!0;if(await bq$(G,Y))return!0;if(await this.resolveConflictFromSweep(G,Y,W))return!0;if(!X)return!1;if(!x41(W))return!1;return await JA0(G,Y,{previewMatchesHead:y41(W)}),!0}async resolveConflictFromSweep($,Z,Q){let Y=Q.find((X)=>X.state!=="closed"&&X.conflict===!0);if(!Y)return!1;return await Bw($,Z.organizationId,Z,{pr:{number:Y.number,url:Y.url},conflict:!0}).catch((X)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",X),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var vk6=60000,fk6=300000,bk6=50,xk6=60000,yk6=900000,gk6=120000;var R18=O(()=>{A4();R41();P18();TF();ye();EK();T18();$9();TG();m41();rZ();Fe();ml()});import{readdir as lk6,rm as iI0}from"fs/promises";import{join as pI0}from"path";async function nI0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-ck6),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await Qx($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await q18($,X,Z);else if(!X.startsWith(".")){let J=pI0($,X),G=await Qx(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await q18(J,K,Z)}if((await Qx(J)).length===0)await iI0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function q18($,Z,Q){let Y=0,X=pI0($,Z),J=await Qx(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=pI0(X,W),H=await Qx(K);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${W}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=pI0(K,U);await iI0(B,{recursive:!0,force:!0}),Y++}}if((await Qx(K)).length===0)await iI0(K,{recursive:!0,force:!0})}if((await Qx(X)).length===0)await iI0(X,{recursive:!0,force:!0});return Y}async function Qx($){try{return(await lk6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var ck6=30;var OK1=()=>{};import{DBOS as LK1,SchedulerMode as dk6}from"@dbos-inc/dbos-sdk";async function ik6(){let $=[sG(),Yx(),ZU()],Z=0;for(let Q of $)try{Z+=await nI0(Q)}catch(Y){console.error("[monitoring-retention] cleanup failed:",Y)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function pk6($,Z){await LK1.runStep(()=>ik6(),{name:"monitoringRetention"})}function I18(){if(M18)return;M18=!0;let $=LK1.registerWorkflow(pk6,{name:"monitoringRetentionWorkflow"});LK1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:mk6,mode:dk6.ExactlyOncePerIntervalWhenActive})}var mk6="23 4 * * *",M18=!1;var V18=O(()=>{k3();OK1()});function k18($){return async(Z,Q)=>{let Y=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",Q).where("member.organizationId","=",Z).executeTakeFirst();if(!Y)return console.warn(`[automationContextFactory] User ${Q} not found in org ${Z} \u2014 returning null`),null;let X=await GQ.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await KP($.db,Z,Y.role);return X.boundAuth=Z31({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new UE(Q,void 0,X.boundAuth,Y.role,"self"),Nw(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var S18=O(()=>{EW();tH()});function nk6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function tk6(){return{services:nk6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function rk6(){for(let $ of ok6)$()}function C18($){let Z=[...wK1.logs,$];wK1={...wK1,logs:Z.length>500?Z.slice(-500):Z},rk6()}function jK1(){return sk6}var wK1,ok6,sk6=!1;var EK1=O(()=>{wK1=tk6(),ok6=new Set});import{EventEmitter as ak6}from"events";var zK1;var _18=O(()=>{EK1();zK1=new ak6;zK1.on("request",($)=>{C18($)})});function v18(){return async($,Z)=>{let Q=Date.now(),Y=$.req.method,X=$.req.path;if(X==="/api/auth/get-session"||X.includes("favicon")){await Z();return}let J="",G=!1;if(X.startsWith("/mcp")&&Y==="POST"){G=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let N=await $.req.raw.clone().json();if(N.method==="tools/call"&&N.params?.name){let B=ad(N.params.name),D=N.params.arguments||{},L=Object.keys(D).map((j)=>ad(j)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";J=`${q5.tool}${B}${q5.dim}(${w})${q5.reset}`}else if(N.method)J=`${q5.dim}${ad(N.method)}${q5.reset}`}}catch{}}let W=ad(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${q5.mcp}${ad(F.slice(0,12))}\u2026${q5.reset}`}else if(X==="/mcp")W=`${q5.mcp}/mcp${q5.reset}`;else if(X==="/mcp/registry")W=`${q5.mcp}/mcp/registry${q5.reset}`;let K=$S6(Y),H=G?"\u25C0":"\u2190";if(!jK1())console.log(`${q5.dim}${H}${q5.reset} ${K}${Y}${q5.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=ek6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";if(!jK1())console.log(`${q5.dim}${D}${q5.reset} ${K}${Y}${q5.reset} ${W}${J?` ${J}`:""} ${N}${U}${q5.reset} ${q5.duration}${B}${q5.reset}`);zK1.emit("request",{method:Y,path:ad(X),status:U,duration:F,timestamp:new Date})}}}var q5,ek6=($)=>{if($>=500)return q5.serverError;if($>=400)return q5.clientError;if($>=300)return q5.redirect;return q5.ok},$S6=($)=>{return q5[$]||q5.reset},ad=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var f18=O(()=>{EK1();_18();q5={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as g18}from"crypto";import{mkdir as ZS6,readdir as QS6,rm as b18,stat as h18}from"fs/promises";import{join as AK1,relative as YS6}from"path";import{z as V$}from"zod";function l18($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return AK1(XS6,Z)}function c18($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function PK1($,Z){let Q=l18($),Y=c18(Z);return AK1(Q,Y)}function JS6($,Z,Q,Y){let X=O0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return g18("sha256",X).update(J).digest("hex")}function y18($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=JS6(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${c18(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function d18($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${g18("md5","etag").update(Y).digest("hex")}"`}async function m18($,Z,Q,Y,X){try{let J=await QS6($,{withFileTypes:!0});for(let G of J){let W=AK1($,G.name),H=YS6(Z,W).replace(/\\/g,"/");if(Q&&!H.startsWith(Q))continue;if(G.isDirectory())if(Y){let F=H+"/";if(!Q||F.startsWith(Q)){if(!(Q?H.slice(Q.length):H).includes("/"))X.commonPrefixes.add(F)}}else await m18(W,Z,Q,Y,X);else if(G.isFile()){if(Y&&Q){let F=H.slice(Q.length);if(F.includes(Y)){let U=F.indexOf(Y),N=Q+F.slice(0,U+1);X.commonPrefixes.add(N);continue}}try{let F=await h18(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:d18(W,F.mtime,F.size)})}catch{}}}}catch{}}function i18($,Z){let Y=i($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:V$.object({prefix:V$.string().optional(),maxKeys:V$.number().optional().default(1000),continuationToken:V$.string().optional(),delimiter:V$.string().optional()}),outputSchema:V$.object({objects:V$.array(V$.object({key:V$.string(),size:V$.number(),lastModified:V$.string(),etag:V$.string()})),nextContinuationToken:V$.string().optional(),isTruncated:V$.boolean(),commonPrefixes:V$.array(V$.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=l18(Y);await ZS6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await m18(F,F,G,K,U),U.objects.sort((w,j)=>w.key.localeCompare(j.key));let N=0;if(H){if(N=U.objects.findIndex((w)=>w.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),D=N+W<U.objects.length,L=D?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:D,nextContinuationToken:L,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:V$.object({key:V$.string()}),outputSchema:V$.object({contentType:V$.string().optional(),contentLength:V$.number(),lastModified:V$.string(),etag:V$.string(),metadata:V$.record(V$.string(),V$.string()).optional()}),handler:async(X)=>{let J=X,G=PK1(Y,J.key),W=await h18(G);return{contentType:a31(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:d18(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:V$.object({key:V$.string(),expiresIn:V$.number().optional()}),outputSchema:V$.object({url:V$.string(),expiresIn:V$.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??x18;return{url:y18(Z,Y,J.key,G,"GET"),expiresIn:G}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:V$.object({key:V$.string(),expiresIn:V$.number().optional(),contentType:V$.string().optional()}),outputSchema:V$.object({url:V$.string(),expiresIn:V$.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??x18;return{url:y18(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:V$.object({key:V$.string()}),outputSchema:V$.object({success:V$.boolean(),key:V$.string()}),handler:async(X)=>{let J=X,G=PK1(Y,J.key);try{return await b18(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:V$.object({keys:V$.array(V$.string()).max(1000)}),outputSchema:V$.object({deleted:V$.array(V$.string()),errors:V$.array(V$.object({key:V$.string(),message:V$.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=PK1(Y,K);try{await b18(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function TK1($,Z,Q){let Y=i18(Z,Q),X=new VH({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:f5});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:V$.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:V$.object({}).shape;X.registerTool(G.name,{description:G.description??"",inputSchema:W,outputSchema:K,annotations:G.annotations,_meta:G._meta},async(H)=>{try{let F=await G.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let J=new oY({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),uG(X,J,$,"mcp:dev-assets")}async function p18($,Z,Q,Y){let J=i18(Q,Y).find((G)=>G.name===$);if(!J)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let G=await J.handler(Z);return{content:[{type:"text",text:JSON.stringify(G)}]}}catch(G){return{content:[{type:"text",text:G instanceof Error?G.message:String(G)}],isError:!0}}}var XS6="./data/assets",x18=3600,u18,n18;var t18=O(()=>{t1();Uc();y$();Mt();$b();uQ();uM0();u18=new e0;u18.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return TK1($.req.raw,Z,Y)});n18=u18});var o18={};q4(o18,{mountDevRoutes:()=>GS6});function GS6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`;return TK1(Y.req.raw,X,G)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`,W=Y.req.param("toolName");if(!W)return Y.json({error:"Missing tool name"},400);let K=await Y.req.json(),H=await p18(W,K,X,G);if(H.isError)return Y.json(H.content,500);return Y.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",n18);let Q=new e0;Q.use("*",yK({mountPath:"/api/dev-assets"})),Q.route("/",hM0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var r18=O(()=>{y$();i31();uM0();t18()});import{sql as WS6}from"kysely";import{randomUUID as s18}from"crypto";import{z as KS6}from"zod";async function FS6($){let Z=new Date().toISOString(),Q=s18(),Y=R8.SELF($.organizationId),X="registry.publish_request.created",J={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:Q,organization_id:$.organizationId,type:"registry.publish_request.created",source:Y,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(J),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let G=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Y)])).execute();if(G.length>0)await $.db.insertInto("event_deliveries").values(G.map((W)=>({id:s18(),event_id:Q,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await WS6`SELECT
3394
3394
  pg_notify('studio_events', ${Q}),