@openhands/agent-canvas 1.12.0 → 1.14.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-BkL3HWa3.js → acp-providers-CYy8qA2z.js} +1 -1
- package/build/assets/active-backend-context-BZDG15C0.js +2 -0
- package/build/assets/{agent-context-settings-CzWS1DgR.js → agent-context-settings-DGWBBbcp.js} +1 -1
- package/build/assets/agent-profiles-settings-DrkGdf4_.js +1 -0
- package/build/assets/agent-server-conversation-service.api-DK56YPTs.js +86 -0
- package/build/assets/{agent-settings-D2J1dKVd.js → agent-settings-DfcSgkLD.js} +2 -2
- package/build/assets/agent-settings-Lrc5-twS.js +1 -0
- package/build/assets/{alert-banner-lrK-2_0Y.js → alert-banner-BgDHhL7b.js} +1 -1
- package/build/assets/api-error-message-BEIE_yD1.js +1 -0
- package/build/assets/{api-key-entry-screen-D70oJj2c.js → api-key-entry-screen-DaZnOlVo.js} +1 -1
- package/build/assets/{app-settings-D0OKHB3M.js → app-settings-BG5NAUbC.js} +1 -1
- package/build/assets/automation-detail-D4Hs831Z.js +3 -0
- package/build/assets/automation-export-n0X6FB0C.js +2 -0
- package/build/assets/automation-git-sync-CDrm8WV7.js +1 -0
- package/build/assets/automation-setup-route-CZCl4ONs.js +1 -0
- package/build/assets/{automation-templates-D9gs6ihu.js → automation-templates-DFF96AdL.js} +1 -1
- package/build/assets/automations-list-Bl-oGOrV.js +1 -0
- package/build/assets/{back-nav-button-B3pYwmUJ.js → back-nav-button-H_ThtDA0.js} +1 -1
- package/build/assets/{backend-form-modal-HwclKrUS.js → backend-form-modal-CbCemvHt.js} +1 -1
- package/build/assets/backend-not-configured-DP8KLNq_.js +1 -0
- package/build/assets/{backend-synced-settings-badge-YI3k09Wr.js → backend-synced-settings-badge-BBASWqsb.js} +1 -1
- package/build/assets/{badge-Dpn3-LTV.js → badge-B-51h-SW.js} +1 -1
- package/build/assets/{base-modal-3NmIOKDm.js → base-modal-BbjycA8X.js} +1 -1
- package/build/assets/bot-CGPCg03p.js +1 -0
- package/build/assets/{brand-button-CJcwjnfb.js → brand-button-Blxv5nww.js} +1 -1
- package/build/assets/browser-CuW0nWvh.js +7 -0
- package/build/assets/{browser-tab-4CPdj3J3.js → browser-tab-D5G0ORwt.js} +1 -1
- package/build/assets/{chat-send-button-B8n6-DQA.js → chat-send-button-BD2tii1r.js} +1 -1
- package/build/assets/check-DSuS-lyr.js +1 -0
- package/build/assets/chevron-down-CgGcmtE2.js +1 -0
- package/build/assets/circle-check-CG5-NPw7.js +1 -0
- package/build/assets/{circle-plus-check-toggle-BVzv5EkZ.js → circle-plus-check-toggle-ASbpB8vN.js} +1 -1
- package/build/assets/cloud-funnel-analytics-GlCUG0gk.js +1 -0
- package/build/assets/cog-CZiR80uT.js +1 -0
- package/build/assets/{combobox-caret-BlmRwiM8.js → combobox-caret-DvpEsh2O.js} +1 -1
- package/build/assets/{command-menu-BKOLj-TC.js → command-menu-DwUQzjYP.js} +1 -1
- package/build/assets/{condenser-settings-DLQogFnB.js → condenser-settings-BptcoiLA.js} +1 -1
- package/build/assets/{confirmation-modal-DAH0XtOp.js → confirmation-modal-CiEwxZAA.js} +1 -1
- package/build/assets/{context-menu-list-item-BQhmFVEK.js → context-menu-list-item-CdcamfM1.js} +1 -1
- package/build/assets/conversation-DREHj4nT.js +1 -0
- package/build/assets/conversation-DotRfiDz.js +90 -0
- package/build/assets/conversation-panel-DREHj4nT.js +1 -0
- package/build/assets/conversation-state-store-DMLtlHbE.js +1 -0
- package/build/assets/conversation-store-Blc5xysY.js +6 -0
- package/build/assets/{conversation-tab-empty-state-C9sfDOlt.js → conversation-tab-empty-state-D-puECpY.js} +1 -1
- package/build/assets/{copy-to-clipboard-button-DatoElj8.js → copy-to-clipboard-button-BGxcUbgy.js} +1 -1
- package/build/assets/{device-verify-BIjXeW9N.js → device-verify-CZJfWaJf.js} +1 -1
- package/build/assets/{dropdown-classes-zFW7qPSK.js → dropdown-classes-tLhpwtxS.js} +1 -1
- package/build/assets/{entry.client-EBn3ZtNP.js → entry.client-D8GnI6GZ.js} +2 -2
- package/build/assets/{enum-filter-dropdown-CctILg5t.js → enum-filter-dropdown-Fk8k60nk.js} +1 -1
- package/build/assets/{environment-switch-overlay-Cvmo6clk.js → environment-switch-overlay-DeztVYuL.js} +1 -1
- package/build/assets/{extensions-hub-BZ3HYztk.js → extensions-hub-Cd6GCYzq.js} +1 -1
- package/build/assets/{extensions-navigation-Bnx32WAb.js → extensions-navigation-C4sgZg-y.js} +1 -1
- package/build/assets/external-link-C0UpBgsE.js +1 -0
- package/build/assets/{file-text-RecuaId_.js → file-text-C6WYtNdV.js} +1 -1
- package/build/assets/files-tab-BW_qzyAm.js +1 -0
- package/build/assets/{form-control-classes-DLN3Qgub.js → form-control-classes-CGXBLcn1.js} +1 -1
- package/build/assets/format-model-name-BNPKVsIq.js +1 -0
- package/build/assets/format-relative-time-ZhQD4rsl.js +1 -0
- package/build/assets/git-provider-icon-CaQ1yLPi.js +1 -0
- package/build/assets/{git-repo-dropdown-B5VnMftu.js → git-repo-dropdown-CgXR6M_E.js} +1 -1
- package/build/assets/git-repo-dropdown-D2Uei3CO.js +1 -0
- package/build/assets/{highlighted-source-view-CgJfD5VT.js → highlighted-source-view-C_YOp8Fo.js} +1 -1
- package/build/assets/home-DNzzJcMP.js +1 -0
- package/build/assets/home-aCos-5vc.js +1 -0
- package/build/assets/{home-store-Cubdq0uP.js → home-store-DgzViC3f.js} +1 -1
- package/build/assets/index-home-DNzzJcMP.js +1 -0
- package/build/assets/info-CLoC1LRo.js +1 -0
- package/build/assets/install-server-modal-D7zIqNKz.js +1 -0
- package/build/assets/kebab-menu-item-content-DERMdnDv.js +1 -0
- package/build/assets/{launch-c4GEP8oo.js → launch-5PjKeLak.js} +1 -1
- package/build/assets/{list-todo-CheUtB7F.js → list-todo-BF049YaY.js} +1 -1
- package/build/assets/llm-not-configured-banner-BK9z5eS0.js +27 -0
- package/build/assets/llm-settings-BLAMK2tR.js +1 -0
- package/build/assets/llm-settings-BWsbarGM.js +1 -0
- package/build/assets/llm-subscription-service-SfnEV9Uc.js +1 -0
- package/build/assets/loader-circle-D7IagAyF.js +1 -0
- package/build/assets/{loading-spinner-CN3riY7k.js → loading-spinner-DBgXgra0.js} +1 -1
- package/build/assets/{manage-backends-modal-DTCME_Pu.js → manage-backends-modal-BTqNPhzc.js} +1 -1
- package/build/assets/manifest-abebca3c.js +1 -0
- package/build/assets/manifest-subpage-layout-Rn-glaxV.js +1 -0
- package/build/assets/{map-provider-7Bp2aih5.js → map-provider-BK4HnqYz.js} +1 -1
- package/build/assets/markdown-renderer-Cp6DlHQN.js +8 -0
- package/build/assets/{mcp-Da7wFU7A.js → mcp-BC-Ixn4T.js} +2 -2
- package/build/assets/mcp-marketplace-utils-BJWJgbB6.js +1 -0
- package/build/assets/messages-CzFKrzPG.js +40 -0
- package/build/assets/{modal-body-duRaxj_K.js → modal-body-BdKfD3Hl.js} +1 -1
- package/build/assets/{modal-classes-CLEXO6dj.js → modal-classes-D5_b5vMi.js} +1 -1
- package/build/assets/{modal-close-button-D0aT02hs.js → modal-close-button-objukxk_.js} +1 -1
- package/build/assets/{mouse-pointer-click-Px-dXWcS.js → mouse-pointer-click-C_gXyLyD.js} +1 -1
- package/build/assets/{npm-Cswluf6-.js → npm-CHVHV1MC.js} +1 -1
- package/build/assets/{onboarding-BKbTYlW1.js → onboarding-Diw0V51A.js} +1 -1
- package/build/assets/onboarding-modal-Da4yHzsA.js +1 -0
- package/build/assets/{organization-service.api-DK8csGvK.js → organization-service.api-BztSy69u.js} +1 -1
- package/build/assets/parse-git-remote-url-BkXN9jzl.js +1 -0
- package/build/assets/pencil-49avMHlD.js +1 -0
- package/build/assets/{planner-tab-D-mZ1I7n.js → planner-tab-CJiSpNax.js} +1 -1
- package/build/assets/{plugins-management-service-CywqyfLK.js → plugins-management-service-lHdNKWNU.js} +1 -1
- package/build/assets/plus-C0BagBpV.js +1 -0
- package/build/assets/profiles-service.api-BLr7FXec.js +1 -0
- package/build/assets/providers-CWXnb7S3.js +1 -0
- package/build/assets/{proxy-b4aqL4SX.js → proxy-DYDXxtje.js} +1 -1
- package/build/assets/{puzzle-B3v361yY.js → puzzle-Bt2B1rzf.js} +1 -1
- package/build/assets/recommended-automations-launcher-CcFMfJRR.js +1 -0
- package/build/assets/refresh-cw-nmcesifB.js +1 -0
- package/build/assets/root-CT4t7apy.css +1 -0
- package/build/assets/root-DnRgLKpU.js +2 -0
- package/build/assets/root-layout-2L9tr-BN.js +2 -0
- package/build/assets/{schema-field-Z-rMg9ti.js → schema-field-C59lVZTA.js} +1 -1
- package/build/assets/{sdk-section-page-m_cjygxR.js → sdk-section-page-BbBEQQjq.js} +1 -1
- package/build/assets/search-CYSDBczG.js +1 -0
- package/build/assets/secrets-service-BtsgYSlj.js +1 -0
- package/build/assets/secrets-settings-DJ0OKa4_.js +1 -0
- package/build/assets/{segmented-toggle-SmvsR3jW.js → segmented-toggle-DiVfTZuN.js} +1 -1
- package/build/assets/{settings-CZPGNens.js → settings-CDqL_Uqh.js} +1 -1
- package/build/assets/{settings-CWFxymAf.js → settings-DcNPxz0v.js} +1 -1
- package/build/assets/{settings-dropdown-input-TWIeiG02.js → settings-dropdown-input-Ba1UN5Du.js} +1 -1
- package/build/assets/{settings-index-Dtlegd6s.js → settings-index-Cz2cKt2K.js} +1 -1
- package/build/assets/{settings-input-D61Vzp9e.js → settings-input-CWUEHHvS.js} +1 -1
- package/build/assets/{settings-list-classes-sE0ASr1s.js → settings-list-classes-DdcLXDGn.js} +1 -1
- package/build/assets/{settings-modal-CalzJP2l.js → settings-modal-nEEK1Kh1.js} +1 -1
- package/build/assets/{settings-service.api-DfPYaxZJ.js → settings-service.api-3yAUFcaP.js} +1 -1
- package/build/assets/{settings-switch-Drt-rF5s.js → settings-switch-Dk9hChx1.js} +1 -1
- package/build/assets/{settings-utils-gw2ppAvw.js → settings-utils-CxjtCSB3.js} +1 -1
- package/build/assets/shared-conversation-DbAcrx3s.js +1 -0
- package/build/assets/shield-check-CiOTXxV2.js +1 -0
- package/build/assets/{sidebar-layout-Dxg6zc2K.js → sidebar-layout-lrfPooIB.js} +1 -1
- package/build/assets/{sidebar-mobile-menu-toggle-C6HpQ55l.js → sidebar-mobile-menu-toggle-KERXfNu1.js} +1 -1
- package/build/assets/{sidebar-nav-link-CxLoG-dG.js → sidebar-nav-link-B8lFD6Cb.js} +1 -1
- package/build/assets/{sidebar-store-BJeYY-E9.js → sidebar-store-u6pUpxJ7.js} +1 -1
- package/build/assets/{skill-card-pill-row-B_BYBONu.js → skill-card-pill-row-dGIUzr_b.js} +1 -1
- package/build/assets/{skill-icon-badge-CN41Hy9l.js → skill-icon-badge-kkOWZ89w.js} +1 -1
- package/build/assets/{skill-scope-Dt1V5X2p.js → skill-scope-DWN1PBPH.js} +1 -1
- package/build/assets/{skills-plugins-B-H0cCOP.js → skills-plugins-DFjH2Nq6.js} +1 -1
- package/build/assets/{skills-settings-DthdIDUb.js → skills-settings-DIHpl3ol.js} +2 -2
- package/build/assets/{sparkles-g7y3r-Ut.js → sparkles-ntyMLnbj.js} +1 -1
- package/build/assets/{styled-tooltip-C5C07RQC.js → styled-tooltip-B6JXcsmL.js} +1 -1
- package/build/assets/{task-list-tab-BTde81Iu.js → task-list-tab-aEJzEcHD.js} +1 -1
- package/build/assets/{terminal-DRrJo-cR.js → terminal-Dch7Ty5K.js} +1 -1
- package/build/assets/{toggle-switch-CIioisto.js → toggle-switch-B2MLKsgt.js} +1 -1
- package/build/assets/trash-2-yZnDM4Ji.js +1 -0
- package/build/assets/{typography-D9tiHct7.js → typography-DB5HoCk0.js} +1 -1
- package/build/assets/usage-tab-DrEtBmBT.js +1 -0
- package/build/assets/use-acp-credential-form-c8KXAa8A.js +1 -0
- package/build/assets/{use-activate-agent-profile-DrPzIKJF.js → use-activate-agent-profile-B0p34N3q.js} +1 -1
- package/build/assets/use-agent-profiles-CPIc6wLH.js +1 -0
- package/build/assets/{use-can-manage-org-profiles-BzE28H3x.js → use-can-manage-org-profiles-Dz_8Eqkv.js} +1 -1
- package/build/assets/{use-cloud-current-user-id-U6HPjy50.js → use-cloud-current-user-id-DvUVqCle.js} +1 -1
- package/build/assets/use-config-C3PO4TBw.js +1 -0
- package/build/assets/use-create-conversation-DVrA_uLD.js +1 -0
- package/build/assets/use-create-secret-DbBIpaCR.js +1 -0
- package/build/assets/use-get-secrets-6PBitf54.js +1 -0
- package/build/assets/use-has-permission-CQ31Cl8j.js +1 -0
- package/build/assets/use-is-authed-2UrDIziV.js +1 -0
- package/build/assets/use-is-creating-conversation-BvYpmb3v.js +1 -0
- package/build/assets/{use-launch-skill-in-chat-BcKNjxxd.js → use-launch-skill-in-chat-COnDpxCQ.js} +1 -1
- package/build/assets/use-llm-profiles-diZS4FiN.js +1 -0
- package/build/assets/use-manifest-capabilities-HIWCtIUm.js +1 -0
- package/build/assets/{use-onboarding-completion-6kWOW3ul.js → use-onboarding-completion-Bs8PcXik.js} +1 -1
- package/build/assets/{use-plugins-marketplace-CqkR8kLE.js → use-plugins-marketplace-BCuNLFsr.js} +1 -1
- package/build/assets/use-save-agent-profile-BaMNSpBV.js +1 -0
- package/build/assets/{use-save-settings-DIEurJ3D.js → use-save-settings-BahvC2Gw.js} +1 -1
- package/build/assets/{use-settings-BmLzQjnC.js → use-settings-C6ZxpBDX.js} +1 -1
- package/build/assets/{use-settings-nav-items-DV9qgeu7.js → use-settings-nav-items-Bqn69Ggw.js} +2 -2
- package/build/assets/use-tracking-Bhu7gk2y.js +3 -0
- package/build/assets/{use-user-conversation-Dt-W6uNw.js → use-user-conversation-BkNXpXrd.js} +1 -1
- package/build/assets/{useInfiniteQuery-DbCv0Jzd.js → useInfiniteQuery-c_OmS3lK.js} +1 -1
- package/build/assets/{useMutation-ChpkYxI5.js → useMutation-6ZsQCqAn.js} +1 -1
- package/build/assets/{useQueries-Cjv3E8_1.js → useQueries-xDrGlTO_.js} +1 -1
- package/build/assets/{useQuery-BCnzy4LX.js → useQuery-Bs5NFz2s.js} +1 -1
- package/build/assets/utils-DUD5ScdA.js +1 -0
- package/build/assets/{vendor~browser-DJ1pl_wn.js → vendor~browser-B-fae1JU.js} +14 -14
- package/build/assets/{vendor~entry.client-CgNUwtQL.js → vendor~entry.client-BFE7Llz9.js} +1 -1
- package/build/assets/{vendor~entry.client-zSIea5EO.js → vendor~entry.client-BaKt_PIp.js} +1 -1
- package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-oGvLV0dO.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js} +3 -3
- package/build/assets/{vendor~files-tab-C87pjSpi.js → vendor~files-tab-B6POTS66.js} +1 -1
- package/build/assets/vendor~index-home~home~conversation-panel~conversation-53Q_U6uP.js +13 -0
- package/build/assets/vendor~root-layout-DeQACFVA.js +1 -0
- package/build/assets/{vendor~root-layout~conversation-panel~conversation-DEzjR4K7.js → vendor~root-layout~conversation-panel~conversation-bv7ooVgH.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-U-xdsAEx.js → vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-e8pX05xf.js} +1 -1
- package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-CQR5Sa0H.js → vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-BvS6PCK2.js} +1 -1
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-CuQhkiS7.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-DOPLJMH9.js} +2 -2
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-Cwhh3zLe.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js} +1 -1
- package/build/assets/{verification-settings-oi54wEc1.js → verification-settings-COueVXmM.js} +1 -1
- package/build/assets/{wrench-B1_H-tL1.js → wrench-C95ujnYo.js} +1 -1
- package/build/assets/x-86ZCfxKY.js +1 -0
- package/build/assets/zap-DRa-r-Tf.js +1 -0
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +88 -3
- package/build/locales/ca/openhands.json +88 -3
- package/build/locales/de/openhands.json +88 -3
- package/build/locales/en/openhands.json +88 -3
- package/build/locales/es/openhands.json +88 -3
- package/build/locales/fr/openhands.json +88 -3
- package/build/locales/it/openhands.json +88 -3
- package/build/locales/ja/openhands.json +88 -3
- package/build/locales/ko-KR/openhands.json +88 -3
- package/build/locales/no/openhands.json +88 -3
- package/build/locales/pt/openhands.json +88 -3
- package/build/locales/tr/openhands.json +88 -3
- package/build/locales/uk/openhands.json +88 -3
- package/build/locales/zh-CN/openhands.json +88 -3
- package/build/locales/zh-TW/openhands.json +88 -3
- package/config/defaults.json +3 -3
- package/dist/api/agent-server-compatibility.cjs +1 -1
- package/dist/api/agent-server-compatibility.cjs.map +1 -1
- package/dist/api/agent-server-compatibility.js +1 -1
- package/dist/api/agent-server-compatibility.js.map +1 -1
- package/dist/api/automation-service/automation-service.api.cjs +1 -1
- package/dist/api/automation-service/automation-service.api.cjs.map +1 -1
- package/dist/api/automation-service/automation-service.api.d.ts +10 -0
- package/dist/api/automation-service/automation-service.api.js +42 -0
- package/dist/api/automation-service/automation-service.api.js.map +1 -1
- package/dist/api/cloud/conversation-service.api.cjs +1 -1
- package/dist/api/cloud/conversation-service.api.cjs.map +1 -1
- package/dist/api/cloud/conversation-service.api.d.ts +9 -0
- package/dist/api/cloud/conversation-service.api.js +11 -1
- package/dist/api/cloud/conversation-service.api.js.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.d.ts +24 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +116 -97
- package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
- package/dist/api/llm-balance-service.cjs +2 -0
- package/dist/api/llm-balance-service.cjs.map +1 -0
- package/dist/api/llm-balance-service.d.ts +33 -0
- package/dist/api/llm-balance-service.js +53 -0
- package/dist/api/llm-balance-service.js.map +1 -0
- package/dist/api/llm-subscription-service.cjs +1 -1
- package/dist/api/llm-subscription-service.cjs.map +1 -1
- package/dist/api/llm-subscription-service.js +42 -34
- package/dist/api/llm-subscription-service.js.map +1 -1
- package/dist/api/profiles-service/profiles-service.api.cjs +1 -1
- package/dist/api/profiles-service/profiles-service.api.cjs.map +1 -1
- package/dist/api/profiles-service/profiles-service.api.d.ts +15 -2
- package/dist/api/profiles-service/profiles-service.api.js +25 -2
- package/dist/api/profiles-service/profiles-service.api.js.map +1 -1
- package/dist/api/secrets-service.cjs +1 -1
- package/dist/api/secrets-service.cjs.map +1 -1
- package/dist/api/secrets-service.d.ts +5 -0
- package/dist/api/secrets-service.js +12 -6
- package/dist/api/secrets-service.js.map +1 -1
- package/dist/components/conversation/index.cjs +1 -1
- package/dist/components/conversation/index.d.ts +0 -1
- package/dist/components/conversation/index.js +0 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.cjs +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.js +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.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.js +24 -23
- 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/index.d.ts +0 -1
- package/dist/components/conversation-events/chat/group-events.cjs +1 -1
- package/dist/components/conversation-events/chat/group-events.cjs.map +1 -1
- package/dist/components/conversation-events/chat/group-events.d.ts +3 -3
- package/dist/components/conversation-events/chat/group-events.js +27 -26
- package/dist/components/conversation-events/chat/group-events.js.map +1 -1
- package/dist/components/features/automations/git-sync/git-sync-activity-row.d.ts +15 -0
- package/dist/components/features/automations/git-sync/git-sync-config-form.d.ts +13 -0
- package/dist/components/features/automations/git-sync/git-sync-error-banner.d.ts +6 -0
- package/dist/components/features/automations/git-sync/git-sync-not-local-state.d.ts +1 -0
- package/dist/components/features/automations/git-sync/git-sync-overview-section.d.ts +12 -0
- package/dist/components/features/automations/git-sync/git-sync-skeleton.d.ts +1 -0
- package/dist/components/features/automations/git-sync/git-sync-status-pill.d.ts +7 -0
- package/dist/components/features/automations/git-sync/git-sync-unsupported-state.d.ts +7 -0
- package/dist/components/features/automations/recommended-automations-section.d.ts +7 -0
- package/dist/components/features/automations/responder-deployment-modal.d.ts +2 -1
- 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 +177 -176
- package/dist/components/features/chat/chat-interface.js.map +1 -1
- package/dist/components/features/chat/components/chat-input-actions.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-actions.cjs.map +1 -1
- package/dist/components/features/chat/components/chat-input-actions.js +123 -118
- package/dist/components/features/chat/components/chat-input-actions.js.map +1 -1
- package/dist/components/features/chat/components/chat-input-grip.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-grip.cjs.map +1 -1
- package/dist/components/features/chat/components/chat-input-grip.d.ts +2 -1
- package/dist/components/features/chat/components/chat-input-grip.js +7 -7
- package/dist/components/features/chat/components/chat-input-grip.js.map +1 -1
- package/dist/components/features/chat/components/context-window-meter.cjs +2 -0
- package/dist/components/features/chat/components/context-window-meter.cjs.map +1 -0
- package/dist/components/features/chat/components/context-window-meter.d.ts +2 -0
- package/dist/components/features/chat/components/context-window-meter.js +131 -0
- package/dist/components/features/chat/components/context-window-meter.js.map +1 -0
- package/dist/components/features/chat/components/context-window-ring.cjs +2 -0
- package/dist/components/features/chat/components/context-window-ring.cjs.map +1 -0
- package/dist/components/features/chat/components/context-window-ring.d.ts +26 -0
- package/dist/components/features/chat/components/context-window-ring.js +45 -0
- package/dist/components/features/chat/components/context-window-ring.js.map +1 -0
- package/dist/components/features/chat/custom-chat-input.cjs +1 -1
- package/dist/components/features/chat/custom-chat-input.cjs.map +1 -1
- package/dist/components/features/chat/custom-chat-input.js +68 -67
- package/dist/components/features/chat/custom-chat-input.js.map +1 -1
- package/dist/components/features/chat/error-message-banner.cjs +1 -1
- package/dist/components/features/chat/error-message-banner.cjs.map +1 -1
- package/dist/components/features/chat/error-message-banner.d.ts +3 -1
- package/dist/components/features/chat/error-message-banner.js +64 -58
- package/dist/components/features/chat/error-message-banner.js.map +1 -1
- package/dist/components/features/chat/path-component.cjs +1 -1
- package/dist/components/features/chat/path-component.cjs.map +1 -1
- package/dist/components/features/chat/path-component.js +9 -6
- package/dist/components/features/chat/path-component.js.map +1 -1
- package/dist/components/features/chat/plan-preview.cjs +1 -1
- package/dist/components/features/chat/plan-preview.js +4 -4
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.d.ts +0 -8
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js +92 -50
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.d.ts +7 -2
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js +15 -9
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/markdown-file-preview.cjs +2 -0
- package/dist/components/features/chat/tool-visualizers/primitives/markdown-file-preview.cjs.map +1 -0
- package/dist/components/features/chat/tool-visualizers/primitives/markdown-file-preview.d.ts +20 -0
- package/dist/components/features/chat/tool-visualizers/primitives/markdown-file-preview.js +76 -0
- package/dist/components/features/chat/tool-visualizers/primitives/markdown-file-preview.js.map +1 -0
- package/dist/components/features/controls/server-status-context-menu.cjs +1 -1
- package/dist/components/features/controls/server-status-context-menu.cjs.map +1 -1
- package/dist/components/features/controls/server-status-context-menu.d.ts +5 -3
- package/dist/components/features/controls/server-status-context-menu.js +8 -8
- package/dist/components/features/controls/server-status-context-menu.js.map +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu.cjs +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu.js +58 -61
- package/dist/components/features/conversation/conversation-name-context-menu.js.map +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.cjs +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.js +74 -46
- package/dist/components/features/conversation/conversation-name-with-status.js.map +1 -1
- package/dist/components/features/conversation/conversation-name.cjs +1 -1
- package/dist/components/features/conversation/conversation-name.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-name.js +69 -71
- package/dist/components/features/conversation/conversation-name.js.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.js +7 -6
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.js.map +1 -1
- 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 +92 -86
- 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 +81 -71
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js.map +1 -1
- package/dist/components/features/conversation/metrics-modal/cost-section.cjs +1 -1
- package/dist/components/features/conversation/metrics-modal/cost-section.cjs.map +1 -1
- package/dist/components/features/conversation/metrics-modal/cost-section.js +6 -6
- package/dist/components/features/conversation/metrics-modal/cost-section.js.map +1 -1
- package/dist/components/features/conversation/metrics-modal/metric-row.cjs +1 -1
- package/dist/components/features/conversation/metrics-modal/metric-row.cjs.map +1 -1
- package/dist/components/features/conversation/metrics-modal/metric-row.d.ts +2 -1
- package/dist/components/features/conversation/metrics-modal/metric-row.js +10 -9
- package/dist/components/features/conversation/metrics-modal/metric-row.js.map +1 -1
- package/dist/components/features/conversation/metrics-modal/usage-section.cjs +1 -1
- package/dist/components/features/conversation/metrics-modal/usage-section.cjs.map +1 -1
- package/dist/components/features/conversation/metrics-modal/usage-section.js +2 -1
- package/dist/components/features/conversation/metrics-modal/usage-section.js.map +1 -1
- package/dist/components/features/conversation/usage-panel/compact-context-button.cjs +2 -0
- package/dist/components/features/conversation/usage-panel/compact-context-button.cjs.map +1 -0
- package/dist/components/features/conversation/usage-panel/compact-context-button.d.ts +16 -0
- package/dist/components/features/conversation/usage-panel/compact-context-button.js +59 -0
- package/dist/components/features/conversation/usage-panel/compact-context-button.js.map +1 -0
- package/dist/components/features/conversation/usage-panel/context-meter.cjs +2 -0
- package/dist/components/features/conversation/usage-panel/context-meter.cjs.map +1 -0
- package/dist/components/features/conversation/usage-panel/context-meter.d.ts +19 -0
- package/dist/components/features/conversation/usage-panel/context-meter.js +46 -0
- package/dist/components/features/conversation/usage-panel/context-meter.js.map +1 -0
- package/dist/components/features/conversation/usage-panel/provider-balance-card.cjs +2 -0
- package/dist/components/features/conversation/usage-panel/provider-balance-card.cjs.map +1 -0
- package/dist/components/features/conversation/usage-panel/provider-balance-card.d.ts +7 -0
- package/dist/components/features/conversation/usage-panel/provider-balance-card.js +57 -0
- package/dist/components/features/conversation/usage-panel/provider-balance-card.js.map +1 -0
- package/dist/components/features/conversation/usage-panel/usage-panel.cjs +2 -0
- package/dist/components/features/conversation/usage-panel/usage-panel.cjs.map +1 -0
- package/dist/components/features/conversation/usage-panel/usage-panel.d.ts +9 -0
- package/dist/components/features/conversation/usage-panel/usage-panel.js +68 -0
- package/dist/components/features/conversation/usage-panel/usage-panel.js.map +1 -0
- package/dist/components/features/conversation-panel/budget-display.cjs +1 -1
- package/dist/components/features/conversation-panel/budget-display.cjs.map +1 -1
- package/dist/components/features/conversation-panel/budget-display.js +10 -13
- package/dist/components/features/conversation-panel/budget-display.js.map +1 -1
- package/dist/components/features/conversation-panel/budget-progress-bar.cjs +1 -1
- package/dist/components/features/conversation-panel/budget-progress-bar.cjs.map +1 -1
- package/dist/components/features/conversation-panel/budget-progress-bar.js +2 -2
- package/dist/components/features/conversation-panel/budget-progress-bar.js.map +1 -1
- package/dist/components/features/conversation-panel/compact-conversation-row.cjs +1 -1
- package/dist/components/features/conversation-panel/compact-conversation-row.js +6 -6
- package/dist/components/features/conversation-panel/confirm-archive-modal.cjs +2 -0
- package/dist/components/features/conversation-panel/confirm-archive-modal.cjs.map +1 -0
- package/dist/components/features/conversation-panel/confirm-archive-modal.d.ts +8 -0
- package/dist/components/features/conversation-panel/confirm-archive-modal.js +48 -0
- package/dist/components/features/conversation-panel/confirm-archive-modal.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 +3 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js +39 -34
- 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 +3 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.js +104 -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-footer.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.d.ts +7 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.js +25 -17
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.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 +9 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.js +94 -84
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-list.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-list.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-list.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-list.js +32 -31
- package/dist/components/features/conversation-panel/conversation-group-folder-list.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-row.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-row.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-row.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-row.js +27 -26
- package/dist/components/features/conversation-panel/conversation-group-folder-row.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.d.ts +3 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js +116 -106
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js.map +1 -1
- 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 +27 -0
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js +69 -46
- 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 +240 -175
- package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.js +22 -25
- package/dist/components/features/files-tab/file-content-viewer.js.map +1 -1
- package/dist/components/features/markdown/markdown-table-scroll.cjs +1 -1
- package/dist/components/features/markdown/markdown-table-scroll.cjs.map +1 -1
- package/dist/components/features/markdown/markdown-table-scroll.js +2 -2
- package/dist/components/features/markdown/markdown-table-scroll.js.map +1 -1
- package/dist/components/features/onboarding/steps/setup-llm-step.d.ts +10 -7
- package/dist/components/shared/buttons/conversation-confirmation-buttons.cjs +1 -1
- package/dist/components/shared/buttons/conversation-confirmation-buttons.cjs.map +1 -1
- package/dist/components/shared/buttons/conversation-confirmation-buttons.js +2 -2
- package/dist/components/shared/buttons/conversation-confirmation-buttons.js.map +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.cjs +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.cjs.map +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.js +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.js.map +1 -1
- package/dist/config/defaults.cjs +1 -1
- package/dist/config/defaults.cjs.map +1 -1
- package/dist/config/defaults.js +3 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/constants/llm-balance.cjs +2 -0
- package/dist/constants/llm-balance.cjs.map +1 -0
- package/dist/constants/llm-balance.d.ts +13 -0
- package/dist/constants/llm-balance.js +6 -0
- package/dist/constants/llm-balance.js.map +1 -0
- package/dist/contexts/conversation-websocket-context.cjs +2 -2
- package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
- package/dist/contexts/conversation-websocket-context.js +227 -219
- package/dist/contexts/conversation-websocket-context.js.map +1 -1
- package/dist/hooks/chat/use-grip-resize.cjs +1 -1
- package/dist/hooks/chat/use-grip-resize.cjs.map +1 -1
- package/dist/hooks/chat/use-grip-resize.d.ts +1 -0
- package/dist/hooks/chat/use-grip-resize.js +39 -30
- package/dist/hooks/chat/use-grip-resize.js.map +1 -1
- package/dist/hooks/mutation/use-condense-conversation.cjs +2 -0
- package/dist/hooks/mutation/use-condense-conversation.cjs.map +1 -0
- package/dist/hooks/mutation/use-condense-conversation.d.ts +12 -0
- package/dist/hooks/mutation/use-condense-conversation.js +17 -0
- package/dist/hooks/mutation/use-condense-conversation.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 +30 -21
- package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
- package/dist/hooks/mutation/use-new-conversation-command.cjs +1 -1
- package/dist/hooks/mutation/use-new-conversation-command.cjs.map +1 -1
- package/dist/hooks/mutation/use-new-conversation-command.js +1 -1
- package/dist/hooks/mutation/use-new-conversation-command.js.map +1 -1
- package/dist/hooks/query/use-commit-changes.cjs +1 -1
- package/dist/hooks/query/use-commit-changes.js +4 -4
- package/dist/hooks/query/use-conversation-metrics.cjs +1 -1
- package/dist/hooks/query/use-conversation-metrics.cjs.map +1 -1
- package/dist/hooks/query/use-conversation-metrics.js +1 -1
- package/dist/hooks/query/use-conversation-metrics.js.map +1 -1
- package/dist/hooks/query/use-git-sync.d.ts +19 -0
- package/dist/hooks/query/use-llm-balance.cjs +2 -0
- package/dist/hooks/query/use-llm-balance.cjs.map +1 -0
- package/dist/hooks/query/use-llm-balance.d.ts +10 -0
- package/dist/hooks/query/use-llm-balance.js +24 -0
- package/dist/hooks/query/use-llm-balance.js.map +1 -0
- package/dist/hooks/query/use-search-providers.cjs +1 -1
- package/dist/hooks/query/use-search-providers.cjs.map +1 -1
- package/dist/hooks/query/use-search-providers.js +1 -1
- package/dist/hooks/query/use-search-providers.js.map +1 -1
- package/dist/hooks/query/use-task-polling.cjs +1 -1
- package/dist/hooks/query/use-task-polling.cjs.map +1 -1
- package/dist/hooks/query/use-task-polling.js +12 -10
- package/dist/hooks/query/use-task-polling.js.map +1 -1
- package/dist/hooks/query/use-unified-get-git-changes.cjs +1 -1
- package/dist/hooks/query/use-unified-get-git-changes.js +4 -4
- package/dist/hooks/query/use-unified-git-commits.cjs +1 -1
- package/dist/hooks/query/use-unified-git-commits.js +4 -4
- package/dist/hooks/query/use-unified-git-diff.cjs +1 -1
- package/dist/hooks/query/use-unified-git-diff.js +4 -4
- package/dist/hooks/query/use-workspace-files.cjs +1 -1
- package/dist/hooks/query/use-workspace-files.cjs.map +1 -1
- package/dist/hooks/query/use-workspace-files.d.ts +14 -4
- package/dist/hooks/query/use-workspace-files.js +45 -32
- package/dist/hooks/query/use-workspace-files.js.map +1 -1
- package/dist/hooks/use-await-context-compaction.cjs +2 -0
- package/dist/hooks/use-await-context-compaction.cjs.map +1 -0
- package/dist/hooks/use-await-context-compaction.d.ts +38 -0
- package/dist/hooks/use-await-context-compaction.js +61 -0
- package/dist/hooks/use-await-context-compaction.js.map +1 -0
- package/dist/hooks/use-compact-context-action.cjs +2 -0
- package/dist/hooks/use-compact-context-action.cjs.map +1 -0
- package/dist/hooks/use-compact-context-action.d.ts +10 -0
- package/dist/hooks/use-compact-context-action.js +61 -0
- package/dist/hooks/use-compact-context-action.js.map +1 -0
- package/dist/hooks/use-context-window-usage.cjs +2 -0
- package/dist/hooks/use-context-window-usage.cjs.map +1 -0
- package/dist/hooks/use-context-window-usage.d.ts +5 -0
- package/dist/hooks/use-context-window-usage.js +20 -0
- package/dist/hooks/use-context-window-usage.js.map +1 -0
- package/dist/hooks/use-conversation-name-context-menu.cjs +1 -1
- package/dist/hooks/use-conversation-name-context-menu.cjs.map +1 -1
- package/dist/hooks/use-conversation-name-context-menu.d.ts +0 -3
- package/dist/hooks/use-conversation-name-context-menu.js +54 -57
- package/dist/hooks/use-conversation-name-context-menu.js.map +1 -1
- package/dist/hooks/use-drag-resize.cjs +1 -1
- package/dist/hooks/use-drag-resize.cjs.map +1 -1
- package/dist/hooks/use-drag-resize.d.ts +8 -0
- package/dist/hooks/use-drag-resize.js +21 -18
- package/dist/hooks/use-drag-resize.js.map +1 -1
- package/dist/hooks/use-live-conversation-metrics.cjs +2 -0
- package/dist/hooks/use-live-conversation-metrics.cjs.map +1 -0
- package/dist/hooks/use-live-conversation-metrics.d.ts +18 -0
- package/dist/hooks/use-live-conversation-metrics.js +37 -0
- package/dist/hooks/use-live-conversation-metrics.js.map +1 -0
- package/dist/hooks/use-responder-url-secret.d.ts +5 -0
- package/dist/hooks/use-select-conversation-tab.cjs +1 -1
- package/dist/hooks/use-select-conversation-tab.cjs.map +1 -1
- package/dist/hooks/use-select-conversation-tab.js +2 -2
- package/dist/hooks/use-select-conversation-tab.js.map +1 -1
- package/dist/hooks/use-tracking.cjs +1 -1
- package/dist/hooks/use-tracking.cjs.map +1 -1
- package/dist/hooks/use-tracking.d.ts +6 -0
- package/dist/hooks/use-tracking.js +6 -0
- package/dist/hooks/use-tracking.js.map +1 -1
- package/dist/i18n/declaration.cjs +1 -1
- package/dist/i18n/declaration.cjs.map +1 -1
- package/dist/i18n/declaration.d.ts +86 -1
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +2 -2
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +1475 -30
- package/dist/i18n/translation.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +28 -29
- package/dist/lib/index.cjs +1 -1
- package/dist/lib/index.js +0 -1
- package/dist/locales/ar/openhands.json +88 -3
- package/dist/locales/ca/openhands.json +88 -3
- package/dist/locales/de/openhands.json +88 -3
- package/dist/locales/en/openhands.json +88 -3
- package/dist/locales/es/openhands.json +88 -3
- package/dist/locales/fr/openhands.json +88 -3
- package/dist/locales/it/openhands.json +88 -3
- package/dist/locales/ja/openhands.json +88 -3
- package/dist/locales/ko-KR/openhands.json +88 -3
- package/dist/locales/no/openhands.json +88 -3
- package/dist/locales/pt/openhands.json +88 -3
- package/dist/locales/tr/openhands.json +88 -3
- package/dist/locales/uk/openhands.json +88 -3
- package/dist/locales/zh-CN/openhands.json +88 -3
- package/dist/locales/zh-TW/openhands.json +88 -3
- package/dist/node_modules/@microlink/react-json-view/dist/main.cjs +5 -5
- package/dist/node_modules/@microlink/react-json-view/dist/main.cjs.map +1 -1
- package/dist/node_modules/@microlink/react-json-view/dist/main.js +5194 -5187
- package/dist/node_modules/@microlink/react-json-view/dist/main.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.cjs +2 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.js +21 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.cjs +2 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.js +22 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.cjs +2 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.js +33 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.js +56 -22
- package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/profiles-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/profiles-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/profiles-client.js +3 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/profiles-client.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.cjs +2 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.js +31 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.cjs +2 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.js +21 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.cjs +2 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.js +21 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/local-conversation.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/local-conversation.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.js +9 -5
- package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.js.map +1 -1
- package/dist/node_modules/i18next-http-backend/esm/index.cjs +1 -1
- package/dist/node_modules/i18next-http-backend/esm/index.cjs.map +1 -1
- package/dist/node_modules/i18next-http-backend/esm/index.js +2 -2
- package/dist/node_modules/i18next-http-backend/esm/index.js.map +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/archive-restore.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/archive-restore.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/archive-restore.js +31 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/archive-restore.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/archive.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/archive.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/archive.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/archive.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.js +27 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/gauge.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/gauge.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/gauge.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/gauge.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/minimize.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/minimize.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/minimize.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/minimize.js.map +1 -0
- package/dist/node_modules/zustand/esm/middleware.cjs +3 -3
- package/dist/node_modules/zustand/esm/middleware.cjs.map +1 -1
- package/dist/node_modules/zustand/esm/middleware.js +33 -31
- package/dist/node_modules/zustand/esm/middleware.js.map +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +17 -16
- package/dist/package.js.map +1 -1
- package/dist/routes/files-tab.cjs +1 -1
- package/dist/routes/files-tab.js +11 -11
- package/dist/routes/files-tab.js.map +1 -1
- package/dist/routes/usage-tab.cjs +2 -0
- package/dist/routes/usage-tab.cjs.map +1 -0
- package/dist/routes/usage-tab.d.ts +2 -0
- package/dist/routes/usage-tab.js +10 -0
- package/dist/routes/usage-tab.js.map +1 -0
- package/dist/services/child-conversation-launch.cjs +1 -1
- package/dist/services/child-conversation-launch.cjs.map +1 -1
- package/dist/services/child-conversation-launch.js +11 -5
- package/dist/services/child-conversation-launch.js.map +1 -1
- package/dist/services/settings.cjs +1 -1
- package/dist/services/settings.cjs.map +1 -1
- package/dist/services/settings.js +2 -2
- package/dist/services/settings.js.map +1 -1
- package/dist/services/telemetry.cjs +1 -1
- package/dist/services/telemetry.cjs.map +1 -1
- package/dist/services/telemetry.js +47 -51
- package/dist/services/telemetry.js.map +1 -1
- package/dist/stores/archived-conversations-store.cjs +2 -0
- package/dist/stores/archived-conversations-store.cjs.map +1 -0
- package/dist/stores/archived-conversations-store.d.ts +24 -0
- package/dist/stores/archived-conversations-store.js +33 -0
- package/dist/stores/archived-conversations-store.js.map +1 -0
- 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 +3 -0
- package/dist/stores/conversation-panel-preferences-store.js +4 -0
- package/dist/stores/conversation-panel-preferences-store.js.map +1 -1
- package/dist/stores/conversation-store.cjs.map +1 -1
- package/dist/stores/conversation-store.d.ts +1 -1
- package/dist/stores/conversation-store.js.map +1 -1
- package/dist/stores/error-message-store.cjs +1 -1
- package/dist/stores/error-message-store.cjs.map +1 -1
- package/dist/stores/error-message-store.d.ts +3 -1
- package/dist/stores/error-message-store.js +5 -3
- package/dist/stores/error-message-store.js.map +1 -1
- package/dist/stores/metrics-store.cjs +1 -1
- package/dist/stores/metrics-store.cjs.map +1 -1
- package/dist/stores/metrics-store.d.ts +1 -0
- package/dist/stores/metrics-store.js +7 -4
- package/dist/stores/metrics-store.js.map +1 -1
- package/dist/types/agent-server/core/events/condensation-event.d.ts +3 -0
- package/dist/types/agent-server/core/events/conversation-state-event.d.ts +4 -6
- package/dist/types/agent-server/type-guards.cjs +1 -1
- package/dist/types/agent-server/type-guards.cjs.map +1 -1
- package/dist/types/agent-server/type-guards.d.ts +5 -0
- package/dist/types/agent-server/type-guards.js +3 -3
- package/dist/types/agent-server/type-guards.js.map +1 -1
- package/dist/types/git-sync.d.ts +51 -0
- package/dist/utils/conversation-local-storage.cjs +1 -1
- package/dist/utils/conversation-local-storage.cjs.map +1 -1
- package/dist/utils/conversation-local-storage.js +2 -1
- package/dist/utils/conversation-local-storage.js.map +1 -1
- package/dist/utils/error-handler.cjs +1 -1
- package/dist/utils/error-handler.cjs.map +1 -1
- package/dist/utils/error-handler.d.ts +3 -2
- package/dist/utils/error-handler.js +18 -5
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/format-model-name.cjs +1 -1
- package/dist/utils/format-model-name.cjs.map +1 -1
- package/dist/utils/format-model-name.d.ts +1 -0
- package/dist/utils/format-model-name.js +1 -0
- package/dist/utils/format-model-name.js.map +1 -1
- package/dist/utils/format-token-count.cjs +2 -0
- package/dist/utils/format-token-count.cjs.map +1 -0
- package/dist/utils/format-token-count.d.ts +3 -0
- package/dist/utils/format-token-count.js +19 -0
- package/dist/utils/format-token-count.js.map +1 -0
- package/dist/utils/hover-reveal-classes.cjs +2 -0
- package/dist/utils/hover-reveal-classes.cjs.map +1 -0
- package/dist/utils/hover-reveal-classes.d.ts +34 -0
- package/dist/utils/hover-reveal-classes.js +41 -0
- package/dist/utils/hover-reveal-classes.js.map +1 -0
- package/dist/utils/is-markdown-file-path.cjs +2 -0
- package/dist/utils/is-markdown-file-path.cjs.map +1 -0
- package/dist/utils/is-markdown-file-path.d.ts +4 -0
- package/dist/utils/is-markdown-file-path.js +14 -0
- package/dist/utils/is-markdown-file-path.js.map +1 -0
- package/dist/utils/mcp-marketplace-utils.cjs +1 -1
- package/dist/utils/mcp-marketplace-utils.cjs.map +1 -1
- package/dist/utils/mcp-marketplace-utils.d.ts +7 -0
- package/dist/utils/mcp-marketplace-utils.js +19 -16
- package/dist/utils/mcp-marketplace-utils.js.map +1 -1
- package/dist/utils/transcript-export/index.cjs +3 -3
- package/dist/utils/transcript-export/index.cjs.map +1 -1
- package/dist/utils/transcript-export/index.js +12 -12
- package/dist/utils/transcript-export/index.js.map +1 -1
- package/dist/utils/transcript-export/load-complete-events.cjs +1 -1
- package/dist/utils/transcript-export/load-complete-events.cjs.map +1 -1
- package/dist/utils/transcript-export/load-complete-events.js +25 -17
- package/dist/utils/transcript-export/load-complete-events.js.map +1 -1
- package/dist/utils/workspace-relative-path.cjs +2 -0
- package/dist/utils/workspace-relative-path.cjs.map +1 -0
- package/dist/utils/workspace-relative-path.d.ts +10 -0
- package/dist/utils/workspace-relative-path.js +22 -0
- package/dist/utils/workspace-relative-path.js.map +1 -0
- package/package.json +17 -16
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/check-translation-completeness.cjs +3 -0
- package/scripts/dev-process-utils.mjs +6 -1
- package/scripts/dev-safe.mjs +57 -2
- package/scripts/dev-with-automation.mjs +98 -9
- package/build/assets/active-backend-context-B_bg5h9O.js +0 -2
- package/build/assets/agent-profiles-settings-hd2cAIZM.js +0 -1
- package/build/assets/agent-server-conversation-service.api-BheU4HX3.js +0 -86
- package/build/assets/agent-settings-D_SVrWhI.js +0 -1
- package/build/assets/automation-detail-C0SxWTnQ.js +0 -3
- package/build/assets/automation-export-BjQa_fT6.js +0 -2
- package/build/assets/automation-setup-route-BzCNpljP.js +0 -1
- package/build/assets/automations-list-dZg8zOCl.js +0 -1
- package/build/assets/bot-DuN83i3p.js +0 -1
- package/build/assets/browser--eoQOo4M.js +0 -6
- package/build/assets/check-DLOKoFU9.js +0 -1
- package/build/assets/chevron-down-CnIbtM6i.js +0 -1
- package/build/assets/circle-check-CxCYJrpZ.js +0 -1
- package/build/assets/cloud-funnel-analytics-CcSez21r.js +0 -1
- package/build/assets/conversation-Cmyw9bFh.js +0 -90
- package/build/assets/conversation-CvoGZ5vC.js +0 -1
- package/build/assets/conversation-panel-CvoGZ5vC.js +0 -1
- package/build/assets/conversation-state-store-CtgILxWF.js +0 -1
- package/build/assets/conversation-store-B8Eahyeg.js +0 -6
- package/build/assets/external-link-zWbg5KXS.js +0 -1
- package/build/assets/files-tab-D5zuU5TY.js +0 -1
- package/build/assets/format-model-name-BN_rx1Y3.js +0 -1
- package/build/assets/format-relative-time-BerVamGl.js +0 -1
- package/build/assets/git-provider-icon-zuKz2cwo.js +0 -1
- package/build/assets/git-repo-dropdown-Bo7ciSNX.js +0 -1
- package/build/assets/home-DqyeeFA_.js +0 -1
- package/build/assets/home-Y0aDou-a.js +0 -1
- package/build/assets/index-home-DqyeeFA_.js +0 -1
- package/build/assets/info-C9lpK5pw.js +0 -1
- package/build/assets/install-server-modal-DW6dSyGr.js +0 -1
- package/build/assets/kebab-menu-item-content-CKydZrbH.js +0 -1
- package/build/assets/llm-not-configured-banner-DCE_0B4I.js +0 -27
- package/build/assets/llm-settings-8eWBF3Ij.js +0 -1
- package/build/assets/llm-settings-D9ko42Pi.js +0 -1
- package/build/assets/llm-subscription-service-B3K-97lP.js +0 -1
- package/build/assets/loader-circle-C5AnEN8r.js +0 -1
- package/build/assets/manifest-e1c3bc3b.js +0 -1
- package/build/assets/manifest-subpage-layout-Ds7G5GZ8.js +0 -1
- package/build/assets/markdown-renderer-DzvgdZey.js +0 -8
- package/build/assets/mcp-marketplace-utils-DSLou4n7.js +0 -1
- package/build/assets/messages-B2l0qLVk.js +0 -40
- package/build/assets/onboarding-modal-DrrGlEQq.js +0 -1
- package/build/assets/pencil-Bl3GWhgq.js +0 -1
- package/build/assets/plus-CtzlyAoF.js +0 -1
- package/build/assets/profiles-service.api-vcE_jJCe.js +0 -1
- package/build/assets/providers-CdrPPm0z.js +0 -1
- package/build/assets/recommended-automations-launcher-DIYgUdMm.js +0 -1
- package/build/assets/refresh-cw-B9GhC3QC.js +0 -1
- package/build/assets/root-CBBi6IAe.js +0 -2
- package/build/assets/root-CRK9fOFd.css +0 -1
- package/build/assets/root-layout-BFN2rCOy.js +0 -2
- package/build/assets/search-CYaiKHRp.js +0 -1
- package/build/assets/secrets-service-BHF4fxML.js +0 -1
- package/build/assets/secrets-settings-aBGXtQhX.js +0 -1
- package/build/assets/shared-conversation-BIAcuORk.js +0 -1
- package/build/assets/shield-check-D2cpEpv3.js +0 -1
- package/build/assets/trash-2-CzDVN-Iw.js +0 -1
- package/build/assets/use-acp-credential-form-DGyo0QvL.js +0 -1
- package/build/assets/use-agent-profiles-B37XWDLq.js +0 -1
- package/build/assets/use-config-DapX3pjC.js +0 -1
- package/build/assets/use-create-conversation-CRf1dCm5.js +0 -1
- package/build/assets/use-create-secret-DcpT3RPw.js +0 -1
- package/build/assets/use-is-authed-Bka89Xmm.js +0 -1
- package/build/assets/use-is-creating-conversation-CVefC9Ns.js +0 -1
- package/build/assets/use-llm-profiles-CHxqoHiN.js +0 -1
- package/build/assets/use-manifest-capabilities-zihHDbMW.js +0 -1
- package/build/assets/use-save-agent-profile-CH9_EXQG.js +0 -1
- package/build/assets/use-tracking-salbPJxT.js +0 -3
- package/build/assets/utils-DPQfkd-7.js +0 -1
- package/build/assets/vendor~index-home~home~conversation-panel~conversation-DiXf0dkj.js +0 -13
- package/build/assets/x-RYDBg-e2.js +0 -1
- package/build/assets/zap-tbKDzCe3.js +0 -1
- package/dist/api/cloud/suggestions-service.api.d.ts +0 -8
- package/dist/api/suggestions-service/suggestions-service.api.d.ts +0 -11
- package/dist/components/conversation-events/chat/event-message-components/observation-pair-event-message.d.ts +0 -7
- package/dist/components/conversation-events/index.d.ts +0 -1
- package/dist/components/features/automations/metadata-chip.d.ts +0 -6
- package/dist/components/features/chat/task-tracking/status-badge.d.ts +0 -5
- package/dist/components/features/chat/task-tracking/status-icon.d.ts +0 -5
- package/dist/components/features/chat/task-tracking/task-list-section.d.ts +0 -10
- package/dist/components/features/controls/tools.d.ts +0 -2
- package/dist/components/features/conversation/metrics-modal/context-window-section.cjs +0 -2
- package/dist/components/features/conversation/metrics-modal/context-window-section.cjs.map +0 -1
- package/dist/components/features/conversation/metrics-modal/context-window-section.d.ts +0 -6
- package/dist/components/features/conversation/metrics-modal/context-window-section.js +0 -46
- package/dist/components/features/conversation/metrics-modal/context-window-section.js.map +0 -1
- package/dist/components/features/conversation/metrics-modal/empty-state.cjs +0 -2
- package/dist/components/features/conversation/metrics-modal/empty-state.cjs.map +0 -1
- package/dist/components/features/conversation/metrics-modal/empty-state.d.ts +0 -1
- package/dist/components/features/conversation/metrics-modal/empty-state.js +0 -18
- package/dist/components/features/conversation/metrics-modal/empty-state.js.map +0 -1
- package/dist/components/features/conversation/metrics-modal/metrics-modal-header.cjs +0 -2
- package/dist/components/features/conversation/metrics-modal/metrics-modal-header.cjs.map +0 -1
- package/dist/components/features/conversation/metrics-modal/metrics-modal-header.d.ts +0 -5
- package/dist/components/features/conversation/metrics-modal/metrics-modal-header.js +0 -20
- package/dist/components/features/conversation/metrics-modal/metrics-modal-header.js.map +0 -1
- package/dist/components/features/conversation/metrics-modal/metrics-modal.cjs +0 -2
- package/dist/components/features/conversation/metrics-modal/metrics-modal.cjs.map +0 -1
- package/dist/components/features/conversation/metrics-modal/metrics-modal.d.ts +0 -6
- package/dist/components/features/conversation/metrics-modal/metrics-modal.js +0 -57
- package/dist/components/features/conversation/metrics-modal/metrics-modal.js.map +0 -1
- package/dist/components/features/conversation-panel/new-conversation-button.d.ts +0 -23
- package/dist/components/features/home/home-header/guide-message.d.ts +0 -1
- package/dist/components/features/home/home-header/home-header.d.ts +0 -1
- package/dist/components/features/home/new-conversation/create-conversation-button.d.ts +0 -1
- package/dist/components/features/home/new-conversation/new-conversation.d.ts +0 -1
- package/dist/components/features/home/new-conversation.d.ts +0 -1
- package/dist/components/features/home/tasks/task-card.d.ts +0 -6
- package/dist/components/features/home/tasks/task-group.d.ts +0 -7
- package/dist/components/features/home/tasks/task-issue-number.d.ts +0 -6
- package/dist/components/features/home/tasks/task-item-title.d.ts +0 -1
- package/dist/components/features/home/tasks/task-suggestions-skeleton.d.ts +0 -1
- package/dist/components/features/home/tasks/task-suggestions.d.ts +0 -6
- package/dist/components/features/settings/agent-server-onboarding.d.ts +0 -10
- package/dist/components/features/settings/mcp-settings/mcp-server-list-item.d.ts +0 -6
- package/dist/components/features/settings/mcp-settings/mcp-server-list.d.ts +0 -8
- package/dist/hooks/query/use-suggested-tasks.d.ts +0 -1
- package/dist/hooks/use-should-show-user-features.d.ts +0 -1
- package/dist/icons/u-credit-card.cjs +0 -2
- package/dist/icons/u-credit-card.cjs.map +0 -1
- package/dist/icons/u-credit-card.js +0 -21
- package/dist/icons/u-credit-card.js.map +0 -1
- package/dist/ui/card-title.d.ts +0 -16
- package/dist/ui/card.d.ts +0 -14
- package/dist/utils/group-suggested-tasks.d.ts +0 -7
- /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~cy4jtuc2-rfV8mQ9m.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dcc51rps-rfV8mQ9m.js} +0 -0
- /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~lq5hicxx-cHFhpUBq.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js} +0 -0
- /package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~9pstowjp-BOVIFA_g.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-BOVIFA_g.js} +0 -0
- /package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~ht43enc2-C0JXQb_q.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-C0JXQb_q.js} +0 -0
|
@@ -1,59 +1,87 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
12
|
-
import
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import "
|
|
16
|
-
import {
|
|
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 { AgentState as n } from "../../../types/agent-state.js";
|
|
4
|
+
import { isExecutionActive as r, isExecutionErrored as i, isExecutionPaused as a } from "../../../utils/status.js";
|
|
5
|
+
import { cn as o, getStatusColor as s } from "../../../utils/utils.js";
|
|
6
|
+
import { useConversationId as c } from "../../../hooks/use-conversation-id.js";
|
|
7
|
+
import { useActiveConversation as l } from "../../../hooks/query/use-active-conversation.js";
|
|
8
|
+
import { useAgentState as u } from "../../../hooks/use-agent-state.js";
|
|
9
|
+
import { useTaskPolling as d } from "../../../hooks/query/use-task-polling.js";
|
|
10
|
+
import { useUnifiedPauseConversation as f } from "../../../hooks/mutation/use-unified-stop-conversation.js";
|
|
11
|
+
import { useUserProviders as p } from "../../../hooks/use-user-providers.js";
|
|
12
|
+
import m from "../../../icons/debug-stackframe-dot.js";
|
|
13
|
+
import { useUnifiedResumeConversation as h } from "../../../hooks/mutation/use-unified-start-conversation.js";
|
|
14
|
+
import { ServerStatusContextMenu as g } from "../controls/server-status-context-menu.js";
|
|
15
|
+
import { ConversationName as _ } from "./conversation-name.js";
|
|
16
|
+
import { RightPanelToggle as v } from "./right-panel-toggle.js";
|
|
17
|
+
import y from "react";
|
|
18
|
+
import { jsx as b, jsxs as x } from "react/jsx-runtime";
|
|
17
19
|
//#region src/components/features/conversation/conversation-name-with-status.tsx
|
|
18
|
-
function
|
|
19
|
-
let { conversationId:
|
|
20
|
-
|
|
20
|
+
function S() {
|
|
21
|
+
let { t: S } = e("openhands"), { conversationId: C } = c(), { data: w } = l(), { curAgentState: T } = u(), { isTask: E, taskStatus: D } = d(), { mutate: O } = f(), { mutate: k } = h(), { providers: A } = p(), [j, M] = y.useState(!1), [N, P] = y.useState(!1), F = y.useRef(null), I = w?.execution_status ?? null, L = s({
|
|
22
|
+
isPausing: !1,
|
|
23
|
+
isTask: E,
|
|
24
|
+
taskStatus: D,
|
|
25
|
+
isStartingStatus: T === n.LOADING || T === n.INIT,
|
|
26
|
+
isStopStatus: i(I),
|
|
27
|
+
curAgentState: T
|
|
28
|
+
}), R = j || N, z = () => {
|
|
29
|
+
M(!1), P(!1);
|
|
30
|
+
};
|
|
31
|
+
return /* @__PURE__ */ x("div", {
|
|
21
32
|
className: "flex items-center justify-between w-full",
|
|
22
|
-
children: [/* @__PURE__ */
|
|
33
|
+
children: [/* @__PURE__ */ x("div", {
|
|
23
34
|
className: "flex items-center min-w-0",
|
|
24
|
-
children: [/* @__PURE__ */
|
|
25
|
-
className: "
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
children: [/* @__PURE__ */ x("div", {
|
|
36
|
+
className: "relative shrink-0",
|
|
37
|
+
onPointerEnter: (e) => {
|
|
38
|
+
e.pointerType === "mouse" && P(!0);
|
|
39
|
+
},
|
|
40
|
+
onPointerLeave: (e) => {
|
|
41
|
+
e.pointerType === "mouse" && P(!1);
|
|
42
|
+
},
|
|
43
|
+
children: [/* @__PURE__ */ b("button", {
|
|
44
|
+
ref: F,
|
|
45
|
+
type: "button",
|
|
46
|
+
"data-testid": "server-status-menu-trigger",
|
|
47
|
+
"aria-label": S(t.COMMON$SERVER_STATUS),
|
|
48
|
+
"aria-expanded": R,
|
|
49
|
+
"aria-haspopup": "menu",
|
|
50
|
+
onClick: (e) => {
|
|
51
|
+
if (e.preventDefault(), e.stopPropagation(), R) {
|
|
52
|
+
z();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
M(!0);
|
|
56
|
+
},
|
|
57
|
+
className: o("flex items-center justify-center rounded-md", "text-[var(--oh-muted)] hover:bg-white/10"),
|
|
58
|
+
children: /* @__PURE__ */ b(m, {
|
|
59
|
+
className: "ml-[3.5px] w-6 h-6 cursor-pointer",
|
|
60
|
+
color: L,
|
|
61
|
+
"aria-hidden": !0
|
|
35
62
|
})
|
|
36
|
-
}), /* @__PURE__ */ g
|
|
37
|
-
onClose:
|
|
38
|
-
|
|
39
|
-
|
|
63
|
+
}), R ? /* @__PURE__ */ b(g, {
|
|
64
|
+
onClose: z,
|
|
65
|
+
ignoreOutsideClickRef: F,
|
|
66
|
+
onStopServer: r(I) ? (e) => {
|
|
67
|
+
e.preventDefault(), e.stopPropagation(), C && O({ conversationId: C }), z();
|
|
40
68
|
} : void 0,
|
|
41
|
-
onStartServer:
|
|
42
|
-
e.preventDefault(), e.stopPropagation(),
|
|
43
|
-
conversationId:
|
|
44
|
-
providers:
|
|
45
|
-
});
|
|
69
|
+
onStartServer: a(I) ? (e) => {
|
|
70
|
+
e.preventDefault(), e.stopPropagation(), C && k({
|
|
71
|
+
conversationId: C,
|
|
72
|
+
providers: A
|
|
73
|
+
}), z();
|
|
46
74
|
} : void 0,
|
|
47
|
-
executionStatus:
|
|
75
|
+
executionStatus: I,
|
|
48
76
|
position: "bottom",
|
|
49
|
-
className: "
|
|
77
|
+
className: "bottom-full left-0 mt-0 min-h-fit",
|
|
50
78
|
isPausing: !1
|
|
51
|
-
})]
|
|
52
|
-
}), /* @__PURE__ */
|
|
53
|
-
}), /* @__PURE__ */
|
|
79
|
+
}) : null]
|
|
80
|
+
}), /* @__PURE__ */ b(_, {})]
|
|
81
|
+
}), /* @__PURE__ */ b(v, { className: "mr-2" })]
|
|
54
82
|
});
|
|
55
83
|
}
|
|
56
84
|
//#endregion
|
|
57
|
-
export {
|
|
85
|
+
export { S as ConversationNameWithStatus };
|
|
58
86
|
|
|
59
87
|
//# sourceMappingURL=conversation-name-with-status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-name-with-status.js","names":[],"sources":["../../../../src/components/features/conversation/conversation-name-with-status.tsx"],"sourcesContent":["import React from \"react\";\nimport { useAgentState } from \"#/hooks/use-agent-state\";\nimport { useTaskPolling } from \"#/hooks/query/use-task-polling\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useUnifiedPauseConversation } from \"#/hooks/mutation/use-unified-stop-conversation\";\nimport { useUnifiedResumeConversation } from \"#/hooks/mutation/use-unified-start-conversation\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\nimport { useUserProviders } from \"#/hooks/use-user-providers\";\nimport { getStatusColor } from \"#/utils/utils\";\nimport { AgentState } from \"#/types/agent-state\";\nimport DebugStackframeDot from \"#/icons/debug-stackframe-dot.svg?react\";\nimport { ServerStatusContextMenu } from \"../controls/server-status-context-menu\";\nimport { ConversationName } from \"./conversation-name\";\nimport { RightPanelToggle } from \"./right-panel-toggle\";\nimport {\n isExecutionActive,\n isExecutionErrored,\n isExecutionPaused,\n} from \"#/utils/status\";\n\nexport function ConversationNameWithStatus() {\n const { conversationId } = useConversationId();\n const { data: conversation } = useActiveConversation();\n const { curAgentState } = useAgentState();\n const { isTask, taskStatus } = useTaskPolling();\n const { mutate: pauseConversation } = useUnifiedPauseConversation();\n const { mutate: resumeConversation } = useUnifiedResumeConversation();\n const { providers } = useUserProviders();\n\n const executionStatus = conversation?.execution_status ?? null;\n const isStartingStatus =\n curAgentState === AgentState.LOADING || curAgentState === AgentState.INIT;\n const isStopStatus = isExecutionErrored(executionStatus);\n\n const statusColor = getStatusColor({\n isPausing: false,\n isTask,\n taskStatus,\n isStartingStatus,\n isStopStatus,\n curAgentState,\n });\n\n const handleStopServer = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n if (conversationId) {\n pauseConversation({ conversationId });\n }\n };\n\n const handleStartServer = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n if (conversationId) {\n resumeConversation({ conversationId, providers });\n }\n };\n\n return (\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"flex items-center min-w-0\">\n <div
|
|
1
|
+
{"version":3,"file":"conversation-name-with-status.js","names":[],"sources":["../../../../src/components/features/conversation/conversation-name-with-status.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAgentState } from \"#/hooks/use-agent-state\";\nimport { useTaskPolling } from \"#/hooks/query/use-task-polling\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useUnifiedPauseConversation } from \"#/hooks/mutation/use-unified-stop-conversation\";\nimport { useUnifiedResumeConversation } from \"#/hooks/mutation/use-unified-start-conversation\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\nimport { useUserProviders } from \"#/hooks/use-user-providers\";\nimport { getStatusColor, cn } from \"#/utils/utils\";\nimport { AgentState } from \"#/types/agent-state\";\nimport DebugStackframeDot from \"#/icons/debug-stackframe-dot.svg?react\";\nimport { ServerStatusContextMenu } from \"../controls/server-status-context-menu\";\nimport { ConversationName } from \"./conversation-name\";\nimport { RightPanelToggle } from \"./right-panel-toggle\";\nimport {\n isExecutionActive,\n isExecutionErrored,\n isExecutionPaused,\n} from \"#/utils/status\";\nimport { I18nKey } from \"#/i18n/declaration\";\n\nexport function ConversationNameWithStatus() {\n const { t } = useTranslation(\"openhands\");\n const { conversationId } = useConversationId();\n const { data: conversation } = useActiveConversation();\n const { curAgentState } = useAgentState();\n const { isTask, taskStatus } = useTaskPolling();\n const { mutate: pauseConversation } = useUnifiedPauseConversation();\n const { mutate: resumeConversation } = useUnifiedResumeConversation();\n const { providers } = useUserProviders();\n const [menuOpen, setMenuOpen] = React.useState(false);\n const [hoveredOpen, setHoveredOpen] = React.useState(false);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n\n const executionStatus = conversation?.execution_status ?? null;\n const isStartingStatus =\n curAgentState === AgentState.LOADING || curAgentState === AgentState.INIT;\n const isStopStatus = isExecutionErrored(executionStatus);\n\n const statusColor = getStatusColor({\n isPausing: false,\n isTask,\n taskStatus,\n isStartingStatus,\n isStopStatus,\n curAgentState,\n });\n\n const isMenuVisible = menuOpen || hoveredOpen;\n\n const closeMenu = () => {\n setMenuOpen(false);\n setHoveredOpen(false);\n };\n\n const handleStopServer = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n if (conversationId) {\n pauseConversation({ conversationId });\n }\n closeMenu();\n };\n\n const handleStartServer = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n if (conversationId) {\n resumeConversation({ conversationId, providers });\n }\n closeMenu();\n };\n\n const handleStatusClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n // Click toggles for touch; on desktop it also dismisses a hover-opened menu\n // instead of \"pinning\" it open under the cursor.\n if (isMenuVisible) {\n closeMenu();\n return;\n }\n setMenuOpen(true);\n };\n\n return (\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"flex items-center min-w-0\">\n <div\n className=\"relative shrink-0\"\n onPointerEnter={(event) => {\n // Gate on this event's pointer, not device-primary matchMedia — hybrid\n // laptops can emit compatibility mouseenter for touchscreen taps.\n if (event.pointerType === \"mouse\") {\n setHoveredOpen(true);\n }\n }}\n onPointerLeave={(event) => {\n if (event.pointerType === \"mouse\") {\n setHoveredOpen(false);\n }\n }}\n >\n <button\n ref={triggerRef}\n type=\"button\"\n data-testid=\"server-status-menu-trigger\"\n aria-label={t(I18nKey.COMMON$SERVER_STATUS)}\n aria-expanded={isMenuVisible}\n aria-haspopup=\"menu\"\n onClick={handleStatusClick}\n className={cn(\n \"flex items-center justify-center rounded-md\",\n \"text-[var(--oh-muted)] hover:bg-white/10\",\n )}\n >\n <DebugStackframeDot\n className=\"ml-[3.5px] w-6 h-6 cursor-pointer\"\n color={statusColor}\n aria-hidden\n />\n </button>\n {isMenuVisible ? (\n <ServerStatusContextMenu\n onClose={closeMenu}\n ignoreOutsideClickRef={triggerRef}\n onStopServer={\n isExecutionActive(executionStatus)\n ? handleStopServer\n : undefined\n }\n onStartServer={\n isExecutionPaused(executionStatus)\n ? handleStartServer\n : undefined\n }\n executionStatus={executionStatus}\n position=\"bottom\"\n className=\"bottom-full left-0 mt-0 min-h-fit\"\n isPausing={false}\n />\n ) : null}\n </div>\n <ConversationName />\n </div>\n <RightPanelToggle className=\"mr-2\" />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAsBA,SAAgB,IAA6B;CAC3C,IAAM,EAAE,SAAM,EAAe,WAAW,GAClC,EAAE,sBAAmB,EAAkB,GACvC,EAAE,MAAM,MAAiB,EAAsB,GAC/C,EAAE,qBAAkB,EAAc,GAClC,EAAE,WAAQ,kBAAe,EAAe,GACxC,EAAE,QAAQ,MAAsB,EAA4B,GAC5D,EAAE,QAAQ,MAAuB,EAA6B,GAC9D,EAAE,iBAAc,EAAiB,GACjC,CAAC,GAAU,KAAe,EAAM,SAAS,EAAK,GAC9C,CAAC,GAAa,KAAkB,EAAM,SAAS,EAAK,GACpD,IAAa,EAAM,OAA0B,IAAI,GAEjD,IAAkB,GAAc,oBAAoB,MAKpD,IAAc,EAAe;EACjC,WAAW;EACX;EACA;EACA,kBAPA,MAAkB,EAAW,WAAW,MAAkB,EAAW;EAQrE,cAPmB,EAAmB,CAOtC;EACA;CACF,CAAC,GAEK,IAAgB,KAAY,GAE5B,UAAkB;EAEtB,AADA,EAAY,EAAK,GACjB,EAAe,EAAK;CACtB;CAgCA,OACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IACE,WAAU;IACV,iBAAiB,MAAU;KAGzB,AAAI,EAAM,gBAAgB,WACxB,EAAe,EAAI;IAEvB;IACA,iBAAiB,MAAU;KACzB,AAAI,EAAM,gBAAgB,WACxB,EAAe,EAAK;IAExB;cAbF,CAeE,kBAAC,UAAD;KACE,KAAK;KACL,MAAK;KACL,eAAY;KACZ,cAAY,EAAE,EAAQ,oBAAoB;KAC1C,iBAAe;KACf,iBAAc;KACd,UArCiB,MAA+C;MAKxE,IAJA,EAAM,eAAe,GACrB,EAAM,gBAAgB,GAGlB,GAAe;OACjB,EAAU;OACV;MACF;MACA,EAAY,EAAI;KAClB;KA4BU,WAAW,EACT,+CACA,0CACF;eAEA,kBAAC,GAAD;MACE,WAAU;MACV,OAAO;MACP,eAAA;KACD,CAAA;IACK,CAAA,GACP,IACC,kBAAC,GAAD;KACE,SAAS;KACT,uBAAuB;KACvB,cACE,EAAkB,CAAe,KAxErB,MAA+C;MAMvE,AALA,EAAM,eAAe,GACrB,EAAM,gBAAgB,GAClB,KACF,EAAkB,EAAE,kBAAe,CAAC,GAEtC,EAAU;KACZ,IAmEkB,KAAA;KAEN,eACE,EAAkB,CAAe,KApEpB,MAA+C;MAMxE,AALA,EAAM,eAAe,GACrB,EAAM,gBAAgB,GAClB,KACF,EAAmB;OAAE;OAAgB;MAAU,CAAC,GAElD,EAAU;KACZ,IA+DkB,KAAA;KAEW;KACjB,UAAS;KACT,WAAU;KACV,WAAW;IACZ,CAAA,IACC,IACD;OACL,kBAAC,GAAD,CAAmB,CAAA,CAChB;MACL,kBAAC,GAAD,EAAkB,WAAU,OAAQ,CAAA,CACjC;;AAET"}
|
|
@@ -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("../../../hooks/use-conversation-id.cjs"),i=require("../../../utils/custom-toast-handlers.cjs"),a=require("../../../hooks/query/use-active-conversation.cjs"),o=require("../../../hooks/use-conversation-name-context-menu.cjs"),s=require("../conversation-panel/system-message-modal.cjs"),c=require("../conversation-panel/skills-modal.cjs"),l=require("../conversation-panel/hooks-modal.cjs"),u=require("../../../hooks/mutation/use-update-conversation.cjs"),d=require("../conversation-panel/ellipsis-button.cjs"),f=require("./conversation-name-context-menu.cjs"),p=require("../conversation-panel/confirm-delete-modal.cjs"),m=require("../conversation-panel/confirm-stop-modal.cjs"),h=require("./
|
|
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("../../../hooks/use-conversation-id.cjs"),i=require("../../../utils/custom-toast-handlers.cjs"),a=require("../../../hooks/query/use-active-conversation.cjs"),o=require("../../../hooks/use-conversation-name-context-menu.cjs"),s=require("../conversation-panel/system-message-modal.cjs"),c=require("../conversation-panel/skills-modal.cjs"),l=require("../conversation-panel/hooks-modal.cjs"),u=require("../../../hooks/mutation/use-update-conversation.cjs"),d=require("../conversation-panel/ellipsis-button.cjs"),f=require("./conversation-name-context-menu.cjs"),p=require("../conversation-panel/confirm-delete-modal.cjs"),m=require("../conversation-panel/confirm-stop-modal.cjs"),h=require("./transcript-export-modal.cjs");let g=require("react");g=e.__toESM(g,1);let _=require("react/jsx-runtime");function v(){let{t:e}=t.useTranslation(`openhands`),{conversationId:v}=r.useConversationId(),{data:y}=a.useActiveConversation(),{mutate:b}=u.useUpdateConversation(),[x,S]=g.default.useState(`view`),[C,w]=g.default.useState(!1),[T,E]=g.default.useState(!1),D=g.default.useRef(null),O=g.default.useRef(null),{handleDelete:k,handleStop:A,handleDownloadConversation:j,handleDisplayCost:M,handleShowAgentTools:N,handleShowSkills:P,handleShowHooks:ee,handleTogglePublic:F,handleCopyShareLink:I,shareUrl:L,handleConfirmDelete:R,handleConfirmStop:z,systemModalVisible:B,setSystemModalVisible:V,skillsModalVisible:H,setSkillsModalVisible:U,hooksModalVisible:W,setHooksModalVisible:G,confirmDeleteModalVisible:K,setConfirmDeleteModalVisible:q,confirmStopModalVisible:J,setConfirmStopModalVisible:Y,systemMessage:X,shouldShowStop:Z,shouldShowDownloadConversation:Q,shouldShowDisplayCost:$,shouldShowAgentTools:te,shouldShowSkills:ne,shouldShowHooks:re}=o.useConversationNameContextMenu({conversationId:v,executionStatus:y?.execution_status,showOptions:!0,onContextMenuToggle:w});return g.default.useEffect(()=>{x===`edit`&&D.current?.focus()},[x]),y?(0,_.jsxs)(_.Fragment,{children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-2 h-[22px] text-base font-normal text-left pl-0 lg:pl-1 min-w-0`,"data-testid":`conversation-name`,children:[x===`edit`?(0,_.jsx)(`input`,{ref:D,"data-testid":`conversation-name-input`,onClick:e=>{x===`edit`&&(e.preventDefault(),e.stopPropagation())},onBlur:()=>{if(D.current?.value&&v){let t=D.current.value.trim();t!==y?.title&&b({conversationId:v,newTitle:t},{onSuccess:()=>{i.displaySuccessToast(e(n.I18nKey.CONVERSATION$TITLE_UPDATED))}})}else D.current&&(D.current.value=y?.title??``);S(`view`)},onKeyUp:e=>{e.nativeEvent.isComposing||e.key===`Enter`&&e.currentTarget.blur()},type:`text`,defaultValue:y.title||``,className:`text-white leading-5 bg-transparent border-none outline-none text-base font-normal w-fit max-w-fit field-sizing-content`}):(0,_.jsx)(`div`,{className:`text-white leading-5 truncate`,"data-testid":`conversation-name-title`,onDoubleClick:()=>{S(`edit`)},title:y.title||``,children:y.title}),x!==`edit`&&(0,_.jsxs)(`div`,{ref:O,className:`relative flex items-center shrink-0`,children:[(0,_.jsx)(d.EllipsisButton,{onClick:e=>{e.preventDefault(),e.stopPropagation(),w(!C)},ariaLabel:e(n.I18nKey.COMMON$MORE_OPTIONS)}),C&&(0,_.jsx)(f.ConversationNameContextMenu,{onClose:()=>w(!1),onRename:e=>{e.preventDefault(),e.stopPropagation(),S(`edit`),w(!1)},onDelete:k,onStop:Z?A:void 0,onDisplayCost:$?M:void 0,onShowAgentTools:te?N:void 0,onShowSkills:ne?P:void 0,onShowHooks:re?ee:void 0,onTogglePublic:F,onCopyShareLink:I,shareUrl:L,onExportTranscript:e=>{e.preventDefault(),e.stopPropagation(),E(!0),w(!1)},onDownloadConversation:Q?j:void 0,position:`bottom`,anchorRef:O})]})]}),T&&v&&(0,_.jsx)(h.TranscriptExportModal,{conversationId:v,conversationUrl:y.conversation_url,sessionApiKey:y.session_api_key,conversationTitle:y.title,model:y.llm_model,onClose:()=>E(!1)}),(0,_.jsx)(s.SystemMessageModal,{isOpen:B,onClose:()=>V(!1),systemMessage:X||null}),H&&(0,_.jsx)(c.SkillsModal,{onClose:()=>U(!1)}),W&&(0,_.jsx)(l.HooksModal,{onClose:()=>G(!1)}),K&&(0,_.jsx)(p.ConfirmDeleteModal,{onConfirm:R,onCancel:()=>q(!1),conversationTitle:y?.title||``}),J&&(0,_.jsx)(m.ConfirmStopModal,{onConfirm:z,onCancel:()=>Y(!1)})]}):null}exports.ConversationName=v;
|
|
2
2
|
//# sourceMappingURL=conversation-name.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-name.cjs","names":[],"sources":["../../../../src/components/features/conversation/conversation-name.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useUpdateConversation } from \"#/hooks/mutation/use-update-conversation\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\nimport { useConversationNameContextMenu } from \"#/hooks/use-conversation-name-context-menu\";\nimport { displaySuccessToast } from \"#/utils/custom-toast-handlers\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { EllipsisButton } from \"../conversation-panel/ellipsis-button\";\nimport { ConversationNameContextMenu } from \"./conversation-name-context-menu\";\nimport { SystemMessageModal } from \"../conversation-panel/system-message-modal\";\nimport { SkillsModal } from \"../conversation-panel/skills-modal\";\nimport { HooksModal } from \"../conversation-panel/hooks-modal\";\nimport { ConfirmDeleteModal } from \"../conversation-panel/confirm-delete-modal\";\nimport { ConfirmStopModal } from \"../conversation-panel/confirm-stop-modal\";\nimport { MetricsModal } from \"./metrics-modal/metrics-modal\";\nimport { TranscriptExportModal } from \"./transcript-export-modal\";\n\nexport function ConversationName() {\n const { t } = useTranslation(\"openhands\");\n const { conversationId } = useConversationId();\n const { data: conversation } = useActiveConversation();\n const { mutate: updateConversation } = useUpdateConversation();\n\n const [titleMode, setTitleMode] = React.useState<\"view\" | \"edit\">(\"view\");\n const [contextMenuOpen, setContextMenuOpen] = React.useState(false);\n const [transcriptExportModalVisible, setTranscriptExportModalVisible] =\n React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const ellipsisAnchorRef = React.useRef<HTMLDivElement>(null);\n\n // Use the custom hook for context menu handlers\n const {\n handleDelete,\n handleStop,\n handleDownloadConversation,\n handleDisplayCost,\n handleShowAgentTools,\n handleShowSkills,\n handleShowHooks,\n handleTogglePublic,\n handleCopyShareLink,\n shareUrl,\n handleConfirmDelete,\n handleConfirmStop,\n metricsModalVisible,\n setMetricsModalVisible,\n systemModalVisible,\n setSystemModalVisible,\n skillsModalVisible,\n setSkillsModalVisible,\n hooksModalVisible,\n setHooksModalVisible,\n confirmDeleteModalVisible,\n setConfirmDeleteModalVisible,\n confirmStopModalVisible,\n setConfirmStopModalVisible,\n systemMessage,\n shouldShowStop,\n shouldShowDownloadConversation,\n shouldShowDisplayCost,\n shouldShowAgentTools,\n shouldShowSkills,\n shouldShowHooks,\n } = useConversationNameContextMenu({\n conversationId,\n executionStatus: conversation?.execution_status,\n showOptions: true,\n onContextMenuToggle: setContextMenuOpen,\n });\n\n const handleDoubleClick = () => {\n setTitleMode(\"edit\");\n };\n\n const handleBlur = () => {\n if (inputRef.current?.value && conversationId) {\n const trimmed = inputRef.current.value.trim();\n if (trimmed !== conversation?.title) {\n updateConversation(\n { conversationId, newTitle: trimmed },\n {\n onSuccess: () => {\n displaySuccessToast(t(I18nKey.CONVERSATION$TITLE_UPDATED));\n },\n },\n );\n }\n } else if (inputRef.current) {\n // reset the value if it's empty\n inputRef.current.value = conversation?.title ?? \"\";\n }\n\n setTitleMode(\"view\");\n };\n\n const handleKeyUp = (event: React.KeyboardEvent<HTMLInputElement>) => {\n // Ignore Enter key during IME composition (e.g., Chinese, Japanese, Korean input)\n if (event.nativeEvent.isComposing) {\n return;\n }\n if (event.key === \"Enter\") {\n event.currentTarget.blur();\n }\n };\n\n const handleInputClick = (event: React.MouseEvent<HTMLInputElement>) => {\n if (titleMode === \"edit\") {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n const handleEllipsisClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n setContextMenuOpen(!contextMenuOpen);\n };\n\n const handleRename = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n setTitleMode(\"edit\");\n setContextMenuOpen(false);\n };\n\n const handleExportTranscript = (\n event: React.MouseEvent<HTMLButtonElement>,\n ) => {\n event.preventDefault();\n event.stopPropagation();\n setTranscriptExportModalVisible(true);\n setContextMenuOpen(false);\n };\n\n React.useEffect(() => {\n if (titleMode === \"edit\") {\n inputRef.current?.focus();\n }\n }, [titleMode]);\n\n if (!conversation) {\n return null;\n }\n\n return (\n <>\n <div\n className=\"flex items-center gap-2 h-[22px] text-base font-normal text-left pl-0 lg:pl-1 min-w-0\"\n data-testid=\"conversation-name\"\n >\n {titleMode === \"edit\" ? (\n <input\n ref={inputRef}\n data-testid=\"conversation-name-input\"\n onClick={handleInputClick}\n onBlur={handleBlur}\n onKeyUp={handleKeyUp}\n type=\"text\"\n defaultValue={conversation.title || \"\"}\n className=\"text-white leading-5 bg-transparent border-none outline-none text-base font-normal w-fit max-w-fit field-sizing-content\"\n />\n ) : (\n <div\n className=\"text-white leading-5 truncate\"\n data-testid=\"conversation-name-title\"\n onDoubleClick={handleDoubleClick}\n title={conversation.title || \"\"}\n >\n {conversation.title}\n </div>\n )}\n\n {titleMode !== \"edit\" && (\n <div\n ref={ellipsisAnchorRef}\n className=\"relative flex items-center shrink-0\"\n >\n <EllipsisButton onClick={handleEllipsisClick} />\n {contextMenuOpen && (\n <ConversationNameContextMenu\n onClose={() => setContextMenuOpen(false)}\n onRename={handleRename}\n onDelete={handleDelete}\n onStop={shouldShowStop ? handleStop : undefined}\n onDisplayCost={\n shouldShowDisplayCost ? handleDisplayCost : undefined\n }\n onShowAgentTools={\n shouldShowAgentTools ? handleShowAgentTools : undefined\n }\n onShowSkills={shouldShowSkills ? handleShowSkills : undefined}\n onShowHooks={shouldShowHooks ? handleShowHooks : undefined}\n onTogglePublic={handleTogglePublic}\n onCopyShareLink={handleCopyShareLink}\n shareUrl={shareUrl}\n onExportTranscript={handleExportTranscript}\n onDownloadConversation={\n shouldShowDownloadConversation\n ? handleDownloadConversation\n : undefined\n }\n position=\"bottom\"\n anchorRef={ellipsisAnchorRef}\n />\n )}\n </div>\n )}\n </div>\n\n {/* Metrics Modal */}\n <MetricsModal\n isOpen={metricsModalVisible}\n onOpenChange={setMetricsModalVisible}\n />\n\n {transcriptExportModalVisible && conversationId && (\n <TranscriptExportModal\n conversationId={conversationId}\n conversationUrl={conversation.conversation_url}\n sessionApiKey={conversation.session_api_key}\n conversationTitle={conversation.title}\n model={conversation.llm_model}\n onClose={() => setTranscriptExportModalVisible(false)}\n />\n )}\n\n {/* System Message Modal */}\n <SystemMessageModal\n isOpen={systemModalVisible}\n onClose={() => setSystemModalVisible(false)}\n systemMessage={systemMessage || null}\n />\n\n {/* Skills Modal */}\n {skillsModalVisible && (\n <SkillsModal onClose={() => setSkillsModalVisible(false)} />\n )}\n\n {/* Hooks Modal */}\n {hooksModalVisible && (\n <HooksModal onClose={() => setHooksModalVisible(false)} />\n )}\n\n {/* Confirm Delete Modal */}\n {confirmDeleteModalVisible && (\n <ConfirmDeleteModal\n onConfirm={handleConfirmDelete}\n onCancel={() => setConfirmDeleteModalVisible(false)}\n conversationTitle={conversation?.title || \"\"}\n />\n )}\n\n {confirmStopModalVisible && (\n <ConfirmStopModal\n onConfirm={handleConfirmStop}\n onCancel={() => setConfirmStopModalVisible(false)}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conversation-name.cjs","names":[],"sources":["../../../../src/components/features/conversation/conversation-name.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useUpdateConversation } from \"#/hooks/mutation/use-update-conversation\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\nimport { useConversationNameContextMenu } from \"#/hooks/use-conversation-name-context-menu\";\nimport { displaySuccessToast } from \"#/utils/custom-toast-handlers\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { EllipsisButton } from \"../conversation-panel/ellipsis-button\";\nimport { ConversationNameContextMenu } from \"./conversation-name-context-menu\";\nimport { SystemMessageModal } from \"../conversation-panel/system-message-modal\";\nimport { SkillsModal } from \"../conversation-panel/skills-modal\";\nimport { HooksModal } from \"../conversation-panel/hooks-modal\";\nimport { ConfirmDeleteModal } from \"../conversation-panel/confirm-delete-modal\";\nimport { ConfirmStopModal } from \"../conversation-panel/confirm-stop-modal\";\nimport { TranscriptExportModal } from \"./transcript-export-modal\";\n\nexport function ConversationName() {\n const { t } = useTranslation(\"openhands\");\n const { conversationId } = useConversationId();\n const { data: conversation } = useActiveConversation();\n const { mutate: updateConversation } = useUpdateConversation();\n\n const [titleMode, setTitleMode] = React.useState<\"view\" | \"edit\">(\"view\");\n const [contextMenuOpen, setContextMenuOpen] = React.useState(false);\n const [transcriptExportModalVisible, setTranscriptExportModalVisible] =\n React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const ellipsisAnchorRef = React.useRef<HTMLDivElement>(null);\n\n // Use the custom hook for context menu handlers\n const {\n handleDelete,\n handleStop,\n handleDownloadConversation,\n handleDisplayCost,\n handleShowAgentTools,\n handleShowSkills,\n handleShowHooks,\n handleTogglePublic,\n handleCopyShareLink,\n shareUrl,\n handleConfirmDelete,\n handleConfirmStop,\n systemModalVisible,\n setSystemModalVisible,\n skillsModalVisible,\n setSkillsModalVisible,\n hooksModalVisible,\n setHooksModalVisible,\n confirmDeleteModalVisible,\n setConfirmDeleteModalVisible,\n confirmStopModalVisible,\n setConfirmStopModalVisible,\n systemMessage,\n shouldShowStop,\n shouldShowDownloadConversation,\n shouldShowDisplayCost,\n shouldShowAgentTools,\n shouldShowSkills,\n shouldShowHooks,\n } = useConversationNameContextMenu({\n conversationId,\n executionStatus: conversation?.execution_status,\n showOptions: true,\n onContextMenuToggle: setContextMenuOpen,\n });\n\n const handleDoubleClick = () => {\n setTitleMode(\"edit\");\n };\n\n const handleBlur = () => {\n if (inputRef.current?.value && conversationId) {\n const trimmed = inputRef.current.value.trim();\n if (trimmed !== conversation?.title) {\n updateConversation(\n { conversationId, newTitle: trimmed },\n {\n onSuccess: () => {\n displaySuccessToast(t(I18nKey.CONVERSATION$TITLE_UPDATED));\n },\n },\n );\n }\n } else if (inputRef.current) {\n // reset the value if it's empty\n inputRef.current.value = conversation?.title ?? \"\";\n }\n\n setTitleMode(\"view\");\n };\n\n const handleKeyUp = (event: React.KeyboardEvent<HTMLInputElement>) => {\n // Ignore Enter key during IME composition (e.g., Chinese, Japanese, Korean input)\n if (event.nativeEvent.isComposing) {\n return;\n }\n if (event.key === \"Enter\") {\n event.currentTarget.blur();\n }\n };\n\n const handleInputClick = (event: React.MouseEvent<HTMLInputElement>) => {\n if (titleMode === \"edit\") {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n const handleEllipsisClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n setContextMenuOpen(!contextMenuOpen);\n };\n\n const handleRename = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n setTitleMode(\"edit\");\n setContextMenuOpen(false);\n };\n\n const handleExportTranscript = (\n event: React.MouseEvent<HTMLButtonElement>,\n ) => {\n event.preventDefault();\n event.stopPropagation();\n setTranscriptExportModalVisible(true);\n setContextMenuOpen(false);\n };\n\n React.useEffect(() => {\n if (titleMode === \"edit\") {\n inputRef.current?.focus();\n }\n }, [titleMode]);\n\n if (!conversation) {\n return null;\n }\n\n return (\n <>\n <div\n className=\"flex items-center gap-2 h-[22px] text-base font-normal text-left pl-0 lg:pl-1 min-w-0\"\n data-testid=\"conversation-name\"\n >\n {titleMode === \"edit\" ? (\n <input\n ref={inputRef}\n data-testid=\"conversation-name-input\"\n onClick={handleInputClick}\n onBlur={handleBlur}\n onKeyUp={handleKeyUp}\n type=\"text\"\n defaultValue={conversation.title || \"\"}\n className=\"text-white leading-5 bg-transparent border-none outline-none text-base font-normal w-fit max-w-fit field-sizing-content\"\n />\n ) : (\n <div\n className=\"text-white leading-5 truncate\"\n data-testid=\"conversation-name-title\"\n onDoubleClick={handleDoubleClick}\n title={conversation.title || \"\"}\n >\n {conversation.title}\n </div>\n )}\n\n {titleMode !== \"edit\" && (\n <div\n ref={ellipsisAnchorRef}\n className=\"relative flex items-center shrink-0\"\n >\n <EllipsisButton\n onClick={handleEllipsisClick}\n ariaLabel={t(I18nKey.COMMON$MORE_OPTIONS)}\n />\n {contextMenuOpen && (\n <ConversationNameContextMenu\n onClose={() => setContextMenuOpen(false)}\n onRename={handleRename}\n onDelete={handleDelete}\n onStop={shouldShowStop ? handleStop : undefined}\n onDisplayCost={\n shouldShowDisplayCost ? handleDisplayCost : undefined\n }\n onShowAgentTools={\n shouldShowAgentTools ? handleShowAgentTools : undefined\n }\n onShowSkills={shouldShowSkills ? handleShowSkills : undefined}\n onShowHooks={shouldShowHooks ? handleShowHooks : undefined}\n onTogglePublic={handleTogglePublic}\n onCopyShareLink={handleCopyShareLink}\n shareUrl={shareUrl}\n onExportTranscript={handleExportTranscript}\n onDownloadConversation={\n shouldShowDownloadConversation\n ? handleDownloadConversation\n : undefined\n }\n position=\"bottom\"\n anchorRef={ellipsisAnchorRef}\n />\n )}\n </div>\n )}\n </div>\n\n {transcriptExportModalVisible && conversationId && (\n <TranscriptExportModal\n conversationId={conversationId}\n conversationUrl={conversation.conversation_url}\n sessionApiKey={conversation.session_api_key}\n conversationTitle={conversation.title}\n model={conversation.llm_model}\n onClose={() => setTranscriptExportModalVisible(false)}\n />\n )}\n\n {/* System Message Modal */}\n <SystemMessageModal\n isOpen={systemModalVisible}\n onClose={() => setSystemModalVisible(false)}\n systemMessage={systemMessage || null}\n />\n\n {/* Skills Modal */}\n {skillsModalVisible && (\n <SkillsModal onClose={() => setSkillsModalVisible(false)} />\n )}\n\n {/* Hooks Modal */}\n {hooksModalVisible && (\n <HooksModal onClose={() => setHooksModalVisible(false)} />\n )}\n\n {/* Confirm Delete Modal */}\n {confirmDeleteModalVisible && (\n <ConfirmDeleteModal\n onConfirm={handleConfirmDelete}\n onCancel={() => setConfirmDeleteModalVisible(false)}\n conversationTitle={conversation?.title || \"\"}\n />\n )}\n\n {confirmStopModalVisible && (\n <ConfirmStopModal\n onConfirm={handleConfirmStop}\n onCancel={() => setConfirmStopModalVisible(false)}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
|
|
@@ -12,115 +12,113 @@ import { EllipsisButton as u } from "../conversation-panel/ellipsis-button.js";
|
|
|
12
12
|
import { ConversationNameContextMenu as d } from "./conversation-name-context-menu.js";
|
|
13
13
|
import { ConfirmDeleteModal as f } from "../conversation-panel/confirm-delete-modal.js";
|
|
14
14
|
import { ConfirmStopModal as p } from "../conversation-panel/confirm-stop-modal.js";
|
|
15
|
-
import {
|
|
16
|
-
import
|
|
17
|
-
import g from "react";
|
|
18
|
-
import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
15
|
+
import { TranscriptExportModal as m } from "./transcript-export-modal.js";
|
|
16
|
+
import h from "react";
|
|
17
|
+
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
19
18
|
//#region src/components/features/conversation/conversation-name.tsx
|
|
20
|
-
function
|
|
21
|
-
let { t:
|
|
22
|
-
conversationId:
|
|
23
|
-
executionStatus:
|
|
19
|
+
function y() {
|
|
20
|
+
let { t: y } = e("openhands"), { conversationId: b } = n(), { data: x } = i(), { mutate: S } = l(), [C, w] = h.useState("view"), [T, E] = h.useState(!1), [D, O] = h.useState(!1), k = h.useRef(null), A = h.useRef(null), { handleDelete: j, handleStop: M, handleDownloadConversation: N, handleDisplayCost: P, handleShowAgentTools: F, handleShowSkills: ee, handleShowHooks: I, handleTogglePublic: L, handleCopyShareLink: R, shareUrl: z, handleConfirmDelete: B, handleConfirmStop: V, systemModalVisible: H, setSystemModalVisible: U, skillsModalVisible: W, setSkillsModalVisible: G, hooksModalVisible: K, setHooksModalVisible: q, confirmDeleteModalVisible: J, setConfirmDeleteModalVisible: Y, confirmStopModalVisible: X, setConfirmStopModalVisible: Z, systemMessage: Q, shouldShowStop: $, shouldShowDownloadConversation: te, shouldShowDisplayCost: ne, shouldShowAgentTools: re, shouldShowSkills: ie, shouldShowHooks: ae } = a({
|
|
21
|
+
conversationId: b,
|
|
22
|
+
executionStatus: x?.execution_status,
|
|
24
23
|
showOptions: !0,
|
|
25
|
-
onContextMenuToggle:
|
|
24
|
+
onContextMenuToggle: E
|
|
26
25
|
});
|
|
27
|
-
return
|
|
28
|
-
|
|
29
|
-
}, [
|
|
30
|
-
/* @__PURE__ */
|
|
26
|
+
return h.useEffect(() => {
|
|
27
|
+
C === "edit" && k.current?.focus();
|
|
28
|
+
}, [C]), x ? /* @__PURE__ */ v(g, { children: [
|
|
29
|
+
/* @__PURE__ */ v("div", {
|
|
31
30
|
className: "flex items-center gap-2 h-[22px] text-base font-normal text-left pl-0 lg:pl-1 min-w-0",
|
|
32
31
|
"data-testid": "conversation-name",
|
|
33
|
-
children: [
|
|
34
|
-
ref:
|
|
32
|
+
children: [C === "edit" ? /* @__PURE__ */ _("input", {
|
|
33
|
+
ref: k,
|
|
35
34
|
"data-testid": "conversation-name-input",
|
|
36
35
|
onClick: (e) => {
|
|
37
|
-
|
|
36
|
+
C === "edit" && (e.preventDefault(), e.stopPropagation());
|
|
38
37
|
},
|
|
39
38
|
onBlur: () => {
|
|
40
|
-
if (
|
|
41
|
-
let e =
|
|
42
|
-
e !==
|
|
43
|
-
conversationId:
|
|
39
|
+
if (k.current?.value && b) {
|
|
40
|
+
let e = k.current.value.trim();
|
|
41
|
+
e !== x?.title && S({
|
|
42
|
+
conversationId: b,
|
|
44
43
|
newTitle: e
|
|
45
44
|
}, { onSuccess: () => {
|
|
46
|
-
r(
|
|
45
|
+
r(y(t.CONVERSATION$TITLE_UPDATED));
|
|
47
46
|
} });
|
|
48
|
-
} else
|
|
49
|
-
|
|
47
|
+
} else k.current && (k.current.value = x?.title ?? "");
|
|
48
|
+
w("view");
|
|
50
49
|
},
|
|
51
50
|
onKeyUp: (e) => {
|
|
52
51
|
e.nativeEvent.isComposing || e.key === "Enter" && e.currentTarget.blur();
|
|
53
52
|
},
|
|
54
53
|
type: "text",
|
|
55
|
-
defaultValue:
|
|
54
|
+
defaultValue: x.title || "",
|
|
56
55
|
className: "text-white leading-5 bg-transparent border-none outline-none text-base font-normal w-fit max-w-fit field-sizing-content"
|
|
57
|
-
}) : /* @__PURE__ */
|
|
56
|
+
}) : /* @__PURE__ */ _("div", {
|
|
58
57
|
className: "text-white leading-5 truncate",
|
|
59
58
|
"data-testid": "conversation-name-title",
|
|
60
59
|
onDoubleClick: () => {
|
|
61
|
-
|
|
60
|
+
w("edit");
|
|
62
61
|
},
|
|
63
|
-
title:
|
|
64
|
-
children:
|
|
65
|
-
}),
|
|
66
|
-
ref:
|
|
62
|
+
title: x.title || "",
|
|
63
|
+
children: x.title
|
|
64
|
+
}), C !== "edit" && /* @__PURE__ */ v("div", {
|
|
65
|
+
ref: A,
|
|
67
66
|
className: "relative flex items-center shrink-0",
|
|
68
|
-
children: [/* @__PURE__ */
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
children: [/* @__PURE__ */ _(u, {
|
|
68
|
+
onClick: (e) => {
|
|
69
|
+
e.preventDefault(), e.stopPropagation(), E(!T);
|
|
70
|
+
},
|
|
71
|
+
ariaLabel: y(t.COMMON$MORE_OPTIONS)
|
|
72
|
+
}), T && /* @__PURE__ */ _(d, {
|
|
73
|
+
onClose: () => E(!1),
|
|
72
74
|
onRename: (e) => {
|
|
73
|
-
e.preventDefault(), e.stopPropagation(),
|
|
75
|
+
e.preventDefault(), e.stopPropagation(), w("edit"), E(!1);
|
|
74
76
|
},
|
|
75
|
-
onDelete:
|
|
76
|
-
onStop:
|
|
77
|
-
onDisplayCost:
|
|
78
|
-
onShowAgentTools:
|
|
79
|
-
onShowSkills:
|
|
80
|
-
onShowHooks:
|
|
81
|
-
onTogglePublic:
|
|
82
|
-
onCopyShareLink:
|
|
83
|
-
shareUrl:
|
|
77
|
+
onDelete: j,
|
|
78
|
+
onStop: $ ? M : void 0,
|
|
79
|
+
onDisplayCost: ne ? P : void 0,
|
|
80
|
+
onShowAgentTools: re ? F : void 0,
|
|
81
|
+
onShowSkills: ie ? ee : void 0,
|
|
82
|
+
onShowHooks: ae ? I : void 0,
|
|
83
|
+
onTogglePublic: L,
|
|
84
|
+
onCopyShareLink: R,
|
|
85
|
+
shareUrl: z,
|
|
84
86
|
onExportTranscript: (e) => {
|
|
85
|
-
e.preventDefault(), e.stopPropagation(),
|
|
87
|
+
e.preventDefault(), e.stopPropagation(), O(!0), E(!1);
|
|
86
88
|
},
|
|
87
|
-
onDownloadConversation:
|
|
89
|
+
onDownloadConversation: te ? N : void 0,
|
|
88
90
|
position: "bottom",
|
|
89
|
-
anchorRef:
|
|
91
|
+
anchorRef: A
|
|
90
92
|
})]
|
|
91
93
|
})]
|
|
92
94
|
}),
|
|
93
|
-
/* @__PURE__ */
|
|
94
|
-
|
|
95
|
-
|
|
95
|
+
D && b && /* @__PURE__ */ _(m, {
|
|
96
|
+
conversationId: b,
|
|
97
|
+
conversationUrl: x.conversation_url,
|
|
98
|
+
sessionApiKey: x.session_api_key,
|
|
99
|
+
conversationTitle: x.title,
|
|
100
|
+
model: x.llm_model,
|
|
101
|
+
onClose: () => O(!1)
|
|
96
102
|
}),
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
conversationTitle: S.title,
|
|
102
|
-
model: S.llm_model,
|
|
103
|
-
onClose: () => k(!1)
|
|
103
|
+
/* @__PURE__ */ _(o, {
|
|
104
|
+
isOpen: H,
|
|
105
|
+
onClose: () => U(!1),
|
|
106
|
+
systemMessage: Q || null
|
|
104
107
|
}),
|
|
105
|
-
/* @__PURE__ */
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
108
|
+
W && /* @__PURE__ */ _(s, { onClose: () => G(!1) }),
|
|
109
|
+
K && /* @__PURE__ */ _(c, { onClose: () => q(!1) }),
|
|
110
|
+
J && /* @__PURE__ */ _(f, {
|
|
111
|
+
onConfirm: B,
|
|
112
|
+
onCancel: () => Y(!1),
|
|
113
|
+
conversationTitle: x?.title || ""
|
|
109
114
|
}),
|
|
110
|
-
|
|
111
|
-
Y && /* @__PURE__ */ v(c, { onClose: () => X(!1) }),
|
|
112
|
-
Z && /* @__PURE__ */ v(f, {
|
|
115
|
+
X && /* @__PURE__ */ _(p, {
|
|
113
116
|
onConfirm: V,
|
|
114
|
-
onCancel: () =>
|
|
115
|
-
conversationTitle: S?.title || ""
|
|
116
|
-
}),
|
|
117
|
-
$ && /* @__PURE__ */ v(p, {
|
|
118
|
-
onConfirm: H,
|
|
119
|
-
onCancel: () => te(!1)
|
|
117
|
+
onCancel: () => Z(!1)
|
|
120
118
|
})
|
|
121
119
|
] }) : null;
|
|
122
120
|
}
|
|
123
121
|
//#endregion
|
|
124
|
-
export {
|
|
122
|
+
export { y as ConversationName };
|
|
125
123
|
|
|
126
124
|
//# sourceMappingURL=conversation-name.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-name.js","names":[],"sources":["../../../../src/components/features/conversation/conversation-name.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useUpdateConversation } from \"#/hooks/mutation/use-update-conversation\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\nimport { useConversationNameContextMenu } from \"#/hooks/use-conversation-name-context-menu\";\nimport { displaySuccessToast } from \"#/utils/custom-toast-handlers\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { EllipsisButton } from \"../conversation-panel/ellipsis-button\";\nimport { ConversationNameContextMenu } from \"./conversation-name-context-menu\";\nimport { SystemMessageModal } from \"../conversation-panel/system-message-modal\";\nimport { SkillsModal } from \"../conversation-panel/skills-modal\";\nimport { HooksModal } from \"../conversation-panel/hooks-modal\";\nimport { ConfirmDeleteModal } from \"../conversation-panel/confirm-delete-modal\";\nimport { ConfirmStopModal } from \"../conversation-panel/confirm-stop-modal\";\nimport { MetricsModal } from \"./metrics-modal/metrics-modal\";\nimport { TranscriptExportModal } from \"./transcript-export-modal\";\n\nexport function ConversationName() {\n const { t } = useTranslation(\"openhands\");\n const { conversationId } = useConversationId();\n const { data: conversation } = useActiveConversation();\n const { mutate: updateConversation } = useUpdateConversation();\n\n const [titleMode, setTitleMode] = React.useState<\"view\" | \"edit\">(\"view\");\n const [contextMenuOpen, setContextMenuOpen] = React.useState(false);\n const [transcriptExportModalVisible, setTranscriptExportModalVisible] =\n React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const ellipsisAnchorRef = React.useRef<HTMLDivElement>(null);\n\n // Use the custom hook for context menu handlers\n const {\n handleDelete,\n handleStop,\n handleDownloadConversation,\n handleDisplayCost,\n handleShowAgentTools,\n handleShowSkills,\n handleShowHooks,\n handleTogglePublic,\n handleCopyShareLink,\n shareUrl,\n handleConfirmDelete,\n handleConfirmStop,\n metricsModalVisible,\n setMetricsModalVisible,\n systemModalVisible,\n setSystemModalVisible,\n skillsModalVisible,\n setSkillsModalVisible,\n hooksModalVisible,\n setHooksModalVisible,\n confirmDeleteModalVisible,\n setConfirmDeleteModalVisible,\n confirmStopModalVisible,\n setConfirmStopModalVisible,\n systemMessage,\n shouldShowStop,\n shouldShowDownloadConversation,\n shouldShowDisplayCost,\n shouldShowAgentTools,\n shouldShowSkills,\n shouldShowHooks,\n } = useConversationNameContextMenu({\n conversationId,\n executionStatus: conversation?.execution_status,\n showOptions: true,\n onContextMenuToggle: setContextMenuOpen,\n });\n\n const handleDoubleClick = () => {\n setTitleMode(\"edit\");\n };\n\n const handleBlur = () => {\n if (inputRef.current?.value && conversationId) {\n const trimmed = inputRef.current.value.trim();\n if (trimmed !== conversation?.title) {\n updateConversation(\n { conversationId, newTitle: trimmed },\n {\n onSuccess: () => {\n displaySuccessToast(t(I18nKey.CONVERSATION$TITLE_UPDATED));\n },\n },\n );\n }\n } else if (inputRef.current) {\n // reset the value if it's empty\n inputRef.current.value = conversation?.title ?? \"\";\n }\n\n setTitleMode(\"view\");\n };\n\n const handleKeyUp = (event: React.KeyboardEvent<HTMLInputElement>) => {\n // Ignore Enter key during IME composition (e.g., Chinese, Japanese, Korean input)\n if (event.nativeEvent.isComposing) {\n return;\n }\n if (event.key === \"Enter\") {\n event.currentTarget.blur();\n }\n };\n\n const handleInputClick = (event: React.MouseEvent<HTMLInputElement>) => {\n if (titleMode === \"edit\") {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n const handleEllipsisClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n setContextMenuOpen(!contextMenuOpen);\n };\n\n const handleRename = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n setTitleMode(\"edit\");\n setContextMenuOpen(false);\n };\n\n const handleExportTranscript = (\n event: React.MouseEvent<HTMLButtonElement>,\n ) => {\n event.preventDefault();\n event.stopPropagation();\n setTranscriptExportModalVisible(true);\n setContextMenuOpen(false);\n };\n\n React.useEffect(() => {\n if (titleMode === \"edit\") {\n inputRef.current?.focus();\n }\n }, [titleMode]);\n\n if (!conversation) {\n return null;\n }\n\n return (\n <>\n <div\n className=\"flex items-center gap-2 h-[22px] text-base font-normal text-left pl-0 lg:pl-1 min-w-0\"\n data-testid=\"conversation-name\"\n >\n {titleMode === \"edit\" ? (\n <input\n ref={inputRef}\n data-testid=\"conversation-name-input\"\n onClick={handleInputClick}\n onBlur={handleBlur}\n onKeyUp={handleKeyUp}\n type=\"text\"\n defaultValue={conversation.title || \"\"}\n className=\"text-white leading-5 bg-transparent border-none outline-none text-base font-normal w-fit max-w-fit field-sizing-content\"\n />\n ) : (\n <div\n className=\"text-white leading-5 truncate\"\n data-testid=\"conversation-name-title\"\n onDoubleClick={handleDoubleClick}\n title={conversation.title || \"\"}\n >\n {conversation.title}\n </div>\n )}\n\n {titleMode !== \"edit\" && (\n <div\n ref={ellipsisAnchorRef}\n className=\"relative flex items-center shrink-0\"\n >\n <EllipsisButton onClick={handleEllipsisClick} />\n {contextMenuOpen && (\n <ConversationNameContextMenu\n onClose={() => setContextMenuOpen(false)}\n onRename={handleRename}\n onDelete={handleDelete}\n onStop={shouldShowStop ? handleStop : undefined}\n onDisplayCost={\n shouldShowDisplayCost ? handleDisplayCost : undefined\n }\n onShowAgentTools={\n shouldShowAgentTools ? handleShowAgentTools : undefined\n }\n onShowSkills={shouldShowSkills ? handleShowSkills : undefined}\n onShowHooks={shouldShowHooks ? handleShowHooks : undefined}\n onTogglePublic={handleTogglePublic}\n onCopyShareLink={handleCopyShareLink}\n shareUrl={shareUrl}\n onExportTranscript={handleExportTranscript}\n onDownloadConversation={\n shouldShowDownloadConversation\n ? handleDownloadConversation\n : undefined\n }\n position=\"bottom\"\n anchorRef={ellipsisAnchorRef}\n />\n )}\n </div>\n )}\n </div>\n\n {/* Metrics Modal */}\n <MetricsModal\n isOpen={metricsModalVisible}\n onOpenChange={setMetricsModalVisible}\n />\n\n {transcriptExportModalVisible && conversationId && (\n <TranscriptExportModal\n conversationId={conversationId}\n conversationUrl={conversation.conversation_url}\n sessionApiKey={conversation.session_api_key}\n conversationTitle={conversation.title}\n model={conversation.llm_model}\n onClose={() => setTranscriptExportModalVisible(false)}\n />\n )}\n\n {/* System Message Modal */}\n <SystemMessageModal\n isOpen={systemModalVisible}\n onClose={() => setSystemModalVisible(false)}\n systemMessage={systemMessage || null}\n />\n\n {/* Skills Modal */}\n {skillsModalVisible && (\n <SkillsModal onClose={() => setSkillsModalVisible(false)} />\n )}\n\n {/* Hooks Modal */}\n {hooksModalVisible && (\n <HooksModal onClose={() => setHooksModalVisible(false)} />\n )}\n\n {/* Confirm Delete Modal */}\n {confirmDeleteModalVisible && (\n <ConfirmDeleteModal\n onConfirm={handleConfirmDelete}\n onCancel={() => setConfirmDeleteModalVisible(false)}\n conversationTitle={conversation?.title || \"\"}\n />\n )}\n\n {confirmStopModalVisible && (\n <ConfirmStopModal\n onConfirm={handleConfirmStop}\n onCancel={() => setConfirmStopModalVisible(false)}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conversation-name.js","names":[],"sources":["../../../../src/components/features/conversation/conversation-name.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useUpdateConversation } from \"#/hooks/mutation/use-update-conversation\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\nimport { useConversationNameContextMenu } from \"#/hooks/use-conversation-name-context-menu\";\nimport { displaySuccessToast } from \"#/utils/custom-toast-handlers\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { EllipsisButton } from \"../conversation-panel/ellipsis-button\";\nimport { ConversationNameContextMenu } from \"./conversation-name-context-menu\";\nimport { SystemMessageModal } from \"../conversation-panel/system-message-modal\";\nimport { SkillsModal } from \"../conversation-panel/skills-modal\";\nimport { HooksModal } from \"../conversation-panel/hooks-modal\";\nimport { ConfirmDeleteModal } from \"../conversation-panel/confirm-delete-modal\";\nimport { ConfirmStopModal } from \"../conversation-panel/confirm-stop-modal\";\nimport { TranscriptExportModal } from \"./transcript-export-modal\";\n\nexport function ConversationName() {\n const { t } = useTranslation(\"openhands\");\n const { conversationId } = useConversationId();\n const { data: conversation } = useActiveConversation();\n const { mutate: updateConversation } = useUpdateConversation();\n\n const [titleMode, setTitleMode] = React.useState<\"view\" | \"edit\">(\"view\");\n const [contextMenuOpen, setContextMenuOpen] = React.useState(false);\n const [transcriptExportModalVisible, setTranscriptExportModalVisible] =\n React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const ellipsisAnchorRef = React.useRef<HTMLDivElement>(null);\n\n // Use the custom hook for context menu handlers\n const {\n handleDelete,\n handleStop,\n handleDownloadConversation,\n handleDisplayCost,\n handleShowAgentTools,\n handleShowSkills,\n handleShowHooks,\n handleTogglePublic,\n handleCopyShareLink,\n shareUrl,\n handleConfirmDelete,\n handleConfirmStop,\n systemModalVisible,\n setSystemModalVisible,\n skillsModalVisible,\n setSkillsModalVisible,\n hooksModalVisible,\n setHooksModalVisible,\n confirmDeleteModalVisible,\n setConfirmDeleteModalVisible,\n confirmStopModalVisible,\n setConfirmStopModalVisible,\n systemMessage,\n shouldShowStop,\n shouldShowDownloadConversation,\n shouldShowDisplayCost,\n shouldShowAgentTools,\n shouldShowSkills,\n shouldShowHooks,\n } = useConversationNameContextMenu({\n conversationId,\n executionStatus: conversation?.execution_status,\n showOptions: true,\n onContextMenuToggle: setContextMenuOpen,\n });\n\n const handleDoubleClick = () => {\n setTitleMode(\"edit\");\n };\n\n const handleBlur = () => {\n if (inputRef.current?.value && conversationId) {\n const trimmed = inputRef.current.value.trim();\n if (trimmed !== conversation?.title) {\n updateConversation(\n { conversationId, newTitle: trimmed },\n {\n onSuccess: () => {\n displaySuccessToast(t(I18nKey.CONVERSATION$TITLE_UPDATED));\n },\n },\n );\n }\n } else if (inputRef.current) {\n // reset the value if it's empty\n inputRef.current.value = conversation?.title ?? \"\";\n }\n\n setTitleMode(\"view\");\n };\n\n const handleKeyUp = (event: React.KeyboardEvent<HTMLInputElement>) => {\n // Ignore Enter key during IME composition (e.g., Chinese, Japanese, Korean input)\n if (event.nativeEvent.isComposing) {\n return;\n }\n if (event.key === \"Enter\") {\n event.currentTarget.blur();\n }\n };\n\n const handleInputClick = (event: React.MouseEvent<HTMLInputElement>) => {\n if (titleMode === \"edit\") {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n const handleEllipsisClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n setContextMenuOpen(!contextMenuOpen);\n };\n\n const handleRename = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n setTitleMode(\"edit\");\n setContextMenuOpen(false);\n };\n\n const handleExportTranscript = (\n event: React.MouseEvent<HTMLButtonElement>,\n ) => {\n event.preventDefault();\n event.stopPropagation();\n setTranscriptExportModalVisible(true);\n setContextMenuOpen(false);\n };\n\n React.useEffect(() => {\n if (titleMode === \"edit\") {\n inputRef.current?.focus();\n }\n }, [titleMode]);\n\n if (!conversation) {\n return null;\n }\n\n return (\n <>\n <div\n className=\"flex items-center gap-2 h-[22px] text-base font-normal text-left pl-0 lg:pl-1 min-w-0\"\n data-testid=\"conversation-name\"\n >\n {titleMode === \"edit\" ? (\n <input\n ref={inputRef}\n data-testid=\"conversation-name-input\"\n onClick={handleInputClick}\n onBlur={handleBlur}\n onKeyUp={handleKeyUp}\n type=\"text\"\n defaultValue={conversation.title || \"\"}\n className=\"text-white leading-5 bg-transparent border-none outline-none text-base font-normal w-fit max-w-fit field-sizing-content\"\n />\n ) : (\n <div\n className=\"text-white leading-5 truncate\"\n data-testid=\"conversation-name-title\"\n onDoubleClick={handleDoubleClick}\n title={conversation.title || \"\"}\n >\n {conversation.title}\n </div>\n )}\n\n {titleMode !== \"edit\" && (\n <div\n ref={ellipsisAnchorRef}\n className=\"relative flex items-center shrink-0\"\n >\n <EllipsisButton\n onClick={handleEllipsisClick}\n ariaLabel={t(I18nKey.COMMON$MORE_OPTIONS)}\n />\n {contextMenuOpen && (\n <ConversationNameContextMenu\n onClose={() => setContextMenuOpen(false)}\n onRename={handleRename}\n onDelete={handleDelete}\n onStop={shouldShowStop ? handleStop : undefined}\n onDisplayCost={\n shouldShowDisplayCost ? handleDisplayCost : undefined\n }\n onShowAgentTools={\n shouldShowAgentTools ? handleShowAgentTools : undefined\n }\n onShowSkills={shouldShowSkills ? handleShowSkills : undefined}\n onShowHooks={shouldShowHooks ? handleShowHooks : undefined}\n onTogglePublic={handleTogglePublic}\n onCopyShareLink={handleCopyShareLink}\n shareUrl={shareUrl}\n onExportTranscript={handleExportTranscript}\n onDownloadConversation={\n shouldShowDownloadConversation\n ? handleDownloadConversation\n : undefined\n }\n position=\"bottom\"\n anchorRef={ellipsisAnchorRef}\n />\n )}\n </div>\n )}\n </div>\n\n {transcriptExportModalVisible && conversationId && (\n <TranscriptExportModal\n conversationId={conversationId}\n conversationUrl={conversation.conversation_url}\n sessionApiKey={conversation.session_api_key}\n conversationTitle={conversation.title}\n model={conversation.llm_model}\n onClose={() => setTranscriptExportModalVisible(false)}\n />\n )}\n\n {/* System Message Modal */}\n <SystemMessageModal\n isOpen={systemModalVisible}\n onClose={() => setSystemModalVisible(false)}\n systemMessage={systemMessage || null}\n />\n\n {/* Skills Modal */}\n {skillsModalVisible && (\n <SkillsModal onClose={() => setSkillsModalVisible(false)} />\n )}\n\n {/* Hooks Modal */}\n {hooksModalVisible && (\n <HooksModal onClose={() => setHooksModalVisible(false)} />\n )}\n\n {/* Confirm Delete Modal */}\n {confirmDeleteModalVisible && (\n <ConfirmDeleteModal\n onConfirm={handleConfirmDelete}\n onCancel={() => setConfirmDeleteModalVisible(false)}\n conversationTitle={conversation?.title || \"\"}\n />\n )}\n\n {confirmStopModalVisible && (\n <ConfirmStopModal\n onConfirm={handleConfirmStop}\n onCancel={() => setConfirmStopModalVisible(false)}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require("../../../../../_virtual/_rolldown/runtime.cjs");const e=require("../../../../../hooks/use-conversation-id.cjs"),t=require("../../../../../stores/conversation-store.cjs"),n=require("./tab-wrapper.cjs"),r=require("./tab-container.cjs"),i=require("./tab-content-area.cjs"),a=require("./conversation-tab-content-crossfade.cjs");let o=require("react"),s=require("react/jsx-runtime");var c=(0,o.lazy)(()=>Promise.resolve().then(()=>require("../../../../../routes/files-tab.cjs"))),l=(0,o.lazy)(()=>Promise.resolve().then(()=>require("../../../../../routes/browser-tab.cjs"))),u=(0,o.lazy)(()=>Promise.resolve().then(()=>require("../../../../../routes/planner-tab.cjs"))),d=(0,o.lazy)(()=>Promise.resolve().then(()=>require("../../../../../routes/task-list-tab.cjs"))),f=(0,o.lazy)(()=>Promise.resolve().then(()=>require("../../../terminal/terminal.cjs"))),
|
|
1
|
+
require("../../../../../_virtual/_rolldown/runtime.cjs");const e=require("../../../../../hooks/use-conversation-id.cjs"),t=require("../../../../../stores/conversation-store.cjs"),n=require("./tab-wrapper.cjs"),r=require("./tab-container.cjs"),i=require("./tab-content-area.cjs"),a=require("./conversation-tab-content-crossfade.cjs");let o=require("react"),s=require("react/jsx-runtime");var c=(0,o.lazy)(()=>Promise.resolve().then(()=>require("../../../../../routes/files-tab.cjs"))),l=(0,o.lazy)(()=>Promise.resolve().then(()=>require("../../../../../routes/browser-tab.cjs"))),u=(0,o.lazy)(()=>Promise.resolve().then(()=>require("../../../../../routes/planner-tab.cjs"))),d=(0,o.lazy)(()=>Promise.resolve().then(()=>require("../../../../../routes/task-list-tab.cjs"))),f=(0,o.lazy)(()=>Promise.resolve().then(()=>require("../../../../../routes/usage-tab.cjs"))),p=(0,o.lazy)(()=>Promise.resolve().then(()=>require("../../../terminal/terminal.cjs"))),m={tasklist:{component:d},files:{component:c},browser:{component:l},terminal:{component:p},planner:{component:u},usage:{component:f}};function h(){let{selectedTab:c,shouldShownAgentLoading:l}=t.useConversationStore(),{conversationId:u}=e.useConversationId(),d=(0,o.useMemo)(()=>m[c]??m.files,[c]).component,f=c===`terminal`?`${c}-${u}`:c??`files`;return(0,s.jsx)(r.TabContainer,{children:(0,s.jsx)(i.TabContentArea,{children:(0,s.jsx)(a.ConversationTabContentCrossfade,{showAgentLoading:l,tabKey:f,children:(0,s.jsx)(n.TabWrapper,{children:(0,s.jsx)(d,{})},f)})})})}exports.ConversationTabContent=h;
|
|
2
2
|
//# sourceMappingURL=conversation-tab-content.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-tab-content.cjs","names":[],"sources":["../../../../../../src/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.tsx"],"sourcesContent":["import { lazy, useMemo } from \"react\";\nimport { TabWrapper } from \"./tab-wrapper\";\nimport { TabContainer } from \"./tab-container\";\nimport { TabContentArea } from \"./tab-content-area\";\nimport { ConversationTabContentCrossfade } from \"./conversation-tab-content-crossfade\";\nimport { useConversationStore } from \"#/stores/conversation-store\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\n\n// Lazy load all tab components, including the terminal — xterm + addon-fit +\n// xterm.css are large enough that we don't want them in the conversation\n// route's eager graph just because the terminal tab might be selected later.\nconst FilesTab = lazy(() => import(\"#/routes/files-tab\"));\nconst BrowserTab = lazy(() => import(\"#/routes/browser-tab\"));\nconst PlannerTab = lazy(() => import(\"#/routes/planner-tab\"));\nconst TaskListTab = lazy(() => import(\"#/routes/task-list-tab\"));\nconst Terminal = lazy(() => import(\"#/components/features/terminal/terminal\"));\n\nconst TAB_CONFIG = {\n tasklist: { component: TaskListTab },\n files: { component: FilesTab },\n browser: { component: BrowserTab },\n terminal: { component: Terminal },\n planner: { component: PlannerTab },\n};\n\nexport function ConversationTabContent() {\n const { selectedTab, shouldShownAgentLoading } = useConversationStore();\n const { conversationId } = useConversationId();\n\n const activeTab = useMemo(\n () =>\n TAB_CONFIG[selectedTab as keyof typeof TAB_CONFIG] ?? TAB_CONFIG.files,\n [selectedTab],\n );\n\n const ActiveComponent = activeTab.component;\n\n const tabWrapperKey =\n selectedTab === \"terminal\"\n ? `${selectedTab}-${conversationId}`\n : (selectedTab ?? \"files\");\n\n return (\n <TabContainer>\n <TabContentArea>\n <ConversationTabContentCrossfade\n showAgentLoading={shouldShownAgentLoading}\n tabKey={tabWrapperKey}\n >\n <TabWrapper key={tabWrapperKey}>\n <ActiveComponent />\n </TabWrapper>\n </ConversationTabContentCrossfade>\n </TabContentArea>\n </TabContainer>\n );\n}\n"],"mappings":"mYAWA,IAAM,GAAA,EAAA,EAAA,UAAA,QAAA,QAAA,EAAA,SAAA,QAAsB,qCAAA,CAAA,CAA4B,EAClD,GAAA,EAAA,EAAA,UAAA,QAAA,QAAA,EAAA,SAAA,QAAwB,uCAAA,CAAA,CAA8B,EACtD,GAAA,EAAA,EAAA,UAAA,QAAA,QAAA,EAAA,SAAA,QAAwB,uCAAA,CAAA,CAA8B,EACtD,GAAA,EAAA,EAAA,UAAA,QAAA,QAAA,EAAA,SAAA,QAAyB,yCAAA,CAAA,CAAgC,EACzD,GAAA,EAAA,EAAA,UAAA,QAAA,QAAA,EAAA,SAAA,QAAsB,gCAAA,CAAA,CAAiD,EAEvE,EAAa,CACjB,SAAU,CAAE,UAAW,CAAY,EACnC,MAAO,CAAE,UAAW,CAAS,EAC7B,QAAS,CAAE,UAAW,CAAW,EACjC,SAAU,CAAE,UAAW,CAAS,EAChC,QAAS,CAAE,UAAW,CAAW,
|
|
1
|
+
{"version":3,"file":"conversation-tab-content.cjs","names":[],"sources":["../../../../../../src/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.tsx"],"sourcesContent":["import { lazy, useMemo } from \"react\";\nimport { TabWrapper } from \"./tab-wrapper\";\nimport { TabContainer } from \"./tab-container\";\nimport { TabContentArea } from \"./tab-content-area\";\nimport { ConversationTabContentCrossfade } from \"./conversation-tab-content-crossfade\";\nimport { useConversationStore } from \"#/stores/conversation-store\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\n\n// Lazy load all tab components, including the terminal — xterm + addon-fit +\n// xterm.css are large enough that we don't want them in the conversation\n// route's eager graph just because the terminal tab might be selected later.\nconst FilesTab = lazy(() => import(\"#/routes/files-tab\"));\nconst BrowserTab = lazy(() => import(\"#/routes/browser-tab\"));\nconst PlannerTab = lazy(() => import(\"#/routes/planner-tab\"));\nconst TaskListTab = lazy(() => import(\"#/routes/task-list-tab\"));\nconst UsageTab = lazy(() => import(\"#/routes/usage-tab\"));\nconst Terminal = lazy(() => import(\"#/components/features/terminal/terminal\"));\n\nconst TAB_CONFIG = {\n tasklist: { component: TaskListTab },\n files: { component: FilesTab },\n browser: { component: BrowserTab },\n terminal: { component: Terminal },\n planner: { component: PlannerTab },\n usage: { component: UsageTab },\n};\n\nexport function ConversationTabContent() {\n const { selectedTab, shouldShownAgentLoading } = useConversationStore();\n const { conversationId } = useConversationId();\n\n const activeTab = useMemo(\n () =>\n TAB_CONFIG[selectedTab as keyof typeof TAB_CONFIG] ?? TAB_CONFIG.files,\n [selectedTab],\n );\n\n const ActiveComponent = activeTab.component;\n\n const tabWrapperKey =\n selectedTab === \"terminal\"\n ? `${selectedTab}-${conversationId}`\n : (selectedTab ?? \"files\");\n\n return (\n <TabContainer>\n <TabContentArea>\n <ConversationTabContentCrossfade\n showAgentLoading={shouldShownAgentLoading}\n tabKey={tabWrapperKey}\n >\n <TabWrapper key={tabWrapperKey}>\n <ActiveComponent />\n </TabWrapper>\n </ConversationTabContentCrossfade>\n </TabContentArea>\n </TabContainer>\n );\n}\n"],"mappings":"mYAWA,IAAM,GAAA,EAAA,EAAA,UAAA,QAAA,QAAA,EAAA,SAAA,QAAsB,qCAAA,CAAA,CAA4B,EAClD,GAAA,EAAA,EAAA,UAAA,QAAA,QAAA,EAAA,SAAA,QAAwB,uCAAA,CAAA,CAA8B,EACtD,GAAA,EAAA,EAAA,UAAA,QAAA,QAAA,EAAA,SAAA,QAAwB,uCAAA,CAAA,CAA8B,EACtD,GAAA,EAAA,EAAA,UAAA,QAAA,QAAA,EAAA,SAAA,QAAyB,yCAAA,CAAA,CAAgC,EACzD,GAAA,EAAA,EAAA,UAAA,QAAA,QAAA,EAAA,SAAA,QAAsB,qCAAA,CAAA,CAA4B,EAClD,GAAA,EAAA,EAAA,UAAA,QAAA,QAAA,EAAA,SAAA,QAAsB,gCAAA,CAAA,CAAiD,EAEvE,EAAa,CACjB,SAAU,CAAE,UAAW,CAAY,EACnC,MAAO,CAAE,UAAW,CAAS,EAC7B,QAAS,CAAE,UAAW,CAAW,EACjC,SAAU,CAAE,UAAW,CAAS,EAChC,QAAS,CAAE,UAAW,CAAW,EACjC,MAAO,CAAE,UAAW,CAAS,CAC/B,EAEA,SAAgB,GAAyB,CACvC,GAAM,CAAE,cAAa,2BAA4B,EAAA,qBAAqB,EAChE,CAAE,kBAAmB,EAAA,kBAAkB,EAQvC,GAAA,EAAA,EAAA,aAJF,EAAW,IAA2C,EAAW,MACnE,CAAC,CAAW,CAGU,EAAU,UAE5B,EACJ,IAAgB,WACZ,GAAG,EAAY,GAAG,IACjB,GAAe,QAEtB,OACE,EAAA,EAAA,KAAC,EAAA,aAAD,CAAA,UACE,EAAA,EAAA,KAAC,EAAA,eAAD,CAAA,UACE,EAAA,EAAA,KAAC,EAAA,gCAAD,CACE,iBAAkB,EAClB,OAAQ,YAER,EAAA,EAAA,KAAC,EAAA,WAAD,CAAA,UACE,EAAA,EAAA,KAAC,EAAD,CAAkB,CAAA,CACR,EAFK,CAEL,CACmB,CAAA,CACnB,CAAA,CACJ,CAAA,CAElB"}
|
|
@@ -7,15 +7,16 @@ import { ConversationTabContentCrossfade as a } from "./conversation-tab-content
|
|
|
7
7
|
import { lazy as o, useMemo as s } from "react";
|
|
8
8
|
import { jsx as c } from "react/jsx-runtime";
|
|
9
9
|
//#region src/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.tsx
|
|
10
|
-
var l = o(() => import("../../../../../routes/files-tab.js")), u = o(() => import("../../../../../routes/browser-tab.js")), d = o(() => import("../../../../../routes/planner-tab.js")), f = o(() => import("../../../../../routes/task-list-tab.js")), p = o(() => import("../../../terminal/terminal.js")),
|
|
10
|
+
var l = o(() => import("../../../../../routes/files-tab.js")), u = o(() => import("../../../../../routes/browser-tab.js")), d = o(() => import("../../../../../routes/planner-tab.js")), f = o(() => import("../../../../../routes/task-list-tab.js")), p = o(() => import("../../../../../routes/usage-tab.js")), m = o(() => import("../../../terminal/terminal.js")), h = {
|
|
11
11
|
tasklist: { component: f },
|
|
12
12
|
files: { component: l },
|
|
13
13
|
browser: { component: u },
|
|
14
|
-
terminal: { component:
|
|
15
|
-
planner: { component: d }
|
|
14
|
+
terminal: { component: m },
|
|
15
|
+
planner: { component: d },
|
|
16
|
+
usage: { component: p }
|
|
16
17
|
};
|
|
17
|
-
function
|
|
18
|
-
let { selectedTab: o, shouldShownAgentLoading: l } = t(), { conversationId: u } = e(), d = s(() =>
|
|
18
|
+
function g() {
|
|
19
|
+
let { selectedTab: o, shouldShownAgentLoading: l } = t(), { conversationId: u } = e(), d = s(() => h[o] ?? h.files, [o]).component, f = o === "terminal" ? `${o}-${u}` : o ?? "files";
|
|
19
20
|
return /* @__PURE__ */ c(r, { children: /* @__PURE__ */ c(i, { children: /* @__PURE__ */ c(a, {
|
|
20
21
|
showAgentLoading: l,
|
|
21
22
|
tabKey: f,
|
|
@@ -23,6 +24,6 @@ function h() {
|
|
|
23
24
|
}) }) });
|
|
24
25
|
}
|
|
25
26
|
//#endregion
|
|
26
|
-
export {
|
|
27
|
+
export { g as ConversationTabContent };
|
|
27
28
|
|
|
28
29
|
//# sourceMappingURL=conversation-tab-content.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-tab-content.js","names":[],"sources":["../../../../../../src/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.tsx"],"sourcesContent":["import { lazy, useMemo } from \"react\";\nimport { TabWrapper } from \"./tab-wrapper\";\nimport { TabContainer } from \"./tab-container\";\nimport { TabContentArea } from \"./tab-content-area\";\nimport { ConversationTabContentCrossfade } from \"./conversation-tab-content-crossfade\";\nimport { useConversationStore } from \"#/stores/conversation-store\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\n\n// Lazy load all tab components, including the terminal — xterm + addon-fit +\n// xterm.css are large enough that we don't want them in the conversation\n// route's eager graph just because the terminal tab might be selected later.\nconst FilesTab = lazy(() => import(\"#/routes/files-tab\"));\nconst BrowserTab = lazy(() => import(\"#/routes/browser-tab\"));\nconst PlannerTab = lazy(() => import(\"#/routes/planner-tab\"));\nconst TaskListTab = lazy(() => import(\"#/routes/task-list-tab\"));\nconst Terminal = lazy(() => import(\"#/components/features/terminal/terminal\"));\n\nconst TAB_CONFIG = {\n tasklist: { component: TaskListTab },\n files: { component: FilesTab },\n browser: { component: BrowserTab },\n terminal: { component: Terminal },\n planner: { component: PlannerTab },\n};\n\nexport function ConversationTabContent() {\n const { selectedTab, shouldShownAgentLoading } = useConversationStore();\n const { conversationId } = useConversationId();\n\n const activeTab = useMemo(\n () =>\n TAB_CONFIG[selectedTab as keyof typeof TAB_CONFIG] ?? TAB_CONFIG.files,\n [selectedTab],\n );\n\n const ActiveComponent = activeTab.component;\n\n const tabWrapperKey =\n selectedTab === \"terminal\"\n ? `${selectedTab}-${conversationId}`\n : (selectedTab ?? \"files\");\n\n return (\n <TabContainer>\n <TabContentArea>\n <ConversationTabContentCrossfade\n showAgentLoading={shouldShownAgentLoading}\n tabKey={tabWrapperKey}\n >\n <TabWrapper key={tabWrapperKey}>\n <ActiveComponent />\n </TabWrapper>\n </ConversationTabContentCrossfade>\n </TabContentArea>\n </TabContainer>\n );\n}\n"],"mappings":";;;;;;;;;AAWA,IAAM,IAAW,QAAW,OAAO,qCAAqB,GAClD,IAAa,QAAW,OAAO,uCAAuB,GACtD,IAAa,QAAW,OAAO,uCAAuB,GACtD,IAAc,QAAW,OAAO,yCAAyB,GACzD,IAAW,QAAW,OAAO,gCAA0C,GAEvE,IAAa;CACjB,UAAU,EAAE,WAAW,EAAY;CACnC,OAAO,EAAE,WAAW,EAAS;CAC7B,SAAS,EAAE,WAAW,EAAW;CACjC,UAAU,EAAE,WAAW,EAAS;CAChC,SAAS,EAAE,WAAW,EAAW;
|
|
1
|
+
{"version":3,"file":"conversation-tab-content.js","names":[],"sources":["../../../../../../src/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.tsx"],"sourcesContent":["import { lazy, useMemo } from \"react\";\nimport { TabWrapper } from \"./tab-wrapper\";\nimport { TabContainer } from \"./tab-container\";\nimport { TabContentArea } from \"./tab-content-area\";\nimport { ConversationTabContentCrossfade } from \"./conversation-tab-content-crossfade\";\nimport { useConversationStore } from \"#/stores/conversation-store\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\n\n// Lazy load all tab components, including the terminal — xterm + addon-fit +\n// xterm.css are large enough that we don't want them in the conversation\n// route's eager graph just because the terminal tab might be selected later.\nconst FilesTab = lazy(() => import(\"#/routes/files-tab\"));\nconst BrowserTab = lazy(() => import(\"#/routes/browser-tab\"));\nconst PlannerTab = lazy(() => import(\"#/routes/planner-tab\"));\nconst TaskListTab = lazy(() => import(\"#/routes/task-list-tab\"));\nconst UsageTab = lazy(() => import(\"#/routes/usage-tab\"));\nconst Terminal = lazy(() => import(\"#/components/features/terminal/terminal\"));\n\nconst TAB_CONFIG = {\n tasklist: { component: TaskListTab },\n files: { component: FilesTab },\n browser: { component: BrowserTab },\n terminal: { component: Terminal },\n planner: { component: PlannerTab },\n usage: { component: UsageTab },\n};\n\nexport function ConversationTabContent() {\n const { selectedTab, shouldShownAgentLoading } = useConversationStore();\n const { conversationId } = useConversationId();\n\n const activeTab = useMemo(\n () =>\n TAB_CONFIG[selectedTab as keyof typeof TAB_CONFIG] ?? TAB_CONFIG.files,\n [selectedTab],\n );\n\n const ActiveComponent = activeTab.component;\n\n const tabWrapperKey =\n selectedTab === \"terminal\"\n ? `${selectedTab}-${conversationId}`\n : (selectedTab ?? \"files\");\n\n return (\n <TabContainer>\n <TabContentArea>\n <ConversationTabContentCrossfade\n showAgentLoading={shouldShownAgentLoading}\n tabKey={tabWrapperKey}\n >\n <TabWrapper key={tabWrapperKey}>\n <ActiveComponent />\n </TabWrapper>\n </ConversationTabContentCrossfade>\n </TabContentArea>\n </TabContainer>\n );\n}\n"],"mappings":";;;;;;;;;AAWA,IAAM,IAAW,QAAW,OAAO,qCAAqB,GAClD,IAAa,QAAW,OAAO,uCAAuB,GACtD,IAAa,QAAW,OAAO,uCAAuB,GACtD,IAAc,QAAW,OAAO,yCAAyB,GACzD,IAAW,QAAW,OAAO,qCAAqB,GAClD,IAAW,QAAW,OAAO,gCAA0C,GAEvE,IAAa;CACjB,UAAU,EAAE,WAAW,EAAY;CACnC,OAAO,EAAE,WAAW,EAAS;CAC7B,SAAS,EAAE,WAAW,EAAW;CACjC,UAAU,EAAE,WAAW,EAAS;CAChC,SAAS,EAAE,WAAW,EAAW;CACjC,OAAO,EAAE,WAAW,EAAS;AAC/B;AAEA,SAAgB,IAAyB;CACvC,IAAM,EAAE,gBAAa,+BAA4B,EAAqB,GAChE,EAAE,sBAAmB,EAAkB,GAQvC,IANY,QAEd,EAAW,MAA2C,EAAW,OACnE,CAAC,CAAW,CAGU,EAAU,WAE5B,IACJ,MAAgB,aACZ,GAAG,EAAY,GAAG,MACjB,KAAe;CAEtB,OACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EACE,kBAAkB;EAClB,QAAQ;YAER,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,CAAkB,CAAA,EACR,GAFK,CAEL;CACmB,CAAA,EACnB,CAAA,EACJ,CAAA;AAElB"}
|