@openhands/agent-canvas 1.7.1 → 1.8.0

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 (354) hide show
  1. package/README.md +1 -1
  2. package/README.windows.md +2 -2
  3. package/build/assets/{Trans-DP5rcauH.js → Trans-B7lYw4uD.js} +1 -1
  4. package/build/assets/{acp-providers-BHKZvEm5.js → acp-providers-WUD4tfSq.js} +1 -1
  5. package/build/assets/active-backend-context-mY7Gff5c.js +2 -0
  6. package/build/assets/{agent-context-settings-BwAakl29.js → agent-context-settings-BTUmWEzL.js} +1 -1
  7. package/build/assets/{agent-profiles-settings-BYU6aWus.js → agent-profiles-settings-Ilqid_R5.js} +1 -1
  8. package/build/assets/agent-server-conversation-service.api-C_7YnjzP.js +41 -0
  9. package/build/assets/{agent-settings-DEPFl5hR.js → agent-settings-BGTyoT6X.js} +2 -2
  10. package/build/assets/agent-settings-CxfT4ksO.js +1 -0
  11. package/build/assets/{alert-banner-C1nzoXBC.js → alert-banner-eRyIwDyU.js} +1 -1
  12. package/build/assets/api-key-entry-screen-JOx3SH1-.js +1 -0
  13. package/build/assets/app-settings-D53QZy5p.js +1 -0
  14. package/build/assets/automation-detail-nEflClmc.js +2 -0
  15. package/build/assets/{automation-export-Ca2ehC-k.js → automation-export-BO_kfqC8.js} +1 -1
  16. package/build/assets/{automations-list-ZHQSW8qD.js → automations-list-BYncC7gv.js} +1 -1
  17. package/build/assets/{back-nav-button-Be_L157B.js → back-nav-button-C02hGa8t.js} +1 -1
  18. package/build/assets/backend-form-modal-CKrBF80P.js +1 -0
  19. package/build/assets/{backend-synced-settings-badge-DdUfuSN8.js → backend-synced-settings-badge-CQ9xtNWm.js} +1 -1
  20. package/build/assets/{badge-B6q3sVom.js → badge-CzXbf7tR.js} +1 -1
  21. package/build/assets/{base-modal-CSHhJTSr.js → base-modal-DkVyzFMt.js} +1 -1
  22. package/build/assets/{brand-button-CQO8oqVo.js → brand-button-BUlDL-mz.js} +1 -1
  23. package/build/assets/{browser-BUDJnBg4.js → browser-3QjrEr1D.js} +1 -1
  24. package/build/assets/{browser-tab-Cir7KbAL.js → browser-tab-BijpUbdt.js} +1 -1
  25. package/build/assets/{chat-send-button-D4614wUz.js → chat-send-button-BKsVjhtA.js} +1 -1
  26. package/build/assets/check-CrxQfJZ2.js +1 -0
  27. package/build/assets/chevron-down-D_LsyTA7.js +1 -0
  28. package/build/assets/circle-check-DZn9HkLE.js +1 -0
  29. package/build/assets/{circle-plus-check-toggle-E3Ecb_gg.js → circle-plus-check-toggle-DdjUiOo1.js} +1 -1
  30. package/build/assets/cloud-funnel-analytics-NlmDoeo2.js +1 -0
  31. package/build/assets/{combobox-caret-C8_eGdp2.js → combobox-caret-Dl9UtvD6.js} +1 -1
  32. package/build/assets/{command-menu-N_BriUy8.js → command-menu-CvLPs7dg.js} +1 -1
  33. package/build/assets/{condenser-settings-jNGOKFGz.js → condenser-settings-C4Y9CzQV.js} +1 -1
  34. package/build/assets/{confirmation-modal-gZtbojCm.js → confirmation-modal-CRBJSllP.js} +1 -1
  35. package/build/assets/{context-menu-list-item-BTHGFhIx.js → context-menu-list-item-FGaafXGh.js} +1 -1
  36. package/build/assets/conversation-D_ORtpKC.js +1 -0
  37. package/build/assets/conversation-Dpc5nmGi.js +90 -0
  38. package/build/assets/conversation-panel-D_ORtpKC.js +1 -0
  39. package/build/assets/conversation-state-store-CGRQemtx.js +1 -0
  40. package/build/assets/{conversation-tab-empty-state-BCMHkGQk.js → conversation-tab-empty-state-CDjvNgpG.js} +1 -1
  41. package/build/assets/{copy-B8Y5ufoR.js → copy-Drwu97Gx.js} +1 -1
  42. package/build/assets/{copy-to-clipboard-button-C4l3CMSd.js → copy-to-clipboard-button-NbN1clVr.js} +1 -1
  43. package/build/assets/{device-verify-C_M7Z8xs.js → device-verify-CDm_WrVu.js} +1 -1
  44. package/build/assets/{dropdown-classes-DQlj-MpS.js → dropdown-classes-CqA2BTCL.js} +1 -1
  45. package/build/assets/{entry.client-CCrlta8r.js → entry.client-BO2KQj0y.js} +2 -2
  46. package/build/assets/{enum-filter-dropdown-paB-lFSP.js → enum-filter-dropdown-DSqPZnsD.js} +1 -1
  47. package/build/assets/{environment-switch-overlay-D0FgCMqs.js → environment-switch-overlay-mGl2pqqx.js} +1 -1
  48. package/build/assets/extensions-hub-Br3Lgynp.js +1 -0
  49. package/build/assets/extensions-navigation-BQmstKDZ.js +1 -0
  50. package/build/assets/{external-link-Cnnd6ikC.js → external-link-D9B2QMPf.js} +1 -1
  51. package/build/assets/files-tab-4c9HFSLo.js +1 -0
  52. package/build/assets/{form-control-classes-CSPevi7c.js → form-control-classes-CtVAktAy.js} +1 -1
  53. package/build/assets/{format-time-delta-DuhE50B-.js → format-time-delta-DICE64sz.js} +1 -1
  54. package/build/assets/git-provider-icon-0PqmIS_S.js +1 -0
  55. package/build/assets/{highlighted-source-view-suUKd5if.js → highlighted-source-view-KMsA9c4a.js} +1 -1
  56. package/build/assets/home-D9JsyEmE.js +1 -0
  57. package/build/assets/{home-BZclW6kd.js → home-TFhnmZLx.js} +1 -1
  58. package/build/assets/index-home-D9JsyEmE.js +1 -0
  59. package/build/assets/install-server-modal-BgGRnqA0.js +1 -0
  60. package/build/assets/{launch-Bik37u9Y.js → launch-DjkKw55l.js} +1 -1
  61. package/build/assets/{list-todo-_BXQzOiB.js → list-todo-BpAf7aOT.js} +1 -1
  62. package/build/assets/{llm-not-configured-banner-znJFsW_O.js → llm-not-configured-banner-Y4W9-sar.js} +4 -4
  63. package/build/assets/llm-settings-D8zNkIlP.js +1 -0
  64. package/build/assets/llm-settings-nPwv7hKu.js +1 -0
  65. package/build/assets/{llm-subscription-service-_QUsVybQ.js → llm-subscription-service-COTgZc1C.js} +1 -1
  66. package/build/assets/loader-circle-CGD6-Vak.js +1 -0
  67. package/build/assets/{loading-spinner-CcpnCr_d.js → loading-spinner-DRFyh6Iy.js} +1 -1
  68. package/build/assets/manage-backends-modal-DiRWE3tJ.js +1 -0
  69. package/build/assets/manifest-1cf33a7b.js +1 -0
  70. package/build/assets/markdown-renderer-U40HF0Ak.js +8 -0
  71. package/build/assets/mcp-xDMaHzOw.js +9 -0
  72. package/build/assets/{messages-CYztjKLQ.js → messages-CdNfZPgd.js} +2 -2
  73. package/build/assets/{modal-body-DQhiw-AR.js → modal-body-C3bGicn4.js} +1 -1
  74. package/build/assets/{modal-classes-YaEEa5eZ.js → modal-classes-DFFO6BMU.js} +1 -1
  75. package/build/assets/{modal-close-button-turIYn0t.js → modal-close-button-vxkAIRyZ.js} +1 -1
  76. package/build/assets/{onboarding-9pEMFGtN.js → onboarding-DWuFieEA.js} +1 -1
  77. package/build/assets/onboarding-modal-C8m72Dpb.js +1 -0
  78. package/build/assets/organization-service.api-CQ73CB-S.js +1 -0
  79. package/build/assets/{pencil-8_lvWDoZ.js → pencil-DzW2GB2M.js} +1 -1
  80. package/build/assets/{planner-tab-Dr8B-ZBI.js → planner-tab-YG0bGxDY.js} +1 -1
  81. package/build/assets/plugins-management-service-ijhH8OSh.js +1 -0
  82. package/build/assets/plus-CTGLo3aa.js +1 -0
  83. package/build/assets/profiles-service.api-C32pPm70.js +1 -0
  84. package/build/assets/providers-DuSn9s2i.js +1 -0
  85. package/build/assets/proxy-BiyDhMBd.js +1 -0
  86. package/build/assets/{puzzle-DXWdfaa7.js → puzzle-DlqT0yvr.js} +1 -1
  87. package/build/assets/{recommended-automations-launcher-Dye8Li08.js → recommended-automations-launcher-Dru1yN46.js} +2 -2
  88. package/build/assets/{refresh-cw-D7CYLy-d.js → refresh-cw-Br5254f4.js} +1 -1
  89. package/build/assets/root-DOLLQteU.js +2 -0
  90. package/build/assets/root-layout-xmylWoew.js +3 -0
  91. package/build/assets/schema-field-htfNouTG.js +1 -0
  92. package/build/assets/{sdk-section-page-Di5mT86Y.js → sdk-section-page-D0K1dBQY.js} +1 -1
  93. package/build/assets/search-BrpWXWUi.js +1 -0
  94. package/build/assets/secrets-service-Dbv5Zb8G.js +1 -0
  95. package/build/assets/{secrets-settings-DPlA3moO.js → secrets-settings-Da4SSaX9.js} +1 -1
  96. package/build/assets/{segmented-toggle-DbbD3Tve.js → segmented-toggle-CZKOdIly.js} +1 -1
  97. package/build/assets/settings-F4a09IxY.js +1 -0
  98. package/build/assets/{settings-dropdown-input-Dx6vlkgf.js → settings-dropdown-input-jOiv5Yrk.js} +1 -1
  99. package/build/assets/{settings-index-D5dDKrDt.js → settings-index-CyJBf5NA.js} +1 -1
  100. package/build/assets/{settings-input-BjW_zyTN.js → settings-input-BEaTCem1.js} +1 -1
  101. package/build/assets/{settings-list-classes-gQdBahdt.js → settings-list-classes-VqMzkYYt.js} +1 -1
  102. package/build/assets/{settings-modal-DsJk2THd.js → settings-modal-C-S1NpbC.js} +1 -1
  103. package/build/assets/settings-service.api-CTJRrvMu.js +1 -0
  104. package/build/assets/{settings-switch-UNSf8K8I.js → settings-switch-B405oU_v.js} +1 -1
  105. package/build/assets/{shared-conversation-DU1kwDTF.js → shared-conversation-BvWtTwES.js} +1 -1
  106. package/build/assets/{sidebar-layout-DXHtbEj1.js → sidebar-layout-BGMuyC86.js} +1 -1
  107. package/build/assets/{sidebar-mobile-menu-toggle-BlmI8OrA.js → sidebar-mobile-menu-toggle-xiKoUfGa.js} +1 -1
  108. package/build/assets/{sidebar-nav-link-pvUivfK2.js → sidebar-nav-link-DA4_ct9G.js} +1 -1
  109. package/build/assets/{sidebar-store-DwrYKwYr.js → sidebar-store-FRJ3rADB.js} +1 -1
  110. package/build/assets/{skill-card-pill-row-D7XCz5uk.js → skill-card-pill-row-BMdhr_sd.js} +1 -1
  111. package/build/assets/{skill-icon-badge-HqBWZ2Eq.js → skill-icon-badge-CGUkgcVH.js} +1 -1
  112. package/build/assets/{skills-plugins-YJSV6A0M.js → skills-plugins-C5eJnyft.js} +1 -1
  113. package/build/assets/{skills-settings-BbREHv_-.js → skills-settings-pUxMr6WZ.js} +1 -1
  114. package/build/assets/{styled-tooltip-DsjDnR_W.js → styled-tooltip-B3kIdVyH.js} +1 -1
  115. package/build/assets/{task-list-tab-Dzim5ftn.js → task-list-tab-B3k4W1cK.js} +1 -1
  116. package/build/assets/{terminal-CYFAMiXx.js → terminal-CBI_41Zc.js} +1 -1
  117. package/build/assets/{toggle-switch-BptY3XRG.js → toggle-switch-DYRr9CAR.js} +1 -1
  118. package/build/assets/{trash-2-Bq4lHbTB.js → trash-2-gZPlx23R.js} +1 -1
  119. package/build/assets/{typography-C6fuRTTT.js → typography-B1UxuuEC.js} +1 -1
  120. package/build/assets/{use-acp-credential-form-CuBXKNvP.js → use-acp-credential-form-CjSvKWFH.js} +1 -1
  121. package/build/assets/use-activate-agent-profile-DCRf47e-.js +1 -0
  122. package/build/assets/use-agent-profiles-DmT9zxAN.js +1 -0
  123. package/build/assets/{use-can-manage-org-profiles-Uai-HHx2.js → use-can-manage-org-profiles-vBiP7rHF.js} +1 -1
  124. package/build/assets/use-cloud-current-user-id-BMq9gw93.js +1 -0
  125. package/build/assets/use-config-C959QcRC.js +1 -0
  126. package/build/assets/{use-create-conversation-DzcM79TE.js → use-create-conversation-CakhLF0X.js} +1 -1
  127. package/build/assets/{use-create-secret-2YLjoQw-.js → use-create-secret-RT4QtSS9.js} +1 -1
  128. package/build/assets/use-llm-profiles-CdaxVpyY.js +1 -0
  129. package/build/assets/use-onboarding-completion-CJU4MNAY.js +1 -0
  130. package/build/assets/use-plugins-marketplace-D-93nqtJ.js +1 -0
  131. package/build/assets/{use-save-agent-profile-Q2M72WgR.js → use-save-agent-profile-DGJ3-u0M.js} +1 -1
  132. package/build/assets/{use-save-settings-BZK7zVsK.js → use-save-settings--C6LZXfI.js} +1 -1
  133. package/build/assets/use-settings-DIAo5KFk.js +1 -0
  134. package/build/assets/use-settings-nav-items-DPK5sxvR.js +16 -0
  135. package/build/assets/use-skills-D_mLhYNa.js +1 -0
  136. package/build/assets/use-tracking-COqZLobY.js +1 -0
  137. package/build/assets/{use-user-conversation-43duhf7D.js → use-user-conversation-DhcAEyJX.js} +1 -1
  138. package/build/assets/{useMutation-DyQXZFEF.js → useMutation-DHLpZ6J0.js} +1 -1
  139. package/build/assets/utils-DsWhWn2F.js +1 -0
  140. package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g4xrpilz-CJ7amdtQ.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g4xrpilz-CYPMCkX1.js} +1 -1
  141. package/build/assets/{vendor~files-tab-vm3f67Pz.js → vendor~files-tab-atebg0iG.js} +1 -1
  142. package/build/assets/{vendor~index-home~home~conversation-panel~conversation-kX4LrGQC.js → vendor~index-home~home~conversation-panel~conversation-G9DMrR7m.js} +1 -1
  143. package/build/assets/{vendor~root-layout~conversation-panel~conversation-DpA6fir3.js → vendor~root-layout~conversation-panel~conversation-DEhW1h3I.js} +1 -1
  144. package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation-EShpjxey.js → vendor~root-layout~index-home~home~conversation-panel~conversation-Acmf1sKj.js} +1 -1
  145. package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-DD_UNO02.js → vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-CmzCY1BT.js} +1 -1
  146. package/build/assets/{vendor~root-layout~index-home~home~mcp~automations-list~onboarding-modal-Be63Q2Ln.js → vendor~root-layout~index-home~home~mcp~automations-list~onboarding-modal-C7Yh77RT.js} +1 -1
  147. package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~bi2r7bko-Bw4AuHN1.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~bi2r7bko-VFnwct3q.js} +1 -1
  148. package/build/assets/{verification-settings-B4DL3Tez.js → verification-settings-Vr5cN4md.js} +1 -1
  149. package/build/assets/x-Dx_JbpHA.js +1 -0
  150. package/build/favicon-16x16.png +0 -0
  151. package/build/favicon-32x32.png +0 -0
  152. package/build/favicon.ico +0 -0
  153. package/build/index.html +4 -4
  154. package/build/locales/ar/openhands.json +2 -0
  155. package/build/locales/ca/openhands.json +2 -0
  156. package/build/locales/de/openhands.json +2 -0
  157. package/build/locales/en/openhands.json +2 -0
  158. package/build/locales/es/openhands.json +2 -0
  159. package/build/locales/fr/openhands.json +2 -0
  160. package/build/locales/it/openhands.json +2 -0
  161. package/build/locales/ja/openhands.json +2 -0
  162. package/build/locales/ko-KR/openhands.json +2 -0
  163. package/build/locales/no/openhands.json +2 -0
  164. package/build/locales/pt/openhands.json +2 -0
  165. package/build/locales/tr/openhands.json +2 -0
  166. package/build/locales/uk/openhands.json +2 -0
  167. package/build/locales/zh-CN/openhands.json +2 -0
  168. package/build/locales/zh-TW/openhands.json +2 -0
  169. package/config/defaults.json +4 -4
  170. package/dist/api/agent-server-adapter.cjs +1 -1
  171. package/dist/api/agent-server-adapter.cjs.map +1 -1
  172. package/dist/api/agent-server-adapter.js +7 -7
  173. package/dist/api/agent-server-adapter.js.map +1 -1
  174. package/dist/api/automation-service/automation-service.api.cjs +1 -1
  175. package/dist/api/automation-service/automation-service.api.cjs.map +1 -1
  176. package/dist/api/automation-service/automation-service.api.js +95 -95
  177. package/dist/api/automation-service/automation-service.api.js.map +1 -1
  178. package/dist/api/backend-registry/storage.cjs +1 -1
  179. package/dist/api/backend-registry/storage.cjs.map +1 -1
  180. package/dist/api/backend-registry/storage.js +1 -1
  181. package/dist/api/backend-registry/storage.js.map +1 -1
  182. package/dist/api/backend-registry/types.d.ts +2 -0
  183. package/dist/api/cloud/conversation-service.api.cjs +1 -1
  184. package/dist/api/cloud/conversation-service.api.js +22 -22
  185. package/dist/api/mcp-service/mcp-service.api.cjs +1 -1
  186. package/dist/api/mcp-service/mcp-service.api.cjs.map +1 -1
  187. package/dist/api/mcp-service/mcp-service.api.js +19 -19
  188. package/dist/api/mcp-service/mcp-service.api.js.map +1 -1
  189. package/dist/api/settings-service/settings-service.api.cjs +1 -1
  190. package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
  191. package/dist/api/settings-service/settings-service.api.js +26 -12
  192. package/dist/api/settings-service/settings-service.api.js.map +1 -1
  193. package/dist/components/features/mcp-page/custom-server-editor.cjs +1 -1
  194. package/dist/components/features/mcp-page/custom-server-editor.js +16 -16
  195. package/dist/components/features/mcp-page/installed-server-card.cjs +1 -1
  196. package/dist/components/features/mcp-page/installed-server-card.cjs.map +1 -1
  197. package/dist/components/features/mcp-page/installed-server-card.d.ts +2 -2
  198. package/dist/components/features/mcp-page/installed-server-card.js +6 -7
  199. package/dist/components/features/mcp-page/installed-server-card.js.map +1 -1
  200. package/dist/components/features/mcp-page/installed-servers-section.cjs +1 -1
  201. package/dist/components/features/mcp-page/installed-servers-section.cjs.map +1 -1
  202. package/dist/components/features/mcp-page/installed-servers-section.d.ts +2 -2
  203. package/dist/components/features/mcp-page/installed-servers-section.js +2 -2
  204. package/dist/components/features/mcp-page/installed-servers-section.js.map +1 -1
  205. package/dist/components/features/mcp-page/mcp-server-health.cjs +1 -1
  206. package/dist/components/features/mcp-page/mcp-server-health.js +4 -4
  207. package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs +1 -1
  208. package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs.map +1 -1
  209. package/dist/components/features/settings/mcp-settings/mcp-server-form.js +2 -1
  210. package/dist/components/features/settings/mcp-settings/mcp-server-form.js.map +1 -1
  211. package/dist/config/defaults.cjs +1 -1
  212. package/dist/config/defaults.cjs.map +1 -1
  213. package/dist/config/defaults.js +3 -3
  214. package/dist/config/defaults.js.map +1 -1
  215. package/dist/contexts/active-backend-context.cjs +1 -1
  216. package/dist/contexts/active-backend-context.cjs.map +1 -1
  217. package/dist/contexts/active-backend-context.d.ts +3 -2
  218. package/dist/contexts/active-backend-context.js +55 -42
  219. package/dist/contexts/active-backend-context.js.map +1 -1
  220. package/dist/favicon-16x16.png +0 -0
  221. package/dist/favicon-32x32.png +0 -0
  222. package/dist/favicon.ico +0 -0
  223. package/dist/hooks/mutation/use-update-mcp-server.cjs +1 -1
  224. package/dist/hooks/mutation/use-update-mcp-server.js +5 -5
  225. package/dist/hooks/query/use-cloud-current-user-id.cjs +1 -1
  226. package/dist/hooks/query/use-cloud-current-user-id.cjs.map +1 -1
  227. package/dist/hooks/query/use-cloud-current-user-id.js +7 -5
  228. package/dist/hooks/query/use-cloud-current-user-id.js.map +1 -1
  229. package/dist/hooks/query/use-cloud-organizations.cjs +1 -1
  230. package/dist/hooks/query/use-cloud-organizations.cjs.map +1 -1
  231. package/dist/hooks/query/use-cloud-organizations.js +5 -1
  232. package/dist/hooks/query/use-cloud-organizations.js.map +1 -1
  233. package/dist/hooks/use-can-manage-org-profiles.cjs +1 -1
  234. package/dist/hooks/use-can-manage-org-profiles.cjs.map +1 -1
  235. package/dist/hooks/use-can-manage-org-profiles.js +2 -1
  236. package/dist/hooks/use-can-manage-org-profiles.js.map +1 -1
  237. package/dist/hooks/use-tracking.cjs +1 -1
  238. package/dist/hooks/use-tracking.js +9 -9
  239. package/dist/i18n/declaration.cjs +1 -1
  240. package/dist/i18n/declaration.cjs.map +1 -1
  241. package/dist/i18n/declaration.d.ts +2 -0
  242. package/dist/i18n/declaration.js +1 -1
  243. package/dist/i18n/declaration.js.map +1 -1
  244. package/dist/i18n/translation.cjs +1 -1
  245. package/dist/i18n/translation.cjs.map +1 -1
  246. package/dist/i18n/translation.js +34 -0
  247. package/dist/i18n/translation.js.map +1 -1
  248. package/dist/locales/ar/openhands.json +2 -0
  249. package/dist/locales/ca/openhands.json +2 -0
  250. package/dist/locales/de/openhands.json +2 -0
  251. package/dist/locales/en/openhands.json +2 -0
  252. package/dist/locales/es/openhands.json +2 -0
  253. package/dist/locales/fr/openhands.json +2 -0
  254. package/dist/locales/it/openhands.json +2 -0
  255. package/dist/locales/ja/openhands.json +2 -0
  256. package/dist/locales/ko-KR/openhands.json +2 -0
  257. package/dist/locales/no/openhands.json +2 -0
  258. package/dist/locales/pt/openhands.json +2 -0
  259. package/dist/locales/tr/openhands.json +2 -0
  260. package/dist/locales/uk/openhands.json +2 -0
  261. package/dist/locales/zh-CN/openhands.json +2 -0
  262. package/dist/locales/zh-TW/openhands.json +2 -0
  263. package/dist/node_modules/@openhands/typescript-client/dist/client/settings-client.cjs +1 -1
  264. package/dist/node_modules/@openhands/typescript-client/dist/client/settings-client.cjs.map +1 -1
  265. package/dist/node_modules/@openhands/typescript-client/dist/client/settings-client.js +9 -0
  266. package/dist/node_modules/@openhands/typescript-client/dist/client/settings-client.js.map +1 -1
  267. package/dist/package.cjs +1 -1
  268. package/dist/package.cjs.map +1 -1
  269. package/dist/package.js +7 -2
  270. package/dist/package.js.map +1 -1
  271. package/dist/routes/app-settings.cjs +1 -1
  272. package/dist/routes/app-settings.js +5 -5
  273. package/dist/routes/mcp.cjs +1 -1
  274. package/dist/routes/mcp.cjs.map +1 -1
  275. package/dist/routes/mcp.js +73 -82
  276. package/dist/routes/mcp.js.map +1 -1
  277. package/dist/services/telemetry.cjs +1 -1
  278. package/dist/services/telemetry.cjs.map +1 -1
  279. package/dist/services/telemetry.d.ts +8 -0
  280. package/dist/services/telemetry.js +163 -116
  281. package/dist/services/telemetry.js.map +1 -1
  282. package/dist/types/mcp-server.d.ts +5 -0
  283. package/dist/types/settings.d.ts +3 -0
  284. package/dist/utils/mcp-config.cjs +1 -1
  285. package/dist/utils/mcp-config.cjs.map +1 -1
  286. package/dist/utils/mcp-config.d.ts +8 -0
  287. package/dist/utils/mcp-config.js +25 -20
  288. package/dist/utils/mcp-config.js.map +1 -1
  289. package/dist/utils/mcp-installed-servers.cjs +1 -1
  290. package/dist/utils/mcp-installed-servers.cjs.map +1 -1
  291. package/dist/utils/mcp-installed-servers.js +6 -3
  292. package/dist/utils/mcp-installed-servers.js.map +1 -1
  293. package/package.json +7 -2
  294. package/scripts/check-sdk-version-sync.mjs +6 -6
  295. package/scripts/dev-safe.mjs +2 -2
  296. package/scripts/stryker-diff.mjs +137 -0
  297. package/build/assets/active-backend-context-B9942JGX.js +0 -1
  298. package/build/assets/agent-server-conversation-service.api-D7qh9amG.js +0 -41
  299. package/build/assets/agent-settings-BbNLRtoh.js +0 -1
  300. package/build/assets/api-key-entry-screen-B2kVLRDQ.js +0 -1
  301. package/build/assets/app-settings-B92bjTei.js +0 -1
  302. package/build/assets/automation-detail-DoVSHQLs.js +0 -2
  303. package/build/assets/backend-form-modal-C0CIsQvd.js +0 -1
  304. package/build/assets/check-BMOG005H.js +0 -1
  305. package/build/assets/chevron-down-CV1zZP_K.js +0 -1
  306. package/build/assets/circle-check-lvN_jFN5.js +0 -1
  307. package/build/assets/client-source-D8jWKBfE.js +0 -1
  308. package/build/assets/cloud-funnel-analytics-CnCkPgQa.js +0 -1
  309. package/build/assets/conversation-DceG4LFS.js +0 -90
  310. package/build/assets/conversation-Do2Vg7uo.js +0 -1
  311. package/build/assets/conversation-panel-Do2Vg7uo.js +0 -1
  312. package/build/assets/conversation-state-store-BORusMiV.js +0 -1
  313. package/build/assets/extensions-hub-B2WudOET.js +0 -1
  314. package/build/assets/extensions-navigation-CYjIM65d.js +0 -1
  315. package/build/assets/files-tab-LSBijbEi.js +0 -1
  316. package/build/assets/git-provider-icon-DeQUgZVE.js +0 -1
  317. package/build/assets/home-C_R5pEbs.js +0 -1
  318. package/build/assets/index-home-C_R5pEbs.js +0 -1
  319. package/build/assets/install-server-modal-xCf76eim.js +0 -1
  320. package/build/assets/llm-settings-BYo9SN0I.js +0 -1
  321. package/build/assets/llm-settings-BaM0zJg5.js +0 -1
  322. package/build/assets/loader-circle-6zlEYCJw.js +0 -1
  323. package/build/assets/manage-backends-modal-n6PtHOER.js +0 -1
  324. package/build/assets/manifest-e9bbad7b.js +0 -1
  325. package/build/assets/markdown-renderer-Dkmjmx_d.js +0 -8
  326. package/build/assets/mcp-BJUOnO6v.js +0 -9
  327. package/build/assets/onboarding-modal-dYsjXJwx.js +0 -1
  328. package/build/assets/organization-service.api-HsxJhNCf.js +0 -1
  329. package/build/assets/plugins-management-service-DEjBqDoT.js +0 -1
  330. package/build/assets/plus-vIbGD459.js +0 -1
  331. package/build/assets/profiles-service.api-BddMsEhq.js +0 -1
  332. package/build/assets/providers-BxJi3BMO.js +0 -1
  333. package/build/assets/proxy-CN3HaaOW.js +0 -1
  334. package/build/assets/root-D4hpCAq9.js +0 -2
  335. package/build/assets/root-layout-a4-4sfbh.js +0 -3
  336. package/build/assets/schema-field-CZSs0hQP.js +0 -1
  337. package/build/assets/search-sKuYKllf.js +0 -1
  338. package/build/assets/secrets-service-i4CCd-UN.js +0 -1
  339. package/build/assets/settings-SHSt9Rq2.js +0 -1
  340. package/build/assets/settings-service.api-i_HHIqJP.js +0 -1
  341. package/build/assets/telemetry-B-2fXtqV.js +0 -2
  342. package/build/assets/use-activate-agent-profile-CXDcjVt8.js +0 -1
  343. package/build/assets/use-agent-profiles-CliaHofi.js +0 -1
  344. package/build/assets/use-cloud-current-user-id-BzamKpu-.js +0 -1
  345. package/build/assets/use-config-DPEYpfIj.js +0 -1
  346. package/build/assets/use-llm-profiles-Ci3zAVzV.js +0 -1
  347. package/build/assets/use-onboarding-completion-STApsofr.js +0 -1
  348. package/build/assets/use-plugins-marketplace-CzzdrUSK.js +0 -1
  349. package/build/assets/use-settings-BKpkUS4y.js +0 -1
  350. package/build/assets/use-settings-nav-items-BlXge_bf.js +0 -16
  351. package/build/assets/use-skills-BltA9XrV.js +0 -1
  352. package/build/assets/use-tracking-De7qByD4.js +0 -1
  353. package/build/assets/utils-qjs_KuS4.js +0 -1
  354. package/build/assets/x-EjvKGawc.js +0 -1
