@openhands/agent-canvas 1.0.0-beta.5 → 1.0.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -7
- package/README.windows.md +27 -0
- package/bin/agent-canvas.mjs +26 -3
- package/build/assets/{QueryClientProvider-CkGuhXg-.js → QueryClientProvider-Cnr-Yl3j.js} +1 -1
- package/build/assets/{Trans-Cvm_-SMi.js → Trans-4jmk54WC.js} +1 -1
- package/build/assets/acp-providers-CPdgcp13.js +1 -0
- package/build/assets/{acp-route-guard-B2yoBZ_4.js → acp-route-guard-BoVmCn0e.js} +1 -1
- package/build/assets/active-backend-context-Beu-LZL-.js +1 -0
- package/build/assets/add-backend-modal-BheqYXHK.js +1 -0
- package/build/assets/agent-server-client-options-HEOwGVIU.js +1 -0
- package/build/assets/agent-server-compatibility-CdI3N7dr.js +1 -0
- package/build/assets/agent-server-conversation-service.api-CORdqJZg.js +5 -0
- package/build/assets/{agent-settings-CnGSCmK8.js → agent-settings-UFvcGjoI.js} +1 -1
- package/build/assets/{alert-banner-DtzAX654.js → alert-banner-DFnn_lC6.js} +1 -1
- package/build/assets/{analytics-consent-form-modal-CHZ3I37v.js → analytics-consent-form-modal-CVNugqzu.js} +1 -1
- package/build/assets/api-key-entry-screen-M6su2VSf.js +1 -0
- package/build/assets/{app-settings-Db9ITeJH.js → app-settings-BlvBhBdc.js} +1 -1
- package/build/assets/automation-detail-BWrQk4Oa.js +1 -0
- package/build/assets/automations-list-ux9KvYsU.js +1 -0
- package/build/assets/back-nav-button-7dQJ2k3O.js +1 -0
- package/build/assets/backend-form-modal-CDnEYjaU.js +1 -0
- package/build/assets/{backend-synced-settings-badge-Dc6c7GT4.js → backend-synced-settings-badge-BTIj-Ffq.js} +1 -1
- package/build/assets/base-modal-C2oy2EBG.js +1 -0
- package/build/assets/brand-button-DJ_S16rO.js +1 -0
- package/build/assets/{browser-D810xUYt.js → browser-CGM-k-sH.js} +2 -2
- package/build/assets/browser-store-DAsixKdU.js +1 -0
- package/build/assets/{browser-tab-B-aIqXRl.js → browser-tab-dvSPdvkm.js} +1 -1
- package/build/assets/{checkmark-DL7acQA7.js → checkmark-Dus0b6jt.js} +1 -1
- package/build/assets/{chevron-left-small-CVWf8TI6.js → chevron-left-small-_uvG7RVM.js} +1 -1
- package/build/assets/{circle-plus-check-toggle-P7ZZToV4.js → circle-plus-check-toggle-DKS8MAVV.js} +1 -1
- package/build/assets/{close-B5LROHR3.js → close-BU5iTc66.js} +1 -1
- package/build/assets/code-tag-BzyqOtPD.js +1 -0
- package/build/assets/combobox-caret-BJC7XJsz.js +1 -0
- package/build/assets/{command-store-DFN_17p1.js → command-store-CE1weJy8.js} +1 -1
- package/build/assets/{condenser-settings-wnEKhBof.js → condenser-settings-BolbDvm5.js} +1 -1
- package/build/assets/{confirmation-modal-Dau3w_sa.js → confirmation-modal-B5Ca6qFE.js} +1 -1
- package/build/assets/context-menu-list-item-7tAcm2c3.js +1 -0
- package/build/assets/conversation-D0N4dw_p.js +19 -0
- package/build/assets/conversation-DhRJuZLG.js +1 -0
- package/build/assets/conversation-panel-CNqHbS_Z.js +1 -0
- package/build/assets/conversation-service.api-BsJy6uuL.js +1 -0
- package/build/assets/conversation-state-store-D-w0uurj.js +1 -0
- package/build/assets/conversation-store-CC-isCnP.js +1 -0
- package/build/assets/{conversation-tab-empty-state-DyssnnWa.js → conversation-tab-empty-state-CStQLPVW.js} +1 -1
- package/build/assets/conversation-websocket-context-DvHgx_FE.js +3 -0
- package/build/assets/{copy-DYgmUdIw.js → copy-Chg-sFu3.js} +1 -1
- package/build/assets/{custom-toast-handlers-C-SZFmto.js → custom-toast-handlers-ufGJ6_Rc.js} +1 -1
- package/build/assets/declaration-CR6HMp29.js +1 -0
- package/build/assets/{device-verify-DqDlphsG.js → device-verify-C6mj28zv.js} +1 -1
- package/build/assets/dist-DNeWJ2bh.js +1 -0
- package/build/assets/dropdown-classes-BsVmxlNG.js +1 -0
- package/build/assets/edit-automation-modal-BpX-t-HD.js +1 -0
- package/build/assets/ellipsis-button-Vh5MvRZa.js +1 -0
- package/build/assets/entry.client-Ck9rQCg-.js +2 -0
- package/build/assets/enum-filter-dropdown-5JeF2RLb.js +1 -0
- package/build/assets/{environment-switch-overlay-XL8yCGP6.js → environment-switch-overlay-Tf_BIfeR.js} +1 -1
- package/build/assets/extensions-hub-CE9QOb5n.js +1 -0
- package/build/assets/{extensions-navigation-BYR8Giqq.js → extensions-navigation-DSLGNGbS.js} +1 -1
- package/build/assets/file-BTY6Gyy9.js +1 -0
- package/build/assets/files-tab-cL668j1I.js +1 -0
- package/build/assets/files-tab-store-m0ARqX_E.js +1 -0
- package/build/assets/{folder-ZZJVGgd7.js → folder-D1T2W1cj.js} +1 -1
- package/build/assets/git-control-bar-branch-button-DtIrOrie.js +27 -0
- package/build/assets/git-provider-icon-CHdGBdU2.js +1 -0
- package/build/assets/globe-Bzj_0oXT.js +1 -0
- package/build/assets/home-Cz2Veg56.js +1 -0
- package/build/assets/{i18n-CTohRuoO.js → i18n-DET2iOyh.js} +1 -1
- package/build/assets/install-server-modal-B9nXCS3u.js +1 -0
- package/build/assets/launch-CWz0dm4o.js +1 -0
- package/build/assets/{lesson-plan-dH5Bj0pN.js → lesson-plan-duSsqWVs.js} +1 -1
- package/build/assets/link-external-DGxVm4Ps.js +1 -0
- package/build/assets/{llm-client-DaH1TuyR.js → llm-client-CYEaUjGx.js} +1 -1
- package/build/assets/llm-settings-DFkXHuvT.js +1 -0
- package/build/assets/llm-settings-DhrdCXqX.js +1 -0
- package/build/assets/{loading-spinner-BPtYORNK.js → loading-spinner-5GT9q1xy.js} +1 -1
- package/build/assets/manage-backends-modal-DpBD_vR9.js +1 -0
- package/build/assets/manage-workspaces-modal-CtRbxREx.js +1 -0
- package/build/assets/manifest-eed90ff5.js +1 -0
- package/build/assets/{markdown-renderer-DMzf2i4x.js → markdown-renderer-B3IAVfv4.js} +1 -1
- package/build/assets/mcp-BUe7kiYM.js +9 -0
- package/build/assets/messages-dqp_KYyl.js +36 -0
- package/build/assets/{modal-backdrop-BAbgYsqB.js → modal-backdrop-RfNCrSpK.js} +1 -1
- package/build/assets/{modal-body-BI6Ru2Qr.js → modal-body-aoa2fx5W.js} +1 -1
- package/build/assets/modal-classes-6YqcqA6y.js +1 -0
- package/build/assets/{modal-close-button-t1Gh3qmL.js → modal-close-button-CtWOUMmw.js} +1 -1
- package/build/assets/{model-selector-SM9IUz-q.js → model-selector-BvSTrkhT.js} +1 -1
- package/build/assets/{navigation-context-D0YWpT8d.js → navigation-context-BdKYH32C.js} +1 -1
- package/build/assets/{navigation-link-Cn7KP3c5.js → navigation-link-U4vY9i_C.js} +1 -1
- package/build/assets/{openhands-logo-CnrF6LKb.js → openhands-logo-CCo0wJZX.js} +1 -1
- package/build/assets/{option-service.api-KvY_mZMY.js → option-service.api-DmNVxAvS.js} +1 -1
- package/build/assets/{organization-service.api-DzYTHTYC.js → organization-service.api-DbnougaQ.js} +1 -1
- package/build/assets/{path-utils-C3bQf6lJ.js → path-utils-onx24uF5.js} +1 -1
- package/build/assets/{plan-components-atxXCF0R.js → plan-components-CRDMQzsS.js} +1 -1
- package/build/assets/{planner-tab-BlrCpv-7.js → planner-tab-CmIjLz7q.js} +1 -1
- package/build/assets/{profiles-client-D6IkTJof.js → profiles-client-fEmgWkCW.js} +1 -1
- package/build/assets/{providers-Bx6EfrzZ.js → providers-CbD7fiic.js} +1 -1
- package/build/assets/proxy-BAdHH8QB.js +1 -0
- package/build/assets/{query-client-config-B7u9asM0.js → query-client-config-CRnGSujB.js} +1 -1
- package/build/assets/{recommended-automations-launcher-BQChv2rc.js → recommended-automations-launcher-uTyODuzB.js} +3 -3
- package/build/assets/{root-BgEbw3S0.js → root-DmjpFpTu.js} +2 -2
- package/build/assets/root-Z2VHU4R3.css +1 -0
- package/build/assets/root-layout-DejMsKhy.js +2 -0
- package/build/assets/{sdk-section-page-DOIKvwSL.js → sdk-section-page-BgDlMhcq.js} +1 -1
- package/build/assets/{sdk-settings-schema-DsUf9wu1.js → sdk-settings-schema-CLmJ9sho.js} +1 -1
- package/build/assets/{search-27Owlc3A.js → search-SuJctqNJ.js} +1 -1
- package/build/assets/secrets-service-B7CxNinp.js +1 -0
- package/build/assets/secrets-settings-yK7CqIpm.js +1 -0
- package/build/assets/{server-client-DyAQ3NZ_.js → server-client-Kh4QSwDJ.js} +1 -1
- package/build/assets/{settings-BYkVX7vW.js → settings-DN5PpgRD.js} +1 -1
- package/build/assets/{settings-dropdown-input-BJYvGdg-.js → settings-dropdown-input-BtoovFre.js} +1 -1
- package/build/assets/{settings-gear-C77PgE_O.js → settings-gear-Dd8K2_8B.js} +1 -1
- package/build/assets/settings-index-DKC8IY1P.js +1 -0
- package/build/assets/{settings-input-Bn7F5C75.js → settings-input-CehsXnb3.js} +1 -1
- package/build/assets/settings-list-classes-E3v_f6QG.js +1 -0
- package/build/assets/settings-modal-DJ4kGzUx.js +1 -0
- package/build/assets/{settings-section-header-context-BgZe5YkE.js → settings-section-header-context-DewwJ0-F.js} +1 -1
- package/build/assets/settings-service.api-C3rxTtPj.js +1 -0
- package/build/assets/{settings-switch-BeIKrWms.js → settings-switch-BiBuS3xa.js} +1 -1
- package/build/assets/{settings-utils-B6Nl07io.js → settings-utils-DY04tWG1.js} +1 -1
- package/build/assets/{shared-conversation-AMyqXvpk.js → shared-conversation-h9YnBtCU.js} +1 -1
- package/build/assets/sidebar-mobile-menu-toggle-D0-AvsnT.js +1 -0
- package/build/assets/{sidebar-nav-link-BGjiJq-4.js → sidebar-nav-link-OhIeFyna.js} +1 -1
- package/build/assets/{sidebar-store-Uy3v0AOV.js → sidebar-store-DnQAJAE5.js} +1 -1
- package/build/assets/{skill-card-pill-row-DF1axQCG.js → skill-card-pill-row-BW9qvhoK.js} +1 -1
- package/build/assets/{skills-ChIKZPK4.js → skills-0GRKX5Xj.js} +1 -1
- package/build/assets/{skills-plugins-CcI_19lM.js → skills-plugins-DNcsNF88.js} +1 -1
- package/build/assets/skills-settings-7liFiSY6.js +2 -0
- package/build/assets/{styled-tooltip-CBzrri6o.js → styled-tooltip-hdfMXPQC.js} +1 -1
- package/build/assets/{switch-skeleton-DnC9wLp7.js → switch-skeleton-DSKqSx2A.js} +1 -1
- package/build/assets/{task-list-tab-DUJn1sgz.js → task-list-tab-DT6_zfUs.js} +1 -1
- package/build/assets/{terminal-DgQk1Ay6.js → terminal-CDhQGDua.js} +2 -2
- package/build/assets/{terminal-RmuaSdhJ.js → terminal-CPYWdo4j.js} +1 -1
- package/build/assets/{toggle-switch-Pvyp2RAN.js → toggle-switch-T2v6sJ6l.js} +1 -1
- package/build/assets/{typography-gpuWmrQO.js → typography-BDgnT7Yp.js} +1 -1
- package/build/assets/{u-check-circle-IUIfACQQ.js → u-check-circle-DOauqQKb.js} +1 -1
- package/build/assets/{u-check-circle-half-C1YxB6py.js → u-check-circle-half-steSK_JB.js} +1 -1
- package/build/assets/{u-circuit-BmVikJHu.js → u-circuit-x3ExjBbU.js} +1 -1
- package/build/assets/{u-edit-CFvXHqZk.js → u-edit-BbrptMCa.js} +1 -1
- package/build/assets/{use-active-conversation-BEFNwnFk.js → use-active-conversation-DHGcmjCK.js} +1 -1
- package/build/assets/use-agent-settings-schema-CLoTOSJI.js +1 -0
- package/build/assets/{use-agent-state-Bkrd1FZq.js → use-agent-state-PKrUPMJ3.js} +1 -1
- package/build/assets/{use-cloud-current-user-id-CvkXFnTT.js → use-cloud-current-user-id-Ddr75hEz.js} +1 -1
- package/build/assets/{use-config-Co1O8-Ey.js → use-config-OIMQLQ2s.js} +1 -1
- package/build/assets/{use-create-conversation-CEgXpkfH.js → use-create-conversation-Bszyp13O.js} +1 -1
- package/build/assets/{use-event-store-BT_gV3ut.js → use-event-store-BomO7ywK.js} +1 -1
- package/build/assets/{use-get-secrets-DuhdIA59.js → use-get-secrets-8Jby8ele.js} +1 -1
- package/build/assets/{use-handle-plan-click-Ckkm5eIY.js → use-handle-plan-click-CohJPvvW.js} +1 -1
- package/build/assets/use-is-authed-dw2026rR.js +1 -0
- package/build/assets/{use-is-creating-conversation-BZ5hB_Bg.js → use-is-creating-conversation-DX2qSlfL.js} +1 -1
- package/build/assets/{use-launch-skill-in-chat-fNN_xGZG.js → use-launch-skill-in-chat-sQNEOLGD.js} +1 -1
- package/build/assets/use-llm-profiles-C861aFAq.js +1 -0
- package/build/assets/use-runtime-is-ready-Do2h_hRl.js +1 -0
- package/build/assets/{use-save-settings-VUrj_QNG.js → use-save-settings-DkAOEfD9.js} +1 -1
- package/build/assets/use-settings-D5hbTS9t.js +1 -0
- package/build/assets/{use-settings-nav-items-1ZvovKSr.js → use-settings-nav-items-BcSbo02d.js} +1 -1
- package/build/assets/{use-skills-DAMLFjKU.js → use-skills-D7PS0fH0.js} +1 -1
- package/build/assets/{use-task-list-CLJbuJgM.js → use-task-list-CsT10CBb.js} +1 -1
- package/build/assets/{use-unified-vscode-url-DdSRw-6P.js → use-unified-vscode-url-DEoe-NRI.js} +1 -1
- package/build/assets/use-user-conversation-Cs5H1pUF.js +1 -0
- package/build/assets/{useMutation-DqrumCWD.js → useMutation-GSSKKebK.js} +1 -1
- package/build/assets/{useTranslation-DCOdSSMl.js → useTranslation-B6voJV4y.js} +1 -1
- package/build/assets/utils-DCVfKFRt.js +1 -0
- package/build/assets/{vendor~browser-BNjNhjFU.js → vendor~browser-BrOJLj3y.js} +1 -1
- package/build/assets/vendor~conversation-panel~conversation-C9o-K1hW.js +1 -0
- package/build/assets/vendor~conversation-panel~conversation~index-RXYdJYxU.js +1 -0
- package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~jfc6hidu-VnmIZrq3.js → vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~jfc6hidu-DJS-rJdI.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DpAdkv8m.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-6ByzelMS.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-B92czPCF.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BED5W_c4.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-By5W2oHN.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CCbqAFiI.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BbFOrAjI.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CG96FCly.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-smY2r837.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-E4d6IEfI.js} +1 -1
- package/build/assets/vendor~home~mcp~automations-list-CZSK-lT2.js +1 -0
- package/build/assets/{vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-Z3nsiNNq.js → vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-CjJdFLoM.js} +1 -1
- package/build/assets/{vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-DbfELDJu.js → vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-m8dOii0J.js} +2 -2
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation-DjAjXS5J.js → vendor~root-layout~home~conversation-panel~conversation-B5WNMnt4.js} +1 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~i4kjfqhl-CbAhtEMv.js +1 -0
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-6Rm8U_Sr.js +9 -0
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-BkQGKpye.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-tTR8C6m0.js} +1 -1
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~k776hupu-Bbs7UJ5U.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~k776hupu-BJbu9kpL.js} +2 -2
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~dp08i1qy-DTwbEEcX.js → vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~dp08i1qy-hTzSytKK.js} +1 -1
- package/build/assets/{vendor~root~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-s~f2l2lr17-CDXvdvb2.js → vendor~root~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-s~f2l2lr17-DYXOLEck.js} +1 -1
- package/build/assets/{verification-settings-CsbvQcYS.js → verification-settings-Dlt8pINd.js} +1 -1
- package/build/assets/{vscode-tab-DjNArCgY.js → vscode-tab-DgepcYtF.js} +1 -1
- package/build/assets/{waiting-for-runtime-message-CntjExbU.js → waiting-for-runtime-message-CdK3btDZ.js} +1 -1
- package/build/assets/{x-mark-CrpjscNc.js → x-mark-BrkSPIiT.js} +1 -1
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +20 -2
- package/build/locales/ca/openhands.json +20 -2
- package/build/locales/de/openhands.json +20 -2
- package/build/locales/en/openhands.json +20 -2
- package/build/locales/es/openhands.json +20 -2
- package/build/locales/fr/openhands.json +20 -2
- package/build/locales/it/openhands.json +20 -2
- package/build/locales/ja/openhands.json +20 -2
- package/build/locales/ko-KR/openhands.json +20 -2
- package/build/locales/no/openhands.json +20 -2
- package/build/locales/pt/openhands.json +20 -2
- package/build/locales/tr/openhands.json +20 -2
- package/build/locales/uk/openhands.json +20 -2
- package/build/locales/zh-CN/openhands.json +20 -2
- package/build/locales/zh-TW/openhands.json +20 -2
- package/dist/api/acp-service/acp-service.api.d.ts +18 -0
- package/dist/api/agent-server-adapter.cjs +3 -3
- package/dist/api/agent-server-adapter.cjs.map +1 -1
- package/dist/api/agent-server-adapter.js +54 -55
- package/dist/api/agent-server-adapter.js.map +1 -1
- package/dist/api/agent-server-client-options.cjs +1 -1
- package/dist/api/agent-server-client-options.cjs.map +1 -1
- package/dist/api/agent-server-client-options.d.ts +4 -0
- package/dist/api/agent-server-client-options.js +18 -12
- package/dist/api/agent-server-client-options.js.map +1 -1
- package/dist/api/agent-server-compatibility.cjs +1 -1
- package/dist/api/agent-server-compatibility.cjs.map +1 -1
- package/dist/api/agent-server-compatibility.d.ts +1 -1
- package/dist/api/agent-server-compatibility.js +30 -25
- package/dist/api/agent-server-compatibility.js.map +1 -1
- package/dist/api/agent-server-config.cjs +1 -1
- package/dist/api/agent-server-config.cjs.map +1 -1
- package/dist/api/agent-server-config.d.ts +1 -51
- package/dist/api/agent-server-config.js +20 -70
- package/dist/api/agent-server-config.js.map +1 -1
- package/dist/api/backend-registry/active-store.cjs +1 -1
- package/dist/api/backend-registry/active-store.cjs.map +1 -1
- package/dist/api/backend-registry/active-store.d.ts +11 -5
- package/dist/api/backend-registry/active-store.js +36 -27
- package/dist/api/backend-registry/active-store.js.map +1 -1
- package/dist/api/backend-registry/auth.cjs +1 -1
- package/dist/api/backend-registry/auth.cjs.map +1 -1
- package/dist/api/backend-registry/auth.js +3 -9
- package/dist/api/backend-registry/auth.js.map +1 -1
- package/dist/api/backend-registry/default-backend.cjs +1 -1
- package/dist/api/backend-registry/default-backend.cjs.map +1 -1
- package/dist/api/backend-registry/default-backend.d.ts +9 -16
- package/dist/api/backend-registry/default-backend.js +5 -4
- package/dist/api/backend-registry/default-backend.js.map +1 -1
- package/dist/api/backend-registry/storage.cjs +1 -1
- package/dist/api/backend-registry/storage.cjs.map +1 -1
- package/dist/api/backend-registry/storage.js +67 -34
- package/dist/api/backend-registry/storage.js.map +1 -1
- package/dist/api/cloud/conversation-service.api.cjs.map +1 -1
- package/dist/api/cloud/conversation-service.api.d.ts +8 -13
- package/dist/api/cloud/conversation-service.api.js.map +1 -1
- package/dist/api/cloud/organization-service.api.cjs.map +1 -1
- package/dist/api/cloud/organization-service.api.d.ts +1 -2
- package/dist/api/cloud/organization-service.api.js.map +1 -1
- package/dist/api/cloud/proxy.cjs +1 -1
- package/dist/api/cloud/proxy.cjs.map +1 -1
- package/dist/api/cloud/proxy.d.ts +6 -6
- package/dist/api/cloud/proxy.js +33 -24
- package/dist/api/cloud/proxy.js.map +1 -1
- package/dist/api/cloud/sandbox-service.api.cjs.map +1 -1
- package/dist/api/cloud/sandbox-service.api.d.ts +3 -3
- package/dist/api/cloud/sandbox-service.api.js.map +1 -1
- package/dist/api/cloud/secrets-service.api.cjs.map +1 -1
- package/dist/api/cloud/secrets-service.api.d.ts +3 -4
- package/dist/api/cloud/secrets-service.api.js.map +1 -1
- package/dist/api/cloud/settings-service.api.cjs +1 -1
- package/dist/api/cloud/settings-service.api.cjs.map +1 -1
- package/dist/api/cloud/settings-service.api.js +5 -1
- package/dist/api/cloud/settings-service.api.js.map +1 -1
- package/dist/api/cloud/skills-service.api.cjs.map +1 -1
- package/dist/api/cloud/skills-service.api.d.ts +5 -5
- package/dist/api/cloud/skills-service.api.js.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +115 -108
- package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
- package/dist/api/device-flow-client.cjs +1 -1
- package/dist/api/device-flow-client.cjs.map +1 -1
- package/dist/api/device-flow-client.d.ts +3 -5
- package/dist/api/device-flow-client.js +55 -66
- package/dist/api/device-flow-client.js.map +1 -1
- package/dist/api/event-service/event-service.api.cjs +1 -1
- package/dist/api/event-service/event-service.api.cjs.map +1 -1
- package/dist/api/event-service/event-service.api.d.ts +3 -3
- package/dist/api/event-service/event-service.api.js +17 -17
- package/dist/api/event-service/event-service.api.js.map +1 -1
- package/dist/api/git-service/agent-server-git-service.api.cjs +1 -1
- package/dist/api/git-service/agent-server-git-service.api.js +11 -11
- package/dist/api/runtime-service/agent-server-runtime-service.cjs +1 -1
- package/dist/api/runtime-service/agent-server-runtime-service.js +6 -6
- package/dist/components/conversation-events/chat/event-content-helpers/get-action-content.cjs +2 -2
- package/dist/components/conversation-events/chat/event-content-helpers/get-action-content.js +10 -10
- package/dist/components/conversation-events/chat/event-content-helpers/get-observation-result.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-observation-result.d.ts +5 -5
- package/dist/components/conversation-events/chat/event-content-helpers/get-observation-result.js.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.cjs +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.js +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.js.map +1 -1
- package/dist/components/features/automations/automation-action-button-classes.d.ts +2 -2
- package/dist/components/features/backends/backend-form-modal.cjs +1 -1
- package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
- package/dist/components/features/backends/backend-form-modal.d.ts +1 -0
- package/dist/components/features/backends/backend-form-modal.js +203 -140
- package/dist/components/features/backends/backend-form-modal.js.map +1 -1
- package/dist/components/features/backends/backend-selector.cjs +1 -1
- package/dist/components/features/backends/backend-selector.cjs.map +1 -1
- package/dist/components/features/backends/backend-selector.js +117 -105
- package/dist/components/features/backends/backend-selector.js.map +1 -1
- package/dist/components/features/backends/backend-status-dot.cjs +1 -1
- package/dist/components/features/backends/backend-status-dot.cjs.map +1 -1
- package/dist/components/features/backends/backend-status-dot.d.ts +1 -1
- package/dist/components/features/backends/backend-status-dot.js +1 -1
- package/dist/components/features/backends/backend-status-dot.js.map +1 -1
- package/dist/components/features/backends/manage-backends-modal.cjs +1 -1
- package/dist/components/features/backends/manage-backends-modal.cjs.map +1 -1
- package/dist/components/features/backends/manage-backends-modal.js +81 -70
- package/dist/components/features/backends/manage-backends-modal.js.map +1 -1
- package/dist/components/features/chat/change-agent-button.cjs +1 -1
- package/dist/components/features/chat/change-agent-button.cjs.map +1 -1
- package/dist/components/features/chat/change-agent-button.js +59 -57
- package/dist/components/features/chat/change-agent-button.js.map +1 -1
- package/dist/components/features/chat/change-agent-context-menu.cjs +1 -1
- package/dist/components/features/chat/change-agent-context-menu.cjs.map +1 -1
- package/dist/components/features/chat/change-agent-context-menu.d.ts +3 -1
- package/dist/components/features/chat/change-agent-context-menu.js +30 -25
- package/dist/components/features/chat/change-agent-context-menu.js.map +1 -1
- package/dist/components/features/chat/chat-add-file-button.cjs +1 -1
- package/dist/components/features/chat/chat-add-file-button.cjs.map +1 -1
- package/dist/components/features/chat/chat-add-file-button.js +39 -38
- package/dist/components/features/chat/chat-add-file-button.js.map +1 -1
- package/dist/components/features/chat/chat-message.cjs +1 -1
- package/dist/components/features/chat/chat-message.cjs.map +1 -1
- package/dist/components/features/chat/chat-message.d.ts +2 -1
- package/dist/components/features/chat/chat-message.js +185 -57
- package/dist/components/features/chat/chat-message.js.map +1 -1
- package/dist/components/features/chat/components/chat-input-actions.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-actions.cjs.map +1 -1
- package/dist/components/features/chat/components/chat-input-actions.js +113 -113
- package/dist/components/features/chat/components/chat-input-actions.js.map +1 -1
- package/dist/components/features/chat/components/chat-input-model.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-model.cjs.map +1 -1
- package/dist/components/features/chat/components/chat-input-model.js +52 -51
- package/dist/components/features/chat/components/chat-input-model.js.map +1 -1
- package/dist/components/features/chat/components/slash-command-menu.cjs +2 -2
- package/dist/components/features/chat/components/slash-command-menu.cjs.map +1 -1
- package/dist/components/features/chat/components/slash-command-menu.js +38 -34
- package/dist/components/features/chat/components/slash-command-menu.js.map +1 -1
- package/dist/components/features/chat/git-control-bar-pr-button.cjs +1 -1
- package/dist/components/features/chat/git-control-bar-pr-button.cjs.map +1 -1
- package/dist/components/features/chat/git-control-bar-pr-button.js +16 -15
- package/dist/components/features/chat/git-control-bar-pr-button.js.map +1 -1
- package/dist/components/features/chat/git-control-bar-pull-button.cjs +1 -1
- package/dist/components/features/chat/git-control-bar-pull-button.cjs.map +1 -1
- package/dist/components/features/chat/git-control-bar-pull-button.js +16 -15
- package/dist/components/features/chat/git-control-bar-pull-button.js.map +1 -1
- package/dist/components/features/chat/git-control-bar-push-button.cjs +1 -1
- package/dist/components/features/chat/git-control-bar-push-button.cjs.map +1 -1
- package/dist/components/features/chat/git-control-bar-push-button.js +16 -15
- package/dist/components/features/chat/git-control-bar-push-button.js.map +1 -1
- package/dist/components/features/chat/git-control-bar.cjs +1 -1
- package/dist/components/features/chat/git-control-bar.cjs.map +1 -1
- package/dist/components/features/chat/git-control-bar.js +63 -62
- package/dist/components/features/chat/git-control-bar.js.map +1 -1
- package/dist/components/features/chat/pending-user-messages.cjs +1 -1
- package/dist/components/features/chat/pending-user-messages.cjs.map +1 -1
- package/dist/components/features/chat/pending-user-messages.js +27 -23
- package/dist/components/features/chat/pending-user-messages.js.map +1 -1
- package/dist/components/features/chat/switch-profile-button.cjs +1 -1
- package/dist/components/features/chat/switch-profile-button.cjs.map +1 -1
- package/dist/components/features/chat/switch-profile-button.js +26 -25
- package/dist/components/features/chat/switch-profile-button.js.map +1 -1
- package/dist/components/features/chat/switch-profile-context-menu.cjs +1 -1
- package/dist/components/features/chat/switch-profile-context-menu.cjs.map +1 -1
- package/dist/components/features/chat/switch-profile-context-menu.js +77 -67
- package/dist/components/features/chat/switch-profile-context-menu.js.map +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.cjs +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.cjs.map +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.d.ts +2 -1
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.js +3 -2
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.js.map +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text.cjs +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text.cjs.map +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text.d.ts +2 -1
- package/dist/components/features/context-menu/context-menu-icon-text.js +20 -10
- package/dist/components/features/context-menu/context-menu-icon-text.js.map +1 -1
- package/dist/components/features/context-menu/context-menu-list-item.cjs +1 -1
- package/dist/components/features/context-menu/context-menu-list-item.cjs.map +1 -1
- package/dist/components/features/context-menu/context-menu-list-item.js +10 -9
- package/dist/components/features/context-menu/context-menu-list-item.js.map +1 -1
- package/dist/components/features/controls/agent-status.cjs +1 -1
- package/dist/components/features/controls/agent-status.js +12 -12
- package/dist/components/features/controls/git-tools-submenu.cjs +1 -1
- package/dist/components/features/controls/git-tools-submenu.cjs.map +1 -1
- package/dist/components/features/controls/git-tools-submenu.js +1 -1
- package/dist/components/features/controls/git-tools-submenu.js.map +1 -1
- package/dist/components/features/controls/macros-submenu.cjs +1 -1
- package/dist/components/features/controls/macros-submenu.cjs.map +1 -1
- package/dist/components/features/controls/macros-submenu.js +1 -1
- package/dist/components/features/controls/macros-submenu.js.map +1 -1
- package/dist/components/features/controls/server-status-context-menu-icon-text.cjs +1 -1
- package/dist/components/features/controls/server-status-context-menu-icon-text.cjs.map +1 -1
- package/dist/components/features/controls/server-status-context-menu-icon-text.js +14 -15
- package/dist/components/features/controls/server-status-context-menu-icon-text.js.map +1 -1
- package/dist/components/features/controls/server-status-context-menu.cjs +1 -1
- package/dist/components/features/controls/server-status-context-menu.js +4 -4
- package/dist/components/features/controls/server-status.cjs +1 -1
- package/dist/components/features/controls/server-status.js +7 -7
- package/dist/components/features/controls/tools-context-menu-icon-text.cjs +1 -1
- package/dist/components/features/controls/tools-context-menu-icon-text.cjs.map +1 -1
- package/dist/components/features/controls/tools-context-menu-icon-text.js +16 -16
- package/dist/components/features/controls/tools-context-menu-icon-text.js.map +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu-icon-text.cjs +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu-icon-text.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu-icon-text.js +11 -11
- package/dist/components/features/conversation/conversation-name-context-menu-icon-text.js.map +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.cjs +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.js +11 -11
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js +60 -47
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.js +86 -82
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js +4 -4
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.js +9 -9
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js +93 -93
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.js +177 -177
- package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
- package/dist/components/features/conversation-panel/ellipsis-button.cjs +1 -1
- package/dist/components/features/conversation-panel/ellipsis-button.cjs.map +1 -1
- package/dist/components/features/conversation-panel/ellipsis-button.js +13 -13
- package/dist/components/features/conversation-panel/ellipsis-button.js.map +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.js +57 -53
- package/dist/components/features/conversation-panel/local-new-conversation-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/new-conversation-dropdown-styles.cjs +1 -1
- package/dist/components/features/conversation-panel/new-conversation-dropdown-styles.cjs.map +1 -1
- package/dist/components/features/conversation-panel/new-conversation-dropdown-styles.js +3 -2
- package/dist/components/features/conversation-panel/new-conversation-dropdown-styles.js.map +1 -1
- package/dist/components/features/conversation-panel/start-task-card/start-task-status-badge.cjs +1 -1
- package/dist/components/features/conversation-panel/start-task-card/start-task-status-badge.cjs.map +1 -1
- package/dist/components/features/conversation-panel/start-task-card/start-task-status-badge.js +11 -8
- package/dist/components/features/conversation-panel/start-task-card/start-task-status-badge.js.map +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/tab-content.cjs.map +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/tab-content.d.ts +2 -5
- package/dist/components/features/conversation-panel/system-message-modal/tab-content.js.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.js +45 -42
- package/dist/components/features/files-tab/file-content-viewer.js.map +1 -1
- package/dist/components/features/home/llm-not-configured-banner.d.ts +11 -0
- package/dist/components/features/home/shared/dropdown-item.cjs +1 -1
- package/dist/components/features/home/shared/dropdown-item.cjs.map +1 -1
- package/dist/components/features/home/shared/dropdown-item.js +20 -16
- package/dist/components/features/home/shared/dropdown-item.js.map +1 -1
- package/dist/components/features/home/shared/generic-dropdown-menu.cjs +1 -1
- package/dist/components/features/home/shared/generic-dropdown-menu.cjs.map +1 -1
- package/dist/components/features/home/shared/generic-dropdown-menu.js +23 -22
- package/dist/components/features/home/shared/generic-dropdown-menu.js.map +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.cjs +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.cjs.map +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.js +103 -102
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.js.map +1 -1
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.cjs +1 -1
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.cjs.map +1 -1
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.js +68 -67
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.js.map +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.cjs +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.cjs.map +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.js +62 -60
- package/dist/components/features/mcp-page/custom-server-editor.js.map +1 -1
- package/dist/components/features/mcp-page/index.cjs +1 -1
- package/dist/components/features/mcp-page/index.d.ts +1 -0
- package/dist/components/features/mcp-page/index.js +1 -0
- package/dist/components/features/mcp-page/install-server-modal.cjs +1 -1
- package/dist/components/features/mcp-page/install-server-modal.cjs.map +1 -1
- package/dist/components/features/mcp-page/install-server-modal.js +150 -119
- package/dist/components/features/mcp-page/install-server-modal.js.map +1 -1
- package/dist/components/features/mcp-page/save-as-secret-toggle.cjs +2 -0
- package/dist/components/features/mcp-page/save-as-secret-toggle.cjs.map +1 -0
- package/dist/components/features/mcp-page/save-as-secret-toggle.d.ts +7 -0
- package/dist/components/features/mcp-page/save-as-secret-toggle.js +50 -0
- package/dist/components/features/mcp-page/save-as-secret-toggle.js.map +1 -0
- package/dist/components/features/onboarding/onboarding-modal.d.ts +2 -2
- package/dist/components/features/onboarding/steps/check-backend-step.d.ts +1 -1
- package/dist/components/features/onboarding/steps/choose-agent-step.d.ts +2 -1
- package/dist/components/features/onboarding/steps/setup-acp-secrets-step.d.ts +19 -10
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.d.ts +5 -0
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.js +2 -0
- package/dist/components/features/settings/llm-profiles/profile-actions-menu.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/profile-actions-menu.js +1 -0
- package/dist/components/features/skills/extensions-navigation.cjs +1 -1
- package/dist/components/features/skills/extensions-navigation.cjs.map +1 -1
- package/dist/components/features/skills/extensions-navigation.js +1 -1
- package/dist/components/features/skills/extensions-navigation.js.map +1 -1
- package/dist/components/shared/buttons/back-nav-button.cjs +2 -0
- package/dist/components/shared/buttons/back-nav-button.cjs.map +1 -0
- package/dist/components/shared/buttons/back-nav-button.d.ts +17 -0
- package/dist/components/shared/buttons/back-nav-button.js +33 -0
- package/dist/components/shared/buttons/back-nav-button.js.map +1 -0
- package/dist/components/shared/buttons/conversation-confirmation-buttons.cjs +1 -1
- package/dist/components/shared/buttons/conversation-confirmation-buttons.js +5 -5
- package/dist/components/shared/filters/enum-filter-dropdown.cjs +1 -1
- package/dist/components/shared/filters/enum-filter-dropdown.cjs.map +1 -1
- package/dist/components/shared/filters/enum-filter-dropdown.js +32 -31
- package/dist/components/shared/filters/enum-filter-dropdown.js.map +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.cjs +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.cjs.map +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.js +14 -13
- package/dist/components/shared/modals/confirmation-modals/base-modal.js.map +1 -1
- package/dist/components/shared/modals/settings/settings-modal.cjs +1 -1
- package/dist/components/shared/modals/settings/settings-modal.cjs.map +1 -1
- package/dist/components/shared/modals/settings/settings-modal.js +17 -16
- package/dist/components/shared/modals/settings/settings-modal.js.map +1 -1
- package/dist/components/shared/text-shimmer.cjs +2 -0
- package/dist/components/shared/text-shimmer.cjs.map +1 -0
- package/dist/components/shared/text-shimmer.d.ts +11 -0
- package/dist/components/shared/text-shimmer.js +43 -0
- package/dist/components/shared/text-shimmer.js.map +1 -0
- package/dist/constants/acp-providers.cjs +1 -1
- package/dist/constants/acp-providers.cjs.map +1 -1
- package/dist/constants/acp-providers.d.ts +16 -3
- package/dist/constants/acp-providers.js +0 -1
- package/dist/constants/acp-providers.js.map +1 -1
- package/dist/contexts/active-backend-context.cjs +1 -1
- package/dist/contexts/active-backend-context.cjs.map +1 -1
- package/dist/contexts/active-backend-context.js +32 -32
- package/dist/contexts/active-backend-context.js.map +1 -1
- package/dist/hooks/chat/use-chat-input-logic.cjs +1 -1
- package/dist/hooks/chat/use-chat-input-logic.cjs.map +1 -1
- package/dist/hooks/chat/use-chat-input-logic.js +13 -6
- package/dist/hooks/chat/use-chat-input-logic.js.map +1 -1
- package/dist/hooks/mutation/use-save-fields-as-secrets.cjs +2 -0
- package/dist/hooks/mutation/use-save-fields-as-secrets.cjs.map +1 -0
- package/dist/hooks/mutation/use-save-fields-as-secrets.d.ts +9 -0
- package/dist/hooks/mutation/use-save-fields-as-secrets.js +24 -0
- package/dist/hooks/mutation/use-save-fields-as-secrets.js.map +1 -0
- package/dist/hooks/mutation/use-unified-start-conversation.cjs +1 -1
- package/dist/hooks/mutation/use-unified-start-conversation.js +8 -8
- package/dist/hooks/mutation/use-unified-stop-conversation.cjs +1 -1
- package/dist/hooks/mutation/use-unified-stop-conversation.js +15 -15
- package/dist/hooks/query/use-acp-auth-status.d.ts +36 -0
- package/dist/hooks/query/use-agent-settings-schema.cjs +1 -1
- package/dist/hooks/query/use-agent-settings-schema.cjs.map +1 -1
- package/dist/hooks/query/use-agent-settings-schema.js +26 -16
- package/dist/hooks/query/use-agent-settings-schema.js.map +1 -1
- package/dist/hooks/query/use-backends-health.cjs +1 -1
- package/dist/hooks/query/use-backends-health.cjs.map +1 -1
- package/dist/hooks/query/use-backends-health.d.ts +2 -0
- package/dist/hooks/query/use-backends-health.js +31 -21
- package/dist/hooks/query/use-backends-health.js.map +1 -1
- package/dist/hooks/query/use-paginated-conversations.cjs +1 -1
- package/dist/hooks/query/use-paginated-conversations.cjs.map +1 -1
- package/dist/hooks/query/use-paginated-conversations.js +15 -14
- package/dist/hooks/query/use-paginated-conversations.js.map +1 -1
- package/dist/hooks/query/use-settings.cjs +1 -1
- package/dist/hooks/query/use-settings.cjs.map +1 -1
- package/dist/hooks/query/use-settings.js +65 -52
- package/dist/hooks/query/use-settings.js.map +1 -1
- package/dist/hooks/query/use-user-conversation.cjs +1 -1
- package/dist/hooks/query/use-user-conversation.cjs.map +1 -1
- package/dist/hooks/query/use-user-conversation.js +20 -11
- package/dist/hooks/query/use-user-conversation.js.map +1 -1
- package/dist/hooks/use-agent-state.cjs +1 -1
- package/dist/hooks/use-agent-state.js +13 -13
- package/dist/hooks/use-conversation-name-context-menu.cjs +1 -1
- package/dist/hooks/use-conversation-name-context-menu.js +10 -10
- package/dist/hooks/use-conversation-name-context-menu.js.map +1 -1
- package/dist/hooks/use-llm-configured.d.ts +25 -0
- package/dist/hooks/use-runtime-is-ready.cjs +1 -1
- package/dist/hooks/use-runtime-is-ready.js +5 -5
- package/dist/i18n/declaration.cjs +1 -1
- package/dist/i18n/declaration.cjs.map +1 -1
- package/dist/i18n/declaration.d.ts +19 -1
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +3 -3
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +321 -15
- package/dist/i18n/translation.js.map +1 -1
- package/dist/icons/stop-circle.cjs +1 -1
- package/dist/icons/stop-circle.cjs.map +1 -1
- package/dist/icons/stop-circle.js +7 -10
- package/dist/icons/stop-circle.js.map +1 -1
- package/dist/locales/ar/openhands.json +20 -2
- package/dist/locales/ca/openhands.json +20 -2
- package/dist/locales/de/openhands.json +20 -2
- package/dist/locales/en/openhands.json +20 -2
- package/dist/locales/es/openhands.json +20 -2
- package/dist/locales/fr/openhands.json +20 -2
- package/dist/locales/it/openhands.json +20 -2
- package/dist/locales/ja/openhands.json +20 -2
- package/dist/locales/ko-KR/openhands.json +20 -2
- package/dist/locales/no/openhands.json +20 -2
- package/dist/locales/pt/openhands.json +20 -2
- package/dist/locales/tr/openhands.json +20 -2
- package/dist/locales/uk/openhands.json +20 -2
- package/dist/locales/zh-CN/openhands.json +20 -2
- package/dist/locales/zh-TW/openhands.json +20 -2
- package/dist/node_modules/@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 +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/apify.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/apify.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/apify.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/apify.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/brave-search.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/brave-search.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/brave-search.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/brave-search.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickhouse.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickhouse.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickhouse.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickhouse.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/elevenlabs.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/elevenlabs.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/elevenlabs.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/elevenlabs.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/exa.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/exa.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/exa.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/exa.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 +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/firecrawl.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/firecrawl.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/firecrawl.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/firecrawl.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 +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/kagi.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/kagi.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/kagi.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/kagi.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mongodb.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mongodb.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mongodb.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mongodb.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/neon.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/neon.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/neon.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/neon.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 +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/obsidian.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/obsidian.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/obsidian.js +2 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/obsidian.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/redis.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/redis.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/redis.js +2 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/redis.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/resend.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/resend.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/resend.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/resend.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 +8 -7
- package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.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 +2 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/tavily.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/tavily.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/tavily.js +4 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/tavily.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.cjs +2 -0
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.cjs.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js +15 -0
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js.map +1 -0
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +2 -2
- package/dist/package.js.map +1 -1
- package/dist/routes/conversation.cjs +1 -1
- package/dist/routes/conversation.cjs.map +1 -1
- package/dist/routes/conversation.js +1 -1
- package/dist/routes/conversation.js.map +1 -1
- package/dist/routes/llm-settings.cjs +1 -1
- package/dist/routes/llm-settings.cjs.map +1 -1
- package/dist/routes/llm-settings.js +55 -54
- package/dist/routes/llm-settings.js.map +1 -1
- package/dist/routes/secrets-settings.cjs +1 -1
- package/dist/routes/secrets-settings.cjs.map +1 -1
- package/dist/routes/secrets-settings.js +19 -27
- package/dist/routes/secrets-settings.js.map +1 -1
- package/dist/stores/conversation-store.cjs +1 -1
- package/dist/stores/conversation-store.cjs.map +1 -1
- package/dist/stores/conversation-store.d.ts +4 -0
- package/dist/stores/conversation-store.js +6 -0
- package/dist/stores/conversation-store.js.map +1 -1
- package/dist/types/agent-server/core/events/acp-tool-call-event.d.ts +6 -4
- package/dist/types/agent-server/core/events/system-event.d.ts +5 -0
- package/dist/types/automation.d.ts +15 -0
- package/dist/types/settings.d.ts +3 -1
- package/dist/ui/combobox-caret.cjs +1 -1
- package/dist/ui/combobox-caret.cjs.map +1 -1
- package/dist/ui/combobox-caret.d.ts +1 -1
- package/dist/ui/combobox-caret.js +9 -8
- package/dist/ui/combobox-caret.js.map +1 -1
- package/dist/ui/context-menu.cjs +1 -1
- package/dist/ui/context-menu.cjs.map +1 -1
- package/dist/ui/context-menu.js +9 -8
- package/dist/ui/context-menu.js.map +1 -1
- package/dist/ui/dropdown/dropdown-menu.cjs +1 -1
- package/dist/ui/dropdown/dropdown-menu.cjs.map +1 -1
- package/dist/ui/dropdown/dropdown-menu.js +21 -17
- package/dist/ui/dropdown/dropdown-menu.js.map +1 -1
- package/dist/ui/dropdown/dropdown.cjs +1 -1
- package/dist/ui/dropdown/dropdown.cjs.map +1 -1
- package/dist/ui/dropdown/dropdown.js +2 -2
- package/dist/ui/dropdown/dropdown.js.map +1 -1
- package/dist/utils/automation-schedule.d.ts +1 -0
- package/dist/utils/dropdown-classes.cjs +2 -0
- package/dist/utils/dropdown-classes.cjs.map +1 -0
- package/dist/utils/dropdown-classes.d.ts +32 -0
- package/dist/utils/dropdown-classes.js +8 -0
- package/dist/utils/dropdown-classes.js.map +1 -0
- package/dist/utils/form-control-classes.cjs +1 -1
- package/dist/utils/form-control-classes.cjs.map +1 -1
- package/dist/utils/form-control-classes.d.ts +18 -2
- package/dist/utils/form-control-classes.js +4 -3
- package/dist/utils/form-control-classes.js.map +1 -1
- package/dist/utils/git-control-bar-classes.cjs +2 -0
- package/dist/utils/git-control-bar-classes.cjs.map +1 -0
- package/dist/utils/git-control-bar-classes.d.ts +4 -0
- package/dist/utils/git-control-bar-classes.js +14 -0
- package/dist/utils/git-control-bar-classes.js.map +1 -0
- package/dist/utils/handle-event-for-ui.cjs.map +1 -1
- package/dist/utils/handle-event-for-ui.d.ts +6 -3
- package/dist/utils/handle-event-for-ui.js.map +1 -1
- package/dist/utils/mobile-top-bar-icon-button-classes.cjs +1 -1
- package/dist/utils/mobile-top-bar-icon-button-classes.cjs.map +1 -1
- package/dist/utils/mobile-top-bar-icon-button-classes.js +3 -3
- package/dist/utils/mobile-top-bar-icon-button-classes.js.map +1 -1
- package/dist/utils/modal-classes.cjs +2 -0
- package/dist/utils/modal-classes.cjs.map +1 -0
- package/dist/utils/modal-classes.d.ts +8 -0
- package/dist/utils/modal-classes.js +7 -0
- package/dist/utils/modal-classes.js.map +1 -0
- package/dist/utils/openhands-llm.cjs +2 -0
- package/dist/utils/openhands-llm.cjs.map +1 -0
- package/dist/utils/openhands-llm.d.ts +2 -0
- package/dist/utils/openhands-llm.js +9 -0
- package/dist/utils/openhands-llm.js.map +1 -0
- package/dist/utils/redact-custom-secrets.cjs +2 -0
- package/dist/utils/redact-custom-secrets.cjs.map +1 -0
- package/dist/utils/redact-custom-secrets.d.ts +6 -0
- package/dist/utils/redact-custom-secrets.js +10 -0
- package/dist/utils/redact-custom-secrets.js.map +1 -0
- package/dist/utils/status.cjs +1 -1
- package/dist/utils/status.cjs.map +1 -1
- package/dist/utils/status.d.ts +2 -1
- package/dist/utils/status.js +9 -8
- package/dist/utils/status.js.map +1 -1
- package/dist/utils/system-message-adapter.cjs +1 -1
- package/dist/utils/system-message-adapter.cjs.map +1 -1
- package/dist/utils/system-message-adapter.js +10 -7
- package/dist/utils/system-message-adapter.js.map +1 -1
- package/dist/utils/utils.cjs +1 -1
- package/dist/utils/utils.cjs.map +1 -1
- package/dist/utils/utils.d.ts +2 -1
- package/dist/utils/utils.js +21 -20
- package/dist/utils/utils.js.map +1 -1
- package/package.json +2 -2
- package/scripts/dev-safe.mjs +3 -1
- package/scripts/dev-static.mjs +2 -2
- package/scripts/dev-with-automation.mjs +283 -108
- package/scripts/static-build.mjs +20 -19
- package/scripts/static-server.mjs +50 -3
- package/build/assets/acp-providers-CbiRekh9.js +0 -1
- package/build/assets/active-backend-context-cCM1vYYZ.js +0 -1
- package/build/assets/add-backend-modal-DIUQzMPa.js +0 -1
- package/build/assets/agent-server-client-options-Bc5ZorQZ.js +0 -1
- package/build/assets/agent-server-compatibility-BlkUsrX2.js +0 -1
- package/build/assets/agent-server-conversation-service.api-C2V5SlHu.js +0 -5
- package/build/assets/api-key-entry-screen-B2gynaCp.js +0 -1
- package/build/assets/automation-detail-DJvbVSYK.js +0 -1
- package/build/assets/automations-list-rMki-8au.js +0 -1
- package/build/assets/backend-form-modal-Dnk33xA_.js +0 -1
- package/build/assets/base-modal-_dYTw1ri.js +0 -1
- package/build/assets/brand-button-Br7f0kZJ.js +0 -1
- package/build/assets/browser-store-Couc4S5D.js +0 -1
- package/build/assets/clock-BRjCgHTc.js +0 -1
- package/build/assets/combobox-caret-to1O8irE.js +0 -1
- package/build/assets/context-menu-list-item-CWNFpuiC.js +0 -1
- package/build/assets/conversation-DVrKU0oz.js +0 -19
- package/build/assets/conversation-Dlys-D5A.js +0 -1
- package/build/assets/conversation-panel-iF09WjZ4.js +0 -1
- package/build/assets/conversation-service.api-CCfztilW.js +0 -1
- package/build/assets/conversation-state-store-u5jepov0.js +0 -1
- package/build/assets/conversation-store-Z5iMCRpc.js +0 -1
- package/build/assets/conversation-websocket-context-DhJhqUna.js +0 -3
- package/build/assets/declaration-BNMqORFE.js +0 -1
- package/build/assets/dist-BxBP7tFD.js +0 -1
- package/build/assets/edit-automation-modal-BGzR3nfZ.js +0 -1
- package/build/assets/ellipsis-button-ZyLMPURn.js +0 -1
- package/build/assets/entry.client-1VMHpktY.js +0 -2
- package/build/assets/enum-filter-dropdown-CEgCdu4A.js +0 -1
- package/build/assets/extensions-hub-C651jsVh.js +0 -1
- package/build/assets/files-tab-R5z0lLdY.js +0 -1
- package/build/assets/files-tab-store-CDyVTXNT.js +0 -1
- package/build/assets/git-control-bar-branch-button-COdRAYHb.js +0 -27
- package/build/assets/git-provider-icon-BzLbc0yC.js +0 -1
- package/build/assets/home-XxBpNOVq.js +0 -1
- package/build/assets/install-server-modal-f31_CLrW.js +0 -1
- package/build/assets/launch-CshDse3e.js +0 -1
- package/build/assets/link-external-D2POYx4c.js +0 -1
- package/build/assets/llm-settings-Bql-vydt.js +0 -1
- package/build/assets/llm-settings-C_tal6Ds.js +0 -1
- package/build/assets/manage-backends-modal-l7RkKfwX.js +0 -1
- package/build/assets/manage-workspaces-modal-DhKF_8z3.js +0 -1
- package/build/assets/manifest-d9077852.js +0 -1
- package/build/assets/mcp-D2onbwVk.js +0 -9
- package/build/assets/messages-D0rWot7s.js +0 -36
- package/build/assets/proxy-CxydCnis.js +0 -1
- package/build/assets/root-DHeCXo9N.css +0 -1
- package/build/assets/root-layout-Czo9Ma6Q.js +0 -2
- package/build/assets/secrets-service-BsnKFc2x.js +0 -1
- package/build/assets/secrets-settings-Bz_UohPJ.js +0 -1
- package/build/assets/settings-client-C73C7IgV.js +0 -1
- package/build/assets/settings-index-Dz0BmdJD.js +0 -1
- package/build/assets/settings-list-classes-Bf80tWtc.js +0 -1
- package/build/assets/settings-modal-Brzgh5Yw.js +0 -1
- package/build/assets/settings-service.api-CZ3uWx4v.js +0 -1
- package/build/assets/sidebar-mobile-menu-toggle-Do_aA9Zm.js +0 -1
- package/build/assets/skills-settings-DlA5hlXw.js +0 -2
- package/build/assets/status-hp6M6E7E.js +0 -1
- package/build/assets/use-agent-settings-schema-33Un7UF2.js +0 -1
- package/build/assets/use-is-authed-BggE5wPj.js +0 -1
- package/build/assets/use-llm-profiles-DDOol3gK.js +0 -1
- package/build/assets/use-runtime-is-ready-B7EF4BKU.js +0 -1
- package/build/assets/use-settings-DQIZmIov.js +0 -1
- package/build/assets/use-user-conversation-C6hrMMtn.js +0 -1
- package/build/assets/utils-i18rdUj2.js +0 -1
- package/build/assets/vendor~conversation-panel~conversation-a9SyrrhV.js +0 -1
- package/build/assets/vendor~conversation-panel~conversation~index-C23ZXO4R.js +0 -1
- package/build/assets/vendor~home~mcp~automations-list-Ccy2I0KU.js +0 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~i4kjfqhl-BebWhFNT.js +0 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-DzIXV3Ui.js +0 -9
- /package/build/assets/{automation-IdgZq6ZK.js → automation-XDPAjiZi.js} +0 -0
- /package/build/assets/{color-themes-DSaoIL6A.js → color-themes-B9pm9c-R.js} +0 -0
- /package/build/assets/{common-DR1t-EeP.js → common-DqjLSBOt.js} +0 -0
- /package/build/assets/{conversation-local-storage-UYl-SX-r.js → conversation-local-storage-YmOVXxxW.js} +0 -0
- /package/build/assets/{dist-C6t0EXL7.js → dist-C3NfioQC.js} +0 -0
- /package/build/assets/{environment-switch-store-C4ulFJKp.js → environment-switch-store-CiurvTtK.js} +0 -0
- /package/build/assets/{health-store-BDC2rM-X.js → health-store-B5f0S2FY.js} +0 -0
- /package/build/assets/{map-provider-COBVzZYo.js → map-provider-BJ_8KZKU.js} +0 -0
- /package/build/assets/{middleware-BC9EwbB9.js → middleware-CfatjPYZ.js} +0 -0
- /package/build/assets/{objectWithoutPropertiesLoose-Du6eBn-V.js → objectWithoutPropertiesLoose-DSQKyRhw.js} +0 -0
- /package/build/assets/{react-Do0CT17Y.js → react-Dy05vyj5.js} +0 -0
- /package/build/assets/{sdk-settings-field-metadata-CBPmeqYa.js → sdk-settings-field-metadata-DQiaIBie.js} +0 -0
- /package/build/assets/{settings-D_H-qsRm.js → settings-DGY6n4J2.js} +0 -0
- /package/build/assets/{settings-like-page-layout-classes-I0BDBEoq.js → settings-like-page-layout-classes-D7YjdTd0.js} +0 -0
- /package/build/assets/{use-breakpoint-DbJ6FkQ-.js → use-breakpoint-DF_RiQ6s.js} +0 -0
- /package/build/assets/{use-click-outside-element-DffgWWoZ.js → use-click-outside-element-DhxCUyWl.js} +0 -0
- /package/build/assets/{v4-CNn21NXa.js → v4-khGvL7i2.js} +0 -0
- /package/build/assets/{vendor~browser-DDiZgqD3.js → vendor~browser-DisFGEp9.js} +0 -0
- /package/build/assets/{vendor~browser-tab-BgwV1mxF.js → vendor~browser-tab-BxhTtM9_.js} +0 -0
- /package/build/assets/{vendor~conversation-panel~conversation~alert-banner-DbvX3OcM.js → vendor~conversation-panel~conversation~alert-banner-w-I2sY6c.js} +0 -0
- /package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~zm51vy4j-iOsylxCS.js → vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~zm51vy4j-BClAMeFe.js} +0 -0
- /package/build/assets/{vendor~files-tab-BGKayPiK.js → vendor~files-tab-BtkpAiMX.js} +0 -0
- /package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BW6261Sb.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CyZ-3lDQ.js} +0 -0
- /package/build/assets/{vendor~home~mcp~automations-list-DoPfwaXj.js → vendor~home~mcp~automations-list-BgV86Sti.js} +0 -0
- /package/build/assets/{vendor~launch-vdeRTWFu.js → vendor~launch-BXgl67Re.js} +0 -0
- /package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~ninslayh-D9P8e98a.js → vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~ninslayh-CLlsvdNP.js} +0 -0
- /package/build/assets/{vendor~terminal-DUrOWGFE.js → vendor~terminal-DZaJIY8A.js} +0 -0
|
@@ -1,68 +1,68 @@
|
|
|
1
1
|
import { makeDefaultLocalBackend as e } from "../api/backend-registry/default-backend.js";
|
|
2
|
-
import {
|
|
3
|
-
import { dropBackendHealth as
|
|
4
|
-
import
|
|
5
|
-
import { jsx as
|
|
2
|
+
import { NO_BACKEND as t, getActiveSelection as n, getRegisteredBackends as r, getSnapshot as i, setActiveSelection as a, setRegisteredBackends as o, subscribeActiveBackend as s } from "../api/backend-registry/active-store.js";
|
|
3
|
+
import { dropBackendHealth as c, resetBackendHealth as l } from "../api/backend-registry/health-store.js";
|
|
4
|
+
import u from "react";
|
|
5
|
+
import { jsx as d } from "react/jsx-runtime";
|
|
6
6
|
//#region src/contexts/active-backend-context.tsx
|
|
7
|
-
var
|
|
8
|
-
function
|
|
7
|
+
var f = u.createContext(null);
|
|
8
|
+
function p() {
|
|
9
9
|
return typeof crypto < "u" && typeof crypto.randomUUID == "function" ? crypto.randomUUID() : `backend-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
|
|
10
10
|
}
|
|
11
|
-
function
|
|
12
|
-
let
|
|
13
|
-
let r =
|
|
14
|
-
e === r && o ===
|
|
11
|
+
function m({ children: e }) {
|
|
12
|
+
let t = u.useSyncExternalStore(s, i, i), m = u.useCallback((e, t) => {
|
|
13
|
+
let r = n()?.backendId ?? null, i = n()?.orgId ?? null, o = t ?? null;
|
|
14
|
+
e === r && o === i || a({
|
|
15
15
|
backendId: e,
|
|
16
16
|
orgId: o
|
|
17
17
|
});
|
|
18
|
-
}, []), h =
|
|
18
|
+
}, []), h = u.useCallback((e) => {
|
|
19
19
|
let t = {
|
|
20
20
|
...e,
|
|
21
|
-
id:
|
|
21
|
+
id: p()
|
|
22
22
|
};
|
|
23
|
-
return
|
|
24
|
-
}, []), g =
|
|
25
|
-
let
|
|
26
|
-
|
|
23
|
+
return o([...r(), t]), a({ backendId: t.id }), t;
|
|
24
|
+
}, []), g = u.useCallback((e, t) => {
|
|
25
|
+
let n = r().find((t) => t.id === e);
|
|
26
|
+
o(r().map((n) => n.id === e ? {
|
|
27
27
|
...n,
|
|
28
28
|
...t
|
|
29
29
|
} : n));
|
|
30
|
-
let i = t.host !== void 0 &&
|
|
31
|
-
(i ||
|
|
32
|
-
}, []), _ =
|
|
33
|
-
|
|
34
|
-
}, []), v =
|
|
35
|
-
backends:
|
|
36
|
-
active:
|
|
30
|
+
let i = t.host !== void 0 && n !== void 0 && t.host !== n.host, a = t.apiKey !== void 0 && n !== void 0 && t.apiKey !== n.apiKey;
|
|
31
|
+
(i || a) && l(e);
|
|
32
|
+
}, []), _ = u.useCallback((e) => {
|
|
33
|
+
o(r().filter((t) => t.id !== e)), c(e);
|
|
34
|
+
}, []), v = u.useMemo(() => ({
|
|
35
|
+
backends: t.backends,
|
|
36
|
+
active: t.active,
|
|
37
37
|
setActive: m,
|
|
38
38
|
addBackend: h,
|
|
39
39
|
updateBackend: g,
|
|
40
40
|
removeBackend: _
|
|
41
41
|
}), [
|
|
42
|
-
|
|
42
|
+
t,
|
|
43
43
|
m,
|
|
44
44
|
h,
|
|
45
45
|
g,
|
|
46
46
|
_
|
|
47
47
|
]);
|
|
48
|
-
return /* @__PURE__ */
|
|
48
|
+
return /* @__PURE__ */ d(f.Provider, {
|
|
49
49
|
value: v,
|
|
50
50
|
children: e
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
|
-
function
|
|
54
|
-
let e =
|
|
53
|
+
function h() {
|
|
54
|
+
let e = u.useContext(f);
|
|
55
55
|
if (!e) throw Error("useActiveBackendContext must be used inside <ActiveBackendProvider>");
|
|
56
56
|
return e;
|
|
57
57
|
}
|
|
58
|
-
function
|
|
59
|
-
let
|
|
60
|
-
return
|
|
61
|
-
backend: e(),
|
|
58
|
+
function g() {
|
|
59
|
+
let n = u.useContext(f);
|
|
60
|
+
return n ? n.active : {
|
|
61
|
+
backend: e() ?? t,
|
|
62
62
|
orgId: null
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
65
|
//#endregion
|
|
66
|
-
export {
|
|
66
|
+
export { m as ActiveBackendProvider, g as useActiveBackend, h as useActiveBackendContext };
|
|
67
67
|
|
|
68
68
|
//# sourceMappingURL=active-backend-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"active-backend-context.js","names":[],"sources":["../../src/contexts/active-backend-context.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n getActiveSelection,\n getRegisteredBackends,\n getSnapshot,\n setActiveSelection,\n setRegisteredBackends,\n subscribeActiveBackend,\n} from \"#/api/backend-registry/active-store\";\nimport { makeDefaultLocalBackend } from \"#/api/backend-registry/default-backend\";\nimport {\n dropBackendHealth,\n resetBackendHealth,\n} from \"#/api/backend-registry/health-store\";\nimport {\n type Backend,\n type BackendSelection,\n type ResolvedActiveBackend,\n} from \"#/api/backend-registry/types\";\n\ninterface ActiveBackendContextValue {\n backends: Backend[];\n active: ResolvedActiveBackend;\n setActive: (backendId: string, orgId?: string | null) => void;\n addBackend: (backend: Omit<Backend, \"id\">) => Backend;\n updateBackend: (id: string, patch: Partial<Omit<Backend, \"id\">>) => void;\n removeBackend: (id: string) => void;\n}\n\nconst ActiveBackendContext =\n React.createContext<ActiveBackendContextValue | null>(null);\n\nfunction generateId(): string {\n if (\n typeof crypto !== \"undefined\" &&\n typeof crypto.randomUUID === \"function\"\n ) {\n return crypto.randomUUID();\n }\n return `backend-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;\n}\n\nexport function ActiveBackendProvider({\n children,\n}: {\n children: React.ReactNode;\n}) {\n const snapshot = React.useSyncExternalStore(\n subscribeActiveBackend,\n getSnapshot,\n getSnapshot,\n );\n\n const setActive = React.useCallback(\n (backendId: string, orgId?: string | null) => {\n const prevBackendId = getActiveSelection()?.backendId ?? null;\n const prevOrgId = getActiveSelection()?.orgId ?? null;\n const nextOrgId = orgId ?? null;\n\n if (backendId === prevBackendId && nextOrgId === prevOrgId) return;\n\n const next: BackendSelection = { backendId, orgId: nextOrgId };\n setActiveSelection(next);\n\n // No blanket `invalidateQueries()` here. Long-lived queries\n // (`useSettings`, `usePaginatedConversations`,\n // `useGitRepositories`, `useAppInstallations`,\n // `useCloudCurrentUserId`, `useGitUser`, …) include the active\n // backend's `id` and `orgId` in their query keys, so React Query\n // treats a backend/org switch as a brand-new query and fetches\n // automatically — once, with no duplicate waves.\n },\n [],\n );\n\n // @spec BM-001 — Auto-switch to newly connected backend\n const addBackend = React.useCallback(\n (backend: Omit<Backend, \"id\">): Backend => {\n const next: Backend = { ...backend, id: generateId() };\n const list = [...getRegisteredBackends(), next];\n setRegisteredBackends(list);\n setActiveSelection({ backendId: next.id });\n return next;\n },\n [],\n );\n\n const updateBackend = React.useCallback(\n (id: string, patch: Partial<Omit<Backend, \"id\">>) => {\n const prev = getRegisteredBackends().find((b) => b.id === id);\n const list = getRegisteredBackends().map((b) =>\n b.id === id ? { ...b, ...patch } : b,\n );\n setRegisteredBackends(list);\n\n // Re-arm health polling when the user edits the fields that\n // actually drive the probe. Cosmetic edits (name) shouldn't\n // re-enable a backend that was disabled for being unreachable.\n const hostChanged =\n patch.host !== undefined &&\n prev !== undefined &&\n patch.host !== prev.host;\n const apiKeyChanged =\n patch.apiKey !== undefined &&\n prev !== undefined &&\n patch.apiKey !== prev.apiKey;\n if (hostChanged || apiKeyChanged) {\n resetBackendHealth(id);\n }\n },\n [],\n );\n\n const removeBackend = React.useCallback((id: string) => {\n const list = getRegisteredBackends().filter((b) => b.id !== id);\n setRegisteredBackends(list);\n dropBackendHealth(id);\n // If the active selection pointed at this backend, the active\n // store falls back to the first remaining local backend (or the\n // env-derived default if no locals exist); consumer hooks re-key\n // by the new active backend identity and refetch automatically.\n }, []);\n\n const value = React.useMemo<ActiveBackendContextValue>(\n () => ({\n backends: snapshot.backends,\n active: snapshot.active,\n setActive,\n addBackend,\n updateBackend,\n removeBackend,\n }),\n [snapshot, setActive, addBackend, updateBackend, removeBackend],\n );\n\n return (\n <ActiveBackendContext.Provider value={value}>\n {children}\n </ActiveBackendContext.Provider>\n );\n}\n\nexport function useActiveBackendContext(): ActiveBackendContextValue {\n const ctx = React.useContext(ActiveBackendContext);\n if (!ctx) {\n throw new Error(\n \"useActiveBackendContext must be used inside <ActiveBackendProvider>\",\n );\n }\n return ctx;\n}\n\n/**\n * Read the resolved active backend.\n *\n * Falls back to a synthesized env-derived local backend when called\n * outside an `<ActiveBackendProvider>` (e.g. from a unit test that\n * mounts a narrow component without the full provider stack). That\n * synthesized backend is identical to the seed used on first install.\n *\n * Components that need to mutate state (`setActive`, `addBackend`,\n * etc.) must use `useActiveBackendContext()` directly — that throws if\n * the provider is missing, since mutation requires the live store.\n */\nexport function useActiveBackend(): ResolvedActiveBackend {\n const ctx = React.useContext(ActiveBackendContext);\n if (ctx) return ctx.active;\n return { backend: makeDefaultLocalBackend(), orgId: null };\n}\n"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"active-backend-context.js","names":[],"sources":["../../src/contexts/active-backend-context.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n getActiveSelection,\n getRegisteredBackends,\n getSnapshot,\n NO_BACKEND,\n setActiveSelection,\n setRegisteredBackends,\n subscribeActiveBackend,\n} from \"#/api/backend-registry/active-store\";\nimport { makeDefaultLocalBackend } from \"#/api/backend-registry/default-backend\";\nimport {\n dropBackendHealth,\n resetBackendHealth,\n} from \"#/api/backend-registry/health-store\";\nimport {\n type Backend,\n type BackendSelection,\n type ResolvedActiveBackend,\n} from \"#/api/backend-registry/types\";\n\ninterface ActiveBackendContextValue {\n backends: Backend[];\n active: ResolvedActiveBackend;\n setActive: (backendId: string, orgId?: string | null) => void;\n addBackend: (backend: Omit<Backend, \"id\">) => Backend;\n updateBackend: (id: string, patch: Partial<Omit<Backend, \"id\">>) => void;\n removeBackend: (id: string) => void;\n}\n\nconst ActiveBackendContext =\n React.createContext<ActiveBackendContextValue | null>(null);\n\nfunction generateId(): string {\n if (\n typeof crypto !== \"undefined\" &&\n typeof crypto.randomUUID === \"function\"\n ) {\n return crypto.randomUUID();\n }\n return `backend-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;\n}\n\nexport function ActiveBackendProvider({\n children,\n}: {\n children: React.ReactNode;\n}) {\n const snapshot = React.useSyncExternalStore(\n subscribeActiveBackend,\n getSnapshot,\n getSnapshot,\n );\n\n const setActive = React.useCallback(\n (backendId: string, orgId?: string | null) => {\n const prevBackendId = getActiveSelection()?.backendId ?? null;\n const prevOrgId = getActiveSelection()?.orgId ?? null;\n const nextOrgId = orgId ?? null;\n\n if (backendId === prevBackendId && nextOrgId === prevOrgId) return;\n\n const next: BackendSelection = { backendId, orgId: nextOrgId };\n setActiveSelection(next);\n\n // No blanket `invalidateQueries()` here. Long-lived queries\n // (`useSettings`, `usePaginatedConversations`,\n // `useGitRepositories`, `useAppInstallations`,\n // `useCloudCurrentUserId`, `useGitUser`, …) include the active\n // backend's `id` and `orgId` in their query keys, so React Query\n // treats a backend/org switch as a brand-new query and fetches\n // automatically — once, with no duplicate waves.\n },\n [],\n );\n\n // @spec BM-001 — Auto-switch to newly connected backend\n const addBackend = React.useCallback(\n (backend: Omit<Backend, \"id\">): Backend => {\n const next: Backend = { ...backend, id: generateId() };\n const list = [...getRegisteredBackends(), next];\n setRegisteredBackends(list);\n setActiveSelection({ backendId: next.id });\n return next;\n },\n [],\n );\n\n const updateBackend = React.useCallback(\n (id: string, patch: Partial<Omit<Backend, \"id\">>) => {\n const prev = getRegisteredBackends().find((b) => b.id === id);\n const list = getRegisteredBackends().map((b) =>\n b.id === id ? { ...b, ...patch } : b,\n );\n setRegisteredBackends(list);\n\n // Re-arm health polling when the user edits the fields that\n // actually drive the probe. Cosmetic edits (name) shouldn't\n // re-enable a backend that was disabled for being unreachable.\n const hostChanged =\n patch.host !== undefined &&\n prev !== undefined &&\n patch.host !== prev.host;\n const apiKeyChanged =\n patch.apiKey !== undefined &&\n prev !== undefined &&\n patch.apiKey !== prev.apiKey;\n if (hostChanged || apiKeyChanged) {\n resetBackendHealth(id);\n }\n },\n [],\n );\n\n const removeBackend = React.useCallback((id: string) => {\n const list = getRegisteredBackends().filter((b) => b.id !== id);\n setRegisteredBackends(list);\n dropBackendHealth(id);\n // If the active selection pointed at this backend, the active\n // store falls back to the first remaining local backend (or the\n // env-derived default if no locals exist); consumer hooks re-key\n // by the new active backend identity and refetch automatically.\n }, []);\n\n const value = React.useMemo<ActiveBackendContextValue>(\n () => ({\n backends: snapshot.backends,\n active: snapshot.active,\n setActive,\n addBackend,\n updateBackend,\n removeBackend,\n }),\n [snapshot, setActive, addBackend, updateBackend, removeBackend],\n );\n\n return (\n <ActiveBackendContext.Provider value={value}>\n {children}\n </ActiveBackendContext.Provider>\n );\n}\n\nexport function useActiveBackendContext(): ActiveBackendContextValue {\n const ctx = React.useContext(ActiveBackendContext);\n if (!ctx) {\n throw new Error(\n \"useActiveBackendContext must be used inside <ActiveBackendProvider>\",\n );\n }\n return ctx;\n}\n\n/**\n * Read the resolved active backend.\n *\n * Falls back to a synthesized env-derived local backend when called\n * outside an `<ActiveBackendProvider>` (e.g. from a unit test that\n * mounts a narrow component without the full provider stack). That\n * synthesized backend is identical to the seed used on first install.\n *\n * Components that need to mutate state (`setActive`, `addBackend`,\n * etc.) must use `useActiveBackendContext()` directly — that throws if\n * the provider is missing, since mutation requires the live store.\n */\nexport function useActiveBackend(): ResolvedActiveBackend {\n const ctx = React.useContext(ActiveBackendContext);\n if (ctx) return ctx.active;\n return { backend: makeDefaultLocalBackend() ?? NO_BACKEND, orgId: null };\n}\n"],"mappings":";;;;;;AA8BA,IAAM,IACJ,EAAM,cAAgD,KAAK;AAE7D,SAAS,IAAqB;AAO5B,QALE,OAAO,SAAW,OAClB,OAAO,OAAO,cAAe,aAEtB,OAAO,YAAY,GAErB,WAAW,KAAK,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,GAAG,GAAG;;AAGzE,SAAgB,EAAsB,EACpC,eAGC;CACD,IAAM,IAAW,EAAM,qBACrB,GACA,GACA,EACD,EAEK,IAAY,EAAM,aACrB,GAAmB,MAA0B;EAC5C,IAAM,IAAgB,GAAoB,EAAE,aAAa,MACnD,IAAY,GAAoB,EAAE,SAAS,MAC3C,IAAY,KAAS;AAEvB,QAAc,KAAiB,MAAc,KAGjD,EAAmB;GADc;GAAW,OAAO;GAChC,CAAK;IAU1B,EAAE,CACH,EAGK,IAAa,EAAM,aACtB,MAA0C;EACzC,IAAM,IAAgB;GAAE,GAAG;GAAS,IAAI,GAAY;GAAE;AAItD,SAFA,EAAsB,CADR,GAAG,GAAuB,EAAE,EACpB,CAAK,EAC3B,EAAmB,EAAE,WAAW,EAAK,IAAI,CAAC,EACnC;IAET,EAAE,CACH,EAEK,IAAgB,EAAM,aACzB,GAAY,MAAwC;EACnD,IAAM,IAAO,GAAuB,CAAC,MAAM,MAAM,EAAE,OAAO,EAAG;AAI7D,IAHa,GAAuB,CAAC,KAAK,MACxC,EAAE,OAAO,IAAK;GAAE,GAAG;GAAG,GAAG;GAAO,GAAG,EAEf,CAAK;EAK3B,IAAM,IACJ,EAAM,SAAS,KAAA,KACf,MAAS,KAAA,KACT,EAAM,SAAS,EAAK,MAChB,IACJ,EAAM,WAAW,KAAA,KACjB,MAAS,KAAA,KACT,EAAM,WAAW,EAAK;AACxB,GAAI,KAAe,MACjB,EAAmB,EAAG;IAG1B,EAAE,CACH,EAEK,IAAgB,EAAM,aAAa,MAAe;AAGtD,EADA,EADa,GAAuB,CAAC,QAAQ,MAAM,EAAE,OAAO,EACtC,CAAK,EAC3B,EAAkB,EAAG;IAKpB,EAAE,CAAC,EAEA,IAAQ,EAAM,eACX;EACL,UAAU,EAAS;EACnB,QAAQ,EAAS;EACjB;EACA;EACA;EACA;EACD,GACD;EAAC;EAAU;EAAW;EAAY;EAAe;EAAc,CAChE;AAED,QACE,kBAAC,EAAqB,UAAtB;EAAsC;EACnC;EAC6B,CAAA;;AAIpC,SAAgB,IAAqD;CACnE,IAAM,IAAM,EAAM,WAAW,EAAqB;AAClD,KAAI,CAAC,EACH,OAAU,MACR,sEACD;AAEH,QAAO;;AAeT,SAAgB,IAA0C;CACxD,IAAM,IAAM,EAAM,WAAW,EAAqB;AAElD,QADI,IAAY,EAAI,SACb;EAAE,SAAS,GAAyB,IAAI;EAAY,OAAO;EAAM"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../use-conversation-id.cjs`),t=require(`../../stores/conversation-store.cjs`),n=require(`../../components/features/chat/utils/chat-input.utils.cjs`),r=require(`./use-draft-persistence.cjs`);let i=require(`react`);var a=()=>{let a=(0,i.useRef)(null),{conversationId:o}=e.useOptionalConversationId(),{messageToSend:s,
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../use-conversation-id.cjs`),t=require(`../../stores/conversation-store.cjs`),n=require(`../../components/features/chat/utils/chat-input.utils.cjs`),r=require(`./use-draft-persistence.cjs`);let i=require(`react`);var a=()=>{let a=(0,i.useRef)(null),{conversationId:o}=e.useOptionalConversationId(),{messageToSend:s,messageRestoreIfEmpty:c,hasRightPanelToggled:l,setMessageToSend:u,clearMessageRestoreIfEmpty:d,setIsRightPanelShown:f}=t.useConversationStore(),{saveDraft:p,clearDraft:m}=r.useDraftPersistence(o,a),h=o?s:null;return(0,i.useEffect)(()=>{!o||!c||(n.getTextContent(a.current).trim().length===0&&u(c.text),d())},[o,c,u,d]),(0,i.useEffect)(()=>{o&&a.current&&(u(n.getTextContent(a.current)),f(l))},[o,l,u,f]),{chatInputRef:a,messageToSend:h,checkIsContentEmpty:(0,i.useCallback)(()=>n.isContentEmpty(a.current),[]),clearEmptyContentHandler:(0,i.useCallback)(()=>{n.clearEmptyContent(a.current)},[]),getCurrentMessage:(0,i.useCallback)(()=>n.getTextContent(a.current),[]),saveDraft:p,clearDraft:m}};exports.useChatInputLogic=a;
|
|
2
2
|
//# sourceMappingURL=use-chat-input-logic.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-chat-input-logic.cjs","names":[],"sources":["../../../src/hooks/chat/use-chat-input-logic.ts"],"sourcesContent":["import { useRef, useCallback, useEffect } from \"react\";\nimport {\n isContentEmpty,\n clearEmptyContent,\n getTextContent,\n} from \"#/components/features/chat/utils/chat-input.utils\";\nimport { useConversationStore } from \"#/stores/conversation-store\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport { useDraftPersistence } from \"./use-draft-persistence\";\n\n/**\n * Hook for managing chat input content logic\n */\nexport const useChatInputLogic = () => {\n const chatInputRef = useRef<HTMLDivElement | null>(null);\n // Optional because the chat input also renders on the home page, where no\n // conversation route is mounted yet. Draft persistence is conversation-\n // scoped, so it no-ops when this is undefined.\n const { conversationId } = useOptionalConversationId();\n\n const {\n messageToSend: rawMessageToSend,\n hasRightPanelToggled,\n setMessageToSend,\n setIsRightPanelShown,\n } = useConversationStore();\n\n // Draft persistence - saves to localStorage/sessionStorage, restores on mount\n const { saveDraft, clearDraft } = useDraftPersistence(\n conversationId,\n chatInputRef,\n );\n\n // On the home page (no conversationId) the right-panel / messageToSend\n // mechanism is not relevant. More importantly, a stale messageToSend value\n // in the Zustand store causes useAutoResize to overwrite the just-restored\n // sessionStorage draft with an empty string (see useAutoResize value effect).\n // Returning null here keeps value=undefined in useAutoResize so it never\n // touches the element content on the home page.\n const messageToSend = conversationId ? rawMessageToSend : null;\n\n // Save current input value when drawer state changes (conversation view only)\n useEffect(() => {\n if (!conversationId) return;\n if (chatInputRef.current) {\n const currentText = getTextContent(chatInputRef.current);\n setMessageToSend(currentText);\n setIsRightPanelShown(hasRightPanelToggled);\n }\n }, [\n conversationId,\n hasRightPanelToggled,\n setMessageToSend,\n setIsRightPanelShown,\n ]);\n\n // Helper function to check if contentEditable is truly empty\n const checkIsContentEmpty = useCallback(\n (): boolean => isContentEmpty(chatInputRef.current),\n [],\n );\n\n // Helper function to properly clear contentEditable for placeholder display\n const clearEmptyContentHandler = useCallback((): void => {\n clearEmptyContent(chatInputRef.current);\n }, []);\n\n // Get current message text\n const getCurrentMessage = useCallback(\n (): string => getTextContent(chatInputRef.current),\n [],\n );\n\n return {\n chatInputRef,\n messageToSend,\n checkIsContentEmpty,\n clearEmptyContentHandler,\n getCurrentMessage,\n saveDraft,\n clearDraft,\n };\n};\n"],"mappings":"sRAaA,IAAa,MAA0B,CACrC,IAAM,GAAA,EAAA,EAAA,QAA6C,KAAK,CAIlD,CAAE,kBAAmB,EAAA,2BAA2B,CAEhD,CACJ,cAAe,EACf,uBACA,mBACA,wBACE,EAAA,sBAAsB,CAGpB,CAAE,YAAW,cAAe,EAAA,oBAChC,EACA,EACD,CAQK,EAAgB,EAAiB,EAAmB,
|
|
1
|
+
{"version":3,"file":"use-chat-input-logic.cjs","names":[],"sources":["../../../src/hooks/chat/use-chat-input-logic.ts"],"sourcesContent":["import { useRef, useCallback, useEffect } from \"react\";\nimport {\n isContentEmpty,\n clearEmptyContent,\n getTextContent,\n} from \"#/components/features/chat/utils/chat-input.utils\";\nimport { useConversationStore } from \"#/stores/conversation-store\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport { useDraftPersistence } from \"./use-draft-persistence\";\n\n/**\n * Hook for managing chat input content logic\n */\nexport const useChatInputLogic = () => {\n const chatInputRef = useRef<HTMLDivElement | null>(null);\n // Optional because the chat input also renders on the home page, where no\n // conversation route is mounted yet. Draft persistence is conversation-\n // scoped, so it no-ops when this is undefined.\n const { conversationId } = useOptionalConversationId();\n\n const {\n messageToSend: rawMessageToSend,\n messageRestoreIfEmpty,\n hasRightPanelToggled,\n setMessageToSend,\n clearMessageRestoreIfEmpty,\n setIsRightPanelShown,\n } = useConversationStore();\n\n // Draft persistence - saves to localStorage/sessionStorage, restores on mount\n const { saveDraft, clearDraft } = useDraftPersistence(\n conversationId,\n chatInputRef,\n );\n\n // On the home page (no conversationId) the right-panel / messageToSend\n // mechanism is not relevant. More importantly, a stale messageToSend value\n // in the Zustand store causes useAutoResize to overwrite the just-restored\n // sessionStorage draft with an empty string (see useAutoResize value effect).\n // Returning null here keeps value=undefined in useAutoResize so it never\n // touches the element content on the home page.\n const messageToSend = conversationId ? rawMessageToSend : null;\n\n // Restore a cancelled pending send back into the input only when empty.\n useEffect(() => {\n if (!conversationId || !messageRestoreIfEmpty) {\n return;\n }\n\n const currentText = getTextContent(chatInputRef.current).trim();\n if (currentText.length === 0) {\n setMessageToSend(messageRestoreIfEmpty.text);\n }\n clearMessageRestoreIfEmpty();\n }, [\n conversationId,\n messageRestoreIfEmpty,\n setMessageToSend,\n clearMessageRestoreIfEmpty,\n ]);\n\n // Save current input value when drawer state changes (conversation view only)\n useEffect(() => {\n if (!conversationId) return;\n if (chatInputRef.current) {\n const currentText = getTextContent(chatInputRef.current);\n setMessageToSend(currentText);\n setIsRightPanelShown(hasRightPanelToggled);\n }\n }, [\n conversationId,\n hasRightPanelToggled,\n setMessageToSend,\n setIsRightPanelShown,\n ]);\n\n // Helper function to check if contentEditable is truly empty\n const checkIsContentEmpty = useCallback(\n (): boolean => isContentEmpty(chatInputRef.current),\n [],\n );\n\n // Helper function to properly clear contentEditable for placeholder display\n const clearEmptyContentHandler = useCallback((): void => {\n clearEmptyContent(chatInputRef.current);\n }, []);\n\n // Get current message text\n const getCurrentMessage = useCallback(\n (): string => getTextContent(chatInputRef.current),\n [],\n );\n\n return {\n chatInputRef,\n messageToSend,\n checkIsContentEmpty,\n clearEmptyContentHandler,\n getCurrentMessage,\n saveDraft,\n clearDraft,\n };\n};\n"],"mappings":"sRAaA,IAAa,MAA0B,CACrC,IAAM,GAAA,EAAA,EAAA,QAA6C,KAAK,CAIlD,CAAE,kBAAmB,EAAA,2BAA2B,CAEhD,CACJ,cAAe,EACf,wBACA,uBACA,mBACA,6BACA,wBACE,EAAA,sBAAsB,CAGpB,CAAE,YAAW,cAAe,EAAA,oBAChC,EACA,EACD,CAQK,EAAgB,EAAiB,EAAmB,KAoD1D,OAjDA,EAAA,EAAA,eAAgB,CACV,CAAC,GAAkB,CAAC,IAIJ,EAAA,eAAe,EAAa,QAAQ,CAAC,MACrD,CAAY,SAAW,GACzB,EAAiB,EAAsB,KAAK,CAE9C,GAA4B,GAC3B,CACD,EACA,EACA,EACA,EACD,CAAC,EAGF,EAAA,EAAA,eAAgB,CACT,GACD,EAAa,UAEf,EADoB,EAAA,eAAe,EAAa,QAC/B,CAAY,CAC7B,EAAqB,EAAqB,GAE3C,CACD,EACA,EACA,EACA,EACD,CAAC,CAmBK,CACL,eACA,gBACA,qBAAA,EAAA,EAAA,iBAlBe,EAAA,eAAe,EAAa,QAAQ,CACnD,EAAE,CAiBF,CACA,0BAAA,EAAA,EAAA,iBAduD,CACvD,EAAA,kBAAkB,EAAa,QAAQ,EACtC,EAAE,CAYH,CACA,mBAAA,EAAA,EAAA,iBATc,EAAA,eAAe,EAAa,QAAQ,CAClD,EAAE,CAQF,CACA,YACA,aACD"}
|
|
@@ -5,24 +5,31 @@ import { useDraftPersistence as a } from "./use-draft-persistence.js";
|
|
|
5
5
|
import { useCallback as o, useEffect as s, useRef as c } from "react";
|
|
6
6
|
//#region src/hooks/chat/use-chat-input-logic.ts
|
|
7
7
|
var l = () => {
|
|
8
|
-
let l = c(null), { conversationId: u } = e(), { messageToSend: d,
|
|
8
|
+
let l = c(null), { conversationId: u } = e(), { messageToSend: d, messageRestoreIfEmpty: f, hasRightPanelToggled: p, setMessageToSend: m, clearMessageRestoreIfEmpty: h, setIsRightPanelShown: g } = t(), { saveDraft: _, clearDraft: v } = a(u, l), y = u ? d : null;
|
|
9
9
|
return s(() => {
|
|
10
|
-
u
|
|
10
|
+
!u || !f || (r(l.current).trim().length === 0 && m(f.text), h());
|
|
11
11
|
}, [
|
|
12
12
|
u,
|
|
13
13
|
f,
|
|
14
|
+
m,
|
|
15
|
+
h
|
|
16
|
+
]), s(() => {
|
|
17
|
+
u && l.current && (m(r(l.current)), g(p));
|
|
18
|
+
}, [
|
|
19
|
+
u,
|
|
14
20
|
p,
|
|
15
|
-
m
|
|
21
|
+
m,
|
|
22
|
+
g
|
|
16
23
|
]), {
|
|
17
24
|
chatInputRef: l,
|
|
18
|
-
messageToSend:
|
|
25
|
+
messageToSend: y,
|
|
19
26
|
checkIsContentEmpty: o(() => i(l.current), []),
|
|
20
27
|
clearEmptyContentHandler: o(() => {
|
|
21
28
|
n(l.current);
|
|
22
29
|
}, []),
|
|
23
30
|
getCurrentMessage: o(() => r(l.current), []),
|
|
24
|
-
saveDraft:
|
|
25
|
-
clearDraft:
|
|
31
|
+
saveDraft: _,
|
|
32
|
+
clearDraft: v
|
|
26
33
|
};
|
|
27
34
|
};
|
|
28
35
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-chat-input-logic.js","names":[],"sources":["../../../src/hooks/chat/use-chat-input-logic.ts"],"sourcesContent":["import { useRef, useCallback, useEffect } from \"react\";\nimport {\n isContentEmpty,\n clearEmptyContent,\n getTextContent,\n} from \"#/components/features/chat/utils/chat-input.utils\";\nimport { useConversationStore } from \"#/stores/conversation-store\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport { useDraftPersistence } from \"./use-draft-persistence\";\n\n/**\n * Hook for managing chat input content logic\n */\nexport const useChatInputLogic = () => {\n const chatInputRef = useRef<HTMLDivElement | null>(null);\n // Optional because the chat input also renders on the home page, where no\n // conversation route is mounted yet. Draft persistence is conversation-\n // scoped, so it no-ops when this is undefined.\n const { conversationId } = useOptionalConversationId();\n\n const {\n messageToSend: rawMessageToSend,\n hasRightPanelToggled,\n setMessageToSend,\n setIsRightPanelShown,\n } = useConversationStore();\n\n // Draft persistence - saves to localStorage/sessionStorage, restores on mount\n const { saveDraft, clearDraft } = useDraftPersistence(\n conversationId,\n chatInputRef,\n );\n\n // On the home page (no conversationId) the right-panel / messageToSend\n // mechanism is not relevant. More importantly, a stale messageToSend value\n // in the Zustand store causes useAutoResize to overwrite the just-restored\n // sessionStorage draft with an empty string (see useAutoResize value effect).\n // Returning null here keeps value=undefined in useAutoResize so it never\n // touches the element content on the home page.\n const messageToSend = conversationId ? rawMessageToSend : null;\n\n // Save current input value when drawer state changes (conversation view only)\n useEffect(() => {\n if (!conversationId) return;\n if (chatInputRef.current) {\n const currentText = getTextContent(chatInputRef.current);\n setMessageToSend(currentText);\n setIsRightPanelShown(hasRightPanelToggled);\n }\n }, [\n conversationId,\n hasRightPanelToggled,\n setMessageToSend,\n setIsRightPanelShown,\n ]);\n\n // Helper function to check if contentEditable is truly empty\n const checkIsContentEmpty = useCallback(\n (): boolean => isContentEmpty(chatInputRef.current),\n [],\n );\n\n // Helper function to properly clear contentEditable for placeholder display\n const clearEmptyContentHandler = useCallback((): void => {\n clearEmptyContent(chatInputRef.current);\n }, []);\n\n // Get current message text\n const getCurrentMessage = useCallback(\n (): string => getTextContent(chatInputRef.current),\n [],\n );\n\n return {\n chatInputRef,\n messageToSend,\n checkIsContentEmpty,\n clearEmptyContentHandler,\n getCurrentMessage,\n saveDraft,\n clearDraft,\n };\n};\n"],"mappings":";;;;;;AAaA,IAAa,UAA0B;CACrC,IAAM,IAAe,EAA8B,KAAK,EAIlD,EAAE,sBAAmB,GAA2B,EAEhD,EACJ,eAAe,GACf,yBACA,qBACA,4BACE,GAAsB,EAGpB,EAAE,cAAW,kBAAe,EAChC,GACA,EACD,EAQK,IAAgB,IAAiB,IAAmB;
|
|
1
|
+
{"version":3,"file":"use-chat-input-logic.js","names":[],"sources":["../../../src/hooks/chat/use-chat-input-logic.ts"],"sourcesContent":["import { useRef, useCallback, useEffect } from \"react\";\nimport {\n isContentEmpty,\n clearEmptyContent,\n getTextContent,\n} from \"#/components/features/chat/utils/chat-input.utils\";\nimport { useConversationStore } from \"#/stores/conversation-store\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport { useDraftPersistence } from \"./use-draft-persistence\";\n\n/**\n * Hook for managing chat input content logic\n */\nexport const useChatInputLogic = () => {\n const chatInputRef = useRef<HTMLDivElement | null>(null);\n // Optional because the chat input also renders on the home page, where no\n // conversation route is mounted yet. Draft persistence is conversation-\n // scoped, so it no-ops when this is undefined.\n const { conversationId } = useOptionalConversationId();\n\n const {\n messageToSend: rawMessageToSend,\n messageRestoreIfEmpty,\n hasRightPanelToggled,\n setMessageToSend,\n clearMessageRestoreIfEmpty,\n setIsRightPanelShown,\n } = useConversationStore();\n\n // Draft persistence - saves to localStorage/sessionStorage, restores on mount\n const { saveDraft, clearDraft } = useDraftPersistence(\n conversationId,\n chatInputRef,\n );\n\n // On the home page (no conversationId) the right-panel / messageToSend\n // mechanism is not relevant. More importantly, a stale messageToSend value\n // in the Zustand store causes useAutoResize to overwrite the just-restored\n // sessionStorage draft with an empty string (see useAutoResize value effect).\n // Returning null here keeps value=undefined in useAutoResize so it never\n // touches the element content on the home page.\n const messageToSend = conversationId ? rawMessageToSend : null;\n\n // Restore a cancelled pending send back into the input only when empty.\n useEffect(() => {\n if (!conversationId || !messageRestoreIfEmpty) {\n return;\n }\n\n const currentText = getTextContent(chatInputRef.current).trim();\n if (currentText.length === 0) {\n setMessageToSend(messageRestoreIfEmpty.text);\n }\n clearMessageRestoreIfEmpty();\n }, [\n conversationId,\n messageRestoreIfEmpty,\n setMessageToSend,\n clearMessageRestoreIfEmpty,\n ]);\n\n // Save current input value when drawer state changes (conversation view only)\n useEffect(() => {\n if (!conversationId) return;\n if (chatInputRef.current) {\n const currentText = getTextContent(chatInputRef.current);\n setMessageToSend(currentText);\n setIsRightPanelShown(hasRightPanelToggled);\n }\n }, [\n conversationId,\n hasRightPanelToggled,\n setMessageToSend,\n setIsRightPanelShown,\n ]);\n\n // Helper function to check if contentEditable is truly empty\n const checkIsContentEmpty = useCallback(\n (): boolean => isContentEmpty(chatInputRef.current),\n [],\n );\n\n // Helper function to properly clear contentEditable for placeholder display\n const clearEmptyContentHandler = useCallback((): void => {\n clearEmptyContent(chatInputRef.current);\n }, []);\n\n // Get current message text\n const getCurrentMessage = useCallback(\n (): string => getTextContent(chatInputRef.current),\n [],\n );\n\n return {\n chatInputRef,\n messageToSend,\n checkIsContentEmpty,\n clearEmptyContentHandler,\n getCurrentMessage,\n saveDraft,\n clearDraft,\n };\n};\n"],"mappings":";;;;;;AAaA,IAAa,UAA0B;CACrC,IAAM,IAAe,EAA8B,KAAK,EAIlD,EAAE,sBAAmB,GAA2B,EAEhD,EACJ,eAAe,GACf,0BACA,yBACA,qBACA,+BACA,4BACE,GAAsB,EAGpB,EAAE,cAAW,kBAAe,EAChC,GACA,EACD,EAQK,IAAgB,IAAiB,IAAmB;AAoD1D,QAjDA,QAAgB;AACV,GAAC,KAAkB,CAAC,MAIJ,EAAe,EAAa,QAAQ,CAAC,MACrD,CAAY,WAAW,KACzB,EAAiB,EAAsB,KAAK,EAE9C,GAA4B;IAC3B;EACD;EACA;EACA;EACA;EACD,CAAC,EAGF,QAAgB;AACT,OACD,EAAa,YAEf,EADoB,EAAe,EAAa,QAC/B,CAAY,EAC7B,EAAqB,EAAqB;IAE3C;EACD;EACA;EACA;EACA;EACD,CAAC,EAmBK;EACL;EACA;EACA,qBAnB0B,QACX,EAAe,EAAa,QAAQ,EACnD,EAAE,CAiBF;EACA,0BAd+B,QAAwB;AACvD,KAAkB,EAAa,QAAQ;KACtC,EAAE,CAYH;EACA,mBAVwB,QACV,EAAe,EAAa,QAAQ,EAClD,EAAE,CAQF;EACA;EACA;EACD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../node_modules/react-i18next/dist/es/useTranslation.cjs`),t=require(`../../i18n/declaration.cjs`),n=require(`../../utils/custom-toast-handlers.cjs`),r=require(`../../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs`),i=require(`../../api/secrets-service.cjs`);let a=require(`react`);function o(e){return e.length<=3?e.join(`, `):`${e.slice(0,3).join(`, `)} … (+${e.length-3})`}function s(){let{t:s}=e.useTranslation(`openhands`),c=r.useQueryClient();return(0,a.useCallback)((e,r,a)=>{let l=e.filter(e=>a[e.key]&&(r[e.key]??``).trim());l.length!==0&&Promise.allSettled(l.map(e=>i.SecretsService.createSecret(e.key,r[e.key].trim(),e.label))).then(e=>{let r=l.filter((t,n)=>e[n].status===`fulfilled`).map(e=>e.key),i=l.filter((t,n)=>e[n].status===`rejected`).map(e=>e.key);r.length>0&&(c.invalidateQueries({queryKey:[`secrets-search`]}),c.invalidateQueries({queryKey:[`secrets`]}),n.displaySuccessToast(s(t.I18nKey.MCP$SECRETS_SAVED,{keys:o(r)}))),i.length>0&&n.displayErrorToast(s(t.I18nKey.MCP$SECRETS_SAVE_FAILED,{keys:o(i)}))})},[s,c])}exports.useSaveFieldsAsSecrets=s;
|
|
2
|
+
//# sourceMappingURL=use-save-fields-as-secrets.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-save-fields-as-secrets.cjs","names":[],"sources":["../../../src/hooks/mutation/use-save-fields-as-secrets.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport type { MarketplaceField } from \"@openhands/extensions/integrations\";\nimport { SecretsService } from \"#/api/secrets-service\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport {\n displayErrorToast,\n displaySuccessToast,\n} from \"#/utils/custom-toast-handlers\";\n\n/** Truncates a list of key names for display in toasts. */\nfunction formatKeyList(keys: string[]): string {\n const MAX = 3;\n if (keys.length <= MAX) return keys.join(\", \");\n return `${keys.slice(0, MAX).join(\", \")} … (+${keys.length - MAX})`;\n}\n\n/**\n * Returns a stable, fire-and-forget function that upserts checked envFields\n * into the Secrets store. MCP server config and the Secrets store are\n * separate — this bridges the gap so Automation Server can access credentials\n * without a separate manual step. Internally, `SecretsService.createSecret`\n * is an upsert, so existing secrets with the same name are overwritten safely.\n */\nexport function useSaveFieldsAsSecrets() {\n const { t } = useTranslation(\"openhands\");\n const queryClient = useQueryClient();\n\n return useCallback(\n (\n envFields: MarketplaceField[],\n values: Record<string, string>,\n savedAsSecret: Record<string, boolean>,\n ): void => {\n const fieldsToSave = envFields.filter(\n (field) => savedAsSecret[field.key] && (values[field.key] ?? \"\").trim(),\n );\n if (fieldsToSave.length === 0) return;\n\n Promise.allSettled(\n fieldsToSave.map((field) =>\n SecretsService.createSecret(\n field.key,\n values[field.key].trim(),\n field.label,\n ),\n ),\n ).then((results) => {\n const saved = fieldsToSave\n .filter((_, i) => results[i].status === \"fulfilled\")\n .map((f) => f.key);\n const failed = fieldsToSave\n .filter((_, i) => results[i].status === \"rejected\")\n .map((f) => f.key);\n\n if (saved.length > 0) {\n // Refresh any cached secrets lists so a newly-saved secret shows up\n // in Settings → Secrets immediately. Without this, the 5-minute\n // staleTime on the secrets query (use-get-secrets.ts) can keep a\n // previously-loaded list stale and hide the new secret. Mirrors the\n // invalidation done by secret-form.tsx and secrets-settings.tsx.\n queryClient.invalidateQueries({ queryKey: [\"secrets-search\"] });\n queryClient.invalidateQueries({ queryKey: [\"secrets\"] });\n\n displaySuccessToast(\n t(I18nKey.MCP$SECRETS_SAVED, { keys: formatKeyList(saved) }),\n );\n }\n if (failed.length > 0) {\n displayErrorToast(\n t(I18nKey.MCP$SECRETS_SAVE_FAILED, { keys: formatKeyList(failed) }),\n );\n }\n });\n },\n [t, queryClient],\n );\n}\n"],"mappings":"uXAYA,SAAS,EAAc,EAAwB,CAG7C,OADI,EAAK,QAAU,EAAY,EAAK,KAAK,KAAK,CACvC,GAAG,EAAK,MAAM,EAAG,EAAI,CAAC,KAAK,KAAK,CAAC,OAAO,EAAK,OAAS,EAAI,GAUnE,SAAgB,GAAyB,CACvC,GAAM,CAAE,KAAM,EAAA,eAAe,YAAY,CACnC,EAAc,EAAA,gBAAgB,CAEpC,OAAA,EAAA,EAAA,cAEI,EACA,EACA,IACS,CACT,IAAM,EAAe,EAAU,OAC5B,GAAU,EAAc,EAAM,OAAS,EAAO,EAAM,MAAQ,IAAI,MAAM,CACxE,CACG,EAAa,SAAW,GAE5B,QAAQ,WACN,EAAa,IAAK,GAChB,EAAA,eAAe,aACb,EAAM,IACN,EAAO,EAAM,KAAK,MAAM,CACxB,EAAM,MACP,CACF,CACF,CAAC,KAAM,GAAY,CAClB,IAAM,EAAQ,EACX,QAAQ,EAAG,IAAM,EAAQ,GAAG,SAAW,YAAY,CACnD,IAAK,GAAM,EAAE,IAAI,CACd,EAAS,EACZ,QAAQ,EAAG,IAAM,EAAQ,GAAG,SAAW,WAAW,CAClD,IAAK,GAAM,EAAE,IAAI,CAEhB,EAAM,OAAS,IAMjB,EAAY,kBAAkB,CAAE,SAAU,CAAC,iBAAiB,CAAE,CAAC,CAC/D,EAAY,kBAAkB,CAAE,SAAU,CAAC,UAAU,CAAE,CAAC,CAExD,EAAA,oBACE,EAAE,EAAA,QAAQ,kBAAmB,CAAE,KAAM,EAAc,EAAM,CAAE,CAAC,CAC7D,EAEC,EAAO,OAAS,GAClB,EAAA,kBACE,EAAE,EAAA,QAAQ,wBAAyB,CAAE,KAAM,EAAc,EAAO,CAAE,CAAC,CACpE,EAEH,EAEJ,CAAC,EAAG,EAAY,CACjB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { MarketplaceField } from "@openhands/extensions/integrations";
|
|
2
|
+
/**
|
|
3
|
+
* Returns a stable, fire-and-forget function that upserts checked envFields
|
|
4
|
+
* into the Secrets store. MCP server config and the Secrets store are
|
|
5
|
+
* separate — this bridges the gap so Automation Server can access credentials
|
|
6
|
+
* without a separate manual step. Internally, `SecretsService.createSecret`
|
|
7
|
+
* is an upsert, so existing secrets with the same name are overwritten safely.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useSaveFieldsAsSecrets(): (envFields: MarketplaceField[], values: Record<string, string>, savedAsSecret: Record<string, boolean>) => void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useTranslation as e } from "../../node_modules/react-i18next/dist/es/useTranslation.js";
|
|
2
|
+
import { I18nKey as t } from "../../i18n/declaration.js";
|
|
3
|
+
import { displayErrorToast as n, displaySuccessToast as r } from "../../utils/custom-toast-handlers.js";
|
|
4
|
+
import { useQueryClient as i } from "../../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js";
|
|
5
|
+
import { SecretsService as a } from "../../api/secrets-service.js";
|
|
6
|
+
import { useCallback as o } from "react";
|
|
7
|
+
//#region src/hooks/mutation/use-save-fields-as-secrets.ts
|
|
8
|
+
function s(e) {
|
|
9
|
+
return e.length <= 3 ? e.join(", ") : `${e.slice(0, 3).join(", ")} … (+${e.length - 3})`;
|
|
10
|
+
}
|
|
11
|
+
function c() {
|
|
12
|
+
let { t: c } = e("openhands"), l = i();
|
|
13
|
+
return o((e, i, o) => {
|
|
14
|
+
let u = e.filter((e) => o[e.key] && (i[e.key] ?? "").trim());
|
|
15
|
+
u.length !== 0 && Promise.allSettled(u.map((e) => a.createSecret(e.key, i[e.key].trim(), e.label))).then((e) => {
|
|
16
|
+
let i = u.filter((t, n) => e[n].status === "fulfilled").map((e) => e.key), a = u.filter((t, n) => e[n].status === "rejected").map((e) => e.key);
|
|
17
|
+
i.length > 0 && (l.invalidateQueries({ queryKey: ["secrets-search"] }), l.invalidateQueries({ queryKey: ["secrets"] }), r(c(t.MCP$SECRETS_SAVED, { keys: s(i) }))), a.length > 0 && n(c(t.MCP$SECRETS_SAVE_FAILED, { keys: s(a) }));
|
|
18
|
+
});
|
|
19
|
+
}, [c, l]);
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { c as useSaveFieldsAsSecrets };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=use-save-fields-as-secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-save-fields-as-secrets.js","names":[],"sources":["../../../src/hooks/mutation/use-save-fields-as-secrets.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport type { MarketplaceField } from \"@openhands/extensions/integrations\";\nimport { SecretsService } from \"#/api/secrets-service\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport {\n displayErrorToast,\n displaySuccessToast,\n} from \"#/utils/custom-toast-handlers\";\n\n/** Truncates a list of key names for display in toasts. */\nfunction formatKeyList(keys: string[]): string {\n const MAX = 3;\n if (keys.length <= MAX) return keys.join(\", \");\n return `${keys.slice(0, MAX).join(\", \")} … (+${keys.length - MAX})`;\n}\n\n/**\n * Returns a stable, fire-and-forget function that upserts checked envFields\n * into the Secrets store. MCP server config and the Secrets store are\n * separate — this bridges the gap so Automation Server can access credentials\n * without a separate manual step. Internally, `SecretsService.createSecret`\n * is an upsert, so existing secrets with the same name are overwritten safely.\n */\nexport function useSaveFieldsAsSecrets() {\n const { t } = useTranslation(\"openhands\");\n const queryClient = useQueryClient();\n\n return useCallback(\n (\n envFields: MarketplaceField[],\n values: Record<string, string>,\n savedAsSecret: Record<string, boolean>,\n ): void => {\n const fieldsToSave = envFields.filter(\n (field) => savedAsSecret[field.key] && (values[field.key] ?? \"\").trim(),\n );\n if (fieldsToSave.length === 0) return;\n\n Promise.allSettled(\n fieldsToSave.map((field) =>\n SecretsService.createSecret(\n field.key,\n values[field.key].trim(),\n field.label,\n ),\n ),\n ).then((results) => {\n const saved = fieldsToSave\n .filter((_, i) => results[i].status === \"fulfilled\")\n .map((f) => f.key);\n const failed = fieldsToSave\n .filter((_, i) => results[i].status === \"rejected\")\n .map((f) => f.key);\n\n if (saved.length > 0) {\n // Refresh any cached secrets lists so a newly-saved secret shows up\n // in Settings → Secrets immediately. Without this, the 5-minute\n // staleTime on the secrets query (use-get-secrets.ts) can keep a\n // previously-loaded list stale and hide the new secret. Mirrors the\n // invalidation done by secret-form.tsx and secrets-settings.tsx.\n queryClient.invalidateQueries({ queryKey: [\"secrets-search\"] });\n queryClient.invalidateQueries({ queryKey: [\"secrets\"] });\n\n displaySuccessToast(\n t(I18nKey.MCP$SECRETS_SAVED, { keys: formatKeyList(saved) }),\n );\n }\n if (failed.length > 0) {\n displayErrorToast(\n t(I18nKey.MCP$SECRETS_SAVE_FAILED, { keys: formatKeyList(failed) }),\n );\n }\n });\n },\n [t, queryClient],\n );\n}\n"],"mappings":";;;;;;;AAYA,SAAS,EAAc,GAAwB;AAG7C,QADI,EAAK,UAAU,IAAY,EAAK,KAAK,KAAK,GACvC,GAAG,EAAK,MAAM,GAAG,EAAI,CAAC,KAAK,KAAK,CAAC,OAAO,EAAK,SAAS,EAAI;;AAUnE,SAAgB,IAAyB;CACvC,IAAM,EAAE,SAAM,EAAe,YAAY,EACnC,IAAc,GAAgB;AAEpC,QAAO,GAEH,GACA,GACA,MACS;EACT,IAAM,IAAe,EAAU,QAC5B,MAAU,EAAc,EAAM,SAAS,EAAO,EAAM,QAAQ,IAAI,MAAM,CACxE;AACG,IAAa,WAAW,KAE5B,QAAQ,WACN,EAAa,KAAK,MAChB,EAAe,aACb,EAAM,KACN,EAAO,EAAM,KAAK,MAAM,EACxB,EAAM,MACP,CACF,CACF,CAAC,MAAM,MAAY;GAClB,IAAM,IAAQ,EACX,QAAQ,GAAG,MAAM,EAAQ,GAAG,WAAW,YAAY,CACnD,KAAK,MAAM,EAAE,IAAI,EACd,IAAS,EACZ,QAAQ,GAAG,MAAM,EAAQ,GAAG,WAAW,WAAW,CAClD,KAAK,MAAM,EAAE,IAAI;AAepB,GAbI,EAAM,SAAS,MAMjB,EAAY,kBAAkB,EAAE,UAAU,CAAC,iBAAiB,EAAE,CAAC,EAC/D,EAAY,kBAAkB,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,EAExD,EACE,EAAE,EAAQ,mBAAmB,EAAE,MAAM,EAAc,EAAM,EAAE,CAAC,CAC7D,GAEC,EAAO,SAAS,KAClB,EACE,EAAE,EAAQ,yBAAyB,EAAE,MAAM,EAAc,EAAO,EAAE,CAAC,CACpE;IAEH;IAEJ,CAAC,GAAG,EAAY,CACjB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs`),
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/agent-server/core/base/common.cjs`),t=require(`../../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs`),n=require(`../../node_modules/@tanstack/react-query/build/modern/useMutation.cjs`),r=require(`../../stores/error-message-store.cjs`),i=require(`./conversation-mutation-utils.cjs`);var a=()=>{let a=t.useQueryClient(),o=r.useErrorMessageStore(e=>e.removeErrorMessage);return n.useMutation({mutationKey:[`start-conversation`],mutationFn:async e=>i.resumeConversation(e.conversationId),onMutate:async()=>(await a.cancelQueries({queryKey:[`user`,`conversations`]}),{previousConversations:a.getQueryData([`user`,`conversations`])}),onError:(e,t,n)=>{n?.previousConversations&&a.setQueryData([`user`,`conversations`],n.previousConversations)},onSettled:(e,t,n)=>{i.invalidateConversationQueries(a,n.conversationId)},onSuccess:(t,n)=>{o(),i.updateConversationExecutionStatusInCache(a,n.conversationId,e.ExecutionStatus.RUNNING)}})};exports.useUnifiedResumeConversation=a;
|
|
2
2
|
//# sourceMappingURL=use-unified-start-conversation.cjs.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { ExecutionStatus as e } from "../../types/agent-server/core/base/common.js";
|
|
2
|
+
import { useQueryClient as t } from "../../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js";
|
|
3
|
+
import { useMutation as n } from "../../node_modules/@tanstack/react-query/build/modern/useMutation.js";
|
|
4
|
+
import { useErrorMessageStore as r } from "../../stores/error-message-store.js";
|
|
5
5
|
import { invalidateConversationQueries as i, resumeConversation as a, updateConversationExecutionStatusInCache as o } from "./conversation-mutation-utils.js";
|
|
6
6
|
//#region src/hooks/mutation/use-unified-start-conversation.ts
|
|
7
7
|
var s = () => {
|
|
8
|
-
let s =
|
|
9
|
-
return
|
|
8
|
+
let s = t(), c = r((e) => e.removeErrorMessage);
|
|
9
|
+
return n({
|
|
10
10
|
mutationKey: ["start-conversation"],
|
|
11
11
|
mutationFn: async (e) => a(e.conversationId),
|
|
12
12
|
onMutate: async () => (await s.cancelQueries({ queryKey: ["user", "conversations"] }), { previousConversations: s.getQueryData(["user", "conversations"]) }),
|
|
@@ -16,8 +16,8 @@ var s = () => {
|
|
|
16
16
|
onSettled: (e, t, n) => {
|
|
17
17
|
i(s, n.conversationId);
|
|
18
18
|
},
|
|
19
|
-
onSuccess: (
|
|
20
|
-
c(), o(s,
|
|
19
|
+
onSuccess: (t, n) => {
|
|
20
|
+
c(), o(s, n.conversationId, e.RUNNING);
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
23
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../node_modules/react-i18next/dist/es/useTranslation.cjs`),t=require(`../../i18n/declaration.cjs`),n=require(`../../context/navigation-context.cjs`),
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../node_modules/react-i18next/dist/es/useTranslation.cjs`),t=require(`../../i18n/declaration.cjs`),n=require(`../../types/agent-server/core/base/common.cjs`),r=require(`../../context/navigation-context.cjs`),i=require(`../../node_modules/react-hot-toast/dist/index.cjs`),a=require(`../../utils/custom-toast-handlers.cjs`),o=require(`../../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs`),s=require(`../../node_modules/@tanstack/react-query/build/modern/useMutation.cjs`),c=require(`./conversation-mutation-utils.cjs`);var l=()=>{let{t:l}=e.useTranslation(`openhands`),u=o.useQueryClient(),{conversationId:d,navigate:f}=r.useNavigation();return s.useMutation({mutationKey:[`stop-conversation`],mutationFn:async e=>c.pauseConversation(e.conversationId),onMutate:async()=>{let e=i.zt.loading(l(t.I18nKey.TOAST$STOPPING_CONVERSATION),a.TOAST_OPTIONS);return await u.cancelQueries({queryKey:[`user`,`conversations`]}),{previousConversations:u.getQueryData([`user`,`conversations`]),toastId:e}},onError:(e,n,r)=>{r?.toastId&&i.zt.dismiss(r.toastId),a.displayErrorToast(l(t.I18nKey.TOAST$FAILED_TO_STOP_CONVERSATION)),r?.previousConversations&&u.setQueryData([`user`,`conversations`],r.previousConversations)},onSuccess:(e,r,o)=>{o?.toastId&&i.zt.dismiss(o.toastId),i.zt.success(l(t.I18nKey.TOAST$CONVERSATION_STOPPED),a.TOAST_OPTIONS),c.patchConversationInCache(u,r.conversationId,{execution_status:n.ExecutionStatus.PAUSED,sandbox_status:`PAUSED`}),d===r.conversationId&&f(`/conversations`)}})};exports.useUnifiedPauseConversation=l;
|
|
2
2
|
//# sourceMappingURL=use-unified-stop-conversation.cjs.map
|
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
import { useTranslation as e } from "../../node_modules/react-i18next/dist/es/useTranslation.js";
|
|
2
2
|
import { I18nKey as t } from "../../i18n/declaration.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
3
|
+
import { ExecutionStatus as n } from "../../types/agent-server/core/base/common.js";
|
|
4
|
+
import { useNavigation as r } from "../../context/navigation-context.js";
|
|
5
|
+
import { zt as i } from "../../node_modules/react-hot-toast/dist/index.js";
|
|
6
|
+
import { TOAST_OPTIONS as a, displayErrorToast as o } from "../../utils/custom-toast-handlers.js";
|
|
7
|
+
import { useQueryClient as s } from "../../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js";
|
|
8
|
+
import { useMutation as c } from "../../node_modules/@tanstack/react-query/build/modern/useMutation.js";
|
|
9
9
|
import { patchConversationInCache as l, pauseConversation as u } from "./conversation-mutation-utils.js";
|
|
10
10
|
//#region src/hooks/mutation/use-unified-stop-conversation.ts
|
|
11
11
|
var d = () => {
|
|
12
|
-
let { t: d } = e("openhands"), f =
|
|
13
|
-
return
|
|
12
|
+
let { t: d } = e("openhands"), f = s(), { conversationId: p, navigate: m } = r();
|
|
13
|
+
return c({
|
|
14
14
|
mutationKey: ["stop-conversation"],
|
|
15
15
|
mutationFn: async (e) => u(e.conversationId),
|
|
16
16
|
onMutate: async () => {
|
|
17
|
-
let e =
|
|
17
|
+
let e = i.loading(d(t.TOAST$STOPPING_CONVERSATION), a);
|
|
18
18
|
return await f.cancelQueries({ queryKey: ["user", "conversations"] }), {
|
|
19
19
|
previousConversations: f.getQueryData(["user", "conversations"]),
|
|
20
20
|
toastId: e
|
|
21
21
|
};
|
|
22
22
|
},
|
|
23
|
-
onError: (e, n,
|
|
24
|
-
|
|
23
|
+
onError: (e, n, r) => {
|
|
24
|
+
r?.toastId && i.dismiss(r.toastId), o(d(t.TOAST$FAILED_TO_STOP_CONVERSATION)), r?.previousConversations && f.setQueryData(["user", "conversations"], r.previousConversations);
|
|
25
25
|
},
|
|
26
|
-
onSuccess: (e,
|
|
27
|
-
|
|
28
|
-
execution_status:
|
|
26
|
+
onSuccess: (e, r, o) => {
|
|
27
|
+
o?.toastId && i.dismiss(o.toastId), i.success(d(t.TOAST$CONVERSATION_STOPPED), a), l(f, r.conversationId, {
|
|
28
|
+
execution_status: n.PAUSED,
|
|
29
29
|
sandbox_status: "PAUSED"
|
|
30
|
-
}), p ===
|
|
30
|
+
}), p === r.conversationId && m("/conversations");
|
|
31
31
|
}
|
|
32
32
|
});
|
|
33
33
|
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type AcpAuthStatus } from "#/api/acp-service/acp-service.api";
|
|
2
|
+
export type { AcpAuthStatus };
|
|
3
|
+
interface UseAcpAuthStatusOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Gate the probe to when the consuming surface is actually visible — the
|
|
6
|
+
* onboarding modal mounts every slide at once, so without this the probe
|
|
7
|
+
* would fire (and spin a subprocess) before the user reaches the step and
|
|
8
|
+
* before the backend is confirmed connected. Defaults to ``true``.
|
|
9
|
+
*/
|
|
10
|
+
enabled?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* React Query wrapper around {@link probeAcpAuth}.
|
|
14
|
+
*
|
|
15
|
+
* Gated to **local backends only**: the detection command runs wherever the
|
|
16
|
+
* agent-server runs, and a provider CLI / credentials file is only reliably
|
|
17
|
+
* present on the user's own machine. On a remote/cloud backend they're ~never
|
|
18
|
+
* there, so we skip the probe, return ``"unknown"``, and let the caller fall
|
|
19
|
+
* back to the (already optional) API-key fields.
|
|
20
|
+
*
|
|
21
|
+
* Eligibility is intentionally *not* tied to whether the provider has API-key
|
|
22
|
+
* fields: subscription/OAuth providers (e.g. Gemini) are detectable too, and an
|
|
23
|
+
* unknown ``providerKey`` simply classifies as ``"unknown"``. The caller renders
|
|
24
|
+
* this hook only for ACP providers, so any local backend is probeable.
|
|
25
|
+
*
|
|
26
|
+
* The probe runs a subprocess on the agent-server, so the result is cached for
|
|
27
|
+
* the session (``staleTime: Infinity``, no refetch on focus/mount) — one probe
|
|
28
|
+
* per provider per backend.
|
|
29
|
+
*/
|
|
30
|
+
export declare function useAcpAuthStatus(providerKey: string | null | undefined, options?: UseAcpAuthStatusOptions): {
|
|
31
|
+
status: AcpAuthStatus;
|
|
32
|
+
/** True while the first probe for this provider is in flight. */
|
|
33
|
+
isChecking: boolean;
|
|
34
|
+
/** Whether a probe can run at all on this backend (local backends only). */
|
|
35
|
+
isSupported: boolean;
|
|
36
|
+
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../node_modules/@tanstack/react-query/build/modern/useQuery.cjs`),
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../api/backend-registry/active-store.cjs`),t=require(`../../contexts/active-backend-context.cjs`),n=require(`../../node_modules/@tanstack/react-query/build/modern/useQuery.cjs`),r=require(`../../api/settings-service/settings-service.api.cjs`),i=require(`./use-is-authed.cjs`);var a=(a,o)=>{let{data:s}=i.useIsAuthed(),{backend:c,orgId:l}=t.useActiveBackend(),u=!e.isNoBackend(c),{data:d,error:f,isLoading:p,isFetching:m}=n.useQuery({queryKey:[`settings-schema`,a,c.id,l,c.kind,c.host,c.apiKey],queryFn:a===`conversation`?r.default.getConversationSettingsSchema:r.default.getSettingsSchema,retry:!1,refetchOnWindowFocus:!1,staleTime:1e3*60*5,gcTime:1e3*60*15,enabled:!o&&!!s&&u,meta:{disableToast:!0}});return o?{data:o,error:null,isLoading:!1,isFetching:!1}:{data:d,error:f,isLoading:p,isFetching:m}},o=e=>a(`agent`,e),s=e=>a(`conversation`,e);exports.useAgentSettingsSchema=o,exports.useConversationSettingsSchema=s;
|
|
2
2
|
//# sourceMappingURL=use-agent-settings-schema.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-agent-settings-schema.cjs","names":[],"sources":["../../../src/hooks/query/use-agent-settings-schema.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport SettingsService from \"#/api/settings-service/settings-service.api\";\nimport { SettingsSchema } from \"#/types/settings\";\nimport { useIsAuthed } from \"./use-is-authed\";\n\nconst useSettingsSchema = (\n type: \"agent\" | \"conversation\",\n fallbackSchema?: SettingsSchema | null,\n) => {\n const { data: userIsAuthenticated } = useIsAuthed();\n const { data, error, isLoading, isFetching } = useQuery({\n queryKey: [\"settings-schema\"
|
|
1
|
+
{"version":3,"file":"use-agent-settings-schema.cjs","names":[],"sources":["../../../src/hooks/query/use-agent-settings-schema.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { isNoBackend } from \"#/api/backend-registry/active-store\";\nimport SettingsService from \"#/api/settings-service/settings-service.api\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { SettingsSchema } from \"#/types/settings\";\nimport { useIsAuthed } from \"./use-is-authed\";\n\nconst useSettingsSchema = (\n type: \"agent\" | \"conversation\",\n fallbackSchema?: SettingsSchema | null,\n) => {\n const { data: userIsAuthenticated } = useIsAuthed();\n const { backend, orgId } = useActiveBackend();\n const hasBackend = !isNoBackend(backend);\n const { data, error, isLoading, isFetching } = useQuery({\n queryKey: [\n \"settings-schema\",\n type,\n backend.id,\n orgId,\n backend.kind,\n backend.host,\n backend.apiKey,\n ],\n queryFn:\n type === \"conversation\"\n ? SettingsService.getConversationSettingsSchema\n : SettingsService.getSettingsSchema,\n retry: false,\n refetchOnWindowFocus: false,\n staleTime: 1000 * 60 * 5,\n gcTime: 1000 * 60 * 15,\n enabled: !fallbackSchema && !!userIsAuthenticated && hasBackend,\n meta: {\n disableToast: true,\n },\n });\n\n if (fallbackSchema) {\n return {\n data: fallbackSchema,\n error: null,\n isLoading: false,\n isFetching: false,\n };\n }\n\n return {\n data,\n error,\n isLoading,\n isFetching,\n };\n};\n\nexport const useAgentSettingsSchema = (\n fallbackSchema?: SettingsSchema | null,\n) => useSettingsSchema(\"agent\", fallbackSchema);\n\nexport const useConversationSettingsSchema = (\n fallbackSchema?: SettingsSchema | null,\n) => useSettingsSchema(\"conversation\", fallbackSchema);\n"],"mappings":"wVAOA,IAAM,GACJ,EACA,IACG,CACH,GAAM,CAAE,KAAM,GAAwB,EAAA,aAAa,CAC7C,CAAE,UAAS,SAAU,EAAA,kBAAkB,CACvC,EAAa,CAAC,EAAA,YAAY,EAAQ,CAClC,CAAE,OAAM,QAAO,YAAW,cAAe,EAAA,SAAS,CACtD,SAAU,CACR,kBACA,EACA,EAAQ,GACR,EACA,EAAQ,KACR,EAAQ,KACR,EAAQ,OACT,CACD,QACE,IAAS,eACL,EAAA,QAAgB,8BAChB,EAAA,QAAgB,kBACtB,MAAO,GACP,qBAAsB,GACtB,UAAW,IAAO,GAAK,EACvB,OAAQ,IAAO,GAAK,GACpB,QAAS,CAAC,GAAkB,CAAC,CAAC,GAAuB,EACrD,KAAM,CACJ,aAAc,GACf,CACF,CAAC,CAWF,OATI,EACK,CACL,KAAM,EACN,MAAO,KACP,UAAW,GACX,WAAY,GACb,CAGI,CACL,OACA,QACA,YACA,aACD,EAGU,EACX,GACG,EAAkB,QAAS,EAAe,CAElC,EACX,GACG,EAAkB,eAAgB,EAAe"}
|
|
@@ -1,31 +1,41 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import t from "../../
|
|
3
|
-
import {
|
|
1
|
+
import { isNoBackend as e } from "../../api/backend-registry/active-store.js";
|
|
2
|
+
import { useActiveBackend as t } from "../../contexts/active-backend-context.js";
|
|
3
|
+
import { useQuery as n } from "../../node_modules/@tanstack/react-query/build/modern/useQuery.js";
|
|
4
|
+
import r from "../../api/settings-service/settings-service.api.js";
|
|
5
|
+
import { useIsAuthed as i } from "./use-is-authed.js";
|
|
4
6
|
//#region src/hooks/query/use-agent-settings-schema.ts
|
|
5
|
-
var
|
|
6
|
-
let { data:
|
|
7
|
-
queryKey: [
|
|
8
|
-
|
|
7
|
+
var a = (a, o) => {
|
|
8
|
+
let { data: s } = i(), { backend: c, orgId: l } = t(), u = !e(c), { data: d, error: f, isLoading: p, isFetching: m } = n({
|
|
9
|
+
queryKey: [
|
|
10
|
+
"settings-schema",
|
|
11
|
+
a,
|
|
12
|
+
c.id,
|
|
13
|
+
l,
|
|
14
|
+
c.kind,
|
|
15
|
+
c.host,
|
|
16
|
+
c.apiKey
|
|
17
|
+
],
|
|
18
|
+
queryFn: a === "conversation" ? r.getConversationSettingsSchema : r.getSettingsSchema,
|
|
9
19
|
retry: !1,
|
|
10
20
|
refetchOnWindowFocus: !1,
|
|
11
21
|
staleTime: 1e3 * 60 * 5,
|
|
12
22
|
gcTime: 1e3 * 60 * 15,
|
|
13
|
-
enabled: !
|
|
23
|
+
enabled: !o && !!s && u,
|
|
14
24
|
meta: { disableToast: !0 }
|
|
15
25
|
});
|
|
16
|
-
return
|
|
17
|
-
data:
|
|
26
|
+
return o ? {
|
|
27
|
+
data: o,
|
|
18
28
|
error: null,
|
|
19
29
|
isLoading: !1,
|
|
20
30
|
isFetching: !1
|
|
21
31
|
} : {
|
|
22
|
-
data:
|
|
23
|
-
error:
|
|
24
|
-
isLoading:
|
|
25
|
-
isFetching:
|
|
32
|
+
data: d,
|
|
33
|
+
error: f,
|
|
34
|
+
isLoading: p,
|
|
35
|
+
isFetching: m
|
|
26
36
|
};
|
|
27
|
-
},
|
|
37
|
+
}, o = (e) => a("agent", e), s = (e) => a("conversation", e);
|
|
28
38
|
//#endregion
|
|
29
|
-
export {
|
|
39
|
+
export { o as useAgentSettingsSchema, s as useConversationSettingsSchema };
|
|
30
40
|
|
|
31
41
|
//# sourceMappingURL=use-agent-settings-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-agent-settings-schema.js","names":[],"sources":["../../../src/hooks/query/use-agent-settings-schema.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport SettingsService from \"#/api/settings-service/settings-service.api\";\nimport { SettingsSchema } from \"#/types/settings\";\nimport { useIsAuthed } from \"./use-is-authed\";\n\nconst useSettingsSchema = (\n type: \"agent\" | \"conversation\",\n fallbackSchema?: SettingsSchema | null,\n) => {\n const { data: userIsAuthenticated } = useIsAuthed();\n const { data, error, isLoading, isFetching } = useQuery({\n queryKey: [\"settings-schema\"
|
|
1
|
+
{"version":3,"file":"use-agent-settings-schema.js","names":[],"sources":["../../../src/hooks/query/use-agent-settings-schema.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { isNoBackend } from \"#/api/backend-registry/active-store\";\nimport SettingsService from \"#/api/settings-service/settings-service.api\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { SettingsSchema } from \"#/types/settings\";\nimport { useIsAuthed } from \"./use-is-authed\";\n\nconst useSettingsSchema = (\n type: \"agent\" | \"conversation\",\n fallbackSchema?: SettingsSchema | null,\n) => {\n const { data: userIsAuthenticated } = useIsAuthed();\n const { backend, orgId } = useActiveBackend();\n const hasBackend = !isNoBackend(backend);\n const { data, error, isLoading, isFetching } = useQuery({\n queryKey: [\n \"settings-schema\",\n type,\n backend.id,\n orgId,\n backend.kind,\n backend.host,\n backend.apiKey,\n ],\n queryFn:\n type === \"conversation\"\n ? SettingsService.getConversationSettingsSchema\n : SettingsService.getSettingsSchema,\n retry: false,\n refetchOnWindowFocus: false,\n staleTime: 1000 * 60 * 5,\n gcTime: 1000 * 60 * 15,\n enabled: !fallbackSchema && !!userIsAuthenticated && hasBackend,\n meta: {\n disableToast: true,\n },\n });\n\n if (fallbackSchema) {\n return {\n data: fallbackSchema,\n error: null,\n isLoading: false,\n isFetching: false,\n };\n }\n\n return {\n data,\n error,\n isLoading,\n isFetching,\n };\n};\n\nexport const useAgentSettingsSchema = (\n fallbackSchema?: SettingsSchema | null,\n) => useSettingsSchema(\"agent\", fallbackSchema);\n\nexport const useConversationSettingsSchema = (\n fallbackSchema?: SettingsSchema | null,\n) => useSettingsSchema(\"conversation\", fallbackSchema);\n"],"mappings":";;;;;;AAOA,IAAM,KACJ,GACA,MACG;CACH,IAAM,EAAE,MAAM,MAAwB,GAAa,EAC7C,EAAE,YAAS,aAAU,GAAkB,EACvC,IAAa,CAAC,EAAY,EAAQ,EAClC,EAAE,SAAM,UAAO,cAAW,kBAAe,EAAS;EACtD,UAAU;GACR;GACA;GACA,EAAQ;GACR;GACA,EAAQ;GACR,EAAQ;GACR,EAAQ;GACT;EACD,SACE,MAAS,iBACL,EAAgB,gCAChB,EAAgB;EACtB,OAAO;EACP,sBAAsB;EACtB,WAAW,MAAO,KAAK;EACvB,QAAQ,MAAO,KAAK;EACpB,SAAS,CAAC,KAAkB,CAAC,CAAC,KAAuB;EACrD,MAAM,EACJ,cAAc,IACf;EACF,CAAC;AAWF,QATI,IACK;EACL,MAAM;EACN,OAAO;EACP,WAAW;EACX,YAAY;EACb,GAGI;EACL;EACA;EACA;EACA;EACD;GAGU,KACX,MACG,EAAkB,SAAS,EAAe,EAElC,KACX,MACG,EAAkB,gBAAgB,EAAe"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../api/backend-registry/health-store.cjs`),n=require(`../../node_modules/@openhands/typescript-client/dist/client/
|
|
1
|
+
const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../api/backend-registry/health-store.cjs`),n=require(`../../node_modules/@openhands/typescript-client/dist/client/settings-client.cjs`),r=require(`../../node_modules/@tanstack/react-query/build/modern/useQueries.cjs`),i=require(`../../api/agent-server-client-options.cjs`),a=require(`../../api/agent-server-compatibility.cjs`),o=require(`../../api/cloud/organization-service.api.cjs`);let s=require(`react`);s=e.__toESM(s,1);var c=1e4,l=4e3,u=`Invalid API key`;function d(e){return e===u}async function f(e){if(e.kind===`cloud`)return await o.getCurrentCloudApiKey(e),!0;try{await new n.SettingsClient(i.getAgentServerClientOptions({host:e.host,sessionApiKey:e.apiKey||null,timeout:l})).getSettings()}catch(e){throw a.isSdkHttpStatusError(e,401)?Error(u):e}return!0}function p(e,n={}){let{probeDisabledOnce:i=!1}=n,a=s.default.useSyncExternalStore(t.subscribeBackendHealth,t.getHealthSnapshot,t.getHealthSnapshot),o=r.useQueries({queries:e.map(e=>{let n=a[e.id]?.disabled===!0,r=!n||i;return{queryKey:[`backend-health`,e.id,e.kind,e.host,e.apiKey??``],queryFn:async()=>{try{let n=await f(e);return t.recordBackendSuccess(e.id),n}catch(n){throw t.recordBackendFailure(e.id,n),n}},enabled:r,refetchInterval:n?!1:c,refetchIntervalInBackground:!1,refetchOnMount:n&&i?`always`:!0,refetchOnReconnect:!n,refetchOnWindowFocus:!n,retry:!1,staleTime:n?0:c,meta:{disableToast:!0}}})}),l={};return e.forEach((e,t)=>{let n=o[t],r=a[e.id],i=r?.disabled===!0,s=r?.consecutiveFailures??0,c=r?.lastError??null,u;u=i?!1:n.isSuccess?!0:n.isError?!1:null,l[e.id]={isConnected:u,consecutiveFailures:s,lastError:c,disabled:i}}),l}exports.isInvalidBackendApiKeyHealthError=d,exports.useBackendsHealth=p;
|
|
2
2
|
//# sourceMappingURL=use-backends-health.cjs.map
|