@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":"settings.js","names":[],"sources":["../../src/services/settings.ts"],"sourcesContent":["import { Settings } from \"#/types/settings\";\n\nexport const LATEST_SETTINGS_VERSION = 5;\n\nexport const DEFAULT_SETTINGS: Settings = {\n llm_model: \"openhands/minimax-m2.7\",\n llm_base_url: \"\",\n agent: \"CodeActAgent\",\n language: \"en\",\n llm_api_key: null,\n llm_api_key_set: false,\n search_api_key_set: false,\n confirmation_mode: false,\n security_analyzer: \"llm\",\n max_iterations: null,\n remote_runtime_resource_factor: 1,\n provider_tokens_set: {},\n enable_default_condenser: true,\n condenser_max_size: 240,\n enable_sound_notifications: false,\n user_consents_to_analytics: false,\n enable_proactive_conversation_starters: false,\n enable_solvability_analysis: false,\n search_api_key: \"\",\n is_new_user: true,\n disabled_skills: [],\n mcp_config: {\n sse_servers: [],\n stdio_servers: [],\n shttp_servers: [],\n },\n max_budget_per_task: null,\n email: \"\",\n email_verified: true,\n git_user_name: \"openhands\",\n git_user_email: \"openhands@all-hands.dev\",\n agent_settings_schema: null,\n agent_settings: {\n schema_version: 1,\n agent_kind: \"openhands\",\n agent: \"CodeActAgent\",\n llm: {\n model: \"openhands/minimax-m2.7\",\n },\n condenser: {\n enabled: true,\n max_size: 240,\n },\n verification: {\n critic_enabled: false,\n enable_iterative_refinement: false,\n },\n enable_sub_agents: false,\n mcp_config: {\n sse_servers: [],\n stdio_servers: [],\n shttp_servers: [],\n },\n },\n conversation_settings_schema: null,\n conversation_settings: {\n schema_version: 1,\n confirmation_mode: false,\n security_analyzer: \"llm\",\n },\n};\n\n/**\n * Get the default settings\n */\nexport const getDefaultSettings = (): Settings => DEFAULT_SETTINGS;\n"],"mappings":";AAIA,IAAa,IAA6B;CACxC,WAAW;CACX,cAAc;CACd,OAAO;CACP,UAAU;CACV,aAAa;CACb,iBAAiB;CACjB,oBAAoB;CACpB,mBAAmB;CACnB,mBAAmB;CACnB,gBAAgB;CAChB,gCAAgC;CAChC,qBAAqB,EAAE;CACvB,0BAA0B;CAC1B,oBAAoB;CACpB,4BAA4B;CAC5B,4BAA4B;CAC5B,wCAAwC;CACxC,6BAA6B;CAC7B,gBAAgB;CAChB,aAAa;CACb,iBAAiB,EAAE;CACnB,YAAY;EACV,aAAa,EAAE;EACf,eAAe,EAAE;EACjB,eAAe,EAAE;EAClB;CACD,qBAAqB;CACrB,OAAO;CACP,gBAAgB;CAChB,eAAe;CACf,gBAAgB;CAChB,uBAAuB;CACvB,gBAAgB;EACd,gBAAgB;EAChB,YAAY;EACZ,OAAO;EACP,KAAK,EACH,OAAO,0BACR;EACD,WAAW;GACT,SAAS;GACT,UAAU;GACX;EACD,cAAc;GACZ,gBAAgB;GAChB,6BAA6B;GAC9B;EACD,mBAAmB;EACnB,YAAY;GACV,aAAa,EAAE;GACf,eAAe,EAAE;GACjB,eAAe,EAAE;GAClB;EACF;CACD,8BAA8B;CAC9B,uBAAuB;EACrB,gBAAgB;EAChB,mBAAmB;EACnB,mBAAmB;EACpB;CACF"}
1
+ {"version":3,"file":"settings.js","names":[],"sources":["../../src/services/settings.ts"],"sourcesContent":["import { Settings } from \"#/types/settings\";\n\nexport const LATEST_SETTINGS_VERSION = 5;\n\nexport const DEFAULT_SETTINGS: Settings = {\n llm_model: \"openhands/minimax-m2.7\",\n llm_base_url: \"\",\n agent: \"CodeActAgent\",\n language: \"en\",\n llm_api_key: null,\n llm_api_key_set: false,\n search_api_key_set: false,\n confirmation_mode: false,\n security_analyzer: \"llm\",\n max_iterations: null,\n remote_runtime_resource_factor: 1,\n provider_tokens_set: {},\n enable_default_condenser: true,\n condenser_max_size: 240,\n enable_sound_notifications: false,\n user_consents_to_analytics: false,\n enable_proactive_conversation_starters: false,\n enable_solvability_analysis: false,\n search_api_key: \"\",\n is_new_user: true,\n disabled_skills: [],\n mcp_config: {\n sse_servers: [],\n stdio_servers: [],\n shttp_servers: [],\n },\n max_budget_per_task: null,\n email: \"\",\n email_verified: true,\n git_user_name: \"openhands\",\n git_user_email: \"openhands@all-hands.dev\",\n agent_settings_schema: null,\n agent_settings: {\n schema_version: 6,\n agent_kind: \"openhands\",\n agent: \"CodeActAgent\",\n llm: {\n model: \"openhands/minimax-m2.7\",\n },\n condenser: {\n enabled: true,\n max_size: 240,\n },\n verification: {\n critic_enabled: false,\n enable_iterative_refinement: false,\n },\n enable_sub_agents: false,\n mcp_config: {},\n },\n conversation_settings_schema: null,\n conversation_settings: {\n schema_version: 1,\n confirmation_mode: false,\n security_analyzer: \"llm\",\n },\n};\n\n/**\n * Get the default settings\n */\nexport const getDefaultSettings = (): Settings => DEFAULT_SETTINGS;\n"],"mappings":";AAIA,IAAa,IAA6B;CACxC,WAAW;CACX,cAAc;CACd,OAAO;CACP,UAAU;CACV,aAAa;CACb,iBAAiB;CACjB,oBAAoB;CACpB,mBAAmB;CACnB,mBAAmB;CACnB,gBAAgB;CAChB,gCAAgC;CAChC,qBAAqB,EAAE;CACvB,0BAA0B;CAC1B,oBAAoB;CACpB,4BAA4B;CAC5B,4BAA4B;CAC5B,wCAAwC;CACxC,6BAA6B;CAC7B,gBAAgB;CAChB,aAAa;CACb,iBAAiB,EAAE;CACnB,YAAY;EACV,aAAa,EAAE;EACf,eAAe,EAAE;EACjB,eAAe,EAAE;EAClB;CACD,qBAAqB;CACrB,OAAO;CACP,gBAAgB;CAChB,eAAe;CACf,gBAAgB;CAChB,uBAAuB;CACvB,gBAAgB;EACd,gBAAgB;EAChB,YAAY;EACZ,OAAO;EACP,KAAK,EACH,OAAO,0BACR;EACD,WAAW;GACT,SAAS;GACT,UAAU;GACX;EACD,cAAc;GACZ,gBAAgB;GAChB,6BAA6B;GAC9B;EACD,mBAAmB;EACnB,YAAY,EAAE;EACf;CACD,8BAA8B;CAC9B,uBAAuB;EACrB,gBAAgB;EAChB,mBAAmB;EACnB,mBAAmB;EACpB;CACF"}
@@ -0,0 +1,2 @@
1
+ require(`../_virtual/_rolldown/runtime.cjs`);var e=require(`../node_modules/zustand/esm/react.cjs`).create(e=>({isOpen:!1,open:()=>e({isOpen:!0}),close:()=>e({isOpen:!1}),toggle:()=>e(e=>({isOpen:!e.isOpen}))}));exports.useCommandMenuStore=e;
2
+ //# sourceMappingURL=command-menu-store.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-menu-store.cjs","names":[],"sources":["../../src/stores/command-menu-store.ts"],"sourcesContent":["import { create } from \"zustand\";\n\ninterface CommandMenuState {\n isOpen: boolean;\n open: () => void;\n close: () => void;\n toggle: () => void;\n}\n\nexport const useCommandMenuStore = create<CommandMenuState>((set) => ({\n isOpen: false,\n open: () => set({ isOpen: true }),\n close: () => set({ isOpen: false }),\n toggle: () => set((state) => ({ isOpen: !state.isOpen })),\n}));\n"],"mappings":"6CASA,IAAa,kDAAsB,CAAA,OAA0B,IAAS,CACpE,OAAQ,GACR,SAAY,EAAI,CAAE,OAAQ,GAAM,CAAC,CACjC,UAAa,EAAI,CAAE,OAAQ,GAAO,CAAC,CACnC,WAAc,EAAK,IAAW,CAAE,OAAQ,CAAC,EAAM,OAAQ,EAAE,CAC1D,EAAE"}
@@ -0,0 +1,8 @@
1
+ interface CommandMenuState {
2
+ isOpen: boolean;
3
+ open: () => void;
4
+ close: () => void;
5
+ toggle: () => void;
6
+ }
7
+ export declare const useCommandMenuStore: import("zustand").UseBoundStore<import("zustand").StoreApi<CommandMenuState>>;
8
+ export {};
@@ -0,0 +1,12 @@
1
+ import { create as e } from "../node_modules/zustand/esm/react.js";
2
+ //#region src/stores/command-menu-store.ts
3
+ var t = e((e) => ({
4
+ isOpen: !1,
5
+ open: () => e({ isOpen: !0 }),
6
+ close: () => e({ isOpen: !1 }),
7
+ toggle: () => e((e) => ({ isOpen: !e.isOpen }))
8
+ }));
9
+ //#endregion
10
+ export { t as useCommandMenuStore };
11
+
12
+ //# sourceMappingURL=command-menu-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-menu-store.js","names":[],"sources":["../../src/stores/command-menu-store.ts"],"sourcesContent":["import { create } from \"zustand\";\n\ninterface CommandMenuState {\n isOpen: boolean;\n open: () => void;\n close: () => void;\n toggle: () => void;\n}\n\nexport const useCommandMenuStore = create<CommandMenuState>((set) => ({\n isOpen: false,\n open: () => set({ isOpen: true }),\n close: () => set({ isOpen: false }),\n toggle: () => set((state) => ({ isOpen: !state.isOpen })),\n}));\n"],"mappings":";;AASA,IAAa,IAAsB,GAA0B,OAAS;CACpE,QAAQ;CACR,YAAY,EAAI,EAAE,QAAQ,IAAM,CAAC;CACjC,aAAa,EAAI,EAAE,QAAQ,IAAO,CAAC;CACnC,cAAc,GAAK,OAAW,EAAE,QAAQ,CAAC,EAAM,QAAQ,EAAE;CAC1D,EAAE"}
@@ -1,2 +1,2 @@
1
- require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../node_modules/zustand/esm/react.cjs`),t=require(`../node_modules/zustand/esm/middleware.cjs`);var n={showOlderConversations:!0,showRepoBranchMetadata:!1,showLlmProfiles:!1,showHoverMetadata:!0,organizeMode:`chronological`,conversationSort:`updated`,threadScope:`all`,groupFolderOrder:[]},r=e.create()(t.persist(e=>({...n,setShowOlderConversations:t=>e(()=>({showOlderConversations:t})),toggleShowOlderConversations:()=>e(e=>({showOlderConversations:!e.showOlderConversations})),setShowRepoBranchMetadata:t=>e(()=>({showRepoBranchMetadata:t})),toggleShowRepoBranchMetadata:()=>e(e=>({showRepoBranchMetadata:!e.showRepoBranchMetadata})),setShowLlmProfiles:t=>e(()=>({showLlmProfiles:t})),toggleShowLlmProfiles:()=>e(e=>({showLlmProfiles:!e.showLlmProfiles})),setShowHoverMetadata:t=>e(()=>({showHoverMetadata:t})),toggleShowHoverMetadata:()=>e(e=>({showHoverMetadata:!e.showHoverMetadata})),setOrganizeMode:t=>e(()=>({organizeMode:t})),setConversationSort:t=>e(()=>({conversationSort:t})),setThreadScope:t=>e(()=>({threadScope:t})),setGroupFolderOrder:t=>e(()=>({groupFolderOrder:[...t]}))}),{name:`conversation-panel-preferences`,storage:t.createJSONStorage(()=>localStorage),partialize:e=>({showOlderConversations:e.showOlderConversations,showRepoBranchMetadata:e.showRepoBranchMetadata,showLlmProfiles:e.showLlmProfiles,showHoverMetadata:e.showHoverMetadata,organizeMode:e.organizeMode,conversationSort:e.conversationSort,threadScope:e.threadScope,groupFolderOrder:e.groupFolderOrder})}));exports.useConversationPanelPreferencesStore=r;
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../node_modules/zustand/esm/react.cjs`),t=require(`../node_modules/zustand/esm/middleware.cjs`);var n={showOlderConversations:!0,showRepoBranchMetadata:!1,showLlmProfiles:!0,showHoverMetadata:!0,organizeMode:`chronological`,conversationSort:`updated`,threadScope:`all`,groupFolderOrder:[]},r=e.create()(t.persist(e=>({...n,setShowOlderConversations:t=>e(()=>({showOlderConversations:t})),toggleShowOlderConversations:()=>e(e=>({showOlderConversations:!e.showOlderConversations})),setShowRepoBranchMetadata:t=>e(()=>({showRepoBranchMetadata:t})),toggleShowRepoBranchMetadata:()=>e(e=>({showRepoBranchMetadata:!e.showRepoBranchMetadata})),setShowLlmProfiles:t=>e(()=>({showLlmProfiles:t})),toggleShowLlmProfiles:()=>e(e=>({showLlmProfiles:!e.showLlmProfiles})),setShowHoverMetadata:t=>e(()=>({showHoverMetadata:t})),toggleShowHoverMetadata:()=>e(e=>({showHoverMetadata:!e.showHoverMetadata})),setOrganizeMode:t=>e(()=>({organizeMode:t})),setConversationSort:t=>e(()=>({conversationSort:t})),setThreadScope:t=>e(()=>({threadScope:t})),setGroupFolderOrder:t=>e(()=>({groupFolderOrder:[...t]}))}),{name:`conversation-panel-preferences`,storage:t.createJSONStorage(()=>localStorage),partialize:e=>({showOlderConversations:e.showOlderConversations,showRepoBranchMetadata:e.showRepoBranchMetadata,showLlmProfiles:e.showLlmProfiles,showHoverMetadata:e.showHoverMetadata,organizeMode:e.organizeMode,conversationSort:e.conversationSort,threadScope:e.threadScope,groupFolderOrder:e.groupFolderOrder})}));exports.useConversationPanelPreferencesStore=r;
2
2
  //# sourceMappingURL=conversation-panel-preferences-store.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-panel-preferences-store.cjs","names":[],"sources":["../../src/stores/conversation-panel-preferences-store.ts"],"sourcesContent":["import { create } from \"zustand\";\nimport { persist, createJSONStorage } from \"zustand/middleware\";\nimport {\n type ConversationSortField,\n type OrganizeMode,\n type ThreadScope,\n} from \"#/components/features/conversation-panel/conversation-panel-list-helpers\";\n\n/**\n * User-toggleable display preferences for the sidebar conversation list\n * filter menu. These are intentionally persisted to localStorage (via the\n * same `zustand/persist` pattern used by `home-store` and `workspaces-store`)\n * so the menu state survives full reloads.\n *\n * To add a new preference exposed by the filter menu:\n * 1. Add a field here with a sensible default in `initialState`.\n * 2. Add matching `setX`/`toggleX` actions below.\n * 3. Read/write through the store in `conversation-panel.tsx`.\n * No additional plumbing (storage keys, sanitization, etc.) is required —\n * `persist` handles migration of unknown fields gracefully.\n */\ninterface ConversationPanelPreferencesState {\n showOlderConversations: boolean;\n showRepoBranchMetadata: boolean;\n showLlmProfiles: boolean;\n showHoverMetadata: boolean;\n organizeMode: OrganizeMode;\n conversationSort: ConversationSortField;\n threadScope: ThreadScope;\n groupFolderOrder: string[];\n}\n\ninterface ConversationPanelPreferencesActions {\n setShowOlderConversations: (value: boolean) => void;\n toggleShowOlderConversations: () => void;\n setShowRepoBranchMetadata: (value: boolean) => void;\n toggleShowRepoBranchMetadata: () => void;\n setShowLlmProfiles: (value: boolean) => void;\n toggleShowLlmProfiles: () => void;\n setShowHoverMetadata: (value: boolean) => void;\n toggleShowHoverMetadata: () => void;\n setOrganizeMode: (value: OrganizeMode) => void;\n setConversationSort: (value: ConversationSortField) => void;\n setThreadScope: (value: ThreadScope) => void;\n setGroupFolderOrder: (order: readonly string[]) => void;\n}\n\ntype ConversationPanelPreferencesStore = ConversationPanelPreferencesState &\n ConversationPanelPreferencesActions;\n\nconst initialState: ConversationPanelPreferencesState = {\n showOlderConversations: true,\n showRepoBranchMetadata: false,\n showLlmProfiles: false,\n showHoverMetadata: true,\n organizeMode: \"chronological\",\n conversationSort: \"updated\",\n threadScope: \"all\",\n groupFolderOrder: [],\n};\n\nexport const useConversationPanelPreferencesStore =\n create<ConversationPanelPreferencesStore>()(\n persist(\n (set) => ({\n ...initialState,\n\n setShowOlderConversations: (value) =>\n set(() => ({ showOlderConversations: value })),\n toggleShowOlderConversations: () =>\n set((state) => ({\n showOlderConversations: !state.showOlderConversations,\n })),\n\n setShowRepoBranchMetadata: (value) =>\n set(() => ({ showRepoBranchMetadata: value })),\n toggleShowRepoBranchMetadata: () =>\n set((state) => ({\n showRepoBranchMetadata: !state.showRepoBranchMetadata,\n })),\n\n setShowLlmProfiles: (value) => set(() => ({ showLlmProfiles: value })),\n toggleShowLlmProfiles: () =>\n set((state) => ({\n showLlmProfiles: !state.showLlmProfiles,\n })),\n\n setShowHoverMetadata: (value) =>\n set(() => ({ showHoverMetadata: value })),\n toggleShowHoverMetadata: () =>\n set((state) => ({\n showHoverMetadata: !state.showHoverMetadata,\n })),\n\n setOrganizeMode: (value) => set(() => ({ organizeMode: value })),\n setConversationSort: (value) =>\n set(() => ({ conversationSort: value })),\n setThreadScope: (value) => set(() => ({ threadScope: value })),\n setGroupFolderOrder: (order) =>\n set(() => ({ groupFolderOrder: [...order] })),\n }),\n {\n name: \"conversation-panel-preferences\",\n storage: createJSONStorage(() => localStorage),\n // Only persist the data fields — actions are recreated on each load.\n partialize: (state): ConversationPanelPreferencesState => ({\n showOlderConversations: state.showOlderConversations,\n showRepoBranchMetadata: state.showRepoBranchMetadata,\n showLlmProfiles: state.showLlmProfiles,\n showHoverMetadata: state.showHoverMetadata,\n organizeMode: state.organizeMode,\n conversationSort: state.conversationSort,\n threadScope: state.threadScope,\n groupFolderOrder: state.groupFolderOrder,\n }),\n },\n ),\n );\n"],"mappings":"8JAkDA,IAAM,EAAkD,CACtD,uBAAwB,GACxB,uBAAwB,GACxB,gBAAiB,GACjB,kBAAmB,GACnB,aAAc,gBACd,iBAAkB,UAClB,YAAa,MACb,iBAAkB,EAAE,CACrB,CAEY,EACX,EAAA,QAA2C,CACzC,EAAA,QACG,IAAS,CACR,GAAG,EAEH,0BAA4B,GAC1B,OAAW,CAAE,uBAAwB,EAAO,EAAE,CAChD,iCACE,EAAK,IAAW,CACd,uBAAwB,CAAC,EAAM,uBAChC,EAAE,CAEL,0BAA4B,GAC1B,OAAW,CAAE,uBAAwB,EAAO,EAAE,CAChD,iCACE,EAAK,IAAW,CACd,uBAAwB,CAAC,EAAM,uBAChC,EAAE,CAEL,mBAAqB,GAAU,OAAW,CAAE,gBAAiB,EAAO,EAAE,CACtE,0BACE,EAAK,IAAW,CACd,gBAAiB,CAAC,EAAM,gBACzB,EAAE,CAEL,qBAAuB,GACrB,OAAW,CAAE,kBAAmB,EAAO,EAAE,CAC3C,4BACE,EAAK,IAAW,CACd,kBAAmB,CAAC,EAAM,kBAC3B,EAAE,CAEL,gBAAkB,GAAU,OAAW,CAAE,aAAc,EAAO,EAAE,CAChE,oBAAsB,GACpB,OAAW,CAAE,iBAAkB,EAAO,EAAE,CAC1C,eAAiB,GAAU,OAAW,CAAE,YAAa,EAAO,EAAE,CAC9D,oBAAsB,GACpB,OAAW,CAAE,iBAAkB,CAAC,GAAG,EAAM,CAAE,EAAE,CAChD,EACD,CACE,KAAM,iCACN,QAAS,EAAA,sBAAwB,aAAa,CAE9C,WAAa,IAA8C,CACzD,uBAAwB,EAAM,uBAC9B,uBAAwB,EAAM,uBAC9B,gBAAiB,EAAM,gBACvB,kBAAmB,EAAM,kBACzB,aAAc,EAAM,aACpB,iBAAkB,EAAM,iBACxB,YAAa,EAAM,YACnB,iBAAkB,EAAM,iBACzB,EACF,CACF,CACF"}
