@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 +1 @@
1
- {"version":3,"file":"skills-service.cjs","names":[],"sources":["../../src/api/skills-service.ts"],"sourcesContent":["import { SkillsClient } from \"@openhands/typescript-client/clients\";\nimport {\n SKILLS_CATALOG,\n type SkillCatalogEntry,\n} from \"@openhands/extensions/skills\";\nimport { SkillInfo } from \"#/types/settings\";\nimport { getAgentServerWorkingDir } from \"./agent-server-config\";\nimport { getActiveBackend } from \"./backend-registry/active-store\";\nimport { fetchCloudSkills } from \"./cloud/skills-service.api\";\nimport { getAgentServerClientOptions } from \"./agent-server-client-options\";\n\nfunction catalogEntryToSkillInfo(entry: SkillCatalogEntry): SkillInfo {\n return {\n name: entry.name,\n type: \"knowledge\",\n source: \"public\",\n description: entry.description,\n triggers: entry.triggers,\n category: entry.category,\n content: entry.content,\n license: entry.license ?? null,\n compatibility: entry.compatibility ?? null,\n };\n}\n\n/**\n * Public skills loaded from the `@openhands/extensions` npm package.\n *\n * This is an **immutable build-time snapshot**: the catalog is baked into the\n * bundle at `npm run build` / `vite build` time and does not change at\n * runtime. Updating the catalog requires bumping the `@openhands/extensions`\n * dependency and rebuilding.\n */\nconst PUBLIC_SKILLS: SkillInfo[] = SKILLS_CATALOG.map(catalogEntryToSkillInfo);\n\nclass SkillsService {\n static async getSkills(projectDir?: string): Promise<SkillInfo[]> {\n if (getActiveBackend().backend.kind === \"cloud\") {\n return fetchCloudSkills();\n }\n\n // Public skills come from the bundled @openhands/extensions npm package —\n // no agent-server round-trip or GitHub fetch needed. Only ask the agent-\n // server for user and project skills so local .agents/skills/ content is\n // still picked up.\n let localSkills: SkillInfo[] = [];\n try {\n const response = await new SkillsClient(\n getAgentServerClientOptions(),\n ).getSkills({\n load_public: false,\n load_user: true,\n load_project: true,\n load_org: false,\n project_dir: projectDir ?? getAgentServerWorkingDir(),\n });\n localSkills = (response.skills ?? []) as SkillInfo[];\n } catch {\n // Agent-server may not support the skills endpoint or may be\n // unreachable; fall back to the bundled public catalog alone.\n }\n\n return [...localSkills, ...PUBLIC_SKILLS];\n }\n}\n\nexport default SkillsService;\n"],"mappings":"idAWA,SAAS,EAAwB,EAAqC,CACpE,MAAO,CACL,KAAM,EAAM,KACZ,KAAM,YACN,OAAQ,SACR,YAAa,EAAM,YACnB,SAAU,EAAM,SAChB,SAAU,EAAM,SAChB,QAAS,EAAM,QACf,QAAS,EAAM,SAAW,KAC1B,cAAe,EAAM,eAAiB,IACxC,CACF,CAUA,IAAM,EAA6B,EAAA,QAAe,IAAI,CAAuB,EAEvE,EAAN,KAAoB,CAClB,aAAa,UAAU,EAA2C,CAChE,GAAI,EAAA,iBAAiB,EAAE,QAAQ,OAAS,QACtC,OAAO,EAAA,iBAAiB,EAO1B,IAAI,EAA2B,CAAC,EAChC,GAAI,CAUF,GAAe,MATQ,IAAI,EAAA,aACzB,EAAA,4BAA4B,CAC9B,EAAE,UAAU,CACV,YAAa,GACb,UAAW,GACX,aAAc,GACd,SAAU,GACV,YAAa,GAAc,EAAA,yBAAyB,CACtD,CAAC,GACuB,QAAU,CAAC,CACrC,MAAQ,CAGR,CAEA,MAAO,CAAC,GAAG,EAAa,GAAG,CAAa,CAC1C,CACF"}
1
+ {"version":3,"file":"skills-service.cjs","names":[],"sources":["../../src/api/skills-service.ts"],"sourcesContent":["import { SkillsClient } from \"@openhands/typescript-client/clients\";\nimport {\n SKILLS_CATALOG,\n type SkillCatalogEntry,\n} from \"@openhands/extensions/skills\";\nimport { SkillInfo } from \"#/types/settings\";\nimport { getAgentServerWorkingDir } from \"./agent-server-config\";\nimport { getActiveBackend } from \"./backend-registry/active-store\";\nimport {\n fetchCloudConversationSkills,\n fetchCloudSkills,\n} from \"./cloud/skills-service.api\";\nimport { getAgentServerClientOptions } from \"./agent-server-client-options\";\n\nfunction catalogEntryToSkillInfo(entry: SkillCatalogEntry): SkillInfo {\n return {\n name: entry.name,\n type: \"knowledge\",\n source: \"public\",\n description: entry.description,\n triggers: entry.triggers,\n category: entry.category,\n content: entry.content,\n license: entry.license ?? null,\n compatibility: entry.compatibility ?? null,\n };\n}\n\n/**\n * Public skills loaded from the `@openhands/extensions` npm package.\n *\n * This is an **immutable build-time snapshot**: the catalog is baked into the\n * bundle at `npm run build` / `vite build` time and does not change at\n * runtime. Updating the catalog requires bumping the `@openhands/extensions`\n * dependency and rebuilding.\n */\nconst PUBLIC_SKILLS: SkillInfo[] = SKILLS_CATALOG.map(catalogEntryToSkillInfo);\n\nclass SkillsService {\n static async getSkills(projectDir?: string): Promise<SkillInfo[]> {\n if (getActiveBackend().backend.kind === \"cloud\") {\n return fetchCloudSkills();\n }\n\n // Public skills come from the bundled @openhands/extensions npm package —\n // no agent-server round-trip or GitHub fetch needed. Only ask the agent-\n // server for user and project skills so local .agents/skills/ content is\n // still picked up.\n let localSkills: SkillInfo[] = [];\n try {\n const response = await new SkillsClient(\n getAgentServerClientOptions(),\n ).getSkills({\n load_public: false,\n load_user: true,\n load_project: true,\n load_org: false,\n project_dir: projectDir ?? getAgentServerWorkingDir(),\n });\n localSkills = (response.skills ?? []) as SkillInfo[];\n } catch {\n // Agent-server may not support the skills endpoint or may be\n // unreachable; fall back to the bundled public catalog alone.\n }\n\n return [...localSkills, ...PUBLIC_SKILLS];\n }\n\n /**\n * Skills loaded into a running cloud conversation (see\n * `fetchCloudConversationSkills`). Cloud-only: local conversations keep\n * using `getSkills(projectDir)`, whose agent-server call already scopes to\n * the conversation's workspace.\n */\n static getConversationSkills(conversationId: string): Promise<SkillInfo[]> {\n return fetchCloudConversationSkills(conversationId);\n }\n}\n\nexport default SkillsService;\n"],"mappings":"idAcA,SAAS,EAAwB,EAAqC,CACpE,MAAO,CACL,KAAM,EAAM,KACZ,KAAM,YACN,OAAQ,SACR,YAAa,EAAM,YACnB,SAAU,EAAM,SAChB,SAAU,EAAM,SAChB,QAAS,EAAM,QACf,QAAS,EAAM,SAAW,KAC1B,cAAe,EAAM,eAAiB,IACxC,CACF,CAUA,IAAM,EAA6B,EAAA,QAAe,IAAI,CAAuB,EAEvE,EAAN,KAAoB,CAClB,aAAa,UAAU,EAA2C,CAChE,GAAI,EAAA,iBAAiB,EAAE,QAAQ,OAAS,QACtC,OAAO,EAAA,iBAAiB,EAO1B,IAAI,EAA2B,CAAC,EAChC,GAAI,CAUF,GAAe,MATQ,IAAI,EAAA,aACzB,EAAA,4BAA4B,CAC9B,EAAE,UAAU,CACV,YAAa,GACb,UAAW,GACX,aAAc,GACd,SAAU,GACV,YAAa,GAAc,EAAA,yBAAyB,CACtD,CAAC,GACuB,QAAU,CAAC,CACrC,MAAQ,CAGR,CAEA,MAAO,CAAC,GAAG,EAAa,GAAG,CAAa,CAC1C,CAQA,OAAO,sBAAsB,EAA8C,CACzE,OAAO,EAAA,6BAA6B,CAAc,CACpD,CACF"}
@@ -1,5 +1,12 @@
1
1
  import { SkillInfo } from "#/types/settings";
2
2
  declare class SkillsService {
3
3
  static getSkills(projectDir?: string): Promise<SkillInfo[]>;
4
+ /**
5
+ * Skills loaded into a running cloud conversation (see
6
+ * `fetchCloudConversationSkills`). Cloud-only: local conversations keep
7
+ * using `getSkills(projectDir)`, whose agent-server call already scopes to
8
+ * the conversation's workspace.
9
+ */
10
+ static getConversationSkills(conversationId: string): Promise<SkillInfo[]>;
4
11
  }
5
12
  export default SkillsService;
@@ -4,9 +4,9 @@ import { getAgentServerWorkingDir as t } from "./agent-server-config.js";
4
4
  import { getActiveBackend as n } from "./backend-registry/active-store.js";
5
5
  import { getAgentServerClientOptions as r } from "./agent-server-client-options.js";
6
6
  import i from "../node_modules/@openhands/extensions/skills/index.js";
7
- import { fetchCloudSkills as a } from "./cloud/skills-service.api.js";
7
+ import { fetchCloudConversationSkills as a, fetchCloudSkills as o } from "./cloud/skills-service.api.js";
8
8
  //#region src/api/skills-service.ts