@@ -893,6 +893,8 @@
893
893
  "MCP$INSTALLED_BADGE": "مثبت",
894
894
  "MCP$TOGGLE_ADD_SERVER": "تثبيت الخادم",
895
895
  "MCP$TOGGLE_REMOVE_SERVER": "إزالة الخادم",
896
+ "MCP$TOGGLE_ENABLE_SERVER": "تفعيل الخادم",
897
+ "MCP$TOGGLE_DISABLE_SERVER": "تعطيل الخادم",
896
898
  "MCP$INSTALL_BUTTON": "تثبيت",
897
899
  "MCP$VIEW_DOCS": "عرض الوثائق →",
898
900
  "MCP$INSTALL_SUCCESS": "تم حفظ خادم MCP.",
@@ -893,6 +893,8 @@
893
893
  "MCP$INSTALLED_BADGE": "Instal·lat",
894
894
  "MCP$TOGGLE_ADD_SERVER": "Instal·la el servidor",
895
895
  "MCP$TOGGLE_REMOVE_SERVER": "Elimina el servidor",
896
+ "MCP$TOGGLE_ENABLE_SERVER": "Activa el servidor",
897
+ "MCP$TOGGLE_DISABLE_SERVER": "Desactiva el servidor",
896
898
  "MCP$INSTALL_BUTTON": "Instal·la",
897
899
  "MCP$VIEW_DOCS": "Veure la documentació →",
898
900
  "MCP$INSTALL_SUCCESS": "Servidor MCP desat.",
@@ -893,6 +893,8 @@
893
893
  "MCP$INSTALLED_BADGE": "Installiert",
894
894
  "MCP$TOGGLE_ADD_SERVER": "Server installieren",
895
895
  "MCP$TOGGLE_REMOVE_SERVER": "Server entfernen",
896
+ "MCP$TOGGLE_ENABLE_SERVER": "Server aktivieren",
897
+ "MCP$TOGGLE_DISABLE_SERVER": "Server deaktivieren",
896
898
  "MCP$INSTALL_BUTTON": "Installieren",
897
899
  "MCP$VIEW_DOCS": "Dokumentation ansehen →",
898
900
  "MCP$INSTALL_SUCCESS": "MCP-Server gespeichert.",
@@ -893,6 +893,8 @@
893
893
  "MCP$INSTALLED_BADGE": "Installed",
894
894
  "MCP$TOGGLE_ADD_SERVER": "Install server",
895
895
  "MCP$TOGGLE_REMOVE_SERVER": "Remove server",
896
+ "MCP$TOGGLE_ENABLE_SERVER": "Enable server",
897
+ "MCP$TOGGLE_DISABLE_SERVER": "Disable server",
896
898
  "MCP$INSTALL_BUTTON": "Install",
897
899
  "MCP$VIEW_DOCS": "View documentation →",
898
900
  "MCP$INSTALL_SUCCESS": "MCP server saved.",
@@ -893,6 +893,8 @@
893
893
  "MCP$INSTALLED_BADGE": "Instalado",
894
894
  "MCP$TOGGLE_ADD_SERVER": "Instalar servidor",
895
895
  "MCP$TOGGLE_REMOVE_SERVER": "Eliminar servidor",
896
+ "MCP$TOGGLE_ENABLE_SERVER": "Activar servidor",
897
+ "MCP$TOGGLE_DISABLE_SERVER": "Desactivar servidor",
896
898
  "MCP$INSTALL_BUTTON": "Instalar",
897
899
  "MCP$VIEW_DOCS": "Ver documentación →",
898
900
  "MCP$INSTALL_SUCCESS": "Servidor MCP guardado.",
@@ -893,6 +893,8 @@
893
893
  "MCP$INSTALLED_BADGE": "Installé",
894
894
  "MCP$TOGGLE_ADD_SERVER": "Installer le serveur",
895
895
  "MCP$TOGGLE_REMOVE_SERVER": "Supprimer le serveur",
896
+ "MCP$TOGGLE_ENABLE_SERVER": "Activer le serveur",
897
+ "MCP$TOGGLE_DISABLE_SERVER": "Désactiver le serveur",
896
898
  "MCP$INSTALL_BUTTON": "Installer",
897
899
  "MCP$VIEW_DOCS": "Voir la documentation →",
898
900
  "MCP$INSTALL_SUCCESS": "Serveur MCP enregistré.",
@@ -893,6 +893,8 @@
893
893
  "MCP$INSTALLED_BADGE": "Installato",
894
894
  "MCP$TOGGLE_ADD_SERVER": "Installa server",
895
895
  "MCP$TOGGLE_REMOVE_SERVER": "Rimuovi server",
896
+ "MCP$TOGGLE_ENABLE_SERVER": "Abilita server",
897
+ "MCP$TOGGLE_DISABLE_SERVER": "Disabilita server",
896
898
  "MCP$INSTALL_BUTTON": "Installa",
897
899
  "MCP$VIEW_DOCS": "Visualizza la documentazione →",
898
900
  "MCP$INSTALL_SUCCESS": "Server MCP salvato.",
@@ -893,6 +893,8 @@
893
893
  "MCP$INSTALLED_BADGE": "インストール済み",
894
894
  "MCP$TOGGLE_ADD_SERVER": "サーバーをインストール",
895
895
  "MCP$TOGGLE_REMOVE_SERVER": "サーバーを削除",
896
+ "MCP$TOGGLE_ENABLE_SERVER": "サーバーを有効化",
897
+ "MCP$TOGGLE_DISABLE_SERVER": "サーバーを無効化",
896
898
  "MCP$INSTALL_BUTTON": "インストール",
897
899
  "MCP$VIEW_DOCS": "ドキュメントを表示 →",
898
900
  "MCP$INSTALL_SUCCESS": "MCP サーバーを保存しました。",
@@ -893,6 +893,8 @@
893
893
  "MCP$INSTALLED_BADGE": "설치됨",
894
894
  "MCP$TOGGLE_ADD_SERVER": "서버 설치",
895
895
  "MCP$TOGGLE_REMOVE_SERVER": "서버 제거",
896
+ "MCP$TOGGLE_ENABLE_SERVER": "서버 사용",
897
+ "MCP$TOGGLE_DISABLE_SERVER": "서버 사용 안 함",
896
898
  "MCP$INSTALL_BUTTON": "설치",
897
899
  "MCP$VIEW_DOCS": "문서 보기 →",
898
900
  "MCP$INSTALL_SUCCESS": "MCP 서버가 저장되었습니다.",
@@ -893,6 +893,8 @@
893
893
  "MCP$INSTALLED_BADGE": "Installert",
894
894
  "MCP$TOGGLE_ADD_SERVER": "Installer server",
895
895
  "MCP$TOGGLE_REMOVE_SERVER": "Fjern server",
896
+ "MCP$TOGGLE_ENABLE_SERVER": "Aktiver server",
897
+ "MCP$TOGGLE_DISABLE_SERVER": "Deaktiver server",
896
898
  "MCP$INSTALL_BUTTON": "Installer",
897
899
  "MCP$VIEW_DOCS": "Vis dokumentasjon →",
898
900
  "MCP$INSTALL_SUCCESS": "MCP-server lagret.",
@@ -893,6 +893,8 @@
893
893
  "MCP$INSTALLED_BADGE": "Instalado",
894
894
  "MCP$TOGGLE_ADD_SERVER": "Instalar servidor",
895
895
  "MCP$TOGGLE_REMOVE_SERVER": "Remover servidor",
896
+ "MCP$TOGGLE_ENABLE_SERVER": "Ativar servidor",
897
+ "MCP$TOGGLE_DISABLE_SERVER": "Desativar servidor",
896
898
  "MCP$INSTALL_BUTTON": "Instalar",
897
899
  "MCP$VIEW_DOCS": "Ver documentação →",
898
900
  "MCP$INSTALL_SUCCESS": "Servidor MCP salvo.",
@@ -893,6 +893,8 @@
893
893
  "MCP$INSTALLED_BADGE": "Yüklü",
894
894
  "MCP$TOGGLE_ADD_SERVER": "Sunucuyu yükle",
895
895
  "MCP$TOGGLE_REMOVE_SERVER": "Sunucuyu kaldır",
896
+ "MCP$TOGGLE_ENABLE_SERVER": "Sunucuyu etkinleştir",
897
+ "MCP$TOGGLE_DISABLE_SERVER": "Sunucuyu devre dışı bırak",
896
898
  "MCP$INSTALL_BUTTON": "Yükle",
897
899
  "MCP$VIEW_DOCS": "Belgeleri görüntüle →",
898
900
  "MCP$INSTALL_SUCCESS": "MCP sunucusu kaydedildi.",
@@ -893,6 +893,8 @@
893
893
  "MCP$INSTALLED_BADGE": "Встановлено",
894
894
  "MCP$TOGGLE_ADD_SERVER": "Встановити сервер",
895
895
  "MCP$TOGGLE_REMOVE_SERVER": "Видалити сервер",
896
+ "MCP$TOGGLE_ENABLE_SERVER": "Увімкнути сервер",
897
+ "MCP$TOGGLE_DISABLE_SERVER": "Вимкнути сервер",
896
898
  "MCP$INSTALL_BUTTON": "Встановити",
897
899
  "MCP$VIEW_DOCS": "Переглянути документацію →",
898
900
  "MCP$INSTALL_SUCCESS": "Сервер MCP збережено.",
@@ -893,6 +893,8 @@
893
893
  "MCP$INSTALLED_BADGE": "已安装",
894
894
  "MCP$TOGGLE_ADD_SERVER": "安装服务器",
895
895
  "MCP$TOGGLE_REMOVE_SERVER": "移除服务器",
896
+ "MCP$TOGGLE_ENABLE_SERVER": "启用服务器",
897
+ "MCP$TOGGLE_DISABLE_SERVER": "禁用服务器",
896
898
  "MCP$INSTALL_BUTTON": "安装",
897
899
  "MCP$VIEW_DOCS": "查看文档 →",
898
900
  "MCP$INSTALL_SUCCESS": "MCP 服务器已保存。",
@@ -893,6 +893,8 @@
893
893
  "MCP$INSTALLED_BADGE": "已安裝",
894
894
  "MCP$TOGGLE_ADD_SERVER": "安裝伺服器",
