@openhands/agent-canvas 1.1.0 → 1.2.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 (1373) hide show
  1. package/README.md +1 -1
  2. package/README.windows.md +2 -2
  3. package/build/assets/Trans-De9RwQhA.js +1 -0
  4. package/build/assets/__vite-browser-external-4xJsU2-u.js +1 -0
  5. package/build/assets/{acp-providers-B_ZxlEbx.js → acp-providers-D_D8VUpP.js} +1 -1
  6. package/build/assets/active-backend-context-DRFevVIj.js +1 -0
  7. package/build/assets/add-backend-modal-DzuB9zlG.js +1 -0
  8. package/build/assets/agent-profiles-settings-BfAwTshW.js +1 -0
  9. package/build/assets/{agent-server-client-options-CxnCYyIW.js → agent-server-client-options-DVLRd9sw.js} +1 -1
  10. package/build/assets/agent-server-conversation-service.api-DfH2k6Sx.js +5 -0
  11. package/build/assets/agent-settings-CMMms-0q.js +1 -0
  12. package/build/assets/agent-settings-DjVlKgaP.js +2 -0
  13. package/build/assets/alert-banner-BW0wRYw6.js +1 -0
  14. package/build/assets/api-key-entry-screen-O8gS-fnF.js +1 -0
  15. package/build/assets/app-settings-SlZvaXlk.js +1 -0
  16. package/build/assets/automation-detail-CwsNJ9AM.js +2 -0
  17. package/build/assets/automations-list-B9cPtugh.js +1 -0
  18. package/build/assets/back-nav-button-BYmxFxGt.js +1 -0
  19. package/build/assets/backend-form-modal-D2EDGVAc.js +1 -0
  20. package/build/assets/backend-synced-settings-badge-6OCwIuLY.js +1 -0
  21. package/build/assets/base-modal-CC5Pp8CF.js +1 -0
  22. package/build/assets/bot-D7eUAuSB.js +1 -0
  23. package/build/assets/brand-button-DKPMEKcW.js +1 -0
  24. package/build/assets/{browser-CCwPzPsD.js → browser-B39N74jU.js} +2 -2
  25. package/build/assets/browser-store-BI6uklCG.js +1 -0
  26. package/build/assets/browser-tab-aiDg7aEn.js +1 -0
  27. package/build/assets/chat-send-button-DxuZIoW8.js +1 -0
  28. package/build/assets/check-Bvi71siz.js +1 -0
  29. package/build/assets/checkmark-h7udgXMM.js +1 -0
  30. package/build/assets/{chevron-down-BxZEAIv4.js → chevron-down-CI8A6tet.js} +1 -1
  31. package/build/assets/circle-plus-check-toggle-T3eAIuPQ.js +1 -0
  32. package/build/assets/close-p3Op5lxI.js +1 -0
  33. package/build/assets/code-tag-DYlAhEQY.js +1 -0
  34. package/build/assets/{color-themes-CTNRQd1a.js → color-themes-Dd1sO5U6.js} +1 -1
  35. package/build/assets/combobox-caret-CLGvOs32.js +1 -0
  36. package/build/assets/command-menu-DKrLCRla.js +1 -0
  37. package/build/assets/{command-store-C-57Heey.js → command-store-D8J5LMW1.js} +1 -1
  38. package/build/assets/condenser-settings-BhxvlfoY.js +1 -0
  39. package/build/assets/confirmation-modal-BK1F0A68.js +1 -0
  40. package/build/assets/context-menu-list-item-DBFzplWW.js +1 -0
  41. package/build/assets/conversation-B8prFAZF.js +19 -0
  42. package/build/assets/conversation-DGVDwGn8.js +1 -0
  43. package/build/assets/conversation-local-storage-F6zVMM--.js +1 -0
  44. package/build/assets/conversation-panel-C7DC4Cxx.js +1 -0
  45. package/build/assets/conversation-service.api-Ch9kR9aE.js +1 -0
  46. package/build/assets/conversation-state-store-B2Bp32XI.js +1 -0
  47. package/build/assets/conversation-store-LptbOvKa.js +1 -0
  48. package/build/assets/conversation-tab-empty-state-m8IUkfMj.js +1 -0
  49. package/build/assets/copy-3JCw_XFB.js +1 -0
  50. package/build/assets/copy-BLmGeJcd.js +1 -0
  51. package/build/assets/copy-to-clipboard-button-Aj9wFmt2.js +1 -0
  52. package/build/assets/createLucideIcon-CVAsW2Yo.js +1 -0
  53. package/build/assets/declaration-B9kpCaYl.js +1 -0
  54. package/build/assets/device-verify-B5YCrvSu.js +1 -0
  55. package/build/assets/dist-CodhvuAP.js +1 -0
  56. package/build/assets/dropdown-classes-CgQ45JmQ.js +1 -0
  57. package/build/assets/edit-automation-modal-BoibW8cd.js +1 -0
  58. package/build/assets/ellipsis-button-1BV9Sga8.js +1 -0
  59. package/build/assets/entry.client-BgWj9jL_.js +2 -0
  60. package/build/assets/enum-filter-dropdown-DCITiYVi.js +1 -0
  61. package/build/assets/environment-switch-overlay-DUnKILNH.js +1 -0
  62. package/build/assets/extensions-hub-MtC8lK3A.js +1 -0
  63. package/build/assets/{extensions-navigation-DfLHdTUC.js → extensions-navigation-BtV14oQL.js} +1 -1
  64. package/build/assets/{external-link-D8njjDTk.js → external-link-D2zJjE9G.js} +1 -1
  65. package/build/assets/files-tab-DHqtsKLy.js +1 -0
  66. package/build/assets/files-tab-store-DJsPxYdg.js +1 -0
  67. package/build/assets/folder-mMWFvaw0.js +1 -0
  68. package/build/assets/form-control-classes-9rkU4usZ.js +1 -0
  69. package/build/assets/get-language-from-path-CPNnuVhI.js +1 -0
  70. package/build/assets/git-provider-icon-CGU7_KiU.js +1 -0
  71. package/build/assets/home-BgjWP_UN.js +1 -0
  72. package/build/assets/iconBase-DaTRRUjy.js +1 -0
  73. package/build/assets/index-redirect-CUUJiNki.js +1 -0
  74. package/build/assets/install-server-modal-J_eQ6lhG.js +1 -0
  75. package/build/assets/launch-DamfAY5L.js +1 -0
  76. package/build/assets/lesson-plan-HD886V64.js +4 -0
  77. package/build/assets/link-external-DfKQroKX.js +1 -0
  78. package/build/assets/{list-todo-B_Ts2JmZ.js → list-todo-BfH6yYUK.js} +1 -1
  79. package/build/assets/llm-not-configured-banner-DTrLsVr_.js +27 -0
  80. package/build/assets/llm-settings-BgSFkbHC.js +1 -0
  81. package/build/assets/llm-settings-Bkc8C5Bi.js +1 -0
  82. package/build/assets/{llm-subscription-service-BX_AtNlO.js → llm-subscription-service-CKyaV24y.js} +1 -1
  83. package/build/assets/loader-circle-BEykUKYG.js +1 -0
  84. package/build/assets/loading-spinner-DHAIPZkP.js +1 -0
  85. package/build/assets/manage-backends-modal-BUzj5_Lq.js +1 -0
  86. package/build/assets/manifest-4d6a1552.js +1 -0
  87. package/build/assets/{markdown-renderer-DWy7Np7u.js → markdown-renderer-D8mayGjI.js} +1 -1
  88. package/build/assets/mcp-DvqJYDbz.js +9 -0
  89. package/build/assets/messages-C4KEFkPk.js +40 -0
  90. package/build/assets/middleware-DYHYNAnP.js +6 -0
  91. package/build/assets/modal-backdrop-zVwfOJZr.js +1 -0
  92. package/build/assets/modal-body-Dcu5McCa.js +1 -0
  93. package/build/assets/{modal-classes-C4kS6ib_.js → modal-classes-DPqxSyuP.js} +1 -1
  94. package/build/assets/modal-close-button-CTCX4nCH.js +1 -0
  95. package/build/assets/model-selector-VDHBytb6.js +1 -0
  96. package/build/assets/{mouse-pointer-click-CXAx4FyM.js → mouse-pointer-click-PdEQPL6v.js} +1 -1
  97. package/build/assets/navigation-context-DPs2G0X8.js +1 -0
  98. package/build/assets/navigation-link-D8hfwvxI.js +1 -0
  99. package/build/assets/onboarding-gGIqoxvA.js +1 -0
  100. package/build/assets/onboarding-modal-CGHPoMp7.js +1 -0
  101. package/build/assets/openhands-logo-bcNw5bkY.js +1 -0
  102. package/build/assets/option-service.api-Dz7Eomnx.js +1 -0
  103. package/build/assets/organization-service.api-CnynNoT-.js +1 -0
  104. package/build/assets/path-utils-CBaRYg35.js +1 -0
  105. package/build/assets/{pencil-CsL0ns9y.js → pencil-Dj2XjKmI.js} +1 -1
  106. package/build/assets/plan-components-j9X4AxYM.js +1 -0
  107. package/build/assets/planner-tab-G4j36bJk.js +1 -0
  108. package/build/assets/plugins-management-service-BAp70KN7.js +1 -0
  109. package/build/assets/profiles-service.api-CeYEmSM3.js +1 -0
  110. package/build/assets/providers-CPoq0VXm.js +1 -0
  111. package/build/assets/{proxy-TeteRRW5.js → proxy-CHmFkV16.js} +1 -1
  112. package/build/assets/react-DPDgL6du.js +1 -0
  113. package/build/assets/recommended-automations-launcher-CXaEK1rW.js +50 -0
  114. package/build/assets/{refresh-cw-GkGYXsU-.js → refresh-cw-DM82EIyx.js} +1 -1
  115. package/build/assets/root-CxWZUXTQ.css +1 -0
  116. package/build/assets/root-S6CfVoNm.js +2 -0
  117. package/build/assets/root-layout-CvxdHJ6j.js +2 -0
  118. package/build/assets/runtime-waiting-state-DkzLgvMn.js +1 -0
  119. package/build/assets/schema-field-DwUzlw6b.js +1 -0
  120. package/build/assets/sdk-section-page-BUXONTx6.js +1 -0
  121. package/build/assets/sdk-settings-schema-BjBkMHzZ.js +1 -0
  122. package/build/assets/search-4DHskuhE.js +1 -0
  123. package/build/assets/search-BsjCEFNf.js +1 -0
  124. package/build/assets/secrets-service-CZYjNxFw.js +1 -0
  125. package/build/assets/secrets-settings-ZxyfRBgx.js +1 -0
  126. package/build/assets/segmented-toggle-Cen5AMUc.js +1 -0
  127. package/build/assets/settings-Bx6vn-g8.js +1 -0
  128. package/build/assets/settings-dropdown-input-xzoZwgUe.js +1 -0
  129. package/build/assets/settings-gear-MXCyZW0x.js +1 -0
  130. package/build/assets/settings-index-D4SM26d5.js +1 -0
  131. package/build/assets/settings-input-DYs7t3oK.js +1 -0
  132. package/build/assets/settings-list-classes-DvQr5jVS.js +1 -0
  133. package/build/assets/{settings-CN_HaPjH.js → settings-mQUckT0g.js} +1 -1
  134. package/build/assets/settings-modal-BoC8oMlg.js +1 -0
  135. package/build/assets/settings-section-header-context-COMOIaxV.js +1 -0
  136. package/build/assets/settings-service.api-DldkFI1x.js +1 -0
  137. package/build/assets/settings-switch-C2N2xqEb.js +1 -0
  138. package/build/assets/{settings-utils-9-_6iVIn.js → settings-utils-BMdG65By.js} +1 -1
  139. package/build/assets/shared-conversation-DMiaQFsj.js +1 -0
  140. package/build/assets/sidebar-layout-BtpUSN3j.js +1 -0
  141. package/build/assets/sidebar-mobile-menu-toggle-CaV3tQFF.js +1 -0
  142. package/build/assets/sidebar-nav-link-CIB3NBRW.js +1 -0
  143. package/build/assets/sidebar-store-CZuE8AH5.js +1 -0
  144. package/build/assets/skill-card-pill-row-D2bUe2kB.js +1 -0
  145. package/build/assets/skills-9cDZONKh.js +1 -0
  146. package/build/assets/skills-plugins-D2WkrXkr.js +1 -0
  147. package/build/assets/skills-settings-CZGVOp_t.js +2 -0
  148. package/build/assets/{square-chevron-right-Cfi-SUY0.js → square-chevron-right-Czw3FFWc.js} +1 -1
  149. package/build/assets/styled-tooltip-DsKsFjuq.js +1 -0
  150. package/build/assets/suspense-X5dBsJzn.js +1 -0
  151. package/build/assets/switch-skeleton-DqQwalyu.js +1 -0
  152. package/build/assets/task-list-tab-BAThr9Ex.js +1 -0
  153. package/build/assets/{terminal-HakoMrQX.js → terminal-B0aL_iDZ.js} +2 -2
  154. package/build/assets/terminal-BuLtIrb9.js +1 -0
  155. package/build/assets/toggle-switch-DBlOOzBr.js +1 -0
  156. package/build/assets/{trash-2-Bq4hqiRH.js → trash-2-Be_7y3Mn.js} +1 -1
  157. package/build/assets/typography-YGPBGzOG.js +1 -0
  158. package/build/assets/u-check-circle-BqoIxNz_.js +1 -0
  159. package/build/assets/u-check-circle-half-LiwZkuFe.js +1 -0
  160. package/build/assets/u-edit-DJ90xc8Z.js +1 -0
  161. package/build/assets/use-acp-credential-form-rzaqkJ1n.js +1 -0
  162. package/build/assets/use-activate-agent-profile-DY0txItX.js +1 -0
  163. package/build/assets/use-active-agent-profile-Cp5AFONR.js +1 -0
  164. package/build/assets/use-active-conversation-DvcFBqFe.js +1 -0
  165. package/build/assets/use-agent-profiles-DnH16_Vm.js +1 -0
  166. package/build/assets/use-agent-state-BvRcEzY4.js +1 -0
  167. package/build/assets/use-backends-health-e-Ull4wz.js +1 -0
  168. package/build/assets/use-breakpoint-B-O0lQ84.js +1 -0
  169. package/build/assets/use-can-manage-org-profiles-OIhplvQ0.js +1 -0
  170. package/build/assets/use-click-outside-element-Bf4Omzot.js +1 -0
  171. package/build/assets/use-cloud-current-user-id-ekU7UXDT.js +1 -0
  172. package/build/assets/use-config-Dwf5gla-.js +1 -0
  173. package/build/assets/use-create-conversation-CvAXfA3T.js +1 -0
  174. package/build/assets/use-create-secret-BKeXCo__.js +1 -0
  175. package/build/assets/use-event-store-YSOxy9FC.js +4 -0
  176. package/build/assets/use-handle-plan-click-cAXS-Hft.js +1 -0
  177. package/build/assets/use-is-authed-_dhQ2Xuj.js +1 -0
  178. package/build/assets/use-launch-skill-in-chat-BnoDgvAy.js +1 -0
  179. package/build/assets/use-llm-profiles-BcLibtGb.js +1 -0
  180. package/build/assets/use-onboarding-completion-C_Swglzp.js +1 -0
  181. package/build/assets/use-plugins-marketplace-BGb-KgfD.js +1 -0
  182. package/build/assets/use-runtime-is-ready-CBFe69Ew.js +1 -0
  183. package/build/assets/use-save-agent-profile-DFjxHhNx.js +1 -0
  184. package/build/assets/{use-save-settings-DErJDIDL.js → use-save-settings-5xPYpSQM.js} +1 -1
  185. package/build/assets/use-settings-B07msZ2Z.js +1 -0
  186. package/build/assets/use-settings-nav-items-CswsOEyw.js +16 -0
  187. package/build/assets/use-skills-Aoaoq_ei.js +1 -0
  188. package/build/assets/use-task-list-CmWGElgb.js +1 -0
  189. package/build/assets/use-tracking-CqODdfO4.js +1 -0
  190. package/build/assets/use-user-conversation-BPHQ-dm-.js +1 -0
  191. package/build/assets/useMutation-DCE9RcgK.js +1 -0
  192. package/build/assets/useMutationState-BUab8Kxr.js +1 -0
  193. package/build/assets/useQueries-CRzaAqzH.js +1 -0
  194. package/build/assets/useQuery-CpjHYtZc.js +1 -0
  195. package/build/assets/useTranslation-Cgy4JA_g.js +1 -0
  196. package/build/assets/utils-CE0lDWtb.js +1 -0
  197. package/build/assets/vendor-styling-CI0PQ3ab.js +22 -0
  198. package/build/assets/{vendor~browser-BQU4C3CQ.js → vendor~browser-Cvg7jXCP.js} +1 -1
  199. package/build/assets/{vendor~browser-tab-Cim6xN2k.js → vendor~browser-tab-Di0kh5Zw.js} +1 -1
  200. package/build/assets/vendor~conversation-panel~conversation~alert-banner-DHDkknt5.js +1 -0
  201. package/build/assets/vendor~entry.client-9tWQ_Ugw.js +1 -0
  202. package/build/assets/{vendor~entry.client-lAMyAlBD.js → vendor~entry.client-D6BtSOtn.js} +1 -1
  203. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~d1e18dtv-5Q6lQJdE.js +177 -0
  204. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~i3v2mlbw-BrJQ3XZH.js +1 -0
  205. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~ncdxw0bh-ClHnt5lR.js +10 -0
  206. package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~t35o0b0f-Bss49YXv.js → vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~k6tszsdc-Bb-xMtbv.js} +1 -1
  207. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~nn5zty47-Zl0G1QCy.js +1 -0
  208. package/build/assets/{vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~fpbtwbmk-DDSPtjxR.js → vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~byh8a1g4-XNPdpuO8.js} +1 -1
  209. package/build/assets/{vendor~files-tab-BvQLon-P.js → vendor~files-tab-B02k3xvx.js} +1 -1
  210. package/build/assets/{vendor~home~conversation-panel~conversation-DBPRU26Z.js → vendor~home~conversation-panel~conversation-CYMF9JYB.js} +1 -1
  211. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DnEBAp2W.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-9UMeuPV6.js} +1 -1
  212. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CzI-A-Gz.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BD0GaRGa.js} +1 -1
  213. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-ByET2Quf.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CqXiHwjU.js} +1 -1
  214. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DCYBrned.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-D7EUmQ8Y.js} +1 -1
  215. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DnctfFZL.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DTzw2x50.js} +1 -1
  216. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-pSG7lnvH.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-d8aETPbZ.js} +1 -1
  217. package/build/assets/{vendor~launch-DqoOsAhA.js → vendor~launch-CHXA9cJu.js} +1 -1
  218. package/build/assets/vendor~root-layout~conversation-panel~conversation-CpiTHpHl.js +1 -0
  219. package/build/assets/{vendor~root-layout~conversation-panel~conversation~shared-conversation-BJl81v7J.js → vendor~root-layout~conversation-panel~conversation~shared-conversation-_TdZcNMD.js} +1 -1
  220. package/build/assets/vendor~root-layout~home~conversation-panel~conversation-Cn2jwSga.js +1 -0
  221. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~enjl5xdm-mMKDm94D.js +48 -0
  222. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~automations-~ki5qnp0d-DRld6s9c.js → vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~automations-~ki5qnp0d-DJHl5b-B.js} +236 -17
  223. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~shared-conversation~alert-banner~pl~rqjteh0a-9d2kA26V.js → vendor~root-layout~home~conversation-panel~conversation~shared-conversation~alert-banner~pl~rqjteh0a-CZM4hwUT.js} +1 -1
  224. package/build/assets/vendor~root-layout~home~mcp~automations-list~onboarding-modal-L2sdihTY.js +1 -0
  225. package/build/assets/verification-settings-DZQ-JvKH.js +1 -0
  226. package/build/assets/x-Cb0WAtak.js +1 -0
  227. package/build/assets/x-mark-Batp6gXa.js +1 -0
  228. package/build/index.html +4 -4
  229. package/build/locales/ar/openhands.json +138 -1
  230. package/build/locales/ca/openhands.json +138 -1
  231. package/build/locales/de/openhands.json +138 -1
  232. package/build/locales/en/openhands.json +138 -1
  233. package/build/locales/es/openhands.json +138 -1
  234. package/build/locales/fr/openhands.json +138 -1
  235. package/build/locales/it/openhands.json +138 -1
  236. package/build/locales/ja/openhands.json +138 -1
  237. package/build/locales/ko-KR/openhands.json +138 -1
  238. package/build/locales/no/openhands.json +138 -1
  239. package/build/locales/pt/openhands.json +138 -1
  240. package/build/locales/tr/openhands.json +138 -1
  241. package/build/locales/uk/openhands.json +138 -1
  242. package/build/locales/zh-CN/openhands.json +138 -1
  243. package/build/locales/zh-TW/openhands.json +138 -1
  244. package/config/defaults.json +7 -9
  245. package/dist/_virtual/__vite-browser-external.cjs +2 -0
  246. package/dist/_virtual/__vite-browser-external.cjs.map +1 -0
  247. package/dist/_virtual/__vite-browser-external.js +9 -0
  248. package/dist/_virtual/__vite-browser-external.js.map +1 -0
  249. package/dist/api/agent-profiles-service/agent-profiles-service.api.cjs +2 -0
  250. package/dist/api/agent-profiles-service/agent-profiles-service.api.cjs.map +1 -0
  251. package/dist/api/agent-profiles-service/agent-profiles-service.api.d.ts +22 -0
  252. package/dist/api/agent-profiles-service/agent-profiles-service.api.js +35 -0
  253. package/dist/api/agent-profiles-service/agent-profiles-service.api.js.map +1 -0
  254. package/dist/api/agent-server-adapter.cjs +2 -2
  255. package/dist/api/agent-server-adapter.cjs.map +1 -1
  256. package/dist/api/agent-server-adapter.d.ts +11 -1
  257. package/dist/api/agent-server-adapter.js +60 -60
  258. package/dist/api/agent-server-adapter.js.map +1 -1
  259. package/dist/api/agent-server-compatibility.cjs +1 -1
  260. package/dist/api/agent-server-compatibility.cjs.map +1 -1
  261. package/dist/api/agent-server-compatibility.js +1 -0
  262. package/dist/api/agent-server-compatibility.js.map +1 -1
  263. package/dist/api/agent-server-home.cjs +1 -1
  264. package/dist/api/agent-server-home.cjs.map +1 -1
  265. package/dist/api/agent-server-home.js +1 -0
  266. package/dist/api/agent-server-home.js.map +1 -1
  267. package/dist/api/cloud/agent-profiles-service.api.cjs +2 -0
  268. package/dist/api/cloud/agent-profiles-service.api.cjs.map +1 -0
  269. package/dist/api/cloud/agent-profiles-service.api.d.ts +7 -0
  270. package/dist/api/cloud/agent-profiles-service.api.js +58 -0
  271. package/dist/api/cloud/agent-profiles-service.api.js.map +1 -0
  272. package/dist/api/cloud/organization-service.api.cjs +1 -1
  273. package/dist/api/cloud/organization-service.api.cjs.map +1 -1
  274. package/dist/api/cloud/organization-service.api.d.ts +8 -0
  275. package/dist/api/cloud/organization-service.api.js +3 -1
  276. package/dist/api/cloud/organization-service.api.js.map +1 -1
  277. package/dist/api/cloud/profiles-service.api.cjs +2 -0
  278. package/dist/api/cloud/profiles-service.api.cjs.map +1 -0
  279. package/dist/api/cloud/profiles-service.api.d.ts +7 -0
  280. package/dist/api/cloud/profiles-service.api.js +75 -0
  281. package/dist/api/cloud/profiles-service.api.js.map +1 -0
  282. package/dist/api/cloud/settings-service.api.cjs +1 -1
  283. package/dist/api/cloud/settings-service.api.cjs.map +1 -1
  284. package/dist/api/cloud/settings-service.api.js +1 -1
  285. package/dist/api/cloud/settings-service.api.js.map +1 -1
  286. package/dist/api/config-service/config-service.api.cjs +1 -1
  287. package/dist/api/config-service/config-service.api.cjs.map +1 -1
  288. package/dist/api/config-service/config-service.api.js +1 -0
  289. package/dist/api/config-service/config-service.api.js.map +1 -1
  290. package/dist/api/conversation-metadata-store.cjs.map +1 -1
  291. package/dist/api/conversation-metadata-store.d.ts +11 -0
  292. package/dist/api/conversation-metadata-store.js.map +1 -1
  293. package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
  294. package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
  295. package/dist/api/conversation-service/agent-server-conversation-service.api.d.ts +20 -1
  296. package/dist/api/conversation-service/agent-server-conversation-service.api.js +134 -105
  297. package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
  298. package/dist/api/conversation-service/agent-server-conversation-service.types.d.ts +2 -0
  299. package/dist/api/conversation-service/conversation-service.api.cjs +1 -1
  300. package/dist/api/conversation-service/conversation-service.api.cjs.map +1 -1
  301. package/dist/api/conversation-service/conversation-service.api.d.ts +1 -0
  302. package/dist/api/conversation-service/conversation-service.api.js +4 -0
  303. package/dist/api/conversation-service/conversation-service.api.js.map +1 -1
  304. package/dist/api/device-flow-client.cjs +1 -1
  305. package/dist/api/device-flow-client.cjs.map +1 -1
  306. package/dist/api/device-flow-client.js +33 -25
  307. package/dist/api/device-flow-client.js.map +1 -1
  308. package/dist/api/event-service/event-service.api.cjs +1 -1
  309. package/dist/api/event-service/event-service.api.cjs.map +1 -1
  310. package/dist/api/event-service/event-service.api.js +1 -0
  311. package/dist/api/event-service/event-service.api.js.map +1 -1
  312. package/dist/api/mcp-service/mcp-redacted-credentials.cjs +1 -1
  313. package/dist/api/mcp-service/mcp-redacted-credentials.cjs.map +1 -1
  314. package/dist/api/mcp-service/mcp-redacted-credentials.d.ts +3 -3
  315. package/dist/api/mcp-service/mcp-redacted-credentials.js +29 -30
  316. package/dist/api/mcp-service/mcp-redacted-credentials.js.map +1 -1
  317. package/dist/api/mcp-service/mcp-service.api.cjs +1 -1
  318. package/dist/api/mcp-service/mcp-service.api.cjs.map +1 -1
  319. package/dist/api/mcp-service/mcp-service.api.d.ts +8 -1
  320. package/dist/api/mcp-service/mcp-service.api.js +129 -23
  321. package/dist/api/mcp-service/mcp-service.api.js.map +1 -1
  322. package/dist/api/option-service/option-service.api.cjs +1 -1
  323. package/dist/api/option-service/option-service.api.cjs.map +1 -1
  324. package/dist/api/option-service/option-service.api.js +1 -0
  325. package/dist/api/option-service/option-service.api.js.map +1 -1
  326. package/dist/api/plugins-management-service.cjs +2 -0
  327. package/dist/api/plugins-management-service.cjs.map +1 -0
  328. package/dist/api/plugins-management-service.d.ts +50 -0
  329. package/dist/api/plugins-management-service.js +41 -0
  330. package/dist/api/plugins-management-service.js.map +1 -0
  331. package/dist/api/plugins-service.d.ts +49 -0
  332. package/dist/api/profiles-service/profiles-service.api.cjs +1 -1
  333. package/dist/api/profiles-service/profiles-service.api.cjs.map +1 -1
  334. package/dist/api/profiles-service/profiles-service.api.js +21 -14
  335. package/dist/api/profiles-service/profiles-service.api.js.map +1 -1
  336. package/dist/api/runtime-service/agent-server-runtime-service.cjs +1 -1
  337. package/dist/api/runtime-service/agent-server-runtime-service.cjs.map +1 -1
  338. package/dist/api/runtime-service/agent-server-runtime-service.js +1 -0
  339. package/dist/api/runtime-service/agent-server-runtime-service.js.map +1 -1
  340. package/dist/api/secrets-service.cjs +1 -1
  341. package/dist/api/secrets-service.cjs.map +1 -1
  342. package/dist/api/secrets-service.js +1 -0
  343. package/dist/api/secrets-service.js.map +1 -1
  344. package/dist/api/settings-service/settings-service.api.cjs +1 -1
  345. package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
  346. package/dist/api/settings-service/settings-service.api.js +92 -50
  347. package/dist/api/settings-service/settings-service.api.js.map +1 -1
  348. package/dist/api/skills-service.cjs +1 -1
  349. package/dist/api/skills-service.cjs.map +1 -1
  350. package/dist/api/skills-service.js +1 -0
  351. package/dist/api/skills-service.js.map +1 -1
  352. package/dist/api/workspaces-service/workspaces-service.api.cjs +1 -1
  353. package/dist/api/workspaces-service/workspaces-service.api.cjs.map +1 -1
  354. package/dist/api/workspaces-service/workspaces-service.api.js +1 -0
  355. package/dist/api/workspaces-service/workspaces-service.api.js.map +1 -1
  356. package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.cjs +1 -1
  357. package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.cjs.map +1 -1
  358. package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.js +57 -38
  359. package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.js.map +1 -1
  360. package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.cjs +2 -1
  361. package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.cjs.map +1 -1
  362. package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.js +13 -9
  363. package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.js.map +1 -1
  364. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs +1 -1
  365. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs.map +1 -1
  366. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js +65 -26
  367. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js.map +1 -1
  368. package/dist/components/conversation-events/chat/event-message.cjs +2 -2
  369. package/dist/components/conversation-events/chat/event-message.cjs.map +1 -1
  370. package/dist/components/conversation-events/chat/event-message.js +78 -76
  371. package/dist/components/conversation-events/chat/event-message.js.map +1 -1
  372. package/dist/components/features/analytics/telemetry-consent-banner.cjs +1 -1
  373. package/dist/components/features/analytics/telemetry-consent-banner.cjs.map +1 -1
  374. package/dist/components/features/analytics/telemetry-consent-banner.js +1 -0
  375. package/dist/components/features/analytics/telemetry-consent-banner.js.map +1 -1
  376. package/dist/components/features/automations/detail/activity-log-item.d.ts +3 -2
  377. package/dist/components/features/automations/detail/activity-log-section.d.ts +3 -2
  378. package/dist/components/features/automations/detail/debug-automation-button.d.ts +17 -0
  379. package/dist/components/features/automations/detail/run-logs-modal.d.ts +6 -1
  380. package/dist/components/features/backends/backend-form-modal.cjs +1 -1
  381. package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
  382. package/dist/components/features/backends/backend-form-modal.d.ts +6 -2
  383. package/dist/components/features/backends/backend-form-modal.js +198 -161
  384. package/dist/components/features/backends/backend-form-modal.js.map +1 -1
  385. package/dist/components/features/backends/backend-row.cjs +1 -1
  386. package/dist/components/features/backends/backend-row.cjs.map +1 -1
  387. package/dist/components/features/backends/backend-row.d.ts +2 -1
  388. package/dist/components/features/backends/backend-row.js +60 -54
  389. package/dist/components/features/backends/backend-row.js.map +1 -1
  390. package/dist/components/features/backends/backend-selector.cjs +1 -1
  391. package/dist/components/features/backends/backend-selector.cjs.map +1 -1
  392. package/dist/components/features/backends/backend-selector.js +4 -4
  393. package/dist/components/features/backends/backend-version.cjs +1 -1
  394. package/dist/components/features/backends/backend-version.cjs.map +1 -1
  395. package/dist/components/features/backends/backend-version.js +1 -0
  396. package/dist/components/features/backends/backend-version.js.map +1 -1
  397. package/dist/components/features/backends/manage-backends-modal.cjs +1 -1
  398. package/dist/components/features/backends/manage-backends-modal.cjs.map +1 -1
  399. package/dist/components/features/backends/manage-backends-modal.js +72 -61
  400. package/dist/components/features/backends/manage-backends-modal.js.map +1 -1
  401. package/dist/components/features/chat/change-agent-button.cjs +1 -1
  402. package/dist/components/features/chat/change-agent-button.js +9 -9
  403. package/dist/components/features/chat/chat-add-file-button.cjs +1 -1
  404. package/dist/components/features/chat/chat-add-file-button.cjs.map +1 -1
  405. package/dist/components/features/chat/chat-add-file-button.js +38 -34
  406. package/dist/components/features/chat/chat-add-file-button.js.map +1 -1
  407. package/dist/components/features/chat/chat-interface.cjs +2 -2
  408. package/dist/components/features/chat/chat-interface.cjs.map +1 -1
  409. package/dist/components/features/chat/chat-interface.js +136 -129
  410. package/dist/components/features/chat/chat-interface.js.map +1 -1
  411. package/dist/components/features/chat/components/chat-input-actions.cjs +1 -1
  412. package/dist/components/features/chat/components/chat-input-actions.cjs.map +1 -1
  413. package/dist/components/features/chat/components/chat-input-actions.js +100 -87
  414. package/dist/components/features/chat/components/chat-input-actions.js.map +1 -1
  415. package/dist/components/features/chat/components/chat-input-llm-profile-picker.cjs +2 -0
  416. package/dist/components/features/chat/components/chat-input-llm-profile-picker.cjs.map +1 -0
  417. package/dist/components/features/chat/components/chat-input-llm-profile-picker.d.ts +15 -0
  418. package/dist/components/features/chat/components/chat-input-llm-profile-picker.js +118 -0
  419. package/dist/components/features/chat/components/chat-input-llm-profile-picker.js.map +1 -0
  420. package/dist/components/features/chat/components/chat-input-model.cjs +1 -1
  421. package/dist/components/features/chat/components/chat-input-model.js +17 -17
  422. package/dist/components/features/chat/components/chat-input-profile-picker.cjs +2 -0
  423. package/dist/components/features/chat/components/chat-input-profile-picker.cjs.map +1 -0
  424. package/dist/components/features/chat/components/chat-input-profile-picker.d.ts +9 -0
  425. package/dist/components/features/chat/components/chat-input-profile-picker.js +112 -0
  426. package/dist/components/features/chat/components/chat-input-profile-picker.js.map +1 -0
  427. package/dist/components/features/chat/components/resolve-picker-kind.cjs +2 -0
  428. package/dist/components/features/chat/components/resolve-picker-kind.cjs.map +1 -0
  429. package/dist/components/features/chat/components/resolve-picker-kind.d.ts +29 -0
  430. package/dist/components/features/chat/components/resolve-picker-kind.js +8 -0
  431. package/dist/components/features/chat/components/resolve-picker-kind.js.map +1 -0
  432. package/dist/components/features/chat/goal-status-banner.cjs +2 -0
  433. package/dist/components/features/chat/goal-status-banner.cjs.map +1 -0
  434. package/dist/components/features/chat/goal-status-banner.d.ts +11 -0
  435. package/dist/components/features/chat/goal-status-banner.js +12 -0
  436. package/dist/components/features/chat/goal-status-banner.js.map +1 -0
  437. package/dist/components/features/chat/goal-status-content.cjs +2 -0
  438. package/dist/components/features/chat/goal-status-content.cjs.map +1 -0
  439. package/dist/components/features/chat/goal-status-content.d.ts +21 -0
  440. package/dist/components/features/chat/goal-status-content.js +98 -0
  441. package/dist/components/features/chat/goal-status-content.js.map +1 -0
  442. package/dist/components/features/chat/interactive-chat-box.cjs +1 -1
  443. package/dist/components/features/chat/interactive-chat-box.cjs.map +1 -1
  444. package/dist/components/features/chat/interactive-chat-box.js +20 -19
  445. package/dist/components/features/chat/interactive-chat-box.js.map +1 -1
  446. package/dist/components/features/chat/tool-visualizers/primitives/code-block.cjs +1 -1
  447. package/dist/components/features/chat/tool-visualizers/primitives/code-block.cjs.map +1 -1
  448. package/dist/components/features/chat/tool-visualizers/primitives/code-block.d.ts +10 -3
  449. package/dist/components/features/chat/tool-visualizers/primitives/code-block.js +29 -16
  450. package/dist/components/features/chat/tool-visualizers/primitives/code-block.js.map +1 -1
  451. package/dist/components/features/chat/tool-visualizers/primitives/output-pane.cjs +1 -1
  452. package/dist/components/features/chat/tool-visualizers/primitives/output-pane.cjs.map +1 -1
  453. package/dist/components/features/chat/tool-visualizers/primitives/output-pane.d.ts +2 -2
  454. package/dist/components/features/chat/tool-visualizers/primitives/output-pane.js +16 -16
  455. package/dist/components/features/chat/tool-visualizers/primitives/output-pane.js.map +1 -1
  456. package/dist/components/features/chat/user-message-body.cjs +1 -1
  457. package/dist/components/features/chat/user-message-body.cjs.map +1 -1
  458. package/dist/components/features/chat/user-message-body.js +20 -20
  459. package/dist/components/features/chat/user-message-body.js.map +1 -1
  460. package/dist/components/features/command-menu/command-menu-items.d.ts +32 -0
  461. package/dist/components/features/command-menu/command-menu-trigger.cjs +2 -0
  462. package/dist/components/features/command-menu/command-menu-trigger.cjs.map +1 -0
  463. package/dist/components/features/command-menu/command-menu-trigger.d.ts +5 -0
  464. package/dist/components/features/command-menu/command-menu-trigger.js +53 -0
  465. package/dist/components/features/command-menu/command-menu-trigger.js.map +1 -0
  466. package/dist/components/features/command-menu/command-menu.d.ts +2 -0
  467. package/dist/components/features/command-menu/index.d.ts +2 -0
  468. package/dist/components/features/controls/tools-context-menu.cjs +1 -1
  469. package/dist/components/features/controls/tools-context-menu.cjs.map +1 -1
  470. package/dist/components/features/controls/tools-context-menu.d.ts +3 -1
  471. package/dist/components/features/controls/tools-context-menu.js +94 -77
  472. package/dist/components/features/controls/tools-context-menu.js.map +1 -1
  473. package/dist/components/features/conversation-panel/cloud-new-conversation-menu.cjs +1 -1
  474. package/dist/components/features/conversation-panel/cloud-new-conversation-menu.cjs.map +1 -1
  475. package/dist/components/features/conversation-panel/cloud-new-conversation-menu.js +8 -5
  476. package/dist/components/features/conversation-panel/cloud-new-conversation-menu.js.map +1 -1
  477. package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.cjs.map +1 -1
  478. package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.d.ts +1 -1
  479. package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.js.map +1 -1
  480. package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
  481. package/dist/components/features/conversation-panel/conversation-panel.cjs.map +1 -1
  482. package/dist/components/features/conversation-panel/conversation-panel.js +2 -1
  483. package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
  484. package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs +1 -1
  485. package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs.map +1 -1
  486. package/dist/components/features/conversation-panel/local-new-conversation-menu.js +4 -1
  487. package/dist/components/features/conversation-panel/local-new-conversation-menu.js.map +1 -1
  488. package/dist/components/features/conversation-panel/plugins-modal.cjs +2 -0
  489. package/dist/components/features/conversation-panel/plugins-modal.cjs.map +1 -0
  490. package/dist/components/features/conversation-panel/plugins-modal.d.ts +12 -0
  491. package/dist/components/features/conversation-panel/plugins-modal.js +62 -0
  492. package/dist/components/features/conversation-panel/plugins-modal.js.map +1 -0
  493. package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.cjs +1 -1
  494. package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.cjs.map +1 -1
  495. package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.js +4 -4
  496. package/dist/components/features/mcp-logo-badge.cjs +1 -1
  497. package/dist/components/features/mcp-logo-badge.cjs.map +1 -1
  498. package/dist/components/features/mcp-logo-badge.js +17 -15
  499. package/dist/components/features/mcp-logo-badge.js.map +1 -1
  500. package/dist/components/features/mcp-page/custom-server-editor.cjs +1 -1
  501. package/dist/components/features/mcp-page/custom-server-editor.cjs.map +1 -1
  502. package/dist/components/features/mcp-page/custom-server-editor.js +102 -59
  503. package/dist/components/features/mcp-page/custom-server-editor.js.map +1 -1
  504. package/dist/components/features/mcp-page/install-server-modal.cjs +1 -1
  505. package/dist/components/features/mcp-page/install-server-modal.cjs.map +1 -1
  506. package/dist/components/features/mcp-page/install-server-modal.js +284 -169
  507. package/dist/components/features/mcp-page/install-server-modal.js.map +1 -1
  508. package/dist/components/features/mcp-page/installed-server-card.cjs +1 -1
  509. package/dist/components/features/mcp-page/installed-server-card.cjs.map +1 -1
  510. package/dist/components/features/mcp-page/installed-server-card.js +16 -18
  511. package/dist/components/features/mcp-page/installed-server-card.js.map +1 -1
  512. package/dist/components/features/onboarding/onboarding-host.d.ts +3 -13
  513. package/dist/components/features/plugins/add-plugin-modal.d.ts +6 -0
  514. package/dist/components/features/plugins/build-plugins-view-model.d.ts +39 -0
  515. package/dist/components/features/plugins/plugin-card.d.ts +13 -0
  516. package/dist/components/features/plugins/plugin-detail-modal.d.ts +13 -0
  517. package/dist/components/features/plugins/plugin-picker-card.d.ts +10 -0
  518. package/dist/components/features/plugins/plugin-picker-modal.d.ts +9 -0
  519. package/dist/components/features/plugins/plugin-picker-trigger.d.ts +9 -0
  520. package/dist/components/features/plugins/plugin-picker.d.ts +18 -0
  521. package/dist/components/features/plugins/plugin-spec-identity.d.ts +28 -0
  522. package/dist/components/features/plugins/plugins-toolbar.d.ts +9 -0
  523. package/dist/components/features/settings/agent-profiles/agent-profile-actions-menu.d.ts +16 -0
  524. package/dist/components/features/settings/agent-profiles/agent-profile-row.d.ts +13 -0
  525. package/dist/components/features/settings/agent-profiles/agent-profiles-body.d.ts +15 -0
  526. package/dist/components/features/settings/agent-profiles/agent-profiles-local-view.d.ts +7 -0
  527. package/dist/components/features/settings/agent-profiles/agent-profiles-manager.d.ts +7 -0
  528. package/dist/components/features/settings/agent-profiles/delete-agent-profile-modal.d.ts +7 -0
  529. package/dist/components/features/settings/agent-profiles/index.d.ts +6 -0
  530. package/dist/components/features/settings/agent-profiles/merge-agent-profile-save-input.d.ts +18 -0
  531. package/dist/components/features/settings/llm-profiles/llm-profiles-manager.cjs +1 -1
  532. package/dist/components/features/settings/llm-profiles/llm-profiles-manager.js +1 -0
  533. package/dist/components/features/settings/llm-profiles/llm-settings-local-view.cjs +1 -1
  534. package/dist/components/features/settings/llm-profiles/llm-settings-local-view.js +1 -1
  535. package/dist/components/features/settings/llm-profiles/profile-row.d.ts +3 -1
  536. package/dist/components/features/settings/llm-profiles/profiles-body.d.ts +3 -1
  537. package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.cjs +1 -1
  538. package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.cjs.map +1 -1
  539. package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.js +3 -2
  540. package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.js.map +1 -1
  541. package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs +7 -7
  542. package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs.map +1 -1
  543. package/dist/components/features/settings/mcp-settings/mcp-server-form.js +279 -130
  544. package/dist/components/features/settings/mcp-settings/mcp-server-form.js.map +1 -1
  545. package/dist/components/features/settings/mcp-settings/mcp-server-list-item.d.ts +1 -12
  546. package/dist/components/features/settings/mcp-settings/mcp-server-list.d.ts +1 -11
  547. package/dist/components/features/settings/settings-dropdown-input.cjs +1 -1
  548. package/dist/components/features/settings/settings-dropdown-input.js +6 -6
  549. package/dist/components/features/sidebar/sidebar-rail-body.cjs +1 -1
  550. package/dist/components/features/sidebar/sidebar-rail-body.cjs.map +1 -1
  551. package/dist/components/features/sidebar/sidebar-rail-body.d.ts +1 -2
  552. package/dist/components/features/sidebar/sidebar-rail-body.js +81 -82
  553. package/dist/components/features/sidebar/sidebar-rail-body.js.map +1 -1
  554. package/dist/components/features/sidebar/sidebar.cjs +1 -1
  555. package/dist/components/features/sidebar/sidebar.cjs.map +1 -1
  556. package/dist/components/features/sidebar/sidebar.js +45 -46
  557. package/dist/components/features/sidebar/sidebar.js.map +1 -1
  558. package/dist/components/features/skills/extensions-navigation.cjs +1 -1
  559. package/dist/components/features/skills/extensions-navigation.cjs.map +1 -1
  560. package/dist/components/features/skills/extensions-navigation.js +1 -2
  561. package/dist/components/features/skills/extensions-navigation.js.map +1 -1
  562. package/dist/components/shared/modals/modal-backdrop.cjs +1 -1
  563. package/dist/components/shared/modals/modal-backdrop.cjs.map +1 -1
  564. package/dist/components/shared/modals/modal-backdrop.d.ts +5 -1
  565. package/dist/components/shared/modals/modal-backdrop.js +3 -3
  566. package/dist/components/shared/modals/modal-backdrop.js.map +1 -1
  567. package/dist/components/shared/modals/settings/model-selector.cjs +1 -1
  568. package/dist/components/shared/modals/settings/model-selector.js +16 -16
  569. package/dist/config/defaults.cjs +1 -1
  570. package/dist/config/defaults.cjs.map +1 -1
  571. package/dist/config/defaults.js +7 -3
  572. package/dist/config/defaults.js.map +1 -1
  573. package/dist/contexts/conversation-websocket-context.cjs +3 -3
  574. package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
  575. package/dist/contexts/conversation-websocket-context.js +200 -197
  576. package/dist/contexts/conversation-websocket-context.js.map +1 -1
  577. package/dist/hooks/chat/use-goal-interceptor.cjs +2 -0
  578. package/dist/hooks/chat/use-goal-interceptor.cjs.map +1 -0
  579. package/dist/hooks/chat/use-goal-interceptor.d.ts +8 -0
  580. package/dist/hooks/chat/use-goal-interceptor.js +37 -0
  581. package/dist/hooks/chat/use-goal-interceptor.js.map +1 -0
  582. package/dist/hooks/chat/use-grip-resize.cjs +1 -1
  583. package/dist/hooks/chat/use-grip-resize.cjs.map +1 -1
  584. package/dist/hooks/chat/use-grip-resize.js +17 -16
  585. package/dist/hooks/chat/use-grip-resize.js.map +1 -1
  586. package/dist/hooks/chat/use-model-interceptor.cjs +1 -1
  587. package/dist/hooks/chat/use-model-interceptor.cjs.map +1 -1
  588. package/dist/hooks/chat/use-model-interceptor.d.ts +3 -3
  589. package/dist/hooks/chat/use-model-interceptor.js +8 -9
  590. package/dist/hooks/chat/use-model-interceptor.js.map +1 -1
  591. package/dist/hooks/chat/use-slash-command.cjs +1 -1
  592. package/dist/hooks/chat/use-slash-command.cjs.map +1 -1
  593. package/dist/hooks/chat/use-slash-command.js +4 -4
  594. package/dist/hooks/chat/use-slash-command.js.map +1 -1
  595. package/dist/hooks/mutation/conversation-mutation-utils.cjs +1 -1
  596. package/dist/hooks/mutation/conversation-mutation-utils.cjs.map +1 -1
  597. package/dist/hooks/mutation/conversation-mutation-utils.d.ts +17 -0
  598. package/dist/hooks/mutation/conversation-mutation-utils.js +23 -4
  599. package/dist/hooks/mutation/conversation-mutation-utils.js.map +1 -1
  600. package/dist/hooks/mutation/use-activate-agent-profile.cjs +2 -0
  601. package/dist/hooks/mutation/use-activate-agent-profile.cjs.map +1 -0
  602. package/dist/hooks/mutation/use-activate-agent-profile.d.ts +23 -0
  603. package/dist/hooks/mutation/use-activate-agent-profile.js +34 -0
  604. package/dist/hooks/mutation/use-activate-agent-profile.js.map +1 -0
  605. package/dist/hooks/mutation/use-activate-llm-profile.cjs +1 -1
  606. package/dist/hooks/mutation/use-activate-llm-profile.js +1 -1
  607. package/dist/hooks/mutation/use-add-mcp-server.cjs +1 -1
  608. package/dist/hooks/mutation/use-add-mcp-server.cjs.map +1 -1
  609. package/dist/hooks/mutation/use-add-mcp-server.d.ts +1 -12
  610. package/dist/hooks/mutation/use-add-mcp-server.js +10 -34
  611. package/dist/hooks/mutation/use-add-mcp-server.js.map +1 -1
  612. package/dist/hooks/mutation/use-apply-onboarding-agent-profile.d.ts +20 -0
  613. package/dist/hooks/mutation/use-create-conversation.cjs +1 -1
  614. package/dist/hooks/mutation/use-create-conversation.cjs.map +1 -1
  615. package/dist/hooks/mutation/use-create-conversation.d.ts +2 -0
  616. package/dist/hooks/mutation/use-create-conversation.js +94 -25
  617. package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
  618. package/dist/hooks/mutation/use-delete-agent-profile.d.ts +1 -0
  619. package/dist/hooks/mutation/use-delete-llm-profile.cjs +1 -1
  620. package/dist/hooks/mutation/use-delete-llm-profile.js +1 -1
  621. package/dist/hooks/mutation/use-delete-mcp-server.cjs +1 -1
  622. package/dist/hooks/mutation/use-delete-mcp-server.js +4 -4
  623. package/dist/hooks/mutation/use-fork-conversation.cjs +2 -0
  624. package/dist/hooks/mutation/use-fork-conversation.cjs.map +1 -0
  625. package/dist/hooks/mutation/use-fork-conversation.d.ts +24 -0
  626. package/dist/hooks/mutation/use-fork-conversation.js +29 -0
  627. package/dist/hooks/mutation/use-fork-conversation.js.map +1 -0
  628. package/dist/hooks/mutation/use-install-plugin.d.ts +7 -0
  629. package/dist/hooks/mutation/use-new-conversation-command.cjs +1 -1
  630. package/dist/hooks/mutation/use-new-conversation-command.cjs.map +1 -1
  631. package/dist/hooks/mutation/use-new-conversation-command.d.ts +1 -0
  632. package/dist/hooks/mutation/use-new-conversation-command.js +20 -10
  633. package/dist/hooks/mutation/use-new-conversation-command.js.map +1 -1
  634. package/dist/hooks/mutation/use-rename-agent-profile.d.ts +6 -0
  635. package/dist/hooks/mutation/use-rename-llm-profile.cjs +1 -1
  636. package/dist/hooks/mutation/use-rename-llm-profile.js +1 -1
  637. package/dist/hooks/mutation/use-save-agent-profile.d.ts +5 -0
  638. package/dist/hooks/mutation/use-save-llm-profile.cjs +1 -1
  639. package/dist/hooks/mutation/use-save-llm-profile.js +1 -1
  640. package/dist/hooks/mutation/use-switch-acp-model.cjs.map +1 -1
  641. package/dist/hooks/mutation/use-switch-acp-model.js.map +1 -1
  642. package/dist/hooks/mutation/use-switch-llm-profile-and-log.cjs +1 -1
  643. package/dist/hooks/mutation/use-switch-llm-profile-and-log.cjs.map +1 -1
  644. package/dist/hooks/mutation/use-switch-llm-profile-and-log.d.ts +3 -4
  645. package/dist/hooks/mutation/use-switch-llm-profile-and-log.js +10 -35
  646. package/dist/hooks/mutation/use-switch-llm-profile-and-log.js.map +1 -1
  647. package/dist/hooks/mutation/use-switch-llm-profile.cjs +1 -1
  648. package/dist/hooks/mutation/use-switch-llm-profile.cjs.map +1 -1
  649. package/dist/hooks/mutation/use-switch-llm-profile.d.ts +20 -5
  650. package/dist/hooks/mutation/use-switch-llm-profile.js +38 -14
  651. package/dist/hooks/mutation/use-switch-llm-profile.js.map +1 -1
  652. package/dist/hooks/mutation/use-update-mcp-server.cjs +1 -1
  653. package/dist/hooks/mutation/use-update-mcp-server.cjs.map +1 -1
  654. package/dist/hooks/mutation/use-update-mcp-server.js +11 -37
  655. package/dist/hooks/mutation/use-update-mcp-server.js.map +1 -1
  656. package/dist/hooks/query/query-keys.cjs +1 -1
  657. package/dist/hooks/query/query-keys.cjs.map +1 -1
  658. package/dist/hooks/query/query-keys.d.ts +21 -0
  659. package/dist/hooks/query/query-keys.js +7 -3
  660. package/dist/hooks/query/query-keys.js.map +1 -1
  661. package/dist/hooks/query/use-active-conversation.cjs +1 -1
  662. package/dist/hooks/query/use-active-conversation.cjs.map +1 -1
  663. package/dist/hooks/query/use-active-conversation.js +17 -16
  664. package/dist/hooks/query/use-active-conversation.js.map +1 -1
  665. package/dist/hooks/query/use-agent-profiles.cjs +2 -0
  666. package/dist/hooks/query/use-agent-profiles.cjs.map +1 -0
  667. package/dist/hooks/query/use-agent-profiles.d.ts +13 -0
  668. package/dist/hooks/query/use-agent-profiles.js +24 -0
  669. package/dist/hooks/query/use-agent-profiles.js.map +1 -0
  670. package/dist/hooks/query/use-backends-health.cjs +1 -1
  671. package/dist/hooks/query/use-backends-health.cjs.map +1 -1
  672. package/dist/hooks/query/use-backends-health.js +18 -3
  673. package/dist/hooks/query/use-backends-health.js.map +1 -1
  674. package/dist/hooks/query/use-conversation-history.cjs +1 -1
  675. package/dist/hooks/query/use-conversation-history.cjs.map +1 -1
  676. package/dist/hooks/query/use-conversation-history.js +4 -2
  677. package/dist/hooks/query/use-conversation-history.js.map +1 -1
  678. package/dist/hooks/query/use-local-workspaces.cjs +1 -1
  679. package/dist/hooks/query/use-local-workspaces.cjs.map +1 -1
  680. package/dist/hooks/query/use-local-workspaces.js +1 -0
  681. package/dist/hooks/query/use-local-workspaces.js.map +1 -1
  682. package/dist/hooks/query/use-plugins-marketplace.d.ts +7 -0
  683. package/dist/hooks/query/use-resolved-workspaces.cjs +1 -1
  684. package/dist/hooks/query/use-resolved-workspaces.cjs.map +1 -1
  685. package/dist/hooks/query/use-resolved-workspaces.js +7 -6
  686. package/dist/hooks/query/use-resolved-workspaces.js.map +1 -1
  687. package/dist/hooks/query/use-search-subdirs.cjs +1 -1
  688. package/dist/hooks/query/use-search-subdirs.cjs.map +1 -1
  689. package/dist/hooks/query/use-search-subdirs.js +1 -0
  690. package/dist/hooks/query/use-search-subdirs.js.map +1 -1
  691. package/dist/hooks/query/use-settings.cjs +1 -1
  692. package/dist/hooks/query/use-settings.cjs.map +1 -1
  693. package/dist/hooks/query/use-settings.js +11 -11
  694. package/dist/hooks/query/use-settings.js.map +1 -1
  695. package/dist/hooks/query/use-verified-models.cjs +1 -1
  696. package/dist/hooks/query/use-verified-models.cjs.map +1 -1
  697. package/dist/hooks/query/use-verified-models.js +1 -0
  698. package/dist/hooks/query/use-verified-models.js.map +1 -1
  699. package/dist/hooks/use-acp-model-context.cjs +1 -1
  700. package/dist/hooks/use-acp-model-context.cjs.map +1 -1
  701. package/dist/hooks/use-acp-model-context.d.ts +1 -1
  702. package/dist/hooks/use-acp-model-context.js +9 -8
  703. package/dist/hooks/use-acp-model-context.js.map +1 -1
  704. package/dist/hooks/use-active-agent-profile.cjs +2 -0
  705. package/dist/hooks/use-active-agent-profile.cjs.map +1 -0
  706. package/dist/hooks/use-active-agent-profile.d.ts +20 -0
  707. package/dist/hooks/use-active-agent-profile.js +17 -0
  708. package/dist/hooks/use-active-agent-profile.js.map +1 -0
  709. package/dist/hooks/use-auto-resize.cjs +1 -1
  710. package/dist/hooks/use-auto-resize.cjs.map +1 -1
  711. package/dist/hooks/use-auto-resize.d.ts +2 -0
  712. package/dist/hooks/use-auto-resize.js +49 -45
  713. package/dist/hooks/use-auto-resize.js.map +1 -1
  714. package/dist/hooks/use-can-manage-org-profiles.cjs +1 -0
  715. package/dist/hooks/use-can-manage-org-profiles.d.ts +18 -0
  716. package/dist/hooks/use-can-manage-org-profiles.js +2 -0
  717. package/dist/hooks/use-chat-input-llm-profile-state.cjs +2 -0
  718. package/dist/hooks/use-chat-input-llm-profile-state.cjs.map +1 -0
  719. package/dist/hooks/use-chat-input-llm-profile-state.d.ts +23 -0
  720. package/dist/hooks/use-chat-input-llm-profile-state.js +30 -0
  721. package/dist/hooks/use-chat-input-llm-profile-state.js.map +1 -0
  722. package/dist/hooks/use-chat-input-model-state.cjs.map +1 -1
  723. package/dist/hooks/use-chat-input-model-state.d.ts +1 -1
  724. package/dist/hooks/use-chat-input-model-state.js.map +1 -1
  725. package/dist/hooks/use-chat-input-profile-state.cjs +2 -0
  726. package/dist/hooks/use-chat-input-profile-state.cjs.map +1 -0
  727. package/dist/hooks/use-chat-input-profile-state.d.ts +20 -0
  728. package/dist/hooks/use-chat-input-profile-state.js +22 -0
  729. package/dist/hooks/use-chat-input-profile-state.js.map +1 -0
  730. package/dist/hooks/use-conversation-name-context-menu.cjs +1 -1
  731. package/dist/hooks/use-conversation-name-context-menu.cjs.map +1 -1
  732. package/dist/hooks/use-conversation-name-context-menu.d.ts +4 -0
  733. package/dist/hooks/use-conversation-name-context-menu.js +44 -37
  734. package/dist/hooks/use-conversation-name-context-menu.js.map +1 -1
  735. package/dist/hooks/use-conversation-plugins.cjs +2 -0
  736. package/dist/hooks/use-conversation-plugins.cjs.map +1 -0
  737. package/dist/hooks/use-conversation-plugins.d.ts +9 -0
  738. package/dist/hooks/use-conversation-plugins.js +12 -0
  739. package/dist/hooks/use-conversation-plugins.js.map +1 -0
  740. package/dist/hooks/use-handle-plan-click.cjs +1 -1
  741. package/dist/hooks/use-handle-plan-click.cjs.map +1 -1
  742. package/dist/hooks/use-handle-plan-click.js +2 -1
  743. package/dist/hooks/use-handle-plan-click.js.map +1 -1
  744. package/dist/hooks/use-llm-configured.cjs +1 -1
  745. package/dist/hooks/use-llm-configured.cjs.map +1 -1
  746. package/dist/hooks/use-llm-configured.js +17 -16
  747. package/dist/hooks/use-llm-configured.js.map +1 -1
  748. package/dist/hooks/use-tracking.cjs +1 -1
  749. package/dist/hooks/use-tracking.cjs.map +1 -1
  750. package/dist/hooks/use-tracking.d.ts +51 -1
  751. package/dist/hooks/use-tracking.js +61 -2
  752. package/dist/hooks/use-tracking.js.map +1 -1
  753. package/dist/i18n/declaration.cjs +1 -1
  754. package/dist/i18n/declaration.cjs.map +1 -1
  755. package/dist/i18n/declaration.d.ts +138 -1
  756. package/dist/i18n/declaration.js +1 -1
  757. package/dist/i18n/declaration.js.map +1 -1
  758. package/dist/i18n/translation.cjs +18 -3
  759. package/dist/i18n/translation.cjs.map +1 -1
  760. package/dist/i18n/translation.js +2329 -0
  761. package/dist/i18n/translation.js.map +1 -1
  762. package/dist/icons/slack.cjs +2 -0
  763. package/dist/icons/slack.cjs.map +1 -0
  764. package/dist/icons/slack.js +19 -0
  765. package/dist/icons/slack.js.map +1 -0
  766. package/dist/icons/u-puzzle-piece.cjs +2 -0
  767. package/dist/icons/u-puzzle-piece.cjs.map +1 -0
  768. package/dist/icons/u-puzzle-piece.js +19 -0
  769. package/dist/icons/u-puzzle-piece.js.map +1 -0
  770. package/dist/icons/x-circle-solid.cjs +2 -0
  771. package/dist/icons/x-circle-solid.cjs.map +1 -0
  772. package/dist/icons/x-circle-solid.js +13 -0
  773. package/dist/icons/x-circle-solid.js.map +1 -0
  774. package/dist/locales/ar/openhands.json +138 -1
  775. package/dist/locales/ca/openhands.json +138 -1
  776. package/dist/locales/de/openhands.json +138 -1
  777. package/dist/locales/en/openhands.json +138 -1
  778. package/dist/locales/es/openhands.json +138 -1
  779. package/dist/locales/fr/openhands.json +138 -1
  780. package/dist/locales/it/openhands.json +138 -1
  781. package/dist/locales/ja/openhands.json +138 -1
  782. package/dist/locales/ko-KR/openhands.json +138 -1
  783. package/dist/locales/no/openhands.json +138 -1
  784. package/dist/locales/pt/openhands.json +138 -1
  785. package/dist/locales/tr/openhands.json +138 -1
  786. package/dist/locales/uk/openhands.json +138 -1
  787. package/dist/locales/zh-CN/openhands.json +138 -1
  788. package/dist/locales/zh-TW/openhands.json +138 -1
  789. package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.cjs +1 -1
  790. package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.cjs.map +1 -1
  791. package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.js +0 -20
  792. package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.js.map +1 -1
  793. package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.cjs +1 -1
  794. package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.cjs.map +1 -1
  795. package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.js +1 -6
  796. package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.js.map +1 -1
  797. package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.cjs +1 -1
  798. package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.cjs.map +1 -1
  799. package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.js +1 -6
  800. package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.js.map +1 -1
  801. package/dist/node_modules/@openhands/extensions/integrations/catalog/box.cjs +1 -1
  802. package/dist/node_modules/@openhands/extensions/integrations/catalog/box.cjs.map +1 -1
  803. package/dist/node_modules/@openhands/extensions/integrations/catalog/box.js +1 -6
  804. package/dist/node_modules/@openhands/extensions/integrations/catalog/box.js.map +1 -1
  805. package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.cjs +1 -1
  806. package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.cjs.map +1 -1
  807. package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.js +3 -7
  808. package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.js.map +1 -1
  809. package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.cjs +1 -1
  810. package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.cjs.map +1 -1
  811. package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.js +1 -6
  812. package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.js.map +1 -1
  813. package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.cjs +1 -1
  814. package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.cjs.map +1 -1
  815. package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.js +1 -6
  816. package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.js.map +1 -1
  817. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.cjs +1 -1
  818. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.cjs.map +1 -1
  819. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.js +20 -26
  820. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.js.map +1 -1
  821. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs +1 -1
  822. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs.map +1 -1
  823. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js +0 -9
  824. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js.map +1 -1
  825. package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.cjs +1 -1
  826. package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.cjs.map +1 -1
  827. package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.js +1 -6
  828. package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.js.map +1 -1
  829. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.cjs +1 -1
  830. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.cjs.map +1 -1
  831. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.js +1 -6
  832. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.js.map +1 -1
  833. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.cjs +1 -1
  834. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.cjs.map +1 -1
  835. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.js +1 -6
  836. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.js.map +1 -1
  837. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.cjs +1 -1
  838. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.cjs.map +1 -1
  839. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.js +1 -6
  840. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.js.map +1 -1
  841. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.cjs +1 -1
  842. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.cjs.map +1 -1
  843. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.js +1 -6
  844. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.js.map +1 -1
  845. package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.cjs +1 -1
  846. package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.cjs.map +1 -1
  847. package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.js +1 -6
  848. package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.js.map +1 -1
  849. package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.cjs +1 -1
  850. package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.cjs.map +1 -1
  851. package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.js +1 -6
  852. package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.js.map +1 -1
  853. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.cjs +1 -1
  854. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.cjs.map +1 -1
  855. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.js +13 -13
  856. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.js.map +1 -1
  857. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.cjs +1 -1
  858. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.cjs.map +1 -1
  859. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.js +1 -6
  860. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.js.map +1 -1
  861. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.cjs +1 -1
  862. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.cjs.map +1 -1
  863. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.js +1 -6
  864. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.js.map +1 -1
  865. package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.cjs +1 -1
  866. package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.cjs.map +1 -1
  867. package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.js +14 -10
  868. package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.js.map +1 -1
  869. package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.cjs +1 -1
  870. package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.cjs.map +1 -1
  871. package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.js +13 -10
  872. package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.js.map +1 -1
  873. package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.cjs +1 -1
  874. package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.cjs.map +1 -1
  875. package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.js +1 -6
  876. package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.js.map +1 -1
  877. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs +1 -1
  878. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs.map +1 -1
  879. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js +1 -8
  880. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js.map +1 -1
  881. package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.cjs +1 -1
  882. package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.cjs.map +1 -1
  883. package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.js +1 -6
  884. package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.js.map +1 -1
  885. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.cjs +1 -1
  886. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.cjs.map +1 -1
  887. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.js +1 -6
  888. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.js.map +1 -1
  889. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.cjs +1 -1
  890. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.cjs.map +1 -1
  891. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js +20 -18
  892. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js.map +1 -1
  893. package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.cjs +1 -1
  894. package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.cjs.map +1 -1
  895. package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.js +66 -21
  896. package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.js.map +1 -1
  897. package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.cjs +1 -1
  898. package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.cjs.map +1 -1
  899. package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.js +17 -11
  900. package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.js.map +1 -1
  901. package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.cjs +1 -1
  902. package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.cjs.map +1 -1
  903. package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.js +12 -17
  904. package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.js.map +1 -1
  905. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.cjs +1 -1
  906. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.cjs.map +1 -1
  907. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.js +1 -6
  908. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.js.map +1 -1
  909. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs +1 -1
  910. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs.map +1 -1
  911. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js +1 -1
  912. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js.map +1 -1
  913. package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.cjs +1 -1
  914. package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.cjs.map +1 -1
  915. package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.js +14 -19
  916. package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.js.map +1 -1
  917. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.cjs +1 -1
  918. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.cjs.map +1 -1
  919. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.js +15 -20
  920. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.js.map +1 -1
  921. package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.cjs +1 -1
  922. package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.cjs.map +1 -1
  923. package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.js +10 -8
  924. package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.js.map +1 -1
  925. package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.cjs +1 -1
  926. package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.cjs.map +1 -1
  927. package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.js +1 -6
  928. package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.js.map +1 -1
  929. package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.cjs +1 -1
  930. package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.cjs.map +1 -1
  931. package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.js +1 -6
  932. package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.js.map +1 -1
  933. package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.cjs +1 -1
  934. package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.cjs.map +1 -1
  935. package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.js +1 -6
  936. package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.js.map +1 -1
  937. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs +1 -1
  938. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs.map +1 -1
  939. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js +67 -87
  940. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js.map +1 -1
  941. package/dist/node_modules/@openhands/extensions/integrations/index.cjs +1 -1
  942. package/dist/node_modules/@openhands/extensions/integrations/index.cjs.map +1 -1
  943. package/dist/node_modules/@openhands/extensions/integrations/index.js +4 -4
  944. package/dist/node_modules/@openhands/extensions/integrations/index.js.map +1 -1
  945. package/dist/node_modules/@openhands/extensions/skills/index.cjs +236 -17
  946. package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
  947. package/dist/node_modules/@openhands/extensions/skills/index.js +24 -5
  948. package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
  949. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.cjs +2 -0
  950. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.cjs.map +1 -0
  951. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.js +40 -0
  952. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.js.map +1 -0
  953. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.cjs +1 -1
  954. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.cjs.map +1 -1
  955. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.js +4 -4
  956. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.js.map +1 -1
  957. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.cjs +1 -1
  958. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.cjs.map +1 -1
  959. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.js +3 -0
  960. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.js.map +1 -1
  961. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.cjs +1 -1
  962. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.cjs.map +1 -1
  963. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.js +3 -0
  964. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.js.map +1 -1
  965. package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.cjs +1 -0
  966. package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.js +1 -0
  967. package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.cjs +1 -0
  968. package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.js +1 -0
  969. package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.cjs +1 -1
  970. package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.cjs.map +1 -1
  971. package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.js +84 -27
  972. package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.js.map +1 -1
  973. package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.cjs +1 -1
  974. package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.cjs.map +1 -1
  975. package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.js +9 -0
  976. package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.js.map +1 -1
  977. package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.cjs +1 -0
  978. package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.js +1 -0
  979. package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.cjs +2 -0
  980. package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.cjs.map +1 -0
  981. package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.js +42 -0
  982. package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.js.map +1 -0
  983. package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.cjs +1 -0
  984. package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.js +1 -0
  985. package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.cjs +1 -1
  986. package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.cjs.map +1 -1
  987. package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.js +1 -1
  988. package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.js.map +1 -1
  989. package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.cjs +1 -0
  990. package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.js +1 -0
  991. package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.cjs +1 -0
  992. package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.js +1 -0
  993. package/dist/node_modules/@openhands/typescript-client/dist/clients.cjs +1 -0
  994. package/dist/node_modules/@openhands/typescript-client/dist/clients.js +20 -0
  995. package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation-manager.cjs +1 -1
  996. package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation-manager.js +18 -0
  997. package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation.cjs +1 -1
  998. package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation.js +1 -0
  999. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.cjs +1 -1
  1000. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.js +2 -0
  1001. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs +1 -1
  1002. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs.map +1 -1
  1003. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js +15 -17
  1004. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js.map +1 -1
  1005. package/dist/node_modules/@openhands/typescript-client/dist/index.cjs +1 -1
  1006. package/dist/node_modules/@openhands/typescript-client/dist/index.js +3 -0
  1007. package/dist/node_modules/@openhands/typescript-client/dist/workspace/workspace.cjs +1 -0
  1008. package/dist/node_modules/@openhands/typescript-client/dist/workspace/workspace.js +1 -0
  1009. package/dist/package.cjs +1 -1
  1010. package/dist/package.cjs.map +1 -1
  1011. package/dist/package.js +7 -4
  1012. package/dist/package.js.map +1 -1
  1013. package/dist/routes/agent-settings.d.ts +106 -0
  1014. package/dist/routes/files-tab.cjs +1 -1
  1015. package/dist/routes/files-tab.js +23 -23
  1016. package/dist/routes/llm-settings.cjs +1 -1
  1017. package/dist/routes/llm-settings.cjs.map +1 -1
  1018. package/dist/routes/llm-settings.d.ts +6 -4
  1019. package/dist/routes/llm-settings.js +0 -1
  1020. package/dist/routes/llm-settings.js.map +1 -1
  1021. package/dist/routes/mcp.cjs.map +1 -1
  1022. package/dist/routes/mcp.js.map +1 -1
  1023. package/dist/services/settings.cjs +1 -1
  1024. package/dist/services/settings.cjs.map +1 -1
  1025. package/dist/services/settings.js +2 -6
  1026. package/dist/services/settings.js.map +1 -1
  1027. package/dist/stores/command-menu-store.cjs +2 -0
  1028. package/dist/stores/command-menu-store.cjs.map +1 -0
  1029. package/dist/stores/command-menu-store.d.ts +8 -0
  1030. package/dist/stores/command-menu-store.js +12 -0
  1031. package/dist/stores/command-menu-store.js.map +1 -0
  1032. package/dist/stores/conversation-panel-preferences-store.cjs +1 -1
  1033. package/dist/stores/conversation-panel-preferences-store.cjs.map +1 -1
  1034. package/dist/stores/conversation-panel-preferences-store.js +1 -1
  1035. package/dist/stores/conversation-panel-preferences-store.js.map +1 -1
  1036. package/dist/stores/conversation-store.cjs +1 -1
  1037. package/dist/stores/conversation-store.cjs.map +1 -1
  1038. package/dist/stores/conversation-store.d.ts +1 -0
  1039. package/dist/stores/conversation-store.js +1 -0
  1040. package/dist/stores/conversation-store.js.map +1 -1
  1041. package/dist/stores/goal-store.cjs +2 -0
  1042. package/dist/stores/goal-store.cjs.map +1 -0
  1043. package/dist/stores/goal-store.d.ts +28 -0
  1044. package/dist/stores/goal-store.js +14 -0
  1045. package/dist/stores/goal-store.js.map +1 -0
  1046. package/dist/types/agent-server/core/events/conversation-state-event.d.ts +39 -3
  1047. package/dist/types/agent-server/type-guards.cjs +1 -1
  1048. package/dist/types/agent-server/type-guards.cjs.map +1 -1
  1049. package/dist/types/agent-server/type-guards.d.ts +2 -1
  1050. package/dist/types/agent-server/type-guards.js +3 -3
  1051. package/dist/types/agent-server/type-guards.js.map +1 -1
  1052. package/dist/types/mcp-auth.cjs +2 -0
  1053. package/dist/types/mcp-auth.cjs.map +1 -0
  1054. package/dist/types/mcp-auth.d.ts +43 -0
  1055. package/dist/types/mcp-auth.js +13 -0
  1056. package/dist/types/mcp-auth.js.map +1 -0
  1057. package/dist/types/mcp-server.d.ts +22 -1
  1058. package/dist/types/settings.d.ts +6 -4
  1059. package/dist/ui/context-menu.d.ts +1 -1
  1060. package/dist/utils/acp-command.d.ts +64 -0
  1061. package/dist/utils/automation-debug-prompt.d.ts +18 -0
  1062. package/dist/utils/constants.cjs +1 -1
  1063. package/dist/utils/constants.cjs.map +1 -1
  1064. package/dist/utils/constants.d.ts +2 -0
  1065. package/dist/utils/constants.js +12 -3
  1066. package/dist/utils/constants.js.map +1 -1
  1067. package/dist/utils/dropdown-classes.cjs +1 -1
  1068. package/dist/utils/dropdown-classes.cjs.map +1 -1
  1069. package/dist/utils/dropdown-classes.js +4 -2
  1070. package/dist/utils/dropdown-classes.js.map +1 -1
  1071. package/dist/utils/form-control-classes.cjs +1 -1
  1072. package/dist/utils/form-control-classes.js +1 -1
  1073. package/dist/utils/handle-event-for-ui.cjs +1 -1
  1074. package/dist/utils/handle-event-for-ui.cjs.map +1 -1
  1075. package/dist/utils/handle-event-for-ui.js +72 -37
  1076. package/dist/utils/handle-event-for-ui.js.map +1 -1
  1077. package/dist/utils/mcp-config.cjs +1 -1
  1078. package/dist/utils/mcp-config.cjs.map +1 -1
  1079. package/dist/utils/mcp-config.d.ts +15 -9
  1080. package/dist/utils/mcp-config.js +124 -53
  1081. package/dist/utils/mcp-config.js.map +1 -1
  1082. package/dist/utils/mcp-installed-server-display.cjs +2 -0
  1083. package/dist/utils/mcp-installed-server-display.cjs.map +1 -0
  1084. package/dist/utils/mcp-installed-server-display.d.ts +8 -0
  1085. package/dist/utils/mcp-installed-server-display.js +12 -0
  1086. package/dist/utils/mcp-installed-server-display.js.map +1 -0
  1087. package/dist/utils/mcp-installed-servers.cjs +1 -1
  1088. package/dist/utils/mcp-installed-servers.cjs.map +1 -1
  1089. package/dist/utils/mcp-installed-servers.js +4 -4
  1090. package/dist/utils/mcp-installed-servers.js.map +1 -1
  1091. package/dist/utils/mcp-marketplace-utils.cjs +1 -1
  1092. package/dist/utils/mcp-marketplace-utils.cjs.map +1 -1
  1093. package/dist/utils/mcp-marketplace-utils.d.ts +2 -0
  1094. package/dist/utils/mcp-marketplace-utils.js +31 -16
  1095. package/dist/utils/mcp-marketplace-utils.js.map +1 -1
  1096. package/dist/utils/mcp-server-name.cjs +2 -0
  1097. package/dist/utils/mcp-server-name.cjs.map +1 -0
  1098. package/dist/utils/mcp-server-name.d.ts +3 -0
  1099. package/dist/utils/mcp-server-name.js +12 -0
  1100. package/dist/utils/mcp-server-name.js.map +1 -0
  1101. package/dist/utils/plugin-display.cjs +2 -0
  1102. package/dist/utils/plugin-display.cjs.map +1 -0
  1103. package/dist/utils/plugin-display.d.ts +20 -0
  1104. package/dist/utils/plugin-display.js +29 -0
  1105. package/dist/utils/plugin-display.js.map +1 -0
  1106. package/dist/utils/settings-utils.cjs.map +1 -1
  1107. package/dist/utils/settings-utils.js.map +1 -1
  1108. package/dist/utils/workspaces-compatibility.cjs +1 -1
  1109. package/dist/utils/workspaces-compatibility.cjs.map +1 -1
  1110. package/dist/utils/workspaces-compatibility.js +1 -0
  1111. package/dist/utils/workspaces-compatibility.js.map +1 -1
  1112. package/package.json +7 -4
  1113. package/scripts/check-sdk-version-sync.mjs +6 -6
  1114. package/scripts/check-translation-completeness.cjs +6 -0
  1115. package/scripts/dev-safe.mjs +14 -3
  1116. package/scripts/dev-with-automation.mjs +4 -0
  1117. package/scripts/gen-acp-docker-env.mjs +107 -0
  1118. package/scripts/ingress.mjs +66 -226
  1119. package/scripts/proxy-utils.mjs +171 -0
  1120. package/scripts/static-server.mjs +127 -283
  1121. package/build/assets/Trans-CiZR6eVI.js +0 -1
  1122. package/build/assets/active-backend-context-CEuva6ZJ.js +0 -1
  1123. package/build/assets/add-backend-modal-b_eiVk3A.js +0 -1
  1124. package/build/assets/agent-server-conversation-service.api-D_uJ7BKc.js +0 -5
  1125. package/build/assets/agent-settings-DyfziYyM.js +0 -2
  1126. package/build/assets/alert-banner-BFayS5vM.js +0 -1
  1127. package/build/assets/analytics-consent-form-modal-CQ22qlFF.js +0 -1
  1128. package/build/assets/api-key-entry-screen-KnIwP0vN.js +0 -1
  1129. package/build/assets/app-settings-CBaHJ5vJ.js +0 -1
  1130. package/build/assets/automation-detail-DgQswnXg.js +0 -1
  1131. package/build/assets/automations-list-D99p6CoQ.js +0 -1
  1132. package/build/assets/back-nav-button-Cp9z-wsG.js +0 -1
  1133. package/build/assets/backend-form-modal-BABAz-zH.js +0 -1
  1134. package/build/assets/backend-synced-settings-badge-DzwWQC4T.js +0 -1
  1135. package/build/assets/base-modal-1bHiB5Wf.js +0 -1
  1136. package/build/assets/brand-button-FHWgEb4Q.js +0 -1
  1137. package/build/assets/browser-store-B9h0eW79.js +0 -1
  1138. package/build/assets/browser-tab-JiCXo0Nc.js +0 -1
  1139. package/build/assets/chat-send-button-QtyofqFt.js +0 -1
  1140. package/build/assets/check-6ieIiPhW.js +0 -1
  1141. package/build/assets/checkmark-BfgRVMHK.js +0 -1
  1142. package/build/assets/circle-plus-check-toggle-CmINKfZj.js +0 -1
  1143. package/build/assets/close-DhH0uMa7.js +0 -1
  1144. package/build/assets/code-tag-CnORXDJj.js +0 -1
  1145. package/build/assets/combobox-caret-BB15S7zY.js +0 -1
  1146. package/build/assets/condenser-settings-BOKNShD9.js +0 -1
  1147. package/build/assets/confirmation-modal-CofmThy4.js +0 -1
  1148. package/build/assets/context-menu-list-item-DO12IEaK.js +0 -1
  1149. package/build/assets/conversation-DIzv-jq8.js +0 -1
  1150. package/build/assets/conversation-DV3odvMe.js +0 -19
  1151. package/build/assets/conversation-local-storage-DK7yJr5N.js +0 -1
  1152. package/build/assets/conversation-panel-CgCarTAn.js +0 -1
  1153. package/build/assets/conversation-service.api-RV_bOKNz.js +0 -1
  1154. package/build/assets/conversation-state-store-4obo4ZMf.js +0 -1
  1155. package/build/assets/conversation-store-CXrL0v-X.js +0 -6
  1156. package/build/assets/conversation-tab-empty-state-CqT5ur_H.js +0 -1
  1157. package/build/assets/copy-C5tBqfWu.js +0 -1
  1158. package/build/assets/copy-to-clipboard-button-BVFYcsg_.js +0 -1
  1159. package/build/assets/createLucideIcon-D3nkdIAN.js +0 -1
  1160. package/build/assets/declaration-B0yY_dkQ.js +0 -1
  1161. package/build/assets/device-verify-DRupI_hz.js +0 -1
  1162. package/build/assets/dist-D5d5zm8o.js +0 -1
  1163. package/build/assets/dist-fV7trlfb.js +0 -1
  1164. package/build/assets/dropdown-classes-5IsMjYYw.js +0 -1
  1165. package/build/assets/edit-automation-modal-BG-gd82b.js +0 -1
  1166. package/build/assets/ellipsis-button-DWvVZO_r.js +0 -1
  1167. package/build/assets/entry.client-uhbVfCtd.js +0 -2
  1168. package/build/assets/enum-filter-dropdown-CB2fqz_e.js +0 -1
  1169. package/build/assets/environment-switch-overlay-Oeal5TVq.js +0 -1
  1170. package/build/assets/extensions-hub-DxiE0AZR.js +0 -1
  1171. package/build/assets/files-tab-1F2OlNeH.js +0 -1
  1172. package/build/assets/files-tab-store-C1q5Rbx3.js +0 -1
  1173. package/build/assets/folder-C5tr7xyN.js +0 -1
  1174. package/build/assets/get-language-from-path-E1JKsbeE.js +0 -1
  1175. package/build/assets/git-provider-icon-CKs-22Ts.js +0 -1
  1176. package/build/assets/home-B3E0le0g.js +0 -1
  1177. package/build/assets/iconBase-DMoh3FEg.js +0 -1
  1178. package/build/assets/index-redirect-DhuK5mhS.js +0 -1
  1179. package/build/assets/install-server-modal-DjintV14.js +0 -1
  1180. package/build/assets/is-backend-llm-ready-Bj44pekN.js +0 -1
  1181. package/build/assets/launch-DCU3S84p.js +0 -1
  1182. package/build/assets/lesson-plan-BUUPKVsa.js +0 -3
  1183. package/build/assets/link-external-CF4KHxx-.js +0 -1
  1184. package/build/assets/llm-client-BakM_czF.js +0 -1
  1185. package/build/assets/llm-not-configured-banner-BV-NIjfR.js +0 -27
  1186. package/build/assets/llm-settings-B5d7PHzz.js +0 -1
  1187. package/build/assets/llm-settings-C5whb-0p.js +0 -1
  1188. package/build/assets/loader-circle-DyX8DmLg.js +0 -1
  1189. package/build/assets/loading-spinner-BvOAco8a.js +0 -1
  1190. package/build/assets/manage-backends-modal-D9ClxVpM.js +0 -1
  1191. package/build/assets/manifest-38a873aa.js +0 -1
  1192. package/build/assets/mcp-7rk44GRS.js +0 -9
  1193. package/build/assets/mcp-client-DxHXYNOw.js +0 -1
  1194. package/build/assets/messages-DgBEaXil.js +0 -43
  1195. package/build/assets/modal-backdrop-DjAC2zOZ.js +0 -1
  1196. package/build/assets/modal-body-OJdIUJ68.js +0 -1
  1197. package/build/assets/modal-close-button-BNjGesHc.js +0 -1
  1198. package/build/assets/model-selector-w2uGPM5y.js +0 -1
  1199. package/build/assets/navigation-context-CUJ60pLI.js +0 -1
  1200. package/build/assets/navigation-link-BiPKTOHF.js +0 -1
  1201. package/build/assets/onboarding-Cit87z8g.js +0 -1
  1202. package/build/assets/onboarding-modal-JPrzvr8W.js +0 -1
  1203. package/build/assets/openhands-logo-uNs9g6LY.js +0 -1
  1204. package/build/assets/option-service.api-BLYUhnCF.js +0 -1
  1205. package/build/assets/organization-service.api-DpSSwlZu.js +0 -1
  1206. package/build/assets/path-utils-B4WAVqvK.js +0 -1
  1207. package/build/assets/plan-components-DSOTFW2D.js +0 -1
  1208. package/build/assets/planner-tab-LmoxgKKe.js +0 -1
  1209. package/build/assets/preload-helper-D_sPnjeL.js +0 -1
  1210. package/build/assets/profiles-client-B4SJ4ZAf.js +0 -1
  1211. package/build/assets/providers-BGUAB8kf.js +0 -1
  1212. package/build/assets/react-Dn-iWFF5.js +0 -1
  1213. package/build/assets/react-dom-BBXlXOZX.js +0 -1
  1214. package/build/assets/react-uQK8du1l.js +0 -1
  1215. package/build/assets/recommended-automations-launcher-Df9MXUpX.js +0 -50
  1216. package/build/assets/root-BShAdYGY.css +0 -1
  1217. package/build/assets/root-C99reK-P.js +0 -2
  1218. package/build/assets/root-layout-BtH64XeC.js +0 -2
  1219. package/build/assets/runtime-waiting-state-C7MjXDeW.js +0 -1
  1220. package/build/assets/schema-field-BCDuEMrl.js +0 -1
  1221. package/build/assets/sdk-section-page-XJN9mGju.js +0 -1
  1222. package/build/assets/sdk-settings-schema-B15AE1GH.js +0 -1
  1223. package/build/assets/search-rob4u9f8.js +0 -1
  1224. package/build/assets/secrets-service-CrPyCR8u.js +0 -1
  1225. package/build/assets/secrets-settings-UJn15N7E.js +0 -1
  1226. package/build/assets/settings-C5aUD_sQ.js +0 -1
  1227. package/build/assets/settings-dropdown-input-DQRt2_RA.js +0 -1
  1228. package/build/assets/settings-gear-B7bZDo_8.js +0 -1
  1229. package/build/assets/settings-index-zP_rYIW1.js +0 -1
  1230. package/build/assets/settings-input-n8FzVso3.js +0 -1
  1231. package/build/assets/settings-list-classes-DquY3fwm.js +0 -1
  1232. package/build/assets/settings-modal-szlQ6LpE.js +0 -1
  1233. package/build/assets/settings-section-header-context-DrXgyNC-.js +0 -1
  1234. package/build/assets/settings-service.api-B4G8NzCM.js +0 -1
  1235. package/build/assets/settings-switch-DsbEm3ie.js +0 -1
  1236. package/build/assets/shared-conversation-BrAvqeaI.js +0 -1
  1237. package/build/assets/sidebar-mobile-menu-toggle-BRZGCe-l.js +0 -1
  1238. package/build/assets/sidebar-nav-link-B_EygIce.js +0 -1
  1239. package/build/assets/skill-card-pill-row-Bq9Imkdh.js +0 -1
  1240. package/build/assets/skills-Wg6i0kbu.js +0 -1
  1241. package/build/assets/skills-client-DNd444Bm.js +0 -1
  1242. package/build/assets/skills-plugins-DaGkVI7-.js +0 -1
  1243. package/build/assets/skills-settings-Dlp0WFaT.js +0 -2
  1244. package/build/assets/styled-tooltip-ulgpZDga.js +0 -1
  1245. package/build/assets/suspense-BqBQEuKs.js +0 -1
  1246. package/build/assets/switch-skeleton-C49gVWOQ.js +0 -1
  1247. package/build/assets/task-list-tab-Bz-UlCm2.js +0 -1
  1248. package/build/assets/telemetry-DD3HKMgf.js +0 -2
  1249. package/build/assets/terminal-BwLvVzyJ.js +0 -1
  1250. package/build/assets/toggle-switch-CxW8-lBI.js +0 -1
  1251. package/build/assets/typography-BLf_mRKH.js +0 -1
  1252. package/build/assets/u-check-circle-CxTAJuY9.js +0 -1
  1253. package/build/assets/u-check-circle-half-Bj73jfUG.js +0 -1
  1254. package/build/assets/u-circuit-C-6V9H9C.js +0 -1
  1255. package/build/assets/u-edit-C7OnK2sa.js +0 -1
  1256. package/build/assets/use-acp-credential-form-oehc057O.js +0 -1
  1257. package/build/assets/use-active-conversation-CFXVX2on.js +0 -1
  1258. package/build/assets/use-agent-state-D6xfZA4-.js +0 -1
  1259. package/build/assets/use-backends-health-93yRIOWs.js +0 -1
  1260. package/build/assets/use-breakpoint-Xdy_aZHE.js +0 -1
  1261. package/build/assets/use-click-outside-element-CADb_gCP.js +0 -1
  1262. package/build/assets/use-cloud-current-user-id-CzOXsy04.js +0 -1
  1263. package/build/assets/use-config-oXjEWyb6.js +0 -1
  1264. package/build/assets/use-create-conversation-D-YkgrxS.js +0 -1
  1265. package/build/assets/use-create-secret-CX7Ij7W4.js +0 -1
  1266. package/build/assets/use-event-store-DMRAQQi8.js +0 -1
  1267. package/build/assets/use-handle-plan-click-CwW2Ijc2.js +0 -1
  1268. package/build/assets/use-is-authed-CNbX1KMm.js +0 -1
  1269. package/build/assets/use-launch-skill-in-chat-xI9byRUw.js +0 -1
  1270. package/build/assets/use-llm-profiles-BXRZ2rBh.js +0 -1
  1271. package/build/assets/use-runtime-is-ready-Dwzs9_vp.js +0 -1
  1272. package/build/assets/use-settings-_usWr_qn.js +0 -1
  1273. package/build/assets/use-settings-nav-items-DoB5iH-7.js +0 -16
  1274. package/build/assets/use-skills-BtorhoCN.js +0 -1
  1275. package/build/assets/use-task-list-u46BhYBC.js +0 -1
  1276. package/build/assets/use-tracking-Ca7p71hH.js +0 -1
  1277. package/build/assets/use-user-conversation-U-16WF6G.js +0 -1
  1278. package/build/assets/useMutation-CseCrRRO.js +0 -1
  1279. package/build/assets/useQuery-bowvACed.js +0 -1
  1280. package/build/assets/useTranslation-KhTtKmnv.js +0 -1
  1281. package/build/assets/utils-cRyMoFbz.js +0 -1
  1282. package/build/assets/vendor~conversation-panel~conversation~alert-banner-CjfR7T3x.js +0 -1
  1283. package/build/assets/vendor~entry.client-_zl82x5T.js +0 -1
  1284. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~dj9x5fm9-CgCGB-3J.js +0 -177
  1285. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~jfvr34cq-BJdsUTJG.js +0 -1
  1286. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~m3df9r20-BynFAJ_S.js +0 -1
  1287. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~nk00xiud-MfCRtPrK.js +0 -9
  1288. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~ghtfhmuy-BHDILMe2.js +0 -1
  1289. package/build/assets/vendor~root-layout~conversation-panel~conversation-BFZmbXpq.js +0 -1
  1290. package/build/assets/vendor~root-layout~conversation-panel~conversation~index-BPY-kNjK.js +0 -1
  1291. package/build/assets/vendor~root-layout~home~conversation-panel~conversation-BhWqQNmF.js +0 -1
  1292. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~cfyi58ut-CnnEa0dP.js +0 -1
  1293. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~clac83qc-DMX6XUwI.js +0 -2
  1294. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ldu51w4e-Cqp6k3RG.js +0 -1
  1295. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ldu51w4e-DS4GWhCz.js +0 -9
  1296. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~ji28rqgb-DVffa9Ks.js +0 -48
  1297. package/build/assets/vendor~root-layout~home~mcp~automations-list~onboarding-modal-BzR6ypP3.js +0 -1
  1298. package/build/assets/vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~hzfcl1q6-BcvHZmEZ.js +0 -2
  1299. package/build/assets/vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~hzfcl1q6-Cuvp6wqR.js +0 -14
  1300. package/build/assets/verification-settings-DKZnUHD6.js +0 -1
  1301. package/build/assets/x-DpnGZyVW.js +0 -1
  1302. package/build/assets/x-mark-x3tvCZzc.js +0 -1
  1303. package/dist/components/features/analytics/analytics-consent-form-modal.d.ts +0 -5
  1304. package/dist/components/features/chat/switch-profile-button.cjs +0 -2
  1305. package/dist/components/features/chat/switch-profile-button.cjs.map +0 -1
  1306. package/dist/components/features/chat/switch-profile-button.d.ts +0 -1
  1307. package/dist/components/features/chat/switch-profile-button.js +0 -48
  1308. package/dist/components/features/chat/switch-profile-button.js.map +0 -1
  1309. package/dist/components/features/chat/switch-profile-context-menu.cjs +0 -2
  1310. package/dist/components/features/chat/switch-profile-context-menu.cjs.map +0 -1
  1311. package/dist/components/features/chat/switch-profile-context-menu.d.ts +0 -9
  1312. package/dist/components/features/chat/switch-profile-context-menu.js +0 -106
  1313. package/dist/components/features/chat/switch-profile-context-menu.js.map +0 -1
  1314. package/dist/components/features/onboarding/is-backend-llm-ready.d.ts +0 -30
  1315. package/dist/icons/u-circuit.cjs +0 -2
  1316. package/dist/icons/u-circuit.cjs.map +0 -1
  1317. package/dist/icons/u-circuit.js +0 -19
  1318. package/dist/icons/u-circuit.js.map +0 -1
  1319. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.cjs +0 -2
  1320. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.cjs.map +0 -1
  1321. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.js +0 -35
  1322. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.js.map +0 -1
  1323. package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.cjs +0 -2
  1324. package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.cjs.map +0 -1
  1325. package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.js +0 -35
  1326. package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.js.map +0 -1
  1327. package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.cjs +0 -2
  1328. package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.cjs.map +0 -1
  1329. package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.js +0 -35
  1330. package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.js.map +0 -1
  1331. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs +0 -2
  1332. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs.map +0 -1
  1333. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js +0 -35
  1334. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js.map +0 -1
  1335. package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.cjs +0 -2
  1336. package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.cjs.map +0 -1
  1337. package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.js +0 -35
  1338. package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.js.map +0 -1
  1339. package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.cjs +0 -2
  1340. package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.cjs.map +0 -1
  1341. package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.js +0 -35
  1342. package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.js.map +0 -1
  1343. package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.cjs +0 -2
  1344. package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.cjs.map +0 -1
  1345. package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.js +0 -28
  1346. package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.js.map +0 -1
  1347. package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.cjs +0 -2
  1348. package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.cjs.map +0 -1
  1349. package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.js +0 -35
  1350. package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.js.map +0 -1
  1351. package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.cjs +0 -2
  1352. package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.cjs.map +0 -1
  1353. package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.js +0 -35
  1354. package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.js.map +0 -1
  1355. package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.cjs +0 -2
  1356. package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.cjs.map +0 -1
  1357. package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.js +0 -35
  1358. package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.js.map +0 -1
  1359. /package/build/assets/{agent-server-ui-style-scope-CIDFDeQb.js → agent-server-ui-style-scope-COnDHTm5.js} +0 -0
  1360. /package/build/assets/{automation-DNgDxqtq.js → automation-BU8zu-FP.js} +0 -0
  1361. /package/build/assets/{common-KeiA2Rod.js → common-Dh7OqABE.js} +0 -0
  1362. /package/build/assets/{environment-switch-store-BpKxp6Xq.js → environment-switch-store-DkjlKWzN.js} +0 -0
  1363. /package/build/assets/{extension-module-card-classes-DvvyImGv.js → extension-module-card-classes-9V3J9J_b.js} +0 -0
  1364. /package/build/assets/{git-status-mapper-B3_HbzUT.js → git-status-mapper-BI8FyUVp.js} +0 -0
  1365. /package/build/assets/{handle-capture-consent-BChvj6mt.js → handle-capture-consent-CPMXU29K.js} +0 -0
  1366. /package/build/assets/{llm-subscription-C1xDoa3K.js → llm-subscription-DtsX5Lhg.js} +0 -0
  1367. /package/build/assets/{map-provider-MonJL5SS.js → map-provider-BM2SJarp.js} +0 -0
  1368. /package/build/assets/{objectWithoutPropertiesLoose-BRYudkUn.js → objectWithoutPropertiesLoose-BgYIAs2y.js} +0 -0
  1369. /package/build/assets/{rolldown-runtime-wFmyQBCi.js → rolldown-runtime-BFRubm34.js} +0 -0
  1370. /package/build/assets/{settings-like-page-layout-classes-DNg2vKSM.js → settings-like-page-layout-classes-DENKlZpD.js} +0 -0
  1371. /package/build/assets/{v4-BMWDcIWQ.js → v4-DbCkTSoU.js} +0 -0
  1372. /package/build/assets/{vendor~browser-yZEspfT9.js → vendor~browser-Dqd33JyP.js} +0 -0
  1373. /package/build/assets/{vendor~terminal-CcUoOdAH.js → vendor~terminal-aeP3PnKf.js} +0 -0
@@ -1,6 +1,6 @@
1
- import{t as e}from"./common-KeiA2Rod.js";import{t}from"./settings-CN_HaPjH.js";import{c as n,d as r,l as i,o as a,s as o,u as s}from"./llm-subscription-C1xDoa3K.js";import{t as c}from"./automation-DNgDxqtq.js";import{i as l,n as u,r as d,t as f}from"./vendor~browser-BQU4C3CQ.js";var p=[`file1.txt`,`file2.txt`,`file3.txt`],m=[`reboot_skynet.exe`,`target_list.txt`,`terminator_blueprint.txt`],ee={home:`/home/openhands`,favorites:[{label:`Downloads`,path:`/home/openhands/Downloads`}],locations:[]},h={"/projects":[{name:`demo-app`,path:`/projects/demo-app`},{name:`sample-tools`,path:`/projects/sample-tools`},{name:`notes-service`,path:`/projects/notes-service`}],"/projects/demo-app":[{name:`web-client`,path:`/projects/demo-app/web-client`},{name:`api-service`,path:`/projects/demo-app/api-service`}],"/projects/demo-app/web-client":[]},g=[u.all(`*/api/bash/execute_bash_command`,async()=>l.json({command:``,exit_code:0,output:``})),u.get(`*/api/file/home`,async()=>l.json(ee)),u.get(`*/api/file/search_subdirs`,async({request:e})=>{let t=new URL(e.url).searchParams.get(`path`)??``,n=h[t]??[];return l.json({path:t,items:n,subdirs:n,next_page_id:null})}),u.get(`*/api/file/:path`,async({params:e})=>l.json({path:`/${e.path?.toString()??`home`}`,subdirs:[]})),u.get(`/api/conversations/:conversationId/list-files`,async({params:e})=>{await f();let t=e.conversationId?.toString();return t?t===`test-conversation-id-2`?l.json(m):l.json(p):l.json(null,{status:400})}),u.get(`/api/conversations/:conversationId/select-file`,async({request:e})=>{await f();let t=new URL(e.url).searchParams.get(`file`)?.toString();return t?l.json({code:`Content of ${t}`}):l.json(null,{status:404})})],te=[{issue_number:6968,title:`Fix merge conflicts`,repo:`octocat/hello-world`,task_type:`MERGE_CONFLICTS`,git_provider:`github`}],ne=[{issue_number:268,title:`Fix broken CI checks`,repo:`octocat/earth`,task_type:`FAILING_CHECKS`,git_provider:`github`},{issue_number:281,title:`Fix issue`,repo:`octocat/earth`,task_type:`UNRESOLVED_COMMENTS`,git_provider:`github`},{issue_number:293,title:`Update documentation`,repo:`octocat/earth`,task_type:`OPEN_ISSUE`,git_provider:`github`},{issue_number:305,title:`Refactor user service`,repo:`octocat/earth`,task_type:`FAILING_CHECKS`,git_provider:`github`},{issue_number:312,title:`Fix styling bug`,repo:`octocat/earth`,task_type:`FAILING_CHECKS`,git_provider:`github`},{issue_number:327,title:`Add unit tests`,repo:`octocat/earth`,task_type:`FAILING_CHECKS`,git_provider:`github`},{issue_number:331,title:`Implement dark mode`,repo:`octocat/earth`,task_type:`FAILING_CHECKS`,git_provider:`github`},{issue_number:345,title:`Optimize build process`,repo:`octocat/earth`,task_type:`FAILING_CHECKS`,git_provider:`github`},{issue_number:352,title:`Update dependencies`,repo:`octocat/earth`,task_type:`FAILING_CHECKS`,git_provider:`github`}],re=[...te,...ne],ie=[u.get(`*/api/v1/git/suggested-tasks/search`,async({request:e})=>{let t=new URL(e.url),n=t.searchParams.get(`limit`),r=t.searchParams.get(`page_id`),i=[...re];if(r||n){let e=n?parseInt(n,10):30;i=i.slice(0,e)}return l.json({items:i,next_page_id:null})})],_=new Map([[`OpenAI_API_Key`,{value:`test-123`,description:`OpenAI API Key`}],[`Google_Maps_API_Key`,{value:`test-123`,description:`Google Maps API Key`}]]),ae=[u.get(`*/api/settings/secrets`,async({request:e})=>{if(new URL(e.url).pathname.split(`/`).filter(Boolean).length>3)return;let t=Array.from(_.entries()).map(([e,{description:t}])=>({name:e,description:t}));return l.json({secrets:t})}),u.get(`*/api/settings/secrets/:name`,async({params:e})=>{let{name:t}=e;if(typeof t!=`string`)return l.json({detail:`Invalid name`},{status:400});let n=_.get(t);return n?new l(n.value,{headers:{"Content-Type":`text/plain`}}):l.json({detail:`Secret not found`},{status:404})}),u.put(`*/api/settings/secrets`,async({request:e})=>{let t=await e.json();return!t?.name||!t?.value?l.json({detail:`name and value are required`},{status:400}):(_.set(t.name,{value:t.value,description:t.description}),l.json({name:t.name,description:t.description}))}),u.delete(`*/api/settings/secrets/:name`,async({params:e})=>{let{name:t}=e;return typeof t==`string`?_.delete(t)?l.json({deleted:!0}):l.json({detail:`Secret not found`},{status:404}):l.json({detail:`Invalid name`},{status:400})})],v=(e,t)=>Array.from({length:e},(e,n)=>({id:`${n+1}`,full_name:`user/repo-${n+1}`,git_provider:t,is_public:Math.random()>.3,stargazers_count:Math.floor(Math.random()*1e3),pushed_at:new Date(Date.now()-Math.random()*90*24*60*60*1e3).toISOString()})),oe=e=>Array.from({length:e},(e,t)=>({name:t===0?`main`:t===1?`develop`:`feature/branch-${t}`,commit_sha:`abc123${t.toString().padStart(3,`0`)}`,protected:t===0,last_push_date:new Date(Date.now()-Math.random()*7*24*60*60*1e3).toISOString()})),y={github:v(120,`github`),gitlab:v(120,`gitlab`),bitbucket:v(120,`bitbucket`)},b=oe(25),se=[{path:`src/components/hello.tsx`,status:`UPDATED`},{path:`src/utils/new-helper.ts`,status:`ADDED`},{path:`src/old-module.py`,status:`DELETED`}],ce=[u.get(`*/api/user/repositories`,async({request:e})=>{await f(500);let t=new URL(e.url),n=t.searchParams.get(`selected_provider`),r=parseInt(t.searchParams.get(`page`)||`1`,10),i=parseInt(t.searchParams.get(`per_page`)||`30`,10),a=t.searchParams.get(`sort`)||`pushed`,o=t.searchParams.get(`installation_id`);if(!n)return l.json(`Git provider token required. (such as GitHub).`,{status:401});let s=[...y[n]||[]];if(a===`pushed`?s.sort((e,t)=>new Date(t.pushed_at).getTime()-new Date(e.pushed_at).getTime()):a===`stars`&&s.sort((e,t)=>(t.stargazers_count||0)-(e.stargazers_count||0)),o&&n===`github`){let e=(parseInt(o,10)||0)*20;s=s.slice(e,e+20)}let c=(r-1)*i,u=c+i,d=s.slice(c,u),p=u<s.length,m=r>1,ee=Math.ceil(s.length/i),h=``;if(p||m){let e=[];m&&e.push(`</api/user/repositories?page=${r-1}&per_page=${i}>; rel="prev"`),p&&e.push(`</api/user/repositories?page=${r+1}&per_page=${i}>; rel="next"`),e.push(`</api/user/repositories?page=${ee}&per_page=${i}>; rel="last"`),e.push(`</api/user/repositories?page=1&per_page=${i}>; rel="first"`),h=e.join(`, `)}let g=[...d];return g.length>0&&h&&(g[0]={...g[0],link_header:h}),l.json(g)}),u.get(`*/api/user/search/repositories`,async({request:e})=>{await f(300);let t=new URL(e.url),n=t.searchParams.get(`query`)||``,r=t.searchParams.get(`selected_provider`),i=parseInt(t.searchParams.get(`per_page`)||`5`,10),a=t.searchParams.get(`sort`)||`stars`,o=t.searchParams.get(`order`)||`desc`;if(!r)return l.json(`Git provider token required.`,{status:401});let s=[...(y[r]||[]).filter(e=>e.full_name.toLowerCase().includes(n.toLowerCase()))];a===`stars`&&s.sort((e,t)=>{let n=e.stargazers_count||0,r=t.stargazers_count||0;return o===`desc`?r-n:n-r});let c=s.slice(0,i);return l.json(c)}),u.get(`*/api/user/repository/branches`,async({request:e})=>{await f(300);let t=new URL(e.url),n=t.searchParams.get(`repository`),r=parseInt(t.searchParams.get(`page`)||`1`,10),i=parseInt(t.searchParams.get(`per_page`)||`30`,10);if(!n)return l.json(`Repository parameter is required`,{status:400});let a=(r-1)*i,o=a+i,s={branches:b.slice(a,o),has_next_page:o<b.length,current_page:r,per_page:i,total_count:b.length};return l.json(s)}),u.get(`*/api/user/search/branches`,async({request:e})=>{await f(200);let t=new URL(e.url),n=t.searchParams.get(`repository`),r=t.searchParams.get(`query`)||``,i=parseInt(t.searchParams.get(`per_page`)||`30`,10);if(!n)return l.json(`Repository parameter is required`,{status:400});let a=b.filter(e=>e.name.toLowerCase().includes(r.toLowerCase())).slice(0,i);return l.json(a)}),u.get(`*/api/git/changes`,async()=>l.json(se)),u.get(`*/api/git/diff`,async()=>l.json({original:`def greet(name):
1
+ import{t as e}from"./common-Dh7OqABE.js";import{t}from"./settings-mQUckT0g.js";import{c as n,d as r,l as i,o as a,s as o,u as s}from"./llm-subscription-DtsX5Lhg.js";import{t as c}from"./automation-BU8zu-FP.js";import{i as l,n as u,r as d,t as f}from"./vendor~browser-Cvg7jXCP.js";var p=[`file1.txt`,`file2.txt`,`file3.txt`],m=[`reboot_skynet.exe`,`target_list.txt`,`terminator_blueprint.txt`],ee={home:`/home/openhands`,favorites:[{label:`Downloads`,path:`/home/openhands/Downloads`}],locations:[]},h={"/projects":[{name:`demo-app`,path:`/projects/demo-app`},{name:`sample-tools`,path:`/projects/sample-tools`},{name:`notes-service`,path:`/projects/notes-service`}],"/projects/demo-app":[{name:`web-client`,path:`/projects/demo-app/web-client`},{name:`api-service`,path:`/projects/demo-app/api-service`}],"/projects/demo-app/web-client":[]},g=[u.all(`*/api/bash/execute_bash_command`,async()=>l.json({command:``,exit_code:0,output:``})),u.get(`*/api/file/home`,async()=>l.json(ee)),u.get(`*/api/file/search_subdirs`,async({request:e})=>{let t=new URL(e.url).searchParams.get(`path`)??``,n=h[t]??[];return l.json({path:t,items:n,subdirs:n,next_page_id:null})}),u.get(`*/api/file/:path`,async({params:e})=>l.json({path:`/${e.path?.toString()??`home`}`,subdirs:[]})),u.get(`/api/conversations/:conversationId/list-files`,async({params:e})=>{await f();let t=e.conversationId?.toString();return t?t===`test-conversation-id-2`?l.json(m):l.json(p):l.json(null,{status:400})}),u.get(`/api/conversations/:conversationId/select-file`,async({request:e})=>{await f();let t=new URL(e.url).searchParams.get(`file`)?.toString();return t?l.json({code:`Content of ${t}`}):l.json(null,{status:404})})],te=[{issue_number:6968,title:`Fix merge conflicts`,repo:`octocat/hello-world`,task_type:`MERGE_CONFLICTS`,git_provider:`github`}],ne=[{issue_number:268,title:`Fix broken CI checks`,repo:`octocat/earth`,task_type:`FAILING_CHECKS`,git_provider:`github`},{issue_number:281,title:`Fix issue`,repo:`octocat/earth`,task_type:`UNRESOLVED_COMMENTS`,git_provider:`github`},{issue_number:293,title:`Update documentation`,repo:`octocat/earth`,task_type:`OPEN_ISSUE`,git_provider:`github`},{issue_number:305,title:`Refactor user service`,repo:`octocat/earth`,task_type:`FAILING_CHECKS`,git_provider:`github`},{issue_number:312,title:`Fix styling bug`,repo:`octocat/earth`,task_type:`FAILING_CHECKS`,git_provider:`github`},{issue_number:327,title:`Add unit tests`,repo:`octocat/earth`,task_type:`FAILING_CHECKS`,git_provider:`github`},{issue_number:331,title:`Implement dark mode`,repo:`octocat/earth`,task_type:`FAILING_CHECKS`,git_provider:`github`},{issue_number:345,title:`Optimize build process`,repo:`octocat/earth`,task_type:`FAILING_CHECKS`,git_provider:`github`},{issue_number:352,title:`Update dependencies`,repo:`octocat/earth`,task_type:`FAILING_CHECKS`,git_provider:`github`}],re=[...te,...ne],ie=[u.get(`*/api/v1/git/suggested-tasks/search`,async({request:e})=>{let t=new URL(e.url),n=t.searchParams.get(`limit`),r=t.searchParams.get(`page_id`),i=[...re];if(r||n){let e=n?parseInt(n,10):30;i=i.slice(0,e)}return l.json({items:i,next_page_id:null})})],_=new Map([[`OpenAI_API_Key`,{value:`test-123`,description:`OpenAI API Key`}],[`Google_Maps_API_Key`,{value:`test-123`,description:`Google Maps API Key`}]]),ae=[u.get(`*/api/settings/secrets`,async({request:e})=>{if(new URL(e.url).pathname.split(`/`).filter(Boolean).length>3)return;let t=Array.from(_.entries()).map(([e,{description:t}])=>({name:e,description:t}));return l.json({secrets:t})}),u.get(`*/api/settings/secrets/:name`,async({params:e})=>{let{name:t}=e;if(typeof t!=`string`)return l.json({detail:`Invalid name`},{status:400});let n=_.get(t);return n?new l(n.value,{headers:{"Content-Type":`text/plain`}}):l.json({detail:`Secret not found`},{status:404})}),u.put(`*/api/settings/secrets`,async({request:e})=>{let t=await e.json();return!t?.name||!t?.value?l.json({detail:`name and value are required`},{status:400}):(_.set(t.name,{value:t.value,description:t.description}),l.json({name:t.name,description:t.description}))}),u.delete(`*/api/settings/secrets/:name`,async({params:e})=>{let{name:t}=e;return typeof t==`string`?_.delete(t)?l.json({deleted:!0}):l.json({detail:`Secret not found`},{status:404}):l.json({detail:`Invalid name`},{status:400})})],v=(e,t)=>Array.from({length:e},(e,n)=>({id:`${n+1}`,full_name:`user/repo-${n+1}`,git_provider:t,is_public:Math.random()>.3,stargazers_count:Math.floor(Math.random()*1e3),pushed_at:new Date(Date.now()-Math.random()*90*24*60*60*1e3).toISOString()})),oe=e=>Array.from({length:e},(e,t)=>({name:t===0?`main`:t===1?`develop`:`feature/branch-${t}`,commit_sha:`abc123${t.toString().padStart(3,`0`)}`,protected:t===0,last_push_date:new Date(Date.now()-Math.random()*7*24*60*60*1e3).toISOString()})),y={github:v(120,`github`),gitlab:v(120,`gitlab`),bitbucket:v(120,`bitbucket`)},b=oe(25),se=[{path:`src/components/hello.tsx`,status:`UPDATED`},{path:`src/utils/new-helper.ts`,status:`ADDED`},{path:`src/old-module.py`,status:`DELETED`}],ce=[u.get(`*/api/user/repositories`,async({request:e})=>{await f(500);let t=new URL(e.url),n=t.searchParams.get(`selected_provider`),r=parseInt(t.searchParams.get(`page`)||`1`,10),i=parseInt(t.searchParams.get(`per_page`)||`30`,10),a=t.searchParams.get(`sort`)||`pushed`,o=t.searchParams.get(`installation_id`);if(!n)return l.json(`Git provider token required. (such as GitHub).`,{status:401});let s=[...y[n]||[]];if(a===`pushed`?s.sort((e,t)=>new Date(t.pushed_at).getTime()-new Date(e.pushed_at).getTime()):a===`stars`&&s.sort((e,t)=>(t.stargazers_count||0)-(e.stargazers_count||0)),o&&n===`github`){let e=(parseInt(o,10)||0)*20;s=s.slice(e,e+20)}let c=(r-1)*i,u=c+i,d=s.slice(c,u),p=u<s.length,m=r>1,ee=Math.ceil(s.length/i),h=``;if(p||m){let e=[];m&&e.push(`</api/user/repositories?page=${r-1}&per_page=${i}>; rel="prev"`),p&&e.push(`</api/user/repositories?page=${r+1}&per_page=${i}>; rel="next"`),e.push(`</api/user/repositories?page=${ee}&per_page=${i}>; rel="last"`),e.push(`</api/user/repositories?page=1&per_page=${i}>; rel="first"`),h=e.join(`, `)}let g=[...d];return g.length>0&&h&&(g[0]={...g[0],link_header:h}),l.json(g)}),u.get(`*/api/user/search/repositories`,async({request:e})=>{await f(300);let t=new URL(e.url),n=t.searchParams.get(`query`)||``,r=t.searchParams.get(`selected_provider`),i=parseInt(t.searchParams.get(`per_page`)||`5`,10),a=t.searchParams.get(`sort`)||`stars`,o=t.searchParams.get(`order`)||`desc`;if(!r)return l.json(`Git provider token required.`,{status:401});let s=[...(y[r]||[]).filter(e=>e.full_name.toLowerCase().includes(n.toLowerCase()))];a===`stars`&&s.sort((e,t)=>{let n=e.stargazers_count||0,r=t.stargazers_count||0;return o===`desc`?r-n:n-r});let c=s.slice(0,i);return l.json(c)}),u.get(`*/api/user/repository/branches`,async({request:e})=>{await f(300);let t=new URL(e.url),n=t.searchParams.get(`repository`),r=parseInt(t.searchParams.get(`page`)||`1`,10),i=parseInt(t.searchParams.get(`per_page`)||`30`,10);if(!n)return l.json(`Repository parameter is required`,{status:400});let a=(r-1)*i,o=a+i,s={branches:b.slice(a,o),has_next_page:o<b.length,current_page:r,per_page:i,total_count:b.length};return l.json(s)}),u.get(`*/api/user/search/branches`,async({request:e})=>{await f(200);let t=new URL(e.url),n=t.searchParams.get(`repository`),r=t.searchParams.get(`query`)||``,i=parseInt(t.searchParams.get(`per_page`)||`30`,10);if(!n)return l.json(`Repository parameter is required`,{status:400});let a=b.filter(e=>e.name.toLowerCase().includes(r.toLowerCase())).slice(0,i);return l.json(a)}),u.get(`*/api/git/changes`,async()=>l.json(se)),u.get(`*/api/git/diff`,async()=>l.json({original:`def greet(name):
2
2
  return f"Hello, {name}!"
3
3
  `,modified:`def greet(name: str) -> str:
4
4
  return f"Hello, {name}! Welcome."
5
- `}))];function x(e,t){let n={...e};for(let[e,r]of Object.entries(t))typeof r==`object`&&r&&!Array.isArray(r)&&typeof n[e]==`object`&&n[e]!=null&&!Array.isArray(n[e])?n[e]=x(n[e],r):n[e]=r;return n}var S=t.agent_settings??{},C=S.llm,w=typeof C?.model==`string`?C.model:`openhands/claude-opus-4-5-20251101`,T={model_name:`AgentSettings`,sections:[{key:`general`,label:`General`,fields:[{key:`enable_sub_agents`,label:`Enable sub-agents`,description:`Allow the agent to delegate work to specialized built-in sub-agents.`,section:`general`,section_label:`General`,value_type:`boolean`,default:!1,choices:[],depends_on:[],prominence:`major`,secret:!1,required:!1},{key:`tool_concurrency_limit`,label:`Parallel tool calls`,description:`Maximum number of tool calls to execute concurrently per agent step. 1 = sequential (default).`,section:`general`,section_label:`General`,value_type:`integer`,default:1,choices:[],depends_on:[],prominence:`major`,secret:!1,required:!1}]},{key:`llm`,label:`LLM`,fields:[{key:`llm.model`,label:`Model`,description:`Select the model to use for this conversation.`,section:`llm`,section_label:`LLM`,value_type:`string`,default:w,choices:[],depends_on:[],prominence:`critical`,secret:!1,required:!0},{key:`llm.api_key`,label:`API Key`,description:`Provide the API key used to authenticate requests for the selected model.`,section:`llm`,section_label:`LLM`,value_type:`string`,default:null,choices:[],depends_on:[],prominence:`critical`,secret:!0,required:!1},{key:`llm.base_url`,description:`Override the model provider's default API base URL when needed.`,label:`Base URL`,section:`llm`,section_label:`LLM`,value_type:`string`,default:null,choices:[],depends_on:[],prominence:`critical`,secret:!1,required:!1},{key:`llm.temperature`,label:`Temperature`,description:`Adjust randomness for non-deterministic model outputs.`,section:`llm`,section_label:`LLM`,value_type:`number`,default:null,choices:[],depends_on:[],prominence:`minor`,secret:!1,required:!1}]},{key:`verification`,label:`Verification`,fields:[{key:`verification.critic_enabled`,label:`Enable Critic`,description:`Enable an additional critic pass to review the agent's work.`,section:`verification`,section_label:`Verification`,value_type:`boolean`,default:!1,choices:[],depends_on:[],prominence:`critical`,secret:!1,required:!1},{key:`verification.critic_mode`,label:`Critic Mode`,description:`Choose when the critic should review and intervene.`,section:`verification`,section_label:`Verification`,value_type:`string`,default:`finish_and_message`,choices:[{label:`finish_and_message`,value:`finish_and_message`},{label:`all_actions`,value:`all_actions`}],depends_on:[`verification.critic_enabled`],prominence:`major`,secret:!1,required:!1},{key:`verification.enable_iterative_refinement`,label:`Enable Iterative Refinement`,description:`Let the critic send the agent back to refine its work when issues are found.`,section:`verification`,section_label:`Verification`,value_type:`boolean`,default:!1,choices:[],depends_on:[`verification.critic_enabled`],prominence:`critical`,secret:!1,required:!1},{key:`verification.critic_api_key`,label:`Critic API Key`,description:`If OpenHands is selected as your active LLM provider, leave this empty; the critic reuses the OpenHands Provider LLM Key.`,section:`verification`,section_label:`Verification`,value_type:`string`,default:null,choices:[],depends_on:[`verification.critic_enabled`],prominence:`critical`,secret:!0,required:!1},{key:`verification.critic_threshold`,label:`Critic Threshold`,description:`Critic success threshold used for iterative refinement.`,section:`verification`,section_label:`Verification`,value_type:`number`,default:.6,choices:[],depends_on:[`verification.critic_enabled`,`verification.enable_iterative_refinement`],prominence:`minor`,secret:!1,required:!1},{key:`verification.max_refinement_iterations`,label:`Max Refinement Iterations`,description:`Maximum number of refinement attempts after critic feedback.`,section:`verification`,section_label:`Verification`,value_type:`integer`,default:3,choices:[],depends_on:[`verification.critic_enabled`,`verification.enable_iterative_refinement`],prominence:`minor`,secret:!1,required:!1},{key:`verification.critic_server_url`,label:`Critic Server URL`,description:`Override the critic service URL.`,section:`verification`,section_label:`Verification`,value_type:`string`,default:null,choices:[],depends_on:[`verification.critic_enabled`],prominence:`minor`,secret:!1,required:!1},{key:`verification.critic_model_name`,label:`Critic Model Name`,description:`Override the critic model name.`,section:`verification`,section_label:`Verification`,value_type:`string`,default:null,choices:[],depends_on:[`verification.critic_enabled`],prominence:`minor`,secret:!1,required:!1}]},{key:`condenser`,label:`Condenser`,fields:[{description:`Enable the default LLM-based condenser to summarize long conversation histories.`,key:`condenser.enable_default_condenser`,label:`Enable default condenser`,section:`condenser`,section_label:`Condenser`,value_type:`boolean`,default:!0,choices:[],depends_on:[],prominence:`critical`,secret:!1,required:!0},{description:`Maximum number of tokens the condenser keeps after summarization. Leave blank for unlimited.`,key:`condenser.condenser_max_size`,label:`Condenser max size`,section:`condenser`,section_label:`Condenser`,value_type:`integer`,default:null,choices:[],depends_on:[],prominence:`major`,secret:!1,required:!1}]}]},E={model_name:`ConversationSettings`,sections:[{key:`general`,label:`General`,fields:[{key:`max_iterations`,label:`Max iterations`,section:`general`,description:`Maximum number of agent steps allowed before the conversation stops.`,section_label:`General`,value_type:`integer`,default:500,choices:[],depends_on:[],prominence:`major`,secret:!1,required:!0}]},{key:`verification`,label:`Verification`,fields:[{key:`confirmation_mode`,label:`Confirmation mode`,description:`Pause for confirmation before the agent performs high-risk actions.`,section:`verification`,section_label:`Verification`,value_type:`boolean`,default:!1,choices:[],depends_on:[],prominence:`major`,secret:!1,required:!0},{key:`security_analyzer`,label:`Security analyzer`,description:`Choose how OpenHands should analyze actions before asking for confirmation.`,section:`verification`,section_label:`Verification`,value_type:`string`,default:`llm`,choices:[{label:`llm`,value:`llm`},{label:`none`,value:`none`}],depends_on:[`confirmation_mode`],prominence:`major`,secret:!1,required:!1}]}]},D={...t,provider_tokens_set:{},agent_settings_schema:T,agent_settings:{...S,verification:{critic_enabled:!1,enable_iterative_refinement:!1},llm:{...C??{},api_key:null,model:w},condenser:{enable_default_condenser:!0,condenser_max_size:null},enable_sub_agents:!1,tool_concurrency_limit:1},conversation_settings_schema:E,conversation_settings:{...t.conversation_settings??{}}},O={settings:structuredClone(D)},k={profiles:new Map,activeProfile:null},A=!1,j=e=>decodeURIComponent(String(Array.isArray(e)?e[0]??``:e??``)),le=e=>({name:e.name,model:typeof e.config.model==`string`?e.config.model:null,base_url:typeof e.config.base_url==`string`?e.config.base_url:null,api_key_set:e.api_key_set}),M=e=>{let t=O.settings||structuredClone(D);O.settings={...t,agent_settings:{...t.agent_settings??{},llm:structuredClone(e.config)},llm_api_key_set:e.api_key_set}},ue=(e,t)=>{let n=structuredClone(e.config);return e.api_key_set&&`api_key`in n&&(t===`encrypted`?n.api_key=`gAAAAA_mock_encrypted_${e.name}`:t===`plaintext`||(n.api_key=null)),{name:e.name,config:n,api_key_set:e.api_key_set}},de=(e,t)=>{let n=structuredClone(t.llm??{});if(typeof n.model!=`string`||n.model.trim().length===0)return null;let r={name:e,config:n,api_key_set:typeof n.api_key==`string`&&n.api_key.trim().length>0};return k.profiles.set(e,r),k.activeProfile===e&&M(r),r},N=[`anthropic/claude-3.5`,`anthropic/claude-sonnet-4-20250514`,`anthropic/claude-sonnet-4-5-20250929`,`anthropic/claude-haiku-4-5-20251001`,`anthropic/claude-opus-4-5-20251101`,`anthropic/claude-opus-4-8`,`openai/gpt-3.5-turbo`,`openai/gpt-5.5`,`openai/gpt-4o`,`openai/gpt-4o-mini`,`openhands/claude-sonnet-4-20250514`,`openhands/claude-sonnet-4-5-20250929`,`openhands/claude-haiku-4-5-20251001`,`openhands/claude-opus-4-5-20251101`,`openhands/minimax-m2.7`,`sambanova/Meta-Llama-3.1-8B-Instruct`],fe=[`gpt-5.2`,`gpt-5.3-codex`],P=new Set([`anthropic/claude-opus-4-5-20251101`,`anthropic/claude-opus-4-8`,`anthropic/claude-sonnet-4-5-20250929`,`openai/gpt-5.5`,`openhands/claude-opus-4-5-20251101`,`openhands/claude-sonnet-4-5-20250929`,`openhands/minimax-m2.7`]),F=[`openhands`,`anthropic`,`openai`,`mistral`,`gemini`,`deepseek`,`moonshot`,`minimax`],pe=Array.from(new Set(N.map(e=>e.split(`/`)[0]).filter(e=>!!e))),me=N.reduce((e,t)=>{if(!P.has(t))return e;let[n,...r]=t.split(`/`);return!n||r.length===0?e:(e[n]??=[],e[n].push(r.join(`/`)),e)},{}),he=`1.29.0`,ge=[u.get(`*/server_info`,async()=>l.json({uptime:0,idle_time:0,version:he,usable_tools:[`terminal`,`file_editor`,`task_tracker`,`browser_tool_set`],agents:[`CodeActAgent`],default_agent:`CodeActAgent`,models:N,security_analyzers:[`llm`,`none`]})),u.get(`*/api/llm/models`,async()=>l.json({models:N})),u.get(`*/api/llm/models/verified`,async()=>l.json({models:me})),u.get(`*/api/llm/providers`,async()=>l.json({providers:pe})),u.get(`*${i}`,async()=>l.json({vendor:r,models:fe})),u.get(`*${s}`,async()=>l.json({connected:A,account_email:A?`mock-chatgpt@example.com`:null,expires_at:null})),u.post(`*${o}`,async()=>l.json({device_code:`mock-device-code`,user_code:`MOCK-CODE`,verification_uri:`https://auth.openai.com/activate`,verification_uri_complete:`https://auth.openai.com/activate?user_code=MOCK-CODE`,interval:1,expires_in:900})),u.post(`*${a}`,async()=>(A=!0,l.json({connected:!0,account_email:`mock-chatgpt@example.com`,expires_at:null}))),u.post(`*${n}`,async()=>(A=!1,l.json({connected:!1}))),u.get(`*/api/options/models`,async()=>l.json({models:N,verified_models:[`claude-opus-4-5-20251101`,`claude-sonnet-4-5-20250929`],verified_providers:F,default_model:`openhands/minimax-m2.7`})),u.get(`*/api/v1/config/providers/search`,async({request:e})=>{let t=new URL(e.url),n=t.searchParams.get(`query`)?.toLowerCase(),r=t.searchParams.get(`verified__eq`),i=new Set,a=[];for(let e of N){let[t]=e.split(`/`);t&&!i.has(t)&&(i.add(t),a.push({name:t,verified:F.includes(t)}))}if(n&&(a=a.filter(e=>e.name.toLowerCase().includes(n))),r!=null){let e=r===`true`;a=a.filter(t=>t.verified===e)}return l.json({items:a,next_page_id:null})}),u.get(`*/api/v1/config/models/search`,async({request:e})=>{let t=new URL(e.url),n=t.searchParams.get(`query`)?.toLowerCase(),r=t.searchParams.get(`verified__eq`),i=t.searchParams.get(`provider__eq`),a=N.map(e=>{let[t,...n]=e.split(`/`),r=n.join(`/`);return{provider:t||null,name:r,verified:P.has(e)}});if(i&&(a=a.filter(e=>e.provider===i)),n&&(a=a.filter(e=>e.name.toLowerCase().includes(n))),r!=null){let e=r===`true`;a=a.filter(t=>t.verified===e)}return l.json({items:a,next_page_id:null})}),u.get(`*/api/options/security-analyzers`,async()=>l.json([`llm`,`none`])),u.get(`*/api/profiles`,async()=>l.json({profiles:Array.from(k.profiles.values()).map(le),active_profile:k.activeProfile})),u.get(`*/api/profiles/:name`,async({params:e,request:t})=>{let n=j(e.name),r=k.profiles.get(n);return r?l.json(ue(r,t.headers.get(`X-Expose-Secrets`))):l.json({detail:`Profile '${n}' not found`},{status:404})}),u.post(`*/api/profiles/:name`,async({params:e,request:t})=>{let n=j(e.name),r=await t.json();if(!r)return l.json({detail:`Empty body`},{status:400});let i=de(n,r);return i?l.json({name:i.name,message:`Profile '${i.name}' saved`},{status:201}):l.json({detail:`Profile requires llm.model`},{status:400})}),u.delete(`*/api/profiles/:name`,async({params:e})=>{let t=j(e.name);return k.profiles.delete(t),k.activeProfile===t&&(k.activeProfile=null),l.json({name:t,message:`Profile '${t}' deleted`})}),u.post(`*/api/profiles/:name/rename`,async({params:e,request:t})=>{let n=j(e.name),r=(await t.json())?.new_name?.trim()??``,i=k.profiles.get(n);if(!i)return l.json({detail:`Profile '${n}' not found`},{status:404});if(!r)return l.json({detail:`new_name is required`},{status:400});if(r!==n&&k.profiles.has(r))return l.json({detail:`Profile '${r}' already exists`},{status:409});k.profiles.delete(n);let a={...i,name:r};return k.profiles.set(r,a),k.activeProfile===n&&(k.activeProfile=r,M(a)),l.json({name:r,message:`Profile '${n}' renamed to '${r}'`})}),u.post(`*/api/profiles/:name/activate`,async({params:e})=>{let t=j(e.name),n=k.profiles.get(t);return n?(k.activeProfile=t,M(n),l.json({name:t,message:`Profile '${t}' activated and applied to current settings`,llm_applied:!0})):l.json({detail:`Profile '${t}' not found`},{status:404})}),u.get(`*/api/v1/web-client/config`,()=>{let e={posthog_client_key:`fake-posthog-client-key`,feature_flags:{hide_llm_settings:!1,hide_users_page:!1},providers_configured:[],maintenance_start_time:null,recaptcha_site_key:null,faulty_models:[],error_message:null,updated_at:new Date().toISOString()};return l.json(e)}),u.get(`*/api/settings/conversation-schema`,async()=>(await f(),l.json(E))),u.get(`*/api/v1/settings/conversation-schema`,async()=>(await f(),l.json(E))),u.get(`*/api/v1/settings`,async()=>{await f();let{settings:e}=O;return e?l.json(e):l.json(null,{status:404})}),u.get(`*/api/settings`,async({request:e})=>{if(new URL(e.url).pathname.split(`/`).filter(Boolean).length>2)return;await f();let{settings:t}=O,n={language:null,user_consents_to_analytics:null,enable_sound_notifications:null,git_user_name:null,git_user_email:null,disabled_skills:[]};if(!t)return l.json({agent_settings:{},conversation_settings:{},llm_api_key_is_set:!1,misc_settings:{app_preferences:n}});let r=e.headers.get(`X-Expose-Secrets`),i=structuredClone(t.agent_settings??{}),a=i.llm;a?.api_key&&(r===`encrypted`?a.api_key=`gAAAAA_mock_encrypted_${String(a.api_key).slice(0,8)}`:r===`plaintext`||(a.api_key=`**********`));let o=!!t.llm_api_key_set||!!t.agent_settings?.llm&&!!t.agent_settings.llm?.api_key,s=t.misc_settings,c={...n,...s?.app_preferences??{}};return l.json({agent_settings:i,conversation_settings:t.conversation_settings??{},llm_api_key_is_set:o,misc_settings:{app_preferences:c}})}),u.patch(`*/api/settings`,async({request:e})=>{await f();let t=await e.json();if(!t)return l.json({error:`Empty body`},{status:400});if(!t.agent_settings_diff&&!t.conversation_settings_diff&&!t.misc_settings_diff)return l.json({error:`At least one of agent_settings_diff, conversation_settings_diff, or misc_settings_diff must be provided`},{status:400});let n=O.settings||structuredClone(D),r={...n};if(t.agent_settings_diff){let e=x(n.agent_settings??{},t.agent_settings_diff);r.agent_settings=e;let i=e.llm;i?.api_key&&typeof i.api_key==`string`&&i.api_key.trim().length>0&&(r.llm_api_key_set=!0)}if(t.conversation_settings_diff&&(r.conversation_settings={...n.conversation_settings??{},...t.conversation_settings_diff}),t.misc_settings_diff){let e=n.misc_settings,i={...e??{}};t.misc_settings_diff.app_preferences&&(i.app_preferences={...e?.app_preferences??{},...t.misc_settings_diff.app_preferences}),r.misc_settings=i}return O.settings=r,l.json({agent_settings:r.agent_settings??{},conversation_settings:r.conversation_settings??{},llm_api_key_is_set:r.llm_api_key_set??!1,misc_settings:r.misc_settings??{app_preferences:{}}})}),u.post(`*/api/mcp/test`,async()=>(await f(),l.json({ok:!0,tools:[`mock_tool`]}))),u.get(`*/api/settings/agent-schema`,async()=>(await f(),l.json(T))),u.get(`*/api/v1/settings/agent-schema`,async()=>(await f(),l.json(T))),u.post(`*/api/v1/settings`,async({request:e})=>{await f();let t=await e.json();if(t){let e=O.settings||structuredClone(D);if(`agent_settings`in t||`conversation_settings`in t)return l.json({error:`Use *_diff nested settings payloads`,keys:[`agent_settings`,`conversation_settings`].filter(e=>e in t)},{status:422});let n={...e},r=t.agent_settings_diff;r&&(n.agent_settings=x(e.agent_settings??{},r));let i=t.conversation_settings_diff;i&&(n.conversation_settings={...e.conversation_settings??{},...i});for(let[e,r]of Object.entries(t))e!==`agent_settings_diff`&&e!==`conversation_settings_diff`&&e!==`agent_settings_schema`&&e!==`conversation_settings_schema`&&(n[e]=r);return O.settings=n,l.json(null,{status:200})}return l.json(null,{status:400})}),u.post(`*/api/mcp/test`,async()=>(await f(),l.json({ok:!0,tools:[]})))],I=`table-demo`,_e=`Can you compare several coding agents in a wide table?`,ve=[`Here is a wide comparison table. Scroll horizontally to read every column:`,``,`| Feature | OpenHands | Claude Code | Codex | Gemini CLI | Cursor | Windsurf | Cline | Aider | Devin | Continue |`,`| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |`,`| CLI | Yes | Yes | Yes | Yes | IDE | IDE | IDE | Terminal | Cloud | IDE |`,`| MCP support | Yes | Yes | Partial | Partial | Yes | Yes | Yes | No | Yes | Yes |`,`| Local models | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes |`,`| Browser tools | Yes | Yes | Yes | Limited | Yes | Yes | Yes | No | Yes | Yes |`,`| Git integration | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |`,`| Best for | General coding | Anthropic stack | OpenAI stack | Google stack | IDE users | IDE users | VS Code | Terminal | Autonomous | IDE users |`].join(`
5
+ `}))];function x(e,t){let n={...e};for(let[e,r]of Object.entries(t))typeof r==`object`&&r&&!Array.isArray(r)&&typeof n[e]==`object`&&n[e]!=null&&!Array.isArray(n[e])?n[e]=x(n[e],r):n[e]=r;return n}var S=t.agent_settings??{},C=S.llm,w=typeof C?.model==`string`?C.model:`openhands/claude-opus-4-5-20251101`,T={model_name:`AgentSettings`,sections:[{key:`general`,label:`General`,fields:[{key:`enable_sub_agents`,label:`Enable sub-agents`,description:`Allow the agent to delegate work to specialized built-in sub-agents.`,section:`general`,section_label:`General`,value_type:`boolean`,default:!1,choices:[],depends_on:[],prominence:`major`,secret:!1,required:!1},{key:`tool_concurrency_limit`,label:`Parallel tool calls`,description:`Maximum number of tool calls to execute concurrently per agent step. 1 = sequential (default).`,section:`general`,section_label:`General`,value_type:`integer`,default:1,choices:[],depends_on:[],prominence:`major`,secret:!1,required:!1}]},{key:`llm`,label:`LLM`,fields:[{key:`llm.model`,label:`Model`,description:`Select the model to use for this conversation.`,section:`llm`,section_label:`LLM`,value_type:`string`,default:w,choices:[],depends_on:[],prominence:`critical`,secret:!1,required:!0},{key:`llm.api_key`,label:`API Key`,description:`Provide the API key used to authenticate requests for the selected model.`,section:`llm`,section_label:`LLM`,value_type:`string`,default:null,choices:[],depends_on:[],prominence:`critical`,secret:!0,required:!1},{key:`llm.base_url`,description:`Override the model provider's default API base URL when needed.`,label:`Base URL`,section:`llm`,section_label:`LLM`,value_type:`string`,default:null,choices:[],depends_on:[],prominence:`critical`,secret:!1,required:!1},{key:`llm.temperature`,label:`Temperature`,description:`Adjust randomness for non-deterministic model outputs.`,section:`llm`,section_label:`LLM`,value_type:`number`,default:null,choices:[],depends_on:[],prominence:`minor`,secret:!1,required:!1}]},{key:`verification`,label:`Verification`,fields:[{key:`verification.critic_enabled`,label:`Enable Critic`,description:`Enable an additional critic pass to review the agent's work.`,section:`verification`,section_label:`Verification`,value_type:`boolean`,default:!1,choices:[],depends_on:[],prominence:`critical`,secret:!1,required:!1},{key:`verification.critic_mode`,label:`Critic Mode`,description:`Choose when the critic should review and intervene.`,section:`verification`,section_label:`Verification`,value_type:`string`,default:`finish_and_message`,choices:[{label:`finish_and_message`,value:`finish_and_message`},{label:`all_actions`,value:`all_actions`}],depends_on:[`verification.critic_enabled`],prominence:`major`,secret:!1,required:!1},{key:`verification.enable_iterative_refinement`,label:`Enable Iterative Refinement`,description:`Let the critic send the agent back to refine its work when issues are found.`,section:`verification`,section_label:`Verification`,value_type:`boolean`,default:!1,choices:[],depends_on:[`verification.critic_enabled`],prominence:`critical`,secret:!1,required:!1},{key:`verification.critic_api_key`,label:`Critic API Key`,description:`If OpenHands is selected as your active LLM provider, leave this empty; the critic reuses the OpenHands Provider LLM Key.`,section:`verification`,section_label:`Verification`,value_type:`string`,default:null,choices:[],depends_on:[`verification.critic_enabled`],prominence:`critical`,secret:!0,required:!1},{key:`verification.critic_threshold`,label:`Critic Threshold`,description:`Critic success threshold used for iterative refinement.`,section:`verification`,section_label:`Verification`,value_type:`number`,default:.6,choices:[],depends_on:[`verification.critic_enabled`,`verification.enable_iterative_refinement`],prominence:`minor`,secret:!1,required:!1},{key:`verification.max_refinement_iterations`,label:`Max Refinement Iterations`,description:`Maximum number of refinement attempts after critic feedback.`,section:`verification`,section_label:`Verification`,value_type:`integer`,default:3,choices:[],depends_on:[`verification.critic_enabled`,`verification.enable_iterative_refinement`],prominence:`minor`,secret:!1,required:!1},{key:`verification.critic_server_url`,label:`Critic Server URL`,description:`Override the critic service URL.`,section:`verification`,section_label:`Verification`,value_type:`string`,default:null,choices:[],depends_on:[`verification.critic_enabled`],prominence:`minor`,secret:!1,required:!1},{key:`verification.critic_model_name`,label:`Critic Model Name`,description:`Override the critic model name.`,section:`verification`,section_label:`Verification`,value_type:`string`,default:null,choices:[],depends_on:[`verification.critic_enabled`],prominence:`minor`,secret:!1,required:!1}]},{key:`condenser`,label:`Condenser`,fields:[{description:`Enable the default LLM-based condenser to summarize long conversation histories.`,key:`condenser.enable_default_condenser`,label:`Enable default condenser`,section:`condenser`,section_label:`Condenser`,value_type:`boolean`,default:!0,choices:[],depends_on:[],prominence:`critical`,secret:!1,required:!0},{description:`Maximum number of tokens the condenser keeps after summarization. Leave blank for unlimited.`,key:`condenser.condenser_max_size`,label:`Condenser max size`,section:`condenser`,section_label:`Condenser`,value_type:`integer`,default:null,choices:[],depends_on:[],prominence:`major`,secret:!1,required:!1}]}]},E={model_name:`ConversationSettings`,sections:[{key:`general`,label:`General`,fields:[{key:`max_iterations`,label:`Max iterations`,section:`general`,description:`Maximum number of agent steps allowed before the conversation stops.`,section_label:`General`,value_type:`integer`,default:500,choices:[],depends_on:[],prominence:`major`,secret:!1,required:!0}]},{key:`verification`,label:`Verification`,fields:[{key:`confirmation_mode`,label:`Confirmation mode`,description:`Pause for confirmation before the agent performs high-risk actions.`,section:`verification`,section_label:`Verification`,value_type:`boolean`,default:!1,choices:[],depends_on:[],prominence:`major`,secret:!1,required:!0},{key:`security_analyzer`,label:`Security analyzer`,description:`Choose how OpenHands should analyze actions before asking for confirmation.`,section:`verification`,section_label:`Verification`,value_type:`string`,default:`llm`,choices:[{label:`llm`,value:`llm`},{label:`none`,value:`none`}],depends_on:[`confirmation_mode`],prominence:`major`,secret:!1,required:!1}]}]},D={...t,provider_tokens_set:{},agent_settings_schema:T,agent_settings:{...S,verification:{critic_enabled:!1,enable_iterative_refinement:!1},llm:{...C??{},api_key:null,model:w},condenser:{enable_default_condenser:!0,condenser_max_size:null},enable_sub_agents:!1,tool_concurrency_limit:1},conversation_settings_schema:E,conversation_settings:{...t.conversation_settings??{}}},O={settings:structuredClone(D)},k={profiles:new Map,activeProfile:null},A=!1,j=e=>decodeURIComponent(String(Array.isArray(e)?e[0]??``:e??``)),le=e=>({name:e.name,model:typeof e.config.model==`string`?e.config.model:null,base_url:typeof e.config.base_url==`string`?e.config.base_url:null,api_key_set:e.api_key_set}),M=e=>{let t=O.settings||structuredClone(D);O.settings={...t,agent_settings:{...t.agent_settings??{},llm:structuredClone(e.config)},llm_api_key_set:e.api_key_set}},ue=(e,t)=>{let n=structuredClone(e.config);return e.api_key_set&&`api_key`in n&&(t===`encrypted`?n.api_key=`gAAAAA_mock_encrypted_${e.name}`:t===`plaintext`||(n.api_key=null)),{name:e.name,config:n,api_key_set:e.api_key_set}},de=(e,t)=>{let n=structuredClone(t.llm??{});if(typeof n.model!=`string`||n.model.trim().length===0)return null;let r={name:e,config:n,api_key_set:typeof n.api_key==`string`&&n.api_key.trim().length>0};return k.profiles.set(e,r),k.activeProfile===e&&M(r),r},N=[`anthropic/claude-3.5`,`anthropic/claude-sonnet-4-20250514`,`anthropic/claude-sonnet-4-5-20250929`,`anthropic/claude-haiku-4-5-20251001`,`anthropic/claude-opus-4-5-20251101`,`anthropic/claude-opus-4-8`,`openai/gpt-3.5-turbo`,`openai/gpt-5.5`,`openai/gpt-4o`,`openai/gpt-4o-mini`,`openhands/claude-sonnet-4-20250514`,`openhands/claude-sonnet-4-5-20250929`,`openhands/claude-haiku-4-5-20251001`,`openhands/claude-opus-4-5-20251101`,`openhands/minimax-m2.7`,`sambanova/Meta-Llama-3.1-8B-Instruct`],fe=[`gpt-5.2`,`gpt-5.3-codex`],P=new Set([`anthropic/claude-opus-4-5-20251101`,`anthropic/claude-opus-4-8`,`anthropic/claude-sonnet-4-5-20250929`,`openai/gpt-5.5`,`openhands/claude-opus-4-5-20251101`,`openhands/claude-sonnet-4-5-20250929`,`openhands/minimax-m2.7`]),F=[`openhands`,`anthropic`,`openai`,`mistral`,`gemini`,`deepseek`,`moonshot`,`minimax`],pe=Array.from(new Set(N.map(e=>e.split(`/`)[0]).filter(e=>!!e))),me=N.reduce((e,t)=>{if(!P.has(t))return e;let[n,...r]=t.split(`/`);return!n||r.length===0?e:(e[n]??=[],e[n].push(r.join(`/`)),e)},{}),he=`1.29.3`,ge=[u.get(`*/server_info`,async()=>l.json({uptime:0,idle_time:0,version:he,usable_tools:[`terminal`,`file_editor`,`task_tracker`,`browser_tool_set`],agents:[`CodeActAgent`],default_agent:`CodeActAgent`,models:N,security_analyzers:[`llm`,`none`]})),u.get(`*/api/llm/models`,async()=>l.json({models:N})),u.get(`*/api/llm/models/verified`,async()=>l.json({models:me})),u.get(`*/api/llm/providers`,async()=>l.json({providers:pe})),u.get(`*${i}`,async()=>l.json({vendor:r,models:fe})),u.get(`*${s}`,async()=>l.json({connected:A,account_email:A?`mock-chatgpt@example.com`:null,expires_at:null})),u.post(`*${o}`,async()=>l.json({device_code:`mock-device-code`,user_code:`MOCK-CODE`,verification_uri:`https://auth.openai.com/activate`,verification_uri_complete:`https://auth.openai.com/activate?user_code=MOCK-CODE`,interval:1,expires_in:900})),u.post(`*${a}`,async()=>(A=!0,l.json({connected:!0,account_email:`mock-chatgpt@example.com`,expires_at:null}))),u.post(`*${n}`,async()=>(A=!1,l.json({connected:!1}))),u.get(`*/api/options/models`,async()=>l.json({models:N,verified_models:[`claude-opus-4-5-20251101`,`claude-sonnet-4-5-20250929`],verified_providers:F,default_model:`openhands/minimax-m2.7`})),u.get(`*/api/v1/config/providers/search`,async({request:e})=>{let t=new URL(e.url),n=t.searchParams.get(`query`)?.toLowerCase(),r=t.searchParams.get(`verified__eq`),i=new Set,a=[];for(let e of N){let[t]=e.split(`/`);t&&!i.has(t)&&(i.add(t),a.push({name:t,verified:F.includes(t)}))}if(n&&(a=a.filter(e=>e.name.toLowerCase().includes(n))),r!=null){let e=r===`true`;a=a.filter(t=>t.verified===e)}return l.json({items:a,next_page_id:null})}),u.get(`*/api/v1/config/models/search`,async({request:e})=>{let t=new URL(e.url),n=t.searchParams.get(`query`)?.toLowerCase(),r=t.searchParams.get(`verified__eq`),i=t.searchParams.get(`provider__eq`),a=N.map(e=>{let[t,...n]=e.split(`/`),r=n.join(`/`);return{provider:t||null,name:r,verified:P.has(e)}});if(i&&(a=a.filter(e=>e.provider===i)),n&&(a=a.filter(e=>e.name.toLowerCase().includes(n))),r!=null){let e=r===`true`;a=a.filter(t=>t.verified===e)}return l.json({items:a,next_page_id:null})}),u.get(`*/api/options/security-analyzers`,async()=>l.json([`llm`,`none`])),u.get(`*/api/profiles`,async()=>l.json({profiles:Array.from(k.profiles.values()).map(le),active_profile:k.activeProfile})),u.get(`*/api/profiles/:name`,async({params:e,request:t})=>{let n=j(e.name),r=k.profiles.get(n);return r?l.json(ue(r,t.headers.get(`X-Expose-Secrets`))):l.json({detail:`Profile '${n}' not found`},{status:404})}),u.post(`*/api/profiles/:name`,async({params:e,request:t})=>{let n=j(e.name),r=await t.json();if(!r)return l.json({detail:`Empty body`},{status:400});let i=de(n,r);return i?l.json({name:i.name,message:`Profile '${i.name}' saved`},{status:201}):l.json({detail:`Profile requires llm.model`},{status:400})}),u.delete(`*/api/profiles/:name`,async({params:e})=>{let t=j(e.name);return k.profiles.delete(t),k.activeProfile===t&&(k.activeProfile=null),l.json({name:t,message:`Profile '${t}' deleted`})}),u.post(`*/api/profiles/:name/rename`,async({params:e,request:t})=>{let n=j(e.name),r=(await t.json())?.new_name?.trim()??``,i=k.profiles.get(n);if(!i)return l.json({detail:`Profile '${n}' not found`},{status:404});if(!r)return l.json({detail:`new_name is required`},{status:400});if(r!==n&&k.profiles.has(r))return l.json({detail:`Profile '${r}' already exists`},{status:409});k.profiles.delete(n);let a={...i,name:r};return k.profiles.set(r,a),k.activeProfile===n&&(k.activeProfile=r,M(a)),l.json({name:r,message:`Profile '${n}' renamed to '${r}'`})}),u.post(`*/api/profiles/:name/activate`,async({params:e})=>{let t=j(e.name),n=k.profiles.get(t);return n?(k.activeProfile=t,M(n),l.json({name:t,message:`Profile '${t}' activated and applied to current settings`,llm_applied:!0})):l.json({detail:`Profile '${t}' not found`},{status:404})}),u.get(`*/api/v1/web-client/config`,()=>{let e={posthog_client_key:`fake-posthog-client-key`,feature_flags:{hide_llm_settings:!1,hide_users_page:!1},providers_configured:[],maintenance_start_time:null,recaptcha_site_key:null,faulty_models:[],error_message:null,updated_at:new Date().toISOString()};return l.json(e)}),u.get(`*/api/settings/conversation-schema`,async()=>(await f(),l.json(E))),u.get(`*/api/v1/settings/conversation-schema`,async()=>(await f(),l.json(E))),u.get(`*/api/v1/settings`,async()=>{await f();let{settings:e}=O;return e?l.json(e):l.json(null,{status:404})}),u.get(`*/api/settings`,async({request:e})=>{if(new URL(e.url).pathname.split(`/`).filter(Boolean).length>2)return;await f();let{settings:t}=O,n={language:null,user_consents_to_analytics:null,enable_sound_notifications:null,git_user_name:null,git_user_email:null,disabled_skills:[]};if(!t)return l.json({agent_settings:{},conversation_settings:{},llm_api_key_is_set:!1,misc_settings:{app_preferences:n}});let r=e.headers.get(`X-Expose-Secrets`),i=structuredClone(t.agent_settings??{}),a=i.llm;a?.api_key&&(r===`encrypted`?a.api_key=`gAAAAA_mock_encrypted_${String(a.api_key).slice(0,8)}`:r===`plaintext`||(a.api_key=`**********`));let o=!!t.llm_api_key_set||!!t.agent_settings?.llm&&!!t.agent_settings.llm?.api_key,s=t.misc_settings,c={...n,...s?.app_preferences??{}};return l.json({agent_settings:i,conversation_settings:t.conversation_settings??{},llm_api_key_is_set:o,misc_settings:{app_preferences:c}})}),u.patch(`*/api/settings`,async({request:e})=>{await f();let t=await e.json();if(!t)return l.json({error:`Empty body`},{status:400});if(!t.agent_settings_diff&&!t.conversation_settings_diff&&!t.misc_settings_diff)return l.json({error:`At least one of agent_settings_diff, conversation_settings_diff, or misc_settings_diff must be provided`},{status:400});let n=O.settings||structuredClone(D),r={...n};if(t.agent_settings_diff){let e=x(n.agent_settings??{},t.agent_settings_diff);r.agent_settings=e;let i=e.llm;i?.api_key&&typeof i.api_key==`string`&&i.api_key.trim().length>0&&(r.llm_api_key_set=!0)}if(t.conversation_settings_diff&&(r.conversation_settings={...n.conversation_settings??{},...t.conversation_settings_diff}),t.misc_settings_diff){let e=n.misc_settings,i={...e??{}};t.misc_settings_diff.app_preferences&&(i.app_preferences={...e?.app_preferences??{},...t.misc_settings_diff.app_preferences}),r.misc_settings=i}return O.settings=r,l.json({agent_settings:r.agent_settings??{},conversation_settings:r.conversation_settings??{},llm_api_key_is_set:r.llm_api_key_set??!1,misc_settings:r.misc_settings??{app_preferences:{}}})}),u.post(`*/api/mcp/test`,async()=>(await f(),l.json({ok:!0,tools:[`mock_tool`]}))),u.get(`*/api/settings/agent-schema`,async()=>(await f(),l.json(T))),u.get(`*/api/v1/settings/agent-schema`,async()=>(await f(),l.json(T))),u.post(`*/api/v1/settings`,async({request:e})=>{await f();let t=await e.json();if(t){let e=O.settings||structuredClone(D);if(`agent_settings`in t||`conversation_settings`in t)return l.json({error:`Use *_diff nested settings payloads`,keys:[`agent_settings`,`conversation_settings`].filter(e=>e in t)},{status:422});let n={...e},r=t.agent_settings_diff;r&&(n.agent_settings=x(e.agent_settings??{},r));let i=t.conversation_settings_diff;i&&(n.conversation_settings={...e.conversation_settings??{},...i});for(let[e,r]of Object.entries(t))e!==`agent_settings_diff`&&e!==`conversation_settings_diff`&&e!==`agent_settings_schema`&&e!==`conversation_settings_schema`&&(n[e]=r);return O.settings=n,l.json(null,{status:200})}return l.json(null,{status:400})}),u.post(`*/api/mcp/test`,async()=>(await f(),l.json({ok:!0,tools:[]})))],I=`table-demo`,_e=`Can you compare several coding agents in a wide table?`,ve=[`Here is a wide comparison table. Scroll horizontally to read every column:`,``,`| Feature | OpenHands | Claude Code | Codex | Gemini CLI | Cursor | Windsurf | Cline | Aider | Devin | Continue |`,`| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |`,`| CLI | Yes | Yes | Yes | Yes | IDE | IDE | IDE | Terminal | Cloud | IDE |`,`| MCP support | Yes | Yes | Partial | Partial | Yes | Yes | Yes | No | Yes | Yes |`,`| Local models | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes |`,`| Browser tools | Yes | Yes | Yes | Limited | Yes | Yes | Yes | No | Yes | Yes |`,`| Git integration | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |`,`| Best for | General coding | Anthropic stack | OpenAI stack | Google stack | IDE users | IDE users | VS Code | Terminal | Autonomous | IDE users |`].join(`
6
6
  `),ye=Date.UTC(2026,5,23,12,0,0);function L(e,t,n,r){return{id:e,timestamp:new Date(ye+r*6e4).toISOString(),source:t===`user`?`user`:`agent`,llm_message:{role:t,content:[{type:`text`,text:n}]},activated_microagents:[],extended_content:[]}}var be=[L(`table-demo-user-1`,`user`,_e,0),L(`table-demo-agent-1`,`assistant`,ve,1)],xe={[I]:be},R=Date.now(),z=`pagination-local`,B=`pagination-cloud`,Se=100,Ce=500,we=Date.UTC(2026,4,13,0,0,0),Te=[{id:`1`,title:`My New Project`,created_at:new Date(R).toISOString(),updated_at:new Date(R).toISOString(),execution_status:`waiting_for_confirmation`},{id:`2`,title:`Repo Testing`,created_at:new Date(R-2880*60*1e3).toISOString(),updated_at:new Date(R-2880*60*1e3).toISOString(),execution_status:`idle`,selected_repository:`octocat/hello-world`,git_provider:`github`},{id:`3`,title:`Another Project`,created_at:new Date(R-7200*60*1e3).toISOString(),updated_at:new Date(R-7200*60*1e3).toISOString(),execution_status:`idle`,selected_repository:`octocat/earth`,selected_branch:`main`},{id:`4`,title:`Archived Project`,created_at:new Date(R-14400*60*1e3).toISOString(),updated_at:new Date(R-14400*60*1e3).toISOString(),execution_status:`idle`,sandbox_status:`MISSING`},{id:`5`,title:`Errored Project`,created_at:new Date(R-10080*60*1e3).toISOString(),updated_at:new Date(R-10080*60*1e3).toISOString(),execution_status:`idle`,sandbox_status:`ERROR`},{id:z,title:`Local pagination fixture`,created_at:new Date(R-8640*60*1e3).toISOString(),updated_at:new Date(R-8640*60*1e3).toISOString(),execution_status:`idle`,workspace:{working_dir:`/workspace/project`}},{id:I,title:`Wide table demo`,created_at:new Date(R-1440*60*1e3).toISOString(),updated_at:new Date(R-1440*60*1e3).toISOString(),execution_status:`idle`,workspace:{working_dir:`/workspace/project`}}],V=new Map(Te.map(e=>[e.id,e])),Ee=new Map([[z,H(`Local pagination message`)],[B,H(`Cloud pagination message`)]]);function De(e,t){return{id:`${t.toLowerCase().replaceAll(` `,`-`)}-${e}`,timestamp:new Date(we+e*6e4).toISOString(),source:`agent`,llm_message:{role:`assistant`,content:[{type:`text`,text:`${t} ${e}`}]},activated_microagents:[],extended_content:[]}}function H(e){return Array.from({length:Se},(t,n)=>De(n+1,e))}function U(e,t){let n=Number(t.get(`limit`)??`100`),r=t.get(`timestamp__lt`),i=t.get(`sort_order`),a=[...r?e.filter(e=>e.timestamp<r):e].sort((e,t)=>i===`TIMESTAMP_DESC`?t.timestamp.localeCompare(e.timestamp):e.timestamp.localeCompare(t.timestamp));return{items:a.slice(0,n),next_page_id:a.length>n?`next-page`:null}}async function W(e,t){let n=Ee.get(e);return n?(t.has(`timestamp__lt`)&&await f(Ce),U(n,t)):null}function Oe(){let t=new Date(R-8640*60*1e3).toISOString();return{id:B,created_by_user_id:null,selected_repository:null,selected_branch:null,git_provider:null,title:`Cloud pagination fixture`,trigger:null,pr_number:[],llm_model:`openhands/claude-haiku-4-5-20251001`,metrics:null,created_at:t,updated_at:t,execution_status:e.IDLE,conversation_url:null,session_api_key:null,sandbox_id:null,workspace:{working_dir:`/workspace/project`},public:!1,sub_conversation_ids:[]}}var G=Oe();function K(e){return{id:e.id,title:e.title??null,created_at:e.created_at,updated_at:e.updated_at,execution_status:e.execution_status??`idle`,sandbox_status:e.sandbox_status??null,metrics:e.metrics??null,agent:e.agent??null,workspace:e.workspace??null}}function ke(e){return!e||e.length===0?Array.from(V.values()).map(K):e.map(e=>{let t=V.get(e);return t?K(t):null})}var Ae=[u.get(`*/api/conversations/search`,async({request:e})=>{let t=new URL(e.url),n=Number(t.searchParams.get(`limit`)??`20`),r=Array.from(V.values()).sort((e,t)=>t.updated_at.localeCompare(e.updated_at)).slice(0,n).map(K);return l.json({items:r,next_page_id:null})}),u.get(`*/api/conversations`,async({request:e})=>{let t=new URL(e.url),n=t.searchParams.getAll(`ids[]`).length>0?t.searchParams.getAll(`ids[]`):t.searchParams.getAll(`ids`);return l.json(ke(n))}),u.get(`*/api/conversations/:conversationId`,async({params:e})=>{let t=e.conversationId,n=V.get(t);return n?l.json(K(n)):l.json(null,{status:404})}),u.post(`*/api/conversations`,async()=>{await f();let e={id:`${Math.floor(Math.random()*1e5)}`,title:`New Conversation`,created_at:new Date().toISOString(),updated_at:new Date().toISOString(),execution_status:`idle`};return V.set(e.id,e),l.json(K(e),{status:201})}),u.patch(`/api/conversations/:conversationId`,async({params:e,request:t})=>{let n=e.conversationId,r=V.get(n);if(r){let e=await t.json();if(e?.title)return V.set(n,{...r,title:e.title,updated_at:new Date().toISOString()}),l.json(null,{status:200})}return l.json(null,{status:404})}),u.delete(`*/api/conversations/:conversationId`,async({params:e})=>{let t=e.conversationId;return V.has(t)?(V.delete(t),l.json(null,{status:200})):l.json(null,{status:404})}),u.get(`*/api/conversations/:conversationId/events/count`,async()=>l.json(0)),u.get(`*/api/conversations/:conversationId/events/search`,async({params:e,request:t})=>{let n=e.conversationId,r=new URL(t.url).searchParams,i=await W(n,r);if(i)return l.json(i);let a=xe[n];return a?l.json(U(a,r)):l.json({items:[],next_page_id:null})}),u.post(`*/api/conversations/:conversationId/events`,async()=>l.json({ok:!0})),u.post(`*/api/conversations/:conversationId/pause`,async()=>l.json({success:!0})),u.post(`*/api/conversations/:conversationId/interrupt`,async()=>l.json({success:!0})),u.post(`*/api/conversations/:conversationId/run`,async()=>l.json({success:!0})),u.post(`*/api/cloud-proxy`,async({request:e})=>{let t=(await e.json()).path??`/`,n=new URL(t,`https://mock-cloud.test`);if(n.pathname===`/api/v1/app-conversations`){let e=n.searchParams.getAll(`ids`);if(e.length>0)return l.json(e.map(e=>e===B?G:null))}if(n.pathname===`/api/v1/app-conversations/search`)return l.json({items:[G],next_page_id:null});if(n.pathname===`/api/v1/conversation/${B}/events/search`){let e=await W(B,n.searchParams);return l.json(e)}return n.pathname===`/api/v1/settings`?l.json({llm_model:`openhands/claude-haiku-4-5-20251001`,llm_base_url:``,llm_api_key:null,llm_api_key_set:!1,search_api_key_set:!1,agent:`CodeActAgent`,language:`en`,user_consents_to_analytics:!1,provider_tokens_set:{github:``}}):n.pathname===`/api/keys/current`?l.json({id:`mock-key`,name:`Mock key`,org_id:`org-1`,user_id:`user-1`,auth_type:`api_key`}):n.pathname===`/api/organizations`?l.json({items:[{id:`org-1`,name:`Mock Org`,is_personal:!0}],current_org_id:`org-1`}):n.pathname===`/api/organizations/org-1/me`?l.json({org_id:`org-1`,user_id:`org-1`}):n.pathname===`/api/authenticate`?l.json({ok:!0}):l.json({})}),u.post(`*/api/conversations/:conversationId/ask_agent`,async()=>l.json({response:`Mock agent response`})),u.get(`*/api/vscode/url`,async()=>l.json({url:null})),u.post(`*/api/skills`,async()=>l.json({skills:[]})),u.post(`/api/v1/conversations/:conversationId/pending-messages`,async()=>l.json({id:`mock-pending-id`,position:0})),u.get(`*/api/conversations/:conversationId/microagents`,async()=>l.json({microagents:[{name:`init`,type:`agentskills`,content:`Initialize an AGENTS.md file for the repository`,triggers:[`/init`]},{name:`releasenotes`,type:`agentskills`,content:`Generate a changelog from the most recent release`,triggers:[`/releasenotes`]},{name:`test-runner`,type:`agentskills`,content:`Run the test suite and report results`,triggers:[`/test`]},{name:`code-search`,type:`knowledge`,content:`Search the codebase semantically`,triggers:[`/search`]},{name:`docker`,type:`agentskills`,content:`Docker usage guide for container environments`,triggers:[`docker`,`container`]},{name:`github`,type:`agentskills`,content:`GitHub API interaction guide`,triggers:[`github`,`git`]},{name:`work_hosts`,type:`repo`,content:`Available hosts for web applications`,triggers:[]}]}))],je=[u.post(`*/api/cloud-proxy`,()=>l.json({error:`cloud proxy not available in mock mode`},{status:503})),u.get(`*/api/user/info`,()=>l.json({id:`1`,login:`octocat`,avatar_url:`https://avatars.githubusercontent.com/u/583231?v=4`,company:`GitHub`,email:`placeholder@placeholder.placeholder`,name:`monalisa octocat`})),u.post(`*/api/authenticate`,async()=>l.json({message:`Authenticated`})),u.post(`*/api/logout`,()=>l.json(null,{status:200}))],Me=[u.post(`*/api/submit-feedback`,async()=>(await f(1200),l.json({statusCode:200,body:{message:`Success`,link:`fake-url.com`,password:`abc123`}}))),u.post(`*/api/submit-feedback`,async()=>l.json({statusCode:200},{status:200}))],Ne=[u.post(`https://us.i.posthog.com/e`,async()=>l.json(null,{status:200})),u.post(`https://z.openhands.dev/*`,async()=>l.json(null,{status:200}))],q=new Date().toISOString(),J=e=>new Date(Date.now()-e*864e5).toISOString(),Pe={automations:[{id:`a1000000-0000-0000-0000-000000000001`,name:`PR Triage Digest`,trigger:{type:`cron`,schedule:`0 9 * * 1-5`,schedule_human:`Weekdays at 09:00`},enabled:!0,repository:`acme/frontend-app`,model:`triage-fast`,created_at:J(90),updated_at:q,prompt:`Review newly opened pull requests in acme/frontend-app, identify risky changes, summarize likely impact, and prepare a concise digest with priority ordering for the engineering review channel.`,branch:`main`,plugins:[`GitHub`,`Slack`,`Linear`],notification:`Slack digest to #eng-reviews`,timezone:`America/Los_Angeles`,last_triggered_at:J(0)},{id:`a1000000-0000-0000-0000-000000000002`,name:`Nightly Security Pass`,trigger:{type:`cron`,schedule:`30 1 * * *`,schedule_human:`Daily at 01:30`},enabled:!0,repository:`acme/backend-api`,model:`security-careful`,created_at:J(60),updated_at:q,prompt:`Scan the acme/backend-api repository for known security vulnerabilities, outdated dependencies, and insecure code patterns. Produce a prioritized remediation summary.`,branch:`main`,plugins:[`GitHub`],notification:`Email to security-team@acme.com`,timezone:`UTC`,last_triggered_at:J(0)},{id:`a1000000-0000-0000-0000-000000000003`,name:`Docs Sync on Push`,trigger:{type:`cron`,schedule:`*/5 * * * *`,schedule_human:`Runs on every push`},enabled:!0,repository:`acme/docs`,model:`docs-fast`,created_at:J(45),updated_at:q,prompt:`Monitor acme/docs for new pushes. For each push, generate a changelog-ready summary of what changed and why.`,branch:`main`,plugins:[`GitHub`,`Slack`],notification:`Slack to #docs-updates`,timezone:`America/New_York`,last_triggered_at:J(1)},{id:`a1000000-0000-0000-0000-000000000004`,name:`Release Readiness Review`,trigger:{type:`cron`,schedule:`0 11 * * 5`,schedule_human:`Fridays at 11:00`},enabled:!1,repository:`acme/realtime-service`,model:`release-review`,created_at:J(80),updated_at:q,prompt:`Compile a release readiness report: list open blockers, active incidents, and pending approvals for acme/realtime-service.`,branch:`release`,plugins:[`GitHub`,`Linear`],notification:`Slack to #releases`,timezone:`America/Chicago`,last_triggered_at:J(14)},{id:`a1000000-0000-0000-0000-000000000005`,name:`Incident Webhook Summary`,trigger:{type:`cron`,schedule:`0 */2 * * *`,schedule_human:`On incident webhook`},enabled:!1,repository:`acme/incident-service`,model:`incident-summary`,created_at:J(30),updated_at:q,prompt:`Summarize incoming incident webhooks, categorize by severity, and post a digest to the on-call Slack channel.`,branch:`main`,plugins:[`Slack`],notification:`Slack to #oncall`,timezone:`UTC`,last_triggered_at:null},{id:`a1000000-0000-0000-0000-000000000006`,name:`PR Review on Open`,trigger:{type:`event`,source:`github`,on:`pull_request.opened`,filter:`repository.full_name == 'acme/frontend-app'`},enabled:!0,repository:`acme/frontend-app`,model:`review-fast`,created_at:J(15),updated_at:q,prompt:`When a new PR is opened, perform a thorough code review focusing on correctness, security, and performance. Post findings as inline comments.`,branch:`main`,plugins:[`GitHub`],notification:`GitHub PR comment`,last_triggered_at:J(0)},{id:`a1000000-0000-0000-0000-000000000007`,name:`Release Notes Generator`,trigger:{type:`event`,source:`github`,on:`release.published`,filter:`glob(release.tag_name, 'v*') && !release.prerelease`},enabled:!0,repository:`acme/backend-api`,model:`docs-fast`,created_at:J(10),updated_at:q,prompt:`Generate comprehensive release notes from the commits since the last release. Include breaking changes, new features, and bug fixes.`,branch:`main`,plugins:[`GitHub`],notification:`GitHub release body update`,last_triggered_at:J(3)}],total:7},Fe=(e,t=9)=>{let n=new Date(Date.now()-e*864e5);return n.setHours(t,0,0,0),n.toISOString()};function Y(e,t,n,r=9,i=!0){let a=Fe(n,r);return{id:e,status:t,conversation_id:i?`conv-${e}`:null,bash_command_id:i?`cmd-${e}`:null,error_detail:t===c.FAILED?`Process exited with code 1`:null,started_at:a,completed_at:new Date(new Date(a).getTime()+12e4).toISOString()}}var Ie={"a1000000-0000-0000-0000-000000000001":[Y(`r1-01`,c.COMPLETED,0),Y(`r1-02`,c.COMPLETED,1),Y(`r1-03`,c.FAILED,2),Y(`r1-04`,c.COMPLETED,3),Y(`r1-05`,c.COMPLETED,4),Y(`r1-06`,c.COMPLETED,7),Y(`r1-07`,c.FAILED,8),Y(`r1-08`,c.COMPLETED,9),Y(`r1-09`,c.COMPLETED,10),Y(`r1-10`,c.COMPLETED,11)],"a1000000-0000-0000-0000-000000000002":[Y(`r2-01`,c.COMPLETED,0,1),Y(`r2-02`,c.COMPLETED,1,1),Y(`r2-03`,c.COMPLETED,2,1),Y(`r2-04`,c.FAILED,3,1),Y(`r2-05`,c.COMPLETED,4,1)],"a1000000-0000-0000-0000-000000000003":[Y(`r3-01`,c.COMPLETED,1),Y(`r3-02`,c.COMPLETED,2),Y(`r3-03`,c.COMPLETED,3)],"a1000000-0000-0000-0000-000000000004":[Y(`r4-01`,c.FAILED,14,11,!1),Y(`r4-02`,c.COMPLETED,21,11)],"a1000000-0000-0000-0000-000000000005":[],"a1000000-0000-0000-0000-000000000006":[Y(`r6-01`,c.COMPLETED,0,14),Y(`r6-02`,c.COMPLETED,0,11),Y(`r6-03`,c.FAILED,1,16),Y(`r6-04`,c.COMPLETED,2,10),Y(`r6-05`,c.COMPLETED,3,9)],"a1000000-0000-0000-0000-000000000007":[Y(`r7-01`,c.COMPLETED,3,15),Y(`r7-02`,c.COMPLETED,10,12)]},X=new Map(Pe.automations.map(e=>[e.id,{...e}])),Le=[u.get(`*/api/automation/health`,async()=>(await f(100),l.json({status:`ok`}))),u.get(`*/api/automation/v1`,async({request:e})=>{await f(300);let t=new URL(e.url),n=Number(t.searchParams.get(`limit`)??`50`),r=Number(t.searchParams.get(`offset`)??`0`),i=Array.from(X.values()),a={automations:i.slice(r,r+n),total:i.length};return l.json(a)}),u.get(`*/api/automation/v1/:id/runs`,async({params:e,request:t})=>{await f(200);let n=e.id;if(!X.has(n))return l.json({detail:`Automation not found`},{status:404});let r=new URL(t.url),i=Number(r.searchParams.get(`limit`)??`50`),a=Number(r.searchParams.get(`offset`)??`0`),o=Ie[n]??[],s={runs:o.slice(a,a+i),total:o.length};return l.json(s)}),u.get(`*/api/automation/v1/:id`,async({params:e})=>{await f(200);let t=X.get(e.id);return t?l.json(t):l.json({detail:`Automation not found`},{status:404})}),u.patch(`*/api/automation/v1/:id`,async({params:e,request:t})=>{await f(200);let n=e.id,r=await t.clone().json(),i=X.get(n);if(!i)return l.json({detail:`Automation not found`},{status:404});let a={...i,...r,updated_at:new Date().toISOString()};return X.set(n,a),l.json(a)}),u.post(`*/api/automation/v1/:id/dispatch`,async({params:e})=>{await f(200);let t=e.id;if(!X.get(t))return l.json({detail:`Automation not found`},{status:404});let n={id:crypto.randomUUID(),status:c.PENDING,conversation_id:null,bash_command_id:null,error_detail:null,started_at:new Date().toISOString(),completed_at:null};return l.json(n,{status:201})}),u.delete(`*/api/automation/v1/:id`,async({params:e})=>{await f(200);let t=e.id;return X.has(t)?(X.delete(t),new l(null,{status:204})):l.json({detail:`Automation not found`},{status:404})})],Re={ok:!0,tools:[]},ze=[u.post(`*/api/mcp/test`,async()=>l.json(Re))],Z=[],Q=[];function $(){return{workspaces:Z.map(e=>({...e})),workspaceParents:Q.map(e=>({...e}))}}var Be=[u.get(`*/api/workspaces`,async()=>l.json($())),u.post(`*/api/workspaces`,async({request:e})=>{let t=await e.json();for(let e of t.workspaces??[]){let t=Z.findIndex(t=>t.path===e.path);t>=0?Z[t]={...e}:Z.push({...e})}return l.json($())}),u.delete(`*/api/workspaces`,async({request:e})=>{let t=new URL(e.url).searchParams.get(`path`),n=Z.length;return Z=Z.filter(e=>e.path!==t),l.json({deleted:Z.length!==n})}),u.post(`*/api/workspaces/parents`,async({request:e})=>{let t=await e.json();for(let e of t.parents??[]){let t=Q.findIndex(t=>t.path===e.path);t>=0?Q[t]={...e}:Q.push({...e})}return l.json($())}),u.delete(`*/api/workspaces/parents`,async({request:e})=>{let t=new URL(e.url).searchParams.get(`path`),n=Q.length;return Q=Q.filter(e=>e.path!==t),l.json({deleted:Q.length!==n})}),u.post(`*/api/auth/workspace-session`,async()=>l.json({ok:!0})),u.delete(`*/api/auth/workspace-session`,async()=>new l(null,{status:204}))],Ve=d(...g,...ie,...ae,...ce,...ge,...Ae,...je,...Me,...Ne,...Le,...ze,...Be);export{Ve as worker};
@@ -0,0 +1 @@
1
+ import{t as e}from"./react-DPDgL6du.js";var t={url:``,screenshotSrc:``},n=e(e=>({...t,setUrl:t=>e({url:t}),setScreenshotSrc:t=>e({screenshotSrc:t}),reset:()=>e(t)}));export{n as t};
@@ -0,0 +1 @@
1
+ import{bt as e}from"./vendor-styling-CI0PQ3ab.js";import{t}from"./useTranslation-Cgy4JA_g.js";import{t as n}from"./declaration-B9kpCaYl.js";import{t as r}from"./external-link-D2zJjE9G.js";import{t as i}from"./utils-CE0lDWtb.js";import{t as a}from"./browser-store-BI6uklCG.js";import{t as o}from"./conversation-tab-empty-state-m8IUkfMj.js";import{t as s}from"./vendor~browser-tab-Di0kh5Zw.js";var c=e();function l({src:e}){let{t:r}=t(`openhands`);return(0,c.jsx)(`img`,{src:e,className:`block w-full h-auto`,alt:r(n.BROWSER$SCREENSHOT_ALT)})}function u({url:e,hasPage:a}){let{t:o}=t(`openhands`),s=i(`shrink-0 inline-flex items-center justify-center w-6 h-6 rounded-md`,`text-[var(--oh-text-tertiary)] opacity-40 cursor-not-allowed`),l=`w-3.5 h-3.5`;return(0,c.jsxs)(`div`,{className:`flex w-full min-h-[34px] shrink-0 items-center gap-1 border-b border-[var(--oh-border)] px-2 py-1.5`,"data-testid":`browser-chrome-bar`,children:[(0,c.jsx)(`div`,{className:i(`flex min-h-7 min-w-0 flex-1 items-center rounded-md border border-[var(--oh-border)]`,`bg-[var(--oh-surface-raised)] px-2 text-xs leading-5`,e?`text-[var(--oh-text-tertiary)]`:`text-[var(--oh-text-dim)]`),"data-testid":`browser-chrome-url`,title:e||void 0,children:(0,c.jsx)(`span`,{className:`truncate`,children:e||o(n.BROWSER$URL_PLACEHOLDER)})}),a&&e?(0,c.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,"aria-label":o(n.BUTTON$OPEN_IN_NEW_TAB),title:o(n.BUTTON$OPEN_IN_NEW_TAB),"data-testid":`browser-chrome-open-external`,className:i(`shrink-0 inline-flex items-center justify-center w-6 h-6 rounded-md`,`text-[var(--oh-text-tertiary)] hover:bg-tertiary cursor-pointer`),children:(0,c.jsx)(r,{className:l,"aria-hidden":!0,strokeWidth:2})}):(0,c.jsx)(`button`,{type:`button`,disabled:!0,"aria-label":o(n.BUTTON$OPEN_IN_NEW_TAB),title:o(n.BUTTON$OPEN_IN_NEW_TAB),className:s,children:(0,c.jsx)(r,{className:l,"aria-hidden":!0,strokeWidth:2})})]})}function d(){let{t:e}=t(`openhands`);return(0,c.jsx)(o,{icon:(0,c.jsx)(s,{}),children:e(n.BROWSER$NO_PAGE_LOADED)})}function f(){let{url:e,screenshotSrc:t}=a(),n=!!t,r=t?.startsWith(`data:image/png;base64,`)?t:`data:image/png;base64,${t??``}`;return(0,c.jsxs)(`div`,{className:`flex h-full min-h-0 w-full flex-col text-[var(--oh-muted)]`,children:[(0,c.jsx)(u,{url:e,hasPage:n}),(0,c.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto scrollbar-hide bg-[var(--oh-surface)]`,children:t?(0,c.jsx)(l,{src:r}):(0,c.jsx)(d,{})})]})}function p(){return(0,c.jsx)(f,{})}export{p as default};
@@ -0,0 +1 @@
1
+ import{bt as e}from"./vendor-styling-CI0PQ3ab.js";import{t}from"./createLucideIcon-CVAsW2Yo.js";import{t as n}from"./utils-CE0lDWtb.js";var r=t(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),i=t(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),a=e();function o({buttonClassName:e,handleSubmit:t,disabled:i}){return(0,a.jsx)(`button`,{type:`button`,className:n(`flex items-center justify-center rounded-full border border-white size-8`,i?`cursor-not-allowed border-[var(--oh-muted)]`:`cursor-pointer hover:bg-white/10`,e),"data-name":`arrow-up-circle-fill`,"data-testid":`submit-button`,onClick:t,disabled:i,children:(0,a.jsx)(r,{className:`w-4 h-4`,color:i?`var(--oh-muted)`:`white`})})}export{i as n,o as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-CVAsW2Yo.js";var t=e(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]);export{t};
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime-BFRubm34.js";import{Ct as e,bt as t}from"./vendor-styling-CI0PQ3ab.js";e();var n=t(),r=e=>(0,n.jsx)(`svg`,{width:15,height:15,viewBox:`0 0 15 15`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,n.jsx)(`path`,{d:`M11.6938 4.50616C11.6357 4.44758 11.5666 4.40109 11.4904 4.36936C11.4142 4.33763 11.3325 4.32129 11.25 4.32129C11.1675 4.32129 11.0858 4.33763 11.0097 4.36936C10.9335 4.40109 10.8644 4.44758 10.8063 4.50616L6.15003 9.16866L4.19378 7.20616C4.13345 7.14789 4.06224 7.10207 3.98421 7.07132C3.90617 7.04056 3.82284 7.02548 3.73898 7.02693C3.65512 7.02838 3.57236 7.04634 3.49544 7.07977C3.41851 7.1132 3.34893 7.16146 3.29065 7.22179C3.23238 7.28211 3.18656 7.35333 3.15581 7.43136C3.12505 7.5094 3.10997 7.59272 3.11142 7.67659C3.11287 7.76045 3.13083 7.84321 3.16426 7.92013C3.1977 7.99705 3.24595 8.06664 3.30628 8.12491L5.70628 10.5249C5.76438 10.5835 5.83351 10.63 5.90967 10.6617C5.98583 10.6935 6.06752 10.7098 6.15003 10.7098C6.23254 10.7098 6.31423 10.6935 6.39039 10.6617C6.46655 10.63 6.53568 10.5835 6.59378 10.5249L11.6938 5.42491C11.7572 5.36639 11.8078 5.29535 11.8425 5.21629C11.8771 5.13723 11.895 5.05185 11.895 4.96554C11.895 4.87922 11.8771 4.79385 11.8425 4.71478C11.8078 4.63572 11.7572 4.56469 11.6938 4.50616Z`,fill:`white`})});export{r as t};
@@ -1 +1 @@
1
- import{t as e}from"./createLucideIcon-D3nkdIAN.js";var t=e(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]);export{t};
1
+ import{t as e}from"./createLucideIcon-CVAsW2Yo.js";var t=e(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{a as e}from"./rolldown-runtime-BFRubm34.js";import{Ct as t,bt as n}from"./vendor-styling-CI0PQ3ab.js";import{t as r}from"./useTranslation-Cgy4JA_g.js";import{t as i}from"./declaration-B9kpCaYl.js";import{t as a}from"./utils-CE0lDWtb.js";import{t as o}from"./styled-tooltip-DsKsFjuq.js";import{t as s}from"./checkmark-h7udgXMM.js";import{t as c}from"./x-mark-Batp6gXa.js";var l=e(t()),u=n(),d=e=>(0,u.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 25 25`,fill:`none`,...e,children:[(0,u.jsx)(`path`,{d:`M10.8696 23.3696V1.63043C10.8696 0.729971 11.5995 0 12.5 0C13.4005 0 14.1304 0.729971 14.1304 1.63043V23.3696C14.1304 24.27 13.4005 25 12.5 25C11.5995 25 10.8696 24.27 10.8696 23.3696Z`,fill:`currentColor`}),(0,u.jsx)(`path`,{d:`M1.63043 10.8641L23.3696 10.8641C24.27 10.8641 25 11.5941 25 12.4946C25 13.395 24.27 14.125 23.3696 14.125L1.63043 14.125C0.729971 14.125 -3.93605e-08 13.395 0 12.4946C3.93605e-08 11.5941 0.729971 10.8641 1.63043 10.8641Z`,fill:`currentColor`})]});function f({className:e,testId:t,tooltipKey:n=i.AUTOMATIONS$ADD_AUTOMATION}){let{t:s}=r(`openhands`);return(0,u.jsx)(o,{content:s(n),placement:`top`,children:(0,u.jsx)(`span`,{"aria-hidden":`true`,"data-testid":t,className:a(`inline-flex size-7 shrink-0 items-center justify-center rounded-full bg-surface-raised text-white transition-colors hover:bg-[var(--oh-interactive-hover)]`,e),children:(0,u.jsx)(d,{className:`size-3`})})})}function p({testId:e,isSelected:t,onToggle:n,isDisabled:f=!1,className:p,enableLabelKey:m=i.SETTINGS$SKILLS_ENABLE_SKILL,disableLabelKey:h=i.SETTINGS$SKILLS_DISABLE_SKILL,enableTooltipKey:g=i.COMMON$ENABLE,disableTooltipKey:_,removeTooltipKey:v=i.COMMON$REMOVE}){let{t:y}=r(`openhands`),[b,x]=l.useState(!1),S=e=>{e.stopPropagation(),!f&&(n(!t),e.currentTarget.blur())},C=t&&b,w=y(t?_??v:g),T=y(t?h:m);return(0,u.jsx)(o,{content:w,placement:`top`,children:(0,u.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":t,"data-testid":e,"data-showing-remove":C?`true`:`false`,disabled:f,"aria-label":T,onClick:S,onPointerEnter:()=>x(!0),onPointerLeave:()=>x(!1),className:a(`inline-flex size-7 shrink-0 cursor-pointer items-center justify-center rounded-full p-0 transition-colors`,t&&(C?`border-0 bg-[rgba(248,113,113,0.14)] text-[#ef4444] hover:bg-[rgba(248,113,113,0.24)]`:`border border-white bg-transparent text-white [&_path]:fill-current`),!t&&`border-0 bg-surface-raised text-white hover:bg-[var(--oh-interactive-hover)]`,f&&`cursor-not-allowed opacity-50`,p),children:t?C?(0,u.jsx)(c,{"aria-hidden":!0,width:14,height:14,className:`stroke-[2.5]`}):(0,u.jsx)(s,{"aria-hidden":!0,width:14,height:14}):(0,u.jsx)(d,{"aria-hidden":!0,className:`size-3`})})})}export{p as n,f as t};
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime-BFRubm34.js";import{Ct as e,bt as t}from"./vendor-styling-CI0PQ3ab.js";e();var n=t(),r=e=>(0,n.jsx)(`svg`,{width:25,height:24,viewBox:`0 0 25 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,n.jsx)(`path`,{d:`M12.5 13.0602L16.2123 16.7725L17.273 15.7118L13.5607 11.9995L17.273 8.28723L16.2123 7.22657L12.5 10.9389L8.78771 7.22656L7.72705 8.28722L11.4394 11.9995L7.72706 15.7119L8.78772 16.7725L12.5 13.0602Z`,fill:`white`})});export{r as t};
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime-BFRubm34.js";import{Ct as e,bt as t}from"./vendor-styling-CI0PQ3ab.js";e();var n=t(),r=e=>(0,n.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,n.jsx)(`path`,{d:`M7.062 8.367L3.0915 12.336L7.062 16.305L6 17.367L1.5 12.867V11.805L6 7.305L7.062 8.367ZM17.562 7.305L16.5 8.367L20.4705 12.336L16.5 16.305L17.562 17.367L22.062 12.867V11.805L17.562 7.305ZM7.362 19.5L8.703 20.172L16.203 5.172L14.862 4.5L7.362 19.5Z`,fill:`currentColor`})});export{r as t};
@@ -1,4 +1,4 @@
1
- import{r as e}from"./agent-server-ui-style-scope-CIDFDeQb.js";var t={50:`0 0% 96.86%`,100:`0 0% 92.55%`,200:`0 0% 86.27%`,300:`0 0% 74.51%`,400:`0 0% 59.22%`,500:`0 0% 45.1%`,600:`0 0% 33.73%`,700:`0 0% 25.1%`,800:`0 0% 19.22%`,850:`0 0% 15.69%`,900:`0 0% 12.55%`,950:`0 0% 9.41%`,975:`0 0% 6.27%`},n={"--cool-grey-50":`#F7F7F7`,"--cool-grey-100":`#ECECEC`,"--cool-grey-200":`#DCDCDC`,"--cool-grey-300":`#BEBEBE`,"--cool-grey-400":`#979797`,"--cool-grey-500":`#737373`,"--cool-grey-600":`#565656`,"--cool-grey-700":`#404040`,"--cool-grey-800":`#313131`,"--cool-grey-900":`#282828`,"--cool-grey-925":`#202020`,"--cool-grey-950":`#181818`,"--cool-grey-975":`#101010`},r={"--heroui-background":t[950],"--heroui-background-foreground":t[50],"--heroui-foreground-50":t[975],"--heroui-foreground-100":t[950],"--heroui-foreground-200":t[900],"--heroui-foreground-300":t[850],"--heroui-foreground-400":t[800],"--heroui-foreground-500":t[700],"--heroui-foreground-600":t[600],"--heroui-foreground-700":t[500],"--heroui-foreground-800":t[400],"--heroui-foreground-900":t[300],"--heroui-foreground":t[300],"--heroui-content1":t[900],"--heroui-content1-foreground":t[100],"--heroui-content2":t[850],"--heroui-content2-foreground":t[200],"--heroui-content3":t[800],"--heroui-content3-foreground":t[300],"--heroui-content4":t[700],"--heroui-content4-foreground":t[400],"--heroui-default-50":t[975],"--heroui-default-100":t[950],"--heroui-default-200":t[900],"--heroui-default-300":t[850],"--heroui-default-400":t[800],"--heroui-default-500":t[700],"--heroui-default-600":t[600],"--heroui-default-700":t[500],"--heroui-default-800":t[400],"--heroui-default-900":t[300],"--heroui-default-foreground":t[50],"--heroui-default":t[800]},i=e,a={"openhands-deepsea":{label:`OpenHands-DeepSea`,scale:{"--cool-grey-50":`#F7F9FC`,"--cool-grey-100":`#EEF2F7`,"--cool-grey-200":`#DCE3EE`,"--cool-grey-300":`#C3CDDC`,"--cool-grey-400":`#A3B0C4`,"--cool-grey-500":`#7E8A9E`,"--cool-grey-600":`#626D82`,"--cool-grey-700":`#4B5468`,"--cool-grey-800":`#383F50`,"--cool-grey-900":`#2C313F`,"--cool-grey-925":`#21252F`,"--cool-grey-950":`#0B0E14`,"--cool-grey-975":`#05070A`},heroui:{"--heroui-background":`220 29.03% 6.08%`,"--heroui-background-foreground":`216 45.45% 97.84%`,"--heroui-foreground-50":`216 33.33% 2.94%`,"--heroui-foreground-100":`220 29.03% 6.08%`,"--heroui-foreground-200":`222.86 17.5% 15.69%`,"--heroui-foreground-300":`224.21 17.76% 20.98%`,"--heroui-foreground-400":`222.5 17.65% 26.67%`,"--heroui-foreground-500":`221.38 16.2% 35.1%`,"--heroui-foreground-600":`219.38 14.04% 44.71%`,"--heroui-foreground-700":`217.5 14.16% 55.69%`,"--heroui-foreground-800":`216.36 21.85% 70.39%`,"--heroui-foreground-900":`216 26.32% 81.37%`,"--heroui-foreground":`216 26.32% 81.37%`,"--heroui-content1":`222.86 17.5% 15.69%`,"--heroui-content1-foreground":`213.33 36% 95.1%`,"--heroui-content2":`224.21 17.76% 20.98%`,"--heroui-content2-foreground":`216.67 34.62% 89.8%`,"--heroui-content3":`222.5 17.65% 26.67%`,"--heroui-content3-foreground":`216 26.32% 81.37%`,"--heroui-content4":`221.38 16.2% 35.1%`,"--heroui-content4-foreground":`216.36 21.85% 70.39%`,"--heroui-default-50":`216 33.33% 2.94%`,"--heroui-default-100":`220 29.03% 6.08%`,"--heroui-default-200":`222.86 17.5% 15.69%`,"--heroui-default-300":`224.21 17.76% 20.98%`,"--heroui-default-400":`222.5 17.65% 26.67%`,"--heroui-default-500":`221.38 16.2% 35.1%`,"--heroui-default-600":`219.38 14.04% 44.71%`,"--heroui-default-700":`217.5 14.16% 55.69%`,"--heroui-default-800":`216.36 21.85% 70.39%`,"--heroui-default-900":`216 26.32% 81.37%`,"--heroui-default-foreground":`216 45.45% 97.84%`,"--heroui-default":`222.5 17.65% 26.67%`}},"openhands-neutral":{label:`OpenHands-Neutral`,scale:n,heroui:r},"openhands-neo":{label:`OpenHands-Neo`,scale:n,heroui:r,tokens:{"--oh-color-primary":`#ffffff`,"--oh-accent":`#ffffff`,"--oh-warning":`#ffffff`}}},o=`openhands-neutral`,s=Object.entries(a).map(([e,t])=>({key:e,label:t.label})),c=`openhands-color-theme`;function l(){if(typeof window>`u`)return o;try{let e=window.localStorage.getItem(c);if(e&&e in a)return e}catch{}return o}function u(e){try{window.localStorage.setItem(c,e)}catch{}}var d=`oh-color-theme-override`;function f(e){if(typeof document>`u`)return;let{scale:t,heroui:n,tokens:r={}}=a[e],i=Object.entries(t).map(([e,t])=>` ${e}: ${t};`).join(`
1
+ import{r as e}from"./agent-server-ui-style-scope-COnDHTm5.js";var t={50:`0 0% 96.86%`,100:`0 0% 92.55%`,200:`0 0% 86.27%`,300:`0 0% 74.51%`,400:`0 0% 59.22%`,500:`0 0% 45.1%`,600:`0 0% 33.73%`,700:`0 0% 25.1%`,800:`0 0% 19.22%`,850:`0 0% 15.69%`,900:`0 0% 12.55%`,950:`0 0% 9.41%`,975:`0 0% 6.27%`},n={"--cool-grey-50":`#F7F7F7`,"--cool-grey-100":`#ECECEC`,"--cool-grey-200":`#DCDCDC`,"--cool-grey-300":`#BEBEBE`,"--cool-grey-400":`#979797`,"--cool-grey-500":`#737373`,"--cool-grey-600":`#565656`,"--cool-grey-700":`#404040`,"--cool-grey-800":`#313131`,"--cool-grey-900":`#282828`,"--cool-grey-925":`#202020`,"--cool-grey-950":`#181818`,"--cool-grey-975":`#101010`},r={"--heroui-background":t[950],"--heroui-background-foreground":t[50],"--heroui-foreground-50":t[975],"--heroui-foreground-100":t[950],"--heroui-foreground-200":t[900],"--heroui-foreground-300":t[850],"--heroui-foreground-400":t[800],"--heroui-foreground-500":t[700],"--heroui-foreground-600":t[600],"--heroui-foreground-700":t[500],"--heroui-foreground-800":t[400],"--heroui-foreground-900":t[300],"--heroui-foreground":t[300],"--heroui-content1":t[900],"--heroui-content1-foreground":t[100],"--heroui-content2":t[850],"--heroui-content2-foreground":t[200],"--heroui-content3":t[800],"--heroui-content3-foreground":t[300],"--heroui-content4":t[700],"--heroui-content4-foreground":t[400],"--heroui-default-50":t[975],"--heroui-default-100":t[950],"--heroui-default-200":t[900],"--heroui-default-300":t[850],"--heroui-default-400":t[800],"--heroui-default-500":t[700],"--heroui-default-600":t[600],"--heroui-default-700":t[500],"--heroui-default-800":t[400],"--heroui-default-900":t[300],"--heroui-default-foreground":t[50],"--heroui-default":t[800]},i=e,a={"openhands-deepsea":{label:`OpenHands-DeepSea`,scale:{"--cool-grey-50":`#F7F9FC`,"--cool-grey-100":`#EEF2F7`,"--cool-grey-200":`#DCE3EE`,"--cool-grey-300":`#C3CDDC`,"--cool-grey-400":`#A3B0C4`,"--cool-grey-500":`#7E8A9E`,"--cool-grey-600":`#626D82`,"--cool-grey-700":`#4B5468`,"--cool-grey-800":`#383F50`,"--cool-grey-900":`#2C313F`,"--cool-grey-925":`#21252F`,"--cool-grey-950":`#0B0E14`,"--cool-grey-975":`#05070A`},heroui:{"--heroui-background":`220 29.03% 6.08%`,"--heroui-background-foreground":`216 45.45% 97.84%`,"--heroui-foreground-50":`216 33.33% 2.94%`,"--heroui-foreground-100":`220 29.03% 6.08%`,"--heroui-foreground-200":`222.86 17.5% 15.69%`,"--heroui-foreground-300":`224.21 17.76% 20.98%`,"--heroui-foreground-400":`222.5 17.65% 26.67%`,"--heroui-foreground-500":`221.38 16.2% 35.1%`,"--heroui-foreground-600":`219.38 14.04% 44.71%`,"--heroui-foreground-700":`217.5 14.16% 55.69%`,"--heroui-foreground-800":`216.36 21.85% 70.39%`,"--heroui-foreground-900":`216 26.32% 81.37%`,"--heroui-foreground":`216 26.32% 81.37%`,"--heroui-content1":`222.86 17.5% 15.69%`,"--heroui-content1-foreground":`213.33 36% 95.1%`,"--heroui-content2":`224.21 17.76% 20.98%`,"--heroui-content2-foreground":`216.67 34.62% 89.8%`,"--heroui-content3":`222.5 17.65% 26.67%`,"--heroui-content3-foreground":`216 26.32% 81.37%`,"--heroui-content4":`221.38 16.2% 35.1%`,"--heroui-content4-foreground":`216.36 21.85% 70.39%`,"--heroui-default-50":`216 33.33% 2.94%`,"--heroui-default-100":`220 29.03% 6.08%`,"--heroui-default-200":`222.86 17.5% 15.69%`,"--heroui-default-300":`224.21 17.76% 20.98%`,"--heroui-default-400":`222.5 17.65% 26.67%`,"--heroui-default-500":`221.38 16.2% 35.1%`,"--heroui-default-600":`219.38 14.04% 44.71%`,"--heroui-default-700":`217.5 14.16% 55.69%`,"--heroui-default-800":`216.36 21.85% 70.39%`,"--heroui-default-900":`216 26.32% 81.37%`,"--heroui-default-foreground":`216 45.45% 97.84%`,"--heroui-default":`222.5 17.65% 26.67%`}},"openhands-neutral":{label:`OpenHands-Neutral`,scale:n,heroui:r},"openhands-neo":{label:`OpenHands-Neo`,scale:n,heroui:r,tokens:{"--oh-color-primary":`#ffffff`,"--oh-accent":`#ffffff`,"--oh-warning":`#ffffff`}}},o=`openhands-neutral`,s=Object.entries(a).map(([e,t])=>({key:e,label:t.label})),c=`openhands-color-theme`;function l(){if(typeof window>`u`)return o;try{let e=window.localStorage.getItem(c);if(e&&e in a)return e}catch{}return o}function u(e){try{window.localStorage.setItem(c,e)}catch{}}var d=`oh-color-theme-override`;function f(e){if(typeof document>`u`)return;let{scale:t,heroui:n,tokens:r={}}=a[e],i=Object.entries(t).map(([e,t])=>` ${e}: ${t};`).join(`
2
2
  `),o=Object.entries(n).map(([e,t])=>` ${e}: ${t};`).join(`
3
3
  `),s=[`[data-agent-server-ui] {\n${i}\n${o}\n${Object.entries(r).map(([e,t])=>` ${e}: ${t};`).join(`
4
4
  `)}\n}`,`[data-theme=dark] {\n${o}\n}`].join(`
@@ -0,0 +1 @@
1
+ import{bt as e}from"./vendor-styling-CI0PQ3ab.js";import{t}from"./utils-CE0lDWtb.js";import{g as n}from"./form-control-classes-9rkU4usZ.js";var r=e();function i({className:e}){return(0,r.jsx)(`svg`,{"aria-hidden":!0,fill:`none`,focusable:`false`,height:`1em`,role:`presentation`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:1.5,viewBox:`0 0 24 24`,width:`1em`,className:e,children:(0,r.jsx)(`path`,{d:`m6 9 6 6 6-6`})})}var a=t(`inline-flex items-center justify-center shrink-0 rounded-none bg-transparent px-1 min-w-0 w-auto h-auto text-medium cursor-pointer outline-none`,n),o=t(a,`!rounded-none !bg-transparent data-[hover=true]:!bg-transparent`);function s({isOpen:e,className:a}){return(0,r.jsx)(i,{className:t(`shrink-0`,n,e&&`rotate-180`,a)})}export{o as i,s as n,a as r,i as t};
@@ -0,0 +1 @@
1
+ import{a as e}from"./rolldown-runtime-BFRubm34.js";import{Ct as t,bt as n,xt as r}from"./vendor-styling-CI0PQ3ab.js";import{t as i}from"./useTranslation-Cgy4JA_g.js";import{t as a}from"./declaration-B9kpCaYl.js";import{t as o}from"./createLucideIcon-CVAsW2Yo.js";import{t as s}from"./bot-D7eUAuSB.js";import{t as c}from"./list-todo-BfH6yYUK.js";import{t as l}from"./search-4DHskuhE.js";import{n as u,r as d,t as f}from"./sidebar-store-CZuE8AH5.js";import{t as p}from"./x-Cb0WAtak.js";import{t as m}from"./utils-CE0lDWtb.js";import{n as h}from"./navigation-context-DPs2G0X8.js";var g=o(`house`,[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),_=o(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),v=o(`keyboard`,[[`path`,{d:`M10 8h.01`,key:`1r9ogq`}],[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M14 8h.01`,key:`1primd`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}],[`path`,{d:`M18 8h.01`,key:`emo2bl`}],[`path`,{d:`M6 8h.01`,key:`x9i8wu`}],[`path`,{d:`M7 16h10`,key:`wp8him`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}],[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`,key:`18n3k1`}]]),y=o(`panels-top-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M9 21V9`,key:`1oto5p`}]]),b=o(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),x=o(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),S=o(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),C=o(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),w=e(r(),1),T=e(t(),1),E=n(),D=18,O={conversations:`/conversations`,customize:`/customize`,automations:`/automations`,mcp:`/mcp`,settings:`/settings`,agentSettings:`/settings/agents`,llmSettings:`/settings/llm`,condenserSettings:`/settings/condenser`,verificationSettings:`/settings/verification`,appSettings:`/settings/app`,secretsSettings:`/settings/secrets`},k={navigation:a.COMMAND_MENU$GROUP_NAVIGATION,settings:a.COMMAND_MENU$GROUP_SETTINGS,actions:a.COMMAND_MENU$GROUP_ACTIONS},A=[`navigation`,`settings`,`actions`],j=({toggleSidebar:e})=>[{id:`new-chat`,group:`navigation`,titleKey:a.COMMAND_MENU$NEW_CHAT_TITLE,descriptionKey:a.COMMAND_MENU$NEW_CHAT_DESCRIPTION,keywordsKey:a.COMMAND_MENU$NEW_CHAT_KEYWORDS,icon:(0,E.jsx)(g,{size:D}),to:O.conversations},{id:`customize`,group:`navigation`,titleKey:a.COMMAND_MENU$CUSTOMIZE_TITLE,descriptionKey:a.COMMAND_MENU$CUSTOMIZE_DESCRIPTION,keywordsKey:a.COMMAND_MENU$CUSTOMIZE_KEYWORDS,icon:(0,E.jsx)(x,{size:D}),to:O.customize},{id:`automations`,group:`navigation`,titleKey:a.COMMAND_MENU$AUTOMATIONS_TITLE,descriptionKey:a.COMMAND_MENU$AUTOMATIONS_DESCRIPTION,keywordsKey:a.COMMAND_MENU$AUTOMATIONS_KEYWORDS,icon:(0,E.jsx)(C,{size:D}),to:O.automations},{id:`mcp`,group:`navigation`,titleKey:a.COMMAND_MENU$MCP_TITLE,descriptionKey:a.COMMAND_MENU$MCP_DESCRIPTION,keywordsKey:a.COMMAND_MENU$MCP_KEYWORDS,icon:(0,E.jsx)(S,{size:D}),to:O.mcp},{id:`settings`,group:`settings`,titleKey:a.COMMAND_MENU$SETTINGS_TITLE,descriptionKey:a.COMMAND_MENU$SETTINGS_DESCRIPTION,keywordsKey:a.COMMAND_MENU$SETTINGS_KEYWORDS,icon:(0,E.jsx)(d,{size:D}),to:O.settings},{id:`agent-settings`,group:`settings`,titleKey:a.COMMAND_MENU$AGENT_SETTINGS_TITLE,descriptionKey:a.COMMAND_MENU$AGENT_SETTINGS_DESCRIPTION,keywordsKey:a.COMMAND_MENU$AGENT_SETTINGS_KEYWORDS,icon:(0,E.jsx)(s,{size:D}),to:O.agentSettings},{id:`llm-settings`,group:`settings`,titleKey:a.COMMAND_MENU$LLM_SETTINGS_TITLE,descriptionKey:a.COMMAND_MENU$LLM_SETTINGS_DESCRIPTION,keywordsKey:a.COMMAND_MENU$LLM_SETTINGS_KEYWORDS,icon:(0,E.jsx)(l,{size:D}),to:O.llmSettings},{id:`condenser-settings`,group:`settings`,titleKey:a.COMMAND_MENU$CONDENSER_SETTINGS_TITLE,descriptionKey:a.COMMAND_MENU$CONDENSER_SETTINGS_DESCRIPTION,keywordsKey:a.COMMAND_MENU$CONDENSER_SETTINGS_KEYWORDS,icon:(0,E.jsx)(c,{size:D}),to:O.condenserSettings},{id:`verification-settings`,group:`settings`,titleKey:a.COMMAND_MENU$VERIFICATION_SETTINGS_TITLE,descriptionKey:a.COMMAND_MENU$VERIFICATION_SETTINGS_DESCRIPTION,keywordsKey:a.COMMAND_MENU$VERIFICATION_SETTINGS_KEYWORDS,icon:(0,E.jsx)(b,{size:D}),to:O.verificationSettings},{id:`app-settings`,group:`settings`,titleKey:a.COMMAND_MENU$APP_SETTINGS_TITLE,descriptionKey:a.COMMAND_MENU$APP_SETTINGS_DESCRIPTION,keywordsKey:a.COMMAND_MENU$APP_SETTINGS_KEYWORDS,icon:(0,E.jsx)(y,{size:D}),to:O.appSettings},{id:`secrets-settings`,group:`settings`,titleKey:a.COMMAND_MENU$SECRETS_SETTINGS_TITLE,descriptionKey:a.COMMAND_MENU$SECRETS_SETTINGS_DESCRIPTION,keywordsKey:a.COMMAND_MENU$SECRETS_SETTINGS_KEYWORDS,icon:(0,E.jsx)(_,{size:D}),to:O.secretsSettings},{id:`toggle-sidebar`,group:`actions`,titleKey:a.COMMAND_MENU$TOGGLE_SIDEBAR_TITLE,descriptionKey:a.COMMAND_MENU$TOGGLE_SIDEBAR_DESCRIPTION,keywordsKey:a.COMMAND_MENU$TOGGLE_SIDEBAR_KEYWORDS,icon:(0,E.jsx)(v,{size:D}),perform:e}],M=`command-menu-search`,N=`command-menu-results`,P=`command-menu-option`,F=`command-menu`,I=`k`,L=`ArrowDown`,R=`ArrowUp`,z=`Enter`,B=`Escape`,V=``,H=-1;function U(e){return`${P}-${e.id}`}function W({item:e,query:t,translate:n}){let r=t.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);if(r.length===0)return!0;let i=[n(e.titleKey),n(e.descriptionKey),n(e.keywordsKey)].join(` `).toLocaleLowerCase();return r.every(e=>i.includes(e))}function G(){let{t:e}=i(`openhands`),{navigate:t}=h(),n=u(e=>e.isOpen),r=u(e=>e.open),o=u(e=>e.close),[s,c]=T.useState(V),[d,g]=T.useState(0),_=T.useRef(null),v=T.useRef(new Map);T.useEffect(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key.toLocaleLowerCase()===I&&(e.preventDefault(),r())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r]),T.useEffect(()=>{if(!n){c(V),g(0),v.current.clear();return}let e=requestAnimationFrame(()=>_.current?.focus());return()=>cancelAnimationFrame(e)},[n]);let y=T.useMemo(()=>j({toggleSidebar:()=>f.getState().toggleCollapsed()}),[]),b=T.useMemo(()=>y.filter(t=>W({item:t,query:s,translate:t=>e(t)})),[y,s,e]);T.useEffect(()=>{g(e=>b.length===0?H:Math.min(Math.max(e,0),b.length-1))},[b.length]),T.useEffect(()=>{let e=b[d];if(!e)return;let t=v.current.get(e.id);typeof t?.scrollIntoView==`function`&&t.scrollIntoView({block:`nearest`})},[d,b]);let x=T.useCallback(e=>{if(e){if(o(),e.to){t(e.to);return}e.perform?.()}},[o,t]),S=e=>{if(e.key===L){e.preventDefault(),g(e=>b.length===0?e:(e+1)%b.length);return}if(e.key===R){e.preventDefault(),g(e=>b.length===0?e:(e-1+b.length)%b.length);return}if(e.key===z){e.preventDefault(),x(b[d]);return}e.key===B&&(e.preventDefault(),o())};if(!n||typeof document>`u`)return null;let C=b[d];return(0,w.createPortal)((0,E.jsxs)(`div`,{className:`fixed inset-0 z-[70] flex items-start justify-center px-3 pt-[10vh] sm:px-6`,"data-testid":F,role:`dialog`,"aria-modal":`true`,"aria-label":e(a.COMMAND_MENU$ARIA_LABEL),children:[(0,E.jsx)(`button`,{type:`button`,className:`absolute inset-0 cursor-default bg-black/65 backdrop-blur-[2px]`,"aria-label":e(a.COMMAND_MENU$CLOSE_LABEL),onClick:o}),(0,E.jsxs)(`div`,{className:m(`relative flex max-h-[min(720px,78vh)] w-full max-w-2xl flex-col overflow-hidden rounded-2xl`,`border border-[var(--oh-border)] bg-[var(--oh-surface)]`,`shadow-[0_24px_90px_rgba(0,0,0,0.52),0_0_0_1px_rgba(255,255,255,0.03)_inset]`),children:[(0,E.jsxs)(`div`,{className:`relative flex items-center gap-3 border-b border-[var(--oh-border)] px-4 py-3`,children:[(0,E.jsx)(l,{className:`size-5 shrink-0 text-[var(--oh-text-dim)]`}),(0,E.jsx)(`input`,{ref:_,id:M,className:`h-11 min-w-0 flex-1 bg-transparent text-base text-white outline-none placeholder:text-[var(--oh-text-dim)]`,placeholder:e(a.COMMAND_MENU$PLACEHOLDER),"aria-label":e(a.COMMAND_MENU$SEARCH_LABEL),role:`combobox`,"aria-expanded":`true`,"aria-controls":N,"aria-activedescendant":C?U(C):void 0,value:s,onChange:e=>c(e.target.value),onKeyDown:S}),s?(0,E.jsx)(`button`,{type:`button`,className:`inline-flex size-8 items-center justify-center rounded-lg text-[var(--oh-muted)] hover:bg-[var(--oh-surface-raised)] hover:text-white`,"aria-label":e(a.COMMAND_MENU$CLEAR_SEARCH_LABEL),onClick:()=>{c(V),_.current?.focus()},children:(0,E.jsx)(p,{className:`size-4`})}):null,(0,E.jsx)(`kbd`,{className:`hidden rounded-md border border-[var(--oh-border)] bg-black/25 px-2 py-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--oh-text-dim)] sm:inline-flex`,children:e(a.COMMAND_MENU$SHORTCUT)})]}),(0,E.jsx)(`div`,{id:N,role:`listbox`,className:`relative min-h-0 flex-1 overflow-y-auto px-2 py-2 custom-scrollbar`,children:b.length===0?(0,E.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-2 px-6 py-16 text-center`,children:[(0,E.jsx)(`div`,{className:`flex size-11 items-center justify-center rounded-2xl border border-dashed border-[var(--oh-border)] text-[var(--oh-text-dim)]`,children:(0,E.jsx)(l,{className:`size-5`})}),(0,E.jsx)(`p`,{className:`text-sm font-medium text-white`,children:e(a.COMMAND_MENU$NO_RESULTS_TITLE)}),(0,E.jsx)(`p`,{className:`max-w-sm text-xs leading-5 text-[var(--oh-muted)]`,children:e(a.COMMAND_MENU$NO_RESULTS_DESCRIPTION)})]}):A.map(t=>{let n=b.filter(e=>e.group===t);return n.length===0?null:(0,E.jsxs)(`section`,{className:`py-1`,children:[(0,E.jsx)(`div`,{className:`px-3 pb-1 pt-2 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--oh-text-dim)]`,children:e(k[t])}),(0,E.jsx)(`div`,{className:`space-y-1`,children:n.map(t=>{let n=b.indexOf(t),r=n===d,i=t.to,o=e=>{e?v.current.set(t.id,e):v.current.delete(t.id)},s=m(`group flex w-full items-center gap-3 rounded-xl px-3 py-2.5 text-left transition-colors duration-150`,r?`bg-white/[0.09] text-white shadow-[0_0_0_1px_rgba(255,255,255,0.08)_inset]`:`text-[var(--oh-muted)] hover:bg-white/[0.05] hover:text-white`),c=(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(`span`,{className:m(`flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors duration-150`,r?`border-[var(--oh-accent)] bg-[var(--oh-accent)]/15 text-white`:`border-[var(--oh-border)] bg-black/15 text-[var(--oh-text-dim)] group-hover:text-white`),"aria-hidden":`true`,children:t.icon}),(0,E.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,E.jsx)(`span`,{className:`block truncate text-sm font-medium text-current`,children:e(t.titleKey)}),(0,E.jsx)(`span`,{className:`mt-0.5 block truncate text-xs text-[var(--oh-text-dim)]`,children:e(t.descriptionKey)})]}),(0,E.jsx)(`span`,{className:`hidden shrink-0 rounded-md border border-[var(--oh-border)] px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.14em] text-[var(--oh-text-dim)] sm:inline-flex`,children:e(i?a.COMMAND_MENU$GO_HINT:a.COMMAND_MENU$RUN_HINT)})]});return i?(0,E.jsx)(`a`,{ref:o,id:U(t),href:i,role:`option`,"aria-selected":r,onMouseEnter:()=>g(n),onClick:e=>{e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),x(t))},className:s,children:c},t.id):(0,E.jsx)(`button`,{ref:o,id:U(t),type:`button`,role:`option`,"aria-selected":r,onMouseEnter:()=>g(n),onClick:()=>x(t),className:s,children:c},t.id)})})]},t)})}),(0,E.jsx)(`div`,{className:`border-t border-[var(--oh-border)] px-4 py-2.5 text-[11px] text-[var(--oh-text-dim)]`,children:e(a.COMMAND_MENU$FOOTER_HINT)})]})]}),document.body)}export{G as CommandMenu};
@@ -1 +1 @@
1
- import{t as e}from"./react-Dn-iWFF5.js";var t=e(e=>({commands:[],appendInput:t=>e(e=>({commands:[...e.commands,{content:t,type:`input`}]})),appendOutput:t=>e(e=>({commands:[...e.commands,{content:t,type:`output`}]})),clearTerminal:()=>e({commands:[]})}));export{t};
1
+ import{t as e}from"./react-DPDgL6du.js";var t=e(e=>({commands:[],appendInput:t=>e(e=>({commands:[...e.commands,{content:t,type:`input`}]})),appendOutput:t=>e(e=>({commands:[...e.commands,{content:t,type:`output`}]})),clearTerminal:()=>e({commands:[]})}));export{t};
@@ -0,0 +1 @@
1
+ import{bt as e}from"./vendor-styling-CI0PQ3ab.js";import{L as t}from"./vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~byh8a1g4-XNPdpuO8.js";import{t as n}from"./sdk-section-page-BUXONTx6.js";var r=e();function i(){return(0,r.jsx)(n,{settingsSources:[{settingsSource:`agent_settings`,sectionKeys:[`condenser`]}],testId:`condenser-settings-screen`})}var a=t(i);export{a as default};
@@ -0,0 +1 @@
1
+ import{bt as e}from"./vendor-styling-CI0PQ3ab.js";import{t}from"./useTranslation-Cgy4JA_g.js";import{t as n}from"./declaration-B9kpCaYl.js";import{t as r}from"./modal-backdrop-zVwfOJZr.js";import{t as i}from"./brand-button-DKPMEKcW.js";var a=e();function o({text:e,onConfirm:o,onCancel:s,isConfirming:c=!1}){let{t:l}=t(`openhands`);return(0,a.jsx)(r,{onClose:c?void 0:s,closeOnEscape:!c,children:(0,a.jsxs)(`div`,{"data-testid":`confirmation-modal`,className:`bg-base-secondary p-4 rounded-xl flex flex-col gap-4 border border-[var(--oh-border)]`,children:[(0,a.jsx)(`p`,{children:e}),(0,a.jsxs)(`div`,{className:`w-full flex justify-end gap-2`,children:[(0,a.jsx)(i,{testId:`cancel-button`,type:`button`,onClick:s,variant:`secondary`,isDisabled:c,children:l(n.BUTTON$CANCEL)}),(0,a.jsx)(i,{testId:`confirm-button`,type:`button`,onClick:o,variant:`primary`,isDisabled:c,children:l(n.BUTTON$CONFIRM)})]})]})})}export{o as t};
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime-BFRubm34.js";import{Ct as e,bt as t}from"./vendor-styling-CI0PQ3ab.js";import{t as n}from"./utils-CE0lDWtb.js";import{a as r,s as i}from"./dropdown-classes-CgQ45JmQ.js";import{t as a}from"./dist-CodhvuAP.js";e();var o=t(),s=a(`z-50 overflow-hidden text-[var(--oh-foreground)]`,{variants:{theme:{default:`absolute rounded-md border border-[var(--oh-border-subtle)] bg-tertiary px-1 py-1 shadow-lg`,naked:`relative`,popover:`relative rounded-md border border-[var(--oh-border-subtle)] bg-tertiary px-1 py-1 shadow-lg`},size:{compact:`py-1 px-1`,default:``},layout:{vertical:n(`flex flex-col`,r)},position:{top:`bottom-full`,bottom:`top-full`,none:``},spacing:{default:`mt-2`,none:``},alignment:{left:`left-0`,right:`right-0`,none:``}},compoundVariants:[{theme:`naked`,className:`shadow-none`}],defaultVariants:{theme:`default`,size:`default`,layout:`vertical`,spacing:`default`}});function c({testId:e,children:t,className:r,style:i,ref:a,theme:c,size:l,layout:u,position:d,spacing:f,alignment:p}){return(0,o.jsx)(`ul`,{"data-testid":e,"data-position":d,ref:a,style:i,className:n(s({theme:c,size:l,layout:u,position:d,spacing:f,alignment:p}),r),children:t})}function l({children:e,testId:t,onClick:r,isDisabled:a,className:s}){return(0,o.jsx)(`button`,{"data-testid":t||`context-menu-list-item`,type:`button`,onClick:r,disabled:a,className:n(i,`text-nowrap`,s),children:e})}export{c as n,l as t};
@@ -0,0 +1,19 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/files-tab-DHqtsKLy.js","assets/rolldown-runtime-BFRubm34.js","assets/vendor-styling-CI0PQ3ab.js","assets/active-backend-context-DRFevVIj.js","assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~ncdxw0bh-ClHnt5lR.js","assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~d1e18dtv-5Q6lQJdE.js","assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~i3v2mlbw-BrJQ3XZH.js","assets/createLucideIcon-CVAsW2Yo.js","assets/declaration-B9kpCaYl.js","assets/agent-server-client-options-DVLRd9sw.js","assets/utils-CE0lDWtb.js","assets/common-Dh7OqABE.js","assets/vendor~files-tab-B02k3xvx.js","assets/iconBase-DaTRRUjy.js","assets/vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~enjl5xdm-mMKDm94D.js","assets/useQuery-CpjHYtZc.js","assets/suspense-X5dBsJzn.js","assets/mouse-pointer-click-PdEQPL6v.js","assets/useTranslation-Cgy4JA_g.js","assets/vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-d8aETPbZ.js","assets/vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-9UMeuPV6.js","assets/objectWithoutPropertiesLoose-BgYIAs2y.js","assets/vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-D7EUmQ8Y.js","assets/vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DTzw2x50.js","assets/vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CqXiHwjU.js","assets/vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BD0GaRGa.js","assets/react-DPDgL6du.js","assets/agent-server-conversation-service.api-DfH2k6Sx.js","assets/vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~automations-~ki5qnp0d-DJHl5b-B.js","assets/v4-DbCkTSoU.js","assets/proxy-CHmFkV16.js","assets/profiles-service.api-CeYEmSM3.js","assets/settings-service.api-DldkFI1x.js","assets/settings-mQUckT0g.js","assets/llm-subscription-service-CKyaV24y.js","assets/llm-subscription-DtsX5Lhg.js","assets/acp-providers-D_D8VUpP.js","assets/use-event-store-YSOxy9FC.js","assets/runtime-waiting-state-DkzLgvMn.js","assets/loading-spinner-DHAIPZkP.js","assets/typography-YGPBGzOG.js","assets/dist-CodhvuAP.js","assets/conversation-tab-empty-state-m8IUkfMj.js","assets/segmented-toggle-Cen5AMUc.js","assets/markdown-renderer-D8mayGjI.js","assets/vendor~root-layout~home~conversation-panel~conversation~shared-conversation~alert-banner~pl~rqjteh0a-CZM4hwUT.js","assets/copy-to-clipboard-button-Aj9wFmt2.js","assets/checkmark-h7udgXMM.js","assets/copy-BLmGeJcd.js","assets/use-active-conversation-DvcFBqFe.js","assets/conversation-service.api-Ch9kR9aE.js","assets/navigation-context-DPs2G0X8.js","assets/use-user-conversation-BPHQ-dm-.js","assets/use-agent-state-BvRcEzY4.js","assets/conversation-state-store-B2Bp32XI.js","assets/use-runtime-is-ready-CBFe69Ew.js","assets/files-tab-store-DJsPxYdg.js","assets/folder-mMWFvaw0.js","assets/get-language-from-path-CPNnuVhI.js","assets/link-external-DfKQroKX.js","assets/conversation-local-storage-F6zVMM--.js","assets/git-status-mapper-BI8FyUVp.js","assets/browser-tab-aiDg7aEn.js","assets/external-link-D2zJjE9G.js","assets/vendor~browser-tab-Di0kh5Zw.js","assets/browser-store-BI6uklCG.js","assets/planner-tab-G4j36bJk.js","assets/list-todo-BfH6yYUK.js","assets/plan-components-j9X4AxYM.js","assets/brand-button-DKPMEKcW.js","assets/form-control-classes-9rkU4usZ.js","assets/use-handle-plan-click-cAXS-Hft.js","assets/use-create-conversation-CvAXfA3T.js","assets/useMutation-DCE9RcgK.js","assets/use-agent-profiles-DnH16_Vm.js","assets/plugins-management-service-BAp70KN7.js","assets/use-llm-profiles-BcLibtGb.js","assets/use-tracking-CqODdfO4.js","assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~nn5zty47-Zl0G1QCy.js","assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~k6tszsdc-Bb-xMtbv.js","assets/use-settings-B07msZ2Z.js","assets/conversation-store-LptbOvKa.js","assets/middleware-DYHYNAnP.js","assets/task-list-tab-BAThr9Ex.js","assets/use-task-list-CmWGElgb.js","assets/u-check-circle-half-LiwZkuFe.js","assets/u-check-circle-BqoIxNz_.js","assets/terminal-B0aL_iDZ.js","assets/vendor~terminal-aeP3PnKf.js","assets/vendor~terminal-T4IDBjWs.css","assets/square-chevron-right-Czw3FFWc.js","assets/command-store-D8J5LMW1.js"])))=>i.map(i=>d[i]);
2
+ import{a as e}from"./rolldown-runtime-BFRubm34.js";import{Ct as t,St as n,_t as r,bt as i,et as a,gt as o,h as s,o as c,xt as l}from"./vendor-styling-CI0PQ3ab.js";import{A as u,L as d,M as f,k as p}from"./vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~byh8a1g4-XNPdpuO8.js";import{n as m}from"./vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~i3v2mlbw-BrJQ3XZH.js";import{a as h,c as g,f as _,i as v,u as y}from"./path-utils-CBaRYg35.js";import{n as b,r as x}from"./vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~d1e18dtv-5Q6lQJdE.js";import{t as S}from"./useMutation-DCE9RcgK.js";import{t as C}from"./useQuery-CpjHYtZc.js";import{t as w}from"./Trans-De9RwQhA.js";import{t as T}from"./useTranslation-Cgy4JA_g.js";import{t as E}from"./declaration-B9kpCaYl.js";import{A as D,j as O,k,n as A}from"./active-backend-context-DRFevVIj.js";import{t as j}from"./createLucideIcon-CVAsW2Yo.js";import{a as M,c as ee,d as te,f as N,g as P,h as F,i as ne,l as re,m as ie,n as I,o as L,p as ae,r as R,s as oe,t as se,u as ce}from"./messages-C4KEFkPk.js";import{t as le}from"./check-Bvi71siz.js";import{n as ue,t as z}from"./vendor~root-layout~conversation-panel~conversation-CpiTHpHl.js";import{t as de}from"./copy-3JCw_XFB.js";import{t as fe}from"./external-link-D2zJjE9G.js";import{t as B}from"./list-todo-BfH6yYUK.js";import{t as pe}from"./loader-circle-BEykUKYG.js";import{t as me}from"./square-chevron-right-Czw3FFWc.js";import{t as he}from"./x-Cb0WAtak.js";import{A as ge,C as V,E as _e,I as ve,S as H,T as ye,b as be,c as xe,d as Se,h as Ce,l as we,o as Te,t as U,u as Ee,w as De,x as Oe}from"./utils-CE0lDWtb.js";import{t as ke}from"./common-Dh7OqABE.js";import{c as Ae,i as je}from"./agent-server-client-options-DVLRd9sw.js";import{t as Me}from"./proxy-CHmFkV16.js";import{t as Ne}from"./modal-backdrop-zVwfOJZr.js";import{n as Pe}from"./modal-body-Dcu5McCa.js";import{r as Fe}from"./base-modal-CC5Pp8CF.js";import{t as Ie}from"./brand-button-DKPMEKcW.js";import{t as Le}from"./loading-spinner-DHAIPZkP.js";import{n as Re}from"./navigation-context-DPs2G0X8.js";import{t as ze}from"./styled-tooltip-DsKsFjuq.js";import{r as Be,u as Ve}from"./dropdown-classes-CgQ45JmQ.js";import{_ as He,f as Ue,h as We,n as Ge,p as Ke,s as qe}from"./git-provider-icon-CGU7_KiU.js";import{t as Je}from"./react-DPDgL6du.js";import{n as Ye}from"./middleware-DYHYNAnP.js";import{i as Xe,s as Ze}from"./conversation-local-storage-F6zVMM--.js";import{t as W}from"./conversation-store-LptbOvKa.js";import{t as Qe}from"./modal-close-button-CTCX4nCH.js";import{r as $e}from"./use-settings-B07msZ2Z.js";import{t as et}from"./use-tracking-CqODdfO4.js";import{t as tt}from"./v4-DbCkTSoU.js";import{a as nt,i as rt,t as it}from"./agent-server-conversation-service.api-DfH2k6Sx.js";import{t as at}from"./use-is-authed-_dhQ2Xuj.js";import{c as ot,d as st,f as ct,i as lt,l as ut,n as dt,r as ft,s as pt,t as mt,u as ht}from"./sidebar-mobile-menu-toggle-CaV3tQFF.js";import{t as gt}from"./use-click-outside-element-Bf4Omzot.js";import{t as _t}from"./use-create-conversation-CvAXfA3T.js";import{r as vt,t as yt}from"./conversation-service.api-Ch9kR9aE.js";import{n as bt,t as G}from"./context-menu-list-item-DBFzplWW.js";import{i as K,r as xt,t as St}from"./ellipsis-button-1BV9Sga8.js";import{t as Ct}from"./u-edit-DJ90xc8Z.js";import{t as wt}from"./skills-9cDZONKh.js";import{t as Tt}from"./use-user-conversation-BPHQ-dm-.js";import{t as Et}from"./conversation-state-store-B2Bp32XI.js";import{t as Dt}from"./copy-BLmGeJcd.js";import{r as Ot}from"./typography-YGPBGzOG.js";import{C as kt,D as At,E as jt,I as Mt,L as Nt,M as Pt,N as Ft,O as It,P as Lt,S as Rt,T as zt,V as Bt,_ as Vt,a as Ht,b as Ut,f as Wt,g as Gt,h as Kt,i as qt,j as Jt,k as Yt,m as Xt,n as Zt,o as Qt,p as $t,r as en,t as tn,v as nn,w as rn,x as an,y as on,z as sn}from"./llm-not-configured-banner-DTrLsVr_.js";import{n as q,r as cn,t as J}from"./use-active-conversation-DvcFBqFe.js";import{t as Y}from"./use-agent-state-BvRcEzY4.js";import{a as ln,c as un,d as dn,f as fn,h as pn,l as mn,m as X,n as hn,p as gn,r as _n,s as vn,u as yn}from"./lesson-plan-HD886V64.js";import{D as bn,c as xn,l as Sn,m as Cn,t as Z}from"./use-event-store-YSOxy9FC.js";import{t as wn}from"./command-store-D8J5LMW1.js";import{t as Tn}from"./use-runtime-is-ready-CBFe69Ew.js";import{r as En}from"./plan-components-j9X4AxYM.js";import{t as Dn}from"./use-breakpoint-B-O0lQ84.js";import{t as On}from"./use-task-list-CmWGElgb.js";import{t as kn}from"./vendor~conversation-panel~conversation~alert-banner-DHDkknt5.js";var An=j(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),jn=j(`share-2`,[[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}],[`circle`,{cx:`6`,cy:`12`,r:`3`,key:`w7nqdw`}],[`circle`,{cx:`18`,cy:`19`,r:`3`,key:`1xt0gg`}],[`line`,{x1:`8.59`,x2:`15.42`,y1:`13.51`,y2:`17.49`,key:`47mynk`}],[`line`,{x1:`15.41`,x2:`8.59`,y1:`6.51`,y2:`10.49`,key:`1n3mei`}]]),Mn=e=>!e.isLayoutDirty&&e.willUpdate(!1);function Nn(){let e=new Set,t=new WeakMap,n=()=>e.forEach(Mn);return{add:r=>{e.add(r),t.set(r,r.addEventListener(`willUpdate`,n))},remove:r=>{e.delete(r);let i=t.get(r);i&&(i(),t.delete(r)),n()},dirty:n}}var Q=i(),$=e(t(),1),Pn=(0,$.createContext)(null);function Fn(){let e=(0,$.useRef)(!1);return o(()=>(e.current=!0,()=>{e.current=!1}),[]),e}function In(){let e=Fn(),[t,n]=(0,$.useState)(0),r=(0,$.useCallback)(()=>{e.current&&n(t+1)},[t]);return[(0,$.useCallback)(()=>a.postRender(r),[r]),t]}var Ln=e=>e===!0,Rn=e=>Ln(e===!0)||e===`id`,zn=({children:e,id:t,inherit:n=!0})=>{let i=(0,$.useContext)(r),a=(0,$.useContext)(Pn),[o,s]=In(),c=(0,$.useRef)(null),l=i.id||a;c.current===null&&(Rn(n)&&l&&(t=t?l+`-`+t:l),c.current={id:t,group:Ln(n)&&i.group||Nn()});let u=(0,$.useMemo)(()=>({...c.current,forceRender:o}),[s]);return(0,Q.jsx)(r.Provider,{value:u,children:e})},Bn={curAgentState:V.LOADING},Vn=Je(e=>({...Bn,setCurrentAgentState:t=>e({curAgentState:t}),reset:()=>e(Bn)})),Hn=`openhands-last-conversation-by-backend`;function Un(e,t){return t?`${e}::${t}`:e}function Wn(){if(typeof window>`u`)return{};try{let e=window.localStorage.getItem(Hn);if(!e)return{};let t=JSON.parse(e);if(typeof t!=`object`||!t)return{};let n={};for(let[e,r]of Object.entries(t))typeof r==`string`&&r.length>0&&(n[e]=r);return n}catch{return{}}}function Gn(e){if(!(typeof window>`u`))try{window.localStorage.setItem(Hn,JSON.stringify(e))}catch{}}function Kn(e,t,n){if(!n)return;let r=Wn();r[Un(e,t)]=n,Gn(r)}function qn(e,t){let n=Wn(),r=Un(e,t);r in n&&(delete n[r],Gn(n))}var Jn=e=>({action:F.CHANGE_AGENT_STATE,args:{agent_state:e}}),Yn=e=>`error`in e,Xn=e=>`type`in e&&e.type===`error`,Zn=()=>{let{send:e}=ie(),t=Z(e=>e.events);$.useEffect(()=>{if(!t.length)return;let n=t[t.length-1];if(!(Sn(n)&&xn(n))){if(Yn(n)){if(n.error_code===401){D(`Session expired.`);return}typeof n.error==`string`?D(n.error):D(n.message);return}Xn(n)&&`${n.message??``}`.startsWith(`Agent reached maximum`)&&e(Jn(V.PAUSED))}},[t.length])},Qn=()=>{let{curAgentState:e}=Y();return{runtimeActive:!De.includes(e)}};function $n({children:e}){return Zn(),Qn(),e}var er=`ACPAuthRequired`,tr={ACPAuthRequired:E.ERROR$ACP_AUTH_REQUIRED_TITLE,ACPSpawnError:E.CHAT_INTERFACE$AGENT_ERROR_MESSAGE,ACPInitError:E.CHAT_INTERFACE$AGENT_ERROR_MESSAGE,ACPPromptError:E.CHAT_INTERFACE$AGENT_ERROR_MESSAGE,UsagePolicyRefusal:E.CHAT_INTERFACE$AGENT_ERROR_MESSAGE};function nr(e){return e?tr[e]??null:null}function rr(e){return e===er}var ir={entriesByConversation:{}},ar=(e,t,n)=>({entriesByConversation:{...e.entriesByConversation,[t]:n(e.entriesByConversation[t]??[])}}),or=Je()(Ye(e=>({...ir,addPending:(t,n)=>{let r=tt();return e(e=>ar(e,t,e=>[...e,{id:r,question:n,status:`pending`}])),r},resolve:(t,n,r)=>e(e=>ar(e,t,e=>e.map(e=>e.id===n?{...e,response:r,status:`done`}:e))),fail:(t,n,r)=>e(e=>ar(e,t,e=>e.map(e=>e.id===n?{...e,response:r,status:`error`}:e))),dismiss:(t,n)=>e(e=>ar(e,t,e=>e.filter(e=>e.id!==n)))}),{name:`BtwStore`}));function sr({onClick:e}){let{t}=T(`openhands`);return(0,Q.jsxs)(`button`,{type:`button`,onClick:e,className:`flex items-center gap-1.5 px-3 py-1 rounded-full text-xs font-normal text-success bg-success/10 hover:bg-success/20 border border-success/30 transition-colors`,children:[(0,Q.jsx)(te,{className:`w-3.5 h-3.5 fill-success`}),(0,Q.jsx)(`span`,{children:t(E.CHAT_INTERFACE$BTW_GOT_IT)})]})}function cr({conversationId:e}){let{t}=T(`openhands`),n=or(e=>e.entriesByConversation),r=or(e=>e.dismiss),i=e?n[e]??[]:[];return!e||i.length===0?null:(0,Q.jsx)(`div`,{"data-testid":`btw-messages`,className:`flex flex-col w-full`,children:i.map(n=>{let i=n.status===`pending`;return(0,Q.jsx)(N,{title:(0,Q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`opacity-60`,children:t(E.CHAT_INTERFACE$BTW_PREFIX)}),(0,Q.jsx)(`span`,{children:n.question}),i&&(0,Q.jsx)(`span`,{"data-testid":`btw-spinner`,className:`inline-block w-3.5 h-3.5 ml-2 rounded-full border-2 border-transparent border-t-[var(--oh-border-input)] animate-spin`})]}),details:i?t(E.CHAT_INTERFACE$BTW_WAITING_FOR_ANSWER):n.response??``,initiallyExpanded:!i,chevronPosition:`before`,titleTrailing:!i&&(0,Q.jsx)(sr,{onClick:()=>r(e,n.id)})},n.id)})})}function lr({conversationId:e}){let t=gn(e=>e.statusByConversation),n=e?t[e]:void 0;return n?.active?(0,Q.jsx)(ce,{status:n}):null}var ur=`${_e} `,dr=(e,t)=>{let n=or(e=>e.addPending),r=or(e=>e.resolve),i=or(e=>e.fail);return(0,$.useCallback)(a=>{let o=a.trim(),s=o===`/btw`||o.startsWith(ur);if(!e||!s){t(a);return}let c=o.slice(_e.length).trim();if(!c)return;let l=n(e,c);v(e,c).then(({response:t})=>r(e,l,t)).catch(t=>i(e,l,t?.message??`Failed to ask agent`))},[e,t,n,r,i])},fr=`${ge} `,pr=/^--max(?:=|\s+)(\d+)\s*/,mr=(e,t)=>{let{t:n}=T();return(0,$.useCallback)(r=>{let i=r.trim(),a=i===`/goal`||i.startsWith(fr);if(!e||!a){t(r);return}let o=i.slice(ge.length).trim(),s,c=o.match(pr);c&&(s=parseInt(c[1],10),o=o.slice(c[0].length).trim());let l=o;if(!l){D(n(E.GOAL$OBJECTIVE_REQUIRED));return}let u={objective:l};s&&s>=1&&(u.max_iterations=s),y(e,u).catch(e=>{let t=n(E.GOAL$START_FAILED);D(e instanceof Error&&e.message?e.message:t)})},[e,t,n])},hr=`flex flex-row gap-1 items-center justify-center rounded-[100px]`;function gr(e){return U(hr,e?`bg-[var(--oh-surface)] hover:bg-tertiary cursor-pointer text-white`:`bg-[var(--oh-surface)] cursor-not-allowed opacity-50 text-[var(--oh-muted)]`)}function _r(e){return e?`white`:`var(--oh-muted)`}var vr=`font-normal text-sm leading-5 truncate`;function yr({onSuggestionsClick:e,hasRepository:t,providerTokensReady:n,isConversationReady:r=!0}){let{t:i}=T(`openhands`),{trackPullButtonClick:a}=et(),o=n&&t&&r;return(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{a(),e(xe())},disabled:!o,className:U(gr(o),`px-0.5 py-1 w-[76px] min-w-[76px]`),children:[(0,Q.jsx)(`div`,{className:`w-3 h-3 flex items-center justify-center`,children:(0,Q.jsx)(At,{width:12,height:12,color:_r(o)})}),(0,Q.jsx)(`div`,{className:U(vr,`max-w-[76px]`),title:i(E.COMMON$PULL),children:i(E.COMMON$PULL)})]})}function br({onSuggestionsClick:e,hasRepository:t,providerTokensReady:n,currentGitProvider:r,isConversationReady:i=!0}){let{t:a}=T(`openhands`),{trackPushButtonClick:o}=et(),s=n&&t&&i;return(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{o(),e(we(r))},disabled:!s,className:U(gr(s),`px-2 py-1 w-[77px] min-w-[77px]`),children:[(0,Q.jsx)(`div`,{className:`w-3 h-3 flex items-center justify-center`,children:(0,Q.jsx)(It,{width:12,height:12,color:_r(s)})}),(0,Q.jsx)(`div`,{className:U(vr,`max-w-[77px]`),title:a(E.COMMON$PUSH),children:a(E.COMMON$PUSH)})]})}function xr({onSuggestionsClick:e,hasRepository:t,providerTokensReady:n,currentGitProvider:r,isConversationReady:i=!0}){let{t:a}=T(`openhands`),{trackCreatePrButtonClick:o}=et(),s=n&&t&&i;return(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{o(),e(Te(r))},disabled:!s,className:U(gr(s),`px-2 py-1 w-[126px] min-w-[126px] h-7`),children:[(0,Q.jsx)(`div`,{className:`w-3 h-3 flex items-center justify-center`,children:(0,Q.jsx)(jt,{width:12,height:12,color:_r(s)})}),(0,Q.jsx)(`div`,{className:U(vr,`max-w-[126px]`),title:a(E.COMMON$PULL_REQUEST),children:a(E.COMMON$PULL_REQUEST)})]})}function Sr(e){return e.kind===`BashCommand`}function Cr(e){return e.kind===`BashOutput`}function wr(e){return e.kind===`BashError`}function Tr(e,t,n){let r=(0,$.useRef)(null),i=(0,$.useRef)([]),a=(0,$.useRef)([]),o=(0,$.useRef)(new Map);return(0,$.useEffect)(()=>{if(!n)return;let s=je(e,t),c=new WebSocket(s);r.current=c,c.onopen=()=>{for(let{command:e,cwd:t,timeout:n,resolve:r,reject:o}of i.current)a.current.push({resolve:r,reject:o}),c.send(JSON.stringify({command:e,cwd:t,timeout:n}));i.current=[]},c.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}if(Sr(t)){let e=a.current.shift();e&&o.current.set(t.id,{...e,stdout:[],stderr:[]})}else if(Cr(t)&&t.command_id){let e=o.current.get(t.command_id);e&&(t.stdout&&e.stdout.push(t.stdout),t.stderr&&e.stderr.push(t.stderr),t.exit_code!=null&&(o.current.delete(t.command_id),e.resolve({exit_code:t.exit_code,stdout:e.stdout.join(``),stderr:e.stderr.join(``)})))}else wr(t)&&l(`Bash error: ${t.code}: ${t.detail}`)};function l(e){let t=Error(e);for(let{reject:e}of i.current)e(t);i.current=[];for(let e of a.current)e.reject(t);a.current=[];for(let e of o.current.values())e.reject(t);o.current.clear()}return c.onclose=()=>{r.current=null,l(`Bash WebSocket closed`)},c.onerror=()=>{r.current=null,l(`Bash WebSocket error`)},()=>{c.onclose=null,c.onerror=null,c.close(),r.current=null,l(`Bash WebSocket unmounted`)}},[n,e,t]),(0,$.useCallback)((e,t,n)=>new Promise((o,s)=>{let c=r.current;if(!c||c.readyState===WebSocket.CLOSED||c.readyState===WebSocket.CLOSING){s(Error(`Bash WebSocket not available`));return}c.readyState===WebSocket.CONNECTING?i.current.push({command:e,cwd:t,timeout:n,resolve:o,reject:s}):(a.current.push({resolve:o,reject:s}),c.send(JSON.stringify({command:e,cwd:t,timeout:n})))}),[])}var Er={"github.com":`github`,"gitlab.com":`gitlab`,"bitbucket.org":`bitbucket`,"dev.azure.com":`azure_devops`};function Dr(e){return e.replace(/\.git$/,``)}function Or(e){return e?Er[e.toLowerCase()]??null:null}function kr(e){let t=e.split(`/`).filter(Boolean),n=t.indexOf(`_git`);return n===-1?t.join(`/`):[...t.slice(0,n),...t.slice(n+1)].join(`/`)}function Ar(e,t,n){let r=Dr(n.replace(/^\/+/,``)),i=Or(t);return{url:e,host:t,repository:(i===`azure_devops`?kr(r):r)||null,provider:i}}function jr(e){let t=e?.trim();if(!t)return null;let n=t.match(/^[^@\s]+@([^:\s]+):(.+)$/);if(n){let e=n[1];return Ar(t,e,n[2])}try{let e=new URL(t);return Ar(t,e.hostname||null,e.pathname)}catch{return null}}var Mr={repository:null,branch:null,provider:null,remoteUrl:null},Nr=[`r=$(git remote get-url origin 2>/dev/null)`,`b=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)`,`if [ -z "$r$b" ]; then`,`n=$(find . -mindepth 2 -maxdepth 4 -name .git 2>/dev/null | cut -c3- | sed 's|/.git$||' | sort -u)`,`c=$(printf '%s\\n' "$n" | grep -c '[^[:space:]]')`,`if [ "$c" = "1" ] && [ -n "$n" ]; then`,`r=$(git -C "$n" remote get-url origin 2>/dev/null)`,`b=$(git -C "$n" rev-parse --abbrev-ref HEAD 2>/dev/null)`,`fi`,`fi`,`printf '%s\\n%s' "$r" "$b"`].join(`
3
+ `);async function Pr(e,t){let n=await e(Nr,t,10);if(n.exit_code!==0)return Mr;let r=n.stdout.indexOf(`
4
+ `),i=(r>=0?n.stdout.slice(0,r):n.stdout).trim(),a=(r>=0?n.stdout.slice(r+1):``).trim(),o=a&&a!==`HEAD`?a:null;if(!i&&!o)return Mr;let s=jr(i);return{repository:s?.repository??null,provider:s?.provider??null,remoteUrl:i||null,branch:o}}var Fr=()=>{let{data:e}=J(),t=Tn(),{backend:n}=A(),r=n.kind===`local`,i=e?.id,a=e?.conversation_url,o=e?.session_api_key,s=e?.workspace?.working_dir?.trim(),c=!!e?.selected_repository,l=!!e?.git_provider,u=!!e?.selected_branch,d=r&&t&&!!i&&!!s&&(!c||!l||!u),f=Tr(a,o,d),p=(0,$.useRef)(f);return p.current=f,C({queryKey:[`local-git-info`,i,a,o,s],queryFn:async()=>Pr((e,t,n)=>p.current(e,t,n),s),enabled:d,retry:!1,staleTime:1e4,refetchInterval:1e4,gcTime:1e3*60*5,meta:{disableToast:!0}})},Ir=()=>{let e=m(),{t}=T(`openhands`);return S({mutationFn:e=>it.updateConversationRepository(e.conversationId,e.repository,e.branch,e.gitProvider),onMutate:async t=>{let n=[`user`,`conversation`,t.conversationId];await e.cancelQueries({queryKey:n});let r=e.getQueriesData({queryKey:n});return e.setQueriesData({queryKey:n},e=>e&&{...e,selected_repository:t.repository,selected_branch:t.branch??null,git_provider:t.gitProvider??null}),{previousEntries:r}},onError:(n,r,i)=>{i?.previousEntries.forEach(([t,n])=>{e.setQueryData(t,n)}),D(t(E.CONVERSATION$FAILED_TO_UPDATE_REPOSITORY))},onSuccess:()=>{O(t(E.CONVERSATION$REPOSITORY_UPDATED))},onSettled:(t,n,r)=>{e.invalidateQueries({queryKey:[`user`,`conversation`,r.conversationId]}),e.invalidateQueries({queryKey:[`user`,`conversations`]}),e.invalidateQueries({queryKey:[`local-git-info`,r.conversationId]})}})};function Lr({children:e,tooltipMessage:t,testId:n,shouldShowTooltip:r}){return r?(0,Q.jsx)(ze,{content:t,placement:`top`,showArrow:!0,tooltipClassName:`bg-white text-black`,children:(0,Q.jsx)(`span`,{"data-testid":n,className:`hover:opacity-100`,children:e})}):e}function Rr({isOpen:e,onClose:t,onLaunch:n,defaultProvider:r=`github`}){let{t:i}=T(`openhands`),{providers:a}=qe(),[o,s]=(0,$.useState)(null),[c,l]=(0,$.useState)(null),[u,d]=(0,$.useState)(null);(0,$.useEffect)(()=>{a.length===1&&!o?s(a[0]):a.length>1&&!o&&r&&a.includes(r)&&s(r)},[a,o,r]);let f=(0,$.useCallback)(e=>{e!==o&&(s(e),l(null),d(null))},[o]),p=(0,$.useCallback)(e=>{e?(l(e),d(null)):(l(null),d(null))},[]),m=(0,$.useCallback)(e=>{d(e)},[]),h=()=>{!c||!u||(n(c,u),l(null),d(null),t())},g=()=>{s(null),l(null),d(null),t()};if(!e)return null;let _=c?.git_provider||o||r,v=!!c&&!!u;return(0,Q.jsx)(Ne,{onClose:g,children:(0,Q.jsxs)(Pe,{width:`sm`,className:`relative items-start border border-[var(--oh-border)] !gap-4`,children:[(0,Q.jsx)(Qe,{onClose:g,testId:`close-open-repository-modal`}),(0,Q.jsx)(`div`,{className:`w-full pr-6`,children:(0,Q.jsx)(Fe,{title:i(E.CONVERSATION$OPEN_REPOSITORY)})}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4 w-full`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsx)(`span`,{className:`text-sm text-white font-normal leading-[22px]`,children:i(E.CONVERSATION$SELECT_OR_INSERT_LINK)}),a.length>1&&(0,Q.jsx)(Qt,{providers:a,value:o,onChange:f})]}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-[10px] w-full`,children:[(0,Q.jsx)(qt,{provider:_,value:c?.id||null,repositoryName:c?.full_name||null,onChange:p,className:`w-full`}),(0,Q.jsx)(Ht,{repository:c?.full_name||null,provider:_,selectedBranch:u,onBranchSelect:m,defaultBranch:c?.main_branch||null,disabled:!c,className:`w-full`})]})]}),(0,Q.jsxs)(`div`,{className:`flex justify-end gap-2 w-full`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(Ie,{type:`button`,variant:`secondary`,onClick:g,children:i(E.BUTTON$CANCEL)}),(0,Q.jsx)(Ie,{type:`button`,variant:`primary`,onClick:h,isDisabled:!v,children:i(E.BUTTON$LAUNCH)})]})]})})}function zr({onSuggestionsClick:e}){let{t}=T(`openhands`),{conversationId:n}=q(),[r,i]=(0,$.useState)(!1),[a,o]=(0,$.useState)(!1),s=(0,$.useRef)(null),{addRecentRepository:c}=Ge(),l=X(e=>e.enqueuePendingMessage),u=X(e=>e.markPendingMessageError),{backend:d}=A(),f=d.kind===`local`,{providers:p}=qe(),m=f||p.length>0,{data:h}=J(),{repositoryInfo:g}=Ft(),{data:_}=Fr(),v=sn(),y=_n()?.isLoadingHistory??!1,b=(0,$.useRef)(v);(0,$.useEffect)(()=>{b.current=v},[v]);let{send:x}=ie(),S=(0,$.useRef)(x);(0,$.useEffect)(()=>{S.current=x},[x]);let C=ee(),{mutate:w}=Ir(),{mutate:O,isPending:k}=_t(),j=h?.selected_repository||g?.selectedRepository,M=h?.git_provider||g?.gitProvider,te=h?.selected_branch||g?.selectedBranch,N=j||_?.repository||void 0,P=M||_?.provider,F=te||_?.branch||void 0,ne=(h?.id?nt(h.id):null)?.selected_workspace??null,re=ne&&ne.replace(/\/+$/,``).split(`/`).pop()||null,I=!!N&&!!P,L=!!h&&v===`OPEN`&&!y;(0,$.useEffect)(()=>{if(!a)return;let e=e=>{s.current&&!s.current.contains(e.target)&&o(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[a]),(0,$.useEffect)(()=>{if(!a)return;let e=e=>{e.key===`Escape`&&o(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[a]);let ae=(e,r)=>{n&&(c(e),w({conversationId:n,repository:e.full_name,branch:r.name,gitProvider:e.git_provider},{onSuccess:()=>{if(b.current!==`OPEN`){D(t(E.CONVERSATION$CLONE_COMMAND_FAILED_DISCONNECTED));return}let i=e.git_provider.charAt(0).toUpperCase()+e.git_provider.slice(1),a=`Clone ${e.full_name} from ${i} and checkout branch ${r.name}.`,o=n?l({conversationId:n,text:a}):null;C?.scrollDomToBottom(),Promise.resolve(S.current({action:`message`,args:{content:a,timestamp:new Date().toISOString()}})).catch(e=>{o&&u(o,e instanceof Error?e.message:t(E.CHAT_INTERFACE$FAILED_TO_SEND_MESSAGE))})}}))},R=!f||!!N||!!re,oe=f&&!I;return R||F||I?(0,Q.jsxs)(`div`,{className:`flex flex-row items-center`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-row gap-2.5 items-center overflow-x-auto flex-nowrap relative scrollbar-hide`,children:[R?(0,Q.jsx)(en,{selectedRepository:N,gitProvider:P,workspaceName:re,onClick:()=>i(!0),disabled:!L||oe}):null,F?(0,Q.jsx)(Zt,{selectedBranch:F,selectedRepository:N,gitProvider:P}):null,I?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Lr,{tooltipMessage:t(E.COMMON$GIT_TOOLS_DISABLED_CONTENT),testId:`git-control-bar-pull-button-tooltip`,shouldShowTooltip:!I,children:(0,Q.jsx)(yr,{onSuggestionsClick:e,hasRepository:I,providerTokensReady:m,isConversationReady:L})}),(0,Q.jsx)(Lr,{tooltipMessage:t(E.COMMON$GIT_TOOLS_DISABLED_CONTENT),testId:`git-control-bar-push-button-tooltip`,shouldShowTooltip:!I,children:(0,Q.jsx)(br,{onSuggestionsClick:e,hasRepository:I,providerTokensReady:m,currentGitProvider:P,isConversationReady:L})}),(0,Q.jsx)(Lr,{tooltipMessage:t(E.COMMON$GIT_TOOLS_DISABLED_CONTENT),testId:`git-control-bar-pr-button-tooltip`,shouldShowTooltip:!I,children:(0,Q.jsx)(xr,{onSuggestionsClick:e,hasRepository:I,providerTokensReady:m,currentGitProvider:P,isConversationReady:L})})]}):null]}),(0,Q.jsx)(Rr,{isOpen:r,onClose:()=>i(!1),onLaunch:ae,defaultProvider:P})]}):null}function Br({onSubmit:e,disabled:t=!1}){let{images:n,files:r,imagesMarkedUploadAsFile:i,clearAllFiles:a,subConversationTaskId:o}=W(),{curAgentState:s}=Y(),{data:c}=J(),{conversationId:l}=cn(),u=l??c?.id??null,{taskStatus:d}=Pt(o,c?.id||null),{handleUpload:f}=Wt(),p=Xt(u,mr(u,dr(u,t=>{let{imagesToEmbed:o,imagesAsFiles:s}=Bt(n,i);e(t,o,[...r,...s]),a()})));return(0,Q.jsxs)(`div`,{"data-testid":`interactive-chat-box`,children:[(0,Q.jsx)(Kt,{disabled:t||s===V.AWAITING_USER_CONFIRMATION||Ce(d),isNewConversationPending:t,onSubmit:p,onFilesPaste:f}),(0,Q.jsx)(`div`,{className:`mt-3 pb-3`,children:(0,Q.jsx)(zr,{onSuggestionsClick:e=>{p(e)}})})]})}function Vr(){let e=Z(e=>e.events),t=Z(e=>e.uiEvents),n=$.useMemo(()=>t.filter(un),[t]),r=$.useMemo(()=>e,[e]),i=$.useMemo(()=>n.length,[n]),a=$.useMemo(()=>r.some(e=>e.source===`agent`&&!bn(e)&&!Cn(e)),[r]),o=vn(r);return{storeEvents:e,uiEvents:t,renderableEvents:n,allConversationEvents:r,totalEvents:i,hasSubstantiveAgentActions:a,conversationUserEventsExist:o,userEventsExist:o}}var Hr=e=>`timestamp`in e?e.timestamp:void 0,Ur=e=>{let t=!!e&&Xe(e),n=t?void 0:e,{data:r}=Tt(e??null),{data:i,isFetched:a}=mn(n??void 0),o=Z(e=>e.addEvents),[s,c]=$.useState(!1),[l,u]=$.useState(!0),d=$.useRef(!1),f=$.useRef(!0);return $.useEffect(()=>{if(d.current=!1,c(!1),t){f.current=!1,u(!1);return}f.current=!0,u(!0)},[e,t]),$.useEffect(()=>{t||!a||!i||i.hasMore||(f.current=!1,u(!1))},[t,a,i?.hasMore,n]),{isLoading:s,hasMore:l,loadOlder:$.useCallback(async()=>{if(!e||Xe(e)||d.current||!f.current||!r)return;let{events:t}=Z.getState(),n=t[0];if(!n)return;let i=Hr(n);if(!i){f.current=!1,u(!1);return}d.current=!0,c(!0);try{let t=await dn.searchEvents(e,r?.conversation_url??null,r?.session_api_key??null,{limit:50,sortOrder:`TIMESTAMP_DESC`,timestampLt:i});if(!Array.isArray(t.items))throw Error(`Invalid older-events response: expected page.items to be an array.`);let n=[...t.items].reverse();n.length>0&&(o(n),ln(e,Z.getState().uiEvents)),(!t.next_page_id||t.items.length<50)&&(f.current=!1,u(!1))}finally{d.current=!1,c(!1)}},[e,r,r?.conversation_url,r?.session_api_key,o])}};function Wr(){return(0,Q.jsxs)(`div`,{className:`flex items-center space-x-1.5 rounded-full bg-[var(--oh-surface)] px-3 py-1.5`,children:[(0,Q.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-[var(--oh-muted)] animate-[bounce_0.5s_infinite] translate-y-[1px] [animation-delay:0ms]`}),(0,Q.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-[var(--oh-muted)] animate-[bounce_0.5s_infinite] translate-y-[1px] [animation-delay:75ms]`}),(0,Q.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-[var(--oh-muted)] animate-[bounce_0.5s_infinite] translate-y-[1px] [animation-delay:150ms]`})]})}function Gr({suggestion:e,onClick:t}){let{t:n}=T(`openhands`);return(0,Q.jsxs)(`button`,{type:`button`,className:`list-none border border-[var(--oh-border)] rounded-[15px] hover:bg-surface-raised hover:border-[var(--oh-interactive-hover)] transition-colors flex-1 flex items-center justify-center cursor-pointer gap-[10px] h-[55px] px-4`,onClick:()=>t(e.value),children:[(0,$.useMemo)(()=>{switch(e.label){case`INCREASE_TEST_COVERAGE`:return(0,Q.jsx)(zt,{width:24,height:24,color:`#fff`});case`AUTO_MERGE_PRS`:return(0,Q.jsx)(rn,{width:19,height:20,color:`#fff`});case`FIX_README`:return(0,Q.jsx)(kt,{width:24,height:24,color:`#fff`});case`CLEAN_DEPENDENCIES`:return(0,Q.jsx)(Rt,{width:24,height:24,color:`#fff`});default:return null}},[e]),(0,Q.jsx)(`span`,{"data-testid":`suggestion`,className:`text-[15px] font-normal leading-5 text-white text-center cursor-pointer`,children:n(e.label)})]})}function Kr({suggestions:e,onSuggestionClick:t}){return(0,Q.jsx)(`div`,{"data-testid":`suggestions`,className:`grid grid-cols-2 gap-5 max-w-fit`,children:e.map((e,n)=>(0,Q.jsx)(Gr,{suggestion:e,onClick:t},n))})}var qr=E.SUGGESTIONS$HACKER_NEWS,Jr=`Please write a bash script which displays the top story on Hacker News. It should show the title, the link, and the number of points.
5
+ The script should only use tools that are widely available on unix systems, like curl and grep.`,Yr=E.SUGGESTIONS$HELLO_WORLD,Xr=`I want to create a Hello World app in Javascript that:
6
+ * Displays Hello World in the middle.
7
+ * Has a button that when clicked, changes the greeting with a bouncing animation to fun versions of Hello.
8
+ * Has a counter for how many times the button has been clicked.
9
+ * Has another button that changes the app's background color.`,Zr=E.SUGGESTIONS$TODO_APP,Qr=`I want to create a VueJS app that allows me to:
10
+ * See all the items on my todo list
11
+ * add a new item to the list
12
+ * mark an item as done
13
+ * totally remove an item from the list
14
+ * change the text of an item
15
+ * set a due date on the item
16
+
17
+ This should be a client-only app with no backend. The list should persist in localStorage.`,$r={repo:an,"non-repo":{[qr]:Jr,[Yr]:Xr,[Zr]:Qr}};function ei({onSuggestionsClick:e}){let{t}=T(`openhands`),{shouldHideSuggestions:n}=W();return(0,Q.jsx)(s,{children:!n&&(0,Q.jsxs)(z.div,{"data-testid":`chat-suggestions`,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.3,ease:`easeInOut`},className:`pointer-events-auto absolute inset-x-4 bottom-[151px] top-0 flex flex-col items-center justify-center md:inset-x-8`,children:[(0,Q.jsx)(`div`,{className:`flex flex-col items-center p-4 rounded-xl w-full`,children:(0,Q.jsx)(`span`,{className:`pb-6 text-[32px] font-medium leading-5 text-white`,children:t(E.LANDING$TITLE)})}),(0,Q.jsx)(Kr,{suggestions:Object.entries($r.repo).slice(0,4).map(([e,t])=>({label:e,value:t})),onSuggestionClick:e})]})})}var ti={files:[],initialPrompt:null,selectedRepository:null,selectedRepositoryProvider:null,replayJson:null},ni=Je(e=>({...ti,addFile:t=>e(e=>({files:[...e.files,t]})),removeFile:t=>e(e=>({files:e.files.filter((e,n)=>n!==t)})),clearFiles:()=>e(()=>({files:[]})),setInitialPrompt:t=>e(()=>({initialPrompt:t})),clearInitialPrompt:()=>e(()=>({initialPrompt:null})),setSelectedRepository:t=>e(()=>({selectedRepository:t})),clearSelectedRepository:()=>e(()=>({selectedRepository:null})),setSelectedRepositoryProvider:t=>e(()=>({selectedRepositoryProvider:t})),setReplayJson:t=>e(()=>({replayJson:t})),reset:()=>e(()=>ti)})),ri=e=>(0,Q.jsx)(`svg`,{width:12,height:17,viewBox:`0 0 12 17`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,Q.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M11.5304 6.46978L10.4697 7.53044L6.75006 3.81077L6.75006 17.0001H5.25006L5.25006 3.81077L1.53039 7.53044L0.469727 6.46978L6.00006 0.939453L11.5304 6.46978Z`,fill:`currentColor`})});function ii({onClick:e}){return(0,Q.jsx)(`button`,{type:`button`,onClick:e,"data-testid":`scroll-to-bottom`,className:`flex items-center justify-center size-8 rounded-full bg-[var(--oh-surface)] text-[var(--oh-muted)] hover:bg-tertiary hover:text-white rotate-180 cursor-pointer transition-colors`,children:(0,Q.jsx)(ri,{width:15,height:15})})}var ai=[{width:`w-[25%]`,height:`h-4`,align:`justify-end`},{width:`w-[60%]`,height:`h-4`,align:`justify-start`},{width:`w-[45%]`,height:`h-4`,align:`justify-start`},{width:`w-[65%]`,height:`h-20`,align:`justify-start`},{width:`w-[35%]`,height:`h-4`,align:`justify-end`},{width:`w-[50%]`,height:`h-4`,align:`justify-start`},{width:`w-[30%]`,height:`h-4`,align:`justify-end`},{width:`w-[75%]`,height:`h-4`,align:`justify-start`},{width:`w-[55%]`,height:`h-4`,align:`justify-start`}];function oi({width:e,height:t}){return(0,Q.jsx)(`div`,{className:U(`rounded-md bg-foreground/5 animate-pulse`,e,t)})}function si(){let{t:e}=T(`openhands`);return(0,Q.jsx)(`div`,{className:`flex flex-col gap-6 p-4 w-full h-full overflow-hidden`,"data-testid":`chat-messages-skeleton`,"aria-label":e(E.CHAT_INTERFACE$LOADING_CONVERSATION),children:ai.map((e,t)=>(0,Q.jsx)(`div`,{className:U(`flex w-full`,e.align),children:(0,Q.jsx)(oi,{width:e.width,height:e.height})},t))})}var ci=220;function li({message:e,code:t,onDismiss:n,onRetry:r,onReauth:i}){let{t:a,i18n:o}=T(`openhands`),s=nr(t),[c,l]=$.useState(!1),[u,d]=$.useState(!1),[f,p]=$.useState(!1),m=$.useRef(null),h=o.exists(e,{ns:`openhands`}),g=h?String(a(e)):e,_=g.length>ci,v=_&&!c;return $.useEffect(()=>{if(!f)return;let e=setTimeout(()=>{p(!1)},2e3);return()=>clearTimeout(e)},[f]),$.useEffect(()=>{p(!1)},[g]),$.useLayoutEffect(()=>{let e=m.current;if(!e)return;let t=()=>{let t=Number.parseFloat(getComputedStyle(e).lineHeight);if(!Number.isFinite(t)||t<=0){d(!1);return}d(e.getBoundingClientRect().height>t*1.5)};t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[g,v,c,e]),(0,Q.jsxs)(`div`,{className:U(`flex w-full gap-2 rounded-lg border border-[var(--oh-border)] bg-[var(--oh-surface-raised)] p-2 text-[var(--oh-foreground)]`,u?`items-start`:`items-center`),"data-testid":`error-message-banner`,children:[(0,Q.jsx)(x,{"aria-hidden":!0,className:`h-4 w-4 shrink-0`,strokeWidth:2,style:{color:ve},"data-testid":`error-message-banner-icon`}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[s&&(0,Q.jsx)(`div`,{className:`text-sm font-medium text-[var(--oh-foreground)]`,"data-testid":`error-message-banner-header`,children:a(s)}),(0,Q.jsx)(`div`,{ref:m,className:U(`whitespace-pre-wrap break-words text-sm text-[var(--oh-muted)]`,v&&`line-clamp-3`),"data-testid":`error-message-banner-content`,children:h?(0,Q.jsx)(w,{ns:`openhands`,i18nKey:e}):e}),i&&(0,Q.jsx)(`button`,{type:`button`,onClick:i,className:`mt-2 cursor-pointer rounded-md border border-[var(--oh-border)] px-2 py-1 text-xs font-normal text-[var(--oh-foreground)] hover:bg-[var(--oh-interactive-hover)]`,"data-testid":`error-message-banner-reauth`,children:a(E.ERROR$ACP_UPDATE_CREDENTIALS)}),_&&(0,Q.jsx)(`button`,{type:`button`,className:`mt-1 cursor-pointer text-xs font-normal text-[var(--oh-foreground)] underline`,onClick:()=>l(e=>!e),"data-testid":`error-message-banner-toggle`,children:a(c?E.COMMON$VIEW_LESS:E.COMMON$VIEW_MORE)})]}),(0,Q.jsxs)(`div`,{className:U(`flex shrink-0 gap-1`,u?`self-start`:`items-center`),children:[r&&(0,Q.jsx)(`button`,{type:`button`,onClick:r,className:`cursor-pointer rounded-md border border-[var(--oh-border)] px-2 py-1 text-xs font-normal text-[var(--oh-foreground)] hover:bg-[var(--oh-interactive-hover)]`,"data-testid":`error-message-banner-retry`,children:a(E.CHAT_INTERFACE$MESSAGE_RETRY)}),(0,Q.jsx)(`button`,{type:`button`,onClick:async()=>{try{await navigator.clipboard.writeText(g),p(!0)}catch{D(a(E.CHAT_INTERFACE$CHAT_MESSAGE_COPY_FAILED))}},className:`shrink-0 cursor-pointer rounded-md p-1 text-[var(--oh-muted)] hover:bg-[var(--oh-interactive-hover)] hover:text-[var(--oh-foreground)]`,"aria-label":a(f?E.BUTTON$COPIED:E.BUTTON$COPY),"data-testid":`error-message-banner-copy`,children:f?(0,Q.jsx)(le,{className:`h-4 w-4`,"aria-hidden":!0}):(0,Q.jsx)(de,{className:`h-4 w-4`,"aria-hidden":!0})}),n&&(0,Q.jsx)(`button`,{type:`button`,onClick:n,className:`shrink-0 cursor-pointer rounded-md p-1 text-[var(--oh-muted)] hover:bg-[var(--oh-interactive-hover)] hover:text-[var(--oh-foreground)]`,"aria-label":a(E.BUTTON$CLOSE),"data-testid":`error-message-banner-dismiss`,children:(0,Q.jsx)(he,{className:`h-4 w-4`,"aria-hidden":!0})})]})]})}function ui(){let{t:e}=T(`openhands`),{conversationId:t}=cn(),n=X(e=>e.pendingMessages),r=X(e=>e.markPendingMessageError),i=X(e=>e.markPendingMessageSending),a=X(e=>e.removePendingMessage),o=W(e=>e.restoreMessageToInputIfEmpty),{send:s}=ie(),c=$.useMemo(()=>t?n.filter(e=>Lt(t,e.conversationId)):[],[n,t]),l=$.useCallback(async t=>{let n=X.getState().pendingMessages.find(e=>e.id===t);if(n){i(t);try{await s(ae(n.text,n.imageUrls,n.fileUrls,n.timestamp))}catch(n){r(t,n instanceof Error?n.message:e(E.CHAT_INTERFACE$FAILED_TO_SEND_MESSAGE))}}},[s,r,i,e]),u=$.useCallback((e,t)=>{o(t),a(e)},[o,a]);return c.length===0?null:(0,Q.jsx)(Q.Fragment,{children:c.map(e=>(0,Q.jsx)(ne,{type:`user`,message:e.text,pendingStatus:e.status,onRetry:e.status===`error`?()=>l(e.id):void 0,onStop:e.status===`sending`?()=>u(e.id,e.text):void 0,children:e.imageUrls.length>0&&(0,Q.jsx)(I,{size:`small`,images:e.imageUrls})},e.id))})}var di=()=>{let{data:e}=J();return S({mutationKey:[`unified-upload-files`],mutationFn:async t=>{let{conversationId:n,files:r}=t;return vt(n,r,e)},meta:{disableToast:!0}})},fi=e=>(0,Q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Q.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M12 3.25C9.92893 3.25 8.25 4.92893 8.25 7V10H7C6.44772 10 6 10.4477 6 11V19C6 19.5523 6.44772 20 7 20H17C17.5523 20 18 19.5523 18 19V11C18 10.4477 17.5523 10 17 10H15.75V7C15.75 4.92893 14.0711 3.25 12 3.25ZM14.25 10V7C14.25 5.75736 13.2426 4.75 12 4.75C10.7574 4.75 9.75 5.75736 9.75 7V10H14.25Z`,fill:`currentColor`})});function pi(){let{t:e}=T(`openhands`),{data:t}=$e();return t?.confirmation_mode?(0,Q.jsx)(ze,{closeDelay:100,content:e(E.COMMON$CONFIRMATION_MODE_ENABLED),tooltipClassName:`bg-white text-black hover:bg-transparent`,children:(0,Q.jsx)(`div`,{className:`flex items-center justify-center w-[26px] h-[26px] rounded-lg bg-[var(--oh-surface)]`,children:(0,Q.jsx)(fi,{width:15,height:15})})}):null}var mi=e=>(0,Q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Q.jsx)(`path`,{d:`M15 12C15 12.7956 14.6839 13.5587 14.1213 14.1213C13.5587 14.6839 12.7956 15 12 15C11.2044 15 10.4413 14.6839 9.87868 14.1213C9.31607 13.5587 9 12.7956 9 12C9 11.2044 9.31607 10.4413 9.87868 9.87868C10.4413 9.31607 11.2044 9 12 9C12.7956 9 13.5587 9.31607 14.1213 9.87868C14.6839 10.4413 15 11.2044 15 12Z`,fill:`currentColor`})});function hi({status:e,statusColor:t}){return(0,Q.jsx)(`div`,{"data-testid":`chat-status-indicator`,className:c(`w-full max-w-full rounded-[100px] p-1 bg-[var(--oh-surface)] flex items-center gap-1`),children:(0,Q.jsxs)(s,{mode:`wait`,children:[(0,Q.jsx)(z.span,{className:`flex-shrink-0 animate-[pulse_1.2s_ease-in-out_infinite]`,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.3},children:(0,Q.jsx)(mi,{className:`w-4 h-4`,color:t})},`dot-${e}`),(0,Q.jsx)(z.span,{initial:{opacity:0,y:-2},animate:{opacity:1,y:0},exit:{opacity:0,y:2},transition:{duration:.3},className:`pr-1.5 font-normal text-[11px] leading-[16px] normal-case break-words whitespace-normal`,children:e},`text-${e}`)]})})}var gi=()=>{let e=m(),{navigate:t}=Re(),{t:n}=T(`openhands`),{data:r}=J(),{trackConversationCreated:i}=et();return S({mutationFn:async()=>{if(!r?.id)throw Error(`No active conversation`);let e=await it.createConversation(void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,r.sandbox_id??void 0);if(e.status===`ERROR`)throw Error(e.detail||`Failed to create new conversation`);return{newConversationId:e.app_conversation_id?e.app_conversation_id:`task-${e.id}`,oldConversationId:r.id,taskId:e.id}},onMutate:()=>{b.loading(n(E.CONVERSATION$CLEARING),{...k,id:`clear-conversation`})},onSuccess:r=>{i({conversationId:r.newConversationId,taskId:r.taskId,hasRepository:!1,hasWorkspace:!1,hasInitialQuery:!1,hasParentConversation:!1,entryPoint:`new_command`}),b.dismiss(`clear-conversation`),O(n(E.CONVERSATION$CLEAR_SUCCESS)),t(`/conversations/${r.newConversationId}`),e.invalidateQueries({queryKey:[`user`,`conversations`]}),e.invalidateQueries({queryKey:[`v1-batch-get-app-conversations`]})},onError:e=>{b.dismiss(`clear-conversation`);let t=n(E.CONVERSATION$CLEAR_UNKNOWN_ERROR);e instanceof Error?t=e.message:typeof e==`string`&&(t=e),D(n(E.CONVERSATION$CLEAR_FAILED,{error:t}))}})};function _i(e,t){return e?`github`:t?`replay`:`direct`}function vi(){let{trackInitialQuerySubmitted:e,trackUserMessageSent:t}=et(),{setMessageToSend:n}=W(),{errorMessage:r,errorCode:i,removeErrorMessage:a,setErrorMessage:o}=pn(),s=f(),{isTask:c,taskStatus:l,taskDetail:u}=Ft(),d=c,p=_n(),{send:m}=ie(),{renderableEvents:h,allConversationEvents:g,totalEvents:_,hasSubstantiveAgentActions:v,userEventsExist:y}=Vr(),b=X(e=>e.enqueuePendingMessage),x=X(e=>e.markPendingMessageError),S=X(e=>e.pendingMessages),{t:C}=T(`openhands`),w=$.useRef(null),{scrollDomToBottom:O,onChatBodyScroll:k,hitBottom:A,autoScroll:j,setAutoScroll:M,setHitBottom:ee}=En(w),{mutate:te,isPending:N}=gi(),{curAgentState:P}=Y(),{handleBuildPlanClick:F}=L(),{data:ne}=J(),I=ne?.sandbox_status??null,R=on(),{isConfigured:ce,isLoading:le}=$t(),ue=!le&&!ce,z=P===V.RUNNING||P===V.LOADING;$.useEffect(()=>{if(z)return;let e=e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),e.stopPropagation(),F(e),O())};return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e)}},[z,F,O]);let{selectedRepository:de,replayJson:fe}=ni(),{conversationId:B}=cn(),pe=gn(e=>{let t=B?e.statusByConversation[B]:void 0;return t?.active?`${t.iteration}:${t.status}`:null}),{mutateAsync:me}=di(),{isLoading:he,hasMore:ge,loadOlder:_e}=Ur(B),ve=$.useRef(null),H=$.useCallback(e=>{if(d||he||!ge)return;let t=e.scrollTop<=80,n=e.scrollHeight<=e.clientHeight+80;!t&&!n||(ve.current={scrollHeight:e.scrollHeight,scrollTop:e.scrollTop},_e().catch(e=>{ve.current=null,o(e instanceof Error&&e.message?e.message:C(E.ERROR$GENERIC))}))},[ge,he,d,_e,o,C]),ye=$.useCallback(e=>{e.deltaY<0&&e.currentTarget.scrollTop<=0&&H(e.currentTarget)},[H]),be=$.useMemo(()=>B?S.some(e=>Lt(B,e.conversationId)):!1,[S,B]),xe=g.length>0||be||!p?.isLoadingHistory,Ce=!!B,we=!xe&&!c,Te=fn(e=>B?(e.entriesByConversation[B]?.length??0)>0:!1),U=async(r,i,a)=>{if(r.trim()===`/new`){if(!B){D(C(E.CONVERSATION$CLEAR_NO_ID));return}if(_===0){D(C(E.CONVERSATION$CLEAR_EMPTY));return}if(N)return;te();return}let o=[...i],s=[...a];_===0?e({entryPoint:_i(de!==null,fe!==null),queryCharacterLength:r.length,replayJsonSize:fe?.length}):t({sessionMessageCount:_,currentMessageLength:r.length});let c=Mt([...o,...s]);if(!c.isValid){D(`Error: ${c.errorMessage}`);return}let l=o.map(e=>Nt(e)),u=await Promise.all(l),d=new Date().toISOString(),{skipped_files:f,uploaded_files:p}=s.length>0?await me({conversationId:B,files:s}):{skipped_files:[],uploaded_files:[]};f.forEach(e=>D(e.reason));let h=`${C(E.CHAT_INTERFACE$AUGMENTED_PROMPT_FILES_TITLE)}: ${p.join(`
18
+
19
+ `)}`,g=p.length>0?`${r}\n\n${h}`:r,v=b({conversationId:B,text:r,content:g,imageUrls:u,fileUrls:p,timestamp:d});O(),n(``);try{await m(ae(g,u,p,d))}catch(e){x(v,e instanceof Error?e.message:C(E.CHAT_INTERFACE$FAILED_TO_SEND_MESSAGE))}};$.useEffect(()=>{if(ve.current&&w.current){let{scrollHeight:e,scrollTop:t}=ve.current,n=w.current,r=n.scrollHeight-e;r>0&&(n.scrollTop=t+r),ve.current=null;return}j&&O()},[h.length,be,pe,O]);let De=$.useRef(H);$.useEffect(()=>{De.current=H}),$.useEffect(()=>{let e=w.current;e&&De.current(e)},[h.length,ge]);let Oe={scrollRef:w,autoScroll:j,setAutoScroll:M,scrollDomToBottom:O,hitBottom:A,setHitBottom:ee,onChatBodyScroll:k},ke=P===V.LOADING||P===V.INIT,Ae=P===V.STOPPED,je=P===V.PAUSED,Me=Ee({isPausing:je,isTask:c,taskStatus:l,isStartingStatus:ke,isStopStatus:Ae,curAgentState:P}),Ne=Se({isPausing:je,isTask:c,taskStatus:l,taskDetail:u,isStartingStatus:ke,isStopStatus:Ae,curAgentState:P,errorMessage:r,t:C});return(0,Q.jsx)(oe,{value:Oe,children:(0,Q.jsxs)(`div`,{className:`relative flex h-full flex-col justify-between px-4`,"data-testid":`chat-interface`,children:[!v&&!be&&!y&&!Te&&!we&&!d&&_===0&&!R&&!ue&&(0,Q.jsx)(ei,{onSuggestionsClick:e=>n(e)}),(0,Q.jsxs)(`div`,{ref:w,"data-testid":`chat-scroll-container`,onScroll:e=>{k(e.currentTarget),H(e.currentTarget)},onWheel:ye,className:`custom-scrollbar-always flex min-h-0 grow flex-col gap-2 overflow-x-hidden overflow-y-auto px-0 pt-4 pb-8 md:px-4`,children:[we&&Ce&&(0,Q.jsx)(si,{}),we&&!Ce&&(0,Q.jsx)(`div`,{className:`flex justify-center`,"data-testid":`loading-spinner`,children:(0,Q.jsx)(Le,{size:`small`})}),he&&(0,Q.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-3 text-sm text-neutral-400`,"data-testid":`loading-older-events`,children:[(0,Q.jsx)(Le,{size:`small`}),(0,Q.jsx)(`span`,{children:C(E.CHAT_INTERFACE$FETCHING_OLDER_MESSAGES)})]}),(0,Q.jsx)(re,{conversationId:B,anchorEventId:null}),xe&&h.length>0&&(0,Q.jsx)(se,{messages:h,allEvents:g}),(0,Q.jsx)(ui,{}),(0,Q.jsx)(lr,{conversationId:B})]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-[6px] pb-4`,children:[(0,Q.jsx)(cr,{conversationId:B}),r&&(0,Q.jsx)(li,{message:r,code:i,onDismiss:a,onRetry:r===`Unable to connect to server`?()=>p?.reconnect():void 0,onReauth:rr(i)?()=>s(`/settings/agents`):void 0}),ue&&!R&&(0,Q.jsx)(tn,{}),R?(0,Q.jsxs)(`div`,{"data-testid":`archived-conversation-banner`,className:`mx-1 px-4 py-3 rounded-lg bg-[var(--oh-surface)] border border-[var(--oh-border-subtle)]`,children:[(0,Q.jsx)(`p`,{className:`text-xs font-semibold text-[var(--oh-foreground)]`,children:C(I===`ERROR`?E.CHAT_INTERFACE$ERROR_SANDBOX_TITLE:E.CHAT_INTERFACE$ARCHIVED_SANDBOX_TITLE)}),(0,Q.jsx)(`p`,{className:`text-xs text-[var(--oh-muted)] mt-0.5`,children:C(I===`ERROR`?E.CHAT_INTERFACE$ERROR_SANDBOX_DESCRIPTION:E.CHAT_INTERFACE$ARCHIVED_SANDBOX_DESCRIPTION)})]}):(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(`div`,{className:`pointer-events-none absolute inset-x-0 bottom-full mb-1 z-20`,children:(0,Q.jsxs)(`div`,{className:`flex justify-between relative`,children:[(0,Q.jsxs)(`div`,{className:`flex items-end gap-1 pointer-events-auto`,children:[(0,Q.jsx)(pi,{}),ke&&(0,Q.jsx)(hi,{statusColor:Me,status:Ne})]}),A?P===V.RUNNING&&(0,Q.jsx)(`div`,{className:`absolute left-1/2 transform -translate-x-1/2 bottom-0 pointer-events-auto`,children:(0,Q.jsx)(Wr,{})}):(0,Q.jsx)(`div`,{className:`absolute left-1/2 transform -translate-x-1/2 bottom-0 pointer-events-auto`,children:(0,Q.jsx)(ii,{onClick:O})})]})}),(0,Q.jsx)(Br,{onSubmit:U,disabled:N||ue})]})]})]})})}function yi({isRightPanelShown:e}){return(0,Q.jsx)(`div`,{className:`flex justify-center w-full h-full`,children:(0,Q.jsx)(`div`,{className:`w-full min-w-0 max-w-[800px] h-full flex flex-col min-h-0 transition-all duration-300 ease-in-out`,children:(0,Q.jsx)(vi,{})})})}function bi({children:e}){return(0,Q.jsx)(`div`,{className:`absolute inset-0`,children:e})}function xi({children:e}){return(0,Q.jsx)(`div`,{className:`flex flex-col h-full w-full`,children:e})}function Si({children:e}){return(0,Q.jsx)(`div`,{className:`overflow-hidden flex-grow h-full w-full relative`,children:e})}function Ci({className:e}){let{t}=T(`openhands`);return(0,Q.jsxs)(`div`,{className:U(`bg-[var(--oh-surface)] flex h-full w-full flex-col items-center justify-center gap-3`,e),children:[(0,Q.jsx)(pe,{className:`h-8 w-8 shrink-0 animate-spin text-tertiary-light`,"aria-hidden":!0}),(0,Q.jsx)(M,{as:`p`,role:`status`,"aria-live":`polite`,className:`block w-full text-center text-base font-normal leading-5`,duration:1,spread:2,children:t(E.HOME$LOADING)})]})}function wi({children:e,onReady:t}){return(0,$.useLayoutEffect)(()=>{t()},[t]),e}function Ti({onPending:e}){return(0,$.useLayoutEffect)(()=>{e()},[e]),(0,Q.jsx)(Ci,{})}var Ei={duration:.35,ease:`easeInOut`};function Di({showAgentLoading:e,tabKey:t,children:n}){let r=P(),[i,a]=(0,$.useState)(!1);(0,$.useLayoutEffect)(()=>{a(!1)},[t]);let o=(0,$.useCallback)(()=>{a(!0)},[]),c=(0,$.useCallback)(()=>{a(!1)},[]),l=e||i;return r?(0,Q.jsx)(`div`,{className:`relative h-full w-full overflow-hidden`,children:l?(0,Q.jsx)(Ci,{}):(0,Q.jsx)($.Suspense,{fallback:(0,Q.jsx)(Ti,{onPending:o}),children:(0,Q.jsx)(wi,{onReady:c,children:n})})}):(0,Q.jsxs)(`div`,{className:`relative h-full w-full overflow-hidden`,children:[(0,Q.jsx)(z.div,{className:`absolute inset-0 h-full w-full`,initial:!1,animate:{opacity:+!l},transition:Ei,"aria-hidden":l,children:(0,Q.jsx)($.Suspense,{fallback:(0,Q.jsx)(Ti,{onPending:o}),children:(0,Q.jsx)(wi,{onReady:c,children:n})})}),(0,Q.jsx)(s,{children:l?(0,Q.jsx)(z.div,{className:`absolute inset-0 z-10 h-full w-full`,initial:{opacity:1},animate:{opacity:1},exit:{opacity:0},transition:Ei,children:(0,Q.jsx)(Ci,{})},`conversation-tab-loading-overlay`):null})]})}var Oi=(0,$.lazy)(()=>n(()=>import(`./files-tab-DHqtsKLy.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61]))),ki=(0,$.lazy)(()=>n(()=>import(`./browser-tab-aiDg7aEn.js`),__vite__mapDeps([62,2,1,63,7,8,18,64,13,42,10,11,65,26]))),Ai=(0,$.lazy)(()=>n(()=>import(`./planner-tab-G4j36bJk.js`),__vite__mapDeps([66,1,2,67,7,8,18,42,10,11,44,22,20,21,23,24,45,13,19,25,46,47,48,68,69,70,71,3,4,5,6,9,72,73,74,15,16,30,27,28,14,29,31,32,33,34,35,36,75,76,77,78,79,80,49,50,51,52,81,82,26,60]))),ji=(0,$.lazy)(()=>n(()=>import(`./task-list-tab-BAThr9Ex.js`),__vite__mapDeps([83,1,2,8,18,42,10,11,84,37,26,85,86,40,41]))),Mi=(0,$.lazy)(()=>n(()=>import(`./terminal-B0aL_iDZ.js`),__vite__mapDeps([87,1,2,88,89,90,7,8,18,38,39,10,11,40,41,42,53,49,50,4,14,27,3,5,6,9,28,29,30,31,32,33,34,35,36,51,52,15,16,54,26,91]))),Ni={tasklist:{component:ji},files:{component:Oi},browser:{component:ki},terminal:{component:Mi},planner:{component:Ai}};function Pi(){let{selectedTab:e,shouldShownAgentLoading:t}=W(),{conversationId:n}=q(),r=(0,$.useMemo)(()=>Ni[e]??Ni.files,[e]).component,i=e===`terminal`?`${e}-${n}`:e??`files`;return(0,Q.jsx)(xi,{children:(0,Q.jsx)(Si,{children:(0,Q.jsx)(Di,{showAgentLoading:t,tabKey:i,children:(0,Q.jsx)(bi,{children:(0,Q.jsx)(r,{})},i)})})})}var Fi=()=>{let e=m(),t=pn(e=>e.removeErrorMessage);return S({mutationKey:[`start-conversation`],mutationFn:async e=>g(e.conversationId),onMutate:async()=>(await e.cancelQueries({queryKey:[`user`,`conversations`]}),{previousConversations:e.getQueryData([`user`,`conversations`])}),onError:(t,n,r)=>{r?.previousConversations&&e.setQueryData([`user`,`conversations`],r.previousConversations)},onSettled:(t,n,r)=>{h(e,r.conversationId)},onSuccess:(n,r)=>{t(),_(e,r.conversationId,ke.RUNNING)}})},Ii=e=>(0,Q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Q.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22ZM10 9H14A1 1 0 0 1 15 10V14A1 1 0 0 1 14 15H10A1 1 0 0 1 9 14V10A1 1 0 0 1 10 9Z`,fill:`currentColor`})}),Li=e=>(0,Q.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:[(0,Q.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M12.9 1.50004C15.3 1.65004 17.55 2.85004 19.2 4.50004C21.15 6.60004 22.2 9.15004 22.2 12.15C22.2 14.55 21.3 16.8 19.8 18.75C18.3 20.55 16.2 21.9 13.8 22.35C11.4 22.8 9 22.5 6.9 21.3C4.8 20.1 3.15 18.3 2.25 16.05C1.35 13.8 1.2 11.25 1.95 9.00004C2.7 6.60004 4.05 4.65004 6.15 3.30004C8.1 1.95004 10.5 1.35004 12.9 1.50004ZM13.65 20.85C15.6 20.4 17.4 19.35 18.75 17.7C19.95 16.05 20.7 14.1 20.55 12C20.55 9.60004 19.65 7.20004 18 5.55004C16.5 4.05004 14.7 3.15004 12.6 3.00004C10.65 2.85004 8.55 3.30004 6.9 4.50004C5.25 5.70004 4.05 7.35004 3.45 9.45004C2.85 11.4 2.85 13.5 3.75 15.45C4.65 17.4 6 18.9 7.8 19.95C9.6 21 11.7 21.3 13.65 20.85Z`,fill:`currentColor`}),(0,Q.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M9 7.49998L10.1655 6.87598L16.9155 11.376V12.624L10.1655 17.124L9 16.5V7.49998ZM10.5 8.90098V15.099L15.1485 12L10.5 8.90098Z`,fill:`currentColor`})]});function Ri({icon:e,text:t,onClick:n,testId:r}){return(0,Q.jsx)(G,{testId:r,onClick:n,children:(0,Q.jsxs)(`div`,{className:`flex min-w-0 w-full items-center justify-between gap-2`,children:[(0,Q.jsx)(`span`,{className:`min-w-0 truncate`,children:t}),(0,Q.jsx)(`span`,{className:Ve,"aria-hidden":!0,children:e})]})})}function zi({className:e=``,executionStatus:t,isPausing:n=!1}){let{curAgentState:r}=Y(),{isTask:i,taskStatus:a,taskDetail:o}=Ft(),{t:s}=T(`openhands`),{errorMessage:c}=pn(),l=r===V.LOADING||r===V.INIT,u=Oe(t)||H(t),d=Ee({isPausing:n,isTask:i,taskStatus:a,isStartingStatus:l,isStopStatus:u,curAgentState:r}),f=Se({isPausing:n,isTask:i,taskStatus:a,taskDetail:o,isStartingStatus:l,isStopStatus:u,curAgentState:r,errorMessage:c,t:s});return(0,Q.jsx)(`div`,{className:e,"data-testid":`server-status`,children:(0,Q.jsxs)(`div`,{className:`flex items-center`,children:[(0,Q.jsx)(mi,{className:`w-6 h-6 shrink-0`,color:d}),(0,Q.jsx)(`span`,{className:`text-[13px] text-white font-normal`,children:f})]})})}function Bi({onClose:e,onStopServer:t,onStartServer:n,executionStatus:r,position:i=`top`,className:a=``,isPausing:o=!1}){let{t:s}=T(`openhands`),c=gt(e),l=be(r),u=H(r),d=l||u;return(0,Q.jsxs)(bt,{ref:c,testId:`server-status-context-menu`,position:i,alignment:`left`,size:`default`,className:U(`left-2 w-fit min-w-42`,a),children:[(0,Q.jsx)(zi,{executionStatus:r,isPausing:o,className:`pl-0 pr-2 py-1`}),d&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(He,{inset:`menu`}),l&&t&&(0,Q.jsx)(Ri,{icon:(0,Q.jsx)(Ii,{width:18,height:18}),text:s(E.COMMON$STOP_RUNTIME),onClick:t,testId:`stop-server-button`}),u&&n&&(0,Q.jsx)(Ri,{icon:(0,Q.jsx)(Li,{width:18,height:18}),text:s(E.COMMON$START_RUNTIME),onClick:n,testId:`start-server-button`})]})]})}var Vi=e(l(),1);function Hi({isPublic:e,onToggle:t,ariaLabel:n}){return(0,Q.jsxs)(`label`,{className:`relative inline-flex shrink-0 cursor-pointer items-center`,children:[(0,Q.jsx)(`input`,{hidden:!0,type:`checkbox`,"data-testid":`share-publicly-button`,checked:e,"aria-label":n,onChange:e=>t(e.target.checked)}),(0,Q.jsx)(`span`,{"aria-hidden":!0,className:U(`inline-flex h-3.5 w-7 items-center rounded-full px-0.5 py-px transition-colors duration-200 ease-in-out`,e?`bg-white`:`bg-base-secondary`),children:(0,Q.jsx)(`span`,{className:U(`block h-2 w-2 shrink-0 rounded-full transition-transform duration-200 ease-in-out`,e?`translate-x-[calc(1rem-1px)] bg-base-secondary`:`translate-x-px bg-tertiary-light`)})})]})}function Ui({onClose:e,onRename:t,onDelete:n,onStop:r,onDisplayCost:i,onShowAgentTools:a,onShowSkills:o,onShowHooks:s,onTogglePublic:c,onCopyShareLink:l,onDownloadConversation:u,shareUrl:d,position:f=`bottom`,anchorRef:p}){let m=Dn(),{t:h}=T(`openhands`),{backend:g}=A(),{data:_}=J(),v=on(),y=gt(e),b=p?.current??null,[x,S]=$.useState();$.useLayoutEffect(()=>{if(!b)return;let e=()=>{let e=b.getBoundingClientRect();if(!e)return;let t={position:`fixed`,zIndex:9999};f===`top`?t.bottom=window.innerHeight-e.top+8:t.top=e.bottom+8,t.left=e.left,S(t)};return e(),window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[b,f]);let C=!!(a||o||s),w=!!i,D=!!(r||n),O=g.kind===`cloud`?E.COMMON$CLOSE_CONVERSATION_STOP_RUNTIME:E.COMMON$STOP_CONVERSATION,k=g.kind===`cloud`&&!!c,j=_?.public||!1,M=!!b,ee=(0,Q.jsxs)(bt,{ref:y,testId:`conversation-name-context-menu`,position:f,alignment:`left`,className:U(m?`right-0 translate-x-[34%] left-auto`:``,M?`!static !top-auto !bottom-auto !left-auto !right-auto !mt-0`:``),children:[t&&(0,Q.jsx)(G,{testId:`rename-button`,onClick:t,children:(0,Q.jsx)(K,{icon:(0,Q.jsx)(Ct,{width:16,height:16}),text:h(E.BUTTON$RENAME)})}),C&&(0,Q.jsx)(He,{testId:`separator-tools`,inset:`menu`}),o&&(0,Q.jsx)(Ut,{isDisabled:v,children:(0,Q.jsx)(G,{testId:`show-skills-button`,onClick:o,isDisabled:v,children:(0,Q.jsx)(K,{icon:(0,Q.jsx)(wt,{width:16,height:16,className:`stroke-[1.75]`,"aria-hidden":!0}),text:h(E.CONVERSATION$SHOW_SKILLS)})})}),s&&(0,Q.jsx)(Ut,{isDisabled:v,children:(0,Q.jsx)(G,{testId:`show-hooks-button`,onClick:s,isDisabled:v,children:(0,Q.jsx)(K,{icon:(0,Q.jsx)(Yt,{width:16,height:16,"aria-hidden":!0}),text:h(E.CONVERSATION$SHOW_HOOKS)})})}),a&&(0,Q.jsx)(Ut,{isDisabled:v,children:(0,Q.jsx)(G,{testId:`show-agent-tools-button`,onClick:a,isDisabled:v,children:(0,Q.jsx)(K,{icon:(0,Q.jsx)(Ke,{width:16,height:16}),text:h(E.BUTTON$SHOW_AGENT_TOOLS_AND_METADATA)})})}),u&&(0,Q.jsx)(G,{testId:`download-trajectory-button`,onClick:u,children:(0,Q.jsx)(K,{icon:(0,Q.jsx)(ot,{width:16,height:16}),text:h(E.BUTTON$EXPORT_CONVERSATION)})}),(w||D)&&(0,Q.jsx)(He,{testId:`separator-info-control`,inset:`menu`}),i&&(0,Q.jsx)(G,{testId:`display-cost-button`,onClick:i,children:(0,Q.jsx)(K,{icon:(0,Q.jsx)(pt,{width:16,height:16}),text:h(E.BUTTON$DISPLAY_COST)})}),k&&c&&(0,Q.jsxs)(`li`,{className:`flex w-full items-center gap-2 rounded px-2 py-2 hover:bg-[var(--oh-interactive-hover)]`,children:[(0,Q.jsx)(`span`,{className:`flex shrink-0 items-center text-[var(--oh-muted)]`,"aria-hidden":!0,children:(0,Q.jsx)(jn,{size:16})}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm`,children:h(E.CONVERSATION$SHARE_PUBLICLY)}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center`,children:[j&&d&&l&&(0,Q.jsxs)(`div`,{className:`mr-2 flex items-center gap-0.5`,children:[(0,Q.jsx)(`button`,{type:`button`,"data-testid":`copy-share-link-button`,onClick:l,className:`rounded p-0.5 text-[var(--oh-muted)] hover:bg-[var(--oh-interactive-selected)] hover:text-[var(--oh-foreground)] cursor-pointer [&_svg]:text-current`,title:h(E.BUTTON$COPY_TO_CLIPBOARD),children:(0,Q.jsx)(Dt,{width:14,height:14})}),(0,Q.jsx)(`a`,{"data-testid":`open-share-link-button`,href:d,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>e.stopPropagation(),className:`rounded p-0.5 text-[var(--oh-muted)] no-underline visited:text-[var(--oh-muted)] hover:bg-[var(--oh-interactive-selected)] hover:text-[var(--oh-foreground)] cursor-pointer [&_svg]:text-current`,title:h(E.BUTTON$OPEN_IN_NEW_TAB),children:(0,Q.jsx)(fe,{size:14,"aria-hidden":!0})})]}),(0,Q.jsx)(Hi,{isPublic:j,onToggle:c,ariaLabel:h(E.CONVERSATION$SHARE_PUBLICLY)})]})]}),r&&(0,Q.jsx)(Ut,{isDisabled:v,children:(0,Q.jsx)(G,{testId:`stop-button`,onClick:r,isDisabled:v,children:(0,Q.jsx)(K,{icon:(0,Q.jsx)(Ue,{width:16,height:16}),text:h(O)})})}),n&&(0,Q.jsx)(G,{testId:`delete-button`,onClick:n,children:(0,Q.jsx)(K,{icon:(0,Q.jsx)(xt,{width:16,height:16}),text:h(E.COMMON$DELETE_CONVERSATION)})})]});return M?typeof document>`u`||!x?null:Vi.createPortal((0,Q.jsx)(`div`,{style:x,children:ee}),document.body):ee}function Wi({onClose:e}){let{t}=T(`openhands`);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Qe,{onClose:e,testId:`close-metrics-modal`}),(0,Q.jsx)(`div`,{className:`w-full pr-6`,children:(0,Q.jsx)(Fe,{title:t(E.CONVERSATION$METRICS_INFO)})})]})}function Gi({currentCost:e,maxBudget:t}){let n=e/t*100;return(0,Q.jsx)(`div`,{className:`w-full h-1.5 bg-tertiary rounded-full overflow-hidden mt-1`,children:(0,Q.jsx)(`div`,{className:U(`h-full transition-all duration-300`,n>80?`bg-red-500`:`bg-blue-500`),style:{width:`${Math.min(100,n)}%`}})})}function Ki({currentCost:e,maxBudget:t}){let{t:n}=T(`openhands`),r=e/t*100;return(0,Q.jsx)(`div`,{className:`flex justify-end`,children:(0,Q.jsx)(`span`,{className:`text-xs text-[var(--oh-muted)]`,children:n(E.CONVERSATION$BUDGET_USAGE_FORMAT,{currentCost:`$${e.toFixed(4)}`,maxBudget:`$${t.toFixed(4)}`,usagePercentage:r.toFixed(2),used:n(E.CONVERSATION$USED)})})})}function qi({cost:e,maxBudgetPerTask:t}){let{t:n}=T(`openhands`);return e===null?null:(0,Q.jsx)(`div`,{className:`border-b border-[var(--oh-border-subtle)]`,children:t!==null&&t>0?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Gi,{currentCost:e,maxBudget:t}),(0,Q.jsx)(Ki,{currentCost:e,maxBudget:t})]}):(0,Q.jsx)(`span`,{className:`text-xs text-[var(--oh-muted)]`,children:n(E.CONVERSATION$NO_BUDGET_LIMIT)})})}function Ji({cost:e,maxBudgetPerTask:t}){let{t:n}=T(`openhands`);return e===null?null:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`flex justify-between items-center pb-2`,children:[(0,Q.jsx)(`span`,{className:`text-lg font-semibold`,children:n(E.CONVERSATION$TOTAL_COST)}),(0,Q.jsxs)(`span`,{className:`font-semibold`,children:[`$`,e.toFixed(4)]})]}),(0,Q.jsx)(qi,{cost:e,maxBudgetPerTask:t})]})}function Yi({label:e,value:t,labelClassName:n=``,valueClassName:r=`font-semibold`}){return(0,Q.jsxs)(`div`,{className:`flex justify-between items-center border-b border-[var(--oh-border-subtle)] pb-2`,children:[(0,Q.jsx)(`span`,{className:n,children:e}),(0,Q.jsx)(`span`,{className:r,children:t})]})}function Xi({usage:e}){let{t}=T(`openhands`);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Yi,{label:t(E.CONVERSATION$INPUT),value:e.prompt_tokens.toLocaleString()}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 pl-4 text-sm`,children:[(0,Q.jsx)(`span`,{className:`text-[var(--oh-muted)]`,children:t(E.CONVERSATION$CACHE_HIT)}),(0,Q.jsx)(`span`,{className:`text-right`,children:e.cache_read_tokens.toLocaleString()}),(0,Q.jsx)(`span`,{className:`text-[var(--oh-muted)]`,children:t(E.CONVERSATION$CACHE_WRITE)}),(0,Q.jsx)(`span`,{className:`text-right`,children:e.cache_write_tokens.toLocaleString()})]}),(0,Q.jsx)(Yi,{label:t(E.CONVERSATION$OUTPUT),value:e.completion_tokens.toLocaleString()}),(0,Q.jsx)(Yi,{label:t(E.CONVERSATION$TOTAL),value:(e.prompt_tokens+e.completion_tokens).toLocaleString(),labelClassName:`font-semibold`,valueClassName:`font-bold`})]})}function Zi({perTurnToken:e,contextWindow:t}){let{t:n}=T(`openhands`),r=t>0?e/t*100:0,i=Math.min(100,r);return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,Q.jsx)(`span`,{className:`font-semibold`,children:n(E.CONVERSATION$CONTEXT_WINDOW)})}),(0,Q.jsx)(`div`,{className:`w-full h-1.5 bg-tertiary rounded-full overflow-hidden`,children:(0,Q.jsx)(`div`,{className:`h-full bg-foreground transition-all duration-300`,style:{width:`${i}%`}})}),(0,Q.jsx)(`div`,{className:`flex justify-end`,children:(0,Q.jsxs)(`span`,{className:`text-xs text-[var(--oh-muted)]`,children:[e.toLocaleString(),` / `,t.toLocaleString(),` (`,r.toFixed(2),`% `,n(E.CONVERSATION$USED),`)`]})})]})}function Qi(){let{t:e}=T(`openhands`);return(0,Q.jsx)(`div`,{className:`text-center`,children:(0,Q.jsx)(`p`,{className:`text-[var(--oh-muted)]`,children:e(E.CONVERSATION$NO_METRICS)})})}function $i(e){let{stats:t}=e;if(!t?.usage_to_metrics)return{accumulated_cost:0,max_budget_per_task:null,accumulated_token_usage:null};let n=0,r=null,i=null;for(let e of Object.values(t.usage_to_metrics))n+=e.accumulated_cost,r===null&&e.max_budget_per_task!==null&&(r=e.max_budget_per_task),e.accumulated_token_usage&&(i=i===null?{...e.accumulated_token_usage}:{prompt_tokens:i.prompt_tokens+e.accumulated_token_usage.prompt_tokens,completion_tokens:i.completion_tokens+e.accumulated_token_usage.completion_tokens,cache_read_tokens:i.cache_read_tokens+e.accumulated_token_usage.cache_read_tokens,cache_write_tokens:i.cache_write_tokens+e.accumulated_token_usage.cache_write_tokens,context_window:Math.max(i.context_window,e.accumulated_token_usage.context_window),per_turn_token:Math.max(i.per_turn_token,e.accumulated_token_usage.per_turn_token)});return{accumulated_cost:n,max_budget_per_task:r,accumulated_token_usage:i}}var ea=(e,t,n,r=!0)=>{let i=C({queryKey:[`conversation-metrics`,e,t,n],queryFn:async()=>{if(!e)throw Error(`Conversation ID is required`);return $i(await it.getRuntimeConversation(e,t,n))},enabled:r&&!!e&&!!t,staleTime:1e3*30,gcTime:1e3*60*5,refetchInterval:1e3*30,retry:!1});return{data:i.data,isLoading:i.isLoading,error:i.error}};function ta({isOpen:e,onOpenChange:t}){let n=yn(),{data:r}=J(),i=r?.id,a=r?.conversation_url,o=r?.session_api_key,{data:s}=ea(i,a,o,e),c=(0,$.useMemo)(()=>s?{cost:s.accumulated_cost,max_budget_per_task:s.max_budget_per_task,usage:s.accumulated_token_usage?{prompt_tokens:s.accumulated_token_usage.prompt_tokens??0,completion_tokens:s.accumulated_token_usage.completion_tokens??0,cache_read_tokens:s.accumulated_token_usage.cache_read_tokens??0,cache_write_tokens:s.accumulated_token_usage.cache_write_tokens??0,context_window:s.accumulated_token_usage.context_window??0,per_turn_token:s.accumulated_token_usage.per_turn_token??0}:null}:n,[s,n]);return e?(0,Q.jsx)(Ne,{onClose:()=>t(!1),children:(0,Q.jsxs)(Pe,{testID:`metrics-modal`,className:`relative items-start border border-[var(--oh-border)]`,children:[(0,Q.jsx)(Wi,{onClose:()=>t(!1)}),(0,Q.jsxs)(`div`,{className:`w-full`,children:[(c?.cost!==null||c?.usage!==null)&&(0,Q.jsx)(`div`,{className:`rounded-md border border-[var(--oh-border)] bg-surface-raised p-3`,children:(0,Q.jsxs)(`div`,{className:`grid gap-3`,children:[(0,Q.jsx)(Ji,{cost:c?.cost??null,maxBudgetPerTask:c?.max_budget_per_task??null}),c?.usage!==null&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Xi,{usage:c.usage}),(0,Q.jsx)(Zi,{perTurnToken:c.usage.per_turn_token,contextWindow:c.usage.context_window})]})]})}),!c?.cost&&!c?.usage&&(0,Q.jsx)(`div`,{className:`rounded-md border border-[var(--oh-border)] bg-surface-raised p-3`,children:(0,Q.jsx)(Qi,{})})]})]})}):null}function na(){let{t:e}=T(`openhands`),{conversationId:t}=q(),{data:n}=J(),{mutate:r}=ht(),[i,a]=$.useState(`view`),[o,s]=$.useState(!1),c=$.useRef(null),l=$.useRef(null),{handleDelete:u,handleStop:d,handleDownloadConversation:f,handleDisplayCost:p,handleShowAgentTools:m,handleShowSkills:h,handleShowHooks:g,handleTogglePublic:_,handleCopyShareLink:v,shareUrl:y,handleConfirmDelete:b,handleConfirmStop:x,metricsModalVisible:S,setMetricsModalVisible:C,systemModalVisible:w,setSystemModalVisible:D,skillsModalVisible:k,setSkillsModalVisible:A,hooksModalVisible:j,setHooksModalVisible:M,confirmDeleteModalVisible:ee,setConfirmDeleteModalVisible:te,confirmStopModalVisible:N,setConfirmStopModalVisible:P,systemMessage:F,shouldShowStop:ne,shouldShowDownloadConversation:re,shouldShowDisplayCost:ie,shouldShowAgentTools:I,shouldShowSkills:L,shouldShowHooks:ae}=Jt({conversationId:t,executionStatus:n?.execution_status,showOptions:!0,onContextMenuToggle:s});return $.useEffect(()=>{i===`edit`&&c.current?.focus()},[i]),n?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 h-[22px] text-base font-normal text-left pl-0 lg:pl-1 min-w-0`,"data-testid":`conversation-name`,children:[i===`edit`?(0,Q.jsx)(`input`,{ref:c,"data-testid":`conversation-name-input`,onClick:e=>{i===`edit`&&(e.preventDefault(),e.stopPropagation())},onBlur:()=>{if(c.current?.value&&t){let i=c.current.value.trim();i!==n?.title&&r({conversationId:t,newTitle:i},{onSuccess:()=>{O(e(E.CONVERSATION$TITLE_UPDATED))}})}else c.current&&(c.current.value=n?.title??``);a(`view`)},onKeyUp:e=>{e.nativeEvent.isComposing||e.key===`Enter`&&e.currentTarget.blur()},type:`text`,defaultValue:n.title||``,className:`text-white leading-5 bg-transparent border-none outline-none text-base font-normal w-fit max-w-fit field-sizing-content`}):(0,Q.jsx)(`div`,{className:`text-white leading-5 truncate`,"data-testid":`conversation-name-title`,onDoubleClick:()=>{a(`edit`)},title:n.title||``,children:n.title}),i!==`edit`&&(0,Q.jsxs)(`div`,{ref:l,className:`relative flex items-center shrink-0`,children:[(0,Q.jsx)(St,{onClick:e=>{e.preventDefault(),e.stopPropagation(),s(!o)}}),o&&(0,Q.jsx)(Ui,{onClose:()=>s(!1),onRename:e=>{e.preventDefault(),e.stopPropagation(),a(`edit`),s(!1)},onDelete:u,onStop:ne?d:void 0,onDisplayCost:ie?p:void 0,onShowAgentTools:I?m:void 0,onShowSkills:L?h:void 0,onShowHooks:ae?g:void 0,onTogglePublic:_,onCopyShareLink:v,shareUrl:y,onDownloadConversation:re?f:void 0,position:`bottom`,anchorRef:l})]})]}),(0,Q.jsx)(ta,{isOpen:S,onOpenChange:C}),(0,Q.jsx)(nn,{isOpen:w,onClose:()=>D(!1),systemMessage:F||null}),k&&(0,Q.jsx)(Vt,{onClose:()=>A(!1)}),j&&(0,Q.jsx)(Gt,{onClose:()=>M(!1)}),ee&&(0,Q.jsx)(ct,{onConfirm:b,onCancel:()=>te(!1),conversationTitle:n?.title||``}),N&&(0,Q.jsx)(st,{onConfirm:x,onCancel:()=>P(!1)})]}):null}function ra({children:e,tooltip:t,ariaLabel:n}){return(0,Q.jsx)(ze,{content:t,placement:`bottom`,tooltipClassName:`bg-white text-black text-xs font-medium leading-5`,children:(0,Q.jsx)(`span`,{"data-aria-label":n,children:e})})}function ia({className:e}){let{t}=T(`openhands`),n=Dn(),r=on(),i=f(),{conversationId:a}=q(),{isRightPanelShown:o,setHasRightPanelToggled:s,setIsRightPanelShown:c,setSelectedTab:l}=W(),u=()=>{if(r)return;if(n){if(!a)return;s(!0),c(!0);let{selectedTab:e}=W.getState();e||l(`files`),i(`/conversations/${a}/panel`);return}let e=!o;if(s(e),e){let{selectedTab:e}=W.getState();e||l(`files`)}},d=t(r?E.CONVERSATION$UNAVAILABLE_FOR_ARCHIVES:n?E.COMMON$SHOW_PANEL:o?E.COMMON$HIDE_PANEL:E.COMMON$SHOW_PANEL),p=n?!1:o;return(0,Q.jsx)(ra,{tooltip:d,ariaLabel:d,children:(0,Q.jsx)(`button`,{type:`button`,onClick:u,disabled:r,className:U(ft,r&&`cursor-not-allowed opacity-50 hover:bg-transparent hover:text-[var(--oh-muted)]`,e),"aria-label":d,"aria-pressed":p,"aria-disabled":r,"data-testid":`right-panel-toggle`,children:(0,Q.jsx)(dt,{className:`w-5 h-5 -scale-x-100`})})})}function aa(){let{conversationId:e}=q(),{data:t}=J(),{curAgentState:n}=Y(),{isTask:r,taskStatus:i}=Ft(),{mutate:a}=We(),{mutate:o}=Fi(),{providers:s}=qe(),c=t?.execution_status??null,l=Ee({isPausing:!1,isTask:r,taskStatus:i,isStartingStatus:n===V.LOADING||n===V.INIT,isStopStatus:Oe(c),curAgentState:n});return(0,Q.jsxs)(`div`,{className:`flex items-center justify-between w-full`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center min-w-0`,children:[(0,Q.jsxs)(`div`,{className:`group relative shrink-0`,children:[(0,Q.jsx)(mi,{className:`ml-[3.5px] w-6 h-6 cursor-pointer`,color:l}),(0,Q.jsx)(Bi,{onClose:()=>{},onStopServer:be(c)?t=>{t.preventDefault(),t.stopPropagation(),e&&a({conversationId:e})}:void 0,onStartServer:H(c)?t=>{t.preventDefault(),t.stopPropagation(),e&&o({conversationId:e,providers:s})}:void 0,executionStatus:c,position:`bottom`,className:`opacity-0 invisible pointer-events-none group-hover:opacity-100 group-hover:visible group-hover:pointer-events-auto bottom-full left-0 mt-0 min-h-fit`,isPausing:!1})]}),(0,Q.jsx)(na,{})]}),(0,Q.jsx)(ia,{className:`mr-2`})]})}var oa=e=>(0,Q.jsxs)(`svg`,{width:20,height:20,viewBox:`0 0 20 20`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,Q.jsx)(`path`,{d:`M3 10.5L6.5 14L14 6`,stroke:`currentColor`,strokeWidth:2.2,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,Q.jsx)(`path`,{d:`M7 10.5L10.5 14L18 6`,stroke:`currentColor`,strokeWidth:2.2,strokeLinecap:`round`,strokeLinejoin:`round`})]}),sa=160,ca={duration:.22,ease:[.4,0,.2,1]};function la({tabValue:e,icon:t,onClick:n,isActive:r,label:i,className:a,measureOnly:o,suppressLayoutAnimation:s=!1}){let c=P(),l=o||c||!1,u=!l&&!s,d=U(`flex items-center rounded-md cursor-pointer`,`pl-1.5 pr-2 py-1 lg:py-1.5`,`text-[var(--oh-muted)] bg-transparent`,r&&`bg-[var(--oh-interactive-active)] text-white`,r?`hover:text-white hover:bg-[var(--oh-interactive-hover)]`:`hover:text-white hover:bg-white/5`,r?`focus-within:text-white`:`focus-within:text-[var(--oh-muted)]`,a),f=(0,Q.jsx)(t,{className:U(`h-4 w-4 shrink-0 text-inherit`)}),p=i&&r?(0,Q.jsx)(`span`,{className:`whitespace-nowrap text-sm font-normal`,children:i}):null,m=i?(0,Q.jsx)(z.span,{initial:!1,animate:{maxWidth:r?sa:0,opacity:+!!r,marginLeft:r?8:0},transition:ca,className:`block overflow-hidden whitespace-nowrap text-sm font-normal`,"aria-hidden":!r,children:i}):null;return l?(0,Q.jsxs)(`button`,{type:`button`,onClick:n,...o?{}:{"data-testid":`conversation-tab-${e}`},"data-tab-measure":o?`true`:void 0,className:U(d,`gap-2`),children:[f,p]}):(0,Q.jsxs)(z.button,{layout:u?`position`:!1,type:`button`,onClick:n,...o?{}:{"data-testid":`conversation-tab-${e}`},"data-tab-measure":o?`true`:void 0,className:d,transition:u?{layout:ca}:void 0,children:[f,m]})}var ua=e=>(0,Q.jsx)(`svg`,{viewBox:`0 0 128 128`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,Q.jsx)(`path`,{fill:`currentColor`,fillRule:`evenodd`,clipRule:`evenodd`,d:`M90.767 127.126a7.968 7.968 0 0 0 6.35-.244l26.353-12.681a8 8 0 0 0 4.53-7.209V21.009a8 8 0 0 0-4.53-7.21L97.117 1.12a7.97 7.97 0 0 0-9.093 1.548l-50.45 46.026L15.6 32.013a5.328 5.328 0 0 0-6.807.302l-7.048 6.411a5.335 5.335 0 0 0-.006 7.888L20.796 64 1.74 81.387a5.336 5.336 0 0 0 .006 7.887l7.048 6.411a5.327 5.327 0 0 0 6.807.303l21.974-16.68 50.45 46.025a7.96 7.96 0 0 0 2.743 1.793Zm5.252-92.183L57.74 64l38.28 29.058V34.943Z`})});function da(){let e=Ae().backend;if(e.kind!==`cloud`)throw Error(`Cloud sandboxes call requires a cloud backend.`);return e}async function fa(e){if(e.length===0)return[];let t=da(),n=new URLSearchParams;for(let t of e)n.append(`id`,t);return await Me({backend:t,method:`GET`,path:`/api/v1/sandboxes?${n.toString()}`})??[]}var pa=e=>{let t=A(),n=t.backend.kind===`cloud`;return C({queryKey:[`cloud`,`sandbox`,t.backend.id,t.orgId,e],queryFn:async()=>{if(!e)return null;let[t]=await fa([e]);return t??null},enabled:n&&!!e,staleTime:1e3*60*5,gcTime:1e3*60*15})},ma=`VSCODE`,ha=()=>{let{t:e}=T(`openhands`),{conversationId:t}=q(),n=Tn({allowAgentError:!0}),{data:r}=J(),i=A(),a=r?.conversation_url??null,o=r?.session_api_key??null,s=r?.sandbox_id??null,c=i.backend.kind===`cloud`,l=pa(c?s:null),u=C({queryKey:[`unified`,`vscode_url`,`local`,t,a,o],queryFn:async()=>{if(!t)throw Error(`No conversation ID`);return{url:ut((await it.getVSCodeUrl(t,a,o).catch(()=>yt.getVSCodeUrl(t))).vscode_url)}},enabled:!c&&n&&!!t,refetchOnMount:!0,retry:3}),d,f,p,m,h,g,_;if(c){let e=l.data?.exposed_urls?.find(e=>e.name===ma)?.url??null;d=l.isSuccess?{url:ut(e)}:void 0,f=l.isLoading,p=l.isError,m=l.isSuccess,h=l.status,g=l.error,_=async()=>{let e=await l.refetch(),t=e.data?.exposed_urls?.find(e=>e.name===ma)?.url??null;return{data:e.data?{url:ut(t)}:void 0}}}else d=u.data,f=u.isLoading,p=u.isError,m=u.isSuccess,h=u.status,g=u.error,_=async()=>({data:(await u.refetch()).data});let v=d&&!d.url?e(E.VSCODE$URL_NOT_AVAILABLE):null;return{data:d?{...d,error:v}:void 0,error:g,isLoading:f,isError:p,isSuccess:m,status:h,refetch:_}};function ga(){let{t:e}=T(`openhands`),{curAgentState:t}=Y(),{data:n,refetch:r,isLoading:i}=ha(),a=ye.includes(t);return(0,Q.jsxs)(`button`,{type:`button`,onClick:async()=>{let e=n?.url;e||=(await r()).data?.url??null,e&&window.open(e,`_blank`,`noopener,noreferrer`)},disabled:i||a,"aria-label":e(E.VSCODE$OPEN),title:e(E.VSCODE$OPEN),"data-testid":`drawer-vscode-link`,className:U(`inline-flex items-center gap-1.5 rounded-[7px] border border-[var(--oh-border)] bg-base-secondary px-2 py-1 text-xs`,`text-[var(--oh-muted)] transition-colors hover:enabled:bg-surface-raised hover:enabled:text-white`,`cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed`),children:[(0,Q.jsx)(ua,{className:`h-[15px] w-[15px] shrink-0`,"aria-hidden":!0}),(0,Q.jsx)(`span`,{children:e(E.FILES$VSCODE)}),(0,Q.jsx)(fe,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0,strokeWidth:2})]})}var _a=e=>(0,Q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Q.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M7.13832 8.76476C8.25957 8.17949 9.52697 7.9727 10.7515 8.14436L14.9025 2.52826L21.4717 9.09737L15.8555 13.2484C16.0272 14.4729 15.8204 15.7403 15.2351 16.8616C15.1872 16.9535 15.1366 17.0444 15.0836 17.1343C14.8318 17.5605 14.5228 17.9624 14.1566 18.3286L10.4443 14.6163L4.75207 20.3085H3.69141V19.2478L9.38361 13.5556L5.6713 9.84332C6.03755 9.47708 6.43936 9.16808 6.86562 8.91632C6.95547 8.86326 7.04641 8.81274 7.13832 8.76476ZM15.0735 4.82054L19.1794 8.92641L14.2461 12.5727L14.3701 13.4567C14.492 14.3266 14.3596 15.2233 13.9758 16.0265L7.97338 10.0241C8.77665 9.64035 9.67335 9.50789 10.5432 9.62984L11.4272 9.75376L15.0735 4.82054Z`,fill:`currentColor`})}),va=e=>(0,Q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Q.jsx)(`path`,{d:`M10.9706 10.1586C10.2819 10.0621 9.56905 10.1784 8.93842 10.5075C8.88672 10.5345 8.83557 10.5629 8.78504 10.5928C8.54529 10.7344 8.3193 10.9082 8.11331 11.1142L9.83702 12.8372L7.00054 15.75L7 17H8.25064L11.1628 14.1632L12.8857 15.8865C13.0917 15.6805 13.2655 15.4545 13.4071 15.2147C13.437 15.1642 13.4654 15.1131 13.4924 15.0614C13.8215 14.4308 13.9378 13.718 13.8413 13.0293L17 10.6946L13.3053 7L10.9706 10.1586Z`,fill:`currentColor`})});function ya({isOpen:e,onClose:t,ignoreOutsideClickRef:n,anchorRef:r}){let i=gt(t,n),[a,o]=(0,$.useState)();(0,$.useLayoutEffect)(()=>{if(!e||!r?.current){o(void 0);return}let t=()=>{let e=r.current?.getBoundingClientRect();e&&o({position:`fixed`,zIndex:9999,top:e.bottom+8,left:e.left})};return t(),window.addEventListener(`resize`,t),window.addEventListener(`scroll`,t,!0),()=>{window.removeEventListener(`resize`,t),window.removeEventListener(`scroll`,t,!0)}},[e,r]);let{t:s}=T(`openhands`),{conversationId:c}=q(),{state:l,setUnpinnedTabs:u,setSelectedTab:d}=Ze(c),{selectedTab:f,isRightPanelShown:p,setSelectedTab:m}=W(),{navigateToTab:h}=R(),{hasTaskList:g}=On(),{backend:_}=A(),v=on(),y=[{tab:`planner`,icon:B,i18nKey:E.COMMON$PLANNER},{tab:`files`,icon:kt,i18nKey:E.COMMON$FILES},{tab:`terminal`,icon:me,i18nKey:E.COMMON$TERMINAL},{tab:`browser`,icon:An,i18nKey:E.COMMON$BROWSER}];g&&y.unshift({tab:`tasklist`,icon:oa,i18nKey:E.COMMON$TASK_LIST});let b=y.filter(({tab:e})=>e!==`planner`||_.kind===`cloud`),x=e=>{v||(h(e),t())},S=(e,t)=>{if(v){t.preventDefault(),t.stopPropagation();return}if(t.preventDefault(),t.stopPropagation(),l.unpinnedTabs.includes(e))u(l.unpinnedTabs.filter(t=>t!==e));else{let t=[...l.unpinnedTabs,e];if(u(t),f===e&&p){let n=b.find(({tab:n})=>n!==e&&!t.includes(n));n&&(m(n.tab),d(n.tab))}}};if(!e)return null;let C=!!(r?.current&&a),w=(0,Q.jsx)(bt,{ref:i,theme:C?`popover`:`default`,position:C?`none`:`bottom`,alignment:C?`none`:`left`,spacing:C?`none`:`default`,className:U(`z-[9999] w-fit`,C?`mt-0`:`mt-2`),children:b.map(({tab:e,icon:t,i18nKey:n})=>{let r=!l.unpinnedTabs.includes(e);return(0,Q.jsx)(`li`,{className:`list-none`,children:(0,Q.jsx)(Ut,{isDisabled:v,children:(0,Q.jsxs)(`div`,{className:U(`group flex h-[30px] w-full min-w-0 items-stretch rounded`,!v&&`hover:bg-[var(--oh-interactive-hover)]`,v&&`opacity-50`),children:[(0,Q.jsxs)(`button`,{type:`button`,"data-testid":`conversation-tabs-menu-open-${e}`,disabled:v,className:U(`flex min-w-0 flex-1 items-center gap-2 rounded-l p-2 text-start text-white`,Be,v?`cursor-not-allowed`:`cursor-pointer`),onClick:()=>x(e),children:[(0,Q.jsx)(`span`,{className:Ve,"aria-hidden":!0,children:(0,Q.jsx)(t,{className:`h-4 w-4`})}),(0,Q.jsx)(`span`,{className:`text-sm`,children:s(n)})]}),(0,Q.jsx)(`button`,{type:`button`,"data-testid":`conversation-tabs-menu-pin-${e}`,disabled:v,className:U(`flex shrink-0 items-center justify-center rounded-r px-2 text-white`,Be,v?`cursor-not-allowed`:`cursor-pointer hover:bg-white/10`),"aria-pressed":r,"aria-label":s(r?E.CONVERSATION$UNPIN_TAB:E.CONVERSATION$PIN_TAB),onClick:t=>S(e,t),children:r?(0,Q.jsx)(`span`,{className:U(`-mr-[5px] ml-auto`,Ve),"aria-hidden":!0,children:(0,Q.jsx)(va,{className:`h-7 w-7`})}):(0,Q.jsx)(`span`,{className:U(`ml-auto`,Ve),"aria-hidden":!0,children:(0,Q.jsx)(_a,{className:`h-4.5 w-4.5`})})})]})})},e)})});return C&&a&&typeof document<`u`?Vi.createPortal((0,Q.jsx)(`div`,{style:a,children:w}),document.body):w}function ba({variant:e=`default`,isPanelResizing:t=!1}){let{conversationId:n}=q(),{setSelectedTab:r,planContent:i}=W(),[a,o]=(0,$.useState)(!1),{state:s}=Ze(n),{hasTaskList:c}=On(),{backend:l}=A(),{handleBuildPlanClick:u}=L(),{curAgentState:d}=Y(),{selectTab:f,isTabActive:p,onTabChange:m,selectedTab:h,isRightPanelShown:g}=R();(0,$.useEffect)(()=>{r(s.selectedTab)},[r,s.selectedTab]),(0,$.useEffect)(()=>{g&&(h||m(`files`))},[g,h,m]);let{t:_,i18n:v}=T(`openhands`),y=[{tabValue:`files`,isActive:p(`files`),icon:kt,onClick:()=>f(`files`),tooltipContent:_(E.COMMON$FILES),tooltipAriaLabel:_(E.COMMON$FILES),label:_(E.COMMON$FILES)},{tabValue:`planner`,isActive:p(`planner`),icon:B,onClick:()=>f(`planner`),tooltipContent:_(E.COMMON$PLANNER),tooltipAriaLabel:_(E.COMMON$PLANNER),label:_(E.COMMON$PLANNER)},{tabValue:`terminal`,isActive:p(`terminal`),icon:me,onClick:()=>f(`terminal`),tooltipContent:_(E.COMMON$TERMINAL),tooltipAriaLabel:_(E.COMMON$TERMINAL),label:_(E.COMMON$TERMINAL),className:`pl-2`},{tabValue:`browser`,isActive:p(`browser`),icon:An,onClick:()=>f(`browser`),tooltipContent:_(E.COMMON$BROWSER),tooltipAriaLabel:_(E.COMMON$BROWSER),label:_(E.COMMON$BROWSER)}];c&&y.splice(1,0,{tabValue:`tasklist`,isActive:p(`tasklist`),icon:oa,onClick:()=>f(`tasklist`),tooltipContent:_(E.COMMON$TASK_LIST),tooltipAriaLabel:_(E.COMMON$TASK_LIST),label:_(E.COMMON$TASK_LIST)});let b=y.filter(e=>e.tabValue===`planner`&&l.kind!==`cloud`?!1:s.unpinnedTabs.includes(e.tabValue)?h===e.tabValue:!0),x=s.unpinnedTabs.join(`,`),S=d===V.RUNNING||d===V.LOADING||!i,C=(0,$.useRef)(null),w=(0,$.useRef)(null),D=(0,$.useRef)(null),O=(0,$.useRef)(null),k=(0,$.useRef)(null),[j,M]=(0,$.useState)(b.length);(0,$.useLayoutEffect)(()=>{let e=C.current,t=w.current,n=D.current,r=O.current;if(!e||!t||!n||!r)return;let i=()=>{let i=t.querySelectorAll(`[data-tab-measure="true"]`),a=i.length,o=e.getBoundingClientRect().width;if(o===0){M(a);return}let s=Array.from(i).map(e=>e.getBoundingClientRect().width);if(s.length!==a||a===0){M(Math.max(0,a));return}let c=n.getBoundingClientRect().width,l=r.getBoundingClientRect().width,u=getComputedStyle(e).columnGap||getComputedStyle(e).gap,d=parseFloat(u)||6,f=0;for(let e=a;e>=0;--e){let t=c+l;for(let n=0;n<e;n+=1)t+=s[n]??0;if(e>0&&(t+=e*d),t<=o+.5){f=e;break}}M(e=>e===f?e:f)};if(i(),typeof ResizeObserver>`u`)return;let a=new ResizeObserver(i);return a.observe(e),()=>a.disconnect()},[x,b.length,c,l.kind,h,g,v.language]);let ee=Math.min(j,b.length);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:U(`relative w-full min-w-0`,e===`compact`?`flex h-full min-h-0 items-center py-0 pl-0 pr-1`:`min-h-10 p-1`),children:[(0,Q.jsx)(`div`,{ref:w,"aria-hidden":!0,className:`pointer-events-none absolute top-0 left-[-10000px] flex flex-nowrap items-center gap-1.5`,children:b.map(({tabValue:e,icon:t,isActive:n,tooltipContent:r,tooltipAriaLabel:i,label:a,className:o},s)=>(0,Q.jsx)(ra,{tooltip:r,ariaLabel:i,children:(0,Q.jsx)(la,{tabValue:e,icon:t,onClick:()=>{},isActive:n,label:a,className:U(o,`shrink-0`),measureOnly:!0})},`measure-${e}-${s}`))}),(0,Q.jsxs)(`div`,{ref:C,className:`flex w-full min-w-0 flex-nowrap items-center justify-start`,children:[(0,Q.jsx)(`div`,{className:`flex min-w-0 flex-1 items-center justify-start overflow-hidden`,children:(0,Q.jsxs)(`div`,{className:`flex w-fit max-w-full min-w-0 items-center gap-1.5`,children:[(0,Q.jsx)(zn,{id:`conversation-drawer-tabs`,children:(0,Q.jsx)(`div`,{className:`flex w-fit max-w-full min-w-0 flex-nowrap items-center gap-1.5 overflow-x-hidden`,children:b.slice(0,ee).map(({tabValue:e,icon:n,onClick:r,isActive:i,tooltipContent:a,tooltipAriaLabel:o,label:s,className:c},l)=>(0,Q.jsx)(ra,{tooltip:a,ariaLabel:o,children:(0,Q.jsx)(la,{tabValue:e,icon:n,onClick:r,isActive:i,label:s,className:U(c,`shrink-0`),suppressLayoutAnimation:t})},`${e}-${l}`))})}),(0,Q.jsxs)(`div`,{ref:D,className:`relative shrink-0`,children:[(0,Q.jsx)(St,{ref:k,onClick:()=>o(!a),ariaLabel:_(E.COMMON$MORE_OPTIONS),iconClassName:e===`compact`?lt:void 0}),(0,Q.jsx)(ya,{isOpen:a,onClose:()=>o(!1),ignoreOutsideClickRef:k,anchorRef:k})]})]})}),(0,Q.jsx)(`div`,{ref:O,className:U(`ml-auto shrink-0`,l.kind===`cloud`&&`pr-1`),children:l.kind===`cloud`&&(0,Q.jsx)(ga,{})})]})]}),p(`planner`)&&(0,Q.jsx)(`div`,{className:U(`flex h-10 min-h-10 shrink-0 items-center border-t border-[var(--oh-border)] pl-[10px] pr-1`),children:(0,Q.jsx)(`button`,{type:`button`,onClick:u,disabled:S,className:U(`flex h-5 min-w-17 items-center justify-center rounded bg-white px-2 transition-opacity`,S?`cursor-not-allowed opacity-50`:`cursor-pointer hover:opacity-90`),"data-testid":`planner-tab-build-button`,children:(0,Q.jsxs)(Ot.Text,{className:`text-[11px] font-normal leading-5 text-black`,children:[_(E.COMMON$BUILD),` ⌘↩`]})})})]})}function xa({onMouseDown:e,className:t,isDragging:n=!1}){let[r,i]=(0,$.useState)(!1),a=n||r;return(0,Q.jsxs)(`div`,{className:U(`relative z-10 w-0 shrink-0 self-stretch`,t),"aria-hidden":!0,children:[(0,Q.jsx)(`div`,{className:`absolute inset-y-0 left-1/2 w-3 min-w-[12px] -translate-x-1/2 cursor-ew-resize`,onMouseDown:e,onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1)}),(0,Q.jsx)(`div`,{className:U(`pointer-events-none absolute inset-y-0 left-1/2 w-px -translate-x-1/2 transition-colors`,a?`bg-white`:`bg-transparent`),"aria-hidden":!0})]})}var Sa=200;function Ca({defaultLeftWidth:e=50,minLeftWidth:t=30,maxLeftWidth:n=80,storageKey:r=`desktop-layout-panel-width`}={}){let[i,a]=kn(r,e),o=(0,$.useCallback)(e=>Math.max(t,Math.min(n,e)),[t,n]),[s,c]=(0,$.useState)(()=>o(i)),[l,u]=(0,$.useState)(!1),d=(0,$.useRef)(null),f=(0,$.useCallback)(e=>{e.preventDefault(),u(!0)},[]),p=(0,$.useCallback)(e=>{if(!l||!d.current)return;let t=d.current.getBoundingClientRect();c(o((e.clientX-t.left)/t.width*100))},[l,o]),m=(0,$.useCallback)(()=>{l&&(u(!1),a(s))},[l,s,a]);return(0,$.useLayoutEffect)(()=>{if(!l)return;let e=document.createElement(`div`);return e.setAttribute(`aria-hidden`,`true`),e.dataset.panelDragShield=``,Object.assign(e.style,{position:`fixed`,inset:`0`,zIndex:String(Sa),cursor:`ew-resize`}),document.body.appendChild(e),document.addEventListener(`mousemove`,p),document.addEventListener(`mouseup`,m),document.body.style.cursor=`ew-resize`,document.body.style.userSelect=`none`,()=>{document.removeEventListener(`mousemove`,p),document.removeEventListener(`mouseup`,m),document.body.style.cursor=``,document.body.style.userSelect=``,e.remove()}},[l,p,m]),{leftWidth:s,rightWidth:100-s,isDragging:l,containerRef:d,handleMouseDown:f}}function wa(e){return e?`translate-x-0 opacity-100`:`w-0 translate-x-full opacity-0`}function Ta(){let e=Dn(),t=Dn(767),{isRightPanelShown:n}=W(),{leftWidth:r,rightWidth:i,isDragging:a,containerRef:o,handleMouseDown:s}=Ca({defaultLeftWidth:50,minLeftWidth:30,maxLeftWidth:80,storageKey:`desktop-layout-panel-width`});return(0,Q.jsx)(`div`,{className:U(e?`relative min-h-0 flex-1 flex flex-col`:`h-full flex flex-col overflow-hidden`),children:(0,Q.jsxs)(`div`,{ref:o,className:U(`flex flex-1 overflow-hidden`,e?`flex-col`:`transition-all duration-300 ease-in-out`),style:e?void 0:{transitionProperty:a?`none`:`all`},children:[(0,Q.jsxs)(`div`,{className:U(`flex flex-col bg-base overflow-hidden`,e?`flex-1`:`transition-all duration-300 ease-in-out`),style:e?void 0:{width:n?`${r}%`:`100%`,transitionProperty:a?`none`:`all`},children:[(0,Q.jsxs)(`div`,{"data-testid":`chat-pane-header`,className:U(`flex h-10 min-h-10 shrink-0 items-center`,t&&`gap-2 pl-2.5`),children:[t?(0,Q.jsx)(mt,{}):null,(0,Q.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Q.jsx)(aa,{})})]}),(0,Q.jsx)(`div`,{className:`flex-1 min-h-0 flex flex-col`,children:(0,Q.jsx)(yi,{isRightPanelShown:!e&&n})})]}),!e&&n&&(0,Q.jsx)(xa,{onMouseDown:s,isDragging:a}),!e&&(0,Q.jsx)(`div`,{className:U(`transition-all duration-300 ease-in-out overflow-hidden`,wa(n)),style:{width:n?`${i}%`:`0%`,transitionProperty:a?`opacity, transform`:`all`},children:(0,Q.jsx)(`div`,{className:`flex h-full w-full flex-col`,children:(0,Q.jsxs)(`div`,{className:`flex flex-col flex-1 min-h-0 bg-[var(--oh-surface)] border-l border-[var(--oh-border)] overflow-hidden`,children:[(0,Q.jsx)(`div`,{"data-testid":`tabs-pane-header`,className:`flex shrink-0 flex-col border-b border-[var(--oh-border)]`,children:(0,Q.jsx)(ba,{isPanelResizing:a})}),(0,Q.jsx)(`div`,{className:`flex-1 min-h-0 flex flex-col`,children:(0,Q.jsx)(Pi,{})})]})})})]})})}function Ea({onNavigateBack:e}){let{t}=T(`openhands`),{setIsRightPanelShown:n,setHasRightPanelToggled:r,setSelectedTab:i}=W();return $.useLayoutEffect(()=>(n(!0),r(!0),W.getState().selectedTab||i(`files`),()=>{n(!1),r(!1)}),[n,r,i]),(0,Q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-[var(--oh-surface)]`,children:[(0,Q.jsxs)(`div`,{"data-testid":`conversation-mobile-panel-top`,className:`flex h-10 min-h-10 shrink-0 items-center gap-1.5 border-b border-[var(--oh-border)] pl-2.5`,children:[(0,Q.jsx)(`button`,{type:`button`,"data-testid":`conversation-mobile-panel-back`,onClick:()=>{e()},"aria-label":t(E.COMMON$BACK),className:ft,children:(0,Q.jsx)(ue,{size:20,className:lt,"aria-hidden":!0,strokeWidth:2})}),(0,Q.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-1 items-center self-stretch`,children:(0,Q.jsx)(`div`,{"data-testid":`tabs-pane-header`,className:`flex h-full min-h-0 w-full min-w-0 flex-col justify-center`,children:(0,Q.jsx)(ba,{variant:`compact`})})})]}),(0,Q.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col bg-[var(--oh-surface)]`,children:(0,Q.jsx)(Pi,{})})]})}var Da=1e3*60*5,Oa=1e3*60*15,ka=e=>{let t=e||[],n=A();return C({queryKey:[`v1`,`sub-conversations`,t,n.backend.id,n.orgId],queryFn:async()=>t.length===0?[]:it.batchGetAppConversations(t),enabled:t.length>0,staleTime:Da,gcTime:Oa,retry:!1})};function Aa({children:e,conversationId:t}){let{data:n}=J(),{data:r}=ka(n?.sub_conversation_ids??[]),i=r?.filter(e=>e!==null);return(0,Q.jsx)(hn,{conversationId:t,conversationUrl:n?.sandbox_status===`PAUSED`?null:n?.conversation_url,sessionApiKey:n?.session_api_key,subConversationIds:n?.sub_conversation_ids,subConversations:i,children:e})}function ja(){let{t:e}=T(`openhands`),{conversationId:t}=q(),n=u(`/conversations/:conversationId/panel`),{isTask:r,taskStatus:i,taskDetail:a}=Ft(),o=A(),s=$.useRef(o.backend.id),c=$.useRef(o.orgId),l=s.current!==o.backend.id||c.current!==o.orgId,{data:d,isFetched:m}=J(),{data:h}=at(),{resetConversationState:g}=W(),_=f(),v=p(),y=wn(e=>e.clearTerminal),b=Et(e=>e.reset),x=Vn(e=>e.setCurrentAgentState),S=pn(e=>e.removeErrorMessage);$.useEffect(()=>{y(),g(),b(),x(V.LOADING),S()},[t,y,g,b,x,S]),$.useEffect(()=>{if(r&&i===`ERROR`){D(a||e(E.CONVERSATION$FAILED_TO_START_FROM_TASK));let t=v.state?.resumedFromConversationId;_(t?`/conversations/${t}`:`/conversations`,{replace:!0})}},[r,i,a,e,_,v.state]),$.useEffect(()=>{!m||!h||l||d||(qn(o.backend.id,o.orgId),D(e(E.CONVERSATION$NOT_EXIST_OR_NO_PERMISSION)),_(`/conversations`))},[d,m,h,_,e,l,o.backend.id,o.orgId]),$.useEffect(()=>{l||t&&(t.startsWith(`task-`)||Kn(o.backend.id,o.orgId,t))},[t,l,o.backend.id,o.orgId]);let C=$.useRef(null);return $.useEffect(()=>{!m||!d||o.backend.kind===`cloud`&&d.sandbox_status===`PAUSED`&&d.sandbox_id&&C.current!==d.id&&(C.current=d.id,rt(d.sandbox_id).catch(()=>{D(e(E.CONVERSATION$FAILED_TO_START_FROM_TASK))}))},[m,d?.id,d?.sandbox_status,d?.sandbox_id,o.backend.kind,e]),l?null:(0,Q.jsx)(Aa,{conversationId:t,children:(0,Q.jsx)($n,{children:(0,Q.jsx)(`div`,{"data-testid":`app-route`,className:`flex h-full flex-col`,children:n?(0,Q.jsx)(Ea,{onNavigateBack:()=>_(`/conversations/${t}`)}):(0,Q.jsx)(Ta,{})})})})}function Ma(){return(0,Q.jsx)(ja,{})}var Na=d(Ma);export{Na as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./conversation-B8prFAZF.js";export{e as default};
@@ -0,0 +1 @@
1
+ import{a as e}from"./rolldown-runtime-BFRubm34.js";import{Ct as t}from"./vendor-styling-CI0PQ3ab.js";var n=e(t(),1),r={CONVERSATION_STATE:`conversation-state`,PENDING_TASK_DRAFT:`pending-task-draft`},i=`conversation-state-updated`,a={selectedTab:`files`,unpinnedTabs:[],conversationMode:`code`,subConversationTaskId:null,draftMessage:null,filesTabDiffView:null,filesTabContentViewMode:`rich`},o=new Set([`files`,`browser`,`terminal`,`planner`,`tasklist`]),s=new Set([`editor`,`served`,`changes`,`app`,`vscode`]),c=new Set([`rich`,`plain`]);function l(e){let{rightPanelShown:t,...n}=e,r=n;if(r.selectedTab!=null&&(s.has(r.selectedTab)||!o.has(r.selectedTab))&&(r={...r},delete r.selectedTab),r.unpinnedTabs){let e=r.unpinnedTabs.filter(e=>!s.has(e));e.length!==r.unpinnedTabs.length&&(r={...r,unpinnedTabs:e})}return r.filesTabContentViewMode!=null&&!c.has(r.filesTabContentViewMode)&&(r={...r},delete r.filesTabContentViewMode),r}function u(e){return e.startsWith(`task-`)}function d(e){return e===``||u(e)}function f(e){if(d(e))return a;try{let t=`${r.CONVERSATION_STATE}-${e}`,n=localStorage.getItem(t);return n===null?a:{...a,...l(JSON.parse(n))}}catch{return a}}function p(e,t){if(!d(e))try{let n=`${r.CONVERSATION_STATE}-${e}`,a={...f(e),...t};localStorage.setItem(n,JSON.stringify(a)),typeof window<`u`&&window.dispatchEvent(new CustomEvent(i,{detail:{conversationId:e}}))}catch(e){console.warn(`Failed to set conversation localStorage`,e)}}function m(e){return`${r.PENDING_TASK_DRAFT}-${e}`}function h(e,t){if(e)try{localStorage.setItem(m(e),t)}catch(e){console.warn(`Failed to store pending task draft`,e)}}function g(e){if(!e)return null;try{let t=m(e),n=localStorage.getItem(t);return localStorage.removeItem(t),n}catch(e){return console.warn(`Failed to consume pending task draft`,e),null}}function _(e){try{let t=`${r.CONVERSATION_STATE}-${e}`;localStorage.removeItem(t),typeof window<`u`&&window.dispatchEvent(new CustomEvent(i,{detail:{conversationId:e}}))}catch(t){console.warn(`Failed to clear conversation localStorage`,e,t)}}function v(e){let[t,a]=(0,n.useState)(()=>f(e));(0,n.useEffect)(()=>{if(typeof window>`u`)return;let t=`${r.CONVERSATION_STATE}-${e}`,n=()=>{a(f(e))},o=e=>{e.key===t&&n()},s=t=>{t.detail?.conversationId===e&&n()};return n(),window.addEventListener(`storage`,o),window.addEventListener(i,s),()=>{window.removeEventListener(`storage`,o),window.removeEventListener(i,s)}},[e]);let o=t=>{if(d(e)){a(e=>({...e,...t}));return}p(e,t)};return{state:t,setSelectedTab:e=>o({selectedTab:e}),setUnpinnedTabs:e=>o({unpinnedTabs:e}),setConversationMode:e=>o({conversationMode:e}),setDraftMessage:e=>o({draftMessage:e}),setFilesTabDiffView:e=>o({filesTabDiffView:e}),setFilesTabContentViewMode:e=>o({filesTabContentViewMode:e})}}export{p as a,u as i,g as n,h as o,f as r,v as s,_ as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./conversation-B8prFAZF.js";export{e as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~ncdxw0bh-ClHnt5lR.js";import{c as t,n,r,w as i}from"./agent-server-client-options-DVLRd9sw.js";import{a,i as o}from"./vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~enjl5xdm-mMKDm94D.js";import{a as s,n as c,s as l,t as u}from"./agent-server-conversation-service.api-DfH2k6Sx.js";var d=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function f(e){let t=e.split(/[\\/]+/).filter(Boolean),n=t[t.length-1];if(!n||n===`.`||n===`..`)throw Error(`Invalid file name`);return n}async function p(e,t={}){return l(e,t)}async function m(e,t,n={}){let r=f(e);return`${(await p(t,n)).replace(/[/\\]+$/,``)}/${r}`}async function h(e,t){if(t?.id===e&&t.workspace?.working_dir?.trim())return t.workspace.working_dir.trim();let n=s(e);return n?.selected_workspace?.trim()?n.selected_workspace.trim():d.test(e)?u.resolveConversationWorkingDir(e):i()}var g=5;async function _(e,n){if(n?.id===e&&n.conversation_url?.trim()&&n.session_api_key?.trim())return{conversationUrl:n.conversation_url.trim(),sessionApiKey:n.session_api_key.trim()};if(t().backend.kind===`cloud`){let[t]=await c([e]);return{conversationUrl:t?.conversation_url?.trim()??null,sessionApiKey:t?.session_api_key?.trim()??null}}return{conversationUrl:null,sessionApiKey:null}}function v(e){if(!e.conversationUrl||!e.sessionApiKey)throw Error(`Conversation sandbox is still starting. Wait for it to finish, then try again.`);return{conversationUrl:e.conversationUrl,sessionApiKey:e.sessionApiKey}}async function y(e,n,r){let i=await h(e,r),a=await _(e,r),o=t().backend.kind===`cloud`,s=r?.id===e?r.session_api_key??a.sessionApiKey:a.sessionApiKey,c=r?.id===e?r.conversation_url??a.conversationUrl:a.conversationUrl;if(o){let e=v({conversationUrl:c,sessionApiKey:s});return b({files:n,workingDir:i,conversationUrl:e.conversationUrl,sessionApiKey:e.sessionApiKey})}return b({files:n,workingDir:i,conversationUrl:c,sessionApiKey:s})}async function b(e){let{files:t,workingDir:r,conversationUrl:i,sessionApiKey:a}=e,s=new o(n({conversationUrl:i,sessionApiKey:a,workingDir:r})),c=async e=>{try{let t=f(e.name),n=await m(e.name,r,{conversationUrl:i,sessionApiKey:a});return await s.fileUpload(e,n),{uploadedFile:t,skippedFile:null}}catch(t){return{uploadedFile:null,skippedFile:{name:e.name,reason:t instanceof Error?t.message:`Upload failed`}}}},l=[];for(let e=0;e<t.length;e+=g){let n=t.slice(e,e+g);l.push(...await Promise.all(n.map(c)))}return{uploaded_files:l.flatMap(e=>e.uploadedFile?[e.uploadedFile]:[]),skipped_files:l.flatMap(e=>e.skippedFile?[e.skippedFile]:[])}}var x=class{static currentConversation=null;static setCurrentConversation(e){this.currentConversation=e}static getCurrentConversation(){return this.currentConversation}static getClientOverrides(){return{sessionApiKey:this.currentConversation?.session_api_key}}static async getVSCodeUrl(t){let r=this.currentConversation?.id===t?this.currentConversation?.workspace?.working_dir??i():i();return{vscode_url:await new e(n(this.getClientOverrides())).getUrl({baseUrl:typeof window<`u`?window.location.origin:void 0,workspaceDir:r})}}static async getTrajectory(e){return{trajectory:(await new a(r(this.getClientOverrides()),e).search({limit:1e4})).items??[]}}static async uploadFiles(e,t){return y(e,t,this.currentConversation)}};export{_ as n,y as r,x as t};