@openhands/agent-canvas 1.1.0 → 1.2.1

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 (1390) 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-u2tdYRgH.js +1 -0
  7. package/build/assets/add-backend-modal-DIEyAkA4.js +1 -0
  8. package/build/assets/agent-profiles-settings-BovdV4N8.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-BP73yONA.js +5 -0
  11. package/build/assets/agent-settings-FGL3Yvkp.js +1 -0
  12. package/build/assets/agent-settings-Ofbh6UTD.js +2 -0
  13. package/build/assets/alert-banner-BW0wRYw6.js +1 -0
  14. package/build/assets/api-key-entry-screen-CZIdRmUJ.js +1 -0
  15. package/build/assets/app-settings-BHJ9nKti.js +1 -0
  16. package/build/assets/automation-detail-DwYGzLkp.js +2 -0
  17. package/build/assets/automations-list-CuAfJmMW.js +1 -0
  18. package/build/assets/back-nav-button-BYmxFxGt.js +1 -0
  19. package/build/assets/backend-form-modal-BiaOB2C4.js +1 -0
  20. package/build/assets/backend-synced-settings-badge-Bs3FSXsS.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-DPBzNtVg.js} +4 -4
  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-D_5vY4m3.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-DnVC6vRV.js +1 -0
  42. package/build/assets/conversation-local-storage-F6zVMM--.js +1 -0
  43. package/build/assets/conversation-panel-ZEz-z3az.js +1 -0
  44. package/build/assets/conversation-service.api-CqZcHr1c.js +1 -0
  45. package/build/assets/conversation-state-store-B2Bp32XI.js +1 -0
  46. package/build/assets/conversation-store-LptbOvKa.js +1 -0
  47. package/build/assets/conversation-tab-empty-state-m8IUkfMj.js +1 -0
  48. package/build/assets/conversation-xkBS3AHC.js +19 -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-B6U96gVV.js +1 -0
  58. package/build/assets/ellipsis-button-1BV9Sga8.js +1 -0
  59. package/build/assets/entry.client-Dy--3GeA.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-CksKNpP9.js +1 -0
  63. package/build/assets/{extensions-navigation-DfLHdTUC.js → extensions-navigation-Di9rJ-b5.js} +1 -1
  64. package/build/assets/{external-link-D8njjDTk.js → external-link-D2zJjE9G.js} +1 -1
  65. package/build/assets/files-tab-61Vaihc6.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-aQRcUVI-.js +1 -0
  71. package/build/assets/home-5gOtUe-n.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-BRab9inF.js +1 -0
  75. package/build/assets/launch-1TJRKkkX.js +1 -0
  76. package/build/assets/lesson-plan-BtrZUCuj.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-BrU5uHto.js +27 -0
  80. package/build/assets/llm-settings-BpdU51Jo.js +1 -0
  81. package/build/assets/llm-settings-DsInf6yD.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-BREySP-J.js +1 -0
  86. package/build/assets/manifest-a5bb7568.js +1 -0
  87. package/build/assets/{markdown-renderer-DWy7Np7u.js → markdown-renderer-D8mayGjI.js} +1 -1
  88. package/build/assets/mcp-XXf8k6mb.js +9 -0
  89. package/build/assets/messages-D2oZb47Z.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-D32kiGME.js +1 -0
  100. package/build/assets/onboarding-modal-C084vkv7.js +1 -0
  101. package/build/assets/openhands-logo-bcNw5bkY.js +1 -0
  102. package/build/assets/option-service.api-Cl5VLGyw.js +1 -0
  103. package/build/assets/organization-service.api-CnynNoT-.js +1 -0
  104. package/build/assets/path-utils-BeOmjIcE.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-AZMjJx31.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-vX9jk9Vy.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-Bk8tQ-Cn.js +58 -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-layout-CoWw4kpz.js +2 -0
  117. package/build/assets/root-tuEPDx-i.js +2 -0
  118. package/build/assets/runtime-waiting-state-DkzLgvMn.js +1 -0
  119. package/build/assets/schema-field-nvq_Juo2.js +1 -0
  120. package/build/assets/sdk-section-page-CgT70FaZ.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-BCxk9p9s.js +1 -0
  126. package/build/assets/segmented-toggle-Cen5AMUc.js +1 -0
  127. package/build/assets/settings-CedTdtb5.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-Cct3PJSP.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-DwLybV_O.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-DnDwfLgg.js +1 -0
  140. package/build/assets/sidebar-layout-BtpUSN3j.js +1 -0
  141. package/build/assets/sidebar-mobile-menu-toggle-B8k3qu84.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-B68ay6Pu.js +1 -0
  147. package/build/assets/skills-settings-A6sUy0T7.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-BmT0_gIH.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-Bs6s0DTU.js +1 -0
  162. package/build/assets/use-activate-agent-profile-CKtTToSx.js +1 -0
  163. package/build/assets/use-active-agent-profile-CWLPpOtK.js +1 -0
  164. package/build/assets/use-active-conversation-DI5S5M1w.js +1 -0
  165. package/build/assets/use-agent-profiles-DPcaYLpm.js +1 -0
  166. package/build/assets/use-agent-state-Buh3bQDh.js +1 -0
  167. package/build/assets/use-backends-health-CxkvJy2N.js +1 -0
  168. package/build/assets/use-breakpoint-B-O0lQ84.js +1 -0
  169. package/build/assets/use-can-manage-org-profiles-DeX2Mfje.js +1 -0
  170. package/build/assets/use-click-outside-element-Bf4Omzot.js +1 -0
  171. package/build/assets/use-cloud-current-user-id-D_PQGfmT.js +1 -0
  172. package/build/assets/use-config-ur0RbjCP.js +1 -0
  173. package/build/assets/use-create-conversation-D9OWYcte.js +1 -0
  174. package/build/assets/use-create-secret-CVFSlhlR.js +1 -0
  175. package/build/assets/use-event-store-YSOxy9FC.js +4 -0
  176. package/build/assets/use-handle-plan-click-Dug8egQl.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-DjackuP1.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-Diiq65Q-.js +1 -0
  183. package/build/assets/use-save-agent-profile-aKKLqDJM.js +1 -0
  184. package/build/assets/{use-save-settings-DErJDIDL.js → use-save-settings-CChDyjOB.js} +1 -1
  185. package/build/assets/use-settings-dX4fKUPF.js +1 -0
  186. package/build/assets/use-settings-nav-items-D6pHnvxg.js +16 -0
  187. package/build/assets/use-skills-Dqo-pDDx.js +1 -0
  188. package/build/assets/use-task-list-CmWGElgb.js +1 -0
  189. package/build/assets/use-tracking-GtXCHmTv.js +1 -0
  190. package/build/assets/use-user-conversation-6uOXFP95.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-rV6d1Iv_.js} +502 -43
  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-CXyYYvYh.js +1 -0
  225. package/build/assets/verification-settings-D_zsNB_c.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/atlassian.cjs +1 -1
  798. package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.cjs.map +1 -1
  799. package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.js +70 -3
  800. package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.js.map +1 -1
  801. package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.cjs +1 -1
  802. package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.cjs.map +1 -1
  803. package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.js +1 -6
  804. package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.js.map +1 -1
  805. package/dist/node_modules/@openhands/extensions/integrations/catalog/box.cjs +1 -1
  806. package/dist/node_modules/@openhands/extensions/integrations/catalog/box.cjs.map +1 -1
  807. package/dist/node_modules/@openhands/extensions/integrations/catalog/box.js +1 -6
  808. package/dist/node_modules/@openhands/extensions/integrations/catalog/box.js.map +1 -1
  809. package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.cjs +1 -1
  810. package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.cjs.map +1 -1
  811. package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.js +3 -7
  812. package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.js.map +1 -1
  813. package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.cjs +1 -1
  814. package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.cjs.map +1 -1
  815. package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.js +1 -6
  816. package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.js.map +1 -1
  817. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs +1 -1
  818. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs.map +1 -1
  819. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js +27 -2
  820. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js.map +1 -1
  821. package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.cjs +1 -1
  822. package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.cjs.map +1 -1
  823. package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.js +1 -6
  824. package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.js.map +1 -1
  825. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.cjs +1 -1
  826. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.cjs.map +1 -1
  827. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.js +20 -26
  828. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.js.map +1 -1
  829. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs +1 -1
  830. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs.map +1 -1
  831. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js +0 -9
  832. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js.map +1 -1
  833. package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.cjs +1 -1
  834. package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.cjs.map +1 -1
  835. package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.js +1 -6
  836. package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.js.map +1 -1
  837. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.cjs +1 -1
  838. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.cjs.map +1 -1
  839. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.js +1 -6
  840. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.js.map +1 -1
  841. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.cjs +1 -1
  842. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.cjs.map +1 -1
  843. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.js +1 -6
  844. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.js.map +1 -1
  845. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.cjs +1 -1
  846. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.cjs.map +1 -1
  847. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.js +1 -6
  848. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.js.map +1 -1
  849. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.cjs +1 -1
  850. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.cjs.map +1 -1
  851. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.js +1 -6
  852. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.js.map +1 -1
  853. package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.cjs +1 -1
  854. package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.cjs.map +1 -1
  855. package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.js +1 -6
  856. package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.js.map +1 -1
  857. package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.cjs +1 -1
  858. package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.cjs.map +1 -1
  859. package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.js +1 -6
  860. package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.js.map +1 -1
  861. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.cjs +1 -1
  862. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.cjs.map +1 -1
  863. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.js +13 -13
  864. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.js.map +1 -1
  865. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.cjs +1 -1
  866. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.cjs.map +1 -1
  867. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.js +1 -6
  868. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.js.map +1 -1
  869. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.cjs +1 -1
  870. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.cjs.map +1 -1
  871. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.js +1 -6
  872. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.js.map +1 -1
  873. package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.cjs +1 -1
  874. package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.cjs.map +1 -1
  875. package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.js +14 -10
  876. package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.js.map +1 -1
  877. package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.cjs +1 -1
  878. package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.cjs.map +1 -1
  879. package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.js +13 -10
  880. package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.js.map +1 -1
  881. package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.cjs +1 -1
  882. package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.cjs.map +1 -1
  883. package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.js +1 -6
  884. package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.js.map +1 -1
  885. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs +1 -1
  886. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs.map +1 -1
  887. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js +1 -8
  888. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js.map +1 -1
  889. package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.cjs +1 -1
  890. package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.cjs.map +1 -1
  891. package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.js +1 -6
  892. package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.js.map +1 -1
  893. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.cjs +1 -1
  894. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.cjs.map +1 -1
  895. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.js +1 -6
  896. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.js.map +1 -1
  897. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.cjs +1 -1
  898. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.cjs.map +1 -1
  899. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js +20 -18
  900. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js.map +1 -1
  901. package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.cjs +1 -1
  902. package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.cjs.map +1 -1
  903. package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.js +66 -21
  904. package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.js.map +1 -1
  905. package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.cjs +1 -1
  906. package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.cjs.map +1 -1
  907. package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.js +17 -11
  908. package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.js.map +1 -1
  909. package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.cjs +1 -1
  910. package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.cjs.map +1 -1
  911. package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.js +12 -17
  912. package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.js.map +1 -1
  913. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.cjs +1 -1
  914. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.cjs.map +1 -1
  915. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.js +1 -6
  916. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.js.map +1 -1
  917. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs +1 -1
  918. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs.map +1 -1
  919. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js +1 -1
  920. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js.map +1 -1
  921. package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.cjs +1 -1
  922. package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.cjs.map +1 -1
  923. package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.js +14 -19
  924. package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.js.map +1 -1
  925. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.cjs +1 -1
  926. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.cjs.map +1 -1
  927. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.js +15 -20
  928. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.js.map +1 -1
  929. package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.cjs +2 -0
  930. package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.cjs.map +1 -0
  931. package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.js +33 -0
  932. package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.js.map +1 -0
  933. package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.cjs +1 -1
  934. package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.cjs.map +1 -1
  935. package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.js +10 -8
  936. package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.js.map +1 -1
  937. package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.cjs +1 -1
  938. package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.cjs.map +1 -1
  939. package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.js +1 -6
  940. package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.js.map +1 -1
  941. package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.cjs +1 -1
  942. package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.cjs.map +1 -1
  943. package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.js +1 -6
  944. package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.js.map +1 -1
  945. package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.cjs +1 -1
  946. package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.cjs.map +1 -1
  947. package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.js +1 -6
  948. package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.js.map +1 -1
  949. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs +1 -1
  950. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs.map +1 -1
  951. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js +71 -89
  952. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js.map +1 -1
  953. package/dist/node_modules/@openhands/extensions/integrations/index.cjs +1 -1
  954. package/dist/node_modules/@openhands/extensions/integrations/index.cjs.map +1 -1
  955. package/dist/node_modules/@openhands/extensions/integrations/index.js +4 -4
  956. package/dist/node_modules/@openhands/extensions/integrations/index.js.map +1 -1
  957. package/dist/node_modules/@openhands/extensions/skills/index.cjs +502 -43
  958. package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
  959. package/dist/node_modules/@openhands/extensions/skills/index.js +58 -33
  960. package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
  961. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.cjs +2 -0
  962. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.cjs.map +1 -0
  963. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.js +40 -0
  964. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.js.map +1 -0
  965. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.cjs +1 -1
  966. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.cjs.map +1 -1
  967. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.js +4 -4
  968. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.js.map +1 -1
  969. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.cjs +1 -1
  970. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.cjs.map +1 -1
  971. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.js +3 -0
  972. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.js.map +1 -1
  973. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.cjs +1 -1
  974. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.cjs.map +1 -1
  975. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.js +3 -0
  976. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.js.map +1 -1
  977. package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.cjs +1 -0
  978. package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.js +1 -0
  979. package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.cjs +1 -0
  980. package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.js +1 -0
  981. package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.cjs +1 -1
  982. package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.cjs.map +1 -1
  983. package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.js +84 -27
  984. package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.js.map +1 -1
  985. package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.cjs +1 -1
  986. package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.cjs.map +1 -1
  987. package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.js +9 -0
  988. package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.js.map +1 -1
  989. package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.cjs +1 -0
  990. package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.js +1 -0
  991. package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.cjs +2 -0
  992. package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.cjs.map +1 -0
  993. package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.js +42 -0
  994. package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.js.map +1 -0
  995. package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.cjs +1 -0
  996. package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.js +1 -0
  997. package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.cjs +1 -1
  998. package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.cjs.map +1 -1
  999. package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.js +1 -1
  1000. package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.js.map +1 -1
  1001. package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.cjs +1 -0
  1002. package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.js +1 -0
  1003. package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.cjs +1 -0
  1004. package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.js +1 -0
  1005. package/dist/node_modules/@openhands/typescript-client/dist/clients.cjs +1 -0
  1006. package/dist/node_modules/@openhands/typescript-client/dist/clients.js +20 -0
  1007. package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation-manager.cjs +1 -1
  1008. package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation-manager.js +18 -0
  1009. package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation.cjs +1 -1
  1010. package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation.js +1 -0
  1011. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.cjs +1 -1
  1012. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.js +2 -0
  1013. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs +1 -1
  1014. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs.map +1 -1
  1015. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js +15 -17
  1016. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js.map +1 -1
  1017. package/dist/node_modules/@openhands/typescript-client/dist/index.cjs +1 -1
  1018. package/dist/node_modules/@openhands/typescript-client/dist/index.js +3 -0
  1019. package/dist/node_modules/@openhands/typescript-client/dist/workspace/workspace.cjs +1 -0
  1020. package/dist/node_modules/@openhands/typescript-client/dist/workspace/workspace.js +1 -0
  1021. package/dist/package.cjs +1 -1
  1022. package/dist/package.cjs.map +1 -1
  1023. package/dist/package.js +7 -4
  1024. package/dist/package.js.map +1 -1
  1025. package/dist/routes/agent-settings.d.ts +106 -0
  1026. package/dist/routes/files-tab.cjs +1 -1
  1027. package/dist/routes/files-tab.js +23 -23
  1028. package/dist/routes/llm-settings.cjs +1 -1
  1029. package/dist/routes/llm-settings.cjs.map +1 -1
  1030. package/dist/routes/llm-settings.d.ts +6 -4
  1031. package/dist/routes/llm-settings.js +0 -1
  1032. package/dist/routes/llm-settings.js.map +1 -1
  1033. package/dist/routes/mcp.cjs.map +1 -1
  1034. package/dist/routes/mcp.js.map +1 -1
  1035. package/dist/services/settings.cjs +1 -1
  1036. package/dist/services/settings.cjs.map +1 -1
  1037. package/dist/services/settings.js +2 -6
  1038. package/dist/services/settings.js.map +1 -1
  1039. package/dist/stores/command-menu-store.cjs +2 -0
  1040. package/dist/stores/command-menu-store.cjs.map +1 -0
  1041. package/dist/stores/command-menu-store.d.ts +8 -0
  1042. package/dist/stores/command-menu-store.js +12 -0
  1043. package/dist/stores/command-menu-store.js.map +1 -0
  1044. package/dist/stores/conversation-panel-preferences-store.cjs +1 -1
  1045. package/dist/stores/conversation-panel-preferences-store.cjs.map +1 -1
  1046. package/dist/stores/conversation-panel-preferences-store.js +1 -1
  1047. package/dist/stores/conversation-panel-preferences-store.js.map +1 -1
  1048. package/dist/stores/conversation-store.cjs +1 -1
  1049. package/dist/stores/conversation-store.cjs.map +1 -1
  1050. package/dist/stores/conversation-store.d.ts +1 -0
  1051. package/dist/stores/conversation-store.js +1 -0
  1052. package/dist/stores/conversation-store.js.map +1 -1
  1053. package/dist/stores/goal-store.cjs +2 -0
  1054. package/dist/stores/goal-store.cjs.map +1 -0
  1055. package/dist/stores/goal-store.d.ts +28 -0
  1056. package/dist/stores/goal-store.js +14 -0
  1057. package/dist/stores/goal-store.js.map +1 -0
  1058. package/dist/themes/color-themes.cjs +3 -3
  1059. package/dist/themes/color-themes.cjs.map +1 -1
  1060. package/dist/themes/color-themes.d.ts +13 -2
  1061. package/dist/themes/color-themes.js +2 -2
  1062. package/dist/themes/color-themes.js.map +1 -1
  1063. package/dist/types/agent-server/core/events/conversation-state-event.d.ts +39 -3
  1064. package/dist/types/agent-server/type-guards.cjs +1 -1
  1065. package/dist/types/agent-server/type-guards.cjs.map +1 -1
  1066. package/dist/types/agent-server/type-guards.d.ts +2 -1
  1067. package/dist/types/agent-server/type-guards.js +3 -3
  1068. package/dist/types/agent-server/type-guards.js.map +1 -1
  1069. package/dist/types/mcp-auth.cjs +2 -0
  1070. package/dist/types/mcp-auth.cjs.map +1 -0
  1071. package/dist/types/mcp-auth.d.ts +43 -0
  1072. package/dist/types/mcp-auth.js +13 -0
  1073. package/dist/types/mcp-auth.js.map +1 -0
  1074. package/dist/types/mcp-server.d.ts +22 -1
  1075. package/dist/types/settings.d.ts +6 -4
  1076. package/dist/ui/context-menu.d.ts +1 -1
  1077. package/dist/utils/acp-command.d.ts +64 -0
  1078. package/dist/utils/automation-debug-prompt.d.ts +18 -0
  1079. package/dist/utils/constants.cjs +1 -1
  1080. package/dist/utils/constants.cjs.map +1 -1
  1081. package/dist/utils/constants.d.ts +2 -0
  1082. package/dist/utils/constants.js +12 -3
  1083. package/dist/utils/constants.js.map +1 -1
  1084. package/dist/utils/dropdown-classes.cjs +1 -1
  1085. package/dist/utils/dropdown-classes.cjs.map +1 -1
  1086. package/dist/utils/dropdown-classes.js +4 -2
  1087. package/dist/utils/dropdown-classes.js.map +1 -1
  1088. package/dist/utils/form-control-classes.cjs +1 -1
  1089. package/dist/utils/form-control-classes.js +1 -1
  1090. package/dist/utils/handle-event-for-ui.cjs +1 -1
  1091. package/dist/utils/handle-event-for-ui.cjs.map +1 -1
  1092. package/dist/utils/handle-event-for-ui.js +72 -37
  1093. package/dist/utils/handle-event-for-ui.js.map +1 -1
  1094. package/dist/utils/mcp-config.cjs +1 -1
  1095. package/dist/utils/mcp-config.cjs.map +1 -1
  1096. package/dist/utils/mcp-config.d.ts +15 -9
  1097. package/dist/utils/mcp-config.js +124 -53
  1098. package/dist/utils/mcp-config.js.map +1 -1
  1099. package/dist/utils/mcp-installed-server-display.cjs +2 -0
  1100. package/dist/utils/mcp-installed-server-display.cjs.map +1 -0
  1101. package/dist/utils/mcp-installed-server-display.d.ts +8 -0
  1102. package/dist/utils/mcp-installed-server-display.js +12 -0
  1103. package/dist/utils/mcp-installed-server-display.js.map +1 -0
  1104. package/dist/utils/mcp-installed-servers.cjs +1 -1
  1105. package/dist/utils/mcp-installed-servers.cjs.map +1 -1
  1106. package/dist/utils/mcp-installed-servers.js +4 -4
  1107. package/dist/utils/mcp-installed-servers.js.map +1 -1
  1108. package/dist/utils/mcp-marketplace-utils.cjs +1 -1
  1109. package/dist/utils/mcp-marketplace-utils.cjs.map +1 -1
  1110. package/dist/utils/mcp-marketplace-utils.d.ts +2 -0
  1111. package/dist/utils/mcp-marketplace-utils.js +31 -16
  1112. package/dist/utils/mcp-marketplace-utils.js.map +1 -1
  1113. package/dist/utils/mcp-server-name.cjs +2 -0
  1114. package/dist/utils/mcp-server-name.cjs.map +1 -0
  1115. package/dist/utils/mcp-server-name.d.ts +3 -0
  1116. package/dist/utils/mcp-server-name.js +12 -0
  1117. package/dist/utils/mcp-server-name.js.map +1 -0
  1118. package/dist/utils/plugin-display.cjs +2 -0
  1119. package/dist/utils/plugin-display.cjs.map +1 -0
  1120. package/dist/utils/plugin-display.d.ts +20 -0
  1121. package/dist/utils/plugin-display.js +29 -0
  1122. package/dist/utils/plugin-display.js.map +1 -0
  1123. package/dist/utils/settings-utils.cjs.map +1 -1
  1124. package/dist/utils/settings-utils.js.map +1 -1
  1125. package/dist/utils/workspaces-compatibility.cjs +1 -1
  1126. package/dist/utils/workspaces-compatibility.cjs.map +1 -1
  1127. package/dist/utils/workspaces-compatibility.js +1 -0
  1128. package/dist/utils/workspaces-compatibility.js.map +1 -1
  1129. package/package.json +7 -4
  1130. package/scripts/check-sdk-version-sync.mjs +6 -6
  1131. package/scripts/check-translation-completeness.cjs +6 -0
  1132. package/scripts/dev-safe.mjs +14 -3
  1133. package/scripts/dev-with-automation.mjs +4 -0
  1134. package/scripts/gen-acp-docker-env.mjs +107 -0
  1135. package/scripts/ingress.mjs +66 -226
  1136. package/scripts/proxy-utils.mjs +171 -0
  1137. package/scripts/static-server.mjs +127 -283
  1138. package/build/assets/Trans-CiZR6eVI.js +0 -1
  1139. package/build/assets/active-backend-context-CEuva6ZJ.js +0 -1
  1140. package/build/assets/add-backend-modal-b_eiVk3A.js +0 -1
  1141. package/build/assets/agent-server-conversation-service.api-D_uJ7BKc.js +0 -5
  1142. package/build/assets/agent-settings-DyfziYyM.js +0 -2
  1143. package/build/assets/alert-banner-BFayS5vM.js +0 -1
  1144. package/build/assets/analytics-consent-form-modal-CQ22qlFF.js +0 -1
  1145. package/build/assets/api-key-entry-screen-KnIwP0vN.js +0 -1
  1146. package/build/assets/app-settings-CBaHJ5vJ.js +0 -1
  1147. package/build/assets/automation-detail-DgQswnXg.js +0 -1
  1148. package/build/assets/automations-list-D99p6CoQ.js +0 -1
  1149. package/build/assets/back-nav-button-Cp9z-wsG.js +0 -1
  1150. package/build/assets/backend-form-modal-BABAz-zH.js +0 -1
  1151. package/build/assets/backend-synced-settings-badge-DzwWQC4T.js +0 -1
  1152. package/build/assets/base-modal-1bHiB5Wf.js +0 -1
  1153. package/build/assets/brand-button-FHWgEb4Q.js +0 -1
  1154. package/build/assets/browser-store-B9h0eW79.js +0 -1
  1155. package/build/assets/browser-tab-JiCXo0Nc.js +0 -1
  1156. package/build/assets/chat-send-button-QtyofqFt.js +0 -1
  1157. package/build/assets/check-6ieIiPhW.js +0 -1
  1158. package/build/assets/checkmark-BfgRVMHK.js +0 -1
  1159. package/build/assets/circle-plus-check-toggle-CmINKfZj.js +0 -1
  1160. package/build/assets/close-DhH0uMa7.js +0 -1
  1161. package/build/assets/code-tag-CnORXDJj.js +0 -1
  1162. package/build/assets/combobox-caret-BB15S7zY.js +0 -1
  1163. package/build/assets/condenser-settings-BOKNShD9.js +0 -1
  1164. package/build/assets/confirmation-modal-CofmThy4.js +0 -1
  1165. package/build/assets/context-menu-list-item-DO12IEaK.js +0 -1
  1166. package/build/assets/conversation-DIzv-jq8.js +0 -1
  1167. package/build/assets/conversation-DV3odvMe.js +0 -19
  1168. package/build/assets/conversation-local-storage-DK7yJr5N.js +0 -1
  1169. package/build/assets/conversation-panel-CgCarTAn.js +0 -1
  1170. package/build/assets/conversation-service.api-RV_bOKNz.js +0 -1
  1171. package/build/assets/conversation-state-store-4obo4ZMf.js +0 -1
  1172. package/build/assets/conversation-store-CXrL0v-X.js +0 -6
  1173. package/build/assets/conversation-tab-empty-state-CqT5ur_H.js +0 -1
  1174. package/build/assets/copy-C5tBqfWu.js +0 -1
  1175. package/build/assets/copy-to-clipboard-button-BVFYcsg_.js +0 -1
  1176. package/build/assets/createLucideIcon-D3nkdIAN.js +0 -1
  1177. package/build/assets/declaration-B0yY_dkQ.js +0 -1
  1178. package/build/assets/device-verify-DRupI_hz.js +0 -1
  1179. package/build/assets/dist-D5d5zm8o.js +0 -1
  1180. package/build/assets/dist-fV7trlfb.js +0 -1
  1181. package/build/assets/dropdown-classes-5IsMjYYw.js +0 -1
  1182. package/build/assets/edit-automation-modal-BG-gd82b.js +0 -1
  1183. package/build/assets/ellipsis-button-DWvVZO_r.js +0 -1
  1184. package/build/assets/entry.client-uhbVfCtd.js +0 -2
  1185. package/build/assets/enum-filter-dropdown-CB2fqz_e.js +0 -1
  1186. package/build/assets/environment-switch-overlay-Oeal5TVq.js +0 -1
  1187. package/build/assets/extensions-hub-DxiE0AZR.js +0 -1
  1188. package/build/assets/files-tab-1F2OlNeH.js +0 -1
  1189. package/build/assets/files-tab-store-C1q5Rbx3.js +0 -1
  1190. package/build/assets/folder-C5tr7xyN.js +0 -1
  1191. package/build/assets/get-language-from-path-E1JKsbeE.js +0 -1
  1192. package/build/assets/git-provider-icon-CKs-22Ts.js +0 -1
  1193. package/build/assets/home-B3E0le0g.js +0 -1
  1194. package/build/assets/iconBase-DMoh3FEg.js +0 -1
  1195. package/build/assets/index-redirect-DhuK5mhS.js +0 -1
  1196. package/build/assets/install-server-modal-DjintV14.js +0 -1
  1197. package/build/assets/is-backend-llm-ready-Bj44pekN.js +0 -1
  1198. package/build/assets/launch-DCU3S84p.js +0 -1
  1199. package/build/assets/lesson-plan-BUUPKVsa.js +0 -3
  1200. package/build/assets/link-external-CF4KHxx-.js +0 -1
  1201. package/build/assets/llm-client-BakM_czF.js +0 -1
  1202. package/build/assets/llm-not-configured-banner-BV-NIjfR.js +0 -27
  1203. package/build/assets/llm-settings-B5d7PHzz.js +0 -1
  1204. package/build/assets/llm-settings-C5whb-0p.js +0 -1
  1205. package/build/assets/loader-circle-DyX8DmLg.js +0 -1
  1206. package/build/assets/loading-spinner-BvOAco8a.js +0 -1
  1207. package/build/assets/manage-backends-modal-D9ClxVpM.js +0 -1
  1208. package/build/assets/manifest-38a873aa.js +0 -1
  1209. package/build/assets/mcp-7rk44GRS.js +0 -9
  1210. package/build/assets/mcp-client-DxHXYNOw.js +0 -1
  1211. package/build/assets/messages-DgBEaXil.js +0 -43
  1212. package/build/assets/modal-backdrop-DjAC2zOZ.js +0 -1
  1213. package/build/assets/modal-body-OJdIUJ68.js +0 -1
  1214. package/build/assets/modal-close-button-BNjGesHc.js +0 -1
  1215. package/build/assets/model-selector-w2uGPM5y.js +0 -1
  1216. package/build/assets/navigation-context-CUJ60pLI.js +0 -1
  1217. package/build/assets/navigation-link-BiPKTOHF.js +0 -1
  1218. package/build/assets/onboarding-Cit87z8g.js +0 -1
  1219. package/build/assets/onboarding-modal-JPrzvr8W.js +0 -1
  1220. package/build/assets/openhands-logo-uNs9g6LY.js +0 -1
  1221. package/build/assets/option-service.api-BLYUhnCF.js +0 -1
  1222. package/build/assets/organization-service.api-DpSSwlZu.js +0 -1
  1223. package/build/assets/path-utils-B4WAVqvK.js +0 -1
  1224. package/build/assets/plan-components-DSOTFW2D.js +0 -1
  1225. package/build/assets/planner-tab-LmoxgKKe.js +0 -1
  1226. package/build/assets/preload-helper-D_sPnjeL.js +0 -1
  1227. package/build/assets/profiles-client-B4SJ4ZAf.js +0 -1
  1228. package/build/assets/providers-BGUAB8kf.js +0 -1
  1229. package/build/assets/react-Dn-iWFF5.js +0 -1
  1230. package/build/assets/react-dom-BBXlXOZX.js +0 -1
  1231. package/build/assets/react-uQK8du1l.js +0 -1
  1232. package/build/assets/recommended-automations-launcher-Df9MXUpX.js +0 -50
  1233. package/build/assets/root-BShAdYGY.css +0 -1
  1234. package/build/assets/root-C99reK-P.js +0 -2
  1235. package/build/assets/root-layout-BtH64XeC.js +0 -2
  1236. package/build/assets/runtime-waiting-state-C7MjXDeW.js +0 -1
  1237. package/build/assets/schema-field-BCDuEMrl.js +0 -1
  1238. package/build/assets/sdk-section-page-XJN9mGju.js +0 -1
  1239. package/build/assets/sdk-settings-schema-B15AE1GH.js +0 -1
  1240. package/build/assets/search-rob4u9f8.js +0 -1
  1241. package/build/assets/secrets-service-CrPyCR8u.js +0 -1
  1242. package/build/assets/secrets-settings-UJn15N7E.js +0 -1
  1243. package/build/assets/settings-C5aUD_sQ.js +0 -1
  1244. package/build/assets/settings-dropdown-input-DQRt2_RA.js +0 -1
  1245. package/build/assets/settings-gear-B7bZDo_8.js +0 -1
  1246. package/build/assets/settings-index-zP_rYIW1.js +0 -1
  1247. package/build/assets/settings-input-n8FzVso3.js +0 -1
  1248. package/build/assets/settings-list-classes-DquY3fwm.js +0 -1
  1249. package/build/assets/settings-modal-szlQ6LpE.js +0 -1
  1250. package/build/assets/settings-section-header-context-DrXgyNC-.js +0 -1
  1251. package/build/assets/settings-service.api-B4G8NzCM.js +0 -1
  1252. package/build/assets/settings-switch-DsbEm3ie.js +0 -1
  1253. package/build/assets/shared-conversation-BrAvqeaI.js +0 -1
  1254. package/build/assets/sidebar-mobile-menu-toggle-BRZGCe-l.js +0 -1
  1255. package/build/assets/sidebar-nav-link-B_EygIce.js +0 -1
  1256. package/build/assets/skill-card-pill-row-Bq9Imkdh.js +0 -1
  1257. package/build/assets/skills-Wg6i0kbu.js +0 -1
  1258. package/build/assets/skills-client-DNd444Bm.js +0 -1
  1259. package/build/assets/skills-plugins-DaGkVI7-.js +0 -1
  1260. package/build/assets/skills-settings-Dlp0WFaT.js +0 -2
  1261. package/build/assets/styled-tooltip-ulgpZDga.js +0 -1
  1262. package/build/assets/suspense-BqBQEuKs.js +0 -1
  1263. package/build/assets/switch-skeleton-C49gVWOQ.js +0 -1
  1264. package/build/assets/task-list-tab-Bz-UlCm2.js +0 -1
  1265. package/build/assets/telemetry-DD3HKMgf.js +0 -2
  1266. package/build/assets/terminal-BwLvVzyJ.js +0 -1
  1267. package/build/assets/toggle-switch-CxW8-lBI.js +0 -1
  1268. package/build/assets/typography-BLf_mRKH.js +0 -1
  1269. package/build/assets/u-check-circle-CxTAJuY9.js +0 -1
  1270. package/build/assets/u-check-circle-half-Bj73jfUG.js +0 -1
  1271. package/build/assets/u-circuit-C-6V9H9C.js +0 -1
  1272. package/build/assets/u-edit-C7OnK2sa.js +0 -1
  1273. package/build/assets/use-acp-credential-form-oehc057O.js +0 -1
  1274. package/build/assets/use-active-conversation-CFXVX2on.js +0 -1
  1275. package/build/assets/use-agent-state-D6xfZA4-.js +0 -1
  1276. package/build/assets/use-backends-health-93yRIOWs.js +0 -1
  1277. package/build/assets/use-breakpoint-Xdy_aZHE.js +0 -1
  1278. package/build/assets/use-click-outside-element-CADb_gCP.js +0 -1
  1279. package/build/assets/use-cloud-current-user-id-CzOXsy04.js +0 -1
  1280. package/build/assets/use-config-oXjEWyb6.js +0 -1
  1281. package/build/assets/use-create-conversation-D-YkgrxS.js +0 -1
  1282. package/build/assets/use-create-secret-CX7Ij7W4.js +0 -1
  1283. package/build/assets/use-event-store-DMRAQQi8.js +0 -1
  1284. package/build/assets/use-handle-plan-click-CwW2Ijc2.js +0 -1
  1285. package/build/assets/use-is-authed-CNbX1KMm.js +0 -1
  1286. package/build/assets/use-launch-skill-in-chat-xI9byRUw.js +0 -1
  1287. package/build/assets/use-llm-profiles-BXRZ2rBh.js +0 -1
  1288. package/build/assets/use-runtime-is-ready-Dwzs9_vp.js +0 -1
  1289. package/build/assets/use-settings-_usWr_qn.js +0 -1
  1290. package/build/assets/use-settings-nav-items-DoB5iH-7.js +0 -16
  1291. package/build/assets/use-skills-BtorhoCN.js +0 -1
  1292. package/build/assets/use-task-list-u46BhYBC.js +0 -1
  1293. package/build/assets/use-tracking-Ca7p71hH.js +0 -1
  1294. package/build/assets/use-user-conversation-U-16WF6G.js +0 -1
  1295. package/build/assets/useMutation-CseCrRRO.js +0 -1
  1296. package/build/assets/useQuery-bowvACed.js +0 -1
  1297. package/build/assets/useTranslation-KhTtKmnv.js +0 -1
  1298. package/build/assets/utils-cRyMoFbz.js +0 -1
  1299. package/build/assets/vendor~conversation-panel~conversation~alert-banner-CjfR7T3x.js +0 -1
  1300. package/build/assets/vendor~entry.client-_zl82x5T.js +0 -1
  1301. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~dj9x5fm9-CgCGB-3J.js +0 -177
  1302. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~jfvr34cq-BJdsUTJG.js +0 -1
  1303. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~m3df9r20-BynFAJ_S.js +0 -1
  1304. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~nk00xiud-MfCRtPrK.js +0 -9
  1305. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~ghtfhmuy-BHDILMe2.js +0 -1
  1306. package/build/assets/vendor~root-layout~conversation-panel~conversation-BFZmbXpq.js +0 -1
  1307. package/build/assets/vendor~root-layout~conversation-panel~conversation~index-BPY-kNjK.js +0 -1
  1308. package/build/assets/vendor~root-layout~home~conversation-panel~conversation-BhWqQNmF.js +0 -1
  1309. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~cfyi58ut-CnnEa0dP.js +0 -1
  1310. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~clac83qc-DMX6XUwI.js +0 -2
  1311. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ldu51w4e-Cqp6k3RG.js +0 -1
  1312. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ldu51w4e-DS4GWhCz.js +0 -9
  1313. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~ji28rqgb-DVffa9Ks.js +0 -48
  1314. package/build/assets/vendor~root-layout~home~mcp~automations-list~onboarding-modal-BzR6ypP3.js +0 -1
  1315. package/build/assets/vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~hzfcl1q6-BcvHZmEZ.js +0 -2
  1316. package/build/assets/vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~hzfcl1q6-Cuvp6wqR.js +0 -14
  1317. package/build/assets/verification-settings-DKZnUHD6.js +0 -1
  1318. package/build/assets/x-DpnGZyVW.js +0 -1
  1319. package/build/assets/x-mark-x3tvCZzc.js +0 -1
  1320. package/dist/components/features/analytics/analytics-consent-form-modal.d.ts +0 -5
  1321. package/dist/components/features/chat/switch-profile-button.cjs +0 -2
  1322. package/dist/components/features/chat/switch-profile-button.cjs.map +0 -1
  1323. package/dist/components/features/chat/switch-profile-button.d.ts +0 -1
  1324. package/dist/components/features/chat/switch-profile-button.js +0 -48
  1325. package/dist/components/features/chat/switch-profile-button.js.map +0 -1
  1326. package/dist/components/features/chat/switch-profile-context-menu.cjs +0 -2
  1327. package/dist/components/features/chat/switch-profile-context-menu.cjs.map +0 -1
  1328. package/dist/components/features/chat/switch-profile-context-menu.d.ts +0 -9
  1329. package/dist/components/features/chat/switch-profile-context-menu.js +0 -106
  1330. package/dist/components/features/chat/switch-profile-context-menu.js.map +0 -1
  1331. package/dist/components/features/onboarding/is-backend-llm-ready.d.ts +0 -30
  1332. package/dist/icons/u-circuit.cjs +0 -2
  1333. package/dist/icons/u-circuit.cjs.map +0 -1
  1334. package/dist/icons/u-circuit.js +0 -19
  1335. package/dist/icons/u-circuit.js.map +0 -1
  1336. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.cjs +0 -2
  1337. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.cjs.map +0 -1
  1338. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.js +0 -35
  1339. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.js.map +0 -1
  1340. package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.cjs +0 -2
  1341. package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.cjs.map +0 -1
  1342. package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.js +0 -35
  1343. package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.js.map +0 -1
  1344. package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.cjs +0 -2
  1345. package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.cjs.map +0 -1
  1346. package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.js +0 -35
  1347. package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.js.map +0 -1
  1348. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs +0 -2
  1349. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs.map +0 -1
  1350. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js +0 -35
  1351. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js.map +0 -1
  1352. package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.cjs +0 -2
  1353. package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.cjs.map +0 -1
  1354. package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.js +0 -35
  1355. package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.js.map +0 -1
  1356. package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.cjs +0 -2
  1357. package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.cjs.map +0 -1
  1358. package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.js +0 -35
  1359. package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.js.map +0 -1
  1360. package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.cjs +0 -2
  1361. package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.cjs.map +0 -1
  1362. package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.js +0 -28
  1363. package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.js.map +0 -1
  1364. package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.cjs +0 -2
  1365. package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.cjs.map +0 -1
  1366. package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.js +0 -35
  1367. package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.js.map +0 -1
  1368. package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.cjs +0 -2
  1369. package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.cjs.map +0 -1
  1370. package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.js +0 -35
  1371. package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.js.map +0 -1
  1372. package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.cjs +0 -2
  1373. package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.cjs.map +0 -1
  1374. package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.js +0 -35
  1375. package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.js.map +0 -1
  1376. /package/build/assets/{agent-server-ui-style-scope-CIDFDeQb.js → agent-server-ui-style-scope-COnDHTm5.js} +0 -0
  1377. /package/build/assets/{automation-DNgDxqtq.js → automation-BU8zu-FP.js} +0 -0
  1378. /package/build/assets/{common-KeiA2Rod.js → common-Dh7OqABE.js} +0 -0
  1379. /package/build/assets/{environment-switch-store-BpKxp6Xq.js → environment-switch-store-DkjlKWzN.js} +0 -0
  1380. /package/build/assets/{extension-module-card-classes-DvvyImGv.js → extension-module-card-classes-9V3J9J_b.js} +0 -0
  1381. /package/build/assets/{git-status-mapper-B3_HbzUT.js → git-status-mapper-BI8FyUVp.js} +0 -0
  1382. /package/build/assets/{handle-capture-consent-BChvj6mt.js → handle-capture-consent-CPMXU29K.js} +0 -0
  1383. /package/build/assets/{llm-subscription-C1xDoa3K.js → llm-subscription-DtsX5Lhg.js} +0 -0
  1384. /package/build/assets/{map-provider-MonJL5SS.js → map-provider-BM2SJarp.js} +0 -0
  1385. /package/build/assets/{objectWithoutPropertiesLoose-BRYudkUn.js → objectWithoutPropertiesLoose-BgYIAs2y.js} +0 -0
  1386. /package/build/assets/{rolldown-runtime-wFmyQBCi.js → rolldown-runtime-BFRubm34.js} +0 -0
  1387. /package/build/assets/{settings-like-page-layout-classes-DNg2vKSM.js → settings-like-page-layout-classes-DENKlZpD.js} +0 -0
  1388. /package/build/assets/{v4-BMWDcIWQ.js → v4-DbCkTSoU.js} +0 -0
  1389. /package/build/assets/{vendor~browser-yZEspfT9.js → vendor~browser-Dqd33JyP.js} +0 -0
  1390. /package/build/assets/{vendor~terminal-CcUoOdAH.js → vendor~terminal-aeP3PnKf.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"use-search-subdirs.cjs","names":[],"sources":["../../../src/hooks/query/use-search-subdirs.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { FileClient } from \"@openhands/typescript-client/clients\";\nimport { getAgentServerClientOptions } from \"#/api/agent-server-client-options\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\n\nexport interface FileBrowserEntry {\n label: string;\n path: string;\n}\n\nexport interface HomeDirectoryResponse {\n home: string;\n favorites?: FileBrowserEntry[];\n locations?: FileBrowserEntry[];\n}\n\nfunction getFileClient() {\n return new FileClient(getAgentServerClientOptions());\n}\n\nexport const useSearchSubdirs = (path: string | null) => {\n const active = useActiveBackend();\n return useQuery({\n queryKey: [\"file\", \"search_subdirs\", path, active.backend.id, active.orgId],\n queryFn: () => getFileClient().searchSubdirectories(path as string),\n enabled: !!path,\n retry: false,\n meta: { disableToast: true },\n });\n};\n\nexport const useHomeDirectory = () => {\n const active = useActiveBackend();\n return useQuery({\n queryKey: [\"file\", \"home\", active.backend.id, active.orgId],\n queryFn: async (): Promise<HomeDirectoryResponse> =>\n getFileClient().getHome(),\n retry: false,\n meta: { disableToast: true },\n staleTime: Infinity,\n });\n};\n"],"mappings":"6UAgBA,SAAS,GAAgB,CACvB,OAAO,IAAI,EAAA,WAAW,EAAA,6BAA6B,CAAC,CAGtD,IAAa,EAAoB,GAAwB,CACvD,IAAM,EAAS,EAAA,kBAAkB,CACjC,OAAO,EAAA,SAAS,CACd,SAAU,CAAC,OAAQ,iBAAkB,EAAM,EAAO,QAAQ,GAAI,EAAO,MAAM,CAC3E,YAAe,GAAe,CAAC,qBAAqB,EAAe,CACnE,QAAS,CAAC,CAAC,EACX,MAAO,GACP,KAAM,CAAE,aAAc,GAAM,CAC7B,CAAC,EAGS,MAAyB,CACpC,IAAM,EAAS,EAAA,kBAAkB,CACjC,OAAO,EAAA,SAAS,CACd,SAAU,CAAC,OAAQ,OAAQ,EAAO,QAAQ,GAAI,EAAO,MAAM,CAC3D,QAAS,SACP,GAAe,CAAC,SAAS,CAC3B,MAAO,GACP,KAAM,CAAE,aAAc,GAAM,CAC5B,UAAW,IACZ,CAAC"}
