@openhands/agent-canvas 1.15.0 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1277) hide show
  1. package/README.md +15 -1
  2. package/README.windows.md +2 -2
  3. package/build/assets/{acp-providers-BKvmTf82.js → acp-providers-DrjNsPOH.js} +1 -1
  4. package/build/assets/active-backend-context-rZiLJRUc.js +2 -0
  5. package/build/assets/{agent-context-settings-D3PjSTU1.js → agent-context-settings-CJUrcBut.js} +1 -1
  6. package/build/assets/agent-profiles-service.api-Biieml2L.js +1 -0
  7. package/build/assets/agent-profiles-settings-x6RvPsq7.js +1 -0
  8. package/build/assets/agent-server-client-options-BikiNwTa.js +1 -0
  9. package/build/assets/agent-server-conversation-service.api-DYFsNHKf.js +88 -0
  10. package/build/assets/agent-settings-BJyovpJ_.js +1 -0
  11. package/build/assets/agent-settings-CpY3zObk.js +2 -0
  12. package/build/assets/alert-banner-vARz1idS.js +1 -0
  13. package/build/assets/{api-error-message-BJyfWp6p.js → api-error-message-Ve79qDcN.js} +1 -1
  14. package/build/assets/api-key-entry-screen-CsMuBhoP.js +1 -0
  15. package/build/assets/{app-settings-CbHqzQus.js → app-settings-BaJ7nfHt.js} +1 -1
  16. package/build/assets/automation-detail-CVoGDrKq.js +3 -0
  17. package/build/assets/{automation-export-BRopEHMu.js → automation-export-DxY47m3T.js} +1 -1
  18. package/build/assets/automation-git-sync-CRMP9Bbm.js +1 -0
  19. package/build/assets/automation-setup-route-072beLz1.js +3 -0
  20. package/build/assets/{automation-templates-C_0FZgLG.js → automation-templates-4C4PM8K7.js} +1 -1
  21. package/build/assets/automations-list-xuqTSQL4.js +1 -0
  22. package/build/assets/{back-nav-button-Dm9tIjVf.js → back-nav-button-B8tH0BEp.js} +1 -1
  23. package/build/assets/backend-form-modal-0aJmWdsa.js +1 -0
  24. package/build/assets/{backend-synced-settings-badge-3fOwg6Bd.js → backend-synced-settings-badge-B7rKWBir.js} +1 -1
  25. package/build/assets/{badge-D4SqUCsR.js → badge-CcGx2TaV.js} +1 -1
  26. package/build/assets/{base-modal-C7_BDl_U.js → base-modal-DTULovNc.js} +1 -1
  27. package/build/assets/bot-CLMxGFaq.js +1 -0
  28. package/build/assets/{brand-button-Dxv6PDeN.js → brand-button-DxPO4Lf8.js} +1 -1
  29. package/build/assets/browser-C-_qBasq.js +46 -0
  30. package/build/assets/{browser-tab-BAl4ckJE.js → browser-tab-DZanIw5m.js} +1 -1
  31. package/build/assets/canvas-extension-page-o_cWgE9B.js +1 -0
  32. package/build/assets/canvas-extensions-DSgNlCha.js +1 -0
  33. package/build/assets/canvas-extensions-runtime-DdnkgJXV.js +1 -0
  34. package/build/assets/{chat-send-button-DWwR2cgI.js → chat-send-button-B3SFSIg5.js} +1 -1
  35. package/build/assets/check-fDEfgSzj.js +1 -0
  36. package/build/assets/chevron-down-CFrWHqu8.js +1 -0
  37. package/build/assets/chevron-right-C5roOrJu.js +1 -0
  38. package/build/assets/circle-check-ClTzJTdb.js +1 -0
  39. package/build/assets/{circle-plus-check-toggle-CBh_qomE.js → circle-plus-check-toggle-Fr-h-mbL.js} +1 -1
  40. package/build/assets/{cloud-funnel-analytics-287iIERo.js → cloud-funnel-analytics-BQanUEEC.js} +1 -1
  41. package/build/assets/{cog-C4rrw-ZK.js → cog-VBlRo6iw.js} +1 -1
  42. package/build/assets/command-menu-BT3Ia5Ru.js +1 -0
  43. package/build/assets/commits-tab-2jhtaohl.js +1 -0
  44. package/build/assets/{condenser-settings-BcNmYR4s.js → condenser-settings-eVKFMvap.js} +1 -1
  45. package/build/assets/confirmation-modal-gIFHeZt6.js +1 -0
  46. package/build/assets/{context-menu-list-item-lVYETtY5.js → context-menu-list-item-DDROe12Z.js} +1 -1
  47. package/build/assets/conversation-BnjJSFf5.js +93 -0
  48. package/build/assets/conversation-DZ578rOX.js +1 -0
  49. package/build/assets/conversation-panel-DZ578rOX.js +1 -0
  50. package/build/assets/conversation-state-store-D1_G_9I-.js +1 -0
  51. package/build/assets/{conversation-store-Ca3ghXap.js → conversation-store-DVVfkCsk.js} +1 -1
  52. package/build/assets/{conversation-tab-empty-state-HJtkmHZj.js → conversation-tab-empty-state-DKlzAz5c.js} +1 -1
  53. package/build/assets/{copy-to-clipboard-button-Cjkswvnj.js → copy-to-clipboard-button-B3w0X7WH.js} +1 -1
  54. package/build/assets/{device-verify-EZhHhBT7.js → device-verify-BfkCzyFB.js} +1 -1
  55. package/build/assets/{dropdown-classes-DJe-E6MC.js → dropdown-classes-B9kJVDIk.js} +1 -1
  56. package/build/assets/edit-automation-modal-BwhJ39JT.js +1 -0
  57. package/build/assets/empty-state-RZz0OfnY.js +1 -0
  58. package/build/assets/{entry.client-C7Bi2tkU.js → entry.client-Ds8LVp-E.js} +2 -2
  59. package/build/assets/enum-filter-dropdown-C4pW0ORd.js +1 -0
  60. package/build/assets/{environment-switch-overlay-CEKrFiMw.js → environment-switch-overlay-P2ZAuzov.js} +1 -1
  61. package/build/assets/{error-state-BALXiBNy.js → error-state-B_5cgNPJ.js} +1 -1
  62. package/build/assets/extensions-hub-DsaUr4ca.js +1 -0
  63. package/build/assets/extensions-navigation-CRMZd-FE.js +1 -0
  64. package/build/assets/external-link-DQtv7eTh.js +1 -0
  65. package/build/assets/files-tab-CCgAcVdc.js +1 -0
  66. package/build/assets/{form-control-classes-CGw40z5h.js → form-control-classes-B-z85REi.js} +1 -1
  67. package/build/assets/format-model-name-CasAP3nd.js +1 -0
  68. package/build/assets/get-git-path-EHrSDxTM.js +1 -0
  69. package/build/assets/git-repo-dropdown-D2WEQ97X.js +1 -0
  70. package/build/assets/{git-repo-dropdown-ai8qaNkD.js → git-repo-dropdown-DVeCUUXG.js} +1 -1
  71. package/build/assets/{highlighted-source-view-C3sxykQi.js → highlighted-source-view-DjHO3SdW.js} +1 -1
  72. package/build/assets/home-BorS_vdS.js +1 -0
  73. package/build/assets/home-aIMbHw5M.js +1 -0
  74. package/build/assets/home-automation-run-tooltip-CpHNFiFl.js +1 -0
  75. package/build/assets/home-store-DyXz0w6d.js +1 -0
  76. package/build/assets/hooks-service-C6dpRtZM.js +1 -0
  77. package/build/assets/index-home-zKFuKK2B.js +1 -0
  78. package/build/assets/info-CTIdjttz.js +1 -0
  79. package/build/assets/install-server-modal-DUiZMc8u.js +1 -0
  80. package/build/assets/kebab-menu-item-content-mm04SBD3.js +1 -0
  81. package/build/assets/{key-Cn5za3rg.js → key-CfXbJa8w.js} +1 -1
  82. package/build/assets/{launch-C1ieiOGe.js → launch-BSIf9KEg.js} +1 -1
  83. package/build/assets/list-filter-CNpqTWVY.js +1 -0
  84. package/build/assets/{list-todo-Cuu-STFc.js → list-todo-ByXMdY4W.js} +1 -1
  85. package/build/assets/llm-not-configured-banner-z_QRSeV0.js +27 -0
  86. package/build/assets/llm-settings-B-5AHMiX.js +1 -0
  87. package/build/assets/llm-settings-B3SjHDmA.js +1 -0
  88. package/build/assets/llm-subscription-service-aDNBQ7Gq.js +1 -0
  89. package/build/assets/loader-circle-Dex47vVW.js +1 -0
  90. package/build/assets/{loading-spinner-0L3ZTToZ.js → loading-spinner-DfHI77BA.js} +1 -1
  91. package/build/assets/manage-backends-modal-q1NdFisr.js +1 -0
  92. package/build/assets/manifest-8920b615.js +1 -0
  93. package/build/assets/{manifest-subpage-layout-BGhiUQbA.js → manifest-subpage-layout-BQQy5ipR.js} +1 -1
  94. package/build/assets/{map-provider-B9LTm23I.js → map-provider-DXvssjw9.js} +1 -1
  95. package/build/assets/markdown-renderer-rivLvYh-.js +8 -0
  96. package/build/assets/{mcp-CKbR4Vft.js → mcp-CEXDhQWn.js} +1 -1
  97. package/build/assets/{mcp-marketplace-utils-C13fFccR.js → mcp-marketplace-utils-Cn_NIMWM.js} +1 -1
  98. package/build/assets/mcp-page-LGYIICMG.js +9 -0
  99. package/build/assets/messages-DUSeANAh.js +41 -0
  100. package/build/assets/{modal-body-CMOc2tLl.js → modal-body-DJw4xBki.js} +1 -1
  101. package/build/assets/{modal-classes-BAb4Y_BG.js → modal-classes-Dg0ngBPO.js} +1 -1
  102. package/build/assets/{modal-close-button-CkJ0Ktjj.js → modal-close-button-B9j4nasm.js} +1 -1
  103. package/build/assets/{mouse-pointer-click-CsgRs_-r.js → mouse-pointer-click-DEhsSUpu.js} +1 -1
  104. package/build/assets/onboarding-BjFebfs5.js +1 -0
  105. package/build/assets/onboarding-modal-DDTjOpyd.js +1 -0
  106. package/build/assets/organization-service.api-Cyg1Tn03.js +1 -0
  107. package/build/assets/pencil-D5c47kyN.js +1 -0
  108. package/build/assets/pin-C7vMagvf.js +1 -0
  109. package/build/assets/planner-tab-D8f2Y3rn.js +1 -0
  110. package/build/assets/plug-CeaqeF6u.js +1 -0
  111. package/build/assets/plugins-management-service-Bh_pBuf-.js +1 -0
  112. package/build/assets/plus-B3wvU06-.js +1 -0
  113. package/build/assets/profiles-service.api-BbOK0EkF.js +1 -0
  114. package/build/assets/providers-2gIIkz2N.js +1 -0
  115. package/build/assets/proxy-CBgMd2zf.js +1 -0
  116. package/build/assets/{puzzle-A9pGxxai.js → puzzle-DdAqbUrb.js} +1 -1
  117. package/build/assets/recommended-automations-launcher-YLAQTp4s.js +1 -0
  118. package/build/assets/refresh-cw-DEQdPCpH.js +1 -0
  119. package/build/assets/root-Bye_XmEL.js +2 -0
  120. package/build/assets/root-Cnwwzgo0.css +1 -0
  121. package/build/assets/root-layout-CSAwxBGM.js +2 -0
  122. package/build/assets/schema-field-CK0xYNbO.js +1 -0
  123. package/build/assets/scroll-fade-state-Dt_fx2kf.js +1 -0
  124. package/build/assets/sdk-section-page-Da73Rs_o.js +1 -0
  125. package/build/assets/secret-form-CB2VwYYg.js +1 -0
  126. package/build/assets/secrets-service-Cr8g8xuv.js +1 -0
  127. package/build/assets/{secrets-settings-BizaTEr1.js → secrets-settings-Bh0udeKv.js} +1 -1
  128. package/build/assets/settings-CKqk8ZnH.js +1 -0
  129. package/build/assets/settings-DmyIgRxO.js +1 -0
  130. package/build/assets/{settings-dropdown-input-tM0A0ipy.js → settings-dropdown-input-DVpyD87C.js} +1 -1
  131. package/build/assets/settings-index-BSJUFmjE.js +1 -0
  132. package/build/assets/{settings-input-C03KUoSC.js → settings-input-C0dd8Utu.js} +1 -1
  133. package/build/assets/{settings-list-classes-BJ0g8rWj.js → settings-list-classes-Ds4jPBHK.js} +1 -1
  134. package/build/assets/{settings-modal-AzEF1QPP.js → settings-modal-yStgEh2o.js} +1 -1
  135. package/build/assets/settings-service.api-9_xdv_mh.js +1 -0
  136. package/build/assets/{settings-switch-CQE0EGC-.js → settings-switch-B78Khmyz.js} +1 -1
  137. package/build/assets/{settings-utils-ClYOkbbI.js → settings-utils-8GIIgOQL.js} +1 -1
  138. package/build/assets/shared-conversation-DM96X4KV.js +1 -0
  139. package/build/assets/shield-check-DO7wa_eu.js +1 -0
  140. package/build/assets/{sidebar-layout-D3hE08wK.js → sidebar-layout-EPfWxk11.js} +1 -1
  141. package/build/assets/sidebar-mobile-menu-toggle-D5GR5xT9.js +1 -0
  142. package/build/assets/sidebar-nav-link-_t4_Ef-9.js +1 -0
  143. package/build/assets/{sidebar-onboarding-checklist-storage-3qYflszY.js → sidebar-onboarding-checklist-storage-DbDX-Wvj.js} +1 -1
  144. package/build/assets/sidebar-store-CSDFK0W5.js +1 -0
  145. package/build/assets/{skill-card-pill-row-CFxjoqxn.js → skill-card-pill-row-989y15jV.js} +1 -1
  146. package/build/assets/skill-enablement-DXeaImBz.js +1 -0
  147. package/build/assets/skill-filter-BBeZ4JEP.js +2 -0
  148. package/build/assets/{skill-icon-badge-CPQJ6A-I.js → skill-icon-badge-BDhQ-tQ0.js} +1 -1
  149. package/build/assets/skill-scope-Dz3kPH3P.js +1 -0
  150. package/build/assets/skills-plugins-e3CYGdUJ.js +1 -0
  151. package/build/assets/skills-settings-3e-FuHw_.js +1 -0
  152. package/build/assets/styled-tooltip-Pd22BIvr.js +1 -0
  153. package/build/assets/{task-list-tab-04GNQuii.js → task-list-tab-3Jg8ywch.js} +1 -1
  154. package/build/assets/{terminal-Cj0iHIW7.js → terminal-onXx0_Qz.js} +1 -1
  155. package/build/assets/toggle-switch-lwQtxDcm.js +1 -0
  156. package/build/assets/trash-2-ZhKuTLiz.js +1 -0
  157. package/build/assets/trash-B6OIe4yX.js +1 -0
  158. package/build/assets/triangle-alert-BajLPpQg.js +1 -0
  159. package/build/assets/{typography-SgFy466J.js → typography-HLLg_FAn.js} +1 -1
  160. package/build/assets/usage-tab-Cm-9j3UK.js +1 -0
  161. package/build/assets/use-acp-credential-form-BARcvjYE.js +1 -0
  162. package/build/assets/use-activate-agent-profile-BLKML6vQ.js +1 -0
  163. package/build/assets/use-agent-profiles-1P91KSXz.js +1 -0
  164. package/build/assets/{use-automation-health-BxXdzZMP.js → use-automation-health-BZkQNEA8.js} +1 -1
  165. package/build/assets/use-automation-permissions-B_RpvL-s.js +1 -0
  166. package/build/assets/{use-automations-zYb0dUny.js → use-automations-Cg0PDIZr.js} +1 -1
  167. package/build/assets/{use-can-manage-org-profiles-BWMahtUh.js → use-can-manage-org-profiles-BbN6KfDr.js} +1 -1
  168. package/build/assets/use-canvas-extensions-CFUpHat6.js +1 -0
  169. package/build/assets/{use-cloud-current-user-id-CPHMDG-C.js → use-cloud-current-user-id-Dk0rjr63.js} +1 -1
  170. package/build/assets/use-config-DpafU_QP.js +1 -0
  171. package/build/assets/use-create-conversation-1YgmAHt-.js +1 -0
  172. package/build/assets/use-create-secret-D8p9ybQj.js +1 -0
  173. package/build/assets/{use-get-secrets-BT4ihRwj.js → use-get-secrets-CQ4b0qK8.js} +1 -1
  174. package/build/assets/use-is-authed-BRPjCRKM.js +1 -0
  175. package/build/assets/{use-launch-skill-in-chat-BYjYihBP.js → use-launch-skill-in-chat-DeYa1tFM.js} +1 -1
  176. package/build/assets/use-llm-configured-DGm8FiRR.js +1 -0
  177. package/build/assets/use-llm-profiles-BTTtpW4z.js +1 -0
  178. package/build/assets/use-manifest-capabilities-AOWGcu0j.js +1 -0
  179. package/build/assets/use-onboarding-completion-CoINurkm.js +1 -0
  180. package/build/assets/use-pinned-home-route-D6krwXjy.js +1 -0
  181. package/build/assets/use-plugins-marketplace-mLsIDhBv.js +1 -0
  182. package/build/assets/use-save-agent-profile-CxyO9YG-.js +1 -0
  183. package/build/assets/{use-save-settings-CUZW6yXP.js → use-save-settings-3U5K9-8x.js} +1 -1
  184. package/build/assets/use-settings-Dn00UISA.js +1 -0
  185. package/build/assets/use-settings-nav-items-vrjxTqcu.js +16 -0
  186. package/build/assets/use-tracking-B9prBsrq.js +3 -0
  187. package/build/assets/{use-user-conversation-DT0_QCnL.js → use-user-conversation-ZWlXtbZb.js} +1 -1
  188. package/build/assets/{useInfiniteQuery-CgeUQPfs.js → useInfiniteQuery-BzrRqjLg.js} +1 -1
  189. package/build/assets/{useMutation-DFnzkf6f.js → useMutation-CJuK90oc.js} +1 -1
  190. package/build/assets/{useQueries-BhbrGEf1.js → useQueries-CykmpT-a.js} +1 -1
  191. package/build/assets/{useQuery-BXWbZBZl.js → useQuery-S6j94er1.js} +1 -1
  192. package/build/assets/utils-BOco8mxR.js +1 -0
  193. package/build/assets/{vendor~conversation-panel~conversation-CTvDDiXg.js → vendor~conversation-panel~conversation-4eJ0tml3.js} +1 -1
  194. package/build/assets/{vendor~entry.client-BFE7Llz9.js → vendor~entry.client-CoCfUXUF.js} +1 -1
  195. package/build/assets/{vendor~entry.client-BaKt_PIp.js → vendor~entry.client-DA2izTjq.js} +1 -1
  196. package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~b0x1wrp2-Z0lly3FE.js +2 -0
  197. package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-BfkNGovw.js +185 -0
  198. package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew3u153i-rfV8mQ9m.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-DnDoaYNi.js} +1 -1
  199. package/build/assets/{vendor~index-home~home~conversation-panel~conversation-BTyukeM-.js → vendor~index-home~home~conversation-panel~conversation-CSFLzmTN.js} +1 -1
  200. package/build/assets/vendor~root-layout-n8XCEXG8.js +1 -0
  201. package/build/assets/{vendor~root-layout~conversation-panel~conversation-BYAWJwQX.js → vendor~root-layout~conversation-panel~conversation-3Idg1_U3.js} +1 -1
  202. package/build/assets/{vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-CHaLEBVR.js → vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-DkPlXWl9.js} +1 -1
  203. package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation-DgQ564nC.js +1 -0
  204. package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-CxhwKuAd.js +1 -0
  205. package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-Dtu7BpYk.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~inibp4qe-CnsDDzeE.js} +2 -2
  206. package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iyia17eu-CV850oio.js +1 -0
  207. package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-DonTKfQD.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-BPjI-atc.js} +125 -15
  208. package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-BgxDvUcf.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-C7HiY4Ae.js} +42 -3
  209. package/build/assets/{verification-settings-Bj6bo097.js → verification-settings-u2POabjH.js} +1 -1
  210. package/build/assets/{wrench-hi7Q13dF.js → wrench-CkgI4rxA.js} +1 -1
  211. package/build/assets/x-By6qCmtY.js +1 -0
  212. package/build/index.html +4 -4
  213. package/build/locales/ar/openhands.json +94 -25
  214. package/build/locales/ca/openhands.json +94 -25
  215. package/build/locales/de/openhands.json +94 -25
  216. package/build/locales/en/openhands.json +94 -25
  217. package/build/locales/es/openhands.json +94 -25
  218. package/build/locales/fr/openhands.json +94 -25
  219. package/build/locales/it/openhands.json +94 -25
  220. package/build/locales/ja/openhands.json +94 -25
  221. package/build/locales/ko-KR/openhands.json +94 -25
  222. package/build/locales/no/openhands.json +94 -25
  223. package/build/locales/pt/openhands.json +94 -25
  224. package/build/locales/tr/openhands.json +94 -25
  225. package/build/locales/uk/openhands.json +94 -25
  226. package/build/locales/zh-CN/openhands.json +94 -25
  227. package/build/locales/zh-TW/openhands.json +94 -25
  228. package/config/defaults.json +9 -5
  229. package/dist/api/agent-profiles-service/profile-field-support.d.ts +26 -0
  230. package/dist/api/agent-server-adapter.cjs +3 -3
  231. package/dist/api/agent-server-adapter.cjs.map +1 -1
  232. package/dist/api/agent-server-adapter.d.ts +72 -12
  233. package/dist/api/agent-server-adapter.js +249 -145
  234. package/dist/api/agent-server-adapter.js.map +1 -1
  235. package/dist/api/agent-server-compatibility.cjs +1 -1
  236. package/dist/api/agent-server-compatibility.cjs.map +1 -1
  237. package/dist/api/agent-server-compatibility.d.ts +21 -0
  238. package/dist/api/agent-server-compatibility.js +52 -38
  239. package/dist/api/agent-server-compatibility.js.map +1 -1
  240. package/dist/api/agent-server-config.cjs +1 -1
  241. package/dist/api/agent-server-config.cjs.map +1 -1
  242. package/dist/api/agent-server-config.d.ts +32 -0
  243. package/dist/api/agent-server-config.js +21 -5
  244. package/dist/api/agent-server-config.js.map +1 -1
  245. package/dist/api/automation-service/automation-service.api.cjs +1 -1
  246. package/dist/api/automation-service/automation-service.api.cjs.map +1 -1
  247. package/dist/api/automation-service/automation-service.api.d.ts +2 -2
  248. package/dist/api/automation-service/automation-service.api.js +7 -7
  249. package/dist/api/automation-service/automation-service.api.js.map +1 -1
  250. package/dist/api/canvas-extensions-service.cjs +1 -0
  251. package/dist/api/canvas-extensions-service.d.ts +22 -0
  252. package/dist/api/canvas-extensions-service.js +4 -0
  253. package/dist/api/cloud/conversation-service.api.cjs +1 -1
  254. package/dist/api/cloud/conversation-service.api.cjs.map +1 -1
  255. package/dist/api/cloud/conversation-service.api.d.ts +6 -0
  256. package/dist/api/cloud/conversation-service.api.js +14 -6
  257. package/dist/api/cloud/conversation-service.api.js.map +1 -1
  258. package/dist/api/cloud/provider-connections-service.api.cjs +2 -0
  259. package/dist/api/cloud/provider-connections-service.api.cjs.map +1 -0
  260. package/dist/api/cloud/provider-connections-service.api.d.ts +5 -0
  261. package/dist/api/cloud/provider-connections-service.api.js +50 -0
  262. package/dist/api/cloud/provider-connections-service.api.js.map +1 -0
  263. package/dist/api/cloud/skills-service.api.cjs +1 -1
  264. package/dist/api/cloud/skills-service.api.cjs.map +1 -1
  265. package/dist/api/cloud/skills-service.api.d.ts +10 -0
  266. package/dist/api/cloud/skills-service.api.js +11 -1
  267. package/dist/api/cloud/skills-service.api.js.map +1 -1
  268. package/dist/api/conversation-file-upload.api.cjs +1 -1
  269. package/dist/api/conversation-file-upload.api.js +10 -10
  270. package/dist/api/conversation-metadata-store.cjs +1 -1
  271. package/dist/api/conversation-metadata-store.cjs.map +1 -1
  272. package/dist/api/conversation-metadata-store.d.ts +24 -0
  273. package/dist/api/conversation-metadata-store.js +10 -2
  274. package/dist/api/conversation-metadata-store.js.map +1 -1
  275. package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
  276. package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
  277. package/dist/api/conversation-service/agent-server-conversation-service.api.d.ts +31 -0
  278. package/dist/api/conversation-service/agent-server-conversation-service.api.js +188 -128
  279. package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
  280. package/dist/api/event-service/event-service.api.cjs +1 -1
  281. package/dist/api/event-service/event-service.api.js +12 -12
  282. package/dist/api/git-service/agent-server-git-service.api.cjs +1 -1
  283. package/dist/api/git-service/agent-server-git-service.api.js +8 -8
  284. package/dist/api/hooks-service.cjs +2 -0
  285. package/dist/api/hooks-service.cjs.map +1 -0
  286. package/dist/api/hooks-service.d.ts +13 -0
  287. package/dist/api/hooks-service.js +20 -0
  288. package/dist/api/hooks-service.js.map +1 -0
  289. package/dist/api/provider-connections-service/provider-connections-service.api.cjs +1 -1
  290. package/dist/api/provider-connections-service/provider-connections-service.api.cjs.map +1 -1
  291. package/dist/api/provider-connections-service/provider-connections-service.api.js +25 -16
  292. package/dist/api/provider-connections-service/provider-connections-service.api.js.map +1 -1
  293. package/dist/api/runtime-service/agent-server-runtime-service.cjs +1 -1
  294. package/dist/api/runtime-service/agent-server-runtime-service.js +8 -8
  295. package/dist/api/settings-service/settings-service.api.cjs +1 -1
  296. package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
  297. package/dist/api/settings-service/settings-service.api.d.ts +5 -2
  298. package/dist/api/settings-service/settings-service.api.js +20 -11
  299. package/dist/api/settings-service/settings-service.api.js.map +1 -1
  300. package/dist/api/skills-service.cjs +1 -1
  301. package/dist/api/skills-service.cjs.map +1 -1
  302. package/dist/api/skills-service.d.ts +7 -0
  303. package/dist/api/skills-service.js +11 -8
  304. package/dist/api/skills-service.js.map +1 -1
  305. package/dist/components/conversation-events/chat/event-message-components/critic-result-display.cjs +1 -1
  306. package/dist/components/conversation-events/chat/event-message-components/critic-result-display.js +5 -5
  307. package/dist/components/conversation-events/chat/event-message-components/event-group.cjs +1 -1
  308. package/dist/components/conversation-events/chat/event-message-components/event-group.cjs.map +1 -1
  309. package/dist/components/conversation-events/chat/event-message-components/event-group.js +40 -36
  310. package/dist/components/conversation-events/chat/event-message-components/event-group.js.map +1 -1
  311. package/dist/components/conversation-events/chat/event-message-components/finish-event-message.cjs +1 -1
  312. package/dist/components/conversation-events/chat/event-message-components/finish-event-message.cjs.map +1 -1
  313. package/dist/components/conversation-events/chat/event-message-components/finish-event-message.js +2 -1
  314. package/dist/components/conversation-events/chat/event-message-components/finish-event-message.js.map +1 -1
  315. package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.cjs +1 -1
  316. package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.cjs.map +1 -1
  317. package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.d.ts +1 -1
  318. package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.js +28 -28
  319. package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.js.map +1 -1
  320. package/dist/components/conversation-events/chat/event-message-components/thought-event-message.cjs +1 -1
  321. package/dist/components/conversation-events/chat/event-message-components/thought-event-message.cjs.map +1 -1
  322. package/dist/components/conversation-events/chat/event-message-components/thought-event-message.js +2 -1
  323. package/dist/components/conversation-events/chat/event-message-components/thought-event-message.js.map +1 -1
  324. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs +1 -1
  325. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs.map +1 -1
  326. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.d.ts +1 -1
  327. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js +37 -37
  328. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js.map +1 -1
  329. package/dist/components/conversation-events/chat/event-message.cjs +2 -2
  330. package/dist/components/conversation-events/chat/event-message.cjs.map +1 -1
  331. package/dist/components/conversation-events/chat/event-message.js +79 -70
  332. package/dist/components/conversation-events/chat/event-message.js.map +1 -1
  333. package/dist/components/conversation-events/chat/messages.cjs +1 -1
  334. package/dist/components/conversation-events/chat/messages.cjs.map +1 -1
  335. package/dist/components/conversation-events/chat/messages.js +28 -27
  336. package/dist/components/conversation-events/chat/messages.js.map +1 -1
  337. package/dist/components/features/automations/automation-card.cjs +1 -1
  338. package/dist/components/features/automations/automation-card.cjs.map +1 -1
  339. package/dist/components/features/automations/automation-card.js +118 -102
  340. package/dist/components/features/automations/automation-card.js.map +1 -1
  341. package/dist/components/features/automations/automation-list-row.cjs +1 -1
  342. package/dist/components/features/automations/automation-list-row.cjs.map +1 -1
  343. package/dist/components/features/automations/automation-list-row.js +88 -77
  344. package/dist/components/features/automations/automation-list-row.js.map +1 -1
  345. package/dist/components/features/automations/detail/detail-header.d.ts +3 -1
  346. package/dist/components/features/automations/detail/run-phase.cjs +2 -0
  347. package/dist/components/features/automations/detail/run-phase.cjs.map +1 -0
  348. package/dist/components/features/automations/detail/run-phase.d.ts +89 -0
  349. package/dist/components/features/automations/detail/run-phase.js +72 -0
  350. package/dist/components/features/automations/detail/run-phase.js.map +1 -0
  351. package/dist/components/features/automations/detail/run-status-badge.cjs +1 -1
  352. package/dist/components/features/automations/detail/run-status-badge.cjs.map +1 -1
  353. package/dist/components/features/automations/detail/run-status-badge.d.ts +2 -2
  354. package/dist/components/features/automations/detail/run-status-badge.js +82 -53
  355. package/dist/components/features/automations/detail/run-status-badge.js.map +1 -1
  356. package/dist/components/features/automations/kebab-menu.cjs +1 -1
  357. package/dist/components/features/automations/kebab-menu.cjs.map +1 -1
  358. package/dist/components/features/automations/kebab-menu.js +9 -5
  359. package/dist/components/features/automations/kebab-menu.js.map +1 -1
  360. package/dist/components/features/automations/recommended-automations-launcher.cjs +1 -1
  361. package/dist/components/features/automations/recommended-automations-launcher.cjs.map +1 -1
  362. package/dist/components/features/automations/recommended-automations-launcher.js +12 -12
  363. package/dist/components/features/automations/recommended-automations-launcher.js.map +1 -1
  364. package/dist/components/features/automations/recommended-automations-section.cjs +1 -1
  365. package/dist/components/features/automations/recommended-automations-section.js +9 -9
  366. package/dist/components/features/backends/backend-form-modal.cjs +1 -1
  367. package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
  368. package/dist/components/features/backends/backend-form-modal.js +5 -11
  369. package/dist/components/features/backends/backend-form-modal.js.map +1 -1
  370. package/dist/components/features/backends/backend-selector.cjs +1 -1
  371. package/dist/components/features/backends/backend-selector.cjs.map +1 -1
  372. package/dist/components/features/backends/backend-selector.js +133 -122
  373. package/dist/components/features/backends/backend-selector.js.map +1 -1
  374. package/dist/components/features/backends/manage-backends-modal.cjs +1 -1
  375. package/dist/components/features/backends/manage-backends-modal.cjs.map +1 -1
  376. package/dist/components/features/backends/manage-backends-modal.js +29 -29
  377. package/dist/components/features/backends/manage-backends-modal.js.map +1 -1
  378. package/dist/components/features/canvas-extensions/add-canvas-extension-modal.d.ts +6 -0
  379. package/dist/components/features/canvas-extensions/canvas-extension-card.d.ts +9 -0
  380. package/dist/components/features/canvas-extensions/canvas-extensions-runtime.cjs +2 -0
  381. package/dist/components/features/canvas-extensions/canvas-extensions-runtime.cjs.map +1 -0
  382. package/dist/components/features/canvas-extensions/canvas-extensions-runtime.d.ts +23 -0
  383. package/dist/components/features/canvas-extensions/canvas-extensions-runtime.js +19 -0
  384. package/dist/components/features/canvas-extensions/canvas-extensions-runtime.js.map +1 -0
  385. package/dist/components/features/chat/change-agent-button.cjs +1 -1
  386. package/dist/components/features/chat/change-agent-button.js +4 -4
  387. package/dist/components/features/chat/chat-interface.cjs +2 -2
  388. package/dist/components/features/chat/chat-interface.cjs.map +1 -1
  389. package/dist/components/features/chat/chat-interface.js +107 -104
  390. package/dist/components/features/chat/chat-interface.js.map +1 -1
  391. package/dist/components/features/chat/chat-markdown-path-code.cjs +3 -0
  392. package/dist/components/features/chat/chat-markdown-path-code.cjs.map +1 -0
  393. package/dist/components/features/chat/chat-markdown-path-code.d.ts +27 -0
  394. package/dist/components/features/chat/chat-markdown-path-code.js +72 -0
  395. package/dist/components/features/chat/chat-markdown-path-code.js.map +1 -0
  396. package/dist/components/features/chat/chat-message.cjs +1 -1
  397. package/dist/components/features/chat/chat-message.cjs.map +1 -1
  398. package/dist/components/features/chat/chat-message.d.ts +2 -1
  399. package/dist/components/features/chat/chat-message.js +88 -79
  400. package/dist/components/features/chat/chat-message.js.map +1 -1
  401. package/dist/components/features/chat/components/context-window-meter.cjs +1 -1
  402. package/dist/components/features/chat/components/context-window-meter.js +4 -4
  403. package/dist/components/features/chat/confirmation-mode-enabled.cjs +1 -1
  404. package/dist/components/features/chat/confirmation-mode-enabled.js +4 -4
  405. package/dist/components/features/chat/generic-event-message.cjs +1 -1
  406. package/dist/components/features/chat/generic-event-message.cjs.map +1 -1
  407. package/dist/components/features/chat/generic-event-message.d.ts +2 -1
  408. package/dist/components/features/chat/generic-event-message.js +41 -22
  409. package/dist/components/features/chat/generic-event-message.js.map +1 -1
  410. package/dist/components/features/chat/interactive-chat-box.cjs +1 -1
  411. package/dist/components/features/chat/interactive-chat-box.cjs.map +1 -1
  412. package/dist/components/features/chat/interactive-chat-box.js +20 -19
  413. package/dist/components/features/chat/interactive-chat-box.js.map +1 -1
  414. package/dist/components/features/chat/path-component.cjs +1 -1
  415. package/dist/components/features/chat/path-component.cjs.map +1 -1
  416. package/dist/components/features/chat/path-component.d.ts +8 -2
  417. package/dist/components/features/chat/path-component.js +33 -21
  418. package/dist/components/features/chat/path-component.js.map +1 -1
  419. package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs +1 -1
  420. package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs.map +1 -1
  421. package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js +38 -43
  422. package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js.map +1 -1
  423. package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs +1 -1
  424. package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs.map +1 -1
  425. package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.d.ts +8 -5
  426. package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js +22 -16
  427. package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js.map +1 -1
  428. package/dist/components/features/chat/user-message-body.cjs +1 -1
  429. package/dist/components/features/chat/user-message-body.cjs.map +1 -1
  430. package/dist/components/features/chat/user-message-body.d.ts +4 -0
  431. package/dist/components/features/chat/user-message-body.js +30 -24
  432. package/dist/components/features/chat/user-message-body.js.map +1 -1
  433. package/dist/components/features/conversation/conversation-overview-git-section.cjs +1 -1
  434. package/dist/components/features/conversation/conversation-overview-git-section.js +4 -4
  435. package/dist/components/features/conversation/conversation-overview-skills-panel.cjs +1 -1
  436. package/dist/components/features/conversation/conversation-overview-skills-panel.cjs.map +1 -1
  437. package/dist/components/features/conversation/conversation-overview-skills-panel.js +63 -81
  438. package/dist/components/features/conversation/conversation-overview-skills-panel.js.map +1 -1
  439. package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs +1 -1
  440. package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs.map +1 -1
  441. package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js +77 -78
  442. package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js.map +1 -1
  443. package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs +1 -1
  444. package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs.map +1 -1
  445. package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js +96 -96
  446. package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js.map +1 -1
  447. package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.cjs +1 -1
  448. package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.cjs.map +1 -1
  449. package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.d.ts +1 -1
  450. package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.js +3 -3
  451. package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.js.map +1 -1
  452. package/dist/components/features/conversation-panel/advanced-conversation-options-modal.cjs +2 -0
  453. package/dist/components/features/conversation-panel/advanced-conversation-options-modal.cjs.map +1 -0
  454. package/dist/components/features/conversation-panel/advanced-conversation-options-modal.d.ts +21 -0
  455. package/dist/components/features/conversation-panel/advanced-conversation-options-modal.js +239 -0
  456. package/dist/components/features/conversation-panel/advanced-conversation-options-modal.js.map +1 -0
  457. package/dist/components/features/conversation-panel/conversation-active-tag-filters.cjs +2 -0
  458. package/dist/components/features/conversation-panel/conversation-active-tag-filters.cjs.map +1 -0
  459. package/dist/components/features/conversation-panel/conversation-active-tag-filters.d.ts +28 -0
  460. package/dist/components/features/conversation-panel/conversation-active-tag-filters.js +69 -0
  461. package/dist/components/features/conversation-panel/conversation-active-tag-filters.js.map +1 -0
  462. package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.cjs +1 -1
  463. package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.cjs.map +1 -1
  464. package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.d.ts +2 -1
  465. package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js +19 -18
  466. package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js.map +1 -1
  467. package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.cjs +1 -1
  468. package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.cjs.map +1 -1
  469. package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.d.ts +2 -1
  470. package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.js +91 -80
  471. package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.js.map +1 -1
  472. package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.cjs +1 -1
  473. package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.cjs.map +1 -1
  474. package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.js +1 -1
  475. package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.js.map +1 -1
  476. package/dist/components/features/conversation-panel/conversation-card/conversation-card.cjs +1 -1
  477. package/dist/components/features/conversation-panel/conversation-card/conversation-card.cjs.map +1 -1
  478. package/dist/components/features/conversation-panel/conversation-card/conversation-card.d.ts +7 -1
  479. package/dist/components/features/conversation-panel/conversation-card/conversation-card.js +87 -81
  480. package/dist/components/features/conversation-panel/conversation-card/conversation-card.js.map +1 -1
  481. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.cjs +1 -1
  482. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.cjs.map +1 -1
  483. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.d.ts +2 -1
  484. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.js +1 -1
  485. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.js.map +1 -1
  486. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.cjs +1 -1
  487. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.cjs.map +1 -1
  488. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.d.ts +2 -1
  489. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.js +2 -1
  490. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.js.map +1 -1
  491. package/dist/components/features/conversation-panel/conversation-layouts-menu.cjs +2 -0
  492. package/dist/components/features/conversation-panel/conversation-layouts-menu.cjs.map +1 -0
  493. package/dist/components/features/conversation-panel/conversation-layouts-menu.d.ts +29 -0
  494. package/dist/components/features/conversation-panel/conversation-layouts-menu.js +177 -0
  495. package/dist/components/features/conversation-panel/conversation-layouts-menu.js.map +1 -0
  496. package/dist/components/features/conversation-panel/conversation-panel-list-helpers.cjs +1 -1
  497. package/dist/components/features/conversation-panel/conversation-panel-list-helpers.cjs.map +1 -1
  498. package/dist/components/features/conversation-panel/conversation-panel-list-helpers.d.ts +37 -0
  499. package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js +85 -45
  500. package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js.map +1 -1
  501. package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
  502. package/dist/components/features/conversation-panel/conversation-panel.cjs.map +1 -1
  503. package/dist/components/features/conversation-panel/conversation-panel.js +296 -290
  504. package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
  505. package/dist/components/features/conversation-panel/edit-conversation-tags-modal.cjs +2 -0
  506. package/dist/components/features/conversation-panel/edit-conversation-tags-modal.cjs.map +1 -0
  507. package/dist/components/features/conversation-panel/edit-conversation-tags-modal.d.ts +22 -0
  508. package/dist/components/features/conversation-panel/edit-conversation-tags-modal.js +153 -0
  509. package/dist/components/features/conversation-panel/edit-conversation-tags-modal.js.map +1 -0
  510. package/dist/components/features/conversation-panel/hide-older-conversations-row.cjs +2 -0
  511. package/dist/components/features/conversation-panel/hide-older-conversations-row.cjs.map +1 -0
  512. package/dist/components/features/conversation-panel/hide-older-conversations-row.d.ts +6 -0
  513. package/dist/components/features/conversation-panel/hide-older-conversations-row.js +65 -0
  514. package/dist/components/features/conversation-panel/hide-older-conversations-row.js.map +1 -0
  515. package/dist/components/features/conversation-panel/menu-row.cjs +1 -1
  516. package/dist/components/features/conversation-panel/menu-row.cjs.map +1 -1
  517. package/dist/components/features/conversation-panel/menu-row.d.ts +11 -1
  518. package/dist/components/features/conversation-panel/menu-row.js +27 -16
  519. package/dist/components/features/conversation-panel/menu-row.js.map +1 -1
  520. package/dist/components/features/conversation-panel/skills-modal.cjs +1 -1
  521. package/dist/components/features/conversation-panel/skills-modal.cjs.map +1 -1
  522. package/dist/components/features/conversation-panel/skills-modal.js +29 -28
  523. package/dist/components/features/conversation-panel/skills-modal.js.map +1 -1
  524. package/dist/components/features/files-tab/file-content-viewer.cjs +1 -1
  525. package/dist/components/features/files-tab/file-content-viewer.js +5 -5
  526. package/dist/components/features/home/featured-automations/automation-health-indicator.cjs +1 -1
  527. package/dist/components/features/home/featured-automations/automation-health-indicator.cjs.map +1 -1
  528. package/dist/components/features/home/featured-automations/automation-health-indicator.js +1 -1
  529. package/dist/components/features/home/featured-automations/automation-health-indicator.js.map +1 -1
  530. package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs +1 -1
  531. package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs.map +1 -1
  532. package/dist/components/features/home/featured-automations/automation-run-activity-metrics.d.ts +4 -3
  533. package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js +22 -25
  534. package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js.map +1 -1
  535. package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs +1 -1
  536. package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs.map +1 -1
  537. package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.d.ts +1 -1
  538. package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js +15 -15
  539. package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js.map +1 -1
  540. package/dist/components/features/home/featured-automations/automation-run-health.cjs +1 -1
  541. package/dist/components/features/home/featured-automations/automation-run-health.cjs.map +1 -1
  542. package/dist/components/features/home/featured-automations/automation-run-health.d.ts +5 -3
  543. package/dist/components/features/home/featured-automations/automation-run-health.js +30 -23
  544. package/dist/components/features/home/featured-automations/automation-run-health.js.map +1 -1
  545. package/dist/components/features/home/featured-automations/home-automation-activity.d.ts +3 -2
  546. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs +1 -1
  547. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs.map +1 -1
  548. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.d.ts +1 -1
  549. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js +59 -37
  550. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js.map +1 -1
  551. package/dist/components/features/manifest/manifest-form-field.d.ts +3 -1
  552. package/dist/components/features/manifest/manifest-review-step.d.ts +3 -1
  553. package/dist/components/features/onboarding/onboarding-host.d.ts +3 -4
  554. package/dist/components/features/onboarding/steps/setup-llm-step.d.ts +5 -9
  555. package/dist/components/features/settings/acp-auth-status-banner.d.ts +23 -6
  556. package/dist/components/features/settings/cloud-settings-link.cjs +1 -1
  557. package/dist/components/features/settings/cloud-settings-link.cjs.map +1 -1
  558. package/dist/components/features/settings/cloud-settings-link.js +5 -3
  559. package/dist/components/features/settings/cloud-settings-link.js.map +1 -1
  560. package/dist/components/features/settings/integrations-settings-link.cjs +1 -1
  561. package/dist/components/features/settings/integrations-settings-link.cjs.map +1 -1
  562. package/dist/components/features/settings/integrations-settings-link.d.ts +3 -1
  563. package/dist/components/features/settings/integrations-settings-link.js +20 -17
  564. package/dist/components/features/settings/integrations-settings-link.js.map +1 -1
  565. package/dist/components/features/settings/llm-profiles/llm-settings-local-view.cjs +1 -1
  566. package/dist/components/features/settings/llm-profiles/llm-settings-local-view.js +2 -1
  567. package/dist/components/features/settings/llm-profiles/profiles-body.d.ts +2 -2
  568. package/dist/components/features/settings/llm-profiles/provider-connection-modal.cjs +1 -1
  569. package/dist/components/features/settings/llm-profiles/provider-connection-modal.js +3 -0
  570. package/dist/components/features/settings/sdk-settings/field-help.cjs +1 -1
  571. package/dist/components/features/settings/sdk-settings/field-help.cjs.map +1 -1
  572. package/dist/components/features/settings/sdk-settings/field-help.d.ts +1 -1
  573. package/dist/components/features/settings/sdk-settings/field-help.js +1 -1
  574. package/dist/components/features/settings/sdk-settings/field-help.js.map +1 -1
  575. package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs +1 -1
  576. package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs.map +1 -1
  577. package/dist/components/features/settings/sdk-settings/sdk-section-page.d.ts +8 -7
  578. package/dist/components/features/settings/sdk-settings/sdk-section-page.js +172 -142
  579. package/dist/components/features/settings/sdk-settings/sdk-section-page.js.map +1 -1
  580. package/dist/components/features/settings/secrets-settings/secret-form.cjs +1 -1
  581. package/dist/components/features/settings/secrets-settings/secret-form.cjs.map +1 -1
  582. package/dist/components/features/settings/secrets-settings/secret-form.js +38 -25
  583. package/dist/components/features/settings/secrets-settings/secret-form.js.map +1 -1
  584. package/dist/components/features/settings/settings-dropdown-input.cjs +1 -1
  585. package/dist/components/features/settings/settings-dropdown-input.js +6 -6
  586. package/dist/components/features/sidebar/sidebar-nav-link.cjs +1 -1
  587. package/dist/components/features/sidebar/sidebar-nav-link.cjs.map +1 -1
  588. package/dist/components/features/sidebar/sidebar-nav-link.d.ts +10 -1
  589. package/dist/components/features/sidebar/sidebar-nav-link.js +54 -36
  590. package/dist/components/features/sidebar/sidebar-nav-link.js.map +1 -1
  591. package/dist/components/features/sidebar/sidebar-rail-body.cjs +1 -1
  592. package/dist/components/features/sidebar/sidebar-rail-body.cjs.map +1 -1
  593. package/dist/components/features/sidebar/sidebar-rail-body.d.ts +3 -1
  594. package/dist/components/features/sidebar/sidebar-rail-body.js +98 -58
  595. package/dist/components/features/sidebar/sidebar-rail-body.js.map +1 -1
  596. package/dist/components/features/sidebar/sidebar.cjs +1 -1
  597. package/dist/components/features/sidebar/sidebar.cjs.map +1 -1
  598. package/dist/components/features/sidebar/sidebar.js +44 -43
  599. package/dist/components/features/sidebar/sidebar.js.map +1 -1
  600. package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.cjs +1 -1
  601. package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.js +3 -3
  602. package/dist/components/features/skills/build-skill-pills.cjs +1 -1
  603. package/dist/components/features/skills/build-skill-pills.cjs.map +1 -1
  604. package/dist/components/features/skills/build-skill-pills.js +60 -52
  605. package/dist/components/features/skills/build-skill-pills.js.map +1 -1
  606. package/dist/components/features/skills/extensions-navigation.cjs +1 -1
  607. package/dist/components/features/skills/extensions-navigation.cjs.map +1 -1
  608. package/dist/components/features/skills/extensions-navigation.js +54 -43
  609. package/dist/components/features/skills/extensions-navigation.js.map +1 -1
  610. package/dist/components/features/skills/skill-filter.cjs +1 -1
  611. package/dist/components/features/skills/skill-filter.cjs.map +1 -1
  612. package/dist/components/features/skills/skill-filter.d.ts +8 -3
  613. package/dist/components/features/skills/skill-filter.js +69 -52
  614. package/dist/components/features/skills/skill-filter.js.map +1 -1
  615. package/dist/components/shared/buttons/styled-tooltip.cjs +1 -1
  616. package/dist/components/shared/buttons/styled-tooltip.cjs.map +1 -1
  617. package/dist/components/shared/buttons/styled-tooltip.d.ts +2 -1
  618. package/dist/components/shared/buttons/styled-tooltip.js +2 -1
  619. package/dist/components/shared/buttons/styled-tooltip.js.map +1 -1
  620. package/dist/components/shared/filters/enum-filter-dropdown.cjs +1 -1
  621. package/dist/components/shared/filters/enum-filter-dropdown.cjs.map +1 -1
  622. package/dist/components/shared/filters/enum-filter-dropdown.d.ts +5 -1
  623. package/dist/components/shared/filters/enum-filter-dropdown.js +14 -14
  624. package/dist/components/shared/filters/enum-filter-dropdown.js.map +1 -1
  625. package/dist/components/shared/modals/confirmation-modal.cjs +1 -1
  626. package/dist/components/shared/modals/confirmation-modal.cjs.map +1 -1
  627. package/dist/components/shared/modals/confirmation-modal.d.ts +2 -1
  628. package/dist/components/shared/modals/confirmation-modal.js +8 -8
  629. package/dist/components/shared/modals/confirmation-modal.js.map +1 -1
  630. package/dist/components/shared/modals/settings/model-selector.cjs +1 -1
  631. package/dist/components/shared/modals/settings/model-selector.js +27 -27
  632. package/dist/components/shared/modals/settings/settings-form.cjs +1 -1
  633. package/dist/components/shared/modals/settings/settings-form.js +8 -8
  634. package/dist/config/defaults.cjs +1 -1
  635. package/dist/config/defaults.cjs.map +1 -1
  636. package/dist/config/defaults.js +9 -5
  637. package/dist/config/defaults.js.map +1 -1
  638. package/dist/constants/settings-nav.d.ts +8 -0
  639. package/dist/contexts/conversation-websocket-context.cjs +3 -3
  640. package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
  641. package/dist/contexts/conversation-websocket-context.d.ts +5 -0
  642. package/dist/contexts/conversation-websocket-context.js +194 -198
  643. package/dist/contexts/conversation-websocket-context.js.map +1 -1
  644. package/dist/contexts/websocket-provider-wrapper.cjs +1 -1
  645. package/dist/contexts/websocket-provider-wrapper.cjs.map +1 -1
  646. package/dist/contexts/websocket-provider-wrapper.js +31 -15
  647. package/dist/contexts/websocket-provider-wrapper.js.map +1 -1
  648. package/dist/extensions/canvas-extension-module-loader.d.ts +11 -0
  649. package/dist/hooks/chat/record-model-switch-message.cjs +1 -1
  650. package/dist/hooks/chat/record-model-switch-message.cjs.map +1 -1
  651. package/dist/hooks/chat/record-model-switch-message.d.ts +31 -0
  652. package/dist/hooks/chat/record-model-switch-message.js +25 -12
  653. package/dist/hooks/chat/record-model-switch-message.js.map +1 -1
  654. package/dist/hooks/chat/use-plan-mode-interceptor.cjs +2 -0
  655. package/dist/hooks/chat/use-plan-mode-interceptor.cjs.map +1 -0
  656. package/dist/hooks/chat/use-plan-mode-interceptor.d.ts +16 -0
  657. package/dist/hooks/chat/use-plan-mode-interceptor.js +43 -0
  658. package/dist/hooks/chat/use-plan-mode-interceptor.js.map +1 -0
  659. package/dist/hooks/mutation/use-create-conversation.cjs +1 -1
  660. package/dist/hooks/mutation/use-create-conversation.cjs.map +1 -1
  661. package/dist/hooks/mutation/use-create-conversation.js +5 -1
  662. package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
  663. package/dist/hooks/mutation/use-manage-canvas-extensions.d.ts +12 -0
  664. package/dist/hooks/mutation/use-read-conversation-file.cjs +1 -1
  665. package/dist/hooks/mutation/use-read-conversation-file.cjs.map +1 -1
  666. package/dist/hooks/mutation/use-read-conversation-file.js +11 -4
  667. package/dist/hooks/mutation/use-read-conversation-file.js.map +1 -1
  668. package/dist/hooks/mutation/use-save-settings.cjs +1 -1
  669. package/dist/hooks/mutation/use-save-settings.js +3 -3
  670. package/dist/hooks/mutation/use-switch-llm-profile.cjs +1 -1
  671. package/dist/hooks/mutation/use-switch-llm-profile.cjs.map +1 -1
  672. package/dist/hooks/mutation/use-switch-llm-profile.js +13 -25
  673. package/dist/hooks/mutation/use-switch-llm-profile.js.map +1 -1
  674. package/dist/hooks/mutation/use-update-conversation-tags.cjs +2 -0
  675. package/dist/hooks/mutation/use-update-conversation-tags.cjs.map +1 -0
  676. package/dist/hooks/mutation/use-update-conversation-tags.d.ts +8 -0
  677. package/dist/hooks/mutation/use-update-conversation-tags.js +45 -0
  678. package/dist/hooks/mutation/use-update-conversation-tags.js.map +1 -0
  679. package/dist/hooks/query/concurrency-limiter.cjs +2 -0
  680. package/dist/hooks/query/concurrency-limiter.cjs.map +1 -0
  681. package/dist/hooks/query/concurrency-limiter.d.ts +22 -0
  682. package/dist/hooks/query/concurrency-limiter.js +29 -0
  683. package/dist/hooks/query/concurrency-limiter.js.map +1 -0
  684. package/dist/hooks/query/query-keys.cjs +1 -1
  685. package/dist/hooks/query/query-keys.cjs.map +1 -1
  686. package/dist/hooks/query/query-keys.d.ts +10 -0
  687. package/dist/hooks/query/query-keys.js +2 -2
  688. package/dist/hooks/query/query-keys.js.map +1 -1
  689. package/dist/hooks/query/use-active-conversation.cjs +1 -1
  690. package/dist/hooks/query/use-active-conversation.js +4 -4
  691. package/dist/hooks/query/use-automation-sdk-version.cjs +1 -1
  692. package/dist/hooks/query/use-automation-sdk-version.cjs.map +1 -1
  693. package/dist/hooks/query/use-automation-sdk-version.d.ts +0 -1
  694. package/dist/hooks/query/use-automation-sdk-version.js +30 -55
  695. package/dist/hooks/query/use-automation-sdk-version.js.map +1 -1
  696. package/dist/hooks/query/use-automations.cjs.map +1 -1
  697. package/dist/hooks/query/use-automations.js.map +1 -1
  698. package/dist/hooks/query/use-backends-health.cjs +1 -1
  699. package/dist/hooks/query/use-backends-health.cjs.map +1 -1
  700. package/dist/hooks/query/use-backends-health.d.ts +1 -1
  701. package/dist/hooks/query/use-backends-health.js +50 -64
  702. package/dist/hooks/query/use-backends-health.js.map +1 -1
  703. package/dist/hooks/query/use-canvas-extensions.cjs +1 -0
  704. package/dist/hooks/query/use-canvas-extensions.d.ts +5 -0
  705. package/dist/hooks/query/use-canvas-extensions.js +3 -0
  706. package/dist/hooks/query/use-commit-changes.cjs +1 -1
  707. package/dist/hooks/query/use-commit-changes.js +4 -4
  708. package/dist/hooks/query/use-conversation-skills.cjs +1 -1
  709. package/dist/hooks/query/use-conversation-skills.cjs.map +1 -1
  710. package/dist/hooks/query/use-conversation-skills.d.ts +14 -5
  711. package/dist/hooks/query/use-conversation-skills.js +20 -4
  712. package/dist/hooks/query/use-conversation-skills.js.map +1 -1
  713. package/dist/hooks/query/use-latest-automation-runs.cjs +1 -1
  714. package/dist/hooks/query/use-latest-automation-runs.js +1 -0
  715. package/dist/hooks/query/use-paginated-conversations.cjs +1 -1
  716. package/dist/hooks/query/use-paginated-conversations.cjs.map +1 -1
  717. package/dist/hooks/query/use-paginated-conversations.js +19 -16
  718. package/dist/hooks/query/use-paginated-conversations.js.map +1 -1
  719. package/dist/hooks/query/use-provider-connections.cjs +1 -1
  720. package/dist/hooks/query/use-provider-connections.cjs.map +1 -1
  721. package/dist/hooks/query/use-provider-connections.d.ts +6 -3
  722. package/dist/hooks/query/use-provider-connections.js +7 -3
  723. package/dist/hooks/query/use-provider-connections.js.map +1 -1
  724. package/dist/hooks/query/use-search-providers.cjs +1 -1
  725. package/dist/hooks/query/use-search-providers.cjs.map +1 -1
  726. package/dist/hooks/query/use-search-providers.js +17 -10
  727. package/dist/hooks/query/use-search-providers.js.map +1 -1
  728. package/dist/hooks/query/use-sub-conversations.cjs +1 -1
  729. package/dist/hooks/query/use-sub-conversations.cjs.map +1 -1
  730. package/dist/hooks/query/use-sub-conversations.js +16 -16
  731. package/dist/hooks/query/use-sub-conversations.js.map +1 -1
  732. package/dist/hooks/query/use-unified-get-git-changes.cjs +1 -1
  733. package/dist/hooks/query/use-unified-get-git-changes.js +4 -4
  734. package/dist/hooks/query/use-unified-git-commits.cjs +1 -1
  735. package/dist/hooks/query/use-unified-git-commits.js +4 -4
  736. package/dist/hooks/query/use-unified-git-diff.cjs +1 -1
  737. package/dist/hooks/query/use-unified-git-diff.js +4 -4
  738. package/dist/hooks/query/use-unified-vscode-url.cjs +1 -1
  739. package/dist/hooks/query/use-unified-vscode-url.cjs.map +1 -1
  740. package/dist/hooks/query/use-unified-vscode-url.d.ts +1 -0
  741. package/dist/hooks/query/use-unified-vscode-url.js +40 -26
  742. package/dist/hooks/query/use-unified-vscode-url.js.map +1 -1
  743. package/dist/hooks/query/use-workspace-file-content.cjs +1 -1
  744. package/dist/hooks/query/use-workspace-file-content.js +5 -5
  745. package/dist/hooks/query/use-workspace-files.cjs +1 -1
  746. package/dist/hooks/query/use-workspace-files.js +6 -6
  747. package/dist/hooks/use-acp-credential-form.d.ts +6 -0
  748. package/dist/hooks/use-acp-model-context.cjs +1 -1
  749. package/dist/hooks/use-acp-model-context.js +3 -3
  750. package/dist/hooks/use-agent-state.cjs +1 -1
  751. package/dist/hooks/use-agent-state.cjs.map +1 -1
  752. package/dist/hooks/use-agent-state.d.ts +17 -1
  753. package/dist/hooks/use-agent-state.js +19 -9
  754. package/dist/hooks/use-agent-state.js.map +1 -1
  755. package/dist/hooks/use-automation-permissions.cjs +2 -0
  756. package/dist/hooks/use-automation-permissions.cjs.map +1 -0
  757. package/dist/hooks/use-automation-permissions.d.ts +43 -0
  758. package/dist/hooks/use-automation-permissions.js +52 -0
  759. package/dist/hooks/use-automation-permissions.js.map +1 -0
  760. package/dist/hooks/use-chat-input-model-state.cjs +1 -1
  761. package/dist/hooks/use-chat-input-model-state.js +3 -3
  762. package/dist/hooks/use-conversation-overview-git-diff-stats.cjs +1 -1
  763. package/dist/hooks/use-conversation-overview-git-diff-stats.js +4 -4
  764. package/dist/hooks/use-handle-plan-click.cjs +1 -1
  765. package/dist/hooks/use-handle-plan-click.cjs.map +1 -1
  766. package/dist/hooks/use-handle-plan-click.d.ts +3 -1
  767. package/dist/hooks/use-handle-plan-click.js +85 -26
  768. package/dist/hooks/use-handle-plan-click.js.map +1 -1
  769. package/dist/hooks/use-home-automation-actions.cjs +1 -1
  770. package/dist/hooks/use-home-automation-actions.cjs.map +1 -1
  771. package/dist/hooks/use-home-automation-actions.js +1 -0
  772. package/dist/hooks/use-home-automation-actions.js.map +1 -1
  773. package/dist/hooks/use-llm-configured.cjs +1 -1
  774. package/dist/hooks/use-llm-configured.js +3 -3
  775. package/dist/hooks/use-manifest-preflight.d.ts +1 -1
  776. package/dist/hooks/use-pinned-home-route.cjs +2 -0
  777. package/dist/hooks/use-pinned-home-route.cjs.map +1 -0
  778. package/dist/hooks/use-pinned-home-route.d.ts +33 -0
  779. package/dist/hooks/use-pinned-home-route.js +34 -0
  780. package/dist/hooks/use-pinned-home-route.js.map +1 -0
  781. package/dist/hooks/use-skill-enablement.cjs +2 -0
  782. package/dist/hooks/use-skill-enablement.cjs.map +1 -0
  783. package/dist/hooks/use-skill-enablement.d.ts +14 -0
  784. package/dist/hooks/use-skill-enablement.js +80 -0
  785. package/dist/hooks/use-skill-enablement.js.map +1 -0
  786. package/dist/hooks/use-unified-websocket-status.cjs +1 -1
  787. package/dist/hooks/use-unified-websocket-status.cjs.map +1 -1
  788. package/dist/hooks/use-unified-websocket-status.d.ts +7 -0
  789. package/dist/hooks/use-unified-websocket-status.js +5 -1
  790. package/dist/hooks/use-unified-websocket-status.js.map +1 -1
  791. package/dist/i18n/declaration.cjs +1 -1
  792. package/dist/i18n/declaration.cjs.map +1 -1
  793. package/dist/i18n/declaration.d.ts +83 -14
  794. package/dist/i18n/declaration.js +1 -1
  795. package/dist/i18n/declaration.js.map +1 -1
  796. package/dist/i18n/translation.cjs +3 -3
  797. package/dist/i18n/translation.cjs.map +1 -1
  798. package/dist/i18n/translation.js +1575 -402
  799. package/dist/i18n/translation.js.map +1 -1
  800. package/dist/index.cjs +1 -1
  801. package/dist/index.js +15 -14
  802. package/dist/lib/index.cjs +1 -1
  803. package/dist/lib/index.d.ts +1 -0
  804. package/dist/lib/index.js +1 -0
  805. package/dist/locales/ar/openhands.json +94 -25
  806. package/dist/locales/ca/openhands.json +94 -25
  807. package/dist/locales/de/openhands.json +94 -25
  808. package/dist/locales/en/openhands.json +94 -25
  809. package/dist/locales/es/openhands.json +94 -25
  810. package/dist/locales/fr/openhands.json +94 -25
  811. package/dist/locales/it/openhands.json +94 -25
  812. package/dist/locales/ja/openhands.json +94 -25
  813. package/dist/locales/ko-KR/openhands.json +94 -25
  814. package/dist/locales/no/openhands.json +94 -25
  815. package/dist/locales/pt/openhands.json +94 -25
  816. package/dist/locales/tr/openhands.json +94 -25
  817. package/dist/locales/uk/openhands.json +94 -25
  818. package/dist/locales/zh-CN/openhands.json +94 -25
  819. package/dist/locales/zh-TW/openhands.json +94 -25
  820. package/dist/manifests/automation-insights.cjs.map +1 -1
  821. package/dist/manifests/automation-insights.d.ts +10 -2
  822. package/dist/manifests/automation-insights.js.map +1 -1
  823. package/dist/manifests/automation-interface.cjs +1 -1
  824. package/dist/manifests/automation-interface.cjs.map +1 -1
  825. package/dist/manifests/automation-interface.d.ts +6 -0
  826. package/dist/manifests/automation-interface.js +11 -8
  827. package/dist/manifests/automation-interface.js.map +1 -1
  828. package/dist/manifests/automation-setup.cjs +1 -1
  829. package/dist/manifests/automation-setup.cjs.map +1 -1
  830. package/dist/manifests/automation-setup.d.ts +9 -16
  831. package/dist/manifests/automation-setup.js +17 -7
  832. package/dist/manifests/automation-setup.js.map +1 -1
  833. package/dist/manifests/manifest-actions.d.ts +1 -1
  834. package/dist/manifests/manifest-capabilities.d.ts +3 -1
  835. package/dist/manifests/manifest-local-validation.cjs +2 -0
  836. package/dist/manifests/manifest-local-validation.cjs.map +1 -0
  837. package/dist/manifests/manifest-local-validation.d.ts +15 -11
  838. package/dist/manifests/manifest-local-validation.js +8 -0
  839. package/dist/manifests/manifest-local-validation.js.map +1 -0
  840. package/dist/manifests/manifest-template.cjs +2 -0
  841. package/dist/manifests/manifest-template.cjs.map +1 -0
  842. package/dist/manifests/manifest-template.d.ts +4 -4
  843. package/dist/manifests/manifest-template.js +12 -0
  844. package/dist/manifests/manifest-template.js.map +1 -0
  845. package/dist/manifests/manifest-validation.cjs +1 -1
  846. package/dist/manifests/manifest-validation.cjs.map +1 -1
  847. package/dist/manifests/manifest-validation.js +106 -28
  848. package/dist/manifests/manifest-validation.js.map +1 -1
  849. package/dist/manifests/types.cjs.map +1 -1
  850. package/dist/manifests/types.d.ts +39 -4
  851. package/dist/manifests/types.js.map +1 -1
  852. package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs +45 -4
  853. package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs.map +1 -1
  854. package/dist/node_modules/@openhands/extensions/automations/bundle-index.js +1 -1
  855. package/dist/node_modules/@openhands/extensions/automations/bundle-index.js.map +1 -1
  856. package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.cjs +8 -0
  857. package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.cjs.map +1 -0
  858. package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.js +221 -0
  859. package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.js.map +1 -0
  860. package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs +1 -1
  861. package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs.map +1 -1
  862. package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js +5 -0
  863. package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js.map +1 -1
  864. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs +2 -2
  865. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs.map +1 -1
  866. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js +6 -1
  867. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js.map +1 -1
  868. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs +2 -2
  869. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs.map +1 -1
  870. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js +6 -1
  871. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js.map +1 -1
  872. package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.cjs +1 -1
  873. package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.cjs.map +1 -1
  874. package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.js +5 -0
  875. package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.js.map +1 -1
  876. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.cjs +9 -0
  877. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.cjs.map +1 -0
  878. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.js +21 -0
  879. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.js.map +1 -0
  880. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.cjs +9 -0
  881. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.cjs.map +1 -0
  882. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.js +21 -0
  883. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.js.map +1 -0
  884. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.cjs +9 -0
  885. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.cjs.map +1 -0
  886. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.js +21 -0
  887. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.js.map +1 -0
  888. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.cjs +9 -0
  889. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.cjs.map +1 -0
  890. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.js +21 -0
  891. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.js.map +1 -0
  892. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.cjs +9 -0
  893. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.cjs.map +1 -0
  894. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.js +21 -0
  895. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.js.map +1 -0
  896. package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs +1 -1
  897. package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs.map +1 -1
  898. package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js +5 -0
  899. package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js.map +1 -1
  900. package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs +30 -0
  901. package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs.map +1 -0
  902. package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js +65 -0
  903. package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js.map +1 -0
  904. package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs +1 -1
  905. package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs.map +1 -1
  906. package/dist/node_modules/@openhands/extensions/automations/catalog-index.js +28 -14
  907. package/dist/node_modules/@openhands/extensions/automations/catalog-index.js.map +1 -1
  908. package/dist/node_modules/@openhands/extensions/automations/interface.cjs +1 -1
  909. package/dist/node_modules/@openhands/extensions/automations/interface.cjs.map +1 -1
  910. package/dist/node_modules/@openhands/extensions/automations/interface.js +2 -1
  911. package/dist/node_modules/@openhands/extensions/automations/interface.js.map +1 -1
  912. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs +1 -1
  913. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs.map +1 -1
  914. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js +2 -2
  915. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js.map +1 -1
  916. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs +2 -0
  917. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs.map +1 -0
  918. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js +59 -0
  919. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js.map +1 -0
  920. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs +1 -1
  921. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs.map +1 -1
  922. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js +1 -1
  923. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js.map +1 -1
  924. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs +1 -1
  925. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs.map +1 -1
  926. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js +74 -72
  927. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js.map +1 -1
  928. package/dist/node_modules/@openhands/extensions/skills/index.cjs +42 -3
  929. package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
  930. package/dist/node_modules/@openhands/extensions/skills/index.js +22 -3
  931. package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
  932. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.cjs +1 -1
  933. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.js +1 -1
  934. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs +1 -1
  935. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs.map +1 -1
  936. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js +8 -7
  937. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js.map +1 -1
  938. package/dist/node_modules/@openhands/typescript-client/dist/index.cjs +1 -1
  939. package/dist/node_modules/@openhands/typescript-client/dist/index.js +2 -2
  940. package/dist/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs +1 -1
  941. package/dist/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js +1 -1
  942. package/dist/node_modules/lucide-react/dist/esm/icons/blocks.cjs +2 -0
  943. package/dist/node_modules/lucide-react/dist/esm/icons/blocks.cjs.map +1 -0
  944. package/dist/node_modules/lucide-react/dist/esm/icons/blocks.js +16 -0
  945. package/dist/node_modules/lucide-react/dist/esm/icons/blocks.js.map +1 -0
  946. package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.cjs +2 -0
  947. package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.cjs.map +1 -0
  948. package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.js +21 -0
  949. package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.js.map +1 -0
  950. package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.cjs +2 -0
  951. package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.cjs.map +1 -0
  952. package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js +23 -0
  953. package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js.map +1 -0
  954. package/dist/node_modules/lucide-react/dist/esm/icons/shrink.cjs +2 -0
  955. package/dist/node_modules/lucide-react/dist/esm/icons/shrink.cjs.map +1 -0
  956. package/dist/node_modules/lucide-react/dist/esm/icons/shrink.js +23 -0
  957. package/dist/node_modules/lucide-react/dist/esm/icons/shrink.js.map +1 -0
  958. package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.cjs +2 -0
  959. package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.cjs.map +1 -0
  960. package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.js +43 -0
  961. package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.js.map +1 -0
  962. package/dist/node_modules/lucide-react/dist/esm/icons/tags.cjs +2 -0
  963. package/dist/node_modules/lucide-react/dist/esm/icons/tags.cjs.map +1 -0
  964. package/dist/node_modules/lucide-react/dist/esm/icons/tags.js +22 -0
  965. package/dist/node_modules/lucide-react/dist/esm/icons/tags.js.map +1 -0
  966. package/dist/package.cjs +1 -1
  967. package/dist/package.cjs.map +1 -1
  968. package/dist/package.js +5 -5
  969. package/dist/package.js.map +1 -1
  970. package/dist/routes/agent-settings.d.ts +12 -0
  971. package/dist/routes/app-settings.cjs +1 -1
  972. package/dist/routes/app-settings.cjs.map +1 -1
  973. package/dist/routes/app-settings.js +11 -11
  974. package/dist/routes/files-tab.cjs +1 -1
  975. package/dist/routes/files-tab.cjs.map +1 -1
  976. package/dist/routes/files-tab.js +14 -14
  977. package/dist/routes/files-tab.js.map +1 -1
  978. package/dist/routes/llm-settings.cjs +1 -1
  979. package/dist/routes/llm-settings.cjs.map +1 -1
  980. package/dist/routes/llm-settings.d.ts +3 -1
  981. package/dist/routes/llm-settings.js +100 -91
  982. package/dist/routes/llm-settings.js.map +1 -1
  983. package/dist/routes/planner-tab.cjs +1 -1
  984. package/dist/routes/planner-tab.cjs.map +1 -1
  985. package/dist/routes/planner-tab.js +44 -28
  986. package/dist/routes/planner-tab.js.map +1 -1
  987. package/dist/services/canvas-ui.cjs +1 -1
  988. package/dist/services/canvas-ui.cjs.map +1 -1
  989. package/dist/services/canvas-ui.d.ts +5 -0
  990. package/dist/services/canvas-ui.js +24 -10
  991. package/dist/services/canvas-ui.js.map +1 -1
  992. package/dist/services/settings.cjs +1 -1
  993. package/dist/services/settings.cjs.map +1 -1
  994. package/dist/services/settings.js +3 -2
  995. package/dist/services/settings.js.map +1 -1
  996. package/dist/services/telemetry.cjs +1 -1
  997. package/dist/services/telemetry.cjs.map +1 -1
  998. package/dist/services/telemetry.d.ts +5 -0
  999. package/dist/services/telemetry.js +122 -115
  1000. package/dist/services/telemetry.js.map +1 -1
  1001. package/dist/stores/conversation-panel-preferences-store.cjs +1 -1
  1002. package/dist/stores/conversation-panel-preferences-store.cjs.map +1 -1
  1003. package/dist/stores/conversation-panel-preferences-store.d.ts +32 -5
  1004. package/dist/stores/conversation-panel-preferences-store.js +29 -12
  1005. package/dist/stores/conversation-panel-preferences-store.js.map +1 -1
  1006. package/dist/stores/conversation-state-store.cjs +1 -1
  1007. package/dist/stores/conversation-state-store.cjs.map +1 -1
  1008. package/dist/stores/conversation-state-store.d.ts +9 -3
  1009. package/dist/stores/conversation-state-store.js +6 -3
  1010. package/dist/stores/conversation-state-store.js.map +1 -1
  1011. package/dist/stores/conversation-store.cjs +1 -1
  1012. package/dist/stores/conversation-store.cjs.map +1 -1
  1013. package/dist/stores/conversation-store.d.ts +2 -0
  1014. package/dist/stores/conversation-store.js +3 -0
  1015. package/dist/stores/conversation-store.js.map +1 -1
  1016. package/dist/stores/model-store.cjs +1 -1
  1017. package/dist/stores/model-store.cjs.map +1 -1
  1018. package/dist/stores/model-store.d.ts +7 -0
  1019. package/dist/stores/model-store.js +4 -0
  1020. package/dist/stores/model-store.js.map +1 -1
  1021. package/dist/types/automation.cjs.map +1 -1
  1022. package/dist/types/automation.d.ts +66 -1
  1023. package/dist/types/automation.js.map +1 -1
  1024. package/dist/types/canvas-extension.cjs +2 -0
  1025. package/dist/types/canvas-extension.cjs.map +1 -0
  1026. package/dist/types/canvas-extension.d.ts +77 -0
  1027. package/dist/types/canvas-extension.js +6 -0
  1028. package/dist/types/canvas-extension.js.map +1 -0
  1029. package/dist/types/settings.d.ts +7 -0
  1030. package/dist/ui/context-menu.d.ts +1 -1
  1031. package/dist/ui/help-link.cjs +1 -1
  1032. package/dist/ui/help-link.cjs.map +1 -1
  1033. package/dist/ui/help-link.d.ts +6 -1
  1034. package/dist/ui/help-link.js +32 -18
  1035. package/dist/ui/help-link.js.map +1 -1
  1036. package/dist/ui/toggle-switch.cjs +1 -1
  1037. package/dist/ui/toggle-switch.cjs.map +1 -1
  1038. package/dist/ui/toggle-switch.d.ts +4 -1
  1039. package/dist/ui/toggle-switch.js +4 -3
  1040. package/dist/ui/toggle-switch.js.map +1 -1
  1041. package/dist/utils/acp-auth-display.d.ts +35 -0
  1042. package/dist/utils/automation-catalog.cjs +1 -1
  1043. package/dist/utils/automation-catalog.cjs.map +1 -1
  1044. package/dist/utils/automation-catalog.d.ts +12 -1
  1045. package/dist/utils/automation-catalog.js +42 -12
  1046. package/dist/utils/automation-catalog.js.map +1 -1
  1047. package/dist/utils/automation-run-display.cjs +2 -0
  1048. package/dist/utils/automation-run-display.cjs.map +1 -0
  1049. package/dist/utils/automation-run-display.d.ts +20 -0
  1050. package/dist/utils/automation-run-display.js +85 -0
  1051. package/dist/utils/automation-run-display.js.map +1 -0
  1052. package/dist/utils/automation-schedule.cjs +1 -1
  1053. package/dist/utils/automation-schedule.cjs.map +1 -1
  1054. package/dist/utils/automation-schedule.d.ts +16 -0
  1055. package/dist/utils/automation-schedule.js +2 -0
  1056. package/dist/utils/automation-schedule.js.map +1 -1
  1057. package/dist/utils/cache-utils.cjs +1 -1
  1058. package/dist/utils/cache-utils.js +5 -5
  1059. package/dist/utils/constants.cjs +1 -1
  1060. package/dist/utils/constants.cjs.map +1 -1
  1061. package/dist/utils/constants.d.ts +4 -0
  1062. package/dist/utils/constants.js +23 -3
  1063. package/dist/utils/constants.js.map +1 -1
  1064. package/dist/utils/format-event-timestamp.cjs +2 -0
  1065. package/dist/utils/format-event-timestamp.cjs.map +1 -0
  1066. package/dist/utils/format-event-timestamp.d.ts +1 -0
  1067. package/dist/utils/format-event-timestamp.js +13 -0
  1068. package/dist/utils/format-event-timestamp.js.map +1 -0
  1069. package/dist/utils/format-model-name.cjs +1 -1
  1070. package/dist/utils/format-model-name.cjs.map +1 -1
  1071. package/dist/utils/format-model-name.d.ts +7 -3
  1072. package/dist/utils/format-model-name.js +6 -11
  1073. package/dist/utils/format-model-name.js.map +1 -1
  1074. package/dist/utils/format-relative-time.cjs +1 -1
  1075. package/dist/utils/format-relative-time.cjs.map +1 -1
  1076. package/dist/utils/format-relative-time.d.ts +7 -0
  1077. package/dist/utils/format-relative-time.js +7 -2
  1078. package/dist/utils/format-relative-time.js.map +1 -1
  1079. package/dist/utils/git-diff-stats.cjs +2 -2
  1080. package/dist/utils/git-diff-stats.cjs.map +1 -1
  1081. package/dist/utils/git-diff-stats.d.ts +4 -0
  1082. package/dist/utils/git-diff-stats.js +12 -2
  1083. package/dist/utils/git-diff-stats.js.map +1 -1
  1084. package/dist/utils/path-utils.cjs +1 -1
  1085. package/dist/utils/path-utils.cjs.map +1 -1
  1086. package/dist/utils/path-utils.d.ts +15 -3
  1087. package/dist/utils/path-utils.js +29 -3
  1088. package/dist/utils/path-utils.js.map +1 -1
  1089. package/dist/utils/plan-file.cjs +4 -0
  1090. package/dist/utils/plan-file.cjs.map +1 -0
  1091. package/dist/utils/plan-file.d.ts +18 -0
  1092. package/dist/utils/plan-file.js +58 -0
  1093. package/dist/utils/plan-file.js.map +1 -0
  1094. package/dist/utils/recommended-automation-rail.cjs +1 -1
  1095. package/dist/utils/recommended-automation-rail.cjs.map +1 -1
  1096. package/dist/utils/recommended-automation-rail.js +1 -0
  1097. package/dist/utils/recommended-automation-rail.js.map +1 -1
  1098. package/dist/utils/scroll-fade-state.cjs +1 -1
  1099. package/dist/utils/scroll-fade-state.cjs.map +1 -1
  1100. package/dist/utils/scroll-fade-state.d.ts +6 -0
  1101. package/dist/utils/scroll-fade-state.js +8 -1
  1102. package/dist/utils/scroll-fade-state.js.map +1 -1
  1103. package/dist/utils/sdk-settings-schema.cjs +1 -1
  1104. package/dist/utils/sdk-settings-schema.cjs.map +1 -1
  1105. package/dist/utils/sdk-settings-schema.d.ts +1 -0
  1106. package/dist/utils/sdk-settings-schema.js +25 -22
  1107. package/dist/utils/sdk-settings-schema.js.map +1 -1
  1108. package/dist/utils/skill-enablement.cjs +2 -0
  1109. package/dist/utils/skill-enablement.cjs.map +1 -0
  1110. package/dist/utils/skill-enablement.d.ts +51 -0
  1111. package/dist/utils/skill-enablement.js +31 -0
  1112. package/dist/utils/skill-enablement.js.map +1 -0
  1113. package/dist/utils/utils.cjs +1 -1
  1114. package/dist/utils/utils.cjs.map +1 -1
  1115. package/dist/utils/utils.js +11 -11
  1116. package/dist/utils/utils.js.map +1 -1
  1117. package/dist/utils/vscode-origin.cjs +2 -0
  1118. package/dist/utils/vscode-origin.cjs.map +1 -0
  1119. package/dist/utils/vscode-origin.d.ts +55 -0
  1120. package/dist/utils/vscode-origin.js +27 -0
  1121. package/dist/utils/vscode-origin.js.map +1 -0
  1122. package/dist/utils/workspace-mode.d.ts +4 -0
  1123. package/package.json +5 -5
  1124. package/scripts/check-sdk-version-sync.mjs +6 -6
  1125. package/scripts/check-translation-completeness.cjs +1 -0
  1126. package/scripts/dev-extra-backend.mjs +28 -9
  1127. package/scripts/dev-safe.mjs +81 -8
  1128. package/scripts/dev-static.mjs +35 -37
  1129. package/scripts/dev-with-automation.mjs +83 -2
  1130. package/scripts/ingress.mjs +27 -1
  1131. package/scripts/static-server.mjs +107 -2
  1132. package/tools/canvas_ui_tool.py +19 -0
  1133. package/build/assets/active-backend-context-DKFSMbn3.js +0 -2
  1134. package/build/assets/agent-profiles-settings-D4cY5U2T.js +0 -1
  1135. package/build/assets/agent-server-conversation-service.api-DozDKIW_.js +0 -86
  1136. package/build/assets/agent-settings-351vXWc9.js +0 -2
  1137. package/build/assets/agent-settings-Ce7BDZ6I.js +0 -1
  1138. package/build/assets/alert-banner-Kyy1YWZU.js +0 -1
  1139. package/build/assets/api-key-entry-screen-INIxqAMs.js +0 -1
  1140. package/build/assets/automation-detail-DXDhUwPq.js +0 -3
  1141. package/build/assets/automation-git-sync-CzyS4cn1.js +0 -1
  1142. package/build/assets/automation-setup-route-FRr05f_g.js +0 -1
  1143. package/build/assets/automations-list-CERuQWE6.js +0 -1
  1144. package/build/assets/backend-form-modal-DK78-jn1.js +0 -1
  1145. package/build/assets/bot-C-0Wu7vQ.js +0 -1
  1146. package/build/assets/browser-11etCQ04.js +0 -7
  1147. package/build/assets/check-Cf2YoT90.js +0 -1
  1148. package/build/assets/chevron-down-C3OQ-ehx.js +0 -1
  1149. package/build/assets/chevron-right-CN1uUiJ1.js +0 -1
  1150. package/build/assets/circle-check-g5yeGMd-.js +0 -1
  1151. package/build/assets/command-menu-BZQ8S3Ke.js +0 -1
  1152. package/build/assets/commits-tab-DZtJgaDM.js +0 -1
  1153. package/build/assets/confirmation-modal-Bk4JRcCM.js +0 -1
  1154. package/build/assets/conversation-CchMzpGl.js +0 -1
  1155. package/build/assets/conversation-Dpzftz57.js +0 -93
  1156. package/build/assets/conversation-panel-CchMzpGl.js +0 -1
  1157. package/build/assets/conversation-state-store-a9d2fxRc.js +0 -1
  1158. package/build/assets/edit-automation-modal-D-urtv8n.js +0 -1
  1159. package/build/assets/empty-state-CvaVahVr.js +0 -1
  1160. package/build/assets/enum-filter-dropdown-DliX_Lo0.js +0 -1
  1161. package/build/assets/extensions-hub-CFduxBnk.js +0 -1
  1162. package/build/assets/extensions-navigation-BeC224yX.js +0 -1
  1163. package/build/assets/external-link-DFpYunfj.js +0 -1
  1164. package/build/assets/files-tab-CL3J9b3p.js +0 -1
  1165. package/build/assets/format-model-name-BNPKVsIq.js +0 -1
  1166. package/build/assets/get-git-path-DlAJa_i6.js +0 -1
  1167. package/build/assets/git-repo-dropdown-DGMEhz7d.js +0 -1
  1168. package/build/assets/home-BCGlNJCA.js +0 -1
  1169. package/build/assets/home-DB1pRqTC.js +0 -1
  1170. package/build/assets/home-automation-run-tooltip-CooFQRIG.js +0 -1
  1171. package/build/assets/home-store-Dl1dPE58.js +0 -1
  1172. package/build/assets/index-home-DB1pRqTC.js +0 -1
  1173. package/build/assets/info-uYSVzX86.js +0 -1
  1174. package/build/assets/install-server-modal-BbJdhzet.js +0 -1
  1175. package/build/assets/kebab-menu-item-content-BYokkRHi.js +0 -1
  1176. package/build/assets/list-filter-OFkpRrmi.js +0 -1
  1177. package/build/assets/llm-not-configured-banner-BqqYnJ1t.js +0 -27
  1178. package/build/assets/llm-settings-CnDbbmVW.js +0 -1
  1179. package/build/assets/llm-settings-S8Yjg__1.js +0 -1
  1180. package/build/assets/llm-subscription-service-BpPfzW4x.js +0 -1
  1181. package/build/assets/loader-circle-nvrwthvj.js +0 -1
  1182. package/build/assets/manage-backends-modal-BCUPswyl.js +0 -1
  1183. package/build/assets/manifest-58597dde.js +0 -1
  1184. package/build/assets/markdown-renderer-Cb2sBWtV.js +0 -8
  1185. package/build/assets/mcp-page-Bm4K2NQq.js +0 -9
  1186. package/build/assets/messages-BTN5thLe.js +0 -40
  1187. package/build/assets/onboarding-Cx_kaiD1.js +0 -1
  1188. package/build/assets/onboarding-modal-vMwn7ihv.js +0 -1
  1189. package/build/assets/organization-service.api-C8XpQ0pM.js +0 -1
  1190. package/build/assets/pencil-Clh1Wjvh.js +0 -1
  1191. package/build/assets/planner-tab-DQvDU3ap.js +0 -1
  1192. package/build/assets/plug-BuQhHSSG.js +0 -1
  1193. package/build/assets/plugins-management-service-BjYeF0b0.js +0 -1
  1194. package/build/assets/plus-CEKne-Yp.js +0 -1
  1195. package/build/assets/profiles-service.api-QB-T_u-g.js +0 -1
  1196. package/build/assets/providers-FfSZ5TXP.js +0 -1
  1197. package/build/assets/proxy-tcFL2yTQ.js +0 -1
  1198. package/build/assets/recommended-automations-launcher-Bw8uC4V6.js +0 -1
  1199. package/build/assets/refresh-cw-Bh69DyYO.js +0 -1
  1200. package/build/assets/root-BLeQfBEq.css +0 -1
  1201. package/build/assets/root-ZKKYPR1Z.js +0 -2
  1202. package/build/assets/root-layout-luJoE9IG.js +0 -2
  1203. package/build/assets/schema-field-Csw5fhtN.js +0 -1
  1204. package/build/assets/scroll-fade-state-Dw-i4SGq.js +0 -1
  1205. package/build/assets/sdk-section-page-HTffvm7Q.js +0 -1
  1206. package/build/assets/secret-form-HTUbYw5o.js +0 -1
  1207. package/build/assets/secrets-service-BTor9uAU.js +0 -1
  1208. package/build/assets/settings-BlmrkwRi.js +0 -1
  1209. package/build/assets/settings-DcNPxz0v.js +0 -1
  1210. package/build/assets/settings-index-CKq0b0Vg.js +0 -1
  1211. package/build/assets/settings-service.api-B2agVfjL.js +0 -1
  1212. package/build/assets/shared-conversation-B55pCyBG.js +0 -1
  1213. package/build/assets/shield-check-CFDViW82.js +0 -1
  1214. package/build/assets/sidebar-mobile-menu-toggle-BOtyJHwE.js +0 -1
  1215. package/build/assets/sidebar-nav-link-CPzhyHQg.js +0 -1
  1216. package/build/assets/sidebar-store-DtpU7zaI.js +0 -1
  1217. package/build/assets/skill-filter-CWZ5kjcg.js +0 -2
  1218. package/build/assets/skill-scope-CV1dkAbW.js +0 -1
  1219. package/build/assets/skills-plugins-DGHULTq6.js +0 -1
  1220. package/build/assets/skills-settings-CM1lFv3e.js +0 -1
  1221. package/build/assets/styled-tooltip-Dl06rkpY.js +0 -1
  1222. package/build/assets/toggle-switch-Fd_QGz0r.js +0 -1
  1223. package/build/assets/trash-2-Dl8_RGz0.js +0 -1
  1224. package/build/assets/trash-_RMt7Ayc.js +0 -1
  1225. package/build/assets/triangle-alert-SM-q4NU_.js +0 -1
  1226. package/build/assets/usage-tab-BcfWV6db.js +0 -1
  1227. package/build/assets/use-acp-credential-form-BsSW5NHG.js +0 -1
  1228. package/build/assets/use-activate-agent-profile-B2NS8nA5.js +0 -1
  1229. package/build/assets/use-agent-profiles-DWBPC0Si.js +0 -1
  1230. package/build/assets/use-config-Bft35DOK.js +0 -1
  1231. package/build/assets/use-create-conversation-DwN5vv2f.js +0 -1
  1232. package/build/assets/use-create-secret-BSxJMxHp.js +0 -1
  1233. package/build/assets/use-has-permission-B3C8rQmR.js +0 -1
  1234. package/build/assets/use-is-authed-CFGkY3-Z.js +0 -1
  1235. package/build/assets/use-llm-configured-BI6obxsc.js +0 -1
  1236. package/build/assets/use-llm-profiles-djGAhTWL.js +0 -1
  1237. package/build/assets/use-manifest-capabilities-3z0-1G59.js +0 -1
  1238. package/build/assets/use-onboarding-completion-BXpyUSsJ.js +0 -1
  1239. package/build/assets/use-plugins-marketplace-DI4_pK56.js +0 -1
  1240. package/build/assets/use-save-agent-profile-DdBSTdpN.js +0 -1
  1241. package/build/assets/use-settings-C5VhGpqd.js +0 -1
  1242. package/build/assets/use-settings-nav-items-DHaUu1Dg.js +0 -16
  1243. package/build/assets/use-tracking-D5t9otIF.js +0 -3
  1244. package/build/assets/utils-DaCIEEQP.js +0 -1
  1245. package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-ZixYGy6E.js +0 -186
  1246. package/build/assets/vendor~index-home~home~conversation-panel~conversation~alert-banner-B3qC_oj8.js +0 -1
  1247. package/build/assets/vendor~root-layout-BlUaZ18v.js +0 -1
  1248. package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-B2OLKL7N.js +0 -1
  1249. package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz-MAyNb.js +0 -1
  1250. package/build/assets/x-DkgltWa0.js +0 -1
  1251. package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs +0 -2
  1252. package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs.map +0 -1
  1253. package/dist/components/features/conversation-panel/conversation-panel-filter-menu.d.ts +0 -35
  1254. package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js +0 -247
  1255. package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js.map +0 -1
  1256. package/dist/components/features/tips/random-tip.d.ts +0 -2
  1257. package/dist/hooks/query/use-skills.cjs +0 -2
  1258. package/dist/hooks/query/use-skills.cjs.map +0 -1
  1259. package/dist/hooks/query/use-skills.d.ts +0 -7
  1260. package/dist/hooks/query/use-skills.js +0 -13
  1261. package/dist/hooks/query/use-skills.js.map +0 -1
  1262. package/dist/hooks/use-has-permission.cjs +0 -2
  1263. package/dist/hooks/use-has-permission.cjs.map +0 -1
  1264. package/dist/hooks/use-has-permission.d.ts +0 -1
  1265. package/dist/hooks/use-has-permission.js +0 -8
  1266. package/dist/hooks/use-has-permission.js.map +0 -1
  1267. package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs +0 -2
  1268. package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs.map +0 -1
  1269. package/dist/node_modules/lucide-react/dist/esm/icons/eye.js +0 -14
  1270. package/dist/node_modules/lucide-react/dist/esm/icons/eye.js.map +0 -1
  1271. package/dist/utils/tips.d.ts +0 -7
  1272. package/dist/utils/workspace-relative-path.cjs +0 -2
  1273. package/dist/utils/workspace-relative-path.cjs.map +0 -1
  1274. package/dist/utils/workspace-relative-path.d.ts +0 -10
  1275. package/dist/utils/workspace-relative-path.js +0 -22
  1276. package/dist/utils/workspace-relative-path.js.map +0 -1
  1277. /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~i58xkef6-cHFhpUBq.js} +0 -0