9
- function o(e) {
9
+ function s(e) {
10
10
  return {
11
11
  name: e.name,
12
12
  type: "knowledge",
@@ -19,12 +19,12 @@ function o(e) {
19
19
  compatibility: e.compatibility ?? null
20
20
  };
21
21
  }
22
- var s = i.map(o), c = class {
22
+ var c = i.map(s), l = class {
23
23
  static async getSkills(i) {
24
- if (n().backend.kind === "cloud") return a();
25
- let o = [];
24
+ if (n().backend.kind === "cloud") return o();
25
+ let a = [];
26
26
  try {
27
- o = (await new e(r()).getSkills({
27
+ a = (await new e(r()).getSkills({
28
28
  load_public: !1,
29
29
  load_user: !0,
30
30
  load_project: !0,
@@ -32,10 +32,13 @@ var s = i.map(o), c = class {
32
32
  project_dir: i ?? t()
33
33
  })).skills ?? [];
34
34
  } catch {}
35
- return [...o, ...s];
35
+ return [...a, ...c];
36
+ }
37
+ static getConversationSkills(e) {
38
+ return a(e);
36
39
  }
37
40
  };
38
41
  //#endregion
39
- export { c as default };
42
+ export { l as default };
40
43
 
41
44
  //# sourceMappingURL=skills-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills-service.js","names":[],"sources":["../../src/api/skills-service.ts"],"sourcesContent":["import { SkillsClient } from \"@openhands/typescript-client/clients\";\nimport {\n SKILLS_CATALOG,\n type SkillCatalogEntry,\n} from \"@openhands/extensions/skills\";\nimport { SkillInfo } from \"#/types/settings\";\nimport { getAgentServerWorkingDir } from \"./agent-server-config\";\nimport { getActiveBackend } from \"./backend-registry/active-store\";\nimport { fetchCloudSkills } from \"./cloud/skills-service.api\";\nimport { getAgentServerClientOptions } from \"./agent-server-client-options\";\n\nfunction catalogEntryToSkillInfo(entry: SkillCatalogEntry): SkillInfo {\n return {\n name: entry.name,\n type: \"knowledge\",\n source: \"public\",\n description: entry.description,\n triggers: entry.triggers,\n category: entry.category,\n content: entry.content,\n license: entry.license ?? null,\n compatibility: entry.compatibility ?? null,\n };\n}\n\n/**\n * Public skills loaded from the `@openhands/extensions` npm package.\n *\n * This is an **immutable build-time snapshot**: the catalog is baked into the\n * bundle at `npm run build` / `vite build` time and does not change at\n * runtime. Updating the catalog requires bumping the `@openhands/extensions`\n * dependency and rebuilding.\n */\nconst PUBLIC_SKILLS: SkillInfo[] = SKILLS_CATALOG.map(catalogEntryToSkillInfo);\n\nclass SkillsService {\n static async getSkills(projectDir?: string): Promise<SkillInfo[]> {\n if (getActiveBackend().backend.kind === \"cloud\") {\n return fetchCloudSkills();\n }\n\n // Public skills come from the bundled @openhands/extensions npm package —\n // no agent-server round-trip or GitHub fetch needed. Only ask the agent-\n // server for user and project skills so local .agents/skills/ content is\n // still picked up.\n let localSkills: SkillInfo[] = [];\n try {\n const response = await new SkillsClient(\n getAgentServerClientOptions(),\n ).getSkills({\n load_public: false,\n load_user: true,\n load_project: true,\n load_org: false,\n project_dir: projectDir ?? getAgentServerWorkingDir(),\n });\n localSkills = (response.skills ?? []) as SkillInfo[];\n } catch {\n // Agent-server may not support the skills endpoint or may be\n // unreachable; fall back to the bundled public catalog alone.\n }\n\n return [...localSkills, ...PUBLIC_SKILLS];\n }\n}\n\nexport default SkillsService;\n"],"mappings":";;;;;;;;AAWA,SAAS,EAAwB,GAAqC;CACpE,OAAO;EACL,MAAM,EAAM;EACZ,MAAM;EACN,QAAQ;EACR,aAAa,EAAM;EACnB,UAAU,EAAM;EAChB,UAAU,EAAM;EAChB,SAAS,EAAM;EACf,SAAS,EAAM,WAAW;EAC1B,eAAe,EAAM,iBAAiB;CACxC;AACF;AAUA,IAAM,IAA6B,EAAe,IAAI,CAAuB,GAEvE,IAAN,MAAoB;CAClB,aAAa,UAAU,GAA2C;EAChE,IAAI,EAAiB,EAAE,QAAQ,SAAS,SACtC,OAAO,EAAiB;EAO1B,IAAI,IAA2B,CAAC;EAChC,IAAI;GAUF,KAAe,MATQ,IAAI,EACzB,EAA4B,CAC9B,EAAE,UAAU;IACV,aAAa;IACb,WAAW;IACX,cAAc;IACd,UAAU;IACV,aAAa,KAAc,EAAyB;GACtD,CAAC,GACuB,UAAU,CAAC;EACrC,QAAQ,CAGR;EAEA,OAAO,CAAC,GAAG,GAAa,GAAG,CAAa;CAC1C;AACF"}
1
+ {"version":3,"file":"skills-service.js","names":[],"sources":["../../src/api/skills-service.ts"],"sourcesContent":["import { SkillsClient } from \"@openhands/typescript-client/clients\";\nimport {\n SKILLS_CATALOG,\n type SkillCatalogEntry,\n} from \"@openhands/extensions/skills\";\nimport { SkillInfo } from \"#/types/settings\";\nimport { getAgentServerWorkingDir } from \"./agent-server-config\";\nimport { getActiveBackend } from \"./backend-registry/active-store\";\nimport {\n fetchCloudConversationSkills,\n fetchCloudSkills,\n} from \"./cloud/skills-service.api\";\nimport { getAgentServerClientOptions } from \"./agent-server-client-options\";\n\nfunction catalogEntryToSkillInfo(entry: SkillCatalogEntry): SkillInfo {\n return {\n name: entry.name,\n type: \"knowledge\",\n source: \"public\",\n description: entry.description,\n triggers: entry.triggers,\n category: entry.category,\n content: entry.content,\n license: entry.license ?? null,\n compatibility: entry.compatibility ?? null,\n };\n}\n\n/**\n * Public skills loaded from the `@openhands/extensions` npm package.\n *\n * This is an **immutable build-time snapshot**: the catalog is baked into the\n * bundle at `npm run build` / `vite build` time and does not change at\n * runtime. Updating the catalog requires bumping the `@openhands/extensions`\n * dependency and rebuilding.\n */\nconst PUBLIC_SKILLS: SkillInfo[] = SKILLS_CATALOG.map(catalogEntryToSkillInfo);\n\nclass SkillsService {\n static async getSkills(projectDir?: string): Promise<SkillInfo[]> {\n if (getActiveBackend().backend.kind === \"cloud\") {\n return fetchCloudSkills();\n }\n\n // Public skills come from the bundled @openhands/extensions npm package —\n // no agent-server round-trip or GitHub fetch needed. Only ask the agent-\n // server for user and project skills so local .agents/skills/ content is\n // still picked up.\n let localSkills: SkillInfo[] = [];\n try {\n const response = await new SkillsClient(\n getAgentServerClientOptions(),\n ).getSkills({\n load_public: false,\n load_user: true,\n load_project: true,\n load_org: false,\n project_dir: projectDir ?? getAgentServerWorkingDir(),\n });\n localSkills = (response.skills ?? []) as SkillInfo[];\n } catch {\n // Agent-server may not support the skills endpoint or may be\n // unreachable; fall back to the bundled public catalog alone.\n }\n\n return [...localSkills, ...PUBLIC_SKILLS];\n }\n\n /**\n * Skills loaded into a running cloud conversation (see\n * `fetchCloudConversationSkills`). Cloud-only: local conversations keep\n * using `getSkills(projectDir)`, whose agent-server call already scopes to\n * the conversation's workspace.\n */\n static getConversationSkills(conversationId: string): Promise<SkillInfo[]> {\n return fetchCloudConversationSkills(conversationId);\n }\n}\n\nexport default SkillsService;\n"],"mappings":";;;;;;;;AAcA,SAAS,EAAwB,GAAqC;CACpE,OAAO;EACL,MAAM,EAAM;EACZ,MAAM;EACN,QAAQ;EACR,aAAa,EAAM;EACnB,UAAU,EAAM;EAChB,UAAU,EAAM;EAChB,SAAS,EAAM;EACf,SAAS,EAAM,WAAW;EAC1B,eAAe,EAAM,iBAAiB;CACxC;AACF;AAUA,IAAM,IAA6B,EAAe,IAAI,CAAuB,GAEvE,IAAN,MAAoB;CAClB,aAAa,UAAU,GAA2C;EAChE,IAAI,EAAiB,EAAE,QAAQ,SAAS,SACtC,OAAO,EAAiB;EAO1B,IAAI,IAA2B,CAAC;EAChC,IAAI;GAUF,KAAe,MATQ,IAAI,EACzB,EAA4B,CAC9B,EAAE,UAAU;IACV,aAAa;IACb,WAAW;IACX,cAAc;IACd,UAAU;IACV,aAAa,KAAc,EAAyB;GACtD,CAAC,GACuB,UAAU,CAAC;EACrC,QAAQ,CAGR;EAEA,OAAO,CAAC,GAAG,GAAa,GAAG,CAAa;CAC1C;CAQA,OAAO,sBAAsB,GAA8C;EACzE,OAAO,EAA6B,CAAc;CACpD;AACF"}
@@ -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("../../../../icons/angle-down-solid.cjs"),i=require("../../../../icons/angle-up-solid.cjs"),a=require("../../../../hooks/query/use-settings.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("react/jsx-runtime");function c(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function l(e){let t=Math.round(e*5);return{filled:t,empty:5-t}}function u(e){return e>=.6?`text-green-400`:e>=.4?`text-yellow-400`:`text-red-400`}function d(e){return e>=.7?`text-red-400 font-semibold`:e>=.5?`text-yellow-400`:`text-neutral-400`}function f(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function p(e){let t=e?.verification;if(!f(t))return null;let n=t.enable_iterative_refinement;return typeof n==`boolean`?n:null}function m({feature:e}){let t=Math.round(e.probability*100),n=d(e.probability);return(0,s.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,s.jsx)(`span`,{className:`text-neutral-200`,children:e.display_name}),(0,s.jsxs)(`span`,{className:n,children:[`(`,t,`%)`]})]})}function h({label:e,features:t}){return!t||t.length===0?null:(0,s.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-1 text-xs`,children:[(0,s.jsx)(`span`,{className:`font-semibold text-neutral-300`,children:e}),t.map((e,t)=>(0,s.jsxs)(o.default.Fragment,{children:[t>0&&(0,s.jsx)(`span`,{className:`text-neutral-500`,children:`·`}),(0,s.jsx)(m,{feature:e})]},e.name))]})}function g({categorized:e}){let{t:r}=t.useTranslation(),i=e.agent_behavioral_issues&&e.agent_behavioral_issues.length>0,a=e.user_followup_patterns&&e.user_followup_patterns.length>0,o=e.infrastructure_issues&&e.infrastructure_issues.length>0,c=e.other&&e.other.length>0;return!i&&!a&&!o&&!c?null:(0,s.jsxs)(`div`,{className:`flex flex-col gap-1 mt-1.5`,children:[i&&(0,s.jsx)(h,{label:r(n.I18nKey.CRITIC$POTENTIAL_ISSUES),features:e.agent_behavioral_issues}),o&&(0,s.jsx)(h,{label:r(n.I18nKey.CRITIC$INFRASTRUCTURE),features:e.infrastructure_issues}),a&&(0,s.jsx)(h,{label:r(n.I18nKey.CRITIC$LIKELY_FOLLOWUP),features:e.user_followup_patterns}),c&&(0,s.jsx)(h,{label:r(n.I18nKey.CRITIC$OTHER),features:e.other})]})}function _({criticResult:e}){let{t:d}=t.useTranslation(),{data:f}=a.useSettings(),[m,h]=o.default.useState(!1),_=c(e.score),{filled:v,empty:y}=l(_),b=u(_),x=(_*100).toFixed(1),S=p(f?.agent_settings)===!1,C=e.metadata?.categorized_features,w=C!=null&&((C.agent_behavioral_issues??[]).length>0||(C.user_followup_patterns??[]).length>0||(C.infrastructure_issues??[]).length>0||(C.other??[]).length>0);return(0,s.jsxs)(`div`,{className:`border-l-2 border-neutral-600 pl-2 my-2 py-1.5 text-sm`,children:[(0,s.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,s.jsx)(`span`,{className:`font-semibold text-neutral-300 text-xs`,children:d(n.I18nKey.CRITIC$SUCCESS_LIKELIHOOD_LABEL)}),(0,s.jsxs)(`span`,{className:`${b} text-xs tracking-wide`,"aria-label":`Score: ${x}%`,children:[`★`.repeat(v),`☆`.repeat(y)]}),(0,s.jsxs)(`span`,{className:`text-neutral-500 text-xs`,children:[`(`,x,`%)`]}),w&&(0,s.jsx)(`button`,{type:`button`,onClick:()=>h(e=>!e),className:`cursor-pointer ml-1`,"aria-label":d(m?n.I18nKey.BUTTON$COLLAPSE_DETAILS:n.I18nKey.BUTTON$EXPAND_DETAILS),children:m?(0,s.jsx)(i.default,{className:`h-3 w-3 inline fill-neutral-400`}):(0,s.jsx)(r.default,{className:`h-3 w-3 inline fill-neutral-400`})})]}),m&&w&&(0,s.jsx)(g,{categorized:C}),S&&(0,s.jsx)(`p`,{className:`mt-1.5 text-xs leading-5 text-neutral-500`,"data-testid":`critic-iterative-refinement-hint`,children:d(n.I18nKey.CRITIC$ITERATIVE_REFINEMENT_HINT)})]})}exports.CriticResultDisplay=_;
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("../../../../hooks/query/use-settings.cjs"),i=require("../../../../icons/angle-down-solid.cjs"),a=require("../../../../icons/angle-up-solid.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("react/jsx-runtime");function c(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function l(e){let t=Math.round(e*5);return{filled:t,empty:5-t}}function u(e){return e>=.6?`text-green-400`:e>=.4?`text-yellow-400`:`text-red-400`}function d(e){return e>=.7?`text-red-400 font-semibold`:e>=.5?`text-yellow-400`:`text-neutral-400`}function f(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function p(e){let t=e?.verification;if(!f(t))return null;let n=t.enable_iterative_refinement;return typeof n==`boolean`?n:null}function m({feature:e}){let t=Math.round(e.probability*100),n=d(e.probability);return(0,s.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,s.jsx)(`span`,{className:`text-neutral-200`,children:e.display_name}),(0,s.jsxs)(`span`,{className:n,children:[`(`,t,`%)`]})]})}function h({label:e,features:t}){return!t||t.length===0?null:(0,s.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-1 text-xs`,children:[(0,s.jsx)(`span`,{className:`font-semibold text-neutral-300`,children:e}),t.map((e,t)=>(0,s.jsxs)(o.default.Fragment,{children:[t>0&&(0,s.jsx)(`span`,{className:`text-neutral-500`,children:`·`}),(0,s.jsx)(m,{feature:e})]},e.name))]})}function g({categorized:e}){let{t:r}=t.useTranslation(),i=e.agent_behavioral_issues&&e.agent_behavioral_issues.length>0,a=e.user_followup_patterns&&e.user_followup_patterns.length>0,o=e.infrastructure_issues&&e.infrastructure_issues.length>0,c=e.other&&e.other.length>0;return!i&&!a&&!o&&!c?null:(0,s.jsxs)(`div`,{className:`flex flex-col gap-1 mt-1.5`,children:[i&&(0,s.jsx)(h,{label:r(n.I18nKey.CRITIC$POTENTIAL_ISSUES),features:e.agent_behavioral_issues}),o&&(0,s.jsx)(h,{label:r(n.I18nKey.CRITIC$INFRASTRUCTURE),features:e.infrastructure_issues}),a&&(0,s.jsx)(h,{label:r(n.I18nKey.CRITIC$LIKELY_FOLLOWUP),features:e.user_followup_patterns}),c&&(0,s.jsx)(h,{label:r(n.I18nKey.CRITIC$OTHER),features:e.other})]})}function _({criticResult:e}){let{t:d}=t.useTranslation(),{data:f}=r.useSettings(),[m,h]=o.default.useState(!1),_=c(e.score),{filled:v,empty:y}=l(_),b=u(_),x=(_*100).toFixed(1),S=p(f?.agent_settings)===!1,C=e.metadata?.categorized_features,w=C!=null&&((C.agent_behavioral_issues??[]).length>0||(C.user_followup_patterns??[]).length>0||(C.infrastructure_issues??[]).length>0||(C.other??[]).length>0);return(0,s.jsxs)(`div`,{className:`border-l-2 border-neutral-600 pl-2 my-2 py-1.5 text-sm`,children:[(0,s.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,s.jsx)(`span`,{className:`font-semibold text-neutral-300 text-xs`,children:d(n.I18nKey.CRITIC$SUCCESS_LIKELIHOOD_LABEL)}),(0,s.jsxs)(`span`,{className:`${b} text-xs tracking-wide`,"aria-label":`Score: ${x}%`,children:[`★`.repeat(v),`☆`.repeat(y)]}),(0,s.jsxs)(`span`,{className:`text-neutral-500 text-xs`,children:[`(`,x,`%)`]}),w&&(0,s.jsx)(`button`,{type:`button`,onClick:()=>h(e=>!e),className:`cursor-pointer ml-1`,"aria-label":d(m?n.I18nKey.BUTTON$COLLAPSE_DETAILS:n.I18nKey.BUTTON$EXPAND_DETAILS),children:m?(0,s.jsx)(a.default,{className:`h-3 w-3 inline fill-neutral-400`}):(0,s.jsx)(i.default,{className:`h-3 w-3 inline fill-neutral-400`})})]}),m&&w&&(0,s.jsx)(g,{categorized:C}),S&&(0,s.jsx)(`p`,{className:`mt-1.5 text-xs leading-5 text-neutral-500`,"data-testid":`critic-iterative-refinement-hint`,children:d(n.I18nKey.CRITIC$ITERATIVE_REFINEMENT_HINT)})]})}exports.CriticResultDisplay=_;
2
2
  //# sourceMappingURL=critic-result-display.cjs.map
@@ -1,8 +1,8 @@
1
1
  import { useTranslation as e } from "../../../../node_modules/react-i18next/dist/es/useTranslation.js";
2
2
  import { I18nKey as t } from "../../../../i18n/declaration.js";
3
- import n from "../../../../icons/angle-down-solid.js";
4
- import r from "../../../../icons/angle-up-solid.js";
5
- import { useSettings as i } from "../../../../hooks/query/use-settings.js";
3
+ import { useSettings as n } from "../../../../hooks/query/use-settings.js";
4
+ import r from "../../../../icons/angle-down-solid.js";
5
+ import i from "../../../../icons/angle-up-solid.js";
6
6
  import a from "react";
7
7
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
8
8
  //#region src/components/conversation-events/chat/event-message-components/critic-result-display.tsx
@@ -85,7 +85,7 @@ function g({ categorized: n }) {
85
85
  });
86
86
  }
87
87
  function _({ criticResult: d }) {
88
- let { t: f } = e(), { data: m } = i(), [h, _] = a.useState(!1), v = c(d.score), { filled: y, empty: b } = l(v), x = u(v), S = (v * 100).toFixed(1), C = p(m?.agent_settings) === !1, w = d.metadata?.categorized_features, T = w != null && ((w.agent_behavioral_issues ?? []).length > 0 || (w.user_followup_patterns ?? []).length > 0 || (w.infrastructure_issues ?? []).length > 0 || (w.other ?? []).length > 0);
88
+ let { t: f } = e(), { data: m } = n(), [h, _] = a.useState(!1), v = c(d.score), { filled: y, empty: b } = l(v), x = u(v), S = (v * 100).toFixed(1), C = p(m?.agent_settings) === !1, w = d.metadata?.categorized_features, T = w != null && ((w.agent_behavioral_issues ?? []).length > 0 || (w.user_followup_patterns ?? []).length > 0 || (w.infrastructure_issues ?? []).length > 0 || (w.other ?? []).length > 0);
89
89
  return /* @__PURE__ */ s("div", {
90
90
  className: "border-l-2 border-neutral-600 pl-2 my-2 py-1.5 text-sm",
91
91
  children: [
@@ -114,7 +114,7 @@ function _({ criticResult: d }) {
114
114
  onClick: () => _((e) => !e),
115
115
  className: "cursor-pointer ml-1",
116
116
  "aria-label": f(h ? t.BUTTON$COLLAPSE_DETAILS : t.BUTTON$EXPAND_DETAILS),
117
- children: o(h ? r : n, { className: "h-3 w-3 inline fill-neutral-400" })
117
+ children: o(h ? i : r, { className: "h-3 w-3 inline fill-neutral-400" })
118
118
  })
119
119
  ]
120
120
  }),
@@ -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("../../../../node_modules/lucide-react/dist/esm/icons/loader-circle.cjs"),i=require("../../../../types/agent-server/type-guards.cjs"),a=require("../../../../icons/angle-down-solid.cjs"),o=require("../../../../icons/angle-up-solid.cjs"),s=require("../event-content-helpers/get-event-content.cjs"),c=require("../../../features/chat/is-in-event-group-context.cjs");let l=require("react");l=e.__toESM(l,1);let u=require("react/jsx-runtime");function d({events:e,allEvents:d,isFinalized:f=!1,children:p}){let{t:m}=t.useTranslation(`openhands`),[h,g]=l.default.useState(!1),_=l.default.useId(),v=`${_}-toggle`;if(e.length===0)return null;let y=e.find(e=>i.isActionEvent(e)),b=e.filter(i.isObservationEvent).length,x=e.length,S=!!y,C=e[e.length-1],w=null;C&&(i.isActionEvent(C)?w=s.getEventContent(C).title:i.isObservationEvent(C)&&(w=s.getEventContent(C,(d??e).find(e=>i.isActionEvent(e)&&e.id===C.action_id)).title));let T=S?m(n.I18nKey.EVENT_GROUP$ACTIONS_PROGRESS,{completed:b,total:x}):m(n.I18nKey.EVENT_GROUP$ACTIONS_COMPLETED,{count:x}),E=h?o.default:a.default;return(0,u.jsxs)(`div`,{className:`my-1 w-full py-1 text-sm`,"data-testid":`event-group`,children:[(0,u.jsx)(`button`,{id:v,type:`button`,onClick:()=>g(e=>!e),"aria-controls":_,"aria-expanded":h,"aria-label":m(h?n.I18nKey.EVENT_GROUP$COLLAPSE:n.I18nKey.EVENT_GROUP$EXPAND),"data-testid":`event-group-toggle`,className:`w-full flex items-center justify-between gap-2 text-left cursor-pointer`,children:f?(0,u.jsxs)(`span`,{className:`flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]`,children:[(0,u.jsx)(E,{className:`h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0`}),(0,u.jsx)(`span`,{className:`truncate`,children:T})]}):(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)(`span`,{className:`flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]`,children:[(0,u.jsx)(E,{className:`h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0`}),(0,u.jsx)(`span`,{className:`truncate`,children:w??T})]}),(0,u.jsxs)(`span`,{className:`flex items-center flex-shrink-0 font-normal text-[var(--oh-muted)]`,children:[(0,u.jsx)(`span`,{className:`truncate`,children:T}),S?(0,u.jsx)(r.LoaderCircle,{"data-testid":`spinner-icon`,className:`h-4 w-4 ml-2 inline animate-spin text-[var(--oh-muted)]`}):null]})]})}),h&&(0,u.jsx)(`div`,{id:_,role:`region`,"aria-labelledby":v,className:`mt-1.5 flex flex-col`,"data-testid":`event-group-content`,children:(0,u.jsx)(c.IsInEventGroupContext.Provider,{value:!0,children:p})})]})}exports.EventGroup=d;
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("../../../../node_modules/lucide-react/dist/esm/icons/loader-circle.cjs"),i=require("../../../../types/agent-server/type-guards.cjs"),a=require("../../../../icons/angle-down-solid.cjs"),o=require("../../../../icons/angle-up-solid.cjs"),s=require("../../../features/chat/path-component.cjs"),c=require("../event-content-helpers/get-event-content.cjs"),l=require("../../../features/chat/is-in-event-group-context.cjs");let u=require("react");u=e.__toESM(u,1);let d=require("react/jsx-runtime");function f({events:e,allEvents:f,isFinalized:p=!1,children:m}){let{t:h}=t.useTranslation(`openhands`),[g,_]=u.default.useState(!1),v=u.default.useId(),y=`${v}-toggle`;if(e.length===0)return null;let b=e.find(e=>i.isActionEvent(e)),x=e.filter(i.isObservationEvent).length,S=e.length,C=!!b,w=e[e.length-1],T=null;w&&(i.isActionEvent(w)?T=c.getEventContent(w).title:i.isObservationEvent(w)&&(T=c.getEventContent(w,(f??e).find(e=>i.isActionEvent(e)&&e.id===w.action_id)).title));let E=C?h(n.I18nKey.EVENT_GROUP$ACTIONS_PROGRESS,{completed:x,total:S}):h(n.I18nKey.EVENT_GROUP$ACTIONS_COMPLETED,{count:S}),D=g?o.default:a.default;return(0,d.jsxs)(`div`,{className:`my-1 w-full py-1 text-sm`,"data-testid":`event-group`,children:[(0,d.jsx)(`button`,{id:y,type:`button`,onClick:()=>_(e=>!e),"aria-controls":v,"aria-expanded":g,"aria-label":h(g?n.I18nKey.EVENT_GROUP$COLLAPSE:n.I18nKey.EVENT_GROUP$EXPAND),"data-testid":`event-group-toggle`,className:`w-full flex items-center justify-between gap-2 text-left cursor-pointer`,children:p?(0,d.jsxs)(`span`,{className:`flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]`,children:[(0,d.jsx)(D,{className:`h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0`}),(0,d.jsx)(`span`,{className:`truncate`,children:E})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(`span`,{className:`flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]`,children:[(0,d.jsx)(D,{className:`h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0`}),(0,d.jsx)(`span`,{className:`truncate`,children:(0,d.jsx)(s.PathInteractiveContext.Provider,{value:!1,children:T??E})})]}),(0,d.jsxs)(`span`,{className:`flex items-center flex-shrink-0 font-normal text-[var(--oh-muted)]`,children:[(0,d.jsx)(`span`,{className:`truncate`,children:E}),C?(0,d.jsx)(r.LoaderCircle,{"data-testid":`spinner-icon`,className:`h-4 w-4 ml-2 inline animate-spin text-[var(--oh-muted)]`}):null]})]})}),g&&(0,d.jsx)(`div`,{id:v,role:`region`,"aria-labelledby":y,className:`mt-1.5 flex flex-col`,"data-testid":`event-group-content`,children:(0,d.jsx)(l.IsInEventGroupContext.Provider,{value:!0,children:m})})]})}exports.EventGroup=f;
2
2
  //# sourceMappingURL=event-group.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-group.cjs","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/event-group.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { LoaderCircle } from \"lucide-react\";\nimport ArrowDown from \"#/icons/angle-down-solid.svg?react\";\nimport ArrowUp from \"#/icons/angle-up-solid.svg?react\";\nimport { OpenHandsEvent, ActionEvent } from \"#/types/agent-server/core\";\nimport {\n isActionEvent,\n isObservationEvent,\n} from \"#/types/agent-server/type-guards\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { getEventContent } from \"../event-content-helpers/get-event-content\";\nimport { IsInEventGroupContext } from \"../../../features/chat/is-in-event-group-context\";\n\ninterface EventGroupProps {\n /** The events represented by this group. Used to compute the summary. */\n events: OpenHandsEvent[];\n /**\n * Full event history. Used to resolve the action that produced the latest\n * observation in the group so the summary title matches what the individual\n * card would show (e.g. \"Editing path/to/file\"). Falls back to `events` when\n * omitted.\n */\n allEvents?: OpenHandsEvent[];\n /**\n * `true` once an event outside this group has been emitted after it, so the\n * group is no longer the \"live\" tail of the chat. While `false` (the\n * default), the group keeps showing the most recent action's title as its\n * prominent summary, with the count of completed actions shown subtly on\n * the right.\n */\n isFinalized?: boolean;\n /** The fully-rendered event messages to show when the group is expanded. */\n children: React.ReactNode;\n}\n\n/**\n * Collapsible container that wraps a run of consecutive agent action/observation\n * events into a single summary card.\n *\n * Collapsed, while the group is still the live tail of the chat\n * (`isFinalized=false`):\n * - Left (prominent): the title of the most recent action/observation in\n * the group — i.e. either the action currently in flight, or the latest\n * completed step.\n * - Right (subdued): \"{completed}/{total} actions completed\" while at\n * least one action is still pending (with a spinner), otherwise\n * \"{count} actions completed\" followed by a success check.\n *\n * Collapsed, after the group has been \"moved past\" (`isFinalized=true`):\n * - \"{count} actions completed\" is promoted to the prominent foreground\n * style and the count is the only thing shown next to the chevron.\n *\n * Expanded:\n * - Renders the children verbatim, so each individual action/observation can\n * still be expanded the way it was before grouping.\n */\nexport function EventGroup({\n events,\n allEvents,\n isFinalized = false,\n children,\n}: EventGroupProps) {\n const { t } = useTranslation(\"openhands\");\n const [expanded, setExpanded] = React.useState(false);\n const contentId = React.useId();\n const buttonId = `${contentId}-toggle`;\n\n if (events.length === 0) {\n return null;\n }\n\n // Each ObservationEvent in the group is a completed action. An ActionEvent\n // that's still here (i.e. not yet replaced by its observation in the UI\n // events array) is an action currently in flight.\n const pendingAction = events.find((e): e is ActionEvent => isActionEvent(e));\n const completedCount = events.filter(isObservationEvent).length;\n const totalCount = events.length;\n const isRunning = !!pendingAction;\n\n // Title of the most recent groupable event. While running this is the\n // pending action; otherwise it's the latest observation, with its\n // originating action looked up so the title can be the action-style summary\n // (\"Editing path/to/file\") instead of the observation default.\n const latestEvent = events[events.length - 1];\n let latestTitle: React.ReactNode = null;\n if (latestEvent) {\n if (isActionEvent(latestEvent)) {\n latestTitle = getEventContent(latestEvent).title;\n } else if (isObservationEvent(latestEvent)) {\n const lookupSource = allEvents ?? events;\n const correspondingAction = lookupSource.find(\n (e): e is ActionEvent =>\n isActionEvent(e) && e.id === latestEvent.action_id,\n );\n latestTitle = getEventContent(latestEvent, correspondingAction).title;\n }\n }\n\n const countSummary = isRunning\n ? t(I18nKey.EVENT_GROUP$ACTIONS_PROGRESS, {\n completed: completedCount,\n total: totalCount,\n })\n : t(I18nKey.EVENT_GROUP$ACTIONS_COMPLETED, { count: totalCount });\n\n const Chevron = expanded ? ArrowUp : ArrowDown;\n\n return (\n <div className=\"my-1 w-full py-1 text-sm\" data-testid=\"event-group\">\n <button\n id={buttonId}\n type=\"button\"\n onClick={() => setExpanded((prev) => !prev)}\n aria-controls={contentId}\n aria-expanded={expanded}\n aria-label={\n expanded\n ? t(I18nKey.EVENT_GROUP$COLLAPSE)\n : t(I18nKey.EVENT_GROUP$EXPAND)\n }\n data-testid=\"event-group-toggle\"\n className=\"w-full flex items-center justify-between gap-2 text-left cursor-pointer\"\n >\n {isFinalized ? (\n <span className=\"flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]\">\n <Chevron className=\"h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0\" />\n <span className=\"truncate\">{countSummary}</span>\n </span>\n ) : (\n <>\n <span className=\"flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]\">\n <Chevron className=\"h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0\" />\n <span className=\"truncate\">{latestTitle ?? countSummary}</span>\n </span>\n <span className=\"flex items-center flex-shrink-0 font-normal text-[var(--oh-muted)]\">\n <span className=\"truncate\">{countSummary}</span>\n {isRunning ? (\n <LoaderCircle\n data-testid=\"spinner-icon\"\n className=\"h-4 w-4 ml-2 inline animate-spin text-[var(--oh-muted)]\"\n />\n ) : null}\n </span>\n </>\n )}\n </button>\n\n {expanded && (\n <div\n id={contentId}\n role=\"region\"\n aria-labelledby={buttonId}\n className=\"mt-1.5 flex flex-col\"\n data-testid=\"event-group-content\"\n >\n <IsInEventGroupContext.Provider value>\n {children}\n </IsInEventGroupContext.Provider>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"0nBAyDA,SAAgB,EAAW,CACzB,SACA,YACA,cAAc,GACd,YACkB,CAClB,GAAM,CAAE,KAAM,EAAA,eAAe,WAAW,EAClC,CAAC,EAAU,GAAe,EAAA,QAAM,SAAS,EAAK,EAC9C,EAAY,EAAA,QAAM,MAAM,EACxB,EAAW,GAAG,EAAU,SAE9B,GAAI,EAAO,SAAW,EACpB,OAAO,KAMT,IAAM,EAAgB,EAAO,KAAM,GAAwB,EAAA,cAAc,CAAC,CAAC,EACrE,EAAiB,EAAO,OAAO,EAAA,kBAAkB,EAAE,OACnD,EAAa,EAAO,OACpB,EAAY,CAAC,CAAC,EAMd,EAAc,EAAO,EAAO,OAAS,GACvC,EAA+B,KAC/B,IACE,EAAA,cAAc,CAAW,EAC3B,EAAc,EAAA,gBAAgB,CAAW,EAAE,MAClC,EAAA,mBAAmB,CAAW,IAMvC,EAAc,EAAA,gBAAgB,GALT,GAAa,GACO,KACtC,GACC,EAAA,cAAc,CAAC,GAAK,EAAE,KAAO,EAAY,SAEF,CAAmB,EAAE,QAIpE,IAAM,EAAe,EACjB,EAAE,EAAA,QAAQ,6BAA8B,CACtC,UAAW,EACX,MAAO,CACT,CAAC,EACD,EAAE,EAAA,QAAQ,8BAA+B,CAAE,MAAO,CAAW,CAAC,EAE5D,EAAU,EAAW,EAAA,QAAU,EAAA,QAErC,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,2BAA2B,cAAY,uBAAtD,EACE,EAAA,EAAA,KAAC,SAAD,CACE,GAAI,EACJ,KAAK,SACL,YAAe,EAAa,GAAS,CAAC,CAAI,EAC1C,gBAAe,EACf,gBAAe,EACf,aAEM,EADJ,EACM,EAAA,QAAQ,qBACR,EAAA,QAAQ,kBAAkB,EAElC,cAAY,qBACZ,UAAU,mFAET,GACC,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,8EAAhB,EACE,EAAA,EAAA,KAAC,EAAD,CAAS,UAAU,8CAAgD,CAAA,GACnE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oBAAY,CAAmB,CAAA,CAC3C,KAEN,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,8EAAhB,EACE,EAAA,EAAA,KAAC,EAAD,CAAS,UAAU,8CAAgD,CAAA,GACnE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oBAAY,GAAe,CAAmB,CAAA,CAC1D,KACN,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,8EAAhB,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oBAAY,CAAmB,CAAA,EAC9C,GACC,EAAA,EAAA,KAAC,EAAA,aAAD,CACE,cAAY,eACZ,UAAU,yDACX,CAAA,EACC,IACA,GACN,CAAA,CAAA,CAEE,CAAA,EAEP,IACC,EAAA,EAAA,KAAC,MAAD,CACE,GAAI,EACJ,KAAK,SACL,kBAAiB,EACjB,UAAU,uBACV,cAAY,gCAEZ,EAAA,EAAA,KAAC,EAAA,sBAAsB,SAAvB,CAAgC,MAAA,GAC7B,UAC6B,CAAA,CAC7B,CAAA,CAEJ,GAET"}
1
+ {"version":3,"file":"event-group.cjs","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/event-group.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { LoaderCircle } from \"lucide-react\";\nimport ArrowDown from \"#/icons/angle-down-solid.svg?react\";\nimport ArrowUp from \"#/icons/angle-up-solid.svg?react\";\nimport { OpenHandsEvent, ActionEvent } from \"#/types/agent-server/core\";\nimport {\n isActionEvent,\n isObservationEvent,\n} from \"#/types/agent-server/type-guards\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { getEventContent } from \"../event-content-helpers/get-event-content\";\nimport { IsInEventGroupContext } from \"../../../features/chat/is-in-event-group-context\";\nimport { PathInteractiveContext } from \"../../../features/chat/path-component\";\n\ninterface EventGroupProps {\n /** The events represented by this group. Used to compute the summary. */\n events: OpenHandsEvent[];\n /**\n * Full event history. Used to resolve the action that produced the latest\n * observation in the group so the summary title matches what the individual\n * card would show (e.g. \"Editing path/to/file\"). Falls back to `events` when\n * omitted.\n */\n allEvents?: OpenHandsEvent[];\n /**\n * `true` once an event outside this group has been emitted after it, so the\n * group is no longer the \"live\" tail of the chat. While `false` (the\n * default), the group keeps showing the most recent action's title as its\n * prominent summary, with the count of completed actions shown subtly on\n * the right.\n */\n isFinalized?: boolean;\n /** The fully-rendered event messages to show when the group is expanded. */\n children: React.ReactNode;\n}\n\n/**\n * Collapsible container that wraps a run of consecutive agent action/observation\n * events into a single summary card.\n *\n * Collapsed, while the group is still the live tail of the chat\n * (`isFinalized=false`):\n * - Left (prominent): the title of the most recent action/observation in\n * the group — i.e. either the action currently in flight, or the latest\n * completed step.\n * - Right (subdued): \"{completed}/{total} actions completed\" while at\n * least one action is still pending (with a spinner), otherwise\n * \"{count} actions completed\" followed by a success check.\n *\n * Collapsed, after the group has been \"moved past\" (`isFinalized=true`):\n * - \"{count} actions completed\" is promoted to the prominent foreground\n * style and the count is the only thing shown next to the chevron.\n *\n * Expanded:\n * - Renders the children verbatim, so each individual action/observation can\n * still be expanded the way it was before grouping.\n */\nexport function EventGroup({\n events,\n allEvents,\n isFinalized = false,\n children,\n}: EventGroupProps) {\n const { t } = useTranslation(\"openhands\");\n const [expanded, setExpanded] = React.useState(false);\n const contentId = React.useId();\n const buttonId = `${contentId}-toggle`;\n\n if (events.length === 0) {\n return null;\n }\n\n // Each ObservationEvent in the group is a completed action. An ActionEvent\n // that's still here (i.e. not yet replaced by its observation in the UI\n // events array) is an action currently in flight.\n const pendingAction = events.find((e): e is ActionEvent => isActionEvent(e));\n const completedCount = events.filter(isObservationEvent).length;\n const totalCount = events.length;\n const isRunning = !!pendingAction;\n\n // Title of the most recent groupable event. While running this is the\n // pending action; otherwise it's the latest observation, with its\n // originating action looked up so the title can be the action-style summary\n // (\"Editing path/to/file\") instead of the observation default.\n const latestEvent = events[events.length - 1];\n let latestTitle: React.ReactNode = null;\n if (latestEvent) {\n if (isActionEvent(latestEvent)) {\n latestTitle = getEventContent(latestEvent).title;\n } else if (isObservationEvent(latestEvent)) {\n const lookupSource = allEvents ?? events;\n const correspondingAction = lookupSource.find(\n (e): e is ActionEvent =>\n isActionEvent(e) && e.id === latestEvent.action_id,\n );\n latestTitle = getEventContent(latestEvent, correspondingAction).title;\n }\n }\n\n const countSummary = isRunning\n ? t(I18nKey.EVENT_GROUP$ACTIONS_PROGRESS, {\n completed: completedCount,\n total: totalCount,\n })\n : t(I18nKey.EVENT_GROUP$ACTIONS_COMPLETED, { count: totalCount });\n\n const Chevron = expanded ? ArrowUp : ArrowDown;\n\n return (\n <div className=\"my-1 w-full py-1 text-sm\" data-testid=\"event-group\">\n <button\n id={buttonId}\n type=\"button\"\n onClick={() => setExpanded((prev) => !prev)}\n aria-controls={contentId}\n aria-expanded={expanded}\n aria-label={\n expanded\n ? t(I18nKey.EVENT_GROUP$COLLAPSE)\n : t(I18nKey.EVENT_GROUP$EXPAND)\n }\n data-testid=\"event-group-toggle\"\n className=\"w-full flex items-center justify-between gap-2 text-left cursor-pointer\"\n >\n {isFinalized ? (\n <span className=\"flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]\">\n <Chevron className=\"h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0\" />\n <span className=\"truncate\">{countSummary}</span>\n </span>\n ) : (\n <>\n <span className=\"flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]\">\n <Chevron className=\"h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0\" />\n <span className=\"truncate\">\n <PathInteractiveContext.Provider value={false}>\n {latestTitle ?? countSummary}\n </PathInteractiveContext.Provider>\n </span>\n </span>\n <span className=\"flex items-center flex-shrink-0 font-normal text-[var(--oh-muted)]\">\n <span className=\"truncate\">{countSummary}</span>\n {isRunning ? (\n <LoaderCircle\n data-testid=\"spinner-icon\"\n className=\"h-4 w-4 ml-2 inline animate-spin text-[var(--oh-muted)]\"\n />\n ) : null}\n </span>\n </>\n )}\n </button>\n\n {expanded && (\n <div\n id={contentId}\n role=\"region\"\n aria-labelledby={buttonId}\n className=\"mt-1.5 flex flex-col\"\n data-testid=\"event-group-content\"\n >\n <IsInEventGroupContext.Provider value>\n {children}\n </IsInEventGroupContext.Provider>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"irBA0DA,SAAgB,EAAW,CACzB,SACA,YACA,cAAc,GACd,YACkB,CAClB,GAAM,CAAE,KAAM,EAAA,eAAe,WAAW,EAClC,CAAC,EAAU,GAAe,EAAA,QAAM,SAAS,EAAK,EAC9C,EAAY,EAAA,QAAM,MAAM,EACxB,EAAW,GAAG,EAAU,SAE9B,GAAI,EAAO,SAAW,EACpB,OAAO,KAMT,IAAM,EAAgB,EAAO,KAAM,GAAwB,EAAA,cAAc,CAAC,CAAC,EACrE,EAAiB,EAAO,OAAO,EAAA,kBAAkB,EAAE,OACnD,EAAa,EAAO,OACpB,EAAY,CAAC,CAAC,EAMd,EAAc,EAAO,EAAO,OAAS,GACvC,EAA+B,KAC/B,IACE,EAAA,cAAc,CAAW,EAC3B,EAAc,EAAA,gBAAgB,CAAW,EAAE,MAClC,EAAA,mBAAmB,CAAW,IAMvC,EAAc,EAAA,gBAAgB,GALT,GAAa,GACO,KACtC,GACC,EAAA,cAAc,CAAC,GAAK,EAAE,KAAO,EAAY,SAEF,CAAmB,EAAE,QAIpE,IAAM,EAAe,EACjB,EAAE,EAAA,QAAQ,6BAA8B,CACtC,UAAW,EACX,MAAO,CACT,CAAC,EACD,EAAE,EAAA,QAAQ,8BAA+B,CAAE,MAAO,CAAW,CAAC,EAE5D,EAAU,EAAW,EAAA,QAAU,EAAA,QAErC,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,2BAA2B,cAAY,uBAAtD,EACE,EAAA,EAAA,KAAC,SAAD,CACE,GAAI,EACJ,KAAK,SACL,YAAe,EAAa,GAAS,CAAC,CAAI,EAC1C,gBAAe,EACf,gBAAe,EACf,aAEM,EADJ,EACM,EAAA,QAAQ,qBACR,EAAA,QAAQ,kBAAkB,EAElC,cAAY,qBACZ,UAAU,mFAET,GACC,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,8EAAhB,EACE,EAAA,EAAA,KAAC,EAAD,CAAS,UAAU,8CAAgD,CAAA,GACnE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oBAAY,CAAmB,CAAA,CAC3C,KAEN,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,8EAAhB,EACE,EAAA,EAAA,KAAC,EAAD,CAAS,UAAU,8CAAgD,CAAA,GACnE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,qBACd,EAAA,EAAA,KAAC,EAAA,uBAAuB,SAAxB,CAAiC,MAAO,YACrC,GAAe,CACe,CAAA,CAC7B,CAAA,CACF,KACN,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,8EAAhB,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oBAAY,CAAmB,CAAA,EAC9C,GACC,EAAA,EAAA,KAAC,EAAA,aAAD,CACE,cAAY,eACZ,UAAU,yDACX,CAAA,EACC,IACA,GACN,CAAA,CAAA,CAEE,CAAA,EAEP,IACC,EAAA,EAAA,KAAC,MAAD,CACE,GAAI,EACJ,KAAK,SACL,kBAAiB,EACjB,UAAU,uBACV,cAAY,gCAEZ,EAAA,EAAA,KAAC,EAAA,sBAAsB,SAAvB,CAAgC,MAAA,GAC7B,UAC6B,CAAA,CAC7B,CAAA,CAEJ,GAET"}
@@ -4,68 +4,72 @@ import { LoaderCircle as n } from "../../../../node_modules/lucide-react/dist/es
4
4
  import { isActionEvent as r, isObservationEvent as i } from "../../../../types/agent-server/type-guards.js";
5
5
  import a from "../../../../icons/angle-down-solid.js";
6
6
  import o from "../../../../icons/angle-up-solid.js";
7
- import { getEventContent as s } from "../event-content-helpers/get-event-content.js";
8
- import { IsInEventGroupContext as c } from "../../../features/chat/is-in-event-group-context.js";
9
- import l from "react";
10
- import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
7
+ import { PathInteractiveContext as s } from "../../../features/chat/path-component.js";
8
+ import { getEventContent as c } from "../event-content-helpers/get-event-content.js";
9
+ import { IsInEventGroupContext as l } from "../../../features/chat/is-in-event-group-context.js";
10
+ import u from "react";
11
+ import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
11
12
  //#region src/components/conversation-events/chat/event-message-components/event-group.tsx
12
- function p({ events: p, allEvents: m, isFinalized: h = !1, children: g }) {
13
- let { t: _ } = e("openhands"), [v, y] = l.useState(!1), b = l.useId(), x = `${b}-toggle`;
14
- if (p.length === 0) return null;
15
- let S = p.find((e) => r(e)), C = p.filter(i).length, w = p.length, T = !!S, E = p[p.length - 1], D = null;
16
- E && (r(E) ? D = s(E).title : i(E) && (D = s(E, (m ?? p).find((e) => r(e) && e.id === E.action_id)).title));
17
- let O = T ? _(t.EVENT_GROUP$ACTIONS_PROGRESS, {
18
- completed: C,
19
- total: w
20
- }) : _(t.EVENT_GROUP$ACTIONS_COMPLETED, { count: w }), k = v ? o : a;
21
- return /* @__PURE__ */ f("div", {
13
+ function m({ events: m, allEvents: h, isFinalized: g = !1, children: _ }) {
14
+ let { t: v } = e("openhands"), [y, b] = u.useState(!1), x = u.useId(), S = `${x}-toggle`;
15
+ if (m.length === 0) return null;
16
+ let C = m.find((e) => r(e)), w = m.filter(i).length, T = m.length, E = !!C, D = m[m.length - 1], O = null;
17
+ D && (r(D) ? O = c(D).title : i(D) && (O = c(D, (h ?? m).find((e) => r(e) && e.id === D.action_id)).title));
18
+ let k = E ? v(t.EVENT_GROUP$ACTIONS_PROGRESS, {
19
+ completed: w,
20
+ total: T
21
+ }) : v(t.EVENT_GROUP$ACTIONS_COMPLETED, { count: T }), A = y ? o : a;
22
+ return /* @__PURE__ */ p("div", {
22
23
  className: "my-1 w-full py-1 text-sm",
23
24
  "data-testid": "event-group",
24
- children: [/* @__PURE__ */ d("button", {
25
- id: x,
25
+ children: [/* @__PURE__ */ f("button", {
26
+ id: S,
26
27
  type: "button",
27
- onClick: () => y((e) => !e),
28
- "aria-controls": b,
29
- "aria-expanded": v,
30
- "aria-label": _(v ? t.EVENT_GROUP$COLLAPSE : t.EVENT_GROUP$EXPAND),
28
+ onClick: () => b((e) => !e),
29
+ "aria-controls": x,
30
+ "aria-expanded": y,
31
+ "aria-label": v(y ? t.EVENT_GROUP$COLLAPSE : t.EVENT_GROUP$EXPAND),
31
32
  "data-testid": "event-group-toggle",
32
33
  className: "w-full flex items-center justify-between gap-2 text-left cursor-pointer",
33
- children: h ? /* @__PURE__ */ f("span", {
34
+ children: g ? /* @__PURE__ */ p("span", {
34
35
  className: "flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]",
35
- children: [/* @__PURE__ */ d(k, { className: "h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0" }), /* @__PURE__ */ d("span", {
36
+ children: [/* @__PURE__ */ f(A, { className: "h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0" }), /* @__PURE__ */ f("span", {
36
37
  className: "truncate",
37
- children: O
38
+ children: k
38
39
  })]
39
- }) : /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ f("span", {
40
+ }) : /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ p("span", {
40
41
  className: "flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]",
41
- children: [/* @__PURE__ */ d(k, { className: "h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0" }), /* @__PURE__ */ d("span", {
42
+ children: [/* @__PURE__ */ f(A, { className: "h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0" }), /* @__PURE__ */ f("span", {
42
43
  className: "truncate",
43
- children: D ?? O
44
+ children: /* @__PURE__ */ f(s.Provider, {
45
+ value: !1,
46
+ children: O ?? k
47
+ })
44
48
  })]
45
- }), /* @__PURE__ */ f("span", {
49
+ }), /* @__PURE__ */ p("span", {
46
50
  className: "flex items-center flex-shrink-0 font-normal text-[var(--oh-muted)]",
47
- children: [/* @__PURE__ */ d("span", {
51
+ children: [/* @__PURE__ */ f("span", {
48
52
  className: "truncate",
49
- children: O
50
- }), T ? /* @__PURE__ */ d(n, {
53
+ children: k
54
+ }), E ? /* @__PURE__ */ f(n, {
51
55
  "data-testid": "spinner-icon",
52
56
  className: "h-4 w-4 ml-2 inline animate-spin text-[var(--oh-muted)]"
53
57
  }) : null]
54
58
  })] })
55
- }), v && /* @__PURE__ */ d("div", {
56
- id: b,
59
+ }), y && /* @__PURE__ */ f("div", {
60
+ id: x,
57
61
  role: "region",
58
- "aria-labelledby": x,
62
+ "aria-labelledby": S,
59
63
  className: "mt-1.5 flex flex-col",
60
64
  "data-testid": "event-group-content",
61
- children: /* @__PURE__ */ d(c.Provider, {
65
+ children: /* @__PURE__ */ f(l.Provider, {
62
66
  value: !0,
63
- children: g
67
+ children: _
64
68
  })
65
69
  })]
66
70
  });
67
71
  }
68
72
  //#endregion
69
- export { p as EventGroup };
73
+ export { m as EventGroup };
70
74
 
71
75
  //# sourceMappingURL=event-group.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-group.js","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/event-group.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { LoaderCircle } from \"lucide-react\";\nimport ArrowDown from \"#/icons/angle-down-solid.svg?react\";\nimport ArrowUp from \"#/icons/angle-up-solid.svg?react\";\nimport { OpenHandsEvent, ActionEvent } from \"#/types/agent-server/core\";\nimport {\n isActionEvent,\n isObservationEvent,\n} from \"#/types/agent-server/type-guards\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { getEventContent } from \"../event-content-helpers/get-event-content\";\nimport { IsInEventGroupContext } from \"../../../features/chat/is-in-event-group-context\";\n\ninterface EventGroupProps {\n /** The events represented by this group. Used to compute the summary. */\n events: OpenHandsEvent[];\n /**\n * Full event history. Used to resolve the action that produced the latest\n * observation in the group so the summary title matches what the individual\n * card would show (e.g. \"Editing path/to/file\"). Falls back to `events` when\n * omitted.\n */\n allEvents?: OpenHandsEvent[];\n /**\n * `true` once an event outside this group has been emitted after it, so the\n * group is no longer the \"live\" tail of the chat. While `false` (the\n * default), the group keeps showing the most recent action's title as its\n * prominent summary, with the count of completed actions shown subtly on\n * the right.\n */\n isFinalized?: boolean;\n /** The fully-rendered event messages to show when the group is expanded. */\n children: React.ReactNode;\n}\n\n/**\n * Collapsible container that wraps a run of consecutive agent action/observation\n * events into a single summary card.\n *\n * Collapsed, while the group is still the live tail of the chat\n * (`isFinalized=false`):\n * - Left (prominent): the title of the most recent action/observation in\n * the group — i.e. either the action currently in flight, or the latest\n * completed step.\n * - Right (subdued): \"{completed}/{total} actions completed\" while at\n * least one action is still pending (with a spinner), otherwise\n * \"{count} actions completed\" followed by a success check.\n *\n * Collapsed, after the group has been \"moved past\" (`isFinalized=true`):\n * - \"{count} actions completed\" is promoted to the prominent foreground\n * style and the count is the only thing shown next to the chevron.\n *\n * Expanded:\n * - Renders the children verbatim, so each individual action/observation can\n * still be expanded the way it was before grouping.\n */\nexport function EventGroup({\n events,\n allEvents,\n isFinalized = false,\n children,\n}: EventGroupProps) {\n const { t } = useTranslation(\"openhands\");\n const [expanded, setExpanded] = React.useState(false);\n const contentId = React.useId();\n const buttonId = `${contentId}-toggle`;\n\n if (events.length === 0) {\n return null;\n }\n\n // Each ObservationEvent in the group is a completed action. An ActionEvent\n // that's still here (i.e. not yet replaced by its observation in the UI\n // events array) is an action currently in flight.\n const pendingAction = events.find((e): e is ActionEvent => isActionEvent(e));\n const completedCount = events.filter(isObservationEvent).length;\n const totalCount = events.length;\n const isRunning = !!pendingAction;\n\n // Title of the most recent groupable event. While running this is the\n // pending action; otherwise it's the latest observation, with its\n // originating action looked up so the title can be the action-style summary\n // (\"Editing path/to/file\") instead of the observation default.\n const latestEvent = events[events.length - 1];\n let latestTitle: React.ReactNode = null;\n if (latestEvent) {\n if (isActionEvent(latestEvent)) {\n latestTitle = getEventContent(latestEvent).title;\n } else if (isObservationEvent(latestEvent)) {\n const lookupSource = allEvents ?? events;\n const correspondingAction = lookupSource.find(\n (e): e is ActionEvent =>\n isActionEvent(e) && e.id === latestEvent.action_id,\n );\n latestTitle = getEventContent(latestEvent, correspondingAction).title;\n }\n }\n\n const countSummary = isRunning\n ? t(I18nKey.EVENT_GROUP$ACTIONS_PROGRESS, {\n completed: completedCount,\n total: totalCount,\n })\n : t(I18nKey.EVENT_GROUP$ACTIONS_COMPLETED, { count: totalCount });\n\n const Chevron = expanded ? ArrowUp : ArrowDown;\n\n return (\n <div className=\"my-1 w-full py-1 text-sm\" data-testid=\"event-group\">\n <button\n id={buttonId}\n type=\"button\"\n onClick={() => setExpanded((prev) => !prev)}\n aria-controls={contentId}\n aria-expanded={expanded}\n aria-label={\n expanded\n ? t(I18nKey.EVENT_GROUP$COLLAPSE)\n : t(I18nKey.EVENT_GROUP$EXPAND)\n }\n data-testid=\"event-group-toggle\"\n className=\"w-full flex items-center justify-between gap-2 text-left cursor-pointer\"\n >\n {isFinalized ? (\n <span className=\"flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]\">\n <Chevron className=\"h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0\" />\n <span className=\"truncate\">{countSummary}</span>\n </span>\n ) : (\n <>\n <span className=\"flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]\">\n <Chevron className=\"h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0\" />\n <span className=\"truncate\">{latestTitle ?? countSummary}</span>\n </span>\n <span className=\"flex items-center flex-shrink-0 font-normal text-[var(--oh-muted)]\">\n <span className=\"truncate\">{countSummary}</span>\n {isRunning ? (\n <LoaderCircle\n data-testid=\"spinner-icon\"\n className=\"h-4 w-4 ml-2 inline animate-spin text-[var(--oh-muted)]\"\n />\n ) : null}\n </span>\n </>\n )}\n </button>\n\n {expanded && (\n <div\n id={contentId}\n role=\"region\"\n aria-labelledby={buttonId}\n className=\"mt-1.5 flex flex-col\"\n data-testid=\"event-group-content\"\n >\n <IsInEventGroupContext.Provider value>\n {children}\n </IsInEventGroupContext.Provider>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AAyDA,SAAgB,EAAW,EACzB,WACA,cACA,iBAAc,IACd,eACkB;CAClB,IAAM,EAAE,SAAM,EAAe,WAAW,GAClC,CAAC,GAAU,KAAe,EAAM,SAAS,EAAK,GAC9C,IAAY,EAAM,MAAM,GACxB,IAAW,GAAG,EAAU;CAE9B,IAAI,EAAO,WAAW,GACpB,OAAO;CAMT,IAAM,IAAgB,EAAO,MAAM,MAAwB,EAAc,CAAC,CAAC,GACrE,IAAiB,EAAO,OAAO,CAAkB,EAAE,QACnD,IAAa,EAAO,QACpB,IAAY,CAAC,CAAC,GAMd,IAAc,EAAO,EAAO,SAAS,IACvC,IAA+B;CACnC,AAAI,MACE,EAAc,CAAW,IAC3B,IAAc,EAAgB,CAAW,EAAE,QAClC,EAAmB,CAAW,MAMvC,IAAc,EAAgB,IALT,KAAa,GACO,MACtC,MACC,EAAc,CAAC,KAAK,EAAE,OAAO,EAAY,SAEF,CAAmB,EAAE;CAIpE,IAAM,IAAe,IACjB,EAAE,EAAQ,8BAA8B;EACtC,WAAW;EACX,OAAO;CACT,CAAC,IACD,EAAE,EAAQ,+BAA+B,EAAE,OAAO,EAAW,CAAC,GAE5D,IAAU,IAAW,IAAU;CAErC,OACE,kBAAC,OAAD;EAAK,WAAU;EAA2B,eAAY;YAAtD,CACE,kBAAC,UAAD;GACE,IAAI;GACJ,MAAK;GACL,eAAe,GAAa,MAAS,CAAC,CAAI;GAC1C,iBAAe;GACf,iBAAe;GACf,cAEM,EADJ,IACM,EAAQ,uBACR,EAAQ,kBAAkB;GAElC,eAAY;GACZ,WAAU;aAET,IACC,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACE,kBAAC,GAAD,EAAS,WAAU,+CAAgD,CAAA,GACnE,kBAAC,QAAD;KAAM,WAAU;eAAY;IAAmB,CAAA,CAC3C;QAEN,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACE,kBAAC,GAAD,EAAS,WAAU,+CAAgD,CAAA,GACnE,kBAAC,QAAD;KAAM,WAAU;eAAY,KAAe;IAAmB,CAAA,CAC1D;OACN,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACE,kBAAC,QAAD;KAAM,WAAU;eAAY;IAAmB,CAAA,GAC9C,IACC,kBAAC,GAAD;KACE,eAAY;KACZ,WAAU;IACX,CAAA,IACC,IACA;KACN,EAAA,CAAA;EAEE,CAAA,GAEP,KACC,kBAAC,OAAD;GACE,IAAI;GACJ,MAAK;GACL,mBAAiB;GACjB,WAAU;GACV,eAAY;aAEZ,kBAAC,EAAsB,UAAvB;IAAgC,OAAA;IAC7B;GAC6B,CAAA;EAC7B,CAAA,CAEJ;;AAET"}
1
+ {"version":3,"file":"event-group.js","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/event-group.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { LoaderCircle } from \"lucide-react\";\nimport ArrowDown from \"#/icons/angle-down-solid.svg?react\";\nimport ArrowUp from \"#/icons/angle-up-solid.svg?react\";\nimport { OpenHandsEvent, ActionEvent } from \"#/types/agent-server/core\";\nimport {\n isActionEvent,\n isObservationEvent,\n} from \"#/types/agent-server/type-guards\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { getEventContent } from \"../event-content-helpers/get-event-content\";\nimport { IsInEventGroupContext } from \"../../../features/chat/is-in-event-group-context\";\nimport { PathInteractiveContext } from \"../../../features/chat/path-component\";\n\ninterface EventGroupProps {\n /** The events represented by this group. Used to compute the summary. */\n events: OpenHandsEvent[];\n /**\n * Full event history. Used to resolve the action that produced the latest\n * observation in the group so the summary title matches what the individual\n * card would show (e.g. \"Editing path/to/file\"). Falls back to `events` when\n * omitted.\n */\n allEvents?: OpenHandsEvent[];\n /**\n * `true` once an event outside this group has been emitted after it, so the\n * group is no longer the \"live\" tail of the chat. While `false` (the\n * default), the group keeps showing the most recent action's title as its\n * prominent summary, with the count of completed actions shown subtly on\n * the right.\n */\n isFinalized?: boolean;\n /** The fully-rendered event messages to show when the group is expanded. */\n children: React.ReactNode;\n}\n\n/**\n * Collapsible container that wraps a run of consecutive agent action/observation\n * events into a single summary card.\n *\n * Collapsed, while the group is still the live tail of the chat\n * (`isFinalized=false`):\n * - Left (prominent): the title of the most recent action/observation in\n * the group — i.e. either the action currently in flight, or the latest\n * completed step.\n * - Right (subdued): \"{completed}/{total} actions completed\" while at\n * least one action is still pending (with a spinner), otherwise\n * \"{count} actions completed\" followed by a success check.\n *\n * Collapsed, after the group has been \"moved past\" (`isFinalized=true`):\n * - \"{count} actions completed\" is promoted to the prominent foreground\n * style and the count is the only thing shown next to the chevron.\n *\n * Expanded:\n * - Renders the children verbatim, so each individual action/observation can\n * still be expanded the way it was before grouping.\n */\nexport function EventGroup({\n events,\n allEvents,\n isFinalized = false,\n children,\n}: EventGroupProps) {\n const { t } = useTranslation(\"openhands\");\n const [expanded, setExpanded] = React.useState(false);\n const contentId = React.useId();\n const buttonId = `${contentId}-toggle`;\n\n if (events.length === 0) {\n return null;\n }\n\n // Each ObservationEvent in the group is a completed action. An ActionEvent\n // that's still here (i.e. not yet replaced by its observation in the UI\n // events array) is an action currently in flight.\n const pendingAction = events.find((e): e is ActionEvent => isActionEvent(e));\n const completedCount = events.filter(isObservationEvent).length;\n const totalCount = events.length;\n const isRunning = !!pendingAction;\n\n // Title of the most recent groupable event. While running this is the\n // pending action; otherwise it's the latest observation, with its\n // originating action looked up so the title can be the action-style summary\n // (\"Editing path/to/file\") instead of the observation default.\n const latestEvent = events[events.length - 1];\n let latestTitle: React.ReactNode = null;\n if (latestEvent) {\n if (isActionEvent(latestEvent)) {\n latestTitle = getEventContent(latestEvent).title;\n } else if (isObservationEvent(latestEvent)) {\n const lookupSource = allEvents ?? events;\n const correspondingAction = lookupSource.find(\n (e): e is ActionEvent =>\n isActionEvent(e) && e.id === latestEvent.action_id,\n );\n latestTitle = getEventContent(latestEvent, correspondingAction).title;\n }\n }\n\n const countSummary = isRunning\n ? t(I18nKey.EVENT_GROUP$ACTIONS_PROGRESS, {\n completed: completedCount,\n total: totalCount,\n })\n : t(I18nKey.EVENT_GROUP$ACTIONS_COMPLETED, { count: totalCount });\n\n const Chevron = expanded ? ArrowUp : ArrowDown;\n\n return (\n <div className=\"my-1 w-full py-1 text-sm\" data-testid=\"event-group\">\n <button\n id={buttonId}\n type=\"button\"\n onClick={() => setExpanded((prev) => !prev)}\n aria-controls={contentId}\n aria-expanded={expanded}\n aria-label={\n expanded\n ? t(I18nKey.EVENT_GROUP$COLLAPSE)\n : t(I18nKey.EVENT_GROUP$EXPAND)\n }\n data-testid=\"event-group-toggle\"\n className=\"w-full flex items-center justify-between gap-2 text-left cursor-pointer\"\n >\n {isFinalized ? (\n <span className=\"flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]\">\n <Chevron className=\"h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0\" />\n <span className=\"truncate\">{countSummary}</span>\n </span>\n ) : (\n <>\n <span className=\"flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]\">\n <Chevron className=\"h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0\" />\n <span className=\"truncate\">\n <PathInteractiveContext.Provider value={false}>\n {latestTitle ?? countSummary}\n </PathInteractiveContext.Provider>\n </span>\n </span>\n <span className=\"flex items-center flex-shrink-0 font-normal text-[var(--oh-muted)]\">\n <span className=\"truncate\">{countSummary}</span>\n {isRunning ? (\n <LoaderCircle\n data-testid=\"spinner-icon\"\n className=\"h-4 w-4 ml-2 inline animate-spin text-[var(--oh-muted)]\"\n />\n ) : null}\n </span>\n </>\n )}\n </button>\n\n {expanded && (\n <div\n id={contentId}\n role=\"region\"\n aria-labelledby={buttonId}\n className=\"mt-1.5 flex flex-col\"\n data-testid=\"event-group-content\"\n >\n <IsInEventGroupContext.Provider value>\n {children}\n </IsInEventGroupContext.Provider>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;AA0DA,SAAgB,EAAW,EACzB,WACA,cACA,iBAAc,IACd,eACkB;CAClB,IAAM,EAAE,SAAM,EAAe,WAAW,GAClC,CAAC,GAAU,KAAe,EAAM,SAAS,EAAK,GAC9C,IAAY,EAAM,MAAM,GACxB,IAAW,GAAG,EAAU;CAE9B,IAAI,EAAO,WAAW,GACpB,OAAO;CAMT,IAAM,IAAgB,EAAO,MAAM,MAAwB,EAAc,CAAC,CAAC,GACrE,IAAiB,EAAO,OAAO,CAAkB,EAAE,QACnD,IAAa,EAAO,QACpB,IAAY,CAAC,CAAC,GAMd,IAAc,EAAO,EAAO,SAAS,IACvC,IAA+B;CACnC,AAAI,MACE,EAAc,CAAW,IAC3B,IAAc,EAAgB,CAAW,EAAE,QAClC,EAAmB,CAAW,MAMvC,IAAc,EAAgB,IALT,KAAa,GACO,MACtC,MACC,EAAc,CAAC,KAAK,EAAE,OAAO,EAAY,SAEF,CAAmB,EAAE;CAIpE,IAAM,IAAe,IACjB,EAAE,EAAQ,8BAA8B;EACtC,WAAW;EACX,OAAO;CACT,CAAC,IACD,EAAE,EAAQ,+BAA+B,EAAE,OAAO,EAAW,CAAC,GAE5D,IAAU,IAAW,IAAU;CAErC,OACE,kBAAC,OAAD;EAAK,WAAU;EAA2B,eAAY;YAAtD,CACE,kBAAC,UAAD;GACE,IAAI;GACJ,MAAK;GACL,eAAe,GAAa,MAAS,CAAC,CAAI;GAC1C,iBAAe;GACf,iBAAe;GACf,cAEM,EADJ,IACM,EAAQ,uBACR,EAAQ,kBAAkB;GAElC,eAAY;GACZ,WAAU;aAET,IACC,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACE,kBAAC,GAAD,EAAS,WAAU,+CAAgD,CAAA,GACnE,kBAAC,QAAD;KAAM,WAAU;eAAY;IAAmB,CAAA,CAC3C;QAEN,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACE,kBAAC,GAAD,EAAS,WAAU,+CAAgD,CAAA,GACnE,kBAAC,QAAD;KAAM,WAAU;eACd,kBAAC,EAAuB,UAAxB;MAAiC,OAAO;gBACrC,KAAe;KACe,CAAA;IAC7B,CAAA,CACF;OACN,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACE,kBAAC,QAAD;KAAM,WAAU;eAAY;IAAmB,CAAA,GAC9C,IACC,kBAAC,GAAD;KACE,eAAY;KACZ,WAAU;IACX,CAAA,IACC,IACA;KACN,EAAA,CAAA;EAEE,CAAA,GAEP,KACC,kBAAC,OAAD;GACE,IAAI;GACJ,MAAK;GACL,mBAAiB;GACjB,WAAU;GACV,eAAY;aAEZ,kBAAC,EAAsB,UAAvB;IAAgC,OAAA;IAC7B;GAC6B,CAAA;EAC7B,CAAA,CAEJ;;AAET"}
@@ -1,2 +1,2 @@
1
- require("../../../../_virtual/_rolldown/runtime.cjs");const e=require("../../../features/chat/chat-message.cjs"),t=require("./critic-result-display.cjs"),n=require("../event-content-helpers/get-event-content.cjs");let r=require("react/jsx-runtime");function i({event:i,isFromPlanningAgent:a=!1}){let o=n.getEventContent(i);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(e.ChatMessage,{type:`agent`,message:typeof o.details==`string`?o.details:String(o.details),isFromPlanningAgent:a}),i.critic_result!=null&&(0,r.jsx)(t.CriticResultDisplay,{criticResult:i.critic_result})]})}exports.FinishEventMessage=i;
1
+ require("../../../../_virtual/_rolldown/runtime.cjs");const e=require("../../../features/chat/chat-message.cjs"),t=require("./critic-result-display.cjs"),n=require("../event-content-helpers/get-event-content.cjs");let r=require("react/jsx-runtime");function i({event:i,isFromPlanningAgent:a=!1}){let o=n.getEventContent(i);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(e.ChatMessage,{type:`agent`,message:typeof o.details==`string`?o.details:String(o.details),isFromPlanningAgent:a,timestamp:i.timestamp}),i.critic_result!=null&&(0,r.jsx)(t.CriticResultDisplay,{criticResult:i.critic_result})]})}exports.FinishEventMessage=i;
2
2
  //# sourceMappingURL=finish-event-message.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"finish-event-message.cjs","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/finish-event-message.tsx"],"sourcesContent":["import { ActionEvent } from \"#/types/agent-server/core\";\nimport { FinishAction } from \"#/types/agent-server/core/base/action\";\nimport { ChatMessage } from \"../../../features/chat/chat-message\";\nimport { getEventContent } from \"../event-content-helpers/get-event-content\";\nimport { CriticResultDisplay } from \"./critic-result-display\";\n\ninterface FinishEventMessageProps {\n event: ActionEvent<FinishAction>;\n isFromPlanningAgent?: boolean;\n}\n\nexport function FinishEventMessage({\n event,\n isFromPlanningAgent = false,\n}: FinishEventMessageProps) {\n const eventContent = getEventContent(event);\n const message =\n typeof eventContent.details === \"string\"\n ? eventContent.details\n : String(eventContent.details);\n\n return (\n <>\n <ChatMessage\n type=\"agent\"\n message={message}\n isFromPlanningAgent={isFromPlanningAgent}\n />\n {event.critic_result != null && (\n <CriticResultDisplay criticResult={event.critic_result} />\n )}\n </>\n );\n}\n"],"mappings":"yPAWA,SAAgB,EAAmB,CACjC,QACA,sBAAsB,IACI,CAC1B,IAAM,EAAe,EAAA,gBAAgB,CAAK,EAM1C,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAA,YAAD,CACE,KAAK,QACI,QARb,OAAO,EAAa,SAAY,SAC5B,EAAa,QACb,OAAO,EAAa,OAAO,EAON,qBACtB,CAAA,EACA,EAAM,eAAiB,OACtB,EAAA,EAAA,KAAC,EAAA,oBAAD,CAAqB,aAAc,EAAM,aAAgB,CAAA,CAE3D,CAAA,CAAA,CAEN"}
1
+ {"version":3,"file":"finish-event-message.cjs","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/finish-event-message.tsx"],"sourcesContent":["import { ActionEvent } from \"#/types/agent-server/core\";\nimport { FinishAction } from \"#/types/agent-server/core/base/action\";\nimport { ChatMessage } from \"../../../features/chat/chat-message\";\nimport { getEventContent } from \"../event-content-helpers/get-event-content\";\nimport { CriticResultDisplay } from \"./critic-result-display\";\n\ninterface FinishEventMessageProps {\n event: ActionEvent<FinishAction>;\n isFromPlanningAgent?: boolean;\n}\n\nexport function FinishEventMessage({\n event,\n isFromPlanningAgent = false,\n}: FinishEventMessageProps) {\n const eventContent = getEventContent(event);\n const message =\n typeof eventContent.details === \"string\"\n ? eventContent.details\n : String(eventContent.details);\n\n return (\n <>\n <ChatMessage\n type=\"agent\"\n message={message}\n isFromPlanningAgent={isFromPlanningAgent}\n timestamp={event.timestamp}\n />\n {event.critic_result != null && (\n <CriticResultDisplay criticResult={event.critic_result} />\n )}\n </>\n );\n}\n"],"mappings":"yPAWA,SAAgB,EAAmB,CACjC,QACA,sBAAsB,IACI,CAC1B,IAAM,EAAe,EAAA,gBAAgB,CAAK,EAM1C,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAA,YAAD,CACE,KAAK,QACI,QARb,OAAO,EAAa,SAAY,SAC5B,EAAa,QACb,OAAO,EAAa,OAAO,EAON,sBACrB,UAAW,EAAM,SAClB,CAAA,EACA,EAAM,eAAiB,OACtB,EAAA,EAAA,KAAC,EAAA,oBAAD,CAAqB,aAAc,EAAM,aAAgB,CAAA,CAE3D,CAAA,CAAA,CAEN"}
@@ -8,7 +8,8 @@ function o({ event: o, isFromPlanningAgent: s = !1 }) {
8
8
  return /* @__PURE__ */ a(r, { children: [/* @__PURE__ */ i(e, {
9
9
  type: "agent",
10
10
  message: typeof c.details == "string" ? c.details : String(c.details),
11
- isFromPlanningAgent: s
11
+ isFromPlanningAgent: s,
12
+ timestamp: o.timestamp
12
13
  }), o.critic_result != null && /* @__PURE__ */ i(t, { criticResult: o.critic_result })] });
13
14
  }
14
15
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"finish-event-message.js","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/finish-event-message.tsx"],"sourcesContent":["import { ActionEvent } from \"#/types/agent-server/core\";\nimport { FinishAction } from \"#/types/agent-server/core/base/action\";\nimport { ChatMessage } from \"../../../features/chat/chat-message\";\nimport { getEventContent } from \"../event-content-helpers/get-event-content\";\nimport { CriticResultDisplay } from \"./critic-result-display\";\n\ninterface FinishEventMessageProps {\n event: ActionEvent<FinishAction>;\n isFromPlanningAgent?: boolean;\n}\n\nexport function FinishEventMessage({\n event,\n isFromPlanningAgent = false,\n}: FinishEventMessageProps) {\n const eventContent = getEventContent(event);\n const message =\n typeof eventContent.details === \"string\"\n ? eventContent.details\n : String(eventContent.details);\n\n return (\n <>\n <ChatMessage\n type=\"agent\"\n message={message}\n isFromPlanningAgent={isFromPlanningAgent}\n />\n {event.critic_result != null && (\n <CriticResultDisplay criticResult={event.critic_result} />\n )}\n </>\n );\n}\n"],"mappings":";;;;;AAWA,SAAgB,EAAmB,EACjC,UACA,yBAAsB,MACI;CAC1B,IAAM,IAAe,EAAgB,CAAK;CAM1C,OACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,MAAK;EACI,SARb,OAAO,EAAa,WAAY,WAC5B,EAAa,UACb,OAAO,EAAa,OAAO;EAON;CACtB,CAAA,GACA,EAAM,iBAAiB,QACtB,kBAAC,GAAD,EAAqB,cAAc,EAAM,cAAgB,CAAA,CAE3D,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"finish-event-message.js","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/finish-event-message.tsx"],"sourcesContent":["import { ActionEvent } from \"#/types/agent-server/core\";\nimport { FinishAction } from \"#/types/agent-server/core/base/action\";\nimport { ChatMessage } from \"../../../features/chat/chat-message\";\nimport { getEventContent } from \"../event-content-helpers/get-event-content\";\nimport { CriticResultDisplay } from \"./critic-result-display\";\n\ninterface FinishEventMessageProps {\n event: ActionEvent<FinishAction>;\n isFromPlanningAgent?: boolean;\n}\n\nexport function FinishEventMessage({\n event,\n isFromPlanningAgent = false,\n}: FinishEventMessageProps) {\n const eventContent = getEventContent(event);\n const message =\n typeof eventContent.details === \"string\"\n ? eventContent.details\n : String(eventContent.details);\n\n return (\n <>\n <ChatMessage\n type=\"agent\"\n message={message}\n isFromPlanningAgent={isFromPlanningAgent}\n timestamp={event.timestamp}\n />\n {event.critic_result != null && (\n <CriticResultDisplay criticResult={event.critic_result} />\n )}\n </>\n );\n}\n"],"mappings":";;;;;AAWA,SAAgB,EAAmB,EACjC,UACA,yBAAsB,MACI;CAC1B,IAAM,IAAe,EAAgB,CAAK;CAM1C,OACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,MAAK;EACI,SARb,OAAO,EAAa,WAAY,WAC5B,EAAa,UACb,OAAO,EAAa,OAAO;EAON;EACrB,WAAW,EAAM;CAClB,CAAA,GACA,EAAM,iBAAiB,QACtB,kBAAC,GAAD,EAAqB,cAAc,EAAM,cAAgB,CAAA,CAE3D,EAAA,CAAA;AAEN"}
@@ -1,2 +1,2 @@
1
- require("../../../../_virtual/_rolldown/runtime.cjs");const e=require("../../../../i18n/declaration.cjs"),t=require("../../../../types/agent-server/type-guards.cjs"),n=require("../../../features/chat/generic-event-message.cjs"),r=require("../../../../icons/skills.cjs"),i=require("../../../shared/buttons/conversation-confirmation-buttons.cjs"),a=require("../event-content-helpers/get-observation-result.cjs"),o=require("../event-content-helpers/create-skill-ready-event.cjs"),s=require("../../../features/chat/tool-visualizers/primitives/markdown-file-preview.cjs"),c=require("../event-content-helpers/get-event-content.cjs"),l=require("../event-content-helpers/get-invoke-skill-items.cjs"),u=require("./skill-ready-content-list.cjs");let d=require("react/jsx-runtime");function f(n){if(o.isSkillReadyEvent(n))return n._skillReadyItems.length>0?{items:n._skillReadyItems,titleKey:e.I18nKey.SKILLS$TRIGGERED_SKILL_KNOWLEDGE}:null;if(t.isObservationEvent(n)&&n.observation.kind===`InvokeSkillObservation`){let t=l.getInvokeSkillItems(n);return t.length>0?{items:t,titleKey:e.I18nKey.SKILLS$INVOKED_SKILL_KNOWLEDGE}:null}return null}function p({event:e,isLastMessage:l,correspondingAction:p}){let{title:m,details:h}=c.getEventContent(e,p);if(!o.isSkillReadyEvent(e)&&t.isObservationEvent(e)&&e.observation.kind===`TaskTrackerObservation`)return(0,d.jsx)(`div`,{children:h});let g;o.isSkillReadyEvent(e)?g=`success`:t.isObservationEvent(e)?g=a.getObservationResult(e):t.isACPToolCallEvent(e)&&(g=a.getACPToolCallResult(e));let _=f(e),v=_?(0,d.jsx)(u.SkillReadyContentList,{items:_.items,titleKey:_.titleKey}):h,y=!o.isSkillReadyEvent(e)&&s.isMarkdownFileEditorEvent(e,p);return(0,d.jsxs)(`div`,{children:[(0,d.jsx)(n.GenericEventMessage,{title:m,details:v,success:g,initiallyExpanded:y,titleIcon:_?(0,d.jsx)(r.default,{className:`h-4 w-4 stroke-[var(--oh-muted)] flex-shrink-0 mr-2`}):void 0}),l&&(0,d.jsx)(i.ConversationConfirmationButtons,{})]})}exports.GenericEventMessageWrapper=p;
1
+ require("../../../../_virtual/_rolldown/runtime.cjs");const e=require("../../../../i18n/declaration.cjs"),t=require("../../../../types/agent-server/type-guards.cjs"),n=require("../../../features/chat/generic-event-message.cjs"),r=require("../../../../icons/skills.cjs"),i=require("../event-content-helpers/get-observation-result.cjs"),a=require("../event-content-helpers/create-skill-ready-event.cjs"),o=require("../../../features/chat/tool-visualizers/primitives/markdown-file-preview.cjs"),s=require("../event-content-helpers/get-event-content.cjs"),c=require("../event-content-helpers/get-invoke-skill-items.cjs"),l=require("./skill-ready-content-list.cjs");let u=require("react/jsx-runtime");function d(n){if(a.isSkillReadyEvent(n))return n._skillReadyItems.length>0?{items:n._skillReadyItems,titleKey:e.I18nKey.SKILLS$TRIGGERED_SKILL_KNOWLEDGE}:null;if(t.isObservationEvent(n)&&n.observation.kind===`InvokeSkillObservation`){let t=c.getInvokeSkillItems(n);return t.length>0?{items:t,titleKey:e.I18nKey.SKILLS$INVOKED_SKILL_KNOWLEDGE}:null}return null}function f({event:e,correspondingAction:c}){let{title:f,details:p}=s.getEventContent(e,c);if(!a.isSkillReadyEvent(e)&&t.isObservationEvent(e)&&e.observation.kind===`TaskTrackerObservation`)return(0,u.jsx)(`div`,{children:p});let m;a.isSkillReadyEvent(e)?m=`success`:t.isObservationEvent(e)?m=i.getObservationResult(e):t.isACPToolCallEvent(e)&&(m=i.getACPToolCallResult(e));let h=d(e),g=h?(0,u.jsx)(l.SkillReadyContentList,{items:h.items,titleKey:h.titleKey}):p,_=!a.isSkillReadyEvent(e)&&o.isMarkdownFileEditorEvent(e,c);return(0,u.jsx)(`div`,{children:(0,u.jsx)(n.GenericEventMessage,{title:f,details:g,success:m,initiallyExpanded:_,timestamp:e.timestamp,titleIcon:h?(0,u.jsx)(r.default,{className:`h-4 w-4 stroke-[var(--oh-muted)] flex-shrink-0 mr-2`}):void 0})})}exports.GenericEventMessageWrapper=f;
2
2
  //# sourceMappingURL=generic-event-message-wrapper.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"generic-event-message-wrapper.cjs","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.tsx"],"sourcesContent":["import {\n OpenHandsEvent,\n ActionEvent,\n ObservationEvent,\n} from \"#/types/agent-server/core\";\nimport { InvokeSkillObservation } from \"#/types/agent-server/core/base/observation\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { GenericEventMessage } from \"../../../features/chat/generic-event-message\";\nimport { getEventContent } from \"../event-content-helpers/get-event-content\";\nimport {\n getACPToolCallResult,\n getObservationResult,\n ObservationResultStatus,\n} from \"../event-content-helpers/get-observation-result\";\nimport {\n isACPToolCallEvent,\n isObservationEvent,\n} from \"#/types/agent-server/type-guards\";\nimport {\n SkillReadyEvent,\n SkillReadyItem,\n isSkillReadyEvent,\n} from \"../event-content-helpers/create-skill-ready-event\";\nimport { getInvokeSkillItems } from \"../event-content-helpers/get-invoke-skill-items\";\nimport { ConversationConfirmationButtons } from \"#/components/shared/buttons/conversation-confirmation-buttons\";\nimport { SkillReadyContentList } from \"./skill-ready-content-list\";\nimport SkillsIcon from \"#/icons/skills.svg?react\";\nimport { isMarkdownFileEditorEvent } from \"#/components/features/chat/tool-visualizers/primitives/markdown-file-preview\";\n\ninterface GenericEventMessageWrapperProps {\n event: OpenHandsEvent | SkillReadyEvent;\n isLastMessage: boolean;\n correspondingAction?: ActionEvent;\n}\n\n/**\n * Resolves the expandable skill-knowledge list shared by Skill Ready events and\n * invoke-skill tool observations. Returns the list items and their header\n * label, or null when the event carries no skill knowledge (so the caller keeps\n * the default details body). Additional skill-knowledge sources slot in as one\n * more branch here.\n */\nfunction getSkillKnowledge(\n event: OpenHandsEvent | SkillReadyEvent,\n): { items: SkillReadyItem[]; titleKey: I18nKey } | null {\n if (isSkillReadyEvent(event)) {\n return event._skillReadyItems.length > 0\n ? {\n items: event._skillReadyItems,\n titleKey: I18nKey.SKILLS$TRIGGERED_SKILL_KNOWLEDGE,\n }\n : null;\n }\n if (\n isObservationEvent(event) &&\n event.observation.kind === \"InvokeSkillObservation\"\n ) {\n const items = getInvokeSkillItems(\n event as ObservationEvent<InvokeSkillObservation>,\n );\n return items.length > 0\n ? { items, titleKey: I18nKey.SKILLS$INVOKED_SKILL_KNOWLEDGE }\n : null;\n }\n return null;\n}\n\nexport function GenericEventMessageWrapper({\n event,\n isLastMessage,\n correspondingAction,\n}: GenericEventMessageWrapperProps) {\n const { title, details } = getEventContent(event, correspondingAction);\n\n // TaskTrackerObservation has its own rendering\n if (\n !isSkillReadyEvent(event) &&\n isObservationEvent(event) &&\n event.observation.kind === \"TaskTrackerObservation\"\n ) {\n return <div>{details}</div>;\n }\n\n // Determine success status\n let success: ObservationResultStatus | undefined;\n if (isSkillReadyEvent(event)) {\n success = \"success\";\n } else if (isObservationEvent(event)) {\n success = getObservationResult(event);\n } else if (isACPToolCallEvent(event)) {\n success = getACPToolCallResult(event);\n }\n\n // Skill Ready events and invoke-skill tool observations both render the\n // expandable skill-knowledge list (with the skills icon); they differ only in\n // the header label.\n const skillKnowledge = getSkillKnowledge(event);\n const bodyDetails = skillKnowledge ? (\n <SkillReadyContentList\n items={skillKnowledge.items}\n titleKey={skillKnowledge.titleKey}\n />\n ) : (\n details\n );\n\n // Markdown file-editor cards carry a clipped preview; expand them by\n // default so the artifact is visible without an extra chevron click.\n const initiallyExpanded =\n !isSkillReadyEvent(event) &&\n isMarkdownFileEditorEvent(event, correspondingAction);\n\n return (\n <div>\n <GenericEventMessage\n title={title}\n details={bodyDetails}\n success={success}\n initiallyExpanded={initiallyExpanded}\n titleIcon={\n skillKnowledge ? (\n <SkillsIcon className=\"h-4 w-4 stroke-[var(--oh-muted)] flex-shrink-0 mr-2\" />\n ) : undefined\n }\n />\n {isLastMessage && <ConversationConfirmationButtons />}\n </div>\n );\n}\n"],"mappings":"mwBA0CA,SAAS,EACP,EACuD,CACvD,GAAI,EAAA,kBAAkB,CAAK,EACzB,OAAO,EAAM,iBAAiB,OAAS,EACnC,CACE,MAAO,EAAM,iBACb,SAAU,EAAA,QAAQ,gCACpB,EACA,KAEN,GACE,EAAA,mBAAmB,CAAK,GACxB,EAAM,YAAY,OAAS,yBAC3B,CACA,IAAM,EAAQ,EAAA,oBACZ,CACF,EACA,OAAO,EAAM,OAAS,EAClB,CAAE,QAAO,SAAU,EAAA,QAAQ,8BAA+B,EAC1D,IACN,CACA,OAAO,IACT,CAEA,SAAgB,EAA2B,CACzC,QACA,gBACA,uBACkC,CAClC,GAAM,CAAE,QAAO,WAAY,EAAA,gBAAgB,EAAO,CAAmB,EAGrE,GACE,CAAC,EAAA,kBAAkB,CAAK,GACxB,EAAA,mBAAmB,CAAK,GACxB,EAAM,YAAY,OAAS,yBAE3B,OAAO,EAAA,EAAA,KAAC,MAAD,CAAA,SAAM,CAAa,CAAA,EAI5B,IAAI,EACA,EAAA,kBAAkB,CAAK,EACzB,EAAU,UACD,EAAA,mBAAmB,CAAK,EACjC,EAAU,EAAA,qBAAqB,CAAK,EAC3B,EAAA,mBAAmB,CAAK,IACjC,EAAU,EAAA,qBAAqB,CAAK,GAMtC,IAAM,EAAiB,EAAkB,CAAK,EACxC,EAAc,GAClB,EAAA,EAAA,KAAC,EAAA,sBAAD,CACE,MAAO,EAAe,MACtB,SAAU,EAAe,QAC1B,CAAA,EAED,EAKI,EACJ,CAAC,EAAA,kBAAkB,CAAK,GACxB,EAAA,0BAA0B,EAAO,CAAmB,EAEtD,OACE,EAAA,EAAA,MAAC,MAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAA,oBAAD,CACS,QACP,QAAS,EACA,UACU,oBACnB,UACE,GACE,EAAA,EAAA,KAAC,EAAA,QAAD,CAAY,UAAU,qDAAuD,CAAA,EAC3E,IAAA,EAEP,CAAA,EACA,IAAiB,EAAA,EAAA,KAAC,EAAA,gCAAD,CAAkC,CAAA,CACjD,CAAA,CAAA,CAET"}
1
+ {"version":3,"file":"generic-event-message-wrapper.cjs","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.tsx"],"sourcesContent":["import {\n OpenHandsEvent,\n ActionEvent,\n ObservationEvent,\n} from \"#/types/agent-server/core\";\nimport { InvokeSkillObservation } from \"#/types/agent-server/core/base/observation\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { GenericEventMessage } from \"../../../features/chat/generic-event-message\";\nimport { getEventContent } from \"../event-content-helpers/get-event-content\";\nimport {\n getACPToolCallResult,\n getObservationResult,\n ObservationResultStatus,\n} from \"../event-content-helpers/get-observation-result\";\nimport {\n isACPToolCallEvent,\n isObservationEvent,\n} from \"#/types/agent-server/type-guards\";\nimport {\n SkillReadyEvent,\n SkillReadyItem,\n isSkillReadyEvent,\n} from \"../event-content-helpers/create-skill-ready-event\";\nimport { getInvokeSkillItems } from \"../event-content-helpers/get-invoke-skill-items\";\nimport { SkillReadyContentList } from \"./skill-ready-content-list\";\nimport SkillsIcon from \"#/icons/skills.svg?react\";\nimport { isMarkdownFileEditorEvent } from \"#/components/features/chat/tool-visualizers/primitives/markdown-file-preview\";\n\ninterface GenericEventMessageWrapperProps {\n event: OpenHandsEvent | SkillReadyEvent;\n isLastMessage: boolean;\n correspondingAction?: ActionEvent;\n}\n\n/**\n * Resolves the expandable skill-knowledge list shared by Skill Ready events and\n * invoke-skill tool observations. Returns the list items and their header\n * label, or null when the event carries no skill knowledge (so the caller keeps\n * the default details body). Additional skill-knowledge sources slot in as one\n * more branch here.\n */\nfunction getSkillKnowledge(\n event: OpenHandsEvent | SkillReadyEvent,\n): { items: SkillReadyItem[]; titleKey: I18nKey } | null {\n if (isSkillReadyEvent(event)) {\n return event._skillReadyItems.length > 0\n ? {\n items: event._skillReadyItems,\n titleKey: I18nKey.SKILLS$TRIGGERED_SKILL_KNOWLEDGE,\n }\n : null;\n }\n if (\n isObservationEvent(event) &&\n event.observation.kind === \"InvokeSkillObservation\"\n ) {\n const items = getInvokeSkillItems(\n event as ObservationEvent<InvokeSkillObservation>,\n );\n return items.length > 0\n ? { items, titleKey: I18nKey.SKILLS$INVOKED_SKILL_KNOWLEDGE }\n : null;\n }\n return null;\n}\n\nexport function GenericEventMessageWrapper({\n event,\n correspondingAction,\n}: GenericEventMessageWrapperProps) {\n const { title, details } = getEventContent(event, correspondingAction);\n\n // TaskTrackerObservation has its own rendering\n if (\n !isSkillReadyEvent(event) &&\n isObservationEvent(event) &&\n event.observation.kind === \"TaskTrackerObservation\"\n ) {\n return <div>{details}</div>;\n }\n\n // Determine success status\n let success: ObservationResultStatus | undefined;\n if (isSkillReadyEvent(event)) {\n success = \"success\";\n } else if (isObservationEvent(event)) {\n success = getObservationResult(event);\n } else if (isACPToolCallEvent(event)) {\n success = getACPToolCallResult(event);\n }\n\n // Skill Ready events and invoke-skill tool observations both render the\n // expandable skill-knowledge list (with the skills icon); they differ only in\n // the header label.\n const skillKnowledge = getSkillKnowledge(event);\n const bodyDetails = skillKnowledge ? (\n <SkillReadyContentList\n items={skillKnowledge.items}\n titleKey={skillKnowledge.titleKey}\n />\n ) : (\n details\n );\n\n // Markdown file-editor cards carry a clipped preview; expand them by\n // default so the artifact is visible without an extra chevron click.\n const initiallyExpanded =\n !isSkillReadyEvent(event) &&\n isMarkdownFileEditorEvent(event, correspondingAction);\n\n return (\n <div>\n <GenericEventMessage\n title={title}\n details={bodyDetails}\n success={success}\n initiallyExpanded={initiallyExpanded}\n timestamp={event.timestamp}\n titleIcon={\n skillKnowledge ? (\n <SkillsIcon className=\"h-4 w-4 stroke-[var(--oh-muted)] flex-shrink-0 mr-2\" />\n ) : undefined\n }\n />\n </div>\n );\n}\n"],"mappings":"wrBAyCA,SAAS,EACP,EACuD,CACvD,GAAI,EAAA,kBAAkB,CAAK,EACzB,OAAO,EAAM,iBAAiB,OAAS,EACnC,CACE,MAAO,EAAM,iBACb,SAAU,EAAA,QAAQ,gCACpB,EACA,KAEN,GACE,EAAA,mBAAmB,CAAK,GACxB,EAAM,YAAY,OAAS,yBAC3B,CACA,IAAM,EAAQ,EAAA,oBACZ,CACF,EACA,OAAO,EAAM,OAAS,EAClB,CAAE,QAAO,SAAU,EAAA,QAAQ,8BAA+B,EAC1D,IACN,CACA,OAAO,IACT,CAEA,SAAgB,EAA2B,CACzC,QACA,uBACkC,CAClC,GAAM,CAAE,QAAO,WAAY,EAAA,gBAAgB,EAAO,CAAmB,EAGrE,GACE,CAAC,EAAA,kBAAkB,CAAK,GACxB,EAAA,mBAAmB,CAAK,GACxB,EAAM,YAAY,OAAS,yBAE3B,OAAO,EAAA,EAAA,KAAC,MAAD,CAAA,SAAM,CAAa,CAAA,EAI5B,IAAI,EACA,EAAA,kBAAkB,CAAK,EACzB,EAAU,UACD,EAAA,mBAAmB,CAAK,EACjC,EAAU,EAAA,qBAAqB,CAAK,EAC3B,EAAA,mBAAmB,CAAK,IACjC,EAAU,EAAA,qBAAqB,CAAK,GAMtC,IAAM,EAAiB,EAAkB,CAAK,EACxC,EAAc,GAClB,EAAA,EAAA,KAAC,EAAA,sBAAD,CACE,MAAO,EAAe,MACtB,SAAU,EAAe,QAC1B,CAAA,EAED,EAKI,EACJ,CAAC,EAAA,kBAAkB,CAAK,GACxB,EAAA,0BAA0B,EAAO,CAAmB,EAEtD,OACE,EAAA,EAAA,KAAC,MAAD,CAAA,UACE,EAAA,EAAA,KAAC,EAAA,oBAAD,CACS,QACP,QAAS,EACA,UACU,oBACnB,UAAW,EAAM,UACjB,UACE,GACE,EAAA,EAAA,KAAC,EAAA,QAAD,CAAY,UAAU,qDAAuD,CAAA,EAC3E,IAAA,EAEP,CAAA,CACE,CAAA,CAET"}
@@ -5,5 +5,5 @@ interface GenericEventMessageWrapperProps {
5
5
  isLastMessage: boolean;
6
6
  correspondingAction?: ActionEvent;
7
7
  }
8
- export declare function GenericEventMessageWrapper({ event, isLastMessage, correspondingAction, }: GenericEventMessageWrapperProps): import("react").JSX.Element;
8
+ export declare function GenericEventMessageWrapper({ event, correspondingAction, }: GenericEventMessageWrapperProps): import("react").JSX.Element;
9
9
  export {};
@@ -2,22 +2,21 @@ import { I18nKey as e } from "../../../../i18n/declaration.js";
2
2
  import { isACPToolCallEvent as t, isObservationEvent as n } from "../../../../types/agent-server/type-guards.js";
3
3
  import { GenericEventMessage as r } from "../../../features/chat/generic-event-message.js";
4
4
  import i from "../../../../icons/skills.js";
5
- import { ConversationConfirmationButtons as a } from "../../../shared/buttons/conversation-confirmation-buttons.js";
6
- import { getACPToolCallResult as o, getObservationResult as s } from "../event-content-helpers/get-observation-result.js";
7
- import { isSkillReadyEvent as c } from "../event-content-helpers/create-skill-ready-event.js";
8
- import { isMarkdownFileEditorEvent as l } from "../../../features/chat/tool-visualizers/primitives/markdown-file-preview.js";
9
- import { getEventContent as u } from "../event-content-helpers/get-event-content.js";
10
- import { getInvokeSkillItems as d } from "../event-content-helpers/get-invoke-skill-items.js";
11
- import { SkillReadyContentList as f } from "./skill-ready-content-list.js";
12
- import { jsx as p, jsxs as m } from "react/jsx-runtime";
5
+ import { getACPToolCallResult as a, getObservationResult as o } from "../event-content-helpers/get-observation-result.js";
6
+ import { isSkillReadyEvent as s } from "../event-content-helpers/create-skill-ready-event.js";
7
+ import { isMarkdownFileEditorEvent as c } from "../../../features/chat/tool-visualizers/primitives/markdown-file-preview.js";
8
+ import { getEventContent as l } from "../event-content-helpers/get-event-content.js";
9
+ import { getInvokeSkillItems as u } from "../event-content-helpers/get-invoke-skill-items.js";
10
+ import { SkillReadyContentList as d } from "./skill-ready-content-list.js";
11
+ import { jsx as f } from "react/jsx-runtime";
13
12
  //#region src/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.tsx
14
- function h(t) {
15
- if (c(t)) return t._skillReadyItems.length > 0 ? {
13
+ function p(t) {
14
+ if (s(t)) return t._skillReadyItems.length > 0 ? {
16
15
  items: t._skillReadyItems,
17
16
  titleKey: e.SKILLS$TRIGGERED_SKILL_KNOWLEDGE
18
17
  } : null;
19
18
  if (n(t) && t.observation.kind === "InvokeSkillObservation") {
20
- let n = d(t);
19
+ let n = u(t);
21
20
  return n.length > 0 ? {
22
21
  items: n,
23
22
  titleKey: e.SKILLS$INVOKED_SKILL_KNOWLEDGE
@@ -25,24 +24,25 @@ function h(t) {
25
24
  }
26
25
  return null;
27
26
  }
28
- function g({ event: e, isLastMessage: d, correspondingAction: g }) {
29
- let { title: _, details: v } = u(e, g);
30
- if (!c(e) && n(e) && e.observation.kind === "TaskTrackerObservation") return /* @__PURE__ */ p("div", { children: v });
31
- let y;
32
- c(e) ? y = "success" : n(e) ? y = s(e) : t(e) && (y = o(e));
33
- let b = h(e), x = b ? /* @__PURE__ */ p(f, {
34
- items: b.items,
35
- titleKey: b.titleKey
36
- }) : v, S = !c(e) && l(e, g);
37
- return /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p(r, {
38
- title: _,
39
- details: x,
40
- success: y,
41
- initiallyExpanded: S,
42
- titleIcon: b ? /* @__PURE__ */ p(i, { className: "h-4 w-4 stroke-[var(--oh-muted)] flex-shrink-0 mr-2" }) : void 0
43
- }), d && /* @__PURE__ */ p(a, {})] });
27
+ function m({ event: e, correspondingAction: u }) {
28
+ let { title: m, details: h } = l(e, u);
29
+ if (!s(e) && n(e) && e.observation.kind === "TaskTrackerObservation") return /* @__PURE__ */ f("div", { children: h });
30
+ let g;
31
+ s(e) ? g = "success" : n(e) ? g = o(e) : t(e) && (g = a(e));
32
+ let _ = p(e), v = _ ? /* @__PURE__ */ f(d, {
33
+ items: _.items,
34
+ titleKey: _.titleKey
35
+ }) : h, y = !s(e) && c(e, u);
36
+ return /* @__PURE__ */ f("div", { children: /* @__PURE__ */ f(r, {
37
+ title: m,
38
+ details: v,
39
+ success: g,
40
+ initiallyExpanded: y,
41
+ timestamp: e.timestamp,
42
+ titleIcon: _ ? /* @__PURE__ */ f(i, { className: "h-4 w-4 stroke-[var(--oh-muted)] flex-shrink-0 mr-2" }) : void 0
43
+ }) });
44
44
  }
45
45
  //#endregion
46
- export { g as GenericEventMessageWrapper };
46
+ export { m as GenericEventMessageWrapper };
47
47
 
48
48
  //# sourceMappingURL=generic-event-message-wrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generic-event-message-wrapper.js","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.tsx"],"sourcesContent":["import {\n OpenHandsEvent,\n ActionEvent,\n ObservationEvent,\n} from \"#/types/agent-server/core\";\nimport { InvokeSkillObservation } from \"#/types/agent-server/core/base/observation\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { GenericEventMessage } from \"../../../features/chat/generic-event-message\";\nimport { getEventContent } from \"../event-content-helpers/get-event-content\";\nimport {\n getACPToolCallResult,\n getObservationResult,\n ObservationResultStatus,\n} from \"../event-content-helpers/get-observation-result\";\nimport {\n isACPToolCallEvent,\n isObservationEvent,\n} from \"#/types/agent-server/type-guards\";\nimport {\n SkillReadyEvent,\n SkillReadyItem,\n isSkillReadyEvent,\n} from \"../event-content-helpers/create-skill-ready-event\";\nimport { getInvokeSkillItems } from \"../event-content-helpers/get-invoke-skill-items\";\nimport { ConversationConfirmationButtons } from \"#/components/shared/buttons/conversation-confirmation-buttons\";\nimport { SkillReadyContentList } from \"./skill-ready-content-list\";\nimport SkillsIcon from \"#/icons/skills.svg?react\";\nimport { isMarkdownFileEditorEvent } from \"#/components/features/chat/tool-visualizers/primitives/markdown-file-preview\";\n\ninterface GenericEventMessageWrapperProps {\n event: OpenHandsEvent | SkillReadyEvent;\n isLastMessage: boolean;\n correspondingAction?: ActionEvent;\n}\n\n/**\n * Resolves the expandable skill-knowledge list shared by Skill Ready events and\n * invoke-skill tool observations. Returns the list items and their header\n * label, or null when the event carries no skill knowledge (so the caller keeps\n * the default details body). Additional skill-knowledge sources slot in as one\n * more branch here.\n */\nfunction getSkillKnowledge(\n event: OpenHandsEvent | SkillReadyEvent,\n): { items: SkillReadyItem[]; titleKey: I18nKey } | null {\n if (isSkillReadyEvent(event)) {\n return event._skillReadyItems.length > 0\n ? {\n items: event._skillReadyItems,\n titleKey: I18nKey.SKILLS$TRIGGERED_SKILL_KNOWLEDGE,\n }\n : null;\n }\n if (\n isObservationEvent(event) &&\n event.observation.kind === \"InvokeSkillObservation\"\n ) {\n const items = getInvokeSkillItems(\n event as ObservationEvent<InvokeSkillObservation>,\n );\n return items.length > 0\n ? { items, titleKey: I18nKey.SKILLS$INVOKED_SKILL_KNOWLEDGE }\n : null;\n }\n return null;\n}\n\nexport function GenericEventMessageWrapper({\n event,\n isLastMessage,\n correspondingAction,\n}: GenericEventMessageWrapperProps) {\n const { title, details } = getEventContent(event, correspondingAction);\n\n // TaskTrackerObservation has its own rendering\n if (\n !isSkillReadyEvent(event) &&\n isObservationEvent(event) &&\n event.observation.kind === \"TaskTrackerObservation\"\n ) {\n return <div>{details}</div>;\n }\n\n // Determine success status\n let success: ObservationResultStatus | undefined;\n if (isSkillReadyEvent(event)) {\n success = \"success\";\n } else if (isObservationEvent(event)) {\n success = getObservationResult(event);\n } else if (isACPToolCallEvent(event)) {\n success = getACPToolCallResult(event);\n }\n\n // Skill Ready events and invoke-skill tool observations both render the\n // expandable skill-knowledge list (with the skills icon); they differ only in\n // the header label.\n const skillKnowledge = getSkillKnowledge(event);\n const bodyDetails = skillKnowledge ? (\n <SkillReadyContentList\n items={skillKnowledge.items}\n titleKey={skillKnowledge.titleKey}\n />\n ) : (\n details\n );\n\n // Markdown file-editor cards carry a clipped preview; expand them by\n // default so the artifact is visible without an extra chevron click.\n const initiallyExpanded =\n !isSkillReadyEvent(event) &&\n isMarkdownFileEditorEvent(event, correspondingAction);\n\n return (\n <div>\n <GenericEventMessage\n title={title}\n details={bodyDetails}\n success={success}\n initiallyExpanded={initiallyExpanded}\n titleIcon={\n skillKnowledge ? (\n <SkillsIcon className=\"h-4 w-4 stroke-[var(--oh-muted)] flex-shrink-0 mr-2\" />\n ) : undefined\n }\n />\n {isLastMessage && <ConversationConfirmationButtons />}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AA0CA,SAAS,EACP,GACuD;CACvD,IAAI,EAAkB,CAAK,GACzB,OAAO,EAAM,iBAAiB,SAAS,IACnC;EACE,OAAO,EAAM;EACb,UAAU,EAAQ;CACpB,IACA;CAEN,IACE,EAAmB,CAAK,KACxB,EAAM,YAAY,SAAS,0BAC3B;EACA,IAAM,IAAQ,EACZ,CACF;EACA,OAAO,EAAM,SAAS,IAClB;GAAE;GAAO,UAAU,EAAQ;EAA+B,IAC1D;CACN;CACA,OAAO;AACT;AAEA,SAAgB,EAA2B,EACzC,UACA,kBACA,0BACkC;CAClC,IAAM,EAAE,UAAO,eAAY,EAAgB,GAAO,CAAmB;CAGrE,IACE,CAAC,EAAkB,CAAK,KACxB,EAAmB,CAAK,KACxB,EAAM,YAAY,SAAS,0BAE3B,OAAO,kBAAC,OAAD,EAAA,UAAM,EAAa,CAAA;CAI5B,IAAI;CACJ,AAAI,EAAkB,CAAK,IACzB,IAAU,YACD,EAAmB,CAAK,IACjC,IAAU,EAAqB,CAAK,IAC3B,EAAmB,CAAK,MACjC,IAAU,EAAqB,CAAK;CAMtC,IAAM,IAAiB,EAAkB,CAAK,GACxC,IAAc,IAClB,kBAAC,GAAD;EACE,OAAO,EAAe;EACtB,UAAU,EAAe;CAC1B,CAAA,IAED,GAKI,IACJ,CAAC,EAAkB,CAAK,KACxB,EAA0B,GAAO,CAAmB;CAEtD,OACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EACS;EACP,SAAS;EACA;EACU;EACnB,WACE,IACE,kBAAC,GAAD,EAAY,WAAU,sDAAuD,CAAA,IAC3E,KAAA;CAEP,CAAA,GACA,KAAiB,kBAAC,GAAD,CAAkC,CAAA,CACjD,EAAA,CAAA;AAET"}
1
+ {"version":3,"file":"generic-event-message-wrapper.js","names":[],"sources":["../../../../../src/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.tsx"],"sourcesContent":["import {\n OpenHandsEvent,\n ActionEvent,\n ObservationEvent,\n} from \"#/types/agent-server/core\";\nimport { InvokeSkillObservation } from \"#/types/agent-server/core/base/observation\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { GenericEventMessage } from \"../../../features/chat/generic-event-message\";\nimport { getEventContent } from \"../event-content-helpers/get-event-content\";\nimport {\n getACPToolCallResult,\n getObservationResult,\n ObservationResultStatus,\n} from \"../event-content-helpers/get-observation-result\";\nimport {\n isACPToolCallEvent,\n isObservationEvent,\n} from \"#/types/agent-server/type-guards\";\nimport {\n SkillReadyEvent,\n SkillReadyItem,\n isSkillReadyEvent,\n} from \"../event-content-helpers/create-skill-ready-event\";\nimport { getInvokeSkillItems } from \"../event-content-helpers/get-invoke-skill-items\";\nimport { SkillReadyContentList } from \"./skill-ready-content-list\";\nimport SkillsIcon from \"#/icons/skills.svg?react\";\nimport { isMarkdownFileEditorEvent } from \"#/components/features/chat/tool-visualizers/primitives/markdown-file-preview\";\n\ninterface GenericEventMessageWrapperProps {\n event: OpenHandsEvent | SkillReadyEvent;\n isLastMessage: boolean;\n correspondingAction?: ActionEvent;\n}\n\n/**\n * Resolves the expandable skill-knowledge list shared by Skill Ready events and\n * invoke-skill tool observations. Returns the list items and their header\n * label, or null when the event carries no skill knowledge (so the caller keeps\n * the default details body). Additional skill-knowledge sources slot in as one\n * more branch here.\n */\nfunction getSkillKnowledge(\n event: OpenHandsEvent | SkillReadyEvent,\n): { items: SkillReadyItem[]; titleKey: I18nKey } | null {\n if (isSkillReadyEvent(event)) {\n return event._skillReadyItems.length > 0\n ? {\n items: event._skillReadyItems,\n titleKey: I18nKey.SKILLS$TRIGGERED_SKILL_KNOWLEDGE,\n }\n : null;\n }\n if (\n isObservationEvent(event) &&\n event.observation.kind === \"InvokeSkillObservation\"\n ) {\n const items = getInvokeSkillItems(\n event as ObservationEvent<InvokeSkillObservation>,\n );\n return items.length > 0\n ? { items, titleKey: I18nKey.SKILLS$INVOKED_SKILL_KNOWLEDGE }\n : null;\n }\n return null;\n}\n\nexport function GenericEventMessageWrapper({\n event,\n correspondingAction,\n}: GenericEventMessageWrapperProps) {\n const { title, details } = getEventContent(event, correspondingAction);\n\n // TaskTrackerObservation has its own rendering\n if (\n !isSkillReadyEvent(event) &&\n isObservationEvent(event) &&\n event.observation.kind === \"TaskTrackerObservation\"\n ) {\n return <div>{details}</div>;\n }\n\n // Determine success status\n let success: ObservationResultStatus | undefined;\n if (isSkillReadyEvent(event)) {\n success = \"success\";\n } else if (isObservationEvent(event)) {\n success = getObservationResult(event);\n } else if (isACPToolCallEvent(event)) {\n success = getACPToolCallResult(event);\n }\n\n // Skill Ready events and invoke-skill tool observations both render the\n // expandable skill-knowledge list (with the skills icon); they differ only in\n // the header label.\n const skillKnowledge = getSkillKnowledge(event);\n const bodyDetails = skillKnowledge ? (\n <SkillReadyContentList\n items={skillKnowledge.items}\n titleKey={skillKnowledge.titleKey}\n />\n ) : (\n details\n );\n\n // Markdown file-editor cards carry a clipped preview; expand them by\n // default so the artifact is visible without an extra chevron click.\n const initiallyExpanded =\n !isSkillReadyEvent(event) &&\n isMarkdownFileEditorEvent(event, correspondingAction);\n\n return (\n <div>\n <GenericEventMessage\n title={title}\n details={bodyDetails}\n success={success}\n initiallyExpanded={initiallyExpanded}\n timestamp={event.timestamp}\n titleIcon={\n skillKnowledge ? (\n <SkillsIcon className=\"h-4 w-4 stroke-[var(--oh-muted)] flex-shrink-0 mr-2\" />\n ) : undefined\n }\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAyCA,SAAS,EACP,GACuD;CACvD,IAAI,EAAkB,CAAK,GACzB,OAAO,EAAM,iBAAiB,SAAS,IACnC;EACE,OAAO,EAAM;EACb,UAAU,EAAQ;CACpB,IACA;CAEN,IACE,EAAmB,CAAK,KACxB,EAAM,YAAY,SAAS,0BAC3B;EACA,IAAM,IAAQ,EACZ,CACF;EACA,OAAO,EAAM,SAAS,IAClB;GAAE;GAAO,UAAU,EAAQ;EAA+B,IAC1D;CACN;CACA,OAAO;AACT;AAEA,SAAgB,EAA2B,EACzC,UACA,0BACkC;CAClC,IAAM,EAAE,UAAO,eAAY,EAAgB,GAAO,CAAmB;CAGrE,IACE,CAAC,EAAkB,CAAK,KACxB,EAAmB,CAAK,KACxB,EAAM,YAAY,SAAS,0BAE3B,OAAO,kBAAC,OAAD,EAAA,UAAM,EAAa,CAAA;CAI5B,IAAI;CACJ,AAAI,EAAkB,CAAK,IACzB,IAAU,YACD,EAAmB,CAAK,IACjC,IAAU,EAAqB,CAAK,IAC3B,EAAmB,CAAK,MACjC,IAAU,EAAqB,CAAK;CAMtC,IAAM,IAAiB,EAAkB,CAAK,GACxC,IAAc,IAClB,kBAAC,GAAD;EACE,OAAO,EAAe;EACtB,UAAU,EAAe;CAC1B,CAAA,IAED,GAKI,IACJ,CAAC,EAAkB,CAAK,KACxB,EAA0B,GAAO,CAAmB;CAEtD,OACE,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD;EACS;EACP,SAAS;EACA;EACU;EACnB,WAAW,EAAM;EACjB,WACE,IACE,kBAAC,GAAD,EAAY,WAAU,sDAAuD,CAAA,IAC3E,KAAA;CAEP,CAAA,EACE,CAAA;AAET"}