895
895
  "MCP$TOGGLE_REMOVE_SERVER": "移除伺服器",
896
+ "MCP$TOGGLE_ENABLE_SERVER": "啟用伺服器",
897
+ "MCP$TOGGLE_DISABLE_SERVER": "停用伺服器",
896
898
  "MCP$INSTALL_BUTTON": "安裝",
897
899
  "MCP$VIEW_DOCS": "檢視文件 →",
898
900
  "MCP$INSTALL_SUCCESS": "MCP 伺服器已儲存。",
@@ -1,2 +1,2 @@
1
- require("../../../../../_virtual/_rolldown/runtime.cjs");const e=require("./http-client.cjs");var t=class{constructor(t){this.host=t.host.replace(/\/$/,``),this.apiKey=t.apiKey,this.client=new e.HttpClient({baseUrl:this.host,apiKey:this.apiKey,timeout:t.timeout||6e4})}async getAgentSchema(){return(await this.client.get(`/api/settings/agent-schema`)).data}async getSettings(e={}){return(await this.client.get(`/api/settings`,{headers:e.exposeSecrets?{"X-Expose-Secrets":e.exposeSecrets}:void 0})).data}async updateSettings(e){return(await this.client.patch(`/api/settings`,e)).data}async listSecrets(){return(await this.client.get(`/api/settings/secrets`)).data}async upsertSecret(e){return(await this.client.put(`/api/settings/secrets`,e)).data}async getSecret(e){return(await this.client.get(`/api/settings/secrets/${encodeURIComponent(e)}`,{responseType:`text`})).data}async deleteSecret(e){return(await this.client.delete(`/api/settings/secrets/${encodeURIComponent(e)}`)).data}async getConversationSchema(){return(await this.client.get(`/api/settings/conversation-schema`)).data}async listProfiles(){return(await this.client.get(`/api/profiles`)).data}async getProfile(e,t={}){return(await this.client.get(`/api/profiles/${encodeURIComponent(e)}`,{headers:t.exposeSecrets?{"X-Expose-Secrets":t.exposeSecrets}:void 0})).data}async saveProfile(e,t){return(await this.client.post(`/api/profiles/${encodeURIComponent(e)}`,t)).data}async deleteProfile(e){return(await this.client.delete(`/api/profiles/${encodeURIComponent(e)}`)).data}async renameProfile(e,t){return(await this.client.post(`/api/profiles/${encodeURIComponent(e)}/rename`,{new_name:t})).data}close(){this.client.close()}};exports.SettingsClient=t;
1
+ require("../../../../../_virtual/_rolldown/runtime.cjs");const e=require("./http-client.cjs");var t=class{constructor(t){this.host=t.host.replace(/\/$/,``),this.apiKey=t.apiKey,this.client=new e.HttpClient({baseUrl:this.host,apiKey:this.apiKey,timeout:t.timeout||6e4})}async getAgentSchema(){return(await this.client.get(`/api/settings/agent-schema`)).data}async getSettings(e={}){return(await this.client.get(`/api/settings`,{headers:e.exposeSecrets?{"X-Expose-Secrets":e.exposeSecrets}:void 0})).data}async updateSettings(e){return(await this.client.patch(`/api/settings`,e)).data}async createMcpServer(e,t){return(await this.client.post(`/api/settings/mcp/${encodeURIComponent(e)}`,t)).data}async patchMcpServer(e,t){return(await this.client.patch(`/api/settings/mcp/${encodeURIComponent(e)}`,t)).data}async deleteMcpServer(e){return(await this.client.delete(`/api/settings/mcp/${encodeURIComponent(e)}`)).data}async listSecrets(){return(await this.client.get(`/api/settings/secrets`)).data}async upsertSecret(e){return(await this.client.put(`/api/settings/secrets`,e)).data}async getSecret(e){return(await this.client.get(`/api/settings/secrets/${encodeURIComponent(e)}`,{responseType:`text`})).data}async deleteSecret(e){return(await this.client.delete(`/api/settings/secrets/${encodeURIComponent(e)}`)).data}async getConversationSchema(){return(await this.client.get(`/api/settings/conversation-schema`)).data}async listProfiles(){return(await this.client.get(`/api/profiles`)).data}async getProfile(e,t={}){return(await this.client.get(`/api/profiles/${encodeURIComponent(e)}`,{headers:t.exposeSecrets?{"X-Expose-Secrets":t.exposeSecrets}:void 0})).data}async saveProfile(e,t){return(await this.client.post(`/api/profiles/${encodeURIComponent(e)}`,t)).data}async deleteProfile(e){return(await this.client.delete(`/api/profiles/${encodeURIComponent(e)}`)).data}async renameProfile(e,t){return(await this.client.post(`/api/profiles/${encodeURIComponent(e)}/rename`,{new_name:t})).data}close(){this.client.close()}};exports.SettingsClient=t;
2
2
  //# sourceMappingURL=settings-client.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings-client.cjs","names":["HttpClient"],"sources":["../../../../../../node_modules/@openhands/typescript-client/dist/client/settings-client.js"],"sourcesContent":["import { HttpClient } from './http-client.js';\nexport class SettingsClient {\n constructor(options) {\n this.host = options.host.replace(/\\/$/, '');\n this.apiKey = options.apiKey;\n this.client = new HttpClient({\n baseUrl: this.host,\n apiKey: this.apiKey,\n timeout: options.timeout || 60000,\n });\n }\n async getAgentSchema() {\n const response = await this.client.get('/api/settings/agent-schema');\n return response.data;\n }\n async getSettings(options = {}) {\n const response = await this.client.get('/api/settings', {\n headers: options.exposeSecrets ? { 'X-Expose-Secrets': options.exposeSecrets } : undefined,\n });\n return response.data;\n }\n async updateSettings(request) {\n const response = await this.client.patch('/api/settings', request);\n return response.data;\n }\n async listSecrets() {\n const response = await this.client.get('/api/settings/secrets');\n return response.data;\n }\n async upsertSecret(request) {\n const response = await this.client.put('/api/settings/secrets', request);\n return response.data;\n }\n async getSecret(name) {\n const response = await this.client.get(`/api/settings/secrets/${encodeURIComponent(name)}`, { responseType: 'text' });\n return response.data;\n }\n async deleteSecret(name) {\n const response = await this.client.delete(`/api/settings/secrets/${encodeURIComponent(name)}`);\n return response.data;\n }\n async getConversationSchema() {\n const response = await this.client.get('/api/settings/conversation-schema');\n return response.data;\n }\n async listProfiles() {\n const response = await this.client.get('/api/profiles');\n return response.data;\n }\n async getProfile(name, options = {}) {\n const response = await this.client.get(`/api/profiles/${encodeURIComponent(name)}`, {\n headers: options.exposeSecrets ? { 'X-Expose-Secrets': options.exposeSecrets } : undefined,\n });\n return response.data;\n }\n async saveProfile(name, request) {\n const response = await this.client.post(`/api/profiles/${encodeURIComponent(name)}`, request);\n return response.data;\n }\n async deleteProfile(name) {\n const response = await this.client.delete(`/api/profiles/${encodeURIComponent(name)}`);\n return response.data;\n }\n async renameProfile(name, newName) {\n const response = await this.client.post(`/api/profiles/${encodeURIComponent(name)}/rename`, { new_name: newName });\n return response.data;\n }\n close() {\n this.client.close();\n }\n}\n//# sourceMappingURL=settings-client.js.map"],"x_google_ignoreList":[0],"mappings":"8FACA,IAAa,EAAb,KAA4B,CACxB,YAAY,EAAS,CACjB,KAAK,KAAO,EAAQ,KAAK,QAAQ,MAAO,EAAE,EAC1C,KAAK,OAAS,EAAQ,OACtB,KAAK,OAAS,IAAIA,EAAAA,WAAW,CACzB,QAAS,KAAK,KACd,OAAQ,KAAK,OACb,QAAS,EAAQ,SAAW,GAChC,CAAC,CACL,CACA,MAAM,gBAAiB,CAEnB,OAAO,MADgB,KAAK,OAAO,IAAI,4BAA4B,GACnD,IACpB,CACA,MAAM,YAAY,EAAU,CAAC,EAAG,CAI5B,OAAO,MAHgB,KAAK,OAAO,IAAI,gBAAiB,CACpD,QAAS,EAAQ,cAAgB,CAAE,mBAAoB,EAAQ,aAAc,EAAI,IAAA,EACrF,CAAC,GACe,IACpB,CACA,MAAM,eAAe,EAAS,CAE1B,OAAO,MADgB,KAAK,OAAO,MAAM,gBAAiB,CAAO,GACjD,IACpB,CACA,MAAM,aAAc,CAEhB,OAAO,MADgB,KAAK,OAAO,IAAI,uBAAuB,GAC9C,IACpB,CACA,MAAM,aAAa,EAAS,CAExB,OAAO,MADgB,KAAK,OAAO,IAAI,wBAAyB,CAAO,GACvD,IACpB,CACA,MAAM,UAAU,EAAM,CAElB,OAAO,MADgB,KAAK,OAAO,IAAI,yBAAyB,mBAAmB,CAAI,IAAK,CAAE,aAAc,MAAO,CAAC,GACpG,IACpB,CACA,MAAM,aAAa,EAAM,CAErB,OAAO,MADgB,KAAK,OAAO,OAAO,yBAAyB,mBAAmB,CAAI,GAAG,GAC7E,IACpB,CACA,MAAM,uBAAwB,CAE1B,OAAO,MADgB,KAAK,OAAO,IAAI,mCAAmC,GAC1D,IACpB,CACA,MAAM,cAAe,CAEjB,OAAO,MADgB,KAAK,OAAO,IAAI,eAAe,GACtC,IACpB,CACA,MAAM,WAAW,EAAM,EAAU,CAAC,EAAG,CAIjC,OAAO,MAHgB,KAAK,OAAO,IAAI,iBAAiB,mBAAmB,CAAI,IAAK,CAChF,QAAS,EAAQ,cAAgB,CAAE,mBAAoB,EAAQ,aAAc,EAAI,IAAA,EACrF,CAAC,GACe,IACpB,CACA,MAAM,YAAY,EAAM,EAAS,CAE7B,OAAO,MADgB,KAAK,OAAO,KAAK,iBAAiB,mBAAmB,CAAI,IAAK,CAAO,GAC5E,IACpB,CACA,MAAM,cAAc,EAAM,CAEtB,OAAO,MADgB,KAAK,OAAO,OAAO,iBAAiB,mBAAmB,CAAI,GAAG,GACrE,IACpB,CACA,MAAM,cAAc,EAAM,EAAS,CAE/B,OAAO,MADgB,KAAK,OAAO,KAAK,iBAAiB,mBAAmB,CAAI,EAAE,SAAU,CAAE,SAAU,CAAQ,CAAC,GACjG,IACpB,CACA,OAAQ,CACJ,KAAK,OAAO,MAAM,CACtB,CACJ"}