@@ -1,3 +1,3 @@
1
1
  const e=require("../../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../features/chat/chat-message.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("react/jsx-runtime");function i({event:e,actions:n,isFromPlanningAgent:i=!1}){let a=e.thought.filter(e=>e.type===`text`).map(e=>e.text).join(`
2
- `);return a?(0,r.jsx)(t.ChatMessage,{type:`agent`,message:a,actions:n,isFromPlanningAgent:i}):null}exports.ThoughtEventMessage=i;
2
+ `);return a?(0,r.jsx)(t.ChatMessage,{type:`agent`,message:a,actions:n,isFromPlanningAgent:i,timestamp:e.timestamp}):null}exports.ThoughtEventMessage=i;
3
3
  //# sourceMappingURL=thought-event-message.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"thought-event-message.cjs","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/thought-event-message.tsx"],"sourcesContent":["import React from \"react\";\nimport { ActionEvent } from \"#/types/agent-server/core\";\nimport { ChatMessage } from \"../../../features/chat/chat-message\";\n\ninterface ThoughtEventMessageProps {\n event: ActionEvent;\n actions?: Array<{\n icon: React.ReactNode;\n onClick: () => void;\n tooltip?: string;\n }>;\n isFromPlanningAgent?: boolean;\n}\n\nexport function ThoughtEventMessage({\n event,\n actions,\n isFromPlanningAgent = false,\n}: ThoughtEventMessageProps) {\n // Extract thought content from the action event\n const thoughtContent = event.thought\n .filter((t) => t.type === \"text\")\n .map((t) => t.text)\n .join(\"\\n\");\n\n // If there's no thought content, don't render anything\n if (!thoughtContent) {\n return null;\n }\n\n return (\n <ChatMessage\n type=\"agent\"\n message={thoughtContent}\n actions={actions}\n isFromPlanningAgent={isFromPlanningAgent}\n />\n );\n}\n"],"mappings":"8LAcA,SAAgB,EAAoB,CAClC,QACA,UACA,sBAAsB,IACK,CAE3B,IAAM,EAAiB,EAAM,QAC1B,OAAQ,GAAM,EAAE,OAAS,MAAM,EAC/B,IAAK,GAAM,EAAE,IAAI,EACjB,KAAK;CAAI,EAOZ,OAJK,GAKH,EAAA,EAAA,KAAC,EAAA,YAAD,CACE,KAAK,QACL,QAAS,EACA,UACY,qBACtB,CAAA,EATM,IAWX"}
