@openhands/agent-canvas 1.7.2 → 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-DP5rcauH.js → Trans-Bwpzk1wT.js} +1 -1
- package/build/assets/{acp-providers-BHKZvEm5.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-BIOsUglV.js → agent-settings-WzqXk6B4.js} +2 -2
- package/build/assets/{alert-banner-C1nzoXBC.js → alert-banner-DR8EVyZM.js} +1 -1
- package/build/assets/api-error-message-e16L1kwH.js +1 -0
- package/build/assets/api-key-entry-screen-DI0I04O3.js +1 -0
- package/build/assets/app-settings-DGistSFV.js +1 -0
- 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-Be_L157B.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-BNpEylNP.js → backend-synced-settings-badge-BnzI8Ysj.js} +1 -1
- package/build/assets/{badge-DwgrwohM.js → badge-1Mf1iPcX.js} +1 -1
- package/build/assets/{base-modal-CSHhJTSr.js → base-modal-BBuy0WQQ.js} +1 -1
- package/build/assets/{brand-button-CQO8oqVo.js → brand-button-DGN6Y9o6.js} +1 -1
- package/build/assets/browser-D_ekTlTS.js +6 -0
- package/build/assets/{browser-tab-CEApjoEV.js → browser-tab-D4a4Ou_w.js} +1 -1
- package/build/assets/{chat-send-button-D4614wUz.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-E3Ecb_gg.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-C8_eGdp2.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-gZtbojCm.js → confirmation-modal-NCUPr2-O.js} +1 -1
- package/build/assets/{context-menu-list-item-BTHGFhIx.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-BCMHkGQk.js → conversation-tab-empty-state-BCZ7rUMH.js} +1 -1
- package/build/assets/{copy-B8Y5ufoR.js → copy-DCmZtz6n.js} +1 -1
- package/build/assets/{copy-to-clipboard-button-C4l3CMSd.js → copy-to-clipboard-button-D_Lp6-Fl.js} +1 -1
- package/build/assets/{device-verify-C_M7Z8xs.js → device-verify-DLmolX8Q.js} +1 -1
- package/build/assets/{dropdown-classes-DQlj-MpS.js → dropdown-classes-BB8rzqXL.js} +1 -1
- package/build/assets/{entry.client-DETaouwO.js → entry.client-BbIYOsIg.js} +2 -2
- package/build/assets/{enum-filter-dropdown-paB-lFSP.js → enum-filter-dropdown-C08-srev.js} +1 -1
- package/build/assets/{environment-switch-overlay-D0FgCMqs.js → environment-switch-overlay-BepBBX66.js} +1 -1
- package/build/assets/extensions-hub-R3KNv-5V.js +1 -0
- package/build/assets/extensions-navigation-CfWFmI1I.js +1 -0
- package/build/assets/{external-link-Cnnd6ikC.js → external-link-BdBSg8rk.js} +1 -1
- package/build/assets/files-tab-DEq8MbHu.js +1 -0
- package/build/assets/{form-control-classes-CSPevi7c.js → form-control-classes-DAfsCJTe.js} +1 -1
- package/build/assets/{format-time-delta-DuhE50B-.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-suUKd5if.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-Ccnhte5b.js → launch-B1POpHuP.js} +1 -1
- package/build/assets/{list-todo-_BXQzOiB.js → list-todo-DtiL3lTp.js} +1 -1
- package/build/assets/llm-not-configured-banner-3tMsM4K6.js +27 -0
- package/build/assets/llm-settings-CXo8iPNW.js +1 -0
- package/build/assets/llm-settings-D0W8mJDk.js +1 -0
- package/build/assets/{llm-subscription-service-W5BprsNA.js → llm-subscription-service-DBJbfd8Z.js} +1 -1
- package/build/assets/loader-circle-B4QDBARx.js +1 -0
- package/build/assets/{loading-spinner-CcpnCr_d.js → loading-spinner-DfZ_bhV7.js} +1 -1
- package/build/assets/manage-backends-modal-CwyWsiag.js +1 -0
- package/build/assets/manifest-39f4789d.js +1 -0
- package/build/assets/{markdown-renderer-CvOO0YIr.js → markdown-renderer-DgiLLhW6.js} +6 -6
- 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-DQhiw-AR.js → modal-body-CMsDpalT.js} +1 -1
- package/build/assets/{modal-classes-YaEEa5eZ.js → modal-classes-B6PDrxXo.js} +1 -1
- package/build/assets/{modal-close-button-turIYn0t.js → modal-close-button-DyxBZaAb.js} +1 -1
- package/build/assets/{onboarding-BegDrOKn.js → onboarding-47hh2IHA.js} +1 -1
- package/build/assets/onboarding-modal-9BuvvROo.js +1 -0
- package/build/assets/organization-service.api-UDy63-oC.js +1 -0
- package/build/assets/{pencil-8_lvWDoZ.js → pencil-BjgtZmWp.js} +1 -1
- package/build/assets/{planner-tab-w6HT0N_A.js → planner-tab-BWk8885v.js} +1 -1
- package/build/assets/plugins-management-service-CjkgF2dd.js +1 -0
- package/build/assets/plus-DrKuuvMe.js +1 -0
- package/build/assets/profiles-service.api-CukSFLzz.js +1 -0
- package/build/assets/providers-CqUWC85T.js +1 -0
- package/build/assets/proxy-BBUG3sd2.js +1 -0
- package/build/assets/{puzzle-DXWdfaa7.js → puzzle-BoNc6zZ8.js} +1 -1
- package/build/assets/recommended-automations-launcher-ejxy1P27.js +1 -0
- package/build/assets/{refresh-cw-D7CYLy-d.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-nImDoY6-.js +1 -0
- package/build/assets/{sdk-section-page-BW-i45yr.js → sdk-section-page-BxMrtUNV.js} +1 -1
- package/build/assets/search-Dc2qR4O2.js +1 -0
- package/build/assets/secrets-service-Dhjh3HhH.js +1 -0
- package/build/assets/{secrets-settings-D7U1ErCH.js → secrets-settings-CPdxceT_.js} +1 -1
- package/build/assets/segmented-toggle-Do6oyepX.js +1 -0
- package/build/assets/settings-BRbnfKEm.js +1 -0
- package/build/assets/{settings-dropdown-input-Dx6vlkgf.js → settings-dropdown-input-DYCULKpp.js} +1 -1
- package/build/assets/{settings-index-COAdxm2Q.js → settings-index-C9o2NBO0.js} +1 -1
- package/build/assets/settings-input-B-q2gkVy.js +1 -0
- package/build/assets/{settings-list-classes-gQdBahdt.js → settings-list-classes-WpQi0q1L.js} +1 -1
- package/build/assets/{settings-modal-CFnbQ8_4.js → settings-modal-CEK0AIx6.js} +1 -1
- package/build/assets/settings-service.api-CZiPD8__.js +1 -0
- package/build/assets/{settings-switch-UNSf8K8I.js → settings-switch-LqKdGxHL.js} +1 -1
- package/build/assets/shared-conversation-Bu-dQlgp.js +1 -0
- package/build/assets/{sidebar-layout-DXHtbEj1.js → sidebar-layout-oHBGQmLh.js} +1 -1
- package/build/assets/{sidebar-mobile-menu-toggle-U78hQRJ1.js → sidebar-mobile-menu-toggle-ND-hgygu.js} +1 -1
- package/build/assets/{sidebar-nav-link-pvUivfK2.js → sidebar-nav-link-CrujNA09.js} +1 -1
- package/build/assets/{sidebar-store-DwrYKwYr.js → sidebar-store-Bui-WNEr.js} +1 -1
- package/build/assets/{skill-card-pill-row-D7XCz5uk.js → skill-card-pill-row-CZBI7OqH.js} +1 -1
- package/build/assets/{skill-icon-badge-HqBWZ2Eq.js → skill-icon-badge-BOov_phZ.js} +1 -1
- package/build/assets/{skills-plugins-BPhaNpfx.js → skills-plugins-D0PiHWAD.js} +1 -1
- package/build/assets/{skills-settings-CcwMtnnJ.js → skills-settings-B43KArIz.js} +2 -2
- package/build/assets/{styled-tooltip-DsjDnR_W.js → styled-tooltip-C7grwnOX.js} +1 -1
- package/build/assets/{task-list-tab-BmaTwjaS.js → task-list-tab-R3ac6m7O.js} +1 -1
- package/build/assets/{terminal-BRcoba5B.js → terminal-yqkNdEAx.js} +1 -1
- package/build/assets/{toggle-switch-BptY3XRG.js → toggle-switch-BeSrbgCg.js} +1 -1
- package/build/assets/{trash-2-Bq4lHbTB.js → trash-2-wW5TWcdN.js} +1 -1
- package/build/assets/{typography-C6fuRTTT.js → typography-iYhzLlHO.js} +1 -1
- package/build/assets/{use-acp-credential-form-B0_pZ_uS.js → use-acp-credential-form-DUxbxmbq.js} +1 -1
- package/build/assets/use-activate-agent-profile-CDHA52tC.js +1 -0
- package/build/assets/use-agent-profiles-TsOdIyw5.js +1 -0
- package/build/assets/{use-can-manage-org-profiles-CrG1km7R.js → use-can-manage-org-profiles-Bt1M71u5.js} +1 -1
- package/build/assets/use-cloud-current-user-id-DWt7HCgf.js +1 -0
- package/build/assets/{use-config-Csy8EAP9.js → use-config-CxlEdf_v.js} +1 -1
- package/build/assets/{use-create-conversation-Dsa4nzU9.js → use-create-conversation-nOJ6Um5h.js} +1 -1
- package/build/assets/{use-create-secret-BnxuAjDt.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-gxQlcEy2.js +1 -0
- package/build/assets/use-plugins-marketplace-CVO7sXYR.js +1 -0
- package/build/assets/use-save-agent-profile-D0wC5ExW.js +1 -0
- package/build/assets/{use-save-settings-BRh9p_fv.js → use-save-settings-L3aMaDeS.js} +1 -1
- package/build/assets/use-settings-8nt3DGxW.js +1 -0
- package/build/assets/use-settings-nav-items-DHAAD-zk.js +16 -0
- package/build/assets/use-skills-CE6miQ3r.js +1 -0
- package/build/assets/use-tracking-BGboadaZ.js +68 -0
- package/build/assets/{use-user-conversation-GnGhs_Ob.js → use-user-conversation-BIIpGUgM.js} +1 -1
- package/build/assets/useInfiniteQuery-BLRVmVPU.js +1 -0
- package/build/assets/{useMutation-DyQXZFEF.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-CJ7amdtQ.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~b0bpqexo-CbTboogo.js} +2 -2
- 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-vm3f67Pz.js → vendor~files-tab-C7RmQJwN.js} +1 -1
- package/build/assets/{vendor~index-home~home~conversation-panel~conversation-kX4LrGQC.js → vendor~index-home~home~conversation-panel~conversation-Bqp1ZqJM.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation-DpA6fir3.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-Bw4AuHN1.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-CaCzojbc.js → verification-settings-DBsnSXC3.js} +1 -1
- package/build/assets/x-omAzpXkl.js +1 -0
- package/build/favicon-16x16.png +0 -0
- package/build/favicon-32x32.png +0 -0
- package/build/favicon.ico +0 -0
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +39 -2
- package/build/locales/ca/openhands.json +39 -2
- package/build/locales/de/openhands.json +39 -2
- package/build/locales/en/openhands.json +40 -3
- package/build/locales/es/openhands.json +39 -2
- package/build/locales/fr/openhands.json +39 -2
- package/build/locales/it/openhands.json +39 -2
- package/build/locales/ja/openhands.json +39 -2
- package/build/locales/ko-KR/openhands.json +39 -2
- package/build/locales/no/openhands.json +39 -2
- package/build/locales/pt/openhands.json +39 -2
- package/build/locales/tr/openhands.json +39 -2
- package/build/locales/uk/openhands.json +39 -2
- package/build/locales/zh-CN/openhands.json +39 -2
- package/build/locales/zh-TW/openhands.json +39 -2
- package/config/defaults.json +4 -4
- 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 +136 -99
- package/dist/api/automation-service/automation-service.api.js.map +1 -1
- package/dist/api/backend-registry/storage.cjs +1 -1
- package/dist/api/backend-registry/storage.cjs.map +1 -1
- package/dist/api/backend-registry/storage.js +1 -1
- package/dist/api/backend-registry/storage.js.map +1 -1
- package/dist/api/backend-registry/types.d.ts +2 -0
- package/dist/api/cloud/conversation-service.api.cjs +1 -1
- package/dist/api/cloud/conversation-service.api.js +22 -22
- package/dist/api/mcp-service/mcp-service.api.cjs +1 -1
- package/dist/api/mcp-service/mcp-service.api.cjs.map +1 -1
- package/dist/api/mcp-service/mcp-service.api.js +19 -19
- package/dist/api/mcp-service/mcp-service.api.js.map +1 -1
- package/dist/api/settings-service/settings-service.api.cjs +1 -1
- package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
- package/dist/api/settings-service/settings-service.api.js +26 -12
- package/dist/api/settings-service/settings-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/mcp-page/custom-server-editor.cjs +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.js +16 -16
- package/dist/components/features/mcp-page/installed-server-card.cjs +1 -1
- package/dist/components/features/mcp-page/installed-server-card.cjs.map +1 -1
- package/dist/components/features/mcp-page/installed-server-card.d.ts +2 -2
- package/dist/components/features/mcp-page/installed-server-card.js +6 -7
- package/dist/components/features/mcp-page/installed-server-card.js.map +1 -1
- package/dist/components/features/mcp-page/installed-servers-section.cjs +1 -1
- package/dist/components/features/mcp-page/installed-servers-section.cjs.map +1 -1
- package/dist/components/features/mcp-page/installed-servers-section.d.ts +2 -2
- package/dist/components/features/mcp-page/installed-servers-section.js +2 -2
- package/dist/components/features/mcp-page/installed-servers-section.js.map +1 -1
- package/dist/components/features/mcp-page/mcp-server-health.cjs +1 -1
- package/dist/components/features/mcp-page/mcp-server-health.js +4 -4
- package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs +1 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs.map +1 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-form.js +2 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-form.js.map +1 -1
- 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 +3 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/contexts/active-backend-context.cjs +1 -1
- package/dist/contexts/active-backend-context.cjs.map +1 -1
- package/dist/contexts/active-backend-context.d.ts +3 -2
- package/dist/contexts/active-backend-context.js +55 -42
- package/dist/contexts/active-backend-context.js.map +1 -1
- package/dist/favicon-16x16.png +0 -0
- package/dist/favicon-32x32.png +0 -0
- package/dist/favicon.ico +0 -0
- package/dist/hooks/mutation/use-update-mcp-server.cjs +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.js +5 -5
- 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-cloud-current-user-id.cjs +1 -1
- package/dist/hooks/query/use-cloud-current-user-id.cjs.map +1 -1
- package/dist/hooks/query/use-cloud-current-user-id.js +7 -5
- package/dist/hooks/query/use-cloud-current-user-id.js.map +1 -1
- package/dist/hooks/query/use-cloud-organizations.cjs +1 -1
- package/dist/hooks/query/use-cloud-organizations.cjs.map +1 -1
- package/dist/hooks/query/use-cloud-organizations.js +5 -1
- package/dist/hooks/query/use-cloud-organizations.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-can-manage-org-profiles.cjs +1 -1
- package/dist/hooks/use-can-manage-org-profiles.cjs.map +1 -1
- package/dist/hooks/use-can-manage-org-profiles.js +2 -1
- package/dist/hooks/use-can-manage-org-profiles.js.map +1 -1
- 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 +28 -10
- 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 +38 -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 +645 -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 +39 -2
- package/dist/locales/ca/openhands.json +39 -2
- package/dist/locales/de/openhands.json +39 -2
- package/dist/locales/en/openhands.json +40 -3
- package/dist/locales/es/openhands.json +39 -2
- package/dist/locales/fr/openhands.json +39 -2
- package/dist/locales/it/openhands.json +39 -2
- package/dist/locales/ja/openhands.json +39 -2
- package/dist/locales/ko-KR/openhands.json +39 -2
- package/dist/locales/no/openhands.json +39 -2
- package/dist/locales/pt/openhands.json +39 -2
- package/dist/locales/tr/openhands.json +39 -2
- package/dist/locales/uk/openhands.json +39 -2
- package/dist/locales/zh-CN/openhands.json +39 -2
- package/dist/locales/zh-TW/openhands.json +39 -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/@openhands/typescript-client/dist/client/settings-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/settings-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/settings-client.js +9 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/settings-client.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 +3 -3
- package/dist/package.js.map +1 -1
- package/dist/routes/app-settings.cjs +1 -1
- package/dist/routes/app-settings.js +5 -5
- package/dist/routes/mcp.cjs +1 -1
- package/dist/routes/mcp.cjs.map +1 -1
- package/dist/routes/mcp.js +73 -82
- package/dist/routes/mcp.js.map +1 -1
- package/dist/services/telemetry.cjs +1 -1
- package/dist/services/telemetry.cjs.map +1 -1
- package/dist/services/telemetry.d.ts +8 -0
- package/dist/services/telemetry.js +163 -116
- package/dist/services/telemetry.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/types/mcp-server.d.ts +5 -0
- package/dist/types/settings.d.ts +3 -0
- 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/mcp-config.cjs +1 -1
- package/dist/utils/mcp-config.cjs.map +1 -1
- package/dist/utils/mcp-config.d.ts +8 -0
- package/dist/utils/mcp-config.js +25 -20
- package/dist/utils/mcp-config.js.map +1 -1
- package/dist/utils/mcp-installed-servers.cjs +1 -1
- package/dist/utils/mcp-installed-servers.cjs.map +1 -1
- package/dist/utils/mcp-installed-servers.js +6 -3
- package/dist/utils/mcp-installed-servers.js.map +1 -1
- 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 +3 -3
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/check-translation-completeness.cjs +1 -0
- package/scripts/dev-safe.mjs +17 -12
- 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-BlZPzZNU.js +0 -1
- package/build/assets/agent-context-settings-CTaN-Iw9.js +0 -1
- package/build/assets/agent-profiles-settings-CR4VTqv_.js +0 -1
- package/build/assets/agent-server-conversation-service.api-Btmi4q6d.js +0 -41
- package/build/assets/agent-settings-KQs-occT.js +0 -1
- package/build/assets/api-key-entry-screen-BhR24gkM.js +0 -1
- package/build/assets/app-settings-Bs4sY8WP.js +0 -1
- package/build/assets/automation-BGP_I1RR.js +0 -1
- package/build/assets/automation-detail-CwDnJbYR.js +0 -2
- package/build/assets/automation-export-Bu-r-EzL.js +0 -2
- package/build/assets/automations-list-CYw7_6FR.js +0 -1
- package/build/assets/backend-form-modal-Ce-KRHOJ.js +0 -1
- package/build/assets/browser-BUDJnBg4.js +0 -6
- package/build/assets/check-BMOG005H.js +0 -1
- package/build/assets/chevron-down-CV1zZP_K.js +0 -1
- package/build/assets/circle-check-lvN_jFN5.js +0 -1
- package/build/assets/client-source-1v-kWLNU.js +0 -1
- package/build/assets/cloud-funnel-analytics-CasMM7EO.js +0 -1
- package/build/assets/command-menu-N_BriUy8.js +0 -1
- package/build/assets/condenser-settings-Czi8cKxV.js +0 -1
- package/build/assets/conversation-C25pc2dT.js +0 -1
- package/build/assets/conversation-CObLYSJd.js +0 -90
- package/build/assets/conversation-panel-C25pc2dT.js +0 -1
- package/build/assets/conversation-state-store-DTq4hFoP.js +0 -1
- package/build/assets/extensions-hub-BKftOQ-X.js +0 -1
- package/build/assets/extensions-navigation-DF24q1H1.js +0 -1
- package/build/assets/files-tab-SAiFCnS5.js +0 -1
- package/build/assets/git-provider-icon-BREx-yUX.js +0 -1
- package/build/assets/home-EPNFgzUh.js +0 -1
- package/build/assets/home-sN90Xcxp.js +0 -1
- package/build/assets/index-home-EPNFgzUh.js +0 -1
- package/build/assets/install-server-modal-BI8yUfmr.js +0 -1
- package/build/assets/llm-not-configured-banner-DTWzISnk.js +0 -27
- package/build/assets/llm-settings-BXk5_Pac.js +0 -1
- package/build/assets/llm-settings-C1vpgWam.js +0 -1
- package/build/assets/loader-circle-6zlEYCJw.js +0 -1
- package/build/assets/manage-backends-modal-DhflyGTf.js +0 -1
- package/build/assets/manifest-8082e879.js +0 -1
- package/build/assets/mcp-CxLPda-W.js +0 -9
- package/build/assets/messages-DINDkPNK.js +0 -40
- package/build/assets/onboarding-modal-DdvE6rzw.js +0 -1
- package/build/assets/organization-service.api-CT2OQlLz.js +0 -1
- package/build/assets/plugins-management-service-DVkoM3eA.js +0 -1
- package/build/assets/plus-vIbGD459.js +0 -1
- package/build/assets/profiles-service.api-CBafmAPO.js +0 -1
- package/build/assets/providers-9UzRB9mT.js +0 -1
- package/build/assets/proxy-C79PCMjo.js +0 -1
- package/build/assets/recommended-automations-launcher-BF2mtAKw.js +0 -58
- package/build/assets/root-B5JXKp1P.css +0 -1
- package/build/assets/root-Sj7W28yE.js +0 -2
- package/build/assets/root-layout-DbhKVoc7.js +0 -3
- package/build/assets/schema-field-CV6bFnoL.js +0 -1
- package/build/assets/search-sKuYKllf.js +0 -1
- package/build/assets/secrets-service-BjK-bPN2.js +0 -1
- package/build/assets/segmented-toggle-DbbD3Tve.js +0 -1
- package/build/assets/settings-Bj5Oo45A.js +0 -1
- package/build/assets/settings-input-BjW_zyTN.js +0 -1
- package/build/assets/settings-service.api-DryhKdSr.js +0 -1
- package/build/assets/shared-conversation-CnMxy7p_.js +0 -1
- package/build/assets/telemetry-cmCL3o6Z.js +0 -2
- package/build/assets/use-activate-agent-profile-DH33MvVj.js +0 -1
- package/build/assets/use-agent-profiles-Dmd_4H8q.js +0 -1
- package/build/assets/use-cloud-current-user-id-B6DP3s47.js +0 -1
- package/build/assets/use-is-authed-BsS4XwSL.js +0 -1
- package/build/assets/use-llm-profiles-BMQoc612.js +0 -1
- package/build/assets/use-onboarding-completion-B-2BTS-y.js +0 -1
- package/build/assets/use-plugins-marketplace-PBc_XNz_.js +0 -1
- package/build/assets/use-save-agent-profile-2Mk9ZX37.js +0 -1
- package/build/assets/use-settings-DBI44RnH.js +0 -1
- package/build/assets/use-settings-nav-items-Cva28C-c.js +0 -16
- package/build/assets/use-skills-RQsCtdzN.js +0 -1
- package/build/assets/use-tracking-CN1nIMnY.js +0 -1
- package/build/assets/utils-qjs_KuS4.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation-EShpjxey.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-DD_UNO02.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~mcp~automations-list~onboarding-modal-Be63Q2Ln.js +0 -1
- package/build/assets/x-EjvKGawc.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,52 +1,58 @@
|
|
|
1
1
|
import { useTranslation as e } from "../../../node_modules/react-i18next/dist/es/useTranslation.js";
|
|
2
2
|
import { I18nKey as t } from "../../../i18n/declaration.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { ChevronDown as n } from "../../../node_modules/lucide-react/dist/esm/icons/chevron-down.js";
|
|
4
|
+
import { Globe as r } from "../../../node_modules/lucide-react/dist/esm/icons/globe.js";
|
|
5
|
+
import { Info as i } from "../../../node_modules/lucide-react/dist/esm/icons/info.js";
|
|
6
|
+
import { Monitor as a } from "../../../node_modules/lucide-react/dist/esm/icons/monitor.js";
|
|
7
|
+
import { cn as o } from "../../../utils/utils.js";
|
|
8
|
+
import { useNavigation as s } from "../../../context/navigation-context.js";
|
|
9
|
+
import { ServerClient as c } from "../../../node_modules/@openhands/typescript-client/dist/client/server-client.js";
|
|
10
|
+
import { isOpenHandsCloudHost as l } from "../../../node_modules/@openhands/typescript-client/dist/client/device-flow-client.js";
|
|
7
11
|
import "../../../node_modules/@openhands/typescript-client/dist/clients.js";
|
|
8
|
-
import { getLockedCloudHost as
|
|
9
|
-
import { getUserFacingConnectionErrorMessage as
|
|
10
|
-
import { getAgentServerClientOptions as
|
|
11
|
-
import { assertAgentServerVersionIsSupported as
|
|
12
|
-
import { useQuery as
|
|
13
|
-
import { useActiveBackendContext as
|
|
14
|
-
import { useTracking as
|
|
15
|
-
import { ModalBackdrop as
|
|
16
|
-
import { MODAL_MAX_WIDTH_VIEWPORT as
|
|
17
|
-
import { modalTitleLgClassName as
|
|
18
|
-
import { ModalCloseButton as
|
|
19
|
-
import { BrandButton as
|
|
20
|
-
import { SettingsInput as
|
|
21
|
-
import { useBackendsHealth as
|
|
22
|
-
import
|
|
23
|
-
import { SegmentedToggle as
|
|
12
|
+
import { getLockedCloudHost as u } from "../../../api/agent-server-config.js";
|
|
13
|
+
import { getUserFacingConnectionErrorMessage as d } from "../../../utils/user-facing-error.js";
|
|
14
|
+
import { getAgentServerClientOptions as f } from "../../../api/agent-server-client-options.js";
|
|
15
|
+
import { assertAgentServerVersionIsSupported as p, getDisplayAgentServerVersion as m } from "../../../api/agent-server-compatibility.js";
|
|
16
|
+
import { useQuery as h } from "../../../node_modules/@tanstack/react-query/build/modern/useQuery.js";
|
|
17
|
+
import { useActiveBackendContext as g } from "../../../contexts/active-backend-context.js";
|
|
18
|
+
import { useTracking as _ } from "../../../hooks/use-tracking.js";
|
|
19
|
+
import { ModalBackdrop as v } from "../../shared/modals/modal-backdrop.js";
|
|
20
|
+
import { MODAL_MAX_WIDTH_VIEWPORT as y, modalWidthClassName as b } from "../../shared/modals/modal-body.js";
|
|
21
|
+
import { modalTitleLgClassName as x, modalTitleLgMediumClassName as S } from "../../../utils/modal-classes.js";
|
|
22
|
+
import { ModalCloseButton as C } from "../../shared/modals/modal-close-button.js";
|
|
23
|
+
import { BrandButton as w } from "../settings/brand-button.js";
|
|
24
|
+
import { SettingsInput as T } from "../settings/settings-input.js";
|
|
25
|
+
import { useBackendsHealth as E } from "../../../hooks/query/use-backends-health.js";
|
|
26
|
+
import D from "../../../assets/branding/openhands-logo-white.js";
|
|
27
|
+
import { SegmentedToggle as O } from "../files-tab/segmented-toggle.js";
|
|
24
28
|
import "../../../api/device-flow-client.js";
|
|
25
|
-
import
|
|
26
|
-
import
|
|
27
|
-
import
|
|
28
|
-
import {
|
|
29
|
-
import
|
|
30
|
-
import {
|
|
29
|
+
import k from "../../../icons/chevron-down-small.js";
|
|
30
|
+
import A from "../../../icons/external-link.js";
|
|
31
|
+
import j from "../../../icons/server.js";
|
|
32
|
+
import { getBackendStatusLabel as M } from "./backend-status-label.js";
|
|
33
|
+
import { BackendStatusDot as N } from "./backend-status-dot.js";
|
|
34
|
+
import { DeviceFlowAuth as P } from "./device-flow-auth.js";
|
|
35
|
+
import F from "react";
|
|
36
|
+
import { jsx as I, jsxs as L } from "react/jsx-runtime";
|
|
31
37
|
//#region src/components/features/backends/backend-form-modal.tsx
|
|
32
|
-
function
|
|
33
|
-
return
|
|
38
|
+
function R(e) {
|
|
39
|
+
return l(e) ? "cloud" : "local";
|
|
34
40
|
}
|
|
35
|
-
function
|
|
41
|
+
function z(e) {
|
|
36
42
|
let t = e.toLowerCase().replace(/^\[|\]$/g, "");
|
|
37
43
|
return !!(t === "localhost" || t === "::1" || t === "::" || t === "0.0.0.0" || /^127\./.test(t) || /^::ffff:127\./i.test(t) || /^10\./.test(t) || /^192\.168\./.test(t) || /^172\.(1[6-9]|2\d|3[01])\./.test(t) || /^fe[89ab][0-9a-f]:/i.test(t) || /^f[cd][0-9a-f]{2}:/i.test(t) || t.endsWith(".local") || !t.includes(".") && !t.includes(":"));
|
|
38
44
|
}
|
|
39
|
-
function
|
|
45
|
+
function B(e) {
|
|
40
46
|
let t = e.trim().replace(/\/+$/, "");
|
|
41
47
|
if (!t) return "";
|
|
42
48
|
if (/^https?:\/\//i.test(t)) return t;
|
|
43
49
|
let n = t.match(/^\[([^\]]+)\]/);
|
|
44
|
-
return `${
|
|
50
|
+
return `${z(n ? n[1] : (t.match(/:/g) ?? []).length > 1 ? t : t.split(":")[0]) ? "http" : "https"}://${t}`;
|
|
45
51
|
}
|
|
46
|
-
function
|
|
52
|
+
function V(e) {
|
|
47
53
|
let t = e.trim();
|
|
48
54
|
if (!t || /\s/.test(t)) return !1;
|
|
49
|
-
let n =
|
|
55
|
+
let n = B(t);
|
|
50
56
|
if (!n) return !1;
|
|
51
57
|
try {
|
|
52
58
|
let e = new URL(n);
|
|
@@ -55,537 +61,741 @@ function F(e) {
|
|
|
55
61
|
return !1;
|
|
56
62
|
}
|
|
57
63
|
}
|
|
58
|
-
var
|
|
59
|
-
function
|
|
64
|
+
var H = "https://app.all-hands.dev", U = "agent-canvas --backend-only --port 8001", W = "https://github.com/OpenHands/OpenHands/blob/main/docs/DEVELOPMENT.md#alternative-development-workflows", G = "https://github.com/OpenHands/OpenHands/blob/main/docs/SELF_HOSTING.md", K = "https://docs.openhands.dev/overview/introduction";
|
|
65
|
+
function q(e, n) {
|
|
60
66
|
return e(t.BACKEND$CONNECTION_TEST_FAILED, {
|
|
61
67
|
host: n,
|
|
62
68
|
interpolation: { escapeValue: !1 }
|
|
63
69
|
});
|
|
64
70
|
}
|
|
65
|
-
function
|
|
66
|
-
return
|
|
71
|
+
function J(e) {
|
|
72
|
+
return d(e);
|
|
67
73
|
}
|
|
68
|
-
function
|
|
69
|
-
let n =
|
|
74
|
+
function Y(e, t) {
|
|
75
|
+
let n = J(t);
|
|
70
76
|
return n ? `${e}\n${n}` : e;
|
|
71
77
|
}
|
|
72
|
-
async function
|
|
78
|
+
async function X(e) {
|
|
73
79
|
if (e.kind !== "local") return { agentServerVersion: null };
|
|
74
|
-
let t = await new
|
|
80
|
+
let t = await new c(f({
|
|
75
81
|
host: e.host,
|
|
76
82
|
sessionApiKey: e.apiKey || null,
|
|
77
83
|
timeout: 5e3
|
|
78
84
|
})).getServerInfo();
|
|
79
|
-
return
|
|
85
|
+
return p(t), { agentServerVersion: m(t) };
|
|
80
86
|
}
|
|
81
|
-
function
|
|
82
|
-
let { t:
|
|
87
|
+
function ee({ backend: n, testIdRoot: r }) {
|
|
88
|
+
let { t: i } = e("openhands"), a = E([n])[n.id], o = a?.isConnected ?? null, s = a?.disabled === !0, l = a?.consecutiveFailures ?? 0, u = a?.lastError ?? null, { data: d } = h({
|
|
83
89
|
queryKey: [
|
|
84
90
|
"backend-version",
|
|
85
91
|
n.host,
|
|
86
92
|
n.apiKey
|
|
87
93
|
],
|
|
88
|
-
queryFn: async () =>
|
|
94
|
+
queryFn: async () => m(await new c(f({
|
|
89
95
|
host: n.host,
|
|
90
96
|
sessionApiKey: n.apiKey || null,
|
|
91
97
|
timeout: 5e3
|
|
92
98
|
})).getServerInfo()),
|
|
93
99
|
retry: !1,
|
|
94
100
|
staleTime: 6e4,
|
|
95
|
-
enabled: n.kind === "local" && !
|
|
96
|
-
}),
|
|
97
|
-
return /* @__PURE__ */
|
|
101
|
+
enabled: n.kind === "local" && !s
|
|
102
|
+
}), p = M(i, n, a), g = n.kind === "cloud" ? i(t.BACKEND$KIND_CLOUD) : i(t.BACKEND$KIND_LOCAL);
|
|
103
|
+
return /* @__PURE__ */ L("div", {
|
|
98
104
|
className: "flex flex-col gap-2",
|
|
99
|
-
children: [/* @__PURE__ */
|
|
105
|
+
children: [/* @__PURE__ */ L("div", {
|
|
100
106
|
"data-testid": `${r}-status`,
|
|
101
107
|
className: "flex items-center gap-3 text-sm",
|
|
102
108
|
children: [
|
|
103
|
-
/* @__PURE__ */
|
|
104
|
-
/* @__PURE__ */
|
|
109
|
+
/* @__PURE__ */ I(N, { isConnected: o }),
|
|
110
|
+
/* @__PURE__ */ I("span", {
|
|
105
111
|
className: "text-white",
|
|
106
112
|
"data-testid": `${r}-status-label`,
|
|
107
|
-
children:
|
|
113
|
+
children: p
|
|
108
114
|
}),
|
|
109
|
-
/* @__PURE__ */
|
|
115
|
+
/* @__PURE__ */ I("span", {
|
|
110
116
|
className: "text-tertiary-alt",
|
|
111
117
|
children: "·"
|
|
112
118
|
}),
|
|
113
|
-
/* @__PURE__ */
|
|
119
|
+
/* @__PURE__ */ I("span", {
|
|
114
120
|
className: "text-[var(--oh-text-tertiary)]",
|
|
115
121
|
children: g
|
|
116
122
|
}),
|
|
117
|
-
|
|
123
|
+
d ? /* @__PURE__ */ I("span", {
|
|
118
124
|
className: "text-xs text-[var(--oh-muted)]",
|
|
119
125
|
"data-testid": `${r}-version`,
|
|
120
|
-
children:
|
|
126
|
+
children: i(t.BACKEND$VERSION_LABEL, { version: d })
|
|
121
127
|
}) : null
|
|
122
128
|
]
|
|
123
|
-
}),
|
|
129
|
+
}), s ? /* @__PURE__ */ L("div", {
|
|
124
130
|
"data-testid": `${r}-status-error`,
|
|
125
131
|
className: "flex flex-col gap-1 rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm",
|
|
126
132
|
children: [
|
|
127
|
-
/* @__PURE__ */
|
|
133
|
+
/* @__PURE__ */ I("span", {
|
|
128
134
|
className: "font-semibold text-red-300",
|
|
129
|
-
children:
|
|
135
|
+
children: i(t.BACKEND$HEALTH_FAILED_TITLE)
|
|
130
136
|
}),
|
|
131
|
-
/* @__PURE__ */
|
|
137
|
+
/* @__PURE__ */ I("span", {
|
|
132
138
|
className: "text-xs text-[var(--oh-text-tertiary)]",
|
|
133
|
-
children:
|
|
139
|
+
children: i(t.BACKEND$HEALTH_FAILED_DETAIL, { count: l })
|
|
134
140
|
}),
|
|
135
|
-
|
|
141
|
+
u ? /* @__PURE__ */ I("span", {
|
|
136
142
|
"data-testid": `${r}-status-error-message`,
|
|
137
143
|
className: "text-xs text-red-300 whitespace-pre-wrap break-words",
|
|
138
|
-
children:
|
|
144
|
+
children: u
|
|
139
145
|
}) : null
|
|
140
146
|
]
|
|
141
147
|
}) : null]
|
|
142
148
|
});
|
|
143
149
|
}
|
|
144
|
-
function
|
|
145
|
-
let { t:
|
|
150
|
+
function Z({ initialName: t = "", initialHost: n = "", initialApiKey: r = "", onTestConnection: i, onSuccess: a, requireApiKey: o = !1, onSubmitOverride: s, fixedKind: c }) {
|
|
151
|
+
let { t: l } = e("openhands"), [u, d] = F.useState(t), [f, p] = F.useState(n), [m, h] = F.useState(r), [g, _] = F.useState(null), [v, y] = F.useState(!1), [b, x] = F.useState(null), S = c ?? b ?? R(f), C = o || S !== "local", w = u.trim().length > 0 && V(f) && (!C || m.trim().length > 0);
|
|
146
152
|
return {
|
|
147
|
-
name:
|
|
148
|
-
setName:
|
|
149
|
-
host:
|
|
150
|
-
setHost:
|
|
151
|
-
apiKey:
|
|
152
|
-
setApiKey:
|
|
153
|
-
connectionError:
|
|
154
|
-
setConnectionError:
|
|
155
|
-
isSubmitting:
|
|
156
|
-
kind:
|
|
157
|
-
setKind:
|
|
158
|
-
canSubmit:
|
|
159
|
-
handleSubmit:
|
|
160
|
-
if (e.preventDefault(), !
|
|
153
|
+
name: u,
|
|
154
|
+
setName: d,
|
|
155
|
+
host: f,
|
|
156
|
+
setHost: p,
|
|
157
|
+
apiKey: m,
|
|
158
|
+
setApiKey: h,
|
|
159
|
+
connectionError: g,
|
|
160
|
+
setConnectionError: _,
|
|
161
|
+
isSubmitting: v,
|
|
162
|
+
kind: S,
|
|
163
|
+
setKind: x,
|
|
164
|
+
canSubmit: w,
|
|
165
|
+
handleSubmit: F.useCallback(async (e) => {
|
|
166
|
+
if (e.preventDefault(), !w || v) return;
|
|
161
167
|
let t = {
|
|
162
|
-
name:
|
|
163
|
-
host:
|
|
164
|
-
apiKey:
|
|
165
|
-
kind:
|
|
168
|
+
name: u.trim(),
|
|
169
|
+
host: B(f),
|
|
170
|
+
apiKey: m.trim(),
|
|
171
|
+
kind: S
|
|
166
172
|
};
|
|
167
|
-
|
|
173
|
+
_(null), y(!0);
|
|
168
174
|
try {
|
|
169
175
|
s ? await s(t) : a(await i(t));
|
|
170
176
|
} catch (e) {
|
|
171
|
-
|
|
177
|
+
_(Y(q(l, t.host), e));
|
|
172
178
|
} finally {
|
|
173
|
-
|
|
179
|
+
y(!1);
|
|
174
180
|
}
|
|
175
181
|
}, [
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
+
w,
|
|
183
|
+
v,
|
|
184
|
+
u,
|
|
185
|
+
f,
|
|
186
|
+
m,
|
|
187
|
+
S,
|
|
182
188
|
i,
|
|
183
189
|
a,
|
|
184
190
|
o,
|
|
185
191
|
s,
|
|
186
|
-
c
|
|
192
|
+
c,
|
|
193
|
+
l
|
|
187
194
|
])
|
|
188
195
|
};
|
|
189
196
|
}
|
|
190
|
-
function
|
|
191
|
-
let { t:
|
|
192
|
-
initialName:
|
|
193
|
-
initialHost:
|
|
194
|
-
initialApiKey:
|
|
195
|
-
onTestConnection:
|
|
197
|
+
function te({ mode: n, backend: r, onSubmitted: i, renderActions: a, testIdRoot: s, hostReadOnly: c, requireApiKey: l, hideConfigurationFields: u = !1, onSubmitOverride: d }) {
|
|
198
|
+
let { t: f } = e("openhands"), { addBackend: p, updateBackend: m } = g(), h = n === "edit" && r ? r.kind : null, { name: _, setName: v, host: y, setHost: b, apiKey: x, setApiKey: S, connectionError: C, setConnectionError: E, isSubmitting: D, kind: O, handleSubmit: k } = Z({
|
|
199
|
+
initialName: r?.name ?? "",
|
|
200
|
+
initialHost: r?.host ?? "",
|
|
201
|
+
initialApiKey: r?.apiKey ?? "",
|
|
202
|
+
onTestConnection: X,
|
|
196
203
|
onSuccess: async () => {
|
|
197
204
|
let e = {
|
|
198
205
|
name: _.trim(),
|
|
199
|
-
host:
|
|
200
|
-
apiKey:
|
|
201
|
-
kind:
|
|
206
|
+
host: B(y),
|
|
207
|
+
apiKey: x.trim(),
|
|
208
|
+
kind: h ?? O
|
|
202
209
|
};
|
|
203
|
-
|
|
210
|
+
n === "edit" && r ? m(r.id, e) : p(e), i();
|
|
204
211
|
},
|
|
205
212
|
requireApiKey: l,
|
|
206
213
|
onSubmitOverride: d
|
|
207
|
-
}), [
|
|
208
|
-
return /* @__PURE__ */
|
|
209
|
-
"data-testid": `${
|
|
214
|
+
}), [A, j] = F.useState(!1), [M, N] = F.useState(!1), P = h ?? O, R = s ?? (n === "edit" ? "edit-backend" : "add-backend"), z = l || P !== "local", U = _.trim().length > 0 && V(y) && (!z || x.trim().length > 0), W = A && !_.trim() ? f(t.BACKEND$NAME_REQUIRED) : void 0, G = M ? y.trim() ? V(y) ? void 0 : f(t.BACKEND$HOST_INVALID) : f(t.BACKEND$HOST_REQUIRED) : void 0;
|
|
215
|
+
return /* @__PURE__ */ L("form", {
|
|
216
|
+
"data-testid": `${R}-form`,
|
|
210
217
|
onSubmit: async (e) => {
|
|
211
|
-
if (!
|
|
212
|
-
|
|
218
|
+
if (!U) {
|
|
219
|
+
j(!0), N(!0);
|
|
213
220
|
return;
|
|
214
221
|
}
|
|
215
|
-
await
|
|
222
|
+
await k(e);
|
|
216
223
|
},
|
|
217
224
|
className: "flex flex-col gap-4",
|
|
218
|
-
children: [/* @__PURE__ */
|
|
219
|
-
"data-testid": `${
|
|
220
|
-
className:
|
|
225
|
+
children: [/* @__PURE__ */ L("div", {
|
|
226
|
+
"data-testid": `${R}-configuration-fields`,
|
|
227
|
+
className: o("flex flex-col gap-4", u && "hidden"),
|
|
221
228
|
children: [
|
|
222
|
-
/* @__PURE__ */
|
|
223
|
-
testId: `${
|
|
224
|
-
name: `${
|
|
229
|
+
/* @__PURE__ */ I(T, {
|
|
230
|
+
testId: `${R}-name`,
|
|
231
|
+
name: `${R}-name`,
|
|
225
232
|
type: "text",
|
|
226
|
-
label:
|
|
233
|
+
label: f(t.BACKEND$NAME_LABEL),
|
|
227
234
|
value: _,
|
|
228
235
|
onChange: (e) => {
|
|
229
236
|
v(e), E(null);
|
|
230
237
|
},
|
|
231
|
-
onBlur: () =>
|
|
238
|
+
onBlur: () => j(!0),
|
|
232
239
|
placeholder: "Production",
|
|
233
240
|
className: "w-full",
|
|
234
241
|
showRequiredTag: !0,
|
|
235
|
-
error:
|
|
242
|
+
error: W
|
|
236
243
|
}),
|
|
237
|
-
/* @__PURE__ */
|
|
238
|
-
testId: `${
|
|
239
|
-
name: `${
|
|
244
|
+
/* @__PURE__ */ I(T, {
|
|
245
|
+
testId: `${R}-host`,
|
|
246
|
+
name: `${R}-host`,
|
|
240
247
|
type: "text",
|
|
241
|
-
label:
|
|
248
|
+
label: f(t.BACKEND$HOST_LABEL),
|
|
242
249
|
value: y,
|
|
243
250
|
onChange: c ? void 0 : (e) => {
|
|
244
|
-
|
|
251
|
+
b(e), E(null);
|
|
245
252
|
},
|
|
246
|
-
onBlur: () =>
|
|
247
|
-
placeholder:
|
|
253
|
+
onBlur: () => N(!0),
|
|
254
|
+
placeholder: H,
|
|
248
255
|
className: "w-full",
|
|
249
256
|
showRequiredTag: !0,
|
|
250
|
-
error:
|
|
257
|
+
error: G,
|
|
251
258
|
isDisabled: c
|
|
252
259
|
}),
|
|
253
|
-
/* @__PURE__ */
|
|
254
|
-
testId: `${
|
|
255
|
-
name: `${
|
|
260
|
+
/* @__PURE__ */ I(T, {
|
|
261
|
+
testId: `${R}-api-key`,
|
|
262
|
+
name: `${R}-api-key`,
|
|
256
263
|
type: "password",
|
|
257
|
-
label:
|
|
258
|
-
value:
|
|
264
|
+
label: f(t.BACKEND$KEY_LABEL),
|
|
265
|
+
value: x,
|
|
259
266
|
onChange: (e) => {
|
|
260
|
-
|
|
267
|
+
S(e), E(null);
|
|
261
268
|
},
|
|
262
269
|
placeholder: "",
|
|
263
270
|
className: "w-full"
|
|
264
271
|
}),
|
|
265
|
-
|
|
272
|
+
C ? /* @__PURE__ */ I("div", {
|
|
266
273
|
role: "alert",
|
|
267
|
-
"data-testid": `${
|
|
274
|
+
"data-testid": `${R}-error`,
|
|
268
275
|
className: "rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm text-red-300 whitespace-pre-wrap break-words",
|
|
269
|
-
children:
|
|
276
|
+
children: C
|
|
270
277
|
}) : null,
|
|
271
|
-
|
|
272
|
-
backend:
|
|
273
|
-
testIdRoot:
|
|
278
|
+
n === "edit" && r && /* @__PURE__ */ I(ee, {
|
|
279
|
+
backend: r,
|
|
280
|
+
testIdRoot: R
|
|
274
281
|
})
|
|
275
282
|
]
|
|
276
|
-
}),
|
|
277
|
-
canSubmit:
|
|
283
|
+
}), a ? a({
|
|
284
|
+
canSubmit: U && !D,
|
|
278
285
|
isSubmitting: D,
|
|
279
|
-
testIdRoot:
|
|
280
|
-
}) : /* @__PURE__ */
|
|
286
|
+
testIdRoot: R
|
|
287
|
+
}) : /* @__PURE__ */ L("div", {
|
|
281
288
|
className: "flex justify-end gap-2 mt-2 w-full",
|
|
282
|
-
children: [/* @__PURE__ */
|
|
289
|
+
children: [/* @__PURE__ */ I(w, {
|
|
283
290
|
type: "button",
|
|
284
291
|
variant: "secondary",
|
|
285
|
-
onClick:
|
|
286
|
-
testId: `${
|
|
287
|
-
children:
|
|
288
|
-
}), /* @__PURE__ */
|
|
292
|
+
onClick: i,
|
|
293
|
+
testId: `${R}-cancel`,
|
|
294
|
+
children: f(t.BUTTON$CANCEL)
|
|
295
|
+
}), /* @__PURE__ */ I(w, {
|
|
289
296
|
type: "submit",
|
|
290
297
|
variant: "primary",
|
|
291
|
-
isDisabled: !
|
|
292
|
-
testId: `${
|
|
293
|
-
children:
|
|
298
|
+
isDisabled: !U || D,
|
|
299
|
+
testId: `${R}-submit`,
|
|
300
|
+
children: f(t.BACKEND$SAVE)
|
|
294
301
|
})]
|
|
295
302
|
})]
|
|
296
303
|
});
|
|
297
304
|
}
|
|
298
|
-
function
|
|
299
|
-
let { currentPath: e, navigate: t } =
|
|
300
|
-
return
|
|
305
|
+
function ne() {
|
|
306
|
+
let { currentPath: e, navigate: t } = s();
|
|
307
|
+
return F.useCallback(() => {
|
|
301
308
|
/^\/automations\/[^/]+/.test(e) ? t("/automations") : /^\/conversations\/[^/]+/.test(e) && t("/conversations");
|
|
302
309
|
}, [e, t]);
|
|
303
310
|
}
|
|
304
|
-
function
|
|
305
|
-
let { t: d } = e("openhands"), f =
|
|
306
|
-
return f ? /* @__PURE__ */ A("div", {
|
|
307
|
-
"data-testid": `${r}-connection-options`,
|
|
308
|
-
className: "flex justify-center",
|
|
309
|
-
children: /* @__PURE__ */ A("div", {
|
|
310
|
-
className: "w-full",
|
|
311
|
-
children: /* @__PURE__ */ A(q, {
|
|
312
|
-
onConnected: n,
|
|
313
|
-
testIdRoot: r,
|
|
314
|
-
lockedHost: f,
|
|
315
|
-
analyticsSource: u
|
|
316
|
-
})
|
|
317
|
-
})
|
|
318
|
-
}) : /* @__PURE__ */ j("div", {
|
|
319
|
-
"data-testid": `${r}-connection-options`,
|
|
320
|
-
className: "flex flex-col gap-6 md:flex-row",
|
|
321
|
-
children: [/* @__PURE__ */ A("div", {
|
|
322
|
-
className: "flex-1 min-w-0",
|
|
323
|
-
children: /* @__PURE__ */ A(K, {
|
|
324
|
-
onConnected: n,
|
|
325
|
-
testIdRoot: r,
|
|
326
|
-
initialBackend: i,
|
|
327
|
-
requireApiKey: a,
|
|
328
|
-
submitLabel: s ?? d(t.BACKEND$CONNECT),
|
|
329
|
-
submittingLabel: c ?? d(t.ONBOARDING$BACKEND_STATUS_CHECKING),
|
|
330
|
-
submitTestId: l
|
|
331
|
-
})
|
|
332
|
-
}), /* @__PURE__ */ A("div", {
|
|
333
|
-
className: "flex-1 min-w-0",
|
|
334
|
-
children: /* @__PURE__ */ A(q, {
|
|
335
|
-
onConnected: n,
|
|
336
|
-
testIdRoot: r,
|
|
337
|
-
analyticsSource: u
|
|
338
|
-
})
|
|
339
|
-
})]
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
function K({ onConnected: n, testIdRoot: r, initialBackend: i, requireApiKey: a, submitLabel: o, submittingLabel: s, submitTestId: c }) {
|
|
343
|
-
let { t: l } = e("openhands"), { name: u, setName: d, host: f, setHost: p, apiKey: m, setApiKey: h, connectionError: g, setConnectionError: _, isSubmitting: v, kind: y, setKind: S, canSubmit: C, handleSubmit: T } = H({
|
|
311
|
+
function re({ onConnected: n, testIdRoot: r, initialBackend: i, requireApiKey: a, submitLabel: o, submittingLabel: s, submitTestId: c, fixedKind: l, showKindSelector: u = !0 }) {
|
|
312
|
+
let { t: d } = e("openhands"), { name: f, setName: p, host: m, setHost: h, apiKey: g, setApiKey: _, connectionError: v, setConnectionError: y, isSubmitting: b, kind: x, setKind: S, canSubmit: C, handleSubmit: E } = Z({
|
|
344
313
|
initialName: i?.name ?? "",
|
|
345
314
|
initialHost: i?.host ?? "",
|
|
346
315
|
initialApiKey: i?.apiKey ?? "",
|
|
347
|
-
onTestConnection:
|
|
316
|
+
onTestConnection: X,
|
|
348
317
|
onSuccess: (e) => {
|
|
349
318
|
n({
|
|
350
|
-
name:
|
|
351
|
-
host:
|
|
352
|
-
apiKey:
|
|
353
|
-
kind:
|
|
319
|
+
name: f.trim(),
|
|
320
|
+
host: B(m),
|
|
321
|
+
apiKey: g.trim(),
|
|
322
|
+
kind: x
|
|
354
323
|
}, "manual", e);
|
|
355
324
|
},
|
|
356
|
-
requireApiKey: a
|
|
325
|
+
requireApiKey: a,
|
|
326
|
+
fixedKind: l
|
|
357
327
|
});
|
|
358
|
-
return /* @__PURE__ */
|
|
328
|
+
return /* @__PURE__ */ L("form", {
|
|
359
329
|
"data-testid": `${r}-form`,
|
|
360
|
-
onSubmit:
|
|
330
|
+
onSubmit: E,
|
|
361
331
|
className: "flex flex-col gap-4 flex-1 min-w-0",
|
|
362
332
|
children: [
|
|
363
|
-
/* @__PURE__ */
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
className: "w-full"
|
|
376
|
-
}), /* @__PURE__ */ A("p", {
|
|
377
|
-
className: "text-xs text-[var(--oh-muted)]",
|
|
378
|
-
children: l(t.BACKEND$NAME_HELPER)
|
|
379
|
-
})]
|
|
333
|
+
/* @__PURE__ */ I(T, {
|
|
334
|
+
testId: `${r}-name`,
|
|
335
|
+
name: `${r}-name`,
|
|
336
|
+
type: "text",
|
|
337
|
+
label: d(t.BACKEND$NAME_LABEL),
|
|
338
|
+
hint: d(t.BACKEND$NAME_HELPER),
|
|
339
|
+
value: f,
|
|
340
|
+
onChange: (e) => {
|
|
341
|
+
p(e), y(null);
|
|
342
|
+
},
|
|
343
|
+
placeholder: "e.g. My Server",
|
|
344
|
+
className: "w-full"
|
|
380
345
|
}),
|
|
381
|
-
/* @__PURE__ */
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
className: "w-full"
|
|
394
|
-
}), /* @__PURE__ */ A("p", {
|
|
395
|
-
className: "text-xs text-[var(--oh-muted)]",
|
|
396
|
-
"data-testid": `${r}-host-helper`,
|
|
397
|
-
children: l(t.BACKEND$HOST_HELPER)
|
|
398
|
-
})]
|
|
346
|
+
/* @__PURE__ */ I(T, {
|
|
347
|
+
testId: `${r}-host`,
|
|
348
|
+
name: `${r}-host`,
|
|
349
|
+
type: "text",
|
|
350
|
+
label: d(t.BACKEND$HOST_LABEL),
|
|
351
|
+
hint: d(t.BACKEND$HOST_HELPER),
|
|
352
|
+
value: m,
|
|
353
|
+
onChange: (e) => {
|
|
354
|
+
h(e), y(null);
|
|
355
|
+
},
|
|
356
|
+
placeholder: "http://localhost:8000",
|
|
357
|
+
className: "w-full"
|
|
399
358
|
}),
|
|
400
|
-
/* @__PURE__ */
|
|
359
|
+
u ? /* @__PURE__ */ L("div", {
|
|
401
360
|
className: "flex flex-col items-start gap-2.5",
|
|
402
|
-
children: [/* @__PURE__ */
|
|
361
|
+
children: [/* @__PURE__ */ I("span", {
|
|
403
362
|
className: "text-sm",
|
|
404
|
-
children:
|
|
405
|
-
}), /* @__PURE__ */
|
|
406
|
-
value:
|
|
363
|
+
children: d(t.BACKEND$KIND_LABEL)
|
|
364
|
+
}), /* @__PURE__ */ I(O, {
|
|
365
|
+
value: x,
|
|
407
366
|
options: [{
|
|
408
367
|
value: "local",
|
|
409
|
-
label:
|
|
368
|
+
label: d(t.BACKEND$KIND_LOCAL)
|
|
410
369
|
}, {
|
|
411
370
|
value: "cloud",
|
|
412
|
-
label:
|
|
371
|
+
label: d(t.BACKEND$KIND_CLOUD)
|
|
413
372
|
}],
|
|
414
373
|
onChange: (e) => S(e),
|
|
415
|
-
ariaLabel:
|
|
374
|
+
ariaLabel: d(t.BACKEND$KIND_LABEL),
|
|
416
375
|
testId: `${r}-kind`
|
|
417
376
|
})]
|
|
418
|
-
}),
|
|
419
|
-
/* @__PURE__ */
|
|
377
|
+
}) : null,
|
|
378
|
+
/* @__PURE__ */ I(T, {
|
|
420
379
|
testId: `${r}-api-key`,
|
|
421
380
|
name: `${r}-api-key`,
|
|
422
381
|
type: "password",
|
|
423
|
-
label:
|
|
424
|
-
value:
|
|
382
|
+
label: d(t.BACKEND$KEY_LABEL),
|
|
383
|
+
value: g,
|
|
425
384
|
onChange: (e) => {
|
|
426
|
-
|
|
385
|
+
_(e), y(null);
|
|
427
386
|
},
|
|
428
387
|
placeholder: "sk-••••••••••",
|
|
429
388
|
className: "w-full"
|
|
430
389
|
}),
|
|
431
|
-
|
|
390
|
+
v ? /* @__PURE__ */ I("div", {
|
|
432
391
|
role: "alert",
|
|
433
392
|
"data-testid": `${r}-error`,
|
|
434
393
|
className: "rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm text-red-300 whitespace-pre-wrap break-words",
|
|
435
|
-
children:
|
|
394
|
+
children: v
|
|
436
395
|
}) : null,
|
|
437
|
-
/* @__PURE__ */
|
|
396
|
+
/* @__PURE__ */ I(w, {
|
|
438
397
|
type: "submit",
|
|
439
398
|
variant: "secondary",
|
|
440
|
-
isDisabled: !C ||
|
|
399
|
+
isDisabled: !C || b,
|
|
441
400
|
testId: c ?? `${r}-submit`,
|
|
442
401
|
className: "w-full text-center",
|
|
443
|
-
children:
|
|
402
|
+
children: b ? s : o
|
|
444
403
|
})
|
|
445
404
|
]
|
|
446
405
|
});
|
|
447
406
|
}
|
|
448
|
-
function
|
|
449
|
-
let { t:
|
|
450
|
-
return /* @__PURE__ */
|
|
451
|
-
className: "flex
|
|
452
|
-
children: [
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
407
|
+
function Q({ onConnected: n, testIdRoot: r, lockedHost: i, analyticsSource: a, showBranding: s = !0 }) {
|
|
408
|
+
let { t: c } = e("openhands"), [l, u] = F.useState(!1), [d, f] = F.useState(""), p = `${r}-advanced-panel`, m = i ?? (d.trim() || H);
|
|
409
|
+
return /* @__PURE__ */ L("div", {
|
|
410
|
+
className: "flex w-full min-w-0 flex-col items-center gap-3",
|
|
411
|
+
children: [s ? /* @__PURE__ */ L("div", {
|
|
412
|
+
className: "flex flex-col items-center gap-1",
|
|
413
|
+
children: [/* @__PURE__ */ I(D, {
|
|
414
|
+
width: 56,
|
|
415
|
+
height: 56,
|
|
416
|
+
"aria-hidden": !0
|
|
417
|
+
}), /* @__PURE__ */ I("h4", {
|
|
418
|
+
className: S,
|
|
419
|
+
"data-testid": `${r}-cloud-title`,
|
|
420
|
+
children: c(t.BACKEND$CLOUD_TITLE)
|
|
421
|
+
})]
|
|
422
|
+
}) : null, /* @__PURE__ */ I(P, {
|
|
423
|
+
host: m,
|
|
424
|
+
onSuccess: (e) => {
|
|
425
|
+
n({
|
|
426
|
+
name: "OpenHands Cloud",
|
|
427
|
+
host: B(m),
|
|
428
|
+
apiKey: e,
|
|
429
|
+
kind: "cloud"
|
|
430
|
+
}, "cloud_login");
|
|
431
|
+
},
|
|
432
|
+
testIdRoot: r,
|
|
433
|
+
analyticsSource: a,
|
|
434
|
+
className: "w-full items-center",
|
|
435
|
+
idleDescription: /* @__PURE__ */ I("p", {
|
|
466
436
|
className: "text-center text-sm leading-relaxed text-[var(--oh-muted)]",
|
|
467
|
-
|
|
437
|
+
"data-testid": `${r}-cloud-description`,
|
|
438
|
+
children: c(t.BACKEND$CLOUD_DESCRIPTION)
|
|
468
439
|
}),
|
|
469
|
-
/* @__PURE__ */
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
r({
|
|
473
|
-
name: "OpenHands Cloud",
|
|
474
|
-
host: P(f),
|
|
475
|
-
apiKey: e,
|
|
476
|
-
kind: "cloud"
|
|
477
|
-
}, "cloud_login");
|
|
478
|
-
},
|
|
479
|
-
testIdRoot: i,
|
|
480
|
-
analyticsSource: o
|
|
481
|
-
}),
|
|
482
|
-
a ? null : /* @__PURE__ */ j("div", {
|
|
483
|
-
className: "w-full",
|
|
484
|
-
children: [/* @__PURE__ */ j("button", {
|
|
440
|
+
idleFooter: i ? null : /* @__PURE__ */ L("div", {
|
|
441
|
+
className: "mx-auto w-full max-w-md",
|
|
442
|
+
children: [/* @__PURE__ */ L("button", {
|
|
485
443
|
type: "button",
|
|
486
|
-
onClick: () =>
|
|
487
|
-
"aria-expanded":
|
|
488
|
-
"
|
|
444
|
+
onClick: () => u((e) => !e),
|
|
445
|
+
"aria-expanded": l,
|
|
446
|
+
"aria-controls": p,
|
|
447
|
+
"data-testid": `${r}-advanced-toggle`,
|
|
489
448
|
className: "flex w-full cursor-pointer items-center justify-center gap-1 text-center text-xs text-[var(--oh-muted)] transition-colors hover:text-content-2",
|
|
490
|
-
children: [/* @__PURE__ */
|
|
491
|
-
className:
|
|
449
|
+
children: [/* @__PURE__ */ I("span", { children: c(t.BACKEND$ADVANCED) }), /* @__PURE__ */ I(k, {
|
|
450
|
+
className: o("h-4 w-4 shrink-0 text-muted transition-transform duration-200 ease-out", l && "rotate-180"),
|
|
492
451
|
"aria-hidden": !0
|
|
493
452
|
})]
|
|
494
|
-
}), /* @__PURE__ */
|
|
495
|
-
className:
|
|
496
|
-
"
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
453
|
+
}), /* @__PURE__ */ I("div", {
|
|
454
|
+
className: o("grid transition-[grid-template-rows] duration-200 ease-out motion-reduce:transition-none", l ? "grid-rows-[1fr]" : "grid-rows-[0fr]"),
|
|
455
|
+
children: /* @__PURE__ */ I("div", {
|
|
456
|
+
className: "overflow-hidden",
|
|
457
|
+
children: /* @__PURE__ */ L("div", {
|
|
458
|
+
id: p,
|
|
459
|
+
"data-testid": `${r}-advanced-panel`,
|
|
460
|
+
"aria-hidden": !l,
|
|
461
|
+
inert: l ? void 0 : !0,
|
|
462
|
+
className: o("pt-3 transition-opacity duration-200 ease-out motion-reduce:transition-none", l ? "opacity-100" : "opacity-0"),
|
|
463
|
+
children: [/* @__PURE__ */ I(T, {
|
|
464
|
+
testId: `${r}-cloud-host`,
|
|
465
|
+
name: `${r}-cloud-host`,
|
|
466
|
+
type: "text",
|
|
467
|
+
label: c(t.BACKEND$HOST_LABEL),
|
|
468
|
+
value: d,
|
|
469
|
+
onChange: f,
|
|
470
|
+
placeholder: H,
|
|
471
|
+
className: "w-full"
|
|
472
|
+
}), /* @__PURE__ */ I("p", {
|
|
473
|
+
className: "mt-1 text-xs text-[var(--oh-muted)]",
|
|
474
|
+
children: c(t.BACKEND$LOGIN_CLOUD_HINT)
|
|
475
|
+
})]
|
|
476
|
+
})
|
|
477
|
+
})
|
|
478
|
+
})]
|
|
479
|
+
})
|
|
480
|
+
})]
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
function $({ value: e, selectedValue: t, title: n, description: r, icon: i, onSelect: a, panelId: s, testId: c }) {
|
|
484
|
+
let l = e === t;
|
|
485
|
+
return /* @__PURE__ */ L("button", {
|
|
486
|
+
id: `${c}-tab`,
|
|
487
|
+
type: "button",
|
|
488
|
+
role: "tab",
|
|
489
|
+
"aria-selected": l,
|
|
490
|
+
"aria-controls": s,
|
|
491
|
+
"data-testid": c,
|
|
492
|
+
onClick: () => a(e),
|
|
493
|
+
className: o("relative flex min-h-16 w-full cursor-pointer items-center gap-3 px-3 py-3 text-left transition-colors", "first:border-r first:border-r-[var(--oh-border)]", "focus-visible:z-10 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-blue-300", l ? "bg-[var(--oh-surface-raised)] text-white after:absolute after:inset-x-0 after:bottom-0 after:h-0.5 after:bg-primary" : "text-[var(--oh-muted)] hover:bg-[var(--oh-surface-raised)] hover:text-white"),
|
|
494
|
+
children: [/* @__PURE__ */ I("span", {
|
|
495
|
+
className: "flex size-8 shrink-0 items-center justify-center",
|
|
496
|
+
"aria-hidden": !0,
|
|
497
|
+
children: i
|
|
498
|
+
}), /* @__PURE__ */ L("span", {
|
|
499
|
+
className: "min-w-0 flex-1",
|
|
500
|
+
children: [/* @__PURE__ */ I("span", {
|
|
501
|
+
className: "block truncate text-sm font-medium",
|
|
502
|
+
children: n
|
|
503
|
+
}), /* @__PURE__ */ I("span", {
|
|
504
|
+
className: "mt-0.5 block text-xs leading-tight text-[var(--oh-muted)]",
|
|
505
|
+
children: r
|
|
506
|
+
})]
|
|
507
|
+
})]
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
function ie({ children: e }) {
|
|
511
|
+
let t = F.useRef(null), [n, r] = F.useState();
|
|
512
|
+
return F.useLayoutEffect(() => {
|
|
513
|
+
let e = t.current;
|
|
514
|
+
if (!e) return;
|
|
515
|
+
let n = () => {
|
|
516
|
+
let t = e.getBoundingClientRect().height;
|
|
517
|
+
r(t > 0 ? t : void 0);
|
|
518
|
+
};
|
|
519
|
+
if (n(), typeof ResizeObserver > "u") return;
|
|
520
|
+
let i = new ResizeObserver(n);
|
|
521
|
+
return i.observe(e), () => i.disconnect();
|
|
522
|
+
}, []), /* @__PURE__ */ I("div", {
|
|
523
|
+
"data-testid": "add-backend-panel-height",
|
|
524
|
+
style: n === void 0 ? void 0 : { height: n },
|
|
525
|
+
className: "overflow-hidden transition-[height] duration-300 ease-in-out motion-reduce:transition-none",
|
|
526
|
+
children: /* @__PURE__ */ I("div", {
|
|
527
|
+
ref: t,
|
|
528
|
+
children: e
|
|
529
|
+
})
|
|
530
|
+
});
|
|
531
|
+
}
|
|
532
|
+
function ae({ location: r }) {
|
|
533
|
+
let { t: a } = e("openhands"), [s, c] = F.useState(!1), l = r === "remote", u = a(l ? t.BACKEND$REMOTE_SETUP_TITLE : t.BACKEND$BEFORE_CONNECT_TITLE), d = a(l ? t.BACKEND$REMOTE_SETUP_DESCRIPTION : t.BACKEND$LOCAL_SETUP_DESCRIPTION), f = l ? G : W, p = a(l ? t.BACKEND$REMOTE_SETUP_DOCS : t.BACKEND$LOCAL_SETUP_DOCS), m = l ? "add-backend-remote" : "add-backend-local", h = `${m}-guidance-toggle`, g = `${m}-guidance-body`;
|
|
534
|
+
return /* @__PURE__ */ L("aside", {
|
|
535
|
+
"data-testid": `${m}-guidance`,
|
|
536
|
+
className: "rounded-lg bg-[var(--oh-surface-raised)] text-sm text-[var(--oh-muted)]",
|
|
537
|
+
children: [/* @__PURE__ */ I("h4", {
|
|
538
|
+
className: "text-white",
|
|
539
|
+
children: /* @__PURE__ */ L("button", {
|
|
540
|
+
id: h,
|
|
541
|
+
type: "button",
|
|
542
|
+
onClick: () => c((e) => !e),
|
|
543
|
+
"aria-expanded": s,
|
|
544
|
+
"aria-controls": g,
|
|
545
|
+
"data-testid": h,
|
|
546
|
+
className: o("flex w-full cursor-pointer items-center justify-between gap-2 rounded-lg px-3 py-2 text-left font-medium", "transition-colors hover:bg-[var(--oh-interactive-hover)]", "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-300"),
|
|
547
|
+
children: [/* @__PURE__ */ L("span", {
|
|
548
|
+
className: "flex min-w-0 items-center gap-2",
|
|
549
|
+
children: [/* @__PURE__ */ I(i, {
|
|
550
|
+
className: "size-4 shrink-0 text-[var(--oh-muted)]",
|
|
551
|
+
"aria-hidden": !0
|
|
552
|
+
}), /* @__PURE__ */ I("span", {
|
|
553
|
+
className: "truncate",
|
|
554
|
+
children: u
|
|
509
555
|
})]
|
|
556
|
+
}), /* @__PURE__ */ I(n, {
|
|
557
|
+
className: o("size-5 shrink-0 text-[var(--oh-muted)] transition-transform duration-200 ease-out", s && "rotate-180"),
|
|
558
|
+
"aria-hidden": !0
|
|
510
559
|
})]
|
|
511
560
|
})
|
|
512
|
-
|
|
561
|
+
}), /* @__PURE__ */ I("div", {
|
|
562
|
+
className: o("grid transition-[grid-template-rows] duration-200 ease-out motion-reduce:transition-none", s ? "grid-rows-[1fr]" : "grid-rows-[0fr]"),
|
|
563
|
+
children: /* @__PURE__ */ I("div", {
|
|
564
|
+
className: "overflow-hidden",
|
|
565
|
+
children: /* @__PURE__ */ L("div", {
|
|
566
|
+
id: g,
|
|
567
|
+
"data-testid": g,
|
|
568
|
+
role: "region",
|
|
569
|
+
"aria-labelledby": h,
|
|
570
|
+
"aria-hidden": !s,
|
|
571
|
+
inert: s ? void 0 : !0,
|
|
572
|
+
className: o("flex flex-col gap-2 px-3 pb-3 transition-opacity duration-200 ease-out motion-reduce:transition-none", s ? "opacity-100" : "opacity-0"),
|
|
573
|
+
children: [
|
|
574
|
+
/* @__PURE__ */ I("p", {
|
|
575
|
+
className: "leading-5",
|
|
576
|
+
children: d
|
|
577
|
+
}),
|
|
578
|
+
l ? /* @__PURE__ */ L("div", { children: [/* @__PURE__ */ I("h5", {
|
|
579
|
+
className: "font-medium text-white",
|
|
580
|
+
children: a(t.BACKEND$REMOTE_CONNECTION_TITLE)
|
|
581
|
+
}), /* @__PURE__ */ I("p", {
|
|
582
|
+
className: "mt-1 leading-5",
|
|
583
|
+
children: a(t.BACKEND$REMOTE_CONNECTION_DESCRIPTION)
|
|
584
|
+
})] }) : /* @__PURE__ */ I("code", {
|
|
585
|
+
className: "block break-words font-mono text-xs text-white",
|
|
586
|
+
children: U
|
|
587
|
+
}),
|
|
588
|
+
/* @__PURE__ */ L("a", {
|
|
589
|
+
href: f,
|
|
590
|
+
target: "_blank",
|
|
591
|
+
rel: "noopener noreferrer",
|
|
592
|
+
"data-testid": `${m}-docs-link`,
|
|
593
|
+
tabIndex: s ? void 0 : -1,
|
|
594
|
+
className: "inline-flex w-fit items-center gap-1.5 text-primary hover:underline",
|
|
595
|
+
children: [/* @__PURE__ */ I("span", { children: p }), /* @__PURE__ */ I(A, {
|
|
596
|
+
className: "size-4 shrink-0",
|
|
597
|
+
"aria-hidden": !0
|
|
598
|
+
})]
|
|
599
|
+
})
|
|
600
|
+
]
|
|
601
|
+
})
|
|
602
|
+
})
|
|
603
|
+
})]
|
|
513
604
|
});
|
|
514
605
|
}
|
|
515
|
-
function
|
|
516
|
-
let {
|
|
517
|
-
return /* @__PURE__ */
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
606
|
+
function oe({ onConnected: n, source: i }) {
|
|
607
|
+
let { t: s } = e("openhands"), [c, l] = F.useState("cloud"), [u, d] = F.useState("local"), f = "add-backend-selected-panel", p = `add-backend-option-${c}-tab`, m = c === "cloud";
|
|
608
|
+
return /* @__PURE__ */ L("div", {
|
|
609
|
+
"data-testid": "add-backend-chooser",
|
|
610
|
+
className: "flex flex-col",
|
|
611
|
+
children: [/* @__PURE__ */ L("div", {
|
|
612
|
+
role: "tablist",
|
|
613
|
+
"aria-label": s(t.BACKEND$CHOOSER_TITLE),
|
|
614
|
+
className: "grid grid-cols-2 overflow-hidden rounded-lg border border-[var(--oh-border)]",
|
|
615
|
+
children: [/* @__PURE__ */ I($, {
|
|
616
|
+
value: "cloud",
|
|
617
|
+
selectedValue: c,
|
|
618
|
+
title: s(t.BACKEND$CLOUD_TITLE),
|
|
619
|
+
description: s(t.BACKEND$CLOUD_OPTION_DESCRIPTION),
|
|
620
|
+
icon: /* @__PURE__ */ I(D, {
|
|
621
|
+
width: 32,
|
|
622
|
+
height: 32,
|
|
623
|
+
"data-testid": "add-backend-option-cloud-logo"
|
|
624
|
+
}),
|
|
625
|
+
onSelect: l,
|
|
626
|
+
panelId: f,
|
|
627
|
+
testId: "add-backend-option-cloud"
|
|
628
|
+
}), /* @__PURE__ */ I($, {
|
|
629
|
+
value: "agent-server",
|
|
630
|
+
selectedValue: c,
|
|
631
|
+
title: s(t.BACKEND$AGENT_SERVER_TITLE),
|
|
632
|
+
description: s(t.BACKEND$AGENT_SERVER_OPTION_DESCRIPTION),
|
|
633
|
+
icon: /* @__PURE__ */ I(j, { className: "size-6" }),
|
|
634
|
+
onSelect: l,
|
|
635
|
+
panelId: f,
|
|
636
|
+
testId: "add-backend-option-agent-server"
|
|
637
|
+
})]
|
|
638
|
+
}), /* @__PURE__ */ I("div", {
|
|
639
|
+
className: "mt-6",
|
|
640
|
+
children: /* @__PURE__ */ I(ie, { children: /* @__PURE__ */ I("section", {
|
|
641
|
+
id: f,
|
|
642
|
+
role: "tabpanel",
|
|
643
|
+
"aria-labelledby": p,
|
|
644
|
+
className: "min-w-0",
|
|
645
|
+
children: m ? /* @__PURE__ */ I("div", {
|
|
646
|
+
"data-testid": "add-backend-cloud-panel",
|
|
647
|
+
className: o("relative isolate flex min-h-[13.5rem] w-full items-center justify-center rounded-xl border border-[var(--oh-border)] px-5 py-6", "before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-xl", "before:bg-[radial-gradient(75%_75%_at_50%_50%,rgba(255,255,255,0.1)_0%,rgba(255,255,255,0)_70%)]"),
|
|
648
|
+
children: /* @__PURE__ */ I(Q, {
|
|
649
|
+
onConnected: n,
|
|
650
|
+
testIdRoot: "add-backend",
|
|
651
|
+
analyticsSource: i,
|
|
652
|
+
showBranding: !1
|
|
653
|
+
})
|
|
654
|
+
}) : /* @__PURE__ */ L("div", {
|
|
655
|
+
"data-testid": "add-backend-agent-server-panel",
|
|
656
|
+
className: "mx-auto w-full max-w-xl",
|
|
657
|
+
children: [/* @__PURE__ */ L("div", {
|
|
658
|
+
className: "flex items-center gap-3",
|
|
659
|
+
children: [
|
|
660
|
+
/* @__PURE__ */ I("span", {
|
|
661
|
+
className: "h-px flex-1 bg-[var(--oh-border)]",
|
|
662
|
+
"aria-hidden": !0
|
|
663
|
+
}),
|
|
664
|
+
/* @__PURE__ */ I(O, {
|
|
665
|
+
value: u,
|
|
666
|
+
options: [{
|
|
667
|
+
value: "local",
|
|
668
|
+
label: s(t.BACKEND$KIND_LOCAL),
|
|
669
|
+
icon: /* @__PURE__ */ I(a, { "aria-hidden": !0 })
|
|
670
|
+
}, {
|
|
671
|
+
value: "remote",
|
|
672
|
+
label: s(t.BACKEND$KIND_REMOTE),
|
|
673
|
+
icon: /* @__PURE__ */ I(r, { "aria-hidden": !0 })
|
|
674
|
+
}],
|
|
675
|
+
onChange: d,
|
|
676
|
+
ariaLabel: s(t.BACKEND$AGENT_SERVER_LOCATION),
|
|
677
|
+
testId: "add-backend-location"
|
|
678
|
+
}),
|
|
679
|
+
/* @__PURE__ */ I("span", {
|
|
680
|
+
className: "h-px flex-1 bg-[var(--oh-border)]",
|
|
681
|
+
"aria-hidden": !0
|
|
682
|
+
})
|
|
683
|
+
]
|
|
684
|
+
}), /* @__PURE__ */ L("div", {
|
|
685
|
+
className: "mt-4 flex flex-col gap-4",
|
|
686
|
+
children: [/* @__PURE__ */ I(ae, { location: u }, u), /* @__PURE__ */ I(re, {
|
|
687
|
+
onConnected: n,
|
|
688
|
+
testIdRoot: "add-backend",
|
|
689
|
+
requireApiKey: u === "remote",
|
|
690
|
+
submitLabel: s(t.BACKEND$CONNECT),
|
|
691
|
+
submittingLabel: s(t.ONBOARDING$BACKEND_STATUS_CHECKING),
|
|
692
|
+
fixedKind: "local",
|
|
693
|
+
showKindSelector: !1
|
|
694
|
+
})]
|
|
695
|
+
})]
|
|
696
|
+
})
|
|
697
|
+
}) })
|
|
698
|
+
})]
|
|
699
|
+
});
|
|
700
|
+
}
|
|
701
|
+
function se({ onClose: e, source: t }) {
|
|
702
|
+
let { addBackend: n } = g(), r = ne(), { trackBackendAdded: i } = _(), a = u(), o = F.useCallback((a, o, s) => {
|
|
703
|
+
n(a), i({
|
|
704
|
+
backendKind: a.kind,
|
|
705
|
+
connectionMethod: o,
|
|
706
|
+
hasApiKey: !!a.apiKey,
|
|
707
|
+
source: t,
|
|
708
|
+
agentServerVersion: s?.agentServerVersion
|
|
709
|
+
}), r(), e();
|
|
710
|
+
}, [
|
|
711
|
+
n,
|
|
712
|
+
r,
|
|
713
|
+
e,
|
|
714
|
+
i,
|
|
715
|
+
t
|
|
716
|
+
]);
|
|
717
|
+
return a ? /* @__PURE__ */ I(Q, {
|
|
718
|
+
onConnected: o,
|
|
719
|
+
testIdRoot: "add-backend",
|
|
720
|
+
lockedHost: a,
|
|
533
721
|
analyticsSource: t
|
|
722
|
+
}) : /* @__PURE__ */ I(oe, {
|
|
723
|
+
onConnected: o,
|
|
724
|
+
source: t
|
|
534
725
|
});
|
|
535
726
|
}
|
|
536
|
-
function
|
|
727
|
+
function ce({ mode: n, backend: r, onClose: i, source: a = "add_backend_modal", hideCloseButton: s = !1 }) {
|
|
537
728
|
let { t: c } = e("openhands");
|
|
538
|
-
if (
|
|
539
|
-
onClose: s ? void 0 :
|
|
729
|
+
if (n === "add") return /* @__PURE__ */ I(v, {
|
|
730
|
+
onClose: s ? void 0 : i,
|
|
540
731
|
closeOnEscape: !1,
|
|
541
732
|
closeOnBackdropClick: !s,
|
|
542
733
|
"aria-label": c(t.BACKEND$ADD_TITLE),
|
|
543
|
-
children: /* @__PURE__ */
|
|
734
|
+
children: /* @__PURE__ */ L("div", {
|
|
544
735
|
"data-testid": s ? "onboarding-modal" : "add-backend-modal",
|
|
545
|
-
className:
|
|
736
|
+
className: o("relative max-h-[92vh] w-[720px] overflow-y-auto rounded-xl border border-[var(--oh-border)] bg-base-secondary p-6", y),
|
|
546
737
|
children: [
|
|
547
|
-
s ? null : /* @__PURE__ */
|
|
548
|
-
onClose:
|
|
738
|
+
s ? null : /* @__PURE__ */ I(C, {
|
|
739
|
+
onClose: i,
|
|
549
740
|
testId: "add-backend-close"
|
|
550
741
|
}),
|
|
551
|
-
s ? null : /* @__PURE__ */
|
|
552
|
-
className: "
|
|
553
|
-
children: /* @__PURE__ */
|
|
554
|
-
className:
|
|
555
|
-
children: c(t.BACKEND$
|
|
556
|
-
})
|
|
742
|
+
s ? null : /* @__PURE__ */ L("div", {
|
|
743
|
+
className: "pr-8",
|
|
744
|
+
children: [/* @__PURE__ */ I("h2", {
|
|
745
|
+
className: x,
|
|
746
|
+
children: c(t.BACKEND$CHOOSER_TITLE)
|
|
747
|
+
}), /* @__PURE__ */ L("p", {
|
|
748
|
+
className: "mt-2 text-sm leading-6 text-[var(--oh-muted)]",
|
|
749
|
+
"data-testid": "add-backend-description",
|
|
750
|
+
children: [
|
|
751
|
+
c(t.BACKEND$CHOOSER_DESCRIPTION),
|
|
752
|
+
" ",
|
|
753
|
+
/* @__PURE__ */ L("a", {
|
|
754
|
+
href: K,
|
|
755
|
+
target: "_blank",
|
|
756
|
+
rel: "noopener noreferrer",
|
|
757
|
+
"aria-label": c(t.BACKEND$DEPLOYMENT_OPTIONS),
|
|
758
|
+
"data-testid": "add-backend-deployment-options-link",
|
|
759
|
+
className: "text-primary hover:underline",
|
|
760
|
+
children: [c(t.CTA$LEARN_MORE), /* @__PURE__ */ I(A, {
|
|
761
|
+
className: "ml-1 inline size-3.5 align-[-0.125em]",
|
|
762
|
+
"aria-hidden": !0
|
|
763
|
+
})]
|
|
764
|
+
})
|
|
765
|
+
]
|
|
766
|
+
})]
|
|
557
767
|
}),
|
|
558
|
-
/* @__PURE__ */
|
|
559
|
-
className:
|
|
560
|
-
children: /* @__PURE__ */
|
|
561
|
-
onClose:
|
|
562
|
-
source:
|
|
768
|
+
/* @__PURE__ */ I("div", {
|
|
769
|
+
className: s ? void 0 : "mt-5",
|
|
770
|
+
children: /* @__PURE__ */ I(se, {
|
|
771
|
+
onClose: i,
|
|
772
|
+
source: a
|
|
563
773
|
})
|
|
564
774
|
})
|
|
565
775
|
]
|
|
566
776
|
})
|
|
567
777
|
});
|
|
568
778
|
let l = "edit-backend";
|
|
569
|
-
return /* @__PURE__ */
|
|
570
|
-
onClose:
|
|
779
|
+
return /* @__PURE__ */ I(v, {
|
|
780
|
+
onClose: i,
|
|
571
781
|
closeOnEscape: !1,
|
|
572
782
|
"aria-label": c(t.BACKEND$EDIT_TITLE),
|
|
573
|
-
children: /* @__PURE__ */
|
|
783
|
+
children: /* @__PURE__ */ L("div", {
|
|
574
784
|
"data-testid": `${l}-modal`,
|
|
575
|
-
className:
|
|
785
|
+
className: o("relative bg-base-secondary p-6 rounded-xl flex flex-col gap-4 border border-[var(--oh-border)]", b("md")),
|
|
576
786
|
children: [
|
|
577
|
-
/* @__PURE__ */
|
|
578
|
-
onClose:
|
|
787
|
+
/* @__PURE__ */ I(C, {
|
|
788
|
+
onClose: i,
|
|
579
789
|
testId: `${l}-close`
|
|
580
790
|
}),
|
|
581
|
-
/* @__PURE__ */
|
|
582
|
-
className:
|
|
791
|
+
/* @__PURE__ */ I("h2", {
|
|
792
|
+
className: o("pr-6", x),
|
|
583
793
|
children: c(t.BACKEND$EDIT_TITLE)
|
|
584
794
|
}),
|
|
585
|
-
/* @__PURE__ */
|
|
795
|
+
/* @__PURE__ */ I(te, {
|
|
586
796
|
mode: "edit",
|
|
587
|
-
backend:
|
|
588
|
-
onSubmitted:
|
|
797
|
+
backend: r,
|
|
798
|
+
onSubmitted: i,
|
|
589
799
|
testIdRoot: l
|
|
590
800
|
})
|
|
591
801
|
]
|
|
@@ -593,6 +803,6 @@ function Y({ mode: r, backend: i, onClose: a, source: o = "add_backend_modal", h
|
|
|
593
803
|
});
|
|
594
804
|
}
|
|
595
805
|
//#endregion
|
|
596
|
-
export {
|
|
806
|
+
export { ce as BackendFormModal };
|
|
597
807
|
|
|
598
808
|
//# sourceMappingURL=backend-form-modal.js.map
|