1
+ {"version":3,"file":"use-search-subdirs.cjs","names":[],"sources":["../../../src/hooks/query/use-search-subdirs.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { FileClient } from \"@openhands/typescript-client/clients\";\nimport { getAgentServerClientOptions } from \"#/api/agent-server-client-options\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\n\nexport interface FileBrowserEntry {\n label: string;\n path: string;\n}\n\nexport interface HomeDirectoryResponse {\n home: string;\n favorites?: FileBrowserEntry[];\n locations?: FileBrowserEntry[];\n}\n\nfunction getFileClient() {\n return new FileClient(getAgentServerClientOptions());\n}\n\nexport const useSearchSubdirs = (path: string | null) => {\n const active = useActiveBackend();\n return useQuery({\n queryKey: [\"file\", \"search_subdirs\", path, active.backend.id, active.orgId],\n queryFn: () => getFileClient().searchSubdirectories(path as string),\n enabled: !!path,\n retry: false,\n meta: { disableToast: true },\n });\n};\n\nexport const useHomeDirectory = () => {\n const active = useActiveBackend();\n return useQuery({\n queryKey: [\"file\", \"home\", active.backend.id, active.orgId],\n queryFn: async (): Promise<HomeDirectoryResponse> =>\n getFileClient().getHome(),\n retry: false,\n meta: { disableToast: true },\n staleTime: Infinity,\n });\n};\n"],"mappings":"+ZAgBA,SAAS,GAAgB,CACvB,OAAO,IAAI,EAAA,WAAW,EAAA,6BAA6B,CAAC,CAGtD,IAAa,EAAoB,GAAwB,CACvD,IAAM,EAAS,EAAA,kBAAkB,CACjC,OAAO,EAAA,SAAS,CACd,SAAU,CAAC,OAAQ,iBAAkB,EAAM,EAAO,QAAQ,GAAI,EAAO,MAAM,CAC3E,YAAe,GAAe,CAAC,qBAAqB,EAAe,CACnE,QAAS,CAAC,CAAC,EACX,MAAO,GACP,KAAM,CAAE,aAAc,GAAM,CAC7B,CAAC,EAGS,MAAyB,CACpC,IAAM,EAAS,EAAA,kBAAkB,CACjC,OAAO,EAAA,SAAS,CACd,SAAU,CAAC,OAAQ,OAAQ,EAAO,QAAQ,GAAI,EAAO,MAAM,CAC3D,QAAS,SACP,GAAe,CAAC,SAAS,CAC3B,MAAO,GACP,KAAM,CAAE,aAAc,GAAM,CAC5B,UAAW,IACZ,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { FileClient as e } from "../../node_modules/@openhands/typescript-client/dist/client/file-client.js";
2
+ import "../../node_modules/@openhands/typescript-client/dist/clients.js";
2
3
  import { getAgentServerClientOptions as t } from "../../api/agent-server-client-options.js";
3
4
  import { useQuery as n } from "../../node_modules/@tanstack/react-query/build/modern/useQuery.js";
4
5
  import { useActiveBackend as r } from "../../contexts/active-backend-context.js";
@@ -1 +1 @@
1
- {"version":3,"file":"use-search-subdirs.js","names":[],"sources":["../../../src/hooks/query/use-search-subdirs.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { FileClient } from \"@openhands/typescript-client/clients\";\nimport { getAgentServerClientOptions } from \"#/api/agent-server-client-options\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\n\nexport interface FileBrowserEntry {\n label: string;\n path: string;\n}\n\nexport interface HomeDirectoryResponse {\n home: string;\n favorites?: FileBrowserEntry[];\n locations?: FileBrowserEntry[];\n}\n\nfunction getFileClient() {\n return new FileClient(getAgentServerClientOptions());\n}\n\nexport const useSearchSubdirs = (path: string | null) => {\n const active = useActiveBackend();\n return useQuery({\n queryKey: [\"file\", \"search_subdirs\", path, active.backend.id, active.orgId],\n queryFn: () => getFileClient().searchSubdirectories(path as string),\n enabled: !!path,\n retry: false,\n meta: { disableToast: true },\n });\n};\n\nexport const useHomeDirectory = () => {\n const active = useActiveBackend();\n return useQuery({\n queryKey: [\"file\", \"home\", active.backend.id, active.orgId],\n queryFn: async (): Promise<HomeDirectoryResponse> =>\n getFileClient().getHome(),\n retry: false,\n meta: { disableToast: true },\n staleTime: Infinity,\n });\n};\n"],"mappings":";;;;;AAgBA,SAAS,IAAgB;AACvB,QAAO,IAAI,EAAW,GAA6B,CAAC;;AAGtD,IAAa,KAAoB,MAAwB;CACvD,IAAM,IAAS,GAAkB;AACjC,QAAO,EAAS;EACd,UAAU;GAAC;GAAQ;GAAkB;GAAM,EAAO,QAAQ;GAAI,EAAO;GAAM;EAC3E,eAAe,GAAe,CAAC,qBAAqB,EAAe;EACnE,SAAS,CAAC,CAAC;EACX,OAAO;EACP,MAAM,EAAE,cAAc,IAAM;EAC7B,CAAC;GAGS,UAAyB;CACpC,IAAM,IAAS,GAAkB;AACjC,QAAO,EAAS;EACd,UAAU;GAAC;GAAQ;GAAQ,EAAO,QAAQ;GAAI,EAAO;GAAM;EAC3D,SAAS,YACP,GAAe,CAAC,SAAS;EAC3B,OAAO;EACP,MAAM,EAAE,cAAc,IAAM;EAC5B,WAAW;EACZ,CAAC"}
1
+ {"version":3,"file":"use-search-subdirs.js","names":[],"sources":["../../../src/hooks/query/use-search-subdirs.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { FileClient } from \"@openhands/typescript-client/clients\";\nimport { getAgentServerClientOptions } from \"#/api/agent-server-client-options\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\n\nexport interface FileBrowserEntry {\n label: string;\n path: string;\n}\n\nexport interface HomeDirectoryResponse {\n home: string;\n favorites?: FileBrowserEntry[];\n locations?: FileBrowserEntry[];\n}\n\nfunction getFileClient() {\n return new FileClient(getAgentServerClientOptions());\n}\n\nexport const useSearchSubdirs = (path: string | null) => {\n const active = useActiveBackend();\n return useQuery({\n queryKey: [\"file\", \"search_subdirs\", path, active.backend.id, active.orgId],\n queryFn: () => getFileClient().searchSubdirectories(path as string),\n enabled: !!path,\n retry: false,\n meta: { disableToast: true },\n });\n};\n\nexport const useHomeDirectory = () => {\n const active = useActiveBackend();\n return useQuery({\n queryKey: [\"file\", \"home\", active.backend.id, active.orgId],\n queryFn: async (): Promise<HomeDirectoryResponse> =>\n getFileClient().getHome(),\n retry: false,\n meta: { disableToast: true },\n staleTime: Infinity,\n });\n};\n"],"mappings":";;;;;;AAgBA,SAAS,IAAgB;AACvB,QAAO,IAAI,EAAW,GAA6B,CAAC;;AAGtD,IAAa,KAAoB,MAAwB;CACvD,IAAM,IAAS,GAAkB;AACjC,QAAO,EAAS;EACd,UAAU;GAAC;GAAQ;GAAkB;GAAM,EAAO,QAAQ;GAAI,EAAO;GAAM;EAC3E,eAAe,GAAe,CAAC,qBAAqB,EAAe;EACnE,SAAS,CAAC,CAAC;EACX,OAAO;EACP,MAAM,EAAE,cAAc,IAAM;EAC7B,CAAC;GAGS,UAAyB;CACpC,IAAM,IAAS,GAAkB;AACjC,QAAO,EAAS;EACd,UAAU;GAAC;GAAQ;GAAQ,EAAO,QAAQ;GAAI,EAAO;GAAM;EAC3D,SAAS,YACP,GAAe,CAAC,SAAS;EAC3B,OAAO;EACP,MAAM,EAAE,cAAc,IAAM;EAC5B,WAAW;EACZ,CAAC"}
@@ -1,2 +1,2 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../api/backend-registry/active-store.cjs`),t=require(`./query-keys.cjs`),n=require(`../../node_modules/@tanstack/react-query/build/modern/useQuery.cjs`),r=require(`../../node_modules/axios/lib/axios.cjs`),i=require(`../../contexts/active-backend-context.cjs`),a=require(`../../services/settings.cjs`),o=require(`../../api/settings-service/settings-service.api.cjs`),s=require(`../../utils/settings-value-pickers.cjs`),c=require(`../../utils/mcp-config.cjs`);var l=e=>{if(typeof e==`object`&&e&&`status`in e){let{status:t}=e;if(typeof t==`number`)return t}if(r.default.isAxiosError(e))return e.response?.status},u=(e,t)=>{let n=t.split(`.`),r=e;for(let e of n){if(typeof r!=`object`||!r)return;r=r[e]}return r},d=(e,t,n,r=!1)=>{let i=u(e,t);return typeof i==`string`&&(i.length>0||r)?i:n},f=e=>{let t=e.agent_settings??{},n={...a.DEFAULT_SETTINGS.conversation_settings??{},...e.conversation_settings??{}};return{...a.DEFAULT_SETTINGS,...e,llm_model:d(t,`llm.model`,a.DEFAULT_SETTINGS.llm_model),llm_base_url:d(t,`llm.base_url`,a.DEFAULT_SETTINGS.llm_base_url,!0),agent:d(t,`agent`,a.DEFAULT_SETTINGS.agent),llm_api_key:e.llm_api_key??null,llm_api_key_set:e.llm_api_key_set??!1,confirmation_mode:s.pickFirstBoolean(n.confirmation_mode)??a.DEFAULT_SETTINGS.confirmation_mode,security_analyzer:s.pickNullableString(n.security_analyzer)??a.DEFAULT_SETTINGS.security_analyzer,max_iterations:s.pickFirstNumber(n.max_iterations)??a.DEFAULT_SETTINGS.max_iterations,enable_default_condenser:s.pickFirstBoolean(u(t,`condenser.enabled`))??a.DEFAULT_SETTINGS.enable_default_condenser,condenser_max_size:s.pickFirstNumber(u(t,`condenser.max_size`))??a.DEFAULT_SETTINGS.condenser_max_size,mcp_config:c.parseMcpConfig(e.mcp_config??t.mcp_config),search_api_key:e.search_api_key||``,email:e.email||``,git_user_name:e.git_user_name||a.DEFAULT_SETTINGS.git_user_name,git_user_email:e.git_user_email||a.DEFAULT_SETTINGS.git_user_email,is_new_user:!1,disabled_skills:e.disabled_skills??a.DEFAULT_SETTINGS.disabled_skills,agent_settings_schema:e.agent_settings_schema??null,agent_settings:e.agent_settings??a.DEFAULT_SETTINGS.agent_settings,conversation_settings_schema:e.conversation_settings_schema??a.DEFAULT_SETTINGS.conversation_settings_schema,conversation_settings:n}},p=async(e=`personal`)=>{if(e!==`personal`)throw Error(`Unsupported settings scope: ${e}`);return f(await o.default.getSettings())},m=(r=`personal`)=>{let o=i.useActiveBackend(),s=!e.isNoBackend(o.backend),c=n.useQuery({queryKey:[...t.SETTINGS_QUERY_KEYS.byScope(r),o.backend.id,o.orgId],queryFn:()=>p(r),retry:(e,t)=>l(t)!==404,enabled:s,refetchOnWindowFocus:!1,staleTime:1e3*60*5,gcTime:1e3*60*15,meta:{disableToast:!0}});return s?l(c.error)===404?{data:a.DEFAULT_SETTINGS,error:c.error,isError:c.isError,isLoading:c.isLoading,isFetching:c.isFetching,isFetched:c.isFetched,isSuccess:c.isSuccess,status:c.status,fetchStatus:c.fetchStatus,refetch:c.refetch}:c:{data:a.DEFAULT_SETTINGS,error:null,isError:!1,isLoading:!1,isFetching:!1,isFetched:!1,isSuccess:!0,status:`success`,fetchStatus:`idle`,refetch:c.refetch}};exports.getErrorStatus=l,exports.useSettings=m;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../api/backend-registry/active-store.cjs`),t=require(`./query-keys.cjs`),n=require(`../../node_modules/@tanstack/react-query/build/modern/useQuery.cjs`),r=require(`../../node_modules/axios/lib/axios.cjs`),i=require(`../../contexts/active-backend-context.cjs`),a=require(`../../services/settings.cjs`),o=require(`../../utils/mcp-config.cjs`),s=require(`../../api/settings-service/settings-service.api.cjs`),c=require(`../../utils/settings-value-pickers.cjs`);var l=e=>{if(typeof e==`object`&&e&&`status`in e){let{status:t}=e;if(typeof t==`number`)return t}if(r.default.isAxiosError(e))return e.response?.status},u=(e,t)=>{let n=t.split(`.`),r=e;for(let e of n){if(typeof r!=`object`||!r)return;r=r[e]}return r},d=(e,t,n,r=!1)=>{let i=u(e,t);return typeof i==`string`&&(i.length>0||r)?i:n},f=e=>{let t=e.agent_settings??{},n={...a.DEFAULT_SETTINGS.conversation_settings??{},...e.conversation_settings??{}},r=t.mcp_config===void 0?e.mcp_config??a.DEFAULT_SETTINGS.mcp_config:o.parseMcpConfig(t.mcp_config);return{...a.DEFAULT_SETTINGS,...e,llm_model:d(t,`llm.model`,a.DEFAULT_SETTINGS.llm_model),llm_base_url:d(t,`llm.base_url`,a.DEFAULT_SETTINGS.llm_base_url,!0),agent:d(t,`agent`,a.DEFAULT_SETTINGS.agent),llm_api_key:e.llm_api_key??null,llm_api_key_set:e.llm_api_key_set??!1,confirmation_mode:c.pickFirstBoolean(n.confirmation_mode)??a.DEFAULT_SETTINGS.confirmation_mode,security_analyzer:c.pickNullableString(n.security_analyzer)??a.DEFAULT_SETTINGS.security_analyzer,max_iterations:c.pickFirstNumber(n.max_iterations)??a.DEFAULT_SETTINGS.max_iterations,enable_default_condenser:c.pickFirstBoolean(u(t,`condenser.enabled`))??a.DEFAULT_SETTINGS.enable_default_condenser,condenser_max_size:c.pickFirstNumber(u(t,`condenser.max_size`))??a.DEFAULT_SETTINGS.condenser_max_size,mcp_config:r,search_api_key:e.search_api_key||``,email:e.email||``,git_user_name:e.git_user_name||a.DEFAULT_SETTINGS.git_user_name,git_user_email:e.git_user_email||a.DEFAULT_SETTINGS.git_user_email,is_new_user:!1,disabled_skills:e.disabled_skills??a.DEFAULT_SETTINGS.disabled_skills,agent_settings_schema:e.agent_settings_schema??null,agent_settings:e.agent_settings??a.DEFAULT_SETTINGS.agent_settings,conversation_settings_schema:e.conversation_settings_schema??a.DEFAULT_SETTINGS.conversation_settings_schema,conversation_settings:n}},p=async(e=`personal`)=>{if(e!==`personal`)throw Error(`Unsupported settings scope: ${e}`);return f(await s.default.getSettings())},m=(r=`personal`)=>{let o=i.useActiveBackend(),s=!e.isNoBackend(o.backend),c=n.useQuery({queryKey:[...t.SETTINGS_QUERY_KEYS.byScope(r),o.backend.id,o.orgId],queryFn:()=>p(r),retry:(e,t)=>l(t)!==404,enabled:s,refetchOnWindowFocus:!1,staleTime:1e3*60*5,gcTime:1e3*60*15,meta:{disableToast:!0}});return s?l(c.error)===404?{data:a.DEFAULT_SETTINGS,error:c.error,isError:c.isError,isLoading:c.isLoading,isFetching:c.isFetching,isFetched:c.isFetched,isSuccess:c.isSuccess,status:c.status,fetchStatus:c.fetchStatus,refetch:c.refetch}:c:{data:a.DEFAULT_SETTINGS,error:null,isError:!1,isLoading:!1,isFetching:!1,isFetched:!1,isSuccess:!0,status:`success`,fetchStatus:`idle`,refetch:c.refetch}};exports.getErrorStatus=l,exports.useSettings=m;
2
2
  //# sourceMappingURL=use-settings.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-settings.cjs","names":[],"sources":["../../../src/hooks/query/use-settings.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport { DEFAULT_SETTINGS } from \"#/services/settings\";\nimport { Settings, SettingsScope, SettingsValue } from \"#/types/settings\";\nimport SettingsService from \"#/api/settings-service/settings-service.api\";\nimport { isNoBackend } from \"#/api/backend-registry/active-store\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { SETTINGS_QUERY_KEYS } from \"#/hooks/query/query-keys\";\nimport {\n pickFirstBoolean,\n pickFirstNumber,\n pickNullableString,\n} from \"#/utils/settings-value-pickers\";\nimport { parseMcpConfig } from \"#/utils/mcp-config\";\n\nexport const getErrorStatus = (error: unknown): number | undefined => {\n if (typeof error === \"object\" && error !== null && \"status\" in error) {\n const { status } = error as { status?: unknown };\n if (typeof status === \"number\") {\n return status;\n }\n }\n\n if (axios.isAxiosError(error)) {\n return error.response?.status;\n }\n\n return undefined;\n};\n\nconst lookupNested = (obj: Record<string, unknown>, key: string): unknown => {\n const parts = key.split(\".\");\n let current: unknown = obj;\n for (const part of parts) {\n if (current == null || typeof current !== \"object\") return undefined;\n current = (current as Record<string, unknown>)[part];\n }\n return current;\n};\n\nconst resolveSdkString = (\n agentSettings: Record<string, unknown>,\n key: string,\n defaultValue: string,\n allowEmpty = false,\n): string => {\n const value = lookupNested(agentSettings, key);\n if (typeof value === \"string\" && (value.length > 0 || allowEmpty)) {\n return value;\n }\n return defaultValue;\n};\n\nconst normalizeSettingsResponse = (settings: Partial<Settings>): Settings => {\n const agentSettings = (settings.agent_settings ?? {}) as Record<\n string,\n unknown\n >;\n const conversationSettings = {\n ...(DEFAULT_SETTINGS.conversation_settings ?? {}),\n ...((settings.conversation_settings ?? {}) as Record<\n string,\n SettingsValue\n >),\n };\n\n return {\n ...DEFAULT_SETTINGS,\n ...settings,\n llm_model: resolveSdkString(\n agentSettings,\n \"llm.model\",\n DEFAULT_SETTINGS.llm_model,\n ),\n llm_base_url: resolveSdkString(\n agentSettings,\n \"llm.base_url\",\n DEFAULT_SETTINGS.llm_base_url,\n true,\n ),\n agent: resolveSdkString(agentSettings, \"agent\", DEFAULT_SETTINGS.agent),\n llm_api_key: settings.llm_api_key ?? null,\n llm_api_key_set: settings.llm_api_key_set ?? false,\n confirmation_mode:\n pickFirstBoolean(conversationSettings.confirmation_mode) ??\n DEFAULT_SETTINGS.confirmation_mode,\n security_analyzer:\n pickNullableString(conversationSettings.security_analyzer) ??\n DEFAULT_SETTINGS.security_analyzer,\n max_iterations:\n pickFirstNumber(conversationSettings.max_iterations) ??\n DEFAULT_SETTINGS.max_iterations,\n enable_default_condenser:\n pickFirstBoolean(lookupNested(agentSettings, \"condenser.enabled\")) ??\n DEFAULT_SETTINGS.enable_default_condenser,\n condenser_max_size:\n pickFirstNumber(lookupNested(agentSettings, \"condenser.max_size\")) ??\n DEFAULT_SETTINGS.condenser_max_size,\n mcp_config: parseMcpConfig(\n settings.mcp_config ??\n (agentSettings.mcp_config as typeof settings.mcp_config),\n ),\n search_api_key: settings.search_api_key || \"\",\n email: settings.email || \"\",\n git_user_name: settings.git_user_name || DEFAULT_SETTINGS.git_user_name,\n git_user_email: settings.git_user_email || DEFAULT_SETTINGS.git_user_email,\n is_new_user: false,\n disabled_skills:\n settings.disabled_skills ?? DEFAULT_SETTINGS.disabled_skills,\n agent_settings_schema: settings.agent_settings_schema ?? null,\n agent_settings: settings.agent_settings ?? DEFAULT_SETTINGS.agent_settings,\n conversation_settings_schema:\n settings.conversation_settings_schema ??\n DEFAULT_SETTINGS.conversation_settings_schema,\n conversation_settings: conversationSettings,\n };\n};\n\nexport const getSettingsQueryFn = async (\n scope: SettingsScope = \"personal\",\n): Promise<Settings> => {\n if (scope !== \"personal\") {\n throw new Error(`Unsupported settings scope: ${scope}`);\n }\n\n const settings = await SettingsService.getSettings();\n return normalizeSettingsResponse(settings);\n};\n\nexport const useSettings = (scope: SettingsScope = \"personal\") => {\n const active = useActiveBackend();\n const hasBackend = !isNoBackend(active.backend);\n const query = useQuery({\n // Include the active backend identity so switching backends or orgs\n // produces a fresh query — the `staleTime` cache for one backend\n // never serves another's data.\n queryKey: [\n ...SETTINGS_QUERY_KEYS.byScope(scope),\n active.backend.id,\n active.orgId,\n ],\n queryFn: () => getSettingsQueryFn(scope),\n retry: (_, error) => getErrorStatus(error) !== 404,\n enabled: hasBackend,\n refetchOnWindowFocus: false,\n staleTime: 1000 * 60 * 5,\n gcTime: 1000 * 60 * 15,\n meta: {\n disableToast: true,\n },\n });\n\n if (!hasBackend) {\n return {\n data: DEFAULT_SETTINGS,\n error: null,\n isError: false,\n isLoading: false,\n isFetching: false,\n isFetched: false,\n isSuccess: true,\n status: \"success\" as const,\n fetchStatus: \"idle\" as const,\n refetch: query.refetch,\n };\n }\n\n if (getErrorStatus(query.error) === 404) {\n return {\n data: DEFAULT_SETTINGS,\n error: query.error,\n isError: query.isError,\n isLoading: query.isLoading,\n isFetching: query.isFetching,\n isFetched: query.isFetched,\n isSuccess: query.isSuccess,\n status: query.status,\n fetchStatus: query.fetchStatus,\n refetch: query.refetch,\n };\n }\n\n return query;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-settings.cjs","names":[],"sources":["../../../src/hooks/query/use-settings.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport { DEFAULT_SETTINGS } from \"#/services/settings\";\nimport { Settings, SettingsScope, SettingsValue } from \"#/types/settings\";\nimport SettingsService from \"#/api/settings-service/settings-service.api\";\nimport { isNoBackend } from \"#/api/backend-registry/active-store\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { SETTINGS_QUERY_KEYS } from \"#/hooks/query/query-keys\";\nimport {\n pickFirstBoolean,\n pickFirstNumber,\n pickNullableString,\n} from \"#/utils/settings-value-pickers\";\nimport { parseMcpConfig } from \"#/utils/mcp-config\";\n\nexport const getErrorStatus = (error: unknown): number | undefined => {\n if (typeof error === \"object\" && error !== null && \"status\" in error) {\n const { status } = error as { status?: unknown };\n if (typeof status === \"number\") {\n return status;\n }\n }\n\n if (axios.isAxiosError(error)) {\n return error.response?.status;\n }\n\n return undefined;\n};\n\nconst lookupNested = (obj: Record<string, unknown>, key: string): unknown => {\n const parts = key.split(\".\");\n let current: unknown = obj;\n for (const part of parts) {\n if (current == null || typeof current !== \"object\") return undefined;\n current = (current as Record<string, unknown>)[part];\n }\n return current;\n};\n\nconst resolveSdkString = (\n agentSettings: Record<string, unknown>,\n key: string,\n defaultValue: string,\n allowEmpty = false,\n): string => {\n const value = lookupNested(agentSettings, key);\n if (typeof value === \"string\" && (value.length > 0 || allowEmpty)) {\n return value;\n }\n return defaultValue;\n};\n\nconst normalizeSettingsResponse = (settings: Partial<Settings>): Settings => {\n const agentSettings = (settings.agent_settings ?? {}) as Record<\n string,\n unknown\n >;\n const conversationSettings = {\n ...(DEFAULT_SETTINGS.conversation_settings ?? {}),\n ...((settings.conversation_settings ?? {}) as Record<\n string,\n SettingsValue\n >),\n };\n\n const mcpConfig =\n agentSettings.mcp_config !== undefined\n ? parseMcpConfig(agentSettings.mcp_config)\n : (settings.mcp_config ?? DEFAULT_SETTINGS.mcp_config);\n\n return {\n ...DEFAULT_SETTINGS,\n ...settings,\n llm_model: resolveSdkString(\n agentSettings,\n \"llm.model\",\n DEFAULT_SETTINGS.llm_model,\n ),\n llm_base_url: resolveSdkString(\n agentSettings,\n \"llm.base_url\",\n DEFAULT_SETTINGS.llm_base_url,\n true,\n ),\n agent: resolveSdkString(agentSettings, \"agent\", DEFAULT_SETTINGS.agent),\n llm_api_key: settings.llm_api_key ?? null,\n llm_api_key_set: settings.llm_api_key_set ?? false,\n confirmation_mode:\n pickFirstBoolean(conversationSettings.confirmation_mode) ??\n DEFAULT_SETTINGS.confirmation_mode,\n security_analyzer:\n pickNullableString(conversationSettings.security_analyzer) ??\n DEFAULT_SETTINGS.security_analyzer,\n max_iterations:\n pickFirstNumber(conversationSettings.max_iterations) ??\n DEFAULT_SETTINGS.max_iterations,\n enable_default_condenser:\n pickFirstBoolean(lookupNested(agentSettings, \"condenser.enabled\")) ??\n DEFAULT_SETTINGS.enable_default_condenser,\n condenser_max_size:\n pickFirstNumber(lookupNested(agentSettings, \"condenser.max_size\")) ??\n DEFAULT_SETTINGS.condenser_max_size,\n mcp_config: mcpConfig,\n search_api_key: settings.search_api_key || \"\",\n email: settings.email || \"\",\n git_user_name: settings.git_user_name || DEFAULT_SETTINGS.git_user_name,\n git_user_email: settings.git_user_email || DEFAULT_SETTINGS.git_user_email,\n is_new_user: false,\n disabled_skills:\n settings.disabled_skills ?? DEFAULT_SETTINGS.disabled_skills,\n agent_settings_schema: settings.agent_settings_schema ?? null,\n agent_settings: settings.agent_settings ?? DEFAULT_SETTINGS.agent_settings,\n conversation_settings_schema:\n settings.conversation_settings_schema ??\n DEFAULT_SETTINGS.conversation_settings_schema,\n conversation_settings: conversationSettings,\n };\n};\n\nexport const getSettingsQueryFn = async (\n scope: SettingsScope = \"personal\",\n): Promise<Settings> => {\n if (scope !== \"personal\") {\n throw new Error(`Unsupported settings scope: ${scope}`);\n }\n\n const settings = await SettingsService.getSettings();\n return normalizeSettingsResponse(settings);\n};\n\nexport const useSettings = (scope: SettingsScope = \"personal\") => {\n const active = useActiveBackend();\n const hasBackend = !isNoBackend(active.backend);\n const query = useQuery({\n // Include the active backend identity so switching backends or orgs\n // produces a fresh query — the `staleTime` cache for one backend\n // never serves another's data.\n queryKey: [\n ...SETTINGS_QUERY_KEYS.byScope(scope),\n active.backend.id,\n active.orgId,\n ],\n queryFn: () => getSettingsQueryFn(scope),\n retry: (_, error) => getErrorStatus(error) !== 404,\n enabled: hasBackend,\n refetchOnWindowFocus: false,\n staleTime: 1000 * 60 * 5,\n gcTime: 1000 * 60 * 15,\n meta: {\n disableToast: true,\n },\n });\n\n if (!hasBackend) {\n return {\n data: DEFAULT_SETTINGS,\n error: null,\n isError: false,\n isLoading: false,\n isFetching: false,\n isFetched: false,\n isSuccess: true,\n status: \"success\" as const,\n fetchStatus: \"idle\" as const,\n refetch: query.refetch,\n };\n }\n\n if (getErrorStatus(query.error) === 404) {\n return {\n data: DEFAULT_SETTINGS,\n error: query.error,\n isError: query.isError,\n isLoading: query.isLoading,\n isFetching: query.isFetching,\n isFetched: query.isFetched,\n isSuccess: query.isSuccess,\n status: query.status,\n fetchStatus: query.fetchStatus,\n refetch: query.refetch,\n };\n }\n\n return query;\n};\n"],"mappings":"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"}