1
+ {"version":3,"file":"thought-event-message.cjs","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/thought-event-message.tsx"],"sourcesContent":["import React from \"react\";\nimport { ActionEvent } from \"#/types/agent-server/core\";\nimport { ChatMessage } from \"../../../features/chat/chat-message\";\n\ninterface ThoughtEventMessageProps {\n event: ActionEvent;\n actions?: Array<{\n icon: React.ReactNode;\n onClick: () => void;\n tooltip?: string;\n }>;\n isFromPlanningAgent?: boolean;\n}\n\nexport function ThoughtEventMessage({\n event,\n actions,\n isFromPlanningAgent = false,\n}: ThoughtEventMessageProps) {\n // Extract thought content from the action event\n const thoughtContent = event.thought\n .filter((t) => t.type === \"text\")\n .map((t) => t.text)\n .join(\"\\n\");\n\n // If there's no thought content, don't render anything\n if (!thoughtContent) {\n return null;\n }\n\n return (\n <ChatMessage\n type=\"agent\"\n message={thoughtContent}\n actions={actions}\n isFromPlanningAgent={isFromPlanningAgent}\n timestamp={event.timestamp}\n />\n );\n}\n"],"mappings":"8LAcA,SAAgB,EAAoB,CAClC,QACA,UACA,sBAAsB,IACK,CAE3B,IAAM,EAAiB,EAAM,QAC1B,OAAQ,GAAM,EAAE,OAAS,MAAM,EAC/B,IAAK,GAAM,EAAE,IAAI,EACjB,KAAK;CAAI,EAOZ,OAJK,GAKH,EAAA,EAAA,KAAC,EAAA,YAAD,CACE,KAAK,QACL,QAAS,EACA,UACY,sBACrB,UAAW,EAAM,SAClB,CAAA,EAVM,IAYX"}
@@ -8,7 +8,8 @@ function n({ event: n, actions: r, isFromPlanningAgent: i = !1 }) {
8
8
  type: "agent",
9
9
  message: a,
10
10
  actions: r,
11
- isFromPlanningAgent: i
11
+ isFromPlanningAgent: i,
12
+ timestamp: n.timestamp
12
13
  }) : null;
