@openhands/agent-canvas 1.16.0 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/README.windows.md +2 -2
- package/build/assets/{acp-providers-CX3Lh9gj.js → acp-providers-DrjNsPOH.js} +1 -1
- package/build/assets/active-backend-context-rZiLJRUc.js +2 -0
- package/build/assets/{agent-context-settings-DSZlXrLj.js → agent-context-settings-CJUrcBut.js} +1 -1
- package/build/assets/agent-profiles-service.api-Biieml2L.js +1 -0
- package/build/assets/agent-profiles-settings-x6RvPsq7.js +1 -0
- package/build/assets/agent-server-client-options-BikiNwTa.js +1 -0
- package/build/assets/agent-server-conversation-service.api-DYFsNHKf.js +88 -0
- package/build/assets/agent-settings-BJyovpJ_.js +1 -0
- package/build/assets/agent-settings-CpY3zObk.js +2 -0
- package/build/assets/{alert-banner-HP6mX-Vr.js → alert-banner-vARz1idS.js} +1 -1
- package/build/assets/{api-error-message-B-XdSk3b.js → api-error-message-Ve79qDcN.js} +1 -1
- package/build/assets/api-key-entry-screen-CsMuBhoP.js +1 -0
- package/build/assets/{app-settings-dbnneVaV.js → app-settings-BaJ7nfHt.js} +1 -1
- package/build/assets/automation-detail-CVoGDrKq.js +3 -0
- package/build/assets/{automation-export-D3a3of4G.js → automation-export-DxY47m3T.js} +1 -1
- package/build/assets/automation-git-sync-CRMP9Bbm.js +1 -0
- package/build/assets/automation-setup-route-072beLz1.js +3 -0
- package/build/assets/{automation-templates-BRppNh99.js → automation-templates-4C4PM8K7.js} +1 -1
- package/build/assets/automations-list-xuqTSQL4.js +1 -0
- package/build/assets/{back-nav-button-Cjl_hoxq.js → back-nav-button-B8tH0BEp.js} +1 -1
- package/build/assets/backend-form-modal-0aJmWdsa.js +1 -0
- package/build/assets/{backend-synced-settings-badge-DPkz30BE.js → backend-synced-settings-badge-B7rKWBir.js} +1 -1
- package/build/assets/{badge-BU3S0VtE.js → badge-CcGx2TaV.js} +1 -1
- package/build/assets/{base-modal-D_L0oEbG.js → base-modal-DTULovNc.js} +1 -1
- package/build/assets/bot-CLMxGFaq.js +1 -0
- package/build/assets/{brand-button-BAfk4wGP.js → brand-button-DxPO4Lf8.js} +1 -1
- package/build/assets/{browser-DSAo0tz1.js → browser-C-_qBasq.js} +2 -2
- package/build/assets/{browser-tab-C9vy56R5.js → browser-tab-DZanIw5m.js} +1 -1
- package/build/assets/{canvas-extension-page-dx1gFrfW.js → canvas-extension-page-o_cWgE9B.js} +1 -1
- package/build/assets/canvas-extensions-DSgNlCha.js +1 -0
- package/build/assets/{canvas-extensions-runtime-2_x5Ezmi.js → canvas-extensions-runtime-DdnkgJXV.js} +1 -1
- package/build/assets/{chat-send-button-MUQqCZCS.js → chat-send-button-B3SFSIg5.js} +1 -1
- package/build/assets/check-fDEfgSzj.js +1 -0
- package/build/assets/chevron-down-CFrWHqu8.js +1 -0
- package/build/assets/chevron-right-C5roOrJu.js +1 -0
- package/build/assets/circle-check-ClTzJTdb.js +1 -0
- package/build/assets/{circle-plus-check-toggle-BO_kFZt3.js → circle-plus-check-toggle-Fr-h-mbL.js} +1 -1
- package/build/assets/{cloud-funnel-analytics-CztBCCPp.js → cloud-funnel-analytics-BQanUEEC.js} +1 -1
- package/build/assets/{cog-D-MPQW6G.js → cog-VBlRo6iw.js} +1 -1
- package/build/assets/command-menu-BT3Ia5Ru.js +1 -0
- package/build/assets/commits-tab-2jhtaohl.js +1 -0
- package/build/assets/{condenser-settings-DmEOje-7.js → condenser-settings-eVKFMvap.js} +1 -1
- package/build/assets/confirmation-modal-gIFHeZt6.js +1 -0
- package/build/assets/{context-menu-list-item-I86vKcmM.js → context-menu-list-item-DDROe12Z.js} +1 -1
- package/build/assets/conversation-BnjJSFf5.js +93 -0
- package/build/assets/conversation-DZ578rOX.js +1 -0
- package/build/assets/conversation-panel-DZ578rOX.js +1 -0
- package/build/assets/{conversation-state-store-B0ImPLHO.js → conversation-state-store-D1_G_9I-.js} +1 -1
- package/build/assets/{conversation-store-Ca3ghXap.js → conversation-store-DVVfkCsk.js} +1 -1
- package/build/assets/{conversation-tab-empty-state-FIbh_lc8.js → conversation-tab-empty-state-DKlzAz5c.js} +1 -1
- package/build/assets/{copy-to-clipboard-button-Ca8iSkkA.js → copy-to-clipboard-button-B3w0X7WH.js} +1 -1
- package/build/assets/{device-verify-Bhn2e_Ye.js → device-verify-BfkCzyFB.js} +1 -1
- package/build/assets/{dropdown-classes-Bc1djN0-.js → dropdown-classes-B9kJVDIk.js} +1 -1
- package/build/assets/edit-automation-modal-BwhJ39JT.js +1 -0
- package/build/assets/empty-state-RZz0OfnY.js +1 -0
- package/build/assets/{entry.client-CqyPPjOq.js → entry.client-Ds8LVp-E.js} +2 -2
- package/build/assets/enum-filter-dropdown-C4pW0ORd.js +1 -0
- package/build/assets/{environment-switch-overlay-BmBRT7gv.js → environment-switch-overlay-P2ZAuzov.js} +1 -1
- package/build/assets/{error-state-Body8Ngd.js → error-state-B_5cgNPJ.js} +1 -1
- package/build/assets/extensions-hub-DsaUr4ca.js +1 -0
- package/build/assets/extensions-navigation-CRMZd-FE.js +1 -0
- package/build/assets/external-link-DQtv7eTh.js +1 -0
- package/build/assets/files-tab-CCgAcVdc.js +1 -0
- package/build/assets/{form-control-classes-Bkh5FGrD.js → form-control-classes-B-z85REi.js} +1 -1
- package/build/assets/get-git-path-EHrSDxTM.js +1 -0
- package/build/assets/git-repo-dropdown-D2WEQ97X.js +1 -0
- package/build/assets/{git-repo-dropdown-4ROKl2cB.js → git-repo-dropdown-DVeCUUXG.js} +1 -1
- package/build/assets/{highlighted-source-view-BFRxGT_Q.js → highlighted-source-view-DjHO3SdW.js} +1 -1
- package/build/assets/home-BorS_vdS.js +1 -0
- package/build/assets/home-aIMbHw5M.js +1 -0
- package/build/assets/home-automation-run-tooltip-CpHNFiFl.js +1 -0
- package/build/assets/home-store-DyXz0w6d.js +1 -0
- package/build/assets/hooks-service-C6dpRtZM.js +1 -0
- package/build/assets/index-home-zKFuKK2B.js +1 -0
- package/build/assets/info-CTIdjttz.js +1 -0
- package/build/assets/install-server-modal-DUiZMc8u.js +1 -0
- package/build/assets/kebab-menu-item-content-mm04SBD3.js +1 -0
- package/build/assets/{key-BmVyxs-2.js → key-CfXbJa8w.js} +1 -1
- package/build/assets/{launch-IrTDEFCs.js → launch-BSIf9KEg.js} +1 -1
- package/build/assets/list-filter-CNpqTWVY.js +1 -0
- package/build/assets/{list-todo-apgLVjMw.js → list-todo-ByXMdY4W.js} +1 -1
- package/build/assets/llm-not-configured-banner-z_QRSeV0.js +27 -0
- package/build/assets/llm-settings-B-5AHMiX.js +1 -0
- package/build/assets/llm-settings-B3SjHDmA.js +1 -0
- package/build/assets/llm-subscription-service-aDNBQ7Gq.js +1 -0
- package/build/assets/loader-circle-Dex47vVW.js +1 -0
- package/build/assets/{loading-spinner-BY9N3pOe.js → loading-spinner-DfHI77BA.js} +1 -1
- package/build/assets/manage-backends-modal-q1NdFisr.js +1 -0
- package/build/assets/manifest-8920b615.js +1 -0
- package/build/assets/{manifest-subpage-layout-CAOYzrYp.js → manifest-subpage-layout-BQQy5ipR.js} +1 -1
- package/build/assets/{map-provider-Cu3Zgumb.js → map-provider-DXvssjw9.js} +1 -1
- package/build/assets/markdown-renderer-rivLvYh-.js +8 -0
- package/build/assets/{mcp-BTs_SXfZ.js → mcp-CEXDhQWn.js} +1 -1
- package/build/assets/{mcp-marketplace-utils-AIBzzHTO.js → mcp-marketplace-utils-Cn_NIMWM.js} +1 -1
- package/build/assets/mcp-page-LGYIICMG.js +9 -0
- package/build/assets/messages-DUSeANAh.js +41 -0
- package/build/assets/{modal-body-BxZjsju9.js → modal-body-DJw4xBki.js} +1 -1
- package/build/assets/{modal-classes-C8eycCwG.js → modal-classes-Dg0ngBPO.js} +1 -1
- package/build/assets/{modal-close-button-DDzdRvCs.js → modal-close-button-B9j4nasm.js} +1 -1
- package/build/assets/{mouse-pointer-click-Co2uyaPA.js → mouse-pointer-click-DEhsSUpu.js} +1 -1
- package/build/assets/onboarding-BjFebfs5.js +1 -0
- package/build/assets/onboarding-modal-DDTjOpyd.js +1 -0
- package/build/assets/organization-service.api-Cyg1Tn03.js +1 -0
- package/build/assets/pencil-D5c47kyN.js +1 -0
- package/build/assets/pin-C7vMagvf.js +1 -0
- package/build/assets/planner-tab-D8f2Y3rn.js +1 -0
- package/build/assets/plug-CeaqeF6u.js +1 -0
- package/build/assets/plugins-management-service-Bh_pBuf-.js +1 -0
- package/build/assets/plus-B3wvU06-.js +1 -0
- package/build/assets/profiles-service.api-BbOK0EkF.js +1 -0
- package/build/assets/{providers-BhMcY5nv.js → providers-2gIIkz2N.js} +1 -1
- package/build/assets/proxy-CBgMd2zf.js +1 -0
- package/build/assets/{puzzle-JM_QaRm0.js → puzzle-DdAqbUrb.js} +1 -1
- package/build/assets/recommended-automations-launcher-YLAQTp4s.js +1 -0
- package/build/assets/refresh-cw-DEQdPCpH.js +1 -0
- package/build/assets/root-Bye_XmEL.js +2 -0
- package/build/assets/root-Cnwwzgo0.css +1 -0
- package/build/assets/root-layout-CSAwxBGM.js +2 -0
- package/build/assets/schema-field-CK0xYNbO.js +1 -0
- package/build/assets/scroll-fade-state-Dt_fx2kf.js +1 -0
- package/build/assets/sdk-section-page-Da73Rs_o.js +1 -0
- package/build/assets/secret-form-CB2VwYYg.js +1 -0
- package/build/assets/secrets-service-Cr8g8xuv.js +1 -0
- package/build/assets/{secrets-settings-B_GpxKW2.js → secrets-settings-Bh0udeKv.js} +1 -1
- package/build/assets/settings-DmyIgRxO.js +1 -0
- package/build/assets/{settings-dropdown-input-BcwylHs2.js → settings-dropdown-input-DVpyD87C.js} +1 -1
- package/build/assets/settings-index-BSJUFmjE.js +1 -0
- package/build/assets/{settings-input-Db-1g8Ql.js → settings-input-C0dd8Utu.js} +1 -1
- package/build/assets/{settings-list-classes-BzeSZbF2.js → settings-list-classes-Ds4jPBHK.js} +1 -1
- package/build/assets/{settings-modal-DfJ3tcJQ.js → settings-modal-yStgEh2o.js} +1 -1
- package/build/assets/settings-service.api-9_xdv_mh.js +1 -0
- package/build/assets/{settings-switch-CS-dJDmA.js → settings-switch-B78Khmyz.js} +1 -1
- package/build/assets/{settings-utils-UYpEdPuD.js → settings-utils-8GIIgOQL.js} +1 -1
- package/build/assets/shared-conversation-DM96X4KV.js +1 -0
- package/build/assets/shield-check-DO7wa_eu.js +1 -0
- package/build/assets/{sidebar-layout-D6fS8-Gl.js → sidebar-layout-EPfWxk11.js} +1 -1
- package/build/assets/sidebar-mobile-menu-toggle-D5GR5xT9.js +1 -0
- package/build/assets/{sidebar-nav-link-DQQcMf1A.js → sidebar-nav-link-_t4_Ef-9.js} +1 -1
- package/build/assets/{sidebar-onboarding-checklist-storage-BBkeI6Bp.js → sidebar-onboarding-checklist-storage-DbDX-Wvj.js} +1 -1
- package/build/assets/{sidebar-store-DGqHkVLw.js → sidebar-store-CSDFK0W5.js} +1 -1
- package/build/assets/{skill-card-pill-row-B27-xyig.js → skill-card-pill-row-989y15jV.js} +1 -1
- package/build/assets/{skill-filter-w__3UCEE.js → skill-filter-BBeZ4JEP.js} +1 -1
- package/build/assets/{skill-icon-badge-RQkq8wvl.js → skill-icon-badge-BDhQ-tQ0.js} +1 -1
- package/build/assets/skill-scope-Dz3kPH3P.js +1 -0
- package/build/assets/skills-plugins-e3CYGdUJ.js +1 -0
- package/build/assets/skills-settings-3e-FuHw_.js +1 -0
- package/build/assets/styled-tooltip-Pd22BIvr.js +1 -0
- package/build/assets/{task-list-tab-C5zcaktH.js → task-list-tab-3Jg8ywch.js} +1 -1
- package/build/assets/{terminal-CNElN42a.js → terminal-onXx0_Qz.js} +2 -2
- package/build/assets/toggle-switch-lwQtxDcm.js +1 -0
- package/build/assets/trash-2-ZhKuTLiz.js +1 -0
- package/build/assets/trash-B6OIe4yX.js +1 -0
- package/build/assets/triangle-alert-BajLPpQg.js +1 -0
- package/build/assets/{typography-v1KN0tzi.js → typography-HLLg_FAn.js} +1 -1
- package/build/assets/usage-tab-Cm-9j3UK.js +1 -0
- package/build/assets/use-acp-credential-form-BARcvjYE.js +1 -0
- package/build/assets/use-activate-agent-profile-BLKML6vQ.js +1 -0
- package/build/assets/use-agent-profiles-1P91KSXz.js +1 -0
- package/build/assets/{use-automation-health-E6NZi9rb.js → use-automation-health-BZkQNEA8.js} +1 -1
- package/build/assets/use-automation-permissions-B_RpvL-s.js +1 -0
- package/build/assets/{use-automations-xijQKIl9.js → use-automations-Cg0PDIZr.js} +1 -1
- package/build/assets/{use-can-manage-org-profiles-CrJP5262.js → use-can-manage-org-profiles-BbN6KfDr.js} +1 -1
- package/build/assets/use-canvas-extensions-CFUpHat6.js +1 -0
- package/build/assets/{use-cloud-current-user-id-CDfAHpPX.js → use-cloud-current-user-id-Dk0rjr63.js} +1 -1
- package/build/assets/use-config-DpafU_QP.js +1 -0
- package/build/assets/use-create-conversation-1YgmAHt-.js +1 -0
- package/build/assets/use-create-secret-D8p9ybQj.js +1 -0
- package/build/assets/{use-get-secrets-K3jmk-LH.js → use-get-secrets-CQ4b0qK8.js} +1 -1
- package/build/assets/use-is-authed-BRPjCRKM.js +1 -0
- package/build/assets/{use-launch-skill-in-chat-BYjYihBP.js → use-launch-skill-in-chat-DeYa1tFM.js} +1 -1
- package/build/assets/use-llm-configured-DGm8FiRR.js +1 -0
- package/build/assets/use-llm-profiles-BTTtpW4z.js +1 -0
- package/build/assets/use-manifest-capabilities-AOWGcu0j.js +1 -0
- package/build/assets/use-onboarding-completion-CoINurkm.js +1 -0
- package/build/assets/use-pinned-home-route-D6krwXjy.js +1 -0
- package/build/assets/use-plugins-marketplace-mLsIDhBv.js +1 -0
- package/build/assets/use-save-agent-profile-CxyO9YG-.js +1 -0
- package/build/assets/{use-save-settings-DYqkKv7T.js → use-save-settings-3U5K9-8x.js} +1 -1
- package/build/assets/use-settings-Dn00UISA.js +1 -0
- package/build/assets/use-settings-nav-items-vrjxTqcu.js +16 -0
- package/build/assets/use-tracking-B9prBsrq.js +3 -0
- package/build/assets/{use-user-conversation-B9Gebw_g.js → use-user-conversation-ZWlXtbZb.js} +1 -1
- package/build/assets/{useInfiniteQuery-C926xzY4.js → useInfiniteQuery-BzrRqjLg.js} +1 -1
- package/build/assets/{useMutation-B-qc391N.js → useMutation-CJuK90oc.js} +1 -1
- package/build/assets/{useQueries-DlbhlH9I.js → useQueries-CykmpT-a.js} +1 -1
- package/build/assets/{useQuery-BSTgq1rl.js → useQuery-S6j94er1.js} +1 -1
- package/build/assets/utils-BOco8mxR.js +1 -0
- package/build/assets/{vendor~conversation-panel~conversation-C8Fn4XOf.js → vendor~conversation-panel~conversation-4eJ0tml3.js} +1 -1
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~b0x1wrp2-Z0lly3FE.js +2 -0
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-BfkNGovw.js +185 -0
- package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-rfV8mQ9m.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-DnDoaYNi.js} +1 -1
- package/build/assets/{vendor~index-home~home~conversation-panel~conversation-hWywRBaR.js → vendor~index-home~home~conversation-panel~conversation-CSFLzmTN.js} +1 -1
- package/build/assets/vendor~root-layout-n8XCEXG8.js +1 -0
- package/build/assets/{vendor~root-layout~conversation-panel~conversation-BMbMgaGu.js → vendor~root-layout~conversation-panel~conversation-3Idg1_U3.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-BWir3rJs.js → vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-DkPlXWl9.js} +1 -1
- package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation-j5MFqfSy.js → vendor~root-layout~index-home~home~conversation-panel~conversation-DgQ564nC.js} +1 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-CxhwKuAd.js +1 -0
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~nj1hli3r-DP9wmsjo.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~inibp4qe-CnsDDzeE.js} +1 -1
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iyia17eu-CV850oio.js +1 -0
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-CUmIwQCN.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-BPjI-atc.js} +12 -6
- package/build/assets/{verification-settings-gw_q6vkL.js → verification-settings-u2POabjH.js} +1 -1
- package/build/assets/{wrench-CUEI1krB.js → wrench-CkgI4rxA.js} +1 -1
- package/build/assets/x-By6qCmtY.js +1 -0
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +73 -20
- package/build/locales/ca/openhands.json +73 -20
- package/build/locales/de/openhands.json +73 -20
- package/build/locales/en/openhands.json +73 -20
- package/build/locales/es/openhands.json +73 -20
- package/build/locales/fr/openhands.json +73 -20
- package/build/locales/it/openhands.json +73 -20
- package/build/locales/ja/openhands.json +73 -20
- package/build/locales/ko-KR/openhands.json +73 -20
- package/build/locales/no/openhands.json +73 -20
- package/build/locales/pt/openhands.json +73 -20
- package/build/locales/tr/openhands.json +73 -20
- package/build/locales/uk/openhands.json +73 -20
- package/build/locales/zh-CN/openhands.json +73 -20
- package/build/locales/zh-TW/openhands.json +73 -20
- package/config/defaults.json +3 -3
- package/dist/api/agent-server-adapter.cjs +3 -3
- package/dist/api/agent-server-adapter.cjs.map +1 -1
- package/dist/api/agent-server-adapter.d.ts +72 -12
- package/dist/api/agent-server-adapter.js +234 -132
- package/dist/api/agent-server-adapter.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 +6 -0
- package/dist/api/agent-server-config.js +6 -3
- package/dist/api/agent-server-config.js.map +1 -1
- package/dist/api/automation-service/automation-service.api.cjs +1 -1
- package/dist/api/automation-service/automation-service.api.cjs.map +1 -1
- package/dist/api/automation-service/automation-service.api.d.ts +2 -2
- package/dist/api/automation-service/automation-service.api.js +7 -7
- package/dist/api/automation-service/automation-service.api.js.map +1 -1
- package/dist/api/cloud/provider-connections-service.api.cjs +2 -0
- package/dist/api/cloud/provider-connections-service.api.cjs.map +1 -0
- package/dist/api/cloud/provider-connections-service.api.d.ts +5 -0
- package/dist/api/cloud/provider-connections-service.api.js +50 -0
- package/dist/api/cloud/provider-connections-service.api.js.map +1 -0
- package/dist/api/cloud/skills-service.api.cjs +1 -1
- package/dist/api/cloud/skills-service.api.cjs.map +1 -1
- package/dist/api/cloud/skills-service.api.d.ts +10 -0
- package/dist/api/cloud/skills-service.api.js +11 -1
- package/dist/api/cloud/skills-service.api.js.map +1 -1
- package/dist/api/conversation-metadata-store.cjs +1 -1
- package/dist/api/conversation-metadata-store.cjs.map +1 -1
- package/dist/api/conversation-metadata-store.d.ts +24 -0
- package/dist/api/conversation-metadata-store.js +10 -2
- package/dist/api/conversation-metadata-store.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.d.ts +20 -0
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +126 -77
- package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
- package/dist/api/hooks-service.cjs +2 -0
- package/dist/api/hooks-service.cjs.map +1 -0
- package/dist/api/hooks-service.d.ts +13 -0
- package/dist/api/hooks-service.js +20 -0
- package/dist/api/hooks-service.js.map +1 -0
- package/dist/api/provider-connections-service/provider-connections-service.api.cjs +1 -1
- package/dist/api/provider-connections-service/provider-connections-service.api.cjs.map +1 -1
- package/dist/api/provider-connections-service/provider-connections-service.api.js +25 -16
- package/dist/api/provider-connections-service/provider-connections-service.api.js.map +1 -1
- package/dist/api/settings-service/settings-service.api.cjs +1 -1
- package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
- package/dist/api/settings-service/settings-service.api.d.ts +2 -0
- package/dist/api/settings-service/settings-service.api.js +18 -10
- package/dist/api/settings-service/settings-service.api.js.map +1 -1
- package/dist/api/skills-service.cjs +1 -1
- package/dist/api/skills-service.cjs.map +1 -1
- package/dist/api/skills-service.d.ts +7 -0
- package/dist/api/skills-service.js +11 -8
- package/dist/api/skills-service.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/critic-result-display.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/critic-result-display.js +5 -5
- package/dist/components/conversation-events/chat/event-message-components/finish-event-message.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/finish-event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/finish-event-message.js +2 -1
- package/dist/components/conversation-events/chat/event-message-components/finish-event-message.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.d.ts +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.js +28 -28
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/thought-event-message.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/thought-event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/thought-event-message.js +2 -1
- package/dist/components/conversation-events/chat/event-message-components/thought-event-message.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.d.ts +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js +37 -37
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message.cjs +2 -2
- package/dist/components/conversation-events/chat/event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message.js +79 -70
- package/dist/components/conversation-events/chat/event-message.js.map +1 -1
- package/dist/components/conversation-events/chat/messages.cjs +1 -1
- package/dist/components/conversation-events/chat/messages.cjs.map +1 -1
- package/dist/components/conversation-events/chat/messages.js +28 -27
- package/dist/components/conversation-events/chat/messages.js.map +1 -1
- package/dist/components/features/automations/automation-card.cjs +1 -1
- package/dist/components/features/automations/automation-card.cjs.map +1 -1
- package/dist/components/features/automations/automation-card.js +100 -94
- package/dist/components/features/automations/automation-card.js.map +1 -1
- package/dist/components/features/automations/automation-list-row.cjs +1 -1
- package/dist/components/features/automations/automation-list-row.cjs.map +1 -1
- package/dist/components/features/automations/automation-list-row.js +88 -77
- package/dist/components/features/automations/automation-list-row.js.map +1 -1
- package/dist/components/features/automations/detail/detail-header.d.ts +3 -1
- package/dist/components/features/automations/detail/run-status-badge.cjs +1 -1
- package/dist/components/features/automations/detail/run-status-badge.cjs.map +1 -1
- package/dist/components/features/automations/detail/run-status-badge.d.ts +2 -2
- package/dist/components/features/automations/detail/run-status-badge.js +82 -53
- package/dist/components/features/automations/detail/run-status-badge.js.map +1 -1
- package/dist/components/features/automations/kebab-menu.cjs +1 -1
- package/dist/components/features/automations/kebab-menu.cjs.map +1 -1
- package/dist/components/features/automations/kebab-menu.js +9 -5
- package/dist/components/features/automations/kebab-menu.js.map +1 -1
- package/dist/components/features/automations/recommended-automations-launcher.cjs +1 -1
- package/dist/components/features/automations/recommended-automations-launcher.cjs.map +1 -1
- package/dist/components/features/automations/recommended-automations-launcher.js +12 -12
- package/dist/components/features/automations/recommended-automations-launcher.js.map +1 -1
- package/dist/components/features/automations/recommended-automations-section.cjs +1 -1
- package/dist/components/features/automations/recommended-automations-section.js +9 -9
- 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 +133 -122
- package/dist/components/features/backends/backend-selector.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 +29 -29
- 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.js +4 -4
- package/dist/components/features/chat/chat-interface.cjs +2 -2
- package/dist/components/features/chat/chat-interface.cjs.map +1 -1
- package/dist/components/features/chat/chat-interface.js +137 -137
- package/dist/components/features/chat/chat-interface.js.map +1 -1
- package/dist/components/features/chat/chat-message.cjs +1 -1
- package/dist/components/features/chat/chat-message.cjs.map +1 -1
- package/dist/components/features/chat/chat-message.d.ts +2 -1
- package/dist/components/features/chat/chat-message.js +88 -79
- package/dist/components/features/chat/chat-message.js.map +1 -1
- package/dist/components/features/chat/components/context-window-meter.cjs +1 -1
- package/dist/components/features/chat/components/context-window-meter.js +4 -4
- package/dist/components/features/chat/confirmation-mode-enabled.cjs +1 -1
- package/dist/components/features/chat/confirmation-mode-enabled.js +4 -4
- package/dist/components/features/chat/generic-event-message.cjs +1 -1
- package/dist/components/features/chat/generic-event-message.cjs.map +1 -1
- package/dist/components/features/chat/generic-event-message.d.ts +2 -1
- package/dist/components/features/chat/generic-event-message.js +41 -22
- package/dist/components/features/chat/generic-event-message.js.map +1 -1
- package/dist/components/features/chat/interactive-chat-box.cjs +1 -1
- package/dist/components/features/chat/interactive-chat-box.cjs.map +1 -1
- package/dist/components/features/chat/interactive-chat-box.js +20 -19
- package/dist/components/features/chat/interactive-chat-box.js.map +1 -1
- package/dist/components/features/conversation/conversation-overview-git-section.cjs +1 -1
- package/dist/components/features/conversation/conversation-overview-git-section.js +4 -4
- package/dist/components/features/conversation/conversation-overview-skills-panel.cjs +1 -1
- package/dist/components/features/conversation/conversation-overview-skills-panel.js +4 -4
- 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 +77 -78
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js +88 -88
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js.map +1 -1
- package/dist/components/features/conversation-panel/advanced-conversation-options-modal.cjs +2 -0
- package/dist/components/features/conversation-panel/advanced-conversation-options-modal.cjs.map +1 -0
- package/dist/components/features/conversation-panel/advanced-conversation-options-modal.d.ts +21 -0
- package/dist/components/features/conversation-panel/advanced-conversation-options-modal.js +239 -0
- package/dist/components/features/conversation-panel/advanced-conversation-options-modal.js.map +1 -0
- package/dist/components/features/conversation-panel/conversation-active-tag-filters.cjs +2 -0
- package/dist/components/features/conversation-panel/conversation-active-tag-filters.cjs.map +1 -0
- package/dist/components/features/conversation-panel/conversation-active-tag-filters.d.ts +28 -0
- package/dist/components/features/conversation-panel/conversation-active-tag-filters.js +69 -0
- package/dist/components/features/conversation-panel/conversation-active-tag-filters.js.map +1 -0
- 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.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js +19 -18
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.js +91 -80
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.js +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.d.ts +7 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.js +87 -81
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.js +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.js +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-layouts-menu.cjs +2 -0
- package/dist/components/features/conversation-panel/conversation-layouts-menu.cjs.map +1 -0
- package/dist/components/features/conversation-panel/conversation-layouts-menu.d.ts +29 -0
- package/dist/components/features/conversation-panel/conversation-layouts-menu.js +177 -0
- package/dist/components/features/conversation-panel/conversation-layouts-menu.js.map +1 -0
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.d.ts +37 -0
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js +85 -45
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.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 +296 -290
- package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
- package/dist/components/features/conversation-panel/edit-conversation-tags-modal.cjs +2 -0
- package/dist/components/features/conversation-panel/edit-conversation-tags-modal.cjs.map +1 -0
- package/dist/components/features/conversation-panel/edit-conversation-tags-modal.d.ts +22 -0
- package/dist/components/features/conversation-panel/edit-conversation-tags-modal.js +153 -0
- package/dist/components/features/conversation-panel/edit-conversation-tags-modal.js.map +1 -0
- package/dist/components/features/conversation-panel/hide-older-conversations-row.cjs +2 -0
- package/dist/components/features/conversation-panel/hide-older-conversations-row.cjs.map +1 -0
- package/dist/components/features/conversation-panel/hide-older-conversations-row.d.ts +6 -0
- package/dist/components/features/conversation-panel/hide-older-conversations-row.js +65 -0
- package/dist/components/features/conversation-panel/hide-older-conversations-row.js.map +1 -0
- package/dist/components/features/conversation-panel/menu-row.cjs +1 -1
- package/dist/components/features/conversation-panel/menu-row.cjs.map +1 -1
- package/dist/components/features/conversation-panel/menu-row.d.ts +11 -1
- package/dist/components/features/conversation-panel/menu-row.js +27 -16
- package/dist/components/features/conversation-panel/menu-row.js.map +1 -1
- package/dist/components/features/home/featured-automations/automation-health-indicator.cjs +1 -1
- package/dist/components/features/home/featured-automations/automation-health-indicator.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/automation-health-indicator.js +1 -1
- package/dist/components/features/home/featured-automations/automation-health-indicator.js.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.d.ts +4 -3
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js +22 -25
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.d.ts +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js +15 -15
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-health.cjs +1 -1
- package/dist/components/features/home/featured-automations/automation-run-health.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-health.d.ts +5 -3
- package/dist/components/features/home/featured-automations/automation-run-health.js +30 -23
- package/dist/components/features/home/featured-automations/automation-run-health.js.map +1 -1
- package/dist/components/features/home/featured-automations/home-automation-activity.d.ts +3 -2
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs +1 -1
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.d.ts +1 -1
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js +42 -42
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js.map +1 -1
- package/dist/components/features/manifest/manifest-form-field.d.ts +3 -1
- package/dist/components/features/manifest/manifest-review-step.d.ts +3 -1
- package/dist/components/features/settings/cloud-settings-link.cjs +1 -1
- package/dist/components/features/settings/cloud-settings-link.cjs.map +1 -1
- package/dist/components/features/settings/cloud-settings-link.js +5 -3
- package/dist/components/features/settings/cloud-settings-link.js.map +1 -1
- package/dist/components/features/settings/integrations-settings-link.cjs +1 -1
- package/dist/components/features/settings/integrations-settings-link.cjs.map +1 -1
- package/dist/components/features/settings/integrations-settings-link.d.ts +3 -1
- package/dist/components/features/settings/integrations-settings-link.js +20 -17
- package/dist/components/features/settings/integrations-settings-link.js.map +1 -1
- 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.js +1 -1
- package/dist/components/features/settings/llm-profiles/profiles-body.d.ts +2 -2
- package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs +1 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs.map +1 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.d.ts +8 -7
- package/dist/components/features/settings/sdk-settings/sdk-section-page.js +172 -142
- package/dist/components/features/settings/sdk-settings/sdk-section-page.js.map +1 -1
- package/dist/components/features/settings/secrets-settings/secret-form.cjs +1 -1
- package/dist/components/features/settings/secrets-settings/secret-form.cjs.map +1 -1
- package/dist/components/features/settings/secrets-settings/secret-form.js +38 -25
- package/dist/components/features/settings/secrets-settings/secret-form.js.map +1 -1
- package/dist/components/features/settings/settings-dropdown-input.cjs +1 -1
- package/dist/components/features/settings/settings-dropdown-input.js +6 -6
- package/dist/components/features/sidebar/sidebar-rail-body.cjs +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.d.ts +3 -1
- package/dist/components/features/sidebar/sidebar-rail-body.js +156 -139
- package/dist/components/features/sidebar/sidebar-rail-body.js.map +1 -1
- package/dist/components/features/sidebar/sidebar.cjs +1 -1
- package/dist/components/features/sidebar/sidebar.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar.js +44 -43
- package/dist/components/features/sidebar/sidebar.js.map +1 -1
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.cjs +1 -1
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.js +3 -3
- 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 +3 -3
- package/dist/components/features/skills/extensions-navigation.js.map +1 -1
- package/dist/components/shared/buttons/styled-tooltip.cjs +1 -1
- package/dist/components/shared/buttons/styled-tooltip.cjs.map +1 -1
- package/dist/components/shared/buttons/styled-tooltip.d.ts +2 -1
- package/dist/components/shared/buttons/styled-tooltip.js +2 -1
- package/dist/components/shared/buttons/styled-tooltip.js.map +1 -1
- 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.d.ts +5 -1
- package/dist/components/shared/filters/enum-filter-dropdown.js +14 -14
- package/dist/components/shared/filters/enum-filter-dropdown.js.map +1 -1
- package/dist/components/shared/modals/confirmation-modal.cjs +1 -1
- package/dist/components/shared/modals/confirmation-modal.cjs.map +1 -1
- package/dist/components/shared/modals/confirmation-modal.d.ts +2 -1
- package/dist/components/shared/modals/confirmation-modal.js +8 -8
- package/dist/components/shared/modals/confirmation-modal.js.map +1 -1
- package/dist/components/shared/modals/settings/model-selector.cjs +1 -1
- package/dist/components/shared/modals/settings/model-selector.js +27 -27
- package/dist/config/defaults.cjs +1 -1
- package/dist/config/defaults.cjs.map +1 -1
- package/dist/config/defaults.js +3 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/constants/settings-nav.d.ts +8 -0
- package/dist/contexts/conversation-websocket-context.cjs +3 -3
- package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
- package/dist/contexts/conversation-websocket-context.d.ts +5 -0
- package/dist/contexts/conversation-websocket-context.js +194 -198
- package/dist/contexts/conversation-websocket-context.js.map +1 -1
- package/dist/contexts/websocket-provider-wrapper.cjs +1 -1
- package/dist/contexts/websocket-provider-wrapper.cjs.map +1 -1
- package/dist/contexts/websocket-provider-wrapper.js +31 -15
- package/dist/contexts/websocket-provider-wrapper.js.map +1 -1
- package/dist/hooks/chat/record-model-switch-message.cjs +1 -1
- package/dist/hooks/chat/record-model-switch-message.cjs.map +1 -1
- package/dist/hooks/chat/record-model-switch-message.d.ts +31 -0
- package/dist/hooks/chat/record-model-switch-message.js +25 -12
- package/dist/hooks/chat/record-model-switch-message.js.map +1 -1
- package/dist/hooks/chat/use-plan-mode-interceptor.cjs +2 -0
- package/dist/hooks/chat/use-plan-mode-interceptor.cjs.map +1 -0
- package/dist/hooks/chat/use-plan-mode-interceptor.d.ts +16 -0
- package/dist/hooks/chat/use-plan-mode-interceptor.js +43 -0
- package/dist/hooks/chat/use-plan-mode-interceptor.js.map +1 -0
- package/dist/hooks/mutation/use-create-conversation.cjs +1 -1
- package/dist/hooks/mutation/use-create-conversation.cjs.map +1 -1
- package/dist/hooks/mutation/use-create-conversation.js +5 -1
- package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
- package/dist/hooks/mutation/use-read-conversation-file.cjs +1 -1
- package/dist/hooks/mutation/use-read-conversation-file.cjs.map +1 -1
- package/dist/hooks/mutation/use-read-conversation-file.js +11 -4
- package/dist/hooks/mutation/use-read-conversation-file.js.map +1 -1
- package/dist/hooks/mutation/use-save-settings.cjs +1 -1
- package/dist/hooks/mutation/use-save-settings.js +3 -3
- package/dist/hooks/mutation/use-switch-llm-profile.cjs +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile.cjs.map +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile.js +13 -25
- package/dist/hooks/mutation/use-switch-llm-profile.js.map +1 -1
- package/dist/hooks/mutation/use-update-conversation-tags.cjs +2 -0
- package/dist/hooks/mutation/use-update-conversation-tags.cjs.map +1 -0
- package/dist/hooks/mutation/use-update-conversation-tags.d.ts +8 -0
- package/dist/hooks/mutation/use-update-conversation-tags.js +45 -0
- package/dist/hooks/mutation/use-update-conversation-tags.js.map +1 -0
- package/dist/hooks/query/query-keys.cjs +1 -1
- package/dist/hooks/query/query-keys.cjs.map +1 -1
- package/dist/hooks/query/query-keys.d.ts +6 -0
- package/dist/hooks/query/query-keys.js +2 -2
- package/dist/hooks/query/query-keys.js.map +1 -1
- package/dist/hooks/query/use-automation-sdk-version.cjs +1 -1
- package/dist/hooks/query/use-automation-sdk-version.cjs.map +1 -1
- package/dist/hooks/query/use-automation-sdk-version.d.ts +0 -1
- package/dist/hooks/query/use-automation-sdk-version.js +30 -55
- package/dist/hooks/query/use-automation-sdk-version.js.map +1 -1
- package/dist/hooks/query/use-conversation-skills.cjs +1 -1
- package/dist/hooks/query/use-conversation-skills.cjs.map +1 -1
- package/dist/hooks/query/use-conversation-skills.d.ts +14 -5
- package/dist/hooks/query/use-conversation-skills.js +20 -4
- package/dist/hooks/query/use-conversation-skills.js.map +1 -1
- package/dist/hooks/query/use-provider-connections.cjs +1 -1
- package/dist/hooks/query/use-provider-connections.cjs.map +1 -1
- package/dist/hooks/query/use-provider-connections.d.ts +6 -3
- package/dist/hooks/query/use-provider-connections.js +7 -3
- package/dist/hooks/query/use-provider-connections.js.map +1 -1
- package/dist/hooks/query/use-sub-conversations.cjs +1 -1
- package/dist/hooks/query/use-sub-conversations.cjs.map +1 -1
- package/dist/hooks/query/use-sub-conversations.js +16 -16
- package/dist/hooks/query/use-sub-conversations.js.map +1 -1
- package/dist/hooks/use-acp-model-context.cjs +1 -1
- package/dist/hooks/use-acp-model-context.js +3 -3
- package/dist/hooks/use-agent-state.cjs +1 -1
- package/dist/hooks/use-agent-state.cjs.map +1 -1
- package/dist/hooks/use-agent-state.d.ts +17 -1
- package/dist/hooks/use-agent-state.js +19 -9
- package/dist/hooks/use-agent-state.js.map +1 -1
- package/dist/hooks/use-automation-permissions.cjs +2 -0
- package/dist/hooks/use-automation-permissions.cjs.map +1 -0
- package/dist/hooks/use-automation-permissions.d.ts +43 -0
- package/dist/hooks/use-automation-permissions.js +52 -0
- package/dist/hooks/use-automation-permissions.js.map +1 -0
- package/dist/hooks/use-chat-input-model-state.cjs +1 -1
- package/dist/hooks/use-chat-input-model-state.js +3 -3
- package/dist/hooks/use-handle-plan-click.cjs +1 -1
- package/dist/hooks/use-handle-plan-click.cjs.map +1 -1
- package/dist/hooks/use-handle-plan-click.d.ts +3 -1
- package/dist/hooks/use-handle-plan-click.js +85 -26
- package/dist/hooks/use-handle-plan-click.js.map +1 -1
- package/dist/hooks/use-home-automation-actions.cjs +1 -1
- package/dist/hooks/use-home-automation-actions.cjs.map +1 -1
- package/dist/hooks/use-home-automation-actions.js +1 -0
- package/dist/hooks/use-home-automation-actions.js.map +1 -1
- package/dist/hooks/use-llm-configured.cjs +1 -1
- package/dist/hooks/use-llm-configured.js +3 -3
- package/dist/hooks/use-manifest-preflight.d.ts +1 -1
- package/dist/hooks/use-unified-websocket-status.cjs +1 -1
- package/dist/hooks/use-unified-websocket-status.cjs.map +1 -1
- package/dist/hooks/use-unified-websocket-status.d.ts +7 -0
- package/dist/hooks/use-unified-websocket-status.js +5 -1
- package/dist/hooks/use-unified-websocket-status.js.map +1 -1
- package/dist/i18n/declaration.cjs +1 -1
- package/dist/i18n/declaration.cjs.map +1 -1
- package/dist/i18n/declaration.d.ts +65 -12
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +2 -2
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +1196 -295
- package/dist/i18n/translation.js.map +1 -1
- package/dist/locales/ar/openhands.json +73 -20
- package/dist/locales/ca/openhands.json +73 -20
- package/dist/locales/de/openhands.json +73 -20
- package/dist/locales/en/openhands.json +73 -20
- package/dist/locales/es/openhands.json +73 -20
- package/dist/locales/fr/openhands.json +73 -20
- package/dist/locales/it/openhands.json +73 -20
- package/dist/locales/ja/openhands.json +73 -20
- package/dist/locales/ko-KR/openhands.json +73 -20
- package/dist/locales/no/openhands.json +73 -20
- package/dist/locales/pt/openhands.json +73 -20
- package/dist/locales/tr/openhands.json +73 -20
- package/dist/locales/uk/openhands.json +73 -20
- package/dist/locales/zh-CN/openhands.json +73 -20
- package/dist/locales/zh-TW/openhands.json +73 -20
- package/dist/manifests/automation-insights.cjs.map +1 -1
- package/dist/manifests/automation-insights.d.ts +10 -2
- package/dist/manifests/automation-insights.js.map +1 -1
- package/dist/manifests/automation-setup.cjs +1 -1
- package/dist/manifests/automation-setup.cjs.map +1 -1
- package/dist/manifests/automation-setup.d.ts +9 -16
- package/dist/manifests/automation-setup.js +17 -7
- package/dist/manifests/automation-setup.js.map +1 -1
- package/dist/manifests/manifest-actions.d.ts +1 -1
- package/dist/manifests/manifest-capabilities.d.ts +3 -1
- package/dist/manifests/manifest-local-validation.cjs +2 -0
- package/dist/manifests/manifest-local-validation.cjs.map +1 -0
- package/dist/manifests/manifest-local-validation.d.ts +15 -11
- package/dist/manifests/manifest-local-validation.js +8 -0
- package/dist/manifests/manifest-local-validation.js.map +1 -0
- package/dist/manifests/manifest-template.cjs +2 -0
- package/dist/manifests/manifest-template.cjs.map +1 -0
- package/dist/manifests/manifest-template.d.ts +4 -4
- package/dist/manifests/manifest-template.js +12 -0
- package/dist/manifests/manifest-template.js.map +1 -0
- package/dist/manifests/manifest-validation.cjs +1 -1
- package/dist/manifests/manifest-validation.cjs.map +1 -1
- package/dist/manifests/manifest-validation.js +106 -28
- package/dist/manifests/manifest-validation.js.map +1 -1
- package/dist/manifests/types.cjs.map +1 -1
- package/dist/manifests/types.d.ts +39 -4
- package/dist/manifests/types.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.cjs +8 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.js +221 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js +22 -20
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/interface.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/interface.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/interface.js +2 -1
- package/dist/node_modules/@openhands/extensions/automations/interface.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js +24 -5
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js.map +1 -1
- package/dist/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs +1 -1
- package/dist/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.js +21 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shrink.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shrink.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shrink.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shrink.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.js +43 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tags.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tags.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tags.js +22 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tags.js.map +1 -0
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +4 -4
- package/dist/package.js.map +1 -1
- package/dist/routes/agent-settings.d.ts +2 -0
- package/dist/routes/app-settings.cjs +1 -1
- package/dist/routes/app-settings.js +5 -5
- package/dist/routes/llm-settings.cjs +1 -1
- package/dist/routes/llm-settings.cjs.map +1 -1
- package/dist/routes/llm-settings.d.ts +3 -1
- package/dist/routes/llm-settings.js +88 -87
- package/dist/routes/llm-settings.js.map +1 -1
- package/dist/routes/planner-tab.cjs +1 -1
- package/dist/routes/planner-tab.cjs.map +1 -1
- package/dist/routes/planner-tab.js +44 -28
- package/dist/routes/planner-tab.js.map +1 -1
- package/dist/services/telemetry.cjs +1 -1
- package/dist/services/telemetry.cjs.map +1 -1
- package/dist/services/telemetry.d.ts +5 -0
- package/dist/services/telemetry.js +122 -115
- package/dist/services/telemetry.js.map +1 -1
- package/dist/stores/conversation-panel-preferences-store.cjs +1 -1
- package/dist/stores/conversation-panel-preferences-store.cjs.map +1 -1
- package/dist/stores/conversation-panel-preferences-store.d.ts +32 -5
- package/dist/stores/conversation-panel-preferences-store.js +29 -12
- package/dist/stores/conversation-panel-preferences-store.js.map +1 -1
- package/dist/stores/conversation-state-store.cjs +1 -1
- package/dist/stores/conversation-state-store.cjs.map +1 -1
- package/dist/stores/conversation-state-store.d.ts +9 -3
- package/dist/stores/conversation-state-store.js +6 -3
- package/dist/stores/conversation-state-store.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 +2 -0
- package/dist/stores/conversation-store.js +3 -0
- package/dist/stores/conversation-store.js.map +1 -1
- package/dist/stores/model-store.cjs +1 -1
- package/dist/stores/model-store.cjs.map +1 -1
- package/dist/stores/model-store.d.ts +7 -0
- package/dist/stores/model-store.js +4 -0
- package/dist/stores/model-store.js.map +1 -1
- package/dist/types/automation.cjs.map +1 -1
- package/dist/types/automation.d.ts +46 -1
- package/dist/types/automation.js.map +1 -1
- package/dist/ui/context-menu.d.ts +1 -1
- package/dist/ui/toggle-switch.cjs +1 -1
- package/dist/ui/toggle-switch.cjs.map +1 -1
- package/dist/ui/toggle-switch.d.ts +4 -1
- package/dist/ui/toggle-switch.js +4 -3
- package/dist/ui/toggle-switch.js.map +1 -1
- package/dist/utils/automation-catalog.cjs +1 -1
- package/dist/utils/automation-catalog.cjs.map +1 -1
- package/dist/utils/automation-catalog.d.ts +12 -1
- package/dist/utils/automation-catalog.js +42 -12
- package/dist/utils/automation-catalog.js.map +1 -1
- package/dist/utils/automation-run-display.cjs +2 -0
- package/dist/utils/automation-run-display.cjs.map +1 -0
- package/dist/utils/automation-run-display.d.ts +20 -0
- package/dist/utils/automation-run-display.js +85 -0
- package/dist/utils/automation-run-display.js.map +1 -0
- package/dist/utils/automation-schedule.cjs +1 -1
- package/dist/utils/automation-schedule.cjs.map +1 -1
- package/dist/utils/automation-schedule.d.ts +16 -0
- package/dist/utils/automation-schedule.js +2 -0
- package/dist/utils/automation-schedule.js.map +1 -1
- package/dist/utils/constants.cjs +1 -1
- package/dist/utils/constants.cjs.map +1 -1
- package/dist/utils/constants.d.ts +4 -0
- package/dist/utils/constants.js +23 -3
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/format-event-timestamp.cjs +2 -0
- package/dist/utils/format-event-timestamp.cjs.map +1 -0
- package/dist/utils/format-event-timestamp.d.ts +1 -0
- package/dist/utils/format-event-timestamp.js +13 -0
- package/dist/utils/format-event-timestamp.js.map +1 -0
- package/dist/utils/git-diff-stats.cjs +2 -2
- package/dist/utils/git-diff-stats.cjs.map +1 -1
- package/dist/utils/git-diff-stats.d.ts +4 -0
- package/dist/utils/git-diff-stats.js +12 -2
- package/dist/utils/git-diff-stats.js.map +1 -1
- package/dist/utils/plan-file.cjs +4 -0
- package/dist/utils/plan-file.cjs.map +1 -0
- package/dist/utils/plan-file.d.ts +18 -0
- package/dist/utils/plan-file.js +58 -0
- package/dist/utils/plan-file.js.map +1 -0
- package/dist/utils/recommended-automation-rail.cjs +1 -1
- package/dist/utils/recommended-automation-rail.cjs.map +1 -1
- package/dist/utils/recommended-automation-rail.js +1 -0
- package/dist/utils/recommended-automation-rail.js.map +1 -1
- package/dist/utils/scroll-fade-state.cjs +1 -1
- package/dist/utils/scroll-fade-state.cjs.map +1 -1
- package/dist/utils/scroll-fade-state.d.ts +6 -0
- package/dist/utils/scroll-fade-state.js +8 -1
- package/dist/utils/scroll-fade-state.js.map +1 -1
- package/dist/utils/sdk-settings-schema.cjs +1 -1
- package/dist/utils/sdk-settings-schema.cjs.map +1 -1
- package/dist/utils/sdk-settings-schema.d.ts +1 -0
- package/dist/utils/sdk-settings-schema.js +25 -22
- package/dist/utils/sdk-settings-schema.js.map +1 -1
- package/dist/utils/utils.cjs +1 -1
- package/dist/utils/utils.cjs.map +1 -1
- package/dist/utils/utils.js +11 -11
- package/dist/utils/utils.js.map +1 -1
- package/package.json +4 -4
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/dev-safe.mjs +1 -1
- package/scripts/dev-with-automation.mjs +1 -1
- package/scripts/static-server.mjs +33 -1
- package/build/assets/active-backend-context-CrHTlgvN.js +0 -2
- package/build/assets/agent-profiles-settings-Dzgb7G9z.js +0 -1
- package/build/assets/agent-server-conversation-service.api-tnqNjbpE.js +0 -86
- package/build/assets/agent-settings-DLtsqaOs.js +0 -2
- package/build/assets/agent-settings-fFvR-XC2.js +0 -1
- package/build/assets/api-key-entry-screen-qTzrmJcr.js +0 -1
- package/build/assets/automation-detail-BmwlCUAB.js +0 -3
- package/build/assets/automation-git-sync-CprN5DcU.js +0 -1
- package/build/assets/automation-setup-route-C40kXjMY.js +0 -1
- package/build/assets/automations-list-DuNcRawl.js +0 -1
- package/build/assets/backend-form-modal-lhGwzXFI.js +0 -1
- package/build/assets/bot-dMYHVfYM.js +0 -1
- package/build/assets/canvas-extensions-8A-XhpgP.js +0 -1
- package/build/assets/check-CS0vmpQQ.js +0 -1
- package/build/assets/chevron-down-e1QBpjVy.js +0 -1
- package/build/assets/chevron-right-ZG4R5G4Q.js +0 -1
- package/build/assets/circle-check-DzWLNsbE.js +0 -1
- package/build/assets/command-menu--UIlGL72.js +0 -1
- package/build/assets/commits-tab-AnZwLvh-.js +0 -1
- package/build/assets/confirmation-modal-Dv1ktp8K.js +0 -1
- package/build/assets/conversation-BbGrAO4Z.js +0 -93
- package/build/assets/conversation-mYT6NAoj.js +0 -1
- package/build/assets/conversation-panel-mYT6NAoj.js +0 -1
- package/build/assets/edit-automation-modal-DadGbJ2u.js +0 -1
- package/build/assets/empty-state-BoGVDecT.js +0 -1
- package/build/assets/enum-filter-dropdown-Bgca129f.js +0 -1
- package/build/assets/extensions-hub-CcDqq_vR.js +0 -1
- package/build/assets/extensions-navigation-Cr4yzYk4.js +0 -1
- package/build/assets/external-link-DKUlnCQV.js +0 -1
- package/build/assets/files-tab-D4o2VyE_.js +0 -1
- package/build/assets/get-git-path-ChKDVHZp.js +0 -1
- package/build/assets/git-repo-dropdown-BkqzkMmM.js +0 -1
- package/build/assets/home-ChpSuepX.js +0 -1
- package/build/assets/home-DIsB440S.js +0 -1
- package/build/assets/home-automation-run-tooltip-BVNDWjAH.js +0 -1
- package/build/assets/home-store-CY9Ej0ux.js +0 -1
- package/build/assets/index-home-BdlrFIif.js +0 -1
- package/build/assets/info-B6RQawoW.js +0 -1
- package/build/assets/install-server-modal-Dpy89p4g.js +0 -1
- package/build/assets/kebab-menu-item-content-D8hSNGmm.js +0 -1
- package/build/assets/list-filter-DsEK7NFC.js +0 -1
- package/build/assets/llm-not-configured-banner-CIFABh3K.js +0 -27
- package/build/assets/llm-settings-B9juXhIa.js +0 -1
- package/build/assets/llm-settings-De1d5dfr.js +0 -1
- package/build/assets/llm-subscription-service-BpJ0ouQo.js +0 -1
- package/build/assets/loader-circle-CC1au6hc.js +0 -1
- package/build/assets/manage-backends-modal-BrPV3oB-.js +0 -1
- package/build/assets/manifest-80fb1c29.js +0 -1
- package/build/assets/markdown-renderer-BzTlxI8x.js +0 -8
- package/build/assets/mcp-page-BEBYqH_K.js +0 -9
- package/build/assets/messages-DKV9cRc2.js +0 -41
- package/build/assets/onboarding-DV_OXoeP.js +0 -1
- package/build/assets/onboarding-modal-rkyBYkeQ.js +0 -1
- package/build/assets/organization-service.api-DrYNkEN_.js +0 -1
- package/build/assets/pencil-47jAZH_V.js +0 -1
- package/build/assets/pin-By41Vl5J.js +0 -1
- package/build/assets/planner-tab-C9uZmhme.js +0 -1
- package/build/assets/plug-CG5HFcNG.js +0 -1
- package/build/assets/plugins-management-service-BMJgC3Ga.js +0 -1
- package/build/assets/plus-C7Slq-0I.js +0 -1
- package/build/assets/profiles-service.api-ChoKrL0l.js +0 -1
- package/build/assets/proxy-9Fe1v5na.js +0 -1
- package/build/assets/recommended-automations-launcher-6ABrI9Cy.js +0 -1
- package/build/assets/refresh-cw-3q3Frrii.js +0 -1
- package/build/assets/root-Dc8YmC9F.js +0 -2
- package/build/assets/root-VDaypvK4.css +0 -1
- package/build/assets/root-layout-CXkhSPYh.js +0 -2
- package/build/assets/schema-field-D-y9-LDb.js +0 -1
- package/build/assets/scroll-fade-state-Dw-i4SGq.js +0 -1
- package/build/assets/sdk-section-page-BlFiizlG.js +0 -1
- package/build/assets/secret-form-BB7the8W.js +0 -1
- package/build/assets/secrets-service-ByZVENbp.js +0 -1
- package/build/assets/settings-C0EWuBtA.js +0 -1
- package/build/assets/settings-index-5w5UW2K3.js +0 -1
- package/build/assets/settings-service.api-DJ1r62Zr.js +0 -1
- package/build/assets/shared-conversation-CA5ISEDy.js +0 -1
- package/build/assets/shield-check-D2aCRd16.js +0 -1
- package/build/assets/sidebar-mobile-menu-toggle-C_fb0Jki.js +0 -1
- package/build/assets/skill-scope-B42H-XOc.js +0 -1
- package/build/assets/skills-plugins-tgF8EiXC.js +0 -1
- package/build/assets/skills-settings-BgJ9PaOe.js +0 -1
- package/build/assets/styled-tooltip-C4jf5Fv9.js +0 -1
- package/build/assets/toggle-switch-ChOLXv2n.js +0 -1
- package/build/assets/trash-2-D7K26eDO.js +0 -1
- package/build/assets/trash-D-HYiVYM.js +0 -1
- package/build/assets/triangle-alert-CtdXWHUI.js +0 -1
- package/build/assets/usage-tab-CVDffLPt.js +0 -1
- package/build/assets/use-acp-credential-form-XIQmpX6M.js +0 -1
- package/build/assets/use-activate-agent-profile-BLfmvDiG.js +0 -1
- package/build/assets/use-agent-profiles-Bd9Bvvp1.js +0 -1
- package/build/assets/use-canvas-extensions-Bi693ujJ.js +0 -1
- package/build/assets/use-config-A9QovgXO.js +0 -1
- package/build/assets/use-create-conversation-Dx3l7mFZ.js +0 -1
- package/build/assets/use-create-secret-B9cUFWRG.js +0 -1
- package/build/assets/use-has-permission-B3C8rQmR.js +0 -1
- package/build/assets/use-is-authed-nTBcM7dE.js +0 -1
- package/build/assets/use-llm-configured-BV9nZ1_j.js +0 -1
- package/build/assets/use-llm-profiles-BO-P4Oyo.js +0 -1
- package/build/assets/use-manifest-capabilities-Cw_flwEz.js +0 -1
- package/build/assets/use-onboarding-completion-D8U7k4Qb.js +0 -1
- package/build/assets/use-pinned-home-route-CckOZrmb.js +0 -1
- package/build/assets/use-plugins-marketplace-7i94Zu3Z.js +0 -1
- package/build/assets/use-save-agent-profile-BUjSsDXK.js +0 -1
- package/build/assets/use-settings-DSXLbvBl.js +0 -1
- package/build/assets/use-settings-nav-items-CwRw-CmX.js +0 -16
- package/build/assets/use-tracking-D53y3TH9.js +0 -3
- package/build/assets/utils-CN5ZfZy1.js +0 -1
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-DqZDXfg2.js +0 -186
- package/build/assets/vendor~root-layout-C9Ju9DQg.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-cDuKr-WD.js +0 -1
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iyia17eu-Chf7vmKB.js +0 -1
- package/build/assets/x-DJdhbdmt.js +0 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs +0 -2
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs.map +0 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.d.ts +0 -35
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js +0 -247
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js.map +0 -1
- package/dist/hooks/query/use-skills.cjs +0 -2
- package/dist/hooks/query/use-skills.cjs.map +0 -1
- package/dist/hooks/query/use-skills.d.ts +0 -7
- package/dist/hooks/query/use-skills.js +0 -13
- package/dist/hooks/query/use-skills.js.map +0 -1
- package/dist/hooks/use-has-permission.cjs +0 -2
- package/dist/hooks/use-has-permission.cjs.map +0 -1
- package/dist/hooks/use-has-permission.d.ts +0 -1
- package/dist/hooks/use-has-permission.js +0 -8
- package/dist/hooks/use-has-permission.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs +0 -2
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.js +0 -14
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.js.map +0 -1
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { useTranslation as e } from "../../../node_modules/react-i18next/dist/es/useTranslation.js";
|
|
2
|
+
import { I18nKey as t } from "../../../i18n/declaration.js";
|
|
3
|
+
import { Archive as n } from "../../../node_modules/lucide-react/dist/esm/icons/archive.js";
|
|
4
|
+
import { Bot as r } from "../../../node_modules/lucide-react/dist/esm/icons/bot.js";
|
|
5
|
+
import { CalendarArrowDown as i } from "../../../node_modules/lucide-react/dist/esm/icons/calendar-arrow-down.js";
|
|
6
|
+
import { Clock3 as a } from "../../../node_modules/lucide-react/dist/esm/icons/clock-3.js";
|
|
7
|
+
import { ClockArrowDown as o } from "../../../node_modules/lucide-react/dist/esm/icons/clock-arrow-down.js";
|
|
8
|
+
import { EyeOff as s } from "../../../node_modules/lucide-react/dist/esm/icons/eye-off.js";
|
|
9
|
+
import { Folder as c } from "../../../node_modules/lucide-react/dist/esm/icons/folder.js";
|
|
10
|
+
import { GitBranch as l } from "../../../node_modules/lucide-react/dist/esm/icons/git-branch.js";
|
|
11
|
+
import { MessageCircle as u } from "../../../node_modules/lucide-react/dist/esm/icons/message-circle.js";
|
|
12
|
+
import { MousePointerClick as d } from "../../../node_modules/lucide-react/dist/esm/icons/mouse-pointer-click.js";
|
|
13
|
+
import { Star as f } from "../../../node_modules/lucide-react/dist/esm/icons/star.js";
|
|
14
|
+
import { Tag as p } from "../../../node_modules/lucide-react/dist/esm/icons/tag.js";
|
|
15
|
+
import { cn as m } from "../../../utils/utils.js";
|
|
16
|
+
import { readVerticalScrollEdgeState as h } from "../../../utils/scroll-fade-state.js";
|
|
17
|
+
import { ModalBackdrop as g } from "../../shared/modals/modal-backdrop.js";
|
|
18
|
+
import { MODAL_MAX_WIDTH_VIEWPORT as _, ModalBody as v } from "../../shared/modals/modal-body.js";
|
|
19
|
+
import { BaseModalDescription as y, BaseModalTitle as b } from "../../shared/modals/confirmation-modals/base-modal.js";
|
|
20
|
+
import { ModalCloseButton as x } from "../../shared/modals/modal-close-button.js";
|
|
21
|
+
import { BrandButton as S } from "../settings/brand-button.js";
|
|
22
|
+
import "./conversation-panel-list-helpers.js";
|
|
23
|
+
import { useConversationPanelPreferencesStore as C } from "../../../stores/conversation-panel-preferences-store.js";
|
|
24
|
+
import { MenuHeading as w } from "./menu-heading.js";
|
|
25
|
+
import { MenuSeparator as T } from "./menu-separator.js";
|
|
26
|
+
import { MenuRow as E } from "./menu-row.js";
|
|
27
|
+
import D from "../../../icons/automations.js";
|
|
28
|
+
import { HideOlderConversationsRow as O } from "./hide-older-conversations-row.js";
|
|
29
|
+
import k from "react";
|
|
30
|
+
import { jsx as A, jsxs as j } from "react/jsx-runtime";
|
|
31
|
+
//#region src/components/features/conversation-panel/advanced-conversation-options-modal.tsx
|
|
32
|
+
function M({ open: M, onClose: N, backendKind: P, automationNameFacets: F }) {
|
|
33
|
+
let { t: I } = e("openhands"), L = C(), R = k.useRef(null), [z, B] = k.useState({
|
|
34
|
+
top: !1,
|
|
35
|
+
bottom: !1
|
|
36
|
+
}), V = k.useCallback(() => {
|
|
37
|
+
let e = R.current;
|
|
38
|
+
e && B(h(e));
|
|
39
|
+
}, []);
|
|
40
|
+
if (k.useLayoutEffect(() => {
|
|
41
|
+
if (!M) return;
|
|
42
|
+
V();
|
|
43
|
+
let e = R.current;
|
|
44
|
+
if (!e) return;
|
|
45
|
+
let t = new ResizeObserver(V);
|
|
46
|
+
return t.observe(e), e.firstElementChild && t.observe(e.firstElementChild), () => t.disconnect();
|
|
47
|
+
}, [
|
|
48
|
+
M,
|
|
49
|
+
V,
|
|
50
|
+
L.automationFilterMode
|
|
51
|
+
]), !M) return null;
|
|
52
|
+
let H = I(P === "local" ? t.CONVERSATION_PANEL$BY_WORKSPACE : t.CONVERSATION_PANEL$BY_REPOSITORY);
|
|
53
|
+
return /* @__PURE__ */ A(g, {
|
|
54
|
+
onClose: N,
|
|
55
|
+
children: /* @__PURE__ */ j(v, {
|
|
56
|
+
width: "md",
|
|
57
|
+
className: m("relative items-start overflow-hidden border border-[var(--oh-border)]", _),
|
|
58
|
+
testID: "advanced-conversation-options-modal",
|
|
59
|
+
children: [
|
|
60
|
+
/* @__PURE__ */ A(x, {
|
|
61
|
+
onClose: N,
|
|
62
|
+
testId: "advanced-options-modal-close"
|
|
63
|
+
}),
|
|
64
|
+
/* @__PURE__ */ j("div", {
|
|
65
|
+
className: "flex w-full flex-col gap-2 pr-8",
|
|
66
|
+
children: [/* @__PURE__ */ A(b, { title: I(t.CONVERSATION_PANEL$ADVANCED_OPTIONS) }), /* @__PURE__ */ A(y, { children: I(t.CONVERSATION_PANEL$ADVANCED_OPTIONS_DESCRIPTION) })]
|
|
67
|
+
}),
|
|
68
|
+
/* @__PURE__ */ j("div", {
|
|
69
|
+
className: "relative -mx-6 w-[calc(100%+3rem)] min-h-0",
|
|
70
|
+
children: [
|
|
71
|
+
/* @__PURE__ */ A("div", {
|
|
72
|
+
"aria-hidden": !0,
|
|
73
|
+
"data-testid": "advanced-options-scroll-edge-top",
|
|
74
|
+
"data-visible": z.top ? "true" : "false",
|
|
75
|
+
className: m("pointer-events-none absolute inset-x-0 top-0 z-10 h-px bg-[var(--oh-border)]", z.top ? "opacity-100" : "opacity-0")
|
|
76
|
+
}),
|
|
77
|
+
/* @__PURE__ */ j("div", {
|
|
78
|
+
ref: R,
|
|
79
|
+
role: "menu",
|
|
80
|
+
"aria-orientation": "vertical",
|
|
81
|
+
"aria-label": I(t.CONVERSATION_PANEL$ADVANCED_OPTIONS),
|
|
82
|
+
tabIndex: -1,
|
|
83
|
+
"data-testid": "advanced-options-scroll",
|
|
84
|
+
className: "custom-scrollbar-always flex max-h-[60vh] w-full flex-col overflow-y-auto px-6",
|
|
85
|
+
onClick: (e) => e.stopPropagation(),
|
|
86
|
+
onScroll: V,
|
|
87
|
+
children: [
|
|
88
|
+
/* @__PURE__ */ A(w, { children: I(t.CONVERSATION_PANEL$ORGANIZE) }),
|
|
89
|
+
/* @__PURE__ */ A(E, {
|
|
90
|
+
icon: c,
|
|
91
|
+
label: H,
|
|
92
|
+
selected: L.organizeMode === "grouped",
|
|
93
|
+
testId: "organize-grouped",
|
|
94
|
+
onClick: () => L.setOrganizeMode("grouped")
|
|
95
|
+
}),
|
|
96
|
+
/* @__PURE__ */ A(E, {
|
|
97
|
+
icon: a,
|
|
98
|
+
label: I(t.CONVERSATION_PANEL$CHRONOLOGICAL),
|
|
99
|
+
selected: L.organizeMode === "chronological",
|
|
100
|
+
testId: "organize-chronological",
|
|
101
|
+
onClick: () => L.setOrganizeMode("chronological")
|
|
102
|
+
}),
|
|
103
|
+
/* @__PURE__ */ A(T, {}),
|
|
104
|
+
/* @__PURE__ */ A(w, { children: I(t.CONVERSATION_PANEL$SORT_BY) }),
|
|
105
|
+
/* @__PURE__ */ A(E, {
|
|
106
|
+
icon: i,
|
|
107
|
+
label: I(t.CONVERSATION_PANEL$SORT_CREATED),
|
|
108
|
+
selected: L.conversationSort === "created",
|
|
109
|
+
testId: "sort-created",
|
|
110
|
+
onClick: () => L.setConversationSort("created")
|
|
111
|
+
}),
|
|
112
|
+
/* @__PURE__ */ A(E, {
|
|
113
|
+
icon: o,
|
|
114
|
+
label: I(t.CONVERSATION_PANEL$SORT_UPDATED),
|
|
115
|
+
selected: L.conversationSort === "updated",
|
|
116
|
+
testId: "sort-updated",
|
|
117
|
+
onClick: () => L.setConversationSort("updated")
|
|
118
|
+
}),
|
|
119
|
+
/* @__PURE__ */ A(T, {}),
|
|
120
|
+
/* @__PURE__ */ A(w, { children: I(t.CONVERSATION_PANEL$THREADS) }),
|
|
121
|
+
/* @__PURE__ */ A(E, {
|
|
122
|
+
icon: u,
|
|
123
|
+
label: I(t.CONVERSATION_PANEL$ALL_THREADS),
|
|
124
|
+
selected: L.threadScope === "all",
|
|
125
|
+
testId: "scope-all",
|
|
126
|
+
onClick: () => L.setThreadScope("all")
|
|
127
|
+
}),
|
|
128
|
+
/* @__PURE__ */ A(E, {
|
|
129
|
+
icon: f,
|
|
130
|
+
label: I(t.CONVERSATION_PANEL$RELEVANT_THREADS),
|
|
131
|
+
selected: L.threadScope === "relevant",
|
|
132
|
+
testId: "scope-relevant",
|
|
133
|
+
onClick: () => L.setThreadScope("relevant")
|
|
134
|
+
}),
|
|
135
|
+
/* @__PURE__ */ A(T, {}),
|
|
136
|
+
/* @__PURE__ */ A(w, { children: I(t.CONVERSATION_PANEL$SHOW) }),
|
|
137
|
+
/* @__PURE__ */ A(E, {
|
|
138
|
+
icon: n,
|
|
139
|
+
label: I(t.CONVERSATION_PANEL$SHOW_ARCHIVED),
|
|
140
|
+
selected: L.showArchivedConversations,
|
|
141
|
+
variant: "toggle",
|
|
142
|
+
testId: "toggle-show-archived",
|
|
143
|
+
onClick: L.toggleShowArchivedConversations
|
|
144
|
+
}),
|
|
145
|
+
/* @__PURE__ */ A(O, {}),
|
|
146
|
+
/* @__PURE__ */ A(T, {}),
|
|
147
|
+
/* @__PURE__ */ A(w, { children: I(t.CONVERSATION_PANEL$AUTOMATIONS) }),
|
|
148
|
+
/* @__PURE__ */ A(E, {
|
|
149
|
+
icon: u,
|
|
150
|
+
label: I(t.CONVERSATION_PANEL$AUTOMATIONS_ALL),
|
|
151
|
+
selected: L.automationFilterMode === "all",
|
|
152
|
+
testId: "automation-filter-all",
|
|
153
|
+
onClick: () => L.setAutomationFilterMode("all")
|
|
154
|
+
}),
|
|
155
|
+
/* @__PURE__ */ A(E, {
|
|
156
|
+
icon: s,
|
|
157
|
+
label: I(t.CONVERSATION_PANEL$AUTOMATIONS_HIDE),
|
|
158
|
+
selected: L.automationFilterMode === "hide-automations",
|
|
159
|
+
testId: "automation-filter-hide",
|
|
160
|
+
onClick: () => L.setAutomationFilterMode("hide-automations")
|
|
161
|
+
}),
|
|
162
|
+
/* @__PURE__ */ A(E, {
|
|
163
|
+
icon: D,
|
|
164
|
+
label: I(t.CONVERSATION_PANEL$AUTOMATIONS_ONLY),
|
|
165
|
+
selected: L.automationFilterMode === "only-automations",
|
|
166
|
+
testId: "automation-filter-only",
|
|
167
|
+
onClick: () => L.setAutomationFilterMode("only-automations")
|
|
168
|
+
}),
|
|
169
|
+
L.automationFilterMode === "only-automations" ? F.map((e) => /* @__PURE__ */ A(E, {
|
|
170
|
+
icon: p,
|
|
171
|
+
label: e === "__unnamed__" ? I(t.CONVERSATION_PANEL$AUTOMATION_UNNAMED) : e,
|
|
172
|
+
selected: L.selectedAutomationNames.includes(e),
|
|
173
|
+
variant: "toggle",
|
|
174
|
+
testId: `automation-name-row-${e}`,
|
|
175
|
+
onClick: () => L.toggleAutomationName(e)
|
|
176
|
+
}, e)) : null,
|
|
177
|
+
/* @__PURE__ */ A(T, {}),
|
|
178
|
+
/* @__PURE__ */ A(w, { children: I(t.CONVERSATION_PANEL$METADATA) }),
|
|
179
|
+
/* @__PURE__ */ A(E, {
|
|
180
|
+
icon: l,
|
|
181
|
+
label: I(t.CONVERSATION_PANEL$REPO_BRANCH),
|
|
182
|
+
selected: L.showRepoBranchMetadata,
|
|
183
|
+
variant: "toggle",
|
|
184
|
+
testId: "toggle-repo-branch-metadata",
|
|
185
|
+
onClick: L.toggleShowRepoBranchMetadata
|
|
186
|
+
}),
|
|
187
|
+
/* @__PURE__ */ A(E, {
|
|
188
|
+
icon: r,
|
|
189
|
+
label: I(t.CONVERSATION_PANEL$LLM_MODEL),
|
|
190
|
+
selected: L.showLlmProfiles,
|
|
191
|
+
variant: "toggle",
|
|
192
|
+
testId: "toggle-llm-profiles",
|
|
193
|
+
onClick: L.toggleShowLlmProfiles
|
|
194
|
+
}),
|
|
195
|
+
/* @__PURE__ */ A(E, {
|
|
196
|
+
icon: p,
|
|
197
|
+
label: I(t.CONVERSATION_PANEL$TAG_CHIPS),
|
|
198
|
+
selected: L.showTagsMetadata,
|
|
199
|
+
variant: "toggle",
|
|
200
|
+
testId: "toggle-tags-metadata",
|
|
201
|
+
onClick: L.toggleShowTagsMetadata
|
|
202
|
+
}),
|
|
203
|
+
/* @__PURE__ */ A(E, {
|
|
204
|
+
icon: d,
|
|
205
|
+
label: I(t.CONVERSATION_PANEL$HOVER_METADATA),
|
|
206
|
+
selected: L.showHoverMetadata,
|
|
207
|
+
variant: "toggle",
|
|
208
|
+
testId: "toggle-hover-metadata",
|
|
209
|
+
onClick: L.toggleShowHoverMetadata
|
|
210
|
+
})
|
|
211
|
+
]
|
|
212
|
+
}),
|
|
213
|
+
/* @__PURE__ */ A("div", {
|
|
214
|
+
"aria-hidden": !0,
|
|
215
|
+
"data-testid": "advanced-options-scroll-edge-bottom",
|
|
216
|
+
"data-visible": z.bottom ? "true" : "false",
|
|
217
|
+
className: m("pointer-events-none absolute inset-x-0 bottom-0 z-10 h-px bg-[var(--oh-border)]", z.bottom ? "opacity-100" : "opacity-0")
|
|
218
|
+
})
|
|
219
|
+
]
|
|
220
|
+
}),
|
|
221
|
+
/* @__PURE__ */ A("div", {
|
|
222
|
+
className: "flex w-full justify-end",
|
|
223
|
+
onClick: (e) => e.stopPropagation(),
|
|
224
|
+
children: /* @__PURE__ */ A(S, {
|
|
225
|
+
type: "button",
|
|
226
|
+
variant: "primary",
|
|
227
|
+
onClick: N,
|
|
228
|
+
testId: "advanced-options-close",
|
|
229
|
+
children: I(t.BUTTON$CLOSE)
|
|
230
|
+
})
|
|
231
|
+
})
|
|
232
|
+
]
|
|
233
|
+
})
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
//#endregion
|
|
237
|
+
export { M as AdvancedConversationOptionsModal };
|
|
238
|
+
|
|
239
|
+
//# sourceMappingURL=advanced-conversation-options-modal.js.map
|
package/dist/components/features/conversation-panel/advanced-conversation-options-modal.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advanced-conversation-options-modal.js","names":[],"sources":["../../../../src/components/features/conversation-panel/advanced-conversation-options-modal.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n Archive,\n Bot,\n CalendarArrowDown,\n Clock3,\n ClockArrowDown,\n EyeOff,\n Folder,\n GitBranch,\n MessageCircle,\n MousePointerClick,\n Star,\n Tag,\n} from \"lucide-react\";\nimport AutomationsIcon from \"#/icons/automations.svg?react\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport type { BackendKind } from \"#/api/backend-registry/types\";\nimport { useConversationPanelPreferencesStore } from \"#/stores/conversation-panel-preferences-store\";\nimport {\n BaseModalDescription,\n BaseModalTitle,\n} from \"#/components/shared/modals/confirmation-modals/base-modal\";\nimport { ModalBackdrop } from \"#/components/shared/modals/modal-backdrop\";\nimport {\n MODAL_MAX_WIDTH_VIEWPORT,\n ModalBody,\n} from \"#/components/shared/modals/modal-body\";\nimport { ModalCloseButton } from \"#/components/shared/modals/modal-close-button\";\nimport { BrandButton } from \"#/components/features/settings/brand-button\";\nimport { cn } from \"#/utils/utils\";\nimport { readVerticalScrollEdgeState } from \"#/utils/scroll-fade-state\";\nimport { MenuHeading } from \"./menu-heading\";\nimport { MenuSeparator } from \"./menu-separator\";\nimport { MenuRow } from \"./menu-row\";\nimport { HideOlderConversationsRow } from \"./hide-older-conversations-row\";\nimport { UNNAMED_AUTOMATION_FACET } from \"./conversation-panel-list-helpers\";\n\nexport interface AdvancedConversationOptionsModalProps {\n open: boolean;\n onClose: () => void;\n backendKind: BackendKind;\n /**\n * Distinct automation names among the loaded conversations. Rendered as\n * selectable rows under the Automations section in `only-automations`\n * mode — the only control for `selectedAutomationNames`, which is\n * persisted and narrows the list on its own.\n */\n automationNameFacets: readonly string[];\n}\n\n/**\n * The full preference surface, promoted from the old hamburger filter menu\n * into its own modal (design from the 2026-08-14 PM walkthrough video).\n * Rows apply immediately and stay open — the modal closes only via the\n * top-right X, footer Close, Escape, or backdrop click.\n */\nexport function AdvancedConversationOptionsModal({\n open,\n onClose,\n backendKind,\n automationNameFacets,\n}: AdvancedConversationOptionsModalProps) {\n const { t } = useTranslation(\"openhands\");\n const preferences = useConversationPanelPreferencesStore();\n const scrollRef = React.useRef<HTMLDivElement>(null);\n const [scrollEdges, setScrollEdges] = React.useState({\n top: false,\n bottom: false,\n });\n\n const updateScrollEdges = React.useCallback(() => {\n const element = scrollRef.current;\n if (!element) {\n return;\n }\n setScrollEdges(readVerticalScrollEdgeState(element));\n }, []);\n\n React.useLayoutEffect(() => {\n if (!open) {\n return undefined;\n }\n updateScrollEdges();\n\n const element = scrollRef.current;\n if (!element) {\n return undefined;\n }\n\n const resizeObserver = new ResizeObserver(updateScrollEdges);\n resizeObserver.observe(element);\n if (element.firstElementChild) {\n resizeObserver.observe(element.firstElementChild);\n }\n\n return () => resizeObserver.disconnect();\n }, [open, updateScrollEdges, preferences.automationFilterMode]);\n\n if (!open) return null;\n\n const groupedLabel =\n backendKind === \"local\"\n ? t(I18nKey.CONVERSATION_PANEL$BY_WORKSPACE)\n : t(I18nKey.CONVERSATION_PANEL$BY_REPOSITORY);\n\n return (\n <ModalBackdrop onClose={onClose}>\n <ModalBody\n width=\"md\"\n className={cn(\n \"relative items-start overflow-hidden border border-[var(--oh-border)]\",\n MODAL_MAX_WIDTH_VIEWPORT,\n )}\n testID=\"advanced-conversation-options-modal\"\n >\n <ModalCloseButton\n onClose={onClose}\n testId=\"advanced-options-modal-close\"\n />\n <div className=\"flex w-full flex-col gap-2 pr-8\">\n <BaseModalTitle\n title={t(I18nKey.CONVERSATION_PANEL$ADVANCED_OPTIONS)}\n />\n <BaseModalDescription>\n {t(I18nKey.CONVERSATION_PANEL$ADVANCED_OPTIONS_DESCRIPTION)}\n </BaseModalDescription>\n </div>\n\n <div className=\"relative -mx-6 w-[calc(100%+3rem)] min-h-0\">\n <div\n aria-hidden\n data-testid=\"advanced-options-scroll-edge-top\"\n data-visible={scrollEdges.top ? \"true\" : \"false\"}\n className={cn(\n \"pointer-events-none absolute inset-x-0 top-0 z-10 h-px bg-[var(--oh-border)]\",\n scrollEdges.top ? \"opacity-100\" : \"opacity-0\",\n )}\n />\n <div\n ref={scrollRef}\n role=\"menu\"\n aria-orientation=\"vertical\"\n aria-label={t(I18nKey.CONVERSATION_PANEL$ADVANCED_OPTIONS)}\n // Same idiom as the old filter menu: focusable for jsx-a11y but\n // out of the natural Tab order (the rows are tabbable buttons).\n tabIndex={-1}\n data-testid=\"advanced-options-scroll\"\n className=\"custom-scrollbar-always flex max-h-[60vh] w-full flex-col overflow-y-auto px-6\"\n onClick={(event) => event.stopPropagation()}\n onScroll={updateScrollEdges}\n >\n <MenuHeading>{t(I18nKey.CONVERSATION_PANEL$ORGANIZE)}</MenuHeading>\n <MenuRow\n icon={Folder}\n label={groupedLabel}\n selected={preferences.organizeMode === \"grouped\"}\n testId=\"organize-grouped\"\n onClick={() => preferences.setOrganizeMode(\"grouped\")}\n />\n <MenuRow\n icon={Clock3}\n label={t(I18nKey.CONVERSATION_PANEL$CHRONOLOGICAL)}\n selected={preferences.organizeMode === \"chronological\"}\n testId=\"organize-chronological\"\n onClick={() => preferences.setOrganizeMode(\"chronological\")}\n />\n\n <MenuSeparator />\n <MenuHeading>{t(I18nKey.CONVERSATION_PANEL$SORT_BY)}</MenuHeading>\n <MenuRow\n icon={CalendarArrowDown}\n label={t(I18nKey.CONVERSATION_PANEL$SORT_CREATED)}\n selected={preferences.conversationSort === \"created\"}\n testId=\"sort-created\"\n onClick={() => preferences.setConversationSort(\"created\")}\n />\n <MenuRow\n icon={ClockArrowDown}\n label={t(I18nKey.CONVERSATION_PANEL$SORT_UPDATED)}\n selected={preferences.conversationSort === \"updated\"}\n testId=\"sort-updated\"\n onClick={() => preferences.setConversationSort(\"updated\")}\n />\n\n <MenuSeparator />\n <MenuHeading>{t(I18nKey.CONVERSATION_PANEL$THREADS)}</MenuHeading>\n <MenuRow\n icon={MessageCircle}\n label={t(I18nKey.CONVERSATION_PANEL$ALL_THREADS)}\n selected={preferences.threadScope === \"all\"}\n testId=\"scope-all\"\n onClick={() => preferences.setThreadScope(\"all\")}\n />\n <MenuRow\n icon={Star}\n label={t(I18nKey.CONVERSATION_PANEL$RELEVANT_THREADS)}\n selected={preferences.threadScope === \"relevant\"}\n testId=\"scope-relevant\"\n onClick={() => preferences.setThreadScope(\"relevant\")}\n />\n\n <MenuSeparator />\n <MenuHeading>{t(I18nKey.CONVERSATION_PANEL$SHOW)}</MenuHeading>\n <MenuRow\n icon={Archive}\n label={t(I18nKey.CONVERSATION_PANEL$SHOW_ARCHIVED)}\n selected={preferences.showArchivedConversations}\n variant=\"toggle\"\n testId=\"toggle-show-archived\"\n onClick={preferences.toggleShowArchivedConversations}\n />\n <HideOlderConversationsRow />\n <MenuSeparator />\n <MenuHeading>\n {t(I18nKey.CONVERSATION_PANEL$AUTOMATIONS)}\n </MenuHeading>\n <MenuRow\n icon={MessageCircle}\n label={t(I18nKey.CONVERSATION_PANEL$AUTOMATIONS_ALL)}\n selected={preferences.automationFilterMode === \"all\"}\n testId=\"automation-filter-all\"\n onClick={() => preferences.setAutomationFilterMode(\"all\")}\n />\n <MenuRow\n icon={EyeOff}\n label={t(I18nKey.CONVERSATION_PANEL$AUTOMATIONS_HIDE)}\n selected={preferences.automationFilterMode === \"hide-automations\"}\n testId=\"automation-filter-hide\"\n onClick={() =>\n preferences.setAutomationFilterMode(\"hide-automations\")\n }\n />\n <MenuRow\n icon={AutomationsIcon}\n label={t(I18nKey.CONVERSATION_PANEL$AUTOMATIONS_ONLY)}\n selected={preferences.automationFilterMode === \"only-automations\"}\n testId=\"automation-filter-only\"\n onClick={() =>\n preferences.setAutomationFilterMode(\"only-automations\")\n }\n />\n {/* Name rows only make sense while the list is scoped to\n automations — and `setAutomationFilterMode` clears the selection\n on the way out, so a hidden row can never keep narrowing. */}\n {preferences.automationFilterMode === \"only-automations\"\n ? automationNameFacets.map((facet) => (\n <MenuRow\n key={facet}\n icon={Tag}\n label={\n facet === UNNAMED_AUTOMATION_FACET\n ? t(I18nKey.CONVERSATION_PANEL$AUTOMATION_UNNAMED)\n : facet\n }\n selected={preferences.selectedAutomationNames.includes(\n facet,\n )}\n variant=\"toggle\"\n testId={`automation-name-row-${facet}`}\n onClick={() => preferences.toggleAutomationName(facet)}\n />\n ))\n : null}\n\n <MenuSeparator />\n <MenuHeading>{t(I18nKey.CONVERSATION_PANEL$METADATA)}</MenuHeading>\n <MenuRow\n icon={GitBranch}\n label={t(I18nKey.CONVERSATION_PANEL$REPO_BRANCH)}\n selected={preferences.showRepoBranchMetadata}\n variant=\"toggle\"\n testId=\"toggle-repo-branch-metadata\"\n onClick={preferences.toggleShowRepoBranchMetadata}\n />\n <MenuRow\n icon={Bot}\n label={t(I18nKey.CONVERSATION_PANEL$LLM_MODEL)}\n selected={preferences.showLlmProfiles}\n variant=\"toggle\"\n testId=\"toggle-llm-profiles\"\n onClick={preferences.toggleShowLlmProfiles}\n />\n <MenuRow\n icon={Tag}\n label={t(I18nKey.CONVERSATION_PANEL$TAG_CHIPS)}\n selected={preferences.showTagsMetadata}\n variant=\"toggle\"\n testId=\"toggle-tags-metadata\"\n onClick={preferences.toggleShowTagsMetadata}\n />\n <MenuRow\n icon={MousePointerClick}\n label={t(I18nKey.CONVERSATION_PANEL$HOVER_METADATA)}\n selected={preferences.showHoverMetadata}\n variant=\"toggle\"\n testId=\"toggle-hover-metadata\"\n onClick={preferences.toggleShowHoverMetadata}\n />\n </div>\n <div\n aria-hidden\n data-testid=\"advanced-options-scroll-edge-bottom\"\n data-visible={scrollEdges.bottom ? \"true\" : \"false\"}\n className={cn(\n \"pointer-events-none absolute inset-x-0 bottom-0 z-10 h-px bg-[var(--oh-border)]\",\n scrollEdges.bottom ? \"opacity-100\" : \"opacity-0\",\n )}\n />\n </div>\n\n <div\n className=\"flex w-full justify-end\"\n onClick={(event) => event.stopPropagation()}\n >\n <BrandButton\n type=\"button\"\n variant=\"primary\"\n onClick={onClose}\n testId=\"advanced-options-close\"\n >\n {t(I18nKey.BUTTON$CLOSE)}\n </BrandButton>\n </div>\n </ModalBody>\n </ModalBackdrop>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DA,SAAgB,EAAiC,EAC/C,SACA,YACA,gBACA,2BACwC;CACxC,IAAM,EAAE,SAAM,EAAe,WAAW,GAClC,IAAc,EAAqC,GACnD,IAAY,EAAM,OAAuB,IAAI,GAC7C,CAAC,GAAa,KAAkB,EAAM,SAAS;EACnD,KAAK;EACL,QAAQ;CACV,CAAC,GAEK,IAAoB,EAAM,kBAAkB;EAChD,IAAM,IAAU,EAAU;EACrB,KAGL,EAAe,EAA4B,CAAO,CAAC;CACrD,GAAG,CAAC,CAAC;CAsBL,IApBA,EAAM,sBAAsB;EAC1B,IAAI,CAAC,GACH;EAEF,EAAkB;EAElB,IAAM,IAAU,EAAU;EAC1B,IAAI,CAAC,GACH;EAGF,IAAM,IAAiB,IAAI,eAAe,CAAiB;EAM3D,OALA,EAAe,QAAQ,CAAO,GAC1B,EAAQ,qBACV,EAAe,QAAQ,EAAQ,iBAAiB,SAGrC,EAAe,WAAW;CACzC,GAAG;EAAC;EAAM;EAAmB,EAAY;CAAoB,CAAC,GAE1D,CAAC,GAAM,OAAO;CAElB,IAAM,IAEA,EADJ,MAAgB,UACV,EAAQ,kCACR,EAAQ,gCAAgC;CAEhD,OACE,kBAAC,GAAD;EAAwB;YACtB,kBAAC,GAAD;GACE,OAAM;GACN,WAAW,EACT,yEACA,CACF;GACA,QAAO;aANT;IAQE,kBAAC,GAAD;KACW;KACT,QAAO;IACR,CAAA;IACD,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EACE,OAAO,EAAE,EAAQ,mCAAmC,EACrD,CAAA,GACD,kBAAC,GAAD,EAAA,UACG,EAAE,EAAQ,+CAA+C,EACtC,CAAA,CACnB;;IAEL,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,OAAD;OACE,eAAA;OACA,eAAY;OACZ,gBAAc,EAAY,MAAM,SAAS;OACzC,WAAW,EACT,gFACA,EAAY,MAAM,gBAAgB,WACpC;MACD,CAAA;MACD,kBAAC,OAAD;OACE,KAAK;OACL,MAAK;OACL,oBAAiB;OACjB,cAAY,EAAE,EAAQ,mCAAmC;OAGzD,UAAU;OACV,eAAY;OACZ,WAAU;OACV,UAAU,MAAU,EAAM,gBAAgB;OAC1C,UAAU;iBAXZ;QAaE,kBAAC,GAAD,EAAA,UAAc,EAAE,EAAQ,2BAA2B,EAAe,CAAA;QAClE,kBAAC,GAAD;SACE,MAAM;SACN,OAAO;SACP,UAAU,EAAY,iBAAiB;SACvC,QAAO;SACP,eAAe,EAAY,gBAAgB,SAAS;QACrD,CAAA;QACD,kBAAC,GAAD;SACE,MAAM;SACN,OAAO,EAAE,EAAQ,gCAAgC;SACjD,UAAU,EAAY,iBAAiB;SACvC,QAAO;SACP,eAAe,EAAY,gBAAgB,eAAe;QAC3D,CAAA;QAED,kBAAC,GAAD,CAAgB,CAAA;QAChB,kBAAC,GAAD,EAAA,UAAc,EAAE,EAAQ,0BAA0B,EAAe,CAAA;QACjE,kBAAC,GAAD;SACE,MAAM;SACN,OAAO,EAAE,EAAQ,+BAA+B;SAChD,UAAU,EAAY,qBAAqB;SAC3C,QAAO;SACP,eAAe,EAAY,oBAAoB,SAAS;QACzD,CAAA;QACD,kBAAC,GAAD;SACE,MAAM;SACN,OAAO,EAAE,EAAQ,+BAA+B;SAChD,UAAU,EAAY,qBAAqB;SAC3C,QAAO;SACP,eAAe,EAAY,oBAAoB,SAAS;QACzD,CAAA;QAED,kBAAC,GAAD,CAAgB,CAAA;QAChB,kBAAC,GAAD,EAAA,UAAc,EAAE,EAAQ,0BAA0B,EAAe,CAAA;QACjE,kBAAC,GAAD;SACE,MAAM;SACN,OAAO,EAAE,EAAQ,8BAA8B;SAC/C,UAAU,EAAY,gBAAgB;SACtC,QAAO;SACP,eAAe,EAAY,eAAe,KAAK;QAChD,CAAA;QACD,kBAAC,GAAD;SACE,MAAM;SACN,OAAO,EAAE,EAAQ,mCAAmC;SACpD,UAAU,EAAY,gBAAgB;SACtC,QAAO;SACP,eAAe,EAAY,eAAe,UAAU;QACrD,CAAA;QAED,kBAAC,GAAD,CAAgB,CAAA;QAChB,kBAAC,GAAD,EAAA,UAAc,EAAE,EAAQ,uBAAuB,EAAe,CAAA;QAC9D,kBAAC,GAAD;SACE,MAAM;SACN,OAAO,EAAE,EAAQ,gCAAgC;SACjD,UAAU,EAAY;SACtB,SAAQ;SACR,QAAO;SACP,SAAS,EAAY;QACtB,CAAA;QACD,kBAAC,GAAD,CAA4B,CAAA;QAC5B,kBAAC,GAAD,CAAgB,CAAA;QAChB,kBAAC,GAAD,EAAA,UACG,EAAE,EAAQ,8BAA8B,EAC9B,CAAA;QACb,kBAAC,GAAD;SACE,MAAM;SACN,OAAO,EAAE,EAAQ,kCAAkC;SACnD,UAAU,EAAY,yBAAyB;SAC/C,QAAO;SACP,eAAe,EAAY,wBAAwB,KAAK;QACzD,CAAA;QACD,kBAAC,GAAD;SACE,MAAM;SACN,OAAO,EAAE,EAAQ,mCAAmC;SACpD,UAAU,EAAY,yBAAyB;SAC/C,QAAO;SACP,eACE,EAAY,wBAAwB,kBAAkB;QAEzD,CAAA;QACD,kBAAC,GAAD;SACE,MAAM;SACN,OAAO,EAAE,EAAQ,mCAAmC;SACpD,UAAU,EAAY,yBAAyB;SAC/C,QAAO;SACP,eACE,EAAY,wBAAwB,kBAAkB;QAEzD,CAAA;QAIA,EAAY,yBAAyB,qBAClC,EAAqB,KAAK,MACxB,kBAAC,GAAD;SAEE,MAAM;SACN,OACE,MAAA,gBACI,EAAE,EAAQ,qCAAqC,IAC/C;SAEN,UAAU,EAAY,wBAAwB,SAC5C,CACF;SACA,SAAQ;SACR,QAAQ,uBAAuB;SAC/B,eAAe,EAAY,qBAAqB,CAAK;QACtD,GAbM,CAaN,CACF,IACD;QAEJ,kBAAC,GAAD,CAAgB,CAAA;QAChB,kBAAC,GAAD,EAAA,UAAc,EAAE,EAAQ,2BAA2B,EAAe,CAAA;QAClE,kBAAC,GAAD;SACE,MAAM;SACN,OAAO,EAAE,EAAQ,8BAA8B;SAC/C,UAAU,EAAY;SACtB,SAAQ;SACR,QAAO;SACP,SAAS,EAAY;QACtB,CAAA;QACD,kBAAC,GAAD;SACE,MAAM;SACN,OAAO,EAAE,EAAQ,4BAA4B;SAC7C,UAAU,EAAY;SACtB,SAAQ;SACR,QAAO;SACP,SAAS,EAAY;QACtB,CAAA;QACD,kBAAC,GAAD;SACE,MAAM;SACN,OAAO,EAAE,EAAQ,4BAA4B;SAC7C,UAAU,EAAY;SACtB,SAAQ;SACR,QAAO;SACP,SAAS,EAAY;QACtB,CAAA;QACD,kBAAC,GAAD;SACE,MAAM;SACN,OAAO,EAAE,EAAQ,iCAAiC;SAClD,UAAU,EAAY;SACtB,SAAQ;SACR,QAAO;SACP,SAAS,EAAY;QACtB,CAAA;OACE;;MACL,kBAAC,OAAD;OACE,eAAA;OACA,eAAY;OACZ,gBAAc,EAAY,SAAS,SAAS;OAC5C,WAAW,EACT,mFACA,EAAY,SAAS,gBAAgB,WACvC;MACD,CAAA;KACE;;IAEL,kBAAC,OAAD;KACE,WAAU;KACV,UAAU,MAAU,EAAM,gBAAgB;eAE1C,kBAAC,GAAD;MACE,MAAK;MACL,SAAQ;MACR,SAAS;MACT,QAAO;gBAEN,EAAE,EAAQ,YAAY;KACZ,CAAA;IACV,CAAA;GACI;;CACE,CAAA;AAEnB"}
|
|
@@ -0,0 +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("../../../node_modules/lucide-react/dist/esm/icons/tag.cjs"),r=require("../../../node_modules/lucide-react/dist/esm/icons/workflow.cjs"),i=require("../../../node_modules/lucide-react/dist/esm/icons/x.cjs"),a=require("./conversation-panel-list-helpers.cjs");let o=require("react/jsx-runtime");function s({selectedFacets:s,onToggleFacet:c,selectedAutomationNames:l,onToggleAutomationName:u,onClearAll:d}){let{t:f}=e.useTranslation(`openhands`);if(s.length===0&&l.length===0)return null;let p=`flex min-w-0 max-w-full cursor-pointer items-center gap-1 rounded-full bg-[var(--oh-surface)] px-2 py-0.5 text-[10px] leading-4 text-white hover:bg-white/10`;return(0,o.jsxs)(`div`,{"data-testid":`conversation-active-tag-filters`,className:`flex min-w-0 items-start gap-1.5 border-b border-[var(--oh-border)] px-4 py-1.5`,children:[(0,o.jsx)(n.Tag,{className:`mt-1 h-3 w-3 shrink-0 text-[var(--oh-muted)]`,"aria-hidden":!0}),(0,o.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-wrap items-center gap-1`,children:[s.map(e=>(0,o.jsxs)(`button`,{type:`button`,"data-testid":`active-tag-filter-${e}`,onClick:()=>c(e),className:p,children:[(0,o.jsx)(`span`,{className:`truncate`,children:a.formatTagFacetLabel(e)}),(0,o.jsx)(i.X,{className:`h-3 w-3 shrink-0`,"aria-hidden":!0})]},e)),l.map(e=>(0,o.jsxs)(`button`,{type:`button`,"data-testid":`active-automation-filter-${e}`,onClick:()=>u(e),className:p,children:[(0,o.jsx)(r.Workflow,{className:`h-3 w-3 shrink-0`,"aria-hidden":!0}),(0,o.jsx)(`span`,{className:`truncate`,children:e===`__unnamed__`?f(t.I18nKey.CONVERSATION_PANEL$AUTOMATION_UNNAMED):e}),(0,o.jsx)(i.X,{className:`h-3 w-3 shrink-0`,"aria-hidden":!0})]},e))]}),(0,o.jsx)(`button`,{type:`button`,"data-testid":`clear-tag-filters`,onClick:d,className:`shrink-0 cursor-pointer text-[10px] leading-5 text-[var(--oh-muted)] hover:text-white`,children:f(t.I18nKey.CONVERSATION_PANEL$CLEAR_FILTERS)})]})}exports.ConversationActiveTagFilters=s;
|
|
2
|
+
//# sourceMappingURL=conversation-active-tag-filters.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-active-tag-filters.cjs","names":[],"sources":["../../../../src/components/features/conversation-panel/conversation-active-tag-filters.tsx"],"sourcesContent":["import { Tag, Workflow, X } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport {\n formatTagFacetLabel,\n UNNAMED_AUTOMATION_FACET,\n} from \"./conversation-panel-list-helpers\";\n\ninterface ConversationActiveTagFiltersProps {\n selectedFacets: readonly string[];\n onToggleFacet: (facet: string) => void;\n /** Automation names narrowing the list in `only-automations` mode. */\n selectedAutomationNames: readonly string[];\n onToggleAutomationName: (name: string) => void;\n onClearAll: () => void;\n}\n\n/**\n * Always-visible record of which facet selections are narrowing the list —\n * both families: user tags and automation names.\n *\n * The facet rows live two levels inside a menu (tag facets behind a toggle in\n * the layouts menu, automation names inside the advanced-options modal).\n * Without this strip a filter left switched on just makes conversations\n * disappear, with nothing on screen to say why or how to get them back — and\n * both selections are persisted, so a reload brings the narrowing back with\n * the explanation still buried.\n *\n * The automation *mode* deliberately has no chip here: it is a scope, not a\n * facet selection, and `onClearAll` leaves it alone for the same reason —\n * this strip must not silently switch a surface it doesn't show.\n *\n * Renders nothing when nothing is selected — an empty bar would cost a row\n * of a narrow sidebar to say \"no news\".\n */\nexport function ConversationActiveTagFilters({\n selectedFacets,\n onToggleFacet,\n selectedAutomationNames,\n onToggleAutomationName,\n onClearAll,\n}: ConversationActiveTagFiltersProps) {\n const { t } = useTranslation(\"openhands\");\n\n if (selectedFacets.length === 0 && selectedAutomationNames.length === 0) {\n return null;\n }\n\n const chipClassName =\n \"flex min-w-0 max-w-full cursor-pointer items-center gap-1 rounded-full bg-[var(--oh-surface)] px-2 py-0.5 text-[10px] leading-4 text-white hover:bg-white/10\";\n\n return (\n <div\n data-testid=\"conversation-active-tag-filters\"\n className=\"flex min-w-0 items-start gap-1.5 border-b border-[var(--oh-border)] px-4 py-1.5\"\n >\n <Tag\n className=\"mt-1 h-3 w-3 shrink-0 text-[var(--oh-muted)]\"\n aria-hidden\n />\n\n <div className=\"flex min-w-0 flex-1 flex-wrap items-center gap-1\">\n {selectedFacets.map((facet) => (\n <button\n key={facet}\n type=\"button\"\n data-testid={`active-tag-filter-${facet}`}\n onClick={() => onToggleFacet(facet)}\n className={chipClassName}\n >\n <span className=\"truncate\">{formatTagFacetLabel(facet)}</span>\n <X className=\"h-3 w-3 shrink-0\" aria-hidden />\n </button>\n ))}\n\n {selectedAutomationNames.map((name) => (\n <button\n key={name}\n type=\"button\"\n data-testid={`active-automation-filter-${name}`}\n onClick={() => onToggleAutomationName(name)}\n className={chipClassName}\n >\n <Workflow className=\"h-3 w-3 shrink-0\" aria-hidden />\n <span className=\"truncate\">\n {name === UNNAMED_AUTOMATION_FACET\n ? t(I18nKey.CONVERSATION_PANEL$AUTOMATION_UNNAMED)\n : name}\n </span>\n <X className=\"h-3 w-3 shrink-0\" aria-hidden />\n </button>\n ))}\n </div>\n\n <button\n type=\"button\"\n data-testid=\"clear-tag-filters\"\n onClick={onClearAll}\n className=\"shrink-0 cursor-pointer text-[10px] leading-5 text-[var(--oh-muted)] hover:text-white\"\n >\n {t(I18nKey.CONVERSATION_PANEL$CLEAR_FILTERS)}\n </button>\n </div>\n );\n}\n"],"mappings":"8dAmCA,SAAgB,EAA6B,CAC3C,iBACA,gBACA,0BACA,yBACA,cACoC,CACpC,GAAM,CAAE,KAAM,EAAA,eAAe,WAAW,EAExC,GAAI,EAAe,SAAW,GAAK,EAAwB,SAAW,EACpE,OAAO,KAGT,IAAM,EACJ,+JAEF,OACE,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,kCACZ,UAAU,2FAFZ,EAIE,EAAA,EAAA,KAAC,EAAA,IAAD,CACE,UAAU,+CACV,cAAA,EACD,CAAA,GAED,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,4DAAf,CACG,EAAe,IAAK,IACnB,EAAA,EAAA,MAAC,SAAD,CAEE,KAAK,SACL,cAAa,qBAAqB,IAClC,YAAe,EAAc,CAAK,EAClC,UAAW,WALb,EAOE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oBAAY,EAAA,oBAAoB,CAAK,CAAQ,CAAA,GAC7D,EAAA,EAAA,KAAC,EAAA,EAAD,CAAG,UAAU,mBAAmB,cAAA,EAAa,CAAA,CACvC,GARD,CAQC,CACT,EAEA,EAAwB,IAAK,IAC5B,EAAA,EAAA,MAAC,SAAD,CAEE,KAAK,SACL,cAAa,4BAA4B,IACzC,YAAe,EAAuB,CAAI,EAC1C,UAAW,WALb,EAOE,EAAA,EAAA,KAAC,EAAA,SAAD,CAAU,UAAU,mBAAmB,cAAA,EAAa,CAAA,GACpD,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oBACb,IAAA,cACG,EAAE,EAAA,QAAQ,qCAAqC,EAC/C,CACA,CAAA,GACN,EAAA,EAAA,KAAC,EAAA,EAAD,CAAG,UAAU,mBAAmB,cAAA,EAAa,CAAA,CACvC,GAbD,CAaC,CACT,CACE,KAEL,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,cAAY,oBACZ,QAAS,EACT,UAAU,iGAET,EAAE,EAAA,QAAQ,gCAAgC,CACrC,CAAA,CACL,GAET"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
interface ConversationActiveTagFiltersProps {
|
|
2
|
+
selectedFacets: readonly string[];
|
|
3
|
+
onToggleFacet: (facet: string) => void;
|
|
4
|
+
/** Automation names narrowing the list in `only-automations` mode. */
|
|
5
|
+
selectedAutomationNames: readonly string[];
|
|
6
|
+
onToggleAutomationName: (name: string) => void;
|
|
7
|
+
onClearAll: () => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Always-visible record of which facet selections are narrowing the list —
|
|
11
|
+
* both families: user tags and automation names.
|
|
12
|
+
*
|
|
13
|
+
* The facet rows live two levels inside a menu (tag facets behind a toggle in
|
|
14
|
+
* the layouts menu, automation names inside the advanced-options modal).
|
|
15
|
+
* Without this strip a filter left switched on just makes conversations
|
|
16
|
+
* disappear, with nothing on screen to say why or how to get them back — and
|
|
17
|
+
* both selections are persisted, so a reload brings the narrowing back with
|
|
18
|
+
* the explanation still buried.
|
|
19
|
+
*
|
|
20
|
+
* The automation *mode* deliberately has no chip here: it is a scope, not a
|
|
21
|
+
* facet selection, and `onClearAll` leaves it alone for the same reason —
|
|
22
|
+
* this strip must not silently switch a surface it doesn't show.
|
|
23
|
+
*
|
|
24
|
+
* Renders nothing when nothing is selected — an empty bar would cost a row
|
|
25
|
+
* of a narrow sidebar to say "no news".
|
|
26
|
+
*/
|
|
27
|
+
export declare function ConversationActiveTagFilters({ selectedFacets, onToggleFacet, selectedAutomationNames, onToggleAutomationName, onClearAll, }: ConversationActiveTagFiltersProps): import("react").JSX.Element | null;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { useTranslation as e } from "../../../node_modules/react-i18next/dist/es/useTranslation.js";
|
|
2
|
+
import { I18nKey as t } from "../../../i18n/declaration.js";
|
|
3
|
+
import { Tag as n } from "../../../node_modules/lucide-react/dist/esm/icons/tag.js";
|
|
4
|
+
import { Workflow as r } from "../../../node_modules/lucide-react/dist/esm/icons/workflow.js";
|
|
5
|
+
import { X as i } from "../../../node_modules/lucide-react/dist/esm/icons/x.js";
|
|
6
|
+
import { formatTagFacetLabel as a } from "./conversation-panel-list-helpers.js";
|
|
7
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
8
|
+
//#region src/components/features/conversation-panel/conversation-active-tag-filters.tsx
|
|
9
|
+
function c({ selectedFacets: c, onToggleFacet: l, selectedAutomationNames: u, onToggleAutomationName: d, onClearAll: f }) {
|
|
10
|
+
let { t: p } = e("openhands");
|
|
11
|
+
if (c.length === 0 && u.length === 0) return null;
|
|
12
|
+
let m = "flex min-w-0 max-w-full cursor-pointer items-center gap-1 rounded-full bg-[var(--oh-surface)] px-2 py-0.5 text-[10px] leading-4 text-white hover:bg-white/10";
|
|
13
|
+
return /* @__PURE__ */ s("div", {
|
|
14
|
+
"data-testid": "conversation-active-tag-filters",
|
|
15
|
+
className: "flex min-w-0 items-start gap-1.5 border-b border-[var(--oh-border)] px-4 py-1.5",
|
|
16
|
+
children: [
|
|
17
|
+
/* @__PURE__ */ o(n, {
|
|
18
|
+
className: "mt-1 h-3 w-3 shrink-0 text-[var(--oh-muted)]",
|
|
19
|
+
"aria-hidden": !0
|
|
20
|
+
}),
|
|
21
|
+
/* @__PURE__ */ s("div", {
|
|
22
|
+
className: "flex min-w-0 flex-1 flex-wrap items-center gap-1",
|
|
23
|
+
children: [c.map((e) => /* @__PURE__ */ s("button", {
|
|
24
|
+
type: "button",
|
|
25
|
+
"data-testid": `active-tag-filter-${e}`,
|
|
26
|
+
onClick: () => l(e),
|
|
27
|
+
className: m,
|
|
28
|
+
children: [/* @__PURE__ */ o("span", {
|
|
29
|
+
className: "truncate",
|
|
30
|
+
children: a(e)
|
|
31
|
+
}), /* @__PURE__ */ o(i, {
|
|
32
|
+
className: "h-3 w-3 shrink-0",
|
|
33
|
+
"aria-hidden": !0
|
|
34
|
+
})]
|
|
35
|
+
}, e)), u.map((e) => /* @__PURE__ */ s("button", {
|
|
36
|
+
type: "button",
|
|
37
|
+
"data-testid": `active-automation-filter-${e}`,
|
|
38
|
+
onClick: () => d(e),
|
|
39
|
+
className: m,
|
|
40
|
+
children: [
|
|
41
|
+
/* @__PURE__ */ o(r, {
|
|
42
|
+
className: "h-3 w-3 shrink-0",
|
|
43
|
+
"aria-hidden": !0
|
|
44
|
+
}),
|
|
45
|
+
/* @__PURE__ */ o("span", {
|
|
46
|
+
className: "truncate",
|
|
47
|
+
children: e === "__unnamed__" ? p(t.CONVERSATION_PANEL$AUTOMATION_UNNAMED) : e
|
|
48
|
+
}),
|
|
49
|
+
/* @__PURE__ */ o(i, {
|
|
50
|
+
className: "h-3 w-3 shrink-0",
|
|
51
|
+
"aria-hidden": !0
|
|
52
|
+
})
|
|
53
|
+
]
|
|
54
|
+
}, e))]
|
|
55
|
+
}),
|
|
56
|
+
/* @__PURE__ */ o("button", {
|
|
57
|
+
type: "button",
|
|
58
|
+
"data-testid": "clear-tag-filters",
|
|
59
|
+
onClick: f,
|
|
60
|
+
className: "shrink-0 cursor-pointer text-[10px] leading-5 text-[var(--oh-muted)] hover:text-white",
|
|
61
|
+
children: p(t.CONVERSATION_PANEL$CLEAR_FILTERS)
|
|
62
|
+
})
|
|
63
|
+
]
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
export { c as ConversationActiveTagFilters };
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=conversation-active-tag-filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-active-tag-filters.js","names":[],"sources":["../../../../src/components/features/conversation-panel/conversation-active-tag-filters.tsx"],"sourcesContent":["import { Tag, Workflow, X } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport {\n formatTagFacetLabel,\n UNNAMED_AUTOMATION_FACET,\n} from \"./conversation-panel-list-helpers\";\n\ninterface ConversationActiveTagFiltersProps {\n selectedFacets: readonly string[];\n onToggleFacet: (facet: string) => void;\n /** Automation names narrowing the list in `only-automations` mode. */\n selectedAutomationNames: readonly string[];\n onToggleAutomationName: (name: string) => void;\n onClearAll: () => void;\n}\n\n/**\n * Always-visible record of which facet selections are narrowing the list —\n * both families: user tags and automation names.\n *\n * The facet rows live two levels inside a menu (tag facets behind a toggle in\n * the layouts menu, automation names inside the advanced-options modal).\n * Without this strip a filter left switched on just makes conversations\n * disappear, with nothing on screen to say why or how to get them back — and\n * both selections are persisted, so a reload brings the narrowing back with\n * the explanation still buried.\n *\n * The automation *mode* deliberately has no chip here: it is a scope, not a\n * facet selection, and `onClearAll` leaves it alone for the same reason —\n * this strip must not silently switch a surface it doesn't show.\n *\n * Renders nothing when nothing is selected — an empty bar would cost a row\n * of a narrow sidebar to say \"no news\".\n */\nexport function ConversationActiveTagFilters({\n selectedFacets,\n onToggleFacet,\n selectedAutomationNames,\n onToggleAutomationName,\n onClearAll,\n}: ConversationActiveTagFiltersProps) {\n const { t } = useTranslation(\"openhands\");\n\n if (selectedFacets.length === 0 && selectedAutomationNames.length === 0) {\n return null;\n }\n\n const chipClassName =\n \"flex min-w-0 max-w-full cursor-pointer items-center gap-1 rounded-full bg-[var(--oh-surface)] px-2 py-0.5 text-[10px] leading-4 text-white hover:bg-white/10\";\n\n return (\n <div\n data-testid=\"conversation-active-tag-filters\"\n className=\"flex min-w-0 items-start gap-1.5 border-b border-[var(--oh-border)] px-4 py-1.5\"\n >\n <Tag\n className=\"mt-1 h-3 w-3 shrink-0 text-[var(--oh-muted)]\"\n aria-hidden\n />\n\n <div className=\"flex min-w-0 flex-1 flex-wrap items-center gap-1\">\n {selectedFacets.map((facet) => (\n <button\n key={facet}\n type=\"button\"\n data-testid={`active-tag-filter-${facet}`}\n onClick={() => onToggleFacet(facet)}\n className={chipClassName}\n >\n <span className=\"truncate\">{formatTagFacetLabel(facet)}</span>\n <X className=\"h-3 w-3 shrink-0\" aria-hidden />\n </button>\n ))}\n\n {selectedAutomationNames.map((name) => (\n <button\n key={name}\n type=\"button\"\n data-testid={`active-automation-filter-${name}`}\n onClick={() => onToggleAutomationName(name)}\n className={chipClassName}\n >\n <Workflow className=\"h-3 w-3 shrink-0\" aria-hidden />\n <span className=\"truncate\">\n {name === UNNAMED_AUTOMATION_FACET\n ? t(I18nKey.CONVERSATION_PANEL$AUTOMATION_UNNAMED)\n : name}\n </span>\n <X className=\"h-3 w-3 shrink-0\" aria-hidden />\n </button>\n ))}\n </div>\n\n <button\n type=\"button\"\n data-testid=\"clear-tag-filters\"\n onClick={onClearAll}\n className=\"shrink-0 cursor-pointer text-[10px] leading-5 text-[var(--oh-muted)] hover:text-white\"\n >\n {t(I18nKey.CONVERSATION_PANEL$CLEAR_FILTERS)}\n </button>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAmCA,SAAgB,EAA6B,EAC3C,mBACA,kBACA,4BACA,2BACA,iBACoC;CACpC,IAAM,EAAE,SAAM,EAAe,WAAW;CAExC,IAAI,EAAe,WAAW,KAAK,EAAwB,WAAW,GACpE,OAAO;CAGT,IAAM,IACJ;CAEF,OACE,kBAAC,OAAD;EACE,eAAY;EACZ,WAAU;YAFZ;GAIE,kBAAC,GAAD;IACE,WAAU;IACV,eAAA;GACD,CAAA;GAED,kBAAC,OAAD;IAAK,WAAU;cAAf,CACG,EAAe,KAAK,MACnB,kBAAC,UAAD;KAEE,MAAK;KACL,eAAa,qBAAqB;KAClC,eAAe,EAAc,CAAK;KAClC,WAAW;eALb,CAOE,kBAAC,QAAD;MAAM,WAAU;gBAAY,EAAoB,CAAK;KAAQ,CAAA,GAC7D,kBAAC,GAAD;MAAG,WAAU;MAAmB,eAAA;KAAa,CAAA,CACvC;OARD,CAQC,CACT,GAEA,EAAwB,KAAK,MAC5B,kBAAC,UAAD;KAEE,MAAK;KACL,eAAa,4BAA4B;KACzC,eAAe,EAAuB,CAAI;KAC1C,WAAW;eALb;MAOE,kBAAC,GAAD;OAAU,WAAU;OAAmB,eAAA;MAAa,CAAA;MACpD,kBAAC,QAAD;OAAM,WAAU;iBACb,MAAA,gBACG,EAAE,EAAQ,qCAAqC,IAC/C;MACA,CAAA;MACN,kBAAC,GAAD;OAAG,WAAU;OAAmB,eAAA;MAAa,CAAA;KACvC;OAbD,CAaC,CACT,CACE;;GAEL,kBAAC,UAAD;IACE,MAAK;IACL,eAAY;IACZ,SAAS;IACT,WAAU;cAET,EAAE,EAAQ,gCAAgC;GACrC,CAAA;EACL;;AAET"}
|
package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.cjs
CHANGED
|
@@ -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/status.cjs"),i=require("../../../../utils/utils.cjs"),a=require("../ellipsis-button.cjs"),o=require("./conversation-card-context-menu.cjs");let s=require("react");s=e.__toESM(s,1);let c=require("react/jsx-runtime"),l=require("react-dom");function u({contextMenuOpen:e,onContextMenuToggle:u,onDelete:d,onArchive:f,onUnarchive:p,onStop:m,onEdit:h,
|
|
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/status.cjs"),i=require("../../../../utils/utils.cjs"),a=require("../ellipsis-button.cjs"),o=require("./conversation-card-context-menu.cjs");let s=require("react");s=e.__toESM(s,1);let c=require("react/jsx-runtime"),l=require("react-dom");function u({contextMenuOpen:e,onContextMenuToggle:u,onDelete:d,onArchive:f,onUnarchive:p,onStop:m,onEdit:h,onEditTags:g,onDownloadViaVSCode:_,onDownloadConversation:v,executionStatus:y,conversationId:b,showOptions:x}){let{t:S}=t.useTranslation(`openhands`),C=r.isExecutionPaused(y),w=r.isExecutionActive(y),T=(0,s.useRef)(null),[,E]=(0,s.useReducer)(e=>e+1,0);(0,s.useLayoutEffect)(()=>{if(!e)return;E();let t=0,n=()=>{t||=window.requestAnimationFrame(()=>{t=0,E()})};return window.addEventListener(`resize`,n),window.addEventListener(`scroll`,n,!0),()=>{t&&window.cancelAnimationFrame(t),window.removeEventListener(`resize`,n),window.removeEventListener(`scroll`,n,!0)}},[e]);let D=(()=>{if(!e||!T.current)return;let t=T.current.getBoundingClientRect(),n=Number(window.innerWidth)||0,r=Number(window.innerHeight)||0,i=Number(t.bottom)||0,a=Number(t.right)||0;return{position:`fixed`,top:i+320+8>r?Math.max(8,t.top-320-4):i+4,right:Math.max(8,n-a),zIndex:1e5}})(),O=typeof document<`u`?document.body:null;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(a.EllipsisButton,{ref:T,onClick:t=>{t.preventDefault(),t.stopPropagation(),u(!e)},ariaLabel:S(n.I18nKey.COMMON$MORE_OPTIONS),className:i.cn(C&&`opacity-60`)}),e&&D&&O?(0,l.createPortal)((0,c.jsx)(o.ConversationCardContextMenu,{ignoreOutsideClickRef:T,floatingStyle:D,onClose:()=>u(!1),onDelete:d,onArchive:f,onUnarchive:p,onStop:w?m:void 0,onEdit:h,onEditTags:g,onDownloadViaVSCode:b&&x?_:void 0,onDownloadConversation:b?v:void 0,position:`bottom`}),O):null]})}exports.ConversationCardActions=u;
|
|
2
2
|
//# sourceMappingURL=conversation-card-actions.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-card-actions.cjs","names":[],"sources":["../../../../../src/components/features/conversation-panel/conversation-card/conversation-card-actions.tsx"],"sourcesContent":["import React, { useLayoutEffect, useReducer, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"#/utils/utils\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { ExecutionStatus } from \"#/types/agent-server/core/base/common\";\nimport { isExecutionActive, isExecutionPaused } from \"#/utils/status\";\nimport { ConversationCardContextMenu } from \"./conversation-card-context-menu\";\nimport { EllipsisButton } from \"../ellipsis-button\";\n\ninterface ConversationCardActionsProps {\n contextMenuOpen: boolean;\n onContextMenuToggle: (isOpen: boolean) => void;\n onDelete?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onArchive?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onUnarchive?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onStop?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onEdit?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onDownloadViaVSCode?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onDownloadConversation?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n executionStatus?: ExecutionStatus | null;\n conversationId?: string;\n showOptions?: boolean;\n}\n\nexport function ConversationCardActions({\n contextMenuOpen,\n onContextMenuToggle,\n onDelete,\n onArchive,\n onUnarchive,\n onStop,\n onEdit,\n onDownloadViaVSCode,\n onDownloadConversation,\n executionStatus,\n conversationId,\n showOptions,\n}: ConversationCardActionsProps) {\n const { t } = useTranslation(\"openhands\");\n const isPaused = isExecutionPaused(executionStatus);\n const isActive = isExecutionActive(executionStatus);\n const anchorRef = useRef<HTMLButtonElement>(null);\n const [, bumpPosition] = useReducer((i: number) => i + 1, 0);\n\n useLayoutEffect(() => {\n if (!contextMenuOpen) return undefined;\n // Anchor ref is assigned after the ellipsis mounts; measure on the next frame.\n bumpPosition();\n // The scroll listener is in capture phase so it fires for nested scroll\n // containers too. Coalesce bursts via rAF so fast scrolling triggers at\n // most one reposition per paint frame instead of one per scroll event.\n let frame = 0;\n const update = () => {\n if (frame) return;\n frame = window.requestAnimationFrame(() => {\n frame = 0;\n bumpPosition();\n });\n };\n window.addEventListener(\"resize\", update);\n window.addEventListener(\"scroll\", update, true);\n return () => {\n if (frame) window.cancelAnimationFrame(frame);\n window.removeEventListener(\"resize\", update);\n window.removeEventListener(\"scroll\", update, true);\n };\n }, [contextMenuOpen]);\n\n const floatingStyle: React.CSSProperties | undefined = (() => {\n if (!contextMenuOpen || !anchorRef.current) return undefined;\n const rect = anchorRef.current.getBoundingClientRect();\n const vw = Number(window.innerWidth) || 0;\n const vh = Number(window.innerHeight) || 0;\n const bottom = Number(rect.bottom) || 0;\n const rectRight = Number(rect.right) || 0;\n // Conservative cap on this menu's intrinsic height (~7 items at\n // ~36px + padding). When the anchor is so close to the viewport\n // bottom that opening downward would clip the menu, flip it above\n // the anchor instead. Slight over-estimate is fine — it just means\n // we flip a few pixels earlier than strictly necessary.\n const ESTIMATED_MENU_HEIGHT = 320;\n const gutter = 8;\n const overflowsDownward = bottom + ESTIMATED_MENU_HEIGHT + gutter > vh;\n const top = overflowsDownward\n ? Math.max(gutter, rect.top - ESTIMATED_MENU_HEIGHT - 4)\n : bottom + 4;\n return {\n position: \"fixed\",\n top,\n right: Math.max(gutter, vw - rectRight),\n zIndex: 100_000,\n };\n })();\n\n const portalTarget = typeof document !== \"undefined\" ? document.body : null;\n\n return (\n <>\n <EllipsisButton\n ref={anchorRef}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onContextMenuToggle(!contextMenuOpen);\n }}\n ariaLabel={t(I18nKey.COMMON$MORE_OPTIONS)}\n className={cn(isPaused && \"opacity-60\")}\n />\n {contextMenuOpen && floatingStyle && portalTarget\n ? createPortal(\n <ConversationCardContextMenu\n ignoreOutsideClickRef={anchorRef}\n floatingStyle={floatingStyle}\n onClose={() => onContextMenuToggle(false)}\n onDelete={onDelete}\n onArchive={onArchive}\n onUnarchive={onUnarchive}\n onStop={isActive ? onStop : undefined}\n onEdit={onEdit}\n onDownloadViaVSCode={\n conversationId && showOptions ? onDownloadViaVSCode : undefined\n }\n onDownloadConversation={\n conversationId ? onDownloadConversation : undefined\n }\n position=\"bottom\"\n />,\n portalTarget,\n )\n : null}\n </>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"conversation-card-actions.cjs","names":[],"sources":["../../../../../src/components/features/conversation-panel/conversation-card/conversation-card-actions.tsx"],"sourcesContent":["import React, { useLayoutEffect, useReducer, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"#/utils/utils\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { ExecutionStatus } from \"#/types/agent-server/core/base/common\";\nimport { isExecutionActive, isExecutionPaused } from \"#/utils/status\";\nimport { ConversationCardContextMenu } from \"./conversation-card-context-menu\";\nimport { EllipsisButton } from \"../ellipsis-button\";\n\ninterface ConversationCardActionsProps {\n contextMenuOpen: boolean;\n onContextMenuToggle: (isOpen: boolean) => void;\n onDelete?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onArchive?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onUnarchive?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onStop?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onEdit?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onEditTags?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onDownloadViaVSCode?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onDownloadConversation?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n executionStatus?: ExecutionStatus | null;\n conversationId?: string;\n showOptions?: boolean;\n}\n\nexport function ConversationCardActions({\n contextMenuOpen,\n onContextMenuToggle,\n onDelete,\n onArchive,\n onUnarchive,\n onStop,\n onEdit,\n onEditTags,\n onDownloadViaVSCode,\n onDownloadConversation,\n executionStatus,\n conversationId,\n showOptions,\n}: ConversationCardActionsProps) {\n const { t } = useTranslation(\"openhands\");\n const isPaused = isExecutionPaused(executionStatus);\n const isActive = isExecutionActive(executionStatus);\n const anchorRef = useRef<HTMLButtonElement>(null);\n const [, bumpPosition] = useReducer((i: number) => i + 1, 0);\n\n useLayoutEffect(() => {\n if (!contextMenuOpen) return undefined;\n // Anchor ref is assigned after the ellipsis mounts; measure on the next frame.\n bumpPosition();\n // The scroll listener is in capture phase so it fires for nested scroll\n // containers too. Coalesce bursts via rAF so fast scrolling triggers at\n // most one reposition per paint frame instead of one per scroll event.\n let frame = 0;\n const update = () => {\n if (frame) return;\n frame = window.requestAnimationFrame(() => {\n frame = 0;\n bumpPosition();\n });\n };\n window.addEventListener(\"resize\", update);\n window.addEventListener(\"scroll\", update, true);\n return () => {\n if (frame) window.cancelAnimationFrame(frame);\n window.removeEventListener(\"resize\", update);\n window.removeEventListener(\"scroll\", update, true);\n };\n }, [contextMenuOpen]);\n\n const floatingStyle: React.CSSProperties | undefined = (() => {\n if (!contextMenuOpen || !anchorRef.current) return undefined;\n const rect = anchorRef.current.getBoundingClientRect();\n const vw = Number(window.innerWidth) || 0;\n const vh = Number(window.innerHeight) || 0;\n const bottom = Number(rect.bottom) || 0;\n const rectRight = Number(rect.right) || 0;\n // Conservative cap on this menu's intrinsic height (~7 items at\n // ~36px + padding). When the anchor is so close to the viewport\n // bottom that opening downward would clip the menu, flip it above\n // the anchor instead. Slight over-estimate is fine — it just means\n // we flip a few pixels earlier than strictly necessary.\n const ESTIMATED_MENU_HEIGHT = 320;\n const gutter = 8;\n const overflowsDownward = bottom + ESTIMATED_MENU_HEIGHT + gutter > vh;\n const top = overflowsDownward\n ? Math.max(gutter, rect.top - ESTIMATED_MENU_HEIGHT - 4)\n : bottom + 4;\n return {\n position: \"fixed\",\n top,\n right: Math.max(gutter, vw - rectRight),\n zIndex: 100_000,\n };\n })();\n\n const portalTarget = typeof document !== \"undefined\" ? document.body : null;\n\n return (\n <>\n <EllipsisButton\n ref={anchorRef}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onContextMenuToggle(!contextMenuOpen);\n }}\n ariaLabel={t(I18nKey.COMMON$MORE_OPTIONS)}\n className={cn(isPaused && \"opacity-60\")}\n />\n {contextMenuOpen && floatingStyle && portalTarget\n ? createPortal(\n <ConversationCardContextMenu\n ignoreOutsideClickRef={anchorRef}\n floatingStyle={floatingStyle}\n onClose={() => onContextMenuToggle(false)}\n onDelete={onDelete}\n onArchive={onArchive}\n onUnarchive={onUnarchive}\n onStop={isActive ? onStop : undefined}\n onEdit={onEdit}\n onEditTags={onEditTags}\n onDownloadViaVSCode={\n conversationId && showOptions ? onDownloadViaVSCode : undefined\n }\n onDownloadConversation={\n conversationId ? onDownloadConversation : undefined\n }\n position=\"bottom\"\n />,\n portalTarget,\n )\n : null}\n </>\n );\n}\n"],"mappings":"scA0BA,SAAgB,EAAwB,CACtC,kBACA,sBACA,WACA,YACA,cACA,SACA,SACA,aACA,sBACA,yBACA,kBACA,iBACA,eAC+B,CAC/B,GAAM,CAAE,KAAM,EAAA,eAAe,WAAW,EAClC,EAAW,EAAA,kBAAkB,CAAe,EAC5C,EAAW,EAAA,kBAAkB,CAAe,EAC5C,GAAA,EAAA,EAAA,QAAsC,IAAI,EAC1C,EAAG,IAAA,EAAA,EAAA,YAA4B,GAAc,EAAI,EAAG,CAAC,GAE3D,EAAA,EAAA,qBAAsB,CACpB,GAAI,CAAC,EAAiB,OAEtB,EAAa,EAIb,IAAI,EAAQ,EACN,MAAe,CACf,AACJ,IAAQ,OAAO,0BAA4B,CACzC,EAAQ,EACR,EAAa,CACf,CAAC,CACH,EAGA,OAFA,OAAO,iBAAiB,SAAU,CAAM,EACxC,OAAO,iBAAiB,SAAU,EAAQ,EAAI,MACjC,CACP,GAAO,OAAO,qBAAqB,CAAK,EAC5C,OAAO,oBAAoB,SAAU,CAAM,EAC3C,OAAO,oBAAoB,SAAU,EAAQ,EAAI,CACnD,CACF,EAAG,CAAC,CAAe,CAAC,EAEpB,IAAM,OAAwD,CAC5D,GAAI,CAAC,GAAmB,CAAC,EAAU,QAAS,OAC5C,IAAM,EAAO,EAAU,QAAQ,sBAAsB,EAC/C,EAAK,OAAO,OAAO,UAAU,GAAK,EAClC,EAAK,OAAO,OAAO,WAAW,GAAK,EACnC,EAAS,OAAO,EAAK,MAAM,GAAK,EAChC,EAAY,OAAO,EAAK,KAAK,GAAK,EAYxC,MAAO,CACL,SAAU,QACV,IANwB,EAAS,IAAwB,EAAS,EAEhE,KAAK,IAAI,EAAQ,EAAK,IAAM,IAAwB,CAAC,EACrD,EAAS,EAIX,MAAO,KAAK,IAAI,EAAQ,EAAK,CAAS,EACtC,OAAQ,GACV,CACF,GAAG,EAEG,EAAe,OAAO,SAAa,IAAc,SAAS,KAAO,KAEvE,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAA,eAAD,CACE,IAAK,EACL,QAAU,GAAU,CAClB,EAAM,eAAe,EACrB,EAAM,gBAAgB,EACtB,EAAoB,CAAC,CAAe,CACtC,EACA,UAAW,EAAE,EAAA,QAAQ,mBAAmB,EACxC,UAAW,EAAA,GAAG,GAAY,YAAY,CACvC,CAAA,EACA,GAAmB,GAAiB,GAAA,EAAA,EAAA,eAE/B,EAAA,EAAA,KAAC,EAAA,4BAAD,CACE,sBAAuB,EACR,gBACf,YAAe,EAAoB,EAAK,EAC9B,WACC,YACE,cACb,OAAQ,EAAW,EAAS,IAAA,GACpB,SACI,aACZ,oBACE,GAAkB,EAAc,EAAsB,IAAA,GAExD,uBACE,EAAiB,EAAyB,IAAA,GAE5C,SAAS,QACV,CAAA,EACD,CACF,EACA,IACJ,CAAA,CAAA,CAEN"}
|
package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.d.ts
CHANGED
|
@@ -8,11 +8,12 @@ interface ConversationCardActionsProps {
|
|
|
8
8
|
onUnarchive?: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
9
9
|
onStop?: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
10
10
|
onEdit?: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
11
|
+
onEditTags?: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
11
12
|
onDownloadViaVSCode?: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
12
13
|
onDownloadConversation?: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
13
14
|
executionStatus?: ExecutionStatus | null;
|
|
14
15
|
conversationId?: string;
|
|
15
16
|
showOptions?: boolean;
|
|
16
17
|
}
|
|
17
|
-
export declare function ConversationCardActions({ contextMenuOpen, onContextMenuToggle, onDelete, onArchive, onUnarchive, onStop, onEdit, onDownloadViaVSCode, onDownloadConversation, executionStatus, conversationId, showOptions, }: ConversationCardActionsProps): React.JSX.Element;
|
|
18
|
+
export declare function ConversationCardActions({ contextMenuOpen, onContextMenuToggle, onDelete, onArchive, onUnarchive, onStop, onEdit, onEditTags, onDownloadViaVSCode, onDownloadConversation, executionStatus, conversationId, showOptions, }: ConversationCardActionsProps): React.JSX.Element;
|
|
18
19
|
export {};
|
package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js
CHANGED
|
@@ -8,50 +8,51 @@ import { useLayoutEffect as s, useReducer as c, useRef as l } from "react";
|
|
|
8
8
|
import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
9
9
|
import { createPortal as p } from "react-dom";
|
|
10
10
|
//#region src/components/features/conversation-panel/conversation-card/conversation-card-actions.tsx
|
|
11
|
-
function m({ contextMenuOpen: m, onContextMenuToggle: h, onDelete: g, onArchive: _, onUnarchive: v, onStop: y, onEdit: b,
|
|
12
|
-
let { t:
|
|
11
|
+
function m({ contextMenuOpen: m, onContextMenuToggle: h, onDelete: g, onArchive: _, onUnarchive: v, onStop: y, onEdit: b, onEditTags: x, onDownloadViaVSCode: S, onDownloadConversation: C, executionStatus: w, conversationId: T, showOptions: E }) {
|
|
12
|
+
let { t: D } = e("openhands"), O = r(w), k = n(w), A = l(null), [, j] = c((e) => e + 1, 0);
|
|
13
13
|
s(() => {
|
|
14
14
|
if (!m) return;
|
|
15
|
-
|
|
15
|
+
j();
|
|
16
16
|
let e = 0, t = () => {
|
|
17
17
|
e ||= window.requestAnimationFrame(() => {
|
|
18
|
-
e = 0,
|
|
18
|
+
e = 0, j();
|
|
19
19
|
});
|
|
20
20
|
};
|
|
21
21
|
return window.addEventListener("resize", t), window.addEventListener("scroll", t, !0), () => {
|
|
22
22
|
e && window.cancelAnimationFrame(e), window.removeEventListener("resize", t), window.removeEventListener("scroll", t, !0);
|
|
23
23
|
};
|
|
24
24
|
}, [m]);
|
|
25
|
-
let
|
|
26
|
-
if (!m || !
|
|
27
|
-
let e =
|
|
25
|
+
let M = (() => {
|
|
26
|
+
if (!m || !A.current) return;
|
|
27
|
+
let e = A.current.getBoundingClientRect(), t = Number(window.innerWidth) || 0, n = Number(window.innerHeight) || 0, r = Number(e.bottom) || 0, i = Number(e.right) || 0;
|
|
28
28
|
return {
|
|
29
29
|
position: "fixed",
|
|
30
30
|
top: r + 320 + 8 > n ? Math.max(8, e.top - 320 - 4) : r + 4,
|
|
31
31
|
right: Math.max(8, t - i),
|
|
32
32
|
zIndex: 1e5
|
|
33
33
|
};
|
|
34
|
-
})(),
|
|
34
|
+
})(), N = typeof document < "u" ? document.body : null;
|
|
35
35
|
return /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d(a, {
|
|
36
|
-
ref:
|
|
36
|
+
ref: A,
|
|
37
37
|
onClick: (e) => {
|
|
38
38
|
e.preventDefault(), e.stopPropagation(), h(!m);
|
|
39
39
|
},
|
|
40
|
-
ariaLabel:
|
|
41
|
-
className: i(
|
|
42
|
-
}), m &&
|
|
43
|
-
ignoreOutsideClickRef:
|
|
44
|
-
floatingStyle:
|
|
40
|
+
ariaLabel: D(t.COMMON$MORE_OPTIONS),
|
|
41
|
+
className: i(O && "opacity-60")
|
|
42
|
+
}), m && M && N ? p(/* @__PURE__ */ d(o, {
|
|
43
|
+
ignoreOutsideClickRef: A,
|
|
44
|
+
floatingStyle: M,
|
|
45
45
|
onClose: () => h(!1),
|
|
46
46
|
onDelete: g,
|
|
47
47
|
onArchive: _,
|
|
48
48
|
onUnarchive: v,
|
|
49
|
-
onStop:
|
|
49
|
+
onStop: k ? y : void 0,
|
|
50
50
|
onEdit: b,
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
onEditTags: x,
|
|
52
|
+
onDownloadViaVSCode: T && E ? S : void 0,
|
|
53
|
+
onDownloadConversation: T ? C : void 0,
|
|
53
54
|
position: "bottom"
|
|
54
|
-
}),
|
|
55
|
+
}), N) : null] });
|
|
55
56
|
}
|
|
56
57
|
//#endregion
|
|
57
58
|
export { m as ConversationCardActions };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-card-actions.js","names":[],"sources":["../../../../../src/components/features/conversation-panel/conversation-card/conversation-card-actions.tsx"],"sourcesContent":["import React, { useLayoutEffect, useReducer, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"#/utils/utils\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { ExecutionStatus } from \"#/types/agent-server/core/base/common\";\nimport { isExecutionActive, isExecutionPaused } from \"#/utils/status\";\nimport { ConversationCardContextMenu } from \"./conversation-card-context-menu\";\nimport { EllipsisButton } from \"../ellipsis-button\";\n\ninterface ConversationCardActionsProps {\n contextMenuOpen: boolean;\n onContextMenuToggle: (isOpen: boolean) => void;\n onDelete?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onArchive?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onUnarchive?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onStop?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onEdit?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onDownloadViaVSCode?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onDownloadConversation?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n executionStatus?: ExecutionStatus | null;\n conversationId?: string;\n showOptions?: boolean;\n}\n\nexport function ConversationCardActions({\n contextMenuOpen,\n onContextMenuToggle,\n onDelete,\n onArchive,\n onUnarchive,\n onStop,\n onEdit,\n onDownloadViaVSCode,\n onDownloadConversation,\n executionStatus,\n conversationId,\n showOptions,\n}: ConversationCardActionsProps) {\n const { t } = useTranslation(\"openhands\");\n const isPaused = isExecutionPaused(executionStatus);\n const isActive = isExecutionActive(executionStatus);\n const anchorRef = useRef<HTMLButtonElement>(null);\n const [, bumpPosition] = useReducer((i: number) => i + 1, 0);\n\n useLayoutEffect(() => {\n if (!contextMenuOpen) return undefined;\n // Anchor ref is assigned after the ellipsis mounts; measure on the next frame.\n bumpPosition();\n // The scroll listener is in capture phase so it fires for nested scroll\n // containers too. Coalesce bursts via rAF so fast scrolling triggers at\n // most one reposition per paint frame instead of one per scroll event.\n let frame = 0;\n const update = () => {\n if (frame) return;\n frame = window.requestAnimationFrame(() => {\n frame = 0;\n bumpPosition();\n });\n };\n window.addEventListener(\"resize\", update);\n window.addEventListener(\"scroll\", update, true);\n return () => {\n if (frame) window.cancelAnimationFrame(frame);\n window.removeEventListener(\"resize\", update);\n window.removeEventListener(\"scroll\", update, true);\n };\n }, [contextMenuOpen]);\n\n const floatingStyle: React.CSSProperties | undefined = (() => {\n if (!contextMenuOpen || !anchorRef.current) return undefined;\n const rect = anchorRef.current.getBoundingClientRect();\n const vw = Number(window.innerWidth) || 0;\n const vh = Number(window.innerHeight) || 0;\n const bottom = Number(rect.bottom) || 0;\n const rectRight = Number(rect.right) || 0;\n // Conservative cap on this menu's intrinsic height (~7 items at\n // ~36px + padding). When the anchor is so close to the viewport\n // bottom that opening downward would clip the menu, flip it above\n // the anchor instead. Slight over-estimate is fine — it just means\n // we flip a few pixels earlier than strictly necessary.\n const ESTIMATED_MENU_HEIGHT = 320;\n const gutter = 8;\n const overflowsDownward = bottom + ESTIMATED_MENU_HEIGHT + gutter > vh;\n const top = overflowsDownward\n ? Math.max(gutter, rect.top - ESTIMATED_MENU_HEIGHT - 4)\n : bottom + 4;\n return {\n position: \"fixed\",\n top,\n right: Math.max(gutter, vw - rectRight),\n zIndex: 100_000,\n };\n })();\n\n const portalTarget = typeof document !== \"undefined\" ? document.body : null;\n\n return (\n <>\n <EllipsisButton\n ref={anchorRef}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onContextMenuToggle(!contextMenuOpen);\n }}\n ariaLabel={t(I18nKey.COMMON$MORE_OPTIONS)}\n className={cn(isPaused && \"opacity-60\")}\n />\n {contextMenuOpen && floatingStyle && portalTarget\n ? createPortal(\n <ConversationCardContextMenu\n ignoreOutsideClickRef={anchorRef}\n floatingStyle={floatingStyle}\n onClose={() => onContextMenuToggle(false)}\n onDelete={onDelete}\n onArchive={onArchive}\n onUnarchive={onUnarchive}\n onStop={isActive ? onStop : undefined}\n onEdit={onEdit}\n onDownloadViaVSCode={\n conversationId && showOptions ? onDownloadViaVSCode : undefined\n }\n onDownloadConversation={\n conversationId ? onDownloadConversation : undefined\n }\n position=\"bottom\"\n />,\n portalTarget,\n )\n : null}\n </>\n );\n}\n"],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"conversation-card-actions.js","names":[],"sources":["../../../../../src/components/features/conversation-panel/conversation-card/conversation-card-actions.tsx"],"sourcesContent":["import React, { useLayoutEffect, useReducer, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"#/utils/utils\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { ExecutionStatus } from \"#/types/agent-server/core/base/common\";\nimport { isExecutionActive, isExecutionPaused } from \"#/utils/status\";\nimport { ConversationCardContextMenu } from \"./conversation-card-context-menu\";\nimport { EllipsisButton } from \"../ellipsis-button\";\n\ninterface ConversationCardActionsProps {\n contextMenuOpen: boolean;\n onContextMenuToggle: (isOpen: boolean) => void;\n onDelete?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onArchive?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onUnarchive?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onStop?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onEdit?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onEditTags?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onDownloadViaVSCode?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onDownloadConversation?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n executionStatus?: ExecutionStatus | null;\n conversationId?: string;\n showOptions?: boolean;\n}\n\nexport function ConversationCardActions({\n contextMenuOpen,\n onContextMenuToggle,\n onDelete,\n onArchive,\n onUnarchive,\n onStop,\n onEdit,\n onEditTags,\n onDownloadViaVSCode,\n onDownloadConversation,\n executionStatus,\n conversationId,\n showOptions,\n}: ConversationCardActionsProps) {\n const { t } = useTranslation(\"openhands\");\n const isPaused = isExecutionPaused(executionStatus);\n const isActive = isExecutionActive(executionStatus);\n const anchorRef = useRef<HTMLButtonElement>(null);\n const [, bumpPosition] = useReducer((i: number) => i + 1, 0);\n\n useLayoutEffect(() => {\n if (!contextMenuOpen) return undefined;\n // Anchor ref is assigned after the ellipsis mounts; measure on the next frame.\n bumpPosition();\n // The scroll listener is in capture phase so it fires for nested scroll\n // containers too. Coalesce bursts via rAF so fast scrolling triggers at\n // most one reposition per paint frame instead of one per scroll event.\n let frame = 0;\n const update = () => {\n if (frame) return;\n frame = window.requestAnimationFrame(() => {\n frame = 0;\n bumpPosition();\n });\n };\n window.addEventListener(\"resize\", update);\n window.addEventListener(\"scroll\", update, true);\n return () => {\n if (frame) window.cancelAnimationFrame(frame);\n window.removeEventListener(\"resize\", update);\n window.removeEventListener(\"scroll\", update, true);\n };\n }, [contextMenuOpen]);\n\n const floatingStyle: React.CSSProperties | undefined = (() => {\n if (!contextMenuOpen || !anchorRef.current) return undefined;\n const rect = anchorRef.current.getBoundingClientRect();\n const vw = Number(window.innerWidth) || 0;\n const vh = Number(window.innerHeight) || 0;\n const bottom = Number(rect.bottom) || 0;\n const rectRight = Number(rect.right) || 0;\n // Conservative cap on this menu's intrinsic height (~7 items at\n // ~36px + padding). When the anchor is so close to the viewport\n // bottom that opening downward would clip the menu, flip it above\n // the anchor instead. Slight over-estimate is fine — it just means\n // we flip a few pixels earlier than strictly necessary.\n const ESTIMATED_MENU_HEIGHT = 320;\n const gutter = 8;\n const overflowsDownward = bottom + ESTIMATED_MENU_HEIGHT + gutter > vh;\n const top = overflowsDownward\n ? Math.max(gutter, rect.top - ESTIMATED_MENU_HEIGHT - 4)\n : bottom + 4;\n return {\n position: \"fixed\",\n top,\n right: Math.max(gutter, vw - rectRight),\n zIndex: 100_000,\n };\n })();\n\n const portalTarget = typeof document !== \"undefined\" ? document.body : null;\n\n return (\n <>\n <EllipsisButton\n ref={anchorRef}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onContextMenuToggle(!contextMenuOpen);\n }}\n ariaLabel={t(I18nKey.COMMON$MORE_OPTIONS)}\n className={cn(isPaused && \"opacity-60\")}\n />\n {contextMenuOpen && floatingStyle && portalTarget\n ? createPortal(\n <ConversationCardContextMenu\n ignoreOutsideClickRef={anchorRef}\n floatingStyle={floatingStyle}\n onClose={() => onContextMenuToggle(false)}\n onDelete={onDelete}\n onArchive={onArchive}\n onUnarchive={onUnarchive}\n onStop={isActive ? onStop : undefined}\n onEdit={onEdit}\n onEditTags={onEditTags}\n onDownloadViaVSCode={\n conversationId && showOptions ? onDownloadViaVSCode : undefined\n }\n onDownloadConversation={\n conversationId ? onDownloadConversation : undefined\n }\n position=\"bottom\"\n />,\n portalTarget,\n )\n : null}\n </>\n );\n}\n"],"mappings":";;;;;;;;;;AA0BA,SAAgB,EAAwB,EACtC,oBACA,wBACA,aACA,cACA,gBACA,WACA,WACA,eACA,wBACA,2BACA,oBACA,mBACA,kBAC+B;CAC/B,IAAM,EAAE,SAAM,EAAe,WAAW,GAClC,IAAW,EAAkB,CAAe,GAC5C,IAAW,EAAkB,CAAe,GAC5C,IAAY,EAA0B,IAAI,GAC1C,GAAG,KAAgB,GAAY,MAAc,IAAI,GAAG,CAAC;CAE3D,QAAsB;EACpB,IAAI,CAAC,GAAiB;EAEtB,EAAa;EAIb,IAAI,IAAQ,GACN,UAAe;GACf,AACJ,MAAQ,OAAO,4BAA4B;IAEzC,AADA,IAAQ,GACR,EAAa;GACf,CAAC;EACH;EAGA,OAFA,OAAO,iBAAiB,UAAU,CAAM,GACxC,OAAO,iBAAiB,UAAU,GAAQ,EAAI,SACjC;GAGX,AAFI,KAAO,OAAO,qBAAqB,CAAK,GAC5C,OAAO,oBAAoB,UAAU,CAAM,GAC3C,OAAO,oBAAoB,UAAU,GAAQ,EAAI;EACnD;CACF,GAAG,CAAC,CAAe,CAAC;CAEpB,IAAM,WAAwD;EAC5D,IAAI,CAAC,KAAmB,CAAC,EAAU,SAAS;EAC5C,IAAM,IAAO,EAAU,QAAQ,sBAAsB,GAC/C,IAAK,OAAO,OAAO,UAAU,KAAK,GAClC,IAAK,OAAO,OAAO,WAAW,KAAK,GACnC,IAAS,OAAO,EAAK,MAAM,KAAK,GAChC,IAAY,OAAO,EAAK,KAAK,KAAK;EAYxC,OAAO;GACL,UAAU;GACV,KANwB,IAAS,MAAwB,IAAS,IAEhE,KAAK,IAAI,GAAQ,EAAK,MAAM,MAAwB,CAAC,IACrD,IAAS;GAIX,OAAO,KAAK,IAAI,GAAQ,IAAK,CAAS;GACtC,QAAQ;EACV;CACF,GAAG,GAEG,IAAe,OAAO,WAAa,MAAc,SAAS,OAAO;CAEvE,OACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,KAAK;EACL,UAAU,MAAU;GAGlB,AAFA,EAAM,eAAe,GACrB,EAAM,gBAAgB,GACtB,EAAoB,CAAC,CAAe;EACtC;EACA,WAAW,EAAE,EAAQ,mBAAmB;EACxC,WAAW,EAAG,KAAY,YAAY;CACvC,CAAA,GACA,KAAmB,KAAiB,IACjC,EACE,kBAAC,GAAD;EACE,uBAAuB;EACR;EACf,eAAe,EAAoB,EAAK;EAC9B;EACC;EACE;EACb,QAAQ,IAAW,IAAS,KAAA;EACpB;EACI;EACZ,qBACE,KAAkB,IAAc,IAAsB,KAAA;EAExD,wBACE,IAAiB,IAAyB,KAAA;EAE5C,UAAS;CACV,CAAA,GACD,CACF,IACA,IACJ,EAAA,CAAA;AAEN"}
|