decocms 4.58.3 → 4.58.4

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 (227) hide show
  1. package/dist/client/assets/{AlertCircle-CBXl_VFU.js → AlertCircle-BmT1NEML.js} +1 -1
  2. package/dist/client/assets/{AreaChart-CAUNCXxP.js → AreaChart-CxajXsqN.js} +1 -1
  3. package/dist/client/assets/{ArrowUp-CG7i8yLe.js → ArrowUp-BCU55jFk.js} +1 -1
  4. package/dist/client/assets/{ArrowUpRight-f9E99PIJ.js → ArrowUpRight-D7XF53RI.js} +1 -1
  5. package/dist/client/assets/{Check-DUenAHB4.js → Check-C-jUuJs3.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-DxiFxf_3.js → CheckCircle-iyIwY-QW.js} +1 -1
  7. package/dist/client/assets/{ChevronDown-D94d5imz.js → ChevronDown-DdzS1zK8.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-BPzYt0Nq.js → ChevronRight-VBR0s8sE.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-rBpCP75C.js → ChevronUp-BaeSM1Ja.js} +1 -1
  10. package/dist/client/assets/{Circle-DDVFBRLN.js → Circle-Dev4tY-r.js} +1 -1
  11. package/dist/client/assets/{Copy01-B6mscihE.js → Copy01-Bv9digPk.js} +1 -1
  12. package/dist/client/assets/{DotsVertical-nT_DjrQt.js → DotsVertical-D19kxWnh.js} +1 -1
  13. package/dist/client/assets/{Eye-DSMCG3LM.js → Eye-CdrC9hbw.js} +1 -1
  14. package/dist/client/assets/{FilterLines-BAEGJvGG.js → FilterLines-ByXRWnCZ.js} +1 -1
  15. package/dist/client/assets/{Globe01-CK5EYLVH.js → Globe01-CU8-sZsK.js} +1 -1
  16. package/dist/client/assets/{Globe04-Zagjom2t.js → Globe04-C7jIFwDJ.js} +1 -1
  17. package/dist/client/assets/{HardDrive-BpYhw1i0.js → HardDrive-KbPPLRnb.js} +1 -1
  18. package/dist/client/assets/{Key01-DbSFfhBR.js → Key01-BRdi8Rb1.js} +1 -1
  19. package/dist/client/assets/{LayoutLeft-BHGA8Ois.js → LayoutLeft-ZREeFs9E.js} +1 -1
  20. package/dist/client/assets/{LinkExternal01-LYO8qD4M.js → LinkExternal01-C35RAIJQ.js} +1 -1
  21. package/dist/client/assets/{List-BfEH6GNQ.js → List-DU4HzKoY.js} +1 -1
  22. package/dist/client/assets/{Loading02-Dfk8FVr3.js → Loading02-DYSmGAap.js} +1 -1
  23. package/dist/client/assets/{Monitor01-7AaQobJQ.js → Monitor01-BUbysXxC.js} +1 -1
  24. package/dist/client/assets/{Package-CNohyHxp.js → Package-CKOOeN6B.js} +1 -1
  25. package/dist/client/assets/{Palette-DLWoDKk8.js → Palette-Btgw9iOL.js} +1 -1
  26. package/dist/client/assets/{Play-CQPCKGde.js → Play-BWKyMfIa.js} +1 -1
  27. package/dist/client/assets/{Plus-CmwddHFd.js → Plus-DycXj14n.js} +1 -1
  28. package/dist/client/assets/{SearchLg-Cqbwr3UX.js → SearchLg-CwQAK1I3.js} +1 -1
  29. package/dist/client/assets/{SearchMd-BsjV4kaX.js → SearchMd-DFxpWdT7.js} +1 -1
  30. package/dist/client/assets/{Settings02-DodIW3Nv.js → Settings02-B1guZfoj.js} +1 -1
  31. package/dist/client/assets/{Shield01-fCAorGxL.js → Shield01-BMnrZhno.js} +1 -1
  32. package/dist/client/assets/{Star01-_MclvVpK.js → Star01-E5J-4WNF.js} +1 -1
  33. package/dist/client/assets/{Stars01-CcB_-k3K.js → Stars01-DrHpXS1z.js} +1 -1
  34. package/dist/client/assets/{Stars02-Cuuunbak.js → Stars02-Cr7gvGdj.js} +1 -1
  35. package/dist/client/assets/{Sun-C8giPsBm.js → Sun-omRfxqVw.js} +1 -1
  36. package/dist/client/assets/{SwitchHorizontal01-BCndjsEm.js → SwitchHorizontal01-CgBmDWLQ.js} +1 -1
  37. package/dist/client/assets/{Tool01-DPHb2x5P.js → Tool01-C9KpWFxe.js} +1 -1
  38. package/dist/client/assets/{Tool02-Bwqbze1h.js → Tool02-Dgfx_YAG.js} +1 -1
  39. package/dist/client/assets/{Trash01-yDP-_BXj.js → Trash01-BAGBeJxb.js} +1 -1
  40. package/dist/client/assets/{TrendUp01-D3pVWZZl.js → TrendUp01-Q6B_57En.js} +1 -1
  41. package/dist/client/assets/{Upload01-HHjiBmMd.js → Upload01-DyTbbqN7.js} +1 -1
  42. package/dist/client/assets/{User01-BQbyJ8Mg.js → User01-CzStc6jw.js} +1 -1
  43. package/dist/client/assets/{Users01-PJLjlUdA.js → Users01-CD6dIeEL.js} +1 -1
  44. package/dist/client/assets/{Users03-BWONqtLI.js → Users03-LelJ-ja-.js} +1 -1
  45. package/dist/client/assets/{X-CSSd6S83.js → X-D8XwMuEx.js} +1 -1
  46. package/dist/client/assets/{XCircle-BFGoZO0P.js → XCircle-5xXJbH21.js} +1 -1
  47. package/dist/client/assets/{XClose-B50mpmfP.js → XClose-zId46zdf.js} +1 -1
  48. package/dist/client/assets/{Zap-pamHM7_B.js → Zap-CVPOZHQy.js} +1 -1
  49. package/dist/client/assets/{ZapSquare-0pEUBxdS.js → ZapSquare-0R-vSl3D.js} +1 -1
  50. package/dist/client/assets/{ZoomOut-Cg6S8eu4.js → ZoomOut-9I2GRX-l.js} +1 -1
  51. package/dist/client/assets/{access-gate-DlZV74rw.js → access-gate-DYYChJ1w.js} +1 -1
  52. package/dist/client/assets/{add-section-modal-poDtYWwl.js → add-section-modal-CCGJ6Kck.js} +1 -1
  53. package/dist/client/assets/{agent-capabilities-BCGGwxJp.js → agent-capabilities-DvCguWah.js} +1 -1
  54. package/dist/client/assets/{agent-icon-Bqk_CNZ2.js → agent-icon-C7Ca9aTV.js} +1 -1
  55. package/dist/client/assets/{agents-list-GI3i-CK_.js → agents-list-MsdzDh0w.js} +1 -1
  56. package/dist/client/assets/{ai-providers-DA4YWcG_.js → ai-providers-Bbz8ZCln.js} +1 -1
  57. package/dist/client/assets/{alert-CDCkmEkX.js → alert-C30Ie4Bd.js} +1 -1
  58. package/dist/client/assets/{alert-dialog-CW0G75jy.js → alert-dialog-D155am69.js} +1 -1
  59. package/dist/client/assets/{app-editor-OffVIKex.js → app-editor-DYHZD8cL.js} +1 -1
  60. package/dist/client/assets/{auth-BISNnt5B.js → auth-DTwE5Yf9.js} +1 -1
  61. package/dist/client/assets/{auth-catchall-BgJNIa_j.js → auth-catchall-BXgUKGZm.js} +1 -1
  62. package/dist/client/assets/{auth-entry-BsCuTq40.js → auth-entry-CUbO0h2e.js} +1 -1
  63. package/dist/client/assets/{auth-split-layout-CPJzYoxJ.js → auth-split-layout-BrQ3Xw9O.js} +1 -1
  64. package/dist/client/assets/{authenticate-and-persist-oauth-0iK-3WwB.js → authenticate-and-persist-oauth-Dy244acw.js} +1 -1
  65. package/dist/client/assets/{automation-list-row-C4633GMF.js → automation-list-row-CszYBSmY.js} +1 -1
  66. package/dist/client/assets/{automation-runs-BKeI5s5k.js → automation-runs-BE143_8n.js} +1 -1
  67. package/dist/client/assets/{automations-DYWjdgyr.js → automations-Bb7nXbV3.js} +1 -1
  68. package/dist/client/assets/{autosend-D-bZkBmT.js → autosend-BgQtIquI.js} +1 -1
  69. package/dist/client/assets/{avatar-Cv8O5RKG.js → avatar-BLpBLp4S.js} +1 -1
  70. package/dist/client/assets/{badge-Brp9eM4f.js → badge-DrRcJjij.js} +1 -1
  71. package/dist/client/assets/{block-document-7kcreCsk.js → block-document-lH4Td4Gr.js} +1 -1
  72. package/dist/client/assets/{brand-context-q34SGY9k.js → brand-context-CYnECRCw.js} +1 -1
  73. package/dist/client/assets/{breadcrumb-Bt6rdC1d.js → breadcrumb-CnV9-2iA.js} +1 -1
  74. package/dist/client/assets/{buckets-DvypXB4X.js → buckets-CPxRUiCE.js} +1 -1
  75. package/dist/client/assets/{bulk-category-panel-C-rCMe_h.js → bulk-category-panel-CDJcVwl9.js} +1 -1
  76. package/dist/client/assets/{calendar-BaqBxDNQ.js → calendar-CgSHBsc4.js} +1 -1
  77. package/dist/client/assets/{capability-load-error-CgD6TCDX.js → capability-load-error-BVRvpLA1.js} +1 -1
  78. package/dist/client/assets/{card-DRCU_oZd.js → card-JTAqNqzB.js} +1 -1
  79. package/dist/client/assets/{category-editor-CUp8r7SL.js → category-editor-D9BBIjMW.js} +1 -1
  80. package/dist/client/assets/{chat-context-C2zELQIn.js → chat-context-w8b2zLJD.js} +1 -1
  81. package/dist/client/assets/{checkbox-CKndAwzl.js → checkbox-D2dMPioz.js} +1 -1
  82. package/dist/client/assets/{cli-auth-success-C5HqsCdT.js → cli-auth-success-BPlamEIA.js} +1 -1
  83. package/dist/client/assets/{collection-detail-BcXu0qdj.js → collection-detail-DvnnIEMB.js} +1 -1
  84. package/dist/client/assets/{collection-display-button-D_Ve31Uf.js → collection-display-button-Dpmq62R2.js} +1 -1
  85. package/dist/client/assets/{collection-search-Cb7dksZE.js → collection-search-CIMxzWXr.js} +1 -1
  86. package/dist/client/assets/{collection-table-wrapper-DP-Susas.js → collection-table-wrapper-C858C1eY.js} +1 -1
  87. package/dist/client/assets/{collection-tabs-Dg-d1crR.js → collection-tabs-B8-DZs8N.js} +1 -1
  88. package/dist/client/assets/{command-C9JtFAAL.js → command-C4aL-kl3.js} +1 -1
  89. package/dist/client/assets/{commerce-onboarding-DTOiZBx_.js → commerce-onboarding-D5hRrhIf.js} +1 -1
  90. package/dist/client/assets/{connect-desktop-dialog-Cs7TVvzA.js → connect-desktop-dialog-DwAXjjs5.js} +1 -1
  91. package/dist/client/assets/{connection-card-d1pEA9Az.js → connection-card-DwUp0g1i.js} +1 -1
  92. package/dist/client/assets/{connection-detail-CeqjDfgb.js → connection-detail-EmZVev7s.js} +1 -1
  93. package/dist/client/assets/{connection-form-helpers-CKHdxZn4.js → connection-form-helpers-DkHiEfkI.js} +1 -1
  94. package/dist/client/assets/{connections-Bi_Pe8be.js → connections-Be47onBQ.js} +1 -1
  95. package/dist/client/assets/{decopilot-sse-pool-cpp0jxd2.js → decopilot-sse-pool-BU-0CfoG.js} +1 -1
  96. package/dist/client/assets/{dialog-CPLade3M.js → dialog-CqDts932.js} +1 -1
  97. package/dist/client/assets/{domain-settings-BkaPsPZq.js → domain-settings-B4VeSv4e.js} +1 -1
  98. package/dist/client/assets/{drawer-Co9pG-kN.js → drawer-IutH-8_v.js} +1 -1
  99. package/dist/client/assets/{dropdown-menu-BqIxzids.js → dropdown-menu-ButXlF87.js} +1 -1
  100. package/dist/client/assets/{empty-state-CJSyqsJg.js → empty-state-Crg62MQm.js} +1 -1
  101. package/dist/client/assets/{extract-connection-data-Dm2-QO_X.js → extract-connection-data-C0-5VjE4.js} +1 -1
  102. package/dist/client/assets/{file-explorer-CuSAEhlf.js → file-explorer-CbFy33gh.js} +1 -1
  103. package/dist/client/assets/{file-type-icon-BsIc0HxU.js → file-type-icon-V_L6e2jx.js} +1 -1
  104. package/dist/client/assets/{files-Cz18xgqZ.js → files-CVMYpGzQ.js} +1 -1
  105. package/dist/client/assets/{form-CXdLNz_-.js → form-CZY07phL.js} +1 -1
  106. package/dist/client/assets/{general-Bf_tW8H6.js → general-DSuDToTC.js} +1 -1
  107. package/dist/client/assets/{github-repo-picker-DW98CZYY.js → github-repo-picker-CO1HA_gu.js} +1 -1
  108. package/dist/client/assets/{hooks-C74lP7IN.js → hooks-z5vvdswW.js} +1 -1
  109. package/dist/client/assets/{index-BYP90x9v.js → index-4yQ8AoOW.js} +1 -1
  110. package/dist/client/assets/{index-D4F2vJoJ.js → index-9GHQtair.js} +1 -1
  111. package/dist/client/assets/{index-CeIQXEh3.js → index-BCRKTR6d.js} +1 -1
  112. package/dist/client/assets/{index-DoYiFl0R.js → index-BYp9DqaU.js} +1 -1
  113. package/dist/client/assets/{index-DvYrV3hR.js → index-CW9vwcTx.js} +1 -1
  114. package/dist/client/assets/{index-BqHSSmqY.js → index-Cj9plC3B.js} +1 -1
  115. package/dist/client/assets/{index-XamaIZGa.js → index-DMAo01l2.js} +1 -1
  116. package/dist/client/assets/{index-C44FcM4F.js → index-DOG1EYQK.js} +1 -1
  117. package/dist/client/assets/{index-DJ8QmyaA.js → index-DPHBZ1xA.js} +1 -1
  118. package/dist/client/assets/{index-DXiM2Hze.js → index-DS7LxVAN.js} +1 -1
  119. package/dist/client/assets/{index-ZEkMowGZ.js → index-D_tCFFGO.js} +1 -1
  120. package/dist/client/assets/{index-ChpBE2kt.js → index-DdjyNDrB.js} +1 -1
  121. package/dist/client/assets/{index-DeYdiI4N.js → index-Dtorf4f9.js} +5 -5
  122. package/dist/client/assets/{index-Czfh9xpG.js → index-XcWRE7hD.js} +3 -3
  123. package/dist/client/assets/{index-redirect-DDt7YSoq.js → index-redirect-g0QWp7Lm.js} +1 -1
  124. package/dist/client/assets/{input-C8mWYGvd.js → input-CHDSejNZ.js} +1 -1
  125. package/dist/client/assets/{integration-icon-a9Pqx4JJ.js → integration-icon-Bgls1dqx.js} +1 -1
  126. package/dist/client/assets/{invite-member-dialog-DQ65ceIQ.js → invite-member-dialog-CdeDcgok.js} +1 -1
  127. package/dist/client/assets/{label-D70VWHI0.js → label-CoCBZ21r.js} +1 -1
  128. package/dist/client/assets/{layout-DcNxVqan.js → layout-Br0_On_6.js} +1 -1
  129. package/dist/client/assets/{login-4QaLVJfM.js → login-ChYjbxka.js} +1 -1
  130. package/dist/client/assets/{mcp-oauth-BUJ-yaII.js → mcp-oauth-BQWeAUP9.js} +1 -1
  131. package/dist/client/assets/{members-C4fvi26u.js → members-DrqMTIbS.js} +1 -1
  132. package/dist/client/assets/{monaco-editor-Bw2z1SI8.js → monaco-editor-CNELq_5g.js} +1 -1
  133. package/dist/client/assets/{monitoring-stats-row-C2kB3UNl.js → monitoring-stats-row-DtEFAsSV.js} +1 -1
  134. package/dist/client/assets/{oauth-callback--6T2MK9W.js → oauth-callback-AIaTAg_Y.js} +1 -1
  135. package/dist/client/assets/{oauth-callback-ai-provider-CKc7vRmm.js → oauth-callback-ai-provider-BRkZrqUO.js} +1 -1
  136. package/dist/client/assets/{onboarding-BWIm9NLo.js → onboarding-BvokR0oq.js} +1 -1
  137. package/dist/client/assets/{org-install-Dg57-3LT.js → org-install-DhCNabn7.js} +1 -1
  138. package/dist/client/assets/{org-layout-DYTCPsvS.js → org-layout-CyWfi0ST.js} +1 -1
  139. package/dist/client/assets/{organization-choice-jz804da-.js → organization-choice-DIAHliWJ.js} +1 -1
  140. package/dist/client/assets/{orgs-Cf1Fbu9e.js → orgs-BLkSlgNY.js} +1 -1
  141. package/dist/client/assets/{page-seo-form-oGbuJDJO.js → page-seo-form-B41ny6LO.js} +1 -1
  142. package/dist/client/assets/page-seo-sheet-DmgPTc6W.js +1 -0
  143. package/dist/client/assets/{popover-BVQaVyR6.js → popover-4CshySSH.js} +1 -1
  144. package/dist/client/assets/{post-editor-VeM7huPr.js → post-editor-B5FBxSYC.js} +1 -1
  145. package/dist/client/assets/{primitives-BcHSdacC.js → primitives-B66n6JPc.js} +1 -1
  146. package/dist/client/assets/{profile-DH0XGXyG.js → profile-CqThYt16.js} +1 -1
  147. package/dist/client/assets/project-app-view-Cp_0-A9T.js +1 -0
  148. package/dist/client/assets/record-editor-pjBYuoTs.js +1 -0
  149. package/dist/client/assets/registry-BTxRazJr.js +2 -0
  150. package/dist/client/assets/{registry-layout-pSkR8UW5.js → registry-layout-B9ytuf_6.js} +1 -1
  151. package/dist/client/assets/{reports-Tnc-uzTa.js → reports-C-7AlqXK.js} +1 -1
  152. package/dist/client/assets/{require-capability-BWD9Lpis.js → require-capability-DC3AQJBX.js} +1 -1
  153. package/dist/client/assets/{required-auth-layout-CZK75x65.js → required-auth-layout-CXgEwD0x.js} +1 -1
  154. package/dist/client/assets/{reset-password-D2BWfTxm.js → reset-password-CV6kJSmg.js} +1 -1
  155. package/dist/client/assets/{roles-QadPUoQ6.js → roles-BLLITEmP.js} +1 -1
  156. package/dist/client/assets/{search-input-DCnUEaMF.js → search-input-C_z5TspG.js} +1 -1
  157. package/dist/client/assets/{secrets-D_zOVpav.js → secrets-BrjoD5GH.js} +1 -1
  158. package/dist/client/assets/{sections-editor-DyRDz4VN.js → sections-editor-BoIvQC0o.js} +1 -1
  159. package/dist/client/assets/{select-DziITC2w.js → select-BOi-XM82.js} +1 -1
  160. package/dist/client/assets/{select-model-CEhZTpGV.js → select-model-BBSZIiT5.js} +1 -1
  161. package/dist/client/assets/{seo-editor-DqfqhFYV.js → seo-editor-DqxjQ08w.js} +1 -1
  162. package/dist/client/assets/{settings-layout-Du609cIC.js → settings-layout-BUWdzxz2.js} +1 -1
  163. package/dist/client/assets/{settings-section-CxCbABTL.js → settings-section-BjThif1T.js} +1 -1
  164. package/dist/client/assets/{shell-controls-B4CJEtuU.js → shell-controls-BjA8DsOI.js} +1 -1
  165. package/dist/client/assets/{shell-layout-DgBkCq1m.js → shell-layout-lXng4_tJ.js} +1 -1
  166. package/dist/client/assets/{sidebar-CP5ueTVQ.js → sidebar-1CJdSMmB.js} +1 -1
  167. package/dist/client/assets/{skeleton-BEmnQuun.js → skeleton-kMPcVndx.js} +1 -1
  168. package/dist/client/assets/{sso-ilgvSjw-.js → sso-BmsC2mRg.js} +1 -1
  169. package/dist/client/assets/{store-CyZGZ16K.js → store-Cn_n1zm3.js} +1 -1
  170. package/dist/client/assets/store-registry-DheQnJj4.js +2 -0
  171. package/dist/client/assets/{studio-tools-EQ1sMf5g.js → studio-tools-AqXUOD_x.js} +1 -1
  172. package/dist/client/assets/{switch-BpDFiJiV.js → switch-QtyNLvMt.js} +1 -1
  173. package/dist/client/assets/{table-0ko0-BtR.js → table-v8bQl5PR.js} +1 -1
  174. package/dist/client/assets/{tabs-CgJ0yx9c.js → tabs-P3KOQntE.js} +1 -1
  175. package/dist/client/assets/{textarea-D32MXWrl.js → textarea-CvuHsOiL.js} +1 -1
  176. package/dist/client/assets/{toggle-group-BXuYw3Vv.js → toggle-group-DHtJm4nu.js} +1 -1
  177. package/dist/client/assets/{toolbar-B7I_lWO5.js → toolbar-2MpuVXF5.js} +1 -1
  178. package/dist/client/assets/{toolbar-icon-button-xPfBd7d3.js → toolbar-icon-button-CCaax_Wu.js} +1 -1
  179. package/dist/client/assets/{tools-list-B8amgJiI.js → tools-list-D3AAvCTk.js} +1 -1
  180. package/dist/client/assets/{tooltip-ERyYP_q4.js → tooltip-BGrQWUcr.js} +1 -1
  181. package/dist/client/assets/{use-ai-providers-BfLjonLa.js → use-ai-providers-g6RC0GnA.js} +1 -1
  182. package/dist/client/assets/{use-automations-jsRHpm7z.js → use-automations-DYjtGB9Y.js} +1 -1
  183. package/dist/client/assets/{use-capability-BIT-NSTU.js → use-capability-BJxGnanl.js} +1 -1
  184. package/dist/client/assets/{use-clock-tick-ykz1igUC.js → use-clock-tick-BK2Ucmzi.js} +1 -1
  185. package/dist/client/assets/{use-collections-BFDfSyXz.js → use-collections-BhLAfxbB.js} +1 -1
  186. package/dist/client/assets/{use-connection-CGE5HyrU.js → use-connection-DOOtTRDO.js} +1 -1
  187. package/dist/client/assets/{use-copy-C9PlmlEB.js → use-copy-C_T26ff6.js} +1 -1
  188. package/dist/client/assets/{use-create-virtual-mcp-BrLLy64U.js → use-create-virtual-mcp-Z7EMKzO8.js} +1 -1
  189. package/dist/client/assets/{use-debounced-autosave-75NQb3FB.js → use-debounced-autosave-C0uKbxOv.js} +1 -1
  190. package/dist/client/assets/{use-debounced-value-CXO6aS2R.js → use-debounced-value-CuQ4aF9o.js} +1 -1
  191. package/dist/client/assets/{use-decopilot-events-BeDe1gGD.js → use-decopilot-events-RzbrTHRl.js} +1 -1
  192. package/dist/client/assets/{use-delete-connection-CnW2frQ1.js → use-delete-connection-S16Ucji6.js} +1 -1
  193. package/dist/client/assets/{use-deployment-admin-BU0nZOwZ.js → use-deployment-admin-Ci0bOBea.js} +1 -1
  194. package/dist/client/assets/{use-file-configs-mqDds4Tv.js → use-file-configs-CVPaVpu6.js} +1 -1
  195. package/dist/client/assets/{use-infinite-scroll-CgrHEL4l.js → use-infinite-scroll-enGSczjh.js} +1 -1
  196. package/dist/client/assets/{use-join-requests-DnXLibkU.js → use-join-requests-uKv0Bdjr.js} +1 -1
  197. package/dist/client/assets/{use-mcp-client-DD4zrwVf.js → use-mcp-client-DnV_0PQ3.js} +1 -1
  198. package/dist/client/assets/{use-mcp-tools-DEfPgM2I.js → use-mcp-tools-KYUYqirD.js} +1 -1
  199. package/dist/client/assets/{use-members-D1WTM43U.js → use-members-DEAlLUVt.js} +1 -1
  200. package/dist/client/assets/{use-mobile-CE5TsIAB.js → use-mobile-AIGMNNGT.js} +1 -1
  201. package/dist/client/assets/{use-navigate-to-agent-BMHuAMz8.js → use-navigate-to-agent-B9rS_Q3T.js} +1 -1
  202. package/dist/client/assets/{use-org-auth-client-CBaFekKC.js → use-org-auth-client-DVsr7O_C.js} +1 -1
  203. package/dist/client/assets/{use-org-sso-S_ckHETl.js → use-org-sso-B1h_nBTU.js} +1 -1
  204. package/dist/client/assets/{use-organization-roles-CZsjN4ls.js → use-organization-roles-F3mpCtth.js} +1 -1
  205. package/dist/client/assets/{use-organization-settings-DUhAIfEl.js → use-organization-settings-olCT4MON.js} +1 -1
  206. package/dist/client/assets/{use-registry-connections-C0HnmanY.js → use-registry-connections-DGXtAHvz.js} +1 -1
  207. package/dist/client/assets/{use-secrets-BcJwZmSc.js → use-secrets-DJzIxh4J.js} +1 -1
  208. package/dist/client/assets/{use-status-sounds-CxGsaj6E.js → use-status-sounds-CQWpJSg_.js} +1 -1
  209. package/dist/client/assets/{use-view-mode-DQ2prwA1.js → use-view-mode-CFdQAlBZ.js} +1 -1
  210. package/dist/client/assets/{use-virtual-mcp-BJ8a2GYF.js → use-virtual-mcp-s5p4BVVk.js} +1 -1
  211. package/dist/client/assets/useInfiniteQuery-HVkdQ0kc.js +1 -0
  212. package/dist/client/assets/{useRouterState--SKz7X-F.js → useRouterState-CgAfncZ9.js} +1 -1
  213. package/dist/client/assets/useSuspenseInfiniteQuery-sEh180kK.js +1 -0
  214. package/dist/client/assets/{users-BGx3Q28J.js → users-CLdOA3rQ.js} +1 -1
  215. package/dist/client/assets/{variant-calendar-DENeftNH.js → variant-calendar-BNvyVfNY.js} +1 -1
  216. package/dist/client/assets/{view-mode-toggle-CoBZWPI-.js → view-mode-toggle-yowY6AG3.js} +1 -1
  217. package/dist/client/index.html +1 -1
  218. package/dist/server/cli.js +2 -2
  219. package/dist/server/server.js +2 -2
  220. package/package.json +1 -1
  221. package/dist/client/assets/page-seo-sheet-D48fsGKB.js +0 -1
  222. package/dist/client/assets/project-app-view-R-fFTq8x.js +0 -1
  223. package/dist/client/assets/record-editor-sxuFdaHc.js +0 -1
  224. package/dist/client/assets/registry-3iwMNL61.js +0 -2
  225. package/dist/client/assets/store-registry-C1_QTutp.js +0 -2
  226. package/dist/client/assets/useInfiniteQuery-Bjo3lAm2.js +0 -1
  227. package/dist/client/assets/useSuspenseInfiniteQuery-BGTnY06P.js +0 -1