13
14
  }
14
15
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"thought-event-message.js","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/thought-event-message.tsx"],"sourcesContent":["import React from \"react\";\nimport { ActionEvent } from \"#/types/agent-server/core\";\nimport { ChatMessage } from \"../../../features/chat/chat-message\";\n\ninterface ThoughtEventMessageProps {\n event: ActionEvent;\n actions?: Array<{\n icon: React.ReactNode;\n onClick: () => void;\n tooltip?: string;\n }>;\n isFromPlanningAgent?: boolean;\n}\n\nexport function ThoughtEventMessage({\n event,\n actions,\n isFromPlanningAgent = false,\n}: ThoughtEventMessageProps) {\n // Extract thought content from the action event\n const thoughtContent = event.thought\n .filter((t) => t.type === \"text\")\n .map((t) => t.text)\n .join(\"\\n\");\n\n // If there's no thought content, don't render anything\n if (!thoughtContent) {\n return null;\n }\n\n return (\n <ChatMessage\n type=\"agent\"\n message={thoughtContent}\n actions={actions}\n isFromPlanningAgent={isFromPlanningAgent}\n />\n );\n}\n"],"mappings":";;;;AAcA,SAAgB,EAAoB,EAClC,UACA,YACA,yBAAsB,MACK;CAE3B,IAAM,IAAiB,EAAM,QAC1B,QAAQ,MAAM,EAAE,SAAS,MAAM,EAC/B,KAAK,MAAM,EAAE,IAAI,EACjB,KAAK,IAAI;CAOZ,OAJK,IAKH,kBAAC,GAAD;EACE,MAAK;EACL,SAAS;EACA;EACY;CACtB,CAAA,IATM;AAWX"}
1
+ {"version":3,"file":"thought-event-message.js","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/thought-event-message.tsx"],"sourcesContent":["import React from \"react\";\nimport { ActionEvent } from \"#/types/agent-server/core\";\nimport { ChatMessage } from \"../../../features/chat/chat-message\";\n\ninterface ThoughtEventMessageProps {\n event: ActionEvent;\n actions?: Array<{\n icon: React.ReactNode;\n onClick: () => void;\n tooltip?: string;\n }>;\n isFromPlanningAgent?: boolean;\n}\n\nexport function ThoughtEventMessage({\n event,\n actions,\n isFromPlanningAgent = false,\n}: ThoughtEventMessageProps) {\n // Extract thought content from the action event\n const thoughtContent = event.thought\n .filter((t) => t.type === \"text\")\n .map((t) => t.text)\n .join(\"\\n\");\n\n // If there's no thought content, don't render anything\n if (!thoughtContent) {\n return null;\n }\n\n return (\n <ChatMessage\n type=\"agent\"\n message={thoughtContent}\n actions={actions}\n isFromPlanningAgent={isFromPlanningAgent}\n timestamp={event.timestamp}\n />\n );\n}\n"],"mappings":";;;;AAcA,SAAgB,EAAoB,EAClC,UACA,YACA,yBAAsB,MACK;CAE3B,IAAM,IAAiB,EAAM,QAC1B,QAAQ,MAAM,EAAE,SAAS,MAAM,EAC/B,KAAK,MAAM,EAAE,IAAI,EACjB,KAAK,IAAI;CAOZ,OAJK,IAKH,kBAAC,GAAD;EACE,MAAK;EACL,SAAS;EACA;EACY;EACrB,WAAW,EAAM;CAClB,CAAA,IAVM;AAYX"}
@@ -1,2 +1,2 @@
1
- const e=require("../../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../../node_modules/react-i18next/dist/es/useTranslation.cjs"),n=require("../../../../i18n/declaration.cjs"),r=require("../../../../context/navigation-context.cjs"),i=require("../../../../hooks/use-conversation-id.cjs"),a=require("../../../../stores/conversation-store.cjs"),o=require("../../../../utils/custom-toast-handlers.cjs"),s=require("../../../../contexts/active-backend-context.cjs"),c=require("../event-thought-helpers.cjs"),l=require("../../../../api/conversation-service/conversation-service.api.cjs"),u=require("../../../../icons/repo-forked.cjs"),d=require("../../../features/chat/chat-message.cjs"),f=require("../../../features/images/image-carousel.cjs"),p=require("../../../shared/buttons/conversation-confirmation-buttons.cjs"),m=require("../event-content-helpers/parse-message-from-event.cjs"),h=require("./critic-result-display.cjs"),g=require("./collapsible-thinking.cjs"),_=require("../../../../hooks/mutation/use-fork-conversation.cjs");let v=require("react");v=e.__toESM(v,1);let y=require("react/jsx-runtime");function b({event:e,isLastMessage:b,isFromPlanningAgent:x}){let{t:S}=t.useTranslation(`openhands`),{navigate:C}=r.useNavigation(),{conversationId:w}=i.useOptionalConversationId(),T=s.useActiveBackend().backend.kind===`cloud`,{mutate:E,isPending:D}=_.useForkConversation(),O=a.useConversationStore(e=>e.setMessageToSend),k=v.default.useRef(!1),A=m.parseMessageFromEvent(e),{reasoning:j,message:M}=e.source===`agent`?c.splitInlineThink(A):{reasoning:``,message:A},N=[];Array.isArray(e.llm_message.content)&&e.llm_message.content.forEach(e=>{e.type===`image`&&N.push(...e.image_urls)});let P=!T&&w?[{icon:(0,y.jsx)(u.default,{width:15,height:15,"aria-hidden":!0}),onClick:()=>{if(!w||D||k.current)return;k.current=!0;let t=l.default.getCurrentConversation(),n=t?.id===w?t.title:void 0,r=n?`${n} (branch)`:void 0,i=e.source===`user`&&M.length>0;E({sourceConversationId:w,eventId:e.id,...i?{editText:M}:{},...r?{title:r}:{}},{onSuccess:({info:e,excluded:t})=>{C(`/conversations/${e.id}`),t&&window.setTimeout(()=>O(M),0)},onError:e=>o.displayErrorToast(e instanceof Error?e.message:null),onSettled:()=>{k.current=!1}})},tooltip:S(n.I18nKey.CHAT_INTERFACE$BRANCH_FROM_HERE)}]:void 0;return(0,y.jsxs)(y.Fragment,{children:[j&&(0,y.jsx)(g.CollapsibleThinking,{content:j}),(0,y.jsxs)(d.ChatMessage,{type:e.source,message:M,isFromPlanningAgent:x,actions:P,children:[N.length>0&&(0,y.jsx)(f.ImageCarousel,{size:`small`,images:N}),b&&(0,y.jsx)(p.ConversationConfirmationButtons,{})]}),e.source===`agent`&&e.critic_result!=null&&(0,y.jsx)(h.CriticResultDisplay,{criticResult:e.critic_result})]})}exports.UserAssistantEventMessage=b;
1
+ const e=require("../../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../../node_modules/react-i18next/dist/es/useTranslation.cjs"),n=require("../../../../i18n/declaration.cjs"),r=require("../../../../context/navigation-context.cjs"),i=require("../../../../hooks/use-conversation-id.cjs"),a=require("../../../../stores/conversation-store.cjs"),o=require("../../../../utils/custom-toast-handlers.cjs"),s=require("../../../../contexts/active-backend-context.cjs"),c=require("../event-thought-helpers.cjs"),l=require("../../../../api/conversation-service/conversation-service.api.cjs"),u=require("../../../../icons/repo-forked.cjs"),d=require("../../../features/chat/chat-message.cjs"),f=require("../../../features/images/image-carousel.cjs"),p=require("../event-content-helpers/parse-message-from-event.cjs"),m=require("./critic-result-display.cjs"),h=require("./collapsible-thinking.cjs"),g=require("../../../../hooks/mutation/use-fork-conversation.cjs");let _=require("react");_=e.__toESM(_,1);let v=require("react/jsx-runtime");function y({event:e,isFromPlanningAgent:y}){let{t:b}=t.useTranslation(`openhands`),{navigate:x}=r.useNavigation(),{conversationId:S}=i.useOptionalConversationId(),C=s.useActiveBackend().backend.kind===`cloud`,{mutate:w,isPending:T}=g.useForkConversation(),E=a.useConversationStore(e=>e.setMessageToSend),D=_.default.useRef(!1),O=p.parseMessageFromEvent(e),{reasoning:k,message:A}=e.source===`agent`?c.splitInlineThink(O):{reasoning:``,message:O},j=[];Array.isArray(e.llm_message.content)&&e.llm_message.content.forEach(e=>{e.type===`image`&&j.push(...e.image_urls)});let M=!C&&S?[{icon:(0,v.jsx)(u.default,{width:15,height:15,"aria-hidden":!0}),onClick:()=>{if(!S||T||D.current)return;D.current=!0;let t=l.default.getCurrentConversation(),n=t?.id===S?t.title:void 0,r=n?`${n} (branch)`:void 0,i=e.source===`user`&&A.length>0;w({sourceConversationId:S,eventId:e.id,...i?{editText:A}:{},...r?{title:r}:{}},{onSuccess:({info:e,excluded:t})=>{x(`/conversations/${e.id}`),t&&window.setTimeout(()=>E(A),0)},onError:e=>o.displayErrorToast(e instanceof Error?e.message:null),onSettled:()=>{D.current=!1}})},tooltip:b(n.I18nKey.CHAT_INTERFACE$BRANCH_FROM_HERE)}]:void 0;return(0,v.jsxs)(v.Fragment,{children:[k&&(0,v.jsx)(h.CollapsibleThinking,{content:k}),(0,v.jsx)(d.ChatMessage,{type:e.source,message:A,isFromPlanningAgent:y,actions:M,timestamp:e.timestamp,children:j.length>0&&(0,v.jsx)(f.ImageCarousel,{size:`small`,images:j})}),e.source===`agent`&&e.critic_result!=null&&(0,v.jsx)(m.CriticResultDisplay,{criticResult:e.critic_result})]})}exports.UserAssistantEventMessage=y;
2
2
  //# sourceMappingURL=user-assistant-event-message.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-assistant-event-message.cjs","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/user-assistant-event-message.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigation } from \"#/context/navigation-context\";\nimport { MessageEvent } from \"#/types/agent-server/core\";\nimport { ChatMessage } from \"../../../features/chat/chat-message\";\nimport { ImageCarousel } from \"../../../features/images/image-carousel\";\nimport { ConversationConfirmationButtons } from \"#/components/shared/buttons/conversation-confirmation-buttons\";\nimport { parseMessageFromEvent } from \"../event-content-helpers/parse-message-from-event\";\nimport { CriticResultDisplay } from \"./critic-result-display\";\nimport { CollapsibleThinking } from \"./collapsible-thinking\";\nimport { splitInlineThink } from \"../event-thought-helpers\";\nimport RepoForkedIcon from \"#/icons/repo-forked.svg?react\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { useForkConversation } from \"#/hooks/mutation/use-fork-conversation\";\nimport { useConversationStore } from \"#/stores/conversation-store\";\nimport ConversationService from \"#/api/conversation-service/conversation-service.api\";\nimport { displayErrorToast } from \"#/utils/custom-toast-handlers\";\n\ninterface UserAssistantEventMessageProps {\n event: MessageEvent;\n isLastMessage: boolean;\n isFromPlanningAgent: boolean;\n}\n\nexport function UserAssistantEventMessage({\n event,\n isLastMessage,\n isFromPlanningAgent,\n}: UserAssistantEventMessageProps) {\n const { t } = useTranslation(\"openhands\");\n const { navigate } = useNavigation();\n const { conversationId } = useOptionalConversationId();\n const isCloud = useActiveBackend().backend.kind === \"cloud\";\n const { mutate: forkConversation, isPending: isForking } =\n useForkConversation();\n const setMessageToSend = useConversationStore(\n (state) => state.setMessageToSend,\n );\n // Blocks a same-tick double-click, before `isForking` flips.\n const forkInFlightRef = React.useRef(false);\n\n const parsed = parseMessageFromEvent(event);\n // Route an inline <think> block (e.g. from a streamed reply) to the thinking\n // section so reloaded conversations match the live rendering.\n const { reasoning, message } =\n event.source === \"agent\"\n ? splitInlineThink(parsed)\n : { reasoning: \"\", message: parsed };\n\n const imageUrls: string[] = [];\n if (Array.isArray(event.llm_message.content)) {\n event.llm_message.content.forEach((content) => {\n if (content.type === \"image\") {\n imageUrls.push(...content.image_urls);\n }\n });\n }\n\n // \"Branch from here\": a user message is \"edit message\" (excludes the message,\n // restores its text to the composer); an assistant message branches\n // inclusively. Local agent-server only, inside a conversation.\n const canBranch = !isCloud && !!conversationId;\n const handleBranch = () => {\n if (!conversationId || isForking || forkInFlightRef.current) return;\n forkInFlightRef.current = true;\n\n // Distinct title so the fork doesn't read identically to its source.\n // getCurrentConversation() is a shared singleton — match the id in case it\n // still holds the previously-viewed conversation.\n const source = ConversationService.getCurrentConversation();\n const sourceTitle =\n source?.id === conversationId ? source.title : undefined;\n const branchTitle = sourceTitle ? `${sourceTitle} (branch)` : undefined;\n\n // Only edit when there's text: an image-only message parses to \"\", so\n // branch it inclusively rather than dropping the image.\n const isEdit = event.source === \"user\" && message.length > 0;\n\n forkConversation(\n {\n sourceConversationId: conversationId,\n eventId: event.id,\n ...(isEdit ? { editText: message } : {}),\n ...(branchTitle ? { title: branchTitle } : {}),\n },\n {\n onSuccess: ({ info, excluded }) => {\n navigate(`/conversations/${info.id}`);\n // Prefill only when excluded (else the send duplicates it). Deferred\n // so the new conversation's composer receives it (as useLaunchSkillInChat).\n if (excluded) {\n window.setTimeout(() => setMessageToSend(message), 0);\n }\n },\n onError: (error) =>\n displayErrorToast(error instanceof Error ? error.message : null),\n onSettled: () => {\n forkInFlightRef.current = false;\n },\n },\n );\n };\n const actions = canBranch\n ? [\n {\n icon: <RepoForkedIcon width={15} height={15} aria-hidden />,\n onClick: handleBranch,\n tooltip: t(I18nKey.CHAT_INTERFACE$BRANCH_FROM_HERE),\n },\n ]\n : undefined;\n\n return (\n <>\n {reasoning && <CollapsibleThinking content={reasoning} />}\n <ChatMessage\n type={event.source}\n message={message}\n isFromPlanningAgent={isFromPlanningAgent}\n actions={actions}\n >\n {imageUrls.length > 0 && (\n <ImageCarousel size=\"small\" images={imageUrls} />\n )}\n {isLastMessage && <ConversationConfirmationButtons />}\n </ChatMessage>\n {event.source === \"agent\" && event.critic_result != null && (\n <CriticResultDisplay criticResult={event.critic_result} />\n )}\n </>\n );\n}\n"],"mappings":"ylCA0BA,SAAgB,EAA0B,CACxC,QACA,gBACA,uBACiC,CACjC,GAAM,CAAE,KAAM,EAAA,eAAe,WAAW,EAClC,CAAE,YAAa,EAAA,cAAc,EAC7B,CAAE,kBAAmB,EAAA,0BAA0B,EAC/C,EAAU,EAAA,iBAAiB,EAAE,QAAQ,OAAS,QAC9C,CAAE,OAAQ,EAAkB,UAAW,GAC3C,EAAA,oBAAoB,EAChB,EAAmB,EAAA,qBACtB,GAAU,EAAM,gBACnB,EAEM,EAAkB,EAAA,QAAM,OAAO,EAAK,EAEpC,EAAS,EAAA,sBAAsB,CAAK,EAGpC,CAAE,YAAW,WACjB,EAAM,SAAW,QACb,EAAA,iBAAiB,CAAM,EACvB,CAAE,UAAW,GAAI,QAAS,CAAO,EAEjC,EAAsB,CAAC,EACzB,MAAM,QAAQ,EAAM,YAAY,OAAO,GACzC,EAAM,YAAY,QAAQ,QAAS,GAAY,CACzC,EAAQ,OAAS,SACnB,EAAU,KAAK,GAAG,EAAQ,UAAU,CAExC,CAAC,EA+CH,IAAM,EAzCY,CAAC,GAAa,EA0C5B,CACE,CACE,MAAM,EAAA,EAAA,KAAC,EAAA,QAAD,CAAgB,MAAO,GAAI,OAAQ,GAAI,cAAA,EAAa,CAAA,EAC1D,YA5CmB,CACzB,GAAI,CAAC,GAAkB,GAAa,EAAgB,QAAS,OAC7D,EAAgB,QAAU,GAK1B,IAAM,EAAS,EAAA,QAAoB,uBAAuB,EACpD,EACJ,GAAQ,KAAO,EAAiB,EAAO,MAAQ,IAAA,GAC3C,EAAc,EAAc,GAAG,EAAY,WAAa,IAAA,GAIxD,EAAS,EAAM,SAAW,QAAU,EAAQ,OAAS,EAE3D,EACE,CACE,qBAAsB,EACtB,QAAS,EAAM,GACf,GAAI,EAAS,CAAE,SAAU,CAAQ,EAAI,CAAC,EACtC,GAAI,EAAc,CAAE,MAAO,CAAY,EAAI,CAAC,CAC9C,EACA,CACE,WAAY,CAAE,OAAM,cAAe,CACjC,EAAS,kBAAkB,EAAK,IAAI,EAGhC,GACF,OAAO,eAAiB,EAAiB,CAAO,EAAG,CAAC,CAExD,EACA,QAAU,GACR,EAAA,kBAAkB,aAAiB,MAAQ,EAAM,QAAU,IAAI,EACjE,cAAiB,CACf,EAAgB,QAAU,EAC5B,CACF,CACF,CACF,EAMQ,QAAS,EAAE,EAAA,QAAQ,+BAA+B,CACpD,CACF,EACA,IAAA,GAEJ,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,IAAa,EAAA,EAAA,KAAC,EAAA,oBAAD,CAAqB,QAAS,CAAY,CAAA,GACxD,EAAA,EAAA,MAAC,EAAA,YAAD,CACE,KAAM,EAAM,OACH,UACY,sBACZ,mBAJX,CAMG,EAAU,OAAS,IAClB,EAAA,EAAA,KAAC,EAAA,cAAD,CAAe,KAAK,QAAQ,OAAQ,CAAY,CAAA,EAEjD,IAAiB,EAAA,EAAA,KAAC,EAAA,gCAAD,CAAkC,CAAA,CACzC,IACZ,EAAM,SAAW,SAAW,EAAM,eAAiB,OAClD,EAAA,EAAA,KAAC,EAAA,oBAAD,CAAqB,aAAc,EAAM,aAAgB,CAAA,CAE3D,CAAA,CAAA,CAEN"}
