@openhands/agent-canvas 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/README.windows.md +2 -2
- package/build/assets/Trans-De9RwQhA.js +1 -0
- package/build/assets/__vite-browser-external-4xJsU2-u.js +1 -0
- package/build/assets/{acp-providers-B_ZxlEbx.js → acp-providers-D_D8VUpP.js} +1 -1
- package/build/assets/active-backend-context-u2tdYRgH.js +1 -0
- package/build/assets/add-backend-modal-DIEyAkA4.js +1 -0
- package/build/assets/agent-profiles-settings-BovdV4N8.js +1 -0
- package/build/assets/{agent-server-client-options-CxnCYyIW.js → agent-server-client-options-DVLRd9sw.js} +1 -1
- package/build/assets/agent-server-conversation-service.api-BP73yONA.js +5 -0
- package/build/assets/agent-settings-FGL3Yvkp.js +1 -0
- package/build/assets/agent-settings-Ofbh6UTD.js +2 -0
- package/build/assets/alert-banner-BW0wRYw6.js +1 -0
- package/build/assets/api-key-entry-screen-CZIdRmUJ.js +1 -0
- package/build/assets/app-settings-BHJ9nKti.js +1 -0
- package/build/assets/automation-detail-DwYGzLkp.js +2 -0
- package/build/assets/automations-list-CuAfJmMW.js +1 -0
- package/build/assets/back-nav-button-BYmxFxGt.js +1 -0
- package/build/assets/backend-form-modal-BiaOB2C4.js +1 -0
- package/build/assets/backend-synced-settings-badge-Bs3FSXsS.js +1 -0
- package/build/assets/base-modal-CC5Pp8CF.js +1 -0
- package/build/assets/bot-D7eUAuSB.js +1 -0
- package/build/assets/brand-button-DKPMEKcW.js +1 -0
- package/build/assets/{browser-CCwPzPsD.js → browser-B39N74jU.js} +2 -2
- package/build/assets/browser-store-BI6uklCG.js +1 -0
- package/build/assets/browser-tab-aiDg7aEn.js +1 -0
- package/build/assets/chat-send-button-DxuZIoW8.js +1 -0
- package/build/assets/check-Bvi71siz.js +1 -0
- package/build/assets/checkmark-h7udgXMM.js +1 -0
- package/build/assets/{chevron-down-BxZEAIv4.js → chevron-down-CI8A6tet.js} +1 -1
- package/build/assets/circle-plus-check-toggle-T3eAIuPQ.js +1 -0
- package/build/assets/close-p3Op5lxI.js +1 -0
- package/build/assets/code-tag-DYlAhEQY.js +1 -0
- package/build/assets/{color-themes-CTNRQd1a.js → color-themes-DPBzNtVg.js} +4 -4
- package/build/assets/combobox-caret-CLGvOs32.js +1 -0
- package/build/assets/command-menu-DKrLCRla.js +1 -0
- package/build/assets/{command-store-C-57Heey.js → command-store-D8J5LMW1.js} +1 -1
- package/build/assets/condenser-settings-D_5vY4m3.js +1 -0
- package/build/assets/confirmation-modal-BK1F0A68.js +1 -0
- package/build/assets/context-menu-list-item-DBFzplWW.js +1 -0
- package/build/assets/conversation-DnVC6vRV.js +1 -0
- package/build/assets/conversation-local-storage-F6zVMM--.js +1 -0
- package/build/assets/conversation-panel-ZEz-z3az.js +1 -0
- package/build/assets/conversation-service.api-CqZcHr1c.js +1 -0
- package/build/assets/conversation-state-store-B2Bp32XI.js +1 -0
- package/build/assets/conversation-store-LptbOvKa.js +1 -0
- package/build/assets/conversation-tab-empty-state-m8IUkfMj.js +1 -0
- package/build/assets/conversation-xkBS3AHC.js +19 -0
- package/build/assets/copy-3JCw_XFB.js +1 -0
- package/build/assets/copy-BLmGeJcd.js +1 -0
- package/build/assets/copy-to-clipboard-button-Aj9wFmt2.js +1 -0
- package/build/assets/createLucideIcon-CVAsW2Yo.js +1 -0
- package/build/assets/declaration-B9kpCaYl.js +1 -0
- package/build/assets/device-verify-B5YCrvSu.js +1 -0
- package/build/assets/dist-CodhvuAP.js +1 -0
- package/build/assets/dropdown-classes-CgQ45JmQ.js +1 -0
- package/build/assets/edit-automation-modal-B6U96gVV.js +1 -0
- package/build/assets/ellipsis-button-1BV9Sga8.js +1 -0
- package/build/assets/entry.client-Dy--3GeA.js +2 -0
- package/build/assets/enum-filter-dropdown-DCITiYVi.js +1 -0
- package/build/assets/environment-switch-overlay-DUnKILNH.js +1 -0
- package/build/assets/extensions-hub-CksKNpP9.js +1 -0
- package/build/assets/{extensions-navigation-DfLHdTUC.js → extensions-navigation-Di9rJ-b5.js} +1 -1
- package/build/assets/{external-link-D8njjDTk.js → external-link-D2zJjE9G.js} +1 -1
- package/build/assets/files-tab-61Vaihc6.js +1 -0
- package/build/assets/files-tab-store-DJsPxYdg.js +1 -0
- package/build/assets/folder-mMWFvaw0.js +1 -0
- package/build/assets/form-control-classes-9rkU4usZ.js +1 -0
- package/build/assets/get-language-from-path-CPNnuVhI.js +1 -0
- package/build/assets/git-provider-icon-aQRcUVI-.js +1 -0
- package/build/assets/home-5gOtUe-n.js +1 -0
- package/build/assets/iconBase-DaTRRUjy.js +1 -0
- package/build/assets/index-redirect-CUUJiNki.js +1 -0
- package/build/assets/install-server-modal-BRab9inF.js +1 -0
- package/build/assets/launch-1TJRKkkX.js +1 -0
- package/build/assets/lesson-plan-BtrZUCuj.js +4 -0
- package/build/assets/link-external-DfKQroKX.js +1 -0
- package/build/assets/{list-todo-B_Ts2JmZ.js → list-todo-BfH6yYUK.js} +1 -1
- package/build/assets/llm-not-configured-banner-BrU5uHto.js +27 -0
- package/build/assets/llm-settings-BpdU51Jo.js +1 -0
- package/build/assets/llm-settings-DsInf6yD.js +1 -0
- package/build/assets/{llm-subscription-service-BX_AtNlO.js → llm-subscription-service-CKyaV24y.js} +1 -1
- package/build/assets/loader-circle-BEykUKYG.js +1 -0
- package/build/assets/loading-spinner-DHAIPZkP.js +1 -0
- package/build/assets/manage-backends-modal-BREySP-J.js +1 -0
- package/build/assets/manifest-a5bb7568.js +1 -0
- package/build/assets/{markdown-renderer-DWy7Np7u.js → markdown-renderer-D8mayGjI.js} +1 -1
- package/build/assets/mcp-XXf8k6mb.js +9 -0
- package/build/assets/messages-D2oZb47Z.js +40 -0
- package/build/assets/middleware-DYHYNAnP.js +6 -0
- package/build/assets/modal-backdrop-zVwfOJZr.js +1 -0
- package/build/assets/modal-body-Dcu5McCa.js +1 -0
- package/build/assets/{modal-classes-C4kS6ib_.js → modal-classes-DPqxSyuP.js} +1 -1
- package/build/assets/modal-close-button-CTCX4nCH.js +1 -0
- package/build/assets/model-selector-VDHBytb6.js +1 -0
- package/build/assets/{mouse-pointer-click-CXAx4FyM.js → mouse-pointer-click-PdEQPL6v.js} +1 -1
- package/build/assets/navigation-context-DPs2G0X8.js +1 -0
- package/build/assets/navigation-link-D8hfwvxI.js +1 -0
- package/build/assets/onboarding-D32kiGME.js +1 -0
- package/build/assets/onboarding-modal-C084vkv7.js +1 -0
- package/build/assets/openhands-logo-bcNw5bkY.js +1 -0
- package/build/assets/option-service.api-Cl5VLGyw.js +1 -0
- package/build/assets/organization-service.api-CnynNoT-.js +1 -0
- package/build/assets/path-utils-BeOmjIcE.js +1 -0
- package/build/assets/{pencil-CsL0ns9y.js → pencil-Dj2XjKmI.js} +1 -1
- package/build/assets/plan-components-j9X4AxYM.js +1 -0
- package/build/assets/planner-tab-AZMjJx31.js +1 -0
- package/build/assets/plugins-management-service-BAp70KN7.js +1 -0
- package/build/assets/profiles-service.api-CeYEmSM3.js +1 -0
- package/build/assets/providers-vX9jk9Vy.js +1 -0
- package/build/assets/{proxy-TeteRRW5.js → proxy-CHmFkV16.js} +1 -1
- package/build/assets/react-DPDgL6du.js +1 -0
- package/build/assets/recommended-automations-launcher-Bk8tQ-Cn.js +58 -0
- package/build/assets/{refresh-cw-GkGYXsU-.js → refresh-cw-DM82EIyx.js} +1 -1
- package/build/assets/root-CxWZUXTQ.css +1 -0
- package/build/assets/root-layout-CoWw4kpz.js +2 -0
- package/build/assets/root-tuEPDx-i.js +2 -0
- package/build/assets/runtime-waiting-state-DkzLgvMn.js +1 -0
- package/build/assets/schema-field-nvq_Juo2.js +1 -0
- package/build/assets/sdk-section-page-CgT70FaZ.js +1 -0
- package/build/assets/sdk-settings-schema-BjBkMHzZ.js +1 -0
- package/build/assets/search-4DHskuhE.js +1 -0
- package/build/assets/search-BsjCEFNf.js +1 -0
- package/build/assets/secrets-service-CZYjNxFw.js +1 -0
- package/build/assets/secrets-settings-BCxk9p9s.js +1 -0
- package/build/assets/segmented-toggle-Cen5AMUc.js +1 -0
- package/build/assets/settings-CedTdtb5.js +1 -0
- package/build/assets/settings-dropdown-input-xzoZwgUe.js +1 -0
- package/build/assets/settings-gear-MXCyZW0x.js +1 -0
- package/build/assets/settings-index-Cct3PJSP.js +1 -0
- package/build/assets/settings-input-DYs7t3oK.js +1 -0
- package/build/assets/settings-list-classes-DvQr5jVS.js +1 -0
- package/build/assets/{settings-CN_HaPjH.js → settings-mQUckT0g.js} +1 -1
- package/build/assets/settings-modal-DwLybV_O.js +1 -0
- package/build/assets/settings-section-header-context-COMOIaxV.js +1 -0
- package/build/assets/settings-service.api-DldkFI1x.js +1 -0
- package/build/assets/settings-switch-C2N2xqEb.js +1 -0
- package/build/assets/{settings-utils-9-_6iVIn.js → settings-utils-BMdG65By.js} +1 -1
- package/build/assets/shared-conversation-DnDwfLgg.js +1 -0
- package/build/assets/sidebar-layout-BtpUSN3j.js +1 -0
- package/build/assets/sidebar-mobile-menu-toggle-B8k3qu84.js +1 -0
- package/build/assets/sidebar-nav-link-CIB3NBRW.js +1 -0
- package/build/assets/sidebar-store-CZuE8AH5.js +1 -0
- package/build/assets/skill-card-pill-row-D2bUe2kB.js +1 -0
- package/build/assets/skills-9cDZONKh.js +1 -0
- package/build/assets/skills-plugins-B68ay6Pu.js +1 -0
- package/build/assets/skills-settings-A6sUy0T7.js +2 -0
- package/build/assets/{square-chevron-right-Cfi-SUY0.js → square-chevron-right-Czw3FFWc.js} +1 -1
- package/build/assets/styled-tooltip-DsKsFjuq.js +1 -0
- package/build/assets/suspense-X5dBsJzn.js +1 -0
- package/build/assets/switch-skeleton-DqQwalyu.js +1 -0
- package/build/assets/task-list-tab-BAThr9Ex.js +1 -0
- package/build/assets/{terminal-HakoMrQX.js → terminal-BmT0_gIH.js} +2 -2
- package/build/assets/terminal-BuLtIrb9.js +1 -0
- package/build/assets/toggle-switch-DBlOOzBr.js +1 -0
- package/build/assets/{trash-2-Bq4hqiRH.js → trash-2-Be_7y3Mn.js} +1 -1
- package/build/assets/typography-YGPBGzOG.js +1 -0
- package/build/assets/u-check-circle-BqoIxNz_.js +1 -0
- package/build/assets/u-check-circle-half-LiwZkuFe.js +1 -0
- package/build/assets/u-edit-DJ90xc8Z.js +1 -0
- package/build/assets/use-acp-credential-form-Bs6s0DTU.js +1 -0
- package/build/assets/use-activate-agent-profile-CKtTToSx.js +1 -0
- package/build/assets/use-active-agent-profile-CWLPpOtK.js +1 -0
- package/build/assets/use-active-conversation-DI5S5M1w.js +1 -0
- package/build/assets/use-agent-profiles-DPcaYLpm.js +1 -0
- package/build/assets/use-agent-state-Buh3bQDh.js +1 -0
- package/build/assets/use-backends-health-CxkvJy2N.js +1 -0
- package/build/assets/use-breakpoint-B-O0lQ84.js +1 -0
- package/build/assets/use-can-manage-org-profiles-DeX2Mfje.js +1 -0
- package/build/assets/use-click-outside-element-Bf4Omzot.js +1 -0
- package/build/assets/use-cloud-current-user-id-D_PQGfmT.js +1 -0
- package/build/assets/use-config-ur0RbjCP.js +1 -0
- package/build/assets/use-create-conversation-D9OWYcte.js +1 -0
- package/build/assets/use-create-secret-CVFSlhlR.js +1 -0
- package/build/assets/use-event-store-YSOxy9FC.js +4 -0
- package/build/assets/use-handle-plan-click-Dug8egQl.js +1 -0
- package/build/assets/use-is-authed-_dhQ2Xuj.js +1 -0
- package/build/assets/use-launch-skill-in-chat-BnoDgvAy.js +1 -0
- package/build/assets/use-llm-profiles-DjackuP1.js +1 -0
- package/build/assets/use-onboarding-completion-C_Swglzp.js +1 -0
- package/build/assets/use-plugins-marketplace-BGb-KgfD.js +1 -0
- package/build/assets/use-runtime-is-ready-Diiq65Q-.js +1 -0
- package/build/assets/use-save-agent-profile-aKKLqDJM.js +1 -0
- package/build/assets/{use-save-settings-DErJDIDL.js → use-save-settings-CChDyjOB.js} +1 -1
- package/build/assets/use-settings-dX4fKUPF.js +1 -0
- package/build/assets/use-settings-nav-items-D6pHnvxg.js +16 -0
- package/build/assets/use-skills-Dqo-pDDx.js +1 -0
- package/build/assets/use-task-list-CmWGElgb.js +1 -0
- package/build/assets/use-tracking-GtXCHmTv.js +1 -0
- package/build/assets/use-user-conversation-6uOXFP95.js +1 -0
- package/build/assets/useMutation-DCE9RcgK.js +1 -0
- package/build/assets/useMutationState-BUab8Kxr.js +1 -0
- package/build/assets/useQueries-CRzaAqzH.js +1 -0
- package/build/assets/useQuery-CpjHYtZc.js +1 -0
- package/build/assets/useTranslation-Cgy4JA_g.js +1 -0
- package/build/assets/utils-CE0lDWtb.js +1 -0
- package/build/assets/vendor-styling-CI0PQ3ab.js +22 -0
- package/build/assets/{vendor~browser-BQU4C3CQ.js → vendor~browser-Cvg7jXCP.js} +1 -1
- package/build/assets/{vendor~browser-tab-Cim6xN2k.js → vendor~browser-tab-Di0kh5Zw.js} +1 -1
- package/build/assets/vendor~conversation-panel~conversation~alert-banner-DHDkknt5.js +1 -0
- package/build/assets/vendor~entry.client-9tWQ_Ugw.js +1 -0
- package/build/assets/{vendor~entry.client-lAMyAlBD.js → vendor~entry.client-D6BtSOtn.js} +1 -1
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~d1e18dtv-5Q6lQJdE.js +177 -0
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~i3v2mlbw-BrJQ3XZH.js +1 -0
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~ncdxw0bh-ClHnt5lR.js +10 -0
- package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~t35o0b0f-Bss49YXv.js → vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~k6tszsdc-Bb-xMtbv.js} +1 -1
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~nn5zty47-Zl0G1QCy.js +1 -0
- package/build/assets/{vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~fpbtwbmk-DDSPtjxR.js → vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~byh8a1g4-XNPdpuO8.js} +1 -1
- package/build/assets/{vendor~files-tab-BvQLon-P.js → vendor~files-tab-B02k3xvx.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation-DBPRU26Z.js → vendor~home~conversation-panel~conversation-CYMF9JYB.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DnEBAp2W.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-9UMeuPV6.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CzI-A-Gz.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BD0GaRGa.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-ByET2Quf.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CqXiHwjU.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DCYBrned.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-D7EUmQ8Y.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DnctfFZL.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DTzw2x50.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-pSG7lnvH.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-d8aETPbZ.js} +1 -1
- package/build/assets/{vendor~launch-DqoOsAhA.js → vendor~launch-CHXA9cJu.js} +1 -1
- package/build/assets/vendor~root-layout~conversation-panel~conversation-CpiTHpHl.js +1 -0
- package/build/assets/{vendor~root-layout~conversation-panel~conversation~shared-conversation-BJl81v7J.js → vendor~root-layout~conversation-panel~conversation~shared-conversation-_TdZcNMD.js} +1 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation-Cn2jwSga.js +1 -0
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~enjl5xdm-mMKDm94D.js +48 -0
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~automations-~ki5qnp0d-DRld6s9c.js → vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~automations-~ki5qnp0d-rV6d1Iv_.js} +502 -43
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~shared-conversation~alert-banner~pl~rqjteh0a-9d2kA26V.js → vendor~root-layout~home~conversation-panel~conversation~shared-conversation~alert-banner~pl~rqjteh0a-CZM4hwUT.js} +1 -1
- package/build/assets/vendor~root-layout~home~mcp~automations-list~onboarding-modal-CXyYYvYh.js +1 -0
- package/build/assets/verification-settings-D_zsNB_c.js +1 -0
- package/build/assets/x-Cb0WAtak.js +1 -0
- package/build/assets/x-mark-Batp6gXa.js +1 -0
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +138 -1
- package/build/locales/ca/openhands.json +138 -1
- package/build/locales/de/openhands.json +138 -1
- package/build/locales/en/openhands.json +138 -1
- package/build/locales/es/openhands.json +138 -1
- package/build/locales/fr/openhands.json +138 -1
- package/build/locales/it/openhands.json +138 -1
- package/build/locales/ja/openhands.json +138 -1
- package/build/locales/ko-KR/openhands.json +138 -1
- package/build/locales/no/openhands.json +138 -1
- package/build/locales/pt/openhands.json +138 -1
- package/build/locales/tr/openhands.json +138 -1
- package/build/locales/uk/openhands.json +138 -1
- package/build/locales/zh-CN/openhands.json +138 -1
- package/build/locales/zh-TW/openhands.json +138 -1
- package/config/defaults.json +7 -9
- package/dist/_virtual/__vite-browser-external.cjs +2 -0
- package/dist/_virtual/__vite-browser-external.cjs.map +1 -0
- package/dist/_virtual/__vite-browser-external.js +9 -0
- package/dist/_virtual/__vite-browser-external.js.map +1 -0
- package/dist/api/agent-profiles-service/agent-profiles-service.api.cjs +2 -0
- package/dist/api/agent-profiles-service/agent-profiles-service.api.cjs.map +1 -0
- package/dist/api/agent-profiles-service/agent-profiles-service.api.d.ts +22 -0
- package/dist/api/agent-profiles-service/agent-profiles-service.api.js +35 -0
- package/dist/api/agent-profiles-service/agent-profiles-service.api.js.map +1 -0
- package/dist/api/agent-server-adapter.cjs +2 -2
- package/dist/api/agent-server-adapter.cjs.map +1 -1
- package/dist/api/agent-server-adapter.d.ts +11 -1
- package/dist/api/agent-server-adapter.js +60 -60
- package/dist/api/agent-server-adapter.js.map +1 -1
- package/dist/api/agent-server-compatibility.cjs +1 -1
- package/dist/api/agent-server-compatibility.cjs.map +1 -1
- package/dist/api/agent-server-compatibility.js +1 -0
- package/dist/api/agent-server-compatibility.js.map +1 -1
- package/dist/api/agent-server-home.cjs +1 -1
- package/dist/api/agent-server-home.cjs.map +1 -1
- package/dist/api/agent-server-home.js +1 -0
- package/dist/api/agent-server-home.js.map +1 -1
- package/dist/api/cloud/agent-profiles-service.api.cjs +2 -0
- package/dist/api/cloud/agent-profiles-service.api.cjs.map +1 -0
- package/dist/api/cloud/agent-profiles-service.api.d.ts +7 -0
- package/dist/api/cloud/agent-profiles-service.api.js +58 -0
- package/dist/api/cloud/agent-profiles-service.api.js.map +1 -0
- package/dist/api/cloud/organization-service.api.cjs +1 -1
- package/dist/api/cloud/organization-service.api.cjs.map +1 -1
- package/dist/api/cloud/organization-service.api.d.ts +8 -0
- package/dist/api/cloud/organization-service.api.js +3 -1
- package/dist/api/cloud/organization-service.api.js.map +1 -1
- package/dist/api/cloud/profiles-service.api.cjs +2 -0
- package/dist/api/cloud/profiles-service.api.cjs.map +1 -0
- package/dist/api/cloud/profiles-service.api.d.ts +7 -0
- package/dist/api/cloud/profiles-service.api.js +75 -0
- package/dist/api/cloud/profiles-service.api.js.map +1 -0
- package/dist/api/cloud/settings-service.api.cjs +1 -1
- package/dist/api/cloud/settings-service.api.cjs.map +1 -1
- package/dist/api/cloud/settings-service.api.js +1 -1
- package/dist/api/cloud/settings-service.api.js.map +1 -1
- package/dist/api/config-service/config-service.api.cjs +1 -1
- package/dist/api/config-service/config-service.api.cjs.map +1 -1
- package/dist/api/config-service/config-service.api.js +1 -0
- package/dist/api/config-service/config-service.api.js.map +1 -1
- package/dist/api/conversation-metadata-store.cjs.map +1 -1
- package/dist/api/conversation-metadata-store.d.ts +11 -0
- package/dist/api/conversation-metadata-store.js.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.d.ts +20 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +134 -105
- package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.types.d.ts +2 -0
- package/dist/api/conversation-service/conversation-service.api.cjs +1 -1
- package/dist/api/conversation-service/conversation-service.api.cjs.map +1 -1
- package/dist/api/conversation-service/conversation-service.api.d.ts +1 -0
- package/dist/api/conversation-service/conversation-service.api.js +4 -0
- package/dist/api/conversation-service/conversation-service.api.js.map +1 -1
- package/dist/api/device-flow-client.cjs +1 -1
- package/dist/api/device-flow-client.cjs.map +1 -1
- package/dist/api/device-flow-client.js +33 -25
- package/dist/api/device-flow-client.js.map +1 -1
- package/dist/api/event-service/event-service.api.cjs +1 -1
- package/dist/api/event-service/event-service.api.cjs.map +1 -1
- package/dist/api/event-service/event-service.api.js +1 -0
- package/dist/api/event-service/event-service.api.js.map +1 -1
- package/dist/api/mcp-service/mcp-redacted-credentials.cjs +1 -1
- package/dist/api/mcp-service/mcp-redacted-credentials.cjs.map +1 -1
- package/dist/api/mcp-service/mcp-redacted-credentials.d.ts +3 -3
- package/dist/api/mcp-service/mcp-redacted-credentials.js +29 -30
- package/dist/api/mcp-service/mcp-redacted-credentials.js.map +1 -1
- package/dist/api/mcp-service/mcp-service.api.cjs +1 -1
- package/dist/api/mcp-service/mcp-service.api.cjs.map +1 -1
- package/dist/api/mcp-service/mcp-service.api.d.ts +8 -1
- package/dist/api/mcp-service/mcp-service.api.js +129 -23
- package/dist/api/mcp-service/mcp-service.api.js.map +1 -1
- package/dist/api/option-service/option-service.api.cjs +1 -1
- package/dist/api/option-service/option-service.api.cjs.map +1 -1
- package/dist/api/option-service/option-service.api.js +1 -0
- package/dist/api/option-service/option-service.api.js.map +1 -1
- package/dist/api/plugins-management-service.cjs +2 -0
- package/dist/api/plugins-management-service.cjs.map +1 -0
- package/dist/api/plugins-management-service.d.ts +50 -0
- package/dist/api/plugins-management-service.js +41 -0
- package/dist/api/plugins-management-service.js.map +1 -0
- package/dist/api/plugins-service.d.ts +49 -0
- 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.js +21 -14
- package/dist/api/profiles-service/profiles-service.api.js.map +1 -1
- package/dist/api/runtime-service/agent-server-runtime-service.cjs +1 -1
- package/dist/api/runtime-service/agent-server-runtime-service.cjs.map +1 -1
- package/dist/api/runtime-service/agent-server-runtime-service.js +1 -0
- package/dist/api/runtime-service/agent-server-runtime-service.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.js +1 -0
- package/dist/api/secrets-service.js.map +1 -1
- package/dist/api/settings-service/settings-service.api.cjs +1 -1
- package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
- package/dist/api/settings-service/settings-service.api.js +92 -50
- package/dist/api/settings-service/settings-service.api.js.map +1 -1
- package/dist/api/skills-service.cjs +1 -1
- package/dist/api/skills-service.cjs.map +1 -1
- package/dist/api/skills-service.js +1 -0
- package/dist/api/skills-service.js.map +1 -1
- package/dist/api/workspaces-service/workspaces-service.api.cjs +1 -1
- package/dist/api/workspaces-service/workspaces-service.api.cjs.map +1 -1
- package/dist/api/workspaces-service/workspaces-service.api.js +1 -0
- package/dist/api/workspaces-service/workspaces-service.api.js.map +1 -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 +57 -38
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.js.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.cjs +2 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.js +13 -9
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js +65 -26
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message.cjs +2 -2
- package/dist/components/conversation-events/chat/event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message.js +78 -76
- package/dist/components/conversation-events/chat/event-message.js.map +1 -1
- package/dist/components/features/analytics/telemetry-consent-banner.cjs +1 -1
- package/dist/components/features/analytics/telemetry-consent-banner.cjs.map +1 -1
- package/dist/components/features/analytics/telemetry-consent-banner.js +1 -0
- package/dist/components/features/analytics/telemetry-consent-banner.js.map +1 -1
- package/dist/components/features/automations/detail/activity-log-item.d.ts +3 -2
- package/dist/components/features/automations/detail/activity-log-section.d.ts +3 -2
- package/dist/components/features/automations/detail/debug-automation-button.d.ts +17 -0
- package/dist/components/features/automations/detail/run-logs-modal.d.ts +6 -1
- package/dist/components/features/backends/backend-form-modal.cjs +1 -1
- package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
- package/dist/components/features/backends/backend-form-modal.d.ts +6 -2
- package/dist/components/features/backends/backend-form-modal.js +198 -161
- package/dist/components/features/backends/backend-form-modal.js.map +1 -1
- package/dist/components/features/backends/backend-row.cjs +1 -1
- package/dist/components/features/backends/backend-row.cjs.map +1 -1
- package/dist/components/features/backends/backend-row.d.ts +2 -1
- package/dist/components/features/backends/backend-row.js +60 -54
- package/dist/components/features/backends/backend-row.js.map +1 -1
- package/dist/components/features/backends/backend-selector.cjs +1 -1
- package/dist/components/features/backends/backend-selector.cjs.map +1 -1
- package/dist/components/features/backends/backend-selector.js +4 -4
- package/dist/components/features/backends/backend-version.cjs +1 -1
- package/dist/components/features/backends/backend-version.cjs.map +1 -1
- package/dist/components/features/backends/backend-version.js +1 -0
- package/dist/components/features/backends/backend-version.js.map +1 -1
- package/dist/components/features/backends/manage-backends-modal.cjs +1 -1
- package/dist/components/features/backends/manage-backends-modal.cjs.map +1 -1
- package/dist/components/features/backends/manage-backends-modal.js +72 -61
- package/dist/components/features/backends/manage-backends-modal.js.map +1 -1
- package/dist/components/features/chat/change-agent-button.cjs +1 -1
- package/dist/components/features/chat/change-agent-button.js +9 -9
- package/dist/components/features/chat/chat-add-file-button.cjs +1 -1
- package/dist/components/features/chat/chat-add-file-button.cjs.map +1 -1
- package/dist/components/features/chat/chat-add-file-button.js +38 -34
- package/dist/components/features/chat/chat-add-file-button.js.map +1 -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 +136 -129
- 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 +100 -87
- package/dist/components/features/chat/components/chat-input-actions.js.map +1 -1
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.cjs +2 -0
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.cjs.map +1 -0
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.d.ts +15 -0
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.js +118 -0
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.js.map +1 -0
- package/dist/components/features/chat/components/chat-input-model.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-model.js +17 -17
- package/dist/components/features/chat/components/chat-input-profile-picker.cjs +2 -0
- package/dist/components/features/chat/components/chat-input-profile-picker.cjs.map +1 -0
- package/dist/components/features/chat/components/chat-input-profile-picker.d.ts +9 -0
- package/dist/components/features/chat/components/chat-input-profile-picker.js +112 -0
- package/dist/components/features/chat/components/chat-input-profile-picker.js.map +1 -0
- package/dist/components/features/chat/components/resolve-picker-kind.cjs +2 -0
- package/dist/components/features/chat/components/resolve-picker-kind.cjs.map +1 -0
- package/dist/components/features/chat/components/resolve-picker-kind.d.ts +29 -0
- package/dist/components/features/chat/components/resolve-picker-kind.js +8 -0
- package/dist/components/features/chat/components/resolve-picker-kind.js.map +1 -0
- package/dist/components/features/chat/goal-status-banner.cjs +2 -0
- package/dist/components/features/chat/goal-status-banner.cjs.map +1 -0
- package/dist/components/features/chat/goal-status-banner.d.ts +11 -0
- package/dist/components/features/chat/goal-status-banner.js +12 -0
- package/dist/components/features/chat/goal-status-banner.js.map +1 -0
- package/dist/components/features/chat/goal-status-content.cjs +2 -0
- package/dist/components/features/chat/goal-status-content.cjs.map +1 -0
- package/dist/components/features/chat/goal-status-content.d.ts +21 -0
- package/dist/components/features/chat/goal-status-content.js +98 -0
- package/dist/components/features/chat/goal-status-content.js.map +1 -0
- package/dist/components/features/chat/interactive-chat-box.cjs +1 -1
- package/dist/components/features/chat/interactive-chat-box.cjs.map +1 -1
- package/dist/components/features/chat/interactive-chat-box.js +20 -19
- package/dist/components/features/chat/interactive-chat-box.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/code-block.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/code-block.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/code-block.d.ts +10 -3
- package/dist/components/features/chat/tool-visualizers/primitives/code-block.js +29 -16
- package/dist/components/features/chat/tool-visualizers/primitives/code-block.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/output-pane.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/output-pane.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/output-pane.d.ts +2 -2
- package/dist/components/features/chat/tool-visualizers/primitives/output-pane.js +16 -16
- package/dist/components/features/chat/tool-visualizers/primitives/output-pane.js.map +1 -1
- package/dist/components/features/chat/user-message-body.cjs +1 -1
- package/dist/components/features/chat/user-message-body.cjs.map +1 -1
- package/dist/components/features/chat/user-message-body.js +20 -20
- package/dist/components/features/chat/user-message-body.js.map +1 -1
- package/dist/components/features/command-menu/command-menu-items.d.ts +32 -0
- package/dist/components/features/command-menu/command-menu-trigger.cjs +2 -0
- package/dist/components/features/command-menu/command-menu-trigger.cjs.map +1 -0
- package/dist/components/features/command-menu/command-menu-trigger.d.ts +5 -0
- package/dist/components/features/command-menu/command-menu-trigger.js +53 -0
- package/dist/components/features/command-menu/command-menu-trigger.js.map +1 -0
- package/dist/components/features/command-menu/command-menu.d.ts +2 -0
- package/dist/components/features/command-menu/index.d.ts +2 -0
- package/dist/components/features/controls/tools-context-menu.cjs +1 -1
- package/dist/components/features/controls/tools-context-menu.cjs.map +1 -1
- package/dist/components/features/controls/tools-context-menu.d.ts +3 -1
- package/dist/components/features/controls/tools-context-menu.js +94 -77
- package/dist/components/features/controls/tools-context-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.js +8 -5
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.js.map +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 +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.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 +2 -1
- package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.js +4 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/plugins-modal.cjs +2 -0
- package/dist/components/features/conversation-panel/plugins-modal.cjs.map +1 -0
- package/dist/components/features/conversation-panel/plugins-modal.d.ts +12 -0
- package/dist/components/features/conversation-panel/plugins-modal.js +62 -0
- package/dist/components/features/conversation-panel/plugins-modal.js.map +1 -0
- package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.cjs +1 -1
- package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.cjs.map +1 -1
- package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.js +4 -4
- package/dist/components/features/mcp-logo-badge.cjs +1 -1
- package/dist/components/features/mcp-logo-badge.cjs.map +1 -1
- package/dist/components/features/mcp-logo-badge.js +17 -15
- package/dist/components/features/mcp-logo-badge.js.map +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.cjs +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.cjs.map +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.js +102 -59
- package/dist/components/features/mcp-page/custom-server-editor.js.map +1 -1
- package/dist/components/features/mcp-page/install-server-modal.cjs +1 -1
- package/dist/components/features/mcp-page/install-server-modal.cjs.map +1 -1
- package/dist/components/features/mcp-page/install-server-modal.js +284 -169
- package/dist/components/features/mcp-page/install-server-modal.js.map +1 -1
- package/dist/components/features/mcp-page/installed-server-card.cjs +1 -1
- package/dist/components/features/mcp-page/installed-server-card.cjs.map +1 -1
- package/dist/components/features/mcp-page/installed-server-card.js +16 -18
- package/dist/components/features/mcp-page/installed-server-card.js.map +1 -1
- package/dist/components/features/onboarding/onboarding-host.d.ts +3 -13
- package/dist/components/features/plugins/add-plugin-modal.d.ts +6 -0
- package/dist/components/features/plugins/build-plugins-view-model.d.ts +39 -0
- package/dist/components/features/plugins/plugin-card.d.ts +13 -0
- package/dist/components/features/plugins/plugin-detail-modal.d.ts +13 -0
- package/dist/components/features/plugins/plugin-picker-card.d.ts +10 -0
- package/dist/components/features/plugins/plugin-picker-modal.d.ts +9 -0
- package/dist/components/features/plugins/plugin-picker-trigger.d.ts +9 -0
- package/dist/components/features/plugins/plugin-picker.d.ts +18 -0
- package/dist/components/features/plugins/plugin-spec-identity.d.ts +28 -0
- package/dist/components/features/plugins/plugins-toolbar.d.ts +9 -0
- package/dist/components/features/settings/agent-profiles/agent-profile-actions-menu.d.ts +16 -0
- package/dist/components/features/settings/agent-profiles/agent-profile-row.d.ts +13 -0
- package/dist/components/features/settings/agent-profiles/agent-profiles-body.d.ts +15 -0
- package/dist/components/features/settings/agent-profiles/agent-profiles-local-view.d.ts +7 -0
- package/dist/components/features/settings/agent-profiles/agent-profiles-manager.d.ts +7 -0
- package/dist/components/features/settings/agent-profiles/delete-agent-profile-modal.d.ts +7 -0
- package/dist/components/features/settings/agent-profiles/index.d.ts +6 -0
- package/dist/components/features/settings/agent-profiles/merge-agent-profile-save-input.d.ts +18 -0
- package/dist/components/features/settings/llm-profiles/llm-profiles-manager.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/llm-profiles-manager.js +1 -0
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.js +1 -1
- package/dist/components/features/settings/llm-profiles/profile-row.d.ts +3 -1
- package/dist/components/features/settings/llm-profiles/profiles-body.d.ts +3 -1
- package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.cjs +1 -1
- package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.cjs.map +1 -1
- package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.js +3 -2
- package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.js.map +1 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs +7 -7
- package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs.map +1 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-form.js +279 -130
- package/dist/components/features/settings/mcp-settings/mcp-server-form.js.map +1 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-list-item.d.ts +1 -12
- package/dist/components/features/settings/mcp-settings/mcp-server-list.d.ts +1 -11
- package/dist/components/features/settings/settings-dropdown-input.cjs +1 -1
- package/dist/components/features/settings/settings-dropdown-input.js +6 -6
- package/dist/components/features/sidebar/sidebar-rail-body.cjs +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.d.ts +1 -2
- package/dist/components/features/sidebar/sidebar-rail-body.js +81 -82
- package/dist/components/features/sidebar/sidebar-rail-body.js.map +1 -1
- package/dist/components/features/sidebar/sidebar.cjs +1 -1
- package/dist/components/features/sidebar/sidebar.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar.js +45 -46
- package/dist/components/features/sidebar/sidebar.js.map +1 -1
- package/dist/components/features/skills/extensions-navigation.cjs +1 -1
- package/dist/components/features/skills/extensions-navigation.cjs.map +1 -1
- package/dist/components/features/skills/extensions-navigation.js +1 -2
- package/dist/components/features/skills/extensions-navigation.js.map +1 -1
- package/dist/components/shared/modals/modal-backdrop.cjs +1 -1
- package/dist/components/shared/modals/modal-backdrop.cjs.map +1 -1
- package/dist/components/shared/modals/modal-backdrop.d.ts +5 -1
- package/dist/components/shared/modals/modal-backdrop.js +3 -3
- package/dist/components/shared/modals/modal-backdrop.js.map +1 -1
- package/dist/components/shared/modals/settings/model-selector.cjs +1 -1
- package/dist/components/shared/modals/settings/model-selector.js +16 -16
- package/dist/config/defaults.cjs +1 -1
- package/dist/config/defaults.cjs.map +1 -1
- package/dist/config/defaults.js +7 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/contexts/conversation-websocket-context.cjs +3 -3
- package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
- package/dist/contexts/conversation-websocket-context.js +200 -197
- package/dist/contexts/conversation-websocket-context.js.map +1 -1
- package/dist/hooks/chat/use-goal-interceptor.cjs +2 -0
- package/dist/hooks/chat/use-goal-interceptor.cjs.map +1 -0
- package/dist/hooks/chat/use-goal-interceptor.d.ts +8 -0
- package/dist/hooks/chat/use-goal-interceptor.js +37 -0
- package/dist/hooks/chat/use-goal-interceptor.js.map +1 -0
- 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.js +17 -16
- package/dist/hooks/chat/use-grip-resize.js.map +1 -1
- package/dist/hooks/chat/use-model-interceptor.cjs +1 -1
- package/dist/hooks/chat/use-model-interceptor.cjs.map +1 -1
- package/dist/hooks/chat/use-model-interceptor.d.ts +3 -3
- package/dist/hooks/chat/use-model-interceptor.js +8 -9
- package/dist/hooks/chat/use-model-interceptor.js.map +1 -1
- package/dist/hooks/chat/use-slash-command.cjs +1 -1
- package/dist/hooks/chat/use-slash-command.cjs.map +1 -1
- package/dist/hooks/chat/use-slash-command.js +4 -4
- package/dist/hooks/chat/use-slash-command.js.map +1 -1
- package/dist/hooks/mutation/conversation-mutation-utils.cjs +1 -1
- package/dist/hooks/mutation/conversation-mutation-utils.cjs.map +1 -1
- package/dist/hooks/mutation/conversation-mutation-utils.d.ts +17 -0
- package/dist/hooks/mutation/conversation-mutation-utils.js +23 -4
- package/dist/hooks/mutation/conversation-mutation-utils.js.map +1 -1
- package/dist/hooks/mutation/use-activate-agent-profile.cjs +2 -0
- package/dist/hooks/mutation/use-activate-agent-profile.cjs.map +1 -0
- package/dist/hooks/mutation/use-activate-agent-profile.d.ts +23 -0
- package/dist/hooks/mutation/use-activate-agent-profile.js +34 -0
- package/dist/hooks/mutation/use-activate-agent-profile.js.map +1 -0
- package/dist/hooks/mutation/use-activate-llm-profile.cjs +1 -1
- package/dist/hooks/mutation/use-activate-llm-profile.js +1 -1
- package/dist/hooks/mutation/use-add-mcp-server.cjs +1 -1
- package/dist/hooks/mutation/use-add-mcp-server.cjs.map +1 -1
- package/dist/hooks/mutation/use-add-mcp-server.d.ts +1 -12
- package/dist/hooks/mutation/use-add-mcp-server.js +10 -34
- package/dist/hooks/mutation/use-add-mcp-server.js.map +1 -1
- package/dist/hooks/mutation/use-apply-onboarding-agent-profile.d.ts +20 -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.d.ts +2 -0
- package/dist/hooks/mutation/use-create-conversation.js +94 -25
- package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
- package/dist/hooks/mutation/use-delete-agent-profile.d.ts +1 -0
- package/dist/hooks/mutation/use-delete-llm-profile.cjs +1 -1
- package/dist/hooks/mutation/use-delete-llm-profile.js +1 -1
- package/dist/hooks/mutation/use-delete-mcp-server.cjs +1 -1
- package/dist/hooks/mutation/use-delete-mcp-server.js +4 -4
- package/dist/hooks/mutation/use-fork-conversation.cjs +2 -0
- package/dist/hooks/mutation/use-fork-conversation.cjs.map +1 -0
- package/dist/hooks/mutation/use-fork-conversation.d.ts +24 -0
- package/dist/hooks/mutation/use-fork-conversation.js +29 -0
- package/dist/hooks/mutation/use-fork-conversation.js.map +1 -0
- package/dist/hooks/mutation/use-install-plugin.d.ts +7 -0
- 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.d.ts +1 -0
- package/dist/hooks/mutation/use-new-conversation-command.js +20 -10
- package/dist/hooks/mutation/use-new-conversation-command.js.map +1 -1
- package/dist/hooks/mutation/use-rename-agent-profile.d.ts +6 -0
- package/dist/hooks/mutation/use-rename-llm-profile.cjs +1 -1
- package/dist/hooks/mutation/use-rename-llm-profile.js +1 -1
- package/dist/hooks/mutation/use-save-agent-profile.d.ts +5 -0
- package/dist/hooks/mutation/use-save-llm-profile.cjs +1 -1
- package/dist/hooks/mutation/use-save-llm-profile.js +1 -1
- package/dist/hooks/mutation/use-switch-acp-model.cjs.map +1 -1
- package/dist/hooks/mutation/use-switch-acp-model.js.map +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile-and-log.cjs +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile-and-log.cjs.map +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile-and-log.d.ts +3 -4
- package/dist/hooks/mutation/use-switch-llm-profile-and-log.js +10 -35
- package/dist/hooks/mutation/use-switch-llm-profile-and-log.js.map +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile.cjs +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile.cjs.map +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile.d.ts +20 -5
- package/dist/hooks/mutation/use-switch-llm-profile.js +38 -14
- package/dist/hooks/mutation/use-switch-llm-profile.js.map +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.cjs +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.cjs.map +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.js +11 -37
- package/dist/hooks/mutation/use-update-mcp-server.js.map +1 -1
- package/dist/hooks/query/query-keys.cjs +1 -1
- package/dist/hooks/query/query-keys.cjs.map +1 -1
- package/dist/hooks/query/query-keys.d.ts +21 -0
- package/dist/hooks/query/query-keys.js +7 -3
- package/dist/hooks/query/query-keys.js.map +1 -1
- package/dist/hooks/query/use-active-conversation.cjs +1 -1
- package/dist/hooks/query/use-active-conversation.cjs.map +1 -1
- package/dist/hooks/query/use-active-conversation.js +17 -16
- package/dist/hooks/query/use-active-conversation.js.map +1 -1
- package/dist/hooks/query/use-agent-profiles.cjs +2 -0
- package/dist/hooks/query/use-agent-profiles.cjs.map +1 -0
- package/dist/hooks/query/use-agent-profiles.d.ts +13 -0
- package/dist/hooks/query/use-agent-profiles.js +24 -0
- package/dist/hooks/query/use-agent-profiles.js.map +1 -0
- package/dist/hooks/query/use-backends-health.cjs +1 -1
- package/dist/hooks/query/use-backends-health.cjs.map +1 -1
- package/dist/hooks/query/use-backends-health.js +18 -3
- package/dist/hooks/query/use-backends-health.js.map +1 -1
- package/dist/hooks/query/use-conversation-history.cjs +1 -1
- package/dist/hooks/query/use-conversation-history.cjs.map +1 -1
- package/dist/hooks/query/use-conversation-history.js +4 -2
- package/dist/hooks/query/use-conversation-history.js.map +1 -1
- package/dist/hooks/query/use-local-workspaces.cjs +1 -1
- package/dist/hooks/query/use-local-workspaces.cjs.map +1 -1
- package/dist/hooks/query/use-local-workspaces.js +1 -0
- package/dist/hooks/query/use-local-workspaces.js.map +1 -1
- package/dist/hooks/query/use-plugins-marketplace.d.ts +7 -0
- package/dist/hooks/query/use-resolved-workspaces.cjs +1 -1
- package/dist/hooks/query/use-resolved-workspaces.cjs.map +1 -1
- package/dist/hooks/query/use-resolved-workspaces.js +7 -6
- package/dist/hooks/query/use-resolved-workspaces.js.map +1 -1
- package/dist/hooks/query/use-search-subdirs.cjs +1 -1
- package/dist/hooks/query/use-search-subdirs.cjs.map +1 -1
- package/dist/hooks/query/use-search-subdirs.js +1 -0
- package/dist/hooks/query/use-search-subdirs.js.map +1 -1
- package/dist/hooks/query/use-settings.cjs +1 -1
- package/dist/hooks/query/use-settings.cjs.map +1 -1
- package/dist/hooks/query/use-settings.js +11 -11
- package/dist/hooks/query/use-settings.js.map +1 -1
- package/dist/hooks/query/use-verified-models.cjs +1 -1
- package/dist/hooks/query/use-verified-models.cjs.map +1 -1
- package/dist/hooks/query/use-verified-models.js +1 -0
- package/dist/hooks/query/use-verified-models.js.map +1 -1
- package/dist/hooks/use-acp-model-context.cjs +1 -1
- package/dist/hooks/use-acp-model-context.cjs.map +1 -1
- package/dist/hooks/use-acp-model-context.d.ts +1 -1
- package/dist/hooks/use-acp-model-context.js +9 -8
- package/dist/hooks/use-acp-model-context.js.map +1 -1
- package/dist/hooks/use-active-agent-profile.cjs +2 -0
- package/dist/hooks/use-active-agent-profile.cjs.map +1 -0
- package/dist/hooks/use-active-agent-profile.d.ts +20 -0
- package/dist/hooks/use-active-agent-profile.js +17 -0
- package/dist/hooks/use-active-agent-profile.js.map +1 -0
- package/dist/hooks/use-auto-resize.cjs +1 -1
- package/dist/hooks/use-auto-resize.cjs.map +1 -1
- package/dist/hooks/use-auto-resize.d.ts +2 -0
- package/dist/hooks/use-auto-resize.js +49 -45
- package/dist/hooks/use-auto-resize.js.map +1 -1
- package/dist/hooks/use-can-manage-org-profiles.cjs +1 -0
- package/dist/hooks/use-can-manage-org-profiles.d.ts +18 -0
- package/dist/hooks/use-can-manage-org-profiles.js +2 -0
- package/dist/hooks/use-chat-input-llm-profile-state.cjs +2 -0
- package/dist/hooks/use-chat-input-llm-profile-state.cjs.map +1 -0
- package/dist/hooks/use-chat-input-llm-profile-state.d.ts +23 -0
- package/dist/hooks/use-chat-input-llm-profile-state.js +30 -0
- package/dist/hooks/use-chat-input-llm-profile-state.js.map +1 -0
- package/dist/hooks/use-chat-input-model-state.cjs.map +1 -1
- package/dist/hooks/use-chat-input-model-state.d.ts +1 -1
- package/dist/hooks/use-chat-input-model-state.js.map +1 -1
- package/dist/hooks/use-chat-input-profile-state.cjs +2 -0
- package/dist/hooks/use-chat-input-profile-state.cjs.map +1 -0
- package/dist/hooks/use-chat-input-profile-state.d.ts +20 -0
- package/dist/hooks/use-chat-input-profile-state.js +22 -0
- package/dist/hooks/use-chat-input-profile-state.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 +4 -0
- package/dist/hooks/use-conversation-name-context-menu.js +44 -37
- package/dist/hooks/use-conversation-name-context-menu.js.map +1 -1
- package/dist/hooks/use-conversation-plugins.cjs +2 -0
- package/dist/hooks/use-conversation-plugins.cjs.map +1 -0
- package/dist/hooks/use-conversation-plugins.d.ts +9 -0
- package/dist/hooks/use-conversation-plugins.js +12 -0
- package/dist/hooks/use-conversation-plugins.js.map +1 -0
- package/dist/hooks/use-handle-plan-click.cjs +1 -1
- package/dist/hooks/use-handle-plan-click.cjs.map +1 -1
- package/dist/hooks/use-handle-plan-click.js +2 -1
- package/dist/hooks/use-handle-plan-click.js.map +1 -1
- package/dist/hooks/use-llm-configured.cjs +1 -1
- package/dist/hooks/use-llm-configured.cjs.map +1 -1
- package/dist/hooks/use-llm-configured.js +17 -16
- package/dist/hooks/use-llm-configured.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 +51 -1
- package/dist/hooks/use-tracking.js +61 -2
- 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 +138 -1
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +18 -3
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +2329 -0
- package/dist/i18n/translation.js.map +1 -1
- package/dist/icons/slack.cjs +2 -0
- package/dist/icons/slack.cjs.map +1 -0
- package/dist/icons/slack.js +19 -0
- package/dist/icons/slack.js.map +1 -0
- package/dist/icons/u-puzzle-piece.cjs +2 -0
- package/dist/icons/u-puzzle-piece.cjs.map +1 -0
- package/dist/icons/u-puzzle-piece.js +19 -0
- package/dist/icons/u-puzzle-piece.js.map +1 -0
- package/dist/icons/x-circle-solid.cjs +2 -0
- package/dist/icons/x-circle-solid.cjs.map +1 -0
- package/dist/icons/x-circle-solid.js +13 -0
- package/dist/icons/x-circle-solid.js.map +1 -0
- package/dist/locales/ar/openhands.json +138 -1
- package/dist/locales/ca/openhands.json +138 -1
- package/dist/locales/de/openhands.json +138 -1
- package/dist/locales/en/openhands.json +138 -1
- package/dist/locales/es/openhands.json +138 -1
- package/dist/locales/fr/openhands.json +138 -1
- package/dist/locales/it/openhands.json +138 -1
- package/dist/locales/ja/openhands.json +138 -1
- package/dist/locales/ko-KR/openhands.json +138 -1
- package/dist/locales/no/openhands.json +138 -1
- package/dist/locales/pt/openhands.json +138 -1
- package/dist/locales/tr/openhands.json +138 -1
- package/dist/locales/uk/openhands.json +138 -1
- package/dist/locales/zh-CN/openhands.json +138 -1
- package/dist/locales/zh-TW/openhands.json +138 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.js +0 -20
- package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.js +70 -3
- package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/box.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/box.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/box.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/box.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.js +3 -7
- package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js +27 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.js +20 -26
- package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js +0 -9
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.js +13 -13
- package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.js +14 -10
- package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.js +13 -10
- package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js +1 -8
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js +20 -18
- package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.js +66 -21
- package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.js +17 -11
- package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.js +12 -17
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.js +14 -19
- package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.js +15 -20
- package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.cjs +2 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.js +33 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.js +10 -8
- package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js +71 -89
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/index.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/index.js +4 -4
- package/dist/node_modules/@openhands/extensions/integrations/index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.cjs +502 -43
- package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.js +58 -33
- package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.cjs +2 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.js +40 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.js +4 -4
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.js +3 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.js +3 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.js +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.js +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.js +84 -27
- package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.js +9 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.js +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.cjs +2 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.js +42 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.js +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.js +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.js +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.js +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/clients.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/clients.js +20 -0
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation-manager.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation-manager.js +18 -0
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation.js +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.js +2 -0
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js +15 -17
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/index.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/index.js +3 -0
- package/dist/node_modules/@openhands/typescript-client/dist/workspace/workspace.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/workspace/workspace.js +1 -0
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +7 -4
- package/dist/package.js.map +1 -1
- package/dist/routes/agent-settings.d.ts +106 -0
- package/dist/routes/files-tab.cjs +1 -1
- package/dist/routes/files-tab.js +23 -23
- package/dist/routes/llm-settings.cjs +1 -1
- package/dist/routes/llm-settings.cjs.map +1 -1
- package/dist/routes/llm-settings.d.ts +6 -4
- package/dist/routes/llm-settings.js +0 -1
- package/dist/routes/llm-settings.js.map +1 -1
- package/dist/routes/mcp.cjs.map +1 -1
- package/dist/routes/mcp.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 -6
- package/dist/services/settings.js.map +1 -1
- package/dist/stores/command-menu-store.cjs +2 -0
- package/dist/stores/command-menu-store.cjs.map +1 -0
- package/dist/stores/command-menu-store.d.ts +8 -0
- package/dist/stores/command-menu-store.js +12 -0
- package/dist/stores/command-menu-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.js +1 -1
- package/dist/stores/conversation-panel-preferences-store.js.map +1 -1
- package/dist/stores/conversation-store.cjs +1 -1
- package/dist/stores/conversation-store.cjs.map +1 -1
- package/dist/stores/conversation-store.d.ts +1 -0
- package/dist/stores/conversation-store.js +1 -0
- package/dist/stores/conversation-store.js.map +1 -1
- package/dist/stores/goal-store.cjs +2 -0
- package/dist/stores/goal-store.cjs.map +1 -0
- package/dist/stores/goal-store.d.ts +28 -0
- package/dist/stores/goal-store.js +14 -0
- package/dist/stores/goal-store.js.map +1 -0
- package/dist/themes/color-themes.cjs +3 -3
- package/dist/themes/color-themes.cjs.map +1 -1
- package/dist/themes/color-themes.d.ts +13 -2
- package/dist/themes/color-themes.js +2 -2
- package/dist/themes/color-themes.js.map +1 -1
- package/dist/types/agent-server/core/events/conversation-state-event.d.ts +39 -3
- 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 +2 -1
- package/dist/types/agent-server/type-guards.js +3 -3
- package/dist/types/agent-server/type-guards.js.map +1 -1
- package/dist/types/mcp-auth.cjs +2 -0
- package/dist/types/mcp-auth.cjs.map +1 -0
- package/dist/types/mcp-auth.d.ts +43 -0
- package/dist/types/mcp-auth.js +13 -0
- package/dist/types/mcp-auth.js.map +1 -0
- package/dist/types/mcp-server.d.ts +22 -1
- package/dist/types/settings.d.ts +6 -4
- package/dist/ui/context-menu.d.ts +1 -1
- package/dist/utils/acp-command.d.ts +64 -0
- package/dist/utils/automation-debug-prompt.d.ts +18 -0
- package/dist/utils/constants.cjs +1 -1
- package/dist/utils/constants.cjs.map +1 -1
- package/dist/utils/constants.d.ts +2 -0
- package/dist/utils/constants.js +12 -3
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/dropdown-classes.cjs +1 -1
- package/dist/utils/dropdown-classes.cjs.map +1 -1
- package/dist/utils/dropdown-classes.js +4 -2
- package/dist/utils/dropdown-classes.js.map +1 -1
- package/dist/utils/form-control-classes.cjs +1 -1
- package/dist/utils/form-control-classes.js +1 -1
- package/dist/utils/handle-event-for-ui.cjs +1 -1
- package/dist/utils/handle-event-for-ui.cjs.map +1 -1
- package/dist/utils/handle-event-for-ui.js +72 -37
- package/dist/utils/handle-event-for-ui.js.map +1 -1
- package/dist/utils/mcp-config.cjs +1 -1
- package/dist/utils/mcp-config.cjs.map +1 -1
- package/dist/utils/mcp-config.d.ts +15 -9
- package/dist/utils/mcp-config.js +124 -53
- package/dist/utils/mcp-config.js.map +1 -1
- package/dist/utils/mcp-installed-server-display.cjs +2 -0
- package/dist/utils/mcp-installed-server-display.cjs.map +1 -0
- package/dist/utils/mcp-installed-server-display.d.ts +8 -0
- package/dist/utils/mcp-installed-server-display.js +12 -0
- package/dist/utils/mcp-installed-server-display.js.map +1 -0
- package/dist/utils/mcp-installed-servers.cjs +1 -1
- package/dist/utils/mcp-installed-servers.cjs.map +1 -1
- package/dist/utils/mcp-installed-servers.js +4 -4
- package/dist/utils/mcp-installed-servers.js.map +1 -1
- 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 +2 -0
- package/dist/utils/mcp-marketplace-utils.js +31 -16
- package/dist/utils/mcp-marketplace-utils.js.map +1 -1
- package/dist/utils/mcp-server-name.cjs +2 -0
- package/dist/utils/mcp-server-name.cjs.map +1 -0
- package/dist/utils/mcp-server-name.d.ts +3 -0
- package/dist/utils/mcp-server-name.js +12 -0
- package/dist/utils/mcp-server-name.js.map +1 -0
- package/dist/utils/plugin-display.cjs +2 -0
- package/dist/utils/plugin-display.cjs.map +1 -0
- package/dist/utils/plugin-display.d.ts +20 -0
- package/dist/utils/plugin-display.js +29 -0
- package/dist/utils/plugin-display.js.map +1 -0
- package/dist/utils/settings-utils.cjs.map +1 -1
- package/dist/utils/settings-utils.js.map +1 -1
- package/dist/utils/workspaces-compatibility.cjs +1 -1
- package/dist/utils/workspaces-compatibility.cjs.map +1 -1
- package/dist/utils/workspaces-compatibility.js +1 -0
- package/dist/utils/workspaces-compatibility.js.map +1 -1
- package/package.json +7 -4
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/check-translation-completeness.cjs +6 -0
- package/scripts/dev-safe.mjs +14 -3
- package/scripts/dev-with-automation.mjs +4 -0
- package/scripts/gen-acp-docker-env.mjs +107 -0
- package/scripts/ingress.mjs +66 -226
- package/scripts/proxy-utils.mjs +171 -0
- package/scripts/static-server.mjs +127 -283
- package/build/assets/Trans-CiZR6eVI.js +0 -1
- package/build/assets/active-backend-context-CEuva6ZJ.js +0 -1
- package/build/assets/add-backend-modal-b_eiVk3A.js +0 -1
- package/build/assets/agent-server-conversation-service.api-D_uJ7BKc.js +0 -5
- package/build/assets/agent-settings-DyfziYyM.js +0 -2
- package/build/assets/alert-banner-BFayS5vM.js +0 -1
- package/build/assets/analytics-consent-form-modal-CQ22qlFF.js +0 -1
- package/build/assets/api-key-entry-screen-KnIwP0vN.js +0 -1
- package/build/assets/app-settings-CBaHJ5vJ.js +0 -1
- package/build/assets/automation-detail-DgQswnXg.js +0 -1
- package/build/assets/automations-list-D99p6CoQ.js +0 -1
- package/build/assets/back-nav-button-Cp9z-wsG.js +0 -1
- package/build/assets/backend-form-modal-BABAz-zH.js +0 -1
- package/build/assets/backend-synced-settings-badge-DzwWQC4T.js +0 -1
- package/build/assets/base-modal-1bHiB5Wf.js +0 -1
- package/build/assets/brand-button-FHWgEb4Q.js +0 -1
- package/build/assets/browser-store-B9h0eW79.js +0 -1
- package/build/assets/browser-tab-JiCXo0Nc.js +0 -1
- package/build/assets/chat-send-button-QtyofqFt.js +0 -1
- package/build/assets/check-6ieIiPhW.js +0 -1
- package/build/assets/checkmark-BfgRVMHK.js +0 -1
- package/build/assets/circle-plus-check-toggle-CmINKfZj.js +0 -1
- package/build/assets/close-DhH0uMa7.js +0 -1
- package/build/assets/code-tag-CnORXDJj.js +0 -1
- package/build/assets/combobox-caret-BB15S7zY.js +0 -1
- package/build/assets/condenser-settings-BOKNShD9.js +0 -1
- package/build/assets/confirmation-modal-CofmThy4.js +0 -1
- package/build/assets/context-menu-list-item-DO12IEaK.js +0 -1
- package/build/assets/conversation-DIzv-jq8.js +0 -1
- package/build/assets/conversation-DV3odvMe.js +0 -19
- package/build/assets/conversation-local-storage-DK7yJr5N.js +0 -1
- package/build/assets/conversation-panel-CgCarTAn.js +0 -1
- package/build/assets/conversation-service.api-RV_bOKNz.js +0 -1
- package/build/assets/conversation-state-store-4obo4ZMf.js +0 -1
- package/build/assets/conversation-store-CXrL0v-X.js +0 -6
- package/build/assets/conversation-tab-empty-state-CqT5ur_H.js +0 -1
- package/build/assets/copy-C5tBqfWu.js +0 -1
- package/build/assets/copy-to-clipboard-button-BVFYcsg_.js +0 -1
- package/build/assets/createLucideIcon-D3nkdIAN.js +0 -1
- package/build/assets/declaration-B0yY_dkQ.js +0 -1
- package/build/assets/device-verify-DRupI_hz.js +0 -1
- package/build/assets/dist-D5d5zm8o.js +0 -1
- package/build/assets/dist-fV7trlfb.js +0 -1
- package/build/assets/dropdown-classes-5IsMjYYw.js +0 -1
- package/build/assets/edit-automation-modal-BG-gd82b.js +0 -1
- package/build/assets/ellipsis-button-DWvVZO_r.js +0 -1
- package/build/assets/entry.client-uhbVfCtd.js +0 -2
- package/build/assets/enum-filter-dropdown-CB2fqz_e.js +0 -1
- package/build/assets/environment-switch-overlay-Oeal5TVq.js +0 -1
- package/build/assets/extensions-hub-DxiE0AZR.js +0 -1
- package/build/assets/files-tab-1F2OlNeH.js +0 -1
- package/build/assets/files-tab-store-C1q5Rbx3.js +0 -1
- package/build/assets/folder-C5tr7xyN.js +0 -1
- package/build/assets/get-language-from-path-E1JKsbeE.js +0 -1
- package/build/assets/git-provider-icon-CKs-22Ts.js +0 -1
- package/build/assets/home-B3E0le0g.js +0 -1
- package/build/assets/iconBase-DMoh3FEg.js +0 -1
- package/build/assets/index-redirect-DhuK5mhS.js +0 -1
- package/build/assets/install-server-modal-DjintV14.js +0 -1
- package/build/assets/is-backend-llm-ready-Bj44pekN.js +0 -1
- package/build/assets/launch-DCU3S84p.js +0 -1
- package/build/assets/lesson-plan-BUUPKVsa.js +0 -3
- package/build/assets/link-external-CF4KHxx-.js +0 -1
- package/build/assets/llm-client-BakM_czF.js +0 -1
- package/build/assets/llm-not-configured-banner-BV-NIjfR.js +0 -27
- package/build/assets/llm-settings-B5d7PHzz.js +0 -1
- package/build/assets/llm-settings-C5whb-0p.js +0 -1
- package/build/assets/loader-circle-DyX8DmLg.js +0 -1
- package/build/assets/loading-spinner-BvOAco8a.js +0 -1
- package/build/assets/manage-backends-modal-D9ClxVpM.js +0 -1
- package/build/assets/manifest-38a873aa.js +0 -1
- package/build/assets/mcp-7rk44GRS.js +0 -9
- package/build/assets/mcp-client-DxHXYNOw.js +0 -1
- package/build/assets/messages-DgBEaXil.js +0 -43
- package/build/assets/modal-backdrop-DjAC2zOZ.js +0 -1
- package/build/assets/modal-body-OJdIUJ68.js +0 -1
- package/build/assets/modal-close-button-BNjGesHc.js +0 -1
- package/build/assets/model-selector-w2uGPM5y.js +0 -1
- package/build/assets/navigation-context-CUJ60pLI.js +0 -1
- package/build/assets/navigation-link-BiPKTOHF.js +0 -1
- package/build/assets/onboarding-Cit87z8g.js +0 -1
- package/build/assets/onboarding-modal-JPrzvr8W.js +0 -1
- package/build/assets/openhands-logo-uNs9g6LY.js +0 -1
- package/build/assets/option-service.api-BLYUhnCF.js +0 -1
- package/build/assets/organization-service.api-DpSSwlZu.js +0 -1
- package/build/assets/path-utils-B4WAVqvK.js +0 -1
- package/build/assets/plan-components-DSOTFW2D.js +0 -1
- package/build/assets/planner-tab-LmoxgKKe.js +0 -1
- package/build/assets/preload-helper-D_sPnjeL.js +0 -1
- package/build/assets/profiles-client-B4SJ4ZAf.js +0 -1
- package/build/assets/providers-BGUAB8kf.js +0 -1
- package/build/assets/react-Dn-iWFF5.js +0 -1
- package/build/assets/react-dom-BBXlXOZX.js +0 -1
- package/build/assets/react-uQK8du1l.js +0 -1
- package/build/assets/recommended-automations-launcher-Df9MXUpX.js +0 -50
- package/build/assets/root-BShAdYGY.css +0 -1
- package/build/assets/root-C99reK-P.js +0 -2
- package/build/assets/root-layout-BtH64XeC.js +0 -2
- package/build/assets/runtime-waiting-state-C7MjXDeW.js +0 -1
- package/build/assets/schema-field-BCDuEMrl.js +0 -1
- package/build/assets/sdk-section-page-XJN9mGju.js +0 -1
- package/build/assets/sdk-settings-schema-B15AE1GH.js +0 -1
- package/build/assets/search-rob4u9f8.js +0 -1
- package/build/assets/secrets-service-CrPyCR8u.js +0 -1
- package/build/assets/secrets-settings-UJn15N7E.js +0 -1
- package/build/assets/settings-C5aUD_sQ.js +0 -1
- package/build/assets/settings-dropdown-input-DQRt2_RA.js +0 -1
- package/build/assets/settings-gear-B7bZDo_8.js +0 -1
- package/build/assets/settings-index-zP_rYIW1.js +0 -1
- package/build/assets/settings-input-n8FzVso3.js +0 -1
- package/build/assets/settings-list-classes-DquY3fwm.js +0 -1
- package/build/assets/settings-modal-szlQ6LpE.js +0 -1
- package/build/assets/settings-section-header-context-DrXgyNC-.js +0 -1
- package/build/assets/settings-service.api-B4G8NzCM.js +0 -1
- package/build/assets/settings-switch-DsbEm3ie.js +0 -1
- package/build/assets/shared-conversation-BrAvqeaI.js +0 -1
- package/build/assets/sidebar-mobile-menu-toggle-BRZGCe-l.js +0 -1
- package/build/assets/sidebar-nav-link-B_EygIce.js +0 -1
- package/build/assets/skill-card-pill-row-Bq9Imkdh.js +0 -1
- package/build/assets/skills-Wg6i0kbu.js +0 -1
- package/build/assets/skills-client-DNd444Bm.js +0 -1
- package/build/assets/skills-plugins-DaGkVI7-.js +0 -1
- package/build/assets/skills-settings-Dlp0WFaT.js +0 -2
- package/build/assets/styled-tooltip-ulgpZDga.js +0 -1
- package/build/assets/suspense-BqBQEuKs.js +0 -1
- package/build/assets/switch-skeleton-C49gVWOQ.js +0 -1
- package/build/assets/task-list-tab-Bz-UlCm2.js +0 -1
- package/build/assets/telemetry-DD3HKMgf.js +0 -2
- package/build/assets/terminal-BwLvVzyJ.js +0 -1
- package/build/assets/toggle-switch-CxW8-lBI.js +0 -1
- package/build/assets/typography-BLf_mRKH.js +0 -1
- package/build/assets/u-check-circle-CxTAJuY9.js +0 -1
- package/build/assets/u-check-circle-half-Bj73jfUG.js +0 -1
- package/build/assets/u-circuit-C-6V9H9C.js +0 -1
- package/build/assets/u-edit-C7OnK2sa.js +0 -1
- package/build/assets/use-acp-credential-form-oehc057O.js +0 -1
- package/build/assets/use-active-conversation-CFXVX2on.js +0 -1
- package/build/assets/use-agent-state-D6xfZA4-.js +0 -1
- package/build/assets/use-backends-health-93yRIOWs.js +0 -1
- package/build/assets/use-breakpoint-Xdy_aZHE.js +0 -1
- package/build/assets/use-click-outside-element-CADb_gCP.js +0 -1
- package/build/assets/use-cloud-current-user-id-CzOXsy04.js +0 -1
- package/build/assets/use-config-oXjEWyb6.js +0 -1
- package/build/assets/use-create-conversation-D-YkgrxS.js +0 -1
- package/build/assets/use-create-secret-CX7Ij7W4.js +0 -1
- package/build/assets/use-event-store-DMRAQQi8.js +0 -1
- package/build/assets/use-handle-plan-click-CwW2Ijc2.js +0 -1
- package/build/assets/use-is-authed-CNbX1KMm.js +0 -1
- package/build/assets/use-launch-skill-in-chat-xI9byRUw.js +0 -1
- package/build/assets/use-llm-profiles-BXRZ2rBh.js +0 -1
- package/build/assets/use-runtime-is-ready-Dwzs9_vp.js +0 -1
- package/build/assets/use-settings-_usWr_qn.js +0 -1
- package/build/assets/use-settings-nav-items-DoB5iH-7.js +0 -16
- package/build/assets/use-skills-BtorhoCN.js +0 -1
- package/build/assets/use-task-list-u46BhYBC.js +0 -1
- package/build/assets/use-tracking-Ca7p71hH.js +0 -1
- package/build/assets/use-user-conversation-U-16WF6G.js +0 -1
- package/build/assets/useMutation-CseCrRRO.js +0 -1
- package/build/assets/useQuery-bowvACed.js +0 -1
- package/build/assets/useTranslation-KhTtKmnv.js +0 -1
- package/build/assets/utils-cRyMoFbz.js +0 -1
- package/build/assets/vendor~conversation-panel~conversation~alert-banner-CjfR7T3x.js +0 -1
- package/build/assets/vendor~entry.client-_zl82x5T.js +0 -1
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~dj9x5fm9-CgCGB-3J.js +0 -177
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~jfvr34cq-BJdsUTJG.js +0 -1
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~m3df9r20-BynFAJ_S.js +0 -1
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~nk00xiud-MfCRtPrK.js +0 -9
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~ghtfhmuy-BHDILMe2.js +0 -1
- package/build/assets/vendor~root-layout~conversation-panel~conversation-BFZmbXpq.js +0 -1
- package/build/assets/vendor~root-layout~conversation-panel~conversation~index-BPY-kNjK.js +0 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation-BhWqQNmF.js +0 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~cfyi58ut-CnnEa0dP.js +0 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~clac83qc-DMX6XUwI.js +0 -2
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ldu51w4e-Cqp6k3RG.js +0 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ldu51w4e-DS4GWhCz.js +0 -9
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~ji28rqgb-DVffa9Ks.js +0 -48
- package/build/assets/vendor~root-layout~home~mcp~automations-list~onboarding-modal-BzR6ypP3.js +0 -1
- package/build/assets/vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~hzfcl1q6-BcvHZmEZ.js +0 -2
- package/build/assets/vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~hzfcl1q6-Cuvp6wqR.js +0 -14
- package/build/assets/verification-settings-DKZnUHD6.js +0 -1
- package/build/assets/x-DpnGZyVW.js +0 -1
- package/build/assets/x-mark-x3tvCZzc.js +0 -1
- package/dist/components/features/analytics/analytics-consent-form-modal.d.ts +0 -5
- package/dist/components/features/chat/switch-profile-button.cjs +0 -2
- package/dist/components/features/chat/switch-profile-button.cjs.map +0 -1
- package/dist/components/features/chat/switch-profile-button.d.ts +0 -1
- package/dist/components/features/chat/switch-profile-button.js +0 -48
- package/dist/components/features/chat/switch-profile-button.js.map +0 -1
- package/dist/components/features/chat/switch-profile-context-menu.cjs +0 -2
- package/dist/components/features/chat/switch-profile-context-menu.cjs.map +0 -1
- package/dist/components/features/chat/switch-profile-context-menu.d.ts +0 -9
- package/dist/components/features/chat/switch-profile-context-menu.js +0 -106
- package/dist/components/features/chat/switch-profile-context-menu.js.map +0 -1
- package/dist/components/features/onboarding/is-backend-llm-ready.d.ts +0 -30
- package/dist/icons/u-circuit.cjs +0 -2
- package/dist/icons/u-circuit.cjs.map +0 -1
- package/dist/icons/u-circuit.js +0 -19
- package/dist/icons/u-circuit.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.js +0 -28
- package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.js.map +0 -1
- /package/build/assets/{agent-server-ui-style-scope-CIDFDeQb.js → agent-server-ui-style-scope-COnDHTm5.js} +0 -0
- /package/build/assets/{automation-DNgDxqtq.js → automation-BU8zu-FP.js} +0 -0
- /package/build/assets/{common-KeiA2Rod.js → common-Dh7OqABE.js} +0 -0
- /package/build/assets/{environment-switch-store-BpKxp6Xq.js → environment-switch-store-DkjlKWzN.js} +0 -0
- /package/build/assets/{extension-module-card-classes-DvvyImGv.js → extension-module-card-classes-9V3J9J_b.js} +0 -0
- /package/build/assets/{git-status-mapper-B3_HbzUT.js → git-status-mapper-BI8FyUVp.js} +0 -0
- /package/build/assets/{handle-capture-consent-BChvj6mt.js → handle-capture-consent-CPMXU29K.js} +0 -0
- /package/build/assets/{llm-subscription-C1xDoa3K.js → llm-subscription-DtsX5Lhg.js} +0 -0
- /package/build/assets/{map-provider-MonJL5SS.js → map-provider-BM2SJarp.js} +0 -0
- /package/build/assets/{objectWithoutPropertiesLoose-BRYudkUn.js → objectWithoutPropertiesLoose-BgYIAs2y.js} +0 -0
- /package/build/assets/{rolldown-runtime-wFmyQBCi.js → rolldown-runtime-BFRubm34.js} +0 -0
- /package/build/assets/{settings-like-page-layout-classes-DNg2vKSM.js → settings-like-page-layout-classes-DENKlZpD.js} +0 -0
- /package/build/assets/{v4-BMWDcIWQ.js → v4-DbCkTSoU.js} +0 -0
- /package/build/assets/{vendor~browser-yZEspfT9.js → vendor~browser-Dqd33JyP.js} +0 -0
- /package/build/assets/{vendor~terminal-CcUoOdAH.js → vendor~terminal-aeP3PnKf.js} +0 -0
|
@@ -25,117 +25,121 @@ var s = 20, c = 120, l = 20, u = 50, d = () => ({
|
|
|
25
25
|
}, g = (e, t) => {
|
|
26
26
|
t && t(e);
|
|
27
27
|
}, _ = (u, _ = {}) => {
|
|
28
|
-
let v = o(null), { minHeight: y = s, maxHeight: b = c, enableManualResize: x = !1, value: S,
|
|
28
|
+
let v = o(null), { minHeight: y = s, maxHeight: b = c, enableManualResize: x = !1, value: S, onValueApplied: C, onGripDragStart: w, onGripDragEnd: T, onHeightChange: E } = _, D = {
|
|
29
29
|
minHeight: y,
|
|
30
30
|
maxHeight: b
|
|
31
|
-
}, { hasUserResizedRef:
|
|
32
|
-
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
}, [
|
|
36
|
-
|
|
37
|
-
}, [
|
|
31
|
+
}, { hasUserResizedRef: O, manualHeightRef: k } = d(), A = () => {
|
|
32
|
+
O.current = !1, k.current = null;
|
|
33
|
+
}, j = i((e) => {
|
|
34
|
+
E?.(e), O.current && (k.current = e);
|
|
35
|
+
}, [E]), M = i(() => {
|
|
36
|
+
O.current = !0, w?.();
|
|
37
|
+
}, [w]), N = i(() => {
|
|
38
38
|
let t = u.current;
|
|
39
39
|
if (t) {
|
|
40
40
|
let n = e(t, y);
|
|
41
|
-
Math.abs(n - y) <= 1.5 && (
|
|
41
|
+
Math.abs(n - y) <= 1.5 && (O.current = !1, k.current = null);
|
|
42
42
|
}
|
|
43
|
-
|
|
44
|
-
}, [y,
|
|
43
|
+
T?.();
|
|
44
|
+
}, [y, T]), { handleGripMouseDown: P, handleGripTouchStart: F } = r({
|
|
45
45
|
elementRef: u,
|
|
46
46
|
minHeight: y,
|
|
47
47
|
maxHeight: b,
|
|
48
|
-
onGripDragStart: x ?
|
|
49
|
-
onGripDragEnd: x ?
|
|
50
|
-
onHeightChange:
|
|
51
|
-
}),
|
|
52
|
-
if (
|
|
48
|
+
onGripDragStart: x ? M : void 0,
|
|
49
|
+
onGripDragEnd: x ? N : void 0,
|
|
50
|
+
onHeightChange: j
|
|
51
|
+
}), I = i((e, t, n) => {
|
|
52
|
+
if (O.current && t > y) {
|
|
53
53
|
h(e, {
|
|
54
54
|
finalHeight: t,
|
|
55
55
|
overflowY: "hidden"
|
|
56
|
-
}), g(t,
|
|
56
|
+
}), g(t, E);
|
|
57
57
|
return;
|
|
58
58
|
}
|
|
59
59
|
let r = Math.max(n, y);
|
|
60
60
|
h(e, {
|
|
61
61
|
finalHeight: r,
|
|
62
62
|
overflowY: "hidden"
|
|
63
|
-
}), g(r,
|
|
64
|
-
}, [y,
|
|
63
|
+
}), g(r, E);
|
|
64
|
+
}, [y, E]), L = i((e, t, n) => {
|
|
65
65
|
if (!p(t, n)) {
|
|
66
66
|
let t = Math.max(n, y);
|
|
67
67
|
h(e, {
|
|
68
68
|
finalHeight: t,
|
|
69
69
|
overflowY: "hidden"
|
|
70
|
-
}), g(t,
|
|
70
|
+
}), g(t, E);
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
73
73
|
h(e, {
|
|
74
74
|
finalHeight: t,
|
|
75
75
|
overflowY: "auto"
|
|
76
|
-
}), g(t,
|
|
77
|
-
}, [y,
|
|
76
|
+
}), g(t, E);
|
|
77
|
+
}, [y, E]), R = i((e) => {
|
|
78
78
|
h(e, {
|
|
79
79
|
finalHeight: b,
|
|
80
80
|
overflowY: "auto"
|
|
81
|
-
}), g(b,
|
|
82
|
-
}, [b,
|
|
81
|
+
}), g(b, E);
|
|
82
|
+
}, [b, E]), z = i(() => {
|
|
83
83
|
let e = u.current;
|
|
84
84
|
if (!e) return;
|
|
85
|
-
if ((e.textContent ?? "").trim().length === 0 &&
|
|
86
|
-
t(e,
|
|
85
|
+
if ((e.textContent ?? "").trim().length === 0 && O.current && k.current && k.current > y + 1.5) {
|
|
86
|
+
t(e, k.current), e.style.overflowY = "hidden", g(k.current, E);
|
|
87
87
|
return;
|
|
88
88
|
}
|
|
89
89
|
let { currentHeight: n, contentHeight: r } = m(e, y);
|
|
90
90
|
if (r <= n) {
|
|
91
|
-
|
|
91
|
+
I(e, n, r);
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
94
|
if (r <= b) {
|
|
95
|
-
|
|
95
|
+
L(e, n, r);
|
|
96
96
|
return;
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
R(e);
|
|
99
99
|
}, [
|
|
100
100
|
u,
|
|
101
101
|
y,
|
|
102
102
|
b,
|
|
103
|
-
|
|
104
|
-
F,
|
|
103
|
+
E,
|
|
105
104
|
I,
|
|
106
|
-
L
|
|
107
|
-
|
|
105
|
+
L,
|
|
106
|
+
R
|
|
107
|
+
]), B = i(() => {
|
|
108
108
|
v.current && cancelAnimationFrame(v.current), v.current = requestAnimationFrame(() => {
|
|
109
|
-
v.current = null,
|
|
109
|
+
v.current = null, z();
|
|
110
110
|
});
|
|
111
|
-
}, [
|
|
111
|
+
}, [z]);
|
|
112
112
|
return a(() => {
|
|
113
113
|
if (S === void 0) return;
|
|
114
114
|
let e = 0, t = () => {
|
|
115
115
|
let e = u.current;
|
|
116
|
-
return e ? (e.textContent = S.text,
|
|
116
|
+
return e ? (e.textContent = S.text, B(), n(e), C?.(), !0) : !1;
|
|
117
117
|
};
|
|
118
118
|
return t() || (e = requestAnimationFrame(() => {
|
|
119
119
|
t();
|
|
120
120
|
})), () => {
|
|
121
121
|
e && cancelAnimationFrame(e);
|
|
122
122
|
};
|
|
123
|
-
}, [
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
123
|
+
}, [
|
|
124
|
+
S,
|
|
125
|
+
B,
|
|
126
|
+
C
|
|
127
|
+
]), a(() => {
|
|
128
|
+
B();
|
|
129
|
+
}, [B]), {
|
|
130
|
+
smartResize: B,
|
|
131
|
+
handleGripMouseDown: P,
|
|
132
|
+
handleGripTouchStart: F,
|
|
129
133
|
increaseHeightForEmptyContent: () => {
|
|
130
134
|
let t = u.current;
|
|
131
135
|
if (!t) return;
|
|
132
136
|
let n = e(t, y), r = Math.min(n + l, b);
|
|
133
137
|
if (r > n) {
|
|
134
|
-
let e = f(t, r,
|
|
135
|
-
g(e,
|
|
138
|
+
let e = f(t, r, D);
|
|
139
|
+
g(e, E), O.current = !0, k.current = e;
|
|
136
140
|
}
|
|
137
141
|
},
|
|
138
|
-
resetManualResize:
|
|
142
|
+
resetManualResize: A
|
|
139
143
|
};
|
|
140
144
|
};
|
|
141
145
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-auto-resize.js","names":[],"sources":["../../src/hooks/use-auto-resize.ts"],"sourcesContent":["import { useCallback, useEffect, RefObject, useRef } from \"react\";\nimport { IMessageToSend } from \"#/stores/conversation-store\";\nimport { EPS } from \"#/utils/constants\";\nimport { getStyleHeightPx, setStyleHeightPx } from \"#/utils/utils\";\nimport { focusContentEditableAtEnd } from \"#/components/features/chat/utils/chat-input.utils\";\nimport { useDragResize } from \"./use-drag-resize\";\n\n// Constants\nconst DEFAULT_MIN_HEIGHT = 20;\nconst DEFAULT_MAX_HEIGHT = 120;\nconst HEIGHT_INCREMENT = 20;\nconst MANUAL_OVERSIZE_THRESHOLD = 50;\n\n// Manual height tracking utilities\nconst useManualHeight = () => {\n const hasUserResizedRef = useRef(false);\n const manualHeightRef = useRef<number | null>(null);\n return { hasUserResizedRef, manualHeightRef };\n};\n\ninterface UseAutoResizeOptions {\n minHeight?: number;\n maxHeight?: number;\n enableManualResize?: boolean;\n onGripDragStart?: () => void;\n onGripDragEnd?: () => void;\n onHeightChange?: (height: number) => void; // New callback for height changes\n value?: IMessageToSend;\n}\n\ninterface UseAutoResizeReturn {\n smartResize: () => void;\n handleGripMouseDown: (e: React.MouseEvent) => void;\n handleGripTouchStart: (e: React.TouchEvent) => void;\n increaseHeightForEmptyContent: () => void;\n resetManualResize: () => void;\n}\n\n// Height management utilities\ninterface HeightConstraints {\n minHeight: number;\n maxHeight: number;\n}\n\ninterface HeightMeasurements {\n currentHeight: number;\n currentStyleHeight: number;\n contentHeight: number;\n}\n\ninterface ResizeStrategy {\n finalHeight: number;\n overflowY: \"hidden\" | \"auto\";\n}\n\nconst applyHeightToElement = (\n element: HTMLElement,\n height: number,\n constraints: HeightConstraints,\n): number => {\n const { minHeight, maxHeight } = constraints;\n const finalHeight = Math.max(minHeight, Math.min(height, maxHeight));\n\n element.style.setProperty(\"height\", `${finalHeight}px`);\n element.style.setProperty(\n \"overflow-y\",\n finalHeight >= maxHeight ? \"auto\" : \"hidden\",\n );\n\n return finalHeight;\n};\n\nconst isManuallyOversized = (\n currentHeight: number,\n contentHeight: number,\n threshold = MANUAL_OVERSIZE_THRESHOLD,\n): boolean => currentHeight > contentHeight + threshold;\n\nconst measureElementHeights = (\n element: HTMLElement,\n minHeight: number,\n): HeightMeasurements => {\n // Use the previous explicit style height as the \"current\" for restore, not offsetHeight\n const currentStyleHeight = getStyleHeightPx(element, minHeight);\n const currentHeight = currentStyleHeight;\n\n // Temporarily reset to measure content\n element.style.setProperty(\"height\", \"auto\");\n const contentHeight = element.scrollHeight;\n\n // Restore height\n setStyleHeightPx(element, currentStyleHeight);\n\n return {\n currentHeight,\n currentStyleHeight,\n contentHeight,\n };\n};\n\nconst applyResizeStrategy = (\n element: HTMLElement,\n strategy: ResizeStrategy,\n): void => {\n const { finalHeight, overflowY } = strategy;\n const elementRef = element;\n elementRef.style.height = `${finalHeight}px`;\n elementRef.style.overflowY = overflowY;\n};\n\nconst executeHeightCallback = (\n height: number,\n onHeightChange?: (height: number) => void,\n): void => {\n if (onHeightChange) {\n onHeightChange(height);\n }\n};\n\n// DOM manipulation utilities\nexport const useAutoResize = (\n elementRef: RefObject<HTMLElement | null>,\n options: UseAutoResizeOptions = {},\n): UseAutoResizeReturn => {\n const pendingSmartRef = useRef<number | null>(null);\n\n const {\n minHeight = DEFAULT_MIN_HEIGHT,\n maxHeight = DEFAULT_MAX_HEIGHT,\n enableManualResize = false,\n value,\n onGripDragStart,\n onGripDragEnd,\n onHeightChange,\n } = options;\n\n const constraints: HeightConstraints = { minHeight, maxHeight };\n const { hasUserResizedRef, manualHeightRef } = useManualHeight();\n\n const resetManualResize = () => {\n hasUserResizedRef.current = false;\n manualHeightRef.current = null;\n };\n\n // Wrap onHeightChange to track manual height during drag\n const handleExternalHeightChange = useCallback(\n (elementHeight: number) => {\n onHeightChange?.(elementHeight);\n if (hasUserResizedRef.current) {\n manualHeightRef.current = elementHeight;\n }\n },\n [onHeightChange],\n );\n\n // Handle drag start - set manual mode flag\n const handleDragStart = useCallback(() => {\n hasUserResizedRef.current = true;\n onGripDragStart?.();\n }, [onGripDragStart]);\n\n // Handle drag end - clear manual mode if at minimum height\n const handleDragEnd = useCallback(() => {\n const textareaElement = elementRef.current;\n if (textareaElement) {\n const currentHeight = getStyleHeightPx(textareaElement, minHeight);\n if (Math.abs(currentHeight - minHeight) <= EPS) {\n hasUserResizedRef.current = false;\n manualHeightRef.current = null;\n }\n }\n onGripDragEnd?.();\n }, [minHeight, onGripDragEnd]);\n\n // Use the drag resize hook for manual resizing functionality\n const { handleGripMouseDown, handleGripTouchStart } = useDragResize({\n elementRef,\n minHeight,\n maxHeight,\n onGripDragStart: enableManualResize ? handleDragStart : undefined,\n onGripDragEnd: enableManualResize ? handleDragEnd : undefined,\n onHeightChange: handleExternalHeightChange,\n });\n\n // Handle content that fits within current height\n const handleContentFitsInCurrentHeight = useCallback(\n (\n element: HTMLElement,\n currentHeight: number,\n contentHeight: number,\n ): void => {\n // If user manually resized and we're above min height, preserve their chosen height\n if (hasUserResizedRef.current && currentHeight > minHeight) {\n applyResizeStrategy(element, {\n finalHeight: currentHeight,\n overflowY: \"hidden\",\n });\n executeHeightCallback(currentHeight, onHeightChange);\n return;\n }\n\n // Otherwise allow shrinking towards content (respect minHeight)\n const finalHeight = Math.max(contentHeight, minHeight);\n applyResizeStrategy(element, {\n finalHeight,\n overflowY: \"hidden\",\n });\n executeHeightCallback(finalHeight, onHeightChange);\n },\n [minHeight, onHeightChange],\n );\n\n // Handle content that exceeds current height but within max height\n const handleContentExceedsCurrentHeight = useCallback(\n (\n element: HTMLElement,\n currentHeight: number,\n contentHeight: number,\n ): void => {\n // Grow unless the element is manually oversized beyond content significantly\n if (!isManuallyOversized(currentHeight, contentHeight)) {\n const finalHeight = Math.max(contentHeight, minHeight);\n applyResizeStrategy(element, {\n finalHeight,\n overflowY: \"hidden\",\n });\n executeHeightCallback(finalHeight, onHeightChange);\n return;\n }\n\n // Keep manual height and allow scrolling as needed\n applyResizeStrategy(element, {\n finalHeight: currentHeight,\n overflowY: \"auto\",\n });\n executeHeightCallback(currentHeight, onHeightChange);\n },\n [minHeight, onHeightChange],\n );\n\n // Handle content that exceeds max height\n const handleContentExceedsMaxHeight = useCallback(\n (element: HTMLElement) => {\n applyResizeStrategy(element, {\n finalHeight: maxHeight,\n overflowY: \"auto\",\n });\n executeHeightCallback(maxHeight, onHeightChange);\n },\n [maxHeight, onHeightChange],\n );\n\n // Debounced smartResize body\n const smartResizeBody = useCallback(() => {\n const element = elementRef.current;\n if (!element) return;\n\n const textIsEmpty = (element.textContent ?? \"\").trim().length === 0;\n\n // If empty content and we have a manual height above min, preserve it\n if (\n textIsEmpty &&\n hasUserResizedRef.current &&\n manualHeightRef.current &&\n manualHeightRef.current > minHeight + EPS\n ) {\n setStyleHeightPx(element, manualHeightRef.current);\n element.style.overflowY = \"hidden\";\n executeHeightCallback(manualHeightRef.current, onHeightChange);\n return;\n }\n\n // Measure element heights\n const measurements = measureElementHeights(element, minHeight);\n const { currentHeight, contentHeight } = measurements;\n\n // If content fits within current height\n if (contentHeight <= currentHeight) {\n handleContentFitsInCurrentHeight(element, currentHeight, contentHeight);\n return;\n }\n\n // If content exceeds current height but within max\n if (contentHeight <= maxHeight) {\n handleContentExceedsCurrentHeight(element, currentHeight, contentHeight);\n return;\n }\n\n // Content exceeds max height\n handleContentExceedsMaxHeight(element);\n }, [\n elementRef,\n minHeight,\n maxHeight,\n onHeightChange,\n handleContentFitsInCurrentHeight,\n handleContentExceedsCurrentHeight,\n handleContentExceedsMaxHeight,\n ]);\n\n // rAF-debounced smartResize wrapper to collapse bursts\n const smartResize = useCallback(() => {\n if (pendingSmartRef.current) cancelAnimationFrame(pendingSmartRef.current);\n pendingSmartRef.current = requestAnimationFrame(() => {\n pendingSmartRef.current = null;\n smartResizeBody();\n });\n }, [smartResizeBody]);\n\n // Function to increase height when content is empty\n const increaseHeightForEmptyContent = () => {\n const element = elementRef.current;\n if (!element) return;\n\n const currentHeight = getStyleHeightPx(element, minHeight);\n const newHeight = Math.min(currentHeight + HEIGHT_INCREMENT, maxHeight);\n\n if (newHeight > currentHeight) {\n const finalHeight = applyHeightToElement(element, newHeight, constraints);\n\n // Execute height change callback\n executeHeightCallback(finalHeight, onHeightChange);\n\n // Set manual mode for Shift+Enter height increases\n hasUserResizedRef.current = true;\n manualHeightRef.current = finalHeight;\n }\n };\n\n // Update content and resize when value prop changes\n useEffect(() => {\n if (value === undefined) {\n return undefined;\n }\n\n let rafId = 0;\n\n const applyValue = () => {\n const element = elementRef.current;\n if (!element) {\n return false;\n }\n\n element.textContent = value.text;\n smartResize();\n focusContentEditableAtEnd(element);\n return true;\n };\n\n if (!applyValue()) {\n rafId = requestAnimationFrame(() => {\n applyValue();\n });\n }\n\n return () => {\n if (rafId) {\n cancelAnimationFrame(rafId);\n }\n };\n }, [value, smartResize]);\n\n // Initialize auto-resize on mount\n useEffect(() => {\n smartResize();\n }, [smartResize]);\n\n return {\n smartResize,\n handleGripMouseDown,\n handleGripTouchStart,\n increaseHeightForEmptyContent,\n resetManualResize,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-auto-resize.js","names":[],"sources":["../../src/hooks/use-auto-resize.ts"],"sourcesContent":["import { useCallback, useEffect, RefObject, useRef } from \"react\";\nimport { IMessageToSend } from \"#/stores/conversation-store\";\nimport { EPS } from \"#/utils/constants\";\nimport { getStyleHeightPx, setStyleHeightPx } from \"#/utils/utils\";\nimport { focusContentEditableAtEnd } from \"#/components/features/chat/utils/chat-input.utils\";\nimport { useDragResize } from \"./use-drag-resize\";\n\n// Constants\nconst DEFAULT_MIN_HEIGHT = 20;\nconst DEFAULT_MAX_HEIGHT = 120;\nconst HEIGHT_INCREMENT = 20;\nconst MANUAL_OVERSIZE_THRESHOLD = 50;\n\n// Manual height tracking utilities\nconst useManualHeight = () => {\n const hasUserResizedRef = useRef(false);\n const manualHeightRef = useRef<number | null>(null);\n return { hasUserResizedRef, manualHeightRef };\n};\n\ninterface UseAutoResizeOptions {\n minHeight?: number;\n maxHeight?: number;\n enableManualResize?: boolean;\n onGripDragStart?: () => void;\n onGripDragEnd?: () => void;\n onHeightChange?: (height: number) => void; // New callback for height changes\n value?: IMessageToSend;\n /** Called once `value` has been applied to the element (one-shot consume). */\n onValueApplied?: () => void;\n}\n\ninterface UseAutoResizeReturn {\n smartResize: () => void;\n handleGripMouseDown: (e: React.MouseEvent) => void;\n handleGripTouchStart: (e: React.TouchEvent) => void;\n increaseHeightForEmptyContent: () => void;\n resetManualResize: () => void;\n}\n\n// Height management utilities\ninterface HeightConstraints {\n minHeight: number;\n maxHeight: number;\n}\n\ninterface HeightMeasurements {\n currentHeight: number;\n currentStyleHeight: number;\n contentHeight: number;\n}\n\ninterface ResizeStrategy {\n finalHeight: number;\n overflowY: \"hidden\" | \"auto\";\n}\n\nconst applyHeightToElement = (\n element: HTMLElement,\n height: number,\n constraints: HeightConstraints,\n): number => {\n const { minHeight, maxHeight } = constraints;\n const finalHeight = Math.max(minHeight, Math.min(height, maxHeight));\n\n element.style.setProperty(\"height\", `${finalHeight}px`);\n element.style.setProperty(\n \"overflow-y\",\n finalHeight >= maxHeight ? \"auto\" : \"hidden\",\n );\n\n return finalHeight;\n};\n\nconst isManuallyOversized = (\n currentHeight: number,\n contentHeight: number,\n threshold = MANUAL_OVERSIZE_THRESHOLD,\n): boolean => currentHeight > contentHeight + threshold;\n\nconst measureElementHeights = (\n element: HTMLElement,\n minHeight: number,\n): HeightMeasurements => {\n // Use the previous explicit style height as the \"current\" for restore, not offsetHeight\n const currentStyleHeight = getStyleHeightPx(element, minHeight);\n const currentHeight = currentStyleHeight;\n\n // Temporarily reset to measure content\n element.style.setProperty(\"height\", \"auto\");\n const contentHeight = element.scrollHeight;\n\n // Restore height\n setStyleHeightPx(element, currentStyleHeight);\n\n return {\n currentHeight,\n currentStyleHeight,\n contentHeight,\n };\n};\n\nconst applyResizeStrategy = (\n element: HTMLElement,\n strategy: ResizeStrategy,\n): void => {\n const { finalHeight, overflowY } = strategy;\n const elementRef = element;\n elementRef.style.height = `${finalHeight}px`;\n elementRef.style.overflowY = overflowY;\n};\n\nconst executeHeightCallback = (\n height: number,\n onHeightChange?: (height: number) => void,\n): void => {\n if (onHeightChange) {\n onHeightChange(height);\n }\n};\n\n// DOM manipulation utilities\nexport const useAutoResize = (\n elementRef: RefObject<HTMLElement | null>,\n options: UseAutoResizeOptions = {},\n): UseAutoResizeReturn => {\n const pendingSmartRef = useRef<number | null>(null);\n\n const {\n minHeight = DEFAULT_MIN_HEIGHT,\n maxHeight = DEFAULT_MAX_HEIGHT,\n enableManualResize = false,\n value,\n onValueApplied,\n onGripDragStart,\n onGripDragEnd,\n onHeightChange,\n } = options;\n\n const constraints: HeightConstraints = { minHeight, maxHeight };\n const { hasUserResizedRef, manualHeightRef } = useManualHeight();\n\n const resetManualResize = () => {\n hasUserResizedRef.current = false;\n manualHeightRef.current = null;\n };\n\n // Wrap onHeightChange to track manual height during drag\n const handleExternalHeightChange = useCallback(\n (elementHeight: number) => {\n onHeightChange?.(elementHeight);\n if (hasUserResizedRef.current) {\n manualHeightRef.current = elementHeight;\n }\n },\n [onHeightChange],\n );\n\n // Handle drag start - set manual mode flag\n const handleDragStart = useCallback(() => {\n hasUserResizedRef.current = true;\n onGripDragStart?.();\n }, [onGripDragStart]);\n\n // Handle drag end - clear manual mode if at minimum height\n const handleDragEnd = useCallback(() => {\n const textareaElement = elementRef.current;\n if (textareaElement) {\n const currentHeight = getStyleHeightPx(textareaElement, minHeight);\n if (Math.abs(currentHeight - minHeight) <= EPS) {\n hasUserResizedRef.current = false;\n manualHeightRef.current = null;\n }\n }\n onGripDragEnd?.();\n }, [minHeight, onGripDragEnd]);\n\n // Use the drag resize hook for manual resizing functionality\n const { handleGripMouseDown, handleGripTouchStart } = useDragResize({\n elementRef,\n minHeight,\n maxHeight,\n onGripDragStart: enableManualResize ? handleDragStart : undefined,\n onGripDragEnd: enableManualResize ? handleDragEnd : undefined,\n onHeightChange: handleExternalHeightChange,\n });\n\n // Handle content that fits within current height\n const handleContentFitsInCurrentHeight = useCallback(\n (\n element: HTMLElement,\n currentHeight: number,\n contentHeight: number,\n ): void => {\n // If user manually resized and we're above min height, preserve their chosen height\n if (hasUserResizedRef.current && currentHeight > minHeight) {\n applyResizeStrategy(element, {\n finalHeight: currentHeight,\n overflowY: \"hidden\",\n });\n executeHeightCallback(currentHeight, onHeightChange);\n return;\n }\n\n // Otherwise allow shrinking towards content (respect minHeight)\n const finalHeight = Math.max(contentHeight, minHeight);\n applyResizeStrategy(element, {\n finalHeight,\n overflowY: \"hidden\",\n });\n executeHeightCallback(finalHeight, onHeightChange);\n },\n [minHeight, onHeightChange],\n );\n\n // Handle content that exceeds current height but within max height\n const handleContentExceedsCurrentHeight = useCallback(\n (\n element: HTMLElement,\n currentHeight: number,\n contentHeight: number,\n ): void => {\n // Grow unless the element is manually oversized beyond content significantly\n if (!isManuallyOversized(currentHeight, contentHeight)) {\n const finalHeight = Math.max(contentHeight, minHeight);\n applyResizeStrategy(element, {\n finalHeight,\n overflowY: \"hidden\",\n });\n executeHeightCallback(finalHeight, onHeightChange);\n return;\n }\n\n // Keep manual height and allow scrolling as needed\n applyResizeStrategy(element, {\n finalHeight: currentHeight,\n overflowY: \"auto\",\n });\n executeHeightCallback(currentHeight, onHeightChange);\n },\n [minHeight, onHeightChange],\n );\n\n // Handle content that exceeds max height\n const handleContentExceedsMaxHeight = useCallback(\n (element: HTMLElement) => {\n applyResizeStrategy(element, {\n finalHeight: maxHeight,\n overflowY: \"auto\",\n });\n executeHeightCallback(maxHeight, onHeightChange);\n },\n [maxHeight, onHeightChange],\n );\n\n // Debounced smartResize body\n const smartResizeBody = useCallback(() => {\n const element = elementRef.current;\n if (!element) return;\n\n const textIsEmpty = (element.textContent ?? \"\").trim().length === 0;\n\n // If empty content and we have a manual height above min, preserve it\n if (\n textIsEmpty &&\n hasUserResizedRef.current &&\n manualHeightRef.current &&\n manualHeightRef.current > minHeight + EPS\n ) {\n setStyleHeightPx(element, manualHeightRef.current);\n element.style.overflowY = \"hidden\";\n executeHeightCallback(manualHeightRef.current, onHeightChange);\n return;\n }\n\n // Measure element heights\n const measurements = measureElementHeights(element, minHeight);\n const { currentHeight, contentHeight } = measurements;\n\n // If content fits within current height\n if (contentHeight <= currentHeight) {\n handleContentFitsInCurrentHeight(element, currentHeight, contentHeight);\n return;\n }\n\n // If content exceeds current height but within max\n if (contentHeight <= maxHeight) {\n handleContentExceedsCurrentHeight(element, currentHeight, contentHeight);\n return;\n }\n\n // Content exceeds max height\n handleContentExceedsMaxHeight(element);\n }, [\n elementRef,\n minHeight,\n maxHeight,\n onHeightChange,\n handleContentFitsInCurrentHeight,\n handleContentExceedsCurrentHeight,\n handleContentExceedsMaxHeight,\n ]);\n\n // rAF-debounced smartResize wrapper to collapse bursts\n const smartResize = useCallback(() => {\n if (pendingSmartRef.current) cancelAnimationFrame(pendingSmartRef.current);\n pendingSmartRef.current = requestAnimationFrame(() => {\n pendingSmartRef.current = null;\n smartResizeBody();\n });\n }, [smartResizeBody]);\n\n // Function to increase height when content is empty\n const increaseHeightForEmptyContent = () => {\n const element = elementRef.current;\n if (!element) return;\n\n const currentHeight = getStyleHeightPx(element, minHeight);\n const newHeight = Math.min(currentHeight + HEIGHT_INCREMENT, maxHeight);\n\n if (newHeight > currentHeight) {\n const finalHeight = applyHeightToElement(element, newHeight, constraints);\n\n // Execute height change callback\n executeHeightCallback(finalHeight, onHeightChange);\n\n // Set manual mode for Shift+Enter height increases\n hasUserResizedRef.current = true;\n manualHeightRef.current = finalHeight;\n }\n };\n\n // Update content and resize when value prop changes\n useEffect(() => {\n if (value === undefined) {\n return undefined;\n }\n\n let rafId = 0;\n\n const applyValue = () => {\n const element = elementRef.current;\n if (!element) {\n return false;\n }\n\n element.textContent = value.text;\n smartResize();\n focusContentEditableAtEnd(element);\n onValueApplied?.(); // one-shot: let the caller clear the value\n return true;\n };\n\n if (!applyValue()) {\n rafId = requestAnimationFrame(() => {\n applyValue();\n });\n }\n\n return () => {\n if (rafId) {\n cancelAnimationFrame(rafId);\n }\n };\n }, [value, smartResize, onValueApplied]);\n\n // Initialize auto-resize on mount\n useEffect(() => {\n smartResize();\n }, [smartResize]);\n\n return {\n smartResize,\n handleGripMouseDown,\n handleGripTouchStart,\n increaseHeightForEmptyContent,\n resetManualResize,\n };\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`../_virtual/_rolldown/runtime.cjs`),require(`../contexts/active-backend-context.cjs`),require(`../api/cloud/organization-service.api.cjs`);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether the current user may MUTATE org-scoped profiles — LLM profiles and
|
|
3
|
+
* agent profiles alike — on the active backend: create, edit, rename, delete,
|
|
4
|
+
* duplicate, or activate/switch.
|
|
5
|
+
*
|
|
6
|
+
* - Local agent-server (OSS): always `true`; the user owns their own profiles.
|
|
7
|
+
* - Cloud: profiles are org-scoped. The app-server grants every mutating
|
|
8
|
+
* profile action (save/delete/rename/activate) only to the `owner`/`admin`
|
|
9
|
+
* roles via the `edit_org_settings` permission; a `member` is view-only. We
|
|
10
|
+
* read the caller's server-defined permissions from
|
|
11
|
+
* `GET /api/organizations/{orgId}/me` — the same call `useCloudCurrentUserId`
|
|
12
|
+
* makes, reusing its query key so no extra request is issued — and fall back
|
|
13
|
+
* to a role check when an older app-server doesn't return `permissions`.
|
|
14
|
+
*
|
|
15
|
+
* Returns `false` while the role/permissions are still loading or unknown on
|
|
16
|
+
* cloud, so mutating controls never flash for a member before they resolve.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useCanManageOrgProfiles(): boolean;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`./use-conversation-id.cjs`),t=require(`../node_modules/@tanstack/react-query/build/modern/useMutationState.cjs`),n=require(`../stores/model-store.cjs`),r=require(`./query/use-active-conversation.cjs`),i=require(`./query/use-llm-profiles.cjs`),a=require(`./mutation/use-switch-llm-profile.cjs`),o=require(`./mutation/use-switch-llm-profile-and-log.cjs`);let s=require(`react`);function c(){let{conversationId:c}=e.useOptionalConversationId(),{data:l}=r.useActiveConversation(),{data:u,isLoading:d}=i.useLlmProfiles(),{switchAndLog:f}=o.useSwitchLlmProfileAndLog(),p=t.useIsMutating({mutationKey:a.SWITCH_LLM_PROFILE_MUTATION_KEY})>0,m=n.useModelStore(e=>c?e.activeProfileByConversation[c]:void 0),h=u?.profiles??[],g=l?.llm_model??null,_=l?.active_profile??null,v=_&&h.some(e=>e.name===_)?_:null,y=m??v??(g?h.find(e=>e.model===g)?.name??null:u?.active_profile??null);return{profiles:h,currentProfileName:y,currentProfileModel:h.find(e=>e.name===y)?.model??g??null,isLoading:d,isSwitching:p,selectProfile:(0,s.useCallback)(e=>{e!==y&&f(c,e)},[c,y,f])}}exports.useChatInputLlmProfileState=c;
|
|
2
|
+
//# sourceMappingURL=use-chat-input-llm-profile-state.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-chat-input-llm-profile-state.cjs","names":[],"sources":["../../src/hooks/use-chat-input-llm-profile-state.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useIsMutating } from \"@tanstack/react-query\";\nimport type { ProfileInfo } from \"@openhands/typescript-client\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useLlmProfiles } from \"#/hooks/query/use-llm-profiles\";\nimport { useSwitchLlmProfileAndLog } from \"#/hooks/mutation/use-switch-llm-profile-and-log\";\nimport { SWITCH_LLM_PROFILE_MUTATION_KEY } from \"#/hooks/mutation/use-switch-llm-profile\";\nimport { useModelStore } from \"#/stores/model-store\";\n\nexport interface ChatInputLlmProfileState {\n profiles: ProfileInfo[];\n /** The LLM profile the running conversation is currently using. */\n currentProfileName: string | null;\n /** That profile's model id (for the tooltip / subtitle). */\n currentProfileModel: string | null;\n isLoading: boolean;\n isSwitching: boolean;\n /**\n * Live-switch the running conversation's LLM profile via `/switch_profile`.\n * This surface is only mounted inside a conversation, so a switch always\n * targets that conversation (no home-page activate path here).\n */\n selectProfile: (profileName: string) => void;\n}\n\n/**\n * Backs the in-conversation OpenHands LLM-profile switcher (the ACP analog is\n * {@link useChatInputModelState}). Resolves which profile the conversation is\n * running and live-swaps it, mirroring the former SwitchProfileButton's\n * resolution priority so a switch is reflected instantly.\n */\nexport function useChatInputLlmProfileState(): ChatInputLlmProfileState {\n const { conversationId } = useOptionalConversationId();\n const { data: conversation } = useActiveConversation();\n const { data, isLoading } = useLlmProfiles();\n const { switchAndLog } = useSwitchLlmProfileAndLog();\n // Read the switch's pending state globally by mutation key: the pill button\n // and the menu that fires the switch are separate hook instances, so a\n // per-observer `isPending` would never light up on the button (#1571).\n const isSwitching =\n useIsMutating({ mutationKey: SWITCH_LLM_PROFILE_MUTATION_KEY }) > 0;\n // Written by useSwitchLlmProfile's onSuccess -> recordModelSwitchMessage ->\n // recordSwitch on a successful switch, so the label/check update before the\n // conversation refetch lands the new llm_model.\n const optimisticActiveProfile = useModelStore((s) =>\n conversationId ? s.activeProfileByConversation[conversationId] : undefined,\n );\n\n const profiles = data?.profiles ?? [];\n const conversationModel = conversation?.llm_model ?? null;\n\n // Resolution priority (mirrors the former SwitchProfileButton):\n // 1. Optimistic (just-clicked) — instant feedback before the refetch.\n // 2. Profile stamped on the conversation, validated against the live list\n // so a since-deleted/renamed profile falls through.\n // 3. Profile whose model matches the running llm_model.\n // 4. User-level active_profile (fallback before the first message).\n const stampedProfile = conversation?.active_profile ?? null;\n const conversationProfile =\n stampedProfile && profiles.some((p) => p.name === stampedProfile)\n ? stampedProfile\n : null;\n const currentProfileName =\n optimisticActiveProfile ??\n conversationProfile ??\n (conversationModel\n ? (profiles.find((p) => p.model === conversationModel)?.name ?? null)\n : (data?.active_profile ?? null));\n const currentProfileModel =\n profiles.find((p) => p.name === currentProfileName)?.model ??\n conversationModel ??\n null;\n\n const selectProfile = useCallback(\n (profileName: string) => {\n if (profileName === currentProfileName) return;\n switchAndLog(conversationId, profileName);\n },\n [conversationId, currentProfileName, switchAndLog],\n );\n\n return {\n profiles,\n currentProfileName,\n currentProfileModel,\n isLoading,\n isSwitching,\n selectProfile,\n };\n}\n"],"mappings":"sbAgCA,SAAgB,GAAwD,CACtE,GAAM,CAAE,kBAAmB,EAAA,2BAA2B,CAChD,CAAE,KAAM,GAAiB,EAAA,uBAAuB,CAChD,CAAE,OAAM,aAAc,EAAA,gBAAgB,CACtC,CAAE,gBAAiB,EAAA,2BAA2B,CAI9C,EACJ,EAAA,cAAc,CAAE,YAAa,EAAA,gCAAiC,CAAC,CAAG,EAI9D,EAA0B,EAAA,cAAe,GAC7C,EAAiB,EAAE,4BAA4B,GAAkB,IAAA,GAClE,CAEK,EAAW,GAAM,UAAY,EAAE,CAC/B,EAAoB,GAAc,WAAa,KAQ/C,EAAiB,GAAc,gBAAkB,KACjD,EACJ,GAAkB,EAAS,KAAM,GAAM,EAAE,OAAS,EAAe,CAC7D,EACA,KACA,EACJ,GACA,IACC,EACI,EAAS,KAAM,GAAM,EAAE,QAAU,EAAkB,EAAE,MAAQ,KAC7D,GAAM,gBAAkB,MAc/B,MAAO,CACL,WACA,qBACA,oBAfA,EAAS,KAAM,GAAM,EAAE,OAAS,EAAmB,EAAE,OACrD,GACA,KAcA,YACA,cACA,eAAA,EAAA,EAAA,aAbC,GAAwB,CACnB,IAAgB,GACpB,EAAa,EAAgB,EAAY,EAE3C,CAAC,EAAgB,EAAoB,EAAa,CASlD,CACD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ProfileInfo } from "@openhands/typescript-client";
|
|
2
|
+
export interface ChatInputLlmProfileState {
|
|
3
|
+
profiles: ProfileInfo[];
|
|
4
|
+
/** The LLM profile the running conversation is currently using. */
|
|
5
|
+
currentProfileName: string | null;
|
|
6
|
+
/** That profile's model id (for the tooltip / subtitle). */
|
|
7
|
+
currentProfileModel: string | null;
|
|
8
|
+
isLoading: boolean;
|
|
9
|
+
isSwitching: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Live-switch the running conversation's LLM profile via `/switch_profile`.
|
|
12
|
+
* This surface is only mounted inside a conversation, so a switch always
|
|
13
|
+
* targets that conversation (no home-page activate path here).
|
|
14
|
+
*/
|
|
15
|
+
selectProfile: (profileName: string) => void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Backs the in-conversation OpenHands LLM-profile switcher (the ACP analog is
|
|
19
|
+
* {@link useChatInputModelState}). Resolves which profile the conversation is
|
|
20
|
+
* running and live-swaps it, mirroring the former SwitchProfileButton's
|
|
21
|
+
* resolution priority so a switch is reflected instantly.
|
|
22
|
+
*/
|
|
23
|
+
export declare function useChatInputLlmProfileState(): ChatInputLlmProfileState;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { useOptionalConversationId as e } from "./use-conversation-id.js";
|
|
2
|
+
import { useIsMutating as t } from "../node_modules/@tanstack/react-query/build/modern/useMutationState.js";
|
|
3
|
+
import { useModelStore as n } from "../stores/model-store.js";
|
|
4
|
+
import { useActiveConversation as r } from "./query/use-active-conversation.js";
|
|
5
|
+
import { useLlmProfiles as i } from "./query/use-llm-profiles.js";
|
|
6
|
+
import { SWITCH_LLM_PROFILE_MUTATION_KEY as a } from "./mutation/use-switch-llm-profile.js";
|
|
7
|
+
import { useSwitchLlmProfileAndLog as o } from "./mutation/use-switch-llm-profile-and-log.js";
|
|
8
|
+
import { useCallback as s } from "react";
|
|
9
|
+
//#region src/hooks/use-chat-input-llm-profile-state.ts
|
|
10
|
+
function c() {
|
|
11
|
+
let { conversationId: c } = e(), { data: l } = r(), { data: u, isLoading: d } = i(), { switchAndLog: f } = o(), p = t({ mutationKey: a }) > 0, m = n((e) => c ? e.activeProfileByConversation[c] : void 0), h = u?.profiles ?? [], g = l?.llm_model ?? null, _ = l?.active_profile ?? null, v = _ && h.some((e) => e.name === _) ? _ : null, y = m ?? v ?? (g ? h.find((e) => e.model === g)?.name ?? null : u?.active_profile ?? null);
|
|
12
|
+
return {
|
|
13
|
+
profiles: h,
|
|
14
|
+
currentProfileName: y,
|
|
15
|
+
currentProfileModel: h.find((e) => e.name === y)?.model ?? g ?? null,
|
|
16
|
+
isLoading: d,
|
|
17
|
+
isSwitching: p,
|
|
18
|
+
selectProfile: s((e) => {
|
|
19
|
+
e !== y && f(c, e);
|
|
20
|
+
}, [
|
|
21
|
+
c,
|
|
22
|
+
y,
|
|
23
|
+
f
|
|
24
|
+
])
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { c as useChatInputLlmProfileState };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=use-chat-input-llm-profile-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-chat-input-llm-profile-state.js","names":[],"sources":["../../src/hooks/use-chat-input-llm-profile-state.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useIsMutating } from \"@tanstack/react-query\";\nimport type { ProfileInfo } from \"@openhands/typescript-client\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useLlmProfiles } from \"#/hooks/query/use-llm-profiles\";\nimport { useSwitchLlmProfileAndLog } from \"#/hooks/mutation/use-switch-llm-profile-and-log\";\nimport { SWITCH_LLM_PROFILE_MUTATION_KEY } from \"#/hooks/mutation/use-switch-llm-profile\";\nimport { useModelStore } from \"#/stores/model-store\";\n\nexport interface ChatInputLlmProfileState {\n profiles: ProfileInfo[];\n /** The LLM profile the running conversation is currently using. */\n currentProfileName: string | null;\n /** That profile's model id (for the tooltip / subtitle). */\n currentProfileModel: string | null;\n isLoading: boolean;\n isSwitching: boolean;\n /**\n * Live-switch the running conversation's LLM profile via `/switch_profile`.\n * This surface is only mounted inside a conversation, so a switch always\n * targets that conversation (no home-page activate path here).\n */\n selectProfile: (profileName: string) => void;\n}\n\n/**\n * Backs the in-conversation OpenHands LLM-profile switcher (the ACP analog is\n * {@link useChatInputModelState}). Resolves which profile the conversation is\n * running and live-swaps it, mirroring the former SwitchProfileButton's\n * resolution priority so a switch is reflected instantly.\n */\nexport function useChatInputLlmProfileState(): ChatInputLlmProfileState {\n const { conversationId } = useOptionalConversationId();\n const { data: conversation } = useActiveConversation();\n const { data, isLoading } = useLlmProfiles();\n const { switchAndLog } = useSwitchLlmProfileAndLog();\n // Read the switch's pending state globally by mutation key: the pill button\n // and the menu that fires the switch are separate hook instances, so a\n // per-observer `isPending` would never light up on the button (#1571).\n const isSwitching =\n useIsMutating({ mutationKey: SWITCH_LLM_PROFILE_MUTATION_KEY }) > 0;\n // Written by useSwitchLlmProfile's onSuccess -> recordModelSwitchMessage ->\n // recordSwitch on a successful switch, so the label/check update before the\n // conversation refetch lands the new llm_model.\n const optimisticActiveProfile = useModelStore((s) =>\n conversationId ? s.activeProfileByConversation[conversationId] : undefined,\n );\n\n const profiles = data?.profiles ?? [];\n const conversationModel = conversation?.llm_model ?? null;\n\n // Resolution priority (mirrors the former SwitchProfileButton):\n // 1. Optimistic (just-clicked) — instant feedback before the refetch.\n // 2. Profile stamped on the conversation, validated against the live list\n // so a since-deleted/renamed profile falls through.\n // 3. Profile whose model matches the running llm_model.\n // 4. User-level active_profile (fallback before the first message).\n const stampedProfile = conversation?.active_profile ?? null;\n const conversationProfile =\n stampedProfile && profiles.some((p) => p.name === stampedProfile)\n ? stampedProfile\n : null;\n const currentProfileName =\n optimisticActiveProfile ??\n conversationProfile ??\n (conversationModel\n ? (profiles.find((p) => p.model === conversationModel)?.name ?? null)\n : (data?.active_profile ?? null));\n const currentProfileModel =\n profiles.find((p) => p.name === currentProfileName)?.model ??\n conversationModel ??\n null;\n\n const selectProfile = useCallback(\n (profileName: string) => {\n if (profileName === currentProfileName) return;\n switchAndLog(conversationId, profileName);\n },\n [conversationId, currentProfileName, switchAndLog],\n );\n\n return {\n profiles,\n currentProfileName,\n currentProfileModel,\n isLoading,\n isSwitching,\n selectProfile,\n };\n}\n"],"mappings":";;;;;;;;;AAgCA,SAAgB,IAAwD;CACtE,IAAM,EAAE,sBAAmB,GAA2B,EAChD,EAAE,MAAM,MAAiB,GAAuB,EAChD,EAAE,SAAM,iBAAc,GAAgB,EACtC,EAAE,oBAAiB,GAA2B,EAI9C,IACJ,EAAc,EAAE,aAAa,GAAiC,CAAC,GAAG,GAI9D,IAA0B,GAAe,MAC7C,IAAiB,EAAE,4BAA4B,KAAkB,KAAA,EAClE,EAEK,IAAW,GAAM,YAAY,EAAE,EAC/B,IAAoB,GAAc,aAAa,MAQ/C,IAAiB,GAAc,kBAAkB,MACjD,IACJ,KAAkB,EAAS,MAAM,MAAM,EAAE,SAAS,EAAe,GAC7D,IACA,MACA,IACJ,KACA,MACC,IACI,EAAS,MAAM,MAAM,EAAE,UAAU,EAAkB,EAAE,QAAQ,OAC7D,GAAM,kBAAkB;AAc/B,QAAO;EACL;EACA;EACA,qBAfA,EAAS,MAAM,MAAM,EAAE,SAAS,EAAmB,EAAE,SACrD,KACA;EAcA;EACA;EACA,eAdoB,GACnB,MAAwB;AACnB,SAAgB,KACpB,EAAa,GAAgB,EAAY;KAE3C;GAAC;GAAgB;GAAoB;GAAa,CASlD;EACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-chat-input-model-state.cjs","names":[],"sources":["../../src/hooks/use-chat-input-model-state.ts"],"sourcesContent":["import { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { useAcpModelContext } from \"#/hooks/use-acp-model-context\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport {\n getAcpPreferredDefaultModel,\n getAcpProvider,\n labelForAcpModel,\n resolveEffectiveAcpModel,\n type ACPModelOption,\n} from \"#/constants/acp-providers\";\n\nexport interface ChatInputModelState {\n isAcpContext: boolean;\n displayModel: string | null;\n currentModelId: string | null;\n availableAcpModels: ACPModelOption[];\n showAcpPicker: boolean;\n switchConversationId: string | null;\n destinationPath: \"/settings/
|
|
1
|
+
{"version":3,"file":"use-chat-input-model-state.cjs","names":[],"sources":["../../src/hooks/use-chat-input-model-state.ts"],"sourcesContent":["import { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { useAcpModelContext } from \"#/hooks/use-acp-model-context\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport {\n getAcpPreferredDefaultModel,\n getAcpProvider,\n labelForAcpModel,\n resolveEffectiveAcpModel,\n type ACPModelOption,\n} from \"#/constants/acp-providers\";\n\nexport interface ChatInputModelState {\n isAcpContext: boolean;\n displayModel: string | null;\n currentModelId: string | null;\n availableAcpModels: ACPModelOption[];\n showAcpPicker: boolean;\n switchConversationId: string | null;\n destinationPath: \"/settings/agents\" | \"/settings\";\n destinationLabel: string;\n}\n\nexport function useChatInputModelState(): ChatInputModelState {\n const { data: conversation } = useActiveConversation();\n const { data: settings } = useSettings();\n const { conversationId } = useOptionalConversationId();\n const {\n isActiveAcpConversation,\n isHomeAcp,\n isAcpContext,\n destinationPath,\n destinationLabel,\n } = useAcpModelContext();\n\n const acpServerKey = isActiveAcpConversation\n ? conversation?.acp_server\n : isHomeAcp\n ? typeof settings?.agent_settings?.acp_server === \"string\"\n ? settings.agent_settings.acp_server\n : null\n : null;\n const acpProvider = isAcpContext ? getAcpProvider(acpServerKey) : undefined;\n\n const acpConfiguredModel =\n typeof settings?.agent_settings?.acp_model === \"string\"\n ? settings.agent_settings.acp_model\n : null;\n\n let currentModelId: string | null = null;\n if (isActiveAcpConversation) {\n // ACP conversations store llm_model as the acp_model (persisted at\n // creation time). Use it directly if available; fall back to the\n // settings-configured model or provider default so the chip stays visible.\n currentModelId =\n conversation?.llm_model ??\n resolveEffectiveAcpModel({\n configured: acpConfiguredModel,\n providerDefault: getAcpPreferredDefaultModel(acpServerKey),\n });\n } else if (isHomeAcp) {\n currentModelId = resolveEffectiveAcpModel({\n configured: acpConfiguredModel,\n // Preferred default (Vertex-safe for Gemini) — must match what the\n // start request would substitute for an unconfigured model.\n providerDefault: getAcpPreferredDefaultModel(acpServerKey),\n });\n } else {\n currentModelId = conversation?.llm_model ?? settings?.llm_model ?? null;\n }\n\n const displayModel =\n currentModelId && isAcpContext\n ? (labelForAcpModel(acpServerKey, currentModelId) ?? currentModelId)\n : currentModelId;\n const availableAcpModels = acpProvider?.available_models ?? [];\n const showAcpPicker = isAcpContext && availableAcpModels.length > 0;\n const switchConversationId = isActiveAcpConversation\n ? (conversationId ?? null)\n : null;\n\n return {\n isAcpContext,\n displayModel,\n currentModelId,\n availableAcpModels,\n showAcpPicker,\n switchConversationId,\n destinationPath,\n destinationLabel,\n };\n}\n"],"mappings":"sQAuBA,SAAgB,GAA8C,CAC5D,GAAM,CAAE,KAAM,GAAiB,EAAA,uBAAuB,CAChD,CAAE,KAAM,GAAa,EAAA,aAAa,CAClC,CAAE,kBAAmB,EAAA,2BAA2B,CAChD,CACJ,0BACA,YACA,eACA,kBACA,oBACE,EAAA,oBAAoB,CAElB,EAAe,EACjB,GAAc,WACd,GACE,OAAO,GAAU,gBAAgB,YAAe,SAC9C,EAAS,eAAe,WACxB,KAEF,EAAc,EAAe,EAAA,eAAe,EAAa,CAAG,IAAA,GAE5D,EACJ,OAAO,GAAU,gBAAgB,WAAc,SAC3C,EAAS,eAAe,UACxB,KAEF,EAAgC,KACpC,AAkBE,EAlBE,EAKA,GAAc,WACd,EAAA,yBAAyB,CACvB,WAAY,EACZ,gBAAiB,EAAA,4BAA4B,EAAa,CAC3D,CAAC,CACK,EACQ,EAAA,yBAAyB,CACxC,WAAY,EAGZ,gBAAiB,EAAA,4BAA4B,EAAa,CAC3D,CAAC,CAEe,GAAc,WAAa,GAAU,WAAa,KAGrE,IAAM,EACJ,GAAkB,EACb,EAAA,iBAAiB,EAAc,EAAe,EAAI,EACnD,EACA,EAAqB,GAAa,kBAAoB,EAAE,CACxD,EAAgB,GAAgB,EAAmB,OAAS,EAKlE,MAAO,CACL,eACA,eACA,iBACA,qBACA,gBACA,qBAV2B,EACxB,GAAkB,KACnB,KASF,kBACA,mBACD"}
|
|
@@ -6,7 +6,7 @@ export interface ChatInputModelState {
|
|
|
6
6
|
availableAcpModels: ACPModelOption[];
|
|
7
7
|
showAcpPicker: boolean;
|
|
8
8
|
switchConversationId: string | null;
|
|
9
|
-
destinationPath: "/settings/
|
|
9
|
+
destinationPath: "/settings/agents" | "/settings";
|
|
10
10
|
destinationLabel: string;
|
|
11
11
|
}
|
|
12
12
|
export declare function useChatInputModelState(): ChatInputModelState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-chat-input-model-state.js","names":[],"sources":["../../src/hooks/use-chat-input-model-state.ts"],"sourcesContent":["import { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { useAcpModelContext } from \"#/hooks/use-acp-model-context\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport {\n getAcpPreferredDefaultModel,\n getAcpProvider,\n labelForAcpModel,\n resolveEffectiveAcpModel,\n type ACPModelOption,\n} from \"#/constants/acp-providers\";\n\nexport interface ChatInputModelState {\n isAcpContext: boolean;\n displayModel: string | null;\n currentModelId: string | null;\n availableAcpModels: ACPModelOption[];\n showAcpPicker: boolean;\n switchConversationId: string | null;\n destinationPath: \"/settings/
|
|
1
|
+
{"version":3,"file":"use-chat-input-model-state.js","names":[],"sources":["../../src/hooks/use-chat-input-model-state.ts"],"sourcesContent":["import { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { useAcpModelContext } from \"#/hooks/use-acp-model-context\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport {\n getAcpPreferredDefaultModel,\n getAcpProvider,\n labelForAcpModel,\n resolveEffectiveAcpModel,\n type ACPModelOption,\n} from \"#/constants/acp-providers\";\n\nexport interface ChatInputModelState {\n isAcpContext: boolean;\n displayModel: string | null;\n currentModelId: string | null;\n availableAcpModels: ACPModelOption[];\n showAcpPicker: boolean;\n switchConversationId: string | null;\n destinationPath: \"/settings/agents\" | \"/settings\";\n destinationLabel: string;\n}\n\nexport function useChatInputModelState(): ChatInputModelState {\n const { data: conversation } = useActiveConversation();\n const { data: settings } = useSettings();\n const { conversationId } = useOptionalConversationId();\n const {\n isActiveAcpConversation,\n isHomeAcp,\n isAcpContext,\n destinationPath,\n destinationLabel,\n } = useAcpModelContext();\n\n const acpServerKey = isActiveAcpConversation\n ? conversation?.acp_server\n : isHomeAcp\n ? typeof settings?.agent_settings?.acp_server === \"string\"\n ? settings.agent_settings.acp_server\n : null\n : null;\n const acpProvider = isAcpContext ? getAcpProvider(acpServerKey) : undefined;\n\n const acpConfiguredModel =\n typeof settings?.agent_settings?.acp_model === \"string\"\n ? settings.agent_settings.acp_model\n : null;\n\n let currentModelId: string | null = null;\n if (isActiveAcpConversation) {\n // ACP conversations store llm_model as the acp_model (persisted at\n // creation time). Use it directly if available; fall back to the\n // settings-configured model or provider default so the chip stays visible.\n currentModelId =\n conversation?.llm_model ??\n resolveEffectiveAcpModel({\n configured: acpConfiguredModel,\n providerDefault: getAcpPreferredDefaultModel(acpServerKey),\n });\n } else if (isHomeAcp) {\n currentModelId = resolveEffectiveAcpModel({\n configured: acpConfiguredModel,\n // Preferred default (Vertex-safe for Gemini) — must match what the\n // start request would substitute for an unconfigured model.\n providerDefault: getAcpPreferredDefaultModel(acpServerKey),\n });\n } else {\n currentModelId = conversation?.llm_model ?? settings?.llm_model ?? null;\n }\n\n const displayModel =\n currentModelId && isAcpContext\n ? (labelForAcpModel(acpServerKey, currentModelId) ?? currentModelId)\n : currentModelId;\n const availableAcpModels = acpProvider?.available_models ?? [];\n const showAcpPicker = isAcpContext && availableAcpModels.length > 0;\n const switchConversationId = isActiveAcpConversation\n ? (conversationId ?? null)\n : null;\n\n return {\n isAcpContext,\n displayModel,\n currentModelId,\n availableAcpModels,\n showAcpPicker,\n switchConversationId,\n destinationPath,\n destinationLabel,\n };\n}\n"],"mappings":";;;;;;AAuBA,SAAgB,IAA8C;CAC5D,IAAM,EAAE,MAAM,MAAiB,GAAuB,EAChD,EAAE,MAAM,MAAa,GAAa,EAClC,EAAE,sBAAmB,GAA2B,EAChD,EACJ,4BACA,cACA,iBACA,oBACA,wBACE,GAAoB,EAElB,IAAe,IACjB,GAAc,aACd,KACE,OAAO,GAAU,gBAAgB,cAAe,WAC9C,EAAS,eAAe,aACxB,MAEF,IAAc,IAAe,EAAe,EAAa,GAAG,KAAA,GAE5D,IACJ,OAAO,GAAU,gBAAgB,aAAc,WAC3C,EAAS,eAAe,YACxB,MAEF,IAAgC;AACpC,CAkBE,IAlBE,IAKA,GAAc,aACd,EAAyB;EACvB,YAAY;EACZ,iBAAiB,EAA4B,EAAa;EAC3D,CAAC,GACK,IACQ,EAAyB;EACxC,YAAY;EAGZ,iBAAiB,EAA4B,EAAa;EAC3D,CAAC,GAEe,GAAc,aAAa,GAAU,aAAa;CAGrE,IAAM,IACJ,KAAkB,IACb,EAAiB,GAAc,EAAe,IAAI,IACnD,GACA,IAAqB,GAAa,oBAAoB,EAAE,EACxD,IAAgB,KAAgB,EAAmB,SAAS;AAKlE,QAAO;EACL;EACA;EACA;EACA;EACA;EACA,sBAV2B,IACxB,KAAkB,OACnB;EASF;EACA;EACD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../node_modules/@tanstack/react-query/build/modern/useMutationState.cjs`),t=require(`./query/use-agent-profiles.cjs`),n=require(`./mutation/use-activate-agent-profile.cjs`);let r=require(`react`);function i(){let{data:i,isLoading:a}=t.useAgentProfiles(),o=n.useActivateAgentProfile(),s=e.useIsMutating({mutationKey:n.ACTIVATE_AGENT_PROFILE_MUTATION_KEY})>0,c=i?.profiles??[],l=i?.active_agent_profile_id??null;return{profiles:c,currentProfileId:l,currentProfileName:c.find(e=>e.id!=null&&e.id===l)?.name??null,isLoading:a,isSwitching:s,selectProfile:(0,r.useCallback)(e=>{!e.id||e.id===l||o.mutate(e.id)},[l,o])}}exports.useChatInputProfileState=i;
|
|
2
|
+
//# sourceMappingURL=use-chat-input-profile-state.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-chat-input-profile-state.cjs","names":[],"sources":["../../src/hooks/use-chat-input-profile-state.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useIsMutating } from \"@tanstack/react-query\";\nimport type { AgentProfileSummary } from \"#/api/agent-profiles-service/agent-profiles-service.api\";\nimport { useAgentProfiles } from \"#/hooks/query/use-agent-profiles\";\nimport {\n useActivateAgentProfile,\n ACTIVATE_AGENT_PROFILE_MUTATION_KEY,\n} from \"#/hooks/mutation/use-activate-agent-profile\";\n\nexport interface ChatInputProfileState {\n profiles: AgentProfileSummary[];\n /** id of the active profile the next conversation will launch from. */\n currentProfileId: string | null;\n currentProfileName: string | null;\n isLoading: boolean;\n isSwitching: boolean;\n /** Activate a profile so the next conversation launches from it. */\n selectProfile: (profile: AgentProfileSummary) => void;\n}\n\n/**\n * Backs the home chat-input AgentProfile picker. This picker is only rendered\n * on the home screen — inside a conversation the chat input shows the\n * in-conversation LLM-profile picker (OpenHands) or model picker (ACP) instead\n * (see `chat-input-actions.tsx` `pickerKind`). So selecting a profile here\n * simply activates it as the launch default; `useCreateConversation` reads the\n * active profile when the next conversation starts.\n */\nexport function useChatInputProfileState(): ChatInputProfileState {\n const { data: agentProfiles, isLoading } = useAgentProfiles();\n const activateProfile = useActivateAgentProfile();\n // Observe the activation globally by mutation key so the picker button (a\n // separate hook instance from the menu that fires it) disables correctly\n // while a switch is in flight (#1571).\n const isSwitching =\n useIsMutating({ mutationKey: ACTIVATE_AGENT_PROFILE_MUTATION_KEY }) > 0;\n\n const profiles = agentProfiles?.profiles ?? [];\n const currentProfileId = agentProfiles?.active_agent_profile_id ?? null;\n const currentProfileName =\n profiles.find((p) => p.id != null && p.id === currentProfileId)?.name ??\n null;\n\n const selectProfile = useCallback(\n (profile: AgentProfileSummary) => {\n if (!profile.id || profile.id === currentProfileId) return;\n activateProfile.mutate(profile.id);\n },\n [currentProfileId, activateProfile],\n );\n\n return {\n profiles,\n currentProfileId,\n currentProfileName,\n isLoading,\n isSwitching,\n selectProfile,\n };\n}\n"],"mappings":"kQA4BA,SAAgB,GAAkD,CAChE,GAAM,CAAE,KAAM,EAAe,aAAc,EAAA,kBAAkB,CACvD,EAAkB,EAAA,yBAAyB,CAI3C,EACJ,EAAA,cAAc,CAAE,YAAa,EAAA,oCAAqC,CAAC,CAAG,EAElE,EAAW,GAAe,UAAY,EAAE,CACxC,EAAmB,GAAe,yBAA2B,KAanE,MAAO,CACL,WACA,mBACA,mBAdA,EAAS,KAAM,GAAM,EAAE,IAAM,MAAQ,EAAE,KAAO,EAAiB,EAAE,MACjE,KAcA,YACA,cACA,eAAA,EAAA,EAAA,aAbC,GAAiC,CAC5B,CAAC,EAAQ,IAAM,EAAQ,KAAO,GAClC,EAAgB,OAAO,EAAQ,GAAG,EAEpC,CAAC,EAAkB,EAAgB,CASnC,CACD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AgentProfileSummary } from "#/api/agent-profiles-service/agent-profiles-service.api";
|
|
2
|
+
export interface ChatInputProfileState {
|
|
3
|
+
profiles: AgentProfileSummary[];
|
|
4
|
+
/** id of the active profile the next conversation will launch from. */
|
|
5
|
+
currentProfileId: string | null;
|
|
6
|
+
currentProfileName: string | null;
|
|
7
|
+
isLoading: boolean;
|
|
8
|
+
isSwitching: boolean;
|
|
9
|
+
/** Activate a profile so the next conversation launches from it. */
|
|
10
|
+
selectProfile: (profile: AgentProfileSummary) => void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Backs the home chat-input AgentProfile picker. This picker is only rendered
|
|
14
|
+
* on the home screen — inside a conversation the chat input shows the
|
|
15
|
+
* in-conversation LLM-profile picker (OpenHands) or model picker (ACP) instead
|
|
16
|
+
* (see `chat-input-actions.tsx` `pickerKind`). So selecting a profile here
|
|
17
|
+
* simply activates it as the launch default; `useCreateConversation` reads the
|
|
18
|
+
* active profile when the next conversation starts.
|
|
19
|
+
*/
|
|
20
|
+
export declare function useChatInputProfileState(): ChatInputProfileState;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useIsMutating as e } from "../node_modules/@tanstack/react-query/build/modern/useMutationState.js";
|
|
2
|
+
import { useAgentProfiles as t } from "./query/use-agent-profiles.js";
|
|
3
|
+
import { ACTIVATE_AGENT_PROFILE_MUTATION_KEY as n, useActivateAgentProfile as r } from "./mutation/use-activate-agent-profile.js";
|
|
4
|
+
import { useCallback as i } from "react";
|
|
5
|
+
//#region src/hooks/use-chat-input-profile-state.ts
|
|
6
|
+
function a() {
|
|
7
|
+
let { data: a, isLoading: o } = t(), s = r(), c = e({ mutationKey: n }) > 0, l = a?.profiles ?? [], u = a?.active_agent_profile_id ?? null;
|
|
8
|
+
return {
|
|
9
|
+
profiles: l,
|
|
10
|
+
currentProfileId: u,
|
|
11
|
+
currentProfileName: l.find((e) => e.id != null && e.id === u)?.name ?? null,
|
|
12
|
+
isLoading: o,
|
|
13
|
+
isSwitching: c,
|
|
14
|
+
selectProfile: i((e) => {
|
|
15
|
+
!e.id || e.id === u || s.mutate(e.id);
|
|
16
|
+
}, [u, s])
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { a as useChatInputProfileState };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=use-chat-input-profile-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-chat-input-profile-state.js","names":[],"sources":["../../src/hooks/use-chat-input-profile-state.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useIsMutating } from \"@tanstack/react-query\";\nimport type { AgentProfileSummary } from \"#/api/agent-profiles-service/agent-profiles-service.api\";\nimport { useAgentProfiles } from \"#/hooks/query/use-agent-profiles\";\nimport {\n useActivateAgentProfile,\n ACTIVATE_AGENT_PROFILE_MUTATION_KEY,\n} from \"#/hooks/mutation/use-activate-agent-profile\";\n\nexport interface ChatInputProfileState {\n profiles: AgentProfileSummary[];\n /** id of the active profile the next conversation will launch from. */\n currentProfileId: string | null;\n currentProfileName: string | null;\n isLoading: boolean;\n isSwitching: boolean;\n /** Activate a profile so the next conversation launches from it. */\n selectProfile: (profile: AgentProfileSummary) => void;\n}\n\n/**\n * Backs the home chat-input AgentProfile picker. This picker is only rendered\n * on the home screen — inside a conversation the chat input shows the\n * in-conversation LLM-profile picker (OpenHands) or model picker (ACP) instead\n * (see `chat-input-actions.tsx` `pickerKind`). So selecting a profile here\n * simply activates it as the launch default; `useCreateConversation` reads the\n * active profile when the next conversation starts.\n */\nexport function useChatInputProfileState(): ChatInputProfileState {\n const { data: agentProfiles, isLoading } = useAgentProfiles();\n const activateProfile = useActivateAgentProfile();\n // Observe the activation globally by mutation key so the picker button (a\n // separate hook instance from the menu that fires it) disables correctly\n // while a switch is in flight (#1571).\n const isSwitching =\n useIsMutating({ mutationKey: ACTIVATE_AGENT_PROFILE_MUTATION_KEY }) > 0;\n\n const profiles = agentProfiles?.profiles ?? [];\n const currentProfileId = agentProfiles?.active_agent_profile_id ?? null;\n const currentProfileName =\n profiles.find((p) => p.id != null && p.id === currentProfileId)?.name ??\n null;\n\n const selectProfile = useCallback(\n (profile: AgentProfileSummary) => {\n if (!profile.id || profile.id === currentProfileId) return;\n activateProfile.mutate(profile.id);\n },\n [currentProfileId, activateProfile],\n );\n\n return {\n profiles,\n currentProfileId,\n currentProfileName,\n isLoading,\n isSwitching,\n selectProfile,\n };\n}\n"],"mappings":";;;;;AA4BA,SAAgB,IAAkD;CAChE,IAAM,EAAE,MAAM,GAAe,iBAAc,GAAkB,EACvD,IAAkB,GAAyB,EAI3C,IACJ,EAAc,EAAE,aAAa,GAAqC,CAAC,GAAG,GAElE,IAAW,GAAe,YAAY,EAAE,EACxC,IAAmB,GAAe,2BAA2B;AAanE,QAAO;EACL;EACA;EACA,oBAdA,EAAS,MAAM,MAAM,EAAE,MAAM,QAAQ,EAAE,OAAO,EAAiB,EAAE,QACjE;EAcA;EACA;EACA,eAdoB,GACnB,MAAiC;AAC5B,IAAC,EAAQ,MAAM,EAAQ,OAAO,KAClC,EAAgB,OAAO,EAAQ,GAAG;KAEpC,CAAC,GAAkB,EAAgB,CASnC;EACD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../_virtual/_rolldown/runtime.cjs`),t=require(`../node_modules/react-i18next/dist/es/useTranslation.cjs`),n=require(`../i18n/declaration.cjs`),r=require(`../utils/status.cjs`),ee=require(`../context/navigation-context.cjs`),i=require(`../utils/custom-toast-handlers.cjs`),a=require(`../contexts/active-backend-context.cjs`),o=require(`../stores/use-event-store.cjs`),s=require(`../stores/metrics-store.cjs`),
|
|
1
|
+
const e=require(`../_virtual/_rolldown/runtime.cjs`),t=require(`../node_modules/react-i18next/dist/es/useTranslation.cjs`),n=require(`../i18n/declaration.cjs`),r=require(`../utils/status.cjs`),ee=require(`../context/navigation-context.cjs`),i=require(`../utils/custom-toast-handlers.cjs`),a=require(`../contexts/active-backend-context.cjs`),o=require(`../stores/use-event-store.cjs`),s=require(`../api/conversation-metadata-store.cjs`),c=require(`../stores/metrics-store.cjs`),te=require(`./query/use-active-conversation.cjs`),l=require(`./mutation/use-delete-conversation.cjs`),u=require(`./mutation/use-unified-stop-conversation.cjs`),d=require(`./mutation/use-update-conversation-public-flag.cjs`),f=require(`./use-download-conversation.cjs`),p=require(`../utils/system-message-adapter.cjs`);let m=require(`react`);m=e.__toESM(m,1);function h({conversationId:e,executionStatus:h,showOptions:g=!1,onContextMenuToggle:_}){let{t:v}=t.useTranslation(),{conversationId:y,navigate:b}=ee.useNavigation(),{backend:x}=a.useActiveBackend(),S=o.useEventStore(e=>e.events),{mutate:C}=l.useDeleteConversation(),{mutate:w}=u.useUnifiedPauseConversation(),{mutate:T}=d.useUpdateConversationPublicFlag(),{data:E}=te.useActiveConversation(),D=c.default(),[O,k]=m.default.useState(!1),[A,j]=m.default.useState(!1),[M,N]=m.default.useState(!1),[P,F]=m.default.useState(!1),[I,L]=m.default.useState(!1),[R,z]=m.default.useState(!1),[B,V]=m.default.useState(!1),{mutateAsync:H}=f.useDownloadConversation(),U=p.adaptSystemMessage(S),W=e=>{e.preventDefault(),e.stopPropagation(),z(!0),_?.(!1)},G=e=>{e.preventDefault(),e.stopPropagation(),V(!0),_?.(!1)},K=()=>{e&&C({conversationId:e},{onSuccess:()=>{e===y&&b(`/conversations`)}}),z(!1)},q=()=>{e&&w({conversationId:e}),V(!1)},J=e=>{e.preventDefault(),e.stopPropagation(),_?.(!1)},Y=async t=>{t.preventDefault(),t.stopPropagation(),e&&await H(e),_?.(!1)},X=e=>{e.stopPropagation(),k(!0),_?.(!1)},Z=e=>{e.stopPropagation(),j(!0),_?.(!1)},Q=e=>{e.stopPropagation(),N(!0),_?.(!1)},ne=e=>{e.stopPropagation(),F(!0),_?.(!1)},re=e=>{e.stopPropagation(),L(!0),_?.(!1)},ie=t=>{e&&E&&T({conversationId:e,isPublic:t??!E.public})},$=m.default.useMemo(()=>e?`${x.kind===`cloud`?x.host.replace(/\/+$/,``):window.location.origin}/shared/conversations/${e}`:``,[e,x.kind,x.host]);return{handleDelete:W,handleStop:G,handleEdit:J,handleDownloadConversation:Y,handleDisplayCost:X,handleShowAgentTools:Z,handleShowSkills:Q,handleShowPlugins:ne,handleShowHooks:re,handleTogglePublic:ie,handleCopyShareLink:e=>{if(e.preventDefault(),e.stopPropagation(),!$){_?.(!1);return}navigator.clipboard.writeText($),i.displaySuccessToast(v(n.I18nKey.CONVERSATION$LINK_COPIED))},shareUrl:$,handleConfirmDelete:K,handleConfirmStop:q,metricsModalVisible:O,setMetricsModalVisible:k,systemModalVisible:A,setSystemModalVisible:j,skillsModalVisible:M,setSkillsModalVisible:N,pluginsModalVisible:P,setPluginsModalVisible:F,hooksModalVisible:I,setHooksModalVisible:L,confirmDeleteModalVisible:R,setConfirmDeleteModalVisible:z,confirmStopModalVisible:B,setConfirmStopModalVisible:V,metrics:D,systemMessage:U,shouldShowStop:r.isExecutionActive(h),shouldShowDownloadConversation:!!(e&&g),shouldShowDisplayCost:g,shouldShowAgentTools:!!(g&&U),shouldShowSkills:!!(g&&e),shouldShowPlugins:!!(g&&e&&(s.getStoredConversationMetadata(e)?.plugins?.length??0)>0),shouldShowHooks:!!(g&&e&&r.isExecutionActive(h))}}exports.useConversationNameContextMenu=h;
|
|
2
2
|
//# sourceMappingURL=use-conversation-name-context-menu.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-conversation-name-context-menu.cjs","names":[],"sources":["../../src/hooks/use-conversation-name-context-menu.ts"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigation } from \"#/context/navigation-context\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport useMetricsStore from \"#/stores/metrics-store\";\nimport { useDeleteConversation } from \"./mutation/use-delete-conversation\";\nimport { useUnifiedPauseConversation } from \"./mutation/use-unified-stop-conversation\";\nimport { useUpdateConversationPublicFlag } from \"./mutation/use-update-conversation-public-flag\";\nimport { useActiveConversation } from \"./query/use-active-conversation\";\nimport { useEventStore } from \"#/stores/use-event-store\";\nimport { displaySuccessToast } from \"#/utils/custom-toast-handlers\";\nimport { I18nKey } from \"#/i18n/declaration\";\n\nimport { useDownloadConversation } from \"./use-download-conversation\";\nimport {\n adaptSystemMessage,\n SystemMessageForModal,\n} from \"#/utils/system-message-adapter\";\nimport { ExecutionStatus } from \"#/types/agent-server/core/base/common\";\nimport { isExecutionActive } from \"#/utils/status\";\n\ninterface UseConversationNameContextMenuProps {\n conversationId?: string;\n executionStatus?: ExecutionStatus | null;\n showOptions?: boolean;\n onContextMenuToggle?: (isOpen: boolean) => void;\n}\n\nexport function useConversationNameContextMenu({\n conversationId,\n executionStatus,\n showOptions = false,\n onContextMenuToggle,\n}: UseConversationNameContextMenuProps) {\n const { t } = useTranslation();\n const { conversationId: currentConversationId, navigate } = useNavigation();\n const { backend } = useActiveBackend();\n const events = useEventStore((state) => state.events);\n const { mutate: deleteConversation } = useDeleteConversation();\n const { mutate: stopConversation } = useUnifiedPauseConversation();\n const { mutate: updatePublicFlag } = useUpdateConversationPublicFlag();\n const { data: conversation } = useActiveConversation();\n const metrics = useMetricsStore();\n\n const [metricsModalVisible, setMetricsModalVisible] = React.useState(false);\n const [systemModalVisible, setSystemModalVisible] = React.useState(false);\n const [skillsModalVisible, setSkillsModalVisible] = React.useState(false);\n const [hooksModalVisible, setHooksModalVisible] = React.useState(false);\n const [confirmDeleteModalVisible, setConfirmDeleteModalVisible] =\n React.useState(false);\n const [confirmStopModalVisible, setConfirmStopModalVisible] =\n React.useState(false);\n const { mutateAsync: downloadConversation } = useDownloadConversation();\n\n const systemMessage: SystemMessageForModal | null =\n adaptSystemMessage(events);\n\n const handleDelete = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n setConfirmDeleteModalVisible(true);\n onContextMenuToggle?.(false);\n };\n\n const handleStop = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n setConfirmStopModalVisible(true);\n onContextMenuToggle?.(false);\n };\n\n const handleConfirmDelete = () => {\n if (conversationId) {\n deleteConversation(\n { conversationId },\n {\n onSuccess: () => {\n if (conversationId === currentConversationId) {\n navigate(\"/conversations\");\n }\n },\n },\n );\n }\n setConfirmDeleteModalVisible(false);\n };\n\n const handleConfirmStop = () => {\n if (conversationId) {\n stopConversation({ conversationId });\n }\n setConfirmStopModalVisible(false);\n };\n\n const handleEdit = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n // This will be handled by the parent component to switch to edit mode\n onContextMenuToggle?.(false);\n };\n\n const handleDownloadConversation = async (\n event: React.MouseEvent<HTMLButtonElement>,\n ) => {\n event.preventDefault();\n event.stopPropagation();\n if (conversationId) {\n await downloadConversation(conversationId);\n }\n onContextMenuToggle?.(false);\n };\n\n const handleDisplayCost = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n setMetricsModalVisible(true);\n onContextMenuToggle?.(false);\n };\n\n const handleShowAgentTools = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n setSystemModalVisible(true);\n onContextMenuToggle?.(false);\n };\n\n const handleShowSkills = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n setSkillsModalVisible(true);\n onContextMenuToggle?.(false);\n };\n\n const handleShowHooks = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n setHooksModalVisible(true);\n onContextMenuToggle?.(false);\n };\n\n const handleTogglePublic = (nextIsPublic?: boolean) => {\n if (conversationId && conversation) {\n updatePublicFlag({\n conversationId,\n isPublic: nextIsPublic ?? !conversation.public,\n });\n }\n // Intentionally don't close the menu — let the user see the toggle flip.\n };\n\n const shareUrl = React.useMemo(() => {\n if (!conversationId) return \"\";\n // On cloud backends, the shareable URL must point at the cloud\n // environment's host (e.g. the cloud app domain) rather than the local\n // dev origin so the link works for anyone the user shares it with.\n const origin =\n backend.kind === \"cloud\"\n ? backend.host.replace(/\\/+$/, \"\")\n : window.location.origin;\n return `${origin}/shared/conversations/${conversationId}`;\n }, [conversationId, backend.kind, backend.host]);\n\n const handleCopyShareLink = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!shareUrl) {\n onContextMenuToggle?.(false);\n return;\n }\n\n navigator.clipboard.writeText(shareUrl);\n displaySuccessToast(t(I18nKey.CONVERSATION$LINK_COPIED));\n };\n\n return {\n // Handlers\n handleDelete,\n handleStop,\n handleEdit,\n handleDownloadConversation,\n handleDisplayCost,\n handleShowAgentTools,\n handleShowSkills,\n handleShowHooks,\n handleTogglePublic,\n handleCopyShareLink,\n shareUrl,\n handleConfirmDelete,\n handleConfirmStop,\n\n // Modal states\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\n // Data\n metrics,\n systemMessage,\n\n shouldShowStop: isExecutionActive(executionStatus),\n shouldShowDownloadConversation: Boolean(conversationId && showOptions),\n shouldShowDisplayCost: showOptions,\n shouldShowAgentTools: Boolean(showOptions && systemMessage),\n shouldShowSkills: Boolean(showOptions && conversationId),\n shouldShowHooks: Boolean(\n showOptions && conversationId && isExecutionActive(executionStatus),\n ),\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-conversation-name-context-menu.cjs","names":[],"sources":["../../src/hooks/use-conversation-name-context-menu.ts"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigation } from \"#/context/navigation-context\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport useMetricsStore from \"#/stores/metrics-store\";\nimport { useDeleteConversation } from \"./mutation/use-delete-conversation\";\nimport { useUnifiedPauseConversation } from \"./mutation/use-unified-stop-conversation\";\nimport { useUpdateConversationPublicFlag } from \"./mutation/use-update-conversation-public-flag\";\nimport { useActiveConversation } from \"./query/use-active-conversation\";\nimport { useEventStore } from \"#/stores/use-event-store\";\nimport { displaySuccessToast } from \"#/utils/custom-toast-handlers\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { getStoredConversationMetadata } from \"#/api/conversation-metadata-store\";\n\nimport { useDownloadConversation } from \"./use-download-conversation\";\nimport {\n adaptSystemMessage,\n SystemMessageForModal,\n} from \"#/utils/system-message-adapter\";\nimport { ExecutionStatus } from \"#/types/agent-server/core/base/common\";\nimport { isExecutionActive } from \"#/utils/status\";\n\ninterface UseConversationNameContextMenuProps {\n conversationId?: string;\n executionStatus?: ExecutionStatus | null;\n showOptions?: boolean;\n onContextMenuToggle?: (isOpen: boolean) => void;\n}\n\nexport function useConversationNameContextMenu({\n conversationId,\n executionStatus,\n showOptions = false,\n onContextMenuToggle,\n}: UseConversationNameContextMenuProps) {\n const { t } = useTranslation();\n const { conversationId: currentConversationId, navigate } = useNavigation();\n const { backend } = useActiveBackend();\n const events = useEventStore((state) => state.events);\n const { mutate: deleteConversation } = useDeleteConversation();\n const { mutate: stopConversation } = useUnifiedPauseConversation();\n const { mutate: updatePublicFlag } = useUpdateConversationPublicFlag();\n const { data: conversation } = useActiveConversation();\n const metrics = useMetricsStore();\n\n const [metricsModalVisible, setMetricsModalVisible] = React.useState(false);\n const [systemModalVisible, setSystemModalVisible] = React.useState(false);\n const [skillsModalVisible, setSkillsModalVisible] = React.useState(false);\n const [pluginsModalVisible, setPluginsModalVisible] = React.useState(false);\n const [hooksModalVisible, setHooksModalVisible] = React.useState(false);\n const [confirmDeleteModalVisible, setConfirmDeleteModalVisible] =\n React.useState(false);\n const [confirmStopModalVisible, setConfirmStopModalVisible] =\n React.useState(false);\n const { mutateAsync: downloadConversation } = useDownloadConversation();\n\n const systemMessage: SystemMessageForModal | null =\n adaptSystemMessage(events);\n\n const handleDelete = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n setConfirmDeleteModalVisible(true);\n onContextMenuToggle?.(false);\n };\n\n const handleStop = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n setConfirmStopModalVisible(true);\n onContextMenuToggle?.(false);\n };\n\n const handleConfirmDelete = () => {\n if (conversationId) {\n deleteConversation(\n { conversationId },\n {\n onSuccess: () => {\n if (conversationId === currentConversationId) {\n navigate(\"/conversations\");\n }\n },\n },\n );\n }\n setConfirmDeleteModalVisible(false);\n };\n\n const handleConfirmStop = () => {\n if (conversationId) {\n stopConversation({ conversationId });\n }\n setConfirmStopModalVisible(false);\n };\n\n const handleEdit = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n // This will be handled by the parent component to switch to edit mode\n onContextMenuToggle?.(false);\n };\n\n const handleDownloadConversation = async (\n event: React.MouseEvent<HTMLButtonElement>,\n ) => {\n event.preventDefault();\n event.stopPropagation();\n if (conversationId) {\n await downloadConversation(conversationId);\n }\n onContextMenuToggle?.(false);\n };\n\n const handleDisplayCost = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n setMetricsModalVisible(true);\n onContextMenuToggle?.(false);\n };\n\n const handleShowAgentTools = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n setSystemModalVisible(true);\n onContextMenuToggle?.(false);\n };\n\n const handleShowSkills = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n setSkillsModalVisible(true);\n onContextMenuToggle?.(false);\n };\n\n const handleShowPlugins = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n setPluginsModalVisible(true);\n onContextMenuToggle?.(false);\n };\n\n const handleShowHooks = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n setHooksModalVisible(true);\n onContextMenuToggle?.(false);\n };\n\n const handleTogglePublic = (nextIsPublic?: boolean) => {\n if (conversationId && conversation) {\n updatePublicFlag({\n conversationId,\n isPublic: nextIsPublic ?? !conversation.public,\n });\n }\n // Intentionally don't close the menu — let the user see the toggle flip.\n };\n\n const shareUrl = React.useMemo(() => {\n if (!conversationId) return \"\";\n // On cloud backends, the shareable URL must point at the cloud\n // environment's host (e.g. the cloud app domain) rather than the local\n // dev origin so the link works for anyone the user shares it with.\n const origin =\n backend.kind === \"cloud\"\n ? backend.host.replace(/\\/+$/, \"\")\n : window.location.origin;\n return `${origin}/shared/conversations/${conversationId}`;\n }, [conversationId, backend.kind, backend.host]);\n\n const handleCopyShareLink = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!shareUrl) {\n onContextMenuToggle?.(false);\n return;\n }\n\n navigator.clipboard.writeText(shareUrl);\n displaySuccessToast(t(I18nKey.CONVERSATION$LINK_COPIED));\n };\n\n return {\n // Handlers\n handleDelete,\n handleStop,\n handleEdit,\n handleDownloadConversation,\n handleDisplayCost,\n handleShowAgentTools,\n handleShowSkills,\n handleShowPlugins,\n handleShowHooks,\n handleTogglePublic,\n handleCopyShareLink,\n shareUrl,\n handleConfirmDelete,\n handleConfirmStop,\n\n // Modal states\n metricsModalVisible,\n setMetricsModalVisible,\n systemModalVisible,\n setSystemModalVisible,\n skillsModalVisible,\n setSkillsModalVisible,\n pluginsModalVisible,\n setPluginsModalVisible,\n hooksModalVisible,\n setHooksModalVisible,\n confirmDeleteModalVisible,\n setConfirmDeleteModalVisible,\n confirmStopModalVisible,\n setConfirmStopModalVisible,\n\n // Data\n metrics,\n systemMessage,\n\n shouldShowStop: isExecutionActive(executionStatus),\n shouldShowDownloadConversation: Boolean(conversationId && showOptions),\n shouldShowDisplayCost: showOptions,\n shouldShowAgentTools: Boolean(showOptions && systemMessage),\n shouldShowSkills: Boolean(showOptions && conversationId),\n shouldShowPlugins: Boolean(\n showOptions &&\n conversationId &&\n (getStoredConversationMetadata(conversationId)?.plugins?.length ?? 0) > 0,\n ),\n shouldShowHooks: Boolean(\n showOptions && conversationId && isExecutionActive(executionStatus),\n ),\n };\n}\n"],"mappings":"m0BA6BA,SAAgB,EAA+B,CAC7C,iBACA,kBACA,cAAc,GACd,uBACsC,CACtC,GAAM,CAAE,KAAM,EAAA,gBAAgB,CACxB,CAAE,eAAgB,EAAuB,YAAa,GAAA,eAAe,CACrE,CAAE,WAAY,EAAA,kBAAkB,CAChC,EAAS,EAAA,cAAe,GAAU,EAAM,OAAO,CAC/C,CAAE,OAAQ,GAAuB,EAAA,uBAAuB,CACxD,CAAE,OAAQ,GAAqB,EAAA,6BAA6B,CAC5D,CAAE,OAAQ,GAAqB,EAAA,iCAAiC,CAChE,CAAE,KAAM,GAAiB,GAAA,uBAAuB,CAChD,EAAU,EAAA,SAAiB,CAE3B,CAAC,EAAqB,GAA0B,EAAA,QAAM,SAAS,GAAM,CACrE,CAAC,EAAoB,GAAyB,EAAA,QAAM,SAAS,GAAM,CACnE,CAAC,EAAoB,GAAyB,EAAA,QAAM,SAAS,GAAM,CACnE,CAAC,EAAqB,GAA0B,EAAA,QAAM,SAAS,GAAM,CACrE,CAAC,EAAmB,GAAwB,EAAA,QAAM,SAAS,GAAM,CACjE,CAAC,EAA2B,GAChC,EAAA,QAAM,SAAS,GAAM,CACjB,CAAC,EAAyB,GAC9B,EAAA,QAAM,SAAS,GAAM,CACjB,CAAE,YAAa,GAAyB,EAAA,yBAAyB,CAEjE,EACJ,EAAA,mBAAmB,EAAO,CAEtB,EAAgB,GAA+C,CACnE,EAAM,gBAAgB,CACtB,EAAM,iBAAiB,CACvB,EAA6B,GAAK,CAClC,IAAsB,GAAM,EAGxB,EAAc,GAA+C,CACjE,EAAM,gBAAgB,CACtB,EAAM,iBAAiB,CACvB,EAA2B,GAAK,CAChC,IAAsB,GAAM,EAGxB,MAA4B,CAC5B,GACF,EACE,CAAE,iBAAgB,CAClB,CACE,cAAiB,CACX,IAAmB,GACrB,EAAS,iBAAiB,EAG/B,CACF,CAEH,EAA6B,GAAM,EAG/B,MAA0B,CAC1B,GACF,EAAiB,CAAE,iBAAgB,CAAC,CAEtC,EAA2B,GAAM,EAG7B,EAAc,GAA+C,CACjE,EAAM,gBAAgB,CACtB,EAAM,iBAAiB,CAEvB,IAAsB,GAAM,EAGxB,EAA6B,KACjC,IACG,CACH,EAAM,gBAAgB,CACtB,EAAM,iBAAiB,CACnB,GACF,MAAM,EAAqB,EAAe,CAE5C,IAAsB,GAAM,EAGxB,EAAqB,GAA+C,CACxE,EAAM,iBAAiB,CACvB,EAAuB,GAAK,CAC5B,IAAsB,GAAM,EAGxB,EAAwB,GAA+C,CAC3E,EAAM,iBAAiB,CACvB,EAAsB,GAAK,CAC3B,IAAsB,GAAM,EAGxB,EAAoB,GAA+C,CACvE,EAAM,iBAAiB,CACvB,EAAsB,GAAK,CAC3B,IAAsB,GAAM,EAGxB,GAAqB,GAA+C,CACxE,EAAM,iBAAiB,CACvB,EAAuB,GAAK,CAC5B,IAAsB,GAAM,EAGxB,GAAmB,GAA+C,CACtE,EAAM,iBAAiB,CACvB,EAAqB,GAAK,CAC1B,IAAsB,GAAM,EAGxB,GAAsB,GAA2B,CACjD,GAAkB,GACpB,EAAiB,CACf,iBACA,SAAU,GAAgB,CAAC,EAAa,OACzC,CAAC,EAKA,EAAW,EAAA,QAAM,YAChB,EAQE,GAHL,EAAQ,OAAS,QACb,EAAQ,KAAK,QAAQ,OAAQ,GAAG,CAChC,OAAO,SAAS,OACL,wBAAwB,IARb,GAS3B,CAAC,EAAgB,EAAQ,KAAM,EAAQ,KAAK,CAAC,CAehD,MAAO,CAEL,eACA,aACA,aACA,6BACA,oBACA,uBACA,mBACA,qBACA,mBACA,sBACA,oBAzB2B,GAA+C,CAI1E,GAHA,EAAM,gBAAgB,CACtB,EAAM,iBAAiB,CAEnB,CAAC,EAAU,CACb,IAAsB,GAAM,CAC5B,OAGF,UAAU,UAAU,UAAU,EAAS,CACvC,EAAA,oBAAoB,EAAE,EAAA,QAAQ,yBAAyB,CAAC,EAgBxD,WACA,sBACA,oBAGA,sBACA,yBACA,qBACA,wBACA,qBACA,wBACA,sBACA,yBACA,oBACA,uBACA,4BACA,+BACA,0BACA,6BAGA,UACA,gBAEA,eAAgB,EAAA,kBAAkB,EAAgB,CAClD,+BAAgC,GAAQ,GAAkB,GAC1D,sBAAuB,EACvB,qBAAsB,GAAQ,GAAe,GAC7C,iBAAkB,GAAQ,GAAe,GACzC,kBAAmB,GACjB,GACA,IACC,EAAA,8BAA8B,EAAe,EAAE,SAAS,QAAU,GAAK,GAE1E,gBAAiB,GACf,GAAe,GAAkB,EAAA,kBAAkB,EAAgB,EAEtE"}
|
|
@@ -15,6 +15,7 @@ export declare function useConversationNameContextMenu({ conversationId, executi
|
|
|
15
15
|
handleDisplayCost: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
16
16
|
handleShowAgentTools: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
17
17
|
handleShowSkills: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
18
|
+
handleShowPlugins: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
18
19
|
handleShowHooks: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
19
20
|
handleTogglePublic: (nextIsPublic?: boolean) => void;
|
|
20
21
|
handleCopyShareLink: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
@@ -27,6 +28,8 @@ export declare function useConversationNameContextMenu({ conversationId, executi
|
|
|
27
28
|
setSystemModalVisible: React.Dispatch<React.SetStateAction<boolean>>;
|
|
28
29
|
skillsModalVisible: boolean;
|
|
29
30
|
setSkillsModalVisible: React.Dispatch<React.SetStateAction<boolean>>;
|
|
31
|
+
pluginsModalVisible: boolean;
|
|
32
|
+
setPluginsModalVisible: React.Dispatch<React.SetStateAction<boolean>>;
|
|
30
33
|
hooksModalVisible: boolean;
|
|
31
34
|
setHooksModalVisible: React.Dispatch<React.SetStateAction<boolean>>;
|
|
32
35
|
confirmDeleteModalVisible: boolean;
|
|
@@ -40,6 +43,7 @@ export declare function useConversationNameContextMenu({ conversationId, executi
|
|
|
40
43
|
shouldShowDisplayCost: boolean;
|
|
41
44
|
shouldShowAgentTools: boolean;
|
|
42
45
|
shouldShowSkills: boolean;
|
|
46
|
+
shouldShowPlugins: boolean;
|
|
43
47
|
shouldShowHooks: boolean;
|
|
44
48
|
};
|
|
45
49
|
export {};
|