1
+ {"version":3,"file":"settings-client.cjs","names":["HttpClient"],"sources":["../../../../../../node_modules/@openhands/typescript-client/dist/client/settings-client.js"],"sourcesContent":["import { HttpClient } from './http-client.js';\nexport class SettingsClient {\n constructor(options) {\n this.host = options.host.replace(/\\/$/, '');\n this.apiKey = options.apiKey;\n this.client = new HttpClient({\n baseUrl: this.host,\n apiKey: this.apiKey,\n timeout: options.timeout || 60000,\n });\n }\n async getAgentSchema() {\n const response = await this.client.get('/api/settings/agent-schema');\n return response.data;\n }\n async getSettings(options = {}) {\n const response = await this.client.get('/api/settings', {\n headers: options.exposeSecrets ? { 'X-Expose-Secrets': options.exposeSecrets } : undefined,\n });\n return response.data;\n }\n async updateSettings(request) {\n const response = await this.client.patch('/api/settings', request);\n return response.data;\n }\n /** Create one named MCP server without reading or resending the catalog. */\n async createMcpServer(settingsKey, server) {\n const response = await this.client.post(`/api/settings/mcp/${encodeURIComponent(settingsKey)}`, server);\n return response.data;\n }\n /** Sparsely update one existing named MCP server. */\n async patchMcpServer(settingsKey, patch) {\n const response = await this.client.patch(`/api/settings/mcp/${encodeURIComponent(settingsKey)}`, patch);\n return response.data;\n }\n /** Delete one existing named MCP server. */\n async deleteMcpServer(settingsKey) {\n const response = await this.client.delete(`/api/settings/mcp/${encodeURIComponent(settingsKey)}`);\n return response.data;\n }\n async listSecrets() {\n const response = await this.client.get('/api/settings/secrets');\n return response.data;\n }\n async upsertSecret(request) {\n const response = await this.client.put('/api/settings/secrets', request);\n return response.data;\n }\n async getSecret(name) {\n const response = await this.client.get(`/api/settings/secrets/${encodeURIComponent(name)}`, { responseType: 'text' });\n return response.data;\n }\n async deleteSecret(name) {\n const response = await this.client.delete(`/api/settings/secrets/${encodeURIComponent(name)}`);\n return response.data;\n }\n async getConversationSchema() {\n const response = await this.client.get('/api/settings/conversation-schema');\n return response.data;\n }\n async listProfiles() {\n const response = await this.client.get('/api/profiles');\n return response.data;\n }\n async getProfile(name, options = {}) {\n const response = await this.client.get(`/api/profiles/${encodeURIComponent(name)}`, {\n headers: options.exposeSecrets ? { 'X-Expose-Secrets': options.exposeSecrets } : undefined,\n });\n return response.data;\n }\n async saveProfile(name, request) {\n const response = await this.client.post(`/api/profiles/${encodeURIComponent(name)}`, request);\n return response.data;\n }\n async deleteProfile(name) {\n const response = await this.client.delete(`/api/profiles/${encodeURIComponent(name)}`);\n return response.data;\n }\n async renameProfile(name, newName) {\n const response = await this.client.post(`/api/profiles/${encodeURIComponent(name)}/rename`, { new_name: newName });\n return response.data;\n }\n close() {\n this.client.close();\n }\n}\n//# sourceMappingURL=settings-client.js.map"],"x_google_ignoreList":[0],"mappings":"8FACA,IAAa,EAAb,KAA4B,CACxB,YAAY,EAAS,CACjB,KAAK,KAAO,EAAQ,KAAK,QAAQ,MAAO,EAAE,EAC1C,KAAK,OAAS,EAAQ,OACtB,KAAK,OAAS,IAAIA,EAAAA,WAAW,CACzB,QAAS,KAAK,KACd,OAAQ,KAAK,OACb,QAAS,EAAQ,SAAW,GAChC,CAAC,CACL,CACA,MAAM,gBAAiB,CAEnB,OAAO,MADgB,KAAK,OAAO,IAAI,4BAA4B,GACnD,IACpB,CACA,MAAM,YAAY,EAAU,CAAC,EAAG,CAI5B,OAAO,MAHgB,KAAK,OAAO,IAAI,gBAAiB,CACpD,QAAS,EAAQ,cAAgB,CAAE,mBAAoB,EAAQ,aAAc,EAAI,IAAA,EACrF,CAAC,GACe,IACpB,CACA,MAAM,eAAe,EAAS,CAE1B,OAAO,MADgB,KAAK,OAAO,MAAM,gBAAiB,CAAO,GACjD,IACpB,CAEA,MAAM,gBAAgB,EAAa,EAAQ,CAEvC,OAAO,MADgB,KAAK,OAAO,KAAK,qBAAqB,mBAAmB,CAAW,IAAK,CAAM,GACtF,IACpB,CAEA,MAAM,eAAe,EAAa,EAAO,CAErC,OAAO,MADgB,KAAK,OAAO,MAAM,qBAAqB,mBAAmB,CAAW,IAAK,CAAK,GACtF,IACpB,CAEA,MAAM,gBAAgB,EAAa,CAE/B,OAAO,MADgB,KAAK,OAAO,OAAO,qBAAqB,mBAAmB,CAAW,GAAG,GAChF,IACpB,CACA,MAAM,aAAc,CAEhB,OAAO,MADgB,KAAK,OAAO,IAAI,uBAAuB,GAC9C,IACpB,CACA,MAAM,aAAa,EAAS,CAExB,OAAO,MADgB,KAAK,OAAO,IAAI,wBAAyB,CAAO,GACvD,IACpB,CACA,MAAM,UAAU,EAAM,CAElB,OAAO,MADgB,KAAK,OAAO,IAAI,yBAAyB,mBAAmB,CAAI,IAAK,CAAE,aAAc,MAAO,CAAC,GACpG,IACpB,CACA,MAAM,aAAa,EAAM,CAErB,OAAO,MADgB,KAAK,OAAO,OAAO,yBAAyB,mBAAmB,CAAI,GAAG,GAC7E,IACpB,CACA,MAAM,uBAAwB,CAE1B,OAAO,MADgB,KAAK,OAAO,IAAI,mCAAmC,GAC1D,IACpB,CACA,MAAM,cAAe,CAEjB,OAAO,MADgB,KAAK,OAAO,IAAI,eAAe,GACtC,IACpB,CACA,MAAM,WAAW,EAAM,EAAU,CAAC,EAAG,CAIjC,OAAO,MAHgB,KAAK,OAAO,IAAI,iBAAiB,mBAAmB,CAAI,IAAK,CAChF,QAAS,EAAQ,cAAgB,CAAE,mBAAoB,EAAQ,aAAc,EAAI,IAAA,EACrF,CAAC,GACe,IACpB,CACA,MAAM,YAAY,EAAM,EAAS,CAE7B,OAAO,MADgB,KAAK,OAAO,KAAK,iBAAiB,mBAAmB,CAAI,IAAK,CAAO,GAC5E,IACpB,CACA,MAAM,cAAc,EAAM,CAEtB,OAAO,MADgB,KAAK,OAAO,OAAO,iBAAiB,mBAAmB,CAAI,GAAG,GACrE,IACpB,CACA,MAAM,cAAc,EAAM,EAAS,CAE/B,OAAO,MADgB,KAAK,OAAO,KAAK,iBAAiB,mBAAmB,CAAI,EAAE,SAAU,CAAE,SAAU,CAAQ,CAAC,GACjG,IACpB,CACA,OAAQ,CACJ,KAAK,OAAO,MAAM,CACtB,CACJ"}
@@ -17,6 +17,15 @@ var t = class {
17
17
  async updateSettings(e) {
18
18
  return (await this.client.patch("/api/settings", e)).data;
19
19
  }
20
+ async createMcpServer(e, t) {
21
+ return (await this.client.post(`/api/settings/mcp/${encodeURIComponent(e)}`, t)).data;
22
+ }
23
+ async patchMcpServer(e, t) {
24
+ return (await this.client.patch(`/api/settings/mcp/${encodeURIComponent(e)}`, t)).data;
25
+ }
26
+ async deleteMcpServer(e) {
27
+ return (await this.client.delete(`/api/settings/mcp/${encodeURIComponent(e)}`)).data;
28
+ }
20
29
  async listSecrets() {
21
30
  return (await this.client.get("/api/settings/secrets")).data;
22
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"settings-client.js","names":[],"sources":["../../../../../../node_modules/@openhands/typescript-client/dist/client/settings-client.js"],"sourcesContent":["import { HttpClient } from './http-client.js';\nexport class SettingsClient {\n constructor(options) {\n this.host = options.host.replace(/\\/$/, '');\n this.apiKey = options.apiKey;\n this.client = new HttpClient({\n baseUrl: this.host,\n apiKey: this.apiKey,\n timeout: options.timeout || 60000,\n });\n }\n async getAgentSchema() {\n const response = await this.client.get('/api/settings/agent-schema');\n return response.data;\n }\n async getSettings(options = {}) {\n const response = await this.client.get('/api/settings', {\n headers: options.exposeSecrets ? { 'X-Expose-Secrets': options.exposeSecrets } : undefined,\n });\n return response.data;\n }\n async updateSettings(request) {\n const response = await this.client.patch('/api/settings', request);\n return response.data;\n }\n async listSecrets() {\n const response = await this.client.get('/api/settings/secrets');\n return response.data;\n }\n async upsertSecret(request) {\n const response = await this.client.put('/api/settings/secrets', request);\n return response.data;\n }\n async getSecret(name) {\n const response = await this.client.get(`/api/settings/secrets/${encodeURIComponent(name)}`, { responseType: 'text' });\n return response.data;\n }\n async deleteSecret(name) {\n const response = await this.client.delete(`/api/settings/secrets/${encodeURIComponent(name)}`);\n return response.data;\n }\n async getConversationSchema() {\n const response = await this.client.get('/api/settings/conversation-schema');\n return response.data;\n }\n async listProfiles() {\n const response = await this.client.get('/api/profiles');\n return response.data;\n }\n async getProfile(name, options = {}) {\n const response = await this.client.get(`/api/profiles/${encodeURIComponent(name)}`, {\n headers: options.exposeSecrets ? { 'X-Expose-Secrets': options.exposeSecrets } : undefined,\n });\n return response.data;\n }\n async saveProfile(name, request) {\n const response = await this.client.post(`/api/profiles/${encodeURIComponent(name)}`, request);\n return response.data;\n }\n async deleteProfile(name) {\n const response = await this.client.delete(`/api/profiles/${encodeURIComponent(name)}`);\n return response.data;\n }\n async renameProfile(name, newName) {\n const response = await this.client.post(`/api/profiles/${encodeURIComponent(name)}/rename`, { new_name: newName });\n return response.data;\n }\n close() {\n this.client.close();\n }\n}\n//# sourceMappingURL=settings-client.js.map"],"x_google_ignoreList":[0],"mappings":";;AACA,IAAa,IAAb,MAA4B;CACxB,YAAY,GAAS;EAGjB,AAFA,KAAK,OAAO,EAAQ,KAAK,QAAQ,OAAO,EAAE,GAC1C,KAAK,SAAS,EAAQ,QACtB,KAAK,SAAS,IAAI,EAAW;GACzB,SAAS,KAAK;GACd,QAAQ,KAAK;GACb,SAAS,EAAQ,WAAW;EAChC,CAAC;CACL;CACA,MAAM,iBAAiB;EAEnB,QAAO,MADgB,KAAK,OAAO,IAAI,4BAA4B,GACnD;CACpB;CACA,MAAM,YAAY,IAAU,CAAC,GAAG;EAI5B,QAAO,MAHgB,KAAK,OAAO,IAAI,iBAAiB,EACpD,SAAS,EAAQ,gBAAgB,EAAE,oBAAoB,EAAQ,cAAc,IAAI,KAAA,EACrF,CAAC,GACe;CACpB;CACA,MAAM,eAAe,GAAS;EAE1B,QAAO,MADgB,KAAK,OAAO,MAAM,iBAAiB,CAAO,GACjD;CACpB;CACA,MAAM,cAAc;EAEhB,QAAO,MADgB,KAAK,OAAO,IAAI,uBAAuB,GAC9C;CACpB;CACA,MAAM,aAAa,GAAS;EAExB,QAAO,MADgB,KAAK,OAAO,IAAI,yBAAyB,CAAO,GACvD;CACpB;CACA,MAAM,UAAU,GAAM;EAElB,QAAO,MADgB,KAAK,OAAO,IAAI,yBAAyB,mBAAmB,CAAI,KAAK,EAAE,cAAc,OAAO,CAAC,GACpG;CACpB;CACA,MAAM,aAAa,GAAM;EAErB,QAAO,MADgB,KAAK,OAAO,OAAO,yBAAyB,mBAAmB,CAAI,GAAG,GAC7E;CACpB;CACA,MAAM,wBAAwB;EAE1B,QAAO,MADgB,KAAK,OAAO,IAAI,mCAAmC,GAC1D;CACpB;CACA,MAAM,eAAe;EAEjB,QAAO,MADgB,KAAK,OAAO,IAAI,eAAe,GACtC;CACpB;CACA,MAAM,WAAW,GAAM,IAAU,CAAC,GAAG;EAIjC,QAAO,MAHgB,KAAK,OAAO,IAAI,iBAAiB,mBAAmB,CAAI,KAAK,EAChF,SAAS,EAAQ,gBAAgB,EAAE,oBAAoB,EAAQ,cAAc,IAAI,KAAA,EACrF,CAAC,GACe;CACpB;CACA,MAAM,YAAY,GAAM,GAAS;EAE7B,QAAO,MADgB,KAAK,OAAO,KAAK,iBAAiB,mBAAmB,CAAI,KAAK,CAAO,GAC5E;CACpB;CACA,MAAM,cAAc,GAAM;EAEtB,QAAO,MADgB,KAAK,OAAO,OAAO,iBAAiB,mBAAmB,CAAI,GAAG,GACrE;CACpB;CACA,MAAM,cAAc,GAAM,GAAS;EAE/B,QAAO,MADgB,KAAK,OAAO,KAAK,iBAAiB,mBAAmB,CAAI,EAAE,UAAU,EAAE,UAAU,EAAQ,CAAC,GACjG;CACpB;CACA,QAAQ;EACJ,KAAK,OAAO,MAAM;CACtB;AACJ"}
1
+ {"version":3,"file":"settings-client.js","names":[],"sources":["../../../../../../node_modules/@openhands/typescript-client/dist/client/settings-client.js"],"sourcesContent":["import { HttpClient } from './http-client.js';\nexport class SettingsClient {\n constructor(options) {\n this.host = options.host.replace(/\\/$/, '');\n this.apiKey = options.apiKey;\n this.client = new HttpClient({\n baseUrl: this.host,\n apiKey: this.apiKey,\n timeout: options.timeout || 60000,\n });\n }\n async getAgentSchema() {\n const response = await this.client.get('/api/settings/agent-schema');\n return response.data;\n }\n async getSettings(options = {}) {\n const response = await this.client.get('/api/settings', {\n headers: options.exposeSecrets ? { 'X-Expose-Secrets': options.exposeSecrets } : undefined,\n });\n return response.data;\n }\n async updateSettings(request) {\n const response = await this.client.patch('/api/settings', request);\n return response.data;\n }\n /** Create one named MCP server without reading or resending the catalog. */\n async createMcpServer(settingsKey, server) {\n const response = await this.client.post(`/api/settings/mcp/${encodeURIComponent(settingsKey)}`, server);\n return response.data;\n }\n /** Sparsely update one existing named MCP server. */\n async patchMcpServer(settingsKey, patch) {\n const response = await this.client.patch(`/api/settings/mcp/${encodeURIComponent(settingsKey)}`, patch);\n return response.data;\n }\n /** Delete one existing named MCP server. */\n async deleteMcpServer(settingsKey) {\n const response = await this.client.delete(`/api/settings/mcp/${encodeURIComponent(settingsKey)}`);\n return response.data;\n }\n async listSecrets() {\n const response = await this.client.get('/api/settings/secrets');\n return response.data;\n }\n async upsertSecret(request) {\n const response = await this.client.put('/api/settings/secrets', request);\n return response.data;\n }\n async getSecret(name) {\n const response = await this.client.get(`/api/settings/secrets/${encodeURIComponent(name)}`, { responseType: 'text' });\n return response.data;\n }\n async deleteSecret(name) {\n const response = await this.client.delete(`/api/settings/secrets/${encodeURIComponent(name)}`);\n return response.data;\n }\n async getConversationSchema() {\n const response = await this.client.get('/api/settings/conversation-schema');\n return response.data;\n }\n async listProfiles() {\n const response = await this.client.get('/api/profiles');\n return response.data;\n }\n async getProfile(name, options = {}) {\n const response = await this.client.get(`/api/profiles/${encodeURIComponent(name)}`, {\n headers: options.exposeSecrets ? { 'X-Expose-Secrets': options.exposeSecrets } : undefined,\n });\n return response.data;\n }\n async saveProfile(name, request) {\n const response = await this.client.post(`/api/profiles/${encodeURIComponent(name)}`, request);\n return response.data;\n }\n async deleteProfile(name) {\n const response = await this.client.delete(`/api/profiles/${encodeURIComponent(name)}`);\n return response.data;\n }\n async renameProfile(name, newName) {\n const response = await this.client.post(`/api/profiles/${encodeURIComponent(name)}/rename`, { new_name: newName });\n return response.data;\n }\n close() {\n this.client.close();\n }\n}\n//# sourceMappingURL=settings-client.js.map"],"x_google_ignoreList":[0],"mappings":";;AACA,IAAa,IAAb,MAA4B;CACxB,YAAY,GAAS;EAGjB,AAFA,KAAK,OAAO,EAAQ,KAAK,QAAQ,OAAO,EAAE,GAC1C,KAAK,SAAS,EAAQ,QACtB,KAAK,SAAS,IAAI,EAAW;GACzB,SAAS,KAAK;GACd,QAAQ,KAAK;GACb,SAAS,EAAQ,WAAW;EAChC,CAAC;CACL;CACA,MAAM,iBAAiB;EAEnB,QAAO,MADgB,KAAK,OAAO,IAAI,4BAA4B,GACnD;CACpB;CACA,MAAM,YAAY,IAAU,CAAC,GAAG;EAI5B,QAAO,MAHgB,KAAK,OAAO,IAAI,iBAAiB,EACpD,SAAS,EAAQ,gBAAgB,EAAE,oBAAoB,EAAQ,cAAc,IAAI,KAAA,EACrF,CAAC,GACe;CACpB;CACA,MAAM,eAAe,GAAS;EAE1B,QAAO,MADgB,KAAK,OAAO,MAAM,iBAAiB,CAAO,GACjD;CACpB;CAEA,MAAM,gBAAgB,GAAa,GAAQ;EAEvC,QAAO,MADgB,KAAK,OAAO,KAAK,qBAAqB,mBAAmB,CAAW,KAAK,CAAM,GACtF;CACpB;CAEA,MAAM,eAAe,GAAa,GAAO;EAErC,QAAO,MADgB,KAAK,OAAO,MAAM,qBAAqB,mBAAmB,CAAW,KAAK,CAAK,GACtF;CACpB;CAEA,MAAM,gBAAgB,GAAa;EAE/B,QAAO,MADgB,KAAK,OAAO,OAAO,qBAAqB,mBAAmB,CAAW,GAAG,GAChF;CACpB;CACA,MAAM,cAAc;EAEhB,QAAO,MADgB,KAAK,OAAO,IAAI,uBAAuB,GAC9C;CACpB;CACA,MAAM,aAAa,GAAS;EAExB,QAAO,MADgB,KAAK,OAAO,IAAI,yBAAyB,CAAO,GACvD;CACpB;CACA,MAAM,UAAU,GAAM;EAElB,QAAO,MADgB,KAAK,OAAO,IAAI,yBAAyB,mBAAmB,CAAI,KAAK,EAAE,cAAc,OAAO,CAAC,GACpG;CACpB;CACA,MAAM,aAAa,GAAM;EAErB,QAAO,MADgB,KAAK,OAAO,OAAO,yBAAyB,mBAAmB,CAAI,GAAG,GAC7E;CACpB;CACA,MAAM,wBAAwB;EAE1B,QAAO,MADgB,KAAK,OAAO,IAAI,mCAAmC,GAC1D;CACpB;CACA,MAAM,eAAe;EAEjB,QAAO,MADgB,KAAK,OAAO,IAAI,eAAe,GACtC;CACpB;CACA,MAAM,WAAW,GAAM,IAAU,CAAC,GAAG;EAIjC,QAAO,MAHgB,KAAK,OAAO,IAAI,iBAAiB,mBAAmB,CAAI,KAAK,EAChF,SAAS,EAAQ,gBAAgB,EAAE,oBAAoB,EAAQ,cAAc,IAAI,KAAA,EACrF,CAAC,GACe;CACpB;CACA,MAAM,YAAY,GAAM,GAAS;EAE7B,QAAO,MADgB,KAAK,OAAO,KAAK,iBAAiB,mBAAmB,CAAI,KAAK,CAAO,GAC5E;CACpB;CACA,MAAM,cAAc,GAAM;EAEtB,QAAO,MADgB,KAAK,OAAO,OAAO,iBAAiB,mBAAmB,CAAI,GAAG,GACrE;CACpB;CACA,MAAM,cAAc,GAAM,GAAS;EAE/B,QAAO,MADgB,KAAK,OAAO,KAAK,iBAAiB,mBAAmB,CAAI,EAAE,UAAU,EAAE,UAAU,EAAQ,CAAC,GACjG;CACpB;CACA,QAAQ;EACJ,KAAK,OAAO,MAAM;CACtB;AACJ"}
package/dist/package.cjs CHANGED
@@ -1,2 +1,2 @@
1
- require("./_virtual/_rolldown/runtime.cjs");var e={name:`@openhands/agent-canvas`,version:`1.7.1`,description:`Agent Canvas UI for OpenHands - run AI coding agents with a visual interface`,license:`MIT`,private:!1,type:`module`,repository:{type:`git`,url:`https://github.com/OpenHands/OpenHands`},homepage:`https://github.com/OpenHands/OpenHands#readme`,bugs:{url:`https://github.com/OpenHands/OpenHands/issues`},bin:{"agent-canvas":`bin/agent-canvas.mjs`},engines:{node:`>=22.12.0`},dependencies:{"@heroui/react":`2.8.10`,"@microlink/react-json-view":`1.31.20`,"@monaco-editor/react":`4.7.0`,"@openhands/extensions":`0.11.0`,"@openhands/typescript-client":`1.34.0`,"@react-router/node":`7.17.0`,"@react-router/serve":`7.17.0`,"@tailwindcss/vite":`4.2.4`,"@tanstack/react-query":`5.100.9`,"@types/shell-quote":`1.7.5`,"@uidotdev/usehooks":`2.4.1`,"@xterm/addon-fit":`0.11.0`,"@xterm/xterm":`6.0.0`,axios:`1.18.0`,"class-variance-authority":`0.7.1`,clsx:`2.1.1`,downshift:`9.3.2`,"framer-motion":`12.38.0`,httpxy:`0.5.3`,i18next:`26.0.8`,"i18next-browser-languagedetector":`8.2.1`,"i18next-http-backend":`4.0.0`,isbot:`5.1.39`,"lucide-react":`1.25.0`,"monaco-editor":`0.55.1`,"posthog-js":`1.372.6`,react:`19.2.5`,"react-dom":`19.2.5`,"react-hot-toast":`2.6.0`,"react-i18next":`17.0.6`,"react-icons":`5.6.0`,"react-markdown":`10.1.0`,"react-router":`7.17.0`,"react-syntax-highlighter":`16.1.1`,"rehype-raw":`7.0.0`,"rehype-sanitize":`6.0.0`,"remark-breaks":`4.0.0`,"remark-gfm":`4.0.1`,"shell-quote":`1.9.0`,sirv:`3.0.2`,"sirv-cli":`3.0.1`,"socket.io-client":`4.8.3`,"tailwind-merge":`3.5.0`,"tailwind-scrollbar":`4.0.2`,"unist-util-visit":`5.1.0`,uuid:`14.0.0`,vite:`8.0.16`,winston:`3.19.0`,"winston-daily-rotate-file":`5.0.0`,zustand:`5.0.12`},scripts:{dev:`node --env-file-if-exists=.env scripts/dev-with-automation.mjs`,"dev:static":`node --env-file-if-exists=.env scripts/dev-static.mjs`,"dev:extra-backend":`node --env-file-if-exists=.env scripts/dev-extra-backend.mjs`,"dev:minimal":`node --env-file-if-exists=.env scripts/dev-safe.mjs`,"dev:frontend":`npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev`,"dev:mock":`npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev`,build:`npm run build:app`,"build:mock":`npm run make-i18n && cross-env VITE_MOCK_API=true react-router build`,start:`npx sirv-cli build/ --single`,test:`npm run make-i18n && vitest run`,"test:e2e":`playwright test --pass-with-no-tests`,"test:e2e:live":`node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs`,"test:e2e:mock-llm":`playwright test --config=playwright.mock-llm.config.ts`,"test:e2e:mock-llm:docker":`playwright test --config=playwright.mock-llm-docker.config.ts`,"test:coverage":`npm run make-i18n && vitest run --coverage`,dev_wsl:`VITE_WATCH_USE_POLLING=true vite`,preview:`vite preview`,"make-i18n":`node scripts/make-i18n-translations.cjs`,prelint:`npm run make-i18n`,lint:`npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}`,"lint:fix":`eslint src --fix && prettier --write src/**/*.{ts,tsx}`,prepare:`husky`,typecheck:`react-router typegen && tsc`,"typecheck:staged":`react-router typegen && npx tsc --noEmit --skipLibCheck`,"check-translation-completeness":`node scripts/check-translation-completeness.cjs`,"build:app":`npm run make-i18n && react-router build`,"build:lib":`npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true vite build && tsc -p tsconfig.lib.json`,"build:docker":`node scripts/docker-build.mjs`,"example:acp-docker:env":`node scripts/gen-acp-docker-env.mjs`,desktop:`npm run build:app && electron electron/main.mjs`,"build:desktop":`npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && electron-builder --config electron-builder.config.mjs --publish never`,"build:desktop:universal":`npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && cross-env ELECTRON_ARCH=universal electron-builder --config electron-builder.config.mjs --publish never`,"download-uv":`node scripts/download-uv.mjs`,"download-node":`node scripts/download-node.mjs`},"lint-staged":{"src/**/*.{ts,tsx,js}":[`eslint --fix`,`prettier --write`],"src/**/*.{ts,tsx}":[`node scripts/run-staged-typecheck.mjs`],"src/**/*":[`npm run check-translation-completeness`]},devDependencies:{"@eslint/eslintrc":`3.3.1`,"@eslint/js":`9.39.4`,"@mswjs/socket.io-binding":`0.2.0`,"@playwright/test":`1.59.1`,"@react-router/dev":`7.17.0`,"@tailwindcss/typography":`0.5.19`,"@tanstack/eslint-plugin-query":`5.100.9`,"@testing-library/dom":`10.4.1`,"@testing-library/jest-dom":`6.9.1`,"@testing-library/react":`16.3.2`,"@testing-library/user-event":`14.6.1`,"@types/mdast":`4.0.4`,"@types/node":`25.6.0`,"@types/react":`19.2.14`,"@types/react-dom":`19.2.3`,"@types/react-syntax-highlighter":`15.5.13`,"@typescript-eslint/eslint-plugin":`8.59.2`,"@typescript-eslint/parser":`8.59.2`,"@vercel/react-router":`1.3.0`,"@vitest/coverage-v8":`4.1.5`,"cross-env":`10.1.0`,electron:`42.3.3`,"electron-builder":`26.8.1`,eslint:`9.39.4`,"eslint-config-prettier":`10.1.8`,"eslint-import-resolver-typescript":`4.4.4`,"eslint-plugin-i18next":`6.1.4`,"eslint-plugin-import-x":`4.16.2`,"eslint-plugin-jsx-a11y":`6.10.2`,"eslint-plugin-prettier":`5.5.5`,"eslint-plugin-react":`7.37.5`,"eslint-plugin-react-hooks":`7.1.1`,"eslint-plugin-unused-imports":`4.4.1`,globals:`16.5.0`,husky:`9.1.7`,jsdom:`29.1.1`,"lint-staged":`16.4.0`,msw:`2.14.2`,"postcss-prefix-selector":`2.1.1`,prettier:`3.8.3`,tailwindcss:`4.2.4`,typescript:`6.0.3`,"vite-plugin-svgr":`5.2.0`,vitest:`4.1.5`},packageManager:`npm@10.5.0`,volta:{node:`22.12.0`},msw:{workerDirectory:[`public`]},overrides:{"@vercel/static-config":{ajv:`8.20.0`},dompurify:`3.4.7`},main:`./dist/index.cjs`,module:`./dist/index.js`,types:`./dist/index.d.ts`,files:[`dist`,`bin`,`build`,`config`,`scripts`,`tools`],exports:{".":{types:`./dist/index.d.ts`,import:`./dist/index.js`,require:`./dist/index.cjs`},"./browser":{types:`./dist/components/browser/index.d.ts`,import:`./dist/components/browser/index.js`,require:`./dist/components/browser/index.cjs`},"./conversation":{types:`./dist/components/conversation/index.d.ts`,import:`./dist/components/conversation/index.js`,require:`./dist/components/conversation/index.cjs`},"./files":{types:`./dist/components/files/index.d.ts`,import:`./dist/components/files/index.js`,require:`./dist/components/files/index.cjs`},"./settings":{types:`./dist/components/settings/index.d.ts`,import:`./dist/components/settings/index.js`,require:`./dist/components/settings/index.cjs`},"./sidebar":{types:`./dist/components/sidebar/index.d.ts`,import:`./dist/components/sidebar/index.js`,require:`./dist/components/sidebar/index.cjs`},"./terminal":{types:`./dist/components/terminal/index.d.ts`,import:`./dist/components/terminal/index.js`,require:`./dist/components/terminal/index.cjs`},"./i18n":{types:`./dist/i18n/index.d.ts`,import:`./dist/i18n/index.js`,require:`./dist/i18n/index.cjs`},"./package.json":`./package.json`},peerDependencies:{react:`19.2.5`,"react-dom":`19.2.5`,"react-router":`7.17.0`}};exports.default=e;
1
+ require("./_virtual/_rolldown/runtime.cjs");var e={name:`@openhands/agent-canvas`,version:`1.8.0`,description:`Agent Canvas UI for OpenHands - run AI coding agents with a visual interface`,license:`MIT`,private:!1,type:`module`,repository:{type:`git`,url:`https://github.com/OpenHands/OpenHands`},homepage:`https://github.com/OpenHands/OpenHands#readme`,bugs:{url:`https://github.com/OpenHands/OpenHands/issues`},bin:{"agent-canvas":`bin/agent-canvas.mjs`},engines:{node:`>=22.12.0`},dependencies:{"@heroui/react":`2.8.10`,"@microlink/react-json-view":`1.31.20`,"@monaco-editor/react":`4.7.0`,"@openhands/extensions":`0.11.0`,"@openhands/typescript-client":`1.36.1`,"@react-router/node":`7.17.0`,"@react-router/serve":`7.17.0`,"@tailwindcss/vite":`4.2.4`,"@tanstack/react-query":`5.100.9`,"@types/shell-quote":`1.7.5`,"@uidotdev/usehooks":`2.4.1`,"@xterm/addon-fit":`0.11.0`,"@xterm/xterm":`6.0.0`,axios:`1.18.0`,"class-variance-authority":`0.7.1`,clsx:`2.1.1`,downshift:`9.3.2`,"framer-motion":`12.38.0`,httpxy:`0.5.3`,i18next:`26.0.8`,"i18next-browser-languagedetector":`8.2.1`,"i18next-http-backend":`4.0.0`,isbot:`5.1.39`,"lucide-react":`1.25.0`,"monaco-editor":`0.55.1`,"posthog-js":`1.372.6`,react:`19.2.5`,"react-dom":`19.2.5`,"react-hot-toast":`2.6.0`,"react-i18next":`17.0.6`,"react-icons":`5.6.0`,"react-markdown":`10.1.0`,"react-router":`7.17.0`,"react-syntax-highlighter":`16.1.1`,"rehype-raw":`7.0.0`,"rehype-sanitize":`6.0.0`,"remark-breaks":`4.0.0`,"remark-gfm":`4.0.1`,"shell-quote":`1.9.0`,sirv:`3.0.2`,"sirv-cli":`3.0.1`,"socket.io-client":`4.8.3`,"tailwind-merge":`3.5.0`,"tailwind-scrollbar":`4.0.2`,"unist-util-visit":`5.1.0`,uuid:`14.0.0`,vite:`8.0.16`,winston:`3.19.0`,"winston-daily-rotate-file":`5.0.0`,zustand:`5.0.12`},scripts:{dev:`node --env-file-if-exists=.env scripts/dev-with-automation.mjs`,"dev:static":`node --env-file-if-exists=.env scripts/dev-static.mjs`,"dev:extra-backend":`node --env-file-if-exists=.env scripts/dev-extra-backend.mjs`,"dev:minimal":`node --env-file-if-exists=.env scripts/dev-safe.mjs`,"dev:frontend":`npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev`,"dev:mock":`npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev`,build:`npm run build:app`,"build:mock":`npm run make-i18n && cross-env VITE_MOCK_API=true react-router build`,start:`npx sirv-cli build/ --single`,test:`npm run make-i18n && vitest run`,"test:e2e":`playwright test --pass-with-no-tests`,"test:e2e:live":`node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs`,"test:e2e:mock-llm":`playwright test --config=playwright.mock-llm.config.ts`,"test:e2e:mock-llm:docker":`playwright test --config=playwright.mock-llm-docker.config.ts`,"test:coverage":`npm run make-i18n && vitest run --coverage`,"test:mutation":`npm run make-i18n && stryker run`,"test:mutation:diff":`npm run make-i18n && node scripts/stryker-diff.mjs`,"test:mutation:incremental":`npm run make-i18n && stryker run --incremental`,dev_wsl:`VITE_WATCH_USE_POLLING=true vite`,preview:`vite preview`,"make-i18n":`node scripts/make-i18n-translations.cjs`,prelint:`npm run make-i18n`,lint:`npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}`,"lint:fix":`eslint src --fix && prettier --write src/**/*.{ts,tsx}`,prepare:`husky`,typecheck:`react-router typegen && tsc`,"typecheck:staged":`react-router typegen && npx tsc --noEmit --skipLibCheck`,"check-translation-completeness":`node scripts/check-translation-completeness.cjs`,"build:app":`npm run make-i18n && react-router build`,"build:lib":`npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true vite build && tsc -p tsconfig.lib.json`,"build:docker":`node scripts/docker-build.mjs`,"example:acp-docker:env":`node scripts/gen-acp-docker-env.mjs`,desktop:`npm run build:app && electron electron/main.mjs`,"build:desktop":`npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && electron-builder --config electron-builder.config.mjs --publish never`,"build:desktop:universal":`npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && cross-env ELECTRON_ARCH=universal electron-builder --config electron-builder.config.mjs --publish never`,"download-uv":`node scripts/download-uv.mjs`,"download-node":`node scripts/download-node.mjs`},"lint-staged":{"src/**/*.{ts,tsx,js}":[`eslint --fix`,`prettier --write`],"src/**/*.{ts,tsx}":[`node scripts/run-staged-typecheck.mjs`],"src/**/*":[`npm run check-translation-completeness`]},devDependencies:{"@eslint/eslintrc":`3.3.1`,"@eslint/js":`9.39.4`,"@mswjs/socket.io-binding":`0.2.0`,"@playwright/test":`1.59.1`,"@react-router/dev":`7.17.0`,"@stryker-mutator/core":`9.6.1`,"@stryker-mutator/vitest-runner":`9.6.1`,"@tailwindcss/typography":`0.5.19`,"@tanstack/eslint-plugin-query":`5.100.9`,"@testing-library/dom":`10.4.1`,"@testing-library/jest-dom":`6.9.1`,"@testing-library/react":`16.3.2`,"@testing-library/user-event":`14.6.1`,"@types/mdast":`4.0.4`,"@types/node":`25.6.0`,"@types/react":`19.2.14`,"@types/react-dom":`19.2.3`,"@types/react-syntax-highlighter":`15.5.13`,"@typescript-eslint/eslint-plugin":`8.59.2`,"@typescript-eslint/parser":`8.59.2`,"@vercel/react-router":`1.3.0`,"@vitest/coverage-v8":`4.1.5`,"cross-env":`10.1.0`,electron:`42.3.3`,"electron-builder":`26.8.1`,eslint:`9.39.4`,"eslint-config-prettier":`10.1.8`,"eslint-import-resolver-typescript":`4.4.4`,"eslint-plugin-i18next":`6.1.4`,"eslint-plugin-import-x":`4.16.2`,"eslint-plugin-jsx-a11y":`6.10.2`,"eslint-plugin-prettier":`5.5.5`,"eslint-plugin-react":`7.37.5`,"eslint-plugin-react-hooks":`7.1.1`,"eslint-plugin-unused-imports":`4.4.1`,globals:`16.5.0`,husky:`9.1.7`,jsdom:`29.1.1`,"lint-staged":`16.4.0`,msw:`2.14.2`,"postcss-prefix-selector":`2.1.1`,prettier:`3.8.3`,tailwindcss:`4.2.4`,typescript:`6.0.3`,"vite-plugin-svgr":`5.2.0`,vitest:`4.1.5`},packageManager:`npm@10.5.0`,volta:{node:`22.12.0`},msw:{workerDirectory:[`public`]},overrides:{"@vercel/static-config":{ajv:`8.20.0`},dompurify:`3.4.7`},main:`./dist/index.cjs`,module:`./dist/index.js`,types:`./dist/index.d.ts`,files:[`dist`,`bin`,`build`,`config`,`scripts`,`tools`],exports:{".":{types:`./dist/index.d.ts`,import:`./dist/index.js`,require:`./dist/index.cjs`},"./browser":{types:`./dist/components/browser/index.d.ts`,import:`./dist/components/browser/index.js`,require:`./dist/components/browser/index.cjs`},"./conversation":{types:`./dist/components/conversation/index.d.ts`,import:`./dist/components/conversation/index.js`,require:`./dist/components/conversation/index.cjs`},"./files":{types:`./dist/components/files/index.d.ts`,import:`./dist/components/files/index.js`,require:`./dist/components/files/index.cjs`},"./settings":{types:`./dist/components/settings/index.d.ts`,import:`./dist/components/settings/index.js`,require:`./dist/components/settings/index.cjs`},"./sidebar":{types:`./dist/components/sidebar/index.d.ts`,import:`./dist/components/sidebar/index.js`,require:`./dist/components/sidebar/index.cjs`},"./terminal":{types:`./dist/components/terminal/index.d.ts`,import:`./dist/components/terminal/index.js`,require:`./dist/components/terminal/index.cjs`},"./i18n":{types:`./dist/i18n/index.d.ts`,import:`./dist/i18n/index.js`,require:`./dist/i18n/index.cjs`},"./package.json":`./package.json`},peerDependencies:{react:`19.2.5`,"react-dom":`19.2.5`,"react-router":`7.17.0`}};exports.default=e;
2
2
  //# sourceMappingURL=package.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"package.cjs","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.7.1\",\n \"description\": \"Agent Canvas UI for OpenHands - run AI coding agents with a visual interface\",\n \"license\": \"MIT\",\n \"private\": false,\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/OpenHands/OpenHands\"\n },\n \"homepage\": \"https://github.com/OpenHands/OpenHands#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/OpenHands/OpenHands/issues\"\n },\n \"bin\": {\n \"agent-canvas\": \"bin/agent-canvas.mjs\"\n },\n \"engines\": {\n \"node\": \">=22.12.0\"\n },\n \"dependencies\": {\n \"@heroui/react\": \"2.8.10\",\n \"@microlink/react-json-view\": \"1.31.20\",\n \"@monaco-editor/react\": \"4.7.0\",\n \"@openhands/extensions\": \"0.11.0\",\n \"@openhands/typescript-client\": \"1.34.0\",\n \"@react-router/node\": \"7.17.0\",\n \"@react-router/serve\": \"7.17.0\",\n \"@tailwindcss/vite\": \"4.2.4\",\n \"@tanstack/react-query\": \"5.100.9\",\n \"@types/shell-quote\": \"1.7.5\",\n \"@uidotdev/usehooks\": \"2.4.1\",\n \"@xterm/addon-fit\": \"0.11.0\",\n \"@xterm/xterm\": \"6.0.0\",\n \"axios\": \"1.18.0\",\n \"class-variance-authority\": \"0.7.1\",\n \"clsx\": \"2.1.1\",\n \"downshift\": \"9.3.2\",\n \"framer-motion\": \"12.38.0\",\n \"httpxy\": \"0.5.3\",\n \"i18next\": \"26.0.8\",\n \"i18next-browser-languagedetector\": \"8.2.1\",\n \"i18next-http-backend\": \"4.0.0\",\n \"isbot\": \"5.1.39\",\n \"lucide-react\": \"1.25.0\",\n \"monaco-editor\": \"0.55.1\",\n \"posthog-js\": \"1.372.6\",\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-hot-toast\": \"2.6.0\",\n \"react-i18next\": \"17.0.6\",\n \"react-icons\": \"5.6.0\",\n \"react-markdown\": \"10.1.0\",\n \"react-router\": \"7.17.0\",\n \"react-syntax-highlighter\": \"16.1.1\",\n \"rehype-raw\": \"7.0.0\",\n \"rehype-sanitize\": \"6.0.0\",\n \"remark-breaks\": \"4.0.0\",\n \"remark-gfm\": \"4.0.1\",\n \"shell-quote\": \"1.9.0\",\n \"sirv\": \"3.0.2\",\n \"sirv-cli\": \"3.0.1\",\n \"socket.io-client\": \"4.8.3\",\n \"tailwind-merge\": \"3.5.0\",\n \"tailwind-scrollbar\": \"4.0.2\",\n \"unist-util-visit\": \"5.1.0\",\n \"uuid\": \"14.0.0\",\n \"vite\": \"8.0.16\",\n \"winston\": \"3.19.0\",\n \"winston-daily-rotate-file\": \"5.0.0\",\n \"zustand\": \"5.0.12\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env scripts/dev-with-automation.mjs\",\n \"dev:static\": \"node --env-file-if-exists=.env scripts/dev-static.mjs\",\n \"dev:extra-backend\": \"node --env-file-if-exists=.env scripts/dev-extra-backend.mjs\",\n \"dev:minimal\": \"node --env-file-if-exists=.env scripts/dev-safe.mjs\",\n \"dev:frontend\": \"npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev\",\n \"dev:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev\",\n \"build\": \"npm run build:app\",\n \"build:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router build\",\n \"start\": \"npx sirv-cli build/ --single\",\n \"test\": \"npm run make-i18n && vitest run\",\n \"test:e2e\": \"playwright test --pass-with-no-tests\",\n \"test:e2e:live\": \"node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs\",\n \"test:e2e:mock-llm\": \"playwright test --config=playwright.mock-llm.config.ts\",\n \"test:e2e:mock-llm:docker\": \"playwright test --config=playwright.mock-llm-docker.config.ts\",\n \"test:coverage\": \"npm run make-i18n && vitest run --coverage\",\n \"dev_wsl\": \"VITE_WATCH_USE_POLLING=true vite\",\n \"preview\": \"vite preview\",\n \"make-i18n\": \"node scripts/make-i18n-translations.cjs\",\n \"prelint\": \"npm run make-i18n\",\n \"lint\": \"npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}\",\n \"lint:fix\": \"eslint src --fix && prettier --write src/**/*.{ts,tsx}\",\n \"prepare\": \"husky\",\n \"typecheck\": \"react-router typegen && tsc\",\n \"typecheck:staged\": \"react-router typegen && npx tsc --noEmit --skipLibCheck\",\n \"check-translation-completeness\": \"node scripts/check-translation-completeness.cjs\",\n \"build:app\": \"npm run make-i18n && react-router build\",\n \"build:lib\": \"npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true vite build && tsc -p tsconfig.lib.json\",\n \"build:docker\": \"node scripts/docker-build.mjs\",\n \"example:acp-docker:env\": \"node scripts/gen-acp-docker-env.mjs\",\n \"desktop\": \"npm run build:app && electron electron/main.mjs\",\n \"build:desktop\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && electron-builder --config electron-builder.config.mjs --publish never\",\n \"build:desktop:universal\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && cross-env ELECTRON_ARCH=universal electron-builder --config electron-builder.config.mjs --publish never\",\n \"download-uv\": \"node scripts/download-uv.mjs\",\n \"download-node\": \"node scripts/download-node.mjs\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,tsx,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"src/**/*.{ts,tsx}\": [\n \"node scripts/run-staged-typecheck.mjs\"\n ],\n \"src/**/*\": [\n \"npm run check-translation-completeness\"\n ]\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"3.3.1\",\n \"@eslint/js\": \"9.39.4\",\n \"@mswjs/socket.io-binding\": \"0.2.0\",\n \"@playwright/test\": \"1.59.1\",\n \"@react-router/dev\": \"7.17.0\",\n \"@tailwindcss/typography\": \"0.5.19\",\n \"@tanstack/eslint-plugin-query\": \"5.100.9\",\n \"@testing-library/dom\": \"10.4.1\",\n \"@testing-library/jest-dom\": \"6.9.1\",\n \"@testing-library/react\": \"16.3.2\",\n \"@testing-library/user-event\": \"14.6.1\",\n \"@types/mdast\": \"4.0.4\",\n \"@types/node\": \"25.6.0\",\n \"@types/react\": \"19.2.14\",\n \"@types/react-dom\": \"19.2.3\",\n \"@types/react-syntax-highlighter\": \"15.5.13\",\n \"@typescript-eslint/eslint-plugin\": \"8.59.2\",\n \"@typescript-eslint/parser\": \"8.59.2\",\n \"@vercel/react-router\": \"1.3.0\",\n \"@vitest/coverage-v8\": \"4.1.5\",\n \"cross-env\": \"10.1.0\",\n \"electron\": \"42.3.3\",\n \"electron-builder\": \"26.8.1\",\n \"eslint\": \"9.39.4\",\n \"eslint-config-prettier\": \"10.1.8\",\n \"eslint-import-resolver-typescript\": \"4.4.4\",\n \"eslint-plugin-i18next\": \"6.1.4\",\n \"eslint-plugin-import-x\": \"4.16.2\",\n \"eslint-plugin-jsx-a11y\": \"6.10.2\",\n \"eslint-plugin-prettier\": \"5.5.5\",\n \"eslint-plugin-react\": \"7.37.5\",\n \"eslint-plugin-react-hooks\": \"7.1.1\",\n \"eslint-plugin-unused-imports\": \"4.4.1\",\n \"globals\": \"16.5.0\",\n \"husky\": \"9.1.7\",\n \"jsdom\": \"29.1.1\",\n \"lint-staged\": \"16.4.0\",\n \"msw\": \"2.14.2\",\n \"postcss-prefix-selector\": \"2.1.1\",\n \"prettier\": \"3.8.3\",\n \"tailwindcss\": \"4.2.4\",\n \"typescript\": \"6.0.3\",\n \"vite-plugin-svgr\": \"5.2.0\",\n \"vitest\": \"4.1.5\"\n },\n \"packageManager\": \"npm@10.5.0\",\n \"volta\": {\n \"node\": \"22.12.0\"\n },\n \"msw\": {\n \"workerDirectory\": [\n \"public\"\n ]\n },\n \"overrides\": {\n \"@vercel/static-config\": {\n \"ajv\": \"8.20.0\"\n },\n \"dompurify\": \"3.4.7\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"build\",\n \"config\",\n \"scripts\",\n \"tools\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./browser\": {\n \"types\": \"./dist/components/browser/index.d.ts\",\n \"import\": \"./dist/components/browser/index.js\",\n \"require\": \"./dist/components/browser/index.cjs\"\n },\n \"./conversation\": {\n \"types\": \"./dist/components/conversation/index.d.ts\",\n \"import\": \"./dist/components/conversation/index.js\",\n \"require\": \"./dist/components/conversation/index.cjs\"\n },\n \"./files\": {\n \"types\": \"./dist/components/files/index.d.ts\",\n \"import\": \"./dist/components/files/index.js\",\n \"require\": \"./dist/components/files/index.cjs\"\n },\n \"./settings\": {\n \"types\": \"./dist/components/settings/index.d.ts\",\n \"import\": \"./dist/components/settings/index.js\",\n \"require\": \"./dist/components/settings/index.cjs\"\n },\n \"./sidebar\": {\n \"types\": \"./dist/components/sidebar/index.d.ts\",\n \"import\": \"./dist/components/sidebar/index.js\",\n \"require\": \"./dist/components/sidebar/index.cjs\"\n },\n \"./terminal\": {\n \"types\": \"./dist/components/terminal/index.d.ts\",\n \"import\": \"./dist/components/terminal/index.js\",\n \"require\": \"./dist/components/terminal/index.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.js\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"peerDependencies\": {\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-router\": \"7.17.0\"\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"package.cjs","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.8.0\",\n \"description\": \"Agent Canvas UI for OpenHands - run AI coding agents with a visual interface\",\n \"license\": \"MIT\",\n \"private\": false,\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/OpenHands/OpenHands\"\n },\n \"homepage\": \"https://github.com/OpenHands/OpenHands#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/OpenHands/OpenHands/issues\"\n },\n \"bin\": {\n \"agent-canvas\": \"bin/agent-canvas.mjs\"\n },\n \"engines\": {\n \"node\": \">=22.12.0\"\n },\n \"dependencies\": {\n \"@heroui/react\": \"2.8.10\",\n \"@microlink/react-json-view\": \"1.31.20\",\n \"@monaco-editor/react\": \"4.7.0\",\n \"@openhands/extensions\": \"0.11.0\",\n \"@openhands/typescript-client\": \"1.36.1\",\n \"@react-router/node\": \"7.17.0\",\n \"@react-router/serve\": \"7.17.0\",\n \"@tailwindcss/vite\": \"4.2.4\",\n \"@tanstack/react-query\": \"5.100.9\",\n \"@types/shell-quote\": \"1.7.5\",\n \"@uidotdev/usehooks\": \"2.4.1\",\n \"@xterm/addon-fit\": \"0.11.0\",\n \"@xterm/xterm\": \"6.0.0\",\n \"axios\": \"1.18.0\",\n \"class-variance-authority\": \"0.7.1\",\n \"clsx\": \"2.1.1\",\n \"downshift\": \"9.3.2\",\n \"framer-motion\": \"12.38.0\",\n \"httpxy\": \"0.5.3\",\n \"i18next\": \"26.0.8\",\n \"i18next-browser-languagedetector\": \"8.2.1\",\n \"i18next-http-backend\": \"4.0.0\",\n \"isbot\": \"5.1.39\",\n \"lucide-react\": \"1.25.0\",\n \"monaco-editor\": \"0.55.1\",\n \"posthog-js\": \"1.372.6\",\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-hot-toast\": \"2.6.0\",\n \"react-i18next\": \"17.0.6\",\n \"react-icons\": \"5.6.0\",\n \"react-markdown\": \"10.1.0\",\n \"react-router\": \"7.17.0\",\n \"react-syntax-highlighter\": \"16.1.1\",\n \"rehype-raw\": \"7.0.0\",\n \"rehype-sanitize\": \"6.0.0\",\n \"remark-breaks\": \"4.0.0\",\n \"remark-gfm\": \"4.0.1\",\n \"shell-quote\": \"1.9.0\",\n \"sirv\": \"3.0.2\",\n \"sirv-cli\": \"3.0.1\",\n \"socket.io-client\": \"4.8.3\",\n \"tailwind-merge\": \"3.5.0\",\n \"tailwind-scrollbar\": \"4.0.2\",\n \"unist-util-visit\": \"5.1.0\",\n \"uuid\": \"14.0.0\",\n \"vite\": \"8.0.16\",\n \"winston\": \"3.19.0\",\n \"winston-daily-rotate-file\": \"5.0.0\",\n \"zustand\": \"5.0.12\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env scripts/dev-with-automation.mjs\",\n \"dev:static\": \"node --env-file-if-exists=.env scripts/dev-static.mjs\",\n \"dev:extra-backend\": \"node --env-file-if-exists=.env scripts/dev-extra-backend.mjs\",\n \"dev:minimal\": \"node --env-file-if-exists=.env scripts/dev-safe.mjs\",\n \"dev:frontend\": \"npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev\",\n \"dev:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev\",\n \"build\": \"npm run build:app\",\n \"build:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router build\",\n \"start\": \"npx sirv-cli build/ --single\",\n \"test\": \"npm run make-i18n && vitest run\",\n \"test:e2e\": \"playwright test --pass-with-no-tests\",\n \"test:e2e:live\": \"node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs\",\n \"test:e2e:mock-llm\": \"playwright test --config=playwright.mock-llm.config.ts\",\n \"test:e2e:mock-llm:docker\": \"playwright test --config=playwright.mock-llm-docker.config.ts\",\n \"test:coverage\": \"npm run make-i18n && vitest run --coverage\",\n \"test:mutation\": \"npm run make-i18n && stryker run\",\n \"test:mutation:diff\": \"npm run make-i18n && node scripts/stryker-diff.mjs\",\n \"test:mutation:incremental\": \"npm run make-i18n && stryker run --incremental\",\n \"dev_wsl\": \"VITE_WATCH_USE_POLLING=true vite\",\n \"preview\": \"vite preview\",\n \"make-i18n\": \"node scripts/make-i18n-translations.cjs\",\n \"prelint\": \"npm run make-i18n\",\n \"lint\": \"npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}\",\n \"lint:fix\": \"eslint src --fix && prettier --write src/**/*.{ts,tsx}\",\n \"prepare\": \"husky\",\n \"typecheck\": \"react-router typegen && tsc\",\n \"typecheck:staged\": \"react-router typegen && npx tsc --noEmit --skipLibCheck\",\n \"check-translation-completeness\": \"node scripts/check-translation-completeness.cjs\",\n \"build:app\": \"npm run make-i18n && react-router build\",\n \"build:lib\": \"npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true vite build && tsc -p tsconfig.lib.json\",\n \"build:docker\": \"node scripts/docker-build.mjs\",\n \"example:acp-docker:env\": \"node scripts/gen-acp-docker-env.mjs\",\n \"desktop\": \"npm run build:app && electron electron/main.mjs\",\n \"build:desktop\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && electron-builder --config electron-builder.config.mjs --publish never\",\n \"build:desktop:universal\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && cross-env ELECTRON_ARCH=universal electron-builder --config electron-builder.config.mjs --publish never\",\n \"download-uv\": \"node scripts/download-uv.mjs\",\n \"download-node\": \"node scripts/download-node.mjs\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,tsx,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"src/**/*.{ts,tsx}\": [\n \"node scripts/run-staged-typecheck.mjs\"\n ],\n \"src/**/*\": [\n \"npm run check-translation-completeness\"\n ]\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"3.3.1\",\n \"@eslint/js\": \"9.39.4\",\n \"@mswjs/socket.io-binding\": \"0.2.0\",\n \"@playwright/test\": \"1.59.1\",\n \"@react-router/dev\": \"7.17.0\",\n \"@stryker-mutator/core\": \"9.6.1\",\n \"@stryker-mutator/vitest-runner\": \"9.6.1\",\n \"@tailwindcss/typography\": \"0.5.19\",\n \"@tanstack/eslint-plugin-query\": \"5.100.9\",\n \"@testing-library/dom\": \"10.4.1\",\n \"@testing-library/jest-dom\": \"6.9.1\",\n \"@testing-library/react\": \"16.3.2\",\n \"@testing-library/user-event\": \"14.6.1\",\n \"@types/mdast\": \"4.0.4\",\n \"@types/node\": \"25.6.0\",\n \"@types/react\": \"19.2.14\",\n \"@types/react-dom\": \"19.2.3\",\n \"@types/react-syntax-highlighter\": \"15.5.13\",\n \"@typescript-eslint/eslint-plugin\": \"8.59.2\",\n \"@typescript-eslint/parser\": \"8.59.2\",\n \"@vercel/react-router\": \"1.3.0\",\n \"@vitest/coverage-v8\": \"4.1.5\",\n \"cross-env\": \"10.1.0\",\n \"electron\": \"42.3.3\",\n \"electron-builder\": \"26.8.1\",\n \"eslint\": \"9.39.4\",\n \"eslint-config-prettier\": \"10.1.8\",\n \"eslint-import-resolver-typescript\": \"4.4.4\",\n \"eslint-plugin-i18next\": \"6.1.4\",\n \"eslint-plugin-import-x\": \"4.16.2\",\n \"eslint-plugin-jsx-a11y\": \"6.10.2\",\n \"eslint-plugin-prettier\": \"5.5.5\",\n \"eslint-plugin-react\": \"7.37.5\",\n \"eslint-plugin-react-hooks\": \"7.1.1\",\n \"eslint-plugin-unused-imports\": \"4.4.1\",\n \"globals\": \"16.5.0\",\n \"husky\": \"9.1.7\",\n \"jsdom\": \"29.1.1\",\n \"lint-staged\": \"16.4.0\",\n \"msw\": \"2.14.2\",\n \"postcss-prefix-selector\": \"2.1.1\",\n \"prettier\": \"3.8.3\",\n \"tailwindcss\": \"4.2.4\",\n \"typescript\": \"6.0.3\",\n \"vite-plugin-svgr\": \"5.2.0\",\n \"vitest\": \"4.1.5\"\n },\n \"packageManager\": \"npm@10.5.0\",\n \"volta\": {\n \"node\": \"22.12.0\"\n },\n \"msw\": {\n \"workerDirectory\": [\n \"public\"\n ]\n },\n \"overrides\": {\n \"@vercel/static-config\": {\n \"ajv\": \"8.20.0\"\n },\n \"dompurify\": \"3.4.7\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"build\",\n \"config\",\n \"scripts\",\n \"tools\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./browser\": {\n \"types\": \"./dist/components/browser/index.d.ts\",\n \"import\": \"./dist/components/browser/index.js\",\n \"require\": \"./dist/components/browser/index.cjs\"\n },\n \"./conversation\": {\n \"types\": \"./dist/components/conversation/index.d.ts\",\n \"import\": \"./dist/components/conversation/index.js\",\n \"require\": \"./dist/components/conversation/index.cjs\"\n },\n \"./files\": {\n \"types\": \"./dist/components/files/index.d.ts\",\n \"import\": \"./dist/components/files/index.js\",\n \"require\": \"./dist/components/files/index.cjs\"\n },\n \"./settings\": {\n \"types\": \"./dist/components/settings/index.d.ts\",\n \"import\": \"./dist/components/settings/index.js\",\n \"require\": \"./dist/components/settings/index.cjs\"\n },\n \"./sidebar\": {\n \"types\": \"./dist/components/sidebar/index.d.ts\",\n \"import\": \"./dist/components/sidebar/index.js\",\n \"require\": \"./dist/components/sidebar/index.cjs\"\n },\n \"./terminal\": {\n \"types\": \"./dist/components/terminal/index.d.ts\",\n \"import\": \"./dist/components/terminal/index.js\",\n \"require\": \"./dist/components/terminal/index.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.js\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"peerDependencies\": {\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-router\": \"7.17.0\"\n }\n}\n"],"mappings":""}
package/dist/package.js CHANGED
@@ -1,6 +1,6 @@
1
1
  var e = {
2
2
  name: "@openhands/agent-canvas",
3
- version: "1.7.1",
3
+ version: "1.8.0",
4
4
  description: "Agent Canvas UI for OpenHands - run AI coding agents with a visual interface",
5
5
  license: "MIT",
6
6
  private: !1,
@@ -18,7 +18,7 @@ var e = {
18
18
  "@microlink/react-json-view": "1.31.20",
19
19
  "@monaco-editor/react": "4.7.0",
20
20
  "@openhands/extensions": "0.11.0",
21
- "@openhands/typescript-client": "1.34.0",
21
+ "@openhands/typescript-client": "1.36.1",
22
22
  "@react-router/node": "7.17.0",
23
23
  "@react-router/serve": "7.17.0",
24
24
  "@tailwindcss/vite": "4.2.4",
@@ -81,6 +81,9 @@ var e = {
81
81
  "test:e2e:mock-llm": "playwright test --config=playwright.mock-llm.config.ts",
82
82
  "test:e2e:mock-llm:docker": "playwright test --config=playwright.mock-llm-docker.config.ts",
83
83
  "test:coverage": "npm run make-i18n && vitest run --coverage",
84
+ "test:mutation": "npm run make-i18n && stryker run",
85
+ "test:mutation:diff": "npm run make-i18n && node scripts/stryker-diff.mjs",
86
+ "test:mutation:incremental": "npm run make-i18n && stryker run --incremental",
84
87
  dev_wsl: "VITE_WATCH_USE_POLLING=true vite",
85
88
  preview: "vite preview",
86
89
  "make-i18n": "node scripts/make-i18n-translations.cjs",
@@ -112,6 +115,8 @@ var e = {
112
115
  "@mswjs/socket.io-binding": "0.2.0",
113
116
  "@playwright/test": "1.59.1",
114
117
  "@react-router/dev": "7.17.0",
118
+ "@stryker-mutator/core": "9.6.1",
119
+ "@stryker-mutator/vitest-runner": "9.6.1",
115
120
  "@tailwindcss/typography": "0.5.19",
116
121
  "@tanstack/eslint-plugin-query": "5.100.9",
117
122
  "@testing-library/dom": "10.4.1",
@@ -1 +1 @@
1
- {"version":3,"file":"package.js","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.7.1\",\n \"description\": \"Agent Canvas UI for OpenHands - run AI coding agents with a visual interface\",\n \"license\": \"MIT\",\n \"private\": false,\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/OpenHands/OpenHands\"\n },\n \"homepage\": \"https://github.com/OpenHands/OpenHands#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/OpenHands/OpenHands/issues\"\n },\n \"bin\": {\n \"agent-canvas\": \"bin/agent-canvas.mjs\"\n },\n \"engines\": {\n \"node\": \">=22.12.0\"\n },\n \"dependencies\": {\n \"@heroui/react\": \"2.8.10\",\n \"@microlink/react-json-view\": \"1.31.20\",\n \"@monaco-editor/react\": \"4.7.0\",\n \"@openhands/extensions\": \"0.11.0\",\n \"@openhands/typescript-client\": \"1.34.0\",\n \"@react-router/node\": \"7.17.0\",\n \"@react-router/serve\": \"7.17.0\",\n \"@tailwindcss/vite\": \"4.2.4\",\n \"@tanstack/react-query\": \"5.100.9\",\n \"@types/shell-quote\": \"1.7.5\",\n \"@uidotdev/usehooks\": \"2.4.1\",\n \"@xterm/addon-fit\": \"0.11.0\",\n \"@xterm/xterm\": \"6.0.0\",\n \"axios\": \"1.18.0\",\n \"class-variance-authority\": \"0.7.1\",\n \"clsx\": \"2.1.1\",\n \"downshift\": \"9.3.2\",\n \"framer-motion\": \"12.38.0\",\n \"httpxy\": \"0.5.3\",\n \"i18next\": \"26.0.8\",\n \"i18next-browser-languagedetector\": \"8.2.1\",\n \"i18next-http-backend\": \"4.0.0\",\n \"isbot\": \"5.1.39\",\n \"lucide-react\": \"1.25.0\",\n \"monaco-editor\": \"0.55.1\",\n \"posthog-js\": \"1.372.6\",\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-hot-toast\": \"2.6.0\",\n \"react-i18next\": \"17.0.6\",\n \"react-icons\": \"5.6.0\",\n \"react-markdown\": \"10.1.0\",\n \"react-router\": \"7.17.0\",\n \"react-syntax-highlighter\": \"16.1.1\",\n \"rehype-raw\": \"7.0.0\",\n \"rehype-sanitize\": \"6.0.0\",\n \"remark-breaks\": \"4.0.0\",\n \"remark-gfm\": \"4.0.1\",\n \"shell-quote\": \"1.9.0\",\n \"sirv\": \"3.0.2\",\n \"sirv-cli\": \"3.0.1\",\n \"socket.io-client\": \"4.8.3\",\n \"tailwind-merge\": \"3.5.0\",\n \"tailwind-scrollbar\": \"4.0.2\",\n \"unist-util-visit\": \"5.1.0\",\n \"uuid\": \"14.0.0\",\n \"vite\": \"8.0.16\",\n \"winston\": \"3.19.0\",\n \"winston-daily-rotate-file\": \"5.0.0\",\n \"zustand\": \"5.0.12\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env scripts/dev-with-automation.mjs\",\n \"dev:static\": \"node --env-file-if-exists=.env scripts/dev-static.mjs\",\n \"dev:extra-backend\": \"node --env-file-if-exists=.env scripts/dev-extra-backend.mjs\",\n \"dev:minimal\": \"node --env-file-if-exists=.env scripts/dev-safe.mjs\",\n \"dev:frontend\": \"npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev\",\n \"dev:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev\",\n \"build\": \"npm run build:app\",\n \"build:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router build\",\n \"start\": \"npx sirv-cli build/ --single\",\n \"test\": \"npm run make-i18n && vitest run\",\n \"test:e2e\": \"playwright test --pass-with-no-tests\",\n \"test:e2e:live\": \"node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs\",\n \"test:e2e:mock-llm\": \"playwright test --config=playwright.mock-llm.config.ts\",\n \"test:e2e:mock-llm:docker\": \"playwright test --config=playwright.mock-llm-docker.config.ts\",\n \"test:coverage\": \"npm run make-i18n && vitest run --coverage\",\n \"dev_wsl\": \"VITE_WATCH_USE_POLLING=true vite\",\n \"preview\": \"vite preview\",\n \"make-i18n\": \"node scripts/make-i18n-translations.cjs\",\n \"prelint\": \"npm run make-i18n\",\n \"lint\": \"npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}\",\n \"lint:fix\": \"eslint src --fix && prettier --write src/**/*.{ts,tsx}\",\n \"prepare\": \"husky\",\n \"typecheck\": \"react-router typegen && tsc\",\n \"typecheck:staged\": \"react-router typegen && npx tsc --noEmit --skipLibCheck\",\n \"check-translation-completeness\": \"node scripts/check-translation-completeness.cjs\",\n \"build:app\": \"npm run make-i18n && react-router build\",\n \"build:lib\": \"npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true vite build && tsc -p tsconfig.lib.json\",\n \"build:docker\": \"node scripts/docker-build.mjs\",\n \"example:acp-docker:env\": \"node scripts/gen-acp-docker-env.mjs\",\n \"desktop\": \"npm run build:app && electron electron/main.mjs\",\n \"build:desktop\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && electron-builder --config electron-builder.config.mjs --publish never\",\n \"build:desktop:universal\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && cross-env ELECTRON_ARCH=universal electron-builder --config electron-builder.config.mjs --publish never\",\n \"download-uv\": \"node scripts/download-uv.mjs\",\n \"download-node\": \"node scripts/download-node.mjs\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,tsx,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"src/**/*.{ts,tsx}\": [\n \"node scripts/run-staged-typecheck.mjs\"\n ],\n \"src/**/*\": [\n \"npm run check-translation-completeness\"\n ]\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"3.3.1\",\n \"@eslint/js\": \"9.39.4\",\n \"@mswjs/socket.io-binding\": \"0.2.0\",\n \"@playwright/test\": \"1.59.1\",\n \"@react-router/dev\": \"7.17.0\",\n \"@tailwindcss/typography\": \"0.5.19\",\n \"@tanstack/eslint-plugin-query\": \"5.100.9\",\n \"@testing-library/dom\": \"10.4.1\",\n \"@testing-library/jest-dom\": \"6.9.1\",\n \"@testing-library/react\": \"16.3.2\",\n \"@testing-library/user-event\": \"14.6.1\",\n \"@types/mdast\": \"4.0.4\",\n \"@types/node\": \"25.6.0\",\n \"@types/react\": \"19.2.14\",\n \"@types/react-dom\": \"19.2.3\",\n \"@types/react-syntax-highlighter\": \"15.5.13\",\n \"@typescript-eslint/eslint-plugin\": \"8.59.2\",\n \"@typescript-eslint/parser\": \"8.59.2\",\n \"@vercel/react-router\": \"1.3.0\",\n \"@vitest/coverage-v8\": \"4.1.5\",\n \"cross-env\": \"10.1.0\",\n \"electron\": \"42.3.3\",\n \"electron-builder\": \"26.8.1\",\n \"eslint\": \"9.39.4\",\n \"eslint-config-prettier\": \"10.1.8\",\n \"eslint-import-resolver-typescript\": \"4.4.4\",\n \"eslint-plugin-i18next\": \"6.1.4\",\n \"eslint-plugin-import-x\": \"4.16.2\",\n \"eslint-plugin-jsx-a11y\": \"6.10.2\",\n \"eslint-plugin-prettier\": \"5.5.5\",\n \"eslint-plugin-react\": \"7.37.5\",\n \"eslint-plugin-react-hooks\": \"7.1.1\",\n \"eslint-plugin-unused-imports\": \"4.4.1\",\n \"globals\": \"16.5.0\",\n \"husky\": \"9.1.7\",\n \"jsdom\": \"29.1.1\",\n \"lint-staged\": \"16.4.0\",\n \"msw\": \"2.14.2\",\n \"postcss-prefix-selector\": \"2.1.1\",\n \"prettier\": \"3.8.3\",\n \"tailwindcss\": \"4.2.4\",\n \"typescript\": \"6.0.3\",\n \"vite-plugin-svgr\": \"5.2.0\",\n \"vitest\": \"4.1.5\"\n },\n \"packageManager\": \"npm@10.5.0\",\n \"volta\": {\n \"node\": \"22.12.0\"\n },\n \"msw\": {\n \"workerDirectory\": [\n \"public\"\n ]\n },\n \"overrides\": {\n \"@vercel/static-config\": {\n \"ajv\": \"8.20.0\"\n },\n \"dompurify\": \"3.4.7\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"build\",\n \"config\",\n \"scripts\",\n \"tools\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./browser\": {\n \"types\": \"./dist/components/browser/index.d.ts\",\n \"import\": \"./dist/components/browser/index.js\",\n \"require\": \"./dist/components/browser/index.cjs\"\n },\n \"./conversation\": {\n \"types\": \"./dist/components/conversation/index.d.ts\",\n \"import\": \"./dist/components/conversation/index.js\",\n \"require\": \"./dist/components/conversation/index.cjs\"\n },\n \"./files\": {\n \"types\": \"./dist/components/files/index.d.ts\",\n \"import\": \"./dist/components/files/index.js\",\n \"require\": \"./dist/components/files/index.cjs\"\n },\n \"./settings\": {\n \"types\": \"./dist/components/settings/index.d.ts\",\n \"import\": \"./dist/components/settings/index.js\",\n \"require\": \"./dist/components/settings/index.cjs\"\n },\n \"./sidebar\": {\n \"types\": \"./dist/components/sidebar/index.d.ts\",\n \"import\": \"./dist/components/sidebar/index.js\",\n \"require\": \"./dist/components/sidebar/index.cjs\"\n },\n \"./terminal\": {\n \"types\": \"./dist/components/terminal/index.d.ts\",\n \"import\": \"./dist/components/terminal/index.js\",\n \"require\": \"./dist/components/terminal/index.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.js\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"peerDependencies\": {\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-router\": \"7.17.0\"\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"package.js","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.8.0\",\n \"description\": \"Agent Canvas UI for OpenHands - run AI coding agents with a visual interface\",\n \"license\": \"MIT\",\n \"private\": false,\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/OpenHands/OpenHands\"\n },\n \"homepage\": \"https://github.com/OpenHands/OpenHands#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/OpenHands/OpenHands/issues\"\n },\n \"bin\": {\n \"agent-canvas\": \"bin/agent-canvas.mjs\"\n },\n \"engines\": {\n \"node\": \">=22.12.0\"\n },\n \"dependencies\": {\n \"@heroui/react\": \"2.8.10\",\n \"@microlink/react-json-view\": \"1.31.20\",\n \"@monaco-editor/react\": \"4.7.0\",\n \"@openhands/extensions\": \"0.11.0\",\n \"@openhands/typescript-client\": \"1.36.1\",\n \"@react-router/node\": \"7.17.0\",\n \"@react-router/serve\": \"7.17.0\",\n \"@tailwindcss/vite\": \"4.2.4\",\n \"@tanstack/react-query\": \"5.100.9\",\n \"@types/shell-quote\": \"1.7.5\",\n \"@uidotdev/usehooks\": \"2.4.1\",\n \"@xterm/addon-fit\": \"0.11.0\",\n \"@xterm/xterm\": \"6.0.0\",\n \"axios\": \"1.18.0\",\n \"class-variance-authority\": \"0.7.1\",\n \"clsx\": \"2.1.1\",\n \"downshift\": \"9.3.2\",\n \"framer-motion\": \"12.38.0\",\n \"httpxy\": \"0.5.3\",\n \"i18next\": \"26.0.8\",\n \"i18next-browser-languagedetector\": \"8.2.1\",\n \"i18next-http-backend\": \"4.0.0\",\n \"isbot\": \"5.1.39\",\n \"lucide-react\": \"1.25.0\",\n \"monaco-editor\": \"0.55.1\",\n \"posthog-js\": \"1.372.6\",\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-hot-toast\": \"2.6.0\",\n \"react-i18next\": \"17.0.6\",\n \"react-icons\": \"5.6.0\",\n \"react-markdown\": \"10.1.0\",\n \"react-router\": \"7.17.0\",\n \"react-syntax-highlighter\": \"16.1.1\",\n \"rehype-raw\": \"7.0.0\",\n \"rehype-sanitize\": \"6.0.0\",\n \"remark-breaks\": \"4.0.0\",\n \"remark-gfm\": \"4.0.1\",\n \"shell-quote\": \"1.9.0\",\n \"sirv\": \"3.0.2\",\n \"sirv-cli\": \"3.0.1\",\n \"socket.io-client\": \"4.8.3\",\n \"tailwind-merge\": \"3.5.0\",\n \"tailwind-scrollbar\": \"4.0.2\",\n \"unist-util-visit\": \"5.1.0\",\n \"uuid\": \"14.0.0\",\n \"vite\": \"8.0.16\",\n \"winston\": \"3.19.0\",\n \"winston-daily-rotate-file\": \"5.0.0\",\n \"zustand\": \"5.0.12\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env scripts/dev-with-automation.mjs\",\n \"dev:static\": \"node --env-file-if-exists=.env scripts/dev-static.mjs\",\n \"dev:extra-backend\": \"node --env-file-if-exists=.env scripts/dev-extra-backend.mjs\",\n \"dev:minimal\": \"node --env-file-if-exists=.env scripts/dev-safe.mjs\",\n \"dev:frontend\": \"npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev\",\n \"dev:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev\",\n \"build\": \"npm run build:app\",\n \"build:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router build\",\n \"start\": \"npx sirv-cli build/ --single\",\n \"test\": \"npm run make-i18n && vitest run\",\n \"test:e2e\": \"playwright test --pass-with-no-tests\",\n \"test:e2e:live\": \"node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs\",\n \"test:e2e:mock-llm\": \"playwright test --config=playwright.mock-llm.config.ts\",\n \"test:e2e:mock-llm:docker\": \"playwright test --config=playwright.mock-llm-docker.config.ts\",\n \"test:coverage\": \"npm run make-i18n && vitest run --coverage\",\n \"test:mutation\": \"npm run make-i18n && stryker run\",\n \"test:mutation:diff\": \"npm run make-i18n && node scripts/stryker-diff.mjs\",\n \"test:mutation:incremental\": \"npm run make-i18n && stryker run --incremental\",\n \"dev_wsl\": \"VITE_WATCH_USE_POLLING=true vite\",\n \"preview\": \"vite preview\",\n \"make-i18n\": \"node scripts/make-i18n-translations.cjs\",\n \"prelint\": \"npm run make-i18n\",\n \"lint\": \"npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}\",\n \"lint:fix\": \"eslint src --fix && prettier --write src/**/*.{ts,tsx}\",\n \"prepare\": \"husky\",\n \"typecheck\": \"react-router typegen && tsc\",\n \"typecheck:staged\": \"react-router typegen && npx tsc --noEmit --skipLibCheck\",\n \"check-translation-completeness\": \"node scripts/check-translation-completeness.cjs\",\n \"build:app\": \"npm run make-i18n && react-router build\",\n \"build:lib\": \"npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true vite build && tsc -p tsconfig.lib.json\",\n \"build:docker\": \"node scripts/docker-build.mjs\",\n \"example:acp-docker:env\": \"node scripts/gen-acp-docker-env.mjs\",\n \"desktop\": \"npm run build:app && electron electron/main.mjs\",\n \"build:desktop\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && electron-builder --config electron-builder.config.mjs --publish never\",\n \"build:desktop:universal\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && cross-env ELECTRON_ARCH=universal electron-builder --config electron-builder.config.mjs --publish never\",\n \"download-uv\": \"node scripts/download-uv.mjs\",\n \"download-node\": \"node scripts/download-node.mjs\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,tsx,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"src/**/*.{ts,tsx}\": [\n \"node scripts/run-staged-typecheck.mjs\"\n ],\n \"src/**/*\": [\n \"npm run check-translation-completeness\"\n ]\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"3.3.1\",\n \"@eslint/js\": \"9.39.4\",\n \"@mswjs/socket.io-binding\": \"0.2.0\",\n \"@playwright/test\": \"1.59.1\",\n \"@react-router/dev\": \"7.17.0\",\n \"@stryker-mutator/core\": \"9.6.1\",\n \"@stryker-mutator/vitest-runner\": \"9.6.1\",\n \"@tailwindcss/typography\": \"0.5.19\",\n \"@tanstack/eslint-plugin-query\": \"5.100.9\",\n \"@testing-library/dom\": \"10.4.1\",\n \"@testing-library/jest-dom\": \"6.9.1\",\n \"@testing-library/react\": \"16.3.2\",\n \"@testing-library/user-event\": \"14.6.1\",\n \"@types/mdast\": \"4.0.4\",\n \"@types/node\": \"25.6.0\",\n \"@types/react\": \"19.2.14\",\n \"@types/react-dom\": \"19.2.3\",\n \"@types/react-syntax-highlighter\": \"15.5.13\",\n \"@typescript-eslint/eslint-plugin\": \"8.59.2\",\n \"@typescript-eslint/parser\": \"8.59.2\",\n \"@vercel/react-router\": \"1.3.0\",\n \"@vitest/coverage-v8\": \"4.1.5\",\n \"cross-env\": \"10.1.0\",\n \"electron\": \"42.3.3\",\n \"electron-builder\": \"26.8.1\",\n \"eslint\": \"9.39.4\",\n \"eslint-config-prettier\": \"10.1.8\",\n \"eslint-import-resolver-typescript\": \"4.4.4\",\n \"eslint-plugin-i18next\": \"6.1.4\",\n \"eslint-plugin-import-x\": \"4.16.2\",\n \"eslint-plugin-jsx-a11y\": \"6.10.2\",\n \"eslint-plugin-prettier\": \"5.5.5\",\n \"eslint-plugin-react\": \"7.37.5\",\n \"eslint-plugin-react-hooks\": \"7.1.1\",\n \"eslint-plugin-unused-imports\": \"4.4.1\",\n \"globals\": \"16.5.0\",\n \"husky\": \"9.1.7\",\n \"jsdom\": \"29.1.1\",\n \"lint-staged\": \"16.4.0\",\n \"msw\": \"2.14.2\",\n \"postcss-prefix-selector\": \"2.1.1\",\n \"prettier\": \"3.8.3\",\n \"tailwindcss\": \"4.2.4\",\n \"typescript\": \"6.0.3\",\n \"vite-plugin-svgr\": \"5.2.0\",\n \"vitest\": \"4.1.5\"\n },\n \"packageManager\": \"npm@10.5.0\",\n \"volta\": {\n \"node\": \"22.12.0\"\n },\n \"msw\": {\n \"workerDirectory\": [\n \"public\"\n ]\n },\n \"overrides\": {\n \"@vercel/static-config\": {\n \"ajv\": \"8.20.0\"\n },\n \"dompurify\": \"3.4.7\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"build\",\n \"config\",\n \"scripts\",\n \"tools\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./browser\": {\n \"types\": \"./dist/components/browser/index.d.ts\",\n \"import\": \"./dist/components/browser/index.js\",\n \"require\": \"./dist/components/browser/index.cjs\"\n },\n \"./conversation\": {\n \"types\": \"./dist/components/conversation/index.d.ts\",\n \"import\": \"./dist/components/conversation/index.js\",\n \"require\": \"./dist/components/conversation/index.cjs\"\n },\n \"./files\": {\n \"types\": \"./dist/components/files/index.d.ts\",\n \"import\": \"./dist/components/files/index.js\",\n \"require\": \"./dist/components/files/index.cjs\"\n },\n \"./settings\": {\n \"types\": \"./dist/components/settings/index.d.ts\",\n \"import\": \"./dist/components/settings/index.js\",\n \"require\": \"./dist/components/settings/index.cjs\"\n },\n \"./sidebar\": {\n \"types\": \"./dist/components/sidebar/index.d.ts\",\n \"import\": \"./dist/components/sidebar/index.js\",\n \"require\": \"./dist/components/sidebar/index.cjs\"\n },\n \"./terminal\": {\n \"types\": \"./dist/components/terminal/index.d.ts\",\n \"import\": \"./dist/components/terminal/index.js\",\n \"require\": \"./dist/components/terminal/index.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.js\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"peerDependencies\": {\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-router\": \"7.17.0\"\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../node_modules/react-i18next/dist/es/useTranslation.cjs"),n=require("../i18n/declaration.cjs"),r=require("../i18n/index.cjs"),i=require("../utils/retrieve-axios-error-message.cjs"),a=require("../utils/custom-toast-handlers.cjs"),o=require("../contexts/active-backend-context.cjs"),s=require("../services/telemetry.cjs"),c=require("../services/settings.cjs"),l=require("../hooks/query/use-llm-profiles.cjs"),u=require("../hooks/query/use-settings.cjs"),d=require("../components/shared/navigation-link.cjs"),f=require("../components/features/settings/brand-button.cjs"),p=require("../hooks/mutation/use-save-settings.cjs"),m=require("../components/features/settings/settings-switch.cjs"),h=require("../components/features/settings/settings-input.cjs"),g=require("../components/features/settings/settings-dropdown-input.cjs"),_=require("../components/features/settings/app-settings/language-input.cjs"),v=require("../components/features/settings/app-settings/theme-input.cjs"),y=require("../components/features/settings/app-settings/app-settings-inputs-skeleton.cjs");let b=require("react");b=e.__toESM(b,1);let x=require("react/jsx-runtime");var S=`__automatic__`;function C(){let{t:e}=t.useTranslation(`openhands`),{mutate:C,isPending:w}=p.useSaveSettings(),{data:T,isLoading:E}=u.useSettings(),D=o.useActiveBackend().backend.kind===`cloud`,{data:O,isLoading:k}=l.useLlmProfiles(),[A,j]=b.default.useState(!1),[M,N]=b.default.useState(!1),[P,F]=b.default.useState(!1),[I,L]=b.default.useState(!1),[R,z]=b.default.useState(!1),[B,V]=b.default.useState(void 0),H=b.default.useMemo(()=>{let e=T?.title_llm_profile??null;return!e||!O||O.profiles.some(t=>t.name===e)?e:null},[O,T?.title_llm_profile]),U=B===void 0?H:B,W=b.default.useMemo(()=>[{key:S,label:e(n.I18nKey.SETTINGS$TITLE_GENERATION_AUTOMATIC)},...O?.profiles.map(t=>({key:t.name,label:t.model?e(n.I18nKey.SETTINGS$TITLE_GENERATION_PROFILE_OPTION,{name:t.name,model:t.model}):t.name}))??[]],[O?.profiles,e]),G=t=>{let o=t.get(`language-input`)?.toString(),l=r.AvailableLanguages.find(({label:e})=>e===o)?.value||c.DEFAULT_SETTINGS.language,u=D?!0:t.get(`enable-analytics-switch`)?.toString()===`on`,d=t.get(`enable-sound-notifications-switch`)?.toString()===`on`,f=t.get(`git-user-name-input`)?.toString()||c.DEFAULT_SETTINGS.git_user_name,p=t.get(`git-user-email-input`)?.toString()||c.DEFAULT_SETTINGS.git_user_email;C({language:l,...!D&&{user_consents_to_analytics:u},enable_sound_notifications:d,git_user_name:f,git_user_email:p,title_llm_profile:U},{onSuccess:()=>{s.setTelemetryConsent(u?`granted`:`denied`),a.displaySuccessToast(e(n.I18nKey.SETTINGS$SAVED))},onError:t=>{a.displayErrorToast(i.retrieveAxiosErrorMessage(t)||e(n.I18nKey.ERROR$GENERIC))},onSettled:()=>{j(!1),N(!1),F(!1),L(!1),z(!1),V(void 0)}})},K=e=>{let t=r.AvailableLanguages.find(({label:t})=>t===e)?.label,n=r.AvailableLanguages.find(({value:e})=>e===T?.language)?.label;j(t!==n)},q=e=>{N(e!==(T?.user_consents_to_analytics??!0))},J=e=>{F(e!==!!T?.enable_sound_notifications)},Y=e=>{let t=T?.git_user_name;L(e!==t)},X=e=>{let t=T?.git_user_email;z(e!==t)},Z=!A&&!M&&!P&&U===H&&!I&&!R,Q=!T||E||k||w;return(0,x.jsxs)(`form`,{"data-testid":`app-settings-screen`,action:G,className:`flex flex-col gap-6`,children:[Q&&(0,x.jsx)(y.AppSettingsInputsSkeleton,{}),!Q&&(0,x.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,x.jsx)(_.LanguageInput,{name:`language-input`,defaultKey:T.language,onChange:K}),(0,x.jsx)(v.ThemeInput,{}),(0,x.jsx)(m.SettingsSwitch,{testId:`enable-analytics-switch`,name:D?void 0:`enable-analytics-switch`,defaultIsToggled:D?!0:T.user_consents_to_analytics??!0,isToggled:D?!0:void 0,isDisabled:D,onToggle:D?void 0:q,children:e(n.I18nKey.ANALYTICS$SEND_ANONYMOUS_DATA)}),(0,x.jsx)(m.SettingsSwitch,{testId:`enable-sound-notifications-switch`,name:`enable-sound-notifications-switch`,defaultIsToggled:!!T.enable_sound_notifications,onToggle:J,children:e(n.I18nKey.SETTINGS$SOUND_NOTIFICATIONS)}),(0,x.jsxs)(`div`,{className:`border-t border-[var(--oh-border)] pt-6 mt-2`,children:[(0,x.jsx)(`h3`,{className:`text-lg font-medium mb-2`,children:e(n.I18nKey.SETTINGS$CONVERSATION_TITLES)}),(0,x.jsx)(`p`,{className:`mb-4 text-sm leading-5 text-tertiary-light`,children:e(n.I18nKey.SETTINGS$TITLE_GENERATION_DESCRIPTION)}),(0,x.jsx)(g.SettingsDropdownInput,{testId:`title-llm-profile-input`,name:`title-llm-profile-input`,label:e(n.I18nKey.SETTINGS$TITLE_GENERATION_MODEL),items:W,selectedKey:U??S,onSelectionChange:e=>{let t=e?.toString();V(!t||t===S?null:t)}}),(0,x.jsx)(d.NavigationLink,{to:`/settings/llm`,className:`mt-3 inline-block text-sm text-primary hover:underline`,children:e(n.I18nKey.SETTINGS$MANAGE_LLM_PROFILES)})]}),(0,x.jsxs)(`div`,{className:`border-t border-[var(--oh-border)] pt-6 mt-2`,children:[(0,x.jsx)(`h3`,{className:`text-lg font-medium mb-2`,children:e(n.I18nKey.SETTINGS$GIT_SETTINGS)}),(0,x.jsx)(`p`,{className:`mb-4 text-sm leading-5 text-tertiary-light`,children:e(n.I18nKey.SETTINGS$GIT_SETTINGS_DESCRIPTION)}),(0,x.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,x.jsx)(h.SettingsInput,{testId:`git-user-name-input`,name:`git-user-name-input`,type:`text`,label:e(n.I18nKey.SETTINGS$GIT_USERNAME),defaultValue:T.git_user_name||``,onChange:Y,placeholder:e(n.I18nKey.SETTINGS$GIT_USERNAME_PLACEHOLDER),className:`w-full min-w-0`}),(0,x.jsx)(h.SettingsInput,{testId:`git-user-email-input`,name:`git-user-email-input`,type:`email`,label:e(n.I18nKey.SETTINGS$GIT_EMAIL),defaultValue:T.git_user_email||``,onChange:X,placeholder:e(n.I18nKey.SETTINGS$GIT_EMAIL_PLACEHOLDER),className:`w-full min-w-0`})]}),(0,x.jsx)(`div`,{className:`flex justify-start pt-4`,children:(0,x.jsxs)(f.BrandButton,{testId:`submit-button`,variant:`primary`,type:`submit`,isDisabled:w||Z,children:[!w&&e(n.I18nKey.SETTINGS$SAVE_CHANGES),w&&e(n.I18nKey.SETTINGS$SAVING)]})})]})]})]})}exports.default=C;
1
+ const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../node_modules/react-i18next/dist/es/useTranslation.cjs"),n=require("../i18n/declaration.cjs"),r=require("../i18n/index.cjs"),i=require("../utils/retrieve-axios-error-message.cjs"),a=require("../utils/custom-toast-handlers.cjs"),o=require("../services/telemetry.cjs"),s=require("../contexts/active-backend-context.cjs"),c=require("../services/settings.cjs"),l=require("../hooks/query/use-llm-profiles.cjs"),u=require("../hooks/query/use-settings.cjs"),d=require("../components/shared/navigation-link.cjs"),f=require("../components/features/settings/brand-button.cjs"),p=require("../hooks/mutation/use-save-settings.cjs"),m=require("../components/features/settings/settings-switch.cjs"),h=require("../components/features/settings/settings-input.cjs"),g=require("../components/features/settings/settings-dropdown-input.cjs"),_=require("../components/features/settings/app-settings/language-input.cjs"),v=require("../components/features/settings/app-settings/theme-input.cjs"),y=require("../components/features/settings/app-settings/app-settings-inputs-skeleton.cjs");let b=require("react");b=e.__toESM(b,1);let x=require("react/jsx-runtime");var S=`__automatic__`;function C(){let{t:e}=t.useTranslation(`openhands`),{mutate:C,isPending:w}=p.useSaveSettings(),{data:T,isLoading:E}=u.useSettings(),D=s.useActiveBackend().backend.kind===`cloud`,{data:O,isLoading:k}=l.useLlmProfiles(),[A,j]=b.default.useState(!1),[M,N]=b.default.useState(!1),[P,F]=b.default.useState(!1),[I,L]=b.default.useState(!1),[R,z]=b.default.useState(!1),[B,V]=b.default.useState(void 0),H=b.default.useMemo(()=>{let e=T?.title_llm_profile??null;return!e||!O||O.profiles.some(t=>t.name===e)?e:null},[O,T?.title_llm_profile]),U=B===void 0?H:B,W=b.default.useMemo(()=>[{key:S,label:e(n.I18nKey.SETTINGS$TITLE_GENERATION_AUTOMATIC)},...O?.profiles.map(t=>({key:t.name,label:t.model?e(n.I18nKey.SETTINGS$TITLE_GENERATION_PROFILE_OPTION,{name:t.name,model:t.model}):t.name}))??[]],[O?.profiles,e]),G=t=>{let s=t.get(`language-input`)?.toString(),l=r.AvailableLanguages.find(({label:e})=>e===s)?.value||c.DEFAULT_SETTINGS.language,u=D?!0:t.get(`enable-analytics-switch`)?.toString()===`on`,d=t.get(`enable-sound-notifications-switch`)?.toString()===`on`,f=t.get(`git-user-name-input`)?.toString()||c.DEFAULT_SETTINGS.git_user_name,p=t.get(`git-user-email-input`)?.toString()||c.DEFAULT_SETTINGS.git_user_email;C({language:l,...!D&&{user_consents_to_analytics:u},enable_sound_notifications:d,git_user_name:f,git_user_email:p,title_llm_profile:U},{onSuccess:()=>{o.setTelemetryConsent(u?`granted`:`denied`),a.displaySuccessToast(e(n.I18nKey.SETTINGS$SAVED))},onError:t=>{a.displayErrorToast(i.retrieveAxiosErrorMessage(t)||e(n.I18nKey.ERROR$GENERIC))},onSettled:()=>{j(!1),N(!1),F(!1),L(!1),z(!1),V(void 0)}})},K=e=>{let t=r.AvailableLanguages.find(({label:t})=>t===e)?.label,n=r.AvailableLanguages.find(({value:e})=>e===T?.language)?.label;j(t!==n)},q=e=>{N(e!==(T?.user_consents_to_analytics??!0))},J=e=>{F(e!==!!T?.enable_sound_notifications)},Y=e=>{let t=T?.git_user_name;L(e!==t)},X=e=>{let t=T?.git_user_email;z(e!==t)},Z=!A&&!M&&!P&&U===H&&!I&&!R,Q=!T||E||k||w;return(0,x.jsxs)(`form`,{"data-testid":`app-settings-screen`,action:G,className:`flex flex-col gap-6`,children:[Q&&(0,x.jsx)(y.AppSettingsInputsSkeleton,{}),!Q&&(0,x.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,x.jsx)(_.LanguageInput,{name:`language-input`,defaultKey:T.language,onChange:K}),(0,x.jsx)(v.ThemeInput,{}),(0,x.jsx)(m.SettingsSwitch,{testId:`enable-analytics-switch`,name:D?void 0:`enable-analytics-switch`,defaultIsToggled:D?!0:T.user_consents_to_analytics??!0,isToggled:D?!0:void 0,isDisabled:D,onToggle:D?void 0:q,children:e(n.I18nKey.ANALYTICS$SEND_ANONYMOUS_DATA)}),(0,x.jsx)(m.SettingsSwitch,{testId:`enable-sound-notifications-switch`,name:`enable-sound-notifications-switch`,defaultIsToggled:!!T.enable_sound_notifications,onToggle:J,children:e(n.I18nKey.SETTINGS$SOUND_NOTIFICATIONS)}),(0,x.jsxs)(`div`,{className:`border-t border-[var(--oh-border)] pt-6 mt-2`,children:[(0,x.jsx)(`h3`,{className:`text-lg font-medium mb-2`,children:e(n.I18nKey.SETTINGS$CONVERSATION_TITLES)}),(0,x.jsx)(`p`,{className:`mb-4 text-sm leading-5 text-tertiary-light`,children:e(n.I18nKey.SETTINGS$TITLE_GENERATION_DESCRIPTION)}),(0,x.jsx)(g.SettingsDropdownInput,{testId:`title-llm-profile-input`,name:`title-llm-profile-input`,label:e(n.I18nKey.SETTINGS$TITLE_GENERATION_MODEL),items:W,selectedKey:U??S,onSelectionChange:e=>{let t=e?.toString();V(!t||t===S?null:t)}}),(0,x.jsx)(d.NavigationLink,{to:`/settings/llm`,className:`mt-3 inline-block text-sm text-primary hover:underline`,children:e(n.I18nKey.SETTINGS$MANAGE_LLM_PROFILES)})]}),(0,x.jsxs)(`div`,{className:`border-t border-[var(--oh-border)] pt-6 mt-2`,children:[(0,x.jsx)(`h3`,{className:`text-lg font-medium mb-2`,children:e(n.I18nKey.SETTINGS$GIT_SETTINGS)}),(0,x.jsx)(`p`,{className:`mb-4 text-sm leading-5 text-tertiary-light`,children:e(n.I18nKey.SETTINGS$GIT_SETTINGS_DESCRIPTION)}),(0,x.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,x.jsx)(h.SettingsInput,{testId:`git-user-name-input`,name:`git-user-name-input`,type:`text`,label:e(n.I18nKey.SETTINGS$GIT_USERNAME),defaultValue:T.git_user_name||``,onChange:Y,placeholder:e(n.I18nKey.SETTINGS$GIT_USERNAME_PLACEHOLDER),className:`w-full min-w-0`}),(0,x.jsx)(h.SettingsInput,{testId:`git-user-email-input`,name:`git-user-email-input`,type:`email`,label:e(n.I18nKey.SETTINGS$GIT_EMAIL),defaultValue:T.git_user_email||``,onChange:X,placeholder:e(n.I18nKey.SETTINGS$GIT_EMAIL_PLACEHOLDER),className:`w-full min-w-0`})]}),(0,x.jsx)(`div`,{className:`flex justify-start pt-4`,children:(0,x.jsxs)(f.BrandButton,{testId:`submit-button`,variant:`primary`,type:`submit`,isDisabled:w||Z,children:[!w&&e(n.I18nKey.SETTINGS$SAVE_CHANGES),w&&e(n.I18nKey.SETTINGS$SAVING)]})})]})]})]})}exports.default=C;
2
2
  //# sourceMappingURL=app-settings.cjs.map