1
+ {"version":3,"file":"user-assistant-event-message.cjs","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/user-assistant-event-message.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigation } from \"#/context/navigation-context\";\nimport { MessageEvent } from \"#/types/agent-server/core\";\nimport { ChatMessage } from \"../../../features/chat/chat-message\";\nimport { ImageCarousel } from \"../../../features/images/image-carousel\";\nimport { parseMessageFromEvent } from \"../event-content-helpers/parse-message-from-event\";\nimport { CriticResultDisplay } from \"./critic-result-display\";\nimport { CollapsibleThinking } from \"./collapsible-thinking\";\nimport { splitInlineThink } from \"../event-thought-helpers\";\nimport RepoForkedIcon from \"#/icons/repo-forked.svg?react\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { useForkConversation } from \"#/hooks/mutation/use-fork-conversation\";\nimport { useConversationStore } from \"#/stores/conversation-store\";\nimport ConversationService from \"#/api/conversation-service/conversation-service.api\";\nimport { displayErrorToast } from \"#/utils/custom-toast-handlers\";\n\ninterface UserAssistantEventMessageProps {\n event: MessageEvent;\n isLastMessage: boolean;\n isFromPlanningAgent: boolean;\n}\n\nexport function UserAssistantEventMessage({\n event,\n isFromPlanningAgent,\n}: UserAssistantEventMessageProps) {\n const { t } = useTranslation(\"openhands\");\n const { navigate } = useNavigation();\n const { conversationId } = useOptionalConversationId();\n const isCloud = useActiveBackend().backend.kind === \"cloud\";\n const { mutate: forkConversation, isPending: isForking } =\n useForkConversation();\n const setMessageToSend = useConversationStore(\n (state) => state.setMessageToSend,\n );\n // Blocks a same-tick double-click, before `isForking` flips.\n const forkInFlightRef = React.useRef(false);\n\n const parsed = parseMessageFromEvent(event);\n // Route an inline <think> block (e.g. from a streamed reply) to the thinking\n // section so reloaded conversations match the live rendering.\n const { reasoning, message } =\n event.source === \"agent\"\n ? splitInlineThink(parsed)\n : { reasoning: \"\", message: parsed };\n\n const imageUrls: string[] = [];\n if (Array.isArray(event.llm_message.content)) {\n event.llm_message.content.forEach((content) => {\n if (content.type === \"image\") {\n imageUrls.push(...content.image_urls);\n }\n });\n }\n\n // \"Branch from here\": a user message is \"edit message\" (excludes the message,\n // restores its text to the composer); an assistant message branches\n // inclusively. Local agent-server only, inside a conversation.\n const canBranch = !isCloud && !!conversationId;\n const handleBranch = () => {\n if (!conversationId || isForking || forkInFlightRef.current) return;\n forkInFlightRef.current = true;\n\n // Distinct title so the fork doesn't read identically to its source.\n // getCurrentConversation() is a shared singleton — match the id in case it\n // still holds the previously-viewed conversation.\n const source = ConversationService.getCurrentConversation();\n const sourceTitle =\n source?.id === conversationId ? source.title : undefined;\n const branchTitle = sourceTitle ? `${sourceTitle} (branch)` : undefined;\n\n // Only edit when there's text: an image-only message parses to \"\", so\n // branch it inclusively rather than dropping the image.\n const isEdit = event.source === \"user\" && message.length > 0;\n\n forkConversation(\n {\n sourceConversationId: conversationId,\n eventId: event.id,\n ...(isEdit ? { editText: message } : {}),\n ...(branchTitle ? { title: branchTitle } : {}),\n },\n {\n onSuccess: ({ info, excluded }) => {\n navigate(`/conversations/${info.id}`);\n // Prefill only when excluded (else the send duplicates it). Deferred\n // so the new conversation's composer receives it (as useLaunchSkillInChat).\n if (excluded) {\n window.setTimeout(() => setMessageToSend(message), 0);\n }\n },\n onError: (error) =>\n displayErrorToast(error instanceof Error ? error.message : null),\n onSettled: () => {\n forkInFlightRef.current = false;\n },\n },\n );\n };\n const actions = canBranch\n ? [\n {\n icon: <RepoForkedIcon width={15} height={15} aria-hidden />,\n onClick: handleBranch,\n tooltip: t(I18nKey.CHAT_INTERFACE$BRANCH_FROM_HERE),\n },\n ]\n : undefined;\n\n return (\n <>\n {reasoning && <CollapsibleThinking content={reasoning} />}\n <ChatMessage\n type={event.source}\n message={message}\n isFromPlanningAgent={isFromPlanningAgent}\n actions={actions}\n timestamp={event.timestamp}\n >\n {imageUrls.length > 0 && (\n <ImageCarousel size=\"small\" images={imageUrls} />\n )}\n </ChatMessage>\n {event.source === \"agent\" && event.critic_result != null && (\n <CriticResultDisplay criticResult={event.critic_result} />\n )}\n </>\n );\n}\n"],"mappings":"8gCAyBA,SAAgB,EAA0B,CACxC,QACA,uBACiC,CACjC,GAAM,CAAE,KAAM,EAAA,eAAe,WAAW,EAClC,CAAE,YAAa,EAAA,cAAc,EAC7B,CAAE,kBAAmB,EAAA,0BAA0B,EAC/C,EAAU,EAAA,iBAAiB,EAAE,QAAQ,OAAS,QAC9C,CAAE,OAAQ,EAAkB,UAAW,GAC3C,EAAA,oBAAoB,EAChB,EAAmB,EAAA,qBACtB,GAAU,EAAM,gBACnB,EAEM,EAAkB,EAAA,QAAM,OAAO,EAAK,EAEpC,EAAS,EAAA,sBAAsB,CAAK,EAGpC,CAAE,YAAW,WACjB,EAAM,SAAW,QACb,EAAA,iBAAiB,CAAM,EACvB,CAAE,UAAW,GAAI,QAAS,CAAO,EAEjC,EAAsB,CAAC,EACzB,MAAM,QAAQ,EAAM,YAAY,OAAO,GACzC,EAAM,YAAY,QAAQ,QAAS,GAAY,CACzC,EAAQ,OAAS,SACnB,EAAU,KAAK,GAAG,EAAQ,UAAU,CAExC,CAAC,EA+CH,IAAM,EAzCY,CAAC,GAAa,EA0C5B,CACE,CACE,MAAM,EAAA,EAAA,KAAC,EAAA,QAAD,CAAgB,MAAO,GAAI,OAAQ,GAAI,cAAA,EAAa,CAAA,EAC1D,YA5CmB,CACzB,GAAI,CAAC,GAAkB,GAAa,EAAgB,QAAS,OAC7D,EAAgB,QAAU,GAK1B,IAAM,EAAS,EAAA,QAAoB,uBAAuB,EACpD,EACJ,GAAQ,KAAO,EAAiB,EAAO,MAAQ,IAAA,GAC3C,EAAc,EAAc,GAAG,EAAY,WAAa,IAAA,GAIxD,EAAS,EAAM,SAAW,QAAU,EAAQ,OAAS,EAE3D,EACE,CACE,qBAAsB,EACtB,QAAS,EAAM,GACf,GAAI,EAAS,CAAE,SAAU,CAAQ,EAAI,CAAC,EACtC,GAAI,EAAc,CAAE,MAAO,CAAY,EAAI,CAAC,CAC9C,EACA,CACE,WAAY,CAAE,OAAM,cAAe,CACjC,EAAS,kBAAkB,EAAK,IAAI,EAGhC,GACF,OAAO,eAAiB,EAAiB,CAAO,EAAG,CAAC,CAExD,EACA,QAAU,GACR,EAAA,kBAAkB,aAAiB,MAAQ,EAAM,QAAU,IAAI,EACjE,cAAiB,CACf,EAAgB,QAAU,EAC5B,CACF,CACF,CACF,EAMQ,QAAS,EAAE,EAAA,QAAQ,+BAA+B,CACpD,CACF,EACA,IAAA,GAEJ,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,IAAa,EAAA,EAAA,KAAC,EAAA,oBAAD,CAAqB,QAAS,CAAY,CAAA,GACxD,EAAA,EAAA,KAAC,EAAA,YAAD,CACE,KAAM,EAAM,OACH,UACY,sBACZ,UACT,UAAW,EAAM,mBAEhB,EAAU,OAAS,IAClB,EAAA,EAAA,KAAC,EAAA,cAAD,CAAe,KAAK,QAAQ,OAAQ,CAAY,CAAA,CAEvC,CAAA,EACZ,EAAM,SAAW,SAAW,EAAM,eAAiB,OAClD,EAAA,EAAA,KAAC,EAAA,oBAAD,CAAqB,aAAc,EAAM,aAAgB,CAAA,CAE3D,CAAA,CAAA,CAEN"}
@@ -5,5 +5,5 @@ interface UserAssistantEventMessageProps {
5
5
  isLastMessage: boolean;
6
6
  isFromPlanningAgent: boolean;
7
7
  }
8
- export declare function UserAssistantEventMessage({ event, isLastMessage, isFromPlanningAgent, }: UserAssistantEventMessageProps): React.JSX.Element;
8
+ export declare function UserAssistantEventMessage({ event, isFromPlanningAgent, }: UserAssistantEventMessageProps): React.JSX.Element;
9
9
  export {};
@@ -10,65 +10,65 @@ import c from "../../../../api/conversation-service/conversation-service.api.js"
10
10
  import l from "../../../../icons/repo-forked.js";
11
11
  import { ChatMessage as u } from "../../../features/chat/chat-message.js";
12
12
  import { ImageCarousel as d } from "../../../features/images/image-carousel.js";
13
- import { ConversationConfirmationButtons as f } from "../../../shared/buttons/conversation-confirmation-buttons.js";
14
- import { parseMessageFromEvent as p } from "../event-content-helpers/parse-message-from-event.js";
15
- import { CriticResultDisplay as m } from "./critic-result-display.js";
16
- import { CollapsibleThinking as h } from "./collapsible-thinking.js";
17
- import { useForkConversation as g } from "../../../../hooks/mutation/use-fork-conversation.js";
18
- import _ from "react";
19
- import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
13
+ import { parseMessageFromEvent as f } from "../event-content-helpers/parse-message-from-event.js";
14
+ import { CriticResultDisplay as p } from "./critic-result-display.js";
15
+ import { CollapsibleThinking as m } from "./collapsible-thinking.js";
16
+ import { useForkConversation as h } from "../../../../hooks/mutation/use-fork-conversation.js";
17
+ import g from "react";
18
+ import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
20
19
  //#region src/components/conversation-events/chat/event-message-components/user-assistant-event-message.tsx