1
+ {"version":3,"file":"conversation-panel-preferences-store.cjs","names":[],"sources":["../../src/stores/conversation-panel-preferences-store.ts"],"sourcesContent":["import { create } from \"zustand\";\nimport { persist, createJSONStorage } from \"zustand/middleware\";\nimport {\n type ConversationSortField,\n type OrganizeMode,\n type ThreadScope,\n} from \"#/components/features/conversation-panel/conversation-panel-list-helpers\";\n\n/**\n * User-toggleable display preferences for the sidebar conversation list\n * filter menu. These are intentionally persisted to localStorage (via the\n * same `zustand/persist` pattern used by `home-store` and `workspaces-store`)\n * so the menu state survives full reloads.\n *\n * To add a new preference exposed by the filter menu:\n * 1. Add a field here with a sensible default in `initialState`.\n * 2. Add matching `setX`/`toggleX` actions below.\n * 3. Read/write through the store in `conversation-panel.tsx`.\n * No additional plumbing (storage keys, sanitization, etc.) is required —\n * `persist` handles migration of unknown fields gracefully.\n */\ninterface ConversationPanelPreferencesState {\n showOlderConversations: boolean;\n showRepoBranchMetadata: boolean;\n showLlmProfiles: boolean;\n showHoverMetadata: boolean;\n organizeMode: OrganizeMode;\n conversationSort: ConversationSortField;\n threadScope: ThreadScope;\n groupFolderOrder: string[];\n}\n\ninterface ConversationPanelPreferencesActions {\n setShowOlderConversations: (value: boolean) => void;\n toggleShowOlderConversations: () => void;\n setShowRepoBranchMetadata: (value: boolean) => void;\n toggleShowRepoBranchMetadata: () => void;\n setShowLlmProfiles: (value: boolean) => void;\n toggleShowLlmProfiles: () => void;\n setShowHoverMetadata: (value: boolean) => void;\n toggleShowHoverMetadata: () => void;\n setOrganizeMode: (value: OrganizeMode) => void;\n setConversationSort: (value: ConversationSortField) => void;\n setThreadScope: (value: ThreadScope) => void;\n setGroupFolderOrder: (order: readonly string[]) => void;\n}\n\ntype ConversationPanelPreferencesStore = ConversationPanelPreferencesState &\n ConversationPanelPreferencesActions;\n\nconst initialState: ConversationPanelPreferencesState = {\n showOlderConversations: true,\n showRepoBranchMetadata: false,\n showLlmProfiles: true,\n showHoverMetadata: true,\n organizeMode: \"chronological\",\n conversationSort: \"updated\",\n threadScope: \"all\",\n groupFolderOrder: [],\n};\n\nexport const useConversationPanelPreferencesStore =\n create<ConversationPanelPreferencesStore>()(\n persist(\n (set) => ({\n ...initialState,\n\n setShowOlderConversations: (value) =>\n set(() => ({ showOlderConversations: value })),\n toggleShowOlderConversations: () =>\n set((state) => ({\n showOlderConversations: !state.showOlderConversations,\n })),\n\n setShowRepoBranchMetadata: (value) =>\n set(() => ({ showRepoBranchMetadata: value })),\n toggleShowRepoBranchMetadata: () =>\n set((state) => ({\n showRepoBranchMetadata: !state.showRepoBranchMetadata,\n })),\n\n setShowLlmProfiles: (value) => set(() => ({ showLlmProfiles: value })),\n toggleShowLlmProfiles: () =>\n set((state) => ({\n showLlmProfiles: !state.showLlmProfiles,\n })),\n\n setShowHoverMetadata: (value) =>\n set(() => ({ showHoverMetadata: value })),\n toggleShowHoverMetadata: () =>\n set((state) => ({\n showHoverMetadata: !state.showHoverMetadata,\n })),\n\n setOrganizeMode: (value) => set(() => ({ organizeMode: value })),\n setConversationSort: (value) =>\n set(() => ({ conversationSort: value })),\n setThreadScope: (value) => set(() => ({ threadScope: value })),\n setGroupFolderOrder: (order) =>\n set(() => ({ groupFolderOrder: [...order] })),\n }),\n {\n name: \"conversation-panel-preferences\",\n storage: createJSONStorage(() => localStorage),\n // Only persist the data fields — actions are recreated on each load.\n partialize: (state): ConversationPanelPreferencesState => ({\n showOlderConversations: state.showOlderConversations,\n showRepoBranchMetadata: state.showRepoBranchMetadata,\n showLlmProfiles: state.showLlmProfiles,\n showHoverMetadata: state.showHoverMetadata,\n organizeMode: state.organizeMode,\n conversationSort: state.conversationSort,\n threadScope: state.threadScope,\n groupFolderOrder: state.groupFolderOrder,\n }),\n },\n ),\n );\n"],"mappings":"8JAkDA,IAAM,EAAkD,CACtD,uBAAwB,GACxB,uBAAwB,GACxB,gBAAiB,GACjB,kBAAmB,GACnB,aAAc,gBACd,iBAAkB,UAClB,YAAa,MACb,iBAAkB,EAAE,CACrB,CAEY,EACX,EAAA,QAA2C,CACzC,EAAA,QACG,IAAS,CACR,GAAG,EAEH,0BAA4B,GAC1B,OAAW,CAAE,uBAAwB,EAAO,EAAE,CAChD,iCACE,EAAK,IAAW,CACd,uBAAwB,CAAC,EAAM,uBAChC,EAAE,CAEL,0BAA4B,GAC1B,OAAW,CAAE,uBAAwB,EAAO,EAAE,CAChD,iCACE,EAAK,IAAW,CACd,uBAAwB,CAAC,EAAM,uBAChC,EAAE,CAEL,mBAAqB,GAAU,OAAW,CAAE,gBAAiB,EAAO,EAAE,CACtE,0BACE,EAAK,IAAW,CACd,gBAAiB,CAAC,EAAM,gBACzB,EAAE,CAEL,qBAAuB,GACrB,OAAW,CAAE,kBAAmB,EAAO,EAAE,CAC3C,4BACE,EAAK,IAAW,CACd,kBAAmB,CAAC,EAAM,kBAC3B,EAAE,CAEL,gBAAkB,GAAU,OAAW,CAAE,aAAc,EAAO,EAAE,CAChE,oBAAsB,GACpB,OAAW,CAAE,iBAAkB,EAAO,EAAE,CAC1C,eAAiB,GAAU,OAAW,CAAE,YAAa,EAAO,EAAE,CAC9D,oBAAsB,GACpB,OAAW,CAAE,iBAAkB,CAAC,GAAG,EAAM,CAAE,EAAE,CAChD,EACD,CACE,KAAM,iCACN,QAAS,EAAA,sBAAwB,aAAa,CAE9C,WAAa,IAA8C,CACzD,uBAAwB,EAAM,uBAC9B,uBAAwB,EAAM,uBAC9B,gBAAiB,EAAM,gBACvB,kBAAmB,EAAM,kBACzB,aAAc,EAAM,aACpB,iBAAkB,EAAM,iBACxB,YAAa,EAAM,YACnB,iBAAkB,EAAM,iBACzB,EACF,CACF,CACF"}
@@ -4,7 +4,7 @@ import { createJSONStorage as t, persist as n } from "../node_modules/zustand/es
4
4
  var r = {
5
5
  showOlderConversations: !0,
6
6
  showRepoBranchMetadata: !1,
7
- showLlmProfiles: !1,
7
+ showLlmProfiles: !0,
8
8
  showHoverMetadata: !0,
9
9
  organizeMode: "chronological",
10
10
  conversationSort: "updated",
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-panel-preferences-store.js","names":[],"sources":["../../src/stores/conversation-panel-preferences-store.ts"],"sourcesContent":["import { create } from \"zustand\";\nimport { persist, createJSONStorage } from \"zustand/middleware\";\nimport {\n type ConversationSortField,\n type OrganizeMode,\n type ThreadScope,\n} from \"#/components/features/conversation-panel/conversation-panel-list-helpers\";\n\n/**\n * User-toggleable display preferences for the sidebar conversation list\n * filter menu. These are intentionally persisted to localStorage (via the\n * same `zustand/persist` pattern used by `home-store` and `workspaces-store`)\n * so the menu state survives full reloads.\n *\n * To add a new preference exposed by the filter menu:\n * 1. Add a field here with a sensible default in `initialState`.\n * 2. Add matching `setX`/`toggleX` actions below.\n * 3. Read/write through the store in `conversation-panel.tsx`.\n * No additional plumbing (storage keys, sanitization, etc.) is required —\n * `persist` handles migration of unknown fields gracefully.\n */\ninterface ConversationPanelPreferencesState {\n showOlderConversations: boolean;\n showRepoBranchMetadata: boolean;\n showLlmProfiles: boolean;\n showHoverMetadata: boolean;\n organizeMode: OrganizeMode;\n conversationSort: ConversationSortField;\n threadScope: ThreadScope;\n groupFolderOrder: string[];\n}\n\ninterface ConversationPanelPreferencesActions {\n setShowOlderConversations: (value: boolean) => void;\n toggleShowOlderConversations: () => void;\n setShowRepoBranchMetadata: (value: boolean) => void;\n toggleShowRepoBranchMetadata: () => void;\n setShowLlmProfiles: (value: boolean) => void;\n toggleShowLlmProfiles: () => void;\n setShowHoverMetadata: (value: boolean) => void;\n toggleShowHoverMetadata: () => void;\n setOrganizeMode: (value: OrganizeMode) => void;\n setConversationSort: (value: ConversationSortField) => void;\n setThreadScope: (value: ThreadScope) => void;\n setGroupFolderOrder: (order: readonly string[]) => void;\n}\n\ntype ConversationPanelPreferencesStore = ConversationPanelPreferencesState &\n ConversationPanelPreferencesActions;\n\nconst initialState: ConversationPanelPreferencesState = {\n showOlderConversations: true,\n showRepoBranchMetadata: false,\n showLlmProfiles: false,\n showHoverMetadata: true,\n organizeMode: \"chronological\",\n conversationSort: \"updated\",\n threadScope: \"all\",\n groupFolderOrder: [],\n};\n\nexport const useConversationPanelPreferencesStore =\n create<ConversationPanelPreferencesStore>()(\n persist(\n (set) => ({\n ...initialState,\n\n setShowOlderConversations: (value) =>\n set(() => ({ showOlderConversations: value })),\n toggleShowOlderConversations: () =>\n set((state) => ({\n showOlderConversations: !state.showOlderConversations,\n })),\n\n setShowRepoBranchMetadata: (value) =>\n set(() => ({ showRepoBranchMetadata: value })),\n toggleShowRepoBranchMetadata: () =>\n set((state) => ({\n showRepoBranchMetadata: !state.showRepoBranchMetadata,\n })),\n\n setShowLlmProfiles: (value) => set(() => ({ showLlmProfiles: value })),\n toggleShowLlmProfiles: () =>\n set((state) => ({\n showLlmProfiles: !state.showLlmProfiles,\n })),\n\n setShowHoverMetadata: (value) =>\n set(() => ({ showHoverMetadata: value })),\n toggleShowHoverMetadata: () =>\n set((state) => ({\n showHoverMetadata: !state.showHoverMetadata,\n })),\n\n setOrganizeMode: (value) => set(() => ({ organizeMode: value })),\n setConversationSort: (value) =>\n set(() => ({ conversationSort: value })),\n setThreadScope: (value) => set(() => ({ threadScope: value })),\n setGroupFolderOrder: (order) =>\n set(() => ({ groupFolderOrder: [...order] })),\n }),\n {\n name: \"conversation-panel-preferences\",\n storage: createJSONStorage(() => localStorage),\n // Only persist the data fields — actions are recreated on each load.\n partialize: (state): ConversationPanelPreferencesState => ({\n showOlderConversations: state.showOlderConversations,\n showRepoBranchMetadata: state.showRepoBranchMetadata,\n showLlmProfiles: state.showLlmProfiles,\n showHoverMetadata: state.showHoverMetadata,\n organizeMode: state.organizeMode,\n conversationSort: state.conversationSort,\n threadScope: state.threadScope,\n groupFolderOrder: state.groupFolderOrder,\n }),\n },\n ),\n );\n"],"mappings":";;;AAkDA,IAAM,IAAkD;CACtD,wBAAwB;CACxB,wBAAwB;CACxB,iBAAiB;CACjB,mBAAmB;CACnB,cAAc;CACd,kBAAkB;CAClB,aAAa;CACb,kBAAkB,EAAE;CACrB,EAEY,IACX,GAA2C,CACzC,GACG,OAAS;CACR,GAAG;CAEH,4BAA4B,MAC1B,SAAW,EAAE,wBAAwB,GAAO,EAAE;CAChD,oCACE,GAAK,OAAW,EACd,wBAAwB,CAAC,EAAM,wBAChC,EAAE;CAEL,4BAA4B,MAC1B,SAAW,EAAE,wBAAwB,GAAO,EAAE;CAChD,oCACE,GAAK,OAAW,EACd,wBAAwB,CAAC,EAAM,wBAChC,EAAE;CAEL,qBAAqB,MAAU,SAAW,EAAE,iBAAiB,GAAO,EAAE;CACtE,6BACE,GAAK,OAAW,EACd,iBAAiB,CAAC,EAAM,iBACzB,EAAE;CAEL,uBAAuB,MACrB,SAAW,EAAE,mBAAmB,GAAO,EAAE;CAC3C,+BACE,GAAK,OAAW,EACd,mBAAmB,CAAC,EAAM,mBAC3B,EAAE;CAEL,kBAAkB,MAAU,SAAW,EAAE,cAAc,GAAO,EAAE;CAChE,sBAAsB,MACpB,SAAW,EAAE,kBAAkB,GAAO,EAAE;CAC1C,iBAAiB,MAAU,SAAW,EAAE,aAAa,GAAO,EAAE;CAC9D,sBAAsB,MACpB,SAAW,EAAE,kBAAkB,CAAC,GAAG,EAAM,EAAE,EAAE;CAChD,GACD;CACE,MAAM;CACN,SAAS,QAAwB,aAAa;CAE9C,aAAa,OAA8C;EACzD,wBAAwB,EAAM;EAC9B,wBAAwB,EAAM;EAC9B,iBAAiB,EAAM;EACvB,mBAAmB,EAAM;EACzB,cAAc,EAAM;EACpB,kBAAkB,EAAM;EACxB,aAAa,EAAM;EACnB,kBAAkB,EAAM;EACzB;CACF,CACF,CACF"}
1
+ {"version":3,"file":"conversation-panel-preferences-store.js","names":[],"sources":["../../src/stores/conversation-panel-preferences-store.ts"],"sourcesContent":["import { create } from \"zustand\";\nimport { persist, createJSONStorage } from \"zustand/middleware\";\nimport {\n type ConversationSortField,\n type OrganizeMode,\n type ThreadScope,\n} from \"#/components/features/conversation-panel/conversation-panel-list-helpers\";\n\n/**\n * User-toggleable display preferences for the sidebar conversation list\n * filter menu. These are intentionally persisted to localStorage (via the\n * same `zustand/persist` pattern used by `home-store` and `workspaces-store`)\n * so the menu state survives full reloads.\n *\n * To add a new preference exposed by the filter menu:\n * 1. Add a field here with a sensible default in `initialState`.\n * 2. Add matching `setX`/`toggleX` actions below.\n * 3. Read/write through the store in `conversation-panel.tsx`.\n * No additional plumbing (storage keys, sanitization, etc.) is required —\n * `persist` handles migration of unknown fields gracefully.\n */\ninterface ConversationPanelPreferencesState {\n showOlderConversations: boolean;\n showRepoBranchMetadata: boolean;\n showLlmProfiles: boolean;\n showHoverMetadata: boolean;\n organizeMode: OrganizeMode;\n conversationSort: ConversationSortField;\n threadScope: ThreadScope;\n groupFolderOrder: string[];\n}\n\ninterface ConversationPanelPreferencesActions {\n setShowOlderConversations: (value: boolean) => void;\n toggleShowOlderConversations: () => void;\n setShowRepoBranchMetadata: (value: boolean) => void;\n toggleShowRepoBranchMetadata: () => void;\n setShowLlmProfiles: (value: boolean) => void;\n toggleShowLlmProfiles: () => void;\n setShowHoverMetadata: (value: boolean) => void;\n toggleShowHoverMetadata: () => void;\n setOrganizeMode: (value: OrganizeMode) => void;\n setConversationSort: (value: ConversationSortField) => void;\n setThreadScope: (value: ThreadScope) => void;\n setGroupFolderOrder: (order: readonly string[]) => void;\n}\n\ntype ConversationPanelPreferencesStore = ConversationPanelPreferencesState &\n ConversationPanelPreferencesActions;\n\nconst initialState: ConversationPanelPreferencesState = {\n showOlderConversations: true,\n showRepoBranchMetadata: false,\n showLlmProfiles: true,\n showHoverMetadata: true,\n organizeMode: \"chronological\",\n conversationSort: \"updated\",\n threadScope: \"all\",\n groupFolderOrder: [],\n};\n\nexport const useConversationPanelPreferencesStore =\n create<ConversationPanelPreferencesStore>()(\n persist(\n (set) => ({\n ...initialState,\n\n setShowOlderConversations: (value) =>\n set(() => ({ showOlderConversations: value })),\n toggleShowOlderConversations: () =>\n set((state) => ({\n showOlderConversations: !state.showOlderConversations,\n })),\n\n setShowRepoBranchMetadata: (value) =>\n set(() => ({ showRepoBranchMetadata: value })),\n toggleShowRepoBranchMetadata: () =>\n set((state) => ({\n showRepoBranchMetadata: !state.showRepoBranchMetadata,\n })),\n\n setShowLlmProfiles: (value) => set(() => ({ showLlmProfiles: value })),\n toggleShowLlmProfiles: () =>\n set((state) => ({\n showLlmProfiles: !state.showLlmProfiles,\n })),\n\n setShowHoverMetadata: (value) =>\n set(() => ({ showHoverMetadata: value })),\n toggleShowHoverMetadata: () =>\n set((state) => ({\n showHoverMetadata: !state.showHoverMetadata,\n })),\n\n setOrganizeMode: (value) => set(() => ({ organizeMode: value })),\n setConversationSort: (value) =>\n set(() => ({ conversationSort: value })),\n setThreadScope: (value) => set(() => ({ threadScope: value })),\n setGroupFolderOrder: (order) =>\n set(() => ({ groupFolderOrder: [...order] })),\n }),\n {\n name: \"conversation-panel-preferences\",\n storage: createJSONStorage(() => localStorage),\n // Only persist the data fields — actions are recreated on each load.\n partialize: (state): ConversationPanelPreferencesState => ({\n showOlderConversations: state.showOlderConversations,\n showRepoBranchMetadata: state.showRepoBranchMetadata,\n showLlmProfiles: state.showLlmProfiles,\n showHoverMetadata: state.showHoverMetadata,\n organizeMode: state.organizeMode,\n conversationSort: state.conversationSort,\n threadScope: state.threadScope,\n groupFolderOrder: state.groupFolderOrder,\n }),\n },\n ),\n );\n"],"mappings":";;;AAkDA,IAAM,IAAkD;CACtD,wBAAwB;CACxB,wBAAwB;CACxB,iBAAiB;CACjB,mBAAmB;CACnB,cAAc;CACd,kBAAkB;CAClB,aAAa;CACb,kBAAkB,EAAE;CACrB,EAEY,IACX,GAA2C,CACzC,GACG,OAAS;CACR,GAAG;CAEH,4BAA4B,MAC1B,SAAW,EAAE,wBAAwB,GAAO,EAAE;CAChD,oCACE,GAAK,OAAW,EACd,wBAAwB,CAAC,EAAM,wBAChC,EAAE;CAEL,4BAA4B,MAC1B,SAAW,EAAE,wBAAwB,GAAO,EAAE;CAChD,oCACE,GAAK,OAAW,EACd,wBAAwB,CAAC,EAAM,wBAChC,EAAE;CAEL,qBAAqB,MAAU,SAAW,EAAE,iBAAiB,GAAO,EAAE;CACtE,6BACE,GAAK,OAAW,EACd,iBAAiB,CAAC,EAAM,iBACzB,EAAE;CAEL,uBAAuB,MACrB,SAAW,EAAE,mBAAmB,GAAO,EAAE;CAC3C,+BACE,GAAK,OAAW,EACd,mBAAmB,CAAC,EAAM,mBAC3B,EAAE;CAEL,kBAAkB,MAAU,SAAW,EAAE,cAAc,GAAO,EAAE;CAChE,sBAAsB,MACpB,SAAW,EAAE,kBAAkB,GAAO,EAAE;CAC1C,iBAAiB,MAAU,SAAW,EAAE,aAAa,GAAO,EAAE;CAC9D,sBAAsB,MACpB,SAAW,EAAE,kBAAkB,CAAC,GAAG,EAAM,EAAE,EAAE;CAChD,GACD;CACE,MAAM;CACN,SAAS,QAAwB,aAAa;CAE9C,aAAa,OAA8C;EACzD,wBAAwB,EAAM;EAC9B,wBAAwB,EAAM;EAC9B,iBAAiB,EAAM;EACvB,mBAAmB,EAAM;EACzB,cAAc,EAAM;EACpB,kBAAkB,EAAM;EACxB,aAAa,EAAM;EACnB,kBAAkB,EAAM;EACzB;CACF,CACF,CACF"}
@@ -1,2 +1,2 @@
1
- require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../node_modules/zustand/esm/react.cjs`),t=require(`../node_modules/zustand/esm/middleware.cjs`),n=require(`../utils/conversation-local-storage.cjs`);var r=()=>{if(typeof window>`u`)return null;let e=window.location.pathname.match(/\/conversations\/([^/]+)/);return e?e[1]:null},i=()=>{if(typeof window>`u`)return`code`;let e=r();return e?n.getConversationState(e).conversationMode:`code`},a=e.create()(t.devtools(e=>({isRightPanelShown:!1,selectedTab:`files`,images:[],files:[],imagesMarkedUploadAsFile:[],pastedImageNames:[],loadingFiles:[],loadingImages:[],messageToSend:null,messageRestoreIfEmpty:null,shouldShownAgentLoading:!1,submittedMessage:null,shouldHideSuggestions:!1,hasRightPanelToggled:!1,planContent:null,conversationMode:i(),subConversationTaskId:null,setIsRightPanelShown:t=>e({isRightPanelShown:t},!1,`setIsRightPanelShown`),setSelectedTab:t=>e({selectedTab:t},!1,`setSelectedTab`),setShouldShownAgentLoading:t=>e({shouldShownAgentLoading:t},!1,`setShouldShownAgentLoading`),setShouldHideSuggestions:t=>e({shouldHideSuggestions:t},!1,`setShouldHideSuggestions`),addImages:t=>e(e=>({images:[...e.images,...t]}),!1,`addImages`),addFiles:t=>e(e=>({files:[...e.files,...t]}),!1,`addFiles`),toggleImageUploadAsFile:t=>e(e=>{let n=new Set(e.imagesMarkedUploadAsFile);return n.has(t)?n.delete(t):n.add(t),{imagesMarkedUploadAsFile:[...n]}},!1,`toggleImageUploadAsFile`),markImagesAsPasted:t=>e(e=>({pastedImageNames:[...new Set([...e.pastedImageNames,...t])]}),!1,`markImagesAsPasted`),removeImage:t=>e(e=>{let n=e.images[t],r=[...e.images];return r.splice(t,1),{images:r,imagesMarkedUploadAsFile:n?e.imagesMarkedUploadAsFile.filter(e=>e!==n.name):e.imagesMarkedUploadAsFile,pastedImageNames:n?e.pastedImageNames.filter(e=>e!==n.name):e.pastedImageNames}},!1,`removeImage`),removeFile:t=>e(e=>{let n=[...e.files];return n.splice(t,1),{files:n}},!1,`removeFile`),clearImages:()=>e({images:[]},!1,`clearImages`),clearFiles:()=>e({files:[]},!1,`clearFiles`),clearAllFiles:()=>e({images:[],files:[],imagesMarkedUploadAsFile:[],pastedImageNames:[],loadingFiles:[],loadingImages:[]},!1,`clearAllFiles`),addFileLoading:t=>e(e=>e.loadingFiles.includes(t)?e:{loadingFiles:[...e.loadingFiles,t]},!1,`addFileLoading`),removeFileLoading:t=>e(e=>({loadingFiles:e.loadingFiles.filter(e=>e!==t)}),!1,`removeFileLoading`),addImageLoading:t=>e(e=>e.loadingImages.includes(t)?e:{loadingImages:[...e.loadingImages,t]},!1,`addImageLoading`),removeImageLoading:t=>e(e=>({loadingImages:e.loadingImages.filter(e=>e!==t)}),!1,`removeImageLoading`),clearAllLoading:()=>e({loadingFiles:[],loadingImages:[]},!1,`clearAllLoading`),setMessageToSend:t=>e({messageToSend:{text:t,timestamp:Date.now()}},!1,`setMessageToSend`),restoreMessageToInputIfEmpty:t=>e({messageRestoreIfEmpty:{text:t,timestamp:Date.now()}},!1,`restoreMessageToInputIfEmpty`),clearMessageRestoreIfEmpty:()=>e({messageRestoreIfEmpty:null},!1,`clearMessageRestoreIfEmpty`),setSubmittedMessage:t=>e({submittedMessage:t},!1,`setSubmittedMessage`),resetConversationState:()=>e({shouldHideSuggestions:!1,conversationMode:i(),subConversationTaskId:null,planContent:null},!1,`resetConversationState`),setHasRightPanelToggled:t=>e({hasRightPanelToggled:t},!1,`setHasRightPanelToggled`),setConversationMode:t=>{let i=r();i&&n.setConversationState(i,{conversationMode:t}),e({conversationMode:t},!1,`setConversationMode`)},setSubConversationTaskId:t=>e({subConversationTaskId:t},!1,`setSubConversationTaskId`),setPlanContent:t=>e({planContent:t},!1,`setPlanContent`)}),{name:`conversation-store`}));exports.useConversationStore=a;
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../node_modules/zustand/esm/react.cjs`),t=require(`../node_modules/zustand/esm/middleware.cjs`),n=require(`../utils/conversation-local-storage.cjs`);var r=()=>{if(typeof window>`u`)return null;let e=window.location.pathname.match(/\/conversations\/([^/]+)/);return e?e[1]:null},i=()=>{if(typeof window>`u`)return`code`;let e=r();return e?n.getConversationState(e).conversationMode:`code`},a=e.create()(t.devtools(e=>({isRightPanelShown:!1,selectedTab:`files`,images:[],files:[],imagesMarkedUploadAsFile:[],pastedImageNames:[],loadingFiles:[],loadingImages:[],messageToSend:null,messageRestoreIfEmpty:null,shouldShownAgentLoading:!1,submittedMessage:null,shouldHideSuggestions:!1,hasRightPanelToggled:!1,planContent:null,conversationMode:i(),subConversationTaskId:null,setIsRightPanelShown:t=>e({isRightPanelShown:t},!1,`setIsRightPanelShown`),setSelectedTab:t=>e({selectedTab:t},!1,`setSelectedTab`),setShouldShownAgentLoading:t=>e({shouldShownAgentLoading:t},!1,`setShouldShownAgentLoading`),setShouldHideSuggestions:t=>e({shouldHideSuggestions:t},!1,`setShouldHideSuggestions`),addImages:t=>e(e=>({images:[...e.images,...t]}),!1,`addImages`),addFiles:t=>e(e=>({files:[...e.files,...t]}),!1,`addFiles`),toggleImageUploadAsFile:t=>e(e=>{let n=new Set(e.imagesMarkedUploadAsFile);return n.has(t)?n.delete(t):n.add(t),{imagesMarkedUploadAsFile:[...n]}},!1,`toggleImageUploadAsFile`),markImagesAsPasted:t=>e(e=>({pastedImageNames:[...new Set([...e.pastedImageNames,...t])]}),!1,`markImagesAsPasted`),removeImage:t=>e(e=>{let n=e.images[t],r=[...e.images];return r.splice(t,1),{images:r,imagesMarkedUploadAsFile:n?e.imagesMarkedUploadAsFile.filter(e=>e!==n.name):e.imagesMarkedUploadAsFile,pastedImageNames:n?e.pastedImageNames.filter(e=>e!==n.name):e.pastedImageNames}},!1,`removeImage`),removeFile:t=>e(e=>{let n=[...e.files];return n.splice(t,1),{files:n}},!1,`removeFile`),clearImages:()=>e({images:[]},!1,`clearImages`),clearFiles:()=>e({files:[]},!1,`clearFiles`),clearAllFiles:()=>e({images:[],files:[],imagesMarkedUploadAsFile:[],pastedImageNames:[],loadingFiles:[],loadingImages:[]},!1,`clearAllFiles`),addFileLoading:t=>e(e=>e.loadingFiles.includes(t)?e:{loadingFiles:[...e.loadingFiles,t]},!1,`addFileLoading`),removeFileLoading:t=>e(e=>({loadingFiles:e.loadingFiles.filter(e=>e!==t)}),!1,`removeFileLoading`),addImageLoading:t=>e(e=>e.loadingImages.includes(t)?e:{loadingImages:[...e.loadingImages,t]},!1,`addImageLoading`),removeImageLoading:t=>e(e=>({loadingImages:e.loadingImages.filter(e=>e!==t)}),!1,`removeImageLoading`),clearAllLoading:()=>e({loadingFiles:[],loadingImages:[]},!1,`clearAllLoading`),setMessageToSend:t=>e({messageToSend:{text:t,timestamp:Date.now()}},!1,`setMessageToSend`),clearMessageToSend:()=>e({messageToSend:null},!1,`clearMessageToSend`),restoreMessageToInputIfEmpty:t=>e({messageRestoreIfEmpty:{text:t,timestamp:Date.now()}},!1,`restoreMessageToInputIfEmpty`),clearMessageRestoreIfEmpty:()=>e({messageRestoreIfEmpty:null},!1,`clearMessageRestoreIfEmpty`),setSubmittedMessage:t=>e({submittedMessage:t},!1,`setSubmittedMessage`),resetConversationState:()=>e({shouldHideSuggestions:!1,conversationMode:i(),subConversationTaskId:null,planContent:null},!1,`resetConversationState`),setHasRightPanelToggled:t=>e({hasRightPanelToggled:t},!1,`setHasRightPanelToggled`),setConversationMode:t=>{let i=r();i&&n.setConversationState(i,{conversationMode:t}),e({conversationMode:t},!1,`setConversationMode`)},setSubConversationTaskId:t=>e({subConversationTaskId:t},!1,`setSubConversationTaskId`),setPlanContent:t=>e({planContent:t},!1,`setPlanContent`)}),{name:`conversation-store`}));exports.useConversationStore=a;
2
2
  //# sourceMappingURL=conversation-store.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-store.cjs","names":[],"sources":["../../src/stores/conversation-store.ts"],"sourcesContent":["import { create } from \"zustand\";\nimport { devtools } from \"zustand/middleware\";\nimport {\n getConversationState,\n setConversationState,\n} from \"#/utils/conversation-local-storage\";\n\nexport type ConversationTab =\n | \"files\"\n | \"browser\"\n | \"terminal\"\n | \"planner\"\n | \"tasklist\";\n\nexport type ConversationMode = \"code\" | \"plan\";\n\nexport interface IMessageToSend {\n text: string;\n timestamp: number;\n}\n\ninterface ConversationState {\n isRightPanelShown: boolean;\n selectedTab: ConversationTab | null;\n images: File[];\n files: File[];\n /** Image file names (e.g. pasted screenshots) to send via file upload instead of vision embed. */\n imagesMarkedUploadAsFile: string[];\n /** Image file names attached in chat (controls per-image upload-as-file UI). */\n pastedImageNames: string[];\n loadingFiles: string[]; // File names currently being processed\n loadingImages: string[]; // Image names currently being processed\n messageToSend: IMessageToSend | null;\n /** One-shot restore request consumed by the chat input when empty. */\n messageRestoreIfEmpty: IMessageToSend | null;\n shouldShownAgentLoading: boolean;\n submittedMessage: string | null;\n shouldHideSuggestions: boolean; // New state to hide suggestions when input expands\n hasRightPanelToggled: boolean;\n planContent: string | null;\n conversationMode: ConversationMode;\n subConversationTaskId: string | null; // Task ID for sub-conversation creation\n}\n\ninterface ConversationActions {\n setIsRightPanelShown: (isRightPanelShown: boolean) => void;\n setSelectedTab: (selectedTab: ConversationTab | null) => void;\n setShouldShownAgentLoading: (shouldShownAgentLoading: boolean) => void;\n setShouldHideSuggestions: (shouldHideSuggestions: boolean) => void;\n addImages: (images: File[]) => void;\n addFiles: (files: File[]) => void;\n toggleImageUploadAsFile: (fileName: string) => void;\n markImagesAsPasted: (fileNames: string[]) => void;\n removeImage: (index: number) => void;\n removeFile: (index: number) => void;\n clearImages: () => void;\n clearFiles: () => void;\n clearAllFiles: () => void;\n addFileLoading: (fileName: string) => void;\n removeFileLoading: (fileName: string) => void;\n addImageLoading: (imageName: string) => void;\n removeImageLoading: (imageName: string) => void;\n clearAllLoading: () => void;\n setMessageToSend: (text: string) => void;\n restoreMessageToInputIfEmpty: (text: string) => void;\n clearMessageRestoreIfEmpty: () => void;\n setSubmittedMessage: (message: string | null) => void;\n resetConversationState: () => void;\n setHasRightPanelToggled: (hasRightPanelToggled: boolean) => void;\n setConversationMode: (conversationMode: ConversationMode) => void;\n setSubConversationTaskId: (taskId: string | null) => void;\n setPlanContent: (planContent: string | null) => void;\n}\n\ntype ConversationStore = ConversationState & ConversationActions;\n\nconst getConversationIdFromLocation = (): string | null => {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n const match = window.location.pathname.match(/\\/conversations\\/([^/]+)/);\n return match ? match[1] : null;\n};\n\nconst getInitialConversationMode = (): ConversationMode => {\n if (typeof window === \"undefined\") {\n return \"code\";\n }\n\n const conversationId = getConversationIdFromLocation();\n if (!conversationId) {\n return \"code\";\n }\n\n const state = getConversationState(conversationId);\n return state.conversationMode;\n};\n\nexport const useConversationStore = create<ConversationStore>()(\n devtools(\n (set) => ({\n // Initial state.\n //\n // The right-side drawer (`isRightPanelShown` / `hasRightPanelToggled`)\n // is intentionally *session-only* state: it always starts closed on\n // app load (or on opening a fresh/existing conversation after a\n // restart), but it survives in-app navigation because the Zustand\n // store stays alive across React Router transitions. Persisting the\n // open/closed state in localStorage made the panel feel sticky in\n // a way users didn't expect — they want a clean, focused chat view\n // when they come back to the app and only want the panel back when\n // they themselves opened it during the current session.\n isRightPanelShown: false,\n selectedTab: \"files\" as ConversationTab,\n images: [],\n files: [],\n imagesMarkedUploadAsFile: [],\n pastedImageNames: [],\n loadingFiles: [],\n loadingImages: [],\n messageToSend: null,\n messageRestoreIfEmpty: null,\n shouldShownAgentLoading: false,\n submittedMessage: null,\n shouldHideSuggestions: false,\n hasRightPanelToggled: false,\n planContent: null,\n conversationMode: getInitialConversationMode(),\n subConversationTaskId: null,\n\n // Actions\n setIsRightPanelShown: (isRightPanelShown) =>\n set({ isRightPanelShown }, false, \"setIsRightPanelShown\"),\n\n setSelectedTab: (selectedTab) =>\n set({ selectedTab }, false, \"setSelectedTab\"),\n\n setShouldShownAgentLoading: (shouldShownAgentLoading) =>\n set({ shouldShownAgentLoading }, false, \"setShouldShownAgentLoading\"),\n\n setShouldHideSuggestions: (shouldHideSuggestions) =>\n set({ shouldHideSuggestions }, false, \"setShouldHideSuggestions\"),\n\n addImages: (images) =>\n set(\n (state) => ({ images: [...state.images, ...images] }),\n false,\n \"addImages\",\n ),\n\n addFiles: (files) =>\n set(\n (state) => ({ files: [...state.files, ...files] }),\n false,\n \"addFiles\",\n ),\n\n toggleImageUploadAsFile: (fileName) =>\n set(\n (state) => {\n const marked = new Set(state.imagesMarkedUploadAsFile);\n if (marked.has(fileName)) {\n marked.delete(fileName);\n } else {\n marked.add(fileName);\n }\n return { imagesMarkedUploadAsFile: [...marked] };\n },\n false,\n \"toggleImageUploadAsFile\",\n ),\n\n markImagesAsPasted: (fileNames) =>\n set(\n (state) => {\n const merged = new Set([...state.pastedImageNames, ...fileNames]);\n return { pastedImageNames: [...merged] };\n },\n false,\n \"markImagesAsPasted\",\n ),\n\n removeImage: (index) =>\n set(\n (state) => {\n const removed = state.images[index];\n const newImages = [...state.images];\n newImages.splice(index, 1);\n return {\n images: newImages,\n imagesMarkedUploadAsFile: removed\n ? state.imagesMarkedUploadAsFile.filter(\n (name) => name !== removed.name,\n )\n : state.imagesMarkedUploadAsFile,\n pastedImageNames: removed\n ? state.pastedImageNames.filter((name) => name !== removed.name)\n : state.pastedImageNames,\n };\n },\n false,\n \"removeImage\",\n ),\n\n removeFile: (index) =>\n set(\n (state) => {\n const newFiles = [...state.files];\n newFiles.splice(index, 1);\n return { files: newFiles };\n },\n false,\n \"removeFile\",\n ),\n\n clearImages: () => set({ images: [] }, false, \"clearImages\"),\n\n clearFiles: () => set({ files: [] }, false, \"clearFiles\"),\n\n clearAllFiles: () =>\n set(\n {\n images: [],\n files: [],\n imagesMarkedUploadAsFile: [],\n pastedImageNames: [],\n loadingFiles: [],\n loadingImages: [],\n },\n false,\n \"clearAllFiles\",\n ),\n\n addFileLoading: (fileName) =>\n set(\n (state) => {\n if (!state.loadingFiles.includes(fileName)) {\n return { loadingFiles: [...state.loadingFiles, fileName] };\n }\n return state;\n },\n false,\n \"addFileLoading\",\n ),\n\n removeFileLoading: (fileName) =>\n set(\n (state) => ({\n loadingFiles: state.loadingFiles.filter(\n (name) => name !== fileName,\n ),\n }),\n false,\n \"removeFileLoading\",\n ),\n\n addImageLoading: (imageName) =>\n set(\n (state) => {\n if (!state.loadingImages.includes(imageName)) {\n return { loadingImages: [...state.loadingImages, imageName] };\n }\n return state;\n },\n false,\n \"addImageLoading\",\n ),\n\n removeImageLoading: (imageName) =>\n set(\n (state) => ({\n loadingImages: state.loadingImages.filter(\n (name) => name !== imageName,\n ),\n }),\n false,\n \"removeImageLoading\",\n ),\n\n clearAllLoading: () =>\n set({ loadingFiles: [], loadingImages: [] }, false, \"clearAllLoading\"),\n\n setMessageToSend: (text) =>\n set(\n {\n messageToSend: {\n text,\n timestamp: Date.now(),\n },\n },\n false,\n \"setMessageToSend\",\n ),\n\n restoreMessageToInputIfEmpty: (text) =>\n set(\n {\n messageRestoreIfEmpty: {\n text,\n timestamp: Date.now(),\n },\n },\n false,\n \"restoreMessageToInputIfEmpty\",\n ),\n\n clearMessageRestoreIfEmpty: () =>\n set(\n { messageRestoreIfEmpty: null },\n false,\n \"clearMessageRestoreIfEmpty\",\n ),\n\n setSubmittedMessage: (submittedMessage) =>\n set({ submittedMessage }, false, \"setSubmittedMessage\"),\n\n resetConversationState: () =>\n set(\n {\n shouldHideSuggestions: false,\n conversationMode: getInitialConversationMode(),\n subConversationTaskId: null,\n planContent: null,\n },\n false,\n \"resetConversationState\",\n ),\n\n setHasRightPanelToggled: (hasRightPanelToggled) =>\n set({ hasRightPanelToggled }, false, \"setHasRightPanelToggled\"),\n\n setConversationMode: (conversationMode) => {\n const conversationId = getConversationIdFromLocation();\n if (conversationId) {\n setConversationState(conversationId, { conversationMode });\n }\n set({ conversationMode }, false, \"setConversationMode\");\n },\n\n setSubConversationTaskId: (subConversationTaskId) =>\n set({ subConversationTaskId }, false, \"setSubConversationTaskId\"),\n\n setPlanContent: (planContent) =>\n set({ planContent }, false, \"setPlanContent\"),\n }),\n {\n name: \"conversation-store\",\n },\n ),\n);\n"],"mappings":"mNA4EA,IAAM,MAAqD,CACzD,GAAI,OAAO,OAAW,IACpB,OAAO,KAGT,IAAM,EAAQ,OAAO,SAAS,SAAS,MAAM,2BAA2B,CACxE,OAAO,EAAQ,EAAM,GAAK,MAGtB,MAAqD,CACzD,GAAI,OAAO,OAAW,IACpB,MAAO,OAGT,IAAM,EAAiB,GAA+B,CAMtD,OALK,EAIS,EAAA,qBAAqB,EAC5B,CAAM,iBAJJ,QAOE,EAAuB,EAAA,QAA2B,CAC7D,EAAA,SACG,IAAS,CAYR,kBAAmB,GACnB,YAAa,QACb,OAAQ,EAAE,CACV,MAAO,EAAE,CACT,yBAA0B,EAAE,CAC5B,iBAAkB,EAAE,CACpB,aAAc,EAAE,CAChB,cAAe,EAAE,CACjB,cAAe,KACf,sBAAuB,KACvB,wBAAyB,GACzB,iBAAkB,KAClB,sBAAuB,GACvB,qBAAsB,GACtB,YAAa,KACb,iBAAkB,GAA4B,CAC9C,sBAAuB,KAGvB,qBAAuB,GACrB,EAAI,CAAE,oBAAmB,CAAE,GAAO,uBAAuB,CAE3D,eAAiB,GACf,EAAI,CAAE,cAAa,CAAE,GAAO,iBAAiB,CAE/C,2BAA6B,GAC3B,EAAI,CAAE,0BAAyB,CAAE,GAAO,6BAA6B,CAEvE,yBAA2B,GACzB,EAAI,CAAE,wBAAuB,CAAE,GAAO,2BAA2B,CAEnE,UAAY,GACV,EACG,IAAW,CAAE,OAAQ,CAAC,GAAG,EAAM,OAAQ,GAAG,EAAO,CAAE,EACpD,GACA,YACD,CAEH,SAAW,GACT,EACG,IAAW,CAAE,MAAO,CAAC,GAAG,EAAM,MAAO,GAAG,EAAM,CAAE,EACjD,GACA,WACD,CAEH,wBAA0B,GACxB,EACG,GAAU,CACT,IAAM,EAAS,IAAI,IAAI,EAAM,yBAAyB,CAMtD,OALI,EAAO,IAAI,EAAS,CACtB,EAAO,OAAO,EAAS,CAEvB,EAAO,IAAI,EAAS,CAEf,CAAE,yBAA0B,CAAC,GAAG,EAAO,CAAE,EAElD,GACA,0BACD,CAEH,mBAAqB,GACnB,EACG,IAEQ,CAAE,iBAAkB,CAAC,GAAG,IADZ,IAAI,CAAC,GAAG,EAAM,iBAAkB,GAAG,EAAU,CACjC,CAAO,CAAE,EAE1C,GACA,qBACD,CAEH,YAAc,GACZ,EACG,GAAU,CACT,IAAM,EAAU,EAAM,OAAO,GACvB,EAAY,CAAC,GAAG,EAAM,OAAO,CAEnC,OADA,EAAU,OAAO,EAAO,EAAE,CACnB,CACL,OAAQ,EACR,yBAA0B,EACtB,EAAM,yBAAyB,OAC5B,GAAS,IAAS,EAAQ,KAC5B,CACD,EAAM,yBACV,iBAAkB,EACd,EAAM,iBAAiB,OAAQ,GAAS,IAAS,EAAQ,KAAK,CAC9D,EAAM,iBACX,EAEH,GACA,cACD,CAEH,WAAa,GACX,EACG,GAAU,CACT,IAAM,EAAW,CAAC,GAAG,EAAM,MAAM,CAEjC,OADA,EAAS,OAAO,EAAO,EAAE,CAClB,CAAE,MAAO,EAAU,EAE5B,GACA,aACD,CAEH,gBAAmB,EAAI,CAAE,OAAQ,EAAE,CAAE,CAAE,GAAO,cAAc,CAE5D,eAAkB,EAAI,CAAE,MAAO,EAAE,CAAE,CAAE,GAAO,aAAa,CAEzD,kBACE,EACE,CACE,OAAQ,EAAE,CACV,MAAO,EAAE,CACT,yBAA0B,EAAE,CAC5B,iBAAkB,EAAE,CACpB,aAAc,EAAE,CAChB,cAAe,EAAE,CAClB,CACD,GACA,gBACD,CAEH,eAAiB,GACf,EACG,GACM,EAAM,aAAa,SAAS,EAAS,CAGnC,EAFE,CAAE,aAAc,CAAC,GAAG,EAAM,aAAc,EAAS,CAAE,CAI9D,GACA,iBACD,CAEH,kBAAoB,GAClB,EACG,IAAW,CACV,aAAc,EAAM,aAAa,OAC9B,GAAS,IAAS,EACpB,CACF,EACD,GACA,oBACD,CAEH,gBAAkB,GAChB,EACG,GACM,EAAM,cAAc,SAAS,EAAU,CAGrC,EAFE,CAAE,cAAe,CAAC,GAAG,EAAM,cAAe,EAAU,CAAE,CAIjE,GACA,kBACD,CAEH,mBAAqB,GACnB,EACG,IAAW,CACV,cAAe,EAAM,cAAc,OAChC,GAAS,IAAS,EACpB,CACF,EACD,GACA,qBACD,CAEH,oBACE,EAAI,CAAE,aAAc,EAAE,CAAE,cAAe,EAAE,CAAE,CAAE,GAAO,kBAAkB,CAExE,iBAAmB,GACjB,EACE,CACE,cAAe,CACb,OACA,UAAW,KAAK,KAAK,CACtB,CACF,CACD,GACA,mBACD,CAEH,6BAA+B,GAC7B,EACE,CACE,sBAAuB,CACrB,OACA,UAAW,KAAK,KAAK,CACtB,CACF,CACD,GACA,+BACD,CAEH,+BACE,EACE,CAAE,sBAAuB,KAAM,CAC/B,GACA,6BACD,CAEH,oBAAsB,GACpB,EAAI,CAAE,mBAAkB,CAAE,GAAO,sBAAsB,CAEzD,2BACE,EACE,CACE,sBAAuB,GACvB,iBAAkB,GAA4B,CAC9C,sBAAuB,KACvB,YAAa,KACd,CACD,GACA,yBACD,CAEH,wBAA0B,GACxB,EAAI,CAAE,uBAAsB,CAAE,GAAO,0BAA0B,CAEjE,oBAAsB,GAAqB,CACzC,IAAM,EAAiB,GAA+B,CAClD,GACF,EAAA,qBAAqB,EAAgB,CAAE,mBAAkB,CAAC,CAE5D,EAAI,CAAE,mBAAkB,CAAE,GAAO,sBAAsB,EAGzD,yBAA2B,GACzB,EAAI,CAAE,wBAAuB,CAAE,GAAO,2BAA2B,CAEnE,eAAiB,GACf,EAAI,CAAE,cAAa,CAAE,GAAO,iBAAiB,CAChD,EACD,CACE,KAAM,qBACP,CACF,CACF"}
