@openhands/agent-canvas 1.8.0 → 1.9.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.
- package/README.md +1 -1
- package/README.windows.md +2 -2
- package/build/assets/{Trans-B7lYw4uD.js → Trans-Bwpzk1wT.js} +1 -1
- package/build/assets/{acp-providers-WUD4tfSq.js → acp-providers-C921BlYB.js} +1 -1
- package/build/assets/active-backend-context-BiwzkzDy.js +2 -0
- package/build/assets/agent-context-settings-DXNT_dcw.js +1 -0
- package/build/assets/agent-profiles-settings-BymJf3EP.js +1 -0
- package/build/assets/agent-server-conversation-service.api-CYSWw-2g.js +41 -0
- package/build/assets/agent-settings-BjgQQe-_.js +1 -0
- package/build/assets/{agent-settings-BGTyoT6X.js → agent-settings-WzqXk6B4.js} +2 -2
- package/build/assets/{alert-banner-eRyIwDyU.js → alert-banner-DR8EVyZM.js} +1 -1
- package/build/assets/api-error-message-e16L1kwH.js +1 -0
- package/build/assets/{api-key-entry-screen-JOx3SH1-.js → api-key-entry-screen-DI0I04O3.js} +1 -1
- package/build/assets/{app-settings-D53QZy5p.js → app-settings-DGistSFV.js} +1 -1
- package/build/assets/automation-C_eCrGyP.js +1 -0
- package/build/assets/automation-detail-DY6x2FW1.js +2 -0
- package/build/assets/automation-export-C09f-Lua.js +2 -0
- package/build/assets/automation-setup-route-CqKp0717.js +1 -0
- package/build/assets/automations-list-CqWJ7qXW.js +1 -0
- package/build/assets/{back-nav-button-C02hGa8t.js → back-nav-button-D4ngzpSh.js} +1 -1
- package/build/assets/backend-form-modal-B8D5hBzK.js +1 -0
- package/build/assets/{backend-synced-settings-badge-CQ9xtNWm.js → backend-synced-settings-badge-BnzI8Ysj.js} +1 -1
- package/build/assets/{badge-CzXbf7tR.js → badge-1Mf1iPcX.js} +1 -1
- package/build/assets/{base-modal-DkVyzFMt.js → base-modal-BBuy0WQQ.js} +1 -1
- package/build/assets/{brand-button-BUlDL-mz.js → brand-button-DGN6Y9o6.js} +1 -1
- package/build/assets/browser-D_ekTlTS.js +6 -0
- package/build/assets/{browser-tab-BijpUbdt.js → browser-tab-D4a4Ou_w.js} +1 -1
- package/build/assets/{chat-send-button-BKsVjhtA.js → chat-send-button-CgbcjD97.js} +1 -1
- package/build/assets/check-CPLXgluF.js +1 -0
- package/build/assets/chevron-down-CP4QHvyc.js +1 -0
- package/build/assets/circle-check-Dpy2_xSI.js +1 -0
- package/build/assets/{circle-plus-check-toggle-DdjUiOo1.js → circle-plus-check-toggle-yTAS-nX3.js} +1 -1
- package/build/assets/cloud-funnel-analytics-CEOl5Gxr.js +1 -0
- package/build/assets/{combobox-caret-Dl9UtvD6.js → combobox-caret-Bd2yySnF.js} +1 -1
- package/build/assets/command-menu-Bj6X4ckE.js +1 -0
- package/build/assets/condenser-settings-EAXQNR2E.js +1 -0
- package/build/assets/{confirmation-modal-CRBJSllP.js → confirmation-modal-NCUPr2-O.js} +1 -1
- package/build/assets/{context-menu-list-item-FGaafXGh.js → context-menu-list-item-CrCrYuPF.js} +1 -1
- package/build/assets/conversation-BzyIcSwr.js +1 -0
- package/build/assets/conversation-CUJ0Vo8g.js +90 -0
- package/build/assets/conversation-panel-BzyIcSwr.js +1 -0
- package/build/assets/conversation-state-store-F62HvuI1.js +1 -0
- package/build/assets/{conversation-tab-empty-state-CDjvNgpG.js → conversation-tab-empty-state-BCZ7rUMH.js} +1 -1
- package/build/assets/{copy-Drwu97Gx.js → copy-DCmZtz6n.js} +1 -1
- package/build/assets/{copy-to-clipboard-button-NbN1clVr.js → copy-to-clipboard-button-D_Lp6-Fl.js} +1 -1
- package/build/assets/{device-verify-CDm_WrVu.js → device-verify-DLmolX8Q.js} +1 -1
- package/build/assets/{dropdown-classes-CqA2BTCL.js → dropdown-classes-BB8rzqXL.js} +1 -1
- package/build/assets/{entry.client-BO2KQj0y.js → entry.client-BbIYOsIg.js} +2 -2
- package/build/assets/{enum-filter-dropdown-DSqPZnsD.js → enum-filter-dropdown-C08-srev.js} +1 -1
- package/build/assets/{environment-switch-overlay-mGl2pqqx.js → environment-switch-overlay-BepBBX66.js} +1 -1
- package/build/assets/{extensions-hub-Br3Lgynp.js → extensions-hub-R3KNv-5V.js} +1 -1
- package/build/assets/{extensions-navigation-BQmstKDZ.js → extensions-navigation-CfWFmI1I.js} +1 -1
- package/build/assets/{external-link-D9B2QMPf.js → external-link-BdBSg8rk.js} +1 -1
- package/build/assets/files-tab-DEq8MbHu.js +1 -0
- package/build/assets/{form-control-classes-CtVAktAy.js → form-control-classes-DAfsCJTe.js} +1 -1
- package/build/assets/{format-time-delta-DICE64sz.js → format-time-delta-CxfPJpzC.js} +1 -1
- package/build/assets/git-provider-icon-BZqqUPlm.js +1 -0
- package/build/assets/git-repo-dropdown-9WKINV6J.js +1 -0
- package/build/assets/git-repo-dropdown-DEpOwUez.js +1 -0
- package/build/assets/{highlighted-source-view-KMsA9c4a.js → highlighted-source-view-CX9oIoVT.js} +1 -1
- package/build/assets/home-CY0JaxiY.js +1 -0
- package/build/assets/home-CaNWlVvB.js +1 -0
- package/build/assets/home-store-Ch1ErdBc.js +1 -0
- package/build/assets/index-home-CaNWlVvB.js +1 -0
- package/build/assets/info-CmWQXtRQ.js +1 -0
- package/build/assets/install-server-modal-BWrudmZU.js +1 -0
- package/build/assets/{launch-DjkKw55l.js → launch-B1POpHuP.js} +1 -1
- package/build/assets/{list-todo-BpAf7aOT.js → list-todo-DtiL3lTp.js} +1 -1
- package/build/assets/llm-not-configured-banner-3tMsM4K6.js +27 -0
- package/build/assets/{llm-settings-D8zNkIlP.js → llm-settings-CXo8iPNW.js} +1 -1
- package/build/assets/llm-settings-D0W8mJDk.js +1 -0
- package/build/assets/{llm-subscription-service-COTgZc1C.js → llm-subscription-service-DBJbfd8Z.js} +1 -1
- package/build/assets/loader-circle-B4QDBARx.js +1 -0
- package/build/assets/{loading-spinner-DRFyh6Iy.js → loading-spinner-DfZ_bhV7.js} +1 -1
- package/build/assets/{manage-backends-modal-DiRWE3tJ.js → manage-backends-modal-CwyWsiag.js} +1 -1
- package/build/assets/manifest-39f4789d.js +1 -0
- package/build/assets/markdown-renderer-DgiLLhW6.js +8 -0
- package/build/assets/mcp-DXG9LWrI.js +9 -0
- package/build/assets/mcp-marketplace-utils-DFmhKc5s.js +1 -0
- package/build/assets/messages-kBjKaAeA.js +40 -0
- package/build/assets/{modal-body-C3bGicn4.js → modal-body-CMsDpalT.js} +1 -1
- package/build/assets/{modal-classes-DFFO6BMU.js → modal-classes-B6PDrxXo.js} +1 -1
- package/build/assets/{modal-close-button-vxkAIRyZ.js → modal-close-button-DyxBZaAb.js} +1 -1
- package/build/assets/{onboarding-DWuFieEA.js → onboarding-47hh2IHA.js} +1 -1
- package/build/assets/{onboarding-modal-C8m72Dpb.js → onboarding-modal-9BuvvROo.js} +1 -1
- package/build/assets/{organization-service.api-CQ73CB-S.js → organization-service.api-UDy63-oC.js} +1 -1
- package/build/assets/{pencil-DzW2GB2M.js → pencil-BjgtZmWp.js} +1 -1
- package/build/assets/{planner-tab-YG0bGxDY.js → planner-tab-BWk8885v.js} +1 -1
- package/build/assets/{plugins-management-service-ijhH8OSh.js → plugins-management-service-CjkgF2dd.js} +1 -1
- package/build/assets/plus-DrKuuvMe.js +1 -0
- package/build/assets/{profiles-service.api-C32pPm70.js → profiles-service.api-CukSFLzz.js} +1 -1
- package/build/assets/{providers-DuSn9s2i.js → providers-CqUWC85T.js} +1 -1
- package/build/assets/{proxy-BiyDhMBd.js → proxy-BBUG3sd2.js} +1 -1
- package/build/assets/{puzzle-DlqT0yvr.js → puzzle-BoNc6zZ8.js} +1 -1
- package/build/assets/recommended-automations-launcher-ejxy1P27.js +1 -0
- package/build/assets/{refresh-cw-Br5254f4.js → refresh-cw-BrM5ZAZD.js} +1 -1
- package/build/assets/root-5S-M8SYa.js +2 -0
- package/build/assets/root-DZ39lS5f.css +1 -0
- package/build/assets/root-layout-BPqoa0gv.js +3 -0
- package/build/assets/{schema-field-htfNouTG.js → schema-field-nImDoY6-.js} +1 -1
- package/build/assets/{sdk-section-page-D0K1dBQY.js → sdk-section-page-BxMrtUNV.js} +1 -1
- package/build/assets/search-Dc2qR4O2.js +1 -0
- package/build/assets/{secrets-service-Dbv5Zb8G.js → secrets-service-Dhjh3HhH.js} +1 -1
- package/build/assets/{secrets-settings-Da4SSaX9.js → secrets-settings-CPdxceT_.js} +1 -1
- package/build/assets/segmented-toggle-Do6oyepX.js +1 -0
- package/build/assets/{settings-F4a09IxY.js → settings-BRbnfKEm.js} +1 -1
- package/build/assets/{settings-dropdown-input-jOiv5Yrk.js → settings-dropdown-input-DYCULKpp.js} +1 -1
- package/build/assets/{settings-index-CyJBf5NA.js → settings-index-C9o2NBO0.js} +1 -1
- package/build/assets/settings-input-B-q2gkVy.js +1 -0
- package/build/assets/{settings-list-classes-VqMzkYYt.js → settings-list-classes-WpQi0q1L.js} +1 -1
- package/build/assets/{settings-modal-C-S1NpbC.js → settings-modal-CEK0AIx6.js} +1 -1
- package/build/assets/{settings-service.api-CTJRrvMu.js → settings-service.api-CZiPD8__.js} +1 -1
- package/build/assets/{settings-switch-B405oU_v.js → settings-switch-LqKdGxHL.js} +1 -1
- package/build/assets/shared-conversation-Bu-dQlgp.js +1 -0
- package/build/assets/{sidebar-layout-BGMuyC86.js → sidebar-layout-oHBGQmLh.js} +1 -1
- package/build/assets/{sidebar-mobile-menu-toggle-xiKoUfGa.js → sidebar-mobile-menu-toggle-ND-hgygu.js} +1 -1
- package/build/assets/{sidebar-nav-link-DA4_ct9G.js → sidebar-nav-link-CrujNA09.js} +1 -1
- package/build/assets/{sidebar-store-FRJ3rADB.js → sidebar-store-Bui-WNEr.js} +1 -1
- package/build/assets/{skill-card-pill-row-BMdhr_sd.js → skill-card-pill-row-CZBI7OqH.js} +1 -1
- package/build/assets/{skill-icon-badge-CGUkgcVH.js → skill-icon-badge-BOov_phZ.js} +1 -1
- package/build/assets/{skills-plugins-C5eJnyft.js → skills-plugins-D0PiHWAD.js} +1 -1
- package/build/assets/{skills-settings-pUxMr6WZ.js → skills-settings-B43KArIz.js} +2 -2
- package/build/assets/{styled-tooltip-B3kIdVyH.js → styled-tooltip-C7grwnOX.js} +1 -1
- package/build/assets/{task-list-tab-B3k4W1cK.js → task-list-tab-R3ac6m7O.js} +1 -1
- package/build/assets/{terminal-CBI_41Zc.js → terminal-yqkNdEAx.js} +1 -1
- package/build/assets/{toggle-switch-DYRr9CAR.js → toggle-switch-BeSrbgCg.js} +1 -1
- package/build/assets/{trash-2-gZPlx23R.js → trash-2-wW5TWcdN.js} +1 -1
- package/build/assets/{typography-B1UxuuEC.js → typography-iYhzLlHO.js} +1 -1
- package/build/assets/{use-acp-credential-form-CjSvKWFH.js → use-acp-credential-form-DUxbxmbq.js} +1 -1
- package/build/assets/{use-activate-agent-profile-DCRf47e-.js → use-activate-agent-profile-CDHA52tC.js} +1 -1
- package/build/assets/use-agent-profiles-TsOdIyw5.js +1 -0
- package/build/assets/{use-can-manage-org-profiles-vBiP7rHF.js → use-can-manage-org-profiles-Bt1M71u5.js} +1 -1
- package/build/assets/{use-cloud-current-user-id-BMq9gw93.js → use-cloud-current-user-id-DWt7HCgf.js} +1 -1
- package/build/assets/use-config-CxlEdf_v.js +1 -0
- package/build/assets/{use-create-conversation-CakhLF0X.js → use-create-conversation-nOJ6Um5h.js} +1 -1
- package/build/assets/{use-create-secret-RT4QtSS9.js → use-create-secret-Dj5ang9x.js} +1 -1
- package/build/assets/use-is-authed-BT7Iud4U.js +1 -0
- package/build/assets/{use-is-creating-conversation-CIAcnd8M.js → use-is-creating-conversation-CAggrM75.js} +1 -1
- package/build/assets/use-llm-profiles-2Wc2db8u.js +1 -0
- package/build/assets/{use-onboarding-completion-CJU4MNAY.js → use-onboarding-completion-gxQlcEy2.js} +1 -1
- package/build/assets/{use-plugins-marketplace-D-93nqtJ.js → use-plugins-marketplace-CVO7sXYR.js} +1 -1
- package/build/assets/use-save-agent-profile-D0wC5ExW.js +1 -0
- package/build/assets/{use-save-settings--C6LZXfI.js → use-save-settings-L3aMaDeS.js} +1 -1
- package/build/assets/{use-settings-DIAo5KFk.js → use-settings-8nt3DGxW.js} +1 -1
- package/build/assets/use-settings-nav-items-DHAAD-zk.js +16 -0
- package/build/assets/{use-skills-D_mLhYNa.js → use-skills-CE6miQ3r.js} +1 -1
- package/build/assets/use-tracking-BGboadaZ.js +68 -0
- package/build/assets/{use-user-conversation-DhcAEyJX.js → use-user-conversation-BIIpGUgM.js} +1 -1
- package/build/assets/useInfiniteQuery-BLRVmVPU.js +1 -0
- package/build/assets/{useMutation-DHLpZ6J0.js → useMutation-CaSHLnX0.js} +1 -1
- package/build/assets/{useQueries-B3T1a7qt.js → useQueries--d_WWAzc.js} +1 -1
- package/build/assets/{useQuery-B38jBavx.js → useQuery-DiPh8LRJ.js} +1 -1
- package/build/assets/utils-BgGG1znF.js +1 -0
- package/build/assets/{vendor~browser-CIoZCqGs.js → vendor~browser-IVYgIgG1.js} +1 -1
- package/build/assets/{vendor~entry.client-Di4qO77Y.js → vendor~entry.client-BcYIVQvB.js} +1 -1
- package/build/assets/{vendor~entry.client-BfviqoVc.js → vendor~entry.client-CXM9oiAk.js} +1 -1
- package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g4xrpilz-CYPMCkX1.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~b0bpqexo-CbTboogo.js} +1 -1
- package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~f9xdmd0z-DLMP7bZx.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~d4by102p-C2f0ZhS-.js} +1 -1
- package/build/assets/{vendor~files-tab-atebg0iG.js → vendor~files-tab-C7RmQJwN.js} +1 -1
- package/build/assets/{vendor~index-home~home~conversation-panel~conversation-G9DMrR7m.js → vendor~index-home~home~conversation-panel~conversation-Bqp1ZqJM.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation-DEhW1h3I.js → vendor~root-layout~conversation-panel~conversation-BCn8lzeG.js} +1 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~automation-setup-route-B_L-gcOG.js +1 -0
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-sjx0x5ac.js +1 -0
- package/build/assets/vendor~root-layout~index-home~home~mcp~automations-list~automation-setup-route~onboarding-modal-D7IDevqN.js +1 -0
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~bi2r7bko-VFnwct3q.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~dfc8ddxy-tTyxnjXT.js} +1 -1
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hakxo2tj-ClV0p9g3.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gy8zbn65-CGt6bWRT.js} +1 -1
- package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation~launch~skills-settings~a~eywn6ulz-BKxxr74w.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~dufan6ng-Dtdw8H0q.js} +17 -4
- package/build/assets/{verification-settings-Vr5cN4md.js → verification-settings-DBsnSXC3.js} +1 -1
- package/build/assets/x-omAzpXkl.js +1 -0
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +37 -2
- package/build/locales/ca/openhands.json +37 -2
- package/build/locales/de/openhands.json +37 -2
- package/build/locales/en/openhands.json +38 -3
- package/build/locales/es/openhands.json +37 -2
- package/build/locales/fr/openhands.json +37 -2
- package/build/locales/it/openhands.json +37 -2
- package/build/locales/ja/openhands.json +37 -2
- package/build/locales/ko-KR/openhands.json +37 -2
- package/build/locales/no/openhands.json +37 -2
- package/build/locales/pt/openhands.json +37 -2
- package/build/locales/tr/openhands.json +37 -2
- package/build/locales/uk/openhands.json +37 -2
- package/build/locales/zh-CN/openhands.json +37 -2
- package/build/locales/zh-TW/openhands.json +37 -2
- package/config/defaults.json +1 -1
- package/dist/api/agent-server-adapter.cjs +3 -3
- package/dist/api/agent-server-adapter.cjs.map +1 -1
- package/dist/api/agent-server-adapter.d.ts +46 -6
- package/dist/api/agent-server-adapter.js +187 -168
- package/dist/api/agent-server-adapter.js.map +1 -1
- package/dist/api/agent-server-compatibility.cjs +1 -1
- package/dist/api/agent-server-compatibility.cjs.map +1 -1
- package/dist/api/agent-server-compatibility.d.ts +4 -0
- package/dist/api/agent-server-compatibility.js +41 -38
- package/dist/api/agent-server-compatibility.js.map +1 -1
- package/dist/api/automation-service/automation-service.api.cjs +1 -1
- package/dist/api/automation-service/automation-service.api.cjs.map +1 -1
- package/dist/api/automation-service/automation-service.api.d.ts +20 -0
- package/dist/api/automation-service/automation-service.api.js +99 -62
- package/dist/api/automation-service/automation-service.api.js.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-action-event-title.cjs +2 -0
- package/dist/components/conversation-events/chat/event-content-helpers/get-action-event-title.cjs.map +1 -0
- package/dist/components/conversation-events/chat/event-content-helpers/get-action-event-title.d.ts +12 -0
- package/dist/components/conversation-events/chat/event-content-helpers/get-action-event-title.js +94 -0
- package/dist/components/conversation-events/chat/event-content-helpers/get-action-event-title.js.map +1 -0
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.cjs +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.js +31 -90
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.js.map +1 -1
- package/dist/components/features/automations/recommended-automations-launcher.d.ts +0 -7
- package/dist/components/features/automations/recommended-automations-section.d.ts +0 -6
- package/dist/components/features/backends/backend-form-modal.cjs +1 -1
- package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
- package/dist/components/features/backends/backend-form-modal.js +568 -358
- package/dist/components/features/backends/backend-form-modal.js.map +1 -1
- package/dist/components/features/backends/device-flow-auth.cjs +1 -1
- package/dist/components/features/backends/device-flow-auth.cjs.map +1 -1
- package/dist/components/features/backends/device-flow-auth.d.ts +9 -1
- package/dist/components/features/backends/device-flow-auth.js +56 -55
- package/dist/components/features/backends/device-flow-auth.js.map +1 -1
- package/dist/components/features/backends/manage-backends-modal.cjs +1 -1
- package/dist/components/features/backends/manage-backends-modal.cjs.map +1 -1
- package/dist/components/features/backends/manage-backends-modal.js +1 -1
- package/dist/components/features/backends/manage-backends-modal.js.map +1 -1
- package/dist/components/features/chat/chat-interface.cjs +1 -1
- package/dist/components/features/chat/chat-interface.cjs.map +1 -1
- package/dist/components/features/chat/chat-interface.js +105 -105
- package/dist/components/features/chat/chat-interface.js.map +1 -1
- package/dist/components/features/chat/chat-message.cjs +1 -1
- package/dist/components/features/chat/chat-message.cjs.map +1 -1
- package/dist/components/features/chat/chat-message.d.ts +2 -1
- package/dist/components/features/chat/chat-message.js +59 -49
- package/dist/components/features/chat/chat-message.js.map +1 -1
- package/dist/components/features/chat/pending-user-messages.cjs +1 -1
- package/dist/components/features/chat/pending-user-messages.cjs.map +1 -1
- package/dist/components/features/chat/pending-user-messages.js +4 -1
- package/dist/components/features/chat/pending-user-messages.js.map +1 -1
- package/dist/components/features/chat/typing-indicator.cjs +1 -1
- package/dist/components/features/chat/typing-indicator.cjs.map +1 -1
- package/dist/components/features/chat/typing-indicator.d.ts +8 -1
- package/dist/components/features/chat/typing-indicator.js +94 -10
- package/dist/components/features/chat/typing-indicator.js.map +1 -1
- package/dist/components/features/command-menu/command-menu-items.d.ts +5 -1
- package/dist/components/features/files-tab/segmented-toggle.cjs +1 -1
- package/dist/components/features/files-tab/segmented-toggle.cjs.map +1 -1
- package/dist/components/features/files-tab/segmented-toggle.d.ts +2 -0
- package/dist/components/features/files-tab/segmented-toggle.js +17 -14
- package/dist/components/features/files-tab/segmented-toggle.js.map +1 -1
- package/dist/components/features/manifest/manifest-form-field.d.ts +27 -0
- package/dist/components/features/manifest/manifest-prerequisites-step.d.ts +11 -0
- package/dist/components/features/manifest/manifest-review-step.d.ts +14 -0
- package/dist/components/features/manifest/manifest-setup-dialog.d.ts +14 -0
- package/dist/components/features/settings/settings-input.cjs +1 -1
- package/dist/components/features/settings/settings-input.cjs.map +1 -1
- package/dist/components/features/settings/settings-input.d.ts +6 -0
- package/dist/components/features/settings/settings-input.js +13 -8
- package/dist/components/features/settings/settings-input.js.map +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.cjs +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.js +124 -123
- package/dist/components/features/sidebar/sidebar-rail-body.js.map +1 -1
- package/dist/config/defaults.cjs +1 -1
- package/dist/config/defaults.cjs.map +1 -1
- package/dist/config/defaults.js +1 -1
- package/dist/config/defaults.js.map +1 -1
- package/dist/hooks/query/query-keys.cjs.map +1 -1
- package/dist/hooks/query/query-keys.d.ts +4 -0
- package/dist/hooks/query/query-keys.js.map +1 -1
- package/dist/hooks/query/use-manifest-capabilities.d.ts +21 -0
- package/dist/hooks/query/use-manifest-prerequisites.d.ts +24 -0
- package/dist/hooks/use-llm-configured.cjs +1 -1
- package/dist/hooks/use-llm-configured.cjs.map +1 -1
- package/dist/hooks/use-llm-configured.js +2 -1
- package/dist/hooks/use-llm-configured.js.map +1 -1
- package/dist/hooks/use-manifest-preflight.d.ts +18 -0
- package/dist/hooks/use-tracking.cjs +1 -1
- package/dist/hooks/use-tracking.cjs.map +1 -1
- package/dist/hooks/use-tracking.d.ts +14 -0
- package/dist/hooks/use-tracking.js +19 -1
- package/dist/hooks/use-tracking.js.map +1 -1
- package/dist/i18n/declaration.cjs +1 -1
- package/dist/i18n/declaration.cjs.map +1 -1
- package/dist/i18n/declaration.d.ts +36 -1
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +2 -2
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +611 -16
- package/dist/i18n/translation.js.map +1 -1
- package/dist/icons/external-link.cjs +2 -0
- package/dist/icons/external-link.cjs.map +1 -0
- package/dist/icons/external-link.js +22 -0
- package/dist/icons/external-link.js.map +1 -0
- package/dist/icons/server.cjs +2 -0
- package/dist/icons/server.cjs.map +1 -0
- package/dist/icons/server.js +17 -0
- package/dist/icons/server.js.map +1 -0
- package/dist/locales/ar/openhands.json +37 -2
- package/dist/locales/ca/openhands.json +37 -2
- package/dist/locales/de/openhands.json +37 -2
- package/dist/locales/en/openhands.json +38 -3
- package/dist/locales/es/openhands.json +37 -2
- package/dist/locales/fr/openhands.json +37 -2
- package/dist/locales/it/openhands.json +37 -2
- package/dist/locales/ja/openhands.json +37 -2
- package/dist/locales/ko-KR/openhands.json +37 -2
- package/dist/locales/no/openhands.json +37 -2
- package/dist/locales/pt/openhands.json +37 -2
- package/dist/locales/tr/openhands.json +37 -2
- package/dist/locales/uk/openhands.json +37 -2
- package/dist/locales/zh-CN/openhands.json +37 -2
- package/dist/locales/zh-TW/openhands.json +37 -2
- package/dist/manifests/automation-interface.cjs +2 -0
- package/dist/manifests/automation-interface.cjs.map +1 -0
- package/dist/manifests/automation-interface.d.ts +44 -0
- package/dist/manifests/automation-interface.js +81 -0
- package/dist/manifests/automation-interface.js.map +1 -0
- package/dist/manifests/automation-setup.cjs +2 -0
- package/dist/manifests/automation-setup.cjs.map +1 -0
- package/dist/manifests/automation-setup.d.ts +52 -0
- package/dist/manifests/automation-setup.js +8 -0
- package/dist/manifests/automation-setup.js.map +1 -0
- package/dist/manifests/interface-validation.cjs +2 -0
- package/dist/manifests/interface-validation.cjs.map +1 -0
- package/dist/manifests/interface-validation.d.ts +27 -0
- package/dist/manifests/interface-validation.js +182 -0
- package/dist/manifests/interface-validation.js.map +1 -0
- package/dist/manifests/manifest-actions.d.ts +15 -0
- package/dist/manifests/manifest-capabilities.d.ts +25 -0
- package/dist/manifests/manifest-error-map.d.ts +40 -0
- package/dist/manifests/manifest-local-validation.d.ts +56 -0
- package/dist/manifests/manifest-registry.cjs +2 -0
- package/dist/manifests/manifest-registry.cjs.map +1 -0
- package/dist/manifests/manifest-registry.d.ts +15 -0
- package/dist/manifests/manifest-registry.js +26 -0
- package/dist/manifests/manifest-registry.js.map +1 -0
- package/dist/manifests/manifest-sources.cjs +2 -0
- package/dist/manifests/manifest-sources.cjs.map +1 -0
- package/dist/manifests/manifest-sources.d.ts +15 -0
- package/dist/manifests/manifest-sources.js +8 -0
- package/dist/manifests/manifest-sources.js.map +1 -0
- package/dist/manifests/manifest-template.d.ts +18 -0
- package/dist/manifests/manifest-validation.cjs +2 -0
- package/dist/manifests/manifest-validation.cjs.map +1 -0
- package/dist/manifests/manifest-validation.d.ts +30 -0
- package/dist/manifests/manifest-validation.js +145 -0
- package/dist/manifests/manifest-validation.js.map +1 -0
- package/dist/manifests/types.cjs +2 -0
- package/dist/manifests/types.cjs.map +1 -0
- package/dist/manifests/types.d.ts +227 -0
- package/dist/manifests/types.js +6 -0
- package/dist/manifests/types.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js +75 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.js +78 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/incident-retrospective-drafter/manifest.cjs +17 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/incident-retrospective-drafter/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/incident-retrospective-drafter/manifest.js +89 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/incident-retrospective-drafter/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-pr/manifest.cjs +10 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-pr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-pr/manifest.js +17 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-pr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-triage-assistant/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-triage-assistant/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-triage-assistant/manifest.js +15 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-triage-assistant/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/research-brief-writer/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/research-brief-writer/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/research-brief-writer/manifest.js +18 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/research-brief-writer/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/slack-channel-monitor/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/slack-channel-monitor/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/slack-channel-monitor/manifest.js +14 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/slack-channel-monitor/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/slack-standup-digest/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/slack-standup-digest/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/slack-standup-digest/manifest.js +14 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/slack-standup-digest/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs +2 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js +23 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/index.cjs +2 -0
- package/dist/node_modules/@openhands/extensions/automations/index.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/index.js +18 -0
- package/dist/node_modules/@openhands/extensions/automations/index.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/interface.cjs +2 -0
- package/dist/node_modules/@openhands/extensions/automations/interface.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/interface.js +89 -0
- package/dist/node_modules/@openhands/extensions/automations/interface.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js +3 -3
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.cjs +17 -4
- package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.js +5 -5
- package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/monitor.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/monitor.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/monitor.js +29 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/monitor.js.map +1 -0
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +2 -2
- package/dist/package.js.map +1 -1
- package/dist/types/agent-server/core/events/conversation-state-event.d.ts +2 -19
- package/dist/types/agent-server/core/events/observation-event.d.ts +2 -18
- package/dist/types/automation.d.ts +7 -3
- package/dist/utils/api-error-message.d.ts +6 -2
- package/dist/utils/automation-catalog.cjs +2 -0
- package/dist/utils/automation-catalog.cjs.map +1 -0
- package/dist/utils/automation-catalog.d.ts +28 -0
- package/dist/utils/automation-catalog.js +5 -0
- package/dist/utils/automation-catalog.js.map +1 -0
- package/dist/utils/automation-timeout.d.ts +3 -2
- package/dist/utils/responder-deployment.d.ts +5 -1
- package/dist/utils/transcript-export/index.cjs +5 -5
- package/dist/utils/transcript-export/index.js +12 -12
- package/package.json +2 -2
- package/scripts/check-translation-completeness.cjs +1 -0
- package/scripts/dev-safe.mjs +15 -10
- package/scripts/dev-static.mjs +17 -0
- package/scripts/dev-with-automation.mjs +12 -14
- package/scripts/ingress.mjs +22 -0
- package/scripts/proxy-utils.mjs +157 -2
- package/scripts/runtime-services-info.mjs +6 -6
- package/scripts/static-build.mjs +0 -7
- package/scripts/static-server.mjs +10 -0
- package/build/assets/active-backend-context-mY7Gff5c.js +0 -2
- package/build/assets/agent-context-settings-BTUmWEzL.js +0 -1
- package/build/assets/agent-profiles-settings-Ilqid_R5.js +0 -1
- package/build/assets/agent-server-conversation-service.api-C_7YnjzP.js +0 -41
- package/build/assets/agent-settings-CxfT4ksO.js +0 -1
- package/build/assets/automation-BGP_I1RR.js +0 -1
- package/build/assets/automation-detail-nEflClmc.js +0 -2
- package/build/assets/automation-export-BO_kfqC8.js +0 -2
- package/build/assets/automations-list-BYncC7gv.js +0 -1
- package/build/assets/backend-form-modal-CKrBF80P.js +0 -1
- package/build/assets/browser-3QjrEr1D.js +0 -6
- package/build/assets/check-CrxQfJZ2.js +0 -1
- package/build/assets/chevron-down-D_LsyTA7.js +0 -1
- package/build/assets/circle-check-DZn9HkLE.js +0 -1
- package/build/assets/cloud-funnel-analytics-NlmDoeo2.js +0 -1
- package/build/assets/command-menu-CvLPs7dg.js +0 -1
- package/build/assets/condenser-settings-C4Y9CzQV.js +0 -1
- package/build/assets/conversation-D_ORtpKC.js +0 -1
- package/build/assets/conversation-Dpc5nmGi.js +0 -90
- package/build/assets/conversation-panel-D_ORtpKC.js +0 -1
- package/build/assets/conversation-state-store-CGRQemtx.js +0 -1
- package/build/assets/files-tab-4c9HFSLo.js +0 -1
- package/build/assets/git-provider-icon-0PqmIS_S.js +0 -1
- package/build/assets/home-D9JsyEmE.js +0 -1
- package/build/assets/home-TFhnmZLx.js +0 -1
- package/build/assets/index-home-D9JsyEmE.js +0 -1
- package/build/assets/install-server-modal-BgGRnqA0.js +0 -1
- package/build/assets/llm-not-configured-banner-Y4W9-sar.js +0 -27
- package/build/assets/llm-settings-nPwv7hKu.js +0 -1
- package/build/assets/loader-circle-CGD6-Vak.js +0 -1
- package/build/assets/manifest-1cf33a7b.js +0 -1
- package/build/assets/markdown-renderer-U40HF0Ak.js +0 -8
- package/build/assets/mcp-xDMaHzOw.js +0 -9
- package/build/assets/messages-CdNfZPgd.js +0 -40
- package/build/assets/plus-CTGLo3aa.js +0 -1
- package/build/assets/recommended-automations-launcher-Dru1yN46.js +0 -58
- package/build/assets/root-B5JXKp1P.css +0 -1
- package/build/assets/root-DOLLQteU.js +0 -2
- package/build/assets/root-layout-xmylWoew.js +0 -3
- package/build/assets/search-BrpWXWUi.js +0 -1
- package/build/assets/segmented-toggle-CZKOdIly.js +0 -1
- package/build/assets/settings-input-BEaTCem1.js +0 -1
- package/build/assets/shared-conversation-BvWtTwES.js +0 -1
- package/build/assets/use-agent-profiles-DmT9zxAN.js +0 -1
- package/build/assets/use-config-C959QcRC.js +0 -1
- package/build/assets/use-is-authed-BsS4XwSL.js +0 -1
- package/build/assets/use-llm-profiles-CdaxVpyY.js +0 -1
- package/build/assets/use-save-agent-profile-DGJ3-u0M.js +0 -1
- package/build/assets/use-settings-nav-items-DPK5sxvR.js +0 -16
- package/build/assets/use-tracking-COqZLobY.js +0 -1
- package/build/assets/utils-DsWhWn2F.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation-Acmf1sKj.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-CmzCY1BT.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~mcp~automations-list~onboarding-modal-C7Yh77RT.js +0 -1
- package/build/assets/x-Dx_JbpHA.js +0 -1
- /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~f1hl7voa-BrmgjeOw.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~emdr2jt4-BrmgjeOw.js} +0 -0
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{M as t,N as n,St as r,j as i,yt as a}from"./vendor-styling-Bcgpimp9.js";import{n as o}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~f1hl7voa-BrmgjeOw.js";import{t as s}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hakxo2tj-ClV0p9g3.js";import{l as c}from"./vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-CmzCY1BT.js";import{E as l}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g4xrpilz-CYPMCkX1.js";import{t as u}from"./useMutation-DHLpZ6J0.js";import{t as d}from"./Trans-B7lYw4uD.js";import{Bt as f,Dt as p,n as m}from"./active-backend-context-mY7Gff5c.js";import{P as h,T as g,t as _,w as v,z as y}from"./utils-DsWhWn2F.js";import{t as b}from"./chevron-down-D_LsyTA7.js";import{t as ee}from"./loader-circle-CGD6-Vak.js";import{t as te}from"./use-config-C959QcRC.js";import{n as ne}from"./use-settings-DIAo5KFk.js";import{n as re,o as x}from"./form-control-classes-CtVAktAy.js";import{n as S}from"./navigation-context-BOGzIng3.js";import{ot as C,st as ie}from"./vendor-markdown-BML7QbqS.js";import{t as ae}from"./styled-tooltip-B3kIdVyH.js";import{c as oe,f as se,t as w}from"./conversation-store-C6hSXHw0.js";import{r as ce,t as le}from"./agent-server-conversation-service.api-C_7YnjzP.js";import{a as ue,d as de,h as fe,i as pe,p as me}from"./conversation-state-store-CGRQemtx.js";import{n as he}from"./vendor~root-layout~conversation-panel~conversation~shared-conversation-DRblkyXD.js";import{t as ge}from"./skills-CYFLsN5U.js";import{t as _e}from"./close-CDAVqnTn.js";import{t as ve}from"./copy-to-clipboard-button-NbN1clVr.js";import{r as T}from"./typography-B1UxuuEC.js";import{t as ye}from"./u-check-circle-DBEvndTS.js";import{D as be,E as xe,F as Se,G as Ce,H as we,J as E,K as Te,L as D,M as Ee,O,P as De,R as Oe,T as ke,a as Ae,g as je,j as Me,k as Ne,m as Pe,n as Fe,p as Ie,q as Le,r as Re,t as k,w as ze,x as Be,y as Ve,z as He}from"./markdown-renderer-U40HF0Ak.js";import{t as Ue}from"./syntax-highlighter-B92AFGMy.js";var We=l(`arrow-up-right`,[[`path`,{d:`M7 7h10v10`,key:`1tivn9`}],[`path`,{d:`M7 17 17 7`,key:`1vkiza`}]]),A=e(r(),1);function Ge(){!t.current&&i();let[e]=(0,A.useState)(n.current);return e}var j=a(),Ke=function(e){return e.INIT=`initialize`,e.MESSAGE=`message`,e.SYSTEM=`system`,e.READ=`read`,e.WRITE=`write`,e.RUN=`run`,e.RUN_IPYTHON=`run_ipython`,e.BROWSE=`browse`,e.BROWSE_INTERACTIVE=`browse_interactive`,e.DELEGATE=`delegate`,e.THINK=`think`,e.FINISH=`finish`,e.REJECT=`reject`,e.CHANGE_AGENT_STATE=`change_agent_state`,e.MCP=`call_tool_mcp`,e.TASK_TRACKING=`task_tracking`,e}(Ke||{});function qe(){let{conversationId:e}=E(),t=Ae();return{send:(0,A.useCallback)(async e=>{if(t){let{action:n,args:r}=e;if(n===`message`&&r?.content){let e=[{type:`text`,text:r.content}];return r.image_urls&&r.image_urls.length>0&&e.push({type:`image`,image_urls:r.image_urls}),await t.sendMessage({role:`user`,content:e})}return{queued:!1}}return{queued:!1}},[t,e])}}function Je(e,t,n,r){return{action:Ke.MESSAGE,args:{content:e,image_urls:t,file_urls:n,timestamp:r}}}var M=e=>(0,j.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 448 512`,...e,children:(0,j.jsx)(`path`,{d:`M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z`})}),N=e=>(0,j.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 448 512`,...e,children:(0,j.jsx)(`path`,{d:`M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z`})});function Ye({status:e}){return(0,j.jsx)(`span`,{className:`flex-shrink-0`,children:e===`timeout`&&(0,j.jsx)(he,{"data-testid":`status-icon`,className:`h-4 w-4 ml-2 inline fill-yellow-500`})})}function P({title:e,details:t,success:n,initiallyExpanded:r=!1,chevronPosition:i=`after`,titleTrailing:a,titleIcon:o}){let{t:c}=s(`openhands`),[l,u]=A.useState(r),d=t?(0,j.jsx)(`button`,{type:`button`,onClick:()=>u(e=>!e),className:`cursor-pointer text-left`,"aria-label":c(l?y.BUTTON$COLLAPSE:y.BUTTON$EXPAND),children:l?(0,j.jsx)(N,{className:_(`h-4 w-4 inline fill-[var(--oh-muted)]`,i===`after`?`ml-2`:`mr-2`)}):(0,j.jsx)(M,{className:_(`h-4 w-4 inline fill-[var(--oh-muted)]`,i===`after`?`ml-2`:`mr-2`)})}):null;return(0,j.jsxs)(`div`,{className:`flex flex-col gap-1.5 my-1 py-1 text-sm w-full`,children:[(0,j.jsxs)(`div`,{className:`flex items-center justify-between font-normal text-[var(--oh-muted)]`,children:[(0,j.jsxs)(`div`,{className:`flex items-center`,children:[i===`before`&&d,o,(0,j.jsx)(`span`,{children:e}),i===`after`&&d]}),(0,j.jsxs)(`div`,{className:`flex items-center`,children:[a,n&&(0,j.jsx)(Ye,{status:n})]})]}),l&&(typeof t==`string`?(0,j.jsx)(k,{children:t}):t)]})}var Xe=e=>(0,j.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 512 512`,...e,children:(0,j.jsx)(`path`,{d:`M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z`})}),Ze=e=>(0,j.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 512 512`,...e,children:(0,j.jsx)(`path`,{d:`M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z`})}),Qe={running:y.GOAL$STATUS_RUNNING,complete:y.GOAL$STATUS_COMPLETE,capped:y.GOAL$STATUS_CAPPED,interrupted:y.GOAL$STATUS_INTERRUPTED};function $e({status:e}){let{t}=s(`openhands`),{conversationId:n}=E(),r=je(e=>n?!!e.statusByConversation[n]?.active:!1),[i,a]=(0,A.useState)(!1),{active:o,objective:c,iteration:l,max_iterations:u,verdict:d}=e,f=d?Math.round(d.score*100):null,m=d?.missing?t(y.GOAL$MISSING,{missing:d.missing}):``,h=async(e,r)=>{if(!(!n||i)){a(!0);try{await e(n)}catch(e){p(e instanceof Error&&e.message?e.message:t(r))}finally{a(!1)}}},g=()=>h(async e=>{await fe(e),await de(e)},y.GOAL$STOP_FAILED),v=()=>h(me,y.GOAL$RESUME_FAILED),b=null;return n&&o?b=(0,j.jsx)(`button`,{type:`button`,"data-testid":`goal-stop`,disabled:i,onClick:g,className:_(re,x),children:t(y.GOAL$STOP)}):n&&e.status===`interrupted`&&!r&&(b=(0,j.jsx)(`button`,{type:`button`,"data-testid":`goal-resume`,disabled:i,onClick:v,className:_(re,x),children:t(y.GOAL$RESUME)})),(0,j.jsx)(`div`,{"data-testid":`goal-status`,className:`flex flex-col w-full`,children:(0,j.jsx)(P,{title:(0,j.jsxs)(`span`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,j.jsx)(`span`,{className:`opacity-60`,children:t(y.GOAL$PREFIX)}),(0,j.jsx)(`span`,{children:c}),(0,j.jsx)(`span`,{className:`opacity-60`,children:t(y.GOAL$ROUND,{iteration:l,max:u})}),(0,j.jsx)(`span`,{children:t(Qe[e.status])}),f!==null&&(0,j.jsx)(`span`,{className:`opacity-60`,children:t(y.GOAL$SCORE,{score:f})}),o?(0,j.jsx)(`span`,{"data-testid":`goal-spinner`,className:`inline-block w-3.5 h-3.5 ml-1 rounded-full border-2 border-transparent border-t-[var(--oh-border-input)] animate-spin`}):e.status===`complete`?(0,j.jsx)(`span`,{"data-testid":`goal-done`,className:`inline-flex ml-1`,children:(0,j.jsx)(Xe,{className:`w-3.5 h-3.5 fill-success`})}):(0,j.jsx)(`span`,{"data-testid":`goal-ended`,className:`inline-flex ml-1`,children:(0,j.jsx)(Ze,{className:`w-3.5 h-3.5 fill-[var(--oh-muted)]`})})]}),titleTrailing:b,details:m,initiallyExpanded:!o,chevronPosition:`before`})})}var et=e=>(0,j.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:12,height:12,viewBox:`0 0 12 12`,fill:`none`,...e,children:[(0,j.jsxs)(`g`,{clipPath:`url(#clip0_17463_15006)`,children:[(0,j.jsx)(`path`,{d:`M6 11C8.76142 11 11 8.76142 11 6C11 3.23858 8.76142 1 6 1C3.23858 1 1 3.23858 1 6C1 8.76142 3.23858 11 6 11Z`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,j.jsx)(`path`,{d:`M6 8V6`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,j.jsx)(`path`,{d:`M6 4H6.00667`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`})]}),(0,j.jsx)(`defs`,{children:(0,j.jsx)(`clipPath`,{id:`clip0_17463_15006`,children:(0,j.jsx)(`rect`,{width:12,height:12,fill:`white`})})})]});function tt({profile:e}){let[t,n]=A.useState(!1);return(0,j.jsxs)(`div`,{className:`border border-neutral-700 rounded-md overflow-hidden`,children:[(0,j.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),"aria-expanded":t,"aria-label":`Toggle details for ${e.name}`,className:`w-full py-1.5 px-2 text-left flex items-center gap-2 hover:bg-neutral-700 transition-colors cursor-pointer`,children:[(0,j.jsx)(`span`,{className:`text-neutral-300`,children:t?(0,j.jsx)(b,{size:14}):(0,j.jsx)(c,{size:14})}),(0,j.jsx)(`span`,{className:`font-normal text-neutral-200 text-sm`,children:e.name})]}),t&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`hr`,{className:`border-neutral-700`}),(0,j.jsx)(`div`,{className:`px-3 py-2 text-xs text-neutral-300 font-mono whitespace-pre-wrap`,children:`model: ${e.model??`—`}\nbase_url: ${e.base_url??`—`}\napi_key: ${e.api_key_set?`set`:`not set`}`})]})]})}function nt({conversationId:e,anchorEventId:t}){let n=Pe(e=>e.entriesByConversation),r=(e?n[e]??[]:[]).filter(e=>e.anchorEventId===t);return!e||r.length===0?null:(0,j.jsx)(`div`,{"data-testid":`model-messages`,className:`flex flex-col w-full`,children:r.map(e=>{if(e.switchedTo)return(0,j.jsx)(P,{title:(0,j.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,j.jsx)(et,{width:14,height:14,className:`shrink-0 text-neutral-400`,"aria-hidden":!0}),(0,j.jsx)(d,{i18nKey:y.MODEL$SWITCHED_TO_PROFILE,values:{name:e.switchedTo},components:{cmd:(0,j.jsx)(`span`,{className:`font-mono text-neutral-200 bg-neutral-800 px-1 rounded`})}})]}),details:``},e.id);let t=e.profiles.length===0;return(0,j.jsx)(P,{title:(0,j.jsx)(`span`,{children:t?(0,j.jsx)(d,{i18nKey:y.MODEL$NO_SAVED_PROFILES}):(0,j.jsx)(d,{i18nKey:y.MODEL$AVAILABLE_PROFILES,values:{count:e.profiles.length}})}),details:t?(0,j.jsx)(`span`,{className:`text-neutral-300 text-sm px-2 py-1 block`,children:(0,j.jsx)(d,{i18nKey:y.MODEL$NO_PROFILES_HINT})}):(0,j.jsx)(`div`,{className:`flex flex-col gap-1 mt-1`,children:e.profiles.map(e=>(0,j.jsx)(tt,{profile:e},e.name))}),initiallyExpanded:t},e.id)})})}function rt(e){let[t,n]=(0,A.useState)(!0),[r,i]=(0,A.useState)(!0),a=(0,A.useRef)(0),o=(0,A.useCallback)(e=>e.scrollTop+e.clientHeight>=e.scrollHeight-20,[]),s=(0,A.useCallback)(e=>{let t=o(e);i(t);let r=e.scrollTop,s=r<a.current;a.current=r,s&&n(!1),t&&n(!0)},[o]);return{scrollRef:e,autoScroll:t,setAutoScroll:n,scrollDomToBottom:(0,A.useCallback)(()=>{let t=e.current;t&&requestAnimationFrame(()=>{n(!0),i(!0),t.scrollTop=t.scrollHeight})},[e]),hitBottom:r,setHitBottom:i,onChatBodyScroll:s}}var F=(0,A.createContext)(void 0);function it({children:e,value:t}){let n=rt(A.useRef(null)),r=t||n;return(0,j.jsx)(F.Provider,{value:r,children:e})}function at(){let e=(0,A.useContext)(F);if(e===void 0)throw Error(`useScrollContext must be used within a ScrollProvider`);return e}function ot(){return(0,A.useContext)(F)}var st=()=>{let{setConversationMode:e}=w(),{send:t}=qe(),{conversationId:n}=E(),r=Ve(e=>e.enqueuePendingMessage),i=Ve(e=>e.markPendingMessageError);return{handleBuildPlanClick:(0,A.useCallback)(a=>{a?.preventDefault(),a?.stopPropagation(),e(`code`);let o=`Execute the plan based on the .agents_tmp/PLAN.md file.`,s=new Date().toISOString(),c=n?r({conversationId:n,text:o,timestamp:s}):null;t(Je(o,[],[],s)).catch(e=>{c&&i(c,e instanceof Error?e.message:`Failed to send message`)})},[e,t,n,r,i])}},ct=`200%`,I=8,lt=I*2;function ut({children:e,as:t=`p`,className:n,duration:r=2,spread:i=2,style:a,...o}){let s=Ge(),c=`oh-text-shimmer-${(0,A.useId)().replace(/:/g,``)}`,l=(0,A.useMemo)(()=>Math.min(I/2-1,1+i/2),[i]),u=(0,A.useMemo)(()=>{let e=I/2;return{...a,backgroundImage:`repeating-linear-gradient(90deg, var(--oh-muted) 0%, var(--oh-muted) ${e-l}%, var(--oh-foreground) ${e}%, var(--oh-muted) ${e+l}%, var(--oh-muted) ${I}%)`,backgroundSize:`${ct} 100%`,backgroundRepeat:`no-repeat`,WebkitBackgroundClip:`text`,backgroundClip:`text`,color:`transparent`,WebkitTextFillColor:`transparent`,animation:`${c} ${r}s linear infinite`}},[c,l,r,a]);return s?(0,j.jsx)(t,{className:_(`text-[var(--oh-muted)]`,n),style:a,...o,children:e}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`@keyframes ${c}{from{background-position:${lt}% center}to{background-position:0% center}}`}}),(0,j.jsx)(t,{className:_(`relative inline-block`,n),style:u,...o,children:e})]})}var dt=A.memo(ut);function ft({className:e}){return(0,j.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":!0,className:e,children:[(0,j.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`,className:`fill-[var(--oh-foreground)] transition-colors duration-150 group-hover:fill-[var(--oh-text-secondary)]`}),(0,j.jsx)(`rect`,{x:`9`,y:`9`,width:`6`,height:`6`,rx:`1`,className:`fill-[var(--oh-color-tertiary)]`})]})}var pt=5,mt=360,ht={p:({children:e})=>(0,j.jsx)(`p`,{className:`m-0 leading-6`,children:e})};function gt({message:e,isHovering:t,isExpanded:n,onTruncatableChange:r}){let{t:i}=s(`openhands`),a=A.useRef(null),[o,c]=A.useState(!1);A.useEffect(()=>{r(o)},[o,r]),A.useLayoutEffect(()=>{let t=a.current;if(!t||n){c(!1);return}let r=()=>{let n=Number.parseFloat(getComputedStyle(t).lineHeight),r=pt*(Number.isFinite(n)&&n>0?n:24),i=(e.match(/\n/g)??[]).length;c(t.scrollHeight>r+1||i>=pt||e.trim().length>mt)};r();let i=new ResizeObserver(r);return i.observe(t),()=>i.disconnect()},[e,n]);let l=o&&!n;return(0,j.jsxs)(`div`,{className:`relative min-w-0`,children:[(0,j.jsx)(`div`,{ref:a,className:_(`text-sm leading-6 whitespace-normal [word-break:break-word]`,l&&`line-clamp-5`),children:(0,j.jsx)(k,{includeStandard:!0,includeHeadings:!0,allowHtml:!1,components:ht,children:e})}),l?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`div`,{"aria-hidden":!0,"data-testid":`chat-message-truncation-gradient`,className:`pointer-events-none absolute inset-x-0 bottom-0 h-10 bg-gradient-to-t from-tertiary to-transparent`}),(0,j.jsx)(`span`,{"data-testid":`chat-message-view-more`,className:_(`pointer-events-none absolute bottom-1 left-1/2 z-10 inline-flex -translate-x-1/2 items-center rounded-full border border-[var(--oh-border-subtle)] bg-[var(--oh-surface-raised)] px-2.5 py-0.5 text-xs font-normal text-[var(--oh-foreground)] transition-opacity duration-150`,t?`opacity-100`:`opacity-0`),children:i(y.COMMON$VIEW_MORE)})]}):null]})}function L({type:e,message:t,children:n,actions:r,isFromPlanningAgent:i=!1,pendingStatus:a,onRetry:o,onStop:c}){let{t:l}=s(`openhands`),[u,d]=A.useState(!1),[f,p]=A.useState(!1),[m,h]=A.useState(!1),[g,v]=A.useState(!1),[b,ee]=A.useState(!0),te=A.useRef(null);A.useEffect(()=>{h(!1)},[t]);let ne=async()=>{await navigator.clipboard.writeText(t),p(!0)};A.useEffect(()=>{let e;return f&&(e=setTimeout(()=>{p(!1)},2e3)),()=>{clearTimeout(e)}},[f]);let re=e===`user`&&(a===`error`||a===`sending`),x=a===`sending`&&c!=null,S=x&&u,C=e===`user`&&a==null,ie=C&&g&&!m,oe=A.Children.count(n)>0;A.useLayoutEffect(()=>{if(!x||C)return;let e=te.current;if(!e)return;let t=()=>{let t=Number.parseFloat(getComputedStyle(e).lineHeight),n=Number.isFinite(t)&&t>0?t:24;ee(e.scrollHeight<=n+1)};t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[t,x,C]);let se=C?(0,j.jsx)(gt,{message:t,isHovering:u,isExpanded:m,onTruncatableChange:v}):(0,j.jsx)(`div`,{ref:te,className:`min-w-0 text-sm leading-6 whitespace-normal [word-break:break-word]`,children:(0,j.jsx)(k,{includeStandard:!0,includeHeadings:!0,allowHtml:e!==`user`,components:ht,children:t})}),w=(0,j.jsxs)(`article`,{"data-testid":`${e}-message`,"data-pending-status":a,onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),className:_(`rounded-xl relative w-fit max-w-full flex flex-col`,oe&&`gap-2`,e===`user`&&`mt-6 bg-tertiary self-end px-4 py-2.5`,e===`agent`&&`mt-6 w-full max-w-full bg-transparent`,i&&e===`agent`&&`border border-[#597ff4] bg-tertiary p-4 mt-2`,a===`error`&&`border border-[var(--oh-status-error)]/40`,!re&&`last:mb-4`),children:[(0,j.jsxs)(`div`,{className:_(`absolute -top-2.5 -right-2.5 z-10`,!u||a===`sending`?`hidden`:`flex`,`items-center gap-1`),onClick:e=>e.stopPropagation(),children:[r?.map((e,t)=>e.tooltip?(0,j.jsx)(ae,{content:e.tooltip,placement:`top`,children:(0,j.jsx)(`button`,{type:`button`,onClick:e.onClick,className:`button-base p-1 cursor-pointer`,"aria-label":e.tooltip,children:e.icon})},t):(0,j.jsx)(`button`,{type:`button`,onClick:e.onClick,className:`button-base p-1 cursor-pointer`,"aria-label":`Action ${t+1}`,children:e.icon},t)),(0,j.jsx)(ve,{isHidden:!u,isDisabled:f,onClick:ne,mode:f?`copied`:`copy`})]}),se,x?(0,j.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),c?.()},"data-testid":`chat-message-stop`,"aria-label":l(y.BUTTON$STOP),"aria-hidden":!S,tabIndex:S?0:-1,className:_(`group absolute z-10 inline-flex h-7 w-7 cursor-pointer items-center justify-center rounded-full bg-[var(--oh-color-tertiary)] text-[var(--oh-foreground)] transition-opacity duration-150`,b?`right-3 top-1/2 -translate-y-1/2`:`right-3 bottom-2.5`,S?`opacity-100`:`pointer-events-none opacity-0`),children:(0,j.jsx)(ft,{className:`block h-7 w-7 max-w-none`})}):null,ie?(0,j.jsx)(`button`,{type:`button`,"data-testid":`chat-message-expand`,"aria-expanded":!1,"aria-label":l(y.COMMON$VIEW_MORE),className:`absolute inset-0 z-[1] cursor-pointer rounded-xl border-0 bg-transparent p-0`,onClick:()=>h(!0)}):null,n]});return e===`user`&&a===`error`?(0,j.jsxs)(`div`,{className:`flex w-fit max-w-full flex-col items-end gap-1.5 self-end last:mb-4`,children:[w,(0,j.jsxs)(`div`,{role:`alert`,"data-testid":`chat-message-error`,className:`flex items-center gap-2 text-xs text-[var(--oh-status-error)]`,children:[(0,j.jsx)(`span`,{children:l(y.CHAT_INTERFACE$MESSAGE_SEND_FAILED)}),o?(0,j.jsx)(`button`,{type:`button`,onClick:o,className:`cursor-pointer rounded-md border border-[var(--oh-border)] px-2 py-1 text-xs font-normal text-[var(--oh-foreground)] hover:bg-[var(--oh-interactive-hover)]`,"data-testid":`chat-message-retry`,children:l(y.CHAT_INTERFACE$MESSAGE_RETRY)}):null]})]}):e===`user`&&a===`sending`?(0,j.jsxs)(`div`,{className:`flex w-full max-w-full flex-col last:mb-4`,children:[w,(0,j.jsx)(`div`,{className:`my-1 w-full py-1 text-sm`,children:(0,j.jsx)(dt,{as:`p`,role:`status`,"aria-live":`polite`,"data-testid":`chat-message-sending`,className:`block w-full text-sm font-normal`,duration:1,spread:2,children:l(y.CHAT_INTERFACE$MESSAGE_SENDING)})})]}):w}function _t(){let{conversationId:e}=Le(),{selectedTab:t,isRightPanelShown:n,setHasRightPanelToggled:r,setSelectedTab:i}=w(),{setSelectedTab:a}=oe(e),o=e=>{i(e),a(e)};return{selectTab:e=>{t===e&&n?r(!1):(o(e),n||r(!0))},navigateToTab:e=>{o(e),n||r(!0)},isTabActive:e=>n&&t===e,onTabChange:o,selectedTab:t,isRightPanelShown:n}}function vt(e){return{h1:({children:t,className:n})=>(0,j.jsx)(`h1`,{className:_(`text-lg text-white font-bold leading-6 mb-1.5 mt-3 first:mt-0`,n,e),children:t}),h2:({children:t,className:n})=>(0,j.jsx)(`h2`,{className:_(`text-base font-semibold leading-5 text-white mb-1 mt-2.5 first:mt-0`,n,e),children:t}),h3:({children:t,className:n})=>(0,j.jsx)(`h3`,{className:_(`text-sm font-semibold text-white mb-1 mt-2 first:mt-0`,n,e),children:t}),h4:({children:t,className:n})=>(0,j.jsx)(`h4`,{className:_(`text-sm font-semibold text-white mb-1 mt-2 first:mt-0`,n,e),children:t}),h5:({children:t,className:n})=>(0,j.jsx)(`h5`,{className:_(`text-xs font-semibold text-white mb-0.5 mt-1.5 first:mt-0`,n,e),children:t}),h6:({children:t,className:n})=>(0,j.jsx)(`h6`,{className:_(`text-xs font-medium text-[var(--oh-text-tertiary)] mb-0.5 mt-1.5 first:mt-0`,n,e),children:t}),p:({children:t,className:n})=>(0,j.jsx)(`p`,{className:_(`py-2.5 first:pt-0 last:pb-0`,n,e),children:t}),ul:({children:t,className:n})=>(0,j.jsx)(`ul`,{className:_(`list-disc ml-5 pl-2 whitespace-normal`,n,e),children:t}),ol:({children:t,className:n,start:r})=>(0,j.jsx)(`ol`,{className:_(`list-decimal ml-5 pl-2 whitespace-normal`,n,e),start:r,children:t}),li:({children:t,className:n})=>(0,j.jsx)(`li`,{className:_(n,e),children:t}),a:({children:t,className:n,href:r})=>(0,j.jsx)(`a`,{className:_(`text-blue-500 hover:underline`,n,e),href:r,target:`_blank`,rel:`noopener noreferrer`,children:t}),code:({children:t,className:n})=>(0,j.jsx)(`code`,{className:_(`bg-[var(--oh-surface-raised)] px-1.5 py-0.5 rounded text-[var(--oh-foreground)] border border-[var(--oh-border-subtle)]`,n,e),children:t})}}var yt=vt(),R=300,bt=vt(`shine-text`);function xt({planContent:e,isStreaming:t,isBuildDisabled:n}){let{t:r}=s(`openhands`),{navigateToTab:i}=_t(),{handleBuildPlanClick:a}=st(),{scrollDomToBottom:o}=at(),c=()=>{i(`planner`)},l=(0,A.useCallback)(e=>{a(e),o()},[a,o]),u=(0,A.useMemo)(()=>e?e.length<=R?e:`${e.slice(0,R)}...`:``,[e]);return e?(0,j.jsxs)(`div`,{className:`bg-[var(--oh-surface)] border border-[#597FF4] rounded-[12px] w-full mt-2`,children:[(0,j.jsxs)(`div`,{className:`border-b border-[var(--oh-border)] flex h-[41px] items-center px-2 gap-1`,children:[(0,j.jsx)(Re,{width:18,height:18,color:`var(--oh-muted)`}),(0,j.jsx)(T.Text,{className:`font-normal text-[11px] text-white tracking-[0.11px] leading-4`,children:r(y.COMMON$PLAN_MD)}),(0,j.jsx)(`div`,{className:`flex-1`}),(0,j.jsxs)(`button`,{type:`button`,onClick:c,className:`flex items-center gap-1 hover:opacity-80 transition-opacity cursor-pointer`,"data-testid":`plan-preview-view-button`,children:[(0,j.jsx)(T.Text,{className:`font-normal text-[11px] text-white tracking-[0.11px] leading-4`,children:r(y.COMMON$VIEW)}),(0,j.jsx)(We,{className:`text-white`,size:18})]})]}),(0,j.jsx)(`div`,{"data-testid":`plan-preview-content`,className:`flex flex-col gap-[10px] p-4 text-[15px] text-white leading-[29px]`,children:u&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(k,{includeStandard:!0,components:t?bt:yt,children:u}),e&&e.length>R&&(0,j.jsx)(`button`,{type:`button`,onClick:c,className:`text-[#4a67bd] cursor-pointer hover:underline text-left`,"data-testid":`plan-preview-read-more-button`,children:r(y.COMMON$READ_MORE)})]})}),(0,j.jsx)(`div`,{className:`border-t border-[var(--oh-border)] flex h-[54px] items-center justify-start px-4`,children:(0,j.jsx)(`button`,{type:`button`,onClick:l,disabled:n,className:_(`bg-white flex items-center justify-center h-[26px] px-2 rounded-[4px] w-[93px] transition-opacity`,n?`opacity-50 cursor-not-allowed`:`hover:opacity-90 cursor-pointer`),"data-testid":`plan-preview-build-button`,children:(0,j.jsxs)(T.Text,{className:`font-normal text-[14px] text-black leading-5`,children:[r(y.COMMON$BUILD),` `,(0,j.jsx)(T.Text,{className:`font-normal text-black`,children:`⌘↩`})]})})})]}):null}function St({errorId:e,defaultMessage:t}){let{t:n}=s(`openhands`),[r,i]=A.useState(!1);return(0,j.jsxs)(`div`,{className:`flex flex-col gap-2 my-2 py-2 text-sm w-full`,children:[(0,j.jsxs)(`div`,{className:`font-bold text-danger`,children:[n(e&&f.exists(e)?e:`CHAT_INTERFACE$AGENT_ERROR_MESSAGE`),(0,j.jsx)(`button`,{type:`button`,onClick:()=>i(e=>!e),className:`cursor-pointer text-left`,children:r?(0,j.jsx)(N,{className:`h-4 w-4 ml-2 inline fill-danger`}):(0,j.jsx)(M,{className:`h-4 w-4 ml-2 inline fill-danger`})})]}),r&&(0,j.jsx)(k,{children:t})]})}function Ct({event:e}){return Ne(e)?(0,j.jsx)(St,{errorId:e.id,defaultMessage:e.error}):null}function wt({width:e=20,height:t=20,active:n}){return(0,j.jsx)(`svg`,{width:e,height:t,viewBox:`0 0 ${e} ${t}`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,j.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M11.204 15.0037L6.65511 9.99993L11.204 4.99617L12.1289 5.83701L8.34444 9.99993L12.1289 14.1628L11.204 15.0037Z`,fill:n?`var(--oh-text-tertiary)`:`var(--oh-border)`})})}function Tt({width:e=20,height:t=20,active:n}){return(0,j.jsx)(`svg`,{width:e,height:t,viewBox:`0 0 ${e} ${t}`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,j.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M8.79602 4.99634L13.3449 10.0001L8.79602 15.0038L7.87109 14.163L11.6556 10.0001L7.87109 5.83718L8.79602 4.99634Z`,fill:n?`var(--oh-text-tertiary)`:`var(--oh-border)`})})}function Et({onClick:e,className:t}){return(0,j.jsx)(`button`,{type:`button`,onClick:e,className:_(`bg-[var(--oh-muted)] rounded-full w-5 h-5 flex items-center justify-center cursor-pointer`,t),children:(0,j.jsx)(_e,{width:18,height:18})})}function Dt({src:e,size:t=`small`}){return(0,j.jsx)(`img`,{role:`img`,alt:``,src:e,className:_(`rounded-sm object-cover`,t===`small`&&`w-[62px] h-[62px]`,t===`large`&&`w-[100px] h-[100px]`)})}function Ot({src:e,onRemove:t,size:n=`small`}){return(0,j.jsxs)(`div`,{"data-testid":`image-preview`,className:`relative w-fit shrink-0 py-1`,children:[(0,j.jsx)(Dt,{src:e,size:n}),t&&(0,j.jsx)(Et,{onClick:t,className:`absolute right-[3px] top-[3px] cursor-pointer`})]})}function kt({size:e=`small`,images:t,onRemove:n}){let r=A.useRef(null),[i,a]=A.useState(!1),[o,s]=A.useState(!0),[c,l]=A.useState(!1);return A.useEffect(()=>{let e=r.current;e&&a(e.scrollWidth>e.clientWidth)},[t]),(0,j.jsxs)(`div`,{"data-testid":`image-carousel`,className:`relative`,children:[i&&(0,j.jsx)(`div`,{className:`absolute right-full transform top-1/2 -translate-y-1/2`,children:(0,j.jsx)(wt,{active:!o})}),(0,j.jsx)(`div`,{ref:r,onScroll:e=>{let t=e.currentTarget;s(t.scrollLeft===0),l(t.scrollLeft+t.clientWidth===t.scrollWidth)},className:_(`flex overflow-x-auto`,e===`small`&&`gap-2`,e===`large`&&`gap-4`),children:t.map((t,r)=>(0,j.jsx)(Ot,{size:e,src:t,onRemove:n?()=>n?.(r):void 0},r))}),i&&(0,j.jsx)(`div`,{className:`absolute left-full transform top-1/2 -translate-y-1/2`,children:(0,j.jsx)(Tt,{active:!c})})]})}function At({type:e,onClick:t}){let{t:n}=s(`openhands`),r=e===`confirm`,i=n(r?y.ACTION$CONFIRM:y.ACTION$REJECT),a=n(r?y.CHAT_INTERFACE$USER_CONFIRMED:y.CHAT_INTERFACE$USER_REJECTED),o=r?`${n(y.CHAT_INTERFACE$INPUT_CONTINUE_MESSAGE)} ⌘↩`:`${n(y.BUTTON$CANCEL)} ⇧⌘⌫`;return(0,j.jsx)(ae,{closeDelay:100,content:a,children:(0,j.jsx)(`button`,{"data-testid":`action-${e}-button`,type:`button`,"aria-label":i,className:_(`rounded px-2 h-6.5 text-sm font-normal leading-5 cursor-pointer hover:opacity-80`,e===`confirm`?`bg-tertiary text-white`:`bg-white text-base`),onClick:t,children:o})})}function jt({className:e,content:t,icon:n,severity:r,title:i}){return r===`high`?(0,j.jsxs)(`div`,{className:_(`flex items-center gap-3.5 bg-[#4A0709] border border-[#FF0006] text-red-400 rounded-xl px-3.5 h-13 text-sm text-white`,e),children:[n&&(0,j.jsx)(`span`,{className:``,children:n}),(0,j.jsx)(`span`,{className:`font-bold`,children:i}),(0,j.jsx)(`span`,{className:`font-normal`,children:t})]}):null}var Mt=e=>(0,j.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:[(0,j.jsx)(`path`,{d:`M12 14C11.4477 14 11 13.5523 11 13V10C11 9.44772 11.4477 9 12 9C12.5523 9 13 9.44772 13 10V13C13 13.5523 12.5523 14 12 14Z`,fill:`currentColor`}),(0,j.jsx)(`path`,{d:`M10.5 16.5C10.5 15.6716 11.1716 15 12 15C12.8284 15 13.5 15.6716 13.5 16.5C13.5 17.3284 12.8284 18 12 18C11.1716 18 10.5 17.3284 10.5 16.5Z`,fill:`currentColor`}),(0,j.jsx)(`path`,{d:`M10.2301 3.2156C10.98 1.79093 13.02 1.79092 13.7698 3.2156L22.1135 19.0685C22.8144 20.4003 21.8486 22 20.3436 22H3.65635C2.15133 22 1.18556 20.4003 1.88651 19.0685L10.2301 3.2156ZM20.3436 20L12 4.1471L3.65635 20L20.3436 20Z`,fill:`currentColor`})]}),Nt=se(e=>({submittedEventIds:[],addSubmittedEventId:t=>e(e=>({submittedEventIds:[...e.submittedEventIds,t]})),removeSubmittedEventId:t=>e(e=>({submittedEventIds:e.submittedEventIds.filter(e=>e!==t)}))})),Pt=()=>u({mutationKey:[`respond-to-confirmation`],mutationFn:async({conversationId:e,conversationUrl:t,sessionApiKey:n,accept:r})=>{let i={accept:r};return Ie.respondToConfirmation(e,t,i,n)}});function Ft(){let e=Nt(e=>e.submittedEventIds),t=Nt(e=>e.addSubmittedEventId),{t:n}=s(`openhands`),{data:r}=Te(),{curAgentState:i}=Ce(),{mutate:a}=Pt(),o=Be(e=>e.events).slice().reverse().find(e=>e.source===`agent`?i===g.AWAITING_USER_CONFIRMATION:!1),c=(0,A.useCallback)(e=>{!o||!r||(t(o.id),a({conversationId:r.id,conversationUrl:r.conversation_url||``,sessionApiKey:r.session_api_key,accept:e}))},[o,r,t,a]);return(0,A.useEffect)(()=>{if(!o)return;let e=e=>{e.shiftKey&&e.metaKey&&e.key===`Backspace`&&(e.preventDefault(),c(!1))},t=e=>{e.metaKey&&e.key===`Enter`&&(e.preventDefault(),c(!0))},n=n=>{e(n),t(n)};return document.addEventListener(`keydown`,n),()=>document.removeEventListener(`keydown`,n)},[o,c]),i!==g.AWAITING_USER_CONFIRMATION||!o||e.includes(o.id)?null:(0,j.jsxs)(`div`,{className:`flex flex-col gap-2 pt-4`,children:[(O(o)?o.security_risk:v.UNKNOWN)===v.HIGH&&(0,j.jsx)(jt,{content:n(y.CHAT_INTERFACE$HIGH_RISK_WARNING),icon:(0,j.jsx)(Mt,{width:16,height:16,color:`#fff`}),severity:`high`,title:n(y.COMMON$HIGH_RISK)}),(0,j.jsxs)(`div`,{className:`flex justify-between items-center`,children:[(0,j.jsx)(`p`,{className:`text-sm font-normal text-white`,children:n(y.CHAT_INTERFACE$USER_ASK_CONFIRMATION)}),(0,j.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,j.jsx)(At,{type:`reject`,onClick:()=>c(!1)}),(0,j.jsx)(At,{type:`confirm`,onClick:()=>c(!0)})]})]})]})}var It=e=>{let t=e.llm_message;if(!t?.content)return``;let n=``;if(t.content&&(Array.isArray(t.content)?n=t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
2
|
-
`):typeof t.content==`string`&&(n=t.content)),!(Array.isArray(t.content)&&t.content.some(e=>e.type===`image`)))return n;let r=f.t(y.CHAT_INTERFACE$AUGMENTED_PROMPT_FILES_TITLE);return n.split(r)[0]};function Lt(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function Rt(e){let t=Math.round(e*5);return{filled:t,empty:5-t}}function zt(e){return e>=.6?`text-green-400`:e>=.4?`text-yellow-400`:`text-red-400`}function Bt(e){return e>=.7?`text-red-400 font-semibold`:e>=.5?`text-yellow-400`:`text-neutral-400`}function Vt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ht(e){let t=e?.verification;if(!Vt(t))return null;let n=t.enable_iterative_refinement;return typeof n==`boolean`?n:null}function Ut({feature:e}){let t=Math.round(e.probability*100),n=Bt(e.probability);return(0,j.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,j.jsx)(`span`,{className:`text-neutral-200`,children:e.display_name}),(0,j.jsxs)(`span`,{className:n,children:[`(`,t,`%)`]})]})}function z({label:e,features:t}){return!t||t.length===0?null:(0,j.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-1 text-xs`,children:[(0,j.jsx)(`span`,{className:`font-semibold text-neutral-300`,children:e}),t.map((e,t)=>(0,j.jsxs)(A.Fragment,{children:[t>0&&(0,j.jsx)(`span`,{className:`text-neutral-500`,children:`·`}),(0,j.jsx)(Ut,{feature:e})]},e.name))]})}function Wt({categorized:e}){let{t}=s(),n=e.agent_behavioral_issues&&e.agent_behavioral_issues.length>0,r=e.user_followup_patterns&&e.user_followup_patterns.length>0,i=e.infrastructure_issues&&e.infrastructure_issues.length>0,a=e.other&&e.other.length>0;return!n&&!r&&!i&&!a?null:(0,j.jsxs)(`div`,{className:`flex flex-col gap-1 mt-1.5`,children:[n&&(0,j.jsx)(z,{label:t(y.CRITIC$POTENTIAL_ISSUES),features:e.agent_behavioral_issues}),i&&(0,j.jsx)(z,{label:t(y.CRITIC$INFRASTRUCTURE),features:e.infrastructure_issues}),r&&(0,j.jsx)(z,{label:t(y.CRITIC$LIKELY_FOLLOWUP),features:e.user_followup_patterns}),a&&(0,j.jsx)(z,{label:t(y.CRITIC$OTHER),features:e.other})]})}function Gt({criticResult:e}){let{t}=s(),{data:n}=ne(),[r,i]=A.useState(!1),a=Lt(e.score),{filled:o,empty:c}=Rt(a),l=zt(a),u=(a*100).toFixed(1),d=Ht(n?.agent_settings)===!1,f=e.metadata?.categorized_features,p=f!=null&&((f.agent_behavioral_issues??[]).length>0||(f.user_followup_patterns??[]).length>0||(f.infrastructure_issues??[]).length>0||(f.other??[]).length>0);return(0,j.jsxs)(`div`,{className:`border-l-2 border-neutral-600 pl-2 my-2 py-1.5 text-sm`,children:[(0,j.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,j.jsx)(`span`,{className:`font-semibold text-neutral-300 text-xs`,children:t(y.CRITIC$SUCCESS_LIKELIHOOD_LABEL)}),(0,j.jsxs)(`span`,{className:`${l} text-xs tracking-wide`,"aria-label":`Score: ${u}%`,children:[`★`.repeat(o),`☆`.repeat(c)]}),(0,j.jsxs)(`span`,{className:`text-neutral-500 text-xs`,children:[`(`,u,`%)`]}),p&&(0,j.jsx)(`button`,{type:`button`,onClick:()=>i(e=>!e),className:`cursor-pointer ml-1`,"aria-label":t(r?y.BUTTON$COLLAPSE_DETAILS:y.BUTTON$EXPAND_DETAILS),children:r?(0,j.jsx)(N,{className:`h-3 w-3 inline fill-neutral-400`}):(0,j.jsx)(M,{className:`h-3 w-3 inline fill-neutral-400`})})]}),r&&p&&(0,j.jsx)(Wt,{categorized:f}),d&&(0,j.jsx)(`p`,{className:`mt-1.5 text-xs leading-5 text-neutral-500`,"data-testid":`critic-iterative-refinement-hint`,children:t(y.CRITIC$ITERATIVE_REFINEMENT_HINT)})]})}var Kt=e=>(0,j.jsx)(`svg`,{width:16,height:16,viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,j.jsx)(`path`,{d:`M11.3931 1.88021C10.78 1.37593 10.062 1.01489 9.29157 0.823438C8.52113 0.631981 7.71767 0.614934 6.9398 0.773542C5.90405 0.982756 4.95379 1.49492 4.20959 2.24506C3.46538 2.9952 2.96078 3.9495 2.7598 4.98688C2.61303 5.76469 2.6397 6.56531 2.83791 7.33163C3.03611 8.09795 3.40097 8.8111 3.90647 9.42021C4.37559 9.94959 4.64449 10.6266 4.66647 11.3335V13.3335C4.66647 13.864 4.87718 14.3727 5.25225 14.7478C5.62732 15.1228 6.13603 15.3335 6.66647 15.3335H9.33313C9.86356 15.3335 10.3723 15.1228 10.7473 14.7478C11.1224 14.3727 11.3331 13.864 11.3331 13.3335V11.4602C11.3555 10.6797 11.6423 9.92983 12.1465 9.33354C13.0299 8.24073 13.4463 6.84342 13.3052 5.44529C13.1642 4.04716 12.477 2.7612 11.3931 1.86687V1.88021ZM9.9998 13.3335C9.9998 13.5104 9.92956 13.6799 9.80454 13.8049C9.67951 13.93 9.50994 14.0002 9.33313 14.0002H6.66647C6.48965 14.0002 6.32009 13.93 6.19506 13.8049C6.07004 13.6799 5.9998 13.5104 5.9998 13.3335V12.6669H9.9998V13.3335ZM11.1131 8.50688C10.4428 9.30194 10.0517 10.2949 9.9998 11.3335H8.66647V9.33354C8.66647 9.15673 8.59623 8.98716 8.4712 8.86214C8.34618 8.73711 8.17661 8.66688 7.9998 8.66688C7.82299 8.66688 7.65342 8.73711 7.52839 8.86214C7.40337 8.98716 7.33313 9.15673 7.33313 9.33354V11.3335H5.9998C5.98221 10.3123 5.60443 9.33005 4.93313 8.56021C4.49023 8.02954 4.19239 7.39316 4.06867 6.71311C3.94495 6.03306 3.99957 5.33255 4.22719 4.6799C4.45481 4.02724 4.84768 3.4447 5.36748 2.98909C5.88728 2.53348 6.51627 2.22034 7.19313 2.08021C7.77483 1.96044 8.37591 1.9717 8.95271 2.11319C9.52952 2.25467 10.0676 2.52282 10.5278 2.89818C10.9881 3.27353 11.359 3.74666 11.6136 4.28322C11.8682 4.81978 12.0001 5.4063 11.9998 6.00021C12.0047 6.91345 11.6912 7.79985 11.1131 8.50688Z`,fill:`currentColor`})});function B({content:e}){let{t}=s(`openhands`),[n,r]=A.useState(!1);if(!e.trim())return null;let i=n?N:M;return(0,j.jsxs)(`div`,{className:`my-1 w-full py-1 text-sm`,"data-testid":`collapsible-thinking`,children:[(0,j.jsxs)(`button`,{type:`button`,onClick:()=>r(e=>!e),"aria-expanded":n,"aria-label":t(n?y.THINKING$COLLAPSE:y.THINKING$EXPAND),"data-testid":`collapsible-thinking-toggle`,className:`w-full flex items-center gap-2 text-left cursor-pointer`,children:[(0,j.jsx)(i,{className:`h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0`}),(0,j.jsx)(Kt,{className:`h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0`}),(0,j.jsx)(`span`,{className:`font-normal text-[var(--oh-muted)]`,children:t(y.THINKING$TITLE)})]}),n&&(0,j.jsx)(`div`,{className:`mt-1.5 pl-6`,"data-testid":`collapsible-thinking-content`,children:(0,j.jsx)(k,{children:e})})]})}var qt=()=>{let e=o();return u({mutationKey:[`fork-conversation`],mutationFn:async({sourceConversationId:e,eventId:t,editText:n,title:r})=>{let i=t,a=!1;if(n!=null){let n=await le.getEventParentId(e,t);n&&(i=n,a=!0)}let o=await le.forkConversation(e,i,r);return a&&o.leaf_event_id!==i&&(a=!1),{info:o,excluded:a}},onSuccess:()=>{e.invalidateQueries({queryKey:[`user`,`conversations`]})}})};function Jt({event:e,isLastMessage:t,isFromPlanningAgent:n}){let{t:r}=s(`openhands`),{navigate:i}=S(),{conversationId:a}=E(),o=m().backend.kind===`cloud`,{mutate:c,isPending:l}=qt(),u=w(e=>e.setMessageToSend),d=A.useRef(!1),f=It(e),{reasoning:h,message:g}=e.source===`agent`?xe(f):{reasoning:``,message:f},_=[];Array.isArray(e.llm_message.content)&&e.llm_message.content.forEach(e=>{e.type===`image`&&_.push(...e.image_urls)});let v=!o&&a?[{icon:(0,j.jsx)(pe,{width:15,height:15,"aria-hidden":!0}),onClick:()=>{if(!a||l||d.current)return;d.current=!0;let t=ue.getCurrentConversation(),n=t?.id===a?t.title:void 0,r=n?`${n} (branch)`:void 0,o=e.source===`user`&&g.length>0;c({sourceConversationId:a,eventId:e.id,...o?{editText:g}:{},...r?{title:r}:{}},{onSuccess:({info:e,excluded:t})=>{i(`/conversations/${e.id}`),t&&window.setTimeout(()=>u(g),0)},onError:e=>p(e instanceof Error?e.message:null),onSettled:()=>{d.current=!1}})},tooltip:r(y.CHAT_INTERFACE$BRANCH_FROM_HERE)}]:void 0;return(0,j.jsxs)(j.Fragment,{children:[h&&(0,j.jsx)(B,{content:h}),(0,j.jsxs)(L,{type:e.source,message:g,isFromPlanningAgent:n,actions:v,children:[_.length>0&&(0,j.jsx)(kt,{size:`small`,images:_}),t&&(0,j.jsx)(Ft,{})]}),e.source===`agent`&&e.critic_result!=null&&(0,j.jsx)(Gt,{criticResult:e.critic_result})]})}var Yt=class{static isDevMode=!1;static message(e){this.isDevMode&&console.warn(JSON.stringify(JSON.parse(e.data.toString()),null,2))}static event(e,t){this.isDevMode&&console.warn(t||`EVENT`,e)}static warning(e){this.isDevMode&&console.warn(e)}static error(e){this.isDevMode&&console.error(e)}},Xt=e=>{let t=document.createElement(`textarea`);return t.innerHTML=e,t.value};function Zt(e){let{children:t}=e,n=e=>{try{return Xt(e)}catch(t){return Yt.error(String(t)),e}};return Array.isArray(t)?(0,j.jsx)(`strong`,{className:`font-mono`,children:t.map(e=>typeof e==`string`?n(e):e)}):typeof t==`string`?(0,j.jsx)(`strong`,{className:`font-mono`,children:n(t)}):(0,j.jsx)(`strong`,{className:`font-mono`,children:t})}var Qt=e=>{let t=document.createElement(`textarea`);return t.innerHTML=e,t.value},$t=e=>e?e.endsWith(`/`)||e.endsWith(`\\`)?!0:!(e.split(/[/\\]/).pop()||``).includes(`.`):!1,en=e=>{if(!e)return``;let t=e.split(/[/\\]/),n=t[t.length-1];return $t(e)&&!n.endsWith(`/`)?`${n}/`:n};function tn(e){let{children:t}=e,n=e=>{try{let t=Qt(e);return(0,j.jsx)(`span`,{className:`font-mono`,title:t,children:en(t)})}catch(t){return Yt.error(String(t)),(0,j.jsx)(`span`,{className:`font-mono`,children:e})}};return Array.isArray(t)?(0,j.jsx)(`strong`,{className:`font-mono`,children:t.map((e,t)=>typeof e==`string`?(0,j.jsx)(`span`,{children:n(e)},`${e}-${t}`):e)}):typeof t==`string`?(0,j.jsx)(`strong`,{children:n(t)}):(0,j.jsx)(`strong`,{className:`font-mono`,children:t})}var V=1e3,nn=e=>`\`\`\`json\n${JSON.stringify(e,null,2)}\n\`\`\``,rn=e=>{switch(e){case v.LOW:return f.t(y.SECURITY$LOW_RISK);case v.MEDIUM:return f.t(y.SECURITY$MEDIUM_RISK);case v.HIGH:return f.t(y.SECURITY$HIGH_RISK);case v.UNKNOWN:default:return f.t(y.SECURITY$UNKNOWN_RISK)}},H=()=>``,an=e=>e.name?`**Skill:** \`${e.name}\``:H(),on=e=>{let{action:t}=e,n=[];return t.pattern&&n.push(`**Pattern:** \`${t.pattern}\``),t.path&&n.push(`**Path:** \`${t.path}\``),`include`in t&&t.include&&n.push(`**Include:** \`${t.include}\``),n.length>0?n.join(`
|
|
3
|
-
`):H()},sn=e=>{if(e.command!==`create`||!e.file_text)return H();let t=e.file_text;return t.length>1e3&&(t=`${t.slice(0,V)}...`),`${e.path}\n${t}`},cn=e=>{let t=`Command:\n\`${e.action.command}\``;return(e.security_risk===v.HIGH||e.security_risk===v.MEDIUM)&&(t+=`\n\n${rn(e.security_risk)}`),t},ln=e=>{let t=`**MCP Tool Call**
|
|
4
|
-
|
|
5
|
-
`;return t+=`**Arguments:**\n\`\`\`json\n${JSON.stringify(e.data,null,2)}\n\`\`\``,t},un=e=>e.thought,dn=e=>e.message.trim(),fn=e=>{let t=`**Command:** \`${e.command}\``;return e.command===`plan`&&(e.task_list&&e.task_list.length>0?(t+=`\n\n**Task List (${e.task_list.length} ${e.task_list.length===1?`item`:`items`}):**\n`,e.task_list.forEach((e,n)=>{let r={todo:`⏳`,in_progress:`🔄`,done:`✅`}[e.status]||`❓`;t+=`\n${n+1}. ${r} **[${e.status.toUpperCase().replace(`_`,` `)}]** ${e.title}`,e.notes&&(t+=`\n *Notes: ${e.notes}*`)})):t+=`
|
|
6
|
-
|
|
7
|
-
**Task List:** Empty`),t},pn=e=>{switch(e.kind){case`BrowserNavigateAction`:{let t=`Browsing ${e.url}`;return e.new_tab&&(t+=`
|
|
8
|
-
**New Tab:** Yes`),t}case`BrowserClickAction`:{let t=`**Element Index:** ${e.index}`;return e.new_tab&&(t+=`
|
|
9
|
-
**New Tab:** Yes`),t}case`BrowserTypeAction`:{let t=e.text.length>50?`${e.text.slice(0,50)}...`:e.text;return`**Element Index:** ${e.index}\n**Text:** ${t}`}case`BrowserGetStateAction`:return e.include_screenshot?`**Include Screenshot:** Yes`:H();case`BrowserGetContentAction`:{let t=[];return e.extract_links&&t.push(`**Extract Links:** Yes`),e.start_from_char>0&&t.push(`**Start From Character:** ${e.start_from_char}`),t.length>0?t.join(`
|
|
10
|
-
`):H()}case`BrowserScrollAction`:return`**Direction:** ${e.direction}`;case`BrowserGoBackAction`:return H();case`BrowserListTabsAction`:return H();case`BrowserSwitchTabAction`:return`**Tab ID:** ${e.tab_id}`;case`BrowserCloseTabAction`:return`**Tab ID:** ${e.tab_id}`;default:return H()}},mn=e=>{let{action:t}=e;switch(t.kind){case`FileEditorAction`:case`StrReplaceEditorAction`:return sn(t);case`ExecuteBashAction`:case`TerminalAction`:return cn(e);case`MCPToolAction`:return ln(t);case`ThinkAction`:return un(t);case`FinishAction`:return dn(t);case`TaskTrackerAction`:return fn(t);case`BrowserNavigateAction`:case`BrowserClickAction`:case`BrowserTypeAction`:case`BrowserGetStateAction`:case`BrowserGetContentAction`:case`BrowserScrollAction`:case`BrowserGoBackAction`:case`BrowserListTabsAction`:case`BrowserSwitchTabAction`:case`BrowserCloseTabAction`:return pn(t);case`GrepAction`:case`GlobAction`:return on(e);case`InvokeSkillAction`:return an(t);default:return nn(e)}},hn=e=>{if(e.is_error||e.status===`failed`)return`error`;if(e.status===`completed`)return`success`},gn=e=>{let{observation:t}=e;switch(t.kind){case`ExecuteBashObservation`:{let e=t.exit_code,{metadata:n}=t;return e===-1||n.exit_code===-1?`timeout`:e===0||n.exit_code===0?`success`:`error`}case`TerminalObservation`:{let e=t.exit_code??t.metadata.exit_code??null;return t.timeout||e===-1?`timeout`:e===0?`success`:t.is_error?`error`:`success`}case`FileEditorObservation`:case`StrReplaceEditorObservation`:return t.error?`error`:`success`;case`MCPToolObservation`:return t.is_error?`error`:`success`;case`SwitchLLMObservation`:return t.is_error?`error`:`success`;case`InvokeSkillObservation`:return t.is_error?`error`:`success`;case`TaskObservation`:return t.is_error||t.status===`failed`?`error`:`success`;case`CanvasUIObservation`:return t.is_error?`error`:`success`;default:return`success`}},_n=e=>{let{observation:t}=e;if(t.error)return`**Error:**\n${t.error}`;let n=`content`in t&&Array.isArray(t.content)?t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
11
|
-
`):null;return gn(e)===`success`&&`old_content`in t&&`new_content`in t&&t.old_content&&t.new_content||t.command===`view`?`\`\`\`\n${n||t.output}\n\`\`\``:n||t.output},vn=e=>{let{observation:t}=e,n=t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
12
|
-
`)||``;n.length>1e3&&(n=`${n.slice(0,V)}...`);let r=``;return t.command&&(r+=`Command: \`${t.command}\`\n\n`),r+=`Output:\n\`\`\`sh\n${n.trim()||f.t(y.OBSERVATION$COMMAND_NO_OUTPUT)}\n\`\`\``,r},yn=e=>{let{observation:t}=e,n=`content`in t&&Array.isArray(t.content)?t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
13
|
-
`):t.output||``,r=``;return t.error?r+=`**Error:**\n${t.error}`:n?r+=`**Output:**\n${n}`:r+=`Browser action completed successfully.`,r.length>1e3&&(r=`${r.slice(0,V)}...(truncated)`),r},bn=e=>{let{observation:t}=e,n=t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
14
|
-
`),r=`**Tool:** ${t.tool_name}\n\n`;return t.is_error?r+=`**Error:**\n${n}`:r+=`**Result:**\n${n}`,r.length>1e3&&(r=`${r.slice(0,V)}...`),r},xn=e=>{let{observation:t}=e,n=t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
15
|
-
`),r=`${t.skill_name?`**Skill:** \`${t.skill_name}\`\n\n`:``}${t.is_error?`**Error:**\n${n}`:n}`;return r.length>1e3&&(r=`${r.slice(0,V)}...(truncated)`),r},Sn=e=>e.observation.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
16
|
-
`),Cn=e=>{let{observation:t}=e,n=t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
17
|
-
`);if(t.is_error)return n?`**Error:**\n${n}`:`**Error:**\nFailed to switch LLM profile \`${t.profile_name}\`.`;let r=[`**Profile:** \`${t.profile_name}\``];return t.active_model&&r.push(`**Active model:** \`${t.active_model}\``),t.reason&&r.push(`**Reason:** ${t.reason}`),r.join(`
|
|
18
|
-
`)},wn=e=>{let{observation:t}=e,{command:n,task_list:r}=t,i=`**Command:** \`${n}\``;return n===`plan`&&r.length>0?(i+=`\n\n**Task List (${r.length} ${r.length===1?`item`:`items`}):**\n`,r.forEach((e,t)=>{let n={todo:`⏳`,in_progress:`🔄`,done:`✅`}[e.status]||`❓`;i+=`\n${t+1}. ${n} **[${e.status.toUpperCase().replace(`_`,` `)}]** ${e.title}`,e.notes&&(i+=`\n *Notes: ${e.notes}*`)})):n===`plan`&&(i+=`
|
|
19
|
-
|
|
20
|
-
**Task List:** Empty`),`content`in t&&t.content&&typeof t.content==`string`&&t.content.trim()&&(i+=`\n\n**Result:** ${t.content.trim()}`),i},Tn=e=>{let{observation:t}=e;return t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
21
|
-
`)||``},En=e=>{let{observation:t}=e,n=t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
22
|
-
`),r=``;return t.is_error?r+=`**Error:**\n${n}`:r+=n,r},Dn=e=>{let{observation:t}=e,n=t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
23
|
-
`),r=`**Pattern:** \`${t.pattern}\`\n`;return r+=`**Search Path:** \`${t.search_path}\`\n\n`,t.is_error?r+=`**Error:**\n${n}`:t.files.length===0?r+=`**Result:** No files found.`:(r+=`**Files Found (${t.files.length}${t.truncated?`+, truncated`:``}):**\n`,r+=t.files.map(e=>`- \`${e}\``).join(`
|
|
24
|
-
`)),r.length>1e3&&(r=`${r.slice(0,V)}...(truncated)`),r},On=e=>{let{observation:t}=e,n=t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
25
|
-
`),r=`**Pattern:** \`${t.pattern}\`\n`;return r+=`**Search Path:** \`${t.search_path}\`\n`,t.include_pattern&&(r+=`**Include:** \`${t.include_pattern}\`\n`),r+=`
|
|
26
|
-
`,t.is_error?r+=`**Error:**\n${n}`:t.matches.length===0?r+=`**Result:** No matches found.`:(r+=`**Matches (${t.matches.length}${t.truncated?`+, truncated`:``}):**\n`,r+=t.matches.map(e=>`- \`${e}\``).join(`
|
|
27
|
-
`)),r.length>1e3&&(r=`${r.slice(0,V)}...(truncated)`),r},kn=e=>{switch(e.observation.kind){case`FileEditorObservation`:case`StrReplaceEditorObservation`:return _n(e);case`ExecuteBashObservation`:case`TerminalObservation`:return vn(e);case`BrowserObservation`:return yn(e);case`MCPToolObservation`:return bn(e);case`TaskTrackerObservation`:return wn(e);case`ThinkObservation`:return Tn(e);case`FinishObservation`:return En(e);case`GlobObservation`:return Dn(e);case`GrepObservation`:return On(e);case`InvokeSkillObservation`:return xn(e);case`CanvasUIObservation`:return Sn(e);case`ClientToolObservation`:return e.tool_name===`canvas_ui_control`?Sn(e):nn(e);case`SwitchLLMObservation`:return Cn(e);default:return nn(e)}},An=e=>{switch(e.tool_kind){case`execute`:return`ACTION_MESSAGE$ACP_RUN`;case`edit`:return`ACTION_MESSAGE$ACP_EDIT`;case`read`:return`ACTION_MESSAGE$ACP_READ`;case`fetch`:return`ACTION_MESSAGE$ACP_FETCH`;default:return`ACTION_MESSAGE$ACP_TOOL`}},jn={read:[`Read`],edit:[`Edit`,`Write`],execute:[`Bash`,`Run`],fetch:[`Fetch`,`WebFetch`]},Mn=e=>{let t=e.title,n=e.tool_kind;if(!t||!n)return t;let r=jn[n];if(!r)return t;for(let e of r)if(t.length>e.length&&t.startsWith(e)&&/\s/.test(t.charAt(e.length)))return t.slice(e.length).trimStart();return t},Nn=e=>{if(e==null)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}},Pn=e=>e.length>1e3?`${e.slice(0,V)}...`:e,Fn=e=>{let t=e.tool_kind,n=e.raw_input,r=e.raw_output,i=e.is_error,a=``;if(t===`execute`&&n&&typeof n==`object`&&`command`in n&&typeof n.command==`string`){let{command:e}=n;a+=`Command: \`${e}\`\n\n`}else if(n!=null&&n!==``){let e=Nn(n);e.trim()&&(a+=`Input:\n\`\`\`json\n${e}\n\`\`\`\n\n`)}let o=Pn(Nn(r).trim()),s=i?`**Error:**`:`Output:`,c=o||f.t(y.OBSERVATION$COMMAND_NO_OUTPUT);return a+=`${s}\n\`\`\`\n${c}\n\`\`\``,a},In=e=>(0,j.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,j.jsx)(`path`,{d:`M12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z`,fill:`currentColor`})}),Ln=e=>(0,j.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:16,height:16,viewBox:`0 0 16 16`,fill:`none`,...e,children:[(0,j.jsx)(`path`,{d:`M5.79029 12.9507C5.69629 12.9042 5.59557 12.8843 5.50157 12.8843C5.25314 12.8843 5.01142 13.0238 4.89728 13.2562C4.72942 13.5883 4.87042 13.9868 5.20614 14.1462C5.30014 14.1927 5.40086 14.2127 5.50157 14.2127C5.75 14.2127 5.985 14.0732 6.10586 13.8407C6.15286 13.7477 6.17301 13.6481 6.17301 13.5551C6.17301 13.3027 6.03201 13.0636 5.79029 12.9507ZM13.3641 12.3463C13.3641 12.3463 13.3909 12.333 13.3977 12.3198C13.4178 12.2998 13.4312 12.2733 13.4447 12.2533C13.4245 12.2865 13.3977 12.3198 13.3641 12.3463ZM3.91698 11.463C3.7827 11.2969 3.58798 11.2106 3.39326 11.2106C3.24555 11.2106 3.09783 11.2637 2.97697 11.3567C2.68154 11.5892 2.63454 12.0076 2.86283 12.2932C2.99712 12.4592 3.19183 12.5456 3.39326 12.5456C3.54098 12.5456 3.68869 12.4924 3.80955 12.3995C3.97741 12.2666 4.0647 12.074 4.0647 11.8814C4.0647 11.7353 4.0177 11.5892 3.91698 11.463ZM2.88297 9.32433C2.80911 9.01881 2.53382 8.80627 2.23168 8.80627C2.18468 8.80627 2.13096 8.81291 2.07725 8.8262C1.71467 8.9059 1.48638 9.26455 1.56696 9.61657C1.64081 9.92873 1.9161 10.1346 2.22496 10.1346C2.27196 10.1346 2.32568 10.1346 2.37268 10.1213C2.68825 10.0549 2.8964 9.77597 2.8964 9.47045C2.8964 9.42395 2.8964 9.37082 2.88297 9.32433ZM2.37939 6.15621C2.33239 6.14293 2.27868 6.14293 2.23168 6.14293C1.92282 6.14293 1.64753 6.34218 1.57367 6.65434C1.4931 7.013 1.71467 7.36501 2.07725 7.45135C2.13096 7.46464 2.17796 7.47128 2.22496 7.47128C2.53382 7.47128 2.80911 7.25874 2.88297 6.95322C2.8964 6.90673 2.8964 6.8536 2.8964 6.8071C2.8964 6.50158 2.69497 6.22263 2.37939 6.15621ZM3.82298 3.87809C3.70212 3.78511 3.55441 3.73197 3.40669 3.73197C3.20526 3.73197 3.01054 3.81831 2.87626 3.98436C2.64797 4.26995 2.69497 4.68838 2.98369 4.92085C3.10454 5.01383 3.25226 5.06696 3.39998 5.06696C3.59469 5.06696 3.79612 4.98062 3.9237 4.81458C4.02441 4.69503 4.07141 4.54227 4.07141 4.39615C4.07141 4.20354 3.99084 4.01093 3.82298 3.87809ZM6.11929 2.45011C6.00515 2.21101 5.76343 2.07153 5.50829 2.07153C5.41428 2.07153 5.31357 2.09146 5.21957 2.13795C4.88385 2.29735 4.74956 2.69586 4.90399 3.0213C5.02485 3.26041 5.25985 3.39988 5.50829 3.39988C5.609 3.39988 5.70972 3.37996 5.80372 3.33347C6.04543 3.22056 6.17972 2.98145 6.17972 2.73571C6.17972 2.63608 6.15958 2.5431 6.11929 2.45011Z`,fill:`currentColor`}),(0,j.jsx)(`path`,{d:`M14.8809 8.14215C14.8809 8.65356 14.8205 9.15834 14.7063 9.64983C14.5251 10.4269 14.2028 11.1708 13.7462 11.8482C13.6589 11.9811 13.5649 12.1073 13.4642 12.2268C13.4642 12.2401 13.4575 12.2468 13.444 12.2534C13.4239 12.2866 13.397 12.3198 13.3635 12.3464C12.7457 13.1102 11.9602 13.7212 11.0604 14.1529C11.047 14.1596 11.0269 14.1662 11.0134 14.1729C10.9194 14.2194 10.8187 14.2658 10.718 14.3057C9.90558 14.6378 9.01928 14.8105 8.1397 14.8105H8.11955C7.74355 14.8038 7.45483 14.5116 7.45483 14.1463C7.45483 13.781 7.75698 13.4821 8.12627 13.4821H8.14641C8.85142 13.4821 9.55643 13.3426 10.2077 13.077C11.047 12.7316 11.7789 12.187 12.3496 11.4896C12.4436 11.37 12.5443 11.2438 12.6316 11.111C12.9942 10.5664 13.256 9.97527 13.397 9.35095C13.397 9.33766 13.397 9.32438 13.397 9.31774C13.4843 8.93252 13.5313 8.54065 13.5313 8.14215C13.5313 7.43812 13.3903 6.75402 13.1218 6.10313C12.927 5.64485 12.6786 5.21978 12.3697 4.83455C12.2422 4.67515 12.1012 4.51575 11.9535 4.36963C11.4499 3.8715 10.859 3.47964 10.201 3.21397C9.55643 2.9483 8.86485 2.81546 8.16655 2.80882H8.13298C7.76369 2.80882 7.46155 2.50994 7.46155 2.14464C7.46155 1.77935 7.76369 1.48047 8.13298 1.48047H8.17327C9.05285 1.48711 9.90557 1.65315 10.7113 1.98524C10.8322 2.03838 10.953 2.08487 11.0672 2.14464C11.0806 2.15129 11.094 2.15793 11.1007 2.15793C11.7722 2.48337 12.3697 2.90845 12.9002 3.43314C13.0815 3.61247 13.256 3.80508 13.4172 4.00434C13.4239 4.01098 13.4239 4.01762 13.4306 4.02426C13.8133 4.49583 14.1222 5.02717 14.3639 5.59171C14.4982 5.91052 14.6056 6.24261 14.6795 6.57469C14.6929 6.62119 14.7063 6.66768 14.7131 6.71417C14.8205 7.17909 14.8742 7.6573 14.8742 8.14215H14.8809Z`,fill:`currentColor`})]});function Rn({task:e}){let{t}=s(`openhands`),n=(0,A.useMemo)(()=>{switch(e.status){case`todo`:return(0,j.jsx)(In,{className:`w-4 h-4 text-[#ffffff]`});case`in_progress`:return(0,j.jsx)(Ln,{className:`w-4 h-4 text-[#ffffff]`});case`done`:return(0,j.jsx)(ye,{className:`w-4 h-4 text-[var(--oh-muted)]`});default:return(0,j.jsx)(In,{className:`w-4 h-4 text-[#ffffff]`})}},[e.status]),r=e.status===`done`;return(0,j.jsxs)(`div`,{className:`flex gap-[14px] items-center px-4 py-2 w-full`,"data-name":`item`,children:[(0,j.jsx)(`div`,{className:`shrink-0`,children:n}),(0,j.jsxs)(`div`,{className:`flex flex-col items-start justify-center leading-[20px] text-nowrap whitespace-pre font-normal`,children:[(0,j.jsx)(T.Text,{className:_(`text-[12px] text-white`,r&&`text-[var(--oh-muted)]`),children:e.title}),e.notes&&(0,j.jsxs)(T.Text,{className:`text-[10px] text-[var(--oh-muted)]`,children:[t(y.TASK_TRACKING_OBSERVATION$TASK_NOTES),`: `,e.notes]})]})]})}function zn({taskList:e}){let{t}=s(`openhands`);return(0,j.jsxs)(`div`,{className:`flex flex-col overflow-clip bg-[var(--oh-surface)] border border-[var(--oh-border)] rounded-[12px] w-full`,children:[(0,j.jsxs)(`div`,{className:`flex gap-1 items-center border-b border-[var(--oh-border)] h-[41px] px-2 shrink-0`,children:[(0,j.jsx)(Re,{className:`shrink-0 w-4.5 h-4.5 text-[var(--oh-muted)]`}),(0,j.jsx)(T.Text,{className:`text-[11px] text-nowrap text-white tracking-[0.11px] font-medium leading-[16px] whitespace-pre`,children:t(y.COMMON$TASKS)})]}),(0,j.jsx)(`div`,{children:e.map((e,t)=>(0,j.jsx)(Rn,{task:e},`task-${t}`))})]})}function Bn({event:e}){let{observation:t}=e,{command:n,task_list:r}=t;return(0,j.jsx)(`div`,{className:`flex flex-col gap-4`,children:n===`plan`&&r.length>0&&(0,j.jsx)(zn,{taskList:r})})}var Vn=e=>e.filter(e=>e.type===`text`).map(e=>e.text).join(``),Hn=e=>{let t=[],n=/<EXTRA_INFO>([\s\S]*?)<\/EXTRA_INFO>/gi,r=n.exec(e);for(;r!==null;){let i=r[1].trim();i.length>0&&t.push(i),r=n.exec(e)}return t},Un=(e,t)=>{let n=`\n\n- **${e}**`;return t&&t.trim().length>0&&(n+=`\n\n${t}`),n},Wn=(e,t)=>{let n=`
|
|
28
|
-
|
|
29
|
-
**Triggered Skill Knowledge:**`;return e.forEach((e,r)=>{let i=r<t.length?t[r]:void 0;n+=Un(e,i)}),n},Gn=e=>{let t=`
|
|
30
|
-
|
|
31
|
-
**Extended Content:**`;return e.forEach(e=>{e.trim().length>0&&(t+=`\n\n${e}`)}),t},Kn=e=>!e||e.length===0?[]:Hn(Vn(e)),qn=(e,t)=>{let n=Kn(t);return e&&e.length>0?Wn(e,n):n.length>0?Gn(n):``},Jn=(e,t)=>{let n=Kn(t);return e&&e.length>0?e.map((e,t)=>({name:e,content:t<n.length?n[t].trim():``})):n.length>0?n.filter(e=>e.trim().length>0).map((e,t)=>({name:`Extended Content ${t+1}`,content:e.trim()})):[]},U=e=>typeof e==`object`&&!!e&&`_isSkillReadyEvent`in e&&e._isSkillReadyEvent===!0,Yn=e=>{let t=e.activated_skills||e.activated_microagents||[],n=e.extended_content||[];if(t.length===0&&n.length===0)throw Error(`Cannot create skill ready event without activated skills or extended content`);let r=qn(t,n),i=Jn(t,n);return{id:`${e.id}-skill-ready`,timestamp:e.timestamp,source:`agent`,_isSkillReadyEvent:!0,_skillReadyContent:r,_skillReadyItems:i}},W=e=>e,G=e=>e.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
32
|
-
`);function K({code:e,language:t,copy:n=!0,placeholder:r,expandable:i=!1,wrapLongLines:a=!1}){let{t:o}=s(`openhands`),[c,l]=A.useState(!1),u=e.length>V,d=(u&&!(i&&c)?`${e.slice(0,1e3)}…`:e).trim()||r||``,f=n&&e.trim().length>0,p=o(c?y.BUTTON$COLLAPSE:y.BUTTON$EXPAND),m=(0,j.jsx)(C,{className:`rounded-lg text-xs`,style:ie,language:t,PreTag:`div`,wrapLongLines:a,customStyle:a?{whiteSpace:`pre-wrap`}:void 0,codeTagProps:a?{style:{whiteSpace:`pre-wrap`}}:void 0,children:d});return(0,j.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[f?(0,j.jsx)(Fe,{text:e,children:m}):m,i&&u&&(0,j.jsx)(`button`,{type:`button`,onClick:()=>l(e=>!e),className:`self-start text-xs text-muted transition-colors hover:text-white hover:underline`,children:p})]})}function Xn({output:e,exitCode:t,copy:n=!0}){let{t:r}=s(`openhands`);return(0,j.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[t!=null&&t!==0&&t!==-1&&(0,j.jsx)(`span`,{className:`self-start rounded bg-status-fail-bg px-1.5 py-0.5 font-mono text-xs text-status-fail-text`,children:r(y.OBSERVATION$EXIT_CODE,{code:t})}),(0,j.jsx)(K,{code:e,language:`bash`,copy:n,placeholder:r(y.OBSERVATION$COMMAND_NO_OUTPUT),expandable:!0,wrapLongLines:!0})]})}var Zn=W({actionKinds:[`ExecuteBashAction`,`TerminalAction`],observationKinds:[`ExecuteBashObservation`,`TerminalObservation`],Body:function({action:e,observation:t}){let{t:n}=s(`openhands`),r=t?.observation.command??e?.action.command??``,i=e?.security_risk;return(0,j.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[r&&(0,j.jsx)(K,{code:r,language:`bash`}),(i===v.HIGH||i===v.MEDIUM)&&(0,j.jsx)(`span`,{className:`text-xs text-status-fail-text`,children:n(i===v.HIGH?y.SECURITY$HIGH_RISK:y.SECURITY$MEDIUM_RISK)}),t&&(0,j.jsx)(Xn,{output:G(t.observation.content),exitCode:t.observation.exit_code})]})}}),Qn=e=>{switch(e.split(`.`).pop()?.toLowerCase()){case`js`:case`jsx`:return`javascript`;case`ts`:case`tsx`:return`typescript`;case`py`:return`python`;case`html`:return`html`;case`css`:return`css`;case`json`:return`json`;case`md`:return`markdown`;case`yml`:case`yaml`:return`yaml`;case`sh`:case`bash`:return`bash`;case`dockerfile`:return`dockerfile`;case`rs`:return`rust`;case`go`:return`go`;case`java`:return`java`;case`cpp`:case`cc`:case`cxx`:return`cpp`;case`c`:return`c`;case`rb`:return`ruby`;case`php`:return`php`;case`sql`:return`sql`;default:return`text`}},$n=3,er=300,tr=25e4,nr=(e,t)=>{if(e.length*t.length>tr)return[...e.map(e=>({type:`del`,text:e})),...t.map(e=>({type:`add`,text:e}))];let n=e.length,r=t.length,i=Array.from({length:n+1},()=>Array(r+1).fill(0));for(let a=n-1;a>=0;--a)for(let n=r-1;n>=0;--n)i[a][n]=e[a]===t[n]?i[a+1][n+1]+1:Math.max(i[a+1][n],i[a][n+1]);let a=[],o=0,s=0;for(;o<n&&s<r;)e[o]===t[s]?(a.push({type:`ctx`,text:e[o]}),o+=1,s+=1):i[o+1][s]>=i[o][s+1]?(a.push({type:`del`,text:e[o]}),o+=1):(a.push({type:`add`,text:t[s]}),s+=1);for(;o<n;)a.push({type:`del`,text:e[o]}),o+=1;for(;s<r;)a.push({type:`add`,text:t[s]}),s+=1;return a},rr=(e,t)=>{let n=e.split(`
|
|
33
|
-
`),r=t.split(`
|
|
34
|
-
`),i=0;for(;i<n.length&&i<r.length&&n[i]===r[i];)i+=1;let a=n.length,o=r.length;for(;a>i&&o>i&&n[a-1]===r[o-1];)--a,--o;let s=n.slice(Math.max(0,i-$n),i),c=n.slice(a,Math.min(n.length,a+$n));return[...s.map(e=>({type:`ctx`,text:e})),...nr(n.slice(i,a),r.slice(i,o)),...c.map(e=>({type:`ctx`,text:e}))]},ir={add:`bg-status-success-bg text-status-success-text`,del:`bg-status-fail-bg text-status-fail-text`,ctx:`text-muted`},ar={add:`+ `,del:`- `,ctx:` `};function or({oldText:e,newText:t}){let{t:n}=s(`openhands`),r=rr(e,t),i=r.length>er;return(0,j.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,j.jsx)(`div`,{className:`overflow-auto rounded-lg border border-surface-raised font-mono text-xs`,children:(i?r.slice(0,er):r).map((e,t)=>(0,j.jsx)(`div`,{className:_(`whitespace-pre-wrap px-2`,ir[e.type]),children:`${ar[e.type]}${e.text}`},`${t}-${e.type}`))}),i&&(0,j.jsx)(`span`,{className:`text-xs text-muted`,children:n(y.COMMON$TRUNCATED)})]})}function sr({path:e,range:t}){return(0,j.jsxs)(`span`,{className:`inline-flex max-w-full items-center gap-1.5 self-start rounded bg-surface-raised px-2 py-0.5 font-mono text-xs text-foreground`,children:[(0,j.jsx)(Ue,{className:`h-3.5 w-3.5 flex-shrink-0 text-muted`}),(0,j.jsx)(`span`,{className:`break-all`,children:t?`${e}:${t}`:e})]})}var cr=W({actionKinds:[`FileEditorAction`,`StrReplaceEditorAction`],observationKinds:[`FileEditorObservation`,`StrReplaceEditorObservation`],Body:function({action:e,observation:t}){let n=t?.observation.path??e?.action.path??``,r=t?.observation.command??e?.action.command,i=Qn(n),a=e?.action.view_range,o=r===`view`&&a?`${a[0]}-${a[1]}`:void 0,s=n?(0,j.jsx)(sr,{path:n,range:o}):null;if(t){let e=t.observation,n=null;if(e.error)n=(0,j.jsx)(`span`,{className:`whitespace-pre-wrap text-xs text-danger`,children:e.error});else if(e.old_content!=null&&e.new_content!=null)n=(0,j.jsx)(or,{oldText:e.old_content,newText:e.new_content});else{let t=e.new_content||e.output||(e.content?G(e.content):``);n=t?(0,j.jsx)(K,{code:t,language:i}):null}return(0,j.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[s,n]})}if(e){let t=e.action,n=null;return t.command===`create`&&t.file_text?n=(0,j.jsx)(K,{code:t.file_text,language:i}):(t.command===`str_replace`||t.command===`insert`)&&t.new_str!=null&&(n=(0,j.jsx)(or,{oldText:t.old_str??``,newText:t.new_str})),(0,j.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[s,n]})}return null}});function lr({rows:e}){return(0,j.jsx)(`div`,{className:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs`,children:e.map(({label:e,value:t})=>(0,j.jsxs)(A.Fragment,{children:[(0,j.jsx)(`span`,{className:`text-muted`,children:e}),(0,j.jsx)(`span`,{className:`break-all font-mono text-foreground`,children:t})]},e))})}var ur=W({actionKinds:[`GrepAction`,`GlobAction`],observationKinds:[`GrepObservation`,`GlobObservation`],Body:function({action:e,observation:t}){let{t:n}=s(`openhands`),r=t?.observation,i=e?.action,a=r?.pattern??i?.pattern??``,o=r?.search_path??i?.path??``,c=r?`include_pattern`in r?r.include_pattern:null:i&&`include`in i?i.include:null,l=r?`matches`in r?r.matches:r.files:[];return(0,j.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,j.jsx)(lr,{rows:[{label:n(y.COMMON$PATTERN),value:a},...o?[{label:n(y.COMMON$PATH),value:o}]:[],...c?[{label:n(y.COMMON$INCLUDE),value:c}]:[]]}),r&&(r.is_error?(0,j.jsx)(`span`,{className:`whitespace-pre-wrap text-xs text-danger`,children:G(r.content)}):l.length===0?(0,j.jsx)(`span`,{className:`text-xs text-muted`,children:n(y.COMMON$NO_RESULTS)}):(0,j.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,j.jsx)(`span`,{className:`text-xs text-muted`,children:n(y.COMMON$RESULTS,{count:l.length})}),(0,j.jsx)(`div`,{className:`flex flex-col gap-0.5 font-mono text-xs text-foreground`,children:l.map(e=>(0,j.jsx)(`span`,{className:`break-all`,children:e},e))}),r.truncated&&(0,j.jsx)(`span`,{className:`text-xs text-muted`,children:n(y.COMMON$TRUNCATED)})]}))]})}});function dr({label:e,text:t,isError:n=!1}){return(0,j.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,j.jsx)(`span`,{className:`text-xs text-muted`,children:e}),(0,j.jsx)(Fe,{text:t,children:(0,j.jsx)(`div`,{className:`overflow-auto rounded border border-surface-raised bg-surface-raised p-2 text-xs ${n?`text-danger`:`text-foreground`}`,children:(0,j.jsx)(k,{includeStandard:!0,includeHeadings:!0,children:t})})})]})}var fr=[Zn,cr,ur,W({actionKinds:[`TaskAction`],observationKinds:[`TaskObservation`],Body:function({action:e,observation:t}){let{t:n}=s(`openhands`),r=e?.action,i=t?.observation,a=i?.subagent??r?.subagent_type??``,o=i?.task_id,c=r?.prompt?.trim()??``,l=i?G(i.content).trim():``,u=[...a?[{label:n(y.TASK$SUBAGENT),value:a}]:[],...o?[{label:n(y.TASK$TASK_ID),value:o}]:[]];return(0,j.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[u.length>0&&(0,j.jsx)(lr,{rows:u}),c&&(0,j.jsx)(dr,{label:n(y.TASK$QUERY),text:c}),l&&(0,j.jsx)(dr,{label:n(y.TASK$RESULT),text:l,isError:i?.is_error})]})}})],pr=e=>new Map(fr.flatMap(t=>(e(t)??[]).map(e=>[e,t]))),mr=pr(e=>e.actionKinds),hr=pr(e=>e.observationKinds);function gr(e,t){if(O(e)){let t=mr.get(e.action.kind);if(t)return(0,j.jsx)(t.Body,{action:e})}else if(D(e)){let n=hr.get(e.observation.kind);if(n)return(0,j.jsx)(n.Body,{action:t,observation:e})}return null}var q=(e,t)=>e?e.length>t?`${e.substring(0,t)}...`:e:``,J=(e,t)=>f.exists(e)?(0,j.jsx)(d,{ns:`openhands`,i18nKey:e,values:t,components:{path:(0,j.jsx)(tn,{}),cmd:(0,j.jsx)(Zt,{})}}):e,_r=e=>/^[a-z][a-z0-9_]*\s*:\s*[[{]/i.test(e),vr=e=>{let t=e.summary?.trim().replace(/\s+/g,` `)||``;return!t||_r(t)?null:t},Y=(e,t)=>{if(typeof e!=`string`)return null;let n=e.trim();return n?t?q(n,t):n:null},yr=e=>{if(e.tool_name!==`inspect_image_with_vision`)return null;let t=e.action,n=Y(t.profile_name);return n?`Describing image with ${n}`:`Describing image with auxiliary vision LLM`},br=(e,t)=>{let n=t?.tool_name,r=e.observation,i=Y(r.tool_name);if(n!==`inspect_image_with_vision`&&i!==`inspect_image_with_vision`&&String(e.observation.kind)!==`VisionInspectObservation`)return null;let a=Y((t?.action??{}).profile_name)??Y(r.profile_name)??Y(r.base_url,80)??Y(r.endpoint,80)??Y(r.model,80);return a?`Describing image with ${a}`:`Describing image with auxiliary vision LLM`},xr=e=>{if(!O(e))return``;let t=yr(e);if(t)return t;let n=vr(e);if(n)return n;let r=e.action.kind,i=``,a={};switch(r){case`ExecuteBashAction`:case`TerminalAction`:i=`ACTION_MESSAGE$RUN`,a={command:q(e.action.command,80)};break;case`FileEditorAction`:case`StrReplaceEditorAction`:i=e.action.command===`view`?`ACTION_MESSAGE$READ`:e.action.command===`create`?`ACTION_MESSAGE$WRITE`:`ACTION_MESSAGE$EDIT`,a={path:e.action.path};break;case`MCPToolAction`:i=`ACTION_MESSAGE$CALL_TOOL_MCP`,a={mcp_tool_name:e.tool_name};break;case`InvokeSkillAction`:i=`ACTION_MESSAGE$INVOKE_SKILL`,a={name:e.action.name};break;case`TaskAction`:i=`ACTION_MESSAGE$TASK`,a={name:e.action.subagent_type};break;case`ThinkAction`:i=`ACTION_MESSAGE$THINK`;break;case`FinishAction`:i=`ACTION_MESSAGE$FINISH`;break;case`TaskTrackerAction`:i=`ACTION_MESSAGE$TASK_TRACKING`;break;case`GrepAction`:i=`ACTION_MESSAGE$GREP`,a={pattern:`pattern`in e.action&&e.action.pattern?q(String(e.action.pattern),50):``};break;case`GlobAction`:i=`ACTION_MESSAGE$GLOB`,a={pattern:`pattern`in e.action&&e.action.pattern?q(String(e.action.pattern),50):``};break;case`BrowserNavigateAction`:case`BrowserClickAction`:case`BrowserTypeAction`:case`BrowserGetStateAction`:case`BrowserGetContentAction`:case`BrowserScrollAction`:case`BrowserGoBackAction`:case`BrowserListTabsAction`:case`BrowserSwitchTabAction`:case`BrowserCloseTabAction`:i=`ACTION_MESSAGE$BROWSE`;break;case`CanvasUIAction`:case ce:return`CANVASUI`;default:return String(r).replace(`Action`,``).toUpperCase()}return i?J(i,a):r},Sr=(e,t)=>{if(!D(e))return``;let n=br(e,t);if(n)return n;if(t){let e=yr(t);if(e)return e;let n=vr(t);if(n)return n}let r=e.observation.kind,i=``,a={};switch(r){case`ExecuteBashObservation`:case`TerminalObservation`:i=`OBSERVATION_MESSAGE$RUN`,a={command:e.observation.command?q(e.observation.command,80):``};break;case`FileEditorObservation`:case`StrReplaceEditorObservation`:i=e.observation.command===`view`?`OBSERVATION_MESSAGE$READ`:`OBSERVATION_MESSAGE$EDIT`,a={path:e.observation.path||``};break;case`MCPToolObservation`:i=`OBSERVATION_MESSAGE$MCP`,a={mcp_tool_name:e.observation.tool_name};break;case`InvokeSkillObservation`:i=`OBSERVATION_MESSAGE$INVOKE_SKILL`,a={name:e.observation.skill_name};break;case`TaskObservation`:i=`OBSERVATION_MESSAGE$TASK`,a={name:e.observation.subagent};break;case`CanvasUIObservation`:i=`OBSERVATION_MESSAGE$CANVAS_UI`;break;case`ClientToolObservation`:if(e.tool_name===`canvas_ui_control`){i=`OBSERVATION_MESSAGE$CANVAS_UI`;break}return r.replace(`Observation`,``).toUpperCase();case`SwitchLLMObservation`:i=e.observation.is_error?`MODEL$SWITCH_FAILED`:`MODEL$SWITCHED_TO_PROFILE`,a={name:e.observation.profile_name};break;case`BrowserObservation`:i=`OBSERVATION_MESSAGE$BROWSE`;break;case`TaskTrackerObservation`:{let{command:t}=e.observation;i=t===`plan`?`OBSERVATION_MESSAGE$TASK_TRACKING_PLAN`:`OBSERVATION_MESSAGE$TASK_TRACKING_VIEW`;break}case`ThinkObservation`:i=`OBSERVATION_MESSAGE$THINK`;break;case`GlobObservation`:i=`OBSERVATION_MESSAGE$GLOB`,a={pattern:e.observation.pattern?q(e.observation.pattern,50):``};break;case`GrepObservation`:i=`OBSERVATION_MESSAGE$GREP`,a={pattern:e.observation.pattern?q(e.observation.pattern,50):``};break;default:return r.replace(`Observation`,``).toUpperCase()}return i?J(i,a):r},Cr=(e,t)=>e.observation.kind!==`ClientToolObservation`||e.tool_name!==`canvas_ui_control`||!t||!Me(t)?null:`UI command '${t.action.command}' dispatched to the Agent Canvas frontend.`,X=(e,t)=>{let n=``,r=``;if(U(e)){let t=`OBSERVATION_MESSAGE$SKILL_READY`;n=f.exists(t)?J(t,{}):`Skill Ready`,r=e._skillReadyContent}else O(e)?(n=xr(e),r=gr(e)??mn(e)):D(e)?(n=Sr(e,t),r=e.observation.kind===`TaskTrackerObservation`?(0,j.jsx)(Bn,{event:e}):Cr(e,t)??gr(e,t)??kn(e)):be(e)?(n=J(An(e),{title:Mn(e)}),r=Fn(e)):e.source===`agent`&&`action`in e&&e.action!==null&&typeof e.action==`object`&&`kind`in e.action&&typeof e.action.kind==`string`&&(n=String(e.action.kind).replace(`Action`,``).toUpperCase());return{title:n||f.t(y.EVENT$UNKNOWN_EVENT),details:r}};function wr({event:e,isFromPlanningAgent:t=!1}){let n=X(e);return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(L,{type:`agent`,message:typeof n.details==`string`?n.details:String(n.details),isFromPlanningAgent:t}),e.critic_result!=null&&(0,j.jsx)(Gt,{criticResult:e.critic_result})]})}var Tr=e=>{let{observation:t}=e,n=t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
35
|
-
`).trim();return!t.skill_name&&!n?[]:[{name:t.skill_name,content:n}]};function Er(e){let t=e.split(`
|
|
36
|
-
`),n=null,r=null,i=0;for(let e=0;e<t.length;e+=1){let a=t[e];if(a.startsWith(h[0]))n=a.trim(),i=e+1;else if(a.startsWith(h[2]))r=a.replace(h[2],``).trim(),i=e+1;else if(a.startsWith(h[1])||a.startsWith(h[3]))i=e+1;else if(a.trim()===``&&e<=i)i=e+1;else break}return{matchInfo:n,filePath:r,body:t.slice(i).join(`
|
|
37
|
-
`).trim()}}function Dr(e){return e.replace(/<important>([\s\S]*?)<\/important>/gi,(e,t)=>`**${t.trim()}**`)}function Or({content:e}){let{t}=s(`openhands`),{matchInfo:n,filePath:r,body:i}=Er(e),a=n||r;return(0,j.jsxs)(`div`,{className:`pl-6 pr-2 pt-2 pb-2`,children:[a&&(0,j.jsxs)(`div`,{className:`mb-3 text-sm text-[var(--oh-muted)] space-y-1`,children:[n&&(0,j.jsx)(`p`,{children:n}),r&&(0,j.jsxs)(`p`,{children:[(0,j.jsxs)(T.Text,{className:`text-[var(--oh-text-subtle)]`,children:[t(y.COMMON$PATH),` `]}),(0,j.jsx)(`code`,{className:`bg-[var(--oh-surface)] px-1.5 py-0.5 rounded text-[var(--oh-text-tertiary)]`,children:r})]})]}),a&&i&&(0,j.jsx)(`hr`,{className:`border-[var(--oh-border-subtle)] mb-3`}),i&&(0,j.jsx)(k,{children:Dr(i)})]})}function kr({items:e,titleKey:t=y.SKILLS$TRIGGERED_SKILL_KNOWLEDGE}){let{t:n}=s(`openhands`),[r,i]=A.useState({}),a=e=>{i(t=>({...t,[e]:!t[e]}))};return(0,j.jsxs)(`div`,{className:`flex flex-col gap-1 mt-1`,children:[(0,j.jsx)(T.Text,{className:`font-bold text-[var(--oh-foreground)] text-sm px-2 py-1`,children:n(t)}),e.map(e=>{let t=r[e.name]||!1;return(0,j.jsxs)(`div`,{className:`border border-[var(--oh-border-subtle)] rounded-md overflow-hidden`,children:[(0,j.jsxs)(`button`,{type:`button`,onClick:()=>a(e.name),className:`w-full py-1.5 px-2 text-left flex items-center gap-2 hover:bg-tertiary transition-colors cursor-pointer`,children:[(0,j.jsx)(T.Text,{className:`text-[var(--oh-text-tertiary)]`,children:t?(0,j.jsx)(b,{size:14}):(0,j.jsx)(c,{size:14})}),(0,j.jsx)(T.Text,{className:`font-normal text-[var(--oh-foreground)] text-sm`,children:e.name})]}),t&&e.content&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`hr`,{className:`border-[var(--oh-border-subtle)]`}),(0,j.jsx)(Or,{content:e.content})]})]},e.name)})]})}function Ar(e){if(U(e))return e._skillReadyItems.length>0?{items:e._skillReadyItems,titleKey:y.SKILLS$TRIGGERED_SKILL_KNOWLEDGE}:null;if(D(e)&&e.observation.kind===`InvokeSkillObservation`){let t=Tr(e);return t.length>0?{items:t,titleKey:y.SKILLS$INVOKED_SKILL_KNOWLEDGE}:null}return null}function Z({event:e,isLastMessage:t,correspondingAction:n}){let{title:r,details:i}=X(e,n);if(!U(e)&&D(e)&&e.observation.kind===`TaskTrackerObservation`)return(0,j.jsx)(`div`,{children:i});let a;U(e)?a=`success`:D(e)?a=gn(e):be(e)&&(a=hn(e));let o=Ar(e);return(0,j.jsxs)(`div`,{children:[(0,j.jsx)(P,{title:r,details:o?(0,j.jsx)(kr,{items:o.items,titleKey:o.titleKey}):i,success:a,initiallyExpanded:!1,titleIcon:o?(0,j.jsx)(ge,{className:`h-4 w-4 stroke-[var(--oh-muted)] flex-shrink-0 mr-2`}):void 0}),t&&(0,j.jsx)(Ft,{})]})}function jr({event:e,actions:t,isFromPlanningAgent:n=!1}){let r=e.thought.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
38
|
-
`);return r?(0,j.jsx)(L,{type:`agent`,message:r,actions:t,isFromPlanningAgent:n}):null}function Mr(e,t){if(t)return`🚫`;switch(e){case`PreToolUse`:return`⏳`;case`PostToolUse`:return`✅`;case`UserPromptSubmit`:return`📝`;case`SessionStart`:return`🚀`;case`SessionEnd`:return`🏁`;case`Stop`:return`⏹️`;default:return`🔗`}}function Nr(e){return e.length>80?`${e.slice(0,77)}...`:e}function Pr(e,t){return e?`blocked`:t?`ok`:`failed`}function Fr(e,t){return e?`bg-amber-900/50 text-amber-300`:t?`bg-green-900/50 text-green-300`:`bg-red-900/50 text-red-300`}function Ir({event:e}){let{t}=s(`openhands`);if(!Se(e))return null;let n=Mr(e.hook_event_type,e.blocked),r=Pr(e.blocked,e.success),i=Fr(e.blocked,e.success),a=(()=>{if(!e.blocked)return e.success?`success`:`error`})();return(0,j.jsx)(P,{title:(0,j.jsxs)(`span`,{children:[n,` `,t(y.HOOK$HOOK_LABEL),`: `,e.hook_event_type,e.tool_name&&(0,j.jsxs)(`span`,{className:`text-[var(--oh-muted)] ml-2`,children:[`(`,e.tool_name,`)`]}),(0,j.jsx)(`span`,{className:_(`ml-2 px-1 py-0.5 rounded text-xs`,i),children:r})]}),details:(0,j.jsxs)(`div`,{className:`flex flex-col gap-2 text-[var(--oh-muted)]`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`span`,{className:`text-[var(--oh-text-subtle)]`,children:[t(y.HOOK$COMMAND),`:`]}),` `,(0,j.jsx)(`code`,{className:`text-xs bg-[var(--oh-surface)] px-1 py-0.5 rounded`,children:Nr(e.hook_command)})]}),e.exit_code!==null&&(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`span`,{className:`text-[var(--oh-text-subtle)]`,children:[t(y.HOOK$EXIT_CODE),`:`]}),` `,e.exit_code]}),e.blocked&&e.reason&&(0,j.jsxs)(`div`,{className:`text-amber-400`,children:[(0,j.jsxs)(`span`,{className:`text-[var(--oh-text-subtle)]`,children:[t(y.HOOK$BLOCKED_REASON),`:`]}),` `,e.reason]}),e.additional_context&&(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`span`,{className:`text-[var(--oh-text-subtle)]`,children:[t(y.HOOK$CONTEXT),`:`]}),` `,e.additional_context]}),e.error&&(0,j.jsxs)(`div`,{className:`text-red-400`,children:[(0,j.jsxs)(`span`,{className:`text-[var(--oh-text-subtle)]`,children:[t(y.HOOK$ERROR),`:`]}),` `,e.error]}),e.stdout&&(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`span`,{className:`text-[var(--oh-text-subtle)]`,children:[t(y.HOOK$OUTPUT),`:`]}),(0,j.jsx)(`pre`,{className:`text-xs bg-[var(--oh-surface)] p-2 rounded mt-1 overflow-x-auto max-h-40 overflow-y-auto`,children:e.stdout})]}),e.stderr&&(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`span`,{className:`text-[var(--oh-text-subtle)]`,children:[t(y.HOOK$STDERR),`:`]}),(0,j.jsx)(`pre`,{className:`text-xs bg-[var(--oh-surface)] p-2 rounded mt-1 overflow-x-auto max-h-40 overflow-y-auto text-amber-300`,children:e.stderr})]})]}),success:a})}function Lr(e){let t=[],n=[];for(let r of e)we(r)?(n.length>0&&t.push(n),n=[r]):n.push(r);return n.length>0&&t.push(n),t}var Rr=e=>e?.toUpperCase().endsWith(`PLAN.MD`)??!1;function zr(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(Oe(n)&&Rr(n.observation.path))return n.id}return null}function Br(e){return(0,A.useMemo)(()=>{let t=new Set;return Lr(e).forEach(e=>{let n=zr(e);n&&t.add(n)}),t},[e])}function Vr(e,t){return t.has(e)}var Hr=e=>e.activated_skills||e.activated_microagents||[],Ur=e=>!e||e.length===0?!1:e.some(e=>e.type===`text`&&e.text.trim().length>0),Wr=e=>{let t=Hr(e).length>0,n=Ur(e.extended_content);return t&&n},Gr=(e,t,n)=>{try{let r=Yn(e);return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(Jt,{event:e,isLastMessage:!1,isFromPlanningAgent:t.isFromPlanningAgent}),(0,j.jsx)(Z,{event:r,isLastMessage:n})]})}catch{return(0,j.jsx)(Jt,{event:e,isLastMessage:n,isFromPlanningAgent:t.isFromPlanningAgent})}};function Kr({event:e,messages:t,isLastMessage:n,isInLast10Actions:r,planPreviewEventIds:i,suppressThought:a=!1}){let{data:o}=te(),{planContent:s}=w(),{curAgentState:c}=Ce(),l=c===g.RUNNING||c===g.LOADING,u=e.isFromPlanningAgent||!1,d={isLastMessage:n,isInLast10Actions:r,config:o,isFromPlanningAgent:u};if(Ee(e)&&De(e))return(0,j.jsx)($e,{status:e.value});if(Ne(e))return(0,j.jsx)(Ct,{event:e,...d});if(Se(e))return(0,j.jsx)(Ir,{event:e});if(be(e))return(0,j.jsx)(Z,{event:e,isLastMessage:n});if(He(e)){let{reasoning:t,message:n}=xe(e.content??``,{streaming:!0}),r=[e.reasoning_content??``,t].filter(Boolean).join(`
|
|
39
|
-
|
|
40
|
-
`);return(0,j.jsxs)(j.Fragment,{children:[r&&(0,j.jsx)(B,{content:r}),n&&(0,j.jsx)(L,{type:`agent`,message:n,isFromPlanningAgent:u})]})}if(O(e)&&e.action.kind===`FinishAction`)return(0,j.jsx)(wr,{event:e,...d});if(O(e)&&e.action.kind===`ThinkAction`)return(0,j.jsx)(B,{content:e.action.thought});if(O(e)){let t=ze(e);return(0,j.jsxs)(j.Fragment,{children:[t&&(0,j.jsx)(B,{content:t}),!a&&(0,j.jsx)(jr,{event:e,isFromPlanningAgent:u}),(0,j.jsx)(Z,{event:e,isLastMessage:n})]})}if(D(e)){if(Oe(e))return i&&Vr(e.id,i)?(0,j.jsx)(xt,{planContent:s,isStreaming:n&&c===g.RUNNING,isBuildDisabled:l}):null;let r=t.find(t=>O(t)&&t.id===e.action_id),o=!a&&r&&O(r)&&r.action.kind!==`ThinkAction`,d=r&&O(r)?ze(r):``;return(0,j.jsxs)(j.Fragment,{children:[d&&(0,j.jsx)(B,{content:d}),o&&(0,j.jsx)(jr,{event:r,isFromPlanningAgent:u}),(0,j.jsx)(Z,{event:e,isLastMessage:n,correspondingAction:r&&O(r)?r:void 0})]})}if(!O(e)&&!D(e)){let t=e;return we(e)&&Wr(t)?Gr(t,d,n):(0,j.jsx)(Jt,{event:t,...d,isLastMessage:n})}return(0,j.jsx)(Z,{event:e,isLastMessage:n})}var qr=e=>{if(O(e)){let{kind:t}=e.action;return!(t===`FinishAction`||t===`ThinkAction`)}return D(e)?!(Oe(e)||e.observation.kind===`TaskTrackerObservation`):!1},Jr=(e,t=2,n=e)=>{if(t<1)throw Error(`minSize must be at least 1`);let r=[],i=new Set,a=null,o=()=>{a&&=(a.events.length>=t?r.push({kind:`group`,events:a.events,startIndex:a.startIndex}):a.events.forEach((e,t)=>{r.push({kind:`single`,event:e,index:a.startIndex+t})}),null)};return e.forEach((e,t)=>{if(qr(e)){let s=ke(e,n);s&&!i.has(s.id)&&(o(),i.add(s.id),r.push({kind:`thought`,action:s,index:t})),a||={events:[],startIndex:t},a.events.push(e)}else o(),r.push({kind:`single`,event:e,index:t})}),o(),r},Yr=(0,A.createContext)(!1);function Xr({events:e,allEvents:t,isFinalized:n=!1,children:r}){let{t:i}=s(`openhands`),[a,o]=A.useState(!1),c=A.useId(),l=`${c}-toggle`;if(e.length===0)return null;let u=e.find(e=>O(e)),d=e.filter(D).length,f=e.length,p=!!u,m=e[e.length-1],h=null;m&&(O(m)?h=X(m).title:D(m)&&(h=X(m,(t??e).find(e=>O(e)&&e.id===m.action_id)).title));let g=p?i(y.EVENT_GROUP$ACTIONS_PROGRESS,{completed:d,total:f}):i(y.EVENT_GROUP$ACTIONS_COMPLETED,{count:f}),_=a?N:M;return(0,j.jsxs)(`div`,{className:`my-1 w-full py-1 text-sm`,"data-testid":`event-group`,children:[(0,j.jsx)(`button`,{id:l,type:`button`,onClick:()=>o(e=>!e),"aria-controls":c,"aria-expanded":a,"aria-label":i(a?y.EVENT_GROUP$COLLAPSE:y.EVENT_GROUP$EXPAND),"data-testid":`event-group-toggle`,className:`w-full flex items-center justify-between gap-2 text-left cursor-pointer`,children:n?(0,j.jsxs)(`span`,{className:`flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]`,children:[(0,j.jsx)(_,{className:`h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0`}),(0,j.jsx)(`span`,{className:`truncate`,children:g})]}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`span`,{className:`flex items-center gap-2 min-w-0 font-normal text-[var(--oh-muted)]`,children:[(0,j.jsx)(_,{className:`h-4 w-4 fill-[var(--oh-muted)] flex-shrink-0`}),(0,j.jsx)(`span`,{className:`truncate`,children:h??g})]}),(0,j.jsxs)(`span`,{className:`flex items-center flex-shrink-0 font-normal text-[var(--oh-muted)]`,children:[(0,j.jsx)(`span`,{className:`truncate`,children:g}),p?(0,j.jsx)(ee,{"data-testid":`spinner-icon`,className:`h-4 w-4 ml-2 inline animate-spin text-[var(--oh-muted)]`}):null]})]})}),a&&(0,j.jsx)(`div`,{id:c,role:`region`,"aria-labelledby":l,className:`mt-1.5 flex flex-col`,"data-testid":`event-group-content`,children:(0,j.jsx)(Yr.Provider,{value:!0,children:r})})]})}var Q=e=>e.at(-1)?.id,$=e=>e.at(-1),Zr=A.memo(({messages:e,allEvents:t})=>{let{conversationId:n}=E(),r=Br(t),i=Pe(e=>n?e.entriesByConversation[n]:void 0),a=A.useMemo(()=>{if(!i||i.length===0)return null;let e=new Set;for(let t of i)t.anchorEventId!==null&&e.add(t.anchorEventId);return e.size>0?e:null},[i]),o=e=>{if(!a||e===void 0)return null;let t=String(e);return a.has(t)?(0,j.jsx)(nt,{conversationId:n,anchorEventId:t}):null},s=A.useMemo(()=>Jr(e,void 0,t),[e,t]),c=(n,i,a)=>(0,j.jsx)(Kr,{event:n,messages:t,isLastMessage:e.length-1===i,isInLast10Actions:e.length-1-i<10,planPreviewEventIds:r,suppressThought:a},n.id);return(0,j.jsx)(j.Fragment,{children:s.map((e,n)=>{if(e.kind===`single`)return(0,j.jsxs)(A.Fragment,{children:[c(e.event,e.index,!0),o(e.event.id)]},`single-${e.event.id}`);if(e.kind===`thought`)return(0,j.jsxs)(A.Fragment,{children:[(0,j.jsx)(jr,{event:e.action}),o(e.action.id)]},`thought-${e.action.id}`);let r=n<s.length-1,i=e.events[0]?.id??`group-${e.startIndex}`;return(0,j.jsxs)(A.Fragment,{children:[(0,j.jsx)(Xr,{events:e.events,allEvents:t,isFinalized:r,children:e.events.map((t,n)=>c(t,e.startIndex+n,!0))}),e.events.map(e=>(0,j.jsx)(A.Fragment,{children:o(e.id)},`model-${e.id}`))]},`group-${i}`)})})},(e,t)=>e.messages.length===t.messages.length&&e.allEvents.length===t.allEvents.length&&Q(e.messages)===Q(t.messages)&&Q(e.allEvents)===Q(t.allEvents)&&$(e.messages)===$(t.messages)&&$(e.allEvents)===$(t.allEvents));Zr.displayName=`Messages`;export{Xe as C,Ke as D,qe as E,Ge as O,$e as S,Je as T,st as _,In as a,rt as b,kn as c,It as d,kt as f,dt as g,L as h,Ln as i,mn as l,_t as m,Jr as n,Fn as o,yt as p,Qn as r,Mn as s,Zr as t,Kt as u,it as v,P as w,nt as x,ot as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{E as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g4xrpilz-CYPMCkX1.js";var t=e(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]);export{t};
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Bcgpimp9.js";import{t as r}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hakxo2tj-ClV0p9g3.js";import{t as i}from"./use-is-creating-conversation-CIAcnd8M.js";import{n as a}from"./active-backend-context-mY7Gff5c.js";import{I as o,t as s,z as c}from"./utils-DsWhWn2F.js";import{t as l}from"./vendor~root-layout~index-home~home~mcp~automations-list~onboarding-modal-C7Yh77RT.js";import{t as u}from"./use-tracking-COqZLobY.js";import{i as d}from"./settings-service.api-CTJRrvMu.js";import{n as f}from"./use-settings-DIAo5KFk.js";import{t as p}from"./modal-backdrop-X-vKo61e.js";import{n as m}from"./modal-classes-DFFO6BMU.js";import{t as h}from"./brand-button-BUlDL-mz.js";import{n as g}from"./navigation-context-BOGzIng3.js";import{o as _,s as v,t as y}from"./conversation-store-C6hSXHw0.js";import{t as b}from"./modal-close-button-vxkAIRyZ.js";import{n as x}from"./use-create-conversation-CakhLF0X.js";import{i as S,n as C,r as w,t as T}from"./extension-module-card-classes-Bo43vY5V.js";import{C as E,b as D,g as O,m as k,t as A,y as j}from"./install-server-modal-BgGRnqA0.js";import{n as M}from"./skill-card-pill-row-BMdhr_sd.js";import{t as N}from"./circle-plus-check-toggle-DdjUiOo1.js";var P=e(t(),1),F=`${o.PRODUCTION}/settings/integrations`,I=[`github`,`slack`];function L(e){let t=e.requiredIntegrationIds;return t.length>0&&t.every(e=>I.includes(e))}function R(e){switch(e){case`local`:return{target:e,testId:`responder-deployment-option-local`,titleKey:c.RESPONDER_DEPLOYMENT$LOCAL_TITLE,descriptionKey:c.RESPONDER_DEPLOYMENT$LOCAL_DESCRIPTION,primaryActionKey:c.RESPONDER_DEPLOYMENT$LOCAL_ACTION,primaryActionTestId:`responder-deployment-continue-local`,action:{kind:`launch-local`}};case`openhands-cloud`:return{target:e,testId:`responder-deployment-option-openhands-cloud`,titleKey:c.RESPONDER_DEPLOYMENT$OPENHANDS_CLOUD_TITLE,descriptionKey:c.RESPONDER_DEPLOYMENT$OPENHANDS_CLOUD_DESCRIPTION,primaryActionKey:c.RESPONDER_DEPLOYMENT$OPENHANDS_CLOUD_ACTION,primaryActionTestId:`responder-deployment-open-openhands-cloud`,action:{kind:`open-url`,url:F}};case`user-cloud`:throw Error(`User Cloud responder deployment is not yet supported`);default:return e}}var z=[`local`,`openhands-cloud`],B=[{id:`github-pr-reviewer`,name:`GitHub Code Review Agent`,category:`Code review`,description:`Watch for a configurable label on GitHub pull requests, inspect full PR and repository context, and post an AI review comment once per label event.`,requiredIntegrationIds:[`github`],popularityRank:100,estimatedSetupMinutes:4,prompt:`/pr-reviewer:setup`,exampleImplementation:`Trigger: cron polling for open GitHub PRs with a configured label such as openhands-review
|
|
2
|
-
Required secret: GITHUB_PERSONAL_ACCESS_TOKEN
|
|
3
|
-
|
|
4
|
-
1. Read repository, trigger label, review tone, and polling schedule from setup.
|
|
5
|
-
2. List open PRs and find the latest matching GitHub labeled issue event for each labeled PR.
|
|
6
|
-
3. Deduplicate on the label event ID so every label application queues exactly one review.
|
|
7
|
-
4. Start an OpenHands conversation that clones the repo, checks out the exact PR head SHA, and inspects PR discussion, review comments, changed files, diff, and surrounding code.
|
|
8
|
-
5. Post an acknowledgement with the conversation link, then post the final AI review comment only if the PR is still open and the head SHA has not changed.`},{id:`github-repo-monitor`,name:`GitHub repository monitor`,category:`Developer tools`,description:`Watch a repository for @OpenHands mentions in issues and PR comments, start a conversation, and post the agent's reply back to GitHub.`,requiredIntegrationIds:[`github`],popularityRank:98,estimatedSetupMinutes:5,prompt:`/github-monitor:poll`,exampleImplementation:`Trigger: cron, every minute (configurable)
|
|
9
|
-
Required secret: GITHUB_PERSONAL_ACCESS_TOKEN
|
|
10
|
-
|
|
11
|
-
1. Poll GitHub for new issue and PR comments since the last run.
|
|
12
|
-
2. Match comments containing the trigger phrase (case-insensitive, default: @OpenHands).
|
|
13
|
-
3. Post an acknowledgment comment with a link to the new OpenHands conversation.
|
|
14
|
-
4. Forward follow-up replies in the same thread to the running conversation.
|
|
15
|
-
5. Post the agent's final response back to GitHub when the conversation completes.`},{id:`slack-standup-digest`,name:`Slack standup digest`,category:`Team updates`,description:`Summarize yesterday’s Slack activity into an async standup note with blockers, decisions, and owners.`,requiredIntegrationIds:[`slack`],popularityRank:94,estimatedSetupMinutes:5,prompt:`/standup-digest:setup`,exampleImplementation:`Trigger: cron, weekday mornings
|
|
16
|
-
Required MCP: Slack
|
|
17
|
-
|
|
18
|
-
1. Search configured channels for messages since the last digest window.
|
|
19
|
-
2. Cluster updates into shipped work, active work, blockers, and decisions.
|
|
20
|
-
3. TODO: choose a safe allowlist for channels and whether DMs are excluded.
|
|
21
|
-
4. Draft a Slack message with owners, links, and unanswered questions.
|
|
22
|
-
5. Optionally post to the configured standup channel.`},{id:`slack-channel-monitor`,name:`Slack channel monitor`,category:`Team communication`,description:`Watch Slack channels for @openhands mentions, open a conversation with the message context, reply when the agent finishes, and continue the same conversation from triggered Slack thread follow-ups.`,requiredIntegrationIds:[`slack`],popularityRank:92,estimatedSetupMinutes:7,prompt:`/slack-monitor:poll`,exampleImplementation:`Trigger: cron, every minute
|
|
23
|
-
Required secret: SLACK_BOT_TOKEN or SLACK_USER_TOKEN
|
|
24
|
-
|
|
25
|
-
1. Poll up to 10 configured Slack channels for new messages since the last run.
|
|
26
|
-
2. Match messages containing the trigger phrase (default: @openhands).
|
|
27
|
-
3. React with 👀 and start an OpenHands conversation with the message and recent channel context.
|
|
28
|
-
4. Post a thread reply with a link to the conversation, then post the agent response when done.
|
|
29
|
-
5. Keep the thread in a short follow-up watch window and forward only replies that repeat the trigger phrase to the same conversation, with per-thread backoff for quiet threads.`},{id:`linear-triage-assistant`,name:`Linear issue triage assistant`,category:`Project management`,description:`Classify new Linear issues, suggest labels, find duplicates, and ask clarifying questions.`,requiredIntegrationIds:[`linear`],popularityRank:90,estimatedSetupMinutes:3,prompt:`/linear-triage:setup`,exampleImplementation:`Trigger: linear Issue create
|
|
30
|
-
Required MCP: Linear
|
|
31
|
-
|
|
32
|
-
1. Load the new issue, team context, project, labels, and recent similar issues.
|
|
33
|
-
2. Score priority and classify the request as bug, feature, support, or chore.
|
|
34
|
-
3. TODO: map local team labels and priority conventions.
|
|
35
|
-
4. Add a triage comment with rationale and suggested next actions.
|
|
36
|
-
5. Optionally update labels, priority, and assignee.`},{id:`research-brief-writer`,name:`Research brief writer`,category:`Research`,description:`Monitor a topic, gather sources from the web, and publish a short brief for your team.`,requiredIntegrationIds:[`tavily`,`notion`],popularityRank:84,estimatedSetupMinutes:7,prompt:`/research-brief:setup`,exampleImplementation:`Trigger: cron, weekly or daily
|
|
37
|
-
Required MCPs: Tavily, Notion
|
|
38
|
-
|
|
39
|
-
1. Run focused Tavily searches for configured topics and competitors.
|
|
40
|
-
2. Deduplicate sources and rank them by freshness and authority.
|
|
41
|
-
3. TODO: confirm citation format and destination Notion database schema.
|
|
42
|
-
4. Write an executive summary, implications, and recommended actions.
|
|
43
|
-
5. Create or update a Notion page with citations and source links.`},{id:`incident-retrospective-drafter`,name:`Incident retrospective drafter`,category:`Reliability`,description:`Collect incident chatter and issue updates, then draft a timeline and follow-up checklist.`,requiredIntegrationIds:[`slack`,`linear`,`notion`],popularityRank:78,estimatedSetupMinutes:8,prompt:`/incident-retro:setup`,exampleImplementation:`Trigger: manual, cron, or incident label added
|
|
44
|
-
Required MCPs: Slack, Linear, Notion
|
|
45
|
-
|
|
46
|
-
1. Gather incident messages, timestamps, and linked issue references.
|
|
47
|
-
2. Pull Linear follow-up tickets, owners, and status.
|
|
48
|
-
3. TODO: define the incident identifier format and approved Notion template.
|
|
49
|
-
4. Build a timeline, impact summary, root-cause hypotheses, and action items.
|
|
50
|
-
5. Publish a draft retrospective and notify the incident owner.`},{id:`jira-issue-to-pr`,name:`Jira issue to GitHub PR`,category:`Project management`,description:`Watch a Jira Cloud project for issues with a configurable label and automatically open a GitHub pull request for each new issue found. The target GitHub repo is read from the ticket body - no repo parameter required at deploy time.`,requiredIntegrationIds:[`jira`,`github`],popularityRank:85,estimatedSetupMinutes:5,prompt:`Set up a Jira automation to create pull requests`,exampleImplementation:`Trigger: cron polling (e.g. every 5 minutes)
|
|
51
|
-
Required secrets: Jira API token, GitHub personal access token (repo + workflow scope)
|
|
52
|
-
|
|
53
|
-
1. Collect Jira base URL, email, API token secret name, label to watch, and cron schedule from the user. No GitHub repo is needed at deploy time - each ticket must include the target repo (owner/repo) in its body.
|
|
54
|
-
2. Poll POST /rest/api/3/search/jql on the Jira Cloud instance to find open issues carrying the configured label.
|
|
55
|
-
3. Deduplicate against a KV-store-backed set of already-processed issue keys so re-runs never create duplicate PRs.
|
|
56
|
-
4. For each new issue, start an independent OpenHands agent conversation that extracts the GitHub repo from the ticket body, clones it, creates a branch named after the Jira key, implements or scaffolds the requested change, and opens a pull request.
|
|
57
|
-
5. Immediately after the conversation is created, post a Jira comment on the issue: 'I'm on it: <conversation URL>'.
|
|
58
|
-
6. Persist the processed issue key immediately after dispatching so the next poll skips it.`}],V=n(),H=`inline-flex h-10 w-10 shrink-0 overflow-hidden rounded-lg border border-white/10 bg-surface-raised shadow-[inset_0_1px_0_rgba(255,255,255,0.18)]`;function U(e){return e.slice(0,4)}function W({entries:e,className:t,testId:n}){let r=U(e);if(r.length===0)return(0,V.jsx)(k,{entry:null,size:`md`,className:t,testId:n});if(r.length===1)return(0,V.jsx)(k,{entry:r[0],size:`md`,className:t,testId:n});if(r.length===2)return(0,V.jsx)(`span`,{"aria-hidden":`true`,"data-testid":n,"data-layout":`overlap`,className:s(H,`items-center justify-center`,t),children:(0,V.jsx)(`span`,{className:`flex items-center justify-center -space-x-2`,children:r.map(e=>(0,V.jsx)(k,{entry:e,size:`sm`,className:`ring-2 ring-surface-raised`},e.id))})});let i=[r[0]??null,r[1]??null,r[2]??null,r[3]??null];return(0,V.jsx)(`span`,{"aria-hidden":`true`,"data-testid":n,"data-layout":`quadrants`,className:s(H,`grid grid-cols-2 grid-rows-2 gap-0.5 p-1`,t),children:i.map((e,t)=>e?(0,V.jsx)(`span`,{className:`flex items-center justify-center`,children:(0,V.jsx)(k,{entry:e,size:`xs`})},e.id):(0,V.jsx)(`span`,{"aria-hidden":`true`},`empty-${t}`))})}function G({count:e}){return(0,V.jsx)(`span`,{className:`ml-2 inline-flex items-center justify-center rounded-full bg-surface-raised px-2 py-0.5 text-xs text-foreground`,children:e})}function K(e){return e.map((e,t)=>({automation:e,index:t})).sort((e,t)=>(t.automation.popularityRank??0)-(e.automation.popularityRank??0)||e.index-t.index).map(({automation:e})=>e)}var q=K(B),J=[`github-pr-reviewer`,`github-repo-monitor`,`slack-channel-monitor`];function Y(e){return J.includes(e.id)}function X(e){let t=D(l);return e.requiredIntegrationIds.map(e=>j(e,t)).filter(e=>!!e)}function Z(e,t,n){let r=n.trim().toLowerCase();return r?[e.name,e.category,e.description,e.prompt,...t.map(e=>e.name),...t.flatMap(e=>e.keywords??[])].join(` `).toLowerCase().includes(r):!0}function Q(e){return X(e).length>0}function ee(e,t,n,r){let i=e.map(e=>{let n=!!O(e,t);return{id:`mcp-${e.id}`,node:(0,V.jsxs)(`span`,{className:s(S,`gap-1`),children:[(0,V.jsx)(k,{entry:e,size:`xs`}),e.name,n?(0,V.jsx)(`span`,{className:`text-white`,children:r(c.RECOMMENDED_AUTOMATIONS$CONNECTED)}):null]})}});return n>0&&i.push({id:`missing-connect`,node:(0,V.jsx)(`span`,{className:S,children:r(c.RECOMMENDED_AUTOMATIONS$MISSING_CONNECT,{count:n})})}),i}function $({automations:e,installedServers:t,onSelect:n,translate:r}){return(0,V.jsx)(`div`,{className:s(`mt-3`,T),children:e.map(e=>{let i=X(e),a=i.filter(e=>!O(e,t)).length;return(0,V.jsx)(`button`,{type:`button`,"data-testid":`recommended-automation-card-${e.id}`,onClick:()=>n(e),className:s(`flex min-w-0 overflow-hidden p-4 text-left rounded-xl bg-surface-raised`,w),children:(0,V.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-3`,children:[(0,V.jsx)(W,{entries:i,testId:`recommended-automation-icon-${e.id}`}),(0,V.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-3`,children:[(0,V.jsxs)(`header`,{className:`flex items-start justify-between gap-3`,children:[(0,V.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,V.jsx)(`h3`,{className:`truncate text-sm font-semibold text-white`,children:e.name}),(0,V.jsx)(`p`,{className:`mt-0.5 truncate text-xs text-tertiary-alt`,children:e.category})]}),(0,V.jsx)(N,{testId:`recommended-automation-plus-${e.id}`})]}),(0,V.jsx)(`p`,{className:`line-clamp-2 text-xs leading-relaxed text-tertiary-light`,children:e.description}),(0,V.jsx)(M,{pills:ee(i,t,a,r),testId:`recommended-automation-pills-${e.id}`})]})]})},e.id)})})}function te({backendKind:e,installedServers:t,query:n=``,onSelect:i,scrollableGrid:a=!1}){let{t:o}=r(`openhands`),l=q.filter(e=>{let t=X(e);return Q(e)&&Z(e,t,n)});if(l.length===0)return null;let u=l.filter(Y),d=l.filter(e=>!Y(e));return(0,V.jsx)(`section`,{"data-testid":`recommended-automations-section`,className:s(a&&`flex min-h-0 flex-1 flex-col`),children:(0,V.jsxs)(`div`,{"data-testid":a?`recommended-automations-scroll-area`:void 0,className:s(`mt-3`,C,a&&`min-h-0 flex-1 overflow-y-auto custom-scrollbar-always`),children:[u.length>0&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:`flex items-center`,children:[(0,V.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:o(c.RECOMMENDED_AUTOMATIONS$SECTION_TITLE)}),(0,V.jsx)(G,{count:u.length})]}),(0,V.jsx)(`p`,{className:`mt-1 text-sm text-muted`,children:o(c.RECOMMENDED_AUTOMATIONS$SECTION_DESCRIPTION)}),(0,V.jsx)($,{automations:u,installedServers:t,onSelect:i,translate:o})]}),d.length>0&&(0,V.jsxs)(`section`,{"data-testid":`recommended-automations-beta-section`,className:s(u.length>0&&`mt-8`),children:[(0,V.jsxs)(`div`,{"data-testid":`recommended-automations-beta-heading`,className:`flex items-center`,children:[(0,V.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:o(c.RECOMMENDED_AUTOMATIONS$BETA_LABEL)}),(0,V.jsx)(G,{count:d.length})]}),(0,V.jsx)($,{automations:d,installedServers:t,onSelect:i,translate:o})]})]})})}function ne({isOpen:e,onClose:t,onContinueLocal:n,onOpenUrl:i}){let{t:a}=r(`openhands`);return e?(0,V.jsx)(p,{onClose:t,"aria-label":a(c.RESPONDER_DEPLOYMENT$TITLE),children:(0,V.jsxs)(`div`,{"data-testid":`responder-deployment-modal`,className:`relative flex w-full max-w-3xl flex-col rounded-xl border border-[var(--oh-border)] bg-base-secondary`,children:[(0,V.jsx)(b,{onClose:t,testId:`responder-deployment-modal-close`}),(0,V.jsxs)(`header`,{className:`flex-shrink-0 px-6 pb-4 pt-6`,children:[(0,V.jsx)(`h2`,{className:s(`pr-6`,m),children:a(c.RESPONDER_DEPLOYMENT$TITLE)}),(0,V.jsx)(`p`,{className:`mt-2 text-sm text-muted`,children:a(c.RESPONDER_DEPLOYMENT$DESCRIPTION)})]}),(0,V.jsx)(`div`,{className:`flex flex-col gap-3 px-6 pb-6 sm:flex-row`,children:z.map(e=>{let t=R(e),{action:r}=t;return(0,V.jsxs)(`div`,{"data-testid":t.testId,className:`flex flex-1 flex-col gap-3 rounded-xl border border-[var(--oh-border)] bg-surface-raised p-4`,children:[(0,V.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,V.jsx)(`h3`,{className:`text-sm font-semibold text-white`,children:a(t.titleKey)}),(0,V.jsx)(`p`,{className:`text-xs leading-relaxed text-tertiary-light`,children:a(t.descriptionKey)})]}),(0,V.jsx)(h,{type:`button`,variant:`primary`,className:`mt-auto`,testId:t.primaryActionTestId,onClick:()=>{r.kind===`launch-local`?n():i(r.url)},children:a(t.primaryActionKey)})]},t.target)})})]})}):null}function re(e){let t=D(l);return e.requiredIntegrationIds.map(e=>j(e,t)).filter(e=>!!e)}function ie(e){return e}function ae({query:e,onLaunched:t,scrollableGrid:n=!1}){let r=a(),{navigate:o}=g(),{data:s}=f(),{trackPrebuiltAutomationEnabled:c}=u(),l=x(),p=i(),m=y(e=>e.setMessageToSend),[h,b]=(0,P.useState)(null),[S,C]=(0,P.useState)(null),[w,T]=(0,P.useState)([]),D=(0,P.useRef)(!1),k=(0,P.useRef)(!1),j=(0,P.useMemo)(()=>E(d(s?.agent_settings?.mcp_config)).filter(e=>e.enabled!==!1),[s?.agent_settings?.mcp_config]),M=(0,P.useCallback)(e=>{if(k.current||l.isPending||p)return;k.current=!0;let n=ie(e.prompt);l.mutate({},{onSuccess:r=>{c({automationName:e.name,automationCategory:e.category}),r.conversation_id.startsWith(`task-`)&&r.task_id?v(r.task_id,n):_(r.conversation_id,{draftMessage:n}),o?.(`/conversations/${r.conversation_id}`),t?.(),window.setTimeout(()=>m(n),0)},onError:()=>{k.current=!1}})},[r.backend.kind,l,p,o,t,m,c]),N=(0,P.useCallback)(e=>re(e).filter(e=>!O(e,j)),[j]),F=e=>{let t=N(e);if(t.length===0){M(e);return}b(e),T(t)},I=e=>{if(!(k.current||l.isPending||p||w.length>0||S!==null)){if(L(e)){C(e);return}F(e)}},R=()=>{let e=S;C(null),e&&F(e)},z=e=>{C(null),window.open(e,`_blank`,`noopener,noreferrer`)},B=()=>{C(null)},H=()=>{if(D.current){D.current=!1;return}b(null),T([])},U=()=>{D.current=!0,T(e=>{let t=e.slice(1);if(t.length===0){let e=h;window.setTimeout(()=>{b(null),e&&M(e)},0)}return t})},W=w[0]??null;return r.backend.kind===`cloud`?null:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(te,{backendKind:r.backend.kind,installedServers:j,query:e,onSelect:I,scrollableGrid:n}),W&&(0,V.jsx)(A,{entry:W,existingServers:j,onClose:H,onSuccess:U},W.id),(0,V.jsx)(ne,{isOpen:S!==null,onClose:B,onContinueLocal:R,onOpenUrl:z})]})}export{G as n,ae as t};
|