21
- function x({ event: x, isLastMessage: S, isFromPlanningAgent: C }) {
22
- let { t: w } = e("openhands"), { navigate: T } = n(), { conversationId: E } = r(), D = o().backend.kind === "cloud", { mutate: O, isPending: k } = g(), A = i((e) => e.setMessageToSend), j = _.useRef(!1), M = p(x), { reasoning: N, message: P } = x.source === "agent" ? s(M) : {
20
+ function b({ event: b, isFromPlanningAgent: x }) {
21
+ let { t: S } = e("openhands"), { navigate: C } = n(), { conversationId: w } = r(), T = o().backend.kind === "cloud", { mutate: E, isPending: D } = h(), O = i((e) => e.setMessageToSend), k = g.useRef(!1), A = f(b), { reasoning: j, message: M } = b.source === "agent" ? s(A) : {
23
22
  reasoning: "",
24
- message: M
25
- }, F = [];
26
- Array.isArray(x.llm_message.content) && x.llm_message.content.forEach((e) => {
27
- e.type === "image" && F.push(...e.image_urls);
23
+ message: A
24
+ }, N = [];
25
+ Array.isArray(b.llm_message.content) && b.llm_message.content.forEach((e) => {
26
+ e.type === "image" && N.push(...e.image_urls);
28
27
  });
29
- let I = !D && E ? [{
30
- icon: /* @__PURE__ */ y(l, {
28
+ let P = !T && w ? [{
29
+ icon: /* @__PURE__ */ v(l, {
31
30
  width: 15,
32
31
  height: 15,
33
32
  "aria-hidden": !0
34
33
  }),
35
34
  onClick: () => {
36
- if (!E || k || j.current) return;
37
- j.current = !0;
38
- let e = c.getCurrentConversation(), t = e?.id === E ? e.title : void 0, n = t ? `${t} (branch)` : void 0, r = x.source === "user" && P.length > 0;
39
- O({
40
- sourceConversationId: E,
41
- eventId: x.id,
42
- ...r ? { editText: P } : {},
35
+ if (!w || D || k.current) return;
36
+ k.current = !0;
37
+ let e = c.getCurrentConversation(), t = e?.id === w ? e.title : void 0, n = t ? `${t} (branch)` : void 0, r = b.source === "user" && M.length > 0;
38
+ E({
39
+ sourceConversationId: w,
40
+ eventId: b.id,
41
+ ...r ? { editText: M } : {},
43
42
  ...n ? { title: n } : {}
44
43
  }, {
45
44
  onSuccess: ({ info: e, excluded: t }) => {
46
- T(`/conversations/${e.id}`), t && window.setTimeout(() => A(P), 0);
45
+ C(`/conversations/${e.id}`), t && window.setTimeout(() => O(M), 0);
47
46
  },
48
47
  onError: (e) => a(e instanceof Error ? e.message : null),
49
48
  onSettled: () => {
50
- j.current = !1;
49
+ k.current = !1;
51
50
  }
52
51
  });
53
52
  },
54
- tooltip: w(t.CHAT_INTERFACE$BRANCH_FROM_HERE)
53
+ tooltip: S(t.CHAT_INTERFACE$BRANCH_FROM_HERE)
55
54
  }] : void 0;
56
- return /* @__PURE__ */ b(v, { children: [
57
- N && /* @__PURE__ */ y(h, { content: N }),
58
- /* @__PURE__ */ b(u, {
59
- type: x.source,
60
- message: P,
61
- isFromPlanningAgent: C,
62
- actions: I,
63
- children: [F.length > 0 && /* @__PURE__ */ y(d, {
55
+ return /* @__PURE__ */ y(_, { children: [
56
+ j && /* @__PURE__ */ v(m, { content: j }),
57
+ /* @__PURE__ */ v(u, {
58
+ type: b.source,
59
+ message: M,
60
+ isFromPlanningAgent: x,
61
+ actions: P,
62
+ timestamp: b.timestamp,
63
+ children: N.length > 0 && /* @__PURE__ */ v(d, {
64
64
  size: "small",
65
- images: F
66
- }), S && /* @__PURE__ */ y(f, {})]
65
+ images: N
66
+ })
67
67
  }),
68
- x.source === "agent" && x.critic_result != null && /* @__PURE__ */ y(m, { criticResult: x.critic_result })
68
+ b.source === "agent" && b.critic_result != null && /* @__PURE__ */ v(p, { criticResult: b.critic_result })
69
69
  ] });
70
70
  }
71
71
  //#endregion
72
- export { x as UserAssistantEventMessage };
72
+ export { b as UserAssistantEventMessage };
73
73
 
74
74
  //# sourceMappingURL=user-assistant-event-message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-assistant-event-message.js","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/user-assistant-event-message.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigation } from \"#/context/navigation-context\";\nimport { MessageEvent } from \"#/types/agent-server/core\";\nimport { ChatMessage } from \"../../../features/chat/chat-message\";\nimport { ImageCarousel } from \"../../../features/images/image-carousel\";\nimport { ConversationConfirmationButtons } from \"#/components/shared/buttons/conversation-confirmation-buttons\";\nimport { parseMessageFromEvent } from \"../event-content-helpers/parse-message-from-event\";\nimport { CriticResultDisplay } from \"./critic-result-display\";\nimport { CollapsibleThinking } from \"./collapsible-thinking\";\nimport { splitInlineThink } from \"../event-thought-helpers\";\nimport RepoForkedIcon from \"#/icons/repo-forked.svg?react\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { useForkConversation } from \"#/hooks/mutation/use-fork-conversation\";\nimport { useConversationStore } from \"#/stores/conversation-store\";\nimport ConversationService from \"#/api/conversation-service/conversation-service.api\";\nimport { displayErrorToast } from \"#/utils/custom-toast-handlers\";\n\ninterface UserAssistantEventMessageProps {\n event: MessageEvent;\n isLastMessage: boolean;\n isFromPlanningAgent: boolean;\n}\n\nexport function UserAssistantEventMessage({\n event,\n isLastMessage,\n isFromPlanningAgent,\n}: UserAssistantEventMessageProps) {\n const { t } = useTranslation(\"openhands\");\n const { navigate } = useNavigation();\n const { conversationId } = useOptionalConversationId();\n const isCloud = useActiveBackend().backend.kind === \"cloud\";\n const { mutate: forkConversation, isPending: isForking } =\n useForkConversation();\n const setMessageToSend = useConversationStore(\n (state) => state.setMessageToSend,\n );\n // Blocks a same-tick double-click, before `isForking` flips.\n const forkInFlightRef = React.useRef(false);\n\n const parsed = parseMessageFromEvent(event);\n // Route an inline <think> block (e.g. from a streamed reply) to the thinking\n // section so reloaded conversations match the live rendering.\n const { reasoning, message } =\n event.source === \"agent\"\n ? splitInlineThink(parsed)\n : { reasoning: \"\", message: parsed };\n\n const imageUrls: string[] = [];\n if (Array.isArray(event.llm_message.content)) {\n event.llm_message.content.forEach((content) => {\n if (content.type === \"image\") {\n imageUrls.push(...content.image_urls);\n }\n });\n }\n\n // \"Branch from here\": a user message is \"edit message\" (excludes the message,\n // restores its text to the composer); an assistant message branches\n // inclusively. Local agent-server only, inside a conversation.\n const canBranch = !isCloud && !!conversationId;\n const handleBranch = () => {\n if (!conversationId || isForking || forkInFlightRef.current) return;\n forkInFlightRef.current = true;\n\n // Distinct title so the fork doesn't read identically to its source.\n // getCurrentConversation() is a shared singleton — match the id in case it\n // still holds the previously-viewed conversation.\n const source = ConversationService.getCurrentConversation();\n const sourceTitle =\n source?.id === conversationId ? source.title : undefined;\n const branchTitle = sourceTitle ? `${sourceTitle} (branch)` : undefined;\n\n // Only edit when there's text: an image-only message parses to \"\", so\n // branch it inclusively rather than dropping the image.\n const isEdit = event.source === \"user\" && message.length > 0;\n\n forkConversation(\n {\n sourceConversationId: conversationId,\n eventId: event.id,\n ...(isEdit ? { editText: message } : {}),\n ...(branchTitle ? { title: branchTitle } : {}),\n },\n {\n onSuccess: ({ info, excluded }) => {\n navigate(`/conversations/${info.id}`);\n // Prefill only when excluded (else the send duplicates it). Deferred\n // so the new conversation's composer receives it (as useLaunchSkillInChat).\n if (excluded) {\n window.setTimeout(() => setMessageToSend(message), 0);\n }\n },\n onError: (error) =>\n displayErrorToast(error instanceof Error ? error.message : null),\n onSettled: () => {\n forkInFlightRef.current = false;\n },\n },\n );\n };\n const actions = canBranch\n ? [\n {\n icon: <RepoForkedIcon width={15} height={15} aria-hidden />,\n onClick: handleBranch,\n tooltip: t(I18nKey.CHAT_INTERFACE$BRANCH_FROM_HERE),\n },\n ]\n : undefined;\n\n return (\n <>\n {reasoning && <CollapsibleThinking content={reasoning} />}\n <ChatMessage\n type={event.source}\n message={message}\n isFromPlanningAgent={isFromPlanningAgent}\n actions={actions}\n >\n {imageUrls.length > 0 && (\n <ImageCarousel size=\"small\" images={imageUrls} />\n )}\n {isLastMessage && <ConversationConfirmationButtons />}\n </ChatMessage>\n {event.source === \"agent\" && event.critic_result != null && (\n <CriticResultDisplay criticResult={event.critic_result} />\n )}\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA0BA,SAAgB,EAA0B,EACxC,UACA,kBACA,0BACiC;CACjC,IAAM,EAAE,SAAM,EAAe,WAAW,GAClC,EAAE,gBAAa,EAAc,GAC7B,EAAE,sBAAmB,EAA0B,GAC/C,IAAU,EAAiB,EAAE,QAAQ,SAAS,SAC9C,EAAE,QAAQ,GAAkB,WAAW,MAC3C,EAAoB,GAChB,IAAmB,GACtB,MAAU,EAAM,gBACnB,GAEM,IAAkB,EAAM,OAAO,EAAK,GAEpC,IAAS,EAAsB,CAAK,GAGpC,EAAE,cAAW,eACjB,EAAM,WAAW,UACb,EAAiB,CAAM,IACvB;EAAE,WAAW;EAAI,SAAS;CAAO,GAEjC,IAAsB,CAAC;CAC7B,AAAI,MAAM,QAAQ,EAAM,YAAY,OAAO,KACzC,EAAM,YAAY,QAAQ,SAAS,MAAY;EAC7C,AAAI,EAAQ,SAAS,WACnB,EAAU,KAAK,GAAG,EAAQ,UAAU;CAExC,CAAC;CA+CH,IAAM,IAzCY,CAAC,KAAa,IA0C5B,CACE;EACE,MAAM,kBAAC,GAAD;GAAgB,OAAO;GAAI,QAAQ;GAAI,eAAA;EAAa,CAAA;EAC1D,eA5CmB;GACzB,IAAI,CAAC,KAAkB,KAAa,EAAgB,SAAS;GAC7D,EAAgB,UAAU;GAK1B,IAAM,IAAS,EAAoB,uBAAuB,GACpD,IACJ,GAAQ,OAAO,IAAiB,EAAO,QAAQ,KAAA,GAC3C,IAAc,IAAc,GAAG,EAAY,aAAa,KAAA,GAIxD,IAAS,EAAM,WAAW,UAAU,EAAQ,SAAS;GAE3D,EACE;IACE,sBAAsB;IACtB,SAAS,EAAM;IACf,GAAI,IAAS,EAAE,UAAU,EAAQ,IAAI,CAAC;IACtC,GAAI,IAAc,EAAE,OAAO,EAAY,IAAI,CAAC;GAC9C,GACA;IACE,YAAY,EAAE,SAAM,kBAAe;KAIjC,AAHA,EAAS,kBAAkB,EAAK,IAAI,GAGhC,KACF,OAAO,iBAAiB,EAAiB,CAAO,GAAG,CAAC;IAExD;IACA,UAAU,MACR,EAAkB,aAAiB,QAAQ,EAAM,UAAU,IAAI;IACjE,iBAAiB;KACf,EAAgB,UAAU;IAC5B;GACF,CACF;EACF;EAMQ,SAAS,EAAE,EAAQ,+BAA+B;CACpD,CACF,IACA,KAAA;CAEJ,OACE,kBAAA,GAAA,EAAA,UAAA;EACG,KAAa,kBAAC,GAAD,EAAqB,SAAS,EAAY,CAAA;EACxD,kBAAC,GAAD;GACE,MAAM,EAAM;GACH;GACY;GACZ;aAJX,CAMG,EAAU,SAAS,KAClB,kBAAC,GAAD;IAAe,MAAK;IAAQ,QAAQ;GAAY,CAAA,GAEjD,KAAiB,kBAAC,GAAD,CAAkC,CAAA,CACzC;;EACZ,EAAM,WAAW,WAAW,EAAM,iBAAiB,QAClD,kBAAC,GAAD,EAAqB,cAAc,EAAM,cAAgB,CAAA;CAE3D,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"user-assistant-event-message.js","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/user-assistant-event-message.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigation } from \"#/context/navigation-context\";\nimport { MessageEvent } from \"#/types/agent-server/core\";\nimport { ChatMessage } from \"../../../features/chat/chat-message\";\nimport { ImageCarousel } from \"../../../features/images/image-carousel\";\nimport { parseMessageFromEvent } from \"../event-content-helpers/parse-message-from-event\";\nimport { CriticResultDisplay } from \"./critic-result-display\";\nimport { CollapsibleThinking } from \"./collapsible-thinking\";\nimport { splitInlineThink } from \"../event-thought-helpers\";\nimport RepoForkedIcon from \"#/icons/repo-forked.svg?react\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { useForkConversation } from \"#/hooks/mutation/use-fork-conversation\";\nimport { useConversationStore } from \"#/stores/conversation-store\";\nimport ConversationService from \"#/api/conversation-service/conversation-service.api\";\nimport { displayErrorToast } from \"#/utils/custom-toast-handlers\";\n\ninterface UserAssistantEventMessageProps {\n event: MessageEvent;\n isLastMessage: boolean;\n isFromPlanningAgent: boolean;\n}\n\nexport function UserAssistantEventMessage({\n event,\n isFromPlanningAgent,\n}: UserAssistantEventMessageProps) {\n const { t } = useTranslation(\"openhands\");\n const { navigate } = useNavigation();\n const { conversationId } = useOptionalConversationId();\n const isCloud = useActiveBackend().backend.kind === \"cloud\";\n const { mutate: forkConversation, isPending: isForking } =\n useForkConversation();\n const setMessageToSend = useConversationStore(\n (state) => state.setMessageToSend,\n );\n // Blocks a same-tick double-click, before `isForking` flips.\n const forkInFlightRef = React.useRef(false);\n\n const parsed = parseMessageFromEvent(event);\n // Route an inline <think> block (e.g. from a streamed reply) to the thinking\n // section so reloaded conversations match the live rendering.\n const { reasoning, message } =\n event.source === \"agent\"\n ? splitInlineThink(parsed)\n : { reasoning: \"\", message: parsed };\n\n const imageUrls: string[] = [];\n if (Array.isArray(event.llm_message.content)) {\n event.llm_message.content.forEach((content) => {\n if (content.type === \"image\") {\n imageUrls.push(...content.image_urls);\n }\n });\n }\n\n // \"Branch from here\": a user message is \"edit message\" (excludes the message,\n // restores its text to the composer); an assistant message branches\n // inclusively. Local agent-server only, inside a conversation.\n const canBranch = !isCloud && !!conversationId;\n const handleBranch = () => {\n if (!conversationId || isForking || forkInFlightRef.current) return;\n forkInFlightRef.current = true;\n\n // Distinct title so the fork doesn't read identically to its source.\n // getCurrentConversation() is a shared singleton — match the id in case it\n // still holds the previously-viewed conversation.\n const source = ConversationService.getCurrentConversation();\n const sourceTitle =\n source?.id === conversationId ? source.title : undefined;\n const branchTitle = sourceTitle ? `${sourceTitle} (branch)` : undefined;\n\n // Only edit when there's text: an image-only message parses to \"\", so\n // branch it inclusively rather than dropping the image.\n const isEdit = event.source === \"user\" && message.length > 0;\n\n forkConversation(\n {\n sourceConversationId: conversationId,\n eventId: event.id,\n ...(isEdit ? { editText: message } : {}),\n ...(branchTitle ? { title: branchTitle } : {}),\n },\n {\n onSuccess: ({ info, excluded }) => {\n navigate(`/conversations/${info.id}`);\n // Prefill only when excluded (else the send duplicates it). Deferred\n // so the new conversation's composer receives it (as useLaunchSkillInChat).\n if (excluded) {\n window.setTimeout(() => setMessageToSend(message), 0);\n }\n },\n onError: (error) =>\n displayErrorToast(error instanceof Error ? error.message : null),\n onSettled: () => {\n forkInFlightRef.current = false;\n },\n },\n );\n };\n const actions = canBranch\n ? [\n {\n icon: <RepoForkedIcon width={15} height={15} aria-hidden />,\n onClick: handleBranch,\n tooltip: t(I18nKey.CHAT_INTERFACE$BRANCH_FROM_HERE),\n },\n ]\n : undefined;\n\n return (\n <>\n {reasoning && <CollapsibleThinking content={reasoning} />}\n <ChatMessage\n type={event.source}\n message={message}\n isFromPlanningAgent={isFromPlanningAgent}\n actions={actions}\n timestamp={event.timestamp}\n >\n {imageUrls.length > 0 && (\n <ImageCarousel size=\"small\" images={imageUrls} />\n )}\n </ChatMessage>\n {event.source === \"agent\" && event.critic_result != null && (\n <CriticResultDisplay criticResult={event.critic_result} />\n )}\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAyBA,SAAgB,EAA0B,EACxC,UACA,0BACiC;CACjC,IAAM,EAAE,SAAM,EAAe,WAAW,GAClC,EAAE,gBAAa,EAAc,GAC7B,EAAE,sBAAmB,EAA0B,GAC/C,IAAU,EAAiB,EAAE,QAAQ,SAAS,SAC9C,EAAE,QAAQ,GAAkB,WAAW,MAC3C,EAAoB,GAChB,IAAmB,GACtB,MAAU,EAAM,gBACnB,GAEM,IAAkB,EAAM,OAAO,EAAK,GAEpC,IAAS,EAAsB,CAAK,GAGpC,EAAE,cAAW,eACjB,EAAM,WAAW,UACb,EAAiB,CAAM,IACvB;EAAE,WAAW;EAAI,SAAS;CAAO,GAEjC,IAAsB,CAAC;CAC7B,AAAI,MAAM,QAAQ,EAAM,YAAY,OAAO,KACzC,EAAM,YAAY,QAAQ,SAAS,MAAY;EAC7C,AAAI,EAAQ,SAAS,WACnB,EAAU,KAAK,GAAG,EAAQ,UAAU;CAExC,CAAC;CA+CH,IAAM,IAzCY,CAAC,KAAa,IA0C5B,CACE;EACE,MAAM,kBAAC,GAAD;GAAgB,OAAO;GAAI,QAAQ;GAAI,eAAA;EAAa,CAAA;EAC1D,eA5CmB;GACzB,IAAI,CAAC,KAAkB,KAAa,EAAgB,SAAS;GAC7D,EAAgB,UAAU;GAK1B,IAAM,IAAS,EAAoB,uBAAuB,GACpD,IACJ,GAAQ,OAAO,IAAiB,EAAO,QAAQ,KAAA,GAC3C,IAAc,IAAc,GAAG,EAAY,aAAa,KAAA,GAIxD,IAAS,EAAM,WAAW,UAAU,EAAQ,SAAS;GAE3D,EACE;IACE,sBAAsB;IACtB,SAAS,EAAM;IACf,GAAI,IAAS,EAAE,UAAU,EAAQ,IAAI,CAAC;IACtC,GAAI,IAAc,EAAE,OAAO,EAAY,IAAI,CAAC;GAC9C,GACA;IACE,YAAY,EAAE,SAAM,kBAAe;KAIjC,AAHA,EAAS,kBAAkB,EAAK,IAAI,GAGhC,KACF,OAAO,iBAAiB,EAAiB,CAAO,GAAG,CAAC;IAExD;IACA,UAAU,MACR,EAAkB,aAAiB,QAAQ,EAAM,UAAU,IAAI;IACjE,iBAAiB;KACf,EAAgB,UAAU;IAC5B;GACF,CACF;EACF;EAMQ,SAAS,EAAE,EAAQ,+BAA+B;CACpD,CACF,IACA,KAAA;CAEJ,OACE,kBAAA,GAAA,EAAA,UAAA;EACG,KAAa,kBAAC,GAAD,EAAqB,SAAS,EAAY,CAAA;EACxD,kBAAC,GAAD;GACE,MAAM,EAAM;GACH;GACY;GACZ;GACT,WAAW,EAAM;aAEhB,EAAU,SAAS,KAClB,kBAAC,GAAD;IAAe,MAAK;IAAQ,QAAQ;GAAY,CAAA;EAEvC,CAAA;EACZ,EAAM,WAAW,WAAW,EAAM,iBAAiB,QAClD,kBAAC,GAAD,EAAqB,cAAc,EAAM,cAAgB,CAAA;CAE3D,EAAA,CAAA;AAEN"}
@@ -1,4 +1,4 @@
1
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../types/agent-state.cjs"),n=require("../../../stores/conversation-store.cjs"),r=require("../../../types/agent-server/type-guards.cjs"),i=require("./event-thought-helpers.cjs"),a=require("../../../hooks/use-agent-state.cjs"),o=require("../../features/chat/goal-status-content.cjs"),s=require("../../../hooks/query/use-config.cjs"),c=require("../../features/chat/chat-message.cjs"),l=require("../../features/chat/plan-preview.cjs"),u=require("./event-message-components/error-event-message.cjs"),d=require("./event-message-components/collapsible-thinking.cjs"),f=require("./event-message-components/user-assistant-event-message.cjs"),p=require("./event-content-helpers/create-skill-ready-event.cjs"),m=require("./event-message-components/finish-event-message.cjs"),h=require("./event-message-components/generic-event-message-wrapper.cjs"),g=require("./event-message-components/thought-event-message.cjs"),_=require("../../shared/hook-execution-event-message.cjs");require("./event-message-components/hook-execution-event-message.cjs");const v=require("./hooks/use-plan-preview-events.cjs");let y=require("react");y=e.__toESM(y,1);let b=require("react/jsx-runtime");var x=e=>e.activated_skills||[],S=e=>!e||e.length===0?!1:e.some(e=>e.type===`text`&&e.text.trim().length>0),C=e=>{let t=x(e).length>0,n=S(e.extended_content);return t&&n},w=(e,t,n)=>{try{let r=p.createSkillReadyEvent(e);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.UserAssistantEventMessage,{event:e,isLastMessage:!1,isFromPlanningAgent:t.isFromPlanningAgent}),(0,b.jsx)(h.GenericEventMessageWrapper,{event:r,isLastMessage:n})]})}catch{return(0,b.jsx)(f.UserAssistantEventMessage,{event:e,isLastMessage:n,isFromPlanningAgent:t.isFromPlanningAgent})}};function T({event:e,messages:p,isLastMessage:y,isInLast10Actions:x,planPreviewEventIds:S,suppressThought:T=!1}){let{data:E}=s.useConfig(),{planContent:D}=n.useConversationStore(),{curAgentState:O}=a.useAgentState(),k=O===t.AgentState.RUNNING||O===t.AgentState.LOADING,A=e.isFromPlanningAgent||!1,j={isLastMessage:y,isInLast10Actions:x,config:E,isFromPlanningAgent:A};if(r.isConversationStateUpdateEvent(e)&&r.isGoalConversationStateUpdateEvent(e))return(0,b.jsx)(o.GoalStatusContent,{status:e.value});if(r.isAgentErrorEvent(e))return(0,b.jsx)(u.ErrorEventMessage,{event:e,...j});if(r.isHookExecutionEvent(e))return(0,b.jsx)(_.HookExecutionEventMessage,{event:e});if(r.isACPToolCallEvent(e))return(0,b.jsx)(h.GenericEventMessageWrapper,{event:e,isLastMessage:y});if(r.isStreamingDeltaEvent(e)){let{reasoning:t,message:n}=i.splitInlineThink(e.content??``,{streaming:!0}),r=[e.reasoning_content??``,t].filter(Boolean).join(`
1
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../types/agent-state.cjs"),n=require("../../../stores/conversation-store.cjs"),r=require("../../../types/agent-server/type-guards.cjs"),i=require("./event-thought-helpers.cjs"),a=require("../../../hooks/use-agent-state.cjs"),o=require("../../features/chat/goal-status-content.cjs"),s=require("../../../hooks/query/use-config.cjs"),c=require("../../features/chat/chat-message.cjs"),l=require("../../features/chat/plan-preview.cjs"),u=require("./event-message-components/error-event-message.cjs"),d=require("./event-message-components/collapsible-thinking.cjs"),f=require("./event-message-components/user-assistant-event-message.cjs"),p=require("./event-content-helpers/create-skill-ready-event.cjs"),m=require("./event-message-components/finish-event-message.cjs"),h=require("./event-message-components/generic-event-message-wrapper.cjs"),g=require("./event-message-components/thought-event-message.cjs"),_=require("../../shared/hook-execution-event-message.cjs");require("./event-message-components/hook-execution-event-message.cjs");const v=require("./hooks/use-plan-preview-events.cjs");let y=require("react");y=e.__toESM(y,1);let b=require("react/jsx-runtime");var x=e=>e.activated_skills||[],S=e=>!e||e.length===0?!1:e.some(e=>e.type===`text`&&e.text.trim().length>0),C=e=>{let t=x(e).length>0,n=S(e.extended_content);return t&&n},w=(e,t,n)=>{try{let r=p.createSkillReadyEvent(e);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.UserAssistantEventMessage,{event:e,isLastMessage:!1,isFromPlanningAgent:t.isFromPlanningAgent}),(0,b.jsx)(h.GenericEventMessageWrapper,{event:r,isLastMessage:n})]})}catch{return(0,b.jsx)(f.UserAssistantEventMessage,{event:e,isLastMessage:n,isFromPlanningAgent:t.isFromPlanningAgent})}};function T({planContent:e,isLastMessage:n,isMainAgentRunning:r}){let{localPlanningConversationId:i,curPlanningAgentState:o,isPlanningAgentRunning:s}=a.usePlanningAgentState();return(0,b.jsx)(l.PlanPreview,{planContent:e,isStreaming:n&&!!i&&o===t.AgentState.RUNNING,isBuildDisabled:r||s})}function E({event:e,messages:l,isLastMessage:p,isInLast10Actions:y,planPreviewEventIds:x,suppressThought:S=!1}){let{data:E}=s.useConfig(),{planContent:D}=n.useConversationStore(),{curAgentState:O}=a.useAgentState(),k=O===t.AgentState.RUNNING||O===t.AgentState.LOADING,A=e.isFromPlanningAgent||!1,j={isLastMessage:p,isInLast10Actions:y,config:E,isFromPlanningAgent:A};if(r.isConversationStateUpdateEvent(e)&&r.isGoalConversationStateUpdateEvent(e))return(0,b.jsx)(o.GoalStatusContent,{status:e.value});if(r.isAgentErrorEvent(e))return(0,b.jsx)(u.ErrorEventMessage,{event:e,...j});if(r.isHookExecutionEvent(e))return(0,b.jsx)(_.HookExecutionEventMessage,{event:e});if(r.isACPToolCallEvent(e))return(0,b.jsx)(h.GenericEventMessageWrapper,{event:e,isLastMessage:p});if(r.isStreamingDeltaEvent(e)){let{reasoning:t,message:n}=i.splitInlineThink(e.content??``,{streaming:!0}),r=[e.reasoning_content??``,t].filter(Boolean).join(`
2
2
 
3
- `);return(0,b.jsxs)(b.Fragment,{children:[r&&(0,b.jsx)(d.CollapsibleThinking,{content:r}),n&&(0,b.jsx)(c.ChatMessage,{type:`agent`,message:n,isFromPlanningAgent:A})]})}if(r.isActionEvent(e)&&e.action.kind===`FinishAction`)return(0,b.jsx)(m.FinishEventMessage,{event:e,...j});if(r.isActionEvent(e)&&e.action.kind===`ThinkAction`)return(0,b.jsx)(d.CollapsibleThinking,{content:e.action.thought});if(r.isActionEvent(e)){let t=i.getReasoningContent(e);return(0,b.jsxs)(b.Fragment,{children:[t&&(0,b.jsx)(d.CollapsibleThinking,{content:t}),!T&&(0,b.jsx)(g.ThoughtEventMessage,{event:e,isFromPlanningAgent:A}),(0,b.jsx)(h.GenericEventMessageWrapper,{event:e,isLastMessage:y})]})}if(r.isObservationEvent(e)){if(r.isPlanningFileEditorObservationEvent(e))return S&&v.shouldShowPlanPreview(e.id,S)?(0,b.jsx)(l.PlanPreview,{planContent:D,isStreaming:y&&O===t.AgentState.RUNNING,isBuildDisabled:k}):null;let n=p.find(t=>r.isActionEvent(t)&&t.id===e.action_id),a=!T&&n&&r.isActionEvent(n)&&n.action.kind!==`ThinkAction`,o=n&&r.isActionEvent(n)?i.getReasoningContent(n):``;return(0,b.jsxs)(b.Fragment,{children:[o&&(0,b.jsx)(d.CollapsibleThinking,{content:o}),a&&(0,b.jsx)(g.ThoughtEventMessage,{event:n,isFromPlanningAgent:A}),(0,b.jsx)(h.GenericEventMessageWrapper,{event:e,isLastMessage:y,correspondingAction:n&&r.isActionEvent(n)?n:void 0})]})}if(!r.isActionEvent(e)&&!r.isObservationEvent(e)){let t=e;return r.isUserMessageEvent(e)&&C(t)?w(t,j,y):(0,b.jsx)(f.UserAssistantEventMessage,{event:t,...j,isLastMessage:y})}return(0,b.jsx)(h.GenericEventMessageWrapper,{event:e,isLastMessage:y})}exports.EventMessage=T;
3
+ `);return(0,b.jsxs)(b.Fragment,{children:[r&&(0,b.jsx)(d.CollapsibleThinking,{content:r}),n&&(0,b.jsx)(c.ChatMessage,{type:`agent`,message:n,isFromPlanningAgent:A,timestamp:e.timestamp})]})}if(r.isActionEvent(e)&&e.action.kind===`FinishAction`)return(0,b.jsx)(m.FinishEventMessage,{event:e,...j});if(r.isActionEvent(e)&&e.action.kind===`ThinkAction`)return(0,b.jsx)(d.CollapsibleThinking,{content:e.action.thought});if(r.isActionEvent(e)){let t=i.getReasoningContent(e);return(0,b.jsxs)(b.Fragment,{children:[t&&(0,b.jsx)(d.CollapsibleThinking,{content:t}),!S&&(0,b.jsx)(g.ThoughtEventMessage,{event:e,isFromPlanningAgent:A}),(0,b.jsx)(h.GenericEventMessageWrapper,{event:e,isLastMessage:p})]})}if(r.isObservationEvent(e)){if(r.isPlanningFileEditorObservationEvent(e))return x&&v.shouldShowPlanPreview(e.id,x)?(0,b.jsx)(T,{planContent:D,isLastMessage:p,isMainAgentRunning:k}):null;let t=l.find(t=>r.isActionEvent(t)&&t.id===e.action_id),n=!S&&t&&r.isActionEvent(t)&&t.action.kind!==`ThinkAction`,a=t&&r.isActionEvent(t)?i.getReasoningContent(t):``;return(0,b.jsxs)(b.Fragment,{children:[a&&(0,b.jsx)(d.CollapsibleThinking,{content:a}),n&&(0,b.jsx)(g.ThoughtEventMessage,{event:t,isFromPlanningAgent:A}),(0,b.jsx)(h.GenericEventMessageWrapper,{event:e,isLastMessage:p,correspondingAction:t&&r.isActionEvent(t)?t:void 0})]})}if(!r.isActionEvent(e)&&!r.isObservationEvent(e)){let t=e;return r.isUserMessageEvent(e)&&C(t)?w(t,j,p):(0,b.jsx)(f.UserAssistantEventMessage,{event:t,...j,isLastMessage:p})}return(0,b.jsx)(h.GenericEventMessageWrapper,{event:e,isLastMessage:p})}exports.EventMessage=E;
4
4
  //# sourceMappingURL=event-message.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-message.cjs","names":[],"sources":["../../../../src/components/conversation-events/chat/event-message.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n OpenHandsEvent,\n MessageEvent,\n ActionEvent,\n} from \"#/types/agent-server/core\";\nimport {\n FinishAction,\n ThinkAction,\n} from \"#/types/agent-server/core/base/action\";\nimport {\n isActionEvent,\n isObservationEvent,\n isAgentErrorEvent,\n isUserMessageEvent,\n isPlanningFileEditorObservationEvent,\n isHookExecutionEvent,\n isACPToolCallEvent,\n isStreamingDeltaEvent,\n isConversationStateUpdateEvent,\n isGoalConversationStateUpdateEvent,\n} from \"#/types/agent-server/type-guards\";\nimport { useConfig } from \"#/hooks/query/use-config\";\nimport { useConversationStore } from \"#/stores/conversation-store\";\nimport { useAgentState } from \"#/hooks/use-agent-state\";\nimport { AgentState } from \"#/types/agent-state\";\nimport { ChatMessage } from \"#/components/features/chat/chat-message\";\nimport { GoalStatusContent } from \"#/components/features/chat/goal-status-content\";\nimport { PlanPreview } from \"../../features/chat/plan-preview\";\nimport { ErrorEventMessage } from \"./event-message-components/error-event-message\";\nimport { UserAssistantEventMessage } from \"./event-message-components/user-assistant-event-message\";\nimport { FinishEventMessage } from \"./event-message-components/finish-event-message\";\nimport { GenericEventMessageWrapper } from \"./event-message-components/generic-event-message-wrapper\";\nimport { ThoughtEventMessage } from \"./event-message-components/thought-event-message\";\nimport { CollapsibleThinking } from \"./event-message-components/collapsible-thinking\";\nimport { HookExecutionEventMessage } from \"./event-message-components/hook-execution-event-message\";\nimport { createSkillReadyEvent } from \"./event-content-helpers/create-skill-ready-event\";\nimport { shouldShowPlanPreview } from \"./hooks/use-plan-preview-events\";\nimport { getReasoningContent, splitInlineThink } from \"./event-thought-helpers\";\n\ninterface EventMessageProps {\n event: OpenHandsEvent & { isFromPlanningAgent?: boolean };\n messages: OpenHandsEvent[];\n isLastMessage: boolean;\n isInLast10Actions: boolean;\n /** Set of event IDs that should render PlanPreview (one per user message phase) */\n planPreviewEventIds?: Set<string>;\n /**\n * When true, do not render the inline `ThoughtEventMessage` for action /\n * observation events. The caller is expected to render the thought\n * separately (e.g. via a hoisted \"thought\" rendered item) so the message\n * pane and the in-group rendering don't double up on the same content.\n * Has no effect on `ThinkAction`, whose thought IS its action body.\n */\n suppressThought?: boolean;\n}\n\nconst getActivatedSkills = (event: MessageEvent): string[] =>\n event.activated_skills || [];\n\n/**\n * Checks if extended content contains valid text content.\n */\nconst hasValidExtendedContent = (\n extendedContent: MessageEvent[\"extended_content\"],\n): boolean => {\n if (!extendedContent || extendedContent.length === 0) {\n return false;\n }\n\n return extendedContent.some(\n (content) => content.type === \"text\" && content.text.trim().length > 0,\n );\n};\n\n/**\n * Determines if a Skill Ready event should be displayed for the given message event.\n */\nconst shouldShowSkillReadyEvent = (messageEvent: MessageEvent): boolean => {\n const activatedSkills = getActivatedSkills(messageEvent);\n const hasActivatedSkills = activatedSkills.length > 0;\n const hasExtendedContent = hasValidExtendedContent(\n messageEvent.extended_content,\n );\n\n return hasActivatedSkills && hasExtendedContent;\n};\n\ninterface CommonProps {\n isLastMessage: boolean;\n isInLast10Actions: boolean;\n config: unknown;\n isFromPlanningAgent: boolean;\n}\n\n/**\n * Renders a user message with its corresponding Skill Ready event.\n */\nconst renderUserMessageWithSkillReady = (\n messageEvent: MessageEvent,\n commonProps: CommonProps,\n isLastMessage: boolean,\n): React.ReactElement => {\n try {\n const skillReadyEvent = createSkillReadyEvent(messageEvent);\n return (\n <>\n <UserAssistantEventMessage\n event={messageEvent}\n isLastMessage={false}\n isFromPlanningAgent={commonProps.isFromPlanningAgent}\n />\n <GenericEventMessageWrapper\n event={skillReadyEvent}\n isLastMessage={isLastMessage}\n />\n </>\n );\n } catch (error) {\n // If skill ready event creation fails, just render the user message\n return (\n <UserAssistantEventMessage\n event={messageEvent}\n isLastMessage={isLastMessage}\n isFromPlanningAgent={commonProps.isFromPlanningAgent}\n />\n );\n }\n};\n\nexport function EventMessage({\n event,\n messages,\n isLastMessage,\n isInLast10Actions,\n planPreviewEventIds,\n suppressThought = false,\n}: EventMessageProps) {\n const { data: config } = useConfig();\n const { planContent } = useConversationStore();\n const { curAgentState } = useAgentState();\n\n // Disable Build button while agent is running (streaming)\n const isAgentRunning =\n curAgentState === AgentState.RUNNING ||\n curAgentState === AgentState.LOADING;\n\n // Read isFromPlanningAgent directly from the event object\n const isFromPlanningAgent = event.isFromPlanningAgent || false;\n\n // Common props for components that need them\n const commonProps = {\n isLastMessage,\n isInLast10Actions,\n config,\n isFromPlanningAgent,\n };\n\n // Finished `/goal` loop: render the terminal status inline so it settles into\n // the conversation. should-render-event.ts only lets the terminal goal event\n // through; the active loop is shown by the separate bottom GoalStatusBanner.\n if (\n isConversationStateUpdateEvent(event) &&\n isGoalConversationStateUpdateEvent(event)\n ) {\n return <GoalStatusContent status={event.value} />;\n }\n\n // Agent error events\n if (isAgentErrorEvent(event)) {\n return <ErrorEventMessage event={event} {...commonProps} />;\n }\n\n // Hook execution events\n if (isHookExecutionEvent(event)) {\n return <HookExecutionEventMessage event={event} />;\n }\n\n // ACP sub-agent tool call events (Claude Code, Codex, Gemini CLI, …)\n // render through the same generic wrapper used for observation events so\n // the card shape, success indicator and markdown rendering all match.\n if (isACPToolCallEvent(event)) {\n return (\n <GenericEventMessageWrapper event={event} isLastMessage={isLastMessage} />\n );\n }\n\n if (isStreamingDeltaEvent(event)) {\n // Route an inline <think> block to the thinking section, not the bubble.\n const { reasoning: inlineThink, message } = splitInlineThink(\n event.content ?? \"\",\n { streaming: true },\n );\n const reasoningContent = [event.reasoning_content ?? \"\", inlineThink]\n .filter(Boolean)\n .join(\"\\n\\n\");\n return (\n <>\n {reasoningContent && <CollapsibleThinking content={reasoningContent} />}\n {message && (\n <ChatMessage\n type=\"agent\"\n message={message}\n isFromPlanningAgent={isFromPlanningAgent}\n />\n )}\n </>\n );\n }\n\n // Finish actions\n if (isActionEvent(event) && event.action.kind === \"FinishAction\") {\n return (\n <FinishEventMessage\n event={event as ActionEvent<FinishAction>}\n {...commonProps}\n />\n );\n }\n\n // ThinkAction - render the thought inside a collapsible section so it\n // doesn't dominate the chat, especially when the thinking language\n // (usually English) differs from the conversation language.\n if (isActionEvent(event) && event.action.kind === \"ThinkAction\") {\n const thinkAction = event as ActionEvent<ThinkAction>;\n return <CollapsibleThinking content={thinkAction.action.thought} />;\n }\n\n // Action events - render thought + action (will be replaced by thought + observation)\n if (isActionEvent(event)) {\n const reasoningContent = getReasoningContent(event);\n return (\n <>\n {reasoningContent && <CollapsibleThinking content={reasoningContent} />}\n {!suppressThought && (\n <ThoughtEventMessage\n event={event}\n isFromPlanningAgent={isFromPlanningAgent}\n />\n )}\n <GenericEventMessageWrapper\n event={event}\n isLastMessage={isLastMessage}\n />\n </>\n );\n }\n\n // Observation events - find the corresponding action and render thought + observation\n if (isObservationEvent(event)) {\n // Handle PlanningFileEditorObservation specially\n if (isPlanningFileEditorObservationEvent(event)) {\n // Only show PlanPreview if this event is marked as the one to display\n // (last PlanningFileEditorObservation in its phase)\n if (\n planPreviewEventIds &&\n shouldShowPlanPreview(event.id, planPreviewEventIds)\n ) {\n // Show shine effect only if this is the last message AND agent is running\n const isStreaming =\n isLastMessage && curAgentState === AgentState.RUNNING;\n return (\n <PlanPreview\n planContent={planContent}\n isStreaming={isStreaming}\n isBuildDisabled={isAgentRunning}\n />\n );\n }\n // Not the designated preview event for this phase - render nothing\n // This prevents duplicate previews within the same phase\n return null;\n }\n\n // Find the action that this observation is responding to\n const correspondingAction = messages.find(\n (msg) => isActionEvent(msg) && msg.id === event.action_id,\n );\n\n // Skip ThoughtEventMessage for ThinkAction (thought IS the action)\n const shouldShowThought =\n !suppressThought &&\n correspondingAction &&\n isActionEvent(correspondingAction) &&\n correspondingAction.action.kind !== \"ThinkAction\";\n\n const reasoningContent =\n correspondingAction && isActionEvent(correspondingAction)\n ? getReasoningContent(correspondingAction)\n : \"\";\n\n return (\n <>\n {reasoningContent && <CollapsibleThinking content={reasoningContent} />}\n {shouldShowThought && (\n <ThoughtEventMessage\n event={correspondingAction}\n isFromPlanningAgent={isFromPlanningAgent}\n />\n )}\n <GenericEventMessageWrapper\n event={event}\n isLastMessage={isLastMessage}\n correspondingAction={\n correspondingAction && isActionEvent(correspondingAction)\n ? correspondingAction\n : undefined\n }\n />\n </>\n );\n }\n\n // Message events (user and assistant messages)\n if (!isActionEvent(event) && !isObservationEvent(event)) {\n const messageEvent = event as MessageEvent;\n\n // Check if this is a user message that should display a Skill Ready event\n if (isUserMessageEvent(event) && shouldShowSkillReadyEvent(messageEvent)) {\n return renderUserMessageWithSkillReady(\n messageEvent,\n commonProps,\n isLastMessage,\n );\n }\n\n // Render normal message event (user or assistant)\n return (\n <UserAssistantEventMessage\n event={messageEvent}\n {...commonProps}\n isLastMessage={isLastMessage}\n />\n );\n }\n\n // Generic fallback for all other events\n return (\n <GenericEventMessageWrapper event={event} isLastMessage={isLastMessage} />\n );\n}\n"],"mappings":"wtCAyDA,IAAM,EAAsB,GAC1B,EAAM,kBAAoB,CAAC,EAKvB,EACJ,GAEI,CAAC,GAAmB,EAAgB,SAAW,EAC1C,GAGF,EAAgB,KACpB,GAAY,EAAQ,OAAS,QAAU,EAAQ,KAAK,KAAK,EAAE,OAAS,CACvE,EAMI,EAA6B,GAAwC,CAEzE,IAAM,EADkB,EAAmB,CAChB,EAAgB,OAAS,EAC9C,EAAqB,EACzB,EAAa,gBACf,EAEA,OAAO,GAAsB,CAC/B,EAYM,GACJ,EACA,EACA,IACuB,CACvB,GAAI,CACF,IAAM,EAAkB,EAAA,sBAAsB,CAAY,EAC1D,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAA,0BAAD,CACE,MAAO,EACP,cAAe,GACf,oBAAqB,EAAY,mBAClC,CAAA,GACD,EAAA,EAAA,KAAC,EAAA,2BAAD,CACE,MAAO,EACQ,eAChB,CAAA,CACD,CAAA,CAAA,CAEN,MAAgB,CAEd,OACE,EAAA,EAAA,KAAC,EAAA,0BAAD,CACE,MAAO,EACQ,gBACf,oBAAqB,EAAY,mBAClC,CAAA,CAEL,CACF,EAEA,SAAgB,EAAa,CAC3B,QACA,WACA,gBACA,oBACA,sBACA,kBAAkB,IACE,CACpB,GAAM,CAAE,KAAM,GAAW,EAAA,UAAU,EAC7B,CAAE,eAAgB,EAAA,qBAAqB,EACvC,CAAE,iBAAkB,EAAA,cAAc,EAGlC,EACJ,IAAkB,EAAA,WAAW,SAC7B,IAAkB,EAAA,WAAW,QAGzB,EAAsB,EAAM,qBAAuB,GAGnD,EAAc,CAClB,gBACA,oBACA,SACA,qBACF,EAKA,GACE,EAAA,+BAA+B,CAAK,GACpC,EAAA,mCAAmC,CAAK,EAExC,OAAO,EAAA,EAAA,KAAC,EAAA,kBAAD,CAAmB,OAAQ,EAAM,KAAQ,CAAA,EAIlD,GAAI,EAAA,kBAAkB,CAAK,EACzB,OAAO,EAAA,EAAA,KAAC,EAAA,kBAAD,CAA0B,QAAO,GAAI,CAAc,CAAA,EAI5D,GAAI,EAAA,qBAAqB,CAAK,EAC5B,OAAO,EAAA,EAAA,KAAC,EAAA,0BAAD,CAAkC,OAAQ,CAAA,EAMnD,GAAI,EAAA,mBAAmB,CAAK,EAC1B,OACE,EAAA,EAAA,KAAC,EAAA,2BAAD,CAAmC,QAAsB,eAAgB,CAAA,EAI7E,GAAI,EAAA,sBAAsB,CAAK,EAAG,CAEhC,GAAM,CAAE,UAAW,EAAa,WAAY,EAAA,iBAC1C,EAAM,SAAW,GACjB,CAAE,UAAW,EAAK,CACpB,EACM,EAAmB,CAAC,EAAM,mBAAqB,GAAI,CAAW,EACjE,OAAO,OAAO,EACd,KAAK;;CAAM,EACd,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,IAAoB,EAAA,EAAA,KAAC,EAAA,oBAAD,CAAqB,QAAS,CAAmB,CAAA,EACrE,IACC,EAAA,EAAA,KAAC,EAAA,YAAD,CACE,KAAK,QACI,UACY,qBACtB,CAAA,CAEH,CAAA,CAAA,CAEN,CAGA,GAAI,EAAA,cAAc,CAAK,GAAK,EAAM,OAAO,OAAS,eAChD,OACE,EAAA,EAAA,KAAC,EAAA,mBAAD,CACS,QACP,GAAI,CACL,CAAA,EAOL,GAAI,EAAA,cAAc,CAAK,GAAK,EAAM,OAAO,OAAS,cAEhD,OAAO,EAAA,EAAA,KAAC,EAAA,oBAAD,CAAqB,QAAS,EAAY,OAAO,OAAU,CAAA,EAIpE,GAAI,EAAA,cAAc,CAAK,EAAG,CACxB,IAAM,EAAmB,EAAA,oBAAoB,CAAK,EAClD,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,IAAoB,EAAA,EAAA,KAAC,EAAA,oBAAD,CAAqB,QAAS,CAAmB,CAAA,EACrE,CAAC,IACA,EAAA,EAAA,KAAC,EAAA,oBAAD,CACS,QACc,qBACtB,CAAA,GAEH,EAAA,EAAA,KAAC,EAAA,2BAAD,CACS,QACQ,eAChB,CAAA,CACD,CAAA,CAAA,CAEN,CAGA,GAAI,EAAA,mBAAmB,CAAK,EAAG,CAE7B,GAAI,EAAA,qCAAqC,CAAK,EAoB5C,OAhBE,GACA,EAAA,sBAAsB,EAAM,GAAI,CAAmB,GAMjD,EAAA,EAAA,KAAC,EAAA,YAAD,CACe,cACA,YAJf,GAAiB,IAAkB,EAAA,WAAW,QAK5C,gBAAiB,CAClB,CAAA,EAKE,KAIT,IAAM,EAAsB,EAAS,KAClC,GAAQ,EAAA,cAAc,CAAG,GAAK,EAAI,KAAO,EAAM,SAClD,EAGM,EACJ,CAAC,GACD,GACA,EAAA,cAAc,CAAmB,GACjC,EAAoB,OAAO,OAAS,cAEhC,EACJ,GAAuB,EAAA,cAAc,CAAmB,EACpD,EAAA,oBAAoB,CAAmB,EACvC,GAEN,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,IAAoB,EAAA,EAAA,KAAC,EAAA,oBAAD,CAAqB,QAAS,CAAmB,CAAA,EACrE,IACC,EAAA,EAAA,KAAC,EAAA,oBAAD,CACE,MAAO,EACc,qBACtB,CAAA,GAEH,EAAA,EAAA,KAAC,EAAA,2BAAD,CACS,QACQ,gBACf,oBACE,GAAuB,EAAA,cAAc,CAAmB,EACpD,EACA,IAAA,EAEP,CAAA,CACD,CAAA,CAAA,CAEN,CAGA,GAAI,CAAC,EAAA,cAAc,CAAK,GAAK,CAAC,EAAA,mBAAmB,CAAK,EAAG,CACvD,IAAM,EAAe,EAYrB,OATI,EAAA,mBAAmB,CAAK,GAAK,EAA0B,CAAY,EAC9D,EACL,EACA,EACA,CACF,GAKA,EAAA,EAAA,KAAC,EAAA,0BAAD,CACE,MAAO,EACP,GAAI,EACW,eAChB,CAAA,CAEL,CAGA,OACE,EAAA,EAAA,KAAC,EAAA,2BAAD,CAAmC,QAAsB,eAAgB,CAAA,CAE7E"}
1
+ {"version":3,"file":"event-message.cjs","names":[],"sources":["../../../../src/components/conversation-events/chat/event-message.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n OpenHandsEvent,\n MessageEvent,\n ActionEvent,\n} from \"#/types/agent-server/core\";\nimport {\n FinishAction,\n ThinkAction,\n} from \"#/types/agent-server/core/base/action\";\nimport {\n isActionEvent,\n isObservationEvent,\n isAgentErrorEvent,\n isUserMessageEvent,\n isPlanningFileEditorObservationEvent,\n isHookExecutionEvent,\n isACPToolCallEvent,\n isStreamingDeltaEvent,\n isConversationStateUpdateEvent,\n isGoalConversationStateUpdateEvent,\n} from \"#/types/agent-server/type-guards\";\nimport { useConfig } from \"#/hooks/query/use-config\";\nimport { useConversationStore } from \"#/stores/conversation-store\";\nimport { useAgentState, usePlanningAgentState } from \"#/hooks/use-agent-state\";\nimport { AgentState } from \"#/types/agent-state\";\nimport { ChatMessage } from \"#/components/features/chat/chat-message\";\nimport { GoalStatusContent } from \"#/components/features/chat/goal-status-content\";\nimport { PlanPreview } from \"../../features/chat/plan-preview\";\nimport { ErrorEventMessage } from \"./event-message-components/error-event-message\";\nimport { UserAssistantEventMessage } from \"./event-message-components/user-assistant-event-message\";\nimport { FinishEventMessage } from \"./event-message-components/finish-event-message\";\nimport { GenericEventMessageWrapper } from \"./event-message-components/generic-event-message-wrapper\";\nimport { ThoughtEventMessage } from \"./event-message-components/thought-event-message\";\nimport { CollapsibleThinking } from \"./event-message-components/collapsible-thinking\";\nimport { HookExecutionEventMessage } from \"./event-message-components/hook-execution-event-message\";\nimport { createSkillReadyEvent } from \"./event-content-helpers/create-skill-ready-event\";\nimport { shouldShowPlanPreview } from \"./hooks/use-plan-preview-events\";\nimport { getReasoningContent, splitInlineThink } from \"./event-thought-helpers\";\n\ninterface EventMessageProps {\n event: OpenHandsEvent & { isFromPlanningAgent?: boolean };\n messages: OpenHandsEvent[];\n isLastMessage: boolean;\n isInLast10Actions: boolean;\n /** Set of event IDs that should render PlanPreview (one per user message phase) */\n planPreviewEventIds?: Set<string>;\n /**\n * When true, do not render the inline `ThoughtEventMessage` for action /\n * observation events. The caller is expected to render the thought\n * separately (e.g. via a hoisted \"thought\" rendered item) so the message\n * pane and the in-group rendering don't double up on the same content.\n * Has no effect on `ThinkAction`, whose thought IS its action body.\n */\n suppressThought?: boolean;\n}\n\nconst getActivatedSkills = (event: MessageEvent): string[] =>\n event.activated_skills || [];\n\n/**\n * Checks if extended content contains valid text content.\n */\nconst hasValidExtendedContent = (\n extendedContent: MessageEvent[\"extended_content\"],\n): boolean => {\n if (!extendedContent || extendedContent.length === 0) {\n return false;\n }\n\n return extendedContent.some(\n (content) => content.type === \"text\" && content.text.trim().length > 0,\n );\n};\n\n/**\n * Determines if a Skill Ready event should be displayed for the given message event.\n */\nconst shouldShowSkillReadyEvent = (messageEvent: MessageEvent): boolean => {\n const activatedSkills = getActivatedSkills(messageEvent);\n const hasActivatedSkills = activatedSkills.length > 0;\n const hasExtendedContent = hasValidExtendedContent(\n messageEvent.extended_content,\n );\n\n return hasActivatedSkills && hasExtendedContent;\n};\n\ninterface CommonProps {\n isLastMessage: boolean;\n isInLast10Actions: boolean;\n config: unknown;\n isFromPlanningAgent: boolean;\n}\n\n/**\n * Renders a user message with its corresponding Skill Ready event.\n */\nconst renderUserMessageWithSkillReady = (\n messageEvent: MessageEvent,\n commonProps: CommonProps,\n isLastMessage: boolean,\n): React.ReactElement => {\n try {\n const skillReadyEvent = createSkillReadyEvent(messageEvent);\n return (\n <>\n <UserAssistantEventMessage\n event={messageEvent}\n isLastMessage={false}\n isFromPlanningAgent={commonProps.isFromPlanningAgent}\n />\n <GenericEventMessageWrapper\n event={skillReadyEvent}\n isLastMessage={isLastMessage}\n />\n </>\n );\n } catch (error) {\n // If skill ready event creation fails, just render the user message\n return (\n <UserAssistantEventMessage\n event={messageEvent}\n isLastMessage={isLastMessage}\n isFromPlanningAgent={commonProps.isFromPlanningAgent}\n />\n );\n }\n};\n\n/**\n * Renders the plan preview. Its own component so `usePlanningAgentState()`\n * only subscribes on this rare row, not every message in the conversation.\n */\nfunction PlanningObservationPreview({\n planContent,\n isLastMessage,\n isMainAgentRunning,\n}: {\n planContent: string | null;\n isLastMessage: boolean;\n isMainAgentRunning: boolean;\n}) {\n const {\n localPlanningConversationId,\n curPlanningAgentState,\n isPlanningAgentRunning,\n } = usePlanningAgentState();\n\n // Guard on the id explicitly — useAgentState(undefined) falls back to the\n // route conversation, which could be mistaken for the planner's activity.\n const isStreaming =\n isLastMessage &&\n !!localPlanningConversationId &&\n curPlanningAgentState === AgentState.RUNNING;\n\n return (\n <PlanPreview\n planContent={planContent}\n isStreaming={isStreaming}\n isBuildDisabled={isMainAgentRunning || isPlanningAgentRunning}\n />\n );\n}\n\nexport function EventMessage({\n event,\n messages,\n isLastMessage,\n isInLast10Actions,\n planPreviewEventIds,\n suppressThought = false,\n}: EventMessageProps) {\n const { data: config } = useConfig();\n const { planContent } = useConversationStore();\n const { curAgentState } = useAgentState();\n\n // Planner-running state is folded in by PlanningObservationPreview below,\n // not read here, to avoid a second useAgentState() subscription per row.\n const isAgentRunning =\n curAgentState === AgentState.RUNNING ||\n curAgentState === AgentState.LOADING;\n\n // Read isFromPlanningAgent directly from the event object\n const isFromPlanningAgent = event.isFromPlanningAgent || false;\n\n // Common props for components that need them\n const commonProps = {\n isLastMessage,\n isInLast10Actions,\n config,\n isFromPlanningAgent,\n };\n\n // Finished `/goal` loop: render the terminal status inline so it settles into\n // the conversation. should-render-event.ts only lets the terminal goal event\n // through; the active loop is shown by the separate bottom GoalStatusBanner.\n if (\n isConversationStateUpdateEvent(event) &&\n isGoalConversationStateUpdateEvent(event)\n ) {\n return <GoalStatusContent status={event.value} />;\n }\n\n // Agent error events\n if (isAgentErrorEvent(event)) {\n return <ErrorEventMessage event={event} {...commonProps} />;\n }\n\n // Hook execution events\n if (isHookExecutionEvent(event)) {\n return <HookExecutionEventMessage event={event} />;\n }\n\n // ACP sub-agent tool call events (Claude Code, Codex, Gemini CLI, …)\n // render through the same generic wrapper used for observation events so\n // the card shape, success indicator and markdown rendering all match.\n if (isACPToolCallEvent(event)) {\n return (\n <GenericEventMessageWrapper event={event} isLastMessage={isLastMessage} />\n );\n }\n\n if (isStreamingDeltaEvent(event)) {\n // Route an inline <think> block to the thinking section, not the bubble.\n const { reasoning: inlineThink, message } = splitInlineThink(\n event.content ?? \"\",\n { streaming: true },\n );\n const reasoningContent = [event.reasoning_content ?? \"\", inlineThink]\n .filter(Boolean)\n .join(\"\\n\\n\");\n return (\n <>\n {reasoningContent && <CollapsibleThinking content={reasoningContent} />}\n {message && (\n <ChatMessage\n type=\"agent\"\n message={message}\n isFromPlanningAgent={isFromPlanningAgent}\n timestamp={event.timestamp}\n />\n )}\n </>\n );\n }\n\n // Finish actions\n if (isActionEvent(event) && event.action.kind === \"FinishAction\") {\n return (\n <FinishEventMessage\n event={event as ActionEvent<FinishAction>}\n {...commonProps}\n />\n );\n }\n\n // ThinkAction - render the thought inside a collapsible section so it\n // doesn't dominate the chat, especially when the thinking language\n // (usually English) differs from the conversation language.\n if (isActionEvent(event) && event.action.kind === \"ThinkAction\") {\n const thinkAction = event as ActionEvent<ThinkAction>;\n return <CollapsibleThinking content={thinkAction.action.thought} />;\n }\n\n // Action events - render thought + action (will be replaced by thought + observation)\n if (isActionEvent(event)) {\n const reasoningContent = getReasoningContent(event);\n return (\n <>\n {reasoningContent && <CollapsibleThinking content={reasoningContent} />}\n {!suppressThought && (\n <ThoughtEventMessage\n event={event}\n isFromPlanningAgent={isFromPlanningAgent}\n />\n )}\n <GenericEventMessageWrapper\n event={event}\n isLastMessage={isLastMessage}\n />\n </>\n );\n }\n\n // Observation events - find the corresponding action and render thought + observation\n if (isObservationEvent(event)) {\n // Handle PlanningFileEditorObservation specially\n if (isPlanningFileEditorObservationEvent(event)) {\n // Only show PlanPreview if this event is marked as the one to display\n // (last PlanningFileEditorObservation in its phase)\n if (\n planPreviewEventIds &&\n shouldShowPlanPreview(event.id, planPreviewEventIds)\n ) {\n return (\n <PlanningObservationPreview\n planContent={planContent}\n isLastMessage={isLastMessage}\n isMainAgentRunning={isAgentRunning}\n />\n );\n }\n // Not the designated preview event for this phase - render nothing\n // This prevents duplicate previews within the same phase\n return null;\n }\n\n // Find the action that this observation is responding to\n const correspondingAction = messages.find(\n (msg) => isActionEvent(msg) && msg.id === event.action_id,\n );\n\n // Skip ThoughtEventMessage for ThinkAction (thought IS the action)\n const shouldShowThought =\n !suppressThought &&\n correspondingAction &&\n isActionEvent(correspondingAction) &&\n correspondingAction.action.kind !== \"ThinkAction\";\n\n const reasoningContent =\n correspondingAction && isActionEvent(correspondingAction)\n ? getReasoningContent(correspondingAction)\n : \"\";\n\n return (\n <>\n {reasoningContent && <CollapsibleThinking content={reasoningContent} />}\n {shouldShowThought && (\n <ThoughtEventMessage\n event={correspondingAction}\n isFromPlanningAgent={isFromPlanningAgent}\n />\n )}\n <GenericEventMessageWrapper\n event={event}\n isLastMessage={isLastMessage}\n correspondingAction={\n correspondingAction && isActionEvent(correspondingAction)\n ? correspondingAction\n : undefined\n }\n />\n </>\n );\n }\n\n // Message events (user and assistant messages)\n if (!isActionEvent(event) && !isObservationEvent(event)) {\n const messageEvent = event as MessageEvent;\n\n // Check if this is a user message that should display a Skill Ready event\n if (isUserMessageEvent(event) && shouldShowSkillReadyEvent(messageEvent)) {\n return renderUserMessageWithSkillReady(\n messageEvent,\n commonProps,\n isLastMessage,\n );\n }\n\n // Render normal message event (user or assistant)\n return (\n <UserAssistantEventMessage\n event={messageEvent}\n {...commonProps}\n isLastMessage={isLastMessage}\n />\n );\n }\n\n // Generic fallback for all other events\n return (\n <GenericEventMessageWrapper event={event} isLastMessage={isLastMessage} />\n );\n}\n"],"mappings":"wtCAyDA,IAAM,EAAsB,GAC1B,EAAM,kBAAoB,CAAC,EAKvB,EACJ,GAEI,CAAC,GAAmB,EAAgB,SAAW,EAC1C,GAGF,EAAgB,KACpB,GAAY,EAAQ,OAAS,QAAU,EAAQ,KAAK,KAAK,EAAE,OAAS,CACvE,EAMI,EAA6B,GAAwC,CAEzE,IAAM,EADkB,EAAmB,CAChB,EAAgB,OAAS,EAC9C,EAAqB,EACzB,EAAa,gBACf,EAEA,OAAO,GAAsB,CAC/B,EAYM,GACJ,EACA,EACA,IACuB,CACvB,GAAI,CACF,IAAM,EAAkB,EAAA,sBAAsB,CAAY,EAC1D,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAA,0BAAD,CACE,MAAO,EACP,cAAe,GACf,oBAAqB,EAAY,mBAClC,CAAA,GACD,EAAA,EAAA,KAAC,EAAA,2BAAD,CACE,MAAO,EACQ,eAChB,CAAA,CACD,CAAA,CAAA,CAEN,MAAgB,CAEd,OACE,EAAA,EAAA,KAAC,EAAA,0BAAD,CACE,MAAO,EACQ,gBACf,oBAAqB,EAAY,mBAClC,CAAA,CAEL,CACF,EAMA,SAAS,EAA2B,CAClC,cACA,gBACA,sBAKC,CACD,GAAM,CACJ,8BACA,wBACA,0BACE,EAAA,sBAAsB,EAS1B,OACE,EAAA,EAAA,KAAC,EAAA,YAAD,CACe,cACA,YAPf,GACA,CAAC,CAAC,GACF,IAA0B,EAAA,WAAW,QAMnC,gBAAiB,GAAsB,CACxC,CAAA,CAEL,CAEA,SAAgB,EAAa,CAC3B,QACA,WACA,gBACA,oBACA,sBACA,kBAAkB,IACE,CACpB,GAAM,CAAE,KAAM,GAAW,EAAA,UAAU,EAC7B,CAAE,eAAgB,EAAA,qBAAqB,EACvC,CAAE,iBAAkB,EAAA,cAAc,EAIlC,EACJ,IAAkB,EAAA,WAAW,SAC7B,IAAkB,EAAA,WAAW,QAGzB,EAAsB,EAAM,qBAAuB,GAGnD,EAAc,CAClB,gBACA,oBACA,SACA,qBACF,EAKA,GACE,EAAA,+BAA+B,CAAK,GACpC,EAAA,mCAAmC,CAAK,EAExC,OAAO,EAAA,EAAA,KAAC,EAAA,kBAAD,CAAmB,OAAQ,EAAM,KAAQ,CAAA,EAIlD,GAAI,EAAA,kBAAkB,CAAK,EACzB,OAAO,EAAA,EAAA,KAAC,EAAA,kBAAD,CAA0B,QAAO,GAAI,CAAc,CAAA,EAI5D,GAAI,EAAA,qBAAqB,CAAK,EAC5B,OAAO,EAAA,EAAA,KAAC,EAAA,0BAAD,CAAkC,OAAQ,CAAA,EAMnD,GAAI,EAAA,mBAAmB,CAAK,EAC1B,OACE,EAAA,EAAA,KAAC,EAAA,2BAAD,CAAmC,QAAsB,eAAgB,CAAA,EAI7E,GAAI,EAAA,sBAAsB,CAAK,EAAG,CAEhC,GAAM,CAAE,UAAW,EAAa,WAAY,EAAA,iBAC1C,EAAM,SAAW,GACjB,CAAE,UAAW,EAAK,CACpB,EACM,EAAmB,CAAC,EAAM,mBAAqB,GAAI,CAAW,EACjE,OAAO,OAAO,EACd,KAAK;;CAAM,EACd,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,IAAoB,EAAA,EAAA,KAAC,EAAA,oBAAD,CAAqB,QAAS,CAAmB,CAAA,EACrE,IACC,EAAA,EAAA,KAAC,EAAA,YAAD,CACE,KAAK,QACI,UACY,sBACrB,UAAW,EAAM,SAClB,CAAA,CAEH,CAAA,CAAA,CAEN,CAGA,GAAI,EAAA,cAAc,CAAK,GAAK,EAAM,OAAO,OAAS,eAChD,OACE,EAAA,EAAA,KAAC,EAAA,mBAAD,CACS,QACP,GAAI,CACL,CAAA,EAOL,GAAI,EAAA,cAAc,CAAK,GAAK,EAAM,OAAO,OAAS,cAEhD,OAAO,EAAA,EAAA,KAAC,EAAA,oBAAD,CAAqB,QAAS,EAAY,OAAO,OAAU,CAAA,EAIpE,GAAI,EAAA,cAAc,CAAK,EAAG,CACxB,IAAM,EAAmB,EAAA,oBAAoB,CAAK,EAClD,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,IAAoB,EAAA,EAAA,KAAC,EAAA,oBAAD,CAAqB,QAAS,CAAmB,CAAA,EACrE,CAAC,IACA,EAAA,EAAA,KAAC,EAAA,oBAAD,CACS,QACc,qBACtB,CAAA,GAEH,EAAA,EAAA,KAAC,EAAA,2BAAD,CACS,QACQ,eAChB,CAAA,CACD,CAAA,CAAA,CAEN,CAGA,GAAI,EAAA,mBAAmB,CAAK,EAAG,CAE7B,GAAI,EAAA,qCAAqC,CAAK,EAiB5C,OAbE,GACA,EAAA,sBAAsB,EAAM,GAAI,CAAmB,GAGjD,EAAA,EAAA,KAAC,EAAD,CACe,cACE,gBACf,mBAAoB,CACrB,CAAA,EAKE,KAIT,IAAM,EAAsB,EAAS,KAClC,GAAQ,EAAA,cAAc,CAAG,GAAK,EAAI,KAAO,EAAM,SAClD,EAGM,EACJ,CAAC,GACD,GACA,EAAA,cAAc,CAAmB,GACjC,EAAoB,OAAO,OAAS,cAEhC,EACJ,GAAuB,EAAA,cAAc,CAAmB,EACpD,EAAA,oBAAoB,CAAmB,EACvC,GAEN,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,IAAoB,EAAA,EAAA,KAAC,EAAA,oBAAD,CAAqB,QAAS,CAAmB,CAAA,EACrE,IACC,EAAA,EAAA,KAAC,EAAA,oBAAD,CACE,MAAO,EACc,qBACtB,CAAA,GAEH,EAAA,EAAA,KAAC,EAAA,2BAAD,CACS,QACQ,gBACf,oBACE,GAAuB,EAAA,cAAc,CAAmB,EACpD,EACA,IAAA,EAEP,CAAA,CACD,CAAA,CAAA,CAEN,CAGA,GAAI,CAAC,EAAA,cAAc,CAAK,GAAK,CAAC,EAAA,mBAAmB,CAAK,EAAG,CACvD,IAAM,EAAe,EAYrB,OATI,EAAA,mBAAmB,CAAK,GAAK,EAA0B,CAAY,EAC9D,EACL,EACA,EACA,CACF,GAKA,EAAA,EAAA,KAAC,EAAA,0BAAD,CACE,MAAO,EACP,GAAI,EACW,eAChB,CAAA,CAEL,CAGA,OACE,EAAA,EAAA,KAAC,EAAA,2BAAD,CAAmC,QAAsB,eAAgB,CAAA,CAE7E"}
@@ -2,124 +2,133 @@ import { AgentState as e } from "../../../types/agent-state.js";
2
2
  import { useConversationStore as t } from "../../../stores/conversation-store.js";
3
3
  import { isACPToolCallEvent as n, isActionEvent as r, isAgentErrorEvent as i, isConversationStateUpdateEvent as a, isGoalConversationStateUpdateEvent as o, isHookExecutionEvent as s, isObservationEvent as c, isPlanningFileEditorObservationEvent as l, isStreamingDeltaEvent as u, isUserMessageEvent as d } from "../../../types/agent-server/type-guards.js";
4
4
  import { getReasoningContent as f, splitInlineThink as p } from "./event-thought-helpers.js";
5
- import { useAgentState as m } from "../../../hooks/use-agent-state.js";
6
- import { GoalStatusContent as h } from "../../features/chat/goal-status-content.js";
7
- import { useConfig as g } from "../../../hooks/query/use-config.js";
8
- import { ChatMessage as _ } from "../../features/chat/chat-message.js";
9
- import { PlanPreview as v } from "../../features/chat/plan-preview.js";
10
- import { ErrorEventMessage as y } from "./event-message-components/error-event-message.js";
11
- import { CollapsibleThinking as b } from "./event-message-components/collapsible-thinking.js";
12
- import { UserAssistantEventMessage as x } from "./event-message-components/user-assistant-event-message.js";
13
- import { createSkillReadyEvent as S } from "./event-content-helpers/create-skill-ready-event.js";
14
- import { FinishEventMessage as C } from "./event-message-components/finish-event-message.js";
15
- import { GenericEventMessageWrapper as w } from "./event-message-components/generic-event-message-wrapper.js";
16
- import { ThoughtEventMessage as T } from "./event-message-components/thought-event-message.js";
17
- import { HookExecutionEventMessage as E } from "../../shared/hook-execution-event-message.js";
5
+ import { useAgentState as m, usePlanningAgentState as h } from "../../../hooks/use-agent-state.js";
6
+ import { GoalStatusContent as g } from "../../features/chat/goal-status-content.js";
7
+ import { useConfig as _ } from "../../../hooks/query/use-config.js";
8
+ import { ChatMessage as v } from "../../features/chat/chat-message.js";
9
+ import { PlanPreview as y } from "../../features/chat/plan-preview.js";
10
+ import { ErrorEventMessage as b } from "./event-message-components/error-event-message.js";
11
+ import { CollapsibleThinking as x } from "./event-message-components/collapsible-thinking.js";
12
+ import { UserAssistantEventMessage as S } from "./event-message-components/user-assistant-event-message.js";
13
+ import { createSkillReadyEvent as C } from "./event-content-helpers/create-skill-ready-event.js";
14
+ import { FinishEventMessage as w } from "./event-message-components/finish-event-message.js";
15
+ import { GenericEventMessageWrapper as T } from "./event-message-components/generic-event-message-wrapper.js";
16
+ import { ThoughtEventMessage as E } from "./event-message-components/thought-event-message.js";
17
+ import { HookExecutionEventMessage as D } from "../../shared/hook-execution-event-message.js";
18
18
  import "./event-message-components/hook-execution-event-message.js";
19
- import { shouldShowPlanPreview as D } from "./hooks/use-plan-preview-events.js";
19
+ import { shouldShowPlanPreview as O } from "./hooks/use-plan-preview-events.js";
20
20
  import "react";
21
- import { Fragment as O, jsx as k, jsxs as A } from "react/jsx-runtime";
21
+ import { Fragment as k, jsx as A, jsxs as j } from "react/jsx-runtime";
22
22
  //#region src/components/conversation-events/chat/event-message.tsx
23
- var j = (e) => e.activated_skills || [], M = (e) => !e || e.length === 0 ? !1 : e.some((e) => e.type === "text" && e.text.trim().length > 0), N = (e) => {
24
- let t = j(e).length > 0, n = M(e.extended_content);
23
+ var M = (e) => e.activated_skills || [], N = (e) => !e || e.length === 0 ? !1 : e.some((e) => e.type === "text" && e.text.trim().length > 0), P = (e) => {
24
+ let t = M(e).length > 0, n = N(e.extended_content);
25
25
  return t && n;
26
- }, P = (e, t, n) => {
26
+ }, F = (e, t, n) => {
27
27
  try {
28
- let r = S(e);
29
- return /* @__PURE__ */ A(O, { children: [/* @__PURE__ */ k(x, {
28
+ let r = C(e);
29
+ return /* @__PURE__ */ j(k, { children: [/* @__PURE__ */ A(S, {
30
30
  event: e,
31
31
  isLastMessage: !1,
32
32
  isFromPlanningAgent: t.isFromPlanningAgent
33
- }), /* @__PURE__ */ k(w, {
33
+ }), /* @__PURE__ */ A(T, {
34
34
  event: r,
35
35
  isLastMessage: n
36
36
  })] });
37
37
  } catch {
38
- return /* @__PURE__ */ k(x, {
38
+ return /* @__PURE__ */ A(S, {
39
39
  event: e,
40
40
  isLastMessage: n,
41
41
  isFromPlanningAgent: t.isFromPlanningAgent
42
42
  });
43
43
  }
44
44
  };
45
- function F({ event: S, messages: j, isLastMessage: M, isInLast10Actions: F, planPreviewEventIds: I, suppressThought: L = !1 }) {
46
- let { data: R } = g(), { planContent: z } = t(), { curAgentState: B } = m(), V = B === e.RUNNING || B === e.LOADING, H = S.isFromPlanningAgent || !1, U = {
47
- isLastMessage: M,
48
- isInLast10Actions: F,
45
+ function I({ planContent: t, isLastMessage: n, isMainAgentRunning: r }) {
46
+ let { localPlanningConversationId: i, curPlanningAgentState: a, isPlanningAgentRunning: o } = h();
47
+ return /* @__PURE__ */ A(y, {
48
+ planContent: t,
49
+ isStreaming: n && !!i && a === e.RUNNING,
50
+ isBuildDisabled: r || o
51
+ });
52
+ }
53
+ function L({ event: h, messages: y, isLastMessage: C, isInLast10Actions: M, planPreviewEventIds: N, suppressThought: L = !1 }) {
54
+ let { data: R } = _(), { planContent: z } = t(), { curAgentState: B } = m(), V = B === e.RUNNING || B === e.LOADING, H = h.isFromPlanningAgent || !1, U = {
55
+ isLastMessage: C,
56
+ isInLast10Actions: M,
49
57
  config: R,
50
58
  isFromPlanningAgent: H
51
59
  };
52
- if (a(S) && o(S)) return /* @__PURE__ */ k(h, { status: S.value });
53
- if (i(S)) return /* @__PURE__ */ k(y, {
54
- event: S,
60
+ if (a(h) && o(h)) return /* @__PURE__ */ A(g, { status: h.value });
61
+ if (i(h)) return /* @__PURE__ */ A(b, {
62
+ event: h,
55
63
  ...U
56
64
  });
57
- if (s(S)) return /* @__PURE__ */ k(E, { event: S });
58
- if (n(S)) return /* @__PURE__ */ k(w, {
59
- event: S,
60
- isLastMessage: M
65
+ if (s(h)) return /* @__PURE__ */ A(D, { event: h });
66
+ if (n(h)) return /* @__PURE__ */ A(T, {
67
+ event: h,
68
+ isLastMessage: C
61
69
  });
62
- if (u(S)) {
63
- let { reasoning: e, message: t } = p(S.content ?? "", { streaming: !0 }), n = [S.reasoning_content ?? "", e].filter(Boolean).join("\n\n");
64
- return /* @__PURE__ */ A(O, { children: [n && /* @__PURE__ */ k(b, { content: n }), t && /* @__PURE__ */ k(_, {
70
+ if (u(h)) {
71
+ let { reasoning: e, message: t } = p(h.content ?? "", { streaming: !0 }), n = [h.reasoning_content ?? "", e].filter(Boolean).join("\n\n");
72
+ return /* @__PURE__ */ j(k, { children: [n && /* @__PURE__ */ A(x, { content: n }), t && /* @__PURE__ */ A(v, {
65
73
  type: "agent",
66
74
  message: t,
67
- isFromPlanningAgent: H
75
+ isFromPlanningAgent: H,
76
+ timestamp: h.timestamp
68
77
  })] });
69
78
  }
70
- if (r(S) && S.action.kind === "FinishAction") return /* @__PURE__ */ k(C, {
71
- event: S,
79
+ if (r(h) && h.action.kind === "FinishAction") return /* @__PURE__ */ A(w, {
80
+ event: h,
72
81
  ...U
73
82
  });
74
- if (r(S) && S.action.kind === "ThinkAction") return /* @__PURE__ */ k(b, { content: S.action.thought });
75
- if (r(S)) {
76
- let e = f(S);
77
- return /* @__PURE__ */ A(O, { children: [
78
- e && /* @__PURE__ */ k(b, { content: e }),
79
- !L && /* @__PURE__ */ k(T, {
80
- event: S,
83
+ if (r(h) && h.action.kind === "ThinkAction") return /* @__PURE__ */ A(x, { content: h.action.thought });
84
+ if (r(h)) {
85
+ let e = f(h);
86
+ return /* @__PURE__ */ j(k, { children: [
87
+ e && /* @__PURE__ */ A(x, { content: e }),
88
+ !L && /* @__PURE__ */ A(E, {
89
+ event: h,
81
90
  isFromPlanningAgent: H
82
91
  }),
83
- /* @__PURE__ */ k(w, {
84
- event: S,
85
- isLastMessage: M
92
+ /* @__PURE__ */ A(T, {
93
+ event: h,
94
+ isLastMessage: C
86
95
  })
87
96
  ] });
88
97
  }
89
- if (c(S)) {
90
- if (l(S)) return I && D(S.id, I) ? /* @__PURE__ */ k(v, {
98
+ if (c(h)) {
99
+ if (l(h)) return N && O(h.id, N) ? /* @__PURE__ */ A(I, {
91
100
  planContent: z,
92
- isStreaming: M && B === e.RUNNING,
93
- isBuildDisabled: V
101
+ isLastMessage: C,
102
+ isMainAgentRunning: V
94
103
  }) : null;
95
- let t = j.find((e) => r(e) && e.id === S.action_id), n = !L && t && r(t) && t.action.kind !== "ThinkAction", i = t && r(t) ? f(t) : "";
96
- return /* @__PURE__ */ A(O, { children: [
97
- i && /* @__PURE__ */ k(b, { content: i }),
98
- n && /* @__PURE__ */ k(T, {
99
- event: t,
104
+ let e = y.find((e) => r(e) && e.id === h.action_id), t = !L && e && r(e) && e.action.kind !== "ThinkAction", n = e && r(e) ? f(e) : "";
105
+ return /* @__PURE__ */ j(k, { children: [
106
+ n && /* @__PURE__ */ A(x, { content: n }),
107
+ t && /* @__PURE__ */ A(E, {
108
+ event: e,
100
109
  isFromPlanningAgent: H
101
110
  }),
102
- /* @__PURE__ */ k(w, {
103
- event: S,
104
- isLastMessage: M,
105
- correspondingAction: t && r(t) ? t : void 0
111
+ /* @__PURE__ */ A(T, {
112
+ event: h,
113
+ isLastMessage: C,
114
+ correspondingAction: e && r(e) ? e : void 0
106
115
  })
107
116
  ] });
108
117
  }
109
- if (!r(S) && !c(S)) {
110
- let e = S;
111
- return d(S) && N(e) ? P(e, U, M) : /* @__PURE__ */ k(x, {
118
+ if (!r(h) && !c(h)) {
119
+ let e = h;
120
+ return d(h) && P(e) ? F(e, U, C) : /* @__PURE__ */ A(S, {
112
121
  event: e,
113
122
  ...U,
114
- isLastMessage: M
123
+ isLastMessage: C
115
124
  });
116
125
  }
117
- return /* @__PURE__ */ k(w, {
118
- event: S,
119
- isLastMessage: M
126
+ return /* @__PURE__ */ A(T, {
127
+ event: h,
128
+ isLastMessage: C
120
129
  });
121
130
  }
122
131
  //#endregion
123
- export { F as EventMessage };
132
+ export { L as EventMessage };
124
133
 
125
134
  //# sourceMappingURL=event-message.js.map