1
+ {"version":3,"file":"conversation-store.cjs","names":[],"sources":["../../src/stores/conversation-store.ts"],"sourcesContent":["import { create } from \"zustand\";\nimport { devtools } from \"zustand/middleware\";\nimport {\n getConversationState,\n setConversationState,\n} from \"#/utils/conversation-local-storage\";\n\nexport type ConversationTab =\n | \"files\"\n | \"browser\"\n | \"terminal\"\n | \"planner\"\n | \"tasklist\";\n\nexport type ConversationMode = \"code\" | \"plan\";\n\nexport interface IMessageToSend {\n text: string;\n timestamp: number;\n}\n\ninterface ConversationState {\n isRightPanelShown: boolean;\n selectedTab: ConversationTab | null;\n images: File[];\n files: File[];\n /** Image file names (e.g. pasted screenshots) to send via file upload instead of vision embed. */\n imagesMarkedUploadAsFile: string[];\n /** Image file names attached in chat (controls per-image upload-as-file UI). */\n pastedImageNames: string[];\n loadingFiles: string[]; // File names currently being processed\n loadingImages: string[]; // Image names currently being processed\n messageToSend: IMessageToSend | null;\n /** One-shot restore request consumed by the chat input when empty. */\n messageRestoreIfEmpty: IMessageToSend | null;\n shouldShownAgentLoading: boolean;\n submittedMessage: string | null;\n shouldHideSuggestions: boolean; // New state to hide suggestions when input expands\n hasRightPanelToggled: boolean;\n planContent: string | null;\n conversationMode: ConversationMode;\n subConversationTaskId: string | null; // Task ID for sub-conversation creation\n}\n\ninterface ConversationActions {\n setIsRightPanelShown: (isRightPanelShown: boolean) => void;\n setSelectedTab: (selectedTab: ConversationTab | null) => void;\n setShouldShownAgentLoading: (shouldShownAgentLoading: boolean) => void;\n setShouldHideSuggestions: (shouldHideSuggestions: boolean) => void;\n addImages: (images: File[]) => void;\n addFiles: (files: File[]) => void;\n toggleImageUploadAsFile: (fileName: string) => void;\n markImagesAsPasted: (fileNames: string[]) => void;\n removeImage: (index: number) => void;\n removeFile: (index: number) => void;\n clearImages: () => void;\n clearFiles: () => void;\n clearAllFiles: () => void;\n addFileLoading: (fileName: string) => void;\n removeFileLoading: (fileName: string) => void;\n addImageLoading: (imageName: string) => void;\n removeImageLoading: (imageName: string) => void;\n clearAllLoading: () => void;\n setMessageToSend: (text: string) => void;\n clearMessageToSend: () => void;\n restoreMessageToInputIfEmpty: (text: string) => void;\n clearMessageRestoreIfEmpty: () => void;\n setSubmittedMessage: (message: string | null) => void;\n resetConversationState: () => void;\n setHasRightPanelToggled: (hasRightPanelToggled: boolean) => void;\n setConversationMode: (conversationMode: ConversationMode) => void;\n setSubConversationTaskId: (taskId: string | null) => void;\n setPlanContent: (planContent: string | null) => void;\n}\n\ntype ConversationStore = ConversationState & ConversationActions;\n\nconst getConversationIdFromLocation = (): string | null => {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n const match = window.location.pathname.match(/\\/conversations\\/([^/]+)/);\n return match ? match[1] : null;\n};\n\nconst getInitialConversationMode = (): ConversationMode => {\n if (typeof window === \"undefined\") {\n return \"code\";\n }\n\n const conversationId = getConversationIdFromLocation();\n if (!conversationId) {\n return \"code\";\n }\n\n const state = getConversationState(conversationId);\n return state.conversationMode;\n};\n\nexport const useConversationStore = create<ConversationStore>()(\n devtools(\n (set) => ({\n // Initial state.\n //\n // The right-side drawer (`isRightPanelShown` / `hasRightPanelToggled`)\n // is intentionally *session-only* state: it always starts closed on\n // app load (or on opening a fresh/existing conversation after a\n // restart), but it survives in-app navigation because the Zustand\n // store stays alive across React Router transitions. Persisting the\n // open/closed state in localStorage made the panel feel sticky in\n // a way users didn't expect — they want a clean, focused chat view\n // when they come back to the app and only want the panel back when\n // they themselves opened it during the current session.\n isRightPanelShown: false,\n selectedTab: \"files\" as ConversationTab,\n images: [],\n files: [],\n imagesMarkedUploadAsFile: [],\n pastedImageNames: [],\n loadingFiles: [],\n loadingImages: [],\n messageToSend: null,\n messageRestoreIfEmpty: null,\n shouldShownAgentLoading: false,\n submittedMessage: null,\n shouldHideSuggestions: false,\n hasRightPanelToggled: false,\n planContent: null,\n conversationMode: getInitialConversationMode(),\n subConversationTaskId: null,\n\n // Actions\n setIsRightPanelShown: (isRightPanelShown) =>\n set({ isRightPanelShown }, false, \"setIsRightPanelShown\"),\n\n setSelectedTab: (selectedTab) =>\n set({ selectedTab }, false, \"setSelectedTab\"),\n\n setShouldShownAgentLoading: (shouldShownAgentLoading) =>\n set({ shouldShownAgentLoading }, false, \"setShouldShownAgentLoading\"),\n\n setShouldHideSuggestions: (shouldHideSuggestions) =>\n set({ shouldHideSuggestions }, false, \"setShouldHideSuggestions\"),\n\n addImages: (images) =>\n set(\n (state) => ({ images: [...state.images, ...images] }),\n false,\n \"addImages\",\n ),\n\n addFiles: (files) =>\n set(\n (state) => ({ files: [...state.files, ...files] }),\n false,\n \"addFiles\",\n ),\n\n toggleImageUploadAsFile: (fileName) =>\n set(\n (state) => {\n const marked = new Set(state.imagesMarkedUploadAsFile);\n if (marked.has(fileName)) {\n marked.delete(fileName);\n } else {\n marked.add(fileName);\n }\n return { imagesMarkedUploadAsFile: [...marked] };\n },\n false,\n \"toggleImageUploadAsFile\",\n ),\n\n markImagesAsPasted: (fileNames) =>\n set(\n (state) => {\n const merged = new Set([...state.pastedImageNames, ...fileNames]);\n return { pastedImageNames: [...merged] };\n },\n false,\n \"markImagesAsPasted\",\n ),\n\n removeImage: (index) =>\n set(\n (state) => {\n const removed = state.images[index];\n const newImages = [...state.images];\n newImages.splice(index, 1);\n return {\n images: newImages,\n imagesMarkedUploadAsFile: removed\n ? state.imagesMarkedUploadAsFile.filter(\n (name) => name !== removed.name,\n )\n : state.imagesMarkedUploadAsFile,\n pastedImageNames: removed\n ? state.pastedImageNames.filter((name) => name !== removed.name)\n : state.pastedImageNames,\n };\n },\n false,\n \"removeImage\",\n ),\n\n removeFile: (index) =>\n set(\n (state) => {\n const newFiles = [...state.files];\n newFiles.splice(index, 1);\n return { files: newFiles };\n },\n false,\n \"removeFile\",\n ),\n\n clearImages: () => set({ images: [] }, false, \"clearImages\"),\n\n clearFiles: () => set({ files: [] }, false, \"clearFiles\"),\n\n clearAllFiles: () =>\n set(\n {\n images: [],\n files: [],\n imagesMarkedUploadAsFile: [],\n pastedImageNames: [],\n loadingFiles: [],\n loadingImages: [],\n },\n false,\n \"clearAllFiles\",\n ),\n\n addFileLoading: (fileName) =>\n set(\n (state) => {\n if (!state.loadingFiles.includes(fileName)) {\n return { loadingFiles: [...state.loadingFiles, fileName] };\n }\n return state;\n },\n false,\n \"addFileLoading\",\n ),\n\n removeFileLoading: (fileName) =>\n set(\n (state) => ({\n loadingFiles: state.loadingFiles.filter(\n (name) => name !== fileName,\n ),\n }),\n false,\n \"removeFileLoading\",\n ),\n\n addImageLoading: (imageName) =>\n set(\n (state) => {\n if (!state.loadingImages.includes(imageName)) {\n return { loadingImages: [...state.loadingImages, imageName] };\n }\n return state;\n },\n false,\n \"addImageLoading\",\n ),\n\n removeImageLoading: (imageName) =>\n set(\n (state) => ({\n loadingImages: state.loadingImages.filter(\n (name) => name !== imageName,\n ),\n }),\n false,\n \"removeImageLoading\",\n ),\n\n clearAllLoading: () =>\n set({ loadingFiles: [], loadingImages: [] }, false, \"clearAllLoading\"),\n\n setMessageToSend: (text) =>\n set(\n {\n messageToSend: {\n text,\n timestamp: Date.now(),\n },\n },\n false,\n \"setMessageToSend\",\n ),\n\n // One-shot consume: clear after the composer applies it, so a never-sent\n // value can't replay into another conversation's composer on remount.\n clearMessageToSend: () =>\n set({ messageToSend: null }, false, \"clearMessageToSend\"),\n\n restoreMessageToInputIfEmpty: (text) =>\n set(\n {\n messageRestoreIfEmpty: {\n text,\n timestamp: Date.now(),\n },\n },\n false,\n \"restoreMessageToInputIfEmpty\",\n ),\n\n clearMessageRestoreIfEmpty: () =>\n set(\n { messageRestoreIfEmpty: null },\n false,\n \"clearMessageRestoreIfEmpty\",\n ),\n\n setSubmittedMessage: (submittedMessage) =>\n set({ submittedMessage }, false, \"setSubmittedMessage\"),\n\n resetConversationState: () =>\n set(\n {\n shouldHideSuggestions: false,\n conversationMode: getInitialConversationMode(),\n subConversationTaskId: null,\n planContent: null,\n },\n false,\n \"resetConversationState\",\n ),\n\n setHasRightPanelToggled: (hasRightPanelToggled) =>\n set({ hasRightPanelToggled }, false, \"setHasRightPanelToggled\"),\n\n setConversationMode: (conversationMode) => {\n const conversationId = getConversationIdFromLocation();\n if (conversationId) {\n setConversationState(conversationId, { conversationMode });\n }\n set({ conversationMode }, false, \"setConversationMode\");\n },\n\n setSubConversationTaskId: (subConversationTaskId) =>\n set({ subConversationTaskId }, false, \"setSubConversationTaskId\"),\n\n setPlanContent: (planContent) =>\n set({ planContent }, false, \"setPlanContent\"),\n }),\n {\n name: \"conversation-store\",\n },\n ),\n);\n"],"mappings":"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"}
@@ -46,6 +46,7 @@ interface ConversationActions {
46
46
  removeImageLoading: (imageName: string) => void;
47
47
  clearAllLoading: () => void;
48
48
  setMessageToSend: (text: string) => void;
49
+ clearMessageToSend: () => void;
49
50
  restoreMessageToInputIfEmpty: (text: string) => void;
50
51
  clearMessageRestoreIfEmpty: () => void;
51
52
  setSubmittedMessage: (message: string | null) => void;
@@ -73,6 +73,7 @@ var i = () => {
73
73
  text: t,
74
74
  timestamp: Date.now()
75
75
  } }, !1, "setMessageToSend"),