@@ -3,8 +3,8 @@ import { I18nKey as t } from "../i18n/declaration.js";
3
3
  import { AvailableLanguages as n } from "../i18n/index.js";
4
4
  import { retrieveAxiosErrorMessage as r } from "../utils/retrieve-axios-error-message.js";
5
5
  import { displayErrorToast as i, displaySuccessToast as a } from "../utils/custom-toast-handlers.js";
6
- import { useActiveBackend as o } from "../contexts/active-backend-context.js";
7
- import { setTelemetryConsent as s } from "../services/telemetry.js";
6
+ import { setTelemetryConsent as o } from "../services/telemetry.js";
7
+ import { useActiveBackend as s } from "../contexts/active-backend-context.js";
8
8
  import { DEFAULT_SETTINGS as c } from "../services/settings.js";
9
9
  import { useLlmProfiles as l } from "../hooks/query/use-llm-profiles.js";
10
10
  import { useSettings as u } from "../hooks/query/use-settings.js";
@@ -22,7 +22,7 @@ import { jsx as x, jsxs as S } from "react/jsx-runtime";
22
22
  //#region src/routes/app-settings.tsx
23
23
  var C = "__automatic__";
24
24
  function w() {
25
- let { t: w } = e("openhands"), { mutate: T, isPending: E } = p(), { data: D, isLoading: O } = u(), k = o().backend.kind === "cloud", { data: A, isLoading: j } = l(), [ee, M] = b.useState(!1), [N, P] = b.useState(!1), [F, I] = b.useState(!1), [L, R] = b.useState(!1), [z, B] = b.useState(!1), [V, H] = b.useState(void 0), U = b.useMemo(() => {
25
+ let { t: w } = e("openhands"), { mutate: T, isPending: E } = p(), { data: D, isLoading: O } = u(), k = s().backend.kind === "cloud", { data: A, isLoading: j } = l(), [ee, M] = b.useState(!1), [N, P] = b.useState(!1), [F, I] = b.useState(!1), [L, R] = b.useState(!1), [z, B] = b.useState(!1), [V, H] = b.useState(void 0), U = b.useMemo(() => {
26
26
  let e = D?.title_llm_profile ?? null;
27
27
  return !e || !A || A.profiles.some((t) => t.name === e) ? e : null;
28
28
  }, [A, D?.title_llm_profile]), W = V === void 0 ? U : V, G = b.useMemo(() => [{
@@ -35,7 +35,7 @@ function w() {
35
35
  model: e.model
36
36
  }) : e.name
37
37
  })) ?? []], [A?.profiles, w]), K = (e) => {
38
- let o = e.get("language-input")?.toString(), l = n.find(({ label: e }) => e === o)?.value || c.language, u = k ? !0 : e.get("enable-analytics-switch")?.toString() === "on", d = e.get("enable-sound-notifications-switch")?.toString() === "on", f = e.get("git-user-name-input")?.toString() || c.git_user_name, p = e.get("git-user-email-input")?.toString() || c.git_user_email;
38
+ let s = e.get("language-input")?.toString(), l = n.find(({ label: e }) => e === s)?.value || c.language, u = k ? !0 : e.get("enable-analytics-switch")?.toString() === "on", d = e.get("enable-sound-notifications-switch")?.toString() === "on", f = e.get("git-user-name-input")?.toString() || c.git_user_name, p = e.get("git-user-email-input")?.toString() || c.git_user_email;
39
39
  T({
40
40
  language: l,
41
41
  ...!k && { user_consents_to_analytics: u },
@@ -45,7 +45,7 @@ function w() {
45
45
  title_llm_profile: W
46
46
  }, {
47
47
  onSuccess: () => {
48
- s(u ? "granted" : "denied"), a(w(t.SETTINGS$SAVED));
48
+ o(u ? "granted" : "denied"), a(w(t.SETTINGS$SAVED));
49
49
  },
50
50
  onError: (e) => {
51
51
  i(r(e) || w(t.ERROR$GENERIC));
@@ -1,2 +1,2 @@
1
- const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../node_modules/react-i18next/dist/es/useTranslation.cjs"),n=require("../i18n/declaration.cjs"),r=require("../utils/retrieve-axios-error-message.cjs"),i=require("../utils/custom-toast-handlers.cjs"),a=require("../utils/mcp-config.cjs"),o=require("../hooks/query/use-settings.cjs"),s=require("../components/features/settings/brand-button.cjs"),c=require("../utils/settings-like-page-layout-classes.cjs"),l=require("../components/features/skills/extensions-navigation.cjs"),u=require("../components/shared/modals/confirmation-modal.cjs"),d=require("../hooks/mutation/use-delete-mcp-server.cjs"),f=require("../utils/mcp-marketplace-utils.cjs"),p=require("../node_modules/@openhands/extensions/integrations/index.cjs"),m=require("../utils/mcp-installed-servers.cjs"),h=require("../components/features/mcp-page/installed-servers-section.cjs"),g=require("../components/features/mcp-page/marketplace-section.cjs"),_=require("../components/features/mcp-page/install-server-modal.cjs"),v=require("../components/features/mcp-page/custom-server-editor.cjs"),y=require("../components/features/mcp-page/mcp-toolbar.cjs");require("../components/features/mcp-page/index.cjs");let b=require("react");b=e.__toESM(b,1);let x=require("react/jsx-runtime");function S(){let{t:e}=t.useTranslation(`openhands`),{data:S,isLoading:C}=o.useSettings(),{mutate:w,isPending:T}=d.useDeleteMcpServer(),[E,D]=b.default.useState(null),[O,k]=b.default.useState(null),[A,j]=b.default.useState(null),[M,N]=b.default.useState(``),[P,F]=b.default.useState(`all`),I=m.flattenMcpConfig(a.parseMcpConfig(S?.agent_settings?.mcp_config)),L=f.getMcpMarketplaceCatalog(p.default),R=I.filter(e=>f.installedServerMatchesQuery(e,f.findCatalogEntryForServer(e,L),M)),z=e=>{D(e)};return C||!S?(0,x.jsxs)(`div`,{"data-testid":`mcp-page`,className:`flex h-full gap-4 md:gap-6 md:pl-8 lg:gap-10 lg:pl-10`,children:[(0,x.jsx)(l.ExtensionsNavigation,{}),(0,x.jsx)(`div`,{className:`flex h-full flex-1 items-center justify-center px-4 md:px-0`,children:(0,x.jsx)(`div`,{className:`h-8 w-8 rounded-full border-2 border-transparent border-t-white animate-spin`})})]}):(0,x.jsxs)(`div`,{"data-testid":`mcp-page`,className:`flex h-full gap-4 md:gap-6 md:pl-8 lg:gap-10 lg:pl-10`,children:[(0,x.jsx)(l.ExtensionsNavigation,{}),(0,x.jsxs)(`main`,{className:c.settingsLikeMainScrollClassName,children:[(0,x.jsxs)(`div`,{className:`mx-auto flex w-full min-w-0 max-w-[800px] flex-col gap-6`,children:[(0,x.jsx)(`div`,{className:`min-w-0`,children:(0,x.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,x.jsxs)(`div`,{className:`space-y-1`,children:[(0,x.jsx)(`h2`,{className:`text-xl font-medium leading-6 text-foreground`,children:e(n.I18nKey.SETTINGS$MCP_TITLE)}),(0,x.jsx)(`div`,{className:`max-w-2xl text-sm text-tertiary-light`,children:e(n.I18nKey.MCP$PAGE_DESCRIPTION)})]}),(0,x.jsx)(s.BrandButton,{type:`button`,variant:`secondary`,testId:`mcp-add-custom-server`,className:`flex-shrink-0 whitespace-nowrap`,onClick:()=>k({id:``,type:`sse`}),children:e(n.I18nKey.MCP$ADD_CUSTOM)})]})}),(0,x.jsx)(y.McpToolbar,{search:M,onSearchChange:N,sectionFilter:P,onSectionFilterChange:F}),P===`library`?null:(0,x.jsxs)(`section`,{className:`flex flex-col gap-3`,children:[(0,x.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:e(n.I18nKey.MCP$INSTALLED_TITLE)}),(0,x.jsx)(h.InstalledServersSection,{servers:R,hasAnyInstalled:I.length>0,query:M,onEdit:e=>{k(e)},onDelete:e=>{let t=I.find(t=>t.id===e);t&&j(t)}})]}),P===`installed`?null:(0,x.jsx)(g.MarketplaceSection,{onSelect:z,onAdd:z,query:M})]}),E&&(0,x.jsx)(_.InstallServerModal,{entry:E,existingServers:I,onClose:()=>D(null)}),O&&(0,x.jsx)(v.CustomServerEditor,{server:O,existingServers:I,onClose:()=>k(null)}),A&&(0,x.jsx)(u.ConfirmationModal,{text:e(n.I18nKey.SETTINGS$MCP_CONFIRM_DELETE),onCancel:()=>j(null),onConfirm:()=>{A&&w(A,{onSuccess:()=>{i.displaySuccessToast(e(n.I18nKey.MCP$REMOVE_SUCCESS)),j(null)},onError:t=>{i.displayErrorToast(r.retrieveAxiosErrorMessage(t)||e(n.I18nKey.ERROR$GENERIC)),j(null)}})},isConfirming:T})]})]})}exports.default=S;
1
+ const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../node_modules/react-i18next/dist/es/useTranslation.cjs"),n=require("../i18n/declaration.cjs"),r=require("../utils/retrieve-axios-error-message.cjs"),i=require("../utils/custom-toast-handlers.cjs"),a=require("../utils/mcp-config.cjs"),o=require("../hooks/query/use-settings.cjs"),s=require("../components/features/settings/brand-button.cjs"),c=require("../utils/settings-like-page-layout-classes.cjs"),l=require("../components/features/skills/extensions-navigation.cjs"),u=require("../hooks/mutation/use-update-mcp-server.cjs"),d=require("../utils/mcp-marketplace-utils.cjs"),f=require("../node_modules/@openhands/extensions/integrations/index.cjs"),p=require("../utils/mcp-installed-servers.cjs"),m=require("../components/features/mcp-page/installed-servers-section.cjs"),h=require("../components/features/mcp-page/marketplace-section.cjs"),g=require("../components/features/mcp-page/install-server-modal.cjs"),_=require("../components/features/mcp-page/custom-server-editor.cjs"),v=require("../components/features/mcp-page/mcp-toolbar.cjs");require("../components/features/mcp-page/index.cjs");let y=require("react");y=e.__toESM(y,1);let b=require("react/jsx-runtime");function x(){let{t:e}=t.useTranslation(`openhands`),{data:x,isLoading:S}=o.useSettings(),{mutate:C}=u.useUpdateMcpServer(),[w,T]=y.default.useState(null),[E,D]=y.default.useState(null),[O,k]=y.default.useState(``),[A,j]=y.default.useState(`all`),M=p.flattenMcpConfig(a.parseMcpConfig(x?.agent_settings?.mcp_config)),N=d.getMcpMarketplaceCatalog(f.default),P=M.filter(e=>d.installedServerMatchesQuery(e,d.findCatalogEntryForServer(e,N),O)),F=e=>{T(e)};return S||!x?(0,b.jsxs)(`div`,{"data-testid":`mcp-page`,className:`flex h-full gap-4 md:gap-6 md:pl-8 lg:gap-10 lg:pl-10`,children:[(0,b.jsx)(l.ExtensionsNavigation,{}),(0,b.jsx)(`div`,{className:`flex h-full flex-1 items-center justify-center px-4 md:px-0`,children:(0,b.jsx)(`div`,{className:`h-8 w-8 rounded-full border-2 border-transparent border-t-white animate-spin`})})]}):(0,b.jsxs)(`div`,{"data-testid":`mcp-page`,className:`flex h-full gap-4 md:gap-6 md:pl-8 lg:gap-10 lg:pl-10`,children:[(0,b.jsx)(l.ExtensionsNavigation,{}),(0,b.jsxs)(`main`,{className:c.settingsLikeMainScrollClassName,children:[(0,b.jsxs)(`div`,{className:`mx-auto flex w-full min-w-0 max-w-[800px] flex-col gap-6`,children:[(0,b.jsx)(`div`,{className:`min-w-0`,children:(0,b.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,b.jsxs)(`div`,{className:`space-y-1`,children:[(0,b.jsx)(`h2`,{className:`text-xl font-medium leading-6 text-foreground`,children:e(n.I18nKey.SETTINGS$MCP_TITLE)}),(0,b.jsx)(`div`,{className:`max-w-2xl text-sm text-tertiary-light`,children:e(n.I18nKey.MCP$PAGE_DESCRIPTION)})]}),(0,b.jsx)(s.BrandButton,{type:`button`,variant:`secondary`,testId:`mcp-add-custom-server`,className:`flex-shrink-0 whitespace-nowrap`,onClick:()=>D({id:``,type:`sse`}),children:e(n.I18nKey.MCP$ADD_CUSTOM)})]})}),(0,b.jsx)(v.McpToolbar,{search:O,onSearchChange:k,sectionFilter:A,onSectionFilterChange:j}),A===`library`?null:(0,b.jsxs)(`section`,{className:`flex flex-col gap-3`,children:[(0,b.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:e(n.I18nKey.MCP$INSTALLED_TITLE)}),(0,b.jsx)(m.InstalledServersSection,{servers:P,hasAnyInstalled:M.length>0,query:O,onEdit:e=>{D(e)},onToggleEnabled:(t,a)=>{C({serverId:t.id,server:{...t,enabled:a}},{onError:t=>{i.displayErrorToast(r.retrieveAxiosErrorMessage(t)||e(n.I18nKey.ERROR$GENERIC))}})}})]}),A===`installed`?null:(0,b.jsx)(h.MarketplaceSection,{onSelect:F,onAdd:F,query:O})]}),w&&(0,b.jsx)(g.InstallServerModal,{entry:w,existingServers:M,onClose:()=>T(null)}),E&&(0,b.jsx)(_.CustomServerEditor,{server:E,existingServers:M,onClose:()=>D(null)})]})]})}exports.default=x;
2
2
  //# sourceMappingURL=mcp.cjs.map