@@ -4,9 +4,9 @@ import { useQuery as n } from "../../node_modules/@tanstack/react-query/build/mo
4
4
  import r from "../../node_modules/axios/lib/axios.js";
5
5
  import { useActiveBackend as i } from "../../contexts/active-backend-context.js";
6
6
  import { DEFAULT_SETTINGS as a } from "../../services/settings.js";
7
- import o from "../../api/settings-service/settings-service.api.js";
8
- import { pickFirstBoolean as s, pickFirstNumber as c, pickNullableString as l } from "../../utils/settings-value-pickers.js";
9
- import { parseMcpConfig as u } from "../../utils/mcp-config.js";
7
+ import { parseMcpConfig as o } from "../../utils/mcp-config.js";
8
+ import s from "../../api/settings-service/settings-service.api.js";
9
+ import { pickFirstBoolean as c, pickFirstNumber as l, pickNullableString as u } from "../../utils/settings-value-pickers.js";
10
10
  //#region src/hooks/query/use-settings.ts
11
11
  var d = (e) => {
12
12
  if (typeof e == "object" && e && "status" in e) {
@@ -28,7 +28,7 @@ var d = (e) => {
28
28
  let t = e.agent_settings ?? {}, n = {
29
29
  ...a.conversation_settings ?? {},
30
30
  ...e.conversation_settings ?? {}
31
- };
31
+ }, r = t.mcp_config === void 0 ? e.mcp_config ?? a.mcp_config : o(t.mcp_config);
32
32
  return {
33
33
  ...a,
34
34
  ...e,
@@ -37,12 +37,12 @@ var d = (e) => {
37
37
  agent: p(t, "agent", a.agent),
38
38
  llm_api_key: e.llm_api_key ?? null,
39
39
  llm_api_key_set: e.llm_api_key_set ?? !1,
40
- confirmation_mode: s(n.confirmation_mode) ?? a.confirmation_mode,
41
- security_analyzer: l(n.security_analyzer) ?? a.security_analyzer,
42
- max_iterations: c(n.max_iterations) ?? a.max_iterations,
43
- enable_default_condenser: s(f(t, "condenser.enabled")) ?? a.enable_default_condenser,
44
- condenser_max_size: c(f(t, "condenser.max_size")) ?? a.condenser_max_size,
45
- mcp_config: u(e.mcp_config ?? t.mcp_config),
40
+ confirmation_mode: c(n.confirmation_mode) ?? a.confirmation_mode,
41
+ security_analyzer: u(n.security_analyzer) ?? a.security_analyzer,
42
+ max_iterations: l(n.max_iterations) ?? a.max_iterations,
43
+ enable_default_condenser: c(f(t, "condenser.enabled")) ?? a.enable_default_condenser,
44
+ condenser_max_size: l(f(t, "condenser.max_size")) ?? a.condenser_max_size,
45
+ mcp_config: r,
46
46
  search_api_key: e.search_api_key || "",
47
47
  email: e.email || "",
48
48
  git_user_name: e.git_user_name || a.git_user_name,
@@ -56,7 +56,7 @@ var d = (e) => {
56
56
  };
57
57
  }, h = async (e = "personal") => {
58
58
  if (e !== "personal") throw Error(`Unsupported settings scope: ${e}`);
59
- return m(await o.getSettings());
59
+ return m(await s.getSettings());
60
60
  }, g = (r = "personal") => {
61
61
  let o = i(), s = !e(o.backend), c = n({
62
62
  queryKey: [
@@ -1 +1 @@
1
- {"version":3,"file":"use-settings.js","names":[],"sources":["../../../src/hooks/query/use-settings.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport { DEFAULT_SETTINGS } from \"#/services/settings\";\nimport { Settings, SettingsScope, SettingsValue } from \"#/types/settings\";\nimport SettingsService from \"#/api/settings-service/settings-service.api\";\nimport { isNoBackend } from \"#/api/backend-registry/active-store\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { SETTINGS_QUERY_KEYS } from \"#/hooks/query/query-keys\";\nimport {\n pickFirstBoolean,\n pickFirstNumber,\n pickNullableString,\n} from \"#/utils/settings-value-pickers\";\nimport { parseMcpConfig } from \"#/utils/mcp-config\";\n\nexport const getErrorStatus = (error: unknown): number | undefined => {\n if (typeof error === \"object\" && error !== null && \"status\" in error) {\n const { status } = error as { status?: unknown };\n if (typeof status === \"number\") {\n return status;\n }\n }\n\n if (axios.isAxiosError(error)) {\n return error.response?.status;\n }\n\n return undefined;\n};\n\nconst lookupNested = (obj: Record<string, unknown>, key: string): unknown => {\n const parts = key.split(\".\");\n let current: unknown = obj;\n for (const part of parts) {\n if (current == null || typeof current !== \"object\") return undefined;\n current = (current as Record<string, unknown>)[part];\n }\n return current;\n};\n\nconst resolveSdkString = (\n agentSettings: Record<string, unknown>,\n key: string,\n defaultValue: string,\n allowEmpty = false,\n): string => {\n const value = lookupNested(agentSettings, key);\n if (typeof value === \"string\" && (value.length > 0 || allowEmpty)) {\n return value;\n }\n return defaultValue;\n};\n\nconst normalizeSettingsResponse = (settings: Partial<Settings>): Settings => {\n const agentSettings = (settings.agent_settings ?? {}) as Record<\n string,\n unknown\n >;\n const conversationSettings = {\n ...(DEFAULT_SETTINGS.conversation_settings ?? {}),\n ...((settings.conversation_settings ?? {}) as Record<\n string,\n SettingsValue\n >),\n };\n\n return {\n ...DEFAULT_SETTINGS,\n ...settings,\n llm_model: resolveSdkString(\n agentSettings,\n \"llm.model\",\n DEFAULT_SETTINGS.llm_model,\n ),\n llm_base_url: resolveSdkString(\n agentSettings,\n \"llm.base_url\",\n DEFAULT_SETTINGS.llm_base_url,\n true,\n ),\n agent: resolveSdkString(agentSettings, \"agent\", DEFAULT_SETTINGS.agent),\n llm_api_key: settings.llm_api_key ?? null,\n llm_api_key_set: settings.llm_api_key_set ?? false,\n confirmation_mode:\n pickFirstBoolean(conversationSettings.confirmation_mode) ??\n DEFAULT_SETTINGS.confirmation_mode,\n security_analyzer:\n pickNullableString(conversationSettings.security_analyzer) ??\n DEFAULT_SETTINGS.security_analyzer,\n max_iterations:\n pickFirstNumber(conversationSettings.max_iterations) ??\n DEFAULT_SETTINGS.max_iterations,\n enable_default_condenser:\n pickFirstBoolean(lookupNested(agentSettings, \"condenser.enabled\")) ??\n DEFAULT_SETTINGS.enable_default_condenser,\n condenser_max_size:\n pickFirstNumber(lookupNested(agentSettings, \"condenser.max_size\")) ??\n DEFAULT_SETTINGS.condenser_max_size,\n mcp_config: parseMcpConfig(\n settings.mcp_config ??\n (agentSettings.mcp_config as typeof settings.mcp_config),\n ),\n search_api_key: settings.search_api_key || \"\",\n email: settings.email || \"\",\n git_user_name: settings.git_user_name || DEFAULT_SETTINGS.git_user_name,\n git_user_email: settings.git_user_email || DEFAULT_SETTINGS.git_user_email,\n is_new_user: false,\n disabled_skills:\n settings.disabled_skills ?? DEFAULT_SETTINGS.disabled_skills,\n agent_settings_schema: settings.agent_settings_schema ?? null,\n agent_settings: settings.agent_settings ?? DEFAULT_SETTINGS.agent_settings,\n conversation_settings_schema:\n settings.conversation_settings_schema ??\n DEFAULT_SETTINGS.conversation_settings_schema,\n conversation_settings: conversationSettings,\n };\n};\n\nexport const getSettingsQueryFn = async (\n scope: SettingsScope = \"personal\",\n): Promise<Settings> => {\n if (scope !== \"personal\") {\n throw new Error(`Unsupported settings scope: ${scope}`);\n }\n\n const settings = await SettingsService.getSettings();\n return normalizeSettingsResponse(settings);\n};\n\nexport const useSettings = (scope: SettingsScope = \"personal\") => {\n const active = useActiveBackend();\n const hasBackend = !isNoBackend(active.backend);\n const query = useQuery({\n // Include the active backend identity so switching backends or orgs\n // produces a fresh query — the `staleTime` cache for one backend\n // never serves another's data.\n queryKey: [\n ...SETTINGS_QUERY_KEYS.byScope(scope),\n active.backend.id,\n active.orgId,\n ],\n queryFn: () => getSettingsQueryFn(scope),\n retry: (_, error) => getErrorStatus(error) !== 404,\n enabled: hasBackend,\n refetchOnWindowFocus: false,\n staleTime: 1000 * 60 * 5,\n gcTime: 1000 * 60 * 15,\n meta: {\n disableToast: true,\n },\n });\n\n if (!hasBackend) {\n return {\n data: DEFAULT_SETTINGS,\n error: null,\n isError: false,\n isLoading: false,\n isFetching: false,\n isFetched: false,\n isSuccess: true,\n status: \"success\" as const,\n fetchStatus: \"idle\" as const,\n refetch: query.refetch,\n };\n }\n\n if (getErrorStatus(query.error) === 404) {\n return {\n data: DEFAULT_SETTINGS,\n error: query.error,\n isError: query.isError,\n isLoading: query.isLoading,\n isFetching: query.isFetching,\n isFetched: query.isFetched,\n isSuccess: query.isSuccess,\n status: query.status,\n fetchStatus: query.fetchStatus,\n refetch: query.refetch,\n };\n }\n\n return query;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-settings.js","names":[],"sources":["../../../src/hooks/query/use-settings.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport { DEFAULT_SETTINGS } from \"#/services/settings\";\nimport { Settings, SettingsScope, SettingsValue } from \"#/types/settings\";\nimport SettingsService from \"#/api/settings-service/settings-service.api\";\nimport { isNoBackend } from \"#/api/backend-registry/active-store\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { SETTINGS_QUERY_KEYS } from \"#/hooks/query/query-keys\";\nimport {\n pickFirstBoolean,\n pickFirstNumber,\n pickNullableString,\n} from \"#/utils/settings-value-pickers\";\nimport { parseMcpConfig } from \"#/utils/mcp-config\";\n\nexport const getErrorStatus = (error: unknown): number | undefined => {\n if (typeof error === \"object\" && error !== null && \"status\" in error) {\n const { status } = error as { status?: unknown };\n if (typeof status === \"number\") {\n return status;\n }\n }\n\n if (axios.isAxiosError(error)) {\n return error.response?.status;\n }\n\n return undefined;\n};\n\nconst lookupNested = (obj: Record<string, unknown>, key: string): unknown => {\n const parts = key.split(\".\");\n let current: unknown = obj;\n for (const part of parts) {\n if (current == null || typeof current !== \"object\") return undefined;\n current = (current as Record<string, unknown>)[part];\n }\n return current;\n};\n\nconst resolveSdkString = (\n agentSettings: Record<string, unknown>,\n key: string,\n defaultValue: string,\n allowEmpty = false,\n): string => {\n const value = lookupNested(agentSettings, key);\n if (typeof value === \"string\" && (value.length > 0 || allowEmpty)) {\n return value;\n }\n return defaultValue;\n};\n\nconst normalizeSettingsResponse = (settings: Partial<Settings>): Settings => {\n const agentSettings = (settings.agent_settings ?? {}) as Record<\n string,\n unknown\n >;\n const conversationSettings = {\n ...(DEFAULT_SETTINGS.conversation_settings ?? {}),\n ...((settings.conversation_settings ?? {}) as Record<\n string,\n SettingsValue\n >),\n };\n\n const mcpConfig =\n agentSettings.mcp_config !== undefined\n ? parseMcpConfig(agentSettings.mcp_config)\n : (settings.mcp_config ?? DEFAULT_SETTINGS.mcp_config);\n\n return {\n ...DEFAULT_SETTINGS,\n ...settings,\n llm_model: resolveSdkString(\n agentSettings,\n \"llm.model\",\n DEFAULT_SETTINGS.llm_model,\n ),\n llm_base_url: resolveSdkString(\n agentSettings,\n \"llm.base_url\",\n DEFAULT_SETTINGS.llm_base_url,\n true,\n ),\n agent: resolveSdkString(agentSettings, \"agent\", DEFAULT_SETTINGS.agent),\n llm_api_key: settings.llm_api_key ?? null,\n llm_api_key_set: settings.llm_api_key_set ?? false,\n confirmation_mode:\n pickFirstBoolean(conversationSettings.confirmation_mode) ??\n DEFAULT_SETTINGS.confirmation_mode,\n security_analyzer:\n pickNullableString(conversationSettings.security_analyzer) ??\n DEFAULT_SETTINGS.security_analyzer,\n max_iterations:\n pickFirstNumber(conversationSettings.max_iterations) ??\n DEFAULT_SETTINGS.max_iterations,\n enable_default_condenser:\n pickFirstBoolean(lookupNested(agentSettings, \"condenser.enabled\")) ??\n DEFAULT_SETTINGS.enable_default_condenser,\n condenser_max_size:\n pickFirstNumber(lookupNested(agentSettings, \"condenser.max_size\")) ??\n DEFAULT_SETTINGS.condenser_max_size,\n mcp_config: mcpConfig,\n search_api_key: settings.search_api_key || \"\",\n email: settings.email || \"\",\n git_user_name: settings.git_user_name || DEFAULT_SETTINGS.git_user_name,\n git_user_email: settings.git_user_email || DEFAULT_SETTINGS.git_user_email,\n is_new_user: false,\n disabled_skills:\n settings.disabled_skills ?? DEFAULT_SETTINGS.disabled_skills,\n agent_settings_schema: settings.agent_settings_schema ?? null,\n agent_settings: settings.agent_settings ?? DEFAULT_SETTINGS.agent_settings,\n conversation_settings_schema:\n settings.conversation_settings_schema ??\n DEFAULT_SETTINGS.conversation_settings_schema,\n conversation_settings: conversationSettings,\n };\n};\n\nexport const getSettingsQueryFn = async (\n scope: SettingsScope = \"personal\",\n): Promise<Settings> => {\n if (scope !== \"personal\") {\n throw new Error(`Unsupported settings scope: ${scope}`);\n }\n\n const settings = await SettingsService.getSettings();\n return normalizeSettingsResponse(settings);\n};\n\nexport const useSettings = (scope: SettingsScope = \"personal\") => {\n const active = useActiveBackend();\n const hasBackend = !isNoBackend(active.backend);\n const query = useQuery({\n // Include the active backend identity so switching backends or orgs\n // produces a fresh query — the `staleTime` cache for one backend\n // never serves another's data.\n queryKey: [\n ...SETTINGS_QUERY_KEYS.byScope(scope),\n active.backend.id,\n active.orgId,\n ],\n queryFn: () => getSettingsQueryFn(scope),\n retry: (_, error) => getErrorStatus(error) !== 404,\n enabled: hasBackend,\n refetchOnWindowFocus: false,\n staleTime: 1000 * 60 * 5,\n gcTime: 1000 * 60 * 15,\n meta: {\n disableToast: true,\n },\n });\n\n if (!hasBackend) {\n return {\n data: DEFAULT_SETTINGS,\n error: null,\n isError: false,\n isLoading: false,\n isFetching: false,\n isFetched: false,\n isSuccess: true,\n status: \"success\" as const,\n fetchStatus: \"idle\" as const,\n refetch: query.refetch,\n };\n }\n\n if (getErrorStatus(query.error) === 404) {\n return {\n data: DEFAULT_SETTINGS,\n error: query.error,\n isError: query.isError,\n isLoading: query.isLoading,\n isFetching: query.isFetching,\n isFetched: query.isFetched,\n isSuccess: query.isSuccess,\n status: query.status,\n fetchStatus: query.fetchStatus,\n refetch: query.refetch,\n };\n }\n\n return query;\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../node_modules/@openhands/typescript-client/dist/client/llm-client.cjs`),t=require(`../../api/backend-registry/active-store.cjs`),n=require(`../../api/agent-server-client-options.cjs`);var r=[`config`,`verified-models`],i=1e3*60*5,a=1e3*60*15;async function o(){return t.getActiveBackend().backend.kind===`cloud`?{}:await new e.LLMMetadataClient(n.getAgentServerClientOptions()).getVerifiedModels()??{}}exports.VERIFIED_MODELS_GC_TIME=a,exports.VERIFIED_MODELS_QUERY_KEY=r,exports.VERIFIED_MODELS_STALE_TIME=i,exports.fetchVerifiedModelsByProvider=o;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../node_modules/@openhands/typescript-client/dist/client/llm-client.cjs`);require(`../../node_modules/@openhands/typescript-client/dist/clients.cjs`);const t=require(`../../api/backend-registry/active-store.cjs`),n=require(`../../api/agent-server-client-options.cjs`);var r=[`config`,`verified-models`],i=1e3*60*5,a=1e3*60*15;async function o(){return t.getActiveBackend().backend.kind===`cloud`?{}:await new e.LLMMetadataClient(n.getAgentServerClientOptions()).getVerifiedModels()??{}}exports.VERIFIED_MODELS_GC_TIME=a,exports.VERIFIED_MODELS_QUERY_KEY=r,exports.VERIFIED_MODELS_STALE_TIME=i,exports.fetchVerifiedModelsByProvider=o;
2
2
  //# sourceMappingURL=use-verified-models.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-verified-models.cjs","names":[],"sources":["../../../src/hooks/query/use-verified-models.ts"],"sourcesContent":["import { LLMMetadataClient } from \"@openhands/typescript-client/clients\";\nimport { getAgentServerClientOptions } from \"#/api/agent-server-client-options\";\nimport { getActiveBackend } from \"#/api/backend-registry/active-store\";\n\nexport const VERIFIED_MODELS_QUERY_KEY = [\"config\", \"verified-models\"] as const;\nexport const VERIFIED_MODELS_STALE_TIME = 1000 * 60 * 5;\nexport const VERIFIED_MODELS_GC_TIME = 1000 * 60 * 15;\n\nexport async function fetchVerifiedModelsByProvider(): Promise<\n Record<string, string[]>\n> {\n const active = getActiveBackend();\n if (active.backend.kind === \"cloud\") {\n // Cloud backends use /api/v1/config/providers/search and /api/v1/config/models/search,\n // which return verified status directly on each item. The intermediate\n // verifiedByProvider map is only used by the local ConfigService reconstruction\n // logic, so callers can safely treat this empty object as a no-op for cloud.\n return {};\n }\n const client = new LLMMetadataClient(getAgentServerClientOptions());\n return (await client.getVerifiedModels()) ?? {};\n}\n"],"mappings":"8PAIA,IAAa,EAA4B,CAAC,SAAU,kBAAkB,CACzD,EAA6B,IAAO,GAAK,EACzC,EAA0B,IAAO,GAAK,GAEnD,eAAsB,GAEpB,CAUA,OATe,EAAA,kBACX,CAAO,QAAQ,OAAS,QAKnB,EAAE,CAGH,MAAM,IADK,EAAA,kBAAkB,EAAA,6BAA6B,CACpD,CAAO,mBAAmB,EAAK,EAAE"}
1
+ {"version":3,"file":"use-verified-models.cjs","names":[],"sources":["../../../src/hooks/query/use-verified-models.ts"],"sourcesContent":["import { LLMMetadataClient } from \"@openhands/typescript-client/clients\";\nimport { getAgentServerClientOptions } from \"#/api/agent-server-client-options\";\nimport { getActiveBackend } from \"#/api/backend-registry/active-store\";\n\nexport const VERIFIED_MODELS_QUERY_KEY = [\"config\", \"verified-models\"] as const;\nexport const VERIFIED_MODELS_STALE_TIME = 1000 * 60 * 5;\nexport const VERIFIED_MODELS_GC_TIME = 1000 * 60 * 15;\n\nexport async function fetchVerifiedModelsByProvider(): Promise<\n Record<string, string[]>\n> {\n const active = getActiveBackend();\n if (active.backend.kind === \"cloud\") {\n // Cloud backends use /api/v1/config/providers/search and /api/v1/config/models/search,\n // which return verified status directly on each item. The intermediate\n // verifiedByProvider map is only used by the local ConfigService reconstruction\n // logic, so callers can safely treat this empty object as a no-op for cloud.\n return {};\n }\n const client = new LLMMetadataClient(getAgentServerClientOptions());\n return (await client.getVerifiedModels()) ?? {};\n}\n"],"mappings":"gVAIA,IAAa,EAA4B,CAAC,SAAU,kBAAkB,CACzD,EAA6B,IAAO,GAAK,EACzC,EAA0B,IAAO,GAAK,GAEnD,eAAsB,GAEpB,CAUA,OATe,EAAA,kBACX,CAAO,QAAQ,OAAS,QAKnB,EAAE,CAGH,MAAM,IADK,EAAA,kBAAkB,EAAA,6BAA6B,CACpD,CAAO,mBAAmB,EAAK,EAAE"}
@@ -1,4 +1,5 @@
1
1
  import { LLMMetadataClient as e } from "../../node_modules/@openhands/typescript-client/dist/client/llm-client.js";
2
+ import "../../node_modules/@openhands/typescript-client/dist/clients.js";
2
3
  import { getActiveBackend as t } from "../../api/backend-registry/active-store.js";
3
4
  import { getAgentServerClientOptions as n } from "../../api/agent-server-client-options.js";
4
5
  //#region src/hooks/query/use-verified-models.ts
@@ -1 +1 @@
1
- {"version":3,"file":"use-verified-models.js","names":[],"sources":["../../../src/hooks/query/use-verified-models.ts"],"sourcesContent":["import { LLMMetadataClient } from \"@openhands/typescript-client/clients\";\nimport { getAgentServerClientOptions } from \"#/api/agent-server-client-options\";\nimport { getActiveBackend } from \"#/api/backend-registry/active-store\";\n\nexport const VERIFIED_MODELS_QUERY_KEY = [\"config\", \"verified-models\"] as const;\nexport const VERIFIED_MODELS_STALE_TIME = 1000 * 60 * 5;\nexport const VERIFIED_MODELS_GC_TIME = 1000 * 60 * 15;\n\nexport async function fetchVerifiedModelsByProvider(): Promise<\n Record<string, string[]>\n> {\n const active = getActiveBackend();\n if (active.backend.kind === \"cloud\") {\n // Cloud backends use /api/v1/config/providers/search and /api/v1/config/models/search,\n // which return verified status directly on each item. The intermediate\n // verifiedByProvider map is only used by the local ConfigService reconstruction\n // logic, so callers can safely treat this empty object as a no-op for cloud.\n return {};\n }\n const client = new LLMMetadataClient(getAgentServerClientOptions());\n return (await client.getVerifiedModels()) ?? {};\n}\n"],"mappings":";;;;AAIA,IAAa,IAA4B,CAAC,UAAU,kBAAkB,EACzD,IAA6B,MAAO,KAAK,GACzC,IAA0B,MAAO,KAAK;AAEnD,eAAsB,IAEpB;AAUA,QATe,GACX,CAAO,QAAQ,SAAS,UAKnB,EAAE,GAGH,MAAM,IADK,EAAkB,GAA6B,CACpD,CAAO,mBAAmB,IAAK,EAAE"}
1
+ {"version":3,"file":"use-verified-models.js","names":[],"sources":["../../../src/hooks/query/use-verified-models.ts"],"sourcesContent":["import { LLMMetadataClient } from \"@openhands/typescript-client/clients\";\nimport { getAgentServerClientOptions } from \"#/api/agent-server-client-options\";\nimport { getActiveBackend } from \"#/api/backend-registry/active-store\";\n\nexport const VERIFIED_MODELS_QUERY_KEY = [\"config\", \"verified-models\"] as const;\nexport const VERIFIED_MODELS_STALE_TIME = 1000 * 60 * 5;\nexport const VERIFIED_MODELS_GC_TIME = 1000 * 60 * 15;\n\nexport async function fetchVerifiedModelsByProvider(): Promise<\n Record<string, string[]>\n> {\n const active = getActiveBackend();\n if (active.backend.kind === \"cloud\") {\n // Cloud backends use /api/v1/config/providers/search and /api/v1/config/models/search,\n // which return verified status directly on each item. The intermediate\n // verifiedByProvider map is only used by the local ConfigService reconstruction\n // logic, so callers can safely treat this empty object as a no-op for cloud.\n return {};\n }\n const client = new LLMMetadataClient(getAgentServerClientOptions());\n return (await client.getVerifiedModels()) ?? {};\n}\n"],"mappings":";;;;;AAIA,IAAa,IAA4B,CAAC,UAAU,kBAAkB,EACzD,IAA6B,MAAO,KAAK,GACzC,IAA0B,MAAO,KAAK;AAEnD,eAAsB,IAEpB;AAUA,QATe,GACX,CAAO,QAAQ,SAAS,UAKnB,EAAE,GAGH,MAAM,IADK,EAAkB,GAA6B,CACpD,CAAO,mBAAmB,IAAK,EAAE"}
@@ -1,2 +1,2 @@
1
- require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../node_modules/react-i18next/dist/es/useTranslation.cjs`),t=require(`../i18n/declaration.cjs`),n=require(`../contexts/active-backend-context.cjs`),r=require(`./query/use-active-conversation.cjs`),i=require(`./query/use-settings.cjs`);function a(){let{t:a}=e.useTranslation(`openhands`),{backend:o}=n.useActiveBackend(),{data:s}=r.useActiveConversation(),{data:c}=i.useSettings(),l=s?.agent_kind===`acp`,u=!s&&c?.agent_settings?.agent_kind===`acp`,d=l||u;return{isActiveAcpConversation:l,isHomeAcp:u,isAcpContext:d,destinationPath:d?`/settings/agent`:`/settings`,destinationLabel:a(d?t.I18nKey.SETTINGS$NAV_AGENT:o.kind===`cloud`?t.I18nKey.SETTINGS$LLM_SETTINGS:t.I18nKey.SETTINGS$LLM_PROFILES)}}exports.useAcpModelContext=a;
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../node_modules/react-i18next/dist/es/useTranslation.cjs`),t=require(`../i18n/declaration.cjs`),n=require(`../contexts/active-backend-context.cjs`),r=require(`./query/use-active-conversation.cjs`),i=require(`./query/use-settings.cjs`),a=require(`./use-active-agent-profile.cjs`);function o(){let{t:o}=e.useTranslation(`openhands`),{backend:s}=n.useActiveBackend(),{data:c}=r.useActiveConversation(),{data:l}=i.useSettings(),u=a.useActiveAgentKind(),d=c?.agent_kind===`acp`,f=!c&&(u??l?.agent_settings?.agent_kind)===`acp`,p=d||f;return{isActiveAcpConversation:d,isHomeAcp:f,isAcpContext:p,destinationPath:p?`/settings/agents`:`/settings`,destinationLabel:o(p?t.I18nKey.SETTINGS$NAV_AGENT:s.kind===`cloud`?t.I18nKey.SETTINGS$LLM_SETTINGS:t.I18nKey.SETTINGS$LLM_PROFILES)}}exports.useAcpModelContext=o;
2
2
  //# sourceMappingURL=use-acp-model-context.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-acp-model-context.cjs","names":[],"sources":["../../src/hooks/use-acp-model-context.ts"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { I18nKey } from \"#/i18n/declaration\";\n\nexport interface AcpModelContext {\n /** The active conversation runs an ACP agent. */\n isActiveAcpConversation: boolean;\n /**\n * No active conversation (home page) but the saved agent settings already\n * select an ACP agent — the next conversation created here inherits it, so\n * the model UI should reflect that now.\n */\n isHomeAcp: boolean;\n /** Either of the above: the model affordance should defer to the ACP picker. */\n isAcpContext: boolean;\n /** Where the model/settings link should navigate. */\n destinationPath: \"/settings/agent\" | \"/settings\";\n /** Translated label for that link. */\n destinationLabel: string;\n}\n\n/**\n * Shared source of truth for \"is this an ACP model context, and where does\n * the model affordance link?\". The chat model affordance consumes this through\n * ``useChatInputModelState`` so inline and overflow surfaces can't drift on the\n * home-page-ACP rule or on the destination path/label.\n */\nexport function useAcpModelContext(): AcpModelContext {\n const { t } = useTranslation(\"openhands\");\n const { backend } = useActiveBackend();\n const { data: conversation } = useActiveConversation();\n const { data: settings } = useSettings();\n\n const isActiveAcpConversation = conversation?.agent_kind === \"acp\";\n const isHomeAcp =\n !conversation && settings?.agent_settings?.agent_kind === \"acp\";\n const isAcpContext = isActiveAcpConversation || isHomeAcp;\n\n const destinationPath = isAcpContext ? \"/settings/agent\" : \"/settings\";\n const destinationLabel = t(\n isAcpContext\n ? I18nKey.SETTINGS$NAV_AGENT\n : backend.kind === \"cloud\"\n ? I18nKey.SETTINGS$LLM_SETTINGS\n : I18nKey.SETTINGS$LLM_PROFILES,\n );\n\n return {\n isActiveAcpConversation,\n isHomeAcp,\n isAcpContext,\n destinationPath,\n destinationLabel,\n };\n}\n"],"mappings":"ySA6BA,SAAgB,GAAsC,CACpD,GAAM,CAAE,KAAM,EAAA,eAAe,YAAY,CACnC,CAAE,WAAY,EAAA,kBAAkB,CAChC,CAAE,KAAM,GAAiB,EAAA,uBAAuB,CAChD,CAAE,KAAM,GAAa,EAAA,aAAa,CAElC,EAA0B,GAAc,aAAe,MACvD,EACJ,CAAC,GAAgB,GAAU,gBAAgB,aAAe,MACtD,EAAe,GAA2B,EAWhD,MAAO,CACL,0BACA,YACA,eACA,gBAbsB,EAAe,kBAAoB,YAczD,iBAbuB,EACvB,EACI,EAAA,QAAQ,mBACR,EAAQ,OAAS,QACf,EAAA,QAAQ,sBACR,EAAA,QAAQ,sBAQd,CACD"}
1
+ {"version":3,"file":"use-acp-model-context.cjs","names":[],"sources":["../../src/hooks/use-acp-model-context.ts"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { useActiveAgentKind } from \"#/hooks/use-active-agent-profile\";\nimport { I18nKey } from \"#/i18n/declaration\";\n\nexport interface AcpModelContext {\n /** The active conversation runs an ACP agent. */\n isActiveAcpConversation: boolean;\n /**\n * No active conversation (home page) but the saved agent settings already\n * select an ACP agent — the next conversation created here inherits it, so\n * the model UI should reflect that now.\n */\n isHomeAcp: boolean;\n /** Either of the above: the model affordance should defer to the ACP picker. */\n isAcpContext: boolean;\n /** Where the model/settings link should navigate. */\n destinationPath: \"/settings/agents\" | \"/settings\";\n /** Translated label for that link. */\n destinationLabel: string;\n}\n\n/**\n * Shared source of truth for \"is this an ACP model context, and where does\n * the model affordance link?\". The chat model affordance consumes this through\n * ``useChatInputModelState`` so inline and overflow surfaces can't drift on the\n * home-page-ACP rule or on the destination path/label.\n */\nexport function useAcpModelContext(): AcpModelContext {\n const { t } = useTranslation(\"openhands\");\n const { backend } = useActiveBackend();\n const { data: conversation } = useActiveConversation();\n const { data: settings } = useSettings();\n const activeAgentKind = useActiveAgentKind();\n\n const isActiveAcpConversation = conversation?.agent_kind === \"acp\";\n // On the home page the \"current agent\" is the active AgentProfile, not the\n // global agent settings (activate never writes them). Fall back to settings\n // only while the profile list is loading.\n const isHomeAcp =\n !conversation &&\n (activeAgentKind ?? settings?.agent_settings?.agent_kind) === \"acp\";\n const isAcpContext = isActiveAcpConversation || isHomeAcp;\n\n const destinationPath = isAcpContext ? \"/settings/agents\" : \"/settings\";\n const destinationLabel = t(\n isAcpContext\n ? I18nKey.SETTINGS$NAV_AGENT\n : backend.kind === \"cloud\"\n ? I18nKey.SETTINGS$LLM_SETTINGS\n : I18nKey.SETTINGS$LLM_PROFILES,\n );\n\n return {\n isActiveAcpConversation,\n isHomeAcp,\n isAcpContext,\n destinationPath,\n destinationLabel,\n };\n}\n"],"mappings":"qVA8BA,SAAgB,GAAsC,CACpD,GAAM,CAAE,KAAM,EAAA,eAAe,YAAY,CACnC,CAAE,WAAY,EAAA,kBAAkB,CAChC,CAAE,KAAM,GAAiB,EAAA,uBAAuB,CAChD,CAAE,KAAM,GAAa,EAAA,aAAa,CAClC,EAAkB,EAAA,oBAAoB,CAEtC,EAA0B,GAAc,aAAe,MAIvD,EACJ,CAAC,IACA,GAAmB,GAAU,gBAAgB,cAAgB,MAC1D,EAAe,GAA2B,EAWhD,MAAO,CACL,0BACA,YACA,eACA,gBAbsB,EAAe,mBAAqB,YAc1D,iBAbuB,EACvB,EACI,EAAA,QAAQ,mBACR,EAAQ,OAAS,QACf,EAAA,QAAQ,sBACR,EAAA,QAAQ,sBAQd,CACD"}
@@ -10,7 +10,7 @@ export interface AcpModelContext {
10
10
  /** Either of the above: the model affordance should defer to the ACP picker. */
11
11
  isAcpContext: boolean;
12
12
  /** Where the model/settings link should navigate. */
13
- destinationPath: "/settings/agent" | "/settings";
13
+ destinationPath: "/settings/agents" | "/settings";
14
14
  /** Translated label for that link. */
15
15
  destinationLabel: string;
16
16
  }
@@ -3,18 +3,19 @@ import { I18nKey as t } from "../i18n/declaration.js";
3
3
  import { useActiveBackend as n } from "../contexts/active-backend-context.js";
4
4
  import { useActiveConversation as r } from "./query/use-active-conversation.js";
5
5
  import { useSettings as i } from "./query/use-settings.js";
6
+ import { useActiveAgentKind as a } from "./use-active-agent-profile.js";
6
7
  //#region src/hooks/use-acp-model-context.ts
7
- function a() {
8
- let { t: a } = e("openhands"), { backend: o } = n(), { data: s } = r(), { data: c } = i(), l = s?.agent_kind === "acp", u = !s && c?.agent_settings?.agent_kind === "acp", d = l || u;
8
+ function o() {
9
+ let { t: o } = e("openhands"), { backend: s } = n(), { data: c } = r(), { data: l } = i(), u = a(), d = c?.agent_kind === "acp", f = !c && (u ?? l?.agent_settings?.agent_kind) === "acp", p = d || f;
9
10
  return {
10
- isActiveAcpConversation: l,
11
- isHomeAcp: u,
12
- isAcpContext: d,
13
- destinationPath: d ? "/settings/agent" : "/settings",
14
- destinationLabel: a(d ? t.SETTINGS$NAV_AGENT : o.kind === "cloud" ? t.SETTINGS$LLM_SETTINGS : t.SETTINGS$LLM_PROFILES)
11
+ isActiveAcpConversation: d,
12
+ isHomeAcp: f,
13
+ isAcpContext: p,
14
+ destinationPath: p ? "/settings/agents" : "/settings",
15
+ destinationLabel: o(p ? t.SETTINGS$NAV_AGENT : s.kind === "cloud" ? t.SETTINGS$LLM_SETTINGS : t.SETTINGS$LLM_PROFILES)
15
16
  };
16
17
  }
17
18
  //#endregion
18
- export { a as useAcpModelContext };
19
+ export { o as useAcpModelContext };
19
20
 
20
21
  //# sourceMappingURL=use-acp-model-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-acp-model-context.js","names":[],"sources":["../../src/hooks/use-acp-model-context.ts"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { I18nKey } from \"#/i18n/declaration\";\n\nexport interface AcpModelContext {\n /** The active conversation runs an ACP agent. */\n isActiveAcpConversation: boolean;\n /**\n * No active conversation (home page) but the saved agent settings already\n * select an ACP agent — the next conversation created here inherits it, so\n * the model UI should reflect that now.\n */\n isHomeAcp: boolean;\n /** Either of the above: the model affordance should defer to the ACP picker. */\n isAcpContext: boolean;\n /** Where the model/settings link should navigate. */\n destinationPath: \"/settings/agent\" | \"/settings\";\n /** Translated label for that link. */\n destinationLabel: string;\n}\n\n/**\n * Shared source of truth for \"is this an ACP model context, and where does\n * the model affordance link?\". The chat model affordance consumes this through\n * ``useChatInputModelState`` so inline and overflow surfaces can't drift on the\n * home-page-ACP rule or on the destination path/label.\n */\nexport function useAcpModelContext(): AcpModelContext {\n const { t } = useTranslation(\"openhands\");\n const { backend } = useActiveBackend();\n const { data: conversation } = useActiveConversation();\n const { data: settings } = useSettings();\n\n const isActiveAcpConversation = conversation?.agent_kind === \"acp\";\n const isHomeAcp =\n !conversation && settings?.agent_settings?.agent_kind === \"acp\";\n const isAcpContext = isActiveAcpConversation || isHomeAcp;\n\n const destinationPath = isAcpContext ? \"/settings/agent\" : \"/settings\";\n const destinationLabel = t(\n isAcpContext\n ? I18nKey.SETTINGS$NAV_AGENT\n : backend.kind === \"cloud\"\n ? I18nKey.SETTINGS$LLM_SETTINGS\n : I18nKey.SETTINGS$LLM_PROFILES,\n );\n\n return {\n isActiveAcpConversation,\n isHomeAcp,\n isAcpContext,\n destinationPath,\n destinationLabel,\n };\n}\n"],"mappings":";;;;;;AA6BA,SAAgB,IAAsC;CACpD,IAAM,EAAE,SAAM,EAAe,YAAY,EACnC,EAAE,eAAY,GAAkB,EAChC,EAAE,MAAM,MAAiB,GAAuB,EAChD,EAAE,MAAM,MAAa,GAAa,EAElC,IAA0B,GAAc,eAAe,OACvD,IACJ,CAAC,KAAgB,GAAU,gBAAgB,eAAe,OACtD,IAAe,KAA2B;AAWhD,QAAO;EACL;EACA;EACA;EACA,iBAbsB,IAAe,oBAAoB;EAczD,kBAbuB,EACvB,IACI,EAAQ,qBACR,EAAQ,SAAS,UACf,EAAQ,wBACR,EAAQ,sBAQd;EACD"}
1
+ {"version":3,"file":"use-acp-model-context.js","names":[],"sources":["../../src/hooks/use-acp-model-context.ts"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { useActiveAgentKind } from \"#/hooks/use-active-agent-profile\";\nimport { I18nKey } from \"#/i18n/declaration\";\n\nexport interface AcpModelContext {\n /** The active conversation runs an ACP agent. */\n isActiveAcpConversation: boolean;\n /**\n * No active conversation (home page) but the saved agent settings already\n * select an ACP agent — the next conversation created here inherits it, so\n * the model UI should reflect that now.\n */\n isHomeAcp: boolean;\n /** Either of the above: the model affordance should defer to the ACP picker. */\n isAcpContext: boolean;\n /** Where the model/settings link should navigate. */\n destinationPath: \"/settings/agents\" | \"/settings\";\n /** Translated label for that link. */\n destinationLabel: string;\n}\n\n/**\n * Shared source of truth for \"is this an ACP model context, and where does\n * the model affordance link?\". The chat model affordance consumes this through\n * ``useChatInputModelState`` so inline and overflow surfaces can't drift on the\n * home-page-ACP rule or on the destination path/label.\n */\nexport function useAcpModelContext(): AcpModelContext {\n const { t } = useTranslation(\"openhands\");\n const { backend } = useActiveBackend();\n const { data: conversation } = useActiveConversation();\n const { data: settings } = useSettings();\n const activeAgentKind = useActiveAgentKind();\n\n const isActiveAcpConversation = conversation?.agent_kind === \"acp\";\n // On the home page the \"current agent\" is the active AgentProfile, not the\n // global agent settings (activate never writes them). Fall back to settings\n // only while the profile list is loading.\n const isHomeAcp =\n !conversation &&\n (activeAgentKind ?? settings?.agent_settings?.agent_kind) === \"acp\";\n const isAcpContext = isActiveAcpConversation || isHomeAcp;\n\n const destinationPath = isAcpContext ? \"/settings/agents\" : \"/settings\";\n const destinationLabel = t(\n isAcpContext\n ? I18nKey.SETTINGS$NAV_AGENT\n : backend.kind === \"cloud\"\n ? I18nKey.SETTINGS$LLM_SETTINGS\n : I18nKey.SETTINGS$LLM_PROFILES,\n );\n\n return {\n isActiveAcpConversation,\n isHomeAcp,\n isAcpContext,\n destinationPath,\n destinationLabel,\n };\n}\n"],"mappings":";;;;;;;AA8BA,SAAgB,IAAsC;CACpD,IAAM,EAAE,SAAM,EAAe,YAAY,EACnC,EAAE,eAAY,GAAkB,EAChC,EAAE,MAAM,MAAiB,GAAuB,EAChD,EAAE,MAAM,MAAa,GAAa,EAClC,IAAkB,GAAoB,EAEtC,IAA0B,GAAc,eAAe,OAIvD,IACJ,CAAC,MACA,KAAmB,GAAU,gBAAgB,gBAAgB,OAC1D,IAAe,KAA2B;AAWhD,QAAO;EACL;EACA;EACA;EACA,iBAbsB,IAAe,qBAAqB;EAc1D,kBAbuB,EACvB,IACI,EAAQ,qBACR,EAAQ,SAAS,UACf,EAAQ,wBACR,EAAQ,sBAQd;EACD"}
@@ -0,0 +1,2 @@
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`./query/use-agent-profiles.cjs`);function t(){let{data:t,isLoading:n}=e.useAgentProfiles(),r=t?.active_agent_profile_id??null;return{activeProfile:t?.profiles?.find(e=>e.id!=null&&e.id===r)??null,isLoading:n}}function n(){let{activeProfile:e}=t();return e?.agent_kind}exports.useActiveAgentKind=n,exports.useActiveAgentProfile=t;
2
+ //# sourceMappingURL=use-active-agent-profile.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-active-agent-profile.cjs","names":[],"sources":["../../src/hooks/use-active-agent-profile.ts"],"sourcesContent":["import type { AgentKind } from \"@openhands/typescript-client\";\nimport type { AgentProfileSummary } from \"#/api/agent-profiles-service/agent-profiles-service.api\";\nimport { useAgentProfiles } from \"#/hooks/query/use-agent-profiles\";\n\n/**\n * The agent profile the user has activated — the authoritative \"current agent\"\n * now that Settings → Agent IS the profile library (#1571). `activate` is\n * pointer-only and never writes `settings.agent_settings`, so the active\n * profile — not the global agent settings — is the source of truth for what\n * kind of agent (OpenHands vs ACP) is in effect.\n */\nexport function useActiveAgentProfile(): {\n activeProfile: AgentProfileSummary | null;\n isLoading: boolean;\n} {\n const { data, isLoading } = useAgentProfiles();\n const activeId = data?.active_agent_profile_id ?? null;\n const activeProfile =\n data?.profiles?.find((p) => p.id != null && p.id === activeId) ?? null;\n return { activeProfile, isLoading };\n}\n\n/**\n * The effective agent kind from the active profile. `undefined` while the\n * profile list is loading or when no profile is active — callers should fall\n * back to `settings.agent_settings.agent_kind` in that window to avoid a flash\n * of the wrong (OpenHands-default) UI.\n */\nexport function useActiveAgentKind(): AgentKind | undefined {\n const { activeProfile } = useActiveAgentProfile();\n return activeProfile?.agent_kind;\n}\n"],"mappings":"+FAWA,SAAgB,GAGd,CACA,GAAM,CAAE,OAAM,aAAc,EAAA,kBAAkB,CACxC,EAAW,GAAM,yBAA2B,KAGlD,MAAO,CAAE,cADP,GAAM,UAAU,KAAM,GAAM,EAAE,IAAM,MAAQ,EAAE,KAAO,EAAS,EAAI,KAC5C,YAAW,CASrC,SAAgB,GAA4C,CAC1D,GAAM,CAAE,iBAAkB,GAAuB,CACjD,OAAO,GAAe"}
@@ -0,0 +1,20 @@
1
+ import type { AgentKind } from "@openhands/typescript-client";
2
+ import type { AgentProfileSummary } from "#/api/agent-profiles-service/agent-profiles-service.api";
3
+ /**
4
+ * The agent profile the user has activated — the authoritative "current agent"
5
+ * now that Settings → Agent IS the profile library (#1571). `activate` is
6
+ * pointer-only and never writes `settings.agent_settings`, so the active
7
+ * profile — not the global agent settings — is the source of truth for what
8
+ * kind of agent (OpenHands vs ACP) is in effect.
9
+ */
10
+ export declare function useActiveAgentProfile(): {
11
+ activeProfile: AgentProfileSummary | null;
12
+ isLoading: boolean;
13
+ };
14
+ /**
15
+ * The effective agent kind from the active profile. `undefined` while the
16
+ * profile list is loading or when no profile is active — callers should fall
17
+ * back to `settings.agent_settings.agent_kind` in that window to avoid a flash
18
+ * of the wrong (OpenHands-default) UI.
19
+ */
20
+ export declare function useActiveAgentKind(): AgentKind | undefined;
@@ -0,0 +1,17 @@
1
+ import { useAgentProfiles as e } from "./query/use-agent-profiles.js";
2
+ //#region src/hooks/use-active-agent-profile.ts
3
+ function t() {
4
+ let { data: t, isLoading: n } = e(), r = t?.active_agent_profile_id ?? null;
5
+ return {
6
+ activeProfile: t?.profiles?.find((e) => e.id != null && e.id === r) ?? null,
7
+ isLoading: n
8
+ };
9
+ }
10
+ function n() {
11
+ let { activeProfile: e } = t();
12
+ return e?.agent_kind;
13
+ }
14
+ //#endregion
15
+ export { n as useActiveAgentKind, t as useActiveAgentProfile };
16
+
17
+ //# sourceMappingURL=use-active-agent-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-active-agent-profile.js","names":[],"sources":["../../src/hooks/use-active-agent-profile.ts"],"sourcesContent":["import type { AgentKind } from \"@openhands/typescript-client\";\nimport type { AgentProfileSummary } from \"#/api/agent-profiles-service/agent-profiles-service.api\";\nimport { useAgentProfiles } from \"#/hooks/query/use-agent-profiles\";\n\n/**\n * The agent profile the user has activated — the authoritative \"current agent\"\n * now that Settings → Agent IS the profile library (#1571). `activate` is\n * pointer-only and never writes `settings.agent_settings`, so the active\n * profile — not the global agent settings — is the source of truth for what\n * kind of agent (OpenHands vs ACP) is in effect.\n */\nexport function useActiveAgentProfile(): {\n activeProfile: AgentProfileSummary | null;\n isLoading: boolean;\n} {\n const { data, isLoading } = useAgentProfiles();\n const activeId = data?.active_agent_profile_id ?? null;\n const activeProfile =\n data?.profiles?.find((p) => p.id != null && p.id === activeId) ?? null;\n return { activeProfile, isLoading };\n}\n\n/**\n * The effective agent kind from the active profile. `undefined` while the\n * profile list is loading or when no profile is active — callers should fall\n * back to `settings.agent_settings.agent_kind` in that window to avoid a flash\n * of the wrong (OpenHands-default) UI.\n */\nexport function useActiveAgentKind(): AgentKind | undefined {\n const { activeProfile } = useActiveAgentProfile();\n return activeProfile?.agent_kind;\n}\n"],"mappings":";;AAWA,SAAgB,IAGd;CACA,IAAM,EAAE,SAAM,iBAAc,GAAkB,EACxC,IAAW,GAAM,2BAA2B;AAGlD,QAAO;EAAE,eADP,GAAM,UAAU,MAAM,MAAM,EAAE,MAAM,QAAQ,EAAE,OAAO,EAAS,IAAI;EAC5C;EAAW;;AASrC,SAAgB,IAA4C;CAC1D,IAAM,EAAE,qBAAkB,GAAuB;AACjD,QAAO,GAAe"}
@@ -1,2 +1,2 @@
1
- require(`../_virtual/_rolldown/runtime.cjs`),require(`../utils/constants.cjs`);const e=require(`../utils/utils.cjs`),t=require(`../components/features/chat/utils/chat-input.utils.cjs`),n=require(`./use-drag-resize.cjs`);let r=require(`react`);var i=20,a=120,o=20,s=50,c=()=>({hasUserResizedRef:(0,r.useRef)(!1),manualHeightRef:(0,r.useRef)(null)}),l=(e,t,n)=>{let{minHeight:r,maxHeight:i}=n,a=Math.max(r,Math.min(t,i));return e.style.setProperty(`height`,`${a}px`),e.style.setProperty(`overflow-y`,a>=i?`auto`:`hidden`),a},u=(e,t,n=s)=>e>t+n,d=(t,n)=>{let r=e.getStyleHeightPx(t,n),i=r;t.style.setProperty(`height`,`auto`);let a=t.scrollHeight;return e.setStyleHeightPx(t,r),{currentHeight:i,currentStyleHeight:r,contentHeight:a}},f=(e,t)=>{let{finalHeight:n,overflowY:r}=t,i=e;i.style.height=`${n}px`,i.style.overflowY=r},p=(e,t)=>{t&&t(e)},m=(s,m={})=>{let h=(0,r.useRef)(null),{minHeight:g=i,maxHeight:_=a,enableManualResize:v=!1,value:y,onGripDragStart:b,onGripDragEnd:x,onHeightChange:S}=m,C={minHeight:g,maxHeight:_},{hasUserResizedRef:w,manualHeightRef:T}=c(),E=()=>{w.current=!1,T.current=null},D=(0,r.useCallback)(e=>{S?.(e),w.current&&(T.current=e)},[S]),O=(0,r.useCallback)(()=>{w.current=!0,b?.()},[b]),k=(0,r.useCallback)(()=>{let t=s.current;if(t){let n=e.getStyleHeightPx(t,g);Math.abs(n-g)<=1.5&&(w.current=!1,T.current=null)}x?.()},[g,x]),{handleGripMouseDown:A,handleGripTouchStart:j}=n.useDragResize({elementRef:s,minHeight:g,maxHeight:_,onGripDragStart:v?O:void 0,onGripDragEnd:v?k:void 0,onHeightChange:D}),M=(0,r.useCallback)((e,t,n)=>{if(w.current&&t>g){f(e,{finalHeight:t,overflowY:`hidden`}),p(t,S);return}let r=Math.max(n,g);f(e,{finalHeight:r,overflowY:`hidden`}),p(r,S)},[g,S]),N=(0,r.useCallback)((e,t,n)=>{if(!u(t,n)){let t=Math.max(n,g);f(e,{finalHeight:t,overflowY:`hidden`}),p(t,S);return}f(e,{finalHeight:t,overflowY:`auto`}),p(t,S)},[g,S]),P=(0,r.useCallback)(e=>{f(e,{finalHeight:_,overflowY:`auto`}),p(_,S)},[_,S]),F=(0,r.useCallback)(()=>{let t=s.current;if(!t)return;if((t.textContent??``).trim().length===0&&w.current&&T.current&&T.current>g+1.5){e.setStyleHeightPx(t,T.current),t.style.overflowY=`hidden`,p(T.current,S);return}let{currentHeight:n,contentHeight:r}=d(t,g);if(r<=n){M(t,n,r);return}if(r<=_){N(t,n,r);return}P(t)},[s,g,_,S,M,N,P]),I=(0,r.useCallback)(()=>{h.current&&cancelAnimationFrame(h.current),h.current=requestAnimationFrame(()=>{h.current=null,F()})},[F]);return(0,r.useEffect)(()=>{if(y===void 0)return;let e=0,n=()=>{let e=s.current;return e?(e.textContent=y.text,I(),t.focusContentEditableAtEnd(e),!0):!1};return n()||(e=requestAnimationFrame(()=>{n()})),()=>{e&&cancelAnimationFrame(e)}},[y,I]),(0,r.useEffect)(()=>{I()},[I]),{smartResize:I,handleGripMouseDown:A,handleGripTouchStart:j,increaseHeightForEmptyContent:()=>{let t=s.current;if(!t)return;let n=e.getStyleHeightPx(t,g),r=Math.min(n+o,_);if(r>n){let e=l(t,r,C);p(e,S),w.current=!0,T.current=e}},resetManualResize:E}};exports.useAutoResize=m;
1
+ require(`../_virtual/_rolldown/runtime.cjs`),require(`../utils/constants.cjs`);const e=require(`../utils/utils.cjs`),t=require(`../components/features/chat/utils/chat-input.utils.cjs`),n=require(`./use-drag-resize.cjs`);let r=require(`react`);var i=20,a=120,o=20,s=50,c=()=>({hasUserResizedRef:(0,r.useRef)(!1),manualHeightRef:(0,r.useRef)(null)}),l=(e,t,n)=>{let{minHeight:r,maxHeight:i}=n,a=Math.max(r,Math.min(t,i));return e.style.setProperty(`height`,`${a}px`),e.style.setProperty(`overflow-y`,a>=i?`auto`:`hidden`),a},u=(e,t,n=s)=>e>t+n,d=(t,n)=>{let r=e.getStyleHeightPx(t,n),i=r;t.style.setProperty(`height`,`auto`);let a=t.scrollHeight;return e.setStyleHeightPx(t,r),{currentHeight:i,currentStyleHeight:r,contentHeight:a}},f=(e,t)=>{let{finalHeight:n,overflowY:r}=t,i=e;i.style.height=`${n}px`,i.style.overflowY=r},p=(e,t)=>{t&&t(e)},m=(s,m={})=>{let h=(0,r.useRef)(null),{minHeight:g=i,maxHeight:_=a,enableManualResize:v=!1,value:y,onValueApplied:b,onGripDragStart:x,onGripDragEnd:S,onHeightChange:C}=m,w={minHeight:g,maxHeight:_},{hasUserResizedRef:T,manualHeightRef:E}=c(),D=()=>{T.current=!1,E.current=null},O=(0,r.useCallback)(e=>{C?.(e),T.current&&(E.current=e)},[C]),k=(0,r.useCallback)(()=>{T.current=!0,x?.()},[x]),A=(0,r.useCallback)(()=>{let t=s.current;if(t){let n=e.getStyleHeightPx(t,g);Math.abs(n-g)<=1.5&&(T.current=!1,E.current=null)}S?.()},[g,S]),{handleGripMouseDown:j,handleGripTouchStart:M}=n.useDragResize({elementRef:s,minHeight:g,maxHeight:_,onGripDragStart:v?k:void 0,onGripDragEnd:v?A:void 0,onHeightChange:O}),N=(0,r.useCallback)((e,t,n)=>{if(T.current&&t>g){f(e,{finalHeight:t,overflowY:`hidden`}),p(t,C);return}let r=Math.max(n,g);f(e,{finalHeight:r,overflowY:`hidden`}),p(r,C)},[g,C]),P=(0,r.useCallback)((e,t,n)=>{if(!u(t,n)){let t=Math.max(n,g);f(e,{finalHeight:t,overflowY:`hidden`}),p(t,C);return}f(e,{finalHeight:t,overflowY:`auto`}),p(t,C)},[g,C]),F=(0,r.useCallback)(e=>{f(e,{finalHeight:_,overflowY:`auto`}),p(_,C)},[_,C]),I=(0,r.useCallback)(()=>{let t=s.current;if(!t)return;if((t.textContent??``).trim().length===0&&T.current&&E.current&&E.current>g+1.5){e.setStyleHeightPx(t,E.current),t.style.overflowY=`hidden`,p(E.current,C);return}let{currentHeight:n,contentHeight:r}=d(t,g);if(r<=n){N(t,n,r);return}if(r<=_){P(t,n,r);return}F(t)},[s,g,_,C,N,P,F]),L=(0,r.useCallback)(()=>{h.current&&cancelAnimationFrame(h.current),h.current=requestAnimationFrame(()=>{h.current=null,I()})},[I]);return(0,r.useEffect)(()=>{if(y===void 0)return;let e=0,n=()=>{let e=s.current;return e?(e.textContent=y.text,L(),t.focusContentEditableAtEnd(e),b?.(),!0):!1};return n()||(e=requestAnimationFrame(()=>{n()})),()=>{e&&cancelAnimationFrame(e)}},[y,L,b]),(0,r.useEffect)(()=>{L()},[L]),{smartResize:L,handleGripMouseDown:j,handleGripTouchStart:M,increaseHeightForEmptyContent:()=>{let t=s.current;if(!t)return;let n=e.getStyleHeightPx(t,g),r=Math.min(n+o,_);if(r>n){let e=l(t,r,w);p(e,C),T.current=!0,E.current=e}},resetManualResize:D}};exports.useAutoResize=m;
2
2
  //# sourceMappingURL=use-auto-resize.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-auto-resize.cjs","names":[],"sources":["../../src/hooks/use-auto-resize.ts"],"sourcesContent":["import { useCallback, useEffect, RefObject, useRef } from \"react\";\nimport { IMessageToSend } from \"#/stores/conversation-store\";\nimport { EPS } from \"#/utils/constants\";\nimport { getStyleHeightPx, setStyleHeightPx } from \"#/utils/utils\";\nimport { focusContentEditableAtEnd } from \"#/components/features/chat/utils/chat-input.utils\";\nimport { useDragResize } from \"./use-drag-resize\";\n\n// Constants\nconst DEFAULT_MIN_HEIGHT = 20;\nconst DEFAULT_MAX_HEIGHT = 120;\nconst HEIGHT_INCREMENT = 20;\nconst MANUAL_OVERSIZE_THRESHOLD = 50;\n\n// Manual height tracking utilities\nconst useManualHeight = () => {\n const hasUserResizedRef = useRef(false);\n const manualHeightRef = useRef<number | null>(null);\n return { hasUserResizedRef, manualHeightRef };\n};\n\ninterface UseAutoResizeOptions {\n minHeight?: number;\n maxHeight?: number;\n enableManualResize?: boolean;\n onGripDragStart?: () => void;\n onGripDragEnd?: () => void;\n onHeightChange?: (height: number) => void; // New callback for height changes\n value?: IMessageToSend;\n}\n\ninterface UseAutoResizeReturn {\n smartResize: () => void;\n handleGripMouseDown: (e: React.MouseEvent) => void;\n handleGripTouchStart: (e: React.TouchEvent) => void;\n increaseHeightForEmptyContent: () => void;\n resetManualResize: () => void;\n}\n\n// Height management utilities\ninterface HeightConstraints {\n minHeight: number;\n maxHeight: number;\n}\n\ninterface HeightMeasurements {\n currentHeight: number;\n currentStyleHeight: number;\n contentHeight: number;\n}\n\ninterface ResizeStrategy {\n finalHeight: number;\n overflowY: \"hidden\" | \"auto\";\n}\n\nconst applyHeightToElement = (\n element: HTMLElement,\n height: number,\n constraints: HeightConstraints,\n): number => {\n const { minHeight, maxHeight } = constraints;\n const finalHeight = Math.max(minHeight, Math.min(height, maxHeight));\n\n element.style.setProperty(\"height\", `${finalHeight}px`);\n element.style.setProperty(\n \"overflow-y\",\n finalHeight >= maxHeight ? \"auto\" : \"hidden\",\n );\n\n return finalHeight;\n};\n\nconst isManuallyOversized = (\n currentHeight: number,\n contentHeight: number,\n threshold = MANUAL_OVERSIZE_THRESHOLD,\n): boolean => currentHeight > contentHeight + threshold;\n\nconst measureElementHeights = (\n element: HTMLElement,\n minHeight: number,\n): HeightMeasurements => {\n // Use the previous explicit style height as the \"current\" for restore, not offsetHeight\n const currentStyleHeight = getStyleHeightPx(element, minHeight);\n const currentHeight = currentStyleHeight;\n\n // Temporarily reset to measure content\n element.style.setProperty(\"height\", \"auto\");\n const contentHeight = element.scrollHeight;\n\n // Restore height\n setStyleHeightPx(element, currentStyleHeight);\n\n return {\n currentHeight,\n currentStyleHeight,\n contentHeight,\n };\n};\n\nconst applyResizeStrategy = (\n element: HTMLElement,\n strategy: ResizeStrategy,\n): void => {\n const { finalHeight, overflowY } = strategy;\n const elementRef = element;\n elementRef.style.height = `${finalHeight}px`;\n elementRef.style.overflowY = overflowY;\n};\n\nconst executeHeightCallback = (\n height: number,\n onHeightChange?: (height: number) => void,\n): void => {\n if (onHeightChange) {\n onHeightChange(height);\n }\n};\n\n// DOM manipulation utilities\nexport const useAutoResize = (\n elementRef: RefObject<HTMLElement | null>,\n options: UseAutoResizeOptions = {},\n): UseAutoResizeReturn => {\n const pendingSmartRef = useRef<number | null>(null);\n\n const {\n minHeight = DEFAULT_MIN_HEIGHT,\n maxHeight = DEFAULT_MAX_HEIGHT,\n enableManualResize = false,\n value,\n onGripDragStart,\n onGripDragEnd,\n onHeightChange,\n } = options;\n\n const constraints: HeightConstraints = { minHeight, maxHeight };\n const { hasUserResizedRef, manualHeightRef } = useManualHeight();\n\n const resetManualResize = () => {\n hasUserResizedRef.current = false;\n manualHeightRef.current = null;\n };\n\n // Wrap onHeightChange to track manual height during drag\n const handleExternalHeightChange = useCallback(\n (elementHeight: number) => {\n onHeightChange?.(elementHeight);\n if (hasUserResizedRef.current) {\n manualHeightRef.current = elementHeight;\n }\n },\n [onHeightChange],\n );\n\n // Handle drag start - set manual mode flag\n const handleDragStart = useCallback(() => {\n hasUserResizedRef.current = true;\n onGripDragStart?.();\n }, [onGripDragStart]);\n\n // Handle drag end - clear manual mode if at minimum height\n const handleDragEnd = useCallback(() => {\n const textareaElement = elementRef.current;\n if (textareaElement) {\n const currentHeight = getStyleHeightPx(textareaElement, minHeight);\n if (Math.abs(currentHeight - minHeight) <= EPS) {\n hasUserResizedRef.current = false;\n manualHeightRef.current = null;\n }\n }\n onGripDragEnd?.();\n }, [minHeight, onGripDragEnd]);\n\n // Use the drag resize hook for manual resizing functionality\n const { handleGripMouseDown, handleGripTouchStart } = useDragResize({\n elementRef,\n minHeight,\n maxHeight,\n onGripDragStart: enableManualResize ? handleDragStart : undefined,\n onGripDragEnd: enableManualResize ? handleDragEnd : undefined,\n onHeightChange: handleExternalHeightChange,\n });\n\n // Handle content that fits within current height\n const handleContentFitsInCurrentHeight = useCallback(\n (\n element: HTMLElement,\n currentHeight: number,\n contentHeight: number,\n ): void => {\n // If user manually resized and we're above min height, preserve their chosen height\n if (hasUserResizedRef.current && currentHeight > minHeight) {\n applyResizeStrategy(element, {\n finalHeight: currentHeight,\n overflowY: \"hidden\",\n });\n executeHeightCallback(currentHeight, onHeightChange);\n return;\n }\n\n // Otherwise allow shrinking towards content (respect minHeight)\n const finalHeight = Math.max(contentHeight, minHeight);\n applyResizeStrategy(element, {\n finalHeight,\n overflowY: \"hidden\",\n });\n executeHeightCallback(finalHeight, onHeightChange);\n },\n [minHeight, onHeightChange],\n );\n\n // Handle content that exceeds current height but within max height\n const handleContentExceedsCurrentHeight = useCallback(\n (\n element: HTMLElement,\n currentHeight: number,\n contentHeight: number,\n ): void => {\n // Grow unless the element is manually oversized beyond content significantly\n if (!isManuallyOversized(currentHeight, contentHeight)) {\n const finalHeight = Math.max(contentHeight, minHeight);\n applyResizeStrategy(element, {\n finalHeight,\n overflowY: \"hidden\",\n });\n executeHeightCallback(finalHeight, onHeightChange);\n return;\n }\n\n // Keep manual height and allow scrolling as needed\n applyResizeStrategy(element, {\n finalHeight: currentHeight,\n overflowY: \"auto\",\n });\n executeHeightCallback(currentHeight, onHeightChange);\n },\n [minHeight, onHeightChange],\n );\n\n // Handle content that exceeds max height\n const handleContentExceedsMaxHeight = useCallback(\n (element: HTMLElement) => {\n applyResizeStrategy(element, {\n finalHeight: maxHeight,\n overflowY: \"auto\",\n });\n executeHeightCallback(maxHeight, onHeightChange);\n },\n [maxHeight, onHeightChange],\n );\n\n // Debounced smartResize body\n const smartResizeBody = useCallback(() => {\n const element = elementRef.current;\n if (!element) return;\n\n const textIsEmpty = (element.textContent ?? \"\").trim().length === 0;\n\n // If empty content and we have a manual height above min, preserve it\n if (\n textIsEmpty &&\n hasUserResizedRef.current &&\n manualHeightRef.current &&\n manualHeightRef.current > minHeight + EPS\n ) {\n setStyleHeightPx(element, manualHeightRef.current);\n element.style.overflowY = \"hidden\";\n executeHeightCallback(manualHeightRef.current, onHeightChange);\n return;\n }\n\n // Measure element heights\n const measurements = measureElementHeights(element, minHeight);\n const { currentHeight, contentHeight } = measurements;\n\n // If content fits within current height\n if (contentHeight <= currentHeight) {\n handleContentFitsInCurrentHeight(element, currentHeight, contentHeight);\n return;\n }\n\n // If content exceeds current height but within max\n if (contentHeight <= maxHeight) {\n handleContentExceedsCurrentHeight(element, currentHeight, contentHeight);\n return;\n }\n\n // Content exceeds max height\n handleContentExceedsMaxHeight(element);\n }, [\n elementRef,\n minHeight,\n maxHeight,\n onHeightChange,\n handleContentFitsInCurrentHeight,\n handleContentExceedsCurrentHeight,\n handleContentExceedsMaxHeight,\n ]);\n\n // rAF-debounced smartResize wrapper to collapse bursts\n const smartResize = useCallback(() => {\n if (pendingSmartRef.current) cancelAnimationFrame(pendingSmartRef.current);\n pendingSmartRef.current = requestAnimationFrame(() => {\n pendingSmartRef.current = null;\n smartResizeBody();\n });\n }, [smartResizeBody]);\n\n // Function to increase height when content is empty\n const increaseHeightForEmptyContent = () => {\n const element = elementRef.current;\n if (!element) return;\n\n const currentHeight = getStyleHeightPx(element, minHeight);\n const newHeight = Math.min(currentHeight + HEIGHT_INCREMENT, maxHeight);\n\n if (newHeight > currentHeight) {\n const finalHeight = applyHeightToElement(element, newHeight, constraints);\n\n // Execute height change callback\n executeHeightCallback(finalHeight, onHeightChange);\n\n // Set manual mode for Shift+Enter height increases\n hasUserResizedRef.current = true;\n manualHeightRef.current = finalHeight;\n }\n };\n\n // Update content and resize when value prop changes\n useEffect(() => {\n if (value === undefined) {\n return undefined;\n }\n\n let rafId = 0;\n\n const applyValue = () => {\n const element = elementRef.current;\n if (!element) {\n return false;\n }\n\n element.textContent = value.text;\n smartResize();\n focusContentEditableAtEnd(element);\n return true;\n };\n\n if (!applyValue()) {\n rafId = requestAnimationFrame(() => {\n applyValue();\n });\n }\n\n return () => {\n if (rafId) {\n cancelAnimationFrame(rafId);\n }\n };\n }, [value, smartResize]);\n\n // Initialize auto-resize on mount\n useEffect(() => {\n smartResize();\n }, [smartResize]);\n\n return {\n smartResize,\n handleGripMouseDown,\n handleGripTouchStart,\n increaseHeightForEmptyContent,\n resetManualResize,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-auto-resize.cjs","names":[],"sources":["../../src/hooks/use-auto-resize.ts"],"sourcesContent":["import { useCallback, useEffect, RefObject, useRef } from \"react\";\nimport { IMessageToSend } from \"#/stores/conversation-store\";\nimport { EPS } from \"#/utils/constants\";\nimport { getStyleHeightPx, setStyleHeightPx } from \"#/utils/utils\";\nimport { focusContentEditableAtEnd } from \"#/components/features/chat/utils/chat-input.utils\";\nimport { useDragResize } from \"./use-drag-resize\";\n\n// Constants\nconst DEFAULT_MIN_HEIGHT = 20;\nconst DEFAULT_MAX_HEIGHT = 120;\nconst HEIGHT_INCREMENT = 20;\nconst MANUAL_OVERSIZE_THRESHOLD = 50;\n\n// Manual height tracking utilities\nconst useManualHeight = () => {\n const hasUserResizedRef = useRef(false);\n const manualHeightRef = useRef<number | null>(null);\n return { hasUserResizedRef, manualHeightRef };\n};\n\ninterface UseAutoResizeOptions {\n minHeight?: number;\n maxHeight?: number;\n enableManualResize?: boolean;\n onGripDragStart?: () => void;\n onGripDragEnd?: () => void;\n onHeightChange?: (height: number) => void; // New callback for height changes\n value?: IMessageToSend;\n /** Called once `value` has been applied to the element (one-shot consume). */\n onValueApplied?: () => void;\n}\n\ninterface UseAutoResizeReturn {\n smartResize: () => void;\n handleGripMouseDown: (e: React.MouseEvent) => void;\n handleGripTouchStart: (e: React.TouchEvent) => void;\n increaseHeightForEmptyContent: () => void;\n resetManualResize: () => void;\n}\n\n// Height management utilities\ninterface HeightConstraints {\n minHeight: number;\n maxHeight: number;\n}\n\ninterface HeightMeasurements {\n currentHeight: number;\n currentStyleHeight: number;\n contentHeight: number;\n}\n\ninterface ResizeStrategy {\n finalHeight: number;\n overflowY: \"hidden\" | \"auto\";\n}\n\nconst applyHeightToElement = (\n element: HTMLElement,\n height: number,\n constraints: HeightConstraints,\n): number => {\n const { minHeight, maxHeight } = constraints;\n const finalHeight = Math.max(minHeight, Math.min(height, maxHeight));\n\n element.style.setProperty(\"height\", `${finalHeight}px`);\n element.style.setProperty(\n \"overflow-y\",\n finalHeight >= maxHeight ? \"auto\" : \"hidden\",\n );\n\n return finalHeight;\n};\n\nconst isManuallyOversized = (\n currentHeight: number,\n contentHeight: number,\n threshold = MANUAL_OVERSIZE_THRESHOLD,\n): boolean => currentHeight > contentHeight + threshold;\n\nconst measureElementHeights = (\n element: HTMLElement,\n minHeight: number,\n): HeightMeasurements => {\n // Use the previous explicit style height as the \"current\" for restore, not offsetHeight\n const currentStyleHeight = getStyleHeightPx(element, minHeight);\n const currentHeight = currentStyleHeight;\n\n // Temporarily reset to measure content\n element.style.setProperty(\"height\", \"auto\");\n const contentHeight = element.scrollHeight;\n\n // Restore height\n setStyleHeightPx(element, currentStyleHeight);\n\n return {\n currentHeight,\n currentStyleHeight,\n contentHeight,\n };\n};\n\nconst applyResizeStrategy = (\n element: HTMLElement,\n strategy: ResizeStrategy,\n): void => {\n const { finalHeight, overflowY } = strategy;\n const elementRef = element;\n elementRef.style.height = `${finalHeight}px`;\n elementRef.style.overflowY = overflowY;\n};\n\nconst executeHeightCallback = (\n height: number,\n onHeightChange?: (height: number) => void,\n): void => {\n if (onHeightChange) {\n onHeightChange(height);\n }\n};\n\n// DOM manipulation utilities\nexport const useAutoResize = (\n elementRef: RefObject<HTMLElement | null>,\n options: UseAutoResizeOptions = {},\n): UseAutoResizeReturn => {\n const pendingSmartRef = useRef<number | null>(null);\n\n const {\n minHeight = DEFAULT_MIN_HEIGHT,\n maxHeight = DEFAULT_MAX_HEIGHT,\n enableManualResize = false,\n value,\n onValueApplied,\n onGripDragStart,\n onGripDragEnd,\n onHeightChange,\n } = options;\n\n const constraints: HeightConstraints = { minHeight, maxHeight };\n const { hasUserResizedRef, manualHeightRef } = useManualHeight();\n\n const resetManualResize = () => {\n hasUserResizedRef.current = false;\n manualHeightRef.current = null;\n };\n\n // Wrap onHeightChange to track manual height during drag\n const handleExternalHeightChange = useCallback(\n (elementHeight: number) => {\n onHeightChange?.(elementHeight);\n if (hasUserResizedRef.current) {\n manualHeightRef.current = elementHeight;\n }\n },\n [onHeightChange],\n );\n\n // Handle drag start - set manual mode flag\n const handleDragStart = useCallback(() => {\n hasUserResizedRef.current = true;\n onGripDragStart?.();\n }, [onGripDragStart]);\n\n // Handle drag end - clear manual mode if at minimum height\n const handleDragEnd = useCallback(() => {\n const textareaElement = elementRef.current;\n if (textareaElement) {\n const currentHeight = getStyleHeightPx(textareaElement, minHeight);\n if (Math.abs(currentHeight - minHeight) <= EPS) {\n hasUserResizedRef.current = false;\n manualHeightRef.current = null;\n }\n }\n onGripDragEnd?.();\n }, [minHeight, onGripDragEnd]);\n\n // Use the drag resize hook for manual resizing functionality\n const { handleGripMouseDown, handleGripTouchStart } = useDragResize({\n elementRef,\n minHeight,\n maxHeight,\n onGripDragStart: enableManualResize ? handleDragStart : undefined,\n onGripDragEnd: enableManualResize ? handleDragEnd : undefined,\n onHeightChange: handleExternalHeightChange,\n });\n\n // Handle content that fits within current height\n const handleContentFitsInCurrentHeight = useCallback(\n (\n element: HTMLElement,\n currentHeight: number,\n contentHeight: number,\n ): void => {\n // If user manually resized and we're above min height, preserve their chosen height\n if (hasUserResizedRef.current && currentHeight > minHeight) {\n applyResizeStrategy(element, {\n finalHeight: currentHeight,\n overflowY: \"hidden\",\n });\n executeHeightCallback(currentHeight, onHeightChange);\n return;\n }\n\n // Otherwise allow shrinking towards content (respect minHeight)\n const finalHeight = Math.max(contentHeight, minHeight);\n applyResizeStrategy(element, {\n finalHeight,\n overflowY: \"hidden\",\n });\n executeHeightCallback(finalHeight, onHeightChange);\n },\n [minHeight, onHeightChange],\n );\n\n // Handle content that exceeds current height but within max height\n const handleContentExceedsCurrentHeight = useCallback(\n (\n element: HTMLElement,\n currentHeight: number,\n contentHeight: number,\n ): void => {\n // Grow unless the element is manually oversized beyond content significantly\n if (!isManuallyOversized(currentHeight, contentHeight)) {\n const finalHeight = Math.max(contentHeight, minHeight);\n applyResizeStrategy(element, {\n finalHeight,\n overflowY: \"hidden\",\n });\n executeHeightCallback(finalHeight, onHeightChange);\n return;\n }\n\n // Keep manual height and allow scrolling as needed\n applyResizeStrategy(element, {\n finalHeight: currentHeight,\n overflowY: \"auto\",\n });\n executeHeightCallback(currentHeight, onHeightChange);\n },\n [minHeight, onHeightChange],\n );\n\n // Handle content that exceeds max height\n const handleContentExceedsMaxHeight = useCallback(\n (element: HTMLElement) => {\n applyResizeStrategy(element, {\n finalHeight: maxHeight,\n overflowY: \"auto\",\n });\n executeHeightCallback(maxHeight, onHeightChange);\n },\n [maxHeight, onHeightChange],\n );\n\n // Debounced smartResize body\n const smartResizeBody = useCallback(() => {\n const element = elementRef.current;\n if (!element) return;\n\n const textIsEmpty = (element.textContent ?? \"\").trim().length === 0;\n\n // If empty content and we have a manual height above min, preserve it\n if (\n textIsEmpty &&\n hasUserResizedRef.current &&\n manualHeightRef.current &&\n manualHeightRef.current > minHeight + EPS\n ) {\n setStyleHeightPx(element, manualHeightRef.current);\n element.style.overflowY = \"hidden\";\n executeHeightCallback(manualHeightRef.current, onHeightChange);\n return;\n }\n\n // Measure element heights\n const measurements = measureElementHeights(element, minHeight);\n const { currentHeight, contentHeight } = measurements;\n\n // If content fits within current height\n if (contentHeight <= currentHeight) {\n handleContentFitsInCurrentHeight(element, currentHeight, contentHeight);\n return;\n }\n\n // If content exceeds current height but within max\n if (contentHeight <= maxHeight) {\n handleContentExceedsCurrentHeight(element, currentHeight, contentHeight);\n return;\n }\n\n // Content exceeds max height\n handleContentExceedsMaxHeight(element);\n }, [\n elementRef,\n minHeight,\n maxHeight,\n onHeightChange,\n handleContentFitsInCurrentHeight,\n handleContentExceedsCurrentHeight,\n handleContentExceedsMaxHeight,\n ]);\n\n // rAF-debounced smartResize wrapper to collapse bursts\n const smartResize = useCallback(() => {\n if (pendingSmartRef.current) cancelAnimationFrame(pendingSmartRef.current);\n pendingSmartRef.current = requestAnimationFrame(() => {\n pendingSmartRef.current = null;\n smartResizeBody();\n });\n }, [smartResizeBody]);\n\n // Function to increase height when content is empty\n const increaseHeightForEmptyContent = () => {\n const element = elementRef.current;\n if (!element) return;\n\n const currentHeight = getStyleHeightPx(element, minHeight);\n const newHeight = Math.min(currentHeight + HEIGHT_INCREMENT, maxHeight);\n\n if (newHeight > currentHeight) {\n const finalHeight = applyHeightToElement(element, newHeight, constraints);\n\n // Execute height change callback\n executeHeightCallback(finalHeight, onHeightChange);\n\n // Set manual mode for Shift+Enter height increases\n hasUserResizedRef.current = true;\n manualHeightRef.current = finalHeight;\n }\n };\n\n // Update content and resize when value prop changes\n useEffect(() => {\n if (value === undefined) {\n return undefined;\n }\n\n let rafId = 0;\n\n const applyValue = () => {\n const element = elementRef.current;\n if (!element) {\n return false;\n }\n\n element.textContent = value.text;\n smartResize();\n focusContentEditableAtEnd(element);\n onValueApplied?.(); // one-shot: let the caller clear the value\n return true;\n };\n\n if (!applyValue()) {\n rafId = requestAnimationFrame(() => {\n applyValue();\n });\n }\n\n return () => {\n if (rafId) {\n cancelAnimationFrame(rafId);\n }\n };\n }, [value, smartResize, onValueApplied]);\n\n // Initialize auto-resize on mount\n useEffect(() => {\n smartResize();\n }, [smartResize]);\n\n return {\n smartResize,\n handleGripMouseDown,\n handleGripTouchStart,\n increaseHeightForEmptyContent,\n resetManualResize,\n };\n};\n"],"mappings":"mPAQA,IAAM,EAAqB,GACrB,EAAqB,IACrB,EAAmB,GACnB,EAA4B,GAG5B,OAGG,CAAE,mBAAA,EAAA,EAAA,QAFwB,GAExB,CAAmB,iBAAA,EAAA,EAAA,QADkB,KAClB,CAAiB,EAwCzC,GACJ,EACA,EACA,IACW,CACX,GAAM,CAAE,YAAW,aAAc,EAC3B,EAAc,KAAK,IAAI,EAAW,KAAK,IAAI,EAAQ,EAAU,CAAC,CAQpE,OANA,EAAQ,MAAM,YAAY,SAAU,GAAG,EAAY,IAAI,CACvD,EAAQ,MAAM,YACZ,aACA,GAAe,EAAY,OAAS,SACrC,CAEM,GAGH,GACJ,EACA,EACA,EAAY,IACA,EAAgB,EAAgB,EAExC,GACJ,EACA,IACuB,CAEvB,IAAM,EAAqB,EAAA,iBAAiB,EAAS,EAAU,CACzD,EAAgB,EAGtB,EAAQ,MAAM,YAAY,SAAU,OAAO,CAC3C,IAAM,EAAgB,EAAQ,aAK9B,OAFA,EAAA,iBAAiB,EAAS,EAAmB,CAEtC,CACL,gBACA,qBACA,gBACD,EAGG,GACJ,EACA,IACS,CACT,GAAM,CAAE,cAAa,aAAc,EAC7B,EAAa,EACnB,EAAW,MAAM,OAAS,GAAG,EAAY,IACzC,EAAW,MAAM,UAAY,GAGzB,GACJ,EACA,IACS,CACL,GACF,EAAe,EAAO,EAKb,GACX,EACA,EAAgC,EAAE,GACV,CACxB,IAAM,GAAA,EAAA,EAAA,QAAwC,KAAK,CAE7C,CACJ,YAAY,EACZ,YAAY,EACZ,qBAAqB,GACrB,QACA,iBACA,kBACA,gBACA,kBACE,EAEE,EAAiC,CAAE,YAAW,YAAW,CACzD,CAAE,oBAAmB,mBAAoB,GAAiB,CAE1D,MAA0B,CAC9B,EAAkB,QAAU,GAC5B,EAAgB,QAAU,MAItB,GAAA,EAAA,EAAA,aACH,GAA0B,CACzB,IAAiB,EAAc,CAC3B,EAAkB,UACpB,EAAgB,QAAU,IAG9B,CAAC,EAAe,CACjB,CAGK,GAAA,EAAA,EAAA,iBAAoC,CACxC,EAAkB,QAAU,GAC5B,KAAmB,EAClB,CAAC,EAAgB,CAAC,CAGf,GAAA,EAAA,EAAA,iBAAkC,CACtC,IAAM,EAAkB,EAAW,QACnC,GAAI,EAAiB,CACnB,IAAM,EAAgB,EAAA,iBAAiB,EAAiB,EAAU,CAC9D,KAAK,IAAI,EAAgB,EAAU,EAAA,MACrC,EAAkB,QAAU,GAC5B,EAAgB,QAAU,MAG9B,KAAiB,EAChB,CAAC,EAAW,EAAc,CAAC,CAGxB,CAAE,sBAAqB,wBAAyB,EAAA,cAAc,CAClE,aACA,YACA,YACA,gBAAiB,EAAqB,EAAkB,IAAA,GACxD,cAAe,EAAqB,EAAgB,IAAA,GACpD,eAAgB,EACjB,CAAC,CAGI,GAAA,EAAA,EAAA,cAEF,EACA,EACA,IACS,CAET,GAAI,EAAkB,SAAW,EAAgB,EAAW,CAC1D,EAAoB,EAAS,CAC3B,YAAa,EACb,UAAW,SACZ,CAAC,CACF,EAAsB,EAAe,EAAe,CACpD,OAIF,IAAM,EAAc,KAAK,IAAI,EAAe,EAAU,CACtD,EAAoB,EAAS,CAC3B,cACA,UAAW,SACZ,CAAC,CACF,EAAsB,EAAa,EAAe,EAEpD,CAAC,EAAW,EAAe,CAC5B,CAGK,GAAA,EAAA,EAAA,cAEF,EACA,EACA,IACS,CAET,GAAI,CAAC,EAAoB,EAAe,EAAc,CAAE,CACtD,IAAM,EAAc,KAAK,IAAI,EAAe,EAAU,CACtD,EAAoB,EAAS,CAC3B,cACA,UAAW,SACZ,CAAC,CACF,EAAsB,EAAa,EAAe,CAClD,OAIF,EAAoB,EAAS,CAC3B,YAAa,EACb,UAAW,OACZ,CAAC,CACF,EAAsB,EAAe,EAAe,EAEtD,CAAC,EAAW,EAAe,CAC5B,CAGK,GAAA,EAAA,EAAA,aACH,GAAyB,CACxB,EAAoB,EAAS,CAC3B,YAAa,EACb,UAAW,OACZ,CAAC,CACF,EAAsB,EAAW,EAAe,EAElD,CAAC,EAAW,EAAe,CAC5B,CAGK,GAAA,EAAA,EAAA,iBAAoC,CACxC,IAAM,EAAU,EAAW,QAC3B,GAAI,CAAC,EAAS,OAKd,IAHqB,EAAQ,aAAe,IAAI,MAAM,CAAC,SAAW,GAKhE,EAAkB,SAClB,EAAgB,SAChB,EAAgB,QAAU,EAAA,IAC1B,CACA,EAAA,iBAAiB,EAAS,EAAgB,QAAQ,CAClD,EAAQ,MAAM,UAAY,SAC1B,EAAsB,EAAgB,QAAS,EAAe,CAC9D,OAKF,GAAM,CAAE,gBAAe,iBADF,EAAsB,EAAS,EACX,CAGzC,GAAI,GAAiB,EAAe,CAClC,EAAiC,EAAS,EAAe,EAAc,CACvE,OAIF,GAAI,GAAiB,EAAW,CAC9B,EAAkC,EAAS,EAAe,EAAc,CACxE,OAIF,EAA8B,EAAQ,EACrC,CACD,EACA,EACA,EACA,EACA,EACA,EACA,EACD,CAAC,CAGI,GAAA,EAAA,EAAA,iBAAgC,CAChC,EAAgB,SAAS,qBAAqB,EAAgB,QAAQ,CAC1E,EAAgB,QAAU,0BAA4B,CACpD,EAAgB,QAAU,KAC1B,GAAiB,EACjB,EACD,CAAC,EAAgB,CAAC,CA6DrB,OAtCA,EAAA,EAAA,eAAgB,CACd,GAAI,IAAU,IAAA,GACZ,OAGF,IAAI,EAAQ,EAEN,MAAmB,CACvB,IAAM,EAAU,EAAW,QAS3B,OARK,GAIL,EAAQ,YAAc,EAAM,KAC5B,GAAa,CACb,EAAA,0BAA0B,EAAQ,CAClC,KAAkB,CACX,IAPE,IAgBX,OANK,GAAY,GACf,EAAQ,0BAA4B,CAClC,GAAY,EACZ,MAGS,CACP,GACF,qBAAqB,EAAM,GAG9B,CAAC,EAAO,EAAa,EAAe,CAAC,EAGxC,EAAA,EAAA,eAAgB,CACd,GAAa,EACZ,CAAC,EAAY,CAAC,CAEV,CACL,cACA,sBACA,uBACA,kCA9D0C,CAC1C,IAAM,EAAU,EAAW,QAC3B,GAAI,CAAC,EAAS,OAEd,IAAM,EAAgB,EAAA,iBAAiB,EAAS,EAAU,CACpD,EAAY,KAAK,IAAI,EAAgB,EAAkB,EAAU,CAEvE,GAAI,EAAY,EAAe,CAC7B,IAAM,EAAc,EAAqB,EAAS,EAAW,EAAY,CAGzE,EAAsB,EAAa,EAAe,CAGlD,EAAkB,QAAU,GAC5B,EAAgB,QAAU,IAgD5B,oBACD"}
@@ -8,6 +8,8 @@ interface UseAutoResizeOptions {
8
8
  onGripDragEnd?: () => void;
9
9
  onHeightChange?: (height: number) => void;
10
10
  value?: IMessageToSend;
11
+ /** Called once `value` has been applied to the element (one-shot consume). */
12
+ onValueApplied?: () => void;
11
13
  }
12
14
  interface UseAutoResizeReturn {
13
15
  smartResize: () => void;