76
+ clearMessageToSend: () => e({ messageToSend: null }, !1, "clearMessageToSend"),
76
77
  restoreMessageToInputIfEmpty: (t) => e({ messageRestoreIfEmpty: {
77
78
  text: t,
78
79
  timestamp: Date.now()
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-store.js","names":[],"sources":["../../src/stores/conversation-store.ts"],"sourcesContent":["import { create } from \"zustand\";\nimport { devtools } from \"zustand/middleware\";\nimport {\n getConversationState,\n setConversationState,\n} from \"#/utils/conversation-local-storage\";\n\nexport type ConversationTab =\n | \"files\"\n | \"browser\"\n | \"terminal\"\n | \"planner\"\n | \"tasklist\";\n\nexport type ConversationMode = \"code\" | \"plan\";\n\nexport interface IMessageToSend {\n text: string;\n timestamp: number;\n}\n\ninterface ConversationState {\n isRightPanelShown: boolean;\n selectedTab: ConversationTab | null;\n images: File[];\n files: File[];\n /** Image file names (e.g. pasted screenshots) to send via file upload instead of vision embed. */\n imagesMarkedUploadAsFile: string[];\n /** Image file names attached in chat (controls per-image upload-as-file UI). */\n pastedImageNames: string[];\n loadingFiles: string[]; // File names currently being processed\n loadingImages: string[]; // Image names currently being processed\n messageToSend: IMessageToSend | null;\n /** One-shot restore request consumed by the chat input when empty. */\n messageRestoreIfEmpty: IMessageToSend | null;\n shouldShownAgentLoading: boolean;\n submittedMessage: string | null;\n shouldHideSuggestions: boolean; // New state to hide suggestions when input expands\n hasRightPanelToggled: boolean;\n planContent: string | null;\n conversationMode: ConversationMode;\n subConversationTaskId: string | null; // Task ID for sub-conversation creation\n}\n\ninterface ConversationActions {\n setIsRightPanelShown: (isRightPanelShown: boolean) => void;\n setSelectedTab: (selectedTab: ConversationTab | null) => void;\n setShouldShownAgentLoading: (shouldShownAgentLoading: boolean) => void;\n setShouldHideSuggestions: (shouldHideSuggestions: boolean) => void;\n addImages: (images: File[]) => void;\n addFiles: (files: File[]) => void;\n toggleImageUploadAsFile: (fileName: string) => void;\n markImagesAsPasted: (fileNames: string[]) => void;\n removeImage: (index: number) => void;\n removeFile: (index: number) => void;\n clearImages: () => void;\n clearFiles: () => void;\n clearAllFiles: () => void;\n addFileLoading: (fileName: string) => void;\n removeFileLoading: (fileName: string) => void;\n addImageLoading: (imageName: string) => void;\n removeImageLoading: (imageName: string) => void;\n clearAllLoading: () => void;\n setMessageToSend: (text: string) => void;\n restoreMessageToInputIfEmpty: (text: string) => void;\n clearMessageRestoreIfEmpty: () => void;\n setSubmittedMessage: (message: string | null) => void;\n resetConversationState: () => void;\n setHasRightPanelToggled: (hasRightPanelToggled: boolean) => void;\n setConversationMode: (conversationMode: ConversationMode) => void;\n setSubConversationTaskId: (taskId: string | null) => void;\n setPlanContent: (planContent: string | null) => void;\n}\n\ntype ConversationStore = ConversationState & ConversationActions;\n\nconst getConversationIdFromLocation = (): string | null => {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n const match = window.location.pathname.match(/\\/conversations\\/([^/]+)/);\n return match ? match[1] : null;\n};\n\nconst getInitialConversationMode = (): ConversationMode => {\n if (typeof window === \"undefined\") {\n return \"code\";\n }\n\n const conversationId = getConversationIdFromLocation();\n if (!conversationId) {\n return \"code\";\n }\n\n const state = getConversationState(conversationId);\n return state.conversationMode;\n};\n\nexport const useConversationStore = create<ConversationStore>()(\n devtools(\n (set) => ({\n // Initial state.\n //\n // The right-side drawer (`isRightPanelShown` / `hasRightPanelToggled`)\n // is intentionally *session-only* state: it always starts closed on\n // app load (or on opening a fresh/existing conversation after a\n // restart), but it survives in-app navigation because the Zustand\n // store stays alive across React Router transitions. Persisting the\n // open/closed state in localStorage made the panel feel sticky in\n // a way users didn't expect — they want a clean, focused chat view\n // when they come back to the app and only want the panel back when\n // they themselves opened it during the current session.\n isRightPanelShown: false,\n selectedTab: \"files\" as ConversationTab,\n images: [],\n files: [],\n imagesMarkedUploadAsFile: [],\n pastedImageNames: [],\n loadingFiles: [],\n loadingImages: [],\n messageToSend: null,\n messageRestoreIfEmpty: null,\n shouldShownAgentLoading: false,\n submittedMessage: null,\n shouldHideSuggestions: false,\n hasRightPanelToggled: false,\n planContent: null,\n conversationMode: getInitialConversationMode(),\n subConversationTaskId: null,\n\n // Actions\n setIsRightPanelShown: (isRightPanelShown) =>\n set({ isRightPanelShown }, false, \"setIsRightPanelShown\"),\n\n setSelectedTab: (selectedTab) =>\n set({ selectedTab }, false, \"setSelectedTab\"),\n\n setShouldShownAgentLoading: (shouldShownAgentLoading) =>\n set({ shouldShownAgentLoading }, false, \"setShouldShownAgentLoading\"),\n\n setShouldHideSuggestions: (shouldHideSuggestions) =>\n set({ shouldHideSuggestions }, false, \"setShouldHideSuggestions\"),\n\n addImages: (images) =>\n set(\n (state) => ({ images: [...state.images, ...images] }),\n false,\n \"addImages\",\n ),\n\n addFiles: (files) =>\n set(\n (state) => ({ files: [...state.files, ...files] }),\n false,\n \"addFiles\",\n ),\n\n toggleImageUploadAsFile: (fileName) =>\n set(\n (state) => {\n const marked = new Set(state.imagesMarkedUploadAsFile);\n if (marked.has(fileName)) {\n marked.delete(fileName);\n } else {\n marked.add(fileName);\n }\n return { imagesMarkedUploadAsFile: [...marked] };\n },\n false,\n \"toggleImageUploadAsFile\",\n ),\n\n markImagesAsPasted: (fileNames) =>\n set(\n (state) => {\n const merged = new Set([...state.pastedImageNames, ...fileNames]);\n return { pastedImageNames: [...merged] };\n },\n false,\n \"markImagesAsPasted\",\n ),\n\n removeImage: (index) =>\n set(\n (state) => {\n const removed = state.images[index];\n const newImages = [...state.images];\n newImages.splice(index, 1);\n return {\n images: newImages,\n imagesMarkedUploadAsFile: removed\n ? state.imagesMarkedUploadAsFile.filter(\n (name) => name !== removed.name,\n )\n : state.imagesMarkedUploadAsFile,\n pastedImageNames: removed\n ? state.pastedImageNames.filter((name) => name !== removed.name)\n : state.pastedImageNames,\n };\n },\n false,\n \"removeImage\",\n ),\n\n removeFile: (index) =>\n set(\n (state) => {\n const newFiles = [...state.files];\n newFiles.splice(index, 1);\n return { files: newFiles };\n },\n false,\n \"removeFile\",\n ),\n\n clearImages: () => set({ images: [] }, false, \"clearImages\"),\n\n clearFiles: () => set({ files: [] }, false, \"clearFiles\"),\n\n clearAllFiles: () =>\n set(\n {\n images: [],\n files: [],\n imagesMarkedUploadAsFile: [],\n pastedImageNames: [],\n loadingFiles: [],\n loadingImages: [],\n },\n false,\n \"clearAllFiles\",\n ),\n\n addFileLoading: (fileName) =>\n set(\n (state) => {\n if (!state.loadingFiles.includes(fileName)) {\n return { loadingFiles: [...state.loadingFiles, fileName] };\n }\n return state;\n },\n false,\n \"addFileLoading\",\n ),\n\n removeFileLoading: (fileName) =>\n set(\n (state) => ({\n loadingFiles: state.loadingFiles.filter(\n (name) => name !== fileName,\n ),\n }),\n false,\n \"removeFileLoading\",\n ),\n\n addImageLoading: (imageName) =>\n set(\n (state) => {\n if (!state.loadingImages.includes(imageName)) {\n return { loadingImages: [...state.loadingImages, imageName] };\n }\n return state;\n },\n false,\n \"addImageLoading\",\n ),\n\n removeImageLoading: (imageName) =>\n set(\n (state) => ({\n loadingImages: state.loadingImages.filter(\n (name) => name !== imageName,\n ),\n }),\n false,\n \"removeImageLoading\",\n ),\n\n clearAllLoading: () =>\n set({ loadingFiles: [], loadingImages: [] }, false, \"clearAllLoading\"),\n\n setMessageToSend: (text) =>\n set(\n {\n messageToSend: {\n text,\n timestamp: Date.now(),\n },\n },\n false,\n \"setMessageToSend\",\n ),\n\n restoreMessageToInputIfEmpty: (text) =>\n set(\n {\n messageRestoreIfEmpty: {\n text,\n timestamp: Date.now(),\n },\n },\n false,\n \"restoreMessageToInputIfEmpty\",\n ),\n\n clearMessageRestoreIfEmpty: () =>\n set(\n { messageRestoreIfEmpty: null },\n false,\n \"clearMessageRestoreIfEmpty\",\n ),\n\n setSubmittedMessage: (submittedMessage) =>\n set({ submittedMessage }, false, \"setSubmittedMessage\"),\n\n resetConversationState: () =>\n set(\n {\n shouldHideSuggestions: false,\n conversationMode: getInitialConversationMode(),\n subConversationTaskId: null,\n planContent: null,\n },\n false,\n \"resetConversationState\",\n ),\n\n setHasRightPanelToggled: (hasRightPanelToggled) =>\n set({ hasRightPanelToggled }, false, \"setHasRightPanelToggled\"),\n\n setConversationMode: (conversationMode) => {\n const conversationId = getConversationIdFromLocation();\n if (conversationId) {\n setConversationState(conversationId, { conversationMode });\n }\n set({ conversationMode }, false, \"setConversationMode\");\n },\n\n setSubConversationTaskId: (subConversationTaskId) =>\n set({ subConversationTaskId }, false, \"setSubConversationTaskId\"),\n\n setPlanContent: (planContent) =>\n set({ planContent }, false, \"setPlanContent\"),\n }),\n {\n name: \"conversation-store\",\n },\n ),\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"conversation-store.js","names":[],"sources":["../../src/stores/conversation-store.ts"],"sourcesContent":["import { create } from \"zustand\";\nimport { devtools } from \"zustand/middleware\";\nimport {\n getConversationState,\n setConversationState,\n} from \"#/utils/conversation-local-storage\";\n\nexport type ConversationTab =\n | \"files\"\n | \"browser\"\n | \"terminal\"\n | \"planner\"\n | \"tasklist\";\n\nexport type ConversationMode = \"code\" | \"plan\";\n\nexport interface IMessageToSend {\n text: string;\n timestamp: number;\n}\n\ninterface ConversationState {\n isRightPanelShown: boolean;\n selectedTab: ConversationTab | null;\n images: File[];\n files: File[];\n /** Image file names (e.g. pasted screenshots) to send via file upload instead of vision embed. */\n imagesMarkedUploadAsFile: string[];\n /** Image file names attached in chat (controls per-image upload-as-file UI). */\n pastedImageNames: string[];\n loadingFiles: string[]; // File names currently being processed\n loadingImages: string[]; // Image names currently being processed\n messageToSend: IMessageToSend | null;\n /** One-shot restore request consumed by the chat input when empty. */\n messageRestoreIfEmpty: IMessageToSend | null;\n shouldShownAgentLoading: boolean;\n submittedMessage: string | null;\n shouldHideSuggestions: boolean; // New state to hide suggestions when input expands\n hasRightPanelToggled: boolean;\n planContent: string | null;\n conversationMode: ConversationMode;\n subConversationTaskId: string | null; // Task ID for sub-conversation creation\n}\n\ninterface ConversationActions {\n setIsRightPanelShown: (isRightPanelShown: boolean) => void;\n setSelectedTab: (selectedTab: ConversationTab | null) => void;\n setShouldShownAgentLoading: (shouldShownAgentLoading: boolean) => void;\n setShouldHideSuggestions: (shouldHideSuggestions: boolean) => void;\n addImages: (images: File[]) => void;\n addFiles: (files: File[]) => void;\n toggleImageUploadAsFile: (fileName: string) => void;\n markImagesAsPasted: (fileNames: string[]) => void;\n removeImage: (index: number) => void;\n removeFile: (index: number) => void;\n clearImages: () => void;\n clearFiles: () => void;\n clearAllFiles: () => void;\n addFileLoading: (fileName: string) => void;\n removeFileLoading: (fileName: string) => void;\n addImageLoading: (imageName: string) => void;\n removeImageLoading: (imageName: string) => void;\n clearAllLoading: () => void;\n setMessageToSend: (text: string) => void;\n clearMessageToSend: () => void;\n restoreMessageToInputIfEmpty: (text: string) => void;\n clearMessageRestoreIfEmpty: () => void;\n setSubmittedMessage: (message: string | null) => void;\n resetConversationState: () => void;\n setHasRightPanelToggled: (hasRightPanelToggled: boolean) => void;\n setConversationMode: (conversationMode: ConversationMode) => void;\n setSubConversationTaskId: (taskId: string | null) => void;\n setPlanContent: (planContent: string | null) => void;\n}\n\ntype ConversationStore = ConversationState & ConversationActions;\n\nconst getConversationIdFromLocation = (): string | null => {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n const match = window.location.pathname.match(/\\/conversations\\/([^/]+)/);\n return match ? match[1] : null;\n};\n\nconst getInitialConversationMode = (): ConversationMode => {\n if (typeof window === \"undefined\") {\n return \"code\";\n }\n\n const conversationId = getConversationIdFromLocation();\n if (!conversationId) {\n return \"code\";\n }\n\n const state = getConversationState(conversationId);\n return state.conversationMode;\n};\n\nexport const useConversationStore = create<ConversationStore>()(\n devtools(\n (set) => ({\n // Initial state.\n //\n // The right-side drawer (`isRightPanelShown` / `hasRightPanelToggled`)\n // is intentionally *session-only* state: it always starts closed on\n // app load (or on opening a fresh/existing conversation after a\n // restart), but it survives in-app navigation because the Zustand\n // store stays alive across React Router transitions. Persisting the\n // open/closed state in localStorage made the panel feel sticky in\n // a way users didn't expect — they want a clean, focused chat view\n // when they come back to the app and only want the panel back when\n // they themselves opened it during the current session.\n isRightPanelShown: false,\n selectedTab: \"files\" as ConversationTab,\n images: [],\n files: [],\n imagesMarkedUploadAsFile: [],\n pastedImageNames: [],\n loadingFiles: [],\n loadingImages: [],\n messageToSend: null,\n messageRestoreIfEmpty: null,\n shouldShownAgentLoading: false,\n submittedMessage: null,\n shouldHideSuggestions: false,\n hasRightPanelToggled: false,\n planContent: null,\n conversationMode: getInitialConversationMode(),\n subConversationTaskId: null,\n\n // Actions\n setIsRightPanelShown: (isRightPanelShown) =>\n set({ isRightPanelShown }, false, \"setIsRightPanelShown\"),\n\n setSelectedTab: (selectedTab) =>\n set({ selectedTab }, false, \"setSelectedTab\"),\n\n setShouldShownAgentLoading: (shouldShownAgentLoading) =>\n set({ shouldShownAgentLoading }, false, \"setShouldShownAgentLoading\"),\n\n setShouldHideSuggestions: (shouldHideSuggestions) =>\n set({ shouldHideSuggestions }, false, \"setShouldHideSuggestions\"),\n\n addImages: (images) =>\n set(\n (state) => ({ images: [...state.images, ...images] }),\n false,\n \"addImages\",\n ),\n\n addFiles: (files) =>\n set(\n (state) => ({ files: [...state.files, ...files] }),\n false,\n \"addFiles\",\n ),\n\n toggleImageUploadAsFile: (fileName) =>\n set(\n (state) => {\n const marked = new Set(state.imagesMarkedUploadAsFile);\n if (marked.has(fileName)) {\n marked.delete(fileName);\n } else {\n marked.add(fileName);\n }\n return { imagesMarkedUploadAsFile: [...marked] };\n },\n false,\n \"toggleImageUploadAsFile\",\n ),\n\n markImagesAsPasted: (fileNames) =>\n set(\n (state) => {\n const merged = new Set([...state.pastedImageNames, ...fileNames]);\n return { pastedImageNames: [...merged] };\n },\n false,\n \"markImagesAsPasted\",\n ),\n\n removeImage: (index) =>\n set(\n (state) => {\n const removed = state.images[index];\n const newImages = [...state.images];\n newImages.splice(index, 1);\n return {\n images: newImages,\n imagesMarkedUploadAsFile: removed\n ? state.imagesMarkedUploadAsFile.filter(\n (name) => name !== removed.name,\n )\n : state.imagesMarkedUploadAsFile,\n pastedImageNames: removed\n ? state.pastedImageNames.filter((name) => name !== removed.name)\n : state.pastedImageNames,\n };\n },\n false,\n \"removeImage\",\n ),\n\n removeFile: (index) =>\n set(\n (state) => {\n const newFiles = [...state.files];\n newFiles.splice(index, 1);\n return { files: newFiles };\n },\n false,\n \"removeFile\",\n ),\n\n clearImages: () => set({ images: [] }, false, \"clearImages\"),\n\n clearFiles: () => set({ files: [] }, false, \"clearFiles\"),\n\n clearAllFiles: () =>\n set(\n {\n images: [],\n files: [],\n imagesMarkedUploadAsFile: [],\n pastedImageNames: [],\n loadingFiles: [],\n loadingImages: [],\n },\n false,\n \"clearAllFiles\",\n ),\n\n addFileLoading: (fileName) =>\n set(\n (state) => {\n if (!state.loadingFiles.includes(fileName)) {\n return { loadingFiles: [...state.loadingFiles, fileName] };\n }\n return state;\n },\n false,\n \"addFileLoading\",\n ),\n\n removeFileLoading: (fileName) =>\n set(\n (state) => ({\n loadingFiles: state.loadingFiles.filter(\n (name) => name !== fileName,\n ),\n }),\n false,\n \"removeFileLoading\",\n ),\n\n addImageLoading: (imageName) =>\n set(\n (state) => {\n if (!state.loadingImages.includes(imageName)) {\n return { loadingImages: [...state.loadingImages, imageName] };\n }\n return state;\n },\n false,\n \"addImageLoading\",\n ),\n\n removeImageLoading: (imageName) =>\n set(\n (state) => ({\n loadingImages: state.loadingImages.filter(\n (name) => name !== imageName,\n ),\n }),\n false,\n \"removeImageLoading\",\n ),\n\n clearAllLoading: () =>\n set({ loadingFiles: [], loadingImages: [] }, false, \"clearAllLoading\"),\n\n setMessageToSend: (text) =>\n set(\n {\n messageToSend: {\n text,\n timestamp: Date.now(),\n },\n },\n false,\n \"setMessageToSend\",\n ),\n\n // One-shot consume: clear after the composer applies it, so a never-sent\n // value can't replay into another conversation's composer on remount.\n clearMessageToSend: () =>\n set({ messageToSend: null }, false, \"clearMessageToSend\"),\n\n restoreMessageToInputIfEmpty: (text) =>\n set(\n {\n messageRestoreIfEmpty: {\n text,\n timestamp: Date.now(),\n },\n },\n false,\n \"restoreMessageToInputIfEmpty\",\n ),\n\n clearMessageRestoreIfEmpty: () =>\n set(\n { messageRestoreIfEmpty: null },\n false,\n \"clearMessageRestoreIfEmpty\",\n ),\n\n setSubmittedMessage: (submittedMessage) =>\n set({ submittedMessage }, false, \"setSubmittedMessage\"),\n\n resetConversationState: () =>\n set(\n {\n shouldHideSuggestions: false,\n conversationMode: getInitialConversationMode(),\n subConversationTaskId: null,\n planContent: null,\n },\n false,\n \"resetConversationState\",\n ),\n\n setHasRightPanelToggled: (hasRightPanelToggled) =>\n set({ hasRightPanelToggled }, false, \"setHasRightPanelToggled\"),\n\n setConversationMode: (conversationMode) => {\n const conversationId = getConversationIdFromLocation();\n if (conversationId) {\n setConversationState(conversationId, { conversationMode });\n }\n set({ conversationMode }, false, \"setConversationMode\");\n },\n\n setSubConversationTaskId: (subConversationTaskId) =>\n set({ subConversationTaskId }, false, \"setSubConversationTaskId\"),\n\n setPlanContent: (planContent) =>\n set({ planContent }, false, \"setPlanContent\"),\n }),\n {\n name: \"conversation-store\",\n },\n ),\n);\n"],"mappings":";;;;AA6EA,IAAM,UAAqD;AACzD,KAAI,OAAO,SAAW,IACpB,QAAO;CAGT,IAAM,IAAQ,OAAO,SAAS,SAAS,MAAM,2BAA2B;AACxE,QAAO,IAAQ,EAAM,KAAK;GAGtB,UAAqD;AACzD,KAAI,OAAO,SAAW,IACpB,QAAO;CAGT,IAAM,IAAiB,GAA+B;AAMtD,QALK,IAIS,EAAqB,EAC5B,CAAM,mBAJJ;GAOE,IAAuB,GAA2B,CAC7D,GACG,OAAS;CAYR,mBAAmB;CACnB,aAAa;CACb,QAAQ,EAAE;CACV,OAAO,EAAE;CACT,0BAA0B,EAAE;CAC5B,kBAAkB,EAAE;CACpB,cAAc,EAAE;CAChB,eAAe,EAAE;CACjB,eAAe;CACf,uBAAuB;CACvB,yBAAyB;CACzB,kBAAkB;CAClB,uBAAuB;CACvB,sBAAsB;CACtB,aAAa;CACb,kBAAkB,GAA4B;CAC9C,uBAAuB;CAGvB,uBAAuB,MACrB,EAAI,EAAE,sBAAmB,EAAE,IAAO,uBAAuB;CAE3D,iBAAiB,MACf,EAAI,EAAE,gBAAa,EAAE,IAAO,iBAAiB;CAE/C,6BAA6B,MAC3B,EAAI,EAAE,4BAAyB,EAAE,IAAO,6BAA6B;CAEvE,2BAA2B,MACzB,EAAI,EAAE,0BAAuB,EAAE,IAAO,2BAA2B;CAEnE,YAAY,MACV,GACG,OAAW,EAAE,QAAQ,CAAC,GAAG,EAAM,QAAQ,GAAG,EAAO,EAAE,GACpD,IACA,YACD;CAEH,WAAW,MACT,GACG,OAAW,EAAE,OAAO,CAAC,GAAG,EAAM,OAAO,GAAG,EAAM,EAAE,GACjD,IACA,WACD;CAEH,0BAA0B,MACxB,GACG,MAAU;EACT,IAAM,IAAS,IAAI,IAAI,EAAM,yBAAyB;AAMtD,SALI,EAAO,IAAI,EAAS,GACtB,EAAO,OAAO,EAAS,GAEvB,EAAO,IAAI,EAAS,EAEf,EAAE,0BAA0B,CAAC,GAAG,EAAO,EAAE;IAElD,IACA,0BACD;CAEH,qBAAqB,MACnB,GACG,OAEQ,EAAE,kBAAkB,CAAC,GAAG,IADZ,IAAI,CAAC,GAAG,EAAM,kBAAkB,GAAG,EAAU,CACjC,CAAO,EAAE,GAE1C,IACA,qBACD;CAEH,cAAc,MACZ,GACG,MAAU;EACT,IAAM,IAAU,EAAM,OAAO,IACvB,IAAY,CAAC,GAAG,EAAM,OAAO;AAEnC,SADA,EAAU,OAAO,GAAO,EAAE,EACnB;GACL,QAAQ;GACR,0BAA0B,IACtB,EAAM,yBAAyB,QAC5B,MAAS,MAAS,EAAQ,KAC5B,GACD,EAAM;GACV,kBAAkB,IACd,EAAM,iBAAiB,QAAQ,MAAS,MAAS,EAAQ,KAAK,GAC9D,EAAM;GACX;IAEH,IACA,cACD;CAEH,aAAa,MACX,GACG,MAAU;EACT,IAAM,IAAW,CAAC,GAAG,EAAM,MAAM;AAEjC,SADA,EAAS,OAAO,GAAO,EAAE,EAClB,EAAE,OAAO,GAAU;IAE5B,IACA,aACD;CAEH,mBAAmB,EAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAO,cAAc;CAE5D,kBAAkB,EAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAO,aAAa;CAEzD,qBACE,EACE;EACE,QAAQ,EAAE;EACV,OAAO,EAAE;EACT,0BAA0B,EAAE;EAC5B,kBAAkB,EAAE;EACpB,cAAc,EAAE;EAChB,eAAe,EAAE;EAClB,EACD,IACA,gBACD;CAEH,iBAAiB,MACf,GACG,MACM,EAAM,aAAa,SAAS,EAAS,GAGnC,IAFE,EAAE,cAAc,CAAC,GAAG,EAAM,cAAc,EAAS,EAAE,EAI9D,IACA,iBACD;CAEH,oBAAoB,MAClB,GACG,OAAW,EACV,cAAc,EAAM,aAAa,QAC9B,MAAS,MAAS,EACpB,EACF,GACD,IACA,oBACD;CAEH,kBAAkB,MAChB,GACG,MACM,EAAM,cAAc,SAAS,EAAU,GAGrC,IAFE,EAAE,eAAe,CAAC,GAAG,EAAM,eAAe,EAAU,EAAE,EAIjE,IACA,kBACD;CAEH,qBAAqB,MACnB,GACG,OAAW,EACV,eAAe,EAAM,cAAc,QAChC,MAAS,MAAS,EACpB,EACF,GACD,IACA,qBACD;CAEH,uBACE,EAAI;EAAE,cAAc,EAAE;EAAE,eAAe,EAAE;EAAE,EAAE,IAAO,kBAAkB;CAExE,mBAAmB,MACjB,EACE,EACE,eAAe;EACb;EACA,WAAW,KAAK,KAAK;EACtB,EACF,EACD,IACA,mBACD;CAIH,0BACE,EAAI,EAAE,eAAe,MAAM,EAAE,IAAO,qBAAqB;CAE3D,+BAA+B,MAC7B,EACE,EACE,uBAAuB;EACrB;EACA,WAAW,KAAK,KAAK;EACtB,EACF,EACD,IACA,+BACD;CAEH,kCACE,EACE,EAAE,uBAAuB,MAAM,EAC/B,IACA,6BACD;CAEH,sBAAsB,MACpB,EAAI,EAAE,qBAAkB,EAAE,IAAO,sBAAsB;CAEzD,8BACE,EACE;EACE,uBAAuB;EACvB,kBAAkB,GAA4B;EAC9C,uBAAuB;EACvB,aAAa;EACd,EACD,IACA,yBACD;CAEH,0BAA0B,MACxB,EAAI,EAAE,yBAAsB,EAAE,IAAO,0BAA0B;CAEjE,sBAAsB,MAAqB;EACzC,IAAM,IAAiB,GAA+B;AAItD,EAHI,KACF,EAAqB,GAAgB,EAAE,qBAAkB,CAAC,EAE5D,EAAI,EAAE,qBAAkB,EAAE,IAAO,sBAAsB;;CAGzD,2BAA2B,MACzB,EAAI,EAAE,0BAAuB,EAAE,IAAO,2BAA2B;CAEnE,iBAAiB,MACf,EAAI,EAAE,gBAAa,EAAE,IAAO,iBAAiB;CAChD,GACD,EACE,MAAM,sBACP,CACF,CACF"}
@@ -0,0 +1,2 @@
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../node_modules/zustand/esm/react.cjs`),t=require(`../node_modules/zustand/esm/middleware.cjs`);var n={statusByConversation:{}},r=e.create()(t.devtools(e=>({...n,setStatus:(t,n)=>e(e=>({statusByConversation:{...e.statusByConversation,[t]:n}}))}),{name:`GoalStore`}));exports.useGoalStore=r;
2
+ //# sourceMappingURL=goal-store.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goal-store.cjs","names":[],"sources":["../../src/stores/goal-store.ts"],"sourcesContent":["import { create } from \"zustand\";\nimport { devtools } from \"zustand/middleware\";\nimport { GoalStatus } from \"#/types/agent-server/core/events/conversation-state-event\";\n\ninterface GoalState {\n /** Latest goal status per conversation, fed by goal state-update events. */\n statusByConversation: Record<string, GoalStatus>;\n}\n\ninterface GoalActions {\n /** Replace the latest goal status for a conversation. */\n setStatus: (conversationId: string, status: GoalStatus) => void;\n}\n\ntype GoalStore = GoalState & GoalActions;\n\nconst initialState: GoalState = { statusByConversation: {} };\n\nexport const useGoalStore = create<GoalStore>()(\n devtools(\n (set) => ({\n ...initialState,\n setStatus: (conversationId, status) =>\n set((s) => ({\n statusByConversation: {\n ...s.statusByConversation,\n [conversationId]: status,\n },\n })),\n }),\n { name: \"GoalStore\" },\n ),\n);\n"],"mappings":"8JAgBA,IAAM,EAA0B,CAAE,qBAAsB,EAAE,CAAE,CAE/C,EAAe,EAAA,QAAmB,CAC7C,EAAA,SACG,IAAS,CACR,GAAG,EACH,WAAY,EAAgB,IAC1B,EAAK,IAAO,CACV,qBAAsB,CACpB,GAAG,EAAE,sBACJ,GAAiB,EACnB,CACF,EAAE,CACN,EACD,CAAE,KAAM,YAAa,CACtB,CACF"}
@@ -0,0 +1,28 @@
1
+ import { GoalStatus } from "#/types/agent-server/core/events/conversation-state-event";
2
+ interface GoalState {
3
+ /** Latest goal status per conversation, fed by goal state-update events. */
4
+ statusByConversation: Record<string, GoalStatus>;
5
+ }
6
+ interface GoalActions {
7
+ /** Replace the latest goal status for a conversation. */
8
+ setStatus: (conversationId: string, status: GoalStatus) => void;
9
+ }
10
+ type GoalStore = GoalState & GoalActions;
11
+ export declare const useGoalStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<GoalStore>, "setState" | "devtools"> & {
12
+ setState(partial: GoalStore | Partial<GoalStore> | ((state: GoalStore) => GoalStore | Partial<GoalStore>), replace?: false | undefined, action?: (string | {
13
+ [x: string]: unknown;
14
+ [x: number]: unknown;
15
+ [x: symbol]: unknown;
16
+ type: string;
17
+ }) | undefined): void;
18
+ setState(state: GoalStore | ((state: GoalStore) => GoalStore), replace: true, action?: (string | {
19
+ [x: string]: unknown;
20
+ [x: number]: unknown;
21
+ [x: symbol]: unknown;
22
+ type: string;
23
+ }) | undefined): void;
24
+ devtools: {
25
+ cleanup: () => void;
26
+ };
27
+ }>;
28
+ export {};
@@ -0,0 +1,14 @@
1
+ import { create as e } from "../node_modules/zustand/esm/react.js";
2
+ import { devtools as t } from "../node_modules/zustand/esm/middleware.js";
3
+ //#region src/stores/goal-store.ts
4
+ var n = { statusByConversation: {} }, r = e()(t((e) => ({
5
+ ...n,
6
+ setStatus: (t, n) => e((e) => ({ statusByConversation: {
7
+ ...e.statusByConversation,
8
+ [t]: n
9
+ } }))
10
+ }), { name: "GoalStore" }));
11
+ //#endregion
12
+ export { r as useGoalStore };
13
+
14
+ //# sourceMappingURL=goal-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goal-store.js","names":[],"sources":["../../src/stores/goal-store.ts"],"sourcesContent":["import { create } from \"zustand\";\nimport { devtools } from \"zustand/middleware\";\nimport { GoalStatus } from \"#/types/agent-server/core/events/conversation-state-event\";\n\ninterface GoalState {\n /** Latest goal status per conversation, fed by goal state-update events. */\n statusByConversation: Record<string, GoalStatus>;\n}\n\ninterface GoalActions {\n /** Replace the latest goal status for a conversation. */\n setStatus: (conversationId: string, status: GoalStatus) => void;\n}\n\ntype GoalStore = GoalState & GoalActions;\n\nconst initialState: GoalState = { statusByConversation: {} };\n\nexport const useGoalStore = create<GoalStore>()(\n devtools(\n (set) => ({\n ...initialState,\n setStatus: (conversationId, status) =>\n set((s) => ({\n statusByConversation: {\n ...s.statusByConversation,\n [conversationId]: status,\n },\n })),\n }),\n { name: \"GoalStore\" },\n ),\n);\n"],"mappings":";;;AAgBA,IAAM,IAA0B,EAAE,sBAAsB,EAAE,EAAE,EAE/C,IAAe,GAAmB,CAC7C,GACG,OAAS;CACR,GAAG;CACH,YAAY,GAAgB,MAC1B,GAAK,OAAO,EACV,sBAAsB;EACpB,GAAG,EAAE;GACJ,IAAiB;EACnB,EACF,EAAE;CACN,GACD,EAAE,MAAM,aAAa,CACtB,CACF"}
@@ -1,6 +1,6 @@
1
1
  require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../styles/agent-server-ui-style-scope.cjs`);var t={50:`0 0% 96.86%`,100:`0 0% 92.55%`,200:`0 0% 86.27%`,300:`0 0% 74.51%`,400:`0 0% 59.22%`,500:`0 0% 45.1%`,600:`0 0% 33.73%`,700:`0 0% 25.1%`,800:`0 0% 19.22%`,850:`0 0% 15.69%`,900:`0 0% 12.55%`,950:`0 0% 9.41%`,975:`0 0% 6.27%`},n={"--cool-grey-50":`#F7F7F7`,"--cool-grey-100":`#ECECEC`,"--cool-grey-200":`#DCDCDC`,"--cool-grey-300":`#BEBEBE`,"--cool-grey-400":`#979797`,"--cool-grey-500":`#737373`,"--cool-grey-600":`#565656`,"--cool-grey-700":`#404040`,"--cool-grey-800":`#313131`,"--cool-grey-900":`#282828`,"--cool-grey-925":`#202020`,"--cool-grey-950":`#181818`,"--cool-grey-975":`#101010`},r={"--heroui-background":t[950],"--heroui-background-foreground":t[50],"--heroui-foreground-50":t[975],"--heroui-foreground-100":t[950],"--heroui-foreground-200":t[900],"--heroui-foreground-300":t[850],"--heroui-foreground-400":t[800],"--heroui-foreground-500":t[700],"--heroui-foreground-600":t[600],"--heroui-foreground-700":t[500],"--heroui-foreground-800":t[400],"--heroui-foreground-900":t[300],"--heroui-foreground":t[300],"--heroui-content1":t[900],"--heroui-content1-foreground":t[100],"--heroui-content2":t[850],"--heroui-content2-foreground":t[200],"--heroui-content3":t[800],"--heroui-content3-foreground":t[300],"--heroui-content4":t[700],"--heroui-content4-foreground":t[400],"--heroui-default-50":t[975],"--heroui-default-100":t[950],"--heroui-default-200":t[900],"--heroui-default-300":t[850],"--heroui-default-400":t[800],"--heroui-default-500":t[700],"--heroui-default-600":t[600],"--heroui-default-700":t[500],"--heroui-default-800":t[400],"--heroui-default-900":t[300],"--heroui-default-foreground":t[50],"--heroui-default":t[800]},i=e.AGENT_SERVER_UI_THEMEABLE_BRAND_VARIABLES,a={"openhands-deepsea":{label:`OpenHands-DeepSea`,scale:{"--cool-grey-50":`#F7F9FC`,"--cool-grey-100":`#EEF2F7`,"--cool-grey-200":`#DCE3EE`,"--cool-grey-300":`#C3CDDC`,"--cool-grey-400":`#A3B0C4`,"--cool-grey-500":`#7E8A9E`,"--cool-grey-600":`#626D82`,"--cool-grey-700":`#4B5468`,"--cool-grey-800":`#383F50`,"--cool-grey-900":`#2C313F`,"--cool-grey-925":`#21252F`,"--cool-grey-950":`#0B0E14`,"--cool-grey-975":`#05070A`},heroui:{"--heroui-background":`220 29.03% 6.08%`,"--heroui-background-foreground":`216 45.45% 97.84%`,"--heroui-foreground-50":`216 33.33% 2.94%`,"--heroui-foreground-100":`220 29.03% 6.08%`,"--heroui-foreground-200":`222.86 17.5% 15.69%`,"--heroui-foreground-300":`224.21 17.76% 20.98%`,"--heroui-foreground-400":`222.5 17.65% 26.67%`,"--heroui-foreground-500":`221.38 16.2% 35.1%`,"--heroui-foreground-600":`219.38 14.04% 44.71%`,"--heroui-foreground-700":`217.5 14.16% 55.69%`,"--heroui-foreground-800":`216.36 21.85% 70.39%`,"--heroui-foreground-900":`216 26.32% 81.37%`,"--heroui-foreground":`216 26.32% 81.37%`,"--heroui-content1":`222.86 17.5% 15.69%`,"--heroui-content1-foreground":`213.33 36% 95.1%`,"--heroui-content2":`224.21 17.76% 20.98%`,"--heroui-content2-foreground":`216.67 34.62% 89.8%`,"--heroui-content3":`222.5 17.65% 26.67%`,"--heroui-content3-foreground":`216 26.32% 81.37%`,"--heroui-content4":`221.38 16.2% 35.1%`,"--heroui-content4-foreground":`216.36 21.85% 70.39%`,"--heroui-default-50":`216 33.33% 2.94%`,"--heroui-default-100":`220 29.03% 6.08%`,"--heroui-default-200":`222.86 17.5% 15.69%`,"--heroui-default-300":`224.21 17.76% 20.98%`,"--heroui-default-400":`222.5 17.65% 26.67%`,"--heroui-default-500":`221.38 16.2% 35.1%`,"--heroui-default-600":`219.38 14.04% 44.71%`,"--heroui-default-700":`217.5 14.16% 55.69%`,"--heroui-default-800":`216.36 21.85% 70.39%`,"--heroui-default-900":`216 26.32% 81.37%`,"--heroui-default-foreground":`216 45.45% 97.84%`,"--heroui-default":`222.5 17.65% 26.67%`}},"openhands-neutral":{label:`OpenHands-Neutral`,scale:n,heroui:r},"openhands-neo":{label:`OpenHands-Neo`,scale:n,heroui:r,tokens:{"--oh-color-primary":`#ffffff`,"--oh-accent":`#ffffff`,"--oh-warning":`#ffffff`}}},o=`openhands-neutral`,s=Object.entries(a).map(([e,t])=>({key:e,label:t.label})),c=`openhands-color-theme`;function l(){if(typeof window>`u`)return o;try{let e=window.localStorage.getItem(c);if(e&&e in a)return e}catch{}return o}function u(e){try{window.localStorage.setItem(c,e)}catch{}}var d=`oh-color-theme-override`;function f(e){if(typeof document>`u`)return;let{scale:t,heroui:n,tokens:r={}}=a[e],i=Object.entries(t).map(([e,t])=>` ${e}: ${t};`).join(`
2
2
  `),o=Object.entries(n).map(([e,t])=>` ${e}: ${t};`).join(`
3
- `),s=[`[data-agent-server-ui] {\n${i}\n${o}\n${Object.entries(r).map(([e,t])=>` ${e}: ${t};`).join(`
4
- `)}\n}`,`[data-theme=dark] {\n${o}\n}`].join(`
5
- `),c=document.getElementById(d);c||(c=document.createElement(`style`),c.id=d,document.head.appendChild(c)),c.textContent=s,p(r)}function p(e){let t=document.querySelectorAll(`[data-agent-server-ui]`);for(let n of t)if(n instanceof HTMLElement)for(let t of i){let r=e[t];r?n.style.setProperty(t,r):n.style.removeProperty(t)}}exports.AVAILABLE_COLOR_THEMES=s,exports.applyColorTheme=f,exports.persistColorTheme=u,exports.readPersistedColorTheme=l;
3
+ `),s=[`[data-agent-server-ui][data-agent-server-ui] {\n${i}\n${o}\n${Object.entries(r).map(([e,t])=>` ${e}: ${t};`).join(`
4
+ `)}\n}`,`[data-theme=dark][data-theme=dark] {\n${o}\n}`].join(`
5
+ `),c=document.getElementById(d);c||(c=document.createElement(`style`),c.id=d),c.textContent=s,document.head.appendChild(c),p(r)}function p(e){let t=document.querySelectorAll(`[data-agent-server-ui]`);for(let n of t)if(n instanceof HTMLElement)for(let t of i){let r=e[t];r?n.style.setProperty(t,r):n.style.removeProperty(t)}}exports.AVAILABLE_COLOR_THEMES=s,exports.applyColorTheme=f,exports.persistColorTheme=u,exports.readPersistedColorTheme=l;
6
6
  //# sourceMappingURL=color-themes.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"color-themes.cjs","names":[],"sources":["../../src/themes/color-themes.ts"],"sourcesContent":["export type ColorThemeKey =\n | \"openhands-deepsea\"\n | \"openhands-neutral\"\n | \"openhands-neo\";\n\nexport interface ColorThemeDefinition {\n label: string;\n /** Overrides for --cool-grey-* CSS custom properties (our semantic scale) */\n scale: Record<string, string>;\n /**\n * Overrides for --heroui-* CSS custom properties.\n * HeroUI stores colors as space-separated HSL channels (\"H S% L%\") so Tailwind\n * utilities like bg-default-200 resolve to hsl(var(--heroui-default-200)).\n * These vars are set by the heroui() plugin on :root, [data-theme=dark] at\n * build time, so they must be overridden at the same or lower specificity\n * from a later stylesheet to pick up theme changes at runtime.\n */\n heroui: Record<string, string>;\n /** Overrides for --oh-* semantic tokens such as brand / button colors. */\n tokens?: Record<string, string>;\n}\n\n// HSL channel strings for the neutral grey palette (H=0, S=0%, L=hex/255*100)\n// prettier-ignore\nconst NEUTRAL_HSL = {\n 50: \"0 0% 96.86%\", // #F7F7F7\n 100: \"0 0% 92.55%\", // #ECECEC\n 200: \"0 0% 86.27%\", // #DCDCDC\n 300: \"0 0% 74.51%\", // #BEBEBE\n 400: \"0 0% 59.22%\", // #979797\n 500: \"0 0% 45.1%\", // #737373\n 600: \"0 0% 33.73%\", // #565656\n 700: \"0 0% 25.1%\", // #404040\n 800: \"0 0% 19.22%\", // #313131\n 850: \"0 0% 15.69%\", // #282828\n 900: \"0 0% 12.55%\", // #202020\n 950: \"0 0% 9.41%\", // #181818\n 975: \"0 0% 6.27%\", // #101010\n};\n\nconst NEUTRAL_SCALE = {\n \"--cool-grey-50\": \"#F7F7F7\",\n \"--cool-grey-100\": \"#ECECEC\",\n \"--cool-grey-200\": \"#DCDCDC\",\n \"--cool-grey-300\": \"#BEBEBE\",\n \"--cool-grey-400\": \"#979797\",\n \"--cool-grey-500\": \"#737373\",\n \"--cool-grey-600\": \"#565656\",\n \"--cool-grey-700\": \"#404040\",\n \"--cool-grey-800\": \"#313131\",\n \"--cool-grey-900\": \"#282828\",\n \"--cool-grey-925\": \"#202020\",\n \"--cool-grey-950\": \"#181818\",\n \"--cool-grey-975\": \"#101010\",\n};\n\nconst NEUTRAL_HEROUI = {\n \"--heroui-background\": NEUTRAL_HSL[950],\n \"--heroui-background-foreground\": NEUTRAL_HSL[50],\n \"--heroui-foreground-50\": NEUTRAL_HSL[975],\n \"--heroui-foreground-100\": NEUTRAL_HSL[950],\n \"--heroui-foreground-200\": NEUTRAL_HSL[900],\n \"--heroui-foreground-300\": NEUTRAL_HSL[850],\n \"--heroui-foreground-400\": NEUTRAL_HSL[800],\n \"--heroui-foreground-500\": NEUTRAL_HSL[700],\n \"--heroui-foreground-600\": NEUTRAL_HSL[600],\n \"--heroui-foreground-700\": NEUTRAL_HSL[500],\n \"--heroui-foreground-800\": NEUTRAL_HSL[400],\n \"--heroui-foreground-900\": NEUTRAL_HSL[300],\n \"--heroui-foreground\": NEUTRAL_HSL[300],\n \"--heroui-content1\": NEUTRAL_HSL[900],\n \"--heroui-content1-foreground\": NEUTRAL_HSL[100],\n \"--heroui-content2\": NEUTRAL_HSL[850],\n \"--heroui-content2-foreground\": NEUTRAL_HSL[200],\n \"--heroui-content3\": NEUTRAL_HSL[800],\n \"--heroui-content3-foreground\": NEUTRAL_HSL[300],\n \"--heroui-content4\": NEUTRAL_HSL[700],\n \"--heroui-content4-foreground\": NEUTRAL_HSL[400],\n \"--heroui-default-50\": NEUTRAL_HSL[975],\n \"--heroui-default-100\": NEUTRAL_HSL[950],\n \"--heroui-default-200\": NEUTRAL_HSL[900],\n \"--heroui-default-300\": NEUTRAL_HSL[850],\n \"--heroui-default-400\": NEUTRAL_HSL[800],\n \"--heroui-default-500\": NEUTRAL_HSL[700],\n \"--heroui-default-600\": NEUTRAL_HSL[600],\n \"--heroui-default-700\": NEUTRAL_HSL[500],\n \"--heroui-default-800\": NEUTRAL_HSL[400],\n \"--heroui-default-900\": NEUTRAL_HSL[300],\n \"--heroui-default-foreground\": NEUTRAL_HSL[50],\n \"--heroui-default\": NEUTRAL_HSL[800],\n};\n\nimport { AGENT_SERVER_UI_THEMEABLE_BRAND_VARIABLES } from \"#/styles/agent-server-ui-style-scope\";\n\n/** CSS custom properties overridden by color themes (see applyColorTheme). */\nexport const COLOR_THEME_TOKEN_KEYS = AGENT_SERVER_UI_THEMEABLE_BRAND_VARIABLES;\n\n/** White primary/accent tokens — used by OpenHands-Neo for button surfaces. */\nconst NEO_WHITE_BUTTON_TOKENS: Record<\n (typeof COLOR_THEME_TOKEN_KEYS)[number],\n string\n> = {\n \"--oh-color-primary\": \"#ffffff\",\n \"--oh-accent\": \"#ffffff\",\n \"--oh-warning\": \"#ffffff\",\n};\n\nexport const COLOR_THEMES: Record<ColorThemeKey, ColorThemeDefinition> = {\n \"openhands-deepsea\": {\n label: \"OpenHands-DeepSea\",\n // Matches the values already set by index.css; included so switching back\n // from another theme restores the original palette explicitly.\n scale: {\n \"--cool-grey-50\": \"#F7F9FC\",\n \"--cool-grey-100\": \"#EEF2F7\",\n \"--cool-grey-200\": \"#DCE3EE\",\n \"--cool-grey-300\": \"#C3CDDC\",\n \"--cool-grey-400\": \"#A3B0C4\",\n \"--cool-grey-500\": \"#7E8A9E\",\n \"--cool-grey-600\": \"#626D82\",\n \"--cool-grey-700\": \"#4B5468\",\n \"--cool-grey-800\": \"#383F50\",\n \"--cool-grey-900\": \"#2C313F\",\n \"--cool-grey-925\": \"#21252F\",\n \"--cool-grey-950\": \"#0B0E14\",\n \"--cool-grey-975\": \"#05070A\",\n },\n // Values generated by heroui() from hero.ts — restore them explicitly when\n // switching back from another theme.\n heroui: {\n \"--heroui-background\": \"220 29.03% 6.08%\",\n \"--heroui-background-foreground\": \"216 45.45% 97.84%\",\n \"--heroui-foreground-50\": \"216 33.33% 2.94%\",\n \"--heroui-foreground-100\": \"220 29.03% 6.08%\",\n \"--heroui-foreground-200\": \"222.86 17.5% 15.69%\",\n \"--heroui-foreground-300\": \"224.21 17.76% 20.98%\",\n \"--heroui-foreground-400\": \"222.5 17.65% 26.67%\",\n \"--heroui-foreground-500\": \"221.38 16.2% 35.1%\",\n \"--heroui-foreground-600\": \"219.38 14.04% 44.71%\",\n \"--heroui-foreground-700\": \"217.5 14.16% 55.69%\",\n \"--heroui-foreground-800\": \"216.36 21.85% 70.39%\",\n \"--heroui-foreground-900\": \"216 26.32% 81.37%\",\n \"--heroui-foreground\": \"216 26.32% 81.37%\",\n \"--heroui-content1\": \"222.86 17.5% 15.69%\",\n \"--heroui-content1-foreground\": \"213.33 36% 95.1%\",\n \"--heroui-content2\": \"224.21 17.76% 20.98%\",\n \"--heroui-content2-foreground\": \"216.67 34.62% 89.8%\",\n \"--heroui-content3\": \"222.5 17.65% 26.67%\",\n \"--heroui-content3-foreground\": \"216 26.32% 81.37%\",\n \"--heroui-content4\": \"221.38 16.2% 35.1%\",\n \"--heroui-content4-foreground\": \"216.36 21.85% 70.39%\",\n \"--heroui-default-50\": \"216 33.33% 2.94%\",\n \"--heroui-default-100\": \"220 29.03% 6.08%\",\n \"--heroui-default-200\": \"222.86 17.5% 15.69%\",\n \"--heroui-default-300\": \"224.21 17.76% 20.98%\",\n \"--heroui-default-400\": \"222.5 17.65% 26.67%\",\n \"--heroui-default-500\": \"221.38 16.2% 35.1%\",\n \"--heroui-default-600\": \"219.38 14.04% 44.71%\",\n \"--heroui-default-700\": \"217.5 14.16% 55.69%\",\n \"--heroui-default-800\": \"216.36 21.85% 70.39%\",\n \"--heroui-default-900\": \"216 26.32% 81.37%\",\n \"--heroui-default-foreground\": \"216 45.45% 97.84%\",\n \"--heroui-default\": \"222.5 17.65% 26.67%\",\n },\n },\n\n \"openhands-neutral\": {\n label: \"OpenHands-Neutral\",\n scale: NEUTRAL_SCALE,\n // Each stop follows the same positional mapping as hero.ts:\n // heroui-default-100 ← cool-grey-950 position ← neutral-950 (#181818)\n // heroui-default-200 ← cool-grey-925 position ← neutral-900 (#202020)\n // ...etc.\n heroui: NEUTRAL_HEROUI,\n },\n\n \"openhands-neo\": {\n label: \"OpenHands-Neo\",\n scale: NEUTRAL_SCALE,\n heroui: NEUTRAL_HEROUI,\n tokens: NEO_WHITE_BUTTON_TOKENS,\n },\n};\n\nexport const DEFAULT_COLOR_THEME: ColorThemeKey = \"openhands-neutral\";\n\nexport const AVAILABLE_COLOR_THEMES = Object.entries(COLOR_THEMES).map(\n ([key, def]) => ({ key: key as ColorThemeKey, label: def.label }),\n);\n\nconst STORAGE_KEY = \"openhands-color-theme\";\n\n/** Read the persisted theme key from localStorage, falling back to the default. */\nexport function readPersistedColorTheme(): ColorThemeKey {\n if (typeof window === \"undefined\") return DEFAULT_COLOR_THEME;\n try {\n const stored = window.localStorage.getItem(STORAGE_KEY);\n if (stored && stored in COLOR_THEMES) return stored as ColorThemeKey;\n } catch {\n // ignore quota / privacy-mode failures\n }\n return DEFAULT_COLOR_THEME;\n}\n\n/** Persist the theme key to localStorage. */\nexport function persistColorTheme(key: ColorThemeKey): void {\n try {\n window.localStorage.setItem(STORAGE_KEY, key);\n } catch {\n // ignore\n }\n}\n\nconst THEME_STYLE_TAG_ID = \"oh-color-theme-override\";\n\n/**\n * Apply a theme by injecting (or replacing) a <style> tag that overrides\n * both our custom --cool-grey-* primitives and HeroUI's --heroui-* tokens.\n *\n * Why a <style> tag:\n * PostCSS transforms :root / body to [data-agent-server-ui], so --cool-grey-*\n * is set on EVERY element carrying that attribute. A body inline-style only\n * overrides body itself — inner matching elements keep the stylesheet value.\n * Injecting a stylesheet appended to <head> wins on equal specificity because\n * later sheets take precedence in the cascade.\n *\n * Why heroui variables:\n * HeroUI stores colors as HSL channels in --heroui-* vars on [data-theme=dark].\n * They reference their own token system and are unaffected by --cool-grey-*\n * changes, so we override them from the same injected sheet.\n */\nexport function applyColorTheme(key: ColorThemeKey): void {\n if (typeof document === \"undefined\") return;\n const { scale, heroui, tokens = {} } = COLOR_THEMES[key];\n\n const scaleDecls = Object.entries(scale)\n .map(([p, v]) => ` ${p}: ${v};`)\n .join(\"\\n\");\n\n const herouiDecls = Object.entries(heroui)\n .map(([p, v]) => ` ${p}: ${v};`)\n .join(\"\\n\");\n\n const tokenDecls = Object.entries(tokens)\n .map(([p, v]) => ` ${p}: ${v};`)\n .join(\"\\n\");\n\n // Target both selectors for heroui vars:\n // [data-agent-server-ui] — covers document.body (portal destination) so\n // portalled popover/listbox content inherits the overridden values.\n // [data-theme=dark] — covers the inner AgentServerUIRoot wrapper so\n // components scoped inside the dark theme wrapper also pick them up.\n const css = [\n `[data-agent-server-ui] {\\n${scaleDecls}\\n${herouiDecls}\\n${tokenDecls}\\n}`,\n `[data-theme=dark] {\\n${herouiDecls}\\n}`,\n ].join(\"\\n\");\n\n let styleEl = document.getElementById(\n THEME_STYLE_TAG_ID,\n ) as HTMLStyleElement | null;\n if (!styleEl) {\n styleEl = document.createElement(\"style\");\n styleEl.id = THEME_STYLE_TAG_ID;\n document.head.appendChild(styleEl);\n }\n styleEl.textContent = css;\n\n syncColorThemeTokensOnScopeRoots(tokens);\n}\n\nfunction syncColorThemeTokensOnScopeRoots(\n tokens: Record<string, string>,\n): void {\n const roots = document.querySelectorAll(\"[data-agent-server-ui]\");\n for (const root of roots) {\n if (!(root instanceof HTMLElement)) continue;\n\n for (const key of COLOR_THEME_TOKEN_KEYS) {\n const value = tokens[key];\n if (value) {\n root.style.setProperty(key, value);\n } else {\n root.style.removeProperty(key);\n }\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"color-themes.cjs","names":[],"sources":["../../src/themes/color-themes.ts"],"sourcesContent":["export type ColorThemeKey =\n | \"openhands-deepsea\"\n | \"openhands-neutral\"\n | \"openhands-neo\";\n\nexport interface ColorThemeDefinition {\n label: string;\n /** Overrides for --cool-grey-* CSS custom properties (our semantic scale) */\n scale: Record<string, string>;\n /**\n * Overrides for --heroui-* CSS custom properties.\n * HeroUI stores colors as space-separated HSL channels (\"H S% L%\") so Tailwind\n * utilities like bg-default-200 resolve to hsl(var(--heroui-default-200)).\n * These vars are set by the heroui() plugin on :root, [data-theme=dark] at\n * build time, so they must be overridden at the same or lower specificity\n * from a later stylesheet to pick up theme changes at runtime.\n */\n heroui: Record<string, string>;\n /** Overrides for --oh-* semantic tokens such as brand / button colors. */\n tokens?: Record<string, string>;\n}\n\n// HSL channel strings for the neutral grey palette (H=0, S=0%, L=hex/255*100)\n// prettier-ignore\nconst NEUTRAL_HSL = {\n 50: \"0 0% 96.86%\", // #F7F7F7\n 100: \"0 0% 92.55%\", // #ECECEC\n 200: \"0 0% 86.27%\", // #DCDCDC\n 300: \"0 0% 74.51%\", // #BEBEBE\n 400: \"0 0% 59.22%\", // #979797\n 500: \"0 0% 45.1%\", // #737373\n 600: \"0 0% 33.73%\", // #565656\n 700: \"0 0% 25.1%\", // #404040\n 800: \"0 0% 19.22%\", // #313131\n 850: \"0 0% 15.69%\", // #282828\n 900: \"0 0% 12.55%\", // #202020\n 950: \"0 0% 9.41%\", // #181818\n 975: \"0 0% 6.27%\", // #101010\n};\n\nconst NEUTRAL_SCALE = {\n \"--cool-grey-50\": \"#F7F7F7\",\n \"--cool-grey-100\": \"#ECECEC\",\n \"--cool-grey-200\": \"#DCDCDC\",\n \"--cool-grey-300\": \"#BEBEBE\",\n \"--cool-grey-400\": \"#979797\",\n \"--cool-grey-500\": \"#737373\",\n \"--cool-grey-600\": \"#565656\",\n \"--cool-grey-700\": \"#404040\",\n \"--cool-grey-800\": \"#313131\",\n \"--cool-grey-900\": \"#282828\",\n \"--cool-grey-925\": \"#202020\",\n \"--cool-grey-950\": \"#181818\",\n \"--cool-grey-975\": \"#101010\",\n};\n\nconst NEUTRAL_HEROUI = {\n \"--heroui-background\": NEUTRAL_HSL[950],\n \"--heroui-background-foreground\": NEUTRAL_HSL[50],\n \"--heroui-foreground-50\": NEUTRAL_HSL[975],\n \"--heroui-foreground-100\": NEUTRAL_HSL[950],\n \"--heroui-foreground-200\": NEUTRAL_HSL[900],\n \"--heroui-foreground-300\": NEUTRAL_HSL[850],\n \"--heroui-foreground-400\": NEUTRAL_HSL[800],\n \"--heroui-foreground-500\": NEUTRAL_HSL[700],\n \"--heroui-foreground-600\": NEUTRAL_HSL[600],\n \"--heroui-foreground-700\": NEUTRAL_HSL[500],\n \"--heroui-foreground-800\": NEUTRAL_HSL[400],\n \"--heroui-foreground-900\": NEUTRAL_HSL[300],\n \"--heroui-foreground\": NEUTRAL_HSL[300],\n \"--heroui-content1\": NEUTRAL_HSL[900],\n \"--heroui-content1-foreground\": NEUTRAL_HSL[100],\n \"--heroui-content2\": NEUTRAL_HSL[850],\n \"--heroui-content2-foreground\": NEUTRAL_HSL[200],\n \"--heroui-content3\": NEUTRAL_HSL[800],\n \"--heroui-content3-foreground\": NEUTRAL_HSL[300],\n \"--heroui-content4\": NEUTRAL_HSL[700],\n \"--heroui-content4-foreground\": NEUTRAL_HSL[400],\n \"--heroui-default-50\": NEUTRAL_HSL[975],\n \"--heroui-default-100\": NEUTRAL_HSL[950],\n \"--heroui-default-200\": NEUTRAL_HSL[900],\n \"--heroui-default-300\": NEUTRAL_HSL[850],\n \"--heroui-default-400\": NEUTRAL_HSL[800],\n \"--heroui-default-500\": NEUTRAL_HSL[700],\n \"--heroui-default-600\": NEUTRAL_HSL[600],\n \"--heroui-default-700\": NEUTRAL_HSL[500],\n \"--heroui-default-800\": NEUTRAL_HSL[400],\n \"--heroui-default-900\": NEUTRAL_HSL[300],\n \"--heroui-default-foreground\": NEUTRAL_HSL[50],\n \"--heroui-default\": NEUTRAL_HSL[800],\n};\n\nimport { AGENT_SERVER_UI_THEMEABLE_BRAND_VARIABLES } from \"#/styles/agent-server-ui-style-scope\";\n\n/** CSS custom properties overridden by color themes (see applyColorTheme). */\nexport const COLOR_THEME_TOKEN_KEYS = AGENT_SERVER_UI_THEMEABLE_BRAND_VARIABLES;\n\n/** White primary/accent tokens — used by OpenHands-Neo for button surfaces. */\nconst NEO_WHITE_BUTTON_TOKENS: Record<\n (typeof COLOR_THEME_TOKEN_KEYS)[number],\n string\n> = {\n \"--oh-color-primary\": \"#ffffff\",\n \"--oh-accent\": \"#ffffff\",\n \"--oh-warning\": \"#ffffff\",\n};\n\nexport const COLOR_THEMES: Record<ColorThemeKey, ColorThemeDefinition> = {\n \"openhands-deepsea\": {\n label: \"OpenHands-DeepSea\",\n // Matches the values already set by index.css; included so switching back\n // from another theme restores the original palette explicitly.\n scale: {\n \"--cool-grey-50\": \"#F7F9FC\",\n \"--cool-grey-100\": \"#EEF2F7\",\n \"--cool-grey-200\": \"#DCE3EE\",\n \"--cool-grey-300\": \"#C3CDDC\",\n \"--cool-grey-400\": \"#A3B0C4\",\n \"--cool-grey-500\": \"#7E8A9E\",\n \"--cool-grey-600\": \"#626D82\",\n \"--cool-grey-700\": \"#4B5468\",\n \"--cool-grey-800\": \"#383F50\",\n \"--cool-grey-900\": \"#2C313F\",\n \"--cool-grey-925\": \"#21252F\",\n \"--cool-grey-950\": \"#0B0E14\",\n \"--cool-grey-975\": \"#05070A\",\n },\n // Values generated by heroui() from hero.ts — restore them explicitly when\n // switching back from another theme.\n heroui: {\n \"--heroui-background\": \"220 29.03% 6.08%\",\n \"--heroui-background-foreground\": \"216 45.45% 97.84%\",\n \"--heroui-foreground-50\": \"216 33.33% 2.94%\",\n \"--heroui-foreground-100\": \"220 29.03% 6.08%\",\n \"--heroui-foreground-200\": \"222.86 17.5% 15.69%\",\n \"--heroui-foreground-300\": \"224.21 17.76% 20.98%\",\n \"--heroui-foreground-400\": \"222.5 17.65% 26.67%\",\n \"--heroui-foreground-500\": \"221.38 16.2% 35.1%\",\n \"--heroui-foreground-600\": \"219.38 14.04% 44.71%\",\n \"--heroui-foreground-700\": \"217.5 14.16% 55.69%\",\n \"--heroui-foreground-800\": \"216.36 21.85% 70.39%\",\n \"--heroui-foreground-900\": \"216 26.32% 81.37%\",\n \"--heroui-foreground\": \"216 26.32% 81.37%\",\n \"--heroui-content1\": \"222.86 17.5% 15.69%\",\n \"--heroui-content1-foreground\": \"213.33 36% 95.1%\",\n \"--heroui-content2\": \"224.21 17.76% 20.98%\",\n \"--heroui-content2-foreground\": \"216.67 34.62% 89.8%\",\n \"--heroui-content3\": \"222.5 17.65% 26.67%\",\n \"--heroui-content3-foreground\": \"216 26.32% 81.37%\",\n \"--heroui-content4\": \"221.38 16.2% 35.1%\",\n \"--heroui-content4-foreground\": \"216.36 21.85% 70.39%\",\n \"--heroui-default-50\": \"216 33.33% 2.94%\",\n \"--heroui-default-100\": \"220 29.03% 6.08%\",\n \"--heroui-default-200\": \"222.86 17.5% 15.69%\",\n \"--heroui-default-300\": \"224.21 17.76% 20.98%\",\n \"--heroui-default-400\": \"222.5 17.65% 26.67%\",\n \"--heroui-default-500\": \"221.38 16.2% 35.1%\",\n \"--heroui-default-600\": \"219.38 14.04% 44.71%\",\n \"--heroui-default-700\": \"217.5 14.16% 55.69%\",\n \"--heroui-default-800\": \"216.36 21.85% 70.39%\",\n \"--heroui-default-900\": \"216 26.32% 81.37%\",\n \"--heroui-default-foreground\": \"216 45.45% 97.84%\",\n \"--heroui-default\": \"222.5 17.65% 26.67%\",\n },\n },\n\n \"openhands-neutral\": {\n label: \"OpenHands-Neutral\",\n scale: NEUTRAL_SCALE,\n // Each stop follows the same positional mapping as hero.ts:\n // heroui-default-100 ← cool-grey-950 position ← neutral-950 (#181818)\n // heroui-default-200 ← cool-grey-925 position ← neutral-900 (#202020)\n // ...etc.\n heroui: NEUTRAL_HEROUI,\n },\n\n \"openhands-neo\": {\n label: \"OpenHands-Neo\",\n scale: NEUTRAL_SCALE,\n heroui: NEUTRAL_HEROUI,\n tokens: NEO_WHITE_BUTTON_TOKENS,\n },\n};\n\nexport const DEFAULT_COLOR_THEME: ColorThemeKey = \"openhands-neutral\";\n\nexport const AVAILABLE_COLOR_THEMES = Object.entries(COLOR_THEMES).map(\n ([key, def]) => ({ key: key as ColorThemeKey, label: def.label }),\n);\n\nconst STORAGE_KEY = \"openhands-color-theme\";\n\n/** Read the persisted theme key from localStorage, falling back to the default. */\nexport function readPersistedColorTheme(): ColorThemeKey {\n if (typeof window === \"undefined\") return DEFAULT_COLOR_THEME;\n try {\n const stored = window.localStorage.getItem(STORAGE_KEY);\n if (stored && stored in COLOR_THEMES) return stored as ColorThemeKey;\n } catch {\n // ignore quota / privacy-mode failures\n }\n return DEFAULT_COLOR_THEME;\n}\n\n/** Persist the theme key to localStorage. */\nexport function persistColorTheme(key: ColorThemeKey): void {\n try {\n window.localStorage.setItem(STORAGE_KEY, key);\n } catch {\n // ignore\n }\n}\n\nconst THEME_STYLE_TAG_ID = \"oh-color-theme-override\";\n\n/**\n * Apply a theme by injecting (or replacing) a <style> tag that overrides\n * both our custom --cool-grey-* primitives and HeroUI's --heroui-* tokens.\n *\n * Why a <style> tag:\n * PostCSS transforms :root / body to [data-agent-server-ui], so --cool-grey-*\n * is set on EVERY element carrying that attribute. A body inline-style only\n * overrides body itself — inner matching elements keep the stylesheet value.\n *\n * Why heroui variables:\n * HeroUI stores colors as HSL channels in --heroui-* vars on [data-theme=dark].\n * They reference their own token system and are unaffected by --cool-grey-*\n * changes, so we override them from the same injected sheet.\n *\n * Why doubled selectors + re-append on every call:\n * \"Later sheet wins the tie\" cannot be relied on: in the built SPA\n * (ssr:false, prerendered shell) React 19 re-creates the <head> elements it\n * manages (<Meta/>/<Links/>) whenever the tree above the router remounts —\n * e.g. PostHogWrapper swapping in <PostHogProvider> once the analytics key\n * resolves, which only happens in builds with VITE_POSTHOG_CLIENT_KEY baked\n * (the published npm package / tagged Docker images). That re-inserts the\n * base stylesheet <link> AFTER this tag, which would let the base sheet's\n * unlayered [data-agent-server-ui] variable rules (0,1,0) win every tie.\n * Doubling the attribute selectors ([x][x], 0,2,0) beats them from any\n * position in <head>; re-appending on each apply keeps document order\n * favorable as well.\n */\nexport function applyColorTheme(key: ColorThemeKey): void {\n if (typeof document === \"undefined\") return;\n const { scale, heroui, tokens = {} } = COLOR_THEMES[key];\n\n const scaleDecls = Object.entries(scale)\n .map(([p, v]) => ` ${p}: ${v};`)\n .join(\"\\n\");\n\n const herouiDecls = Object.entries(heroui)\n .map(([p, v]) => ` ${p}: ${v};`)\n .join(\"\\n\");\n\n const tokenDecls = Object.entries(tokens)\n .map(([p, v]) => ` ${p}: ${v};`)\n .join(\"\\n\");\n\n // Target both selectors for heroui vars:\n // [data-agent-server-ui] — covers document.body (portal destination) so\n // portalled popover/listbox content inherits the overridden values.\n // [data-theme=dark] — covers the inner AgentServerUIRoot wrapper so\n // components scoped inside the dark theme wrapper also pick them up.\n // Both are doubled to out-specify the base sheet regardless of stylesheet\n // order (see the doc comment above).\n const css = [\n `[data-agent-server-ui][data-agent-server-ui] {\\n${scaleDecls}\\n${herouiDecls}\\n${tokenDecls}\\n}`,\n `[data-theme=dark][data-theme=dark] {\\n${herouiDecls}\\n}`,\n ].join(\"\\n\");\n\n let styleEl = document.getElementById(\n THEME_STYLE_TAG_ID,\n ) as HTMLStyleElement | null;\n if (!styleEl) {\n styleEl = document.createElement(\"style\");\n styleEl.id = THEME_STYLE_TAG_ID;\n }\n styleEl.textContent = css;\n // Re-append even when the tag already exists (appendChild relocates a\n // connected node) so the override also stays after any re-inserted <link>.\n document.head.appendChild(styleEl);\n\n syncColorThemeTokensOnScopeRoots(tokens);\n}\n\nfunction syncColorThemeTokensOnScopeRoots(\n tokens: Record<string, string>,\n): void {\n const roots = document.querySelectorAll(\"[data-agent-server-ui]\");\n for (const root of roots) {\n if (!(root instanceof HTMLElement)) continue;\n\n for (const key of COLOR_THEME_TOKEN_KEYS) {\n const value = tokens[key];\n if (value) {\n root.style.setProperty(key, value);\n } else {\n root.style.removeProperty(key);\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -35,12 +35,23 @@ export declare function persistColorTheme(key: ColorThemeKey): void;
35
35
  * PostCSS transforms :root / body to [data-agent-server-ui], so --cool-grey-*
36
36
  * is set on EVERY element carrying that attribute. A body inline-style only
37
37
  * overrides body itself — inner matching elements keep the stylesheet value.
38
- * Injecting a stylesheet appended to <head> wins on equal specificity because
39
- * later sheets take precedence in the cascade.
40
38
  *
41
39
  * Why heroui variables:
42
40
  * HeroUI stores colors as HSL channels in --heroui-* vars on [data-theme=dark].
43
41
  * They reference their own token system and are unaffected by --cool-grey-*
44
42
  * changes, so we override them from the same injected sheet.
43
+ *
44
+ * Why doubled selectors + re-append on every call:
45
+ * "Later sheet wins the tie" cannot be relied on: in the built SPA
46
+ * (ssr:false, prerendered shell) React 19 re-creates the <head> elements it
47
+ * manages (<Meta/>/<Links/>) whenever the tree above the router remounts —
48
+ * e.g. PostHogWrapper swapping in <PostHogProvider> once the analytics key
49
+ * resolves, which only happens in builds with VITE_POSTHOG_CLIENT_KEY baked
50
+ * (the published npm package / tagged Docker images). That re-inserts the
51
+ * base stylesheet <link> AFTER this tag, which would let the base sheet's
52
+ * unlayered [data-agent-server-ui] variable rules (0,1,0) win every tie.
53
+ * Doubling the attribute selectors ([x][x], 0,2,0) beats them from any
54
+ * position in <head>; re-appending on each apply keeps document order
55
+ * favorable as well.
45
56
  */
46
57
  export declare function applyColorTheme(key: ColorThemeKey): void;
@@ -151,8 +151,8 @@ function u(e) {
151
151
  var d = "oh-color-theme-override";
152
152
  function f(e) {
153
153
  if (typeof document > "u") return;
154
- let { scale: t, heroui: n, tokens: r = {} } = a[e], i = Object.entries(t).map(([e, t]) => ` ${e}: ${t};`).join("\n"), o = Object.entries(n).map(([e, t]) => ` ${e}: ${t};`).join("\n"), s = [`[data-agent-server-ui] {\n${i}\n${o}\n${Object.entries(r).map(([e, t]) => ` ${e}: ${t};`).join("\n")}\n}`, `[data-theme=dark] {\n${o}\n}`].join("\n"), c = document.getElementById(d);
155
- c || (c = document.createElement("style"), c.id = d, document.head.appendChild(c)), c.textContent = s, p(r);
154
+ let { scale: t, heroui: n, tokens: r = {} } = a[e], i = Object.entries(t).map(([e, t]) => ` ${e}: ${t};`).join("\n"), o = Object.entries(n).map(([e, t]) => ` ${e}: ${t};`).join("\n"), s = [`[data-agent-server-ui][data-agent-server-ui] {\n${i}\n${o}\n${Object.entries(r).map(([e, t]) => ` ${e}: ${t};`).join("\n")}\n}`, `[data-theme=dark][data-theme=dark] {\n${o}\n}`].join("\n"), c = document.getElementById(d);
155
+ c || (c = document.createElement("style"), c.id = d), c.textContent = s, document.head.appendChild(c), p(r);
156
156
  }
157
157
  function p(e) {
158
158
  let t = document.querySelectorAll("[data-agent-server-ui]");