@openhands/agent-canvas 1.0.0-beta.6 → 1.0.0-beta.8
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 +24 -7
- package/README.windows.md +27 -0
- package/bin/agent-canvas.mjs +26 -3
- package/build/assets/{QueryClientProvider-CkGuhXg-.js → QueryClientProvider-Cnr-Yl3j.js} +1 -1
- package/build/assets/{Trans-Cvm_-SMi.js → Trans-4jmk54WC.js} +1 -1
- package/build/assets/acp-providers-BAX8OU5C.js +1 -0
- package/build/assets/{acp-route-guard-B2yoBZ_4.js → acp-route-guard-HPk6TV-L.js} +1 -1
- package/build/assets/active-backend-context-BSPE-W72.js +1 -0
- package/build/assets/add-backend-modal-mXKmfMI2.js +1 -0
- package/build/assets/agent-server-client-options-9agOSarV.js +1 -0
- package/build/assets/agent-server-compatibility-B7QStIcH.js +1 -0
- package/build/assets/agent-server-conversation-service.api-B9TUYJon.js +5 -0
- package/build/assets/{agent-settings-CnGSCmK8.js → agent-settings-g3F623RJ.js} +1 -1
- package/build/assets/{alert-banner-DtzAX654.js → alert-banner-DFnn_lC6.js} +1 -1
- package/build/assets/{analytics-consent-form-modal-CHZ3I37v.js → analytics-consent-form-modal-BQCNeNVt.js} +1 -1
- package/build/assets/api-key-entry-screen-myuWMqzW.js +1 -0
- package/build/assets/{app-settings-Db9ITeJH.js → app-settings-CCcX8ZEH.js} +1 -1
- package/build/assets/automation-detail-BDHLHSJd.js +1 -0
- package/build/assets/automations-list-CiNtQhq_.js +1 -0
- package/build/assets/back-nav-button-7dQJ2k3O.js +1 -0
- package/build/assets/backend-form-modal-D3bDMO3C.js +1 -0
- package/build/assets/{backend-synced-settings-badge-Dc6c7GT4.js → backend-synced-settings-badge-BkW5evM0.js} +1 -1
- package/build/assets/base-modal-C2oy2EBG.js +1 -0
- package/build/assets/brand-button-DJ_S16rO.js +1 -0
- package/build/assets/{browser-D810xUYt.js → browser-CGM-k-sH.js} +2 -2
- package/build/assets/browser-store-DAsixKdU.js +1 -0
- package/build/assets/{browser-tab-B-aIqXRl.js → browser-tab-dvSPdvkm.js} +1 -1
- package/build/assets/{checkmark-DL7acQA7.js → checkmark-Dus0b6jt.js} +1 -1
- package/build/assets/{chevron-left-small-CVWf8TI6.js → chevron-left-small-_uvG7RVM.js} +1 -1
- package/build/assets/{circle-plus-check-toggle-P7ZZToV4.js → circle-plus-check-toggle-DKS8MAVV.js} +1 -1
- package/build/assets/{close-B5LROHR3.js → close-BU5iTc66.js} +1 -1
- package/build/assets/code-tag-BzyqOtPD.js +1 -0
- package/build/assets/combobox-caret-BJC7XJsz.js +1 -0
- package/build/assets/{command-store-DFN_17p1.js → command-store-CE1weJy8.js} +1 -1
- package/build/assets/{condenser-settings-wnEKhBof.js → condenser-settings-DCTulgLO.js} +1 -1
- package/build/assets/{confirmation-modal-Dau3w_sa.js → confirmation-modal-B5Ca6qFE.js} +1 -1
- package/build/assets/context-menu-list-item-7tAcm2c3.js +1 -0
- package/build/assets/conversation-BKhikfYl.js +1 -0
- package/build/assets/conversation-DTn8jN8L.js +19 -0
- package/build/assets/conversation-panel-DfHR42mG.js +1 -0
- package/build/assets/conversation-service.api-B6CkzaKD.js +1 -0
- package/build/assets/conversation-state-store-D-w0uurj.js +1 -0
- package/build/assets/conversation-store-CC-isCnP.js +1 -0
- package/build/assets/{conversation-tab-empty-state-DyssnnWa.js → conversation-tab-empty-state-CStQLPVW.js} +1 -1
- package/build/assets/conversation-websocket-context-DShEuLjh.js +3 -0
- package/build/assets/{copy-DYgmUdIw.js → copy-Chg-sFu3.js} +1 -1
- package/build/assets/{custom-toast-handlers-C-SZFmto.js → custom-toast-handlers-ufGJ6_Rc.js} +1 -1
- package/build/assets/declaration-CR6HMp29.js +1 -0
- package/build/assets/{device-verify-DqDlphsG.js → device-verify-C6mj28zv.js} +1 -1
- package/build/assets/dist-DNeWJ2bh.js +1 -0
- package/build/assets/dropdown-classes-BsVmxlNG.js +1 -0
- package/build/assets/edit-automation-modal-DamwL0s0.js +1 -0
- package/build/assets/ellipsis-button-Vh5MvRZa.js +1 -0
- package/build/assets/entry.client-Cn71WM8q.js +2 -0
- package/build/assets/enum-filter-dropdown-5JeF2RLb.js +1 -0
- package/build/assets/{environment-switch-overlay-XL8yCGP6.js → environment-switch-overlay-Tf_BIfeR.js} +1 -1
- package/build/assets/extensions-hub-CUEmfvGy.js +1 -0
- package/build/assets/{extensions-navigation-BYR8Giqq.js → extensions-navigation-VQ-3umJ7.js} +1 -1
- package/build/assets/file-BTY6Gyy9.js +1 -0
- package/build/assets/files-tab-C47fQEeL.js +1 -0
- package/build/assets/files-tab-store-m0ARqX_E.js +1 -0
- package/build/assets/{folder-ZZJVGgd7.js → folder-D1T2W1cj.js} +1 -1
- package/build/assets/git-control-bar-branch-button-BT0aWH-o.js +27 -0
- package/build/assets/git-provider-icon-Pi-Cxpgv.js +1 -0
- package/build/assets/globe-Bzj_0oXT.js +1 -0
- package/build/assets/home-C3k6sFvB.js +1 -0
- package/build/assets/{i18n-CTohRuoO.js → i18n-DET2iOyh.js} +1 -1
- package/build/assets/install-server-modal-6fuq-TU6.js +1 -0
- package/build/assets/launch-DGghLfGx.js +1 -0
- package/build/assets/{lesson-plan-dH5Bj0pN.js → lesson-plan-duSsqWVs.js} +1 -1
- package/build/assets/link-external-DGxVm4Ps.js +1 -0
- package/build/assets/{llm-client-DaH1TuyR.js → llm-client-BqyLKgUN.js} +1 -1
- package/build/assets/llm-settings-BKraGtOu.js +1 -0
- package/build/assets/llm-settings-DRQTgOF1.js +1 -0
- package/build/assets/{loading-spinner-BPtYORNK.js → loading-spinner-5GT9q1xy.js} +1 -1
- package/build/assets/manage-backends-modal-CRMwyU0t.js +1 -0
- package/build/assets/manage-workspaces-modal-BYmGD1W7.js +1 -0
- package/build/assets/manifest-99b06a11.js +1 -0
- package/build/assets/{markdown-renderer-DMzf2i4x.js → markdown-renderer-B3IAVfv4.js} +1 -1
- package/build/assets/mcp-CfDRAmPn.js +9 -0
- package/build/assets/messages-Ba1vaw6t.js +36 -0
- package/build/assets/{modal-backdrop-BAbgYsqB.js → modal-backdrop-RfNCrSpK.js} +1 -1
- package/build/assets/{modal-body-BI6Ru2Qr.js → modal-body-aoa2fx5W.js} +1 -1
- package/build/assets/modal-classes-6YqcqA6y.js +1 -0
- package/build/assets/{modal-close-button-t1Gh3qmL.js → modal-close-button-CtWOUMmw.js} +1 -1
- package/build/assets/{model-selector-SM9IUz-q.js → model-selector-DcztJSxT.js} +1 -1
- package/build/assets/{navigation-context-D0YWpT8d.js → navigation-context-BdKYH32C.js} +1 -1
- package/build/assets/{navigation-link-Cn7KP3c5.js → navigation-link-U4vY9i_C.js} +1 -1
- package/build/assets/{openhands-logo-CnrF6LKb.js → openhands-logo-CCo0wJZX.js} +1 -1
- package/build/assets/{option-service.api-KvY_mZMY.js → option-service.api-CGNANEcT.js} +1 -1
- package/build/assets/{organization-service.api-DzYTHTYC.js → organization-service.api-BeuMC9QL.js} +1 -1
- package/build/assets/{path-utils-C3bQf6lJ.js → path-utils-z12iCrQO.js} +1 -1
- package/build/assets/{plan-components-atxXCF0R.js → plan-components-CRDMQzsS.js} +1 -1
- package/build/assets/{planner-tab-BlrCpv-7.js → planner-tab-Dte6Vzza.js} +1 -1
- package/build/assets/{profiles-client-D6IkTJof.js → profiles-client-BrqNmaDV.js} +1 -1
- package/build/assets/{providers-Bx6EfrzZ.js → providers-eUyo6pgr.js} +1 -1
- package/build/assets/proxy-BqDMnUY-.js +1 -0
- package/build/assets/{query-client-config-B7u9asM0.js → query-client-config-CRnGSujB.js} +1 -1
- package/build/assets/{recommended-automations-launcher-CgV8FyPK.js → recommended-automations-launcher-D5ADbXao.js} +3 -3
- package/build/assets/{root-dNntxffj.js → root-BmhaEJJ8.js} +2 -2
- package/build/assets/root-Z2VHU4R3.css +1 -0
- package/build/assets/root-layout-CNggm0d8.js +2 -0
- package/build/assets/{sdk-section-page-DOIKvwSL.js → sdk-section-page-CRCRY3PG.js} +1 -1
- package/build/assets/{sdk-settings-schema-DsUf9wu1.js → sdk-settings-schema-CLmJ9sho.js} +1 -1
- package/build/assets/{search-27Owlc3A.js → search-SuJctqNJ.js} +1 -1
- package/build/assets/secrets-service-B9AFn9OE.js +1 -0
- package/build/assets/secrets-settings-0UrKMS60.js +1 -0
- package/build/assets/{server-client-DyAQ3NZ_.js → server-client-DYv_GHPl.js} +1 -1
- package/build/assets/{settings-BYkVX7vW.js → settings-6t6LGW04.js} +1 -1
- package/build/assets/{settings-dropdown-input-BJYvGdg-.js → settings-dropdown-input-BtoovFre.js} +1 -1
- package/build/assets/{settings-gear-C77PgE_O.js → settings-gear-Dd8K2_8B.js} +1 -1
- package/build/assets/settings-index-CR6Ou73o.js +1 -0
- package/build/assets/{settings-input-Bn7F5C75.js → settings-input-CehsXnb3.js} +1 -1
- package/build/assets/settings-list-classes-E3v_f6QG.js +1 -0
- package/build/assets/settings-modal-T_Yk1Zfo.js +1 -0
- package/build/assets/{settings-section-header-context-BgZe5YkE.js → settings-section-header-context-DewwJ0-F.js} +1 -1
- package/build/assets/settings-service.api-DwtyDeGh.js +1 -0
- package/build/assets/{settings-switch-BeIKrWms.js → settings-switch-BiBuS3xa.js} +1 -1
- package/build/assets/{settings-utils-B6Nl07io.js → settings-utils-DY04tWG1.js} +1 -1
- package/build/assets/{shared-conversation-AMyqXvpk.js → shared-conversation-BzccsVej.js} +1 -1
- package/build/assets/sidebar-mobile-menu-toggle-DGlRg6jG.js +1 -0
- package/build/assets/{sidebar-nav-link-BGjiJq-4.js → sidebar-nav-link-dgVb8Fpy.js} +1 -1
- package/build/assets/{sidebar-store-Uy3v0AOV.js → sidebar-store-DnQAJAE5.js} +1 -1
- package/build/assets/{skill-card-pill-row-DF1axQCG.js → skill-card-pill-row-BW9qvhoK.js} +1 -1
- package/build/assets/{skills-ChIKZPK4.js → skills-0GRKX5Xj.js} +1 -1
- package/build/assets/{skills-plugins-CcI_19lM.js → skills-plugins-DctDrZ8Y.js} +1 -1
- package/build/assets/skills-settings-rvxImDj_.js +2 -0
- package/build/assets/{styled-tooltip-CBzrri6o.js → styled-tooltip-hdfMXPQC.js} +1 -1
- package/build/assets/{switch-skeleton-DnC9wLp7.js → switch-skeleton-DSKqSx2A.js} +1 -1
- package/build/assets/{task-list-tab-DUJn1sgz.js → task-list-tab-DT6_zfUs.js} +1 -1
- package/build/assets/{terminal-RmuaSdhJ.js → terminal-CPYWdo4j.js} +1 -1
- package/build/assets/{terminal-DgQk1Ay6.js → terminal-KldRPIRT.js} +2 -2
- package/build/assets/{toggle-switch-Pvyp2RAN.js → toggle-switch-T2v6sJ6l.js} +1 -1
- package/build/assets/{typography-gpuWmrQO.js → typography-BDgnT7Yp.js} +1 -1
- package/build/assets/{u-check-circle-IUIfACQQ.js → u-check-circle-DOauqQKb.js} +1 -1
- package/build/assets/{u-check-circle-half-C1YxB6py.js → u-check-circle-half-steSK_JB.js} +1 -1
- package/build/assets/{u-circuit-BmVikJHu.js → u-circuit-x3ExjBbU.js} +1 -1
- package/build/assets/{u-edit-CFvXHqZk.js → u-edit-BbrptMCa.js} +1 -1
- package/build/assets/{use-active-conversation-BEFNwnFk.js → use-active-conversation-sPgfSkql.js} +1 -1
- package/build/assets/use-agent-settings-schema-B66kGIi_.js +1 -0
- package/build/assets/{use-agent-state-Bkrd1FZq.js → use-agent-state-Dp3pD1h3.js} +1 -1
- package/build/assets/{use-cloud-current-user-id-CvkXFnTT.js → use-cloud-current-user-id-ClKFPjFz.js} +1 -1
- package/build/assets/{use-config-Co1O8-Ey.js → use-config-C9pvb0Sm.js} +1 -1
- package/build/assets/{use-create-conversation-CEgXpkfH.js → use-create-conversation-B-lwTnfE.js} +1 -1
- package/build/assets/{use-event-store-BT_gV3ut.js → use-event-store-BomO7ywK.js} +1 -1
- package/build/assets/{use-get-secrets-DuhdIA59.js → use-get-secrets-oyC7PFRz.js} +1 -1
- package/build/assets/{use-handle-plan-click-Ckkm5eIY.js → use-handle-plan-click-DP6Rs-YP.js} +1 -1
- package/build/assets/use-is-authed-dw2026rR.js +1 -0
- package/build/assets/{use-is-creating-conversation-BZ5hB_Bg.js → use-is-creating-conversation-DX2qSlfL.js} +1 -1
- package/build/assets/{use-launch-skill-in-chat-fNN_xGZG.js → use-launch-skill-in-chat-sQNEOLGD.js} +1 -1
- package/build/assets/use-llm-profiles-Bh5JqZUZ.js +1 -0
- package/build/assets/use-runtime-is-ready-BakOUVU-.js +1 -0
- package/build/assets/{use-save-settings-VUrj_QNG.js → use-save-settings-uXXkqvD7.js} +1 -1
- package/build/assets/use-settings-DeO7nvpM.js +1 -0
- package/build/assets/{use-settings-nav-items-1ZvovKSr.js → use-settings-nav-items-BGMFn25b.js} +1 -1
- package/build/assets/{use-skills-DAMLFjKU.js → use-skills-DWIK3l3a.js} +1 -1
- package/build/assets/{use-task-list-CLJbuJgM.js → use-task-list-CsT10CBb.js} +1 -1
- package/build/assets/{use-unified-vscode-url-DdSRw-6P.js → use-unified-vscode-url-DXPtB317.js} +1 -1
- package/build/assets/use-user-conversation-DJen4YIP.js +1 -0
- package/build/assets/{useMutation-DqrumCWD.js → useMutation-GSSKKebK.js} +1 -1
- package/build/assets/{useTranslation-DCOdSSMl.js → useTranslation-B6voJV4y.js} +1 -1
- package/build/assets/utils-DCVfKFRt.js +1 -0
- package/build/assets/{vendor~browser-BNjNhjFU.js → vendor~browser-BrOJLj3y.js} +1 -1
- package/build/assets/vendor~conversation-panel~conversation-C9o-K1hW.js +1 -0
- package/build/assets/vendor~conversation-panel~conversation~index-RXYdJYxU.js +1 -0
- package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~jfc6hidu-VnmIZrq3.js → vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~jfc6hidu-DJS-rJdI.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DpAdkv8m.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-6ByzelMS.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-B92czPCF.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BED5W_c4.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-By5W2oHN.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CCbqAFiI.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BbFOrAjI.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CG96FCly.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-smY2r837.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-E4d6IEfI.js} +1 -1
- package/build/assets/{vendor~home~mcp~automations-list-Cs-TO3fK.js → vendor~home~mcp~automations-list-CZSK-lT2.js} +1 -1
- package/build/assets/{vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-Z3nsiNNq.js → vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-CjJdFLoM.js} +1 -1
- package/build/assets/{vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-DbfELDJu.js → vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-m8dOii0J.js} +2 -2
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation-DjAjXS5J.js → vendor~root-layout~home~conversation-panel~conversation-B5WNMnt4.js} +1 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~i4kjfqhl-CbAhtEMv.js +1 -0
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-6Rm8U_Sr.js +9 -0
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-BkQGKpye.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-tTR8C6m0.js} +1 -1
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~k776hupu-Bbs7UJ5U.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~k776hupu-BJbu9kpL.js} +2 -2
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~dp08i1qy-DTwbEEcX.js → vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~dp08i1qy-D8soyAAx.js} +1 -1
- package/build/assets/{vendor~root~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-s~f2l2lr17-CDXvdvb2.js → vendor~root~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-s~f2l2lr17-DYXOLEck.js} +1 -1
- package/build/assets/{verification-settings-CsbvQcYS.js → verification-settings-C_zHuDx9.js} +1 -1
- package/build/assets/{vscode-tab-DjNArCgY.js → vscode-tab-DH9x7xXS.js} +1 -1
- package/build/assets/{waiting-for-runtime-message-CntjExbU.js → waiting-for-runtime-message-CdK3btDZ.js} +1 -1
- package/build/assets/{x-mark-CrpjscNc.js → x-mark-BrkSPIiT.js} +1 -1
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +20 -2
- package/build/locales/ca/openhands.json +20 -2
- package/build/locales/de/openhands.json +20 -2
- package/build/locales/en/openhands.json +20 -2
- package/build/locales/es/openhands.json +20 -2
- package/build/locales/fr/openhands.json +20 -2
- package/build/locales/it/openhands.json +20 -2
- package/build/locales/ja/openhands.json +20 -2
- package/build/locales/ko-KR/openhands.json +20 -2
- package/build/locales/no/openhands.json +20 -2
- package/build/locales/pt/openhands.json +20 -2
- package/build/locales/tr/openhands.json +20 -2
- package/build/locales/uk/openhands.json +20 -2
- package/build/locales/zh-CN/openhands.json +20 -2
- package/build/locales/zh-TW/openhands.json +20 -2
- package/dist/api/acp-service/acp-service.api.d.ts +18 -0
- 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.js +54 -55
- package/dist/api/agent-server-adapter.js.map +1 -1
- package/dist/api/agent-server-client-options.cjs +1 -1
- package/dist/api/agent-server-client-options.cjs.map +1 -1
- package/dist/api/agent-server-client-options.d.ts +4 -0
- package/dist/api/agent-server-client-options.js +18 -12
- package/dist/api/agent-server-client-options.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 +1 -1
- package/dist/api/agent-server-compatibility.js +30 -25
- package/dist/api/agent-server-compatibility.js.map +1 -1
- package/dist/api/agent-server-config.cjs +1 -1
- package/dist/api/agent-server-config.cjs.map +1 -1
- package/dist/api/agent-server-config.d.ts +15 -48
- package/dist/api/agent-server-config.js +25 -69
- package/dist/api/agent-server-config.js.map +1 -1
- package/dist/api/backend-registry/active-store.cjs +1 -1
- package/dist/api/backend-registry/active-store.cjs.map +1 -1
- package/dist/api/backend-registry/active-store.d.ts +11 -5
- package/dist/api/backend-registry/active-store.js +36 -27
- package/dist/api/backend-registry/active-store.js.map +1 -1
- package/dist/api/backend-registry/auth.cjs +1 -1
- package/dist/api/backend-registry/auth.cjs.map +1 -1
- package/dist/api/backend-registry/auth.js +3 -9
- package/dist/api/backend-registry/auth.js.map +1 -1
- package/dist/api/backend-registry/default-backend.cjs +1 -1
- package/dist/api/backend-registry/default-backend.cjs.map +1 -1
- package/dist/api/backend-registry/default-backend.d.ts +9 -16
- package/dist/api/backend-registry/default-backend.js +5 -4
- package/dist/api/backend-registry/default-backend.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 +67 -34
- package/dist/api/backend-registry/storage.js.map +1 -1
- package/dist/api/cloud/conversation-service.api.cjs.map +1 -1
- package/dist/api/cloud/conversation-service.api.d.ts +8 -13
- package/dist/api/cloud/conversation-service.api.js.map +1 -1
- package/dist/api/cloud/organization-service.api.cjs.map +1 -1
- package/dist/api/cloud/organization-service.api.d.ts +1 -2
- package/dist/api/cloud/organization-service.api.js.map +1 -1
- package/dist/api/cloud/proxy.cjs +1 -1
- package/dist/api/cloud/proxy.cjs.map +1 -1
- package/dist/api/cloud/proxy.d.ts +6 -6
- package/dist/api/cloud/proxy.js +33 -24
- package/dist/api/cloud/proxy.js.map +1 -1
- package/dist/api/cloud/sandbox-service.api.cjs.map +1 -1
- package/dist/api/cloud/sandbox-service.api.d.ts +3 -3
- package/dist/api/cloud/sandbox-service.api.js.map +1 -1
- package/dist/api/cloud/secrets-service.api.cjs.map +1 -1
- package/dist/api/cloud/secrets-service.api.d.ts +3 -4
- package/dist/api/cloud/secrets-service.api.js.map +1 -1
- package/dist/api/cloud/settings-service.api.cjs +1 -1
- package/dist/api/cloud/settings-service.api.cjs.map +1 -1
- package/dist/api/cloud/settings-service.api.js +5 -1
- package/dist/api/cloud/settings-service.api.js.map +1 -1
- package/dist/api/cloud/skills-service.api.cjs.map +1 -1
- package/dist/api/cloud/skills-service.api.d.ts +5 -5
- package/dist/api/cloud/skills-service.api.js.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +115 -108
- package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
- package/dist/api/device-flow-client.cjs +1 -1
- package/dist/api/device-flow-client.cjs.map +1 -1
- package/dist/api/device-flow-client.d.ts +3 -5
- package/dist/api/device-flow-client.js +55 -66
- package/dist/api/device-flow-client.js.map +1 -1
- package/dist/api/event-service/event-service.api.cjs +1 -1
- package/dist/api/event-service/event-service.api.cjs.map +1 -1
- package/dist/api/event-service/event-service.api.d.ts +3 -3
- package/dist/api/event-service/event-service.api.js +17 -17
- package/dist/api/event-service/event-service.api.js.map +1 -1
- package/dist/api/git-service/agent-server-git-service.api.cjs +1 -1
- package/dist/api/git-service/agent-server-git-service.api.js +11 -11
- package/dist/api/runtime-service/agent-server-runtime-service.cjs +1 -1
- package/dist/api/runtime-service/agent-server-runtime-service.js +6 -6
- package/dist/components/conversation-events/chat/event-content-helpers/get-action-content.cjs +2 -2
- package/dist/components/conversation-events/chat/event-content-helpers/get-action-content.js +10 -10
- package/dist/components/conversation-events/chat/event-content-helpers/get-observation-result.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-observation-result.d.ts +5 -5
- package/dist/components/conversation-events/chat/event-content-helpers/get-observation-result.js.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.cjs +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.js +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.js.map +1 -1
- package/dist/components/features/automations/automation-action-button-classes.d.ts +2 -2
- 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.d.ts +1 -0
- package/dist/components/features/backends/backend-form-modal.js +203 -140
- package/dist/components/features/backends/backend-form-modal.js.map +1 -1
- package/dist/components/features/backends/backend-selector.cjs +1 -1
- package/dist/components/features/backends/backend-selector.cjs.map +1 -1
- package/dist/components/features/backends/backend-selector.js +117 -105
- package/dist/components/features/backends/backend-selector.js.map +1 -1
- package/dist/components/features/backends/backend-status-dot.cjs +1 -1
- package/dist/components/features/backends/backend-status-dot.cjs.map +1 -1
- package/dist/components/features/backends/backend-status-dot.d.ts +1 -1
- package/dist/components/features/backends/backend-status-dot.js +1 -1
- package/dist/components/features/backends/backend-status-dot.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 +81 -70
- package/dist/components/features/backends/manage-backends-modal.js.map +1 -1
- package/dist/components/features/chat/change-agent-button.cjs +1 -1
- package/dist/components/features/chat/change-agent-button.cjs.map +1 -1
- package/dist/components/features/chat/change-agent-button.js +59 -57
- package/dist/components/features/chat/change-agent-button.js.map +1 -1
- package/dist/components/features/chat/change-agent-context-menu.cjs +1 -1
- package/dist/components/features/chat/change-agent-context-menu.cjs.map +1 -1
- package/dist/components/features/chat/change-agent-context-menu.d.ts +3 -1
- package/dist/components/features/chat/change-agent-context-menu.js +30 -25
- package/dist/components/features/chat/change-agent-context-menu.js.map +1 -1
- package/dist/components/features/chat/chat-add-file-button.cjs +1 -1
- package/dist/components/features/chat/chat-add-file-button.cjs.map +1 -1
- package/dist/components/features/chat/chat-add-file-button.js +39 -38
- package/dist/components/features/chat/chat-add-file-button.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 +185 -57
- package/dist/components/features/chat/chat-message.js.map +1 -1
- package/dist/components/features/chat/components/chat-input-actions.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-actions.cjs.map +1 -1
- package/dist/components/features/chat/components/chat-input-actions.js +113 -113
- package/dist/components/features/chat/components/chat-input-actions.js.map +1 -1
- package/dist/components/features/chat/components/chat-input-model.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-model.cjs.map +1 -1
- package/dist/components/features/chat/components/chat-input-model.js +52 -51
- package/dist/components/features/chat/components/chat-input-model.js.map +1 -1
- package/dist/components/features/chat/components/slash-command-menu.cjs +2 -2
- package/dist/components/features/chat/components/slash-command-menu.cjs.map +1 -1
- package/dist/components/features/chat/components/slash-command-menu.js +38 -34
- package/dist/components/features/chat/components/slash-command-menu.js.map +1 -1
- package/dist/components/features/chat/git-control-bar-pr-button.cjs +1 -1
- package/dist/components/features/chat/git-control-bar-pr-button.cjs.map +1 -1
- package/dist/components/features/chat/git-control-bar-pr-button.js +16 -15
- package/dist/components/features/chat/git-control-bar-pr-button.js.map +1 -1
- package/dist/components/features/chat/git-control-bar-pull-button.cjs +1 -1
- package/dist/components/features/chat/git-control-bar-pull-button.cjs.map +1 -1
- package/dist/components/features/chat/git-control-bar-pull-button.js +16 -15
- package/dist/components/features/chat/git-control-bar-pull-button.js.map +1 -1
- package/dist/components/features/chat/git-control-bar-push-button.cjs +1 -1
- package/dist/components/features/chat/git-control-bar-push-button.cjs.map +1 -1
- package/dist/components/features/chat/git-control-bar-push-button.js +16 -15
- package/dist/components/features/chat/git-control-bar-push-button.js.map +1 -1
- package/dist/components/features/chat/git-control-bar.cjs +1 -1
- package/dist/components/features/chat/git-control-bar.cjs.map +1 -1
- package/dist/components/features/chat/git-control-bar.js +63 -62
- package/dist/components/features/chat/git-control-bar.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 +27 -23
- package/dist/components/features/chat/pending-user-messages.js.map +1 -1
- package/dist/components/features/chat/switch-profile-button.cjs +1 -1
- package/dist/components/features/chat/switch-profile-button.cjs.map +1 -1
- package/dist/components/features/chat/switch-profile-button.js +26 -25
- package/dist/components/features/chat/switch-profile-button.js.map +1 -1
- package/dist/components/features/chat/switch-profile-context-menu.cjs +1 -1
- package/dist/components/features/chat/switch-profile-context-menu.cjs.map +1 -1
- package/dist/components/features/chat/switch-profile-context-menu.js +77 -67
- package/dist/components/features/chat/switch-profile-context-menu.js.map +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.cjs +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.cjs.map +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.d.ts +2 -1
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.js +3 -2
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.js.map +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text.cjs +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text.cjs.map +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text.d.ts +2 -1
- package/dist/components/features/context-menu/context-menu-icon-text.js +20 -10
- package/dist/components/features/context-menu/context-menu-icon-text.js.map +1 -1
- package/dist/components/features/context-menu/context-menu-list-item.cjs +1 -1
- package/dist/components/features/context-menu/context-menu-list-item.cjs.map +1 -1
- package/dist/components/features/context-menu/context-menu-list-item.js +10 -9
- package/dist/components/features/context-menu/context-menu-list-item.js.map +1 -1
- package/dist/components/features/controls/agent-status.cjs +1 -1
- package/dist/components/features/controls/agent-status.js +12 -12
- package/dist/components/features/controls/git-tools-submenu.cjs +1 -1
- package/dist/components/features/controls/git-tools-submenu.cjs.map +1 -1
- package/dist/components/features/controls/git-tools-submenu.js +1 -1
- package/dist/components/features/controls/git-tools-submenu.js.map +1 -1
- package/dist/components/features/controls/macros-submenu.cjs +1 -1
- package/dist/components/features/controls/macros-submenu.cjs.map +1 -1
- package/dist/components/features/controls/macros-submenu.js +1 -1
- package/dist/components/features/controls/macros-submenu.js.map +1 -1
- package/dist/components/features/controls/server-status-context-menu-icon-text.cjs +1 -1
- package/dist/components/features/controls/server-status-context-menu-icon-text.cjs.map +1 -1
- package/dist/components/features/controls/server-status-context-menu-icon-text.js +14 -15
- package/dist/components/features/controls/server-status-context-menu-icon-text.js.map +1 -1
- package/dist/components/features/controls/server-status-context-menu.cjs +1 -1
- package/dist/components/features/controls/server-status-context-menu.js +4 -4
- package/dist/components/features/controls/server-status.cjs +1 -1
- package/dist/components/features/controls/server-status.js +7 -7
- package/dist/components/features/controls/tools-context-menu-icon-text.cjs +1 -1
- package/dist/components/features/controls/tools-context-menu-icon-text.cjs.map +1 -1
- package/dist/components/features/controls/tools-context-menu-icon-text.js +16 -16
- package/dist/components/features/controls/tools-context-menu-icon-text.js.map +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu-icon-text.cjs +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu-icon-text.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu-icon-text.js +11 -11
- package/dist/components/features/conversation/conversation-name-context-menu-icon-text.js.map +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.cjs +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.js +11 -11
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js +60 -47
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.js +86 -82
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js +4 -4
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.js +9 -9
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js +93 -93
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.js +177 -177
- package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
- package/dist/components/features/conversation-panel/ellipsis-button.cjs +1 -1
- package/dist/components/features/conversation-panel/ellipsis-button.cjs.map +1 -1
- package/dist/components/features/conversation-panel/ellipsis-button.js +13 -13
- package/dist/components/features/conversation-panel/ellipsis-button.js.map +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.js +57 -53
- package/dist/components/features/conversation-panel/local-new-conversation-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/new-conversation-dropdown-styles.cjs +1 -1
- package/dist/components/features/conversation-panel/new-conversation-dropdown-styles.cjs.map +1 -1
- package/dist/components/features/conversation-panel/new-conversation-dropdown-styles.js +3 -2
- package/dist/components/features/conversation-panel/new-conversation-dropdown-styles.js.map +1 -1
- package/dist/components/features/conversation-panel/start-task-card/start-task-status-badge.cjs +1 -1
- package/dist/components/features/conversation-panel/start-task-card/start-task-status-badge.cjs.map +1 -1
- package/dist/components/features/conversation-panel/start-task-card/start-task-status-badge.js +11 -8
- package/dist/components/features/conversation-panel/start-task-card/start-task-status-badge.js.map +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/tab-content.cjs.map +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/tab-content.d.ts +2 -5
- package/dist/components/features/conversation-panel/system-message-modal/tab-content.js.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.js +45 -42
- package/dist/components/features/files-tab/file-content-viewer.js.map +1 -1
- package/dist/components/features/home/llm-not-configured-banner.d.ts +11 -0
- package/dist/components/features/home/shared/dropdown-item.cjs +1 -1
- package/dist/components/features/home/shared/dropdown-item.cjs.map +1 -1
- package/dist/components/features/home/shared/dropdown-item.js +20 -16
- package/dist/components/features/home/shared/dropdown-item.js.map +1 -1
- package/dist/components/features/home/shared/generic-dropdown-menu.cjs +1 -1
- package/dist/components/features/home/shared/generic-dropdown-menu.cjs.map +1 -1
- package/dist/components/features/home/shared/generic-dropdown-menu.js +23 -22
- package/dist/components/features/home/shared/generic-dropdown-menu.js.map +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.cjs +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.cjs.map +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.js +103 -102
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.js.map +1 -1
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.cjs +1 -1
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.cjs.map +1 -1
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.js +68 -67
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.js.map +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.cjs +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.cjs.map +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.js +62 -60
- package/dist/components/features/mcp-page/custom-server-editor.js.map +1 -1
- package/dist/components/features/mcp-page/index.cjs +1 -1
- package/dist/components/features/mcp-page/index.d.ts +1 -0
- package/dist/components/features/mcp-page/index.js +1 -0
- package/dist/components/features/mcp-page/install-server-modal.cjs +1 -1
- package/dist/components/features/mcp-page/install-server-modal.cjs.map +1 -1
- package/dist/components/features/mcp-page/install-server-modal.js +141 -121
- package/dist/components/features/mcp-page/install-server-modal.js.map +1 -1
- package/dist/components/features/mcp-page/save-as-secret-toggle.cjs +2 -0
- package/dist/components/features/mcp-page/save-as-secret-toggle.cjs.map +1 -0
- package/dist/components/features/mcp-page/save-as-secret-toggle.d.ts +7 -0
- package/dist/components/features/mcp-page/save-as-secret-toggle.js +50 -0
- package/dist/components/features/mcp-page/save-as-secret-toggle.js.map +1 -0
- package/dist/components/features/onboarding/onboarding-modal.d.ts +2 -2
- package/dist/components/features/onboarding/steps/check-backend-step.d.ts +1 -1
- package/dist/components/features/onboarding/steps/choose-agent-step.d.ts +2 -1
- package/dist/components/features/onboarding/steps/setup-acp-secrets-step.d.ts +19 -10
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.d.ts +5 -0
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.js +2 -0
- package/dist/components/features/settings/llm-profiles/profile-actions-menu.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/profile-actions-menu.js +1 -0
- package/dist/components/features/skills/extensions-navigation.cjs +1 -1
- package/dist/components/features/skills/extensions-navigation.cjs.map +1 -1
- package/dist/components/features/skills/extensions-navigation.js +1 -1
- package/dist/components/features/skills/extensions-navigation.js.map +1 -1
- package/dist/components/shared/buttons/back-nav-button.cjs +2 -0
- package/dist/components/shared/buttons/back-nav-button.cjs.map +1 -0
- package/dist/components/shared/buttons/back-nav-button.d.ts +17 -0
- package/dist/components/shared/buttons/back-nav-button.js +33 -0
- package/dist/components/shared/buttons/back-nav-button.js.map +1 -0
- package/dist/components/shared/buttons/conversation-confirmation-buttons.cjs +1 -1
- package/dist/components/shared/buttons/conversation-confirmation-buttons.js +5 -5
- package/dist/components/shared/filters/enum-filter-dropdown.cjs +1 -1
- package/dist/components/shared/filters/enum-filter-dropdown.cjs.map +1 -1
- package/dist/components/shared/filters/enum-filter-dropdown.js +32 -31
- package/dist/components/shared/filters/enum-filter-dropdown.js.map +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.cjs +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.cjs.map +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.js +14 -13
- package/dist/components/shared/modals/confirmation-modals/base-modal.js.map +1 -1
- package/dist/components/shared/modals/settings/settings-modal.cjs +1 -1
- package/dist/components/shared/modals/settings/settings-modal.cjs.map +1 -1
- package/dist/components/shared/modals/settings/settings-modal.js +17 -16
- package/dist/components/shared/modals/settings/settings-modal.js.map +1 -1
- package/dist/components/shared/text-shimmer.cjs +2 -0
- package/dist/components/shared/text-shimmer.cjs.map +1 -0
- package/dist/components/shared/text-shimmer.d.ts +11 -0
- package/dist/components/shared/text-shimmer.js +43 -0
- package/dist/components/shared/text-shimmer.js.map +1 -0
- package/dist/constants/acp-providers.cjs +1 -1
- package/dist/constants/acp-providers.cjs.map +1 -1
- package/dist/constants/acp-providers.d.ts +16 -3
- package/dist/constants/acp-providers.js +0 -1
- package/dist/constants/acp-providers.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.js +32 -32
- package/dist/contexts/active-backend-context.js.map +1 -1
- package/dist/hooks/chat/use-chat-input-logic.cjs +1 -1
- package/dist/hooks/chat/use-chat-input-logic.cjs.map +1 -1
- package/dist/hooks/chat/use-chat-input-logic.js +13 -6
- package/dist/hooks/chat/use-chat-input-logic.js.map +1 -1
- package/dist/hooks/mutation/use-save-fields-as-secrets.cjs +2 -0
- package/dist/hooks/mutation/use-save-fields-as-secrets.cjs.map +1 -0
- package/dist/hooks/mutation/use-save-fields-as-secrets.d.ts +9 -0
- package/dist/hooks/mutation/use-save-fields-as-secrets.js +24 -0
- package/dist/hooks/mutation/use-save-fields-as-secrets.js.map +1 -0
- package/dist/hooks/mutation/use-unified-start-conversation.cjs +1 -1
- package/dist/hooks/mutation/use-unified-start-conversation.js +8 -8
- package/dist/hooks/mutation/use-unified-stop-conversation.cjs +1 -1
- package/dist/hooks/mutation/use-unified-stop-conversation.js +15 -15
- package/dist/hooks/query/use-acp-auth-status.d.ts +36 -0
- package/dist/hooks/query/use-agent-settings-schema.cjs +1 -1
- package/dist/hooks/query/use-agent-settings-schema.cjs.map +1 -1
- package/dist/hooks/query/use-agent-settings-schema.js +26 -16
- package/dist/hooks/query/use-agent-settings-schema.js.map +1 -1
- package/dist/hooks/query/use-backends-health.cjs +1 -1
- package/dist/hooks/query/use-backends-health.cjs.map +1 -1
- package/dist/hooks/query/use-backends-health.d.ts +2 -0
- package/dist/hooks/query/use-backends-health.js +31 -21
- package/dist/hooks/query/use-backends-health.js.map +1 -1
- package/dist/hooks/query/use-paginated-conversations.cjs +1 -1
- package/dist/hooks/query/use-paginated-conversations.cjs.map +1 -1
- package/dist/hooks/query/use-paginated-conversations.js +15 -14
- package/dist/hooks/query/use-paginated-conversations.js.map +1 -1
- package/dist/hooks/query/use-settings.cjs +1 -1
- package/dist/hooks/query/use-settings.cjs.map +1 -1
- package/dist/hooks/query/use-settings.js +65 -52
- package/dist/hooks/query/use-settings.js.map +1 -1
- package/dist/hooks/query/use-user-conversation.cjs +1 -1
- package/dist/hooks/query/use-user-conversation.cjs.map +1 -1
- package/dist/hooks/query/use-user-conversation.js +20 -11
- package/dist/hooks/query/use-user-conversation.js.map +1 -1
- package/dist/hooks/use-agent-state.cjs +1 -1
- package/dist/hooks/use-agent-state.js +13 -13
- package/dist/hooks/use-conversation-name-context-menu.cjs +1 -1
- package/dist/hooks/use-conversation-name-context-menu.js +10 -10
- package/dist/hooks/use-conversation-name-context-menu.js.map +1 -1
- package/dist/hooks/use-llm-configured.d.ts +25 -0
- package/dist/hooks/use-runtime-is-ready.cjs +1 -1
- package/dist/hooks/use-runtime-is-ready.js +5 -5
- package/dist/i18n/declaration.cjs +1 -1
- package/dist/i18n/declaration.cjs.map +1 -1
- package/dist/i18n/declaration.d.ts +19 -1
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +3 -3
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +321 -15
- package/dist/i18n/translation.js.map +1 -1
- package/dist/icons/stop-circle.cjs +1 -1
- package/dist/icons/stop-circle.cjs.map +1 -1
- package/dist/icons/stop-circle.js +7 -10
- package/dist/icons/stop-circle.js.map +1 -1
- package/dist/locales/ar/openhands.json +20 -2
- package/dist/locales/ca/openhands.json +20 -2
- package/dist/locales/de/openhands.json +20 -2
- package/dist/locales/en/openhands.json +20 -2
- package/dist/locales/es/openhands.json +20 -2
- package/dist/locales/fr/openhands.json +20 -2
- package/dist/locales/it/openhands.json +20 -2
- package/dist/locales/ja/openhands.json +20 -2
- package/dist/locales/ko-KR/openhands.json +20 -2
- package/dist/locales/no/openhands.json +20 -2
- package/dist/locales/pt/openhands.json +20 -2
- package/dist/locales/tr/openhands.json +20 -2
- package/dist/locales/uk/openhands.json +20 -2
- package/dist/locales/zh-CN/openhands.json +20 -2
- package/dist/locales/zh-TW/openhands.json +20 -2
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.cjs +2 -0
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.cjs.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js +15 -0
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js.map +1 -0
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +1 -1
- package/dist/package.js.map +1 -1
- package/dist/routes/conversation.cjs +1 -1
- package/dist/routes/conversation.cjs.map +1 -1
- package/dist/routes/conversation.js +1 -1
- package/dist/routes/conversation.js.map +1 -1
- package/dist/routes/llm-settings.cjs +1 -1
- package/dist/routes/llm-settings.cjs.map +1 -1
- package/dist/routes/llm-settings.js +55 -54
- package/dist/routes/llm-settings.js.map +1 -1
- package/dist/routes/secrets-settings.cjs +1 -1
- package/dist/routes/secrets-settings.cjs.map +1 -1
- package/dist/routes/secrets-settings.js +19 -27
- package/dist/routes/secrets-settings.js.map +1 -1
- package/dist/stores/conversation-store.cjs +1 -1
- package/dist/stores/conversation-store.cjs.map +1 -1
- package/dist/stores/conversation-store.d.ts +4 -0
- package/dist/stores/conversation-store.js +6 -0
- package/dist/stores/conversation-store.js.map +1 -1
- package/dist/types/agent-server/core/events/acp-tool-call-event.d.ts +6 -4
- package/dist/types/agent-server/core/events/system-event.d.ts +5 -0
- package/dist/types/automation.d.ts +15 -0
- package/dist/types/settings.d.ts +3 -1
- package/dist/ui/combobox-caret.cjs +1 -1
- package/dist/ui/combobox-caret.cjs.map +1 -1
- package/dist/ui/combobox-caret.d.ts +1 -1
- package/dist/ui/combobox-caret.js +9 -8
- package/dist/ui/combobox-caret.js.map +1 -1
- package/dist/ui/context-menu.cjs +1 -1
- package/dist/ui/context-menu.cjs.map +1 -1
- package/dist/ui/context-menu.js +9 -8
- package/dist/ui/context-menu.js.map +1 -1
- package/dist/ui/dropdown/dropdown-menu.cjs +1 -1
- package/dist/ui/dropdown/dropdown-menu.cjs.map +1 -1
- package/dist/ui/dropdown/dropdown-menu.js +21 -17
- package/dist/ui/dropdown/dropdown-menu.js.map +1 -1
- package/dist/ui/dropdown/dropdown.cjs +1 -1
- package/dist/ui/dropdown/dropdown.cjs.map +1 -1
- package/dist/ui/dropdown/dropdown.js +2 -2
- package/dist/ui/dropdown/dropdown.js.map +1 -1
- package/dist/utils/automation-schedule.d.ts +1 -0
- package/dist/utils/dropdown-classes.cjs +2 -0
- package/dist/utils/dropdown-classes.cjs.map +1 -0
- package/dist/utils/dropdown-classes.d.ts +32 -0
- package/dist/utils/dropdown-classes.js +8 -0
- package/dist/utils/dropdown-classes.js.map +1 -0
- package/dist/utils/form-control-classes.cjs +1 -1
- package/dist/utils/form-control-classes.cjs.map +1 -1
- package/dist/utils/form-control-classes.d.ts +18 -2
- package/dist/utils/form-control-classes.js +4 -3
- package/dist/utils/form-control-classes.js.map +1 -1
- package/dist/utils/git-control-bar-classes.cjs +2 -0
- package/dist/utils/git-control-bar-classes.cjs.map +1 -0
- package/dist/utils/git-control-bar-classes.d.ts +4 -0
- package/dist/utils/git-control-bar-classes.js +14 -0
- package/dist/utils/git-control-bar-classes.js.map +1 -0
- package/dist/utils/handle-event-for-ui.cjs.map +1 -1
- package/dist/utils/handle-event-for-ui.d.ts +6 -3
- package/dist/utils/handle-event-for-ui.js.map +1 -1
- package/dist/utils/mobile-top-bar-icon-button-classes.cjs +1 -1
- package/dist/utils/mobile-top-bar-icon-button-classes.cjs.map +1 -1
- package/dist/utils/mobile-top-bar-icon-button-classes.js +3 -3
- package/dist/utils/mobile-top-bar-icon-button-classes.js.map +1 -1
- package/dist/utils/modal-classes.cjs +2 -0
- package/dist/utils/modal-classes.cjs.map +1 -0
- package/dist/utils/modal-classes.d.ts +8 -0
- package/dist/utils/modal-classes.js +7 -0
- package/dist/utils/modal-classes.js.map +1 -0
- package/dist/utils/openhands-llm.cjs +2 -0
- package/dist/utils/openhands-llm.cjs.map +1 -0
- package/dist/utils/openhands-llm.d.ts +2 -0
- package/dist/utils/openhands-llm.js +9 -0
- package/dist/utils/openhands-llm.js.map +1 -0
- package/dist/utils/redact-custom-secrets.cjs +2 -0
- package/dist/utils/redact-custom-secrets.cjs.map +1 -0
- package/dist/utils/redact-custom-secrets.d.ts +6 -0
- package/dist/utils/redact-custom-secrets.js +10 -0
- package/dist/utils/redact-custom-secrets.js.map +1 -0
- package/dist/utils/status.cjs +1 -1
- package/dist/utils/status.cjs.map +1 -1
- package/dist/utils/status.d.ts +2 -1
- package/dist/utils/status.js +9 -8
- package/dist/utils/status.js.map +1 -1
- package/dist/utils/system-message-adapter.cjs +1 -1
- package/dist/utils/system-message-adapter.cjs.map +1 -1
- package/dist/utils/system-message-adapter.js +10 -7
- package/dist/utils/system-message-adapter.js.map +1 -1
- package/dist/utils/utils.cjs +1 -1
- package/dist/utils/utils.cjs.map +1 -1
- package/dist/utils/utils.d.ts +2 -1
- package/dist/utils/utils.js +21 -20
- package/dist/utils/utils.js.map +1 -1
- package/package.json +1 -1
- package/scripts/dev-safe.mjs +3 -1
- package/scripts/dev-static.mjs +2 -2
- package/scripts/dev-with-automation.mjs +283 -108
- package/scripts/static-build.mjs +20 -19
- package/scripts/static-server.mjs +65 -6
- package/build/assets/acp-providers-CbiRekh9.js +0 -1
- package/build/assets/active-backend-context-cCM1vYYZ.js +0 -1
- package/build/assets/add-backend-modal-DIUQzMPa.js +0 -1
- package/build/assets/agent-server-client-options-Bc5ZorQZ.js +0 -1
- package/build/assets/agent-server-compatibility-BlkUsrX2.js +0 -1
- package/build/assets/agent-server-conversation-service.api-C2V5SlHu.js +0 -5
- package/build/assets/api-key-entry-screen-B2gynaCp.js +0 -1
- package/build/assets/automation-detail-DJvbVSYK.js +0 -1
- package/build/assets/automations-list-6FDbI5dc.js +0 -1
- package/build/assets/backend-form-modal-Dnk33xA_.js +0 -1
- package/build/assets/base-modal-_dYTw1ri.js +0 -1
- package/build/assets/brand-button-Br7f0kZJ.js +0 -1
- package/build/assets/browser-store-Couc4S5D.js +0 -1
- package/build/assets/clock-BRjCgHTc.js +0 -1
- package/build/assets/combobox-caret-to1O8irE.js +0 -1
- package/build/assets/context-menu-list-item-CWNFpuiC.js +0 -1
- package/build/assets/conversation-DVrKU0oz.js +0 -19
- package/build/assets/conversation-Dlys-D5A.js +0 -1
- package/build/assets/conversation-panel-iF09WjZ4.js +0 -1
- package/build/assets/conversation-service.api-CCfztilW.js +0 -1
- package/build/assets/conversation-state-store-u5jepov0.js +0 -1
- package/build/assets/conversation-store-Z5iMCRpc.js +0 -1
- package/build/assets/conversation-websocket-context-DhJhqUna.js +0 -3
- package/build/assets/declaration-BNMqORFE.js +0 -1
- package/build/assets/dist-BxBP7tFD.js +0 -1
- package/build/assets/edit-automation-modal-BGzR3nfZ.js +0 -1
- package/build/assets/ellipsis-button-ZyLMPURn.js +0 -1
- package/build/assets/entry.client-1VMHpktY.js +0 -2
- package/build/assets/enum-filter-dropdown-CEgCdu4A.js +0 -1
- package/build/assets/extensions-hub-C651jsVh.js +0 -1
- package/build/assets/files-tab-R5z0lLdY.js +0 -1
- package/build/assets/files-tab-store-CDyVTXNT.js +0 -1
- package/build/assets/git-control-bar-branch-button-COdRAYHb.js +0 -27
- package/build/assets/git-provider-icon-BzLbc0yC.js +0 -1
- package/build/assets/home-e-egNUXZ.js +0 -1
- package/build/assets/install-server-modal-DHlbgqVH.js +0 -1
- package/build/assets/launch-CshDse3e.js +0 -1
- package/build/assets/link-external-D2POYx4c.js +0 -1
- package/build/assets/llm-settings-Bql-vydt.js +0 -1
- package/build/assets/llm-settings-C_tal6Ds.js +0 -1
- package/build/assets/manage-backends-modal-l7RkKfwX.js +0 -1
- package/build/assets/manage-workspaces-modal-DhKF_8z3.js +0 -1
- package/build/assets/manifest-3bf30d69.js +0 -1
- package/build/assets/mcp-ByeBfdfU.js +0 -9
- package/build/assets/messages-D0rWot7s.js +0 -36
- package/build/assets/proxy-CxydCnis.js +0 -1
- package/build/assets/root-DHeCXo9N.css +0 -1
- package/build/assets/root-layout-Czo9Ma6Q.js +0 -2
- package/build/assets/secrets-service-BsnKFc2x.js +0 -1
- package/build/assets/secrets-settings-Bz_UohPJ.js +0 -1
- package/build/assets/settings-client-C73C7IgV.js +0 -1
- package/build/assets/settings-index-Dz0BmdJD.js +0 -1
- package/build/assets/settings-list-classes-Bf80tWtc.js +0 -1
- package/build/assets/settings-modal-Brzgh5Yw.js +0 -1
- package/build/assets/settings-service.api-CZ3uWx4v.js +0 -1
- package/build/assets/sidebar-mobile-menu-toggle-Do_aA9Zm.js +0 -1
- package/build/assets/skills-settings-DlA5hlXw.js +0 -2
- package/build/assets/status-hp6M6E7E.js +0 -1
- package/build/assets/use-agent-settings-schema-33Un7UF2.js +0 -1
- package/build/assets/use-is-authed-BggE5wPj.js +0 -1
- package/build/assets/use-llm-profiles-DDOol3gK.js +0 -1
- package/build/assets/use-runtime-is-ready-B7EF4BKU.js +0 -1
- package/build/assets/use-settings-DQIZmIov.js +0 -1
- package/build/assets/use-user-conversation-C6hrMMtn.js +0 -1
- package/build/assets/utils-i18rdUj2.js +0 -1
- package/build/assets/vendor~conversation-panel~conversation-a9SyrrhV.js +0 -1
- package/build/assets/vendor~conversation-panel~conversation~index-C23ZXO4R.js +0 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~i4kjfqhl-BebWhFNT.js +0 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-DzIXV3Ui.js +0 -9
- /package/build/assets/{automation-IdgZq6ZK.js → automation-XDPAjiZi.js} +0 -0
- /package/build/assets/{color-themes-DSaoIL6A.js → color-themes-B9pm9c-R.js} +0 -0
- /package/build/assets/{common-DR1t-EeP.js → common-DqjLSBOt.js} +0 -0
- /package/build/assets/{conversation-local-storage-UYl-SX-r.js → conversation-local-storage-YmOVXxxW.js} +0 -0
- /package/build/assets/{dist-C6t0EXL7.js → dist-C3NfioQC.js} +0 -0
- /package/build/assets/{environment-switch-store-C4ulFJKp.js → environment-switch-store-CiurvTtK.js} +0 -0
- /package/build/assets/{health-store-BDC2rM-X.js → health-store-B5f0S2FY.js} +0 -0
- /package/build/assets/{map-provider-COBVzZYo.js → map-provider-BJ_8KZKU.js} +0 -0
- /package/build/assets/{middleware-BC9EwbB9.js → middleware-CfatjPYZ.js} +0 -0
- /package/build/assets/{objectWithoutPropertiesLoose-Du6eBn-V.js → objectWithoutPropertiesLoose-DSQKyRhw.js} +0 -0
- /package/build/assets/{react-Do0CT17Y.js → react-Dy05vyj5.js} +0 -0
- /package/build/assets/{sdk-settings-field-metadata-CBPmeqYa.js → sdk-settings-field-metadata-DQiaIBie.js} +0 -0
- /package/build/assets/{settings-D_H-qsRm.js → settings-DGY6n4J2.js} +0 -0
- /package/build/assets/{settings-like-page-layout-classes-I0BDBEoq.js → settings-like-page-layout-classes-D7YjdTd0.js} +0 -0
- /package/build/assets/{use-breakpoint-DbJ6FkQ-.js → use-breakpoint-DF_RiQ6s.js} +0 -0
- /package/build/assets/{use-click-outside-element-DffgWWoZ.js → use-click-outside-element-DhxCUyWl.js} +0 -0
- /package/build/assets/{v4-CNn21NXa.js → v4-khGvL7i2.js} +0 -0
- /package/build/assets/{vendor~browser-DDiZgqD3.js → vendor~browser-DisFGEp9.js} +0 -0
- /package/build/assets/{vendor~browser-tab-BgwV1mxF.js → vendor~browser-tab-BxhTtM9_.js} +0 -0
- /package/build/assets/{vendor~conversation-panel~conversation~alert-banner-DbvX3OcM.js → vendor~conversation-panel~conversation~alert-banner-w-I2sY6c.js} +0 -0
- /package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~zm51vy4j-iOsylxCS.js → vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~zm51vy4j-BClAMeFe.js} +0 -0
- /package/build/assets/{vendor~files-tab-BGKayPiK.js → vendor~files-tab-BtkpAiMX.js} +0 -0
- /package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BW6261Sb.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CyZ-3lDQ.js} +0 -0
- /package/build/assets/{vendor~home~mcp~automations-list-DoPfwaXj.js → vendor~home~mcp~automations-list-BgV86Sti.js} +0 -0
- /package/build/assets/{vendor~launch-vdeRTWFu.js → vendor~launch-BXgl67Re.js} +0 -0
- /package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~ninslayh-D9P8e98a.js → vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~ninslayh-CLlsvdNP.js} +0 -0
- /package/build/assets/{vendor~terminal-DUrOWGFE.js → vendor~terminal-DZaJIY8A.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-as-secret-toggle.js","names":[],"sources":["../../../../src/components/features/mcp-page/save-as-secret-toggle.tsx"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\nimport { cn } from \"#/utils/utils\";\nimport { StyledTooltip } from \"#/components/shared/buttons/styled-tooltip\";\nimport { I18nKey } from \"#/i18n/declaration\";\n\ninterface SaveAsSecretToggleProps {\n fieldKey: string;\n checked: boolean;\n onToggle: (value: boolean) => void;\n}\n\nexport function SaveAsSecretToggle({\n fieldKey,\n checked,\n onToggle,\n}: SaveAsSecretToggleProps) {\n const { t } = useTranslation(\"openhands\");\n\n return (\n <label\n data-testid={`mcp-install-save-secret-${fieldKey}`}\n className={cn(\n \"flex items-center gap-2 px-3 py-2 mt-0.5 rounded-lg border cursor-pointer transition-colors\",\n checked\n ? \"border-green-500/35 bg-green-500/10\"\n : \"border-[var(--oh-border)] bg-transparent hover:bg-white/[0.03]\",\n )}\n >\n {/* sr-only keeps the real checkbox in the accessibility tree so AT\n users can toggle it without seeing the custom visual track. */}\n <input\n className=\"sr-only\"\n id={`mcp-save-secret-checkbox-${fieldKey}`}\n type=\"checkbox\"\n checked={checked}\n onChange={(e) => onToggle(e.target.checked)}\n />\n {/* aria-hidden: purely decorative — the checkbox above is the semantic control. */}\n <span\n aria-hidden=\"true\"\n className={cn(\n \"relative inline-flex h-[22px] w-[40px] shrink-0 items-center rounded-full border transition-colors duration-200\",\n checked\n ? \"border-green-500 bg-green-500\"\n : \"border-[var(--oh-border)] bg-surface-raised\",\n )}\n >\n <span\n className={cn(\n \"inline-block size-4 rounded-full transition-transform duration-200\",\n checked\n ? \"translate-x-[21px] bg-white\"\n : \"translate-x-[2px] bg-[var(--oh-muted)]\",\n )}\n />\n </span>\n <span className=\"text-sm\">{t(I18nKey.MCP$ALSO_SAVE_AS_SECRET)}</span>\n <code\n className={cn(\n \"ml-auto text-[11px] font-mono tracking-tight border rounded px-1.5 py-0.5\",\n checked\n ? \"text-green-500 border-green-500/35 bg-white/[0.04]\"\n : \"text-tertiary-alt border-[var(--oh-border)]\",\n )}\n >\n {fieldKey}\n </code>\n <StyledTooltip\n content={t(I18nKey.MCP$SAVE_AS_SECRET_TOOLTIP)}\n placement=\"top\"\n >\n {/* button so the tooltip is keyboard-reachable; type=button prevents\n accidental form submission when the user presses Enter. */}\n <button\n type=\"button\"\n aria-label={t(I18nKey.MCP$SAVE_AS_SECRET_TOOLTIP)}\n className=\"flex items-center justify-center size-[15px] shrink-0 rounded-full border border-[var(--oh-muted)] text-tertiary-alt text-[9px] font-bold cursor-help\"\n onClick={(e) => e.preventDefault()}\n >\n ?\n </button>\n </StyledTooltip>\n </label>\n );\n}\n"],"mappings":";;;;;;AAWA,SAAgB,EAAmB,EACjC,aACA,YACA,eAC0B;CAC1B,IAAM,EAAE,SAAM,EAAe,YAAY;AAEzC,QACE,kBAAC,SAAD;EACE,eAAa,2BAA2B;EACxC,WAAW,EACT,+FACA,IACI,wCACA,iEACL;YAPH;GAWE,kBAAC,SAAD;IACE,WAAU;IACV,IAAI,4BAA4B;IAChC,MAAK;IACI;IACT,WAAW,MAAM,EAAS,EAAE,OAAO,QAAQ;IAC3C,CAAA;GAEF,kBAAC,QAAD;IACE,eAAY;IACZ,WAAW,EACT,mHACA,IACI,kCACA,8CACL;cAED,kBAAC,QAAD,EACE,WAAW,EACT,sEACA,IACI,gCACA,yCACL,EACD,CAAA;IACG,CAAA;GACP,kBAAC,QAAD;IAAM,WAAU;cAAW,EAAE,EAAQ,wBAAwB;IAAQ,CAAA;GACrE,kBAAC,QAAD;IACE,WAAW,EACT,6EACA,IACI,uDACA,8CACL;cAEA;IACI,CAAA;GACP,kBAAC,GAAD;IACE,SAAS,EAAE,EAAQ,2BAA2B;IAC9C,WAAU;cAIV,kBAAC,UAAD;KACE,MAAK;KACL,cAAY,EAAE,EAAQ,2BAA2B;KACjD,WAAU;KACV,UAAU,MAAM,EAAE,gBAAgB;eACnC;KAEQ,CAAA;IACK,CAAA;GACV"}
|
|
@@ -6,8 +6,8 @@ interface OnboardingModalProps {
|
|
|
6
6
|
* Top-level onboarding modal for first-time users.
|
|
7
7
|
*
|
|
8
8
|
* The flow is a fixed sequence of four steps:
|
|
9
|
-
* 0.
|
|
10
|
-
* 1.
|
|
9
|
+
* 0. Check backend
|
|
10
|
+
* 1. Choose agent
|
|
11
11
|
* 2. Set up LLM
|
|
12
12
|
* 3. Say hello (creates a fresh conversation, then closes)
|
|
13
13
|
*
|
|
@@ -6,7 +6,8 @@ export declare function AgentOptionIcon({ id, muted }: {
|
|
|
6
6
|
interface ChooseAgentStepProps {
|
|
7
7
|
selectedAgentId: OnboardingAgentId;
|
|
8
8
|
onSelect: (agentId: OnboardingAgentId) => void;
|
|
9
|
+
onBack?: () => void;
|
|
9
10
|
onNext: () => void;
|
|
10
11
|
}
|
|
11
|
-
export declare function ChooseAgentStep({ selectedAgentId, onSelect, onNext, }: ChooseAgentStepProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function ChooseAgentStep({ selectedAgentId, onSelect, onBack, onNext, }: ChooseAgentStepProps): import("react/jsx-runtime").JSX.Element;
|
|
12
13
|
export {};
|
|
@@ -3,25 +3,34 @@ interface SetupAcpSecretsStepProps {
|
|
|
3
3
|
/** ACP provider whose credentials we're collecting (e.g. ``"claude-code"``).
|
|
4
4
|
* Typed as {@link OnboardingAgentId} — the same type the onboarding modal
|
|
5
5
|
* tracks — so a mistyped key is a compile error rather than a silently empty
|
|
6
|
-
* form. Providers without a credentials entry (``"openhands"
|
|
7
|
-
*
|
|
6
|
+
* form. Providers without a credentials entry (``"openhands"``) simply yield
|
|
7
|
+
* no fields. */
|
|
8
8
|
providerKey: OnboardingAgentId;
|
|
9
|
+
/**
|
|
10
|
+
* Whether this is the currently visible onboarding slide. The modal mounts
|
|
11
|
+
* every slide at once, so we only run the (subprocess-spinning) login probe
|
|
12
|
+
* once the user has actually reached this step — by which point the backend
|
|
13
|
+
* is confirmed connected.
|
|
14
|
+
*/
|
|
15
|
+
isActive: boolean;
|
|
9
16
|
onBack: () => void;
|
|
10
17
|
onNext: () => void;
|
|
11
18
|
}
|
|
12
19
|
/**
|
|
13
|
-
* Onboarding credentials step for ACP providers that
|
|
14
|
-
*
|
|
20
|
+
* Onboarding credentials step for ACP providers that expose an env-var API key
|
|
21
|
+
* (Claude Code, Codex, Gemini CLI). The fields are derived from
|
|
15
22
|
* {@link getAcpProviderSecrets}; each one maps 1:1 to a **global secret**
|
|
16
23
|
* whose name equals the env var the agent-server exports into the provider
|
|
17
24
|
* subprocess. Saving here is therefore the same as adding the secret under
|
|
18
25
|
* Settings → Secrets — it shows up there afterwards.
|
|
19
26
|
*
|
|
20
|
-
* The step is intentionally skippable: a user may authenticate
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
27
|
+
* The step is intentionally skippable: a user may authenticate via a
|
|
28
|
+
* subscription / OAuth login (a Claude login, or Gemini's Google login), or
|
|
29
|
+
* already have the env var set on the backend, so we never block "Next" on a
|
|
30
|
+
* value — and the login probe shows a "you're already signed in" banner when it
|
|
31
|
+
* detects one. Empty fields are simply not written; a field whose secret
|
|
32
|
+
* already exists shows an "already saved" placeholder and is left untouched
|
|
33
|
+
* unless the user types a replacement.
|
|
25
34
|
*/
|
|
26
|
-
export declare function SetupAcpSecretsStep({ providerKey, onBack, onNext, }: SetupAcpSecretsStepProps): import("react/jsx-runtime").JSX.Element;
|
|
35
|
+
export declare function SetupAcpSecretsStep({ providerKey, isActive, onBack, onNext, }: SetupAcpSecretsStepProps): import("react/jsx-runtime").JSX.Element;
|
|
27
36
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../../../_virtual/_rolldown/runtime.cjs`);require(`../../../../utils/custom-toast-handlers.cjs`),require(`../../../../api/profiles-service/profiles-service.api.cjs`),require(`../../../../hooks/query/use-llm-profiles.cjs`),require(`../../../../hooks/query/use-settings.cjs`),require(`../../../../ui/typography.cjs`),require(`../brand-button.cjs`),require(`../../../../hooks/query/use-agent-settings-schema.cjs`),require(`./profile-name-input.cjs`),require(`./llm-profiles-manager.cjs`),require(`../../../../hooks/mutation/use-save-llm-profile.cjs`),require(`../../../../contexts/settings-section-header-context.cjs`),require(`../../../../routes/llm-settings.cjs`);let t=require(`react`);t=e.__toESM(t,1),require(`react/jsx-runtime`);
|
|
1
|
+
const e=require(`../../../../_virtual/_rolldown/runtime.cjs`);require(`../../../../utils/custom-toast-handlers.cjs`),require(`../../../../api/profiles-service/profiles-service.api.cjs`),require(`../../../../hooks/query/use-llm-profiles.cjs`),require(`../../../../hooks/query/use-settings.cjs`),require(`../../../../ui/typography.cjs`),require(`../brand-button.cjs`),require(`../../../../hooks/query/use-agent-settings-schema.cjs`),require(`./profile-name-input.cjs`),require(`../../../../hooks/mutation/use-activate-llm-profile.cjs`),require(`./llm-profiles-manager.cjs`),require(`../../../../hooks/mutation/use-save-llm-profile.cjs`),require(`../../../shared/buttons/back-nav-button.cjs`),require(`../../../../contexts/settings-section-header-context.cjs`),require(`../../../../routes/llm-settings.cjs`);let t=require(`react`);t=e.__toESM(t,1),require(`react/jsx-runtime`);
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
export declare function shouldReapplyProfileAfterSave({ activeProfileName, originalName, savedName, }: {
|
|
2
|
+
activeProfileName: string | null | undefined;
|
|
3
|
+
originalName: string | null | undefined;
|
|
4
|
+
savedName: string;
|
|
5
|
+
}): boolean;
|
|
1
6
|
/**
|
|
2
7
|
* LlmSettingsLocalView provides an integrated view for managing LLM profiles
|
|
3
8
|
* in local agent-server mode. It supports listing, creating, and editing profiles.
|
|
@@ -6,8 +6,10 @@ import "../../../../ui/typography.js";
|
|
|
6
6
|
import "../brand-button.js";
|
|
7
7
|
import "../../../../hooks/query/use-agent-settings-schema.js";
|
|
8
8
|
import "./profile-name-input.js";
|
|
9
|
+
import "../../../../hooks/mutation/use-activate-llm-profile.js";
|
|
9
10
|
import "./llm-profiles-manager.js";
|
|
10
11
|
import "../../../../hooks/mutation/use-save-llm-profile.js";
|
|
12
|
+
import "../../../shared/buttons/back-nav-button.js";
|
|
11
13
|
import "../../../../contexts/settings-section-header-context.js";
|
|
12
14
|
import "../../../../routes/llm-settings.js";
|
|
13
15
|
import "react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../../../_virtual/_rolldown/runtime.cjs`);require(`../../../../utils/utils.cjs`),require(`../../../../icons/u-check-circle.cjs`),require(`../../../../icons/u-edit.cjs`),require(`../../../../icons/u-delete.cjs`),require(`../../conversation/conversation-name-context-menu-icon-text.cjs`),require(`react`),require(`react/jsx-runtime`);let t=require(`react-dom`);t=e.__toESM(t,1);
|
|
1
|
+
const e=require(`../../../../_virtual/_rolldown/runtime.cjs`);require(`../../../../utils/utils.cjs`),require(`../../../../utils/dropdown-classes.cjs`),require(`../../../../icons/u-check-circle.cjs`),require(`../../../../icons/u-edit.cjs`),require(`../../../../icons/u-delete.cjs`),require(`../../conversation/conversation-name-context-menu-icon-text.cjs`),require(`react`),require(`react/jsx-runtime`);let t=require(`react-dom`);t=e.__toESM(t,1);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../node_modules/react-i18next/dist/es/useTranslation.cjs`),t=require(`../../../i18n/declaration.cjs`),n=require(`../../../utils/utils.cjs`),r=require(`../../../constants/acp-providers.cjs`),i=require(`../../shared/buttons/styled-tooltip.cjs`),a=require(`../../../hooks/query/use-settings.cjs`),o=require(`../../shared/navigation-link.cjs`),s=require(`../../../icons/skills.cjs`),c=require(`../../../hooks/use-breakpoint.cjs`),l=require(`../sidebar/sidebar-layout.cjs`),u=require(`../settings/backend-synced-settings-badge.cjs`),d=require(`../../../icons/server-process.cjs`),f=require(`../../../stores/sidebar-store.cjs`);let p=require(`react/jsx-runtime`);var m=[{to:`/skills`,label:`Skills`,icon:(0,p.jsx)(s.default,{width:16,height:16,"aria-hidden":`true`}),end:!0},{to:`/mcp`,label:`MCP Servers`,icon:(0,p.jsx)(d.default,{width:16,height:16}),end:!0,disabledByAcp:!0},{to:`/plugins`,label:`Plugins`,icon:(0,p.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,width:16,height:16,"aria-hidden":`true`,children:[(0,p.jsx)(`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`}),(0,p.jsx)(`path`,{d:`m3.3 7 8.7 5 8.7-5`}),(0,p.jsx)(`path`,{d:`M12 22V12`})]}),end:!0,comingSoon:!0}];function h(){let{t:s}=e.useTranslation(`openhands`),{data:d}=a.useSettings(),h=f.useSidebarStore(e=>e.collapsed),g=c.useBreakpoint(1023),_=c.useBreakpoint(767),v=!h&&g&&!_,y=d?.agent_settings?.agent_kind===`acp`,b=typeof d?.agent_settings?.acp_server==`string`?d.agent_settings.acp_server:void 0,x=y?r.ACP_PROVIDERS.find(({key:e})=>e===b)?.display_name??`ACP Agent`:void 0;return v?null:(0,p.jsxs)(`aside`,{"data-testid":`extensions-navbar-desktop`,className:`hidden md:flex md:w-[260px] md:shrink-0 md:flex-col md:gap-2 md:sticky md:top-8 md:self-start`,children:[(0,p.jsx)(`span`,{className:`px-2 text-sm font-normal text-white`,children:s(t.I18nKey.NAV$
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../node_modules/react-i18next/dist/es/useTranslation.cjs`),t=require(`../../../i18n/declaration.cjs`),n=require(`../../../utils/utils.cjs`),r=require(`../../../constants/acp-providers.cjs`),i=require(`../../shared/buttons/styled-tooltip.cjs`),a=require(`../../../hooks/query/use-settings.cjs`),o=require(`../../shared/navigation-link.cjs`),s=require(`../../../icons/skills.cjs`),c=require(`../../../hooks/use-breakpoint.cjs`),l=require(`../sidebar/sidebar-layout.cjs`),u=require(`../settings/backend-synced-settings-badge.cjs`),d=require(`../../../icons/server-process.cjs`),f=require(`../../../stores/sidebar-store.cjs`);let p=require(`react/jsx-runtime`);var m=[{to:`/skills`,label:`Skills`,icon:(0,p.jsx)(s.default,{width:16,height:16,"aria-hidden":`true`}),end:!0},{to:`/mcp`,label:`MCP Servers`,icon:(0,p.jsx)(d.default,{width:16,height:16}),end:!0,disabledByAcp:!0},{to:`/plugins`,label:`Plugins`,icon:(0,p.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,width:16,height:16,"aria-hidden":`true`,children:[(0,p.jsx)(`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`}),(0,p.jsx)(`path`,{d:`m3.3 7 8.7 5 8.7-5`}),(0,p.jsx)(`path`,{d:`M12 22V12`})]}),end:!0,comingSoon:!0}];function h(){let{t:s}=e.useTranslation(`openhands`),{data:d}=a.useSettings(),h=f.useSidebarStore(e=>e.collapsed),g=c.useBreakpoint(1023),_=c.useBreakpoint(767),v=!h&&g&&!_,y=d?.agent_settings?.agent_kind===`acp`,b=typeof d?.agent_settings?.acp_server==`string`?d.agent_settings.acp_server:void 0,x=y?r.ACP_PROVIDERS.find(({key:e})=>e===b)?.display_name??`ACP Agent`:void 0;return v?null:(0,p.jsxs)(`aside`,{"data-testid":`extensions-navbar-desktop`,className:`hidden md:flex md:w-[260px] md:shrink-0 md:flex-col md:gap-2 md:sticky md:top-8 md:self-start`,children:[(0,p.jsx)(`span`,{className:`px-2 text-sm font-normal text-white`,children:s(t.I18nKey.NAV$CUSTOMIZE)}),(0,p.jsx)(`div`,{className:`flex flex-col gap-0.5 pt-0.5`,children:m.map(e=>{let r=!!(y&&e.disabledByAcp),a=(0,p.jsx)(`span`,{className:`shrink-0 flex items-center justify-center`,children:e.icon}),c=(0,p.jsx)(`span`,{className:`truncate`,children:e.label}),u=e.comingSoon&&(0,p.jsx)(`span`,{className:`ml-auto shrink-0 rounded-full border border-white/20 bg-white/5 px-1.5 py-0.5 text-[10px] font-medium text-[var(--oh-text-dim)]`,children:s(t.I18nKey.NAV$COMING_SOON)});return r?(0,p.jsx)(i.StyledTooltip,{content:s(t.I18nKey.SETTINGS$AGENT_DISABLED_TOOLTIP,{agentName:x}),placement:`right`,children:(0,p.jsxs)(`span`,{"aria-disabled":`true`,"data-testid":`sidebar-extensions-${e.to}`,className:n.cn(l.sidebarNavRowClassName(),`truncate text-[var(--oh-muted)] opacity-50 cursor-not-allowed`),children:[a,c,u]})},e.to):(0,p.jsxs)(o.NavigationLink,{to:e.to,end:e.end,"data-testid":`sidebar-extensions-${e.to}`,className:({isActive:e})=>n.cn(l.sidebarNavRowClassName(),`truncate`,e?l.SIDEBAR_ROW_INTERACTIVE_CLASS.active:l.SIDEBAR_ROW_INTERACTIVE_CLASS.idle),children:[a,c,u]},e.to)})}),(0,p.jsx)(`div`,{className:`px-2 pt-3`,children:(0,p.jsx)(u.BackendSyncedSettingsBadge,{})})]})}exports.ExtensionsNavigation=h;
|
|
2
2
|
//# sourceMappingURL=extensions-navigation.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions-navigation.cjs","names":[],"sources":["../../../../src/components/features/skills/extensions-navigation.tsx"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\nimport { NavigationLink } from \"#/components/shared/navigation-link\";\nimport { StyledTooltip } from \"#/components/shared/buttons/styled-tooltip\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { ACP_PROVIDERS } from \"#/constants/acp-providers\";\nimport { cn } from \"#/utils/utils\";\nimport SkillsIcon from \"#/icons/skills.svg?react\";\nimport ServerProcessIcon from \"#/icons/server-process.svg?react\";\nimport { BackendSyncedSettingsBadge } from \"#/components/features/settings/backend-synced-settings-badge\";\nimport {\n SIDEBAR_ROW_INTERACTIVE_CLASS,\n sidebarNavRowClassName,\n} from \"#/components/features/sidebar/sidebar-layout\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { useSidebarStore } from \"#/stores/sidebar-store\";\nimport { useBreakpoint } from \"#/hooks/use-breakpoint\";\n\ninterface ExtensionNavItem {\n to: string;\n label: string;\n icon: React.ReactElement;\n end?: boolean;\n comingSoon?: boolean;\n /**\n * When true, this item greys out (and the /route's ``clientLoader``\n * bounces to ``/settings/agent``) while an ACP agent is active.\n * The ACP sub-agent manages its own MCP servers; the SDK rejects\n * ``mcp_config`` on ``ACPAgent`` init outright, so the OpenHands-\n * side editor would silently no-op against the running subprocess.\n */\n disabledByAcp?: boolean;\n}\n\nexport const EXTENSIONS_NAV_ITEMS: ExtensionNavItem[] = [\n {\n to: \"/skills\",\n label: \"Skills\",\n icon: <SkillsIcon width={16} height={16} aria-hidden=\"true\" />,\n end: true,\n },\n {\n to: \"/mcp\",\n label: \"MCP Servers\",\n icon: <ServerProcessIcon width={16} height={16} />,\n end: true,\n disabledByAcp: true,\n },\n {\n to: \"/plugins\",\n label: \"Plugins\",\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width={16}\n height={16}\n aria-hidden=\"true\"\n >\n <path d=\"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\" />\n <path d=\"m3.3 7 8.7 5 8.7-5\" />\n <path d=\"M12 22V12\" />\n </svg>\n ),\n end: true,\n comingSoon: true,\n },\n];\n\nexport function ExtensionsNavigation() {\n const { t } = useTranslation(\"openhands\");\n const { data: settings } = useSettings();\n const sidebarCollapsed = useSidebarStore((state) => state.collapsed);\n // At iPad portrait widths (md to <lg) an expanded primary Sidebar (300px)\n // plus this nav (260px) leaves the main content unreadable. Hide ourselves\n // until the user collapses the Sidebar or the viewport reaches `lg`.\n const belowLg = useBreakpoint(1023);\n const belowMd = useBreakpoint(767);\n const hideForExpandedSidebar = !sidebarCollapsed && belowLg && !belowMd;\n const isAcpAgent = settings?.agent_settings?.agent_kind === \"acp\";\n const acpServerKey =\n typeof settings?.agent_settings?.acp_server === \"string\"\n ? settings.agent_settings.acp_server\n : undefined;\n const acpServerName = isAcpAgent\n ? (ACP_PROVIDERS.find(({ key }) => key === acpServerKey)?.display_name ??\n \"ACP Agent\")\n : undefined;\n\n if (hideForExpandedSidebar) return null;\n\n return (\n <aside\n data-testid=\"extensions-navbar-desktop\"\n className=\"hidden md:flex md:w-[260px] md:shrink-0 md:flex-col md:gap-2 md:sticky md:top-8 md:self-start\"\n >\n <span className=\"px-2 text-sm font-normal text-white\">\n {t(I18nKey.NAV$
|
|
1
|
+
{"version":3,"file":"extensions-navigation.cjs","names":[],"sources":["../../../../src/components/features/skills/extensions-navigation.tsx"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\nimport { NavigationLink } from \"#/components/shared/navigation-link\";\nimport { StyledTooltip } from \"#/components/shared/buttons/styled-tooltip\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { ACP_PROVIDERS } from \"#/constants/acp-providers\";\nimport { cn } from \"#/utils/utils\";\nimport SkillsIcon from \"#/icons/skills.svg?react\";\nimport ServerProcessIcon from \"#/icons/server-process.svg?react\";\nimport { BackendSyncedSettingsBadge } from \"#/components/features/settings/backend-synced-settings-badge\";\nimport {\n SIDEBAR_ROW_INTERACTIVE_CLASS,\n sidebarNavRowClassName,\n} from \"#/components/features/sidebar/sidebar-layout\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { useSidebarStore } from \"#/stores/sidebar-store\";\nimport { useBreakpoint } from \"#/hooks/use-breakpoint\";\n\ninterface ExtensionNavItem {\n to: string;\n label: string;\n icon: React.ReactElement;\n end?: boolean;\n comingSoon?: boolean;\n /**\n * When true, this item greys out (and the /route's ``clientLoader``\n * bounces to ``/settings/agent``) while an ACP agent is active.\n * The ACP sub-agent manages its own MCP servers; the SDK rejects\n * ``mcp_config`` on ``ACPAgent`` init outright, so the OpenHands-\n * side editor would silently no-op against the running subprocess.\n */\n disabledByAcp?: boolean;\n}\n\nexport const EXTENSIONS_NAV_ITEMS: ExtensionNavItem[] = [\n {\n to: \"/skills\",\n label: \"Skills\",\n icon: <SkillsIcon width={16} height={16} aria-hidden=\"true\" />,\n end: true,\n },\n {\n to: \"/mcp\",\n label: \"MCP Servers\",\n icon: <ServerProcessIcon width={16} height={16} />,\n end: true,\n disabledByAcp: true,\n },\n {\n to: \"/plugins\",\n label: \"Plugins\",\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width={16}\n height={16}\n aria-hidden=\"true\"\n >\n <path d=\"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\" />\n <path d=\"m3.3 7 8.7 5 8.7-5\" />\n <path d=\"M12 22V12\" />\n </svg>\n ),\n end: true,\n comingSoon: true,\n },\n];\n\nexport function ExtensionsNavigation() {\n const { t } = useTranslation(\"openhands\");\n const { data: settings } = useSettings();\n const sidebarCollapsed = useSidebarStore((state) => state.collapsed);\n // At iPad portrait widths (md to <lg) an expanded primary Sidebar (300px)\n // plus this nav (260px) leaves the main content unreadable. Hide ourselves\n // until the user collapses the Sidebar or the viewport reaches `lg`.\n const belowLg = useBreakpoint(1023);\n const belowMd = useBreakpoint(767);\n const hideForExpandedSidebar = !sidebarCollapsed && belowLg && !belowMd;\n const isAcpAgent = settings?.agent_settings?.agent_kind === \"acp\";\n const acpServerKey =\n typeof settings?.agent_settings?.acp_server === \"string\"\n ? settings.agent_settings.acp_server\n : undefined;\n const acpServerName = isAcpAgent\n ? (ACP_PROVIDERS.find(({ key }) => key === acpServerKey)?.display_name ??\n \"ACP Agent\")\n : undefined;\n\n if (hideForExpandedSidebar) return null;\n\n return (\n <aside\n data-testid=\"extensions-navbar-desktop\"\n className=\"hidden md:flex md:w-[260px] md:shrink-0 md:flex-col md:gap-2 md:sticky md:top-8 md:self-start\"\n >\n <span className=\"px-2 text-sm font-normal text-white\">\n {t(I18nKey.NAV$CUSTOMIZE)}\n </span>\n <div className=\"flex flex-col gap-0.5 pt-0.5\">\n {EXTENSIONS_NAV_ITEMS.map((item) => {\n const disabled = !!(isAcpAgent && item.disabledByAcp);\n const baseRow = (\n <span className=\"shrink-0 flex items-center justify-center\">\n {item.icon}\n </span>\n );\n const label = <span className=\"truncate\">{item.label}</span>;\n const comingSoonBadge = item.comingSoon && (\n <span className=\"ml-auto shrink-0 rounded-full border border-white/20 bg-white/5 px-1.5 py-0.5 text-[10px] font-medium text-[var(--oh-text-dim)]\">\n {t(I18nKey.NAV$COMING_SOON)}\n </span>\n );\n\n if (disabled) {\n // Render a non-clickable surrogate so the URL and a11y tree\n // both communicate \"you can't go here right now,\" then wrap\n // in StyledTooltip for the why. Mirrors the SettingsNavLink\n // disabled rendering — same flag (``disabledByAcp``), same\n // explanatory tooltip (\"Disabled while {agentName} is the\n // active agent\"), same greyed styles.\n return (\n <StyledTooltip\n key={item.to}\n content={t(I18nKey.SETTINGS$AGENT_DISABLED_TOOLTIP, {\n agentName: acpServerName,\n })}\n placement=\"right\"\n >\n <span\n aria-disabled=\"true\"\n data-testid={`sidebar-extensions-${item.to}`}\n className={cn(\n sidebarNavRowClassName(),\n \"truncate text-[var(--oh-muted)] opacity-50 cursor-not-allowed\",\n )}\n >\n {baseRow}\n {label}\n {comingSoonBadge}\n </span>\n </StyledTooltip>\n );\n }\n\n return (\n <NavigationLink\n key={item.to}\n to={item.to}\n end={item.end}\n data-testid={`sidebar-extensions-${item.to}`}\n className={({ isActive }) =>\n cn(\n sidebarNavRowClassName(),\n \"truncate\",\n isActive\n ? SIDEBAR_ROW_INTERACTIVE_CLASS.active\n : SIDEBAR_ROW_INTERACTIVE_CLASS.idle,\n )\n }\n >\n {baseRow}\n {label}\n {comingSoonBadge}\n </NavigationLink>\n );\n })}\n </div>\n <div className=\"px-2 pt-3\">\n <BackendSyncedSettingsBadge />\n </div>\n </aside>\n );\n}\n"],"mappings":"2tBAiCA,IAAa,EAA2C,CACtD,CACE,GAAI,UACJ,MAAO,SACP,MAAM,EAAA,EAAA,KAAC,EAAA,QAAD,CAAY,MAAO,GAAI,OAAQ,GAAI,cAAY,OAAS,CAAA,CAC9D,IAAK,GACN,CACD,CACE,GAAI,OACJ,MAAO,cACP,MAAM,EAAA,EAAA,KAAC,EAAA,QAAD,CAAmB,MAAO,GAAI,OAAQ,GAAM,CAAA,CAClD,IAAK,GACL,cAAe,GAChB,CACD,CACE,GAAI,WACJ,MAAO,UACP,MACE,EAAA,EAAA,MAAC,MAAD,CACE,MAAM,6BACN,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAY,IACZ,cAAc,QACd,eAAe,QACf,MAAO,GACP,OAAQ,GACR,cAAY,gBAVd,EAYE,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,yHAA2H,CAAA,EACnI,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,qBAAuB,CAAA,EAC/B,EAAA,EAAA,KAAC,OAAD,CAAM,EAAE,YAAc,CAAA,CAClB,GAER,IAAK,GACL,WAAY,GACb,CACF,CAED,SAAgB,GAAuB,CACrC,GAAM,CAAE,KAAM,EAAA,eAAe,YAAY,CACnC,CAAE,KAAM,GAAa,EAAA,aAAa,CAClC,EAAmB,EAAA,gBAAiB,GAAU,EAAM,UAAU,CAI9D,EAAU,EAAA,cAAc,KAAK,CAC7B,EAAU,EAAA,cAAc,IAAI,CAC5B,EAAyB,CAAC,GAAoB,GAAW,CAAC,EAC1D,EAAa,GAAU,gBAAgB,aAAe,MACtD,EACJ,OAAO,GAAU,gBAAgB,YAAe,SAC5C,EAAS,eAAe,WACxB,IAAA,GACA,EAAgB,EACjB,EAAA,cAAc,MAAM,CAAE,SAAU,IAAQ,EAAa,EAAE,cACxD,YACA,IAAA,GAIJ,OAFI,EAA+B,MAGjC,EAAA,EAAA,MAAC,QAAD,CACE,cAAY,4BACZ,UAAU,yGAFZ,EAIE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,+CACb,EAAE,EAAA,QAAQ,cAAc,CACpB,CAAA,EACP,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,wCACZ,EAAqB,IAAK,GAAS,CAClC,IAAM,EAAW,CAAC,EAAE,GAAc,EAAK,eACjC,GACJ,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,qDACb,EAAK,KACD,CAAA,CAEH,GAAQ,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oBAAY,EAAK,MAAa,CAAA,CACtD,EAAkB,EAAK,aAC3B,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,2IACb,EAAE,EAAA,QAAQ,gBAAgB,CACtB,CAAA,CAkCT,OA/BI,GAQA,EAAA,EAAA,KAAC,EAAA,cAAD,CAEE,QAAS,EAAE,EAAA,QAAQ,gCAAiC,CAClD,UAAW,EACZ,CAAC,CACF,UAAU,kBAEV,EAAA,EAAA,MAAC,OAAD,CACE,gBAAc,OACd,cAAa,sBAAsB,EAAK,KACxC,UAAW,EAAA,GACT,EAAA,wBAAwB,CACxB,gEACD,UANH,CAQG,EACA,EACA,EACI,GACO,CAlBT,EAAK,GAkBI,EAKlB,EAAA,EAAA,MAAC,EAAA,eAAD,CAEE,GAAI,EAAK,GACT,IAAK,EAAK,IACV,cAAa,sBAAsB,EAAK,KACxC,WAAY,CAAE,cACZ,EAAA,GACE,EAAA,wBAAwB,CACxB,WACA,EACI,EAAA,8BAA8B,OAC9B,EAAA,8BAA8B,KACnC,UAZL,CAeG,EACA,EACA,EACc,EAjBV,EAAK,GAiBK,EAEnB,CACE,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,sBACb,EAAA,EAAA,KAAC,EAAA,2BAAD,EAA8B,CAAA,CAC1B,CAAA,CACA"}
|
|
@@ -66,7 +66,7 @@ function _() {
|
|
|
66
66
|
children: [
|
|
67
67
|
/* @__PURE__ */ m("span", {
|
|
68
68
|
className: "px-2 text-sm font-normal text-white",
|
|
69
|
-
children: s(t.NAV$
|
|
69
|
+
children: s(t.NAV$CUSTOMIZE)
|
|
70
70
|
}),
|
|
71
71
|
/* @__PURE__ */ m("div", {
|
|
72
72
|
className: "flex flex-col gap-0.5 pt-0.5",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions-navigation.js","names":[],"sources":["../../../../src/components/features/skills/extensions-navigation.tsx"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\nimport { NavigationLink } from \"#/components/shared/navigation-link\";\nimport { StyledTooltip } from \"#/components/shared/buttons/styled-tooltip\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { ACP_PROVIDERS } from \"#/constants/acp-providers\";\nimport { cn } from \"#/utils/utils\";\nimport SkillsIcon from \"#/icons/skills.svg?react\";\nimport ServerProcessIcon from \"#/icons/server-process.svg?react\";\nimport { BackendSyncedSettingsBadge } from \"#/components/features/settings/backend-synced-settings-badge\";\nimport {\n SIDEBAR_ROW_INTERACTIVE_CLASS,\n sidebarNavRowClassName,\n} from \"#/components/features/sidebar/sidebar-layout\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { useSidebarStore } from \"#/stores/sidebar-store\";\nimport { useBreakpoint } from \"#/hooks/use-breakpoint\";\n\ninterface ExtensionNavItem {\n to: string;\n label: string;\n icon: React.ReactElement;\n end?: boolean;\n comingSoon?: boolean;\n /**\n * When true, this item greys out (and the /route's ``clientLoader``\n * bounces to ``/settings/agent``) while an ACP agent is active.\n * The ACP sub-agent manages its own MCP servers; the SDK rejects\n * ``mcp_config`` on ``ACPAgent`` init outright, so the OpenHands-\n * side editor would silently no-op against the running subprocess.\n */\n disabledByAcp?: boolean;\n}\n\nexport const EXTENSIONS_NAV_ITEMS: ExtensionNavItem[] = [\n {\n to: \"/skills\",\n label: \"Skills\",\n icon: <SkillsIcon width={16} height={16} aria-hidden=\"true\" />,\n end: true,\n },\n {\n to: \"/mcp\",\n label: \"MCP Servers\",\n icon: <ServerProcessIcon width={16} height={16} />,\n end: true,\n disabledByAcp: true,\n },\n {\n to: \"/plugins\",\n label: \"Plugins\",\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width={16}\n height={16}\n aria-hidden=\"true\"\n >\n <path d=\"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\" />\n <path d=\"m3.3 7 8.7 5 8.7-5\" />\n <path d=\"M12 22V12\" />\n </svg>\n ),\n end: true,\n comingSoon: true,\n },\n];\n\nexport function ExtensionsNavigation() {\n const { t } = useTranslation(\"openhands\");\n const { data: settings } = useSettings();\n const sidebarCollapsed = useSidebarStore((state) => state.collapsed);\n // At iPad portrait widths (md to <lg) an expanded primary Sidebar (300px)\n // plus this nav (260px) leaves the main content unreadable. Hide ourselves\n // until the user collapses the Sidebar or the viewport reaches `lg`.\n const belowLg = useBreakpoint(1023);\n const belowMd = useBreakpoint(767);\n const hideForExpandedSidebar = !sidebarCollapsed && belowLg && !belowMd;\n const isAcpAgent = settings?.agent_settings?.agent_kind === \"acp\";\n const acpServerKey =\n typeof settings?.agent_settings?.acp_server === \"string\"\n ? settings.agent_settings.acp_server\n : undefined;\n const acpServerName = isAcpAgent\n ? (ACP_PROVIDERS.find(({ key }) => key === acpServerKey)?.display_name ??\n \"ACP Agent\")\n : undefined;\n\n if (hideForExpandedSidebar) return null;\n\n return (\n <aside\n data-testid=\"extensions-navbar-desktop\"\n className=\"hidden md:flex md:w-[260px] md:shrink-0 md:flex-col md:gap-2 md:sticky md:top-8 md:self-start\"\n >\n <span className=\"px-2 text-sm font-normal text-white\">\n {t(I18nKey.NAV$
|
|
1
|
+
{"version":3,"file":"extensions-navigation.js","names":[],"sources":["../../../../src/components/features/skills/extensions-navigation.tsx"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\nimport { NavigationLink } from \"#/components/shared/navigation-link\";\nimport { StyledTooltip } from \"#/components/shared/buttons/styled-tooltip\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { ACP_PROVIDERS } from \"#/constants/acp-providers\";\nimport { cn } from \"#/utils/utils\";\nimport SkillsIcon from \"#/icons/skills.svg?react\";\nimport ServerProcessIcon from \"#/icons/server-process.svg?react\";\nimport { BackendSyncedSettingsBadge } from \"#/components/features/settings/backend-synced-settings-badge\";\nimport {\n SIDEBAR_ROW_INTERACTIVE_CLASS,\n sidebarNavRowClassName,\n} from \"#/components/features/sidebar/sidebar-layout\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { useSidebarStore } from \"#/stores/sidebar-store\";\nimport { useBreakpoint } from \"#/hooks/use-breakpoint\";\n\ninterface ExtensionNavItem {\n to: string;\n label: string;\n icon: React.ReactElement;\n end?: boolean;\n comingSoon?: boolean;\n /**\n * When true, this item greys out (and the /route's ``clientLoader``\n * bounces to ``/settings/agent``) while an ACP agent is active.\n * The ACP sub-agent manages its own MCP servers; the SDK rejects\n * ``mcp_config`` on ``ACPAgent`` init outright, so the OpenHands-\n * side editor would silently no-op against the running subprocess.\n */\n disabledByAcp?: boolean;\n}\n\nexport const EXTENSIONS_NAV_ITEMS: ExtensionNavItem[] = [\n {\n to: \"/skills\",\n label: \"Skills\",\n icon: <SkillsIcon width={16} height={16} aria-hidden=\"true\" />,\n end: true,\n },\n {\n to: \"/mcp\",\n label: \"MCP Servers\",\n icon: <ServerProcessIcon width={16} height={16} />,\n end: true,\n disabledByAcp: true,\n },\n {\n to: \"/plugins\",\n label: \"Plugins\",\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width={16}\n height={16}\n aria-hidden=\"true\"\n >\n <path d=\"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\" />\n <path d=\"m3.3 7 8.7 5 8.7-5\" />\n <path d=\"M12 22V12\" />\n </svg>\n ),\n end: true,\n comingSoon: true,\n },\n];\n\nexport function ExtensionsNavigation() {\n const { t } = useTranslation(\"openhands\");\n const { data: settings } = useSettings();\n const sidebarCollapsed = useSidebarStore((state) => state.collapsed);\n // At iPad portrait widths (md to <lg) an expanded primary Sidebar (300px)\n // plus this nav (260px) leaves the main content unreadable. Hide ourselves\n // until the user collapses the Sidebar or the viewport reaches `lg`.\n const belowLg = useBreakpoint(1023);\n const belowMd = useBreakpoint(767);\n const hideForExpandedSidebar = !sidebarCollapsed && belowLg && !belowMd;\n const isAcpAgent = settings?.agent_settings?.agent_kind === \"acp\";\n const acpServerKey =\n typeof settings?.agent_settings?.acp_server === \"string\"\n ? settings.agent_settings.acp_server\n : undefined;\n const acpServerName = isAcpAgent\n ? (ACP_PROVIDERS.find(({ key }) => key === acpServerKey)?.display_name ??\n \"ACP Agent\")\n : undefined;\n\n if (hideForExpandedSidebar) return null;\n\n return (\n <aside\n data-testid=\"extensions-navbar-desktop\"\n className=\"hidden md:flex md:w-[260px] md:shrink-0 md:flex-col md:gap-2 md:sticky md:top-8 md:self-start\"\n >\n <span className=\"px-2 text-sm font-normal text-white\">\n {t(I18nKey.NAV$CUSTOMIZE)}\n </span>\n <div className=\"flex flex-col gap-0.5 pt-0.5\">\n {EXTENSIONS_NAV_ITEMS.map((item) => {\n const disabled = !!(isAcpAgent && item.disabledByAcp);\n const baseRow = (\n <span className=\"shrink-0 flex items-center justify-center\">\n {item.icon}\n </span>\n );\n const label = <span className=\"truncate\">{item.label}</span>;\n const comingSoonBadge = item.comingSoon && (\n <span className=\"ml-auto shrink-0 rounded-full border border-white/20 bg-white/5 px-1.5 py-0.5 text-[10px] font-medium text-[var(--oh-text-dim)]\">\n {t(I18nKey.NAV$COMING_SOON)}\n </span>\n );\n\n if (disabled) {\n // Render a non-clickable surrogate so the URL and a11y tree\n // both communicate \"you can't go here right now,\" then wrap\n // in StyledTooltip for the why. Mirrors the SettingsNavLink\n // disabled rendering — same flag (``disabledByAcp``), same\n // explanatory tooltip (\"Disabled while {agentName} is the\n // active agent\"), same greyed styles.\n return (\n <StyledTooltip\n key={item.to}\n content={t(I18nKey.SETTINGS$AGENT_DISABLED_TOOLTIP, {\n agentName: acpServerName,\n })}\n placement=\"right\"\n >\n <span\n aria-disabled=\"true\"\n data-testid={`sidebar-extensions-${item.to}`}\n className={cn(\n sidebarNavRowClassName(),\n \"truncate text-[var(--oh-muted)] opacity-50 cursor-not-allowed\",\n )}\n >\n {baseRow}\n {label}\n {comingSoonBadge}\n </span>\n </StyledTooltip>\n );\n }\n\n return (\n <NavigationLink\n key={item.to}\n to={item.to}\n end={item.end}\n data-testid={`sidebar-extensions-${item.to}`}\n className={({ isActive }) =>\n cn(\n sidebarNavRowClassName(),\n \"truncate\",\n isActive\n ? SIDEBAR_ROW_INTERACTIVE_CLASS.active\n : SIDEBAR_ROW_INTERACTIVE_CLASS.idle,\n )\n }\n >\n {baseRow}\n {label}\n {comingSoonBadge}\n </NavigationLink>\n );\n })}\n </div>\n <div className=\"px-2 pt-3\">\n <BackendSyncedSettingsBadge />\n </div>\n </aside>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;AAiCA,IAAa,IAA2C;CACtD;EACE,IAAI;EACJ,OAAO;EACP,MAAM,kBAAC,GAAD;GAAY,OAAO;GAAI,QAAQ;GAAI,eAAY;GAAS,CAAA;EAC9D,KAAK;EACN;CACD;EACE,IAAI;EACJ,OAAO;EACP,MAAM,kBAAC,GAAD;GAAmB,OAAO;GAAI,QAAQ;GAAM,CAAA;EAClD,KAAK;EACL,eAAe;EAChB;CACD;EACE,IAAI;EACJ,OAAO;EACP,MACE,kBAAC,OAAD;GACE,OAAM;GACN,SAAQ;GACR,MAAK;GACL,QAAO;GACP,aAAY;GACZ,eAAc;GACd,gBAAe;GACf,OAAO;GACP,QAAQ;GACR,eAAY;aAVd;IAYE,kBAAC,QAAD,EAAM,GAAE,0HAA2H,CAAA;IACnI,kBAAC,QAAD,EAAM,GAAE,sBAAuB,CAAA;IAC/B,kBAAC,QAAD,EAAM,GAAE,aAAc,CAAA;IAClB;;EAER,KAAK;EACL,YAAY;EACb;CACF;AAED,SAAgB,IAAuB;CACrC,IAAM,EAAE,SAAM,EAAe,YAAY,EACnC,EAAE,MAAM,MAAa,GAAa,EAClC,IAAmB,GAAiB,MAAU,EAAM,UAAU,EAI9D,IAAU,EAAc,KAAK,EAC7B,IAAU,EAAc,IAAI,EAC5B,IAAyB,CAAC,KAAoB,KAAW,CAAC,GAC1D,IAAa,GAAU,gBAAgB,eAAe,OACtD,IACJ,OAAO,GAAU,gBAAgB,cAAe,WAC5C,EAAS,eAAe,aACxB,KAAA,GACA,IAAgB,IACjB,EAAc,MAAM,EAAE,aAAU,MAAQ,EAAa,EAAE,gBACxD,cACA,KAAA;AAIJ,QAFI,IAA+B,OAGjC,kBAAC,SAAD;EACE,eAAY;EACZ,WAAU;YAFZ;GAIE,kBAAC,QAAD;IAAM,WAAU;cACb,EAAE,EAAQ,cAAc;IACpB,CAAA;GACP,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAqB,KAAK,MAAS;KAClC,IAAM,IAAW,CAAC,EAAE,KAAc,EAAK,gBACjC,IACJ,kBAAC,QAAD;MAAM,WAAU;gBACb,EAAK;MACD,CAAA,EAEH,IAAQ,kBAAC,QAAD;MAAM,WAAU;gBAAY,EAAK;MAAa,CAAA,EACtD,IAAkB,EAAK,cAC3B,kBAAC,QAAD;MAAM,WAAU;gBACb,EAAE,EAAQ,gBAAgB;MACtB,CAAA;AAkCT,YA/BI,IAQA,kBAAC,GAAD;MAEE,SAAS,EAAE,EAAQ,iCAAiC,EAClD,WAAW,GACZ,CAAC;MACF,WAAU;gBAEV,kBAAC,QAAD;OACE,iBAAc;OACd,eAAa,sBAAsB,EAAK;OACxC,WAAW,EACT,GAAwB,EACxB,gEACD;iBANH;QAQG;QACA;QACA;QACI;;MACO,EAlBT,EAAK,GAkBI,GAKlB,kBAAC,GAAD;MAEE,IAAI,EAAK;MACT,KAAK,EAAK;MACV,eAAa,sBAAsB,EAAK;MACxC,YAAY,EAAE,kBACZ,EACE,GAAwB,EACxB,YACA,IACI,EAA8B,SAC9B,EAA8B,KACnC;gBAZL;OAeG;OACA;OACA;OACc;QAjBV,EAAK,GAiBK;MAEnB;IACE,CAAA;GACN,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,GAAD,EAA8B,CAAA;IAC1B,CAAA;GACA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`../../../_virtual/_rolldown/runtime.cjs`),t=require(`../../../utils/utils.cjs`),n=require(`../../../node_modules/lucide-react/dist/esm/icons/arrow-left.cjs`),r=require(`../../../utils/form-control-classes.cjs`),i=require(`../navigation-link.cjs`);let a=require(`react`);a=e.__toESM(a,1);let o=require(`react/jsx-runtime`);function s({children:e}){return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.ArrowLeft,{size:20,"aria-hidden":!0}),e]})}function c(e){let{children:n,testId:a,className:c}=e,l=t.cn(r.formControlBackNavButtonClassName,c);return`to`in e?(0,o.jsx)(i.NavigationLink,{to:e.to,onClick:e.onClick,"data-testid":a,className:l,children:(0,o.jsx)(s,{children:n})}):(0,o.jsx)(`button`,{type:`button`,onClick:e.onClick,"data-testid":a,className:l,children:(0,o.jsx)(s,{children:n})})}exports.BackNavButton=c;
|
|
2
|
+
//# sourceMappingURL=back-nav-button.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"back-nav-button.cjs","names":[],"sources":["../../../../src/components/shared/buttons/back-nav-button.tsx"],"sourcesContent":["import React from \"react\";\nimport { ArrowLeft } from \"lucide-react\";\nimport { NavigationLink } from \"#/components/shared/navigation-link\";\nimport { cn } from \"#/utils/utils\";\nimport { formControlBackNavButtonClassName } from \"#/utils/form-control-classes\";\n\ntype BackNavButtonBaseProps = {\n children: React.ReactNode;\n testId?: string;\n className?: string;\n};\n\ntype BackNavButtonAsButtonProps = BackNavButtonBaseProps & {\n onClick: () => void;\n};\n\ntype BackNavButtonAsLinkProps = BackNavButtonBaseProps & {\n to: string;\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n};\n\nexport type BackNavButtonProps =\n | BackNavButtonAsButtonProps\n | BackNavButtonAsLinkProps;\n\nfunction BackNavButtonContent({\n children,\n}: Pick<BackNavButtonBaseProps, \"children\">) {\n return (\n <>\n <ArrowLeft size={20} aria-hidden />\n {children}\n </>\n );\n}\n\nexport function BackNavButton(\n props: BackNavButtonAsLinkProps,\n): React.JSX.Element;\nexport function BackNavButton(\n props: BackNavButtonAsButtonProps,\n): React.JSX.Element;\nexport function BackNavButton(props: BackNavButtonProps) {\n const { children, testId, className } = props;\n const classes = cn(formControlBackNavButtonClassName, className);\n\n if (\"to\" in props) {\n return (\n <NavigationLink\n to={props.to}\n onClick={props.onClick}\n data-testid={testId}\n className={classes}\n >\n <BackNavButtonContent>{children}</BackNavButtonContent>\n </NavigationLink>\n );\n }\n\n return (\n <button\n type=\"button\"\n onClick={props.onClick}\n data-testid={testId}\n className={classes}\n >\n <BackNavButtonContent>{children}</BackNavButtonContent>\n </button>\n );\n}\n"],"mappings":"mVAyBA,SAAS,EAAqB,CAC5B,YAC2C,CAC3C,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAA,UAAD,CAAW,KAAM,GAAI,cAAA,GAAc,CAAA,CAClC,EACA,CAAA,CAAA,CAUP,SAAgB,EAAc,EAA2B,CACvD,GAAM,CAAE,WAAU,SAAQ,aAAc,EAClC,EAAU,EAAA,GAAG,EAAA,kCAAmC,EAAU,CAehE,MAbI,OAAQ,GAER,EAAA,EAAA,KAAC,EAAA,eAAD,CACE,GAAI,EAAM,GACV,QAAS,EAAM,QACf,cAAa,EACb,UAAW,YAEX,EAAA,EAAA,KAAC,EAAD,CAAuB,WAAgC,CAAA,CACxC,CAAA,EAKnB,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAS,EAAM,QACf,cAAa,EACb,UAAW,YAEX,EAAA,EAAA,KAAC,EAAD,CAAuB,WAAgC,CAAA,CAChD,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
type BackNavButtonBaseProps = {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
testId?: string;
|
|
5
|
+
className?: string;
|
|
6
|
+
};
|
|
7
|
+
type BackNavButtonAsButtonProps = BackNavButtonBaseProps & {
|
|
8
|
+
onClick: () => void;
|
|
9
|
+
};
|
|
10
|
+
type BackNavButtonAsLinkProps = BackNavButtonBaseProps & {
|
|
11
|
+
to: string;
|
|
12
|
+
onClick?: React.MouseEventHandler<HTMLAnchorElement>;
|
|
13
|
+
};
|
|
14
|
+
export type BackNavButtonProps = BackNavButtonAsButtonProps | BackNavButtonAsLinkProps;
|
|
15
|
+
export declare function BackNavButton(props: BackNavButtonAsLinkProps): React.JSX.Element;
|
|
16
|
+
export declare function BackNavButton(props: BackNavButtonAsButtonProps): React.JSX.Element;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { cn as e } from "../../../utils/utils.js";
|
|
2
|
+
import { ArrowLeft as t } from "../../../node_modules/lucide-react/dist/esm/icons/arrow-left.js";
|
|
3
|
+
import { formControlBackNavButtonClassName as n } from "../../../utils/form-control-classes.js";
|
|
4
|
+
import { NavigationLink as r } from "../navigation-link.js";
|
|
5
|
+
import "react";
|
|
6
|
+
import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
7
|
+
//#region src/components/shared/buttons/back-nav-button.tsx
|
|
8
|
+
function s({ children: e }) {
|
|
9
|
+
return /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ a(t, {
|
|
10
|
+
size: 20,
|
|
11
|
+
"aria-hidden": !0
|
|
12
|
+
}), e] });
|
|
13
|
+
}
|
|
14
|
+
function c(t) {
|
|
15
|
+
let { children: i, testId: o, className: c } = t, l = e(n, c);
|
|
16
|
+
return "to" in t ? /* @__PURE__ */ a(r, {
|
|
17
|
+
to: t.to,
|
|
18
|
+
onClick: t.onClick,
|
|
19
|
+
"data-testid": o,
|
|
20
|
+
className: l,
|
|
21
|
+
children: /* @__PURE__ */ a(s, { children: i })
|
|
22
|
+
}) : /* @__PURE__ */ a("button", {
|
|
23
|
+
type: "button",
|
|
24
|
+
onClick: t.onClick,
|
|
25
|
+
"data-testid": o,
|
|
26
|
+
className: l,
|
|
27
|
+
children: /* @__PURE__ */ a(s, { children: i })
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { c as BackNavButton };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=back-nav-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"back-nav-button.js","names":[],"sources":["../../../../src/components/shared/buttons/back-nav-button.tsx"],"sourcesContent":["import React from \"react\";\nimport { ArrowLeft } from \"lucide-react\";\nimport { NavigationLink } from \"#/components/shared/navigation-link\";\nimport { cn } from \"#/utils/utils\";\nimport { formControlBackNavButtonClassName } from \"#/utils/form-control-classes\";\n\ntype BackNavButtonBaseProps = {\n children: React.ReactNode;\n testId?: string;\n className?: string;\n};\n\ntype BackNavButtonAsButtonProps = BackNavButtonBaseProps & {\n onClick: () => void;\n};\n\ntype BackNavButtonAsLinkProps = BackNavButtonBaseProps & {\n to: string;\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n};\n\nexport type BackNavButtonProps =\n | BackNavButtonAsButtonProps\n | BackNavButtonAsLinkProps;\n\nfunction BackNavButtonContent({\n children,\n}: Pick<BackNavButtonBaseProps, \"children\">) {\n return (\n <>\n <ArrowLeft size={20} aria-hidden />\n {children}\n </>\n );\n}\n\nexport function BackNavButton(\n props: BackNavButtonAsLinkProps,\n): React.JSX.Element;\nexport function BackNavButton(\n props: BackNavButtonAsButtonProps,\n): React.JSX.Element;\nexport function BackNavButton(props: BackNavButtonProps) {\n const { children, testId, className } = props;\n const classes = cn(formControlBackNavButtonClassName, className);\n\n if (\"to\" in props) {\n return (\n <NavigationLink\n to={props.to}\n onClick={props.onClick}\n data-testid={testId}\n className={classes}\n >\n <BackNavButtonContent>{children}</BackNavButtonContent>\n </NavigationLink>\n );\n }\n\n return (\n <button\n type=\"button\"\n onClick={props.onClick}\n data-testid={testId}\n className={classes}\n >\n <BackNavButtonContent>{children}</BackNavButtonContent>\n </button>\n );\n}\n"],"mappings":";;;;;;;AAyBA,SAAS,EAAqB,EAC5B,eAC2C;AAC3C,QACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EAAW,MAAM;EAAI,eAAA;EAAc,CAAA,EAClC,EACA,EAAA,CAAA;;AAUP,SAAgB,EAAc,GAA2B;CACvD,IAAM,EAAE,aAAU,WAAQ,iBAAc,GAClC,IAAU,EAAG,GAAmC,EAAU;AAehE,QAbI,QAAQ,IAER,kBAAC,GAAD;EACE,IAAI,EAAM;EACV,SAAS,EAAM;EACf,eAAa;EACb,WAAW;YAEX,kBAAC,GAAD,EAAuB,aAAgC,CAAA;EACxC,CAAA,GAKnB,kBAAC,UAAD;EACE,MAAK;EACL,SAAS,EAAM;EACf,eAAa;EACb,WAAW;YAEX,kBAAC,GAAD,EAAuB,aAAgC,CAAA;EAChD,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../node_modules/react-i18next/dist/es/useTranslation.cjs`),t=require(`../../../i18n/declaration.cjs`),n=require(`../../../types/agent-state.cjs`),r=require(`../../../types/agent-server/
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../node_modules/react-i18next/dist/es/useTranslation.cjs`),t=require(`../../../i18n/declaration.cjs`),n=require(`../../../types/agent-state.cjs`),r=require(`../../../types/agent-server/core/base/common.cjs`),i=require(`../../../types/agent-server/type-guards.cjs`),a=require(`../../../stores/use-event-store.cjs`),o=require(`../../../hooks/query/use-active-conversation.cjs`),s=require(`../../../hooks/use-agent-state.cjs`),c=require(`../action-tooltip.cjs`),l=require(`../risk-alert.cjs`),u=require(`../../../icons/u-warning.cjs`),d=require(`../../../stores/event-message-store.cjs`),f=require(`../../../hooks/mutation/use-respond-to-confirmation.cjs`);let p=require(`react`),m=require(`react/jsx-runtime`);function h(){let h=d.useEventMessageStore(e=>e.submittedEventIds),g=d.useEventMessageStore(e=>e.addSubmittedEventId),{t:_}=e.useTranslation(`openhands`),{data:v}=o.useActiveConversation(),{curAgentState:y}=s.useAgentState(),{mutate:b}=f.useRespondToConfirmation(),x=a.useEventStore(e=>e.events).slice().reverse().find(e=>e.source===`agent`?y===n.AgentState.AWAITING_USER_CONFIRMATION:!1),S=(0,p.useCallback)(e=>{!x||!v||(g(x.id),b({conversationId:v.id,conversationUrl:v.conversation_url||``,sessionApiKey:v.session_api_key,accept:e}))},[x,v,g,b]);return(0,p.useEffect)(()=>{if(!x)return;let e=e=>{e.shiftKey&&e.metaKey&&e.key===`Backspace`&&(e.preventDefault(),S(!1))},t=e=>{e.metaKey&&e.key===`Enter`&&(e.preventDefault(),S(!0))},n=n=>{e(n),t(n)};return document.addEventListener(`keydown`,n),()=>document.removeEventListener(`keydown`,n)},[x,S]),y!==n.AgentState.AWAITING_USER_CONFIRMATION||!x||h.includes(x.id)?null:(0,m.jsxs)(`div`,{className:`flex flex-col gap-2 pt-4`,children:[(i.isActionEvent(x)?x.security_risk:r.SecurityRisk.UNKNOWN)===r.SecurityRisk.HIGH&&(0,m.jsx)(l.RiskAlert,{content:_(t.I18nKey.CHAT_INTERFACE$HIGH_RISK_WARNING),icon:(0,m.jsx)(u.default,{width:16,height:16,color:`#fff`}),severity:`high`,title:_(t.I18nKey.COMMON$HIGH_RISK)}),(0,m.jsxs)(`div`,{className:`flex justify-between items-center`,children:[(0,m.jsx)(`p`,{className:`text-sm font-normal text-white`,children:_(t.I18nKey.CHAT_INTERFACE$USER_ASK_CONFIRMATION)}),(0,m.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,m.jsx)(c.ActionTooltip,{type:`reject`,onClick:()=>S(!1)}),(0,m.jsx)(c.ActionTooltip,{type:`confirm`,onClick:()=>S(!0)})]})]})]})}exports.ConversationConfirmationButtons=h;
|
|
2
2
|
//# sourceMappingURL=conversation-confirmation-buttons.cjs.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { useTranslation as e } from "../../../node_modules/react-i18next/dist/es/useTranslation.js";
|
|
2
2
|
import { I18nKey as t } from "../../../i18n/declaration.js";
|
|
3
3
|
import { AgentState as n } from "../../../types/agent-state.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { SecurityRisk as r } from "../../../types/agent-server/core/base/common.js";
|
|
5
|
+
import { isActionEvent as i } from "../../../types/agent-server/type-guards.js";
|
|
6
|
+
import { useEventStore as a } from "../../../stores/use-event-store.js";
|
|
7
7
|
import { useActiveConversation as o } from "../../../hooks/query/use-active-conversation.js";
|
|
8
8
|
import { useAgentState as s } from "../../../hooks/use-agent-state.js";
|
|
9
9
|
import { ActionTooltip as c } from "../action-tooltip.js";
|
|
@@ -15,7 +15,7 @@ import { useCallback as p, useEffect as m } from "react";
|
|
|
15
15
|
import { jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
16
16
|
//#region src/components/shared/buttons/conversation-confirmation-buttons.tsx
|
|
17
17
|
function _() {
|
|
18
|
-
let _ = d((e) => e.submittedEventIds), v = d((e) => e.addSubmittedEventId), { t: y } = e("openhands"), { data: b } = o(), { curAgentState: x } = s(), { mutate: S } = f(), C =
|
|
18
|
+
let _ = d((e) => e.submittedEventIds), v = d((e) => e.addSubmittedEventId), { t: y } = e("openhands"), { data: b } = o(), { curAgentState: x } = s(), { mutate: S } = f(), C = a((e) => e.events).slice().reverse().find((e) => e.source === "agent" ? x === n.AWAITING_USER_CONFIRMATION : !1), w = p((e) => {
|
|
19
19
|
!C || !b || (v(C.id), S({
|
|
20
20
|
conversationId: b.id,
|
|
21
21
|
conversationUrl: b.conversation_url || "",
|
|
@@ -40,7 +40,7 @@ function _() {
|
|
|
40
40
|
return document.addEventListener("keydown", n), () => document.removeEventListener("keydown", n);
|
|
41
41
|
}, [C, w]), x !== n.AWAITING_USER_CONFIRMATION || !C || _.includes(C.id) ? null : /* @__PURE__ */ g("div", {
|
|
42
42
|
className: "flex flex-col gap-2 pt-4",
|
|
43
|
-
children: [(
|
|
43
|
+
children: [(i(C) ? C.security_risk : r.UNKNOWN) === r.HIGH && /* @__PURE__ */ h(l, {
|
|
44
44
|
content: y(t.CHAT_INTERFACE$HIGH_RISK_WARNING),
|
|
45
45
|
icon: /* @__PURE__ */ h(u, {
|
|
46
46
|
width: 16,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../../../_virtual/_rolldown/runtime.cjs`),t=require(`../../../node_modules/react-i18next/dist/es/useTranslation.cjs`),n=require(`../../../i18n/declaration.cjs`),r=require(`../../../utils/utils.cjs`),i=require(`../../../node_modules/lucide-react/dist/esm/icons/check.cjs`),a=require(`../../../node_modules/lucide-react/dist/esm/icons/chevron-down.cjs`),o=require(`../../../hooks/use-click-outside-element.cjs`);let
|
|
1
|
+
const e=require(`../../../_virtual/_rolldown/runtime.cjs`),t=require(`../../../node_modules/react-i18next/dist/es/useTranslation.cjs`),n=require(`../../../i18n/declaration.cjs`),r=require(`../../../utils/utils.cjs`),i=require(`../../../node_modules/lucide-react/dist/esm/icons/check.cjs`),a=require(`../../../node_modules/lucide-react/dist/esm/icons/chevron-down.cjs`),o=require(`../../../utils/dropdown-classes.cjs`),s=require(`../../../hooks/use-click-outside-element.cjs`);let c=require(`react`);c=e.__toESM(c,1);let l=require(`react/jsx-runtime`);function u({testId:e,value:u,onChange:d,options:f,labelKeyByValue:p}){let{t:m}=t.useTranslation(`openhands`),[h,g]=c.default.useState(!1),_=s.useClickOutsideElement(()=>g(!1)),v=f[0],y=m(p[u]);return(0,l.jsxs)(`div`,{ref:_,className:`relative shrink-0 w-auto`,"data-testid":e,children:[(0,l.jsxs)(`button`,{type:`button`,"data-testid":`dropdown-trigger`,"aria-haspopup":`menu`,"aria-expanded":h,"aria-label":m(n.I18nKey.CONVERSATION_PANEL$FILTER_LABEL),onClick:()=>g(e=>!e),className:r.cn(o.dropdownFilterTriggerClassName,v&&u!==v&&`border-white/60 bg-white/10`),children:[(0,l.jsx)(`span`,{className:`whitespace-nowrap`,children:y}),(0,l.jsx)(a.ChevronDown,{className:r.cn(`h-4 w-4 shrink-0 text-tertiary-alt transition-transform`,h&&`rotate-180`),"aria-hidden":!0})]}),h?(0,l.jsx)(`div`,{role:`menu`,"data-testid":`${e}-menu`,"aria-label":m(n.I18nKey.CONVERSATION_PANEL$FILTER_LABEL),className:r.cn(`absolute right-0 top-full z-50 mt-1 min-w-full w-max`,`max-h-60 overflow-auto rounded-[6px] bg-tertiary p-1 context-menu-box-shadow`,o.dropdownMenuListClassName),children:f.map(t=>{let n=t===u;return(0,l.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":n,"data-testid":`${e}-${t}`,onClick:()=>{d(t),g(!1)},className:r.cn(o.dropdownMenuRowClassName,n&&`bg-[var(--oh-interactive-selected)]`),children:[(0,l.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:m(p[t])}),n?(0,l.jsx)(i.Check,{className:`h-4 w-4 shrink-0`,"aria-hidden":!0}):null]},t)})}):null]})}exports.EnumFilterDropdown=u;
|
|
2
2
|
//# sourceMappingURL=enum-filter-dropdown.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum-filter-dropdown.cjs","names":[],"sources":["../../../../src/components/shared/filters/enum-filter-dropdown.tsx"],"sourcesContent":["import React from \"react\";\nimport { Check, ChevronDown } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { useClickOutsideElement } from \"#/hooks/use-click-outside-element\";\nimport { cn } from \"#/utils/utils\";\n\ninterface EnumFilterDropdownProps<T extends string> {\n testId: string;\n value: T;\n onChange: (value: T) => void;\n options: readonly T[];\n labelKeyByValue: Record<T, I18nKey>;\n}\n\nexport function EnumFilterDropdown<T extends string>({\n testId,\n value,\n onChange,\n options,\n labelKeyByValue,\n}: EnumFilterDropdownProps<T>) {\n const { t } = useTranslation(\"openhands\");\n const [open, setOpen] = React.useState(false);\n const containerRef = useClickOutsideElement<HTMLDivElement>(() =>\n setOpen(false),\n );\n\n const defaultOption = options[0];\n const selectedLabel = t(labelKeyByValue[value]);\n\n return (\n <div\n ref={containerRef}\n className=\"relative shrink-0 w-auto\"\n data-testid={testId}\n >\n <button\n type=\"button\"\n data-testid=\"dropdown-trigger\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-label={t(I18nKey.CONVERSATION_PANEL$FILTER_LABEL)}\n onClick={() => setOpen((prev) => !prev)}\n className={cn(\n
|
|
1
|
+
{"version":3,"file":"enum-filter-dropdown.cjs","names":[],"sources":["../../../../src/components/shared/filters/enum-filter-dropdown.tsx"],"sourcesContent":["import React from \"react\";\nimport { Check, ChevronDown } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { useClickOutsideElement } from \"#/hooks/use-click-outside-element\";\nimport { cn } from \"#/utils/utils\";\nimport {\n dropdownFilterTriggerClassName,\n dropdownMenuListClassName,\n dropdownMenuRowClassName,\n} from \"#/utils/dropdown-classes\";\n\ninterface EnumFilterDropdownProps<T extends string> {\n testId: string;\n value: T;\n onChange: (value: T) => void;\n options: readonly T[];\n labelKeyByValue: Record<T, I18nKey>;\n}\n\nexport function EnumFilterDropdown<T extends string>({\n testId,\n value,\n onChange,\n options,\n labelKeyByValue,\n}: EnumFilterDropdownProps<T>) {\n const { t } = useTranslation(\"openhands\");\n const [open, setOpen] = React.useState(false);\n const containerRef = useClickOutsideElement<HTMLDivElement>(() =>\n setOpen(false),\n );\n\n const defaultOption = options[0];\n const selectedLabel = t(labelKeyByValue[value]);\n\n return (\n <div\n ref={containerRef}\n className=\"relative shrink-0 w-auto\"\n data-testid={testId}\n >\n <button\n type=\"button\"\n data-testid=\"dropdown-trigger\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-label={t(I18nKey.CONVERSATION_PANEL$FILTER_LABEL)}\n onClick={() => setOpen((prev) => !prev)}\n className={cn(\n dropdownFilterTriggerClassName,\n defaultOption &&\n value !== defaultOption &&\n \"border-white/60 bg-white/10\",\n )}\n >\n <span className=\"whitespace-nowrap\">{selectedLabel}</span>\n <ChevronDown\n className={cn(\n \"h-4 w-4 shrink-0 text-tertiary-alt transition-transform\",\n open && \"rotate-180\",\n )}\n aria-hidden\n />\n </button>\n\n {open ? (\n <div\n role=\"menu\"\n data-testid={`${testId}-menu`}\n aria-label={t(I18nKey.CONVERSATION_PANEL$FILTER_LABEL)}\n className={cn(\n \"absolute right-0 top-full z-50 mt-1 min-w-full w-max\",\n \"max-h-60 overflow-auto rounded-[6px] bg-tertiary p-1 context-menu-box-shadow\",\n dropdownMenuListClassName,\n )}\n >\n {options.map((option) => {\n const selected = option === value;\n return (\n <button\n key={option}\n type=\"button\"\n role=\"menuitemradio\"\n aria-checked={selected}\n data-testid={`${testId}-${option}`}\n onClick={() => {\n onChange(option);\n setOpen(false);\n }}\n className={cn(\n dropdownMenuRowClassName,\n selected && \"bg-[var(--oh-interactive-selected)]\",\n )}\n >\n <span className=\"min-w-0 flex-1 truncate\">\n {t(labelKeyByValue[option])}\n </span>\n {selected ? (\n <Check className=\"h-4 w-4 shrink-0\" aria-hidden />\n ) : null}\n </button>\n );\n })}\n </div>\n ) : null}\n </div>\n );\n}\n"],"mappings":"uiBAoBA,SAAgB,EAAqC,CACnD,SACA,QACA,WACA,UACA,mBAC6B,CAC7B,GAAM,CAAE,KAAM,EAAA,eAAe,YAAY,CACnC,CAAC,EAAM,GAAW,EAAA,QAAM,SAAS,GAAM,CACvC,EAAe,EAAA,2BACnB,EAAQ,GAAM,CACf,CAEK,EAAgB,EAAQ,GACxB,EAAgB,EAAE,EAAgB,GAAO,CAE/C,OACE,EAAA,EAAA,MAAC,MAAD,CACE,IAAK,EACL,UAAU,2BACV,cAAa,WAHf,EAKE,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,SACL,cAAY,mBACZ,gBAAc,OACd,gBAAe,EACf,aAAY,EAAE,EAAA,QAAQ,gCAAgC,CACtD,YAAe,EAAS,GAAS,CAAC,EAAK,CACvC,UAAW,EAAA,GACT,EAAA,+BACA,GACE,IAAU,GACV,8BACH,UAZH,EAcE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,6BAAqB,EAAqB,CAAA,EAC1D,EAAA,EAAA,KAAC,EAAA,YAAD,CACE,UAAW,EAAA,GACT,0DACA,GAAQ,aACT,CACD,cAAA,GACA,CAAA,CACK,GAER,GACC,EAAA,EAAA,KAAC,MAAD,CACE,KAAK,OACL,cAAa,GAAG,EAAO,OACvB,aAAY,EAAE,EAAA,QAAQ,gCAAgC,CACtD,UAAW,EAAA,GACT,uDACA,+EACA,EAAA,0BACD,UAEA,EAAQ,IAAK,GAAW,CACvB,IAAM,EAAW,IAAW,EAC5B,OACE,EAAA,EAAA,MAAC,SAAD,CAEE,KAAK,SACL,KAAK,gBACL,eAAc,EACd,cAAa,GAAG,EAAO,GAAG,IAC1B,YAAe,CACb,EAAS,EAAO,CAChB,EAAQ,GAAM,EAEhB,UAAW,EAAA,GACT,EAAA,yBACA,GAAY,sCACb,UAbH,EAeE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,mCACb,EAAE,EAAgB,GAAQ,CACtB,CAAA,CACN,GACC,EAAA,EAAA,KAAC,EAAA,MAAD,CAAO,UAAU,mBAAmB,cAAA,GAAc,CAAA,CAChD,KACG,EApBF,EAoBE,EAEX,CACE,CAAA,CACJ,KACA"}
|
|
@@ -3,51 +3,52 @@ import { I18nKey as t } from "../../../i18n/declaration.js";
|
|
|
3
3
|
import { cn as n } from "../../../utils/utils.js";
|
|
4
4
|
import { Check as r } from "../../../node_modules/lucide-react/dist/esm/icons/check.js";
|
|
5
5
|
import { ChevronDown as i } from "../../../node_modules/lucide-react/dist/esm/icons/chevron-down.js";
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import
|
|
6
|
+
import { dropdownFilterTriggerClassName as a, dropdownMenuListClassName as o, dropdownMenuRowClassName as s } from "../../../utils/dropdown-classes.js";
|
|
7
|
+
import { useClickOutsideElement as c } from "../../../hooks/use-click-outside-element.js";
|
|
8
|
+
import l from "react";
|
|
9
|
+
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
9
10
|
//#region src/components/shared/filters/enum-filter-dropdown.tsx
|
|
10
|
-
function
|
|
11
|
-
let { t:
|
|
12
|
-
return /* @__PURE__ */
|
|
13
|
-
ref:
|
|
11
|
+
function f({ testId: f, value: p, onChange: m, options: h, labelKeyByValue: g }) {
|
|
12
|
+
let { t: _ } = e("openhands"), [v, y] = l.useState(!1), b = c(() => y(!1)), x = h[0], S = _(g[p]);
|
|
13
|
+
return /* @__PURE__ */ d("div", {
|
|
14
|
+
ref: b,
|
|
14
15
|
className: "relative shrink-0 w-auto",
|
|
15
|
-
"data-testid":
|
|
16
|
-
children: [/* @__PURE__ */
|
|
16
|
+
"data-testid": f,
|
|
17
|
+
children: [/* @__PURE__ */ d("button", {
|
|
17
18
|
type: "button",
|
|
18
19
|
"data-testid": "dropdown-trigger",
|
|
19
20
|
"aria-haspopup": "menu",
|
|
20
|
-
"aria-expanded":
|
|
21
|
-
"aria-label":
|
|
22
|
-
onClick: () =>
|
|
23
|
-
className: n(
|
|
24
|
-
children: [/* @__PURE__ */
|
|
21
|
+
"aria-expanded": v,
|
|
22
|
+
"aria-label": _(t.CONVERSATION_PANEL$FILTER_LABEL),
|
|
23
|
+
onClick: () => y((e) => !e),
|
|
24
|
+
className: n(a, x && p !== x && "border-white/60 bg-white/10"),
|
|
25
|
+
children: [/* @__PURE__ */ u("span", {
|
|
25
26
|
className: "whitespace-nowrap",
|
|
26
|
-
children:
|
|
27
|
-
}), /* @__PURE__ */
|
|
28
|
-
className: n("h-4 w-4 shrink-0 text-tertiary-alt transition-transform",
|
|
27
|
+
children: S
|
|
28
|
+
}), /* @__PURE__ */ u(i, {
|
|
29
|
+
className: n("h-4 w-4 shrink-0 text-tertiary-alt transition-transform", v && "rotate-180"),
|
|
29
30
|
"aria-hidden": !0
|
|
30
31
|
})]
|
|
31
|
-
}),
|
|
32
|
+
}), v ? /* @__PURE__ */ u("div", {
|
|
32
33
|
role: "menu",
|
|
33
|
-
"data-testid": `${
|
|
34
|
-
"aria-label":
|
|
35
|
-
className: n("absolute right-0 top-full z-50 mt-1 min-w-full w-max", "max-h-60 overflow-auto rounded-[6px] bg-tertiary p-1 context-menu-box-shadow"),
|
|
36
|
-
children:
|
|
37
|
-
let t = e ===
|
|
38
|
-
return /* @__PURE__ */
|
|
34
|
+
"data-testid": `${f}-menu`,
|
|
35
|
+
"aria-label": _(t.CONVERSATION_PANEL$FILTER_LABEL),
|
|
36
|
+
className: n("absolute right-0 top-full z-50 mt-1 min-w-full w-max", "max-h-60 overflow-auto rounded-[6px] bg-tertiary p-1 context-menu-box-shadow", o),
|
|
37
|
+
children: h.map((e) => {
|
|
38
|
+
let t = e === p;
|
|
39
|
+
return /* @__PURE__ */ d("button", {
|
|
39
40
|
type: "button",
|
|
40
41
|
role: "menuitemradio",
|
|
41
42
|
"aria-checked": t,
|
|
42
|
-
"data-testid": `${
|
|
43
|
+
"data-testid": `${f}-${e}`,
|
|
43
44
|
onClick: () => {
|
|
44
|
-
|
|
45
|
+
m(e), y(!1);
|
|
45
46
|
},
|
|
46
|
-
className: n(
|
|
47
|
-
children: [/* @__PURE__ */
|
|
47
|
+
className: n(s, t && "bg-[var(--oh-interactive-selected)]"),
|
|
48
|
+
children: [/* @__PURE__ */ u("span", {
|
|
48
49
|
className: "min-w-0 flex-1 truncate",
|
|
49
|
-
children:
|
|
50
|
-
}), t ? /* @__PURE__ */
|
|
50
|
+
children: _(g[e])
|
|
51
|
+
}), t ? /* @__PURE__ */ u(r, {
|
|
51
52
|
className: "h-4 w-4 shrink-0",
|
|
52
53
|
"aria-hidden": !0
|
|
53
54
|
}) : null]
|
|
@@ -57,6 +58,6 @@ function l({ testId: l, value: u, onChange: d, options: f, labelKeyByValue: p })
|
|
|
57
58
|
});
|
|
58
59
|
}
|
|
59
60
|
//#endregion
|
|
60
|
-
export {
|
|
61
|
+
export { f as EnumFilterDropdown };
|
|
61
62
|
|
|
62
63
|
//# sourceMappingURL=enum-filter-dropdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum-filter-dropdown.js","names":[],"sources":["../../../../src/components/shared/filters/enum-filter-dropdown.tsx"],"sourcesContent":["import React from \"react\";\nimport { Check, ChevronDown } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { useClickOutsideElement } from \"#/hooks/use-click-outside-element\";\nimport { cn } from \"#/utils/utils\";\n\ninterface EnumFilterDropdownProps<T extends string> {\n testId: string;\n value: T;\n onChange: (value: T) => void;\n options: readonly T[];\n labelKeyByValue: Record<T, I18nKey>;\n}\n\nexport function EnumFilterDropdown<T extends string>({\n testId,\n value,\n onChange,\n options,\n labelKeyByValue,\n}: EnumFilterDropdownProps<T>) {\n const { t } = useTranslation(\"openhands\");\n const [open, setOpen] = React.useState(false);\n const containerRef = useClickOutsideElement<HTMLDivElement>(() =>\n setOpen(false),\n );\n\n const defaultOption = options[0];\n const selectedLabel = t(labelKeyByValue[value]);\n\n return (\n <div\n ref={containerRef}\n className=\"relative shrink-0 w-auto\"\n data-testid={testId}\n >\n <button\n type=\"button\"\n data-testid=\"dropdown-trigger\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-label={t(I18nKey.CONVERSATION_PANEL$FILTER_LABEL)}\n onClick={() => setOpen((prev) => !prev)}\n className={cn(\n
|
|
1
|
+
{"version":3,"file":"enum-filter-dropdown.js","names":[],"sources":["../../../../src/components/shared/filters/enum-filter-dropdown.tsx"],"sourcesContent":["import React from \"react\";\nimport { Check, ChevronDown } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { useClickOutsideElement } from \"#/hooks/use-click-outside-element\";\nimport { cn } from \"#/utils/utils\";\nimport {\n dropdownFilterTriggerClassName,\n dropdownMenuListClassName,\n dropdownMenuRowClassName,\n} from \"#/utils/dropdown-classes\";\n\ninterface EnumFilterDropdownProps<T extends string> {\n testId: string;\n value: T;\n onChange: (value: T) => void;\n options: readonly T[];\n labelKeyByValue: Record<T, I18nKey>;\n}\n\nexport function EnumFilterDropdown<T extends string>({\n testId,\n value,\n onChange,\n options,\n labelKeyByValue,\n}: EnumFilterDropdownProps<T>) {\n const { t } = useTranslation(\"openhands\");\n const [open, setOpen] = React.useState(false);\n const containerRef = useClickOutsideElement<HTMLDivElement>(() =>\n setOpen(false),\n );\n\n const defaultOption = options[0];\n const selectedLabel = t(labelKeyByValue[value]);\n\n return (\n <div\n ref={containerRef}\n className=\"relative shrink-0 w-auto\"\n data-testid={testId}\n >\n <button\n type=\"button\"\n data-testid=\"dropdown-trigger\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-label={t(I18nKey.CONVERSATION_PANEL$FILTER_LABEL)}\n onClick={() => setOpen((prev) => !prev)}\n className={cn(\n dropdownFilterTriggerClassName,\n defaultOption &&\n value !== defaultOption &&\n \"border-white/60 bg-white/10\",\n )}\n >\n <span className=\"whitespace-nowrap\">{selectedLabel}</span>\n <ChevronDown\n className={cn(\n \"h-4 w-4 shrink-0 text-tertiary-alt transition-transform\",\n open && \"rotate-180\",\n )}\n aria-hidden\n />\n </button>\n\n {open ? (\n <div\n role=\"menu\"\n data-testid={`${testId}-menu`}\n aria-label={t(I18nKey.CONVERSATION_PANEL$FILTER_LABEL)}\n className={cn(\n \"absolute right-0 top-full z-50 mt-1 min-w-full w-max\",\n \"max-h-60 overflow-auto rounded-[6px] bg-tertiary p-1 context-menu-box-shadow\",\n dropdownMenuListClassName,\n )}\n >\n {options.map((option) => {\n const selected = option === value;\n return (\n <button\n key={option}\n type=\"button\"\n role=\"menuitemradio\"\n aria-checked={selected}\n data-testid={`${testId}-${option}`}\n onClick={() => {\n onChange(option);\n setOpen(false);\n }}\n className={cn(\n dropdownMenuRowClassName,\n selected && \"bg-[var(--oh-interactive-selected)]\",\n )}\n >\n <span className=\"min-w-0 flex-1 truncate\">\n {t(labelKeyByValue[option])}\n </span>\n {selected ? (\n <Check className=\"h-4 w-4 shrink-0\" aria-hidden />\n ) : null}\n </button>\n );\n })}\n </div>\n ) : null}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AAoBA,SAAgB,EAAqC,EACnD,WACA,UACA,aACA,YACA,sBAC6B;CAC7B,IAAM,EAAE,SAAM,EAAe,YAAY,EACnC,CAAC,GAAM,KAAW,EAAM,SAAS,GAAM,EACvC,IAAe,QACnB,EAAQ,GAAM,CACf,EAEK,IAAgB,EAAQ,IACxB,IAAgB,EAAE,EAAgB,GAAO;AAE/C,QACE,kBAAC,OAAD;EACE,KAAK;EACL,WAAU;EACV,eAAa;YAHf,CAKE,kBAAC,UAAD;GACE,MAAK;GACL,eAAY;GACZ,iBAAc;GACd,iBAAe;GACf,cAAY,EAAE,EAAQ,gCAAgC;GACtD,eAAe,GAAS,MAAS,CAAC,EAAK;GACvC,WAAW,EACT,GACA,KACE,MAAU,KACV,8BACH;aAZH,CAcE,kBAAC,QAAD;IAAM,WAAU;cAAqB;IAAqB,CAAA,EAC1D,kBAAC,GAAD;IACE,WAAW,EACT,2DACA,KAAQ,aACT;IACD,eAAA;IACA,CAAA,CACK;MAER,IACC,kBAAC,OAAD;GACE,MAAK;GACL,eAAa,GAAG,EAAO;GACvB,cAAY,EAAE,EAAQ,gCAAgC;GACtD,WAAW,EACT,wDACA,gFACA,EACD;aAEA,EAAQ,KAAK,MAAW;IACvB,IAAM,IAAW,MAAW;AAC5B,WACE,kBAAC,UAAD;KAEE,MAAK;KACL,MAAK;KACL,gBAAc;KACd,eAAa,GAAG,EAAO,GAAG;KAC1B,eAAe;AAEb,MADA,EAAS,EAAO,EAChB,EAAQ,GAAM;;KAEhB,WAAW,EACT,GACA,KAAY,sCACb;eAbH,CAeE,kBAAC,QAAD;MAAM,WAAU;gBACb,EAAE,EAAgB,GAAQ;MACtB,CAAA,EACN,IACC,kBAAC,GAAD;MAAO,WAAU;MAAmB,eAAA;MAAc,CAAA,GAChD,KACG;OApBF,EAoBE;KAEX;GACE,CAAA,GACJ,KACA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../../../../_virtual/_rolldown/runtime.cjs`),t=require(`../../../../utils/utils.cjs`),n=require(`../modal-body.cjs`),r=require(`../../buttons/modal-button.cjs`);let
|
|
1
|
+
const e=require(`../../../../_virtual/_rolldown/runtime.cjs`),t=require(`../../../../utils/utils.cjs`),n=require(`../modal-body.cjs`),r=require(`../../buttons/modal-button.cjs`),i=require(`../../../../utils/modal-classes.cjs`);let a=require(`react`);a=e.__toESM(a,1);let o=require(`react/jsx-runtime`);function s({title:e,id:n,className:r}){return(0,o.jsx)(`span`,{id:n,className:t.cn(i.modalTitleClassName,r),children:e})}function c({description:e,children:t}){return(0,o.jsx)(`span`,{className:`text-xs text-modal-muted`,children:t||e})}function l({testId:e,title:t,description:i,buttons:a}){return(0,o.jsxs)(n.ModalBody,{testID:e,children:[(0,o.jsxs)(`div`,{className:`flex flex-col gap-2 self-start`,children:[(0,o.jsx)(s,{title:t}),(0,o.jsx)(c,{description:i})]}),(0,o.jsx)(`div`,{className:`flex flex-col gap-2 w-full`,children:a.map((e,t)=>(0,o.jsx)(r.ModalButton,{onClick:e.onClick,text:e.text,className:e.className},t))})]})}exports.BaseModal=l,exports.BaseModalDescription=c,exports.BaseModalTitle=s;
|
|
2
2
|
//# sourceMappingURL=base-modal.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-modal.cjs","names":[],"sources":["../../../../../src/components/shared/modals/confirmation-modals/base-modal.tsx"],"sourcesContent":["import React from \"react\";\nimport { ModalBody } from \"../modal-body\";\nimport { ModalButton } from \"../../buttons/modal-button\";\nimport { cn } from \"#/utils/utils\";\n\ninterface ButtonConfig {\n text: string;\n onClick: () => void;\n className: React.HTMLProps<HTMLButtonElement>[\"className\"];\n}\n\ninterface BaseModalTitleProps {\n title: React.ReactNode;\n id?: string;\n className?: string;\n}\n\nexport function BaseModalTitle({ title, id, className }: BaseModalTitleProps) {\n return (\n <span
|
|
1
|
+
{"version":3,"file":"base-modal.cjs","names":[],"sources":["../../../../../src/components/shared/modals/confirmation-modals/base-modal.tsx"],"sourcesContent":["import React from \"react\";\nimport { ModalBody } from \"../modal-body\";\nimport { ModalButton } from \"../../buttons/modal-button\";\nimport { cn } from \"#/utils/utils\";\nimport { modalTitleClassName } from \"#/utils/modal-classes\";\n\ninterface ButtonConfig {\n text: string;\n onClick: () => void;\n className: React.HTMLProps<HTMLButtonElement>[\"className\"];\n}\n\ninterface BaseModalTitleProps {\n title: React.ReactNode;\n id?: string;\n className?: string;\n}\n\nexport function BaseModalTitle({ title, id, className }: BaseModalTitleProps) {\n return (\n <span id={id} className={cn(modalTitleClassName, className)}>\n {title}\n </span>\n );\n}\n\ninterface BaseModalDescriptionProps {\n description?: React.ReactNode;\n children?: React.ReactNode;\n}\n\nexport function BaseModalDescription({\n description,\n children,\n}: BaseModalDescriptionProps) {\n return (\n <span className=\"text-xs text-modal-muted\">{children || description}</span>\n );\n}\n\ninterface BaseModalProps {\n testId?: string;\n title: string;\n description: string;\n buttons: ButtonConfig[];\n}\n\nexport function BaseModal({\n testId,\n title,\n description,\n buttons,\n}: BaseModalProps) {\n return (\n <ModalBody testID={testId}>\n <div className=\"flex flex-col gap-2 self-start\">\n <BaseModalTitle title={title} />\n <BaseModalDescription description={description} />\n </div>\n\n <div className=\"flex flex-col gap-2 w-full\">\n {buttons.map((button, index) => (\n <ModalButton\n key={index}\n onClick={button.onClick}\n text={button.text}\n className={button.className}\n />\n ))}\n </div>\n </ModalBody>\n );\n}\n"],"mappings":"8SAkBA,SAAgB,EAAe,CAAE,QAAO,KAAI,aAAkC,CAC5E,OACE,EAAA,EAAA,KAAC,OAAD,CAAU,KAAI,UAAW,EAAA,GAAG,EAAA,oBAAqB,EAAU,UACxD,EACI,CAAA,CASX,SAAgB,EAAqB,CACnC,cACA,YAC4B,CAC5B,OACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oCAA4B,GAAY,EAAmB,CAAA,CAW/E,SAAgB,EAAU,CACxB,SACA,QACA,cACA,WACiB,CACjB,OACE,EAAA,EAAA,MAAC,EAAA,UAAD,CAAW,OAAQ,WAAnB,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,0CAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAuB,QAAS,CAAA,EAChC,EAAA,EAAA,KAAC,EAAD,CAAmC,cAAe,CAAA,CAC9C,IAEN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,sCACZ,EAAQ,KAAK,EAAQ,KACpB,EAAA,EAAA,KAAC,EAAA,YAAD,CAEE,QAAS,EAAO,QAChB,KAAM,EAAO,KACb,UAAW,EAAO,UAClB,CAJK,EAIL,CACF,CACE,CAAA,CACI"}
|