@@ -84515,7 +84515,7 @@ ${d}`;h(N);return}if(E(null,y),t.strategy==="count"){if($--,$===0)h()}if(t.strat
84515
84515
  `);function h(_){if(t===void 0)return!0;let v=zM(_),n=v&&zM(t)?Nmu(t):t,D=v?Nmu(_):ymu(_),O=GRt(n,D);return O===""||!O.startsWith("..")&&!xRt(O)}return{upsert(_){f.run({$handle:_.handle,$status:_.status,$sandboxPath:_.sandboxPath,$port:_.port??null,$previewUrl:_.previewUrl??null,$repoCloneUrl:_.repoCloneUrl??null,$branch:_.branch??null,$projectName:_.projectName??null,$error:_.error??null,$now:Date.now()})},list(){return l.all().map(B1i)},reconcile(){let _=Date.now();for(let v of l.all().map(B1i)){if(!h(v.sandboxPath)){c.run({$handle:v.handle,$now:_});continue}if(!zM(v.sandboxPath)){E.run({$handle:v.handle,$now:_});continue}if(v.status==="spawning"||v.status==="ready"||v.status==="failed"||v.status==="missing")d.run({$handle:v.handle,$now:_})}return l.all().map(B1i)},prune(_){let v=[],n=[],D=this.reconcile();for(let O of D){if(!h(O.sandboxPath)){n.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"outside_root",deletedFiles:!1});continue}if(_.missing&&O.status==="missing"){$.run({$handle:O.handle}),v.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"missing",deletedFiles:!1});continue}if(!_.merged||!zM(O.sandboxPath))continue;if(O.branch===null||O.branch.trim()===""){n.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"no_branch",deletedFiles:!1});continue}if(!n2(O.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){n.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let N=n2(O.sandboxPath,["status","--porcelain"]);if(!N.ok){n.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(N.stdout.trim()!==""){n.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"dirty_worktree",deletedFiles:!1});continue}let y=Zmu(O.sandboxPath,O.branch);if(y===null){n.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(!y){n.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"branch_not_merged",deletedFiles:!1});continue}IRt(O.sandboxPath,{recursive:!0,force:!0}),$.run({$handle:O.handle}),v.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"merged",deletedFiles:!0})}return{removed:v,skipped:n}},delete(_){$.run({$handle:_})},inspect(_){let v=w.get({$handle:_});if(v===null)return null;let n=B1i(v),D=0,O=null;if(zM(n.sandboxPath)&&n2(n.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){let N=n2(n.sandboxPath,["status","--porcelain"]);if(N.ok){let y=N.stdout.trim();D=y===""?0:y.split(`
84516
84516
  `).length}if(n.branch!==null&&n.branch.trim()!=="")O=Zmu(n.sandboxPath,n.branch)}return{handle:n.handle,branch:n.branch,sandboxPath:n.sandboxPath,dirtyCount:D,merged:O}},close(){u.close()}}}var Bbi=()=>{};function JRt(i,u){return u?[["umount","-f",i]]:[["fusermount","-uz",i],["umount","-l",i]]}function Fmu(i,u){if(process.platform==="win32")return;for(let t of JRt(i,u))if(Bun.spawnSync(t,{stdout:"ignore",stderr:"ignore",timeout:5000}).exitCode===0)break}var Umu=()=>{};import{existsSync as XRt,readdirSync as LRt}from"fs";import{rm as WRt}from"fs/promises";import{join as Pmu}from"path";async function Imu(i,u={}){let t=u.detach??YRt,f=u.exists??XRt,l=u.readdir??((d)=>LRt(d)),c=u.rm??((d)=>WRt(d,{recursive:!0,force:!0})),E=Pmu(i,"org");if(f(E))for(let d of l(E))t(Pmu(E,d));await c(i)}var YRt=(i)=>Fmu(i,process.platform==="darwin");var Amu=g(()=>{Umu()});import{join as QRt}from"path";function xmu(i){let u=i.purge??Imu;return{stopSandbox(t){return i.provider.deleteSandbox(t)},inspectSandbox(t){return i.registry.inspect(t)},async removeSandbox(t){try{return await F1(async()=>{if(await i.provider.deleteSandbox(t),i.provider.hasHandle(t))throw Error("Can't delete \u2014 run in progress");let l=i.registry.inspect(t)?.sandboxPath??QRt(i.dataDir,"sandboxes",t);await u(l)},{maxAttempts:2,minTimeout:250,jitter:0}),i.registry.delete(t),{ok:!0}}catch(f){let l=f instanceof Xc?f.cause:f;return{ok:!1,error:l instanceof Error?l.message:String(l)}}}}}var kmu=g(()=>{O4();Amu()});import{randomBytes as zRt}from"crypto";import{mkdir as HRt}from"fs/promises";import{createServer as bRt}from"net";import{join as RRt}from"path";function Gmu(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function CRt(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function Smu(i){if(i instanceof Error){let u=i.cause;if(u instanceof Error&&u.message)return u.message;return i.message}return String(i)}function MRt(i){if(!i)return null;let u=i.trim().replace(/\/+$/,"");if(!u)return null;let t=u.split(/[/:]/).filter(Boolean).at(-1);if(!t)return null;return t.replace(/\.git$/i,"")||null}function qRt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:MRt(i.repo?.cloneUrl)}}function jmu(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??VRt,l=i.fetchImpl??fetch,c=i.resolvePreviewUrl??((D,O)=>`http://127.0.0.1:${O}`),E=(D)=>RRt(i.dataDir,"sandboxes",D),d=(D)=>{try{i.registry?.upsert(D)}catch(O){console.warn(`[user-desktop] failed to persist sandbox lifecycle handle=${D.handle} status=${D.status}:`,O)}},$=(D)=>{try{i.onEvent?.(D)}catch{}},w=async(D)=>{let O=new AbortController,N=setTimeout(()=>O.abort(),1500);try{let y=await l(`${D}/health`,{signal:O.signal});if(!y.ok)console.warn(`[user-desktop] probe ${D}/health \u2192 ${y.status} (treating as dead)`);return y.ok}catch(y){return console.warn(`[user-desktop] probe ${D}/health failed: ${y instanceof Error?y.message:String(y)} (treating as dead)`),!1}finally{clearTimeout(N)}},h=(D)=>{console.warn(`[user-desktop] evicting dead daemon handle=${D.handle} port=${D.port}`);try{D.process.kill("SIGTERM")}catch{}if(t.get(D.handle)===D)t.delete(D.handle),d({handle:D.handle,status:"stopped",sandboxPath:E(D.handle),port:null,previewUrl:null,...D.registryMetadata,error:null}),$({handle:D.handle,phase:"evicted"})},_=new Map;function v(){if(t.size<u)return;let D=[...t.values()].filter((N)=>N.activeDispatchCount===0).sort((N,y)=>N.lastUsedAt-y.lastUsedAt);if(D.length===0){console.warn(`[user-desktop] at cap ${t.size}/${u} but every sandbox is pinned (active dispatch) \u2014 exceeding cap temporarily`);return}let O=D[0];console.log(`[user-desktop] evicting LRU victim handle=${O.handle} port=${O.port} (cap ${u} reached, size=${t.size})`);try{O.process.kill("SIGTERM")}catch{}t.delete(O.handle),d({handle:O.handle,status:"stopped",sandboxPath:E(O.handle),port:null,previewUrl:null,...O.registryMetadata,error:null}),$({handle:O.handle,phase:"evicted"})}let n=async(D)=>{let O=qRt(D),N=E(D.handle);d({handle:D.handle,status:"spawning",sandboxPath:N,port:null,previewUrl:null,...O,error:null}),$({handle:D.handle,phase:"spawning",sandboxPath:N,projectName:O.projectName,branch:O.branch}),v();let y,T=null,Z;try{await HRt(N,{recursive:!0}),console.log(`[user-desktop] ensure handle=${D.handle} repo=${D.repo?.cloneUrl??"(none)"} branch=${D.repo?.branch??"(none)"} runtime=${D.workload?.runtime??"(autodetect)"} pm=${D.workload?.packageManager??"(autodetect)"}`),Z=zRt(24).toString("hex");let[S,A]=await Promise.all([f(),f()]);y=S,console.log(`[user-desktop] spawn handle=${D.handle} port=${y} devPort=${A} workdir=${N}`),T=await Promise.resolve(i.spawnDaemon({workdir:N,handle:D.handle,port:y,daemonToken:Z,offloadAllowedHosts:D.offloadAllowedHosts??[],offloadAllowSameHostDev:D.offloadAllowSameHostDev??!1,orgFsConfigJson:D.orgFsConfigJson}));try{await i.waitForHealth(y)}catch(k){throw Gmu("the sandbox didn't come online in time",k)}console.log(`[user-desktop] healthy handle=${D.handle} port=${y} \u2014 posting config`);try{await i.postConfig(y,A,{repo:D.repo,workload:D.workload,operator:D.operator},Z)}catch(k){throw Gmu(CRt(k)?"configuration timed out":"the sandbox rejected its configuration",k)}}catch(S){if(console.error(`[user-desktop] sandbox bring-up failed handle=${D.handle} port=${y??"(none)"}${T?" (killing daemon)":""}:`,S),T)try{T.kill("SIGKILL")}catch{}throw $({handle:D.handle,phase:"failed",error:Smu(S),sandboxPath:N,projectName:O.projectName,branch:O.branch}),d({handle:D.handle,status:"failed",sandboxPath:N,port:null,previewUrl:null,...O,error:Smu(S)}),S}if(!T||y===void 0)throw Error("sandbox bring-up invariant violated");let B=`http://127.0.0.1:${y}`,F=c(D.handle,y);console.log(`[user-desktop] ready handle=${D.handle} port=${y} sandboxApiUrl=${B} previewUrl=${F}`);let I={handle:D.handle,port:y,process:T,sandboxApiUrl:B,previewUrl:F,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:Z,registryMetadata:O};if(t.set(D.handle,I),d({handle:D.handle,status:"ready",sandboxPath:N,port:y,previewUrl:F,...O,error:null}),$({handle:D.handle,phase:"ready",port:y,previewUrl:F,sandboxPath:N,projectName:O.projectName,branch:O.branch}),T.exited)T.exited.then(()=>{if(t.get(D.handle)===I)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${D.handle} port=${y} \u2014 removing from cache`),t.delete(D.handle),d({handle:D.handle,status:"stopped",sandboxPath:N,port:null,previewUrl:null,...O,error:null}),$({handle:D.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${D.handle} port=${y} (already replaced/removed)`)});return{sandboxApiUrl:B,previewUrl:F,port:y}};return{async ensureSandbox(D){let O=t.get(D.handle);if(O){if(await w(O.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${D.handle} port=${O.port} (alive)`),O.lastUsedAt=Date.now(),{sandboxApiUrl:O.sandboxApiUrl,previewUrl:O.previewUrl,port:O.port};console.warn(`[user-desktop] cache stale handle=${D.handle} port=${O.port} \u2014 respawning`),h(O)}let N=_.get(D.handle);if(N)return console.log(`[user-desktop] joining in-flight ensure handle=${D.handle}`),N;let y=n(D).finally(()=>{_.delete(D.handle)});return _.set(D.handle,y),y},proxyPort(D){let O=t.get(D);if(O)O.lastUsedAt=Date.now();return O?.port??null},getDaemonToken(D){return t.get(D)?.daemonToken??null},hasHandle(D){return t.has(D)||_.has(D)},recordHit(D){let O=t.get(D);if(O)O.lastUsedAt=Date.now()},acquireDispatch(D){let O=t.get(D);if(!O)return()=>{};O.activeDispatchCount+=1;let N=!1;return()=>{if(N)return;N=!0;let y=t.get(D);if(y)y.activeDispatchCount=Math.max(0,y.activeDispatchCount-1)}},listSandboxes(){return[...t.values()]},async deleteSandbox(D){let O=t.get(D);if(!O){console.log(`[user-desktop] delete handle=${D} (not found, no-op)`);return}if(O.activeDispatchCount>0){console.warn(`[user-desktop] delete handle=${D} port=${O.port} REFUSED \u2014 ${O.activeDispatchCount} active dispatch(es) in flight`);return}console.log(`[user-desktop] delete handle=${D} port=${O.port}`);try{O.process.kill("SIGTERM")}catch{}t.delete(D),d({handle:D,status:"stopped",sandboxPath:E(D),port:null,previewUrl:null,repoCloneUrl:null,branch:null,projectName:null,error:null}),$({handle:D,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${t.size} sandbox(es)`);for(let D of t.values())try{D.process.kill("SIGTERM")}catch{}t.clear()}}}function VRt(){return new Promise((i,u)=>{let t=bRt();t.unref(),t.on("error",u),t.listen(0,"127.0.0.1",()=>{let f=t.address();if(f&&typeof f==="object"){let l=f.port;t.close(()=>i(l))}else t.close(()=>u(Error("could not allocate port")))})})}var Kmu=()=>{};import{randomUUID as rRt}from"crypto";import{hostname as mRt}from"os";async function Jmu(i){let u=mRt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=nRu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=U1i({path:F1i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,c=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let E=0,d=jmu({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(k,M)=>E>0?`http://${k}.localhost:${E}`:`http://127.0.0.1:${M}`,spawnDaemon:async(k)=>{let M={DAEMON_BOOT_ID:rRt(),APP_ROOT:k.workdir,PROXY_PORT:String(k.port),DAEMON_TOKEN:k.daemonToken,OFFLOAD_ALLOWED_HOSTS:k.offloadAllowedHosts.join(","),...k.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(k.orgFsConfigJson){let W=await NRu(i.dataDir);if(W)M.ORGFS_CONFIG=k.orgFsConfigJson,M.ORGFS_RCLONE_PATH=W}let J=await t({workdir:k.workdir,env:M,daemonPort:k.port});return{port:k.port,kill:(W)=>J.kill(W),exited:J.exited.then(()=>{return})}},postConfig:async(k,M,J,W)=>{let m={port:M};if(J.workload)m.runtime=J.workload.runtime,m.packageManager={name:J.workload.packageManager,...J.workload.packageManagerPath?{path:J.workload.packageManagerPath}:{}};let Y={application:m},ci=wh(J.operator??null);if(ci)Y.operator=ci;if(J.repo)Y.git={repository:{cloneUrl:J.repo.cloneUrl,branch:J.repo.branch},...J.repo.userName&&J.repo.userEmail?{identity:{userName:J.repo.userName,userEmail:J.repo.userEmail}}:{}};await t2(`http://127.0.0.1:${k}`,W,Y)},waitForHealth:async(k)=>{await Fli(`http://127.0.0.1:${k}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),$=await cmu({port:i.port,lookupSandboxPort:(k)=>d.proxyPort(k)});E=$.port,console.log(`Local ingress listening on http://127.0.0.1:${$.port} (use http://<handle>.localhost:${$.port}/)`),i.monitor?.onIngress?.($.port);let w=TRu({provider:d}),h=async()=>{let k=await u2({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!k)throw Object.assign(Error(`Session for ${i.clusterBaseUrl} is no longer valid \u2014 run \`deco auth login --target ${i.clusterBaseUrl}\` and restart \`deco link\`.`),{fatal:!0});return k.accessToken},_=await gmu(i.dataDir),v=process.env.npm_package_version??"0.0.0",n=await Zbi(),D=nmu(n,{onChange:(k)=>{console.log(`[link-daemon] capabilities detected: +${k.join(",")} (now: ${n.join(",")})`)}}),O=$zi({path:`${i.dataDir}/link/outbox.sqlite`});O.clear();let N=()=>{},y=new AbortController,T={clusterBaseUrl:i.clusterBaseUrl,getAccessToken:h,provider:d,outbox:O,controlHandler:w,capabilities:n,machineId:_,cliVersion:v,previewPort:$.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl}`)},onShutdown:()=>N(),runLifetimeSignal:y.signal};console.log(`[link-daemon] transport=tunnel cluster=${i.clusterBaseUrl}`);let Z=await rru(T);console.log("[link-daemon] active transport=tunnel");let B,F=new Promise((k)=>{B=k}),I=!1,S=async()=>{if(I)return;I=!0,y.abort(),console.log(`
84517
84517
  Shutting down\u2026`),D();try{await Z.close()}catch{}try{await $.stop()}catch{}try{await d.shutdown()}catch{}try{O.close()}catch{}c(),B(0)};process.on("SIGINT",()=>void S()),process.on("SIGTERM",()=>void S()),N=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),S()},Z.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!I)console.error("Cluster connection closed permanently; exiting."),S()});let A=xmu({provider:d,registry:f,dataDir:i.dataDir});return{stopped:F,stop:S,stopSandbox:A.stopSandbox,removeSandbox:A.removeSandbox,inspectSandbox:A.inspectSandbox}}catch(E){throw c(),E}}var Xmu=g(()=>{uzi();$M();DRu();yRu();ZRu();wzi();mru();Emu();Dmu();Omu();dM();Bbi();kmu();Kmu()});function Fbi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}import{createServer as eRt}from"net";async function oRt(i){for(let u of aRt)if(await Ubi(i,u))return u;return null}async function Lmu(i,{intervalMs:u=1000}={}){for(;;){let t=await oRt(i);if(t)return t;await g0(u)}}function Ubi(i,u){return new Promise((t)=>{let f=eRt();f.once("error",(l)=>{t(l.code==="EADDRINUSE")}),f.listen(i,u,()=>{f.close(()=>t(!1))})})}var aRt;var Pbi=g(()=>{O4();aRt=["localhost","127.0.0.1","0.0.0.0"]});function Wmu(i){return typeof i==="object"&&i!==null&&"code"in i&&i.code==="EADDRINUSE"}function sRt(i,u=process.platform){if(u==="win32")return`for /f "tokens=5" %P in ('netstat -ano ^| findstr /R /C:":${i} .*LISTENING"') do taskkill /F /PID %P`;return`kill -9 $(lsof -ti tcp:${i})`}function Ymu(i,u=process.platform){return[`Port ${i} is already in use.`,"Run this command to stop the process listening on it, then retry `decocms link`:","",` ${sRt(i,u)}`].join(`
84518
- `)}var Ibi;var Qmu=g(()=>{Ibi=class Ibi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var qL;var P1i=g(()=>{qL={name:"decocms",version:"4.58.3",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/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},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","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@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","@tanstack/react-virtual":"3.13.24","@tiptap/extension-text-align":"3.20.2","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0",echarts:"^5.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6","use-stick-to-bottom":"^1.1.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.210","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@decocms/tunnel":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/shadcn":"^6.6.2","@rjsf/utils":"^6.6.2","@rjsf/validator-ajv8":"^6.6.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.208","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var HM={};Wi(HM,{printBanner:()=>uCt,bannerLines:()=>zmu,BANNER_LINES:()=>I1i,BANNER_GRADIENT:()=>A1i});function iCt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function zmu(i){let u=I1i.map((t,f)=>{let[l,c,E]=iCt(A1i[f]);return`\x1B[38;2;${l};${c};${E}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function uCt(i){console.log("");for(let u of zmu(i))console.log(u);console.log("")}var I1i,A1i;var VL=g(()=>{I1i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],A1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as tCt,Text as Hmu}from"ink";import{jsx as fCt,jsxs as bmu}from"react/jsx-runtime";function x1i({version:i}){return bmu(tCt,{flexDirection:"column",marginTop:1,children:[I1i.map((u,t)=>fCt(Hmu,{color:A1i[t],children:u},t)),bmu(Hmu,{dimColor:!0,children:[" v",i]})]})}var Abi=g(()=>{VL()});function Rmu(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function rL(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function Cmu(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function Mmu(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var Sbi={};Wi(Sbi,{subscribeLinkState:()=>xbi,setSelectedHandle:()=>kbi,setRemoving:()=>S1i,setPersistedSandboxes:()=>nCt,setPendingConfirm:()=>RM,setMachine:()=>wCt,setLogPath:()=>_Ct,setLinkActions:()=>vCt,setIngress:()=>$Ct,setDaemonError:()=>hCt,setClusterUrl:()=>dCt,setCluster:()=>ECt,setActionError:()=>G1i,resetLinkStateForTests:()=>gCt,removeSandboxRow:()=>Gbi,pushSandboxEvent:()=>DCt,getLinkState:()=>bM,applySandboxEvent:()=>qmu});function cCt(i){return i==="spawning"||i==="ready"||i==="failed"}function qmu(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function Vmu(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:lCt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function Yd(){for(let i of k1i)i()}function bM(){return lf}function xbi(i){return k1i.add(i),()=>k1i.delete(i)}function ECt(i){lf={...lf,cluster:i},Yd()}function dCt(i){lf={...lf,clusterUrl:i},Yd()}function $Ct(i,u){lf={...lf,ingressPort:i,ingressUrl:u},Yd()}function wCt(i){lf={...lf,machine:i},Yd()}function hCt(i){lf={...lf,daemonError:i},Yd()}function _Ct(i){lf={...lf,logPath:i},Yd()}function kbi(i){lf={...lf,selectedHandle:i},Yd()}function RM(i){lf={...lf,pendingConfirm:i},Yd()}function G1i(i){lf={...lf,actionError:i},Yd()}function S1i(i,u){if(lf.removingHandles.has(i)===u)return;let t=new Set(lf.removingHandles);if(u)t.add(i);else t.delete(i);lf={...lf,removingHandles:t},Yd()}function vCt(i){lf={...lf,actions:i},Yd()}function Gbi(i){let u=rL(lf.sandboxes),t=Mmu(u,i,lf.selectedHandle),f=new Map(lf.sandboxes);f.delete(i);let l=new Set(lf.removingHandles);l.delete(i),lf={...lf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},Yd()}function nCt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of lf.sandboxes)if(cCt(f.status))u.set(t,f);lf={...lf,sandboxes:u},Yd()}function DCt(i){lf={...lf,sandboxes:qmu(lf.sandboxes,i)},Yd()}function gCt(){lf=Vmu(),k1i.clear()}var lCt=20,lf,k1i;var CM=g(()=>{lf=Vmu(),k1i=new Set});import{spawn as OCt}from"child_process";function NCt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function rmu(i,u=process.platform){let t=NCt(u);try{OCt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var mmu=()=>{};function emu(i,u={}){let t=u.openUrl??rmu,f=bM(),l=rL(f.sandboxes),c=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,E=f.actions;switch(i.type){case"move":kbi(Cmu(l,f.selectedHandle,i.delta));return;case"open":{if(c===null)return;let d=f.sandboxes.get(c);if(d?.status==="ready"&&d.previewUrl)t(d.previewUrl);return}case"stop":if(c!==null&&E)E.stopSandbox(c);return;case"delete":{if(c===null||!E)return;let d=E.inspectSandbox(c),$=f.sandboxes.get(c);G1i(null),RM({handle:c,branch:d?.branch??$?.branch??null,dirtyCount:d?.dirtyCount??0,merged:d?.merged??null});return}case"confirmYes":{let d=f.pendingConfirm;if(RM(null),d===null||!E)return;S1i(d.handle,!0),E.removeSandbox(d.handle).then(($)=>{if($.ok)Gbi(d.handle);else S1i(d.handle,!1),G1i($.error)});return}case"confirmNo":RM(null);return;case"quit":if(E)E.quit();return}}var amu=g(()=>{CM();mmu()});function omu(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var smu={};Wi(smu,{LinkApp:()=>BCt});import{Box as Cl,Text as w1,useInput as yCt}from"ink";import{useSyncExternalStore as TCt}from"react";import{jsx as kf,jsxs as Zh}from"react/jsx-runtime";function ZCt(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function BCt(){let i=TCt(xbi,bM),u=[...i.sandboxes.values()].sort((l,c)=>l.handle.localeCompare(c.handle)),t=rL(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return yCt((l,c)=>{let E=omu(l,c,i.pendingConfirm!==null);if(E!==null)emu(E)}),Zh(Cl,{flexDirection:"column",children:[kf(x1i,{version:qL.version}),kf(Cl,{marginBottom:1,children:kf(w1,{dimColor:!0,children:"\u2500".repeat(80)})}),kf(Cl,{children:i.cluster==="linked"?Zh(w1,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Zh(w1,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Zh(w1,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),kf(Cl,{children:i.ingressUrl?Zh(w1,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):kf(w1,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),kf(Cl,{marginBottom:1,children:kf(w1,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?kf(w1,{dimColor:!0,children:"No previews running yet."}):Zh(Cl,{flexDirection:"column",children:[Zh(Cl,{children:[kf(Cl,{width:2,flexShrink:0}),kf(Cl,{width:mL.project,flexShrink:0,marginRight:1,children:kf(w1,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),kf(Cl,{width:mL.branch,flexShrink:0,marginRight:1,children:kf(w1,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),kf(Cl,{width:mL.status,flexShrink:0,marginRight:1,children:kf(w1,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),kf(Cl,{flexGrow:1,children:kf(w1,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=ZCt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return Zh(Cl,{children:[kf(Cl,{width:2,flexShrink:0,children:kf(w1,{color:"cyan",children:E?"\u203A":" "})}),kf(Cl,{width:mL.project,flexShrink:0,marginRight:1,children:kf(w1,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),kf(Cl,{width:mL.branch,flexShrink:0,marginRight:1,children:kf(w1,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),kf(Cl,{width:mL.status,flexShrink:0,marginRight:1,children:kf(w1,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),kf(Cl,{flexGrow:1,children:kf(w1,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?kf(Cl,{marginTop:1,children:Zh(w1,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?kf(Cl,{marginTop:1,children:Zh(w1,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?kf(Cl,{marginTop:1,children:kf(w1,{color:"yellow",children:Rmu(i.pendingConfirm)})}):null,i.actionError?kf(Cl,{marginTop:1,children:Zh(w1,{color:"red",children:["\u2717 ",i.actionError]})}):null,kf(Cl,{marginTop:1,children:kf(w1,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var mL;var pmu=g(()=>{P1i();Abi();amu();CM();mL={project:18,branch:22,status:14}});var ieu={};Wi(ieu,{runLinkCommand:()=>GCt});import{closeSync as FCt,mkdirSync as UCt,openSync as PCt,writeSync as ICt}from"fs";import{homedir as ACt}from"os";import{join as jbi}from"path";function xCt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{ICt(u,`${Fbi(l)}
84518
+ `)}var Ibi;var Qmu=g(()=>{Ibi=class Ibi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var qL;var P1i=g(()=>{qL={name:"decocms",version:"4.58.4",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},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","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@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","@tanstack/react-virtual":"3.13.24","@tiptap/extension-text-align":"3.20.2","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0",echarts:"^5.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6","use-stick-to-bottom":"^1.1.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.210","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@decocms/tunnel":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/shadcn":"^6.6.2","@rjsf/utils":"^6.6.2","@rjsf/validator-ajv8":"^6.6.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.208","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var HM={};Wi(HM,{printBanner:()=>uCt,bannerLines:()=>zmu,BANNER_LINES:()=>I1i,BANNER_GRADIENT:()=>A1i});function iCt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function zmu(i){let u=I1i.map((t,f)=>{let[l,c,E]=iCt(A1i[f]);return`\x1B[38;2;${l};${c};${E}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function uCt(i){console.log("");for(let u of zmu(i))console.log(u);console.log("")}var I1i,A1i;var VL=g(()=>{I1i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],A1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as tCt,Text as Hmu}from"ink";import{jsx as fCt,jsxs as bmu}from"react/jsx-runtime";function x1i({version:i}){return bmu(tCt,{flexDirection:"column",marginTop:1,children:[I1i.map((u,t)=>fCt(Hmu,{color:A1i[t],children:u},t)),bmu(Hmu,{dimColor:!0,children:[" v",i]})]})}var Abi=g(()=>{VL()});function Rmu(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function rL(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function Cmu(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function Mmu(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var Sbi={};Wi(Sbi,{subscribeLinkState:()=>xbi,setSelectedHandle:()=>kbi,setRemoving:()=>S1i,setPersistedSandboxes:()=>nCt,setPendingConfirm:()=>RM,setMachine:()=>wCt,setLogPath:()=>_Ct,setLinkActions:()=>vCt,setIngress:()=>$Ct,setDaemonError:()=>hCt,setClusterUrl:()=>dCt,setCluster:()=>ECt,setActionError:()=>G1i,resetLinkStateForTests:()=>gCt,removeSandboxRow:()=>Gbi,pushSandboxEvent:()=>DCt,getLinkState:()=>bM,applySandboxEvent:()=>qmu});function cCt(i){return i==="spawning"||i==="ready"||i==="failed"}function qmu(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function Vmu(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:lCt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function Yd(){for(let i of k1i)i()}function bM(){return lf}function xbi(i){return k1i.add(i),()=>k1i.delete(i)}function ECt(i){lf={...lf,cluster:i},Yd()}function dCt(i){lf={...lf,clusterUrl:i},Yd()}function $Ct(i,u){lf={...lf,ingressPort:i,ingressUrl:u},Yd()}function wCt(i){lf={...lf,machine:i},Yd()}function hCt(i){lf={...lf,daemonError:i},Yd()}function _Ct(i){lf={...lf,logPath:i},Yd()}function kbi(i){lf={...lf,selectedHandle:i},Yd()}function RM(i){lf={...lf,pendingConfirm:i},Yd()}function G1i(i){lf={...lf,actionError:i},Yd()}function S1i(i,u){if(lf.removingHandles.has(i)===u)return;let t=new Set(lf.removingHandles);if(u)t.add(i);else t.delete(i);lf={...lf,removingHandles:t},Yd()}function vCt(i){lf={...lf,actions:i},Yd()}function Gbi(i){let u=rL(lf.sandboxes),t=Mmu(u,i,lf.selectedHandle),f=new Map(lf.sandboxes);f.delete(i);let l=new Set(lf.removingHandles);l.delete(i),lf={...lf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},Yd()}function nCt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of lf.sandboxes)if(cCt(f.status))u.set(t,f);lf={...lf,sandboxes:u},Yd()}function DCt(i){lf={...lf,sandboxes:qmu(lf.sandboxes,i)},Yd()}function gCt(){lf=Vmu(),k1i.clear()}var lCt=20,lf,k1i;var CM=g(()=>{lf=Vmu(),k1i=new Set});import{spawn as OCt}from"child_process";function NCt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function rmu(i,u=process.platform){let t=NCt(u);try{OCt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var mmu=()=>{};function emu(i,u={}){let t=u.openUrl??rmu,f=bM(),l=rL(f.sandboxes),c=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,E=f.actions;switch(i.type){case"move":kbi(Cmu(l,f.selectedHandle,i.delta));return;case"open":{if(c===null)return;let d=f.sandboxes.get(c);if(d?.status==="ready"&&d.previewUrl)t(d.previewUrl);return}case"stop":if(c!==null&&E)E.stopSandbox(c);return;case"delete":{if(c===null||!E)return;let d=E.inspectSandbox(c),$=f.sandboxes.get(c);G1i(null),RM({handle:c,branch:d?.branch??$?.branch??null,dirtyCount:d?.dirtyCount??0,merged:d?.merged??null});return}case"confirmYes":{let d=f.pendingConfirm;if(RM(null),d===null||!E)return;S1i(d.handle,!0),E.removeSandbox(d.handle).then(($)=>{if($.ok)Gbi(d.handle);else S1i(d.handle,!1),G1i($.error)});return}case"confirmNo":RM(null);return;case"quit":if(E)E.quit();return}}var amu=g(()=>{CM();mmu()});function omu(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var smu={};Wi(smu,{LinkApp:()=>BCt});import{Box as Cl,Text as w1,useInput as yCt}from"ink";import{useSyncExternalStore as TCt}from"react";import{jsx as kf,jsxs as Zh}from"react/jsx-runtime";function ZCt(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function BCt(){let i=TCt(xbi,bM),u=[...i.sandboxes.values()].sort((l,c)=>l.handle.localeCompare(c.handle)),t=rL(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return yCt((l,c)=>{let E=omu(l,c,i.pendingConfirm!==null);if(E!==null)emu(E)}),Zh(Cl,{flexDirection:"column",children:[kf(x1i,{version:qL.version}),kf(Cl,{marginBottom:1,children:kf(w1,{dimColor:!0,children:"\u2500".repeat(80)})}),kf(Cl,{children:i.cluster==="linked"?Zh(w1,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Zh(w1,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Zh(w1,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),kf(Cl,{children:i.ingressUrl?Zh(w1,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):kf(w1,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),kf(Cl,{marginBottom:1,children:kf(w1,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?kf(w1,{dimColor:!0,children:"No previews running yet."}):Zh(Cl,{flexDirection:"column",children:[Zh(Cl,{children:[kf(Cl,{width:2,flexShrink:0}),kf(Cl,{width:mL.project,flexShrink:0,marginRight:1,children:kf(w1,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),kf(Cl,{width:mL.branch,flexShrink:0,marginRight:1,children:kf(w1,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),kf(Cl,{width:mL.status,flexShrink:0,marginRight:1,children:kf(w1,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),kf(Cl,{flexGrow:1,children:kf(w1,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=ZCt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return Zh(Cl,{children:[kf(Cl,{width:2,flexShrink:0,children:kf(w1,{color:"cyan",children:E?"\u203A":" "})}),kf(Cl,{width:mL.project,flexShrink:0,marginRight:1,children:kf(w1,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),kf(Cl,{width:mL.branch,flexShrink:0,marginRight:1,children:kf(w1,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),kf(Cl,{width:mL.status,flexShrink:0,marginRight:1,children:kf(w1,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),kf(Cl,{flexGrow:1,children:kf(w1,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?kf(Cl,{marginTop:1,children:Zh(w1,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?kf(Cl,{marginTop:1,children:Zh(w1,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?kf(Cl,{marginTop:1,children:kf(w1,{color:"yellow",children:Rmu(i.pendingConfirm)})}):null,i.actionError?kf(Cl,{marginTop:1,children:Zh(w1,{color:"red",children:["\u2717 ",i.actionError]})}):null,kf(Cl,{marginTop:1,children:kf(w1,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var mL;var pmu=g(()=>{P1i();Abi();amu();CM();mL={project:18,branch:22,status:14}});var ieu={};Wi(ieu,{runLinkCommand:()=>GCt});import{closeSync as FCt,mkdirSync as UCt,openSync as PCt,writeSync as ICt}from"fs";import{homedir as ACt}from"os";import{join as jbi}from"path";function xCt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{ICt(u,`${Fbi(l)}
84519
84519
  `)}catch{}};return console.log=(...l)=>f(l),console.warn=(...l)=>f(l),console.error=(...l)=>{f(l),i(Fbi(l))},()=>{console.log=t.log,console.warn=t.warn,console.error=t.error}}async function kCt(i,u){let t;try{t=await fetch(`${i}/api/links/me`,{headers:{authorization:`Bearer ${u}`},signal:AbortSignal.timeout(1e4)})}catch{return}if(t.status===401||t.status===403)throw Error(`Authentication rejected by ${i} \u2014 the session token was not accepted. `+`Run \`deco auth login --target ${i}\` and try again.`)}async function GCt(i={}){let u=i.port??5174,t=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??jbi(ACt(),"deco"),f=i.clusterBaseUrl??process.env.MESH_CLUSTER_URL??"https://studio.decocms.com",l,c,E,d=()=>{if(E===void 0)return;try{E.close()}catch{}finally{E=void 0}};try{if(await Ubi(u,"127.0.0.1"))throw new Ibi(u);let $=jbi(t,"sandboxes");E=U1i({path:F1i(t),managedSandboxRoot:$});let w=await yli({dataDir:t,intent:"Link",target:f});if(process.env.DECOCMS_LINK_MANAGED!=="1")await kCt(f,w.accessToken);let h=E.reconcile();if(i.prune){let D=E.prune({missing:!0,merged:!0});if(!i.tui)console.log(`Pruned local sandboxes: removed ${D.removed.length}, skipped ${D.skipped.length}.`);h=E.reconcile()}let _;if(i.tui){let{render:D}=await import("ink"),{createElement:O}=await import("react"),{LinkApp:N}=await Promise.resolve().then(() => (pmu(),smu)),{pushSandboxEvent:y,setCluster:T,setClusterUrl:Z,setDaemonError:B,setIngress:F,setLogPath:I,setMachine:S,setPersistedSandboxes:A}=await Promise.resolve().then(() => (CM(),Sbi));UCt(t,{recursive:!0});let k=jbi(t,"link.log");c=PCt(k,"w"),I(k),A(h),Z(f),T("connecting"),_={onEvent:(M)=>y(M),onIngress:(M)=>F(M,`http://127.0.0.1:${M}`),onCluster:(M)=>T(M),onMachine:(M)=>S(M)},l=xCt(B,c),D(O(N),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:D}=await Promise.resolve().then(() => (VL(),HM));D(i.version??"0.0.0")}d();let v=process.env.DECOCMS_LINK_MANAGED!=="1",n=await Jmu({port:u,clusterBaseUrl:f,dataDir:t,session:w,monitor:_,logFd:c,perSandboxLogs:v,hotReload:i.hotReload});if(i.tui){let{setLinkActions:D}=await Promise.resolve().then(() => (CM(),Sbi));D({stopSandbox:n.stopSandbox,removeSandbox:n.removeSandbox,inspectSandbox:n.inspectSandbox,quit:n.stop})}return await n.stopped}catch($){return l?.(),console.error(Wmu($)?Ymu(u):$ instanceof Error?$.message:String($)),1}finally{if(l?.(),c!==void 0)try{FCt(c)}catch{}d()}}var ueu=g(()=>{izi();Xmu();Pbi();Qmu();Bbi()});var Ybi={};Wi(Ybi,{resolveDevLinkClusterUrl:()=>JCt,populateDevLinkToxiProxy:()=>deu,isDevLinkToxiProxyEnabled:()=>KCt,ensureDevLinkToxiProxy:()=>QCt,buildDevLinkToxiProxyConfig:()=>ceu,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>feu,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>leu});function KCt(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function Kbi(i,u){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${u} must be an integer port in 1..65535`);return i}function ceu(i){let u=new URL(i.serverUrl);if(u.protocol!=="http:")throw Error("DECO_DEV_LINK_TOXIPROXY only supports http local Studio URLs");let t=Kbi(i.apiPort,"apiPort"),f=Kbi(i.listenPort,"listenPort");if(u.port.length===0)throw Error("serverUrl must include an explicit valid port");let l=Kbi(Number.parseInt(u.port,10),"upstreamPort"),c=`http://127.0.0.1:${l}`,E=`http://127.0.0.1:${f}`;return{serviceName:feu,proxyName:leu,apiUrl:`http://127.0.0.1:${t}`,listen:`0.0.0.0:${f}`,upstream:`host.docker.internal:${l}`,publicTargetUrl:c,clusterUrl:E,logLine:`[dev-link-toxiproxy] ready: ${E} -> ${c}`}}function JCt(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function Jbi(i,u,t){if(i.ok)return;let f=await i.text();throw Error(`ToxiProxy ${u} failed for ${t}: status=${i.status} statusText=${i.statusText} body=${f}`)}function Wbi(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function Eeu(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return Eeu(i.cause)}async function Xbi(i,u,t,f){try{return await i(t,f)}catch(l){throw Error(`ToxiProxy ${u} failed for ${t}: ${Wbi(l)}`,{cause:l})}}async function deu(i,u=fetch){let t=`${i.apiUrl}/reset`,f=await Xbi(u,"reset",t,{method:"POST"});await Jbi(f,"reset",t);let l=`${i.apiUrl}/populate`,c=await Xbi(u,"populate",l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([{name:i.proxyName,listen:i.listen,upstream:i.upstream,enabled:!0}])});await Jbi(c,"populate",l)}async function XCt(i,u){let t=`${i.apiUrl}/version`;try{await F1(async()=>{let f=await Xbi(u,"readiness check",t,{method:"GET",signal:AbortSignal.timeout(jCt)});await Jbi(f,"readiness check",t)},{maxAttempts:SCt,minTimeout:teu,maxTimeout:teu,multiplier:1,jitter:0,isRetriable:(f)=>!Eeu(f)})}catch(f){let l=f instanceof Xc?f.cause:f;throw Error(`ToxiProxy API did not become ready at ${t}: ${Wbi(l)}`,{cause:l})}}async function LCt(i){if(i===null)return"";return await new Response(i).text()}async function Lbi(i,u={}){let t=["docker",...i].join(" "),f=(()=>{try{return Bun.spawn(["docker",...i],{stdout:"ignore",stderr:"pipe"})}catch(d){throw Error(`Docker command failed to start (${t}): ${Wbi(d)}`,{cause:d})}})(),[l,c]=await Promise.all([f.exited,LCt(f.stderr)]);if(l===0||u.ignoreFailure===!0)return;let E=c.trim().length>0?`: ${c.trim()}`:"";throw Error(`Docker command failed (${t}) with exit ${l}${E}`)}async function WCt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await Lbi(["rm","-f",t],{ignoreFailure:!0}),await Lbi(["run","--rm","-d","--name",t,"-p",`127.0.0.1:${i}:8474`,"-p",`127.0.0.1:${u}:${u}`,"ghcr.io/shopify/toxiproxy:2.12.0","-host=0.0.0.0"])}async function YCt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await Lbi(["rm","-f",t],{ignoreFailure:!0})}async function QCt(i){let u=ceu(i),t=i.startDaemon??WCt,f=i.stopDaemon??(i.startDaemon===void 0?YCt:void 0);await t(i.apiPort,i.listenPort);let l=i.fetchImpl??fetch;try{await XCt(u,l),await deu(u,l)}catch(c){if(f!==void 0)try{await f(i.apiPort,i.listenPort)}catch{}throw c}return{config:u,stop:async()=>{if(f!==void 0)await f(i.apiPort,i.listenPort)}}}var feu="ToxiProxy",leu="dev_link_studio",SCt=20,teu=100,jCt=100;var Qbi=g(()=>{O4()});var $eu={};Wi($eu,{migrateBetterAuth:()=>zbi});import{getMigrations as zCt}from"better-auth/db";import{sso as HCt}from"@better-auth/sso";import{organization as bCt}from"@decocms/better-auth/plugins";import{admin as RCt,apiKey as CCt,jwt as MCt,magicLink as qCt,mcp as VCt,openAPI as rCt}from"better-auth/plugins";import{emailOTP as mCt}from"better-auth/plugins/email-otp";async function zbi(i){let t={database:uM(i||o8()),plugins:[bCt({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),RCt(),CCt(),MCt(),rCt(),VCt({loginPage:"/login"}),HCt(),qCt({sendMagicLink:async()=>{}}),mCt({sendVerificationOTP:async()=>{}})]},{toBeAdded:f,toBeCreated:l,runMigrations:c}=await zCt(t);if(!f.length&&!l.length)return"up to date";return await c(),`${l.length+f.length} table(s) migrated`}var Hbi=g(()=>{fE()});var bbi={};Wi(bbi,{up:()=>eCt,down:()=>aCt});import{sql as lv}from"kysely";async function eCt(i){await i.schema.createTable("connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("createdById","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("description","text").addColumn("icon","text").addColumn("appName","text").addColumn("appId","text").addColumn("connectionType","text",(u)=>u.notNull()).addColumn("connectionUrl","text",(u)=>u.notNull()).addColumn("connectionToken","text").addColumn("connectionHeaders","text").addColumn("oauthConfig","text").addColumn("metadata","text").addColumn("tools","text").addColumn("bindings","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(lv`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(lv`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("api_keys").addColumn("id","text",(u)=>u.primaryKey()).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("hashedKey","text",(u)=>u.notNull().unique()).addColumn("permissions","text",(u)=>u.notNull()).addColumn("expiresAt","text").addColumn("remaining","integer").addColumn("metadata","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(lv`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(lv`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("audit_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(lv`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createTable("oauth_clients").addColumn("id","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().unique()).addColumn("clientSecret","text").addColumn("clientName","text",(u)=>u.notNull()).addColumn("redirectUris","text",(u)=>u.notNull()).addColumn("grantTypes","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("clientUri","text").addColumn("logoUri","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(lv`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_authorization_codes").addColumn("code","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("redirectUri","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("codeChallenge","text").addColumn("codeChallengeMethod","text").addColumn("expiresAt","text",(u)=>u.notNull()).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(lv`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_refresh_tokens").addColumn("token","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(lv`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("downstream_tokens").addColumn("id","text",(u)=>u.primaryKey()).addColumn("connectionId","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("userId","text",(u)=>u.references("user.id").onDelete("cascade")).addColumn("accessToken","text",(u)=>u.notNull()).addColumn("refreshToken","text").addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(lv`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(lv`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_connections_organizationId").on("connections").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}async function aCt(i){await i.schema.dropTable("downstream_tokens").execute(),await i.schema.dropTable("oauth_refresh_tokens").execute(),await i.schema.dropTable("oauth_authorization_codes").execute(),await i.schema.dropTable("oauth_clients").execute(),await i.schema.dropTable("audit_logs").execute(),await i.schema.dropTable("api_keys").execute(),await i.schema.dropTable("connections").execute()}var weu=()=>{};var Rbi={};Wi(Rbi,{up:()=>oCt,down:()=>sCt});import{sql as heu}from"kysely";async function oCt(i){await i.schema.createTable("organization_settings").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(heu`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(heu`CURRENT_TIMESTAMP`)).execute()}async function sCt(i){await i.schema.dropTable("organization_settings").execute()}var _eu=()=>{};var Cbi={};Wi(Cbi,{up:()=>pCt,down:()=>iMt});async function pCt(i){await i.schema.alterTable("connections").renameColumn("name","title").execute(),await i.schema.alterTable("connections").renameColumn("createdById","created_by").execute(),await i.schema.alterTable("connections").renameColumn("createdAt","created_at").execute(),await i.schema.alterTable("connections").renameColumn("updatedAt","updated_at").execute(),await i.schema.alterTable("connections").renameColumn("organizationId","organization_id").execute(),await i.schema.alterTable("connections").renameColumn("connectionType","connection_type").execute(),await i.schema.alterTable("connections").renameColumn("connectionUrl","connection_url").execute(),await i.schema.alterTable("connections").renameColumn("connectionToken","connection_token").execute(),await i.schema.alterTable("connections").renameColumn("connectionHeaders","connection_headers").execute(),await i.schema.alterTable("connections").renameColumn("oauthConfig","oauth_config").execute(),await i.schema.alterTable("connections").renameColumn("appName","app_name").execute(),await i.schema.alterTable("connections").renameColumn("appId","app_id").execute()}async function iMt(i){await i.schema.alterTable("connections").renameColumn("title","name").execute(),await i.schema.alterTable("connections").renameColumn("created_by","createdById").execute(),await i.schema.alterTable("connections").renameColumn("created_at","createdAt").execute(),await i.schema.alterTable("connections").renameColumn("updated_at","updatedAt").execute(),await i.schema.alterTable("connections").renameColumn("organization_id","organizationId").execute(),await i.schema.alterTable("connections").renameColumn("connection_type","connectionType").execute(),await i.schema.alterTable("connections").renameColumn("connection_url","connectionUrl").execute(),await i.schema.alterTable("connections").renameColumn("connection_token","connectionToken").execute(),await i.schema.alterTable("connections").renameColumn("connection_headers","connectionHeaders").execute(),await i.schema.alterTable("connections").renameColumn("oauth_config","oauthConfig").execute(),await i.schema.alterTable("connections").renameColumn("app_name","appName").execute(),await i.schema.alterTable("connections").renameColumn("app_id","appId").execute()}var Mbi={};Wi(Mbi,{up:()=>uMt,down:()=>tMt});async function uMt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId","createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}async function tMt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","modelsBindingConnectionId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId",u.val(null).as("modelsBindingConnectionId"),"createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}var qbi={};Wi(qbi,{up:()=>fMt,down:()=>lMt});async function fMt(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function lMt(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var Vbi={};Wi(Vbi,{up:()=>EMt,down:()=>dMt});import{sql as cMt}from"kysely";async function EMt(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",cMt`text`).execute()}async function dMt(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var veu=()=>{};var rbi={};Wi(rbi,{up:()=>$Mt,down:()=>wMt});async function $Mt(i){await i.schema.createTable("monitoring_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("connection_title","text",(u)=>u.notNull()).addColumn("tool_name","text",(u)=>u.notNull()).addColumn("input","text",(u)=>u.notNull()).addColumn("output","text",(u)=>u.notNull()).addColumn("is_error","integer",(u)=>u.notNull()).addColumn("error_message","text").addColumn("duration_ms","integer",(u)=>u.notNull()).addColumn("timestamp","text",(u)=>u.notNull()).addColumn("user_id","text").addColumn("request_id","text",(u)=>u.notNull()).execute(),await i.schema.createIndex("monitoring_logs_org_timestamp").on("monitoring_logs").columns(["organization_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_connection_timestamp").on("monitoring_logs").columns(["connection_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_is_error").on("monitoring_logs").columns(["organization_id","is_error","timestamp"]).execute()}async function wMt(i){await i.schema.dropIndex("monitoring_logs_is_error").execute(),await i.schema.dropIndex("monitoring_logs_connection_timestamp").execute(),await i.schema.dropIndex("monitoring_logs_org_timestamp").execute(),await i.schema.dropTable("monitoring_logs").execute()}var mbi={};Wi(mbi,{up:()=>hMt,down:()=>_Mt});import{sql as MM}from"kysely";async function hMt(i){await i.schema.createTable("events").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("type","text",(u)=>u.notNull()).addColumn("source","text",(u)=>u.notNull()).addColumn("specversion","text",(u)=>u.notNull().defaultTo("1.0")).addColumn("subject","text").addColumn("time","text",(u)=>u.notNull()).addColumn("datacontenttype","text",(u)=>u.notNull().defaultTo("application/json")).addColumn("dataschema","text").addColumn("data","text").addColumn("cron","varchar(255)").addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(MM`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(MM`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_subscriptions").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("publisher","text").addColumn("event_type","text",(u)=>u.notNull()).addColumn("filter","text").addColumn("enabled","integer",(u)=>u.notNull().defaultTo(1)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(MM`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(MM`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_deliveries").addColumn("id","text",(u)=>u.primaryKey()).addColumn("event_id","text",(u)=>u.notNull()).addColumn("subscription_id","text",(u)=>u.notNull().references("event_subscriptions.id").onDelete("cascade")).addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("delivered_at","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(MM`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_events_org_status").on("events").columns(["organization_id","status"]).execute(),await i.schema.createIndex("idx_events_source").on("events").columns(["source"]).execute(),await i.schema.createIndex("idx_events_type").on("events").columns(["type"]).execute(),await i.schema.createIndex("idx_events_retry").on("events").columns(["status","next_retry_at"]).execute(),await i.schema.createIndex("idx_subscriptions_connection").on("event_subscriptions").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_subscriptions_type").on("event_subscriptions").columns(["event_type"]).execute(),await i.schema.createIndex("idx_subscriptions_org_enabled").on("event_subscriptions").columns(["organization_id","enabled"]).execute(),await i.schema.createIndex("idx_subscriptions_unique").on("event_subscriptions").columns(["connection_id","event_type","publisher","filter"]).unique().execute(),await i.schema.createIndex("idx_deliveries_event").on("event_deliveries").columns(["event_id"]).execute(),await i.schema.createIndex("idx_deliveries_subscription_status").on("event_deliveries").columns(["subscription_id","status"]).execute(),await i.schema.createIndex("idx_deliveries_retry").on("event_deliveries").columns(["status","next_retry_at"]).execute()}async function _Mt(i){await i.schema.dropIndex("idx_deliveries_retry").execute(),await i.schema.dropIndex("idx_deliveries_subscription_status").execute(),await i.schema.dropIndex("idx_deliveries_event").execute(),await i.schema.dropIndex("idx_subscriptions_unique").execute(),await i.schema.dropIndex("idx_subscriptions_org_enabled").execute(),await i.schema.dropIndex("idx_subscriptions_type").execute(),await i.schema.dropIndex("idx_subscriptions_connection").execute(),await i.schema.dropIndex("idx_events_retry").execute(),await i.schema.dropIndex("idx_events_type").execute(),await i.schema.dropIndex("idx_events_source").execute(),await i.schema.dropIndex("idx_events_org_status").execute(),await i.schema.dropTable("event_deliveries").execute(),await i.schema.dropTable("event_subscriptions").execute(),await i.schema.dropTable("events").execute()}var neu=()=>{};var ebi={};Wi(ebi,{up:()=>nMt,down:()=>DMt});import{sql as vMt}from"kysely";async function nMt(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function DMt(i){await i.schema.createTable("audit_logs").ifNotExists().addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(vMt`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}var Deu=()=>{};var abi={};Wi(abi,{up:()=>gMt,down:()=>OMt});import{sql as j1i}from"kysely";async function gMt(i){await i.schema.createTable("gateways").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(u)=>u.notNull()).addColumn("description","text").addColumn("tool_selection_strategy","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("is_default","integer",(u)=>u.notNull().defaultTo(0)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(j1i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(j1i`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("updated_by","text").execute(),await i.schema.createTable("gateway_connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("gateway_id","text",(u)=>u.notNull().references("gateways.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("selected_tools","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(j1i`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_gateways_org").on("gateways").columns(["organization_id"]).execute(),await i.schema.createIndex("idx_gateways_org_status").on("gateways").columns(["organization_id","status"]).execute(),await j1i`CREATE UNIQUE INDEX idx_gateways_default_per_org ON gateways (organization_id) WHERE is_default = 1`.execute(i),await i.schema.createIndex("idx_gateway_connections_gateway").on("gateway_connections").columns(["gateway_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_connection").on("gateway_connections").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_unique").on("gateway_connections").columns(["gateway_id","connection_id"]).unique().execute()}async function OMt(i){await i.schema.dropIndex("idx_gateway_connections_unique").execute(),await i.schema.dropIndex("idx_gateway_connections_connection").execute(),await i.schema.dropIndex("idx_gateway_connections_gateway").execute(),await i.schema.dropIndex("idx_gateways_default_per_org").execute(),await i.schema.dropIndex("idx_gateways_org_status").execute(),await i.schema.dropIndex("idx_gateways_org").execute(),await i.schema.dropTable("gateway_connections").execute(),await i.schema.dropTable("gateways").execute()}var geu=()=>{};var obi={};Wi(obi,{up:()=>NMt,down:()=>yMt});async function NMt(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function yMt(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var sbi={};Wi(sbi,{up:()=>TMt,down:()=>ZMt});import{sql as K1i}from"kysely";async function TMt(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(u)=>u.notNull().defaultTo("inclusion")).execute(),await K1i`
84520
84520
  UPDATE gateways
84521
84521
  SET tool_selection_mode = CASE
@@ -86917,7 +86917,7 @@ Guidelines:
86917
86917
  }
86918
86918
  return { consoleLogs, errors, evaluateResult };
86919
86919
  }
86920
- `,D=await fetch(`${tT}/function?token=${encodeURIComponent(w)}`,{method:"POST",headers:{"Content-Type":"application/javascript"},body:n});if(!D.ok){let T=await D.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless function call failed (${D.status}): ${T}`,url:h.url}}let O=await D.json().catch(async()=>{return{error:`Browserless returned non-JSON response: ${(await D.text().catch(()=>"")).slice(0,200)}`}}),N=JSON.stringify(O,null,2);t.set(d.toolCallId,N);let y=xE(N);if(!("error"in O)&&y>T7&&f){let T=`inspect-pages/${crypto.randomUUID()}.json`;return await f.put(T,new TextEncoder().encode(N),{contentType:"application/json"}),{success:!0,uri:K6(T),preview:vd(N),url:h.url,tokenCount:y,consoleLogCount:O.consoleLogs?.length??0,errorCount:O.errors?.length??0,hasEvaluateResult:O.evaluateResult!=null}}return{success:!("error"in O),...O,url:h.url,tokenCount:y}}finally{i.write({type:"data-tool-metadata",id:d.toolCallId,data:{latencyMs:performance.now()-$}})}}})}function NMf(){return H0({description:"Search the web and synthesize a comprehensive research report. This tool is only available in cluster Decopilot.",inputSchema:ni(gMf),execute:async(i)=>{throw Error("web_search is only available in cluster Decopilot.")}})}function yMf(){return H0({description:"Record what the user is durably working toward (their goals/interests). This tool is only available in cluster Decopilot.",inputSchema:ni(OMf),execute:async(i)=>{throw Error("update_interests is only available in cluster Decopilot.")}})}function _j0(i){let{writer:u,toolOutputMap:t,objectStorage:f,pendingImages:l,imageTool:c,imageBackgroundDispatcher:E,includeUnavailableClusterOnlyTools:d}=i,$={user_ask:ZZi,todo_write:BZi,propose_plan:UZi,read_tool_output:jhi({toolOutputMap:t})};if(d)$.web_search=NMf(),$.update_interests=yMf();if(c)$.generate_image=Ao("generate_image",lT,Ahi(u,{...c,objectStorage:f}),E);if(process.env.BROWSERLESS_TOKEN){if($.scrape_url=hj0(u,{toolOutputMap:t,objectStorage:f,kind:"scrape"}),$.inspect_page=hj0(u,{toolOutputMap:t,objectStorage:f,kind:"inspect"}),l)$.take_screenshot=xhi(u,{objectStorage:f,toolOutputMap:t,pendingImages:l})}return $}var gMf,OMf;var vj0=g(()=>{Uf();icu();ucu();tcu();kD();cT();fcu();gMf=Uw.object({query:Uw.string().max(1e4).describe("The research query. Be specific about what information you need.")}),OMf=Uw.object({interests:Uw.array(Uw.object({title:Uw.string().max(120).describe("Short noun phrase, e.g. 'Learning Rust'"),summary:Uw.string().max(500).describe("One or two sentences of context, including any progress")})).max(10)})});function nj0(i){return{search_threads:H0({description:Ry.description,inputSchema:ni(Ry.inputSchema),execute:(u)=>Ry.execute(u,i)}),get_thread:H0({description:Cy.description,inputSchema:ni(Cy.inputSchema),execute:(u)=>Cy.execute(u,i)}),list_thread_messages:H0({description:My.description,inputSchema:ni(My.inputSchema),execute:(u)=>My.execute(u,i)})}}var Dj0=g(()=>{Uf();Ktu();Jtu();Ytu()});async function ZMf(i,u,t){let{provider:f,imageProvider:l,webSearchProvider:c,deepResearchProvider:E,organization:d,models:$,toolApprovalLevel:w="auto",isPlanMode:h=!1,toolOutputMap:_,pendingImages:v,passthroughClient:n,vmContext:D,htmlArtifactBuffer:O,taskId:N,agentId:y,onChildUsage:T,backgroundDispatcher:Z}=u,B={isPlanMode:h},F=t.auth?.user?.id,I=_j0({writer:i,toolOutputMap:_,passthroughClient:n,toolApprovalLevel:w,isPlanMode:h,objectStorage:t.objectStorage});if(F)I.update_interests=rS0({write:async(k)=>{await t.storage.interests.setForAgent(k.orgId,k.agentId,k.userId,{interests:k.interests})},orgId:d.id,agentId:y,userId:F});Object.assign(I,nj0(t));let S=gZi(w,!1,B)!==!1,A;if(D){let k=await Po(t,{virtualMcpId:D.virtualMcpId,branch:D.branch,userId:D.userId,syncTools:D.syncTools});A=QS0({fs:k,htmlArtifactBuffer:O,toolOutputMap:_,needsApproval:S,pendingImages:v,ctx:t,threadId:D.threadId,virtualMcpId:D.virtualMcpId}),Object.assign(I,A);let M=await CS0({ctx:t,orgId:d.id,virtualMcpId:D.virtualMcpId,userId:D.userId,threadId:D.threadId,writer:i});if(M)I.load_repo=M}if(f)I.subtask=Ao("subtask",s1u,p1u(i,{provider:f,organization:d,models:$,self:{id:y},needsApproval:gZi(w,!1,B)!==!1,onChildUsage:T,vmTools:A,parentBuiltInParams:u},t),Z);if(l&&$.image&&t.objectStorage)I.generate_image=Ao("generate_image",lT,eS0(i,{provider:l,imageModelInfo:$.image,objectStorage:t.objectStorage,allowHttpExternalUrls:yu().localMode}),Z);if(c&&$.webSearch){let k=ccu({provider:c,modelInfo:$.webSearch,ctx:t,mode:"quick",toolName:"web_search"});I.web_search=lcu(i,{researchJob:k,toolOutputMap:_,taskId:N})}if(E&&$.deepResearch){let k=ccu({provider:E,modelInfo:$.deepResearch,ctx:t,mode:"deep",toolName:"deep_research"});I.deep_research=lcu(i,{researchJob:k,toolOutputMap:_,taskId:N,description:"Run in-depth, multi-source research and synthesize a comprehensive, cited report. Use this when the user needs thorough analysis, a literature/market review, or a question that warrants exploring many "+"sources \u2014 accuracy and depth matter more than latency. For quick "+"lookups or fact-checks, use `web_search` instead."})}if(process.env.BROWSERLESS_TOKEN){let k={baseUrl:tT,token:process.env.BROWSERLESS_TOKEN};if(I.take_screenshot=fj0(i,{objectStorage:t.objectStorage,toolOutputMap:_,pendingImages:v}),t.objectStorage)I.scrape_url=Ej0(i,{browserless:k,objectStorage:t.objectStorage,toolOutputMap:_}),I.inspect_page=$j0(i,{browserless:k,objectStorage:t.objectStorage,toolOutputMap:_})}return I}function BMf(i,u,t){let f=u.organization.id,l=t.auth?.user?.id,c={};for(let[E,d]of Object.entries(i)){let $=d,w=$.execute;if(typeof w!=="function"){c[E]=d;continue}let h=TMf[E],_=w.constructor?.name==="AsyncGeneratorFunction",v=(D,O)=>{if(!f||!l)return;mu.capture({distinctId:l,event:"tool_called",groups:{organization:f},properties:{organization_id:f,tool_source:"builtin",tool_name:E,tool_safe_name:E,read_only:h?.readOnly??null,destructive:h?.destructive??null,idempotent:null,open_world:null,latency_ms:Math.round(D),is_error:O}})},n=_?async function*(D,O){let N=performance.now(),y=!1;try{yield*w.call($,D,O)}catch(T){throw y=!0,T}finally{v(performance.now()-N,y)}}:async(D,O)=>{let N=performance.now(),y=!1;try{return await w.call($,D,O)}catch(T){throw y=!0,T}finally{v(performance.now()-N,y)}};c[E]={...$,execute:n}}return c}async function IZi(i,u,t){let f=await ZMf(i,u,t),l=BMf(f,u,t);if(!u.isPlanMode){let{propose_plan:c,...E}=l;return E}return l}function gj0(i){let{ctx:u,writer:t,toolOutputMap:f,subtaskParams:l,planMode:c}=i,E={user_ask:ZZi,todo_write:BZi,propose_plan:UZi,read_tool_output:jhi({toolOutputMap:f})};if(l.provider)E.subtask=p1u(t,l,u);return E}var TMf;var Ecu=g(()=>{z4();NZi();kD();zS0();DZi();MS0();VS0();icu();ucu();mS0();tcu();aS0();fcu();cT();pS0();tj0();lj0();dj0();wj0();vj0();Dj0();vt();TMf={read_tool_output:{readOnly:!0,destructive:!1},read_resource:{readOnly:!0,destructive:!1},read_prompt:{readOnly:!0,destructive:!1},web_search:{readOnly:!0,destructive:!1},deep_research:{readOnly:!0,destructive:!1},generate_image:{readOnly:!1,destructive:!1},open_in_agent:{readOnly:!1,destructive:!1},subtask:{readOnly:!1,destructive:!1},user_ask:{readOnly:!0,destructive:!1},propose_plan:{readOnly:!0,destructive:!1},enable_tool:{readOnly:!0,destructive:!1},todo_write:{readOnly:!1,destructive:!1},update_interests:{readOnly:!1,destructive:!1},load_repo:{readOnly:!1,destructive:!0},search_threads:{readOnly:!0,destructive:!1},get_thread:{readOnly:!0,destructive:!1},list_thread_messages:{readOnly:!0,destructive:!1}}});async function Oj0(i){let u=new Map,{tools:t,nameMap:f}=await OZi(i.mcpClient,u,i.writer,i.toolApprovalLevel,{disableOutputTruncation:!1,isPlanMode:i.planMode,timeoutMs:Shi,resolveArgs:i.resolveArgs,onToolCalled:i.onToolCalled}),l=i.fullBuiltInParams?await IZi(i.writer,{...i.fullBuiltInParams,toolOutputMap:u},i.ctx):gj0({ctx:i.ctx,writer:i.writer,toolOutputMap:u,subtaskParams:i.subtaskParams,planMode:i.planMode}),c=i.kind==="subagent"?Object.fromEntries(Object.entries(l).filter(([d])=>!FMf.includes(d))):l;return{tools:{...t,...c},toolOutputMap:u,nameMap:f}}var FMf;var Nj0=g(()=>{NZi();Ecu();FMf=["subtask","user_ask","propose_plan"]});var xZi={};Wi(xZi,{waitForSeed:()=>GMf,seedLocalMode:()=>AMf,markSeedComplete:()=>kMf,isLocalMode:()=>W3,getLocalAdminUser:()=>xo,getLocalAdminPassword:()=>AZi});import{userInfo as UMf}from"os";async function AZi(){return yu().betterAuthSecret||"local-mode-default"}function yj0(){try{return UMf().username||"local"}catch{return"local"}}function PMf(i){return i.charAt(0).toUpperCase()+i.slice(1)}async function IMf(){let i=Ft(),u=await i.db.selectFrom("user").select(i.db.fn.countAll().as("count")).executeTakeFirst();return Number(u?.count??0)===0}async function AMf(){if(!await IMf())return!1;let u=yj0(),t=`${u}@localhost.mesh`,f=PMf(u),l=await AZi(),c=await $f.api.signUpEmail({body:{email:t,password:l,name:f}});if(!c?.user?.id)throw Error("Failed to create local admin user");let E=c.user.id,d=Ft();await d.db.updateTable("user").set({role:"admin"}).where("id","=",E).execute();let $=`${u}-local`.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),w=`${f} Local`;return await d.db.updateTable("organization").set({name:w,slug:$}).where("id","in",(h)=>h.selectFrom("member").select("organizationId").where("userId","=",E)).execute(),!0}async function xo(){let i=Ft(),u=`${yj0()}@localhost.mesh`;return i.db.selectFrom("user").where("email","=",u).selectAll().executeTakeFirst()}function W3(){return yu().localMode}function kMf(){Tj0()}function GMf(){return xMf}var Tj0,xMf;var z7=g(()=>{fE();vt();pv();xMf=new Promise((i)=>{if(Tj0=i,!W3())i()})});var Zj0=()=>{};function jMf(i){return i.type==="file"&&"mediaType"in i&&typeof i.mediaType==="string"&&SMf.has(i.mediaType)}function Ij0(i){let u=i.match(/^data:([^;]+);base64,(.+)$/s);if(!u)return null;let[,t,f]=u;try{let l=atob(f),c=new Uint8Array(l.length);for(let E=0;E<l.length;E++)c[E]=l.charCodeAt(E);return{mimeType:t,bytes:c}}catch{return null}}function dcu(i){return{"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp","image/svg+xml":"svg","application/pdf":"pdf","text/plain":"txt","text/html":"html","application/json":"json"}[i]??"bin"}async function KMf(i,u,t,f){if(!f.objectStorage)return null;try{return await f.objectStorage.put(u,i,{contentType:t}),u}catch(l){return console.error("[file-materializer] Failed to upload file:",l),null}}async function ko(i,u){if(!u.objectStorage)return null;try{return await u.objectStorage.presignedGetUrl(i,JMf)}catch(t){return console.error("[file-materializer] Failed to generate presigned URL:",t),null}}function Aj0(i){try{return decodeURIComponent(i)}catch{return i}}function Fj0(i,u){let t=typeof i.filename==="string"&&i.filename.trim()?i.filename:`attachment.${dcu(u)}`,f=t.match(XMf);if(f?.[1])t=Aj0(f[1]);return[...t.split(/[\\/]/).pop()??t].filter((E)=>(E.codePointAt(0)??0)>=32).join("").trim()||`attachment.${dcu(u)}`}function Uj0(i,u){if(!u.has(i))return u.add(i),i;let t=i.lastIndexOf("."),f=t>0?i.slice(0,t):i,l=t>0?i.slice(t):"";for(let c=2;;c++){let E=`${f} (${c})${l}`;if(!u.has(E))return u.add(E),E}}async function Pj0(i,u,t,f,l){if(!l||!f.orgFs)return console.warn("[file-materializer] uploads-volume write skipped",{hasThreadId:Boolean(l),hasOrgFs:Boolean(f.orgFs)}),null;try{let c=`${l}/${t}`;return await f.orgFs.write("uploads",c,i,{actor:f.auth?.user?.id??"unknown",contentType:u}),{key:_v("uploads",c),sandboxPath:`org/upload/${t}`}}catch(c){return console.error("[file-materializer] uploads-volume write failed:",c),null}}async function kZi(i,u,t){if(!u.organization)return i;let f=u.organization.slug;if(!f)return i;let l=i.findLastIndex((B)=>B.role==="user");if(l===-1)return i;let c=i[l],E=c.parts.filter((B)=>B.type==="file"&&("url"in B)&&typeof B.url==="string"&&B.url.startsWith("data:")),$=Boolean(t?.threadId&&u.orgFs)?c.parts.flatMap((B)=>{if(B.type!=="text"||!("text"in B)||typeof B.text!=="string")return[];let F=B.text.match(LMf);if(!F?.[1]||F[2]===void 0)return[];return[{name:Aj0(F[1]),content:F[2]}]}):[];if(E.length===0&&$.length===0)return i;let w=new Set,h=E.flatMap((B)=>{if(B.type!=="file"||!("url"in B)||typeof B.url!=="string")return[];let F=Ij0(B.url);if(!F)return[];let I=Uj0(Fj0(B,F.mimeType),w);return[{dataUrl:B.url,parsed:F,filename:I}]}),_=$.map(({name:B,content:F})=>({filename:Uj0(Fj0({filename:B},"text/plain"),w),content:F})),n=(await Promise.all([...h.map(async({dataUrl:B,parsed:F,filename:I})=>{let S=await Pj0(F.bytes,F.mimeType,I,u,t?.threadId);if(!S)return null;return{dataUrl:B,meshStorageUrl:K6(S.key),redirectUrl:GL(u.baseUrl,f,S.key),filename:I,sandboxPath:S.sandboxPath}}),..._.map(async({filename:B,content:F})=>{let I=await Pj0(new TextEncoder().encode(F),Qc(B),B,u,t?.threadId);if(!I)return null;return{dataUrl:null,meshStorageUrl:K6(I.key),redirectUrl:GL(u.baseUrl,f,I.key),filename:B,sandboxPath:I.sandboxPath}})])).filter((B)=>B!==null);if(n.length===0)return i;let D=n.map((B)=>B.sandboxPath?`- ${B.filename}: ${B.sandboxPath} (tool URL: ${B.meshStorageUrl})`:`- ${B.filename}: ${B.meshStorageUrl}`).join(`
86920
+ `,D=await fetch(`${tT}/function?token=${encodeURIComponent(w)}`,{method:"POST",headers:{"Content-Type":"application/javascript"},body:n});if(!D.ok){let T=await D.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless function call failed (${D.status}): ${T}`,url:h.url}}let O=await D.json().catch(async()=>{return{error:`Browserless returned non-JSON response: ${(await D.text().catch(()=>"")).slice(0,200)}`}}),N=JSON.stringify(O,null,2);t.set(d.toolCallId,N);let y=xE(N);if(!("error"in O)&&y>T7&&f){let T=`inspect-pages/${crypto.randomUUID()}.json`;return await f.put(T,new TextEncoder().encode(N),{contentType:"application/json"}),{success:!0,uri:K6(T),preview:vd(N),url:h.url,tokenCount:y,consoleLogCount:O.consoleLogs?.length??0,errorCount:O.errors?.length??0,hasEvaluateResult:O.evaluateResult!=null}}return{success:!("error"in O),...O,url:h.url,tokenCount:y}}finally{i.write({type:"data-tool-metadata",id:d.toolCallId,data:{latencyMs:performance.now()-$}})}}})}function NMf(){return H0({description:"Search the web and synthesize a comprehensive research report. This tool is only available in cluster Decopilot.",inputSchema:ni(gMf),execute:async(i)=>{throw Error("web_search is only available in cluster Decopilot.")}})}function yMf(){return H0({description:"Record what the user is durably working toward (their goals/interests). This tool is only available in cluster Decopilot.",inputSchema:ni(OMf),execute:async(i)=>{throw Error("update_interests is only available in cluster Decopilot.")}})}function _j0(i){let{writer:u,toolOutputMap:t,objectStorage:f,pendingImages:l,imageTool:c,imageBackgroundDispatcher:E,includeUnavailableClusterOnlyTools:d}=i,$={user_ask:ZZi,todo_write:BZi,propose_plan:UZi,read_tool_output:jhi({toolOutputMap:t})};if(d)$.web_search=NMf(),$.update_interests=yMf();if(c)$.generate_image=Ao("generate_image",lT,Ahi(u,{...c,objectStorage:f}),E);if(process.env.BROWSERLESS_TOKEN){if($.scrape_url=hj0(u,{toolOutputMap:t,objectStorage:f,kind:"scrape"}),$.inspect_page=hj0(u,{toolOutputMap:t,objectStorage:f,kind:"inspect"}),l)$.take_screenshot=xhi(u,{objectStorage:f,toolOutputMap:t,pendingImages:l})}return $}var gMf,OMf;var vj0=g(()=>{Uf();icu();ucu();tcu();kD();cT();fcu();gMf=Uw.object({query:Uw.string().max(1e4).describe("The research query. Be specific about what information you need.")}),OMf=Uw.object({interests:Uw.array(Uw.object({title:Uw.string().max(120).describe("Short noun phrase, e.g. 'Learning Rust'"),summary:Uw.string().max(500).describe("One or two sentences of context, including any progress")})).max(10)})});function nj0(i){return{search_threads:H0({description:Ry.description,inputSchema:ni(Ry.inputSchema),execute:(u)=>Ry.execute(u,i)}),get_thread:H0({description:Cy.description,inputSchema:ni(Cy.inputSchema),execute:(u)=>Cy.execute(u,i)}),list_thread_messages:H0({description:My.description,inputSchema:ni(My.inputSchema),execute:(u)=>My.execute(u,i)})}}var Dj0=g(()=>{Uf();Ktu();Jtu();Ytu()});async function ZMf(i,u,t){let{provider:f,imageProvider:l,webSearchProvider:c,deepResearchProvider:E,organization:d,models:$,toolApprovalLevel:w="auto",isPlanMode:h=!1,toolOutputMap:_,pendingImages:v,passthroughClient:n,vmContext:D,htmlArtifactBuffer:O,taskId:N,agentId:y,onChildUsage:T,backgroundDispatcher:Z}=u,B={isPlanMode:h},F=t.auth?.user?.id,I=_j0({writer:i,toolOutputMap:_,passthroughClient:n,toolApprovalLevel:w,isPlanMode:h,objectStorage:t.objectStorage});if(F)I.update_interests=rS0({write:async(k)=>{await t.storage.interests.setForAgent(k.orgId,k.agentId,k.userId,{interests:k.interests})},orgId:d.id,agentId:y,userId:F});Object.assign(I,nj0(t));let S=gZi(w,!1,B)!==!1,A;if(D){let k=await Po(t,{virtualMcpId:D.virtualMcpId,branch:D.branch,userId:D.userId,syncTools:D.syncTools});A=QS0({fs:k,htmlArtifactBuffer:O,toolOutputMap:_,needsApproval:S,pendingImages:v,ctx:t,threadId:D.threadId,virtualMcpId:D.virtualMcpId}),Object.assign(I,A);let M=await CS0({ctx:t,orgId:d.id,virtualMcpId:D.virtualMcpId,userId:D.userId,threadId:D.threadId,writer:i});if(M)I.load_repo=M}if(f)I.subtask=Ao("subtask",s1u,p1u(i,{provider:f,organization:d,models:$,self:{id:y},needsApproval:gZi(w,!1,B)!==!1,onChildUsage:T,vmTools:A,parentBuiltInParams:u},t),Z);if(l&&$.image&&t.objectStorage)I.generate_image=Ao("generate_image",lT,eS0(i,{provider:l,imageModelInfo:$.image,objectStorage:t.objectStorage,allowHttpExternalUrls:yu().localMode}),Z);if(c&&$.webSearch){let k=ccu({provider:c,modelInfo:$.webSearch,ctx:t,mode:"quick",toolName:"web_search"});I.web_search=lcu(i,{researchJob:k,toolOutputMap:_,taskId:N})}if(E&&$.deepResearch){let k=ccu({provider:E,modelInfo:$.deepResearch,ctx:t,mode:"deep",toolName:"deep_research"});I.deep_research=lcu(i,{researchJob:k,toolOutputMap:_,taskId:N,description:"Run in-depth, multi-source research and synthesize a comprehensive, cited report. Use this when the user needs thorough analysis, a literature/market review, or a question that warrants exploring many "+"sources \u2014 accuracy and depth matter more than latency. For quick "+"lookups or fact-checks, use `web_search` instead."})}if(process.env.BROWSERLESS_TOKEN){let k={baseUrl:tT,token:process.env.BROWSERLESS_TOKEN};if(I.take_screenshot=fj0(i,{objectStorage:t.objectStorage,toolOutputMap:_,pendingImages:v}),t.objectStorage)I.scrape_url=Ej0(i,{browserless:k,objectStorage:t.objectStorage,toolOutputMap:_}),I.inspect_page=$j0(i,{browserless:k,objectStorage:t.objectStorage,toolOutputMap:_})}return I}function BMf(i,u,t){let f=u.organization.id,l=t.auth?.user?.id,c={};for(let[E,d]of Object.entries(i)){let $=d,w=$.execute;if(typeof w!=="function"){c[E]=d;continue}let h=TMf[E],_=w.constructor?.name==="AsyncGeneratorFunction",v=(D,O)=>{if(!f||!l)return;mu.capture({distinctId:l,event:"tool_called",groups:{organization:f},properties:{organization_id:f,tool_source:"builtin",tool_name:E,tool_safe_name:E,read_only:h?.readOnly??null,destructive:h?.destructive??null,idempotent:null,open_world:null,latency_ms:Math.round(D),is_error:O}})},n=_?async function*(D,O){let N=performance.now(),y=!1;try{yield*w.call($,D,O)}catch(T){throw y=!0,T}finally{v(performance.now()-N,y)}}:async(D,O)=>{let N=performance.now(),y=!1;try{return await w.call($,D,O)}catch(T){throw y=!0,T}finally{v(performance.now()-N,y)}};c[E]={...$,execute:n}}return c}async function IZi(i,u,t){let f=await ZMf(i,u,t),l=BMf(f,u,t);if(!u.isPlanMode){let{propose_plan:c,...E}=l;return E}return l}function gj0(i){let{ctx:u,writer:t,toolOutputMap:f,subtaskParams:l,planMode:c}=i,E={user_ask:ZZi,todo_write:BZi,read_tool_output:jhi({toolOutputMap:f})};if(c)E.propose_plan=UZi;if(l.provider)E.subtask=p1u(t,l,u);return E}var TMf;var Ecu=g(()=>{z4();NZi();kD();zS0();DZi();MS0();VS0();icu();ucu();mS0();tcu();aS0();fcu();cT();pS0();tj0();lj0();dj0();wj0();vj0();Dj0();vt();TMf={read_tool_output:{readOnly:!0,destructive:!1},read_resource:{readOnly:!0,destructive:!1},read_prompt:{readOnly:!0,destructive:!1},web_search:{readOnly:!0,destructive:!1},deep_research:{readOnly:!0,destructive:!1},generate_image:{readOnly:!1,destructive:!1},open_in_agent:{readOnly:!1,destructive:!1},subtask:{readOnly:!1,destructive:!1},user_ask:{readOnly:!0,destructive:!1},propose_plan:{readOnly:!0,destructive:!1},enable_tool:{readOnly:!0,destructive:!1},todo_write:{readOnly:!1,destructive:!1},update_interests:{readOnly:!1,destructive:!1},load_repo:{readOnly:!1,destructive:!0},search_threads:{readOnly:!0,destructive:!1},get_thread:{readOnly:!0,destructive:!1},list_thread_messages:{readOnly:!0,destructive:!1}}});async function Oj0(i){let u=new Map,{tools:t,nameMap:f}=await OZi(i.mcpClient,u,i.writer,i.toolApprovalLevel,{disableOutputTruncation:!1,isPlanMode:i.planMode,timeoutMs:Shi,resolveArgs:i.resolveArgs,onToolCalled:i.onToolCalled}),l=i.fullBuiltInParams?await IZi(i.writer,{...i.fullBuiltInParams,toolOutputMap:u},i.ctx):gj0({ctx:i.ctx,writer:i.writer,toolOutputMap:u,subtaskParams:i.subtaskParams,planMode:i.planMode}),c=i.kind==="subagent"?Object.fromEntries(Object.entries(l).filter(([d])=>!FMf.includes(d))):l;return{tools:{...t,...c},toolOutputMap:u,nameMap:f}}var FMf;var Nj0=g(()=>{NZi();Ecu();FMf=["subtask","user_ask","propose_plan"]});var xZi={};Wi(xZi,{waitForSeed:()=>GMf,seedLocalMode:()=>AMf,markSeedComplete:()=>kMf,isLocalMode:()=>W3,getLocalAdminUser:()=>xo,getLocalAdminPassword:()=>AZi});import{userInfo as UMf}from"os";async function AZi(){return yu().betterAuthSecret||"local-mode-default"}function yj0(){try{return UMf().username||"local"}catch{return"local"}}function PMf(i){return i.charAt(0).toUpperCase()+i.slice(1)}async function IMf(){let i=Ft(),u=await i.db.selectFrom("user").select(i.db.fn.countAll().as("count")).executeTakeFirst();return Number(u?.count??0)===0}async function AMf(){if(!await IMf())return!1;let u=yj0(),t=`${u}@localhost.mesh`,f=PMf(u),l=await AZi(),c=await $f.api.signUpEmail({body:{email:t,password:l,name:f}});if(!c?.user?.id)throw Error("Failed to create local admin user");let E=c.user.id,d=Ft();await d.db.updateTable("user").set({role:"admin"}).where("id","=",E).execute();let $=`${u}-local`.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),w=`${f} Local`;return await d.db.updateTable("organization").set({name:w,slug:$}).where("id","in",(h)=>h.selectFrom("member").select("organizationId").where("userId","=",E)).execute(),!0}async function xo(){let i=Ft(),u=`${yj0()}@localhost.mesh`;return i.db.selectFrom("user").where("email","=",u).selectAll().executeTakeFirst()}function W3(){return yu().localMode}function kMf(){Tj0()}function GMf(){return xMf}var Tj0,xMf;var z7=g(()=>{fE();vt();pv();xMf=new Promise((i)=>{if(Tj0=i,!W3())i()})});var Zj0=()=>{};function jMf(i){return i.type==="file"&&"mediaType"in i&&typeof i.mediaType==="string"&&SMf.has(i.mediaType)}function Ij0(i){let u=i.match(/^data:([^;]+);base64,(.+)$/s);if(!u)return null;let[,t,f]=u;try{let l=atob(f),c=new Uint8Array(l.length);for(let E=0;E<l.length;E++)c[E]=l.charCodeAt(E);return{mimeType:t,bytes:c}}catch{return null}}function dcu(i){return{"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp","image/svg+xml":"svg","application/pdf":"pdf","text/plain":"txt","text/html":"html","application/json":"json"}[i]??"bin"}async function KMf(i,u,t,f){if(!f.objectStorage)return null;try{return await f.objectStorage.put(u,i,{contentType:t}),u}catch(l){return console.error("[file-materializer] Failed to upload file:",l),null}}async function ko(i,u){if(!u.objectStorage)return null;try{return await u.objectStorage.presignedGetUrl(i,JMf)}catch(t){return console.error("[file-materializer] Failed to generate presigned URL:",t),null}}function Aj0(i){try{return decodeURIComponent(i)}catch{return i}}function Fj0(i,u){let t=typeof i.filename==="string"&&i.filename.trim()?i.filename:`attachment.${dcu(u)}`,f=t.match(XMf);if(f?.[1])t=Aj0(f[1]);return[...t.split(/[\\/]/).pop()??t].filter((E)=>(E.codePointAt(0)??0)>=32).join("").trim()||`attachment.${dcu(u)}`}function Uj0(i,u){if(!u.has(i))return u.add(i),i;let t=i.lastIndexOf("."),f=t>0?i.slice(0,t):i,l=t>0?i.slice(t):"";for(let c=2;;c++){let E=`${f} (${c})${l}`;if(!u.has(E))return u.add(E),E}}async function Pj0(i,u,t,f,l){if(!l||!f.orgFs)return console.warn("[file-materializer] uploads-volume write skipped",{hasThreadId:Boolean(l),hasOrgFs:Boolean(f.orgFs)}),null;try{let c=`${l}/${t}`;return await f.orgFs.write("uploads",c,i,{actor:f.auth?.user?.id??"unknown",contentType:u}),{key:_v("uploads",c),sandboxPath:`org/upload/${t}`}}catch(c){return console.error("[file-materializer] uploads-volume write failed:",c),null}}async function kZi(i,u,t){if(!u.organization)return i;let f=u.organization.slug;if(!f)return i;let l=i.findLastIndex((B)=>B.role==="user");if(l===-1)return i;let c=i[l],E=c.parts.filter((B)=>B.type==="file"&&("url"in B)&&typeof B.url==="string"&&B.url.startsWith("data:")),$=Boolean(t?.threadId&&u.orgFs)?c.parts.flatMap((B)=>{if(B.type!=="text"||!("text"in B)||typeof B.text!=="string")return[];let F=B.text.match(LMf);if(!F?.[1]||F[2]===void 0)return[];return[{name:Aj0(F[1]),content:F[2]}]}):[];if(E.length===0&&$.length===0)return i;let w=new Set,h=E.flatMap((B)=>{if(B.type!=="file"||!("url"in B)||typeof B.url!=="string")return[];let F=Ij0(B.url);if(!F)return[];let I=Uj0(Fj0(B,F.mimeType),w);return[{dataUrl:B.url,parsed:F,filename:I}]}),_=$.map(({name:B,content:F})=>({filename:Uj0(Fj0({filename:B},"text/plain"),w),content:F})),n=(await Promise.all([...h.map(async({dataUrl:B,parsed:F,filename:I})=>{let S=await Pj0(F.bytes,F.mimeType,I,u,t?.threadId);if(!S)return null;return{dataUrl:B,meshStorageUrl:K6(S.key),redirectUrl:GL(u.baseUrl,f,S.key),filename:I,sandboxPath:S.sandboxPath}}),..._.map(async({filename:B,content:F})=>{let I=await Pj0(new TextEncoder().encode(F),Qc(B),B,u,t?.threadId);if(!I)return null;return{dataUrl:null,meshStorageUrl:K6(I.key),redirectUrl:GL(u.baseUrl,f,I.key),filename:B,sandboxPath:I.sandboxPath}})])).filter((B)=>B!==null);if(n.length===0)return i;let D=n.map((B)=>B.sandboxPath?`- ${B.filename}: ${B.sandboxPath} (tool URL: ${B.meshStorageUrl})`:`- ${B.filename}: ${B.meshStorageUrl}`).join(`
86921
86921
  `),O=n.some((B)=>B.sandboxPath)?`[Attached files \u2014 already inside your sandbox; read them at the given path. The tool URL is only for tools that take a URL argument]
86922
86922
  ${D}`:`[Uploaded files \u2014 use these URLs when calling tools]
86923
86923
  ${D}`,N=new Map(n.flatMap((B)=>B.dataUrl?[[B.dataUrl,B.meshStorageUrl]]:[])),y=c.parts.map((B)=>{if(B.type!=="file"||!("url"in B)||typeof B.url!=="string")return B;let F=N.get(B.url);if(!F)return B;return{...B,url:F}}),T=y.findIndex((B)=>B.type==="text"),Z;if(T!==-1)Z=y.map((B,F)=>{if(F!==T||B.type!=="text")return B;return{...B,text:`${O}