@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
|
@@ -6,102 +6,103 @@ import { Plus as i } from "../../../node_modules/lucide-react/dist/esm/icons/plu
|
|
|
6
6
|
import { Server as a } from "../../../node_modules/lucide-react/dist/esm/icons/server.js";
|
|
7
7
|
import { Settings as o } from "../../../node_modules/lucide-react/dist/esm/icons/settings.js";
|
|
8
8
|
import { cn as s } from "../../../utils/utils.js";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import
|
|
9
|
+
import { automationListPath as c, getInterfaceCopy as l } from "../../../manifests/automation-interface.js";
|
|
10
|
+
import { StyledTooltip as u } from "../../shared/buttons/styled-tooltip.js";
|
|
11
|
+
import { NavigationLink as d } from "../../shared/navigation-link.js";
|
|
12
|
+
import { SIDEBAR_COLLAPSED_LOGO_WRAPPER_CLASS as f, SIDEBAR_COLLAPSE_TOGGLE_OVERLAY_CLASS as p, SIDEBAR_ICON_BUTTON_CLASS as m, SIDEBAR_ICON_SLOT_CLASS as h, sidebarHeaderRowClassName as g, sidebarNavLabelClassName as _, sidebarNavListClassName as v, sidebarNavRowClassName as y } from "./sidebar-layout.js";
|
|
13
|
+
import { SidebarCollapsedIconSlot as b } from "./sidebar-collapsed-icon-slot.js";
|
|
14
|
+
import { SidebarNavLink as x } from "./sidebar-nav-link.js";
|
|
15
|
+
import { OpenHandsLogoButton as S } from "../../shared/buttons/openhands-logo-button.js";
|
|
16
|
+
import { BackendStatusDot as C } from "../backends/backend-status-dot.js";
|
|
17
|
+
import { BackendSelector as w } from "../backends/backend-selector.js";
|
|
18
|
+
import { CommandMenuTrigger as T } from "../command-menu/command-menu-trigger.js";
|
|
19
|
+
import { SidebarConversationList as E } from "./sidebar-conversation-list.js";
|
|
20
|
+
import D from "../../../icons/automations.js";
|
|
20
21
|
import "react";
|
|
21
|
-
import { jsx as
|
|
22
|
+
import { jsx as O, jsxs as k } from "react/jsx-runtime";
|
|
22
23
|
//#region src/components/features/sidebar/sidebar-rail-body.tsx
|
|
23
|
-
var
|
|
24
|
-
function
|
|
25
|
-
let { t:
|
|
26
|
-
return /* @__PURE__ */
|
|
24
|
+
var A = 18, j = 34, M = Math.round(j * 30 / 46);
|
|
25
|
+
function N({ collapsed: N, showCollapseToggle: P, showMobileCloseButton: F = !1, onCloseMobile: I, collapseToggleLabel: L, onCollapse: R, onExpand: z, showCollapsedExpandButton: B, isExtensionsActive: V, currentPath: H, activeBackendHealth: U, collapsedBackendPopoverOpen: W, setCollapsedBackendPopoverOpen: G, collapsedBackendPopoverRef: K, collapsedBackendCloseTimer: q, onOpenAddBackend: J, onOpenManageBackends: Y }) {
|
|
26
|
+
let { t: X } = e("openhands"), Z = q;
|
|
27
|
+
return /* @__PURE__ */ k("div", {
|
|
27
28
|
className: "flex min-h-0 flex-1 flex-col",
|
|
28
29
|
children: [
|
|
29
|
-
/* @__PURE__ */
|
|
30
|
-
className:
|
|
30
|
+
/* @__PURE__ */ k("div", {
|
|
31
|
+
className: g(N),
|
|
31
32
|
children: [
|
|
32
|
-
/* @__PURE__ */
|
|
33
|
-
className: s(
|
|
34
|
-
children: [/* @__PURE__ */
|
|
35
|
-
className: s(
|
|
36
|
-
children: /* @__PURE__ */
|
|
37
|
-
logoWidth:
|
|
38
|
-
logoHeight:
|
|
33
|
+
/* @__PURE__ */ k("div", {
|
|
34
|
+
className: s(N && P ? f : "flex min-w-0 shrink-0 items-center"),
|
|
35
|
+
children: [/* @__PURE__ */ O("div", {
|
|
36
|
+
className: s(N && P && "flex h-full w-full items-center justify-start pl-2.5 transition-opacity duration-150", N && B && "opacity-0"),
|
|
37
|
+
children: /* @__PURE__ */ O(S, {
|
|
38
|
+
logoWidth: j,
|
|
39
|
+
logoHeight: M,
|
|
39
40
|
logoClassName: "max-w-none",
|
|
40
|
-
className: s(
|
|
41
|
+
className: s(h, "overflow-visible")
|
|
41
42
|
})
|
|
42
|
-
}),
|
|
43
|
+
}), N && P ? /* @__PURE__ */ O("button", {
|
|
43
44
|
type: "button",
|
|
44
45
|
"data-testid": "sidebar-collapse-toggle",
|
|
45
|
-
"aria-pressed":
|
|
46
|
-
"aria-label":
|
|
47
|
-
onClick:
|
|
48
|
-
className: s(
|
|
49
|
-
children: /* @__PURE__ */
|
|
46
|
+
"aria-pressed": N,
|
|
47
|
+
"aria-label": L,
|
|
48
|
+
onClick: z,
|
|
49
|
+
className: s(p, B ? "opacity-100 pointer-events-auto" : "opacity-0 pointer-events-none"),
|
|
50
|
+
children: /* @__PURE__ */ O(r, {
|
|
50
51
|
width: 14,
|
|
51
52
|
height: 14
|
|
52
53
|
})
|
|
53
54
|
}) : null]
|
|
54
55
|
}),
|
|
55
|
-
!
|
|
56
|
+
!N && P ? /* @__PURE__ */ O("button", {
|
|
56
57
|
type: "button",
|
|
57
58
|
"data-testid": "sidebar-collapse-toggle",
|
|
58
|
-
"aria-pressed":
|
|
59
|
-
"aria-label":
|
|
60
|
-
onClick:
|
|
61
|
-
className: s("hidden md:inline-flex ml-auto",
|
|
62
|
-
children: /* @__PURE__ */
|
|
59
|
+
"aria-pressed": N,
|
|
60
|
+
"aria-label": L,
|
|
61
|
+
onClick: R,
|
|
62
|
+
className: s("hidden md:inline-flex ml-auto", m, "text-[var(--oh-muted)] hover:text-white hover:bg-[var(--oh-surface-raised)]"),
|
|
63
|
+
children: /* @__PURE__ */ O(n, {
|
|
63
64
|
width: 14,
|
|
64
65
|
height: 14
|
|
65
66
|
})
|
|
66
67
|
}) : null,
|
|
67
|
-
!
|
|
68
|
+
!N && F ? /* @__PURE__ */ O("button", {
|
|
68
69
|
type: "button",
|
|
69
70
|
"data-testid": "sidebar-mobile-drawer-close",
|
|
70
|
-
onClick:
|
|
71
|
-
"aria-label":
|
|
72
|
-
className: s("inline-flex ml-auto",
|
|
73
|
-
children: /* @__PURE__ */
|
|
71
|
+
onClick: I,
|
|
72
|
+
"aria-label": X(t.SIDEBAR$CLOSE_MENU),
|
|
73
|
+
className: s("inline-flex ml-auto", m, "text-[var(--oh-muted)] hover:text-white hover:bg-[var(--oh-surface-raised)]"),
|
|
74
|
+
children: /* @__PURE__ */ O(n, {
|
|
74
75
|
width: 14,
|
|
75
76
|
height: 14
|
|
76
77
|
})
|
|
77
78
|
}) : null
|
|
78
79
|
]
|
|
79
80
|
}),
|
|
80
|
-
/* @__PURE__ */
|
|
81
|
-
className:
|
|
81
|
+
/* @__PURE__ */ k("nav", {
|
|
82
|
+
className: v(N),
|
|
82
83
|
children: [
|
|
83
|
-
/* @__PURE__ */
|
|
84
|
-
/* @__PURE__ */
|
|
84
|
+
/* @__PURE__ */ O(T, { collapsed: N }),
|
|
85
|
+
/* @__PURE__ */ O(x, {
|
|
85
86
|
to: "/conversations",
|
|
86
87
|
end: !0,
|
|
87
|
-
label:
|
|
88
|
+
label: X(t.SIDEBAR$NEW_CHAT),
|
|
88
89
|
testId: "sidebar-conversations-link",
|
|
89
|
-
collapsed:
|
|
90
|
-
icon: /* @__PURE__ */
|
|
91
|
-
width:
|
|
92
|
-
height:
|
|
90
|
+
collapsed: N,
|
|
91
|
+
icon: /* @__PURE__ */ O(i, {
|
|
92
|
+
width: A,
|
|
93
|
+
height: A
|
|
93
94
|
})
|
|
94
95
|
}),
|
|
95
|
-
/* @__PURE__ */
|
|
96
|
+
/* @__PURE__ */ O(x, {
|
|
96
97
|
to: "/customize",
|
|
97
|
-
label:
|
|
98
|
+
label: X(t.NAV$CUSTOMIZE),
|
|
98
99
|
testId: "sidebar-skills-link",
|
|
99
|
-
collapsed:
|
|
100
|
-
forceActive:
|
|
101
|
-
icon: /* @__PURE__ */
|
|
100
|
+
collapsed: N,
|
|
101
|
+
forceActive: V,
|
|
102
|
+
icon: /* @__PURE__ */ k("svg", {
|
|
102
103
|
xmlns: "http://www.w3.org/2000/svg",
|
|
103
|
-
width:
|
|
104
|
-
height:
|
|
104
|
+
width: A,
|
|
105
|
+
height: A,
|
|
105
106
|
viewBox: "0 0 24 24",
|
|
106
107
|
fill: "none",
|
|
107
108
|
stroke: "currentColor",
|
|
@@ -110,109 +111,109 @@ function j({ collapsed: j, showCollapseToggle: M, showMobileCloseButton: N = !1,
|
|
|
110
111
|
strokeLinejoin: "round",
|
|
111
112
|
"aria-hidden": "true",
|
|
112
113
|
children: [
|
|
113
|
-
/* @__PURE__ */
|
|
114
|
-
/* @__PURE__ */
|
|
115
|
-
/* @__PURE__ */
|
|
116
|
-
/* @__PURE__ */
|
|
117
|
-
/* @__PURE__ */
|
|
118
|
-
/* @__PURE__ */
|
|
119
|
-
/* @__PURE__ */
|
|
120
|
-
/* @__PURE__ */
|
|
121
|
-
/* @__PURE__ */
|
|
122
|
-
/* @__PURE__ */
|
|
123
|
-
/* @__PURE__ */
|
|
124
|
-
/* @__PURE__ */
|
|
114
|
+
/* @__PURE__ */ O("path", { d: "M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z" }),
|
|
115
|
+
/* @__PURE__ */ O("path", { d: "m7 16.5-4.74-2.85" }),
|
|
116
|
+
/* @__PURE__ */ O("path", { d: "m7 16.5 5-3" }),
|
|
117
|
+
/* @__PURE__ */ O("path", { d: "M7 16.5v5.17" }),
|
|
118
|
+
/* @__PURE__ */ O("path", { d: "M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z" }),
|
|
119
|
+
/* @__PURE__ */ O("path", { d: "m17 16.5-5-3" }),
|
|
120
|
+
/* @__PURE__ */ O("path", { d: "m17 16.5 4.74-2.85" }),
|
|
121
|
+
/* @__PURE__ */ O("path", { d: "m17 16.5v5.17" }),
|
|
122
|
+
/* @__PURE__ */ O("path", { d: "M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z" }),
|
|
123
|
+
/* @__PURE__ */ O("path", { d: "M12 8 7.26 5.15" }),
|
|
124
|
+
/* @__PURE__ */ O("path", { d: "m12 8 4.74-2.85" }),
|
|
125
|
+
/* @__PURE__ */ O("path", { d: "M12 13.5V8" })
|
|
125
126
|
]
|
|
126
127
|
})
|
|
127
128
|
}),
|
|
128
|
-
/* @__PURE__ */
|
|
129
|
-
to:
|
|
130
|
-
label:
|
|
129
|
+
/* @__PURE__ */ O(x, {
|
|
130
|
+
to: c(),
|
|
131
|
+
label: l().sidebarLabel ?? X(t.SIDEBAR$AUTOMATIONS),
|
|
131
132
|
testId: "sidebar-automations-link",
|
|
132
|
-
collapsed:
|
|
133
|
-
icon: /* @__PURE__ */
|
|
134
|
-
width:
|
|
135
|
-
height:
|
|
133
|
+
collapsed: N,
|
|
134
|
+
icon: /* @__PURE__ */ O(D, {
|
|
135
|
+
width: A,
|
|
136
|
+
height: A
|
|
136
137
|
})
|
|
137
138
|
})
|
|
138
139
|
]
|
|
139
140
|
}),
|
|
140
|
-
/* @__PURE__ */ E
|
|
141
|
-
|
|
142
|
-
className: s(
|
|
143
|
-
children: [/* @__PURE__ */
|
|
144
|
-
content:
|
|
141
|
+
/* @__PURE__ */ O(E, { collapsed: N }),
|
|
142
|
+
N && P ? /* @__PURE__ */ k("nav", {
|
|
143
|
+
className: s(v(N), "mt-auto pb-2 cursor-pointer"),
|
|
144
|
+
children: [/* @__PURE__ */ O(u, {
|
|
145
|
+
content: X(t.SIDEBAR$SETTINGS),
|
|
145
146
|
placement: "right",
|
|
146
|
-
children: /* @__PURE__ */
|
|
147
|
+
children: /* @__PURE__ */ k(d, {
|
|
147
148
|
to: "/settings",
|
|
148
149
|
"data-testid": "collapsed-settings-link",
|
|
149
|
-
"aria-label":
|
|
150
|
-
className:
|
|
151
|
-
children: [/* @__PURE__ */
|
|
152
|
-
active:
|
|
153
|
-
children: /* @__PURE__ */
|
|
154
|
-
width:
|
|
155
|
-
height:
|
|
150
|
+
"aria-label": X(t.SIDEBAR$SETTINGS),
|
|
151
|
+
className: y({ collapsed: !0 }),
|
|
152
|
+
children: [/* @__PURE__ */ O(b, {
|
|
153
|
+
active: H.startsWith("/settings"),
|
|
154
|
+
children: /* @__PURE__ */ O(o, {
|
|
155
|
+
width: A,
|
|
156
|
+
height: A
|
|
156
157
|
})
|
|
157
|
-
}), /* @__PURE__ */
|
|
158
|
-
className:
|
|
159
|
-
children:
|
|
158
|
+
}), /* @__PURE__ */ O("span", {
|
|
159
|
+
className: _(!0),
|
|
160
|
+
children: X(t.SIDEBAR$SETTINGS)
|
|
160
161
|
})]
|
|
161
162
|
})
|
|
162
|
-
}), /* @__PURE__ */
|
|
163
|
+
}), /* @__PURE__ */ k("div", {
|
|
163
164
|
className: "relative",
|
|
164
|
-
ref:
|
|
165
|
+
ref: K,
|
|
165
166
|
onMouseEnter: () => {
|
|
166
|
-
|
|
167
|
+
Z.current &&= (clearTimeout(Z.current), null), G(!0);
|
|
167
168
|
},
|
|
168
169
|
onMouseLeave: () => {
|
|
169
|
-
|
|
170
|
+
Z.current = setTimeout(() => G(!1), 150);
|
|
170
171
|
},
|
|
171
|
-
children: [/* @__PURE__ */
|
|
172
|
+
children: [/* @__PURE__ */ k("button", {
|
|
172
173
|
type: "button",
|
|
173
174
|
"data-testid": "collapsed-backend-selector-link",
|
|
174
|
-
"aria-label":
|
|
175
|
-
"aria-expanded":
|
|
175
|
+
"aria-label": X(t.BACKEND$MANAGE),
|
|
176
|
+
"aria-expanded": W,
|
|
176
177
|
onMouseDown: (e) => {
|
|
177
178
|
e.preventDefault(), e.stopPropagation();
|
|
178
179
|
},
|
|
179
180
|
onMouseUp: (e) => e.stopPropagation(),
|
|
180
|
-
className: s(
|
|
181
|
-
children: [/* @__PURE__ */
|
|
182
|
-
active:
|
|
183
|
-
children: /* @__PURE__ */
|
|
181
|
+
className: s(y({ collapsed: !0 }), "relative"),
|
|
182
|
+
children: [/* @__PURE__ */ O(b, {
|
|
183
|
+
active: W,
|
|
184
|
+
children: /* @__PURE__ */ k("span", {
|
|
184
185
|
className: "relative inline-flex size-[18px] shrink-0 items-center justify-center",
|
|
185
|
-
children: [/* @__PURE__ */
|
|
186
|
-
isConnected:
|
|
186
|
+
children: [/* @__PURE__ */ O(C, {
|
|
187
|
+
isConnected: U?.isConnected ?? null,
|
|
187
188
|
className: "absolute -left-0.5 -top-0.5 z-[1] pointer-events-none"
|
|
188
|
-
}), /* @__PURE__ */
|
|
189
|
-
width:
|
|
190
|
-
height:
|
|
189
|
+
}), /* @__PURE__ */ O(a, {
|
|
190
|
+
width: A,
|
|
191
|
+
height: A
|
|
191
192
|
})]
|
|
192
193
|
})
|
|
193
|
-
}), /* @__PURE__ */
|
|
194
|
-
className:
|
|
195
|
-
children:
|
|
194
|
+
}), /* @__PURE__ */ O("span", {
|
|
195
|
+
className: _(!0),
|
|
196
|
+
children: X(t.BACKEND$MANAGE)
|
|
196
197
|
})]
|
|
197
|
-
}),
|
|
198
|
+
}), W ? /* @__PURE__ */ O("div", {
|
|
198
199
|
className: "absolute bottom-[-4px] left-full pl-2.5 z-40 w-[272px]",
|
|
199
200
|
onClick: (e) => e.stopPropagation(),
|
|
200
|
-
children: /* @__PURE__ */
|
|
201
|
-
sidebarCollapsed:
|
|
201
|
+
children: /* @__PURE__ */ O(w, {
|
|
202
|
+
sidebarCollapsed: N,
|
|
202
203
|
hideTrigger: !0,
|
|
203
204
|
defaultOpen: !0,
|
|
204
205
|
openUpward: !0,
|
|
205
|
-
onSelectOption: () =>
|
|
206
|
-
onOpenAddBackend:
|
|
207
|
-
onOpenManageBackends:
|
|
206
|
+
onSelectOption: () => G(!1),
|
|
207
|
+
onOpenAddBackend: J,
|
|
208
|
+
onOpenManageBackends: Y
|
|
208
209
|
})
|
|
209
210
|
}) : null]
|
|
210
211
|
})]
|
|
211
212
|
}) : null,
|
|
212
|
-
|
|
213
|
+
N ? null : /* @__PURE__ */ O("div", {
|
|
213
214
|
className: s("flex flex-col items-stretch max-w-none box-border shrink-0", "-ml-2.5 w-[calc(100%+0.625rem)] border-t border-[var(--oh-border)] pt-2 px-2.5"),
|
|
214
|
-
children: /* @__PURE__ */
|
|
215
|
-
sidebarCollapsed:
|
|
215
|
+
children: /* @__PURE__ */ O(w, {
|
|
216
|
+
sidebarCollapsed: N,
|
|
216
217
|
openUpward: !0
|
|
217
218
|
})
|
|
218
219
|
})
|
|
@@ -220,6 +221,6 @@ function j({ collapsed: j, showCollapseToggle: M, showMobileCloseButton: N = !1,
|
|
|
220
221
|
});
|
|
221
222
|
}
|
|
222
223
|
//#endregion
|
|
223
|
-
export {
|
|
224
|
+
export { N as SidebarRailBody };
|
|
224
225
|
|
|
225
226
|
//# sourceMappingURL=sidebar-rail-body.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar-rail-body.js","names":[],"sources":["../../../../src/components/features/sidebar/sidebar-rail-body.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n ChevronLeft,\n ChevronRight,\n Plus,\n Server,\n Settings,\n} from \"lucide-react\";\nimport { OpenHandsLogoButton } from \"#/components/shared/buttons/openhands-logo-button\";\nimport { NavigationLink } from \"#/components/shared/navigation-link\";\nimport { SidebarCollapsedIconSlot } from \"./sidebar-collapsed-icon-slot\";\nimport { SidebarNavLink } from \"./sidebar-nav-link\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { cn } from \"#/utils/utils\";\nimport { StyledTooltip } from \"#/components/shared/buttons/styled-tooltip\";\nimport { BackendSelector } from \"#/components/features/backends/backend-selector\";\nimport { BackendStatusDot } from \"#/components/features/backends/backend-status-dot\";\nimport { CommandMenuTrigger } from \"#/components/features/command-menu/command-menu-trigger\";\nimport { SidebarConversationList } from \"./sidebar-conversation-list\";\nimport AutomationsIcon from \"#/icons/automations.svg?react\";\nimport {\n SIDEBAR_COLLAPSE_TOGGLE_OVERLAY_CLASS,\n SIDEBAR_COLLAPSED_LOGO_WRAPPER_CLASS,\n SIDEBAR_ICON_BUTTON_CLASS,\n SIDEBAR_ICON_SLOT_CLASS,\n sidebarHeaderRowClassName,\n sidebarNavLabelClassName,\n sidebarNavListClassName,\n sidebarNavRowClassName,\n} from \"./sidebar-layout\";\n\nconst ICON_SIZE = 18;\nconst SIDEBAR_LOGO_WIDTH = 34;\nconst SIDEBAR_LOGO_HEIGHT = Math.round((SIDEBAR_LOGO_WIDTH * 30) / 46);\n\nexport interface SidebarRailBodyProps {\n collapsed: boolean;\n showCollapseToggle: boolean;\n showMobileCloseButton?: boolean;\n onCloseMobile?: () => void;\n collapseToggleLabel: string;\n onCollapse: () => void;\n onExpand: () => void;\n showCollapsedExpandButton: boolean;\n isExtensionsActive: boolean;\n currentPath: string;\n activeBackendHealth: { isConnected: boolean | null } | undefined;\n collapsedBackendPopoverOpen: boolean;\n setCollapsedBackendPopoverOpen: (open: boolean) => void;\n collapsedBackendPopoverRef: React.RefObject<HTMLDivElement | null>;\n collapsedBackendCloseTimer: React.MutableRefObject<ReturnType<\n typeof setTimeout\n > | null>;\n onOpenAddBackend: () => void;\n onOpenManageBackends: () => void;\n}\n\nexport function SidebarRailBody({\n collapsed,\n showCollapseToggle,\n showMobileCloseButton = false,\n onCloseMobile,\n collapseToggleLabel,\n onCollapse,\n onExpand,\n showCollapsedExpandButton,\n isExtensionsActive,\n currentPath,\n activeBackendHealth,\n collapsedBackendPopoverOpen,\n setCollapsedBackendPopoverOpen,\n collapsedBackendPopoverRef,\n collapsedBackendCloseTimer,\n onOpenAddBackend,\n onOpenManageBackends,\n}: SidebarRailBodyProps) {\n const { t } = useTranslation(\"openhands\");\n const backendCloseTimerRef = collapsedBackendCloseTimer;\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col\">\n <div className={sidebarHeaderRowClassName(collapsed)}>\n <div\n className={cn(\n collapsed && showCollapseToggle\n ? SIDEBAR_COLLAPSED_LOGO_WRAPPER_CLASS\n : \"flex min-w-0 shrink-0 items-center\",\n )}\n >\n <div\n className={cn(\n collapsed &&\n showCollapseToggle &&\n \"flex h-full w-full items-center justify-start pl-2.5 transition-opacity duration-150\",\n collapsed && showCollapsedExpandButton && \"opacity-0\",\n )}\n >\n <OpenHandsLogoButton\n logoWidth={SIDEBAR_LOGO_WIDTH}\n logoHeight={SIDEBAR_LOGO_HEIGHT}\n logoClassName=\"max-w-none\"\n className={cn(SIDEBAR_ICON_SLOT_CLASS, \"overflow-visible\")}\n />\n </div>\n {collapsed && showCollapseToggle ? (\n <button\n type=\"button\"\n data-testid=\"sidebar-collapse-toggle\"\n aria-pressed={collapsed}\n aria-label={collapseToggleLabel}\n onClick={onExpand}\n className={cn(\n SIDEBAR_COLLAPSE_TOGGLE_OVERLAY_CLASS,\n showCollapsedExpandButton\n ? \"opacity-100 pointer-events-auto\"\n : \"opacity-0 pointer-events-none\",\n )}\n >\n <ChevronRight width={14} height={14} />\n </button>\n ) : null}\n </div>\n {!collapsed && showCollapseToggle ? (\n <button\n type=\"button\"\n data-testid=\"sidebar-collapse-toggle\"\n aria-pressed={collapsed}\n aria-label={collapseToggleLabel}\n onClick={onCollapse}\n className={cn(\n \"hidden md:inline-flex ml-auto\",\n SIDEBAR_ICON_BUTTON_CLASS,\n \"text-[var(--oh-muted)] hover:text-white hover:bg-[var(--oh-surface-raised)]\",\n )}\n >\n <ChevronLeft width={14} height={14} />\n </button>\n ) : null}\n {!collapsed && showMobileCloseButton ? (\n <button\n type=\"button\"\n data-testid=\"sidebar-mobile-drawer-close\"\n onClick={onCloseMobile}\n aria-label={t(I18nKey.SIDEBAR$CLOSE_MENU)}\n className={cn(\n \"inline-flex ml-auto\",\n SIDEBAR_ICON_BUTTON_CLASS,\n \"text-[var(--oh-muted)] hover:text-white hover:bg-[var(--oh-surface-raised)]\",\n )}\n >\n <ChevronLeft width={14} height={14} />\n </button>\n ) : null}\n </div>\n\n <nav className={sidebarNavListClassName(collapsed)}>\n <CommandMenuTrigger collapsed={collapsed} />\n <SidebarNavLink\n to=\"/conversations\"\n end\n label={t(I18nKey.SIDEBAR$NEW_CHAT)}\n testId=\"sidebar-conversations-link\"\n collapsed={collapsed}\n icon={<Plus width={ICON_SIZE} height={ICON_SIZE} />}\n />\n <SidebarNavLink\n to=\"/customize\"\n label={t(I18nKey.NAV$CUSTOMIZE)}\n testId=\"sidebar-skills-link\"\n collapsed={collapsed}\n forceActive={isExtensionsActive}\n icon={\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={ICON_SIZE}\n height={ICON_SIZE}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z\" />\n <path d=\"m7 16.5-4.74-2.85\" />\n <path d=\"m7 16.5 5-3\" />\n <path d=\"M7 16.5v5.17\" />\n <path d=\"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z\" />\n <path d=\"m17 16.5-5-3\" />\n <path d=\"m17 16.5 4.74-2.85\" />\n <path d=\"m17 16.5v5.17\" />\n <path d=\"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z\" />\n <path d=\"M12 8 7.26 5.15\" />\n <path d=\"m12 8 4.74-2.85\" />\n <path d=\"M12 13.5V8\" />\n </svg>\n }\n />\n <SidebarNavLink\n to=\"/automations\"\n label={t(I18nKey.SIDEBAR$AUTOMATIONS)}\n testId=\"sidebar-automations-link\"\n collapsed={collapsed}\n icon={<AutomationsIcon width={ICON_SIZE} height={ICON_SIZE} />}\n />\n </nav>\n\n <SidebarConversationList collapsed={collapsed} />\n\n {collapsed && showCollapseToggle ? (\n <nav\n className={cn(\n sidebarNavListClassName(collapsed),\n \"mt-auto pb-2 cursor-pointer\",\n )}\n >\n <StyledTooltip\n content={t(I18nKey.SIDEBAR$SETTINGS)}\n placement=\"right\"\n >\n <NavigationLink\n to=\"/settings\"\n data-testid=\"collapsed-settings-link\"\n aria-label={t(I18nKey.SIDEBAR$SETTINGS)}\n className={sidebarNavRowClassName({ collapsed: true })}\n >\n <SidebarCollapsedIconSlot\n active={currentPath.startsWith(\"/settings\")}\n >\n <Settings width={ICON_SIZE} height={ICON_SIZE} />\n </SidebarCollapsedIconSlot>\n <span className={sidebarNavLabelClassName(true)}>\n {t(I18nKey.SIDEBAR$SETTINGS)}\n </span>\n </NavigationLink>\n </StyledTooltip>\n <div\n className=\"relative\"\n ref={collapsedBackendPopoverRef}\n onMouseEnter={() => {\n if (backendCloseTimerRef.current) {\n clearTimeout(backendCloseTimerRef.current);\n backendCloseTimerRef.current = null;\n }\n setCollapsedBackendPopoverOpen(true);\n }}\n onMouseLeave={() => {\n backendCloseTimerRef.current = setTimeout(\n () => setCollapsedBackendPopoverOpen(false),\n 150,\n );\n }}\n >\n <button\n type=\"button\"\n data-testid=\"collapsed-backend-selector-link\"\n aria-label={t(I18nKey.BACKEND$MANAGE)}\n aria-expanded={collapsedBackendPopoverOpen}\n onMouseDown={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n onMouseUp={(event) => event.stopPropagation()}\n className={cn(\n sidebarNavRowClassName({ collapsed: true }),\n \"relative\",\n )}\n >\n <SidebarCollapsedIconSlot active={collapsedBackendPopoverOpen}>\n <span className=\"relative inline-flex size-[18px] shrink-0 items-center justify-center\">\n <BackendStatusDot\n isConnected={activeBackendHealth?.isConnected ?? null}\n className=\"absolute -left-0.5 -top-0.5 z-[1] pointer-events-none\"\n />\n <Server width={ICON_SIZE} height={ICON_SIZE} />\n </span>\n </SidebarCollapsedIconSlot>\n <span className={sidebarNavLabelClassName(true)}>\n {t(I18nKey.BACKEND$MANAGE)}\n </span>\n </button>\n {collapsedBackendPopoverOpen ? (\n <div\n className=\"absolute bottom-[-4px] left-full pl-2.5 z-40 w-[272px]\"\n onClick={(event) => event.stopPropagation()}\n >\n <BackendSelector\n sidebarCollapsed={collapsed}\n hideTrigger\n defaultOpen\n openUpward\n onSelectOption={() => setCollapsedBackendPopoverOpen(false)}\n onOpenAddBackend={onOpenAddBackend}\n onOpenManageBackends={onOpenManageBackends}\n />\n </div>\n ) : null}\n </div>\n </nav>\n ) : null}\n\n {!collapsed ? (\n <div\n className={cn(\n \"flex flex-col items-stretch max-w-none box-border shrink-0\",\n \"-ml-2.5 w-[calc(100%+0.625rem)] border-t border-[var(--oh-border)] pt-2 px-2.5\",\n )}\n >\n <BackendSelector sidebarCollapsed={collapsed} openUpward />\n </div>\n ) : null}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sidebar-rail-body.js","names":[],"sources":["../../../../src/components/features/sidebar/sidebar-rail-body.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n ChevronLeft,\n ChevronRight,\n Plus,\n Server,\n Settings,\n} from \"lucide-react\";\nimport { OpenHandsLogoButton } from \"#/components/shared/buttons/openhands-logo-button\";\nimport { NavigationLink } from \"#/components/shared/navigation-link\";\nimport {\n automationListPath,\n getInterfaceCopy,\n} from \"#/manifests/automation-interface\";\nimport { SidebarCollapsedIconSlot } from \"./sidebar-collapsed-icon-slot\";\nimport { SidebarNavLink } from \"./sidebar-nav-link\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { cn } from \"#/utils/utils\";\nimport { StyledTooltip } from \"#/components/shared/buttons/styled-tooltip\";\nimport { BackendSelector } from \"#/components/features/backends/backend-selector\";\nimport { BackendStatusDot } from \"#/components/features/backends/backend-status-dot\";\nimport { CommandMenuTrigger } from \"#/components/features/command-menu/command-menu-trigger\";\nimport { SidebarConversationList } from \"./sidebar-conversation-list\";\nimport AutomationsIcon from \"#/icons/automations.svg?react\";\nimport {\n SIDEBAR_COLLAPSE_TOGGLE_OVERLAY_CLASS,\n SIDEBAR_COLLAPSED_LOGO_WRAPPER_CLASS,\n SIDEBAR_ICON_BUTTON_CLASS,\n SIDEBAR_ICON_SLOT_CLASS,\n sidebarHeaderRowClassName,\n sidebarNavLabelClassName,\n sidebarNavListClassName,\n sidebarNavRowClassName,\n} from \"./sidebar-layout\";\n\nconst ICON_SIZE = 18;\nconst SIDEBAR_LOGO_WIDTH = 34;\nconst SIDEBAR_LOGO_HEIGHT = Math.round((SIDEBAR_LOGO_WIDTH * 30) / 46);\n\nexport interface SidebarRailBodyProps {\n collapsed: boolean;\n showCollapseToggle: boolean;\n showMobileCloseButton?: boolean;\n onCloseMobile?: () => void;\n collapseToggleLabel: string;\n onCollapse: () => void;\n onExpand: () => void;\n showCollapsedExpandButton: boolean;\n isExtensionsActive: boolean;\n currentPath: string;\n activeBackendHealth: { isConnected: boolean | null } | undefined;\n collapsedBackendPopoverOpen: boolean;\n setCollapsedBackendPopoverOpen: (open: boolean) => void;\n collapsedBackendPopoverRef: React.RefObject<HTMLDivElement | null>;\n collapsedBackendCloseTimer: React.MutableRefObject<ReturnType<\n typeof setTimeout\n > | null>;\n onOpenAddBackend: () => void;\n onOpenManageBackends: () => void;\n}\n\nexport function SidebarRailBody({\n collapsed,\n showCollapseToggle,\n showMobileCloseButton = false,\n onCloseMobile,\n collapseToggleLabel,\n onCollapse,\n onExpand,\n showCollapsedExpandButton,\n isExtensionsActive,\n currentPath,\n activeBackendHealth,\n collapsedBackendPopoverOpen,\n setCollapsedBackendPopoverOpen,\n collapsedBackendPopoverRef,\n collapsedBackendCloseTimer,\n onOpenAddBackend,\n onOpenManageBackends,\n}: SidebarRailBodyProps) {\n const { t } = useTranslation(\"openhands\");\n const backendCloseTimerRef = collapsedBackendCloseTimer;\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col\">\n <div className={sidebarHeaderRowClassName(collapsed)}>\n <div\n className={cn(\n collapsed && showCollapseToggle\n ? SIDEBAR_COLLAPSED_LOGO_WRAPPER_CLASS\n : \"flex min-w-0 shrink-0 items-center\",\n )}\n >\n <div\n className={cn(\n collapsed &&\n showCollapseToggle &&\n \"flex h-full w-full items-center justify-start pl-2.5 transition-opacity duration-150\",\n collapsed && showCollapsedExpandButton && \"opacity-0\",\n )}\n >\n <OpenHandsLogoButton\n logoWidth={SIDEBAR_LOGO_WIDTH}\n logoHeight={SIDEBAR_LOGO_HEIGHT}\n logoClassName=\"max-w-none\"\n className={cn(SIDEBAR_ICON_SLOT_CLASS, \"overflow-visible\")}\n />\n </div>\n {collapsed && showCollapseToggle ? (\n <button\n type=\"button\"\n data-testid=\"sidebar-collapse-toggle\"\n aria-pressed={collapsed}\n aria-label={collapseToggleLabel}\n onClick={onExpand}\n className={cn(\n SIDEBAR_COLLAPSE_TOGGLE_OVERLAY_CLASS,\n showCollapsedExpandButton\n ? \"opacity-100 pointer-events-auto\"\n : \"opacity-0 pointer-events-none\",\n )}\n >\n <ChevronRight width={14} height={14} />\n </button>\n ) : null}\n </div>\n {!collapsed && showCollapseToggle ? (\n <button\n type=\"button\"\n data-testid=\"sidebar-collapse-toggle\"\n aria-pressed={collapsed}\n aria-label={collapseToggleLabel}\n onClick={onCollapse}\n className={cn(\n \"hidden md:inline-flex ml-auto\",\n SIDEBAR_ICON_BUTTON_CLASS,\n \"text-[var(--oh-muted)] hover:text-white hover:bg-[var(--oh-surface-raised)]\",\n )}\n >\n <ChevronLeft width={14} height={14} />\n </button>\n ) : null}\n {!collapsed && showMobileCloseButton ? (\n <button\n type=\"button\"\n data-testid=\"sidebar-mobile-drawer-close\"\n onClick={onCloseMobile}\n aria-label={t(I18nKey.SIDEBAR$CLOSE_MENU)}\n className={cn(\n \"inline-flex ml-auto\",\n SIDEBAR_ICON_BUTTON_CLASS,\n \"text-[var(--oh-muted)] hover:text-white hover:bg-[var(--oh-surface-raised)]\",\n )}\n >\n <ChevronLeft width={14} height={14} />\n </button>\n ) : null}\n </div>\n\n <nav className={sidebarNavListClassName(collapsed)}>\n <CommandMenuTrigger collapsed={collapsed} />\n <SidebarNavLink\n to=\"/conversations\"\n end\n label={t(I18nKey.SIDEBAR$NEW_CHAT)}\n testId=\"sidebar-conversations-link\"\n collapsed={collapsed}\n icon={<Plus width={ICON_SIZE} height={ICON_SIZE} />}\n />\n <SidebarNavLink\n to=\"/customize\"\n label={t(I18nKey.NAV$CUSTOMIZE)}\n testId=\"sidebar-skills-link\"\n collapsed={collapsed}\n forceActive={isExtensionsActive}\n icon={\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={ICON_SIZE}\n height={ICON_SIZE}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z\" />\n <path d=\"m7 16.5-4.74-2.85\" />\n <path d=\"m7 16.5 5-3\" />\n <path d=\"M7 16.5v5.17\" />\n <path d=\"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z\" />\n <path d=\"m17 16.5-5-3\" />\n <path d=\"m17 16.5 4.74-2.85\" />\n <path d=\"m17 16.5v5.17\" />\n <path d=\"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z\" />\n <path d=\"M12 8 7.26 5.15\" />\n <path d=\"m12 8 4.74-2.85\" />\n <path d=\"M12 13.5V8\" />\n </svg>\n }\n />\n <SidebarNavLink\n to={automationListPath()}\n label={\n getInterfaceCopy().sidebarLabel ?? t(I18nKey.SIDEBAR$AUTOMATIONS)\n }\n testId=\"sidebar-automations-link\"\n collapsed={collapsed}\n icon={<AutomationsIcon width={ICON_SIZE} height={ICON_SIZE} />}\n />\n </nav>\n\n <SidebarConversationList collapsed={collapsed} />\n\n {collapsed && showCollapseToggle ? (\n <nav\n className={cn(\n sidebarNavListClassName(collapsed),\n \"mt-auto pb-2 cursor-pointer\",\n )}\n >\n <StyledTooltip\n content={t(I18nKey.SIDEBAR$SETTINGS)}\n placement=\"right\"\n >\n <NavigationLink\n to=\"/settings\"\n data-testid=\"collapsed-settings-link\"\n aria-label={t(I18nKey.SIDEBAR$SETTINGS)}\n className={sidebarNavRowClassName({ collapsed: true })}\n >\n <SidebarCollapsedIconSlot\n active={currentPath.startsWith(\"/settings\")}\n >\n <Settings width={ICON_SIZE} height={ICON_SIZE} />\n </SidebarCollapsedIconSlot>\n <span className={sidebarNavLabelClassName(true)}>\n {t(I18nKey.SIDEBAR$SETTINGS)}\n </span>\n </NavigationLink>\n </StyledTooltip>\n <div\n className=\"relative\"\n ref={collapsedBackendPopoverRef}\n onMouseEnter={() => {\n if (backendCloseTimerRef.current) {\n clearTimeout(backendCloseTimerRef.current);\n backendCloseTimerRef.current = null;\n }\n setCollapsedBackendPopoverOpen(true);\n }}\n onMouseLeave={() => {\n backendCloseTimerRef.current = setTimeout(\n () => setCollapsedBackendPopoverOpen(false),\n 150,\n );\n }}\n >\n <button\n type=\"button\"\n data-testid=\"collapsed-backend-selector-link\"\n aria-label={t(I18nKey.BACKEND$MANAGE)}\n aria-expanded={collapsedBackendPopoverOpen}\n onMouseDown={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n onMouseUp={(event) => event.stopPropagation()}\n className={cn(\n sidebarNavRowClassName({ collapsed: true }),\n \"relative\",\n )}\n >\n <SidebarCollapsedIconSlot active={collapsedBackendPopoverOpen}>\n <span className=\"relative inline-flex size-[18px] shrink-0 items-center justify-center\">\n <BackendStatusDot\n isConnected={activeBackendHealth?.isConnected ?? null}\n className=\"absolute -left-0.5 -top-0.5 z-[1] pointer-events-none\"\n />\n <Server width={ICON_SIZE} height={ICON_SIZE} />\n </span>\n </SidebarCollapsedIconSlot>\n <span className={sidebarNavLabelClassName(true)}>\n {t(I18nKey.BACKEND$MANAGE)}\n </span>\n </button>\n {collapsedBackendPopoverOpen ? (\n <div\n className=\"absolute bottom-[-4px] left-full pl-2.5 z-40 w-[272px]\"\n onClick={(event) => event.stopPropagation()}\n >\n <BackendSelector\n sidebarCollapsed={collapsed}\n hideTrigger\n defaultOpen\n openUpward\n onSelectOption={() => setCollapsedBackendPopoverOpen(false)}\n onOpenAddBackend={onOpenAddBackend}\n onOpenManageBackends={onOpenManageBackends}\n />\n </div>\n ) : null}\n </div>\n </nav>\n ) : null}\n\n {!collapsed ? (\n <div\n className={cn(\n \"flex flex-col items-stretch max-w-none box-border shrink-0\",\n \"-ml-2.5 w-[calc(100%+0.625rem)] border-t border-[var(--oh-border)] pt-2 px-2.5\",\n )}\n >\n <BackendSelector sidebarCollapsed={collapsed} openUpward />\n </div>\n ) : null}\n </div>\n );\n}\n"],"mappings":"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"}
|
package/dist/config/defaults.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require("../_virtual/_rolldown/runtime.cjs");var e={_comment:`Single source of truth for version pins, ports, paths, and defaults shared across the npm and Docker install paths. Read by scripts/dev-safe.mjs, scripts/dev-with-automation.mjs, docker/entrypoint.sh (via generated defaults.env), and .github/workflows/docker.yml.`,versions:{agentServer:`1.
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");var e={_comment:`Single source of truth for version pins, ports, paths, and defaults shared across the npm and Docker install paths. Read by scripts/dev-safe.mjs, scripts/dev-with-automation.mjs, docker/entrypoint.sh (via generated defaults.env), and .github/workflows/docker.yml.`,versions:{agentServer:`1.39.1`,agentCanvas:`1.9.0`,automation:`1.5.0`},compatibility:{minimumAgentServer:`1.28.0`},constraints:{_comment:`Temporary upper bound on the agent-client-protocol (acp) transitive dependency. openhands-sdk 1.35.0 requires agent-client-protocol>=0.10.1 with no upper bound, but acp 0.11.0 reordered the ACP prompt() arguments and breaks the SDK's ACP client (a PromptRequest validation error surfaces as 'ACP error: 2 validation errors for PromptRequest'). Pin acp <0.11 until a fixed openhands-sdk ships. Consumed by scripts/dev-safe.mjs (agent-server uvx install) and .github/workflows/mock-llm-e2e.yml (mock ACP server venv).`,agentClientProtocol:`agent-client-protocol<0.11`},images:{agentServer:`ghcr.io/openhands/agent-server`,agentCanvas:`ghcr.io/openhands/agent-canvas`},ports:{agentServer:18e3,automation:18001,proxy:8e3},paths:{stateSubdir:`agent-canvas`,conversations:`agent-canvas/conversations`,bashEvents:`agent-canvas/bash_events`,automationDb:`automation/automations.db`,canvasBasePath:`/canvas`},packages:{agentServer:`openhands-agent-server`,automation:`openhands-automation`,tools:`openhands-tools`,workspace:`openhands-workspace`},telemetry:{posthogApiKey:`phc_kBtz5nKmxVRRQ7HtPwr2QX9eMC5j65zE86QKocVNwb4U`,posthogHost:`https://us.i.posthog.com`}};exports.default=e;
|
|
2
2
|
//# sourceMappingURL=defaults.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.cjs","names":[],"sources":["../../config/defaults.json"],"sourcesContent":["{\n \"_comment\": \"Single source of truth for version pins, ports, paths, and defaults shared across the npm and Docker install paths. Read by scripts/dev-safe.mjs, scripts/dev-with-automation.mjs, docker/entrypoint.sh (via generated defaults.env), and .github/workflows/docker.yml.\",\n \"versions\": {\n \"agentServer\": \"1.
|
|
1
|
+
{"version":3,"file":"defaults.cjs","names":[],"sources":["../../config/defaults.json"],"sourcesContent":["{\n \"_comment\": \"Single source of truth for version pins, ports, paths, and defaults shared across the npm and Docker install paths. Read by scripts/dev-safe.mjs, scripts/dev-with-automation.mjs, docker/entrypoint.sh (via generated defaults.env), and .github/workflows/docker.yml.\",\n \"versions\": {\n \"agentServer\": \"1.39.1\",\n \"agentCanvas\": \"1.9.0\",\n \"automation\": \"1.5.0\"\n },\n \"compatibility\": {\n \"minimumAgentServer\": \"1.28.0\"\n },\n \"constraints\": {\n \"_comment\": \"Temporary upper bound on the agent-client-protocol (acp) transitive dependency. openhands-sdk 1.35.0 requires agent-client-protocol>=0.10.1 with no upper bound, but acp 0.11.0 reordered the ACP prompt() arguments and breaks the SDK's ACP client (a PromptRequest validation error surfaces as 'ACP error: 2 validation errors for PromptRequest'). Pin acp <0.11 until a fixed openhands-sdk ships. Consumed by scripts/dev-safe.mjs (agent-server uvx install) and .github/workflows/mock-llm-e2e.yml (mock ACP server venv).\",\n \"agentClientProtocol\": \"agent-client-protocol<0.11\"\n },\n \"images\": {\n \"agentServer\": \"ghcr.io/openhands/agent-server\",\n \"agentCanvas\": \"ghcr.io/openhands/agent-canvas\"\n },\n \"ports\": {\n \"agentServer\": 18000,\n \"automation\": 18001,\n \"proxy\": 8000\n },\n \"paths\": {\n \"stateSubdir\": \"agent-canvas\",\n \"conversations\": \"agent-canvas/conversations\",\n \"bashEvents\": \"agent-canvas/bash_events\",\n \"automationDb\": \"automation/automations.db\",\n \"canvasBasePath\": \"/canvas\"\n },\n \"packages\": {\n \"agentServer\": \"openhands-agent-server\",\n \"automation\": \"openhands-automation\",\n \"tools\": \"openhands-tools\",\n \"workspace\": \"openhands-workspace\"\n },\n \"telemetry\": {\n \"posthogApiKey\": \"phc_kBtz5nKmxVRRQ7HtPwr2QX9eMC5j65zE86QKocVNwb4U\",\n \"posthogHost\": \"https://us.i.posthog.com\"\n }\n}\n"],"mappings":""}
|
package/dist/config/defaults.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
var e = {
|
|
2
2
|
_comment: "Single source of truth for version pins, ports, paths, and defaults shared across the npm and Docker install paths. Read by scripts/dev-safe.mjs, scripts/dev-with-automation.mjs, docker/entrypoint.sh (via generated defaults.env), and .github/workflows/docker.yml.",
|
|
3
3
|
versions: {
|
|
4
|
-
agentServer: "1.
|
|
5
|
-
agentCanvas: "1.
|
|
6
|
-
automation: "1.
|
|
4
|
+
agentServer: "1.39.1",
|
|
5
|
+
agentCanvas: "1.9.0",
|
|
6
|
+
automation: "1.5.0"
|
|
7
7
|
},
|
|
8
8
|
compatibility: { minimumAgentServer: "1.28.0" },
|
|
9
9
|
constraints: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","names":[],"sources":["../../config/defaults.json"],"sourcesContent":["{\n \"_comment\": \"Single source of truth for version pins, ports, paths, and defaults shared across the npm and Docker install paths. Read by scripts/dev-safe.mjs, scripts/dev-with-automation.mjs, docker/entrypoint.sh (via generated defaults.env), and .github/workflows/docker.yml.\",\n \"versions\": {\n \"agentServer\": \"1.
|
|
1
|
+
{"version":3,"file":"defaults.js","names":[],"sources":["../../config/defaults.json"],"sourcesContent":["{\n \"_comment\": \"Single source of truth for version pins, ports, paths, and defaults shared across the npm and Docker install paths. Read by scripts/dev-safe.mjs, scripts/dev-with-automation.mjs, docker/entrypoint.sh (via generated defaults.env), and .github/workflows/docker.yml.\",\n \"versions\": {\n \"agentServer\": \"1.39.1\",\n \"agentCanvas\": \"1.9.0\",\n \"automation\": \"1.5.0\"\n },\n \"compatibility\": {\n \"minimumAgentServer\": \"1.28.0\"\n },\n \"constraints\": {\n \"_comment\": \"Temporary upper bound on the agent-client-protocol (acp) transitive dependency. openhands-sdk 1.35.0 requires agent-client-protocol>=0.10.1 with no upper bound, but acp 0.11.0 reordered the ACP prompt() arguments and breaks the SDK's ACP client (a PromptRequest validation error surfaces as 'ACP error: 2 validation errors for PromptRequest'). Pin acp <0.11 until a fixed openhands-sdk ships. Consumed by scripts/dev-safe.mjs (agent-server uvx install) and .github/workflows/mock-llm-e2e.yml (mock ACP server venv).\",\n \"agentClientProtocol\": \"agent-client-protocol<0.11\"\n },\n \"images\": {\n \"agentServer\": \"ghcr.io/openhands/agent-server\",\n \"agentCanvas\": \"ghcr.io/openhands/agent-canvas\"\n },\n \"ports\": {\n \"agentServer\": 18000,\n \"automation\": 18001,\n \"proxy\": 8000\n },\n \"paths\": {\n \"stateSubdir\": \"agent-canvas\",\n \"conversations\": \"agent-canvas/conversations\",\n \"bashEvents\": \"agent-canvas/bash_events\",\n \"automationDb\": \"automation/automations.db\",\n \"canvasBasePath\": \"/canvas\"\n },\n \"packages\": {\n \"agentServer\": \"openhands-agent-server\",\n \"automation\": \"openhands-automation\",\n \"tools\": \"openhands-tools\",\n \"workspace\": \"openhands-workspace\"\n },\n \"telemetry\": {\n \"posthogApiKey\": \"phc_kBtz5nKmxVRRQ7HtPwr2QX9eMC5j65zE86QKocVNwb4U\",\n \"posthogHost\": \"https://us.i.posthog.com\"\n }\n}\n"],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../api/backend-registry/health-store.cjs"),n=require("../api/backend-registry/default-backend.cjs"),r=require("../api/backend-registry/active-store.cjs"),i=require("../api/agent-server-compatibility.cjs"),a=require("../hooks/query/query-keys.cjs"),o=require("../query-client-config.cjs");let
|
|
1
|
+
const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../api/backend-registry/health-store.cjs"),n=require("../api/backend-registry/default-backend.cjs"),r=require("../api/backend-registry/active-store.cjs"),i=require("../api/agent-server-compatibility.cjs"),a=require("../hooks/query/query-keys.cjs"),o=require("../query-client-config.cjs"),s=require("../services/telemetry.cjs");let c=require("react");c=e.__toESM(c,1);let l=require("react/jsx-runtime");var u=c.default.createContext(null);function d(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`backend-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function f(e,t){let n=e.backend.kind===`cloud`,r=t.backend.kind===`cloud`;!n&&!r||(s.setTelemetryCloudContext(null),r&&(!n||e.backend.id!==t.backend.id)&&s.setTelemetryIdentity(null))}function p({children:e}){let n=c.default.useSyncExternalStore(r.subscribeActiveBackend,r.getSnapshot,r.getSnapshot),p=c.default.useCallback(()=>{i.clearCachedAgentServerInfo(),o.queryClient.invalidateQueries({queryKey:a.QUERY_KEYS.WEB_CLIENT_CONFIG})},[]),m=c.default.useCallback((e,t)=>{let n=r.getSnapshot(),i=r.getActiveSelection()?.backendId??null,a=r.getActiveSelection()?.orgId??null,o=t??null;if(e===i&&o===a)return;let s=r.getRegisteredBackends(),c=s.find(t=>t.id===e),l={backend:c??s[0]??r.NO_BACKEND,orgId:c?o:null};f(n.active,l),r.setActiveSelection({backendId:e,orgId:o}),p()},[p]),h=c.default.useCallback(e=>{let t=r.getSnapshot().active,n={...e,id:d()},i=[...r.getRegisteredBackends(),n];return f(t,{backend:n,orgId:null}),r.setRegisteredBackends(i),r.setActiveSelection({backendId:n.id}),p(),n},[p]),g=c.default.useCallback((e,n)=>{let i=r.getRegisteredBackends().find(t=>t.id===e),a=r.getSnapshot().active.backend.id,o=n.host!==void 0&&i!==void 0&&n.host!==i.host,c=n.apiKey!==void 0&&i!==void 0&&n.apiKey!==i.apiKey;r.setRegisteredBackends(r.getRegisteredBackends().map(t=>t.id===e?{...t,...n,connectionRevision:o||c?(t.connectionRevision??0)+1:t.connectionRevision}:t)),(o||c)&&(t.resetBackendHealth(e),a===e&&(i?.kind===`cloud`&&(s.setTelemetryCloudContext(null),s.setTelemetryIdentity(null)),p()))},[p]),_=c.default.useCallback(e=>{let n=r.getRegisteredBackends().find(t=>t.id===e),i=n?.kind===`cloud`&&r.getSnapshot().active.backend.id===n.id;r.setRegisteredBackends(r.getRegisteredBackends().filter(t=>t.id!==e)),i&&(s.setTelemetryCloudContext(null),s.setTelemetryIdentity(null)),t.dropBackendHealth(e),p()},[p]),v=c.default.useMemo(()=>({backends:n.backends,active:n.active,setActive:m,addBackend:h,updateBackend:g,removeBackend:_}),[n,m,h,g,_]);return(0,l.jsx)(u.Provider,{value:v,children:e})}function m(){let e=c.default.useContext(u);if(!e)throw Error(`useActiveBackendContext must be used inside <ActiveBackendProvider>`);return e}function h(){let e=c.default.useContext(u);return e?e.active:{backend:n.makeDefaultLocalBackend()??r.NO_BACKEND,orgId:null}}exports.ActiveBackendProvider=p,exports.useActiveBackend=h,exports.useActiveBackendContext=m;
|
|
2
2
|
//# sourceMappingURL=active-backend-context.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"active-backend-context.cjs","names":[],"sources":["../../src/contexts/active-backend-context.tsx"],"sourcesContent":["import React from \"react\";\nimport { clearCachedAgentServerInfo } from \"#/api/agent-server-compatibility\";\nimport {\n getActiveSelection,\n getRegisteredBackends,\n getSnapshot,\n NO_BACKEND,\n setActiveSelection,\n setRegisteredBackends,\n subscribeActiveBackend,\n} from \"#/api/backend-registry/active-store\";\nimport { makeDefaultLocalBackend } from \"#/api/backend-registry/default-backend\";\nimport {\n dropBackendHealth,\n resetBackendHealth,\n} from \"#/api/backend-registry/health-store\";\nimport {\n type Backend,\n type BackendSelection,\n type ResolvedActiveBackend,\n} from \"#/api/backend-registry/types\";\nimport { QUERY_KEYS } from \"#/hooks/query/query-keys\";\nimport { queryClient } from \"#/query-client-config\";\n\ninterface ActiveBackendContextValue {\n backends: Backend[];\n active: ResolvedActiveBackend;\n setActive: (backendId: string, orgId?: string | null) => void;\n addBackend: (backend: Omit<Backend, \"id\">) => Backend;\n updateBackend: (id: string, patch: Partial<Omit<Backend, \"id\">>) => void;\n removeBackend: (id: string) => void;\n}\n\nconst ActiveBackendContext =\n React.createContext<ActiveBackendContextValue | null>(null);\n\nfunction generateId(): string {\n if (\n typeof crypto !== \"undefined\" &&\n typeof crypto.randomUUID === \"function\"\n ) {\n return crypto.randomUUID();\n }\n return `backend-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;\n}\n\nexport function ActiveBackendProvider({\n children,\n}: {\n children: React.ReactNode;\n}) {\n const snapshot = React.useSyncExternalStore(\n subscribeActiveBackend,\n getSnapshot,\n getSnapshot,\n );\n\n const retryBootstrapProbe = React.useCallback(() => {\n clearCachedAgentServerInfo();\n void queryClient.invalidateQueries({\n queryKey: QUERY_KEYS.WEB_CLIENT_CONFIG,\n });\n }, []);\n\n const setActive = React.useCallback(\n (backendId: string, orgId?: string | null) => {\n const prevBackendId = getActiveSelection()?.backendId ?? null;\n const prevOrgId = getActiveSelection()?.orgId ?? null;\n const nextOrgId = orgId ?? null;\n\n if (backendId === prevBackendId && nextOrgId === prevOrgId) return;\n\n const next: BackendSelection = { backendId, orgId: nextOrgId };\n setActiveSelection(next);\n retryBootstrapProbe();\n\n // No blanket `invalidateQueries()` here. Long-lived queries\n // (`useSettings`, `usePaginatedConversations`,\n // `useGitRepositories`, `useAppInstallations`,\n // `useCloudCurrentUserId`, `useGitUser`, …) include the active\n // backend's `id` and `orgId` in their query keys, so React Query\n // treats a backend/org switch as a brand-new query and fetches\n // automatically — once, with no duplicate waves.\n },\n [retryBootstrapProbe],\n );\n\n // @spec BM-001 — Auto-switch to newly connected backend\n const addBackend = React.useCallback(\n (backend: Omit<Backend, \"id\">): Backend => {\n const next: Backend = { ...backend, id: generateId() };\n const list = [...getRegisteredBackends(), next];\n setRegisteredBackends(list);\n setActiveSelection({ backendId: next.id });\n retryBootstrapProbe();\n return next;\n },\n [retryBootstrapProbe],\n );\n\n const updateBackend = React.useCallback(\n (id: string, patch: Partial<Omit<Backend, \"id\">>) => {\n const prev = getRegisteredBackends().find((b) => b.id === id);\n const activeBeforeUpdate = getActiveSelection()?.backendId ?? null;\n const list = getRegisteredBackends().map((b) =>\n b.id === id ? { ...b, ...patch } : b,\n );\n setRegisteredBackends(list);\n\n // Re-arm health polling when the user edits the fields that\n // actually drive the probe. Cosmetic edits (name) shouldn't\n // re-enable a backend that was disabled for being unreachable.\n const hostChanged =\n patch.host !== undefined &&\n prev !== undefined &&\n patch.host !== prev.host;\n const apiKeyChanged =\n patch.apiKey !== undefined &&\n prev !== undefined &&\n patch.apiKey !== prev.apiKey;\n if (hostChanged || apiKeyChanged) {\n resetBackendHealth(id);\n if (activeBeforeUpdate === id) {\n retryBootstrapProbe();\n }\n }\n },\n [retryBootstrapProbe],\n );\n\n const removeBackend = React.useCallback(\n (id: string) => {\n const list = getRegisteredBackends().filter((b) => b.id !== id);\n setRegisteredBackends(list);\n dropBackendHealth(id);\n retryBootstrapProbe();\n // If the active selection pointed at this backend, the active\n // store falls back to the first remaining local backend (or the\n // env-derived default if no locals exist); consumer hooks re-key\n // by the new active backend identity and refetch automatically.\n },\n [retryBootstrapProbe],\n );\n\n const value = React.useMemo<ActiveBackendContextValue>(\n () => ({\n backends: snapshot.backends,\n active: snapshot.active,\n setActive,\n addBackend,\n updateBackend,\n removeBackend,\n }),\n [snapshot, setActive, addBackend, updateBackend, removeBackend],\n );\n\n return (\n <ActiveBackendContext.Provider value={value}>\n {children}\n </ActiveBackendContext.Provider>\n );\n}\n\nexport function useActiveBackendContext(): ActiveBackendContextValue {\n const ctx = React.useContext(ActiveBackendContext);\n if (!ctx) {\n throw new Error(\n \"useActiveBackendContext must be used inside <ActiveBackendProvider>\",\n );\n }\n return ctx;\n}\n\n/**\n * Read the resolved active backend.\n *\n * Falls back to a synthesized env-derived local backend when called\n * outside an `<ActiveBackendProvider>` (e.g. from a unit test that\n * mounts a narrow component without the full provider stack). That\n * synthesized backend is identical to the seed used on first install.\n *\n * Components that need to mutate state (`setActive`, `addBackend`,\n * etc.) must use `useActiveBackendContext()` directly — that throws if\n * the provider is missing, since mutation requires the live store.\n */\nexport function useActiveBackend(): ResolvedActiveBackend {\n const ctx = React.useContext(ActiveBackendContext);\n if (ctx) return ctx.active;\n return { backend: makeDefaultLocalBackend() ?? NO_BACKEND, orgId: null };\n}\n"],"mappings":"2aAiCA,IAAM,EACJ,EAAA,QAAM,cAAgD,IAAI,EAE5D,SAAS,GAAqB,CAO5B,OALE,OAAO,OAAW,KAClB,OAAO,OAAO,YAAe,WAEtB,OAAO,WAAW,EAEpB,WAAW,KAAK,IAAI,EAAE,GAAG,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAG,EAAE,GACxE,CAEA,SAAgB,EAAsB,CACpC,YAGC,CACD,IAAM,EAAW,EAAA,QAAM,qBACrB,EAAA,uBACA,EAAA,YACA,EAAA,WACF,EAEM,EAAsB,EAAA,QAAM,gBAAkB,CAClD,EAAA,2BAA2B,EAC3B,EAAK,YAAY,kBAAkB,CACjC,SAAU,EAAA,WAAW,iBACvB,CAAC,CACH,EAAG,CAAC,CAAC,EAEC,EAAY,EAAA,QAAM,aACrB,EAAmB,IAA0B,CAC5C,IAAM,EAAgB,EAAA,mBAAmB,GAAG,WAAa,KACnD,EAAY,EAAA,mBAAmB,GAAG,OAAS,KAC3C,EAAY,GAAS,KAEvB,IAAc,GAAiB,IAAc,IAGjD,EAAA,mBAAmB,CADc,YAAW,MAAO,CAChC,CAAI,EACvB,EAAoB,EAStB,EACA,CAAC,CAAmB,CACtB,EAGM,EAAa,EAAA,QAAM,YACtB,GAA0C,CACzC,IAAM,EAAgB,CAAE,GAAG,EAAS,GAAI,EAAW,CAAE,EAKrD,OAHA,EAAA,sBAAsB,CADR,GAAG,EAAA,sBAAsB,EAAG,CACpB,CAAI,EAC1B,EAAA,mBAAmB,CAAE,UAAW,EAAK,EAAG,CAAC,EACzC,EAAoB,EACb,CACT,EACA,CAAC,CAAmB,CACtB,EAEM,EAAgB,EAAA,QAAM,aACzB,EAAY,IAAwC,CACnD,IAAM,EAAO,EAAA,sBAAsB,EAAE,KAAM,GAAM,EAAE,KAAO,CAAE,EACtD,EAAqB,EAAA,mBAAmB,GAAG,WAAa,KAI9D,EAAA,sBAHa,EAAA,sBAAsB,EAAE,IAAK,GACxC,EAAE,KAAO,EAAK,CAAE,GAAG,EAAG,GAAG,CAAM,EAAI,CAEf,CAAI,EAK1B,IAAM,EACJ,EAAM,OAAS,IAAA,IACf,IAAS,IAAA,IACT,EAAM,OAAS,EAAK,KAChB,EACJ,EAAM,SAAW,IAAA,IACjB,IAAS,IAAA,IACT,EAAM,SAAW,EAAK,QACpB,GAAe,KACjB,EAAA,mBAAmB,CAAE,EACjB,IAAuB,GACzB,EAAoB,EAG1B,EACA,CAAC,CAAmB,CACtB,EAEM,EAAgB,EAAA,QAAM,YACzB,GAAe,CAEd,EAAA,sBADa,EAAA,sBAAsB,EAAE,OAAQ,GAAM,EAAE,KAAO,CACtC,CAAI,EAC1B,EAAA,kBAAkB,CAAE,EACpB,EAAoB,CAKtB,EACA,CAAC,CAAmB,CACtB,EAEM,EAAQ,EAAA,QAAM,aACX,CACL,SAAU,EAAS,SACnB,OAAQ,EAAS,OACjB,YACA,aACA,gBACA,eACF,GACA,CAAC,EAAU,EAAW,EAAY,EAAe,CAAa,CAChE,EAEA,OACE,EAAA,EAAA,KAAC,EAAqB,SAAtB,CAAsC,QACnC,UAC4B,CAAA,CAEnC,CAEA,SAAgB,GAAqD,CACnE,IAAM,EAAM,EAAA,QAAM,WAAW,CAAoB,EACjD,GAAI,CAAC,EACH,MAAU,MACR,qEACF,EAEF,OAAO,CACT,CAcA,SAAgB,GAA0C,CACxD,IAAM,EAAM,EAAA,QAAM,WAAW,CAAoB,EAEjD,OADI,EAAY,EAAI,OACb,CAAE,QAAS,EAAA,wBAAwB,GAAK,EAAA,WAAY,MAAO,IAAK,CACzE"}
|
|
1
|
+
{"version":3,"file":"active-backend-context.cjs","names":[],"sources":["../../src/contexts/active-backend-context.tsx"],"sourcesContent":["import React from \"react\";\nimport { clearCachedAgentServerInfo } from \"#/api/agent-server-compatibility\";\nimport {\n getActiveSelection,\n getRegisteredBackends,\n getSnapshot,\n NO_BACKEND,\n setActiveSelection,\n setRegisteredBackends,\n subscribeActiveBackend,\n} from \"#/api/backend-registry/active-store\";\nimport { makeDefaultLocalBackend } from \"#/api/backend-registry/default-backend\";\nimport {\n dropBackendHealth,\n resetBackendHealth,\n} from \"#/api/backend-registry/health-store\";\nimport {\n type Backend,\n type BackendSelection,\n type ResolvedActiveBackend,\n} from \"#/api/backend-registry/types\";\nimport { QUERY_KEYS } from \"#/hooks/query/query-keys\";\nimport { queryClient } from \"#/query-client-config\";\nimport {\n setTelemetryCloudContext,\n setTelemetryIdentity,\n} from \"#/services/telemetry\";\n\ntype BackendInput = Omit<Backend, \"id\" | \"connectionRevision\">;\n\ninterface ActiveBackendContextValue {\n backends: Backend[];\n active: ResolvedActiveBackend;\n setActive: (backendId: string, orgId?: string | null) => void;\n addBackend: (backend: BackendInput) => Backend;\n updateBackend: (id: string, patch: Partial<BackendInput>) => void;\n removeBackend: (id: string) => void;\n}\n\nconst ActiveBackendContext =\n React.createContext<ActiveBackendContextValue | null>(null);\n\nfunction generateId(): string {\n if (\n typeof crypto !== \"undefined\" &&\n typeof crypto.randomUUID === \"function\"\n ) {\n return crypto.randomUUID();\n }\n return `backend-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;\n}\n\nfunction applyTelemetrySelectionBoundary(\n previous: ResolvedActiveBackend,\n next: ResolvedActiveBackend,\n): void {\n const previousWasCloud = previous.backend.kind === \"cloud\";\n const nextIsCloud = next.backend.kind === \"cloud\";\n if (!previousWasCloud && !nextIsCloud) return;\n\n setTelemetryCloudContext(null);\n\n if (\n nextIsCloud &&\n (!previousWasCloud || previous.backend.id !== next.backend.id)\n ) {\n void setTelemetryIdentity(null);\n }\n}\n\nexport function ActiveBackendProvider({\n children,\n}: {\n children: React.ReactNode;\n}) {\n const snapshot = React.useSyncExternalStore(\n subscribeActiveBackend,\n getSnapshot,\n getSnapshot,\n );\n\n const retryBootstrapProbe = React.useCallback(() => {\n clearCachedAgentServerInfo();\n void queryClient.invalidateQueries({\n queryKey: QUERY_KEYS.WEB_CLIENT_CONFIG,\n });\n }, []);\n\n const setActive = React.useCallback(\n (backendId: string, orgId?: string | null) => {\n const currentSnapshot = getSnapshot();\n const prevBackendId = getActiveSelection()?.backendId ?? null;\n const prevOrgId = getActiveSelection()?.orgId ?? null;\n const nextOrgId = orgId ?? null;\n\n if (backendId === prevBackendId && nextOrgId === prevOrgId) return;\n\n const registeredBackends = getRegisteredBackends();\n const selectedBackend = registeredBackends.find(\n (b) => b.id === backendId,\n );\n const nextActive: ResolvedActiveBackend = {\n backend: selectedBackend ?? registeredBackends[0] ?? NO_BACKEND,\n orgId: selectedBackend ? nextOrgId : null,\n };\n applyTelemetrySelectionBoundary(currentSnapshot.active, nextActive);\n\n const next: BackendSelection = { backendId, orgId: nextOrgId };\n setActiveSelection(next);\n retryBootstrapProbe();\n\n // No blanket `invalidateQueries()` here. Long-lived queries\n // (`useSettings`, `usePaginatedConversations`,\n // `useGitRepositories`, `useAppInstallations`,\n // `useCloudCurrentUserId`, `useGitUser`, …) include the active\n // backend's `id` and `orgId` in their query keys, so React Query\n // treats a backend/org switch as a brand-new query and fetches\n // automatically — once, with no duplicate waves.\n },\n [retryBootstrapProbe],\n );\n\n // @spec BM-001 — Auto-switch to newly connected backend\n const addBackend = React.useCallback(\n (backend: BackendInput): Backend => {\n const previousActive = getSnapshot().active;\n const next: Backend = { ...backend, id: generateId() };\n const list = [...getRegisteredBackends(), next];\n applyTelemetrySelectionBoundary(previousActive, {\n backend: next,\n orgId: null,\n });\n setRegisteredBackends(list);\n setActiveSelection({ backendId: next.id });\n retryBootstrapProbe();\n return next;\n },\n [retryBootstrapProbe],\n );\n\n const updateBackend = React.useCallback(\n (id: string, patch: Partial<BackendInput>) => {\n const prev = getRegisteredBackends().find((b) => b.id === id);\n const activeBeforeUpdate = getSnapshot().active.backend.id;\n // Re-arm health polling when the user edits the fields that\n // actually drive the probe. Cosmetic edits (name) shouldn't\n // re-enable a backend that was disabled for being unreachable.\n const hostChanged =\n patch.host !== undefined &&\n prev !== undefined &&\n patch.host !== prev.host;\n const apiKeyChanged =\n patch.apiKey !== undefined &&\n prev !== undefined &&\n patch.apiKey !== prev.apiKey;\n const list = getRegisteredBackends().map((b) =>\n b.id === id\n ? {\n ...b,\n ...patch,\n connectionRevision:\n hostChanged || apiKeyChanged\n ? (b.connectionRevision ?? 0) + 1\n : b.connectionRevision,\n }\n : b,\n );\n setRegisteredBackends(list);\n\n if (hostChanged || apiKeyChanged) {\n resetBackendHealth(id);\n if (activeBeforeUpdate === id) {\n if (prev?.kind === \"cloud\") {\n setTelemetryCloudContext(null);\n void setTelemetryIdentity(null);\n }\n retryBootstrapProbe();\n }\n }\n },\n [retryBootstrapProbe],\n );\n\n const removeBackend = React.useCallback(\n (id: string) => {\n const removed = getRegisteredBackends().find((b) => b.id === id);\n const wasActiveCloud =\n removed?.kind === \"cloud\" &&\n getSnapshot().active.backend.id === removed.id;\n const list = getRegisteredBackends().filter((b) => b.id !== id);\n setRegisteredBackends(list);\n if (wasActiveCloud) {\n setTelemetryCloudContext(null);\n void setTelemetryIdentity(null);\n }\n dropBackendHealth(id);\n retryBootstrapProbe();\n // If the active selection pointed at this backend, the active\n // store falls back to the first remaining local backend (or the\n // env-derived default if no locals exist); consumer hooks re-key\n // by the new active backend identity and refetch automatically.\n },\n [retryBootstrapProbe],\n );\n\n const value = React.useMemo<ActiveBackendContextValue>(\n () => ({\n backends: snapshot.backends,\n active: snapshot.active,\n setActive,\n addBackend,\n updateBackend,\n removeBackend,\n }),\n [snapshot, setActive, addBackend, updateBackend, removeBackend],\n );\n\n return (\n <ActiveBackendContext.Provider value={value}>\n {children}\n </ActiveBackendContext.Provider>\n );\n}\n\nexport function useActiveBackendContext(): ActiveBackendContextValue {\n const ctx = React.useContext(ActiveBackendContext);\n if (!ctx) {\n throw new Error(\n \"useActiveBackendContext must be used inside <ActiveBackendProvider>\",\n );\n }\n return ctx;\n}\n\n/**\n * Read the resolved active backend.\n *\n * Falls back to a synthesized env-derived local backend when called\n * outside an `<ActiveBackendProvider>` (e.g. from a unit test that\n * mounts a narrow component without the full provider stack). That\n * synthesized backend is identical to the seed used on first install.\n *\n * Components that need to mutate state (`setActive`, `addBackend`,\n * etc.) must use `useActiveBackendContext()` directly — that throws if\n * the provider is missing, since mutation requires the live store.\n */\nexport function useActiveBackend(): ResolvedActiveBackend {\n const ctx = React.useContext(ActiveBackendContext);\n if (ctx) return ctx.active;\n return { backend: makeDefaultLocalBackend() ?? NO_BACKEND, orgId: null };\n}\n"],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { type Backend, type ResolvedActiveBackend } from "#/api/backend-registry/types";
|
|
3
|
+
type BackendInput = Omit<Backend, "id" | "connectionRevision">;
|
|
3
4
|
interface ActiveBackendContextValue {
|
|
4
5
|
backends: Backend[];
|
|
5
6
|
active: ResolvedActiveBackend;
|
|
6
7
|
setActive: (backendId: string, orgId?: string | null) => void;
|
|
7
|
-
addBackend: (backend:
|
|
8
|
-
updateBackend: (id: string, patch: Partial<
|
|
8
|
+
addBackend: (backend: BackendInput) => Backend;
|
|
9
|
+
updateBackend: (id: string, patch: Partial<BackendInput>) => void;
|
|
9
10
|
removeBackend: (id: string) => void;
|
|
10
11
|
}
|
|
11
12
|
export declare function ActiveBackendProvider({ children, }: {
|