@openhands/agent-canvas 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/README.windows.md +2 -2
- package/build/assets/Trans-De9RwQhA.js +1 -0
- package/build/assets/__vite-browser-external-4xJsU2-u.js +1 -0
- package/build/assets/{acp-providers-B_ZxlEbx.js → acp-providers-D_D8VUpP.js} +1 -1
- package/build/assets/active-backend-context-u2tdYRgH.js +1 -0
- package/build/assets/add-backend-modal-DIEyAkA4.js +1 -0
- package/build/assets/agent-profiles-settings-BovdV4N8.js +1 -0
- package/build/assets/{agent-server-client-options-CxnCYyIW.js → agent-server-client-options-DVLRd9sw.js} +1 -1
- package/build/assets/agent-server-conversation-service.api-BP73yONA.js +5 -0
- package/build/assets/agent-settings-FGL3Yvkp.js +1 -0
- package/build/assets/agent-settings-Ofbh6UTD.js +2 -0
- package/build/assets/alert-banner-BW0wRYw6.js +1 -0
- package/build/assets/api-key-entry-screen-CZIdRmUJ.js +1 -0
- package/build/assets/app-settings-BHJ9nKti.js +1 -0
- package/build/assets/automation-detail-DwYGzLkp.js +2 -0
- package/build/assets/automations-list-CuAfJmMW.js +1 -0
- package/build/assets/back-nav-button-BYmxFxGt.js +1 -0
- package/build/assets/backend-form-modal-BiaOB2C4.js +1 -0
- package/build/assets/backend-synced-settings-badge-Bs3FSXsS.js +1 -0
- package/build/assets/base-modal-CC5Pp8CF.js +1 -0
- package/build/assets/bot-D7eUAuSB.js +1 -0
- package/build/assets/brand-button-DKPMEKcW.js +1 -0
- package/build/assets/{browser-CCwPzPsD.js → browser-B39N74jU.js} +2 -2
- package/build/assets/browser-store-BI6uklCG.js +1 -0
- package/build/assets/browser-tab-aiDg7aEn.js +1 -0
- package/build/assets/chat-send-button-DxuZIoW8.js +1 -0
- package/build/assets/check-Bvi71siz.js +1 -0
- package/build/assets/checkmark-h7udgXMM.js +1 -0
- package/build/assets/{chevron-down-BxZEAIv4.js → chevron-down-CI8A6tet.js} +1 -1
- package/build/assets/circle-plus-check-toggle-T3eAIuPQ.js +1 -0
- package/build/assets/close-p3Op5lxI.js +1 -0
- package/build/assets/code-tag-DYlAhEQY.js +1 -0
- package/build/assets/{color-themes-CTNRQd1a.js → color-themes-DPBzNtVg.js} +4 -4
- package/build/assets/combobox-caret-CLGvOs32.js +1 -0
- package/build/assets/command-menu-DKrLCRla.js +1 -0
- package/build/assets/{command-store-C-57Heey.js → command-store-D8J5LMW1.js} +1 -1
- package/build/assets/condenser-settings-D_5vY4m3.js +1 -0
- package/build/assets/confirmation-modal-BK1F0A68.js +1 -0
- package/build/assets/context-menu-list-item-DBFzplWW.js +1 -0
- package/build/assets/conversation-DnVC6vRV.js +1 -0
- package/build/assets/conversation-local-storage-F6zVMM--.js +1 -0
- package/build/assets/conversation-panel-ZEz-z3az.js +1 -0
- package/build/assets/conversation-service.api-CqZcHr1c.js +1 -0
- package/build/assets/conversation-state-store-B2Bp32XI.js +1 -0
- package/build/assets/conversation-store-LptbOvKa.js +1 -0
- package/build/assets/conversation-tab-empty-state-m8IUkfMj.js +1 -0
- package/build/assets/conversation-xkBS3AHC.js +19 -0
- package/build/assets/copy-3JCw_XFB.js +1 -0
- package/build/assets/copy-BLmGeJcd.js +1 -0
- package/build/assets/copy-to-clipboard-button-Aj9wFmt2.js +1 -0
- package/build/assets/createLucideIcon-CVAsW2Yo.js +1 -0
- package/build/assets/declaration-B9kpCaYl.js +1 -0
- package/build/assets/device-verify-B5YCrvSu.js +1 -0
- package/build/assets/dist-CodhvuAP.js +1 -0
- package/build/assets/dropdown-classes-CgQ45JmQ.js +1 -0
- package/build/assets/edit-automation-modal-B6U96gVV.js +1 -0
- package/build/assets/ellipsis-button-1BV9Sga8.js +1 -0
- package/build/assets/entry.client-Dy--3GeA.js +2 -0
- package/build/assets/enum-filter-dropdown-DCITiYVi.js +1 -0
- package/build/assets/environment-switch-overlay-DUnKILNH.js +1 -0
- package/build/assets/extensions-hub-CksKNpP9.js +1 -0
- package/build/assets/{extensions-navigation-DfLHdTUC.js → extensions-navigation-Di9rJ-b5.js} +1 -1
- package/build/assets/{external-link-D8njjDTk.js → external-link-D2zJjE9G.js} +1 -1
- package/build/assets/files-tab-61Vaihc6.js +1 -0
- package/build/assets/files-tab-store-DJsPxYdg.js +1 -0
- package/build/assets/folder-mMWFvaw0.js +1 -0
- package/build/assets/form-control-classes-9rkU4usZ.js +1 -0
- package/build/assets/get-language-from-path-CPNnuVhI.js +1 -0
- package/build/assets/git-provider-icon-aQRcUVI-.js +1 -0
- package/build/assets/home-5gOtUe-n.js +1 -0
- package/build/assets/iconBase-DaTRRUjy.js +1 -0
- package/build/assets/index-redirect-CUUJiNki.js +1 -0
- package/build/assets/install-server-modal-BRab9inF.js +1 -0
- package/build/assets/launch-1TJRKkkX.js +1 -0
- package/build/assets/lesson-plan-BtrZUCuj.js +4 -0
- package/build/assets/link-external-DfKQroKX.js +1 -0
- package/build/assets/{list-todo-B_Ts2JmZ.js → list-todo-BfH6yYUK.js} +1 -1
- package/build/assets/llm-not-configured-banner-BrU5uHto.js +27 -0
- package/build/assets/llm-settings-BpdU51Jo.js +1 -0
- package/build/assets/llm-settings-DsInf6yD.js +1 -0
- package/build/assets/{llm-subscription-service-BX_AtNlO.js → llm-subscription-service-CKyaV24y.js} +1 -1
- package/build/assets/loader-circle-BEykUKYG.js +1 -0
- package/build/assets/loading-spinner-DHAIPZkP.js +1 -0
- package/build/assets/manage-backends-modal-BREySP-J.js +1 -0
- package/build/assets/manifest-a5bb7568.js +1 -0
- package/build/assets/{markdown-renderer-DWy7Np7u.js → markdown-renderer-D8mayGjI.js} +1 -1
- package/build/assets/mcp-XXf8k6mb.js +9 -0
- package/build/assets/messages-D2oZb47Z.js +40 -0
- package/build/assets/middleware-DYHYNAnP.js +6 -0
- package/build/assets/modal-backdrop-zVwfOJZr.js +1 -0
- package/build/assets/modal-body-Dcu5McCa.js +1 -0
- package/build/assets/{modal-classes-C4kS6ib_.js → modal-classes-DPqxSyuP.js} +1 -1
- package/build/assets/modal-close-button-CTCX4nCH.js +1 -0
- package/build/assets/model-selector-VDHBytb6.js +1 -0
- package/build/assets/{mouse-pointer-click-CXAx4FyM.js → mouse-pointer-click-PdEQPL6v.js} +1 -1
- package/build/assets/navigation-context-DPs2G0X8.js +1 -0
- package/build/assets/navigation-link-D8hfwvxI.js +1 -0
- package/build/assets/onboarding-D32kiGME.js +1 -0
- package/build/assets/onboarding-modal-C084vkv7.js +1 -0
- package/build/assets/openhands-logo-bcNw5bkY.js +1 -0
- package/build/assets/option-service.api-Cl5VLGyw.js +1 -0
- package/build/assets/organization-service.api-CnynNoT-.js +1 -0
- package/build/assets/path-utils-BeOmjIcE.js +1 -0
- package/build/assets/{pencil-CsL0ns9y.js → pencil-Dj2XjKmI.js} +1 -1
- package/build/assets/plan-components-j9X4AxYM.js +1 -0
- package/build/assets/planner-tab-AZMjJx31.js +1 -0
- package/build/assets/plugins-management-service-BAp70KN7.js +1 -0
- package/build/assets/profiles-service.api-CeYEmSM3.js +1 -0
- package/build/assets/providers-vX9jk9Vy.js +1 -0
- package/build/assets/{proxy-TeteRRW5.js → proxy-CHmFkV16.js} +1 -1
- package/build/assets/react-DPDgL6du.js +1 -0
- package/build/assets/recommended-automations-launcher-Bk8tQ-Cn.js +58 -0
- package/build/assets/{refresh-cw-GkGYXsU-.js → refresh-cw-DM82EIyx.js} +1 -1
- package/build/assets/root-CxWZUXTQ.css +1 -0
- package/build/assets/root-layout-CoWw4kpz.js +2 -0
- package/build/assets/root-tuEPDx-i.js +2 -0
- package/build/assets/runtime-waiting-state-DkzLgvMn.js +1 -0
- package/build/assets/schema-field-nvq_Juo2.js +1 -0
- package/build/assets/sdk-section-page-CgT70FaZ.js +1 -0
- package/build/assets/sdk-settings-schema-BjBkMHzZ.js +1 -0
- package/build/assets/search-4DHskuhE.js +1 -0
- package/build/assets/search-BsjCEFNf.js +1 -0
- package/build/assets/secrets-service-CZYjNxFw.js +1 -0
- package/build/assets/secrets-settings-BCxk9p9s.js +1 -0
- package/build/assets/segmented-toggle-Cen5AMUc.js +1 -0
- package/build/assets/settings-CedTdtb5.js +1 -0
- package/build/assets/settings-dropdown-input-xzoZwgUe.js +1 -0
- package/build/assets/settings-gear-MXCyZW0x.js +1 -0
- package/build/assets/settings-index-Cct3PJSP.js +1 -0
- package/build/assets/settings-input-DYs7t3oK.js +1 -0
- package/build/assets/settings-list-classes-DvQr5jVS.js +1 -0
- package/build/assets/{settings-CN_HaPjH.js → settings-mQUckT0g.js} +1 -1
- package/build/assets/settings-modal-DwLybV_O.js +1 -0
- package/build/assets/settings-section-header-context-COMOIaxV.js +1 -0
- package/build/assets/settings-service.api-DldkFI1x.js +1 -0
- package/build/assets/settings-switch-C2N2xqEb.js +1 -0
- package/build/assets/{settings-utils-9-_6iVIn.js → settings-utils-BMdG65By.js} +1 -1
- package/build/assets/shared-conversation-DnDwfLgg.js +1 -0
- package/build/assets/sidebar-layout-BtpUSN3j.js +1 -0
- package/build/assets/sidebar-mobile-menu-toggle-B8k3qu84.js +1 -0
- package/build/assets/sidebar-nav-link-CIB3NBRW.js +1 -0
- package/build/assets/sidebar-store-CZuE8AH5.js +1 -0
- package/build/assets/skill-card-pill-row-D2bUe2kB.js +1 -0
- package/build/assets/skills-9cDZONKh.js +1 -0
- package/build/assets/skills-plugins-B68ay6Pu.js +1 -0
- package/build/assets/skills-settings-A6sUy0T7.js +2 -0
- package/build/assets/{square-chevron-right-Cfi-SUY0.js → square-chevron-right-Czw3FFWc.js} +1 -1
- package/build/assets/styled-tooltip-DsKsFjuq.js +1 -0
- package/build/assets/suspense-X5dBsJzn.js +1 -0
- package/build/assets/switch-skeleton-DqQwalyu.js +1 -0
- package/build/assets/task-list-tab-BAThr9Ex.js +1 -0
- package/build/assets/{terminal-HakoMrQX.js → terminal-BmT0_gIH.js} +2 -2
- package/build/assets/terminal-BuLtIrb9.js +1 -0
- package/build/assets/toggle-switch-DBlOOzBr.js +1 -0
- package/build/assets/{trash-2-Bq4hqiRH.js → trash-2-Be_7y3Mn.js} +1 -1
- package/build/assets/typography-YGPBGzOG.js +1 -0
- package/build/assets/u-check-circle-BqoIxNz_.js +1 -0
- package/build/assets/u-check-circle-half-LiwZkuFe.js +1 -0
- package/build/assets/u-edit-DJ90xc8Z.js +1 -0
- package/build/assets/use-acp-credential-form-Bs6s0DTU.js +1 -0
- package/build/assets/use-activate-agent-profile-CKtTToSx.js +1 -0
- package/build/assets/use-active-agent-profile-CWLPpOtK.js +1 -0
- package/build/assets/use-active-conversation-DI5S5M1w.js +1 -0
- package/build/assets/use-agent-profiles-DPcaYLpm.js +1 -0
- package/build/assets/use-agent-state-Buh3bQDh.js +1 -0
- package/build/assets/use-backends-health-CxkvJy2N.js +1 -0
- package/build/assets/use-breakpoint-B-O0lQ84.js +1 -0
- package/build/assets/use-can-manage-org-profiles-DeX2Mfje.js +1 -0
- package/build/assets/use-click-outside-element-Bf4Omzot.js +1 -0
- package/build/assets/use-cloud-current-user-id-D_PQGfmT.js +1 -0
- package/build/assets/use-config-ur0RbjCP.js +1 -0
- package/build/assets/use-create-conversation-D9OWYcte.js +1 -0
- package/build/assets/use-create-secret-CVFSlhlR.js +1 -0
- package/build/assets/use-event-store-YSOxy9FC.js +4 -0
- package/build/assets/use-handle-plan-click-Dug8egQl.js +1 -0
- package/build/assets/use-is-authed-_dhQ2Xuj.js +1 -0
- package/build/assets/use-launch-skill-in-chat-BnoDgvAy.js +1 -0
- package/build/assets/use-llm-profiles-DjackuP1.js +1 -0
- package/build/assets/use-onboarding-completion-C_Swglzp.js +1 -0
- package/build/assets/use-plugins-marketplace-BGb-KgfD.js +1 -0
- package/build/assets/use-runtime-is-ready-Diiq65Q-.js +1 -0
- package/build/assets/use-save-agent-profile-aKKLqDJM.js +1 -0
- package/build/assets/{use-save-settings-DErJDIDL.js → use-save-settings-CChDyjOB.js} +1 -1
- package/build/assets/use-settings-dX4fKUPF.js +1 -0
- package/build/assets/use-settings-nav-items-D6pHnvxg.js +16 -0
- package/build/assets/use-skills-Dqo-pDDx.js +1 -0
- package/build/assets/use-task-list-CmWGElgb.js +1 -0
- package/build/assets/use-tracking-GtXCHmTv.js +1 -0
- package/build/assets/use-user-conversation-6uOXFP95.js +1 -0
- package/build/assets/useMutation-DCE9RcgK.js +1 -0
- package/build/assets/useMutationState-BUab8Kxr.js +1 -0
- package/build/assets/useQueries-CRzaAqzH.js +1 -0
- package/build/assets/useQuery-CpjHYtZc.js +1 -0
- package/build/assets/useTranslation-Cgy4JA_g.js +1 -0
- package/build/assets/utils-CE0lDWtb.js +1 -0
- package/build/assets/vendor-styling-CI0PQ3ab.js +22 -0
- package/build/assets/{vendor~browser-BQU4C3CQ.js → vendor~browser-Cvg7jXCP.js} +1 -1
- package/build/assets/{vendor~browser-tab-Cim6xN2k.js → vendor~browser-tab-Di0kh5Zw.js} +1 -1
- package/build/assets/vendor~conversation-panel~conversation~alert-banner-DHDkknt5.js +1 -0
- package/build/assets/vendor~entry.client-9tWQ_Ugw.js +1 -0
- package/build/assets/{vendor~entry.client-lAMyAlBD.js → vendor~entry.client-D6BtSOtn.js} +1 -1
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~d1e18dtv-5Q6lQJdE.js +177 -0
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~i3v2mlbw-BrJQ3XZH.js +1 -0
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~ncdxw0bh-ClHnt5lR.js +10 -0
- package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~t35o0b0f-Bss49YXv.js → vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~k6tszsdc-Bb-xMtbv.js} +1 -1
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~nn5zty47-Zl0G1QCy.js +1 -0
- package/build/assets/{vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~fpbtwbmk-DDSPtjxR.js → vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~byh8a1g4-XNPdpuO8.js} +1 -1
- package/build/assets/{vendor~files-tab-BvQLon-P.js → vendor~files-tab-B02k3xvx.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation-DBPRU26Z.js → vendor~home~conversation-panel~conversation-CYMF9JYB.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DnEBAp2W.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-9UMeuPV6.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CzI-A-Gz.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BD0GaRGa.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-ByET2Quf.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CqXiHwjU.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DCYBrned.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-D7EUmQ8Y.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DnctfFZL.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DTzw2x50.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-pSG7lnvH.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-d8aETPbZ.js} +1 -1
- package/build/assets/{vendor~launch-DqoOsAhA.js → vendor~launch-CHXA9cJu.js} +1 -1
- package/build/assets/vendor~root-layout~conversation-panel~conversation-CpiTHpHl.js +1 -0
- package/build/assets/{vendor~root-layout~conversation-panel~conversation~shared-conversation-BJl81v7J.js → vendor~root-layout~conversation-panel~conversation~shared-conversation-_TdZcNMD.js} +1 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation-Cn2jwSga.js +1 -0
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~enjl5xdm-mMKDm94D.js +48 -0
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~automations-~ki5qnp0d-DRld6s9c.js → vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~automations-~ki5qnp0d-rV6d1Iv_.js} +502 -43
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~shared-conversation~alert-banner~pl~rqjteh0a-9d2kA26V.js → vendor~root-layout~home~conversation-panel~conversation~shared-conversation~alert-banner~pl~rqjteh0a-CZM4hwUT.js} +1 -1
- package/build/assets/vendor~root-layout~home~mcp~automations-list~onboarding-modal-CXyYYvYh.js +1 -0
- package/build/assets/verification-settings-D_zsNB_c.js +1 -0
- package/build/assets/x-Cb0WAtak.js +1 -0
- package/build/assets/x-mark-Batp6gXa.js +1 -0
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +138 -1
- package/build/locales/ca/openhands.json +138 -1
- package/build/locales/de/openhands.json +138 -1
- package/build/locales/en/openhands.json +138 -1
- package/build/locales/es/openhands.json +138 -1
- package/build/locales/fr/openhands.json +138 -1
- package/build/locales/it/openhands.json +138 -1
- package/build/locales/ja/openhands.json +138 -1
- package/build/locales/ko-KR/openhands.json +138 -1
- package/build/locales/no/openhands.json +138 -1
- package/build/locales/pt/openhands.json +138 -1
- package/build/locales/tr/openhands.json +138 -1
- package/build/locales/uk/openhands.json +138 -1
- package/build/locales/zh-CN/openhands.json +138 -1
- package/build/locales/zh-TW/openhands.json +138 -1
- package/config/defaults.json +7 -9
- package/dist/_virtual/__vite-browser-external.cjs +2 -0
- package/dist/_virtual/__vite-browser-external.cjs.map +1 -0
- package/dist/_virtual/__vite-browser-external.js +9 -0
- package/dist/_virtual/__vite-browser-external.js.map +1 -0
- package/dist/api/agent-profiles-service/agent-profiles-service.api.cjs +2 -0
- package/dist/api/agent-profiles-service/agent-profiles-service.api.cjs.map +1 -0
- package/dist/api/agent-profiles-service/agent-profiles-service.api.d.ts +22 -0
- package/dist/api/agent-profiles-service/agent-profiles-service.api.js +35 -0
- package/dist/api/agent-profiles-service/agent-profiles-service.api.js.map +1 -0
- package/dist/api/agent-server-adapter.cjs +2 -2
- package/dist/api/agent-server-adapter.cjs.map +1 -1
- package/dist/api/agent-server-adapter.d.ts +11 -1
- package/dist/api/agent-server-adapter.js +60 -60
- package/dist/api/agent-server-adapter.js.map +1 -1
- package/dist/api/agent-server-compatibility.cjs +1 -1
- package/dist/api/agent-server-compatibility.cjs.map +1 -1
- package/dist/api/agent-server-compatibility.js +1 -0
- package/dist/api/agent-server-compatibility.js.map +1 -1
- package/dist/api/agent-server-home.cjs +1 -1
- package/dist/api/agent-server-home.cjs.map +1 -1
- package/dist/api/agent-server-home.js +1 -0
- package/dist/api/agent-server-home.js.map +1 -1
- package/dist/api/cloud/agent-profiles-service.api.cjs +2 -0
- package/dist/api/cloud/agent-profiles-service.api.cjs.map +1 -0
- package/dist/api/cloud/agent-profiles-service.api.d.ts +7 -0
- package/dist/api/cloud/agent-profiles-service.api.js +58 -0
- package/dist/api/cloud/agent-profiles-service.api.js.map +1 -0
- package/dist/api/cloud/organization-service.api.cjs +1 -1
- package/dist/api/cloud/organization-service.api.cjs.map +1 -1
- package/dist/api/cloud/organization-service.api.d.ts +8 -0
- package/dist/api/cloud/organization-service.api.js +3 -1
- package/dist/api/cloud/organization-service.api.js.map +1 -1
- package/dist/api/cloud/profiles-service.api.cjs +2 -0
- package/dist/api/cloud/profiles-service.api.cjs.map +1 -0
- package/dist/api/cloud/profiles-service.api.d.ts +7 -0
- package/dist/api/cloud/profiles-service.api.js +75 -0
- package/dist/api/cloud/profiles-service.api.js.map +1 -0
- package/dist/api/cloud/settings-service.api.cjs +1 -1
- package/dist/api/cloud/settings-service.api.cjs.map +1 -1
- package/dist/api/cloud/settings-service.api.js +1 -1
- package/dist/api/cloud/settings-service.api.js.map +1 -1
- package/dist/api/config-service/config-service.api.cjs +1 -1
- package/dist/api/config-service/config-service.api.cjs.map +1 -1
- package/dist/api/config-service/config-service.api.js +1 -0
- package/dist/api/config-service/config-service.api.js.map +1 -1
- package/dist/api/conversation-metadata-store.cjs.map +1 -1
- package/dist/api/conversation-metadata-store.d.ts +11 -0
- package/dist/api/conversation-metadata-store.js.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.d.ts +20 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +134 -105
- package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.types.d.ts +2 -0
- package/dist/api/conversation-service/conversation-service.api.cjs +1 -1
- package/dist/api/conversation-service/conversation-service.api.cjs.map +1 -1
- package/dist/api/conversation-service/conversation-service.api.d.ts +1 -0
- package/dist/api/conversation-service/conversation-service.api.js +4 -0
- package/dist/api/conversation-service/conversation-service.api.js.map +1 -1
- package/dist/api/device-flow-client.cjs +1 -1
- package/dist/api/device-flow-client.cjs.map +1 -1
- package/dist/api/device-flow-client.js +33 -25
- package/dist/api/device-flow-client.js.map +1 -1
- package/dist/api/event-service/event-service.api.cjs +1 -1
- package/dist/api/event-service/event-service.api.cjs.map +1 -1
- package/dist/api/event-service/event-service.api.js +1 -0
- package/dist/api/event-service/event-service.api.js.map +1 -1
- package/dist/api/mcp-service/mcp-redacted-credentials.cjs +1 -1
- package/dist/api/mcp-service/mcp-redacted-credentials.cjs.map +1 -1
- package/dist/api/mcp-service/mcp-redacted-credentials.d.ts +3 -3
- package/dist/api/mcp-service/mcp-redacted-credentials.js +29 -30
- package/dist/api/mcp-service/mcp-redacted-credentials.js.map +1 -1
- package/dist/api/mcp-service/mcp-service.api.cjs +1 -1
- package/dist/api/mcp-service/mcp-service.api.cjs.map +1 -1
- package/dist/api/mcp-service/mcp-service.api.d.ts +8 -1
- package/dist/api/mcp-service/mcp-service.api.js +129 -23
- package/dist/api/mcp-service/mcp-service.api.js.map +1 -1
- package/dist/api/option-service/option-service.api.cjs +1 -1
- package/dist/api/option-service/option-service.api.cjs.map +1 -1
- package/dist/api/option-service/option-service.api.js +1 -0
- package/dist/api/option-service/option-service.api.js.map +1 -1
- package/dist/api/plugins-management-service.cjs +2 -0
- package/dist/api/plugins-management-service.cjs.map +1 -0
- package/dist/api/plugins-management-service.d.ts +50 -0
- package/dist/api/plugins-management-service.js +41 -0
- package/dist/api/plugins-management-service.js.map +1 -0
- package/dist/api/plugins-service.d.ts +49 -0
- package/dist/api/profiles-service/profiles-service.api.cjs +1 -1
- package/dist/api/profiles-service/profiles-service.api.cjs.map +1 -1
- package/dist/api/profiles-service/profiles-service.api.js +21 -14
- package/dist/api/profiles-service/profiles-service.api.js.map +1 -1
- package/dist/api/runtime-service/agent-server-runtime-service.cjs +1 -1
- package/dist/api/runtime-service/agent-server-runtime-service.cjs.map +1 -1
- package/dist/api/runtime-service/agent-server-runtime-service.js +1 -0
- package/dist/api/runtime-service/agent-server-runtime-service.js.map +1 -1
- package/dist/api/secrets-service.cjs +1 -1
- package/dist/api/secrets-service.cjs.map +1 -1
- package/dist/api/secrets-service.js +1 -0
- package/dist/api/secrets-service.js.map +1 -1
- package/dist/api/settings-service/settings-service.api.cjs +1 -1
- package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
- package/dist/api/settings-service/settings-service.api.js +92 -50
- package/dist/api/settings-service/settings-service.api.js.map +1 -1
- package/dist/api/skills-service.cjs +1 -1
- package/dist/api/skills-service.cjs.map +1 -1
- package/dist/api/skills-service.js +1 -0
- package/dist/api/skills-service.js.map +1 -1
- package/dist/api/workspaces-service/workspaces-service.api.cjs +1 -1
- package/dist/api/workspaces-service/workspaces-service.api.cjs.map +1 -1
- package/dist/api/workspaces-service/workspaces-service.api.js +1 -0
- package/dist/api/workspaces-service/workspaces-service.api.js.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.cjs +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.js +57 -38
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.js.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.cjs +2 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.js +13 -9
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js +65 -26
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message.cjs +2 -2
- package/dist/components/conversation-events/chat/event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message.js +78 -76
- package/dist/components/conversation-events/chat/event-message.js.map +1 -1
- package/dist/components/features/analytics/telemetry-consent-banner.cjs +1 -1
- package/dist/components/features/analytics/telemetry-consent-banner.cjs.map +1 -1
- package/dist/components/features/analytics/telemetry-consent-banner.js +1 -0
- package/dist/components/features/analytics/telemetry-consent-banner.js.map +1 -1
- package/dist/components/features/automations/detail/activity-log-item.d.ts +3 -2
- package/dist/components/features/automations/detail/activity-log-section.d.ts +3 -2
- package/dist/components/features/automations/detail/debug-automation-button.d.ts +17 -0
- package/dist/components/features/automations/detail/run-logs-modal.d.ts +6 -1
- package/dist/components/features/backends/backend-form-modal.cjs +1 -1
- package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
- package/dist/components/features/backends/backend-form-modal.d.ts +6 -2
- package/dist/components/features/backends/backend-form-modal.js +198 -161
- package/dist/components/features/backends/backend-form-modal.js.map +1 -1
- package/dist/components/features/backends/backend-row.cjs +1 -1
- package/dist/components/features/backends/backend-row.cjs.map +1 -1
- package/dist/components/features/backends/backend-row.d.ts +2 -1
- package/dist/components/features/backends/backend-row.js +60 -54
- package/dist/components/features/backends/backend-row.js.map +1 -1
- package/dist/components/features/backends/backend-selector.cjs +1 -1
- package/dist/components/features/backends/backend-selector.cjs.map +1 -1
- package/dist/components/features/backends/backend-selector.js +4 -4
- package/dist/components/features/backends/backend-version.cjs +1 -1
- package/dist/components/features/backends/backend-version.cjs.map +1 -1
- package/dist/components/features/backends/backend-version.js +1 -0
- package/dist/components/features/backends/backend-version.js.map +1 -1
- package/dist/components/features/backends/manage-backends-modal.cjs +1 -1
- package/dist/components/features/backends/manage-backends-modal.cjs.map +1 -1
- package/dist/components/features/backends/manage-backends-modal.js +72 -61
- package/dist/components/features/backends/manage-backends-modal.js.map +1 -1
- package/dist/components/features/chat/change-agent-button.cjs +1 -1
- package/dist/components/features/chat/change-agent-button.js +9 -9
- package/dist/components/features/chat/chat-add-file-button.cjs +1 -1
- package/dist/components/features/chat/chat-add-file-button.cjs.map +1 -1
- package/dist/components/features/chat/chat-add-file-button.js +38 -34
- package/dist/components/features/chat/chat-add-file-button.js.map +1 -1
- package/dist/components/features/chat/chat-interface.cjs +2 -2
- package/dist/components/features/chat/chat-interface.cjs.map +1 -1
- package/dist/components/features/chat/chat-interface.js +136 -129
- package/dist/components/features/chat/chat-interface.js.map +1 -1
- package/dist/components/features/chat/components/chat-input-actions.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-actions.cjs.map +1 -1
- package/dist/components/features/chat/components/chat-input-actions.js +100 -87
- package/dist/components/features/chat/components/chat-input-actions.js.map +1 -1
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.cjs +2 -0
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.cjs.map +1 -0
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.d.ts +15 -0
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.js +118 -0
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.js.map +1 -0
- package/dist/components/features/chat/components/chat-input-model.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-model.js +17 -17
- package/dist/components/features/chat/components/chat-input-profile-picker.cjs +2 -0
- package/dist/components/features/chat/components/chat-input-profile-picker.cjs.map +1 -0
- package/dist/components/features/chat/components/chat-input-profile-picker.d.ts +9 -0
- package/dist/components/features/chat/components/chat-input-profile-picker.js +112 -0
- package/dist/components/features/chat/components/chat-input-profile-picker.js.map +1 -0
- package/dist/components/features/chat/components/resolve-picker-kind.cjs +2 -0
- package/dist/components/features/chat/components/resolve-picker-kind.cjs.map +1 -0
- package/dist/components/features/chat/components/resolve-picker-kind.d.ts +29 -0
- package/dist/components/features/chat/components/resolve-picker-kind.js +8 -0
- package/dist/components/features/chat/components/resolve-picker-kind.js.map +1 -0
- package/dist/components/features/chat/goal-status-banner.cjs +2 -0
- package/dist/components/features/chat/goal-status-banner.cjs.map +1 -0
- package/dist/components/features/chat/goal-status-banner.d.ts +11 -0
- package/dist/components/features/chat/goal-status-banner.js +12 -0
- package/dist/components/features/chat/goal-status-banner.js.map +1 -0
- package/dist/components/features/chat/goal-status-content.cjs +2 -0
- package/dist/components/features/chat/goal-status-content.cjs.map +1 -0
- package/dist/components/features/chat/goal-status-content.d.ts +21 -0
- package/dist/components/features/chat/goal-status-content.js +98 -0
- package/dist/components/features/chat/goal-status-content.js.map +1 -0
- package/dist/components/features/chat/interactive-chat-box.cjs +1 -1
- package/dist/components/features/chat/interactive-chat-box.cjs.map +1 -1
- package/dist/components/features/chat/interactive-chat-box.js +20 -19
- package/dist/components/features/chat/interactive-chat-box.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/code-block.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/code-block.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/code-block.d.ts +10 -3
- package/dist/components/features/chat/tool-visualizers/primitives/code-block.js +29 -16
- package/dist/components/features/chat/tool-visualizers/primitives/code-block.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/output-pane.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/output-pane.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/output-pane.d.ts +2 -2
- package/dist/components/features/chat/tool-visualizers/primitives/output-pane.js +16 -16
- package/dist/components/features/chat/tool-visualizers/primitives/output-pane.js.map +1 -1
- package/dist/components/features/chat/user-message-body.cjs +1 -1
- package/dist/components/features/chat/user-message-body.cjs.map +1 -1
- package/dist/components/features/chat/user-message-body.js +20 -20
- package/dist/components/features/chat/user-message-body.js.map +1 -1
- package/dist/components/features/command-menu/command-menu-items.d.ts +32 -0
- package/dist/components/features/command-menu/command-menu-trigger.cjs +2 -0
- package/dist/components/features/command-menu/command-menu-trigger.cjs.map +1 -0
- package/dist/components/features/command-menu/command-menu-trigger.d.ts +5 -0
- package/dist/components/features/command-menu/command-menu-trigger.js +53 -0
- package/dist/components/features/command-menu/command-menu-trigger.js.map +1 -0
- package/dist/components/features/command-menu/command-menu.d.ts +2 -0
- package/dist/components/features/command-menu/index.d.ts +2 -0
- package/dist/components/features/controls/tools-context-menu.cjs +1 -1
- package/dist/components/features/controls/tools-context-menu.cjs.map +1 -1
- package/dist/components/features/controls/tools-context-menu.d.ts +3 -1
- package/dist/components/features/controls/tools-context-menu.js +94 -77
- package/dist/components/features/controls/tools-context-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.js +8 -5
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.js +2 -1
- package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.js +4 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/plugins-modal.cjs +2 -0
- package/dist/components/features/conversation-panel/plugins-modal.cjs.map +1 -0
- package/dist/components/features/conversation-panel/plugins-modal.d.ts +12 -0
- package/dist/components/features/conversation-panel/plugins-modal.js +62 -0
- package/dist/components/features/conversation-panel/plugins-modal.js.map +1 -0
- package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.cjs +1 -1
- package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.cjs.map +1 -1
- package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.js +4 -4
- package/dist/components/features/mcp-logo-badge.cjs +1 -1
- package/dist/components/features/mcp-logo-badge.cjs.map +1 -1
- package/dist/components/features/mcp-logo-badge.js +17 -15
- package/dist/components/features/mcp-logo-badge.js.map +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.cjs +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.cjs.map +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.js +102 -59
- package/dist/components/features/mcp-page/custom-server-editor.js.map +1 -1
- package/dist/components/features/mcp-page/install-server-modal.cjs +1 -1
- package/dist/components/features/mcp-page/install-server-modal.cjs.map +1 -1
- package/dist/components/features/mcp-page/install-server-modal.js +284 -169
- package/dist/components/features/mcp-page/install-server-modal.js.map +1 -1
- package/dist/components/features/mcp-page/installed-server-card.cjs +1 -1
- package/dist/components/features/mcp-page/installed-server-card.cjs.map +1 -1
- package/dist/components/features/mcp-page/installed-server-card.js +16 -18
- package/dist/components/features/mcp-page/installed-server-card.js.map +1 -1
- package/dist/components/features/onboarding/onboarding-host.d.ts +3 -13
- package/dist/components/features/plugins/add-plugin-modal.d.ts +6 -0
- package/dist/components/features/plugins/build-plugins-view-model.d.ts +39 -0
- package/dist/components/features/plugins/plugin-card.d.ts +13 -0
- package/dist/components/features/plugins/plugin-detail-modal.d.ts +13 -0
- package/dist/components/features/plugins/plugin-picker-card.d.ts +10 -0
- package/dist/components/features/plugins/plugin-picker-modal.d.ts +9 -0
- package/dist/components/features/plugins/plugin-picker-trigger.d.ts +9 -0
- package/dist/components/features/plugins/plugin-picker.d.ts +18 -0
- package/dist/components/features/plugins/plugin-spec-identity.d.ts +28 -0
- package/dist/components/features/plugins/plugins-toolbar.d.ts +9 -0
- package/dist/components/features/settings/agent-profiles/agent-profile-actions-menu.d.ts +16 -0
- package/dist/components/features/settings/agent-profiles/agent-profile-row.d.ts +13 -0
- package/dist/components/features/settings/agent-profiles/agent-profiles-body.d.ts +15 -0
- package/dist/components/features/settings/agent-profiles/agent-profiles-local-view.d.ts +7 -0
- package/dist/components/features/settings/agent-profiles/agent-profiles-manager.d.ts +7 -0
- package/dist/components/features/settings/agent-profiles/delete-agent-profile-modal.d.ts +7 -0
- package/dist/components/features/settings/agent-profiles/index.d.ts +6 -0
- package/dist/components/features/settings/agent-profiles/merge-agent-profile-save-input.d.ts +18 -0
- package/dist/components/features/settings/llm-profiles/llm-profiles-manager.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/llm-profiles-manager.js +1 -0
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.js +1 -1
- package/dist/components/features/settings/llm-profiles/profile-row.d.ts +3 -1
- package/dist/components/features/settings/llm-profiles/profiles-body.d.ts +3 -1
- package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.cjs +1 -1
- package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.cjs.map +1 -1
- package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.js +3 -2
- package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.js.map +1 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs +7 -7
- package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs.map +1 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-form.js +279 -130
- package/dist/components/features/settings/mcp-settings/mcp-server-form.js.map +1 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-list-item.d.ts +1 -12
- package/dist/components/features/settings/mcp-settings/mcp-server-list.d.ts +1 -11
- package/dist/components/features/settings/settings-dropdown-input.cjs +1 -1
- package/dist/components/features/settings/settings-dropdown-input.js +6 -6
- package/dist/components/features/sidebar/sidebar-rail-body.cjs +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.d.ts +1 -2
- package/dist/components/features/sidebar/sidebar-rail-body.js +81 -82
- package/dist/components/features/sidebar/sidebar-rail-body.js.map +1 -1
- package/dist/components/features/sidebar/sidebar.cjs +1 -1
- package/dist/components/features/sidebar/sidebar.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar.js +45 -46
- package/dist/components/features/sidebar/sidebar.js.map +1 -1
- package/dist/components/features/skills/extensions-navigation.cjs +1 -1
- package/dist/components/features/skills/extensions-navigation.cjs.map +1 -1
- package/dist/components/features/skills/extensions-navigation.js +1 -2
- package/dist/components/features/skills/extensions-navigation.js.map +1 -1
- package/dist/components/shared/modals/modal-backdrop.cjs +1 -1
- package/dist/components/shared/modals/modal-backdrop.cjs.map +1 -1
- package/dist/components/shared/modals/modal-backdrop.d.ts +5 -1
- package/dist/components/shared/modals/modal-backdrop.js +3 -3
- package/dist/components/shared/modals/modal-backdrop.js.map +1 -1
- package/dist/components/shared/modals/settings/model-selector.cjs +1 -1
- package/dist/components/shared/modals/settings/model-selector.js +16 -16
- package/dist/config/defaults.cjs +1 -1
- package/dist/config/defaults.cjs.map +1 -1
- package/dist/config/defaults.js +7 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/contexts/conversation-websocket-context.cjs +3 -3
- package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
- package/dist/contexts/conversation-websocket-context.js +200 -197
- package/dist/contexts/conversation-websocket-context.js.map +1 -1
- package/dist/hooks/chat/use-goal-interceptor.cjs +2 -0
- package/dist/hooks/chat/use-goal-interceptor.cjs.map +1 -0
- package/dist/hooks/chat/use-goal-interceptor.d.ts +8 -0
- package/dist/hooks/chat/use-goal-interceptor.js +37 -0
- package/dist/hooks/chat/use-goal-interceptor.js.map +1 -0
- package/dist/hooks/chat/use-grip-resize.cjs +1 -1
- package/dist/hooks/chat/use-grip-resize.cjs.map +1 -1
- package/dist/hooks/chat/use-grip-resize.js +17 -16
- package/dist/hooks/chat/use-grip-resize.js.map +1 -1
- package/dist/hooks/chat/use-model-interceptor.cjs +1 -1
- package/dist/hooks/chat/use-model-interceptor.cjs.map +1 -1
- package/dist/hooks/chat/use-model-interceptor.d.ts +3 -3
- package/dist/hooks/chat/use-model-interceptor.js +8 -9
- package/dist/hooks/chat/use-model-interceptor.js.map +1 -1
- package/dist/hooks/chat/use-slash-command.cjs +1 -1
- package/dist/hooks/chat/use-slash-command.cjs.map +1 -1
- package/dist/hooks/chat/use-slash-command.js +4 -4
- package/dist/hooks/chat/use-slash-command.js.map +1 -1
- package/dist/hooks/mutation/conversation-mutation-utils.cjs +1 -1
- package/dist/hooks/mutation/conversation-mutation-utils.cjs.map +1 -1
- package/dist/hooks/mutation/conversation-mutation-utils.d.ts +17 -0
- package/dist/hooks/mutation/conversation-mutation-utils.js +23 -4
- package/dist/hooks/mutation/conversation-mutation-utils.js.map +1 -1
- package/dist/hooks/mutation/use-activate-agent-profile.cjs +2 -0
- package/dist/hooks/mutation/use-activate-agent-profile.cjs.map +1 -0
- package/dist/hooks/mutation/use-activate-agent-profile.d.ts +23 -0
- package/dist/hooks/mutation/use-activate-agent-profile.js +34 -0
- package/dist/hooks/mutation/use-activate-agent-profile.js.map +1 -0
- package/dist/hooks/mutation/use-activate-llm-profile.cjs +1 -1
- package/dist/hooks/mutation/use-activate-llm-profile.js +1 -1
- package/dist/hooks/mutation/use-add-mcp-server.cjs +1 -1
- package/dist/hooks/mutation/use-add-mcp-server.cjs.map +1 -1
- package/dist/hooks/mutation/use-add-mcp-server.d.ts +1 -12
- package/dist/hooks/mutation/use-add-mcp-server.js +10 -34
- package/dist/hooks/mutation/use-add-mcp-server.js.map +1 -1
- package/dist/hooks/mutation/use-apply-onboarding-agent-profile.d.ts +20 -0
- package/dist/hooks/mutation/use-create-conversation.cjs +1 -1
- package/dist/hooks/mutation/use-create-conversation.cjs.map +1 -1
- package/dist/hooks/mutation/use-create-conversation.d.ts +2 -0
- package/dist/hooks/mutation/use-create-conversation.js +94 -25
- package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
- package/dist/hooks/mutation/use-delete-agent-profile.d.ts +1 -0
- package/dist/hooks/mutation/use-delete-llm-profile.cjs +1 -1
- package/dist/hooks/mutation/use-delete-llm-profile.js +1 -1
- package/dist/hooks/mutation/use-delete-mcp-server.cjs +1 -1
- package/dist/hooks/mutation/use-delete-mcp-server.js +4 -4
- package/dist/hooks/mutation/use-fork-conversation.cjs +2 -0
- package/dist/hooks/mutation/use-fork-conversation.cjs.map +1 -0
- package/dist/hooks/mutation/use-fork-conversation.d.ts +24 -0
- package/dist/hooks/mutation/use-fork-conversation.js +29 -0
- package/dist/hooks/mutation/use-fork-conversation.js.map +1 -0
- package/dist/hooks/mutation/use-install-plugin.d.ts +7 -0
- package/dist/hooks/mutation/use-new-conversation-command.cjs +1 -1
- package/dist/hooks/mutation/use-new-conversation-command.cjs.map +1 -1
- package/dist/hooks/mutation/use-new-conversation-command.d.ts +1 -0
- package/dist/hooks/mutation/use-new-conversation-command.js +20 -10
- package/dist/hooks/mutation/use-new-conversation-command.js.map +1 -1
- package/dist/hooks/mutation/use-rename-agent-profile.d.ts +6 -0
- package/dist/hooks/mutation/use-rename-llm-profile.cjs +1 -1
- package/dist/hooks/mutation/use-rename-llm-profile.js +1 -1
- package/dist/hooks/mutation/use-save-agent-profile.d.ts +5 -0
- package/dist/hooks/mutation/use-save-llm-profile.cjs +1 -1
- package/dist/hooks/mutation/use-save-llm-profile.js +1 -1
- package/dist/hooks/mutation/use-switch-acp-model.cjs.map +1 -1
- package/dist/hooks/mutation/use-switch-acp-model.js.map +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile-and-log.cjs +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile-and-log.cjs.map +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile-and-log.d.ts +3 -4
- package/dist/hooks/mutation/use-switch-llm-profile-and-log.js +10 -35
- package/dist/hooks/mutation/use-switch-llm-profile-and-log.js.map +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile.cjs +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile.cjs.map +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile.d.ts +20 -5
- package/dist/hooks/mutation/use-switch-llm-profile.js +38 -14
- package/dist/hooks/mutation/use-switch-llm-profile.js.map +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.cjs +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.cjs.map +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.js +11 -37
- package/dist/hooks/mutation/use-update-mcp-server.js.map +1 -1
- package/dist/hooks/query/query-keys.cjs +1 -1
- package/dist/hooks/query/query-keys.cjs.map +1 -1
- package/dist/hooks/query/query-keys.d.ts +21 -0
- package/dist/hooks/query/query-keys.js +7 -3
- package/dist/hooks/query/query-keys.js.map +1 -1
- package/dist/hooks/query/use-active-conversation.cjs +1 -1
- package/dist/hooks/query/use-active-conversation.cjs.map +1 -1
- package/dist/hooks/query/use-active-conversation.js +17 -16
- package/dist/hooks/query/use-active-conversation.js.map +1 -1
- package/dist/hooks/query/use-agent-profiles.cjs +2 -0
- package/dist/hooks/query/use-agent-profiles.cjs.map +1 -0
- package/dist/hooks/query/use-agent-profiles.d.ts +13 -0
- package/dist/hooks/query/use-agent-profiles.js +24 -0
- package/dist/hooks/query/use-agent-profiles.js.map +1 -0
- package/dist/hooks/query/use-backends-health.cjs +1 -1
- package/dist/hooks/query/use-backends-health.cjs.map +1 -1
- package/dist/hooks/query/use-backends-health.js +18 -3
- package/dist/hooks/query/use-backends-health.js.map +1 -1
- package/dist/hooks/query/use-conversation-history.cjs +1 -1
- package/dist/hooks/query/use-conversation-history.cjs.map +1 -1
- package/dist/hooks/query/use-conversation-history.js +4 -2
- package/dist/hooks/query/use-conversation-history.js.map +1 -1
- package/dist/hooks/query/use-local-workspaces.cjs +1 -1
- package/dist/hooks/query/use-local-workspaces.cjs.map +1 -1
- package/dist/hooks/query/use-local-workspaces.js +1 -0
- package/dist/hooks/query/use-local-workspaces.js.map +1 -1
- package/dist/hooks/query/use-plugins-marketplace.d.ts +7 -0
- package/dist/hooks/query/use-resolved-workspaces.cjs +1 -1
- package/dist/hooks/query/use-resolved-workspaces.cjs.map +1 -1
- package/dist/hooks/query/use-resolved-workspaces.js +7 -6
- package/dist/hooks/query/use-resolved-workspaces.js.map +1 -1
- package/dist/hooks/query/use-search-subdirs.cjs +1 -1
- package/dist/hooks/query/use-search-subdirs.cjs.map +1 -1
- package/dist/hooks/query/use-search-subdirs.js +1 -0
- package/dist/hooks/query/use-search-subdirs.js.map +1 -1
- package/dist/hooks/query/use-settings.cjs +1 -1
- package/dist/hooks/query/use-settings.cjs.map +1 -1
- package/dist/hooks/query/use-settings.js +11 -11
- package/dist/hooks/query/use-settings.js.map +1 -1
- package/dist/hooks/query/use-verified-models.cjs +1 -1
- package/dist/hooks/query/use-verified-models.cjs.map +1 -1
- package/dist/hooks/query/use-verified-models.js +1 -0
- package/dist/hooks/query/use-verified-models.js.map +1 -1
- package/dist/hooks/use-acp-model-context.cjs +1 -1
- package/dist/hooks/use-acp-model-context.cjs.map +1 -1
- package/dist/hooks/use-acp-model-context.d.ts +1 -1
- package/dist/hooks/use-acp-model-context.js +9 -8
- package/dist/hooks/use-acp-model-context.js.map +1 -1
- package/dist/hooks/use-active-agent-profile.cjs +2 -0
- package/dist/hooks/use-active-agent-profile.cjs.map +1 -0
- package/dist/hooks/use-active-agent-profile.d.ts +20 -0
- package/dist/hooks/use-active-agent-profile.js +17 -0
- package/dist/hooks/use-active-agent-profile.js.map +1 -0
- package/dist/hooks/use-auto-resize.cjs +1 -1
- package/dist/hooks/use-auto-resize.cjs.map +1 -1
- package/dist/hooks/use-auto-resize.d.ts +2 -0
- package/dist/hooks/use-auto-resize.js +49 -45
- package/dist/hooks/use-auto-resize.js.map +1 -1
- package/dist/hooks/use-can-manage-org-profiles.cjs +1 -0
- package/dist/hooks/use-can-manage-org-profiles.d.ts +18 -0
- package/dist/hooks/use-can-manage-org-profiles.js +2 -0
- package/dist/hooks/use-chat-input-llm-profile-state.cjs +2 -0
- package/dist/hooks/use-chat-input-llm-profile-state.cjs.map +1 -0
- package/dist/hooks/use-chat-input-llm-profile-state.d.ts +23 -0
- package/dist/hooks/use-chat-input-llm-profile-state.js +30 -0
- package/dist/hooks/use-chat-input-llm-profile-state.js.map +1 -0
- package/dist/hooks/use-chat-input-model-state.cjs.map +1 -1
- package/dist/hooks/use-chat-input-model-state.d.ts +1 -1
- package/dist/hooks/use-chat-input-model-state.js.map +1 -1
- package/dist/hooks/use-chat-input-profile-state.cjs +2 -0
- package/dist/hooks/use-chat-input-profile-state.cjs.map +1 -0
- package/dist/hooks/use-chat-input-profile-state.d.ts +20 -0
- package/dist/hooks/use-chat-input-profile-state.js +22 -0
- package/dist/hooks/use-chat-input-profile-state.js.map +1 -0
- package/dist/hooks/use-conversation-name-context-menu.cjs +1 -1
- package/dist/hooks/use-conversation-name-context-menu.cjs.map +1 -1
- package/dist/hooks/use-conversation-name-context-menu.d.ts +4 -0
- package/dist/hooks/use-conversation-name-context-menu.js +44 -37
- package/dist/hooks/use-conversation-name-context-menu.js.map +1 -1
- package/dist/hooks/use-conversation-plugins.cjs +2 -0
- package/dist/hooks/use-conversation-plugins.cjs.map +1 -0
- package/dist/hooks/use-conversation-plugins.d.ts +9 -0
- package/dist/hooks/use-conversation-plugins.js +12 -0
- package/dist/hooks/use-conversation-plugins.js.map +1 -0
- package/dist/hooks/use-handle-plan-click.cjs +1 -1
- package/dist/hooks/use-handle-plan-click.cjs.map +1 -1
- package/dist/hooks/use-handle-plan-click.js +2 -1
- package/dist/hooks/use-handle-plan-click.js.map +1 -1
- package/dist/hooks/use-llm-configured.cjs +1 -1
- package/dist/hooks/use-llm-configured.cjs.map +1 -1
- package/dist/hooks/use-llm-configured.js +17 -16
- package/dist/hooks/use-llm-configured.js.map +1 -1
- package/dist/hooks/use-tracking.cjs +1 -1
- package/dist/hooks/use-tracking.cjs.map +1 -1
- package/dist/hooks/use-tracking.d.ts +51 -1
- package/dist/hooks/use-tracking.js +61 -2
- package/dist/hooks/use-tracking.js.map +1 -1
- package/dist/i18n/declaration.cjs +1 -1
- package/dist/i18n/declaration.cjs.map +1 -1
- package/dist/i18n/declaration.d.ts +138 -1
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +18 -3
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +2329 -0
- package/dist/i18n/translation.js.map +1 -1
- package/dist/icons/slack.cjs +2 -0
- package/dist/icons/slack.cjs.map +1 -0
- package/dist/icons/slack.js +19 -0
- package/dist/icons/slack.js.map +1 -0
- package/dist/icons/u-puzzle-piece.cjs +2 -0
- package/dist/icons/u-puzzle-piece.cjs.map +1 -0
- package/dist/icons/u-puzzle-piece.js +19 -0
- package/dist/icons/u-puzzle-piece.js.map +1 -0
- package/dist/icons/x-circle-solid.cjs +2 -0
- package/dist/icons/x-circle-solid.cjs.map +1 -0
- package/dist/icons/x-circle-solid.js +13 -0
- package/dist/icons/x-circle-solid.js.map +1 -0
- package/dist/locales/ar/openhands.json +138 -1
- package/dist/locales/ca/openhands.json +138 -1
- package/dist/locales/de/openhands.json +138 -1
- package/dist/locales/en/openhands.json +138 -1
- package/dist/locales/es/openhands.json +138 -1
- package/dist/locales/fr/openhands.json +138 -1
- package/dist/locales/it/openhands.json +138 -1
- package/dist/locales/ja/openhands.json +138 -1
- package/dist/locales/ko-KR/openhands.json +138 -1
- package/dist/locales/no/openhands.json +138 -1
- package/dist/locales/pt/openhands.json +138 -1
- package/dist/locales/tr/openhands.json +138 -1
- package/dist/locales/uk/openhands.json +138 -1
- package/dist/locales/zh-CN/openhands.json +138 -1
- package/dist/locales/zh-TW/openhands.json +138 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.js +0 -20
- package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.js +70 -3
- package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/box.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/box.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/box.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/box.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.js +3 -7
- package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js +27 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.js +20 -26
- package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js +0 -9
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.js +13 -13
- package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.js +14 -10
- package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.js +13 -10
- package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js +1 -8
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js +20 -18
- package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.js +66 -21
- package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.js +17 -11
- package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.js +12 -17
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.js +14 -19
- package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.js +15 -20
- package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.cjs +2 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.js +33 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.js +10 -8
- package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.js +1 -6
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js +71 -89
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/index.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/index.js +4 -4
- package/dist/node_modules/@openhands/extensions/integrations/index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.cjs +502 -43
- package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.js +58 -33
- package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.cjs +2 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.js +40 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.js +4 -4
- package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.js +3 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.js +3 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.js +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.js +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.js +84 -27
- package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.js +9 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.js +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.cjs +2 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.js +42 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.js +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.js +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.js +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.js +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/clients.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/clients.js +20 -0
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation-manager.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation-manager.js +18 -0
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation.js +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.js +2 -0
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js +15 -17
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/index.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/index.js +3 -0
- package/dist/node_modules/@openhands/typescript-client/dist/workspace/workspace.cjs +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/workspace/workspace.js +1 -0
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +7 -4
- package/dist/package.js.map +1 -1
- package/dist/routes/agent-settings.d.ts +106 -0
- package/dist/routes/files-tab.cjs +1 -1
- package/dist/routes/files-tab.js +23 -23
- package/dist/routes/llm-settings.cjs +1 -1
- package/dist/routes/llm-settings.cjs.map +1 -1
- package/dist/routes/llm-settings.d.ts +6 -4
- package/dist/routes/llm-settings.js +0 -1
- package/dist/routes/llm-settings.js.map +1 -1
- package/dist/routes/mcp.cjs.map +1 -1
- package/dist/routes/mcp.js.map +1 -1
- package/dist/services/settings.cjs +1 -1
- package/dist/services/settings.cjs.map +1 -1
- package/dist/services/settings.js +2 -6
- package/dist/services/settings.js.map +1 -1
- package/dist/stores/command-menu-store.cjs +2 -0
- package/dist/stores/command-menu-store.cjs.map +1 -0
- package/dist/stores/command-menu-store.d.ts +8 -0
- package/dist/stores/command-menu-store.js +12 -0
- package/dist/stores/command-menu-store.js.map +1 -0
- package/dist/stores/conversation-panel-preferences-store.cjs +1 -1
- package/dist/stores/conversation-panel-preferences-store.cjs.map +1 -1
- package/dist/stores/conversation-panel-preferences-store.js +1 -1
- package/dist/stores/conversation-panel-preferences-store.js.map +1 -1
- package/dist/stores/conversation-store.cjs +1 -1
- package/dist/stores/conversation-store.cjs.map +1 -1
- package/dist/stores/conversation-store.d.ts +1 -0
- package/dist/stores/conversation-store.js +1 -0
- package/dist/stores/conversation-store.js.map +1 -1
- package/dist/stores/goal-store.cjs +2 -0
- package/dist/stores/goal-store.cjs.map +1 -0
- package/dist/stores/goal-store.d.ts +28 -0
- package/dist/stores/goal-store.js +14 -0
- package/dist/stores/goal-store.js.map +1 -0
- package/dist/themes/color-themes.cjs +3 -3
- package/dist/themes/color-themes.cjs.map +1 -1
- package/dist/themes/color-themes.d.ts +13 -2
- package/dist/themes/color-themes.js +2 -2
- package/dist/themes/color-themes.js.map +1 -1
- package/dist/types/agent-server/core/events/conversation-state-event.d.ts +39 -3
- package/dist/types/agent-server/type-guards.cjs +1 -1
- package/dist/types/agent-server/type-guards.cjs.map +1 -1
- package/dist/types/agent-server/type-guards.d.ts +2 -1
- package/dist/types/agent-server/type-guards.js +3 -3
- package/dist/types/agent-server/type-guards.js.map +1 -1
- package/dist/types/mcp-auth.cjs +2 -0
- package/dist/types/mcp-auth.cjs.map +1 -0
- package/dist/types/mcp-auth.d.ts +43 -0
- package/dist/types/mcp-auth.js +13 -0
- package/dist/types/mcp-auth.js.map +1 -0
- package/dist/types/mcp-server.d.ts +22 -1
- package/dist/types/settings.d.ts +6 -4
- package/dist/ui/context-menu.d.ts +1 -1
- package/dist/utils/acp-command.d.ts +64 -0
- package/dist/utils/automation-debug-prompt.d.ts +18 -0
- package/dist/utils/constants.cjs +1 -1
- package/dist/utils/constants.cjs.map +1 -1
- package/dist/utils/constants.d.ts +2 -0
- package/dist/utils/constants.js +12 -3
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/dropdown-classes.cjs +1 -1
- package/dist/utils/dropdown-classes.cjs.map +1 -1
- package/dist/utils/dropdown-classes.js +4 -2
- package/dist/utils/dropdown-classes.js.map +1 -1
- package/dist/utils/form-control-classes.cjs +1 -1
- package/dist/utils/form-control-classes.js +1 -1
- package/dist/utils/handle-event-for-ui.cjs +1 -1
- package/dist/utils/handle-event-for-ui.cjs.map +1 -1
- package/dist/utils/handle-event-for-ui.js +72 -37
- package/dist/utils/handle-event-for-ui.js.map +1 -1
- package/dist/utils/mcp-config.cjs +1 -1
- package/dist/utils/mcp-config.cjs.map +1 -1
- package/dist/utils/mcp-config.d.ts +15 -9
- package/dist/utils/mcp-config.js +124 -53
- package/dist/utils/mcp-config.js.map +1 -1
- package/dist/utils/mcp-installed-server-display.cjs +2 -0
- package/dist/utils/mcp-installed-server-display.cjs.map +1 -0
- package/dist/utils/mcp-installed-server-display.d.ts +8 -0
- package/dist/utils/mcp-installed-server-display.js +12 -0
- package/dist/utils/mcp-installed-server-display.js.map +1 -0
- package/dist/utils/mcp-installed-servers.cjs +1 -1
- package/dist/utils/mcp-installed-servers.cjs.map +1 -1
- package/dist/utils/mcp-installed-servers.js +4 -4
- package/dist/utils/mcp-installed-servers.js.map +1 -1
- package/dist/utils/mcp-marketplace-utils.cjs +1 -1
- package/dist/utils/mcp-marketplace-utils.cjs.map +1 -1
- package/dist/utils/mcp-marketplace-utils.d.ts +2 -0
- package/dist/utils/mcp-marketplace-utils.js +31 -16
- package/dist/utils/mcp-marketplace-utils.js.map +1 -1
- package/dist/utils/mcp-server-name.cjs +2 -0
- package/dist/utils/mcp-server-name.cjs.map +1 -0
- package/dist/utils/mcp-server-name.d.ts +3 -0
- package/dist/utils/mcp-server-name.js +12 -0
- package/dist/utils/mcp-server-name.js.map +1 -0
- package/dist/utils/plugin-display.cjs +2 -0
- package/dist/utils/plugin-display.cjs.map +1 -0
- package/dist/utils/plugin-display.d.ts +20 -0
- package/dist/utils/plugin-display.js +29 -0
- package/dist/utils/plugin-display.js.map +1 -0
- package/dist/utils/settings-utils.cjs.map +1 -1
- package/dist/utils/settings-utils.js.map +1 -1
- package/dist/utils/workspaces-compatibility.cjs +1 -1
- package/dist/utils/workspaces-compatibility.cjs.map +1 -1
- package/dist/utils/workspaces-compatibility.js +1 -0
- package/dist/utils/workspaces-compatibility.js.map +1 -1
- package/package.json +7 -4
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/check-translation-completeness.cjs +6 -0
- package/scripts/dev-safe.mjs +14 -3
- package/scripts/dev-with-automation.mjs +4 -0
- package/scripts/gen-acp-docker-env.mjs +107 -0
- package/scripts/ingress.mjs +66 -226
- package/scripts/proxy-utils.mjs +171 -0
- package/scripts/static-server.mjs +127 -283
- package/build/assets/Trans-CiZR6eVI.js +0 -1
- package/build/assets/active-backend-context-CEuva6ZJ.js +0 -1
- package/build/assets/add-backend-modal-b_eiVk3A.js +0 -1
- package/build/assets/agent-server-conversation-service.api-D_uJ7BKc.js +0 -5
- package/build/assets/agent-settings-DyfziYyM.js +0 -2
- package/build/assets/alert-banner-BFayS5vM.js +0 -1
- package/build/assets/analytics-consent-form-modal-CQ22qlFF.js +0 -1
- package/build/assets/api-key-entry-screen-KnIwP0vN.js +0 -1
- package/build/assets/app-settings-CBaHJ5vJ.js +0 -1
- package/build/assets/automation-detail-DgQswnXg.js +0 -1
- package/build/assets/automations-list-D99p6CoQ.js +0 -1
- package/build/assets/back-nav-button-Cp9z-wsG.js +0 -1
- package/build/assets/backend-form-modal-BABAz-zH.js +0 -1
- package/build/assets/backend-synced-settings-badge-DzwWQC4T.js +0 -1
- package/build/assets/base-modal-1bHiB5Wf.js +0 -1
- package/build/assets/brand-button-FHWgEb4Q.js +0 -1
- package/build/assets/browser-store-B9h0eW79.js +0 -1
- package/build/assets/browser-tab-JiCXo0Nc.js +0 -1
- package/build/assets/chat-send-button-QtyofqFt.js +0 -1
- package/build/assets/check-6ieIiPhW.js +0 -1
- package/build/assets/checkmark-BfgRVMHK.js +0 -1
- package/build/assets/circle-plus-check-toggle-CmINKfZj.js +0 -1
- package/build/assets/close-DhH0uMa7.js +0 -1
- package/build/assets/code-tag-CnORXDJj.js +0 -1
- package/build/assets/combobox-caret-BB15S7zY.js +0 -1
- package/build/assets/condenser-settings-BOKNShD9.js +0 -1
- package/build/assets/confirmation-modal-CofmThy4.js +0 -1
- package/build/assets/context-menu-list-item-DO12IEaK.js +0 -1
- package/build/assets/conversation-DIzv-jq8.js +0 -1
- package/build/assets/conversation-DV3odvMe.js +0 -19
- package/build/assets/conversation-local-storage-DK7yJr5N.js +0 -1
- package/build/assets/conversation-panel-CgCarTAn.js +0 -1
- package/build/assets/conversation-service.api-RV_bOKNz.js +0 -1
- package/build/assets/conversation-state-store-4obo4ZMf.js +0 -1
- package/build/assets/conversation-store-CXrL0v-X.js +0 -6
- package/build/assets/conversation-tab-empty-state-CqT5ur_H.js +0 -1
- package/build/assets/copy-C5tBqfWu.js +0 -1
- package/build/assets/copy-to-clipboard-button-BVFYcsg_.js +0 -1
- package/build/assets/createLucideIcon-D3nkdIAN.js +0 -1
- package/build/assets/declaration-B0yY_dkQ.js +0 -1
- package/build/assets/device-verify-DRupI_hz.js +0 -1
- package/build/assets/dist-D5d5zm8o.js +0 -1
- package/build/assets/dist-fV7trlfb.js +0 -1
- package/build/assets/dropdown-classes-5IsMjYYw.js +0 -1
- package/build/assets/edit-automation-modal-BG-gd82b.js +0 -1
- package/build/assets/ellipsis-button-DWvVZO_r.js +0 -1
- package/build/assets/entry.client-uhbVfCtd.js +0 -2
- package/build/assets/enum-filter-dropdown-CB2fqz_e.js +0 -1
- package/build/assets/environment-switch-overlay-Oeal5TVq.js +0 -1
- package/build/assets/extensions-hub-DxiE0AZR.js +0 -1
- package/build/assets/files-tab-1F2OlNeH.js +0 -1
- package/build/assets/files-tab-store-C1q5Rbx3.js +0 -1
- package/build/assets/folder-C5tr7xyN.js +0 -1
- package/build/assets/get-language-from-path-E1JKsbeE.js +0 -1
- package/build/assets/git-provider-icon-CKs-22Ts.js +0 -1
- package/build/assets/home-B3E0le0g.js +0 -1
- package/build/assets/iconBase-DMoh3FEg.js +0 -1
- package/build/assets/index-redirect-DhuK5mhS.js +0 -1
- package/build/assets/install-server-modal-DjintV14.js +0 -1
- package/build/assets/is-backend-llm-ready-Bj44pekN.js +0 -1
- package/build/assets/launch-DCU3S84p.js +0 -1
- package/build/assets/lesson-plan-BUUPKVsa.js +0 -3
- package/build/assets/link-external-CF4KHxx-.js +0 -1
- package/build/assets/llm-client-BakM_czF.js +0 -1
- package/build/assets/llm-not-configured-banner-BV-NIjfR.js +0 -27
- package/build/assets/llm-settings-B5d7PHzz.js +0 -1
- package/build/assets/llm-settings-C5whb-0p.js +0 -1
- package/build/assets/loader-circle-DyX8DmLg.js +0 -1
- package/build/assets/loading-spinner-BvOAco8a.js +0 -1
- package/build/assets/manage-backends-modal-D9ClxVpM.js +0 -1
- package/build/assets/manifest-38a873aa.js +0 -1
- package/build/assets/mcp-7rk44GRS.js +0 -9
- package/build/assets/mcp-client-DxHXYNOw.js +0 -1
- package/build/assets/messages-DgBEaXil.js +0 -43
- package/build/assets/modal-backdrop-DjAC2zOZ.js +0 -1
- package/build/assets/modal-body-OJdIUJ68.js +0 -1
- package/build/assets/modal-close-button-BNjGesHc.js +0 -1
- package/build/assets/model-selector-w2uGPM5y.js +0 -1
- package/build/assets/navigation-context-CUJ60pLI.js +0 -1
- package/build/assets/navigation-link-BiPKTOHF.js +0 -1
- package/build/assets/onboarding-Cit87z8g.js +0 -1
- package/build/assets/onboarding-modal-JPrzvr8W.js +0 -1
- package/build/assets/openhands-logo-uNs9g6LY.js +0 -1
- package/build/assets/option-service.api-BLYUhnCF.js +0 -1
- package/build/assets/organization-service.api-DpSSwlZu.js +0 -1
- package/build/assets/path-utils-B4WAVqvK.js +0 -1
- package/build/assets/plan-components-DSOTFW2D.js +0 -1
- package/build/assets/planner-tab-LmoxgKKe.js +0 -1
- package/build/assets/preload-helper-D_sPnjeL.js +0 -1
- package/build/assets/profiles-client-B4SJ4ZAf.js +0 -1
- package/build/assets/providers-BGUAB8kf.js +0 -1
- package/build/assets/react-Dn-iWFF5.js +0 -1
- package/build/assets/react-dom-BBXlXOZX.js +0 -1
- package/build/assets/react-uQK8du1l.js +0 -1
- package/build/assets/recommended-automations-launcher-Df9MXUpX.js +0 -50
- package/build/assets/root-BShAdYGY.css +0 -1
- package/build/assets/root-C99reK-P.js +0 -2
- package/build/assets/root-layout-BtH64XeC.js +0 -2
- package/build/assets/runtime-waiting-state-C7MjXDeW.js +0 -1
- package/build/assets/schema-field-BCDuEMrl.js +0 -1
- package/build/assets/sdk-section-page-XJN9mGju.js +0 -1
- package/build/assets/sdk-settings-schema-B15AE1GH.js +0 -1
- package/build/assets/search-rob4u9f8.js +0 -1
- package/build/assets/secrets-service-CrPyCR8u.js +0 -1
- package/build/assets/secrets-settings-UJn15N7E.js +0 -1
- package/build/assets/settings-C5aUD_sQ.js +0 -1
- package/build/assets/settings-dropdown-input-DQRt2_RA.js +0 -1
- package/build/assets/settings-gear-B7bZDo_8.js +0 -1
- package/build/assets/settings-index-zP_rYIW1.js +0 -1
- package/build/assets/settings-input-n8FzVso3.js +0 -1
- package/build/assets/settings-list-classes-DquY3fwm.js +0 -1
- package/build/assets/settings-modal-szlQ6LpE.js +0 -1
- package/build/assets/settings-section-header-context-DrXgyNC-.js +0 -1
- package/build/assets/settings-service.api-B4G8NzCM.js +0 -1
- package/build/assets/settings-switch-DsbEm3ie.js +0 -1
- package/build/assets/shared-conversation-BrAvqeaI.js +0 -1
- package/build/assets/sidebar-mobile-menu-toggle-BRZGCe-l.js +0 -1
- package/build/assets/sidebar-nav-link-B_EygIce.js +0 -1
- package/build/assets/skill-card-pill-row-Bq9Imkdh.js +0 -1
- package/build/assets/skills-Wg6i0kbu.js +0 -1
- package/build/assets/skills-client-DNd444Bm.js +0 -1
- package/build/assets/skills-plugins-DaGkVI7-.js +0 -1
- package/build/assets/skills-settings-Dlp0WFaT.js +0 -2
- package/build/assets/styled-tooltip-ulgpZDga.js +0 -1
- package/build/assets/suspense-BqBQEuKs.js +0 -1
- package/build/assets/switch-skeleton-C49gVWOQ.js +0 -1
- package/build/assets/task-list-tab-Bz-UlCm2.js +0 -1
- package/build/assets/telemetry-DD3HKMgf.js +0 -2
- package/build/assets/terminal-BwLvVzyJ.js +0 -1
- package/build/assets/toggle-switch-CxW8-lBI.js +0 -1
- package/build/assets/typography-BLf_mRKH.js +0 -1
- package/build/assets/u-check-circle-CxTAJuY9.js +0 -1
- package/build/assets/u-check-circle-half-Bj73jfUG.js +0 -1
- package/build/assets/u-circuit-C-6V9H9C.js +0 -1
- package/build/assets/u-edit-C7OnK2sa.js +0 -1
- package/build/assets/use-acp-credential-form-oehc057O.js +0 -1
- package/build/assets/use-active-conversation-CFXVX2on.js +0 -1
- package/build/assets/use-agent-state-D6xfZA4-.js +0 -1
- package/build/assets/use-backends-health-93yRIOWs.js +0 -1
- package/build/assets/use-breakpoint-Xdy_aZHE.js +0 -1
- package/build/assets/use-click-outside-element-CADb_gCP.js +0 -1
- package/build/assets/use-cloud-current-user-id-CzOXsy04.js +0 -1
- package/build/assets/use-config-oXjEWyb6.js +0 -1
- package/build/assets/use-create-conversation-D-YkgrxS.js +0 -1
- package/build/assets/use-create-secret-CX7Ij7W4.js +0 -1
- package/build/assets/use-event-store-DMRAQQi8.js +0 -1
- package/build/assets/use-handle-plan-click-CwW2Ijc2.js +0 -1
- package/build/assets/use-is-authed-CNbX1KMm.js +0 -1
- package/build/assets/use-launch-skill-in-chat-xI9byRUw.js +0 -1
- package/build/assets/use-llm-profiles-BXRZ2rBh.js +0 -1
- package/build/assets/use-runtime-is-ready-Dwzs9_vp.js +0 -1
- package/build/assets/use-settings-_usWr_qn.js +0 -1
- package/build/assets/use-settings-nav-items-DoB5iH-7.js +0 -16
- package/build/assets/use-skills-BtorhoCN.js +0 -1
- package/build/assets/use-task-list-u46BhYBC.js +0 -1
- package/build/assets/use-tracking-Ca7p71hH.js +0 -1
- package/build/assets/use-user-conversation-U-16WF6G.js +0 -1
- package/build/assets/useMutation-CseCrRRO.js +0 -1
- package/build/assets/useQuery-bowvACed.js +0 -1
- package/build/assets/useTranslation-KhTtKmnv.js +0 -1
- package/build/assets/utils-cRyMoFbz.js +0 -1
- package/build/assets/vendor~conversation-panel~conversation~alert-banner-CjfR7T3x.js +0 -1
- package/build/assets/vendor~entry.client-_zl82x5T.js +0 -1
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~dj9x5fm9-CgCGB-3J.js +0 -177
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~jfvr34cq-BJdsUTJG.js +0 -1
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~m3df9r20-BynFAJ_S.js +0 -1
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~nk00xiud-MfCRtPrK.js +0 -9
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~ghtfhmuy-BHDILMe2.js +0 -1
- package/build/assets/vendor~root-layout~conversation-panel~conversation-BFZmbXpq.js +0 -1
- package/build/assets/vendor~root-layout~conversation-panel~conversation~index-BPY-kNjK.js +0 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation-BhWqQNmF.js +0 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~cfyi58ut-CnnEa0dP.js +0 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~clac83qc-DMX6XUwI.js +0 -2
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ldu51w4e-Cqp6k3RG.js +0 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ldu51w4e-DS4GWhCz.js +0 -9
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~ji28rqgb-DVffa9Ks.js +0 -48
- package/build/assets/vendor~root-layout~home~mcp~automations-list~onboarding-modal-BzR6ypP3.js +0 -1
- package/build/assets/vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~hzfcl1q6-BcvHZmEZ.js +0 -2
- package/build/assets/vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~hzfcl1q6-Cuvp6wqR.js +0 -14
- package/build/assets/verification-settings-DKZnUHD6.js +0 -1
- package/build/assets/x-DpnGZyVW.js +0 -1
- package/build/assets/x-mark-x3tvCZzc.js +0 -1
- package/dist/components/features/analytics/analytics-consent-form-modal.d.ts +0 -5
- package/dist/components/features/chat/switch-profile-button.cjs +0 -2
- package/dist/components/features/chat/switch-profile-button.cjs.map +0 -1
- package/dist/components/features/chat/switch-profile-button.d.ts +0 -1
- package/dist/components/features/chat/switch-profile-button.js +0 -48
- package/dist/components/features/chat/switch-profile-button.js.map +0 -1
- package/dist/components/features/chat/switch-profile-context-menu.cjs +0 -2
- package/dist/components/features/chat/switch-profile-context-menu.cjs.map +0 -1
- package/dist/components/features/chat/switch-profile-context-menu.d.ts +0 -9
- package/dist/components/features/chat/switch-profile-context-menu.js +0 -106
- package/dist/components/features/chat/switch-profile-context-menu.js.map +0 -1
- package/dist/components/features/onboarding/is-backend-llm-ready.d.ts +0 -30
- package/dist/icons/u-circuit.cjs +0 -2
- package/dist/icons/u-circuit.cjs.map +0 -1
- package/dist/icons/u-circuit.js +0 -19
- package/dist/icons/u-circuit.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.js +0 -28
- package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.js.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.cjs +0 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.cjs.map +0 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.js +0 -35
- package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.js.map +0 -1
- /package/build/assets/{agent-server-ui-style-scope-CIDFDeQb.js → agent-server-ui-style-scope-COnDHTm5.js} +0 -0
- /package/build/assets/{automation-DNgDxqtq.js → automation-BU8zu-FP.js} +0 -0
- /package/build/assets/{common-KeiA2Rod.js → common-Dh7OqABE.js} +0 -0
- /package/build/assets/{environment-switch-store-BpKxp6Xq.js → environment-switch-store-DkjlKWzN.js} +0 -0
- /package/build/assets/{extension-module-card-classes-DvvyImGv.js → extension-module-card-classes-9V3J9J_b.js} +0 -0
- /package/build/assets/{git-status-mapper-B3_HbzUT.js → git-status-mapper-BI8FyUVp.js} +0 -0
- /package/build/assets/{handle-capture-consent-BChvj6mt.js → handle-capture-consent-CPMXU29K.js} +0 -0
- /package/build/assets/{llm-subscription-C1xDoa3K.js → llm-subscription-DtsX5Lhg.js} +0 -0
- /package/build/assets/{map-provider-MonJL5SS.js → map-provider-BM2SJarp.js} +0 -0
- /package/build/assets/{objectWithoutPropertiesLoose-BRYudkUn.js → objectWithoutPropertiesLoose-BgYIAs2y.js} +0 -0
- /package/build/assets/{rolldown-runtime-wFmyQBCi.js → rolldown-runtime-BFRubm34.js} +0 -0
- /package/build/assets/{settings-like-page-layout-classes-DNg2vKSM.js → settings-like-page-layout-classes-DENKlZpD.js} +0 -0
- /package/build/assets/{v4-BMWDcIWQ.js → v4-DbCkTSoU.js} +0 -0
- /package/build/assets/{vendor~browser-yZEspfT9.js → vendor~browser-Dqd33JyP.js} +0 -0
- /package/build/assets/{vendor~terminal-CcUoOdAH.js → vendor~terminal-aeP3PnKf.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-redacted-credentials.js","names":[],"sources":["../../../src/api/mcp-service/mcp-redacted-credentials.ts"],"sourcesContent":["import SettingsService from \"#/api/settings-service/settings-service.api\";\nimport type { MCPServerConfig } from \"#/types/mcp-server\";\nimport {
|
|
1
|
+
{"version":3,"file":"mcp-redacted-credentials.js","names":[],"sources":["../../../src/api/mcp-service/mcp-redacted-credentials.ts"],"sourcesContent":["import SettingsService from \"#/api/settings-service/settings-service.api\";\nimport { isMcpAuthCredential } from \"#/types/mcp-auth\";\nimport type { MCPServerConfig } from \"#/types/mcp-server\";\nimport {\n hasRedactedMcpSecretLeaf,\n REDACTED_MCP_SECRET_VALUE,\n} from \"#/utils/mcp-config\";\n\ntype StoredMcpServer = {\n url?: unknown;\n transport?: unknown;\n env?: unknown;\n auth?: unknown;\n headers?: unknown;\n};\n\ntype StoredMcpConfig = Record<string, StoredMcpServer>;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n !!value && typeof value === \"object\" && !Array.isArray(value);\n\nconst stringRecord = (value: unknown): Record<string, string> | undefined => {\n if (!isRecord(value)) return undefined;\n const entries = Object.entries(value).filter(\n (entry): entry is [string, string] => typeof entry[1] === \"string\",\n );\n return entries.length > 0 ? Object.fromEntries(entries) : undefined;\n};\n\nconst hasRedactedValue = (values: Record<string, string> | undefined) =>\n !!values &&\n Object.values(values).some((value) => value === REDACTED_MCP_SECRET_VALUE);\n\nconst remoteTransportMatches = (\n type: MCPServerConfig[\"type\"],\n transport: unknown,\n) => {\n if (type === \"sse\") return transport === \"sse\";\n if (type === \"shttp\") {\n return (\n transport === undefined ||\n transport === \"http\" ||\n transport === \"shttp\" ||\n transport === \"streamable-http\"\n );\n }\n return false;\n};\n\n// The editor assigns each stdio server an id of the form ``stdio-<i>`` matching\n// its position in ``parseMcpConfig``'s stdio array. That position is stable\n// across a rename because ``parseMcpConfig`` collects stdio entries (those\n// without a ``url``) in ``Object.entries`` order, identical for the redacted\n// and encrypted settings. Resolve the original stored entry by position so a\n// renamed stdio server still finds its stored encrypted env, instead of\n// looking it up by the new (no-longer-matching) display name.\nconst stdioIndexFromId = (id: string | undefined): number | undefined => {\n if (!id) return undefined;\n const match = /^stdio-(\\d+)$/.exec(id);\n return match ? Number.parseInt(match[1], 10) : undefined;\n};\n\nconst findStoredStdioByIndex = (\n id: string | undefined,\n storedServers: StoredMcpConfig,\n): StoredMcpServer | undefined => {\n const index = stdioIndexFromId(id);\n if (index === undefined) return undefined;\n const stdioEntries = Object.entries(storedServers).filter(\n ([, stored]) => !stored.url,\n );\n return stdioEntries[index]?.[1];\n};\n\nconst findStoredServer = (\n server: MCPServerConfig,\n storedServers: StoredMcpConfig,\n): StoredMcpServer | undefined => {\n if (server.type === \"stdio\") {\n // Prefer the positional id: a rename changes the display name (the stored\n // dict key), and a rename onto an existing name would otherwise restore the\n // wrong server's secrets. Fall back to a name match only when no id-based\n // position is available (e.g. configs built without an editor-assigned id).\n return (\n findStoredStdioByIndex(server.id, storedServers) ??\n (server.name ? storedServers[server.name] : undefined)\n );\n }\n\n if (server.name && storedServers[server.name]) {\n return storedServers[server.name];\n }\n\n return Object.values(storedServers).find(\n (stored) =>\n stored.url === server.url &&\n remoteTransportMatches(server.type, stored.transport),\n );\n};\n\nasync function fetchEncryptedStoredServer(\n server: MCPServerConfig,\n): Promise<StoredMcpServer | undefined> {\n const response = await SettingsService.fetchSettingsFromApi(\"encrypted\");\n const mcpConfig = response.agent_settings?.mcp_config;\n if (!isRecord(mcpConfig)) {\n return undefined;\n }\n return findStoredServer(server, mcpConfig as StoredMcpConfig);\n}\n\n/**\n * The MCP editor sees redacted settings (`**********`). When the user leaves\n * a secret unchanged, replace that placeholder with the stored encrypted\n * env/header/OAuth state value so tests and saves round-trip the real\n * credential without exposing plaintext in the browser.\n */\nexport async function substituteRedactedMcpCredentials(\n server: MCPServerConfig,\n): Promise<MCPServerConfig> {\n const redactedStdioEnv =\n server.type === \"stdio\" && hasRedactedValue(server.env);\n const redactedRemoteAuth =\n (server.type === \"sse\" || server.type === \"shttp\") &&\n hasRedactedMcpSecretLeaf(server.auth);\n\n if (!redactedStdioEnv && !redactedRemoteAuth) {\n return server;\n }\n\n try {\n const stored = await fetchEncryptedStoredServer(server);\n if (!stored) return server;\n\n if (redactedStdioEnv) {\n const storedEnv = stringRecord(stored.env) ?? {};\n const env = Object.fromEntries(\n Object.entries(server.env ?? {}).map(([key, value]) => [\n key,\n value === REDACTED_MCP_SECRET_VALUE &&\n typeof storedEnv[key] === \"string\"\n ? storedEnv[key]\n : value,\n ]),\n );\n return { ...server, env };\n }\n\n if (!redactedRemoteAuth) return server;\n if (isMcpAuthCredential(stored.auth)) {\n return { ...server, auth: stored.auth };\n }\n return server;\n } catch {\n return server;\n }\n}\n"],"mappings":";;;;AAkBA,IAAM,KAAY,MAChB,CAAC,CAAC,KAAS,OAAO,KAAU,YAAY,CAAC,MAAM,QAAQ,EAAM,EAEzD,KAAgB,MAAuD;AAC3E,KAAI,CAAC,EAAS,EAAM,CAAE;CACtB,IAAM,IAAU,OAAO,QAAQ,EAAM,CAAC,QACnC,MAAqC,OAAO,EAAM,MAAO,SAC3D;AACD,QAAO,EAAQ,SAAS,IAAI,OAAO,YAAY,EAAQ,GAAG,KAAA;GAGtD,KAAoB,MACxB,CAAC,CAAC,KACF,OAAO,OAAO,EAAO,CAAC,MAAM,MAAU,MAAA,aAAoC,EAEtE,KACJ,GACA,MAEI,MAAS,QAAc,MAAc,QACrC,MAAS,UAET,MAAc,KAAA,KACd,MAAc,UACd,MAAc,WACd,MAAc,oBAGX,IAUH,KAAoB,MAA+C;AACvE,KAAI,CAAC,EAAI;CACT,IAAM,IAAQ,gBAAgB,KAAK,EAAG;AACtC,QAAO,IAAQ,OAAO,SAAS,EAAM,IAAI,GAAG,GAAG,KAAA;GAG3C,KACJ,GACA,MACgC;CAChC,IAAM,IAAQ,EAAiB,EAAG;AAC9B,WAAU,KAAA,EAId,QAHqB,OAAO,QAAQ,EAAc,CAAC,QAChD,GAAG,OAAY,CAAC,EAAO,IAEnB,CAAa,KAAS;GAGzB,KACJ,GACA,MAEI,EAAO,SAAS,UAMhB,EAAuB,EAAO,IAAI,EAAc,KAC/C,EAAO,OAAO,EAAc,EAAO,QAAQ,KAAA,KAI5C,EAAO,QAAQ,EAAc,EAAO,QAC/B,EAAc,EAAO,QAGvB,OAAO,OAAO,EAAc,CAAC,MACjC,MACC,EAAO,QAAQ,EAAO,OACtB,EAAuB,EAAO,MAAM,EAAO,UAAU,CACxD;AAGH,eAAe,EACb,GACsC;CAEtC,IAAM,KAAY,MADK,EAAgB,qBAAqB,YAAY,EAC7C,gBAAgB;AACtC,OAAS,EAAU,CAGxB,QAAO,EAAiB,GAAQ,EAA6B;;AAS/D,eAAsB,EACpB,GAC0B;CAC1B,IAAM,IACJ,EAAO,SAAS,WAAW,EAAiB,EAAO,IAAI,EACnD,KACH,EAAO,SAAS,SAAS,EAAO,SAAS,YAC1C,EAAyB,EAAO,KAAK;AAEvC,KAAI,CAAC,KAAoB,CAAC,EACxB,QAAO;AAGT,KAAI;EACF,IAAM,IAAS,MAAM,EAA2B,EAAO;AACvD,MAAI,CAAC,EAAQ,QAAO;AAEpB,MAAI,GAAkB;GACpB,IAAM,IAAY,EAAa,EAAO,IAAI,IAAI,EAAE,EAC1C,IAAM,OAAO,YACjB,OAAO,QAAQ,EAAO,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,GAAK,OAAW,CACrD,GACA,MAAA,gBACA,OAAO,EAAU,MAAS,WACtB,EAAU,KACV,EACL,CAAC,CACH;AACD,UAAO;IAAE,GAAG;IAAQ;IAAK;;AAO3B,SAJK,KACD,EAAoB,EAAO,KAAK,GAC3B;GAAE,GAAG;GAAQ,MAAM,EAAO;GAAM,GAElC;SACD;AACN,SAAO"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../node_modules/@openhands/typescript-client/dist/client/mcp-client.cjs`)
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../node_modules/@openhands/typescript-client/dist/client/mcp-client.cjs`);require(`../../node_modules/@openhands/typescript-client/dist/clients.cjs`);const t=require(`../backend-registry/active-store.cjs`),n=require(`../agent-server-client-options.cjs`),r=require(`../../utils/mcp-credential-validation.cjs`),i=require(`./mcp-redacted-credentials.cjs`);var a=120;function o(e){return e.type===`stdio`?{transport:`stdio`,command:e.command,...e.args?.length&&{args:e.args},...e.env&&Object.keys(e.env).length>0&&{env:e.env}}:{transport:e.type===`sse`?`sse`:`http`,url:e.url,...e.headers&&Object.keys(e.headers).length>0&&{headers:e.headers},...e.auth?{auth:e.auth}:{}}}function s(e){return e.auth?.strategy===`oauth2`?a:e.timeout}async function c(e){let t=r.getCredentialValidationForServer(e),n=o(await i.substituteRedactedMcpCredentials(e)),a=s(e);return{server:n,...e.name?{name:e.name}:{},...a===void 0?{}:{timeout:a},...t?{tool_call:t.toolCall}:{}}}function l(){if(t.getActiveBackend().backend.kind===`local`){let{host:e,apiKey:t}=n.getAgentServerClientOptions();return{host:e,...t?{apiKey:t}:{}}}let e=t.getRegisteredBackends().find(e=>e.kind===`local`&&e.host);if(e)return{host:e.host.replace(/\/+$/,``),...e.apiKey?{apiKey:e.apiKey}:{}};throw Error(`OAuth authorization requires a reachable local backend.`)}function u(){let{host:t,apiKey:n}=l();return new e.MCPClient({host:t,...n?{apiKey:n}:{},timeout:a*1e3+5e3})}function d(e){return e.status===`succeeded`?{ok:!0,tools:e.tools??[],...e.tool_result!==void 0&&{tool_result:e.tool_result},...e.oauth_state!==void 0&&{oauth_state:e.oauth_state}}:{ok:!1,error:e.error||`OAuth authorization did not complete`,error_kind:e.error_kind||`unknown`}}var f=e=>new Promise(t=>{window.setTimeout(t,e)}),p=class i{static async testServer(i){if(t.getActiveBackend().backend.kind===`cloud`)return{ok:!0,tools:[]};let a=r.getCredentialValidationForServer(i),{host:o,apiKey:s}=n.getAgentServerClientOptions(),l=new e.MCPClient({host:o,...s?{apiKey:s}:{}});try{let e=await c(i),t=await l.testServer(e);if(t.ok&&a&&t.tool_result){let e=a.interpret(t.tool_result);if(e)return{ok:!1,error:e,error_kind:`credentials`}}return t}finally{l.close()}}static async startOAuth(e){let t=u();try{return await i.startOAuthWithClient(t,e)}finally{t.close()}}static async getOAuthStatus(e){let t=u();try{return await i.getOAuthStatusWithClient(t,e)}finally{t.close()}}static async submitOAuthCallback(e,t){let n=u();try{return await i.submitOAuthCallbackWithClient(n,e,t)}finally{n.close()}}static async authorizeOAuth(e){let t=window.open(`about:blank`,`_blank`),n=u();try{let r=await i.startOAuthWithClient(n,e);if(!r.ok||!r.job_id||!r.authorization_url)return t?.close(),{ok:!1,error:r.error||`Could not start OAuth authorization`,error_kind:r.error_kind||`unknown`};let o=await i.getOAuthStatusWithClient(n,r.job_id);for(let e=0;e<20;e+=1){if(o.status===`succeeded`||o.status===`failed`)return t?.close(),d(o);if(o.callback_ready)break;await f(250),o=await i.getOAuthStatusWithClient(n,r.job_id)}t&&(t.location.href=r.authorization_url);for(let e=0;e<a;e+=1)if(await f(1e3),o=await i.getOAuthStatusWithClient(n,r.job_id),o.status===`succeeded`||o.status===`failed`)return t?.close(),d(o);return{ok:!1,error:`OAuth authorization timed out`,error_kind:`timeout`}}finally{n.close()}}static async startOAuthWithClient(e,t){let n=await c(t);return e.startOAuth(n)}static async getOAuthStatusWithClient(e,t){return e.getOAuthStatus(t)}static async submitOAuthCallbackWithClient(e,t,n){return e.submitOAuthCallback(t,{callback_url:n})}};exports.default=p;
|
|
2
2
|
//# sourceMappingURL=mcp-service.api.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-service.api.cjs","names":[],"sources":["../../../src/api/mcp-service/mcp-service.api.ts"],"sourcesContent":["import { MCPClient } from \"@openhands/typescript-client/clients\";\nimport type {\n MCPServerSpec,\n MCPTestRequest,\n} from \"@openhands/typescript-client\";\nimport { getAgentServerClientOptions } from \"../agent-server-client-options\";\nimport { getActiveBackend } from \"../backend-registry/active-store\";\nimport { getCredentialValidationForServer } from \"#/utils/mcp-credential-validation\";\nimport type {\n ExtendedMCPTestResponse,\n MCPServerConfig,\n} from \"#/types/mcp-server\";\nimport { substituteRedactedMcpCredentials } from \"./mcp-redacted-credentials\";\n\nfunction toMcpServerSpec(server: MCPServerConfig): MCPServerSpec {\n if (server.type === \"stdio\") {\n return {\n type: \"stdio\",\n command: server.command!,\n ...(server.args?.length && { args: server.args }),\n ...(server.env &&\n Object.keys(server.env).length > 0 && { env: server.env }),\n };\n }\n return {\n type: server.type,\n url: server.url!,\n ...(server.headers &&\n Object.keys(server.headers).length > 0 && { headers: server.headers }),\n ...(server.api_key ? { api_key: server.api_key } : {}),\n } as MCPServerSpec;\n}\n\nclass McpService {\n static async testServer(\n server: MCPServerConfig,\n ): Promise<ExtendedMCPTestResponse> {\n // The MCP connectivity-test endpoint lives on the local agent-server. It\n // spawns the configured stdio command / opens an SSE-or-SHTTP connection\n // from that process's environment. Cloud backends don't expose this\n // endpoint to the frontend — the MCP server would actually run inside the\n // cloud sandbox, which isn't reachable from the browser before the user\n // starts a conversation. Calling `getAgentServerClientOptions()` here for\n // a cloud-active session would throw `NoBackendAvailableError(\"No backend\n // is configured.\")` and block the install flow entirely. Short-circuit\n // with a synthetic success so saving proceeds; any real connection\n // failure surfaces inside the conversation runtime instead.\n if (getActiveBackend().backend.kind === \"cloud\") {\n return { ok: true, tools: [] };\n }\n const validation = getCredentialValidationForServer(server);\n const serverSpec = toMcpServerSpec(\n await substituteRedactedMcpCredentials(server),\n );\n const { host, apiKey } = getAgentServerClientOptions();\n const client = new MCPClient({ host, ...(apiKey ? { apiKey } : {}) });\n try {\n // `tool_call` / `tool_result` aren't in the published client types\n // yet; the client POSTs the request object and returns the response\n // body as-is, so the extra fields round-trip at runtime. Old agent\n // servers ignore `tool_call` and return no `tool_result`, in which\n // case the response passes through uninterpreted (legacy behavior).\n const request = {\n server: serverSpec,\n ...(server.name ? { name: server.name } : {}),\n ...(server.timeout ? { timeout: server.timeout } : {}),\n ...(validation ? { tool_call: validation.toolCall } : {}),\n };\n const result = (await client.testServer(\n request as MCPTestRequest,\n )) as ExtendedMCPTestResponse;\n if (result.ok && validation && result.tool_result) {\n const credentialError = validation.interpret(result.tool_result);\n if (credentialError) {\n return {\n ok: false,\n error: credentialError,\n error_kind: \"credentials\",\n };\n }\n }\n return result;\n } finally {\n client.close();\n }\n }\n}\n\nexport default McpService;\n"],"mappings":"mVAcA,SAAS,EAAgB,EAAwC,CAU/D,OATI,EAAO,OAAS,QACX,CACL,KAAM,QACN,QAAS,EAAO,QAChB,GAAI,EAAO,MAAM,QAAU,CAAE,KAAM,EAAO,KAAM,CAChD,GAAI,EAAO,KACT,OAAO,KAAK,EAAO,IAAI,CAAC,OAAS,GAAK,CAAE,IAAK,EAAO,IAAK,CAC5D,CAEI,CACL,KAAM,EAAO,KACb,IAAK,EAAO,IACZ,GAAI,EAAO,SACT,OAAO,KAAK,EAAO,QAAQ,CAAC,OAAS,GAAK,CAAE,QAAS,EAAO,QAAS,CACvE,GAAI,EAAO,QAAU,CAAE,QAAS,EAAO,QAAS,CAAG,EAAE,CACtD,CAGH,IAAM,EAAN,KAAiB,CACf,aAAa,WACX,EACkC,CAWlC,GAAI,EAAA,kBAAkB,CAAC,QAAQ,OAAS,QACtC,MAAO,CAAE,GAAI,GAAM,MAAO,EAAE,CAAE,CAEhC,IAAM,EAAa,EAAA,iCAAiC,EAAO,CACrD,EAAa,EACjB,MAAM,EAAA,iCAAiC,EAAO,CAC/C,CACK,CAAE,OAAM,UAAW,EAAA,6BAA6B,CAChD,EAAS,IAAI,EAAA,UAAU,CAAE,OAAM,GAAI,EAAS,CAAE,SAAQ,CAAG,EAAE,CAAG,CAAC,CACrE,GAAI,CAMF,IAAM,EAAU,CACd,OAAQ,EACR,GAAI,EAAO,KAAO,CAAE,KAAM,EAAO,KAAM,CAAG,EAAE,CAC5C,GAAI,EAAO,QAAU,CAAE,QAAS,EAAO,QAAS,CAAG,EAAE,CACrD,GAAI,EAAa,CAAE,UAAW,EAAW,SAAU,CAAG,EAAE,CACzD,CACK,EAAU,MAAM,EAAO,WAC3B,EACD,CACD,GAAI,EAAO,IAAM,GAAc,EAAO,YAAa,CACjD,IAAM,EAAkB,EAAW,UAAU,EAAO,YAAY,CAChE,GAAI,EACF,MAAO,CACL,GAAI,GACJ,MAAO,EACP,WAAY,cACb,CAGL,OAAO,SACC,CACR,EAAO,OAAO"}
|
|
1
|
+
{"version":3,"file":"mcp-service.api.cjs","names":[],"sources":["../../../src/api/mcp-service/mcp-service.api.ts"],"sourcesContent":["import { MCPClient } from \"@openhands/typescript-client/clients\";\nimport type { MCPTestRequest } from \"@openhands/typescript-client\";\nimport { getAgentServerClientOptions } from \"../agent-server-client-options\";\nimport {\n getActiveBackend,\n getRegisteredBackends,\n} from \"../backend-registry/active-store\";\nimport { getCredentialValidationForServer } from \"#/utils/mcp-credential-validation\";\nimport type { MCPAuthCredential } from \"#/types/mcp-auth\";\nimport type {\n ExtendedMCPTestResponse,\n MCPOAuthStartResponse,\n MCPOAuthStatusResponse,\n MCPServerConfig,\n} from \"#/types/mcp-server\";\nimport { substituteRedactedMcpCredentials } from \"./mcp-redacted-credentials\";\n\nconst OAUTH_MCP_TEST_TIMEOUT_SECONDS = 120;\n\ntype MCPTestServer = {\n transport?: \"stdio\" | \"http\" | \"sse\";\n command?: string;\n args?: string[];\n env?: Record<string, string>;\n url?: string;\n headers?: Record<string, string>;\n auth?: MCPAuthCredential;\n};\n\ninterface ExtendedMCPTestRequest {\n server: MCPTestServer;\n name?: string;\n timeout?: number;\n tool_call?: {\n name: string;\n arguments: Record<string, unknown>;\n };\n}\n\nfunction toMcpServer(server: MCPServerConfig): MCPTestServer {\n if (server.type === \"stdio\") {\n return {\n transport: \"stdio\",\n command: server.command!,\n ...(server.args?.length && { args: server.args }),\n ...(server.env &&\n Object.keys(server.env).length > 0 && { env: server.env }),\n };\n }\n return {\n transport: server.type === \"sse\" ? \"sse\" : \"http\",\n url: server.url!,\n ...(server.headers &&\n Object.keys(server.headers).length > 0 && { headers: server.headers }),\n ...(server.auth ? { auth: server.auth } : {}),\n };\n}\n\nfunction getMcpTestTimeout(server: MCPServerConfig): number | undefined {\n if (server.auth?.strategy !== \"oauth2\") return server.timeout;\n return OAUTH_MCP_TEST_TIMEOUT_SECONDS;\n}\n\nasync function buildMcpTestRequest(\n server: MCPServerConfig,\n): Promise<ExtendedMCPTestRequest> {\n const validation = getCredentialValidationForServer(server);\n const serverSpec = toMcpServer(\n await substituteRedactedMcpCredentials(server),\n );\n const timeout = getMcpTestTimeout(server);\n return {\n server: serverSpec,\n ...(server.name ? { name: server.name } : {}),\n ...(timeout !== undefined ? { timeout } : {}),\n ...(validation ? { tool_call: validation.toolCall } : {}),\n };\n}\n\nfunction getMcpProbeOptions(): { host: string; apiKey?: string } {\n const active = getActiveBackend().backend;\n if (active.kind === \"local\") {\n const { host, apiKey } = getAgentServerClientOptions();\n return { host, ...(apiKey ? { apiKey } : {}) };\n }\n\n const localBackend = getRegisteredBackends().find(\n (backend) => backend.kind === \"local\" && backend.host,\n );\n if (localBackend) {\n return {\n host: localBackend.host.replace(/\\/+$/, \"\"),\n ...(localBackend.apiKey ? { apiKey: localBackend.apiKey } : {}),\n };\n }\n throw new Error(\"OAuth authorization requires a reachable local backend.\");\n}\n\nfunction createMcpProbeClient(): MCPClient {\n const { host, apiKey } = getMcpProbeOptions();\n return new MCPClient({\n host,\n ...(apiKey ? { apiKey } : {}),\n timeout: OAUTH_MCP_TEST_TIMEOUT_SECONDS * 1000 + 5000,\n });\n}\n\nfunction oauthStatusToTestResponse(\n status: MCPOAuthStatusResponse,\n): ExtendedMCPTestResponse {\n if (status.status === \"succeeded\") {\n return {\n ok: true,\n tools: status.tools ?? [],\n ...(status.tool_result !== undefined && {\n tool_result: status.tool_result,\n }),\n ...(status.oauth_state !== undefined && {\n oauth_state: status.oauth_state,\n }),\n };\n }\n return {\n ok: false,\n error: status.error || \"OAuth authorization did not complete\",\n error_kind: status.error_kind || \"unknown\",\n };\n}\n\nconst sleep = (ms: number) =>\n new Promise<void>((resolve) => {\n window.setTimeout(resolve, ms);\n });\n\nclass McpService {\n static async testServer(\n server: MCPServerConfig,\n ): Promise<ExtendedMCPTestResponse> {\n // The MCP connectivity-test endpoint lives on the local agent-server. It\n // spawns the configured stdio command / opens an SSE-or-SHTTP connection\n // from that process's environment. Cloud backends don't expose this\n // endpoint to the frontend — the MCP server would actually run inside the\n // cloud sandbox, which isn't reachable from the browser before the user\n // starts a conversation. Calling `getAgentServerClientOptions()` here for\n // a cloud-active session would throw `NoBackendAvailableError(\"No backend\n // is configured.\")` and block the install flow entirely. Short-circuit\n // with a synthetic success so saving proceeds; any real connection\n // failure surfaces inside the conversation runtime instead.\n if (getActiveBackend().backend.kind === \"cloud\") {\n return { ok: true, tools: [] };\n }\n const validation = getCredentialValidationForServer(server);\n const { host, apiKey } = getAgentServerClientOptions();\n const client = new MCPClient({ host, ...(apiKey ? { apiKey } : {}) });\n try {\n const request = await buildMcpTestRequest(server);\n const result = (await client.testServer(\n request as MCPTestRequest,\n )) as ExtendedMCPTestResponse;\n if (result.ok && validation && result.tool_result) {\n const credentialError = validation.interpret(result.tool_result);\n if (credentialError) {\n return {\n ok: false,\n error: credentialError,\n error_kind: \"credentials\",\n };\n }\n }\n return result;\n } finally {\n client.close();\n }\n }\n\n static async startOAuth(\n server: MCPServerConfig,\n ): Promise<MCPOAuthStartResponse> {\n const client = createMcpProbeClient();\n try {\n return await McpService.startOAuthWithClient(client, server);\n } finally {\n client.close();\n }\n }\n\n static async getOAuthStatus(jobId: string): Promise<MCPOAuthStatusResponse> {\n const client = createMcpProbeClient();\n try {\n return await McpService.getOAuthStatusWithClient(client, jobId);\n } finally {\n client.close();\n }\n }\n\n static async submitOAuthCallback(\n jobId: string,\n callbackUrl: string,\n ): Promise<MCPOAuthStatusResponse> {\n const client = createMcpProbeClient();\n try {\n return await McpService.submitOAuthCallbackWithClient(\n client,\n jobId,\n callbackUrl,\n );\n } finally {\n client.close();\n }\n }\n\n static async authorizeOAuth(\n server: MCPServerConfig,\n ): Promise<ExtendedMCPTestResponse> {\n const popup = window.open(\"about:blank\", \"_blank\");\n const client = createMcpProbeClient();\n try {\n const start = await McpService.startOAuthWithClient(client, server);\n if (!start.ok || !start.job_id || !start.authorization_url) {\n popup?.close();\n return {\n ok: false,\n error: start.error || \"Could not start OAuth authorization\",\n error_kind: start.error_kind || \"unknown\",\n };\n }\n\n let status = await McpService.getOAuthStatusWithClient(\n client,\n start.job_id,\n );\n for (let attempt = 0; attempt < 20; attempt += 1) {\n if (status.status === \"succeeded\" || status.status === \"failed\") {\n popup?.close();\n return oauthStatusToTestResponse(status);\n }\n if (status.callback_ready) break;\n await sleep(250);\n status = await McpService.getOAuthStatusWithClient(\n client,\n start.job_id,\n );\n }\n\n if (popup) {\n popup.location.href = start.authorization_url;\n }\n\n for (\n let attempt = 0;\n attempt < OAUTH_MCP_TEST_TIMEOUT_SECONDS;\n attempt += 1\n ) {\n await sleep(1000);\n status = await McpService.getOAuthStatusWithClient(\n client,\n start.job_id,\n );\n if (status.status === \"succeeded\" || status.status === \"failed\") {\n popup?.close();\n return oauthStatusToTestResponse(status);\n }\n }\n\n return {\n ok: false,\n error: \"OAuth authorization timed out\",\n error_kind: \"timeout\",\n };\n } finally {\n client.close();\n }\n }\n\n private static async startOAuthWithClient(\n client: MCPClient,\n server: MCPServerConfig,\n ): Promise<MCPOAuthStartResponse> {\n const request = await buildMcpTestRequest(server);\n return client.startOAuth(request as MCPTestRequest);\n }\n\n private static async getOAuthStatusWithClient(\n client: MCPClient,\n jobId: string,\n ): Promise<MCPOAuthStatusResponse> {\n return client.getOAuthStatus(jobId);\n }\n\n private static async submitOAuthCallbackWithClient(\n client: MCPClient,\n jobId: string,\n callbackUrl: string,\n ): Promise<MCPOAuthStatusResponse> {\n return client.submitOAuthCallback(jobId, { callback_url: callbackUrl });\n }\n}\n\nexport default McpService;\n"],"mappings":"qaAiBA,IAAM,EAAiC,IAsBvC,SAAS,EAAY,EAAwC,CAU3D,OATI,EAAO,OAAS,QACX,CACL,UAAW,QACX,QAAS,EAAO,QAChB,GAAI,EAAO,MAAM,QAAU,CAAE,KAAM,EAAO,KAAM,CAChD,GAAI,EAAO,KACT,OAAO,KAAK,EAAO,IAAI,CAAC,OAAS,GAAK,CAAE,IAAK,EAAO,IAAK,CAC5D,CAEI,CACL,UAAW,EAAO,OAAS,MAAQ,MAAQ,OAC3C,IAAK,EAAO,IACZ,GAAI,EAAO,SACT,OAAO,KAAK,EAAO,QAAQ,CAAC,OAAS,GAAK,CAAE,QAAS,EAAO,QAAS,CACvE,GAAI,EAAO,KAAO,CAAE,KAAM,EAAO,KAAM,CAAG,EAAE,CAC7C,CAGH,SAAS,EAAkB,EAA6C,CAEtE,OADI,EAAO,MAAM,WAAa,SACvB,EADwC,EAAO,QAIxD,eAAe,EACb,EACiC,CACjC,IAAM,EAAa,EAAA,iCAAiC,EAAO,CACrD,EAAa,EACjB,MAAM,EAAA,iCAAiC,EAAO,CAC/C,CACK,EAAU,EAAkB,EAAO,CACzC,MAAO,CACL,OAAQ,EACR,GAAI,EAAO,KAAO,CAAE,KAAM,EAAO,KAAM,CAAG,EAAE,CAC5C,GAAI,IAAY,IAAA,GAA0B,EAAE,CAAhB,CAAE,UAAS,CACvC,GAAI,EAAa,CAAE,UAAW,EAAW,SAAU,CAAG,EAAE,CACzD,CAGH,SAAS,GAAwD,CAE/D,GADe,EAAA,kBAAkB,CAAC,QACvB,OAAS,QAAS,CAC3B,GAAM,CAAE,OAAM,UAAW,EAAA,6BAA6B,CACtD,MAAO,CAAE,OAAM,GAAI,EAAS,CAAE,SAAQ,CAAG,EAAE,CAAG,CAGhD,IAAM,EAAe,EAAA,uBAAuB,CAAC,KAC1C,GAAY,EAAQ,OAAS,SAAW,EAAQ,KAClD,CACD,GAAI,EACF,MAAO,CACL,KAAM,EAAa,KAAK,QAAQ,OAAQ,GAAG,CAC3C,GAAI,EAAa,OAAS,CAAE,OAAQ,EAAa,OAAQ,CAAG,EAAE,CAC/D,CAEH,MAAU,MAAM,0DAA0D,CAG5E,SAAS,GAAkC,CACzC,GAAM,CAAE,OAAM,UAAW,GAAoB,CAC7C,OAAO,IAAI,EAAA,UAAU,CACnB,OACA,GAAI,EAAS,CAAE,SAAQ,CAAG,EAAE,CAC5B,QAAS,EAAiC,IAAO,IAClD,CAAC,CAGJ,SAAS,EACP,EACyB,CAazB,OAZI,EAAO,SAAW,YACb,CACL,GAAI,GACJ,MAAO,EAAO,OAAS,EAAE,CACzB,GAAI,EAAO,cAAgB,IAAA,IAAa,CACtC,YAAa,EAAO,YACrB,CACD,GAAI,EAAO,cAAgB,IAAA,IAAa,CACtC,YAAa,EAAO,YACrB,CACF,CAEI,CACL,GAAI,GACJ,MAAO,EAAO,OAAS,uCACvB,WAAY,EAAO,YAAc,UAClC,CAGH,IAAM,EAAS,GACb,IAAI,QAAe,GAAY,CAC7B,OAAO,WAAW,EAAS,EAAG,EAC9B,CAEE,EAAN,MAAM,CAAW,CACf,aAAa,WACX,EACkC,CAWlC,GAAI,EAAA,kBAAkB,CAAC,QAAQ,OAAS,QACtC,MAAO,CAAE,GAAI,GAAM,MAAO,EAAE,CAAE,CAEhC,IAAM,EAAa,EAAA,iCAAiC,EAAO,CACrD,CAAE,OAAM,UAAW,EAAA,6BAA6B,CAChD,EAAS,IAAI,EAAA,UAAU,CAAE,OAAM,GAAI,EAAS,CAAE,SAAQ,CAAG,EAAE,CAAG,CAAC,CACrE,GAAI,CACF,IAAM,EAAU,MAAM,EAAoB,EAAO,CAC3C,EAAU,MAAM,EAAO,WAC3B,EACD,CACD,GAAI,EAAO,IAAM,GAAc,EAAO,YAAa,CACjD,IAAM,EAAkB,EAAW,UAAU,EAAO,YAAY,CAChE,GAAI,EACF,MAAO,CACL,GAAI,GACJ,MAAO,EACP,WAAY,cACb,CAGL,OAAO,SACC,CACR,EAAO,OAAO,EAIlB,aAAa,WACX,EACgC,CAChC,IAAM,EAAS,GAAsB,CACrC,GAAI,CACF,OAAO,MAAM,EAAW,qBAAqB,EAAQ,EAAO,QACpD,CACR,EAAO,OAAO,EAIlB,aAAa,eAAe,EAAgD,CAC1E,IAAM,EAAS,GAAsB,CACrC,GAAI,CACF,OAAO,MAAM,EAAW,yBAAyB,EAAQ,EAAM,QACvD,CACR,EAAO,OAAO,EAIlB,aAAa,oBACX,EACA,EACiC,CACjC,IAAM,EAAS,GAAsB,CACrC,GAAI,CACF,OAAO,MAAM,EAAW,8BACtB,EACA,EACA,EACD,QACO,CACR,EAAO,OAAO,EAIlB,aAAa,eACX,EACkC,CAClC,IAAM,EAAQ,OAAO,KAAK,cAAe,SAAS,CAC5C,EAAS,GAAsB,CACrC,GAAI,CACF,IAAM,EAAQ,MAAM,EAAW,qBAAqB,EAAQ,EAAO,CACnE,GAAI,CAAC,EAAM,IAAM,CAAC,EAAM,QAAU,CAAC,EAAM,kBAEvC,OADA,GAAO,OAAO,CACP,CACL,GAAI,GACJ,MAAO,EAAM,OAAS,sCACtB,WAAY,EAAM,YAAc,UACjC,CAGH,IAAI,EAAS,MAAM,EAAW,yBAC5B,EACA,EAAM,OACP,CACD,IAAK,IAAI,EAAU,EAAG,EAAU,GAAI,GAAW,EAAG,CAChD,GAAI,EAAO,SAAW,aAAe,EAAO,SAAW,SAErD,OADA,GAAO,OAAO,CACP,EAA0B,EAAO,CAE1C,GAAI,EAAO,eAAgB,MAC3B,MAAM,EAAM,IAAI,CAChB,EAAS,MAAM,EAAW,yBACxB,EACA,EAAM,OACP,CAGC,IACF,EAAM,SAAS,KAAO,EAAM,mBAG9B,IACE,IAAI,EAAU,EACd,EAAU,EACV,GAAW,EAOX,GALA,MAAM,EAAM,IAAK,CACjB,EAAS,MAAM,EAAW,yBACxB,EACA,EAAM,OACP,CACG,EAAO,SAAW,aAAe,EAAO,SAAW,SAErD,OADA,GAAO,OAAO,CACP,EAA0B,EAAO,CAI5C,MAAO,CACL,GAAI,GACJ,MAAO,gCACP,WAAY,UACb,QACO,CACR,EAAO,OAAO,EAIlB,aAAqB,qBACnB,EACA,EACgC,CAChC,IAAM,EAAU,MAAM,EAAoB,EAAO,CACjD,OAAO,EAAO,WAAW,EAA0B,CAGrD,aAAqB,yBACnB,EACA,EACiC,CACjC,OAAO,EAAO,eAAe,EAAM,CAGrC,aAAqB,8BACnB,EACA,EACA,EACiC,CACjC,OAAO,EAAO,oBAAoB,EAAO,CAAE,aAAc,EAAa,CAAC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
import type { ExtendedMCPTestResponse, MCPServerConfig } from "#/types/mcp-server";
|
|
1
|
+
import type { ExtendedMCPTestResponse, MCPOAuthStartResponse, MCPOAuthStatusResponse, MCPServerConfig } from "#/types/mcp-server";
|
|
2
2
|
declare class McpService {
|
|
3
3
|
static testServer(server: MCPServerConfig): Promise<ExtendedMCPTestResponse>;
|
|
4
|
+
static startOAuth(server: MCPServerConfig): Promise<MCPOAuthStartResponse>;
|
|
5
|
+
static getOAuthStatus(jobId: string): Promise<MCPOAuthStatusResponse>;
|
|
6
|
+
static submitOAuthCallback(jobId: string, callbackUrl: string): Promise<MCPOAuthStatusResponse>;
|
|
7
|
+
static authorizeOAuth(server: MCPServerConfig): Promise<ExtendedMCPTestResponse>;
|
|
8
|
+
private static startOAuthWithClient;
|
|
9
|
+
private static getOAuthStatusWithClient;
|
|
10
|
+
private static submitOAuthCallbackWithClient;
|
|
4
11
|
}
|
|
5
12
|
export default McpService;
|
|
@@ -1,41 +1,87 @@
|
|
|
1
1
|
import { MCPClient as e } from "../../node_modules/@openhands/typescript-client/dist/client/mcp-client.js";
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import "../../node_modules/@openhands/typescript-client/dist/clients.js";
|
|
3
|
+
import { getActiveBackend as t, getRegisteredBackends as n } from "../backend-registry/active-store.js";
|
|
4
|
+
import { getAgentServerClientOptions as r } from "../agent-server-client-options.js";
|
|
5
|
+
import { getCredentialValidationForServer as i } from "../../utils/mcp-credential-validation.js";
|
|
6
|
+
import { substituteRedactedMcpCredentials as a } from "./mcp-redacted-credentials.js";
|
|
6
7
|
//#region src/api/mcp-service/mcp-service.api.ts
|
|
7
|
-
|
|
8
|
+
var o = 120;
|
|
9
|
+
function s(e) {
|
|
8
10
|
return e.type === "stdio" ? {
|
|
9
|
-
|
|
11
|
+
transport: "stdio",
|
|
10
12
|
command: e.command,
|
|
11
13
|
...e.args?.length && { args: e.args },
|
|
12
14
|
...e.env && Object.keys(e.env).length > 0 && { env: e.env }
|
|
13
15
|
} : {
|
|
14
|
-
|
|
16
|
+
transport: e.type === "sse" ? "sse" : "http",
|
|
15
17
|
url: e.url,
|
|
16
18
|
...e.headers && Object.keys(e.headers).length > 0 && { headers: e.headers },
|
|
17
|
-
...e.
|
|
19
|
+
...e.auth ? { auth: e.auth } : {}
|
|
18
20
|
};
|
|
19
21
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
function c(e) {
|
|
23
|
+
return e.auth?.strategy === "oauth2" ? o : e.timeout;
|
|
24
|
+
}
|
|
25
|
+
async function l(e) {
|
|
26
|
+
let t = i(e), n = s(await a(e)), r = c(e);
|
|
27
|
+
return {
|
|
28
|
+
server: n,
|
|
29
|
+
...e.name ? { name: e.name } : {},
|
|
30
|
+
...r === void 0 ? {} : { timeout: r },
|
|
31
|
+
...t ? { tool_call: t.toolCall } : {}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function u() {
|
|
35
|
+
if (t().backend.kind === "local") {
|
|
36
|
+
let { host: e, apiKey: t } = r();
|
|
37
|
+
return {
|
|
38
|
+
host: e,
|
|
39
|
+
...t ? { apiKey: t } : {}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
let e = n().find((e) => e.kind === "local" && e.host);
|
|
43
|
+
if (e) return {
|
|
44
|
+
host: e.host.replace(/\/+$/, ""),
|
|
45
|
+
...e.apiKey ? { apiKey: e.apiKey } : {}
|
|
46
|
+
};
|
|
47
|
+
throw Error("OAuth authorization requires a reachable local backend.");
|
|
48
|
+
}
|
|
49
|
+
function d() {
|
|
50
|
+
let { host: t, apiKey: n } = u();
|
|
51
|
+
return new e({
|
|
52
|
+
host: t,
|
|
53
|
+
...n ? { apiKey: n } : {},
|
|
54
|
+
timeout: o * 1e3 + 5e3
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function f(e) {
|
|
58
|
+
return e.status === "succeeded" ? {
|
|
59
|
+
ok: !0,
|
|
60
|
+
tools: e.tools ?? [],
|
|
61
|
+
...e.tool_result !== void 0 && { tool_result: e.tool_result },
|
|
62
|
+
...e.oauth_state !== void 0 && { oauth_state: e.oauth_state }
|
|
63
|
+
} : {
|
|
64
|
+
ok: !1,
|
|
65
|
+
error: e.error || "OAuth authorization did not complete",
|
|
66
|
+
error_kind: e.error_kind || "unknown"
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
var p = (e) => new Promise((t) => {
|
|
70
|
+
window.setTimeout(t, e);
|
|
71
|
+
}), m = class n {
|
|
72
|
+
static async testServer(n) {
|
|
22
73
|
if (t().backend.kind === "cloud") return {
|
|
23
74
|
ok: !0,
|
|
24
75
|
tools: []
|
|
25
76
|
};
|
|
26
|
-
let
|
|
27
|
-
host:
|
|
28
|
-
...
|
|
77
|
+
let a = i(n), { host: o, apiKey: s } = r(), c = new e({
|
|
78
|
+
host: o,
|
|
79
|
+
...s ? { apiKey: s } : {}
|
|
29
80
|
});
|
|
30
81
|
try {
|
|
31
|
-
let e =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
...o.timeout ? { timeout: o.timeout } : {},
|
|
35
|
-
...s ? { tool_call: s.toolCall } : {}
|
|
36
|
-
}, t = await d.testServer(e);
|
|
37
|
-
if (t.ok && s && t.tool_result) {
|
|
38
|
-
let e = s.interpret(t.tool_result);
|
|
82
|
+
let e = await l(n), t = await c.testServer(e);
|
|
83
|
+
if (t.ok && a && t.tool_result) {
|
|
84
|
+
let e = a.interpret(t.tool_result);
|
|
39
85
|
if (e) return {
|
|
40
86
|
ok: !1,
|
|
41
87
|
error: e,
|
|
@@ -44,11 +90,71 @@ var o = class {
|
|
|
44
90
|
}
|
|
45
91
|
return t;
|
|
46
92
|
} finally {
|
|
47
|
-
|
|
93
|
+
c.close();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
static async startOAuth(e) {
|
|
97
|
+
let t = d();
|
|
98
|
+
try {
|
|
99
|
+
return await n.startOAuthWithClient(t, e);
|
|
100
|
+
} finally {
|
|
101
|
+
t.close();
|
|
48
102
|
}
|
|
49
103
|
}
|
|
104
|
+
static async getOAuthStatus(e) {
|
|
105
|
+
let t = d();
|
|
106
|
+
try {
|
|
107
|
+
return await n.getOAuthStatusWithClient(t, e);
|
|
108
|
+
} finally {
|
|
109
|
+
t.close();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
static async submitOAuthCallback(e, t) {
|
|
113
|
+
let r = d();
|
|
114
|
+
try {
|
|
115
|
+
return await n.submitOAuthCallbackWithClient(r, e, t);
|
|
116
|
+
} finally {
|
|
117
|
+
r.close();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
static async authorizeOAuth(e) {
|
|
121
|
+
let t = window.open("about:blank", "_blank"), r = d();
|
|
122
|
+
try {
|
|
123
|
+
let i = await n.startOAuthWithClient(r, e);
|
|
124
|
+
if (!i.ok || !i.job_id || !i.authorization_url) return t?.close(), {
|
|
125
|
+
ok: !1,
|
|
126
|
+
error: i.error || "Could not start OAuth authorization",
|
|
127
|
+
error_kind: i.error_kind || "unknown"
|
|
128
|
+
};
|
|
129
|
+
let a = await n.getOAuthStatusWithClient(r, i.job_id);
|
|
130
|
+
for (let e = 0; e < 20; e += 1) {
|
|
131
|
+
if (a.status === "succeeded" || a.status === "failed") return t?.close(), f(a);
|
|
132
|
+
if (a.callback_ready) break;
|
|
133
|
+
await p(250), a = await n.getOAuthStatusWithClient(r, i.job_id);
|
|
134
|
+
}
|
|
135
|
+
t && (t.location.href = i.authorization_url);
|
|
136
|
+
for (let e = 0; e < o; e += 1) if (await p(1e3), a = await n.getOAuthStatusWithClient(r, i.job_id), a.status === "succeeded" || a.status === "failed") return t?.close(), f(a);
|
|
137
|
+
return {
|
|
138
|
+
ok: !1,
|
|
139
|
+
error: "OAuth authorization timed out",
|
|
140
|
+
error_kind: "timeout"
|
|
141
|
+
};
|
|
142
|
+
} finally {
|
|
143
|
+
r.close();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
static async startOAuthWithClient(e, t) {
|
|
147
|
+
let n = await l(t);
|
|
148
|
+
return e.startOAuth(n);
|
|
149
|
+
}
|
|
150
|
+
static async getOAuthStatusWithClient(e, t) {
|
|
151
|
+
return e.getOAuthStatus(t);
|
|
152
|
+
}
|
|
153
|
+
static async submitOAuthCallbackWithClient(e, t, n) {
|
|
154
|
+
return e.submitOAuthCallback(t, { callback_url: n });
|
|
155
|
+
}
|
|
50
156
|
};
|
|
51
157
|
//#endregion
|
|
52
|
-
export {
|
|
158
|
+
export { m as default };
|
|
53
159
|
|
|
54
160
|
//# sourceMappingURL=mcp-service.api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-service.api.js","names":[],"sources":["../../../src/api/mcp-service/mcp-service.api.ts"],"sourcesContent":["import { MCPClient } from \"@openhands/typescript-client/clients\";\nimport type {\n MCPServerSpec,\n MCPTestRequest,\n} from \"@openhands/typescript-client\";\nimport { getAgentServerClientOptions } from \"../agent-server-client-options\";\nimport { getActiveBackend } from \"../backend-registry/active-store\";\nimport { getCredentialValidationForServer } from \"#/utils/mcp-credential-validation\";\nimport type {\n ExtendedMCPTestResponse,\n MCPServerConfig,\n} from \"#/types/mcp-server\";\nimport { substituteRedactedMcpCredentials } from \"./mcp-redacted-credentials\";\n\nfunction toMcpServerSpec(server: MCPServerConfig): MCPServerSpec {\n if (server.type === \"stdio\") {\n return {\n type: \"stdio\",\n command: server.command!,\n ...(server.args?.length && { args: server.args }),\n ...(server.env &&\n Object.keys(server.env).length > 0 && { env: server.env }),\n };\n }\n return {\n type: server.type,\n url: server.url!,\n ...(server.headers &&\n Object.keys(server.headers).length > 0 && { headers: server.headers }),\n ...(server.api_key ? { api_key: server.api_key } : {}),\n } as MCPServerSpec;\n}\n\nclass McpService {\n static async testServer(\n server: MCPServerConfig,\n ): Promise<ExtendedMCPTestResponse> {\n // The MCP connectivity-test endpoint lives on the local agent-server. It\n // spawns the configured stdio command / opens an SSE-or-SHTTP connection\n // from that process's environment. Cloud backends don't expose this\n // endpoint to the frontend — the MCP server would actually run inside the\n // cloud sandbox, which isn't reachable from the browser before the user\n // starts a conversation. Calling `getAgentServerClientOptions()` here for\n // a cloud-active session would throw `NoBackendAvailableError(\"No backend\n // is configured.\")` and block the install flow entirely. Short-circuit\n // with a synthetic success so saving proceeds; any real connection\n // failure surfaces inside the conversation runtime instead.\n if (getActiveBackend().backend.kind === \"cloud\") {\n return { ok: true, tools: [] };\n }\n const validation = getCredentialValidationForServer(server);\n const serverSpec = toMcpServerSpec(\n await substituteRedactedMcpCredentials(server),\n );\n const { host, apiKey } = getAgentServerClientOptions();\n const client = new MCPClient({ host, ...(apiKey ? { apiKey } : {}) });\n try {\n // `tool_call` / `tool_result` aren't in the published client types\n // yet; the client POSTs the request object and returns the response\n // body as-is, so the extra fields round-trip at runtime. Old agent\n // servers ignore `tool_call` and return no `tool_result`, in which\n // case the response passes through uninterpreted (legacy behavior).\n const request = {\n server: serverSpec,\n ...(server.name ? { name: server.name } : {}),\n ...(server.timeout ? { timeout: server.timeout } : {}),\n ...(validation ? { tool_call: validation.toolCall } : {}),\n };\n const result = (await client.testServer(\n request as MCPTestRequest,\n )) as ExtendedMCPTestResponse;\n if (result.ok && validation && result.tool_result) {\n const credentialError = validation.interpret(result.tool_result);\n if (credentialError) {\n return {\n ok: false,\n error: credentialError,\n error_kind: \"credentials\",\n };\n }\n }\n return result;\n } finally {\n client.close();\n }\n }\n}\n\nexport default McpService;\n"],"mappings":";;;;;;AAcA,SAAS,EAAgB,GAAwC;AAU/D,QATI,EAAO,SAAS,UACX;EACL,MAAM;EACN,SAAS,EAAO;EAChB,GAAI,EAAO,MAAM,UAAU,EAAE,MAAM,EAAO,MAAM;EAChD,GAAI,EAAO,OACT,OAAO,KAAK,EAAO,IAAI,CAAC,SAAS,KAAK,EAAE,KAAK,EAAO,KAAK;EAC5D,GAEI;EACL,MAAM,EAAO;EACb,KAAK,EAAO;EACZ,GAAI,EAAO,WACT,OAAO,KAAK,EAAO,QAAQ,CAAC,SAAS,KAAK,EAAE,SAAS,EAAO,SAAS;EACvE,GAAI,EAAO,UAAU,EAAE,SAAS,EAAO,SAAS,GAAG,EAAE;EACtD;;AAGH,IAAM,IAAN,MAAiB;CACf,aAAa,WACX,GACkC;AAWlC,MAAI,GAAkB,CAAC,QAAQ,SAAS,QACtC,QAAO;GAAE,IAAI;GAAM,OAAO,EAAE;GAAE;EAEhC,IAAM,IAAa,EAAiC,EAAO,EACrD,IAAa,EACjB,MAAM,EAAiC,EAAO,CAC/C,EACK,EAAE,SAAM,cAAW,GAA6B,EAChD,IAAS,IAAI,EAAU;GAAE;GAAM,GAAI,IAAS,EAAE,WAAQ,GAAG,EAAE;GAAG,CAAC;AACrE,MAAI;GAMF,IAAM,IAAU;IACd,QAAQ;IACR,GAAI,EAAO,OAAO,EAAE,MAAM,EAAO,MAAM,GAAG,EAAE;IAC5C,GAAI,EAAO,UAAU,EAAE,SAAS,EAAO,SAAS,GAAG,EAAE;IACrD,GAAI,IAAa,EAAE,WAAW,EAAW,UAAU,GAAG,EAAE;IACzD,EACK,IAAU,MAAM,EAAO,WAC3B,EACD;AACD,OAAI,EAAO,MAAM,KAAc,EAAO,aAAa;IACjD,IAAM,IAAkB,EAAW,UAAU,EAAO,YAAY;AAChE,QAAI,EACF,QAAO;KACL,IAAI;KACJ,OAAO;KACP,YAAY;KACb;;AAGL,UAAO;YACC;AACR,KAAO,OAAO"}
|
|
1
|
+
{"version":3,"file":"mcp-service.api.js","names":[],"sources":["../../../src/api/mcp-service/mcp-service.api.ts"],"sourcesContent":["import { MCPClient } from \"@openhands/typescript-client/clients\";\nimport type { MCPTestRequest } from \"@openhands/typescript-client\";\nimport { getAgentServerClientOptions } from \"../agent-server-client-options\";\nimport {\n getActiveBackend,\n getRegisteredBackends,\n} from \"../backend-registry/active-store\";\nimport { getCredentialValidationForServer } from \"#/utils/mcp-credential-validation\";\nimport type { MCPAuthCredential } from \"#/types/mcp-auth\";\nimport type {\n ExtendedMCPTestResponse,\n MCPOAuthStartResponse,\n MCPOAuthStatusResponse,\n MCPServerConfig,\n} from \"#/types/mcp-server\";\nimport { substituteRedactedMcpCredentials } from \"./mcp-redacted-credentials\";\n\nconst OAUTH_MCP_TEST_TIMEOUT_SECONDS = 120;\n\ntype MCPTestServer = {\n transport?: \"stdio\" | \"http\" | \"sse\";\n command?: string;\n args?: string[];\n env?: Record<string, string>;\n url?: string;\n headers?: Record<string, string>;\n auth?: MCPAuthCredential;\n};\n\ninterface ExtendedMCPTestRequest {\n server: MCPTestServer;\n name?: string;\n timeout?: number;\n tool_call?: {\n name: string;\n arguments: Record<string, unknown>;\n };\n}\n\nfunction toMcpServer(server: MCPServerConfig): MCPTestServer {\n if (server.type === \"stdio\") {\n return {\n transport: \"stdio\",\n command: server.command!,\n ...(server.args?.length && { args: server.args }),\n ...(server.env &&\n Object.keys(server.env).length > 0 && { env: server.env }),\n };\n }\n return {\n transport: server.type === \"sse\" ? \"sse\" : \"http\",\n url: server.url!,\n ...(server.headers &&\n Object.keys(server.headers).length > 0 && { headers: server.headers }),\n ...(server.auth ? { auth: server.auth } : {}),\n };\n}\n\nfunction getMcpTestTimeout(server: MCPServerConfig): number | undefined {\n if (server.auth?.strategy !== \"oauth2\") return server.timeout;\n return OAUTH_MCP_TEST_TIMEOUT_SECONDS;\n}\n\nasync function buildMcpTestRequest(\n server: MCPServerConfig,\n): Promise<ExtendedMCPTestRequest> {\n const validation = getCredentialValidationForServer(server);\n const serverSpec = toMcpServer(\n await substituteRedactedMcpCredentials(server),\n );\n const timeout = getMcpTestTimeout(server);\n return {\n server: serverSpec,\n ...(server.name ? { name: server.name } : {}),\n ...(timeout !== undefined ? { timeout } : {}),\n ...(validation ? { tool_call: validation.toolCall } : {}),\n };\n}\n\nfunction getMcpProbeOptions(): { host: string; apiKey?: string } {\n const active = getActiveBackend().backend;\n if (active.kind === \"local\") {\n const { host, apiKey } = getAgentServerClientOptions();\n return { host, ...(apiKey ? { apiKey } : {}) };\n }\n\n const localBackend = getRegisteredBackends().find(\n (backend) => backend.kind === \"local\" && backend.host,\n );\n if (localBackend) {\n return {\n host: localBackend.host.replace(/\\/+$/, \"\"),\n ...(localBackend.apiKey ? { apiKey: localBackend.apiKey } : {}),\n };\n }\n throw new Error(\"OAuth authorization requires a reachable local backend.\");\n}\n\nfunction createMcpProbeClient(): MCPClient {\n const { host, apiKey } = getMcpProbeOptions();\n return new MCPClient({\n host,\n ...(apiKey ? { apiKey } : {}),\n timeout: OAUTH_MCP_TEST_TIMEOUT_SECONDS * 1000 + 5000,\n });\n}\n\nfunction oauthStatusToTestResponse(\n status: MCPOAuthStatusResponse,\n): ExtendedMCPTestResponse {\n if (status.status === \"succeeded\") {\n return {\n ok: true,\n tools: status.tools ?? [],\n ...(status.tool_result !== undefined && {\n tool_result: status.tool_result,\n }),\n ...(status.oauth_state !== undefined && {\n oauth_state: status.oauth_state,\n }),\n };\n }\n return {\n ok: false,\n error: status.error || \"OAuth authorization did not complete\",\n error_kind: status.error_kind || \"unknown\",\n };\n}\n\nconst sleep = (ms: number) =>\n new Promise<void>((resolve) => {\n window.setTimeout(resolve, ms);\n });\n\nclass McpService {\n static async testServer(\n server: MCPServerConfig,\n ): Promise<ExtendedMCPTestResponse> {\n // The MCP connectivity-test endpoint lives on the local agent-server. It\n // spawns the configured stdio command / opens an SSE-or-SHTTP connection\n // from that process's environment. Cloud backends don't expose this\n // endpoint to the frontend — the MCP server would actually run inside the\n // cloud sandbox, which isn't reachable from the browser before the user\n // starts a conversation. Calling `getAgentServerClientOptions()` here for\n // a cloud-active session would throw `NoBackendAvailableError(\"No backend\n // is configured.\")` and block the install flow entirely. Short-circuit\n // with a synthetic success so saving proceeds; any real connection\n // failure surfaces inside the conversation runtime instead.\n if (getActiveBackend().backend.kind === \"cloud\") {\n return { ok: true, tools: [] };\n }\n const validation = getCredentialValidationForServer(server);\n const { host, apiKey } = getAgentServerClientOptions();\n const client = new MCPClient({ host, ...(apiKey ? { apiKey } : {}) });\n try {\n const request = await buildMcpTestRequest(server);\n const result = (await client.testServer(\n request as MCPTestRequest,\n )) as ExtendedMCPTestResponse;\n if (result.ok && validation && result.tool_result) {\n const credentialError = validation.interpret(result.tool_result);\n if (credentialError) {\n return {\n ok: false,\n error: credentialError,\n error_kind: \"credentials\",\n };\n }\n }\n return result;\n } finally {\n client.close();\n }\n }\n\n static async startOAuth(\n server: MCPServerConfig,\n ): Promise<MCPOAuthStartResponse> {\n const client = createMcpProbeClient();\n try {\n return await McpService.startOAuthWithClient(client, server);\n } finally {\n client.close();\n }\n }\n\n static async getOAuthStatus(jobId: string): Promise<MCPOAuthStatusResponse> {\n const client = createMcpProbeClient();\n try {\n return await McpService.getOAuthStatusWithClient(client, jobId);\n } finally {\n client.close();\n }\n }\n\n static async submitOAuthCallback(\n jobId: string,\n callbackUrl: string,\n ): Promise<MCPOAuthStatusResponse> {\n const client = createMcpProbeClient();\n try {\n return await McpService.submitOAuthCallbackWithClient(\n client,\n jobId,\n callbackUrl,\n );\n } finally {\n client.close();\n }\n }\n\n static async authorizeOAuth(\n server: MCPServerConfig,\n ): Promise<ExtendedMCPTestResponse> {\n const popup = window.open(\"about:blank\", \"_blank\");\n const client = createMcpProbeClient();\n try {\n const start = await McpService.startOAuthWithClient(client, server);\n if (!start.ok || !start.job_id || !start.authorization_url) {\n popup?.close();\n return {\n ok: false,\n error: start.error || \"Could not start OAuth authorization\",\n error_kind: start.error_kind || \"unknown\",\n };\n }\n\n let status = await McpService.getOAuthStatusWithClient(\n client,\n start.job_id,\n );\n for (let attempt = 0; attempt < 20; attempt += 1) {\n if (status.status === \"succeeded\" || status.status === \"failed\") {\n popup?.close();\n return oauthStatusToTestResponse(status);\n }\n if (status.callback_ready) break;\n await sleep(250);\n status = await McpService.getOAuthStatusWithClient(\n client,\n start.job_id,\n );\n }\n\n if (popup) {\n popup.location.href = start.authorization_url;\n }\n\n for (\n let attempt = 0;\n attempt < OAUTH_MCP_TEST_TIMEOUT_SECONDS;\n attempt += 1\n ) {\n await sleep(1000);\n status = await McpService.getOAuthStatusWithClient(\n client,\n start.job_id,\n );\n if (status.status === \"succeeded\" || status.status === \"failed\") {\n popup?.close();\n return oauthStatusToTestResponse(status);\n }\n }\n\n return {\n ok: false,\n error: \"OAuth authorization timed out\",\n error_kind: \"timeout\",\n };\n } finally {\n client.close();\n }\n }\n\n private static async startOAuthWithClient(\n client: MCPClient,\n server: MCPServerConfig,\n ): Promise<MCPOAuthStartResponse> {\n const request = await buildMcpTestRequest(server);\n return client.startOAuth(request as MCPTestRequest);\n }\n\n private static async getOAuthStatusWithClient(\n client: MCPClient,\n jobId: string,\n ): Promise<MCPOAuthStatusResponse> {\n return client.getOAuthStatus(jobId);\n }\n\n private static async submitOAuthCallbackWithClient(\n client: MCPClient,\n jobId: string,\n callbackUrl: string,\n ): Promise<MCPOAuthStatusResponse> {\n return client.submitOAuthCallback(jobId, { callback_url: callbackUrl });\n }\n}\n\nexport default McpService;\n"],"mappings":";;;;;;;AAiBA,IAAM,IAAiC;AAsBvC,SAAS,EAAY,GAAwC;AAU3D,QATI,EAAO,SAAS,UACX;EACL,WAAW;EACX,SAAS,EAAO;EAChB,GAAI,EAAO,MAAM,UAAU,EAAE,MAAM,EAAO,MAAM;EAChD,GAAI,EAAO,OACT,OAAO,KAAK,EAAO,IAAI,CAAC,SAAS,KAAK,EAAE,KAAK,EAAO,KAAK;EAC5D,GAEI;EACL,WAAW,EAAO,SAAS,QAAQ,QAAQ;EAC3C,KAAK,EAAO;EACZ,GAAI,EAAO,WACT,OAAO,KAAK,EAAO,QAAQ,CAAC,SAAS,KAAK,EAAE,SAAS,EAAO,SAAS;EACvE,GAAI,EAAO,OAAO,EAAE,MAAM,EAAO,MAAM,GAAG,EAAE;EAC7C;;AAGH,SAAS,EAAkB,GAA6C;AAEtE,QADI,EAAO,MAAM,aAAa,WACvB,IADwC,EAAO;;AAIxD,eAAe,EACb,GACiC;CACjC,IAAM,IAAa,EAAiC,EAAO,EACrD,IAAa,EACjB,MAAM,EAAiC,EAAO,CAC/C,EACK,IAAU,EAAkB,EAAO;AACzC,QAAO;EACL,QAAQ;EACR,GAAI,EAAO,OAAO,EAAE,MAAM,EAAO,MAAM,GAAG,EAAE;EAC5C,GAAI,MAAY,KAAA,IAA0B,EAAE,GAAhB,EAAE,YAAS;EACvC,GAAI,IAAa,EAAE,WAAW,EAAW,UAAU,GAAG,EAAE;EACzD;;AAGH,SAAS,IAAwD;AAE/D,KADe,GAAkB,CAAC,QACvB,SAAS,SAAS;EAC3B,IAAM,EAAE,SAAM,cAAW,GAA6B;AACtD,SAAO;GAAE;GAAM,GAAI,IAAS,EAAE,WAAQ,GAAG,EAAE;GAAG;;CAGhD,IAAM,IAAe,GAAuB,CAAC,MAC1C,MAAY,EAAQ,SAAS,WAAW,EAAQ,KAClD;AACD,KAAI,EACF,QAAO;EACL,MAAM,EAAa,KAAK,QAAQ,QAAQ,GAAG;EAC3C,GAAI,EAAa,SAAS,EAAE,QAAQ,EAAa,QAAQ,GAAG,EAAE;EAC/D;AAEH,OAAU,MAAM,0DAA0D;;AAG5E,SAAS,IAAkC;CACzC,IAAM,EAAE,SAAM,cAAW,GAAoB;AAC7C,QAAO,IAAI,EAAU;EACnB;EACA,GAAI,IAAS,EAAE,WAAQ,GAAG,EAAE;EAC5B,SAAS,IAAiC,MAAO;EAClD,CAAC;;AAGJ,SAAS,EACP,GACyB;AAazB,QAZI,EAAO,WAAW,cACb;EACL,IAAI;EACJ,OAAO,EAAO,SAAS,EAAE;EACzB,GAAI,EAAO,gBAAgB,KAAA,KAAa,EACtC,aAAa,EAAO,aACrB;EACD,GAAI,EAAO,gBAAgB,KAAA,KAAa,EACtC,aAAa,EAAO,aACrB;EACF,GAEI;EACL,IAAI;EACJ,OAAO,EAAO,SAAS;EACvB,YAAY,EAAO,cAAc;EAClC;;AAGH,IAAM,KAAS,MACb,IAAI,SAAe,MAAY;AAC7B,QAAO,WAAW,GAAS,EAAG;EAC9B,EAEE,IAAN,MAAM,EAAW;CACf,aAAa,WACX,GACkC;AAWlC,MAAI,GAAkB,CAAC,QAAQ,SAAS,QACtC,QAAO;GAAE,IAAI;GAAM,OAAO,EAAE;GAAE;EAEhC,IAAM,IAAa,EAAiC,EAAO,EACrD,EAAE,SAAM,cAAW,GAA6B,EAChD,IAAS,IAAI,EAAU;GAAE;GAAM,GAAI,IAAS,EAAE,WAAQ,GAAG,EAAE;GAAG,CAAC;AACrE,MAAI;GACF,IAAM,IAAU,MAAM,EAAoB,EAAO,EAC3C,IAAU,MAAM,EAAO,WAC3B,EACD;AACD,OAAI,EAAO,MAAM,KAAc,EAAO,aAAa;IACjD,IAAM,IAAkB,EAAW,UAAU,EAAO,YAAY;AAChE,QAAI,EACF,QAAO;KACL,IAAI;KACJ,OAAO;KACP,YAAY;KACb;;AAGL,UAAO;YACC;AACR,KAAO,OAAO;;;CAIlB,aAAa,WACX,GACgC;EAChC,IAAM,IAAS,GAAsB;AACrC,MAAI;AACF,UAAO,MAAM,EAAW,qBAAqB,GAAQ,EAAO;YACpD;AACR,KAAO,OAAO;;;CAIlB,aAAa,eAAe,GAAgD;EAC1E,IAAM,IAAS,GAAsB;AACrC,MAAI;AACF,UAAO,MAAM,EAAW,yBAAyB,GAAQ,EAAM;YACvD;AACR,KAAO,OAAO;;;CAIlB,aAAa,oBACX,GACA,GACiC;EACjC,IAAM,IAAS,GAAsB;AACrC,MAAI;AACF,UAAO,MAAM,EAAW,8BACtB,GACA,GACA,EACD;YACO;AACR,KAAO,OAAO;;;CAIlB,aAAa,eACX,GACkC;EAClC,IAAM,IAAQ,OAAO,KAAK,eAAe,SAAS,EAC5C,IAAS,GAAsB;AACrC,MAAI;GACF,IAAM,IAAQ,MAAM,EAAW,qBAAqB,GAAQ,EAAO;AACnE,OAAI,CAAC,EAAM,MAAM,CAAC,EAAM,UAAU,CAAC,EAAM,kBAEvC,QADA,GAAO,OAAO,EACP;IACL,IAAI;IACJ,OAAO,EAAM,SAAS;IACtB,YAAY,EAAM,cAAc;IACjC;GAGH,IAAI,IAAS,MAAM,EAAW,yBAC5B,GACA,EAAM,OACP;AACD,QAAK,IAAI,IAAU,GAAG,IAAU,IAAI,KAAW,GAAG;AAChD,QAAI,EAAO,WAAW,eAAe,EAAO,WAAW,SAErD,QADA,GAAO,OAAO,EACP,EAA0B,EAAO;AAE1C,QAAI,EAAO,eAAgB;AAE3B,IADA,MAAM,EAAM,IAAI,EAChB,IAAS,MAAM,EAAW,yBACxB,GACA,EAAM,OACP;;AAGH,GAAI,MACF,EAAM,SAAS,OAAO,EAAM;AAG9B,QACE,IAAI,IAAU,GACd,IAAU,GACV,KAAW,EAOX,KALA,MAAM,EAAM,IAAK,EACjB,IAAS,MAAM,EAAW,yBACxB,GACA,EAAM,OACP,EACG,EAAO,WAAW,eAAe,EAAO,WAAW,SAErD,QADA,GAAO,OAAO,EACP,EAA0B,EAAO;AAI5C,UAAO;IACL,IAAI;IACJ,OAAO;IACP,YAAY;IACb;YACO;AACR,KAAO,OAAO;;;CAIlB,aAAqB,qBACnB,GACA,GACgC;EAChC,IAAM,IAAU,MAAM,EAAoB,EAAO;AACjD,SAAO,EAAO,WAAW,EAA0B;;CAGrD,aAAqB,yBACnB,GACA,GACiC;AACjC,SAAO,EAAO,eAAe,EAAM;;CAGrC,aAAqB,8BACnB,GACA,GACA,GACiC;AACjC,SAAO,EAAO,oBAAoB,GAAO,EAAE,cAAc,GAAa,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../node_modules/@openhands/typescript-client/dist/client/llm-client.cjs`)
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../node_modules/@openhands/typescript-client/dist/client/llm-client.cjs`);require(`../../node_modules/@openhands/typescript-client/dist/clients.cjs`);const t=require(`../agent-server-client-options.cjs`),n=require(`../agent-server-compatibility.cjs`);var r=class{static async getModels(){let n=new e.LLMMetadataClient(t.getAgentServerClientOptions()),[r,i,a]=await Promise.all([n.getModels(),n.getVerifiedModels(),n.getProviders()]),o=Object.keys(i??{}).sort(),s=o.flatMap(e=>i[e]??[]);return{models:r??[],verified_models:s,verified_providers:a?.filter(e=>o.includes(e))??o,default_model:s[0]??r?.[0]??``}}static async getConfig(){return await n.loadAgentServerInfo(),{posthog_client_key:null,feature_flags:{hide_llm_settings:!1,hide_users_page:!0},providers_configured:[],maintenance_start_time:null,recaptcha_site_key:null,faulty_models:[],error_message:null,updated_at:new Date().toISOString()}}};exports.default=r;
|
|
2
2
|
//# sourceMappingURL=option-service.api.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"option-service.api.cjs","names":[],"sources":["../../../src/api/option-service/option-service.api.ts"],"sourcesContent":["import { LLMMetadataClient } from \"@openhands/typescript-client/clients\";\nimport { loadAgentServerInfo } from \"../agent-server-compatibility\";\nimport { getAgentServerClientOptions } from \"../agent-server-client-options\";\nimport { ModelsResponse, WebClientConfig } from \"./option.types\";\n\nclass OptionService {\n static async getModels(): Promise<ModelsResponse> {\n const llmClient = new LLMMetadataClient(getAgentServerClientOptions());\n const [models, verifiedByProvider, providers] = await Promise.all([\n llmClient.getModels(),\n llmClient.getVerifiedModels(),\n llmClient.getProviders(),\n ]);\n\n const verifiedProviders = Object.keys(verifiedByProvider ?? {}).sort();\n const verifiedModels = verifiedProviders.flatMap(\n (provider) => verifiedByProvider[provider] ?? [],\n );\n\n return {\n models: models ?? [],\n verified_models: verifiedModels,\n verified_providers:\n providers?.filter((provider) => verifiedProviders.includes(provider)) ??\n verifiedProviders,\n default_model: verifiedModels[0] ?? models?.[0] ?? \"\",\n };\n }\n\n static async getConfig(): Promise<WebClientConfig> {\n await loadAgentServerInfo();\n\n return {\n posthog_client_key:\n (import.meta.env.VITE_POSTHOG_CLIENT_KEY as string | undefined) ?? null,\n feature_flags: {\n hide_llm_settings: false,\n hide_users_page: true,\n },\n providers_configured: [],\n maintenance_start_time: null,\n recaptcha_site_key: null,\n faulty_models: [],\n error_message: null,\n updated_at: new Date().toISOString(),\n };\n }\n}\n\nexport default OptionService;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"option-service.api.cjs","names":[],"sources":["../../../src/api/option-service/option-service.api.ts"],"sourcesContent":["import { LLMMetadataClient } from \"@openhands/typescript-client/clients\";\nimport { loadAgentServerInfo } from \"../agent-server-compatibility\";\nimport { getAgentServerClientOptions } from \"../agent-server-client-options\";\nimport { ModelsResponse, WebClientConfig } from \"./option.types\";\n\nclass OptionService {\n static async getModels(): Promise<ModelsResponse> {\n const llmClient = new LLMMetadataClient(getAgentServerClientOptions());\n const [models, verifiedByProvider, providers] = await Promise.all([\n llmClient.getModels(),\n llmClient.getVerifiedModels(),\n llmClient.getProviders(),\n ]);\n\n const verifiedProviders = Object.keys(verifiedByProvider ?? {}).sort();\n const verifiedModels = verifiedProviders.flatMap(\n (provider) => verifiedByProvider[provider] ?? [],\n );\n\n return {\n models: models ?? [],\n verified_models: verifiedModels,\n verified_providers:\n providers?.filter((provider) => verifiedProviders.includes(provider)) ??\n verifiedProviders,\n default_model: verifiedModels[0] ?? models?.[0] ?? \"\",\n };\n }\n\n static async getConfig(): Promise<WebClientConfig> {\n await loadAgentServerInfo();\n\n return {\n posthog_client_key:\n (import.meta.env.VITE_POSTHOG_CLIENT_KEY as string | undefined) ?? null,\n feature_flags: {\n hide_llm_settings: false,\n hide_users_page: true,\n },\n providers_configured: [],\n maintenance_start_time: null,\n recaptcha_site_key: null,\n faulty_models: [],\n error_message: null,\n updated_at: new Date().toISOString(),\n };\n }\n}\n\nexport default OptionService;\n"],"mappings":"+TAKA,IAAM,EAAN,KAAoB,CAClB,aAAa,WAAqC,CAChD,IAAM,EAAY,IAAI,EAAA,kBAAkB,EAAA,6BAA6B,CAAC,CAChE,CAAC,EAAQ,EAAoB,GAAa,MAAM,QAAQ,IAAI,CAChE,EAAU,WAAW,CACrB,EAAU,mBAAmB,CAC7B,EAAU,cAAc,CACzB,CAAC,CAEI,EAAoB,OAAO,KAAK,GAAsB,EAAE,CAAC,CAAC,MAAM,CAChE,EAAiB,EAAkB,QACtC,GAAa,EAAmB,IAAa,EAAE,CACjD,CAED,MAAO,CACL,OAAQ,GAAU,EAAE,CACpB,gBAAiB,EACjB,mBACE,GAAW,OAAQ,GAAa,EAAkB,SAAS,EAAS,CAAC,EACrE,EACF,cAAe,EAAe,IAAM,IAAS,IAAM,GACpD,CAGH,aAAa,WAAsC,CAGjD,OAFA,MAAM,EAAA,qBAAqB,CAEpB,CACL,mBACqE,KACrE,cAAe,CACb,kBAAmB,GACnB,gBAAiB,GAClB,CACD,qBAAsB,EAAE,CACxB,uBAAwB,KACxB,mBAAoB,KACpB,cAAe,EAAE,CACjB,cAAe,KACf,WAAY,IAAI,MAAM,CAAC,aAAa,CACrC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { LLMMetadataClient as e } from "../../node_modules/@openhands/typescript-client/dist/client/llm-client.js";
|
|
2
|
+
import "../../node_modules/@openhands/typescript-client/dist/clients.js";
|
|
2
3
|
import { getAgentServerClientOptions as t } from "../agent-server-client-options.js";
|
|
3
4
|
import { loadAgentServerInfo as n } from "../agent-server-compatibility.js";
|
|
4
5
|
//#region src/api/option-service/option-service.api.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"option-service.api.js","names":[],"sources":["../../../src/api/option-service/option-service.api.ts"],"sourcesContent":["import { LLMMetadataClient } from \"@openhands/typescript-client/clients\";\nimport { loadAgentServerInfo } from \"../agent-server-compatibility\";\nimport { getAgentServerClientOptions } from \"../agent-server-client-options\";\nimport { ModelsResponse, WebClientConfig } from \"./option.types\";\n\nclass OptionService {\n static async getModels(): Promise<ModelsResponse> {\n const llmClient = new LLMMetadataClient(getAgentServerClientOptions());\n const [models, verifiedByProvider, providers] = await Promise.all([\n llmClient.getModels(),\n llmClient.getVerifiedModels(),\n llmClient.getProviders(),\n ]);\n\n const verifiedProviders = Object.keys(verifiedByProvider ?? {}).sort();\n const verifiedModels = verifiedProviders.flatMap(\n (provider) => verifiedByProvider[provider] ?? [],\n );\n\n return {\n models: models ?? [],\n verified_models: verifiedModels,\n verified_providers:\n providers?.filter((provider) => verifiedProviders.includes(provider)) ??\n verifiedProviders,\n default_model: verifiedModels[0] ?? models?.[0] ?? \"\",\n };\n }\n\n static async getConfig(): Promise<WebClientConfig> {\n await loadAgentServerInfo();\n\n return {\n posthog_client_key:\n (import.meta.env.VITE_POSTHOG_CLIENT_KEY as string | undefined) ?? null,\n feature_flags: {\n hide_llm_settings: false,\n hide_users_page: true,\n },\n providers_configured: [],\n maintenance_start_time: null,\n recaptcha_site_key: null,\n faulty_models: [],\n error_message: null,\n updated_at: new Date().toISOString(),\n };\n }\n}\n\nexport default OptionService;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"option-service.api.js","names":[],"sources":["../../../src/api/option-service/option-service.api.ts"],"sourcesContent":["import { LLMMetadataClient } from \"@openhands/typescript-client/clients\";\nimport { loadAgentServerInfo } from \"../agent-server-compatibility\";\nimport { getAgentServerClientOptions } from \"../agent-server-client-options\";\nimport { ModelsResponse, WebClientConfig } from \"./option.types\";\n\nclass OptionService {\n static async getModels(): Promise<ModelsResponse> {\n const llmClient = new LLMMetadataClient(getAgentServerClientOptions());\n const [models, verifiedByProvider, providers] = await Promise.all([\n llmClient.getModels(),\n llmClient.getVerifiedModels(),\n llmClient.getProviders(),\n ]);\n\n const verifiedProviders = Object.keys(verifiedByProvider ?? {}).sort();\n const verifiedModels = verifiedProviders.flatMap(\n (provider) => verifiedByProvider[provider] ?? [],\n );\n\n return {\n models: models ?? [],\n verified_models: verifiedModels,\n verified_providers:\n providers?.filter((provider) => verifiedProviders.includes(provider)) ??\n verifiedProviders,\n default_model: verifiedModels[0] ?? models?.[0] ?? \"\",\n };\n }\n\n static async getConfig(): Promise<WebClientConfig> {\n await loadAgentServerInfo();\n\n return {\n posthog_client_key:\n (import.meta.env.VITE_POSTHOG_CLIENT_KEY as string | undefined) ?? null,\n feature_flags: {\n hide_llm_settings: false,\n hide_users_page: true,\n },\n providers_configured: [],\n maintenance_start_time: null,\n recaptcha_site_key: null,\n faulty_models: [],\n error_message: null,\n updated_at: new Date().toISOString(),\n };\n }\n}\n\nexport default OptionService;\n"],"mappings":";;;;;AAKA,IAAM,IAAN,MAAoB;CAClB,aAAa,YAAqC;EAChD,IAAM,IAAY,IAAI,EAAkB,GAA6B,CAAC,EAChE,CAAC,GAAQ,GAAoB,KAAa,MAAM,QAAQ,IAAI;GAChE,EAAU,WAAW;GACrB,EAAU,mBAAmB;GAC7B,EAAU,cAAc;GACzB,CAAC,EAEI,IAAoB,OAAO,KAAK,KAAsB,EAAE,CAAC,CAAC,MAAM,EAChE,IAAiB,EAAkB,SACtC,MAAa,EAAmB,MAAa,EAAE,CACjD;AAED,SAAO;GACL,QAAQ,KAAU,EAAE;GACpB,iBAAiB;GACjB,oBACE,GAAW,QAAQ,MAAa,EAAkB,SAAS,EAAS,CAAC,IACrE;GACF,eAAe,EAAe,MAAM,IAAS,MAAM;GACpD;;CAGH,aAAa,YAAsC;AAGjD,SAFA,MAAM,GAAqB,EAEpB;GACL,oBACqE;GACrE,eAAe;IACb,mBAAmB;IACnB,iBAAiB;IAClB;GACD,sBAAsB,EAAE;GACxB,wBAAwB;GACxB,oBAAoB;GACpB,eAAe,EAAE;GACjB,eAAe;GACf,6BAAY,IAAI,MAAM,EAAC,aAAa;GACrC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../node_modules/@openhands/typescript-client/dist/client/plugins-client.cjs`);require(`../node_modules/@openhands/typescript-client/dist/clients.cjs`);const t=require(`./backend-registry/active-store.cjs`),n=require(`./agent-server-client-options.cjs`);function r(){return t.getActiveBackend().backend.kind===`cloud`}function i(){return new e.PluginsClient(n.getAgentServerClientOptions())}var a=class{static async listInstalledPlugins(){if(r())return[];try{return(await i().listInstalledPlugins()).plugins??[]}catch{return[]}}static async installPlugin(e){if(r())throw Error(`Installing plugins is only available on a local backend.`);return i().installPlugin(e)}static async setPluginEnabled(e,t){if(r())throw Error(`Enabling and disabling plugins is only available on a local backend.`);return i().setPluginEnabled(e,t)}static async uninstallPlugin(e){if(r())throw Error(`Uninstalling plugins is only available on a local backend.`);return i().uninstallPlugin(e)}static async refreshPlugin(e){if(r())throw Error(`Refreshing plugins is only available on a local backend.`);return i().refreshPlugin(e)}};exports.default=a;
|
|
2
|
+
//# sourceMappingURL=plugins-management-service.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins-management-service.cjs","names":[],"sources":["../../src/api/plugins-management-service.ts"],"sourcesContent":["import { PluginsClient } from \"@openhands/typescript-client/clients\";\nimport { getActiveBackend } from \"./backend-registry/active-store\";\nimport { getAgentServerClientOptions } from \"./agent-server-client-options\";\n\n/**\n * An installed plugin, as returned by the agent-server management router\n * (`GET /api/plugins/installed`). Matches the typescript-client\n * `InstalledPluginInfo`.\n */\nexport interface InstalledPluginInfo {\n name: string;\n version: string;\n description: string | null;\n enabled: boolean;\n source: string;\n resolved_ref?: string | null;\n repo_path?: string | null;\n installed_at: string;\n install_path: string;\n}\n\n/** Coordinates for installing a plugin from a git source or local path. */\nexport interface InstallPluginRequest {\n source: string;\n ref?: string | null;\n repo_path?: string | null;\n force?: boolean;\n}\n\n/**\n * The slice of the typescript-client `PluginsClient` this service drives. The\n * installed `@openhands/typescript-client` package does not yet export these\n * management methods (they ship in typescript-client PRs #222/#223); narrowing\n * to this local interface keeps `vitest` (types stripped) and `eslint` green\n * until the client is republished, at which point the cast below can be dropped.\n */\ninterface PluginsManagementClient {\n listInstalledPlugins(): Promise<{ plugins: InstalledPluginInfo[] }>;\n installPlugin(request: InstallPluginRequest): Promise<InstalledPluginInfo>;\n setPluginEnabled(\n name: string,\n enabled: boolean,\n ): Promise<{ name: string; enabled: boolean }>;\n uninstallPlugin(name: string): Promise<{ message: string }>;\n refreshPlugin(\n name: string,\n ): Promise<{ message: string; plugin: InstalledPluginInfo }>;\n}\n\nfunction isCloudBackend(): boolean {\n return getActiveBackend().backend.kind === \"cloud\";\n}\n\nfunction getManagementClient(): PluginsManagementClient {\n return new PluginsClient(\n getAgentServerClientOptions(),\n ) as unknown as PluginsManagementClient;\n}\n\n/**\n * Front-end management layer for installed plugins: list / install / enable /\n * disable / uninstall / refresh. Kept separate from the read-only catalog\n * service (`plugins-service.ts`), exactly as skills separate the marketplace\n * catalog from install actions.\n *\n * Local backend only for now (per Appendix C Q5): installed plugins live on the\n * local agent-server's `~/.openhands/plugins/installed/`. A cloud backend has no\n * per-user installed store yet, so reads return an empty list and mutating\n * actions throw (the UI also disables them on cloud).\n */\nclass PluginsManagementService {\n static async listInstalledPlugins(): Promise<InstalledPluginInfo[]> {\n if (isCloudBackend()) {\n return [];\n }\n\n try {\n const response = await getManagementClient().listInstalledPlugins();\n return response.plugins ?? [];\n } catch {\n // Agent-server may predate the plugins router or be unreachable; surface\n // an empty list rather than throwing (mirrors the catalog service).\n return [];\n }\n }\n\n static async installPlugin(\n request: InstallPluginRequest,\n ): Promise<InstalledPluginInfo> {\n if (isCloudBackend()) {\n throw new Error(\n \"Installing plugins is only available on a local backend.\",\n );\n }\n return getManagementClient().installPlugin(request);\n }\n\n static async setPluginEnabled(\n name: string,\n enabled: boolean,\n ): Promise<{ name: string; enabled: boolean }> {\n if (isCloudBackend()) {\n throw new Error(\n \"Enabling and disabling plugins is only available on a local backend.\",\n );\n }\n return getManagementClient().setPluginEnabled(name, enabled);\n }\n\n static async uninstallPlugin(name: string): Promise<{ message: string }> {\n if (isCloudBackend()) {\n throw new Error(\n \"Uninstalling plugins is only available on a local backend.\",\n );\n }\n return getManagementClient().uninstallPlugin(name);\n }\n\n static async refreshPlugin(\n name: string,\n ): Promise<{ message: string; plugin: InstalledPluginInfo }> {\n if (isCloudBackend()) {\n throw new Error(\n \"Refreshing plugins is only available on a local backend.\",\n );\n }\n return getManagementClient().refreshPlugin(name);\n }\n}\n\nexport default PluginsManagementService;\n"],"mappings":"2TAiDA,SAAS,GAA0B,CACjC,OAAO,EAAA,kBAAkB,CAAC,QAAQ,OAAS,QAG7C,SAAS,GAA+C,CACtD,OAAO,IAAI,EAAA,cACT,EAAA,6BAA6B,CAC9B,CAcH,IAAM,EAAN,KAA+B,CAC7B,aAAa,sBAAuD,CAClE,GAAI,GAAgB,CAClB,MAAO,EAAE,CAGX,GAAI,CAEF,OAAO,MADgB,GAAqB,CAAC,sBAAsB,EACnD,SAAW,EAAE,MACvB,CAGN,MAAO,EAAE,EAIb,aAAa,cACX,EAC8B,CAC9B,GAAI,GAAgB,CAClB,MAAU,MACR,2DACD,CAEH,OAAO,GAAqB,CAAC,cAAc,EAAQ,CAGrD,aAAa,iBACX,EACA,EAC6C,CAC7C,GAAI,GAAgB,CAClB,MAAU,MACR,uEACD,CAEH,OAAO,GAAqB,CAAC,iBAAiB,EAAM,EAAQ,CAG9D,aAAa,gBAAgB,EAA4C,CACvE,GAAI,GAAgB,CAClB,MAAU,MACR,6DACD,CAEH,OAAO,GAAqB,CAAC,gBAAgB,EAAK,CAGpD,aAAa,cACX,EAC2D,CAC3D,GAAI,GAAgB,CAClB,MAAU,MACR,2DACD,CAEH,OAAO,GAAqB,CAAC,cAAc,EAAK"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An installed plugin, as returned by the agent-server management router
|
|
3
|
+
* (`GET /api/plugins/installed`). Matches the typescript-client
|
|
4
|
+
* `InstalledPluginInfo`.
|
|
5
|
+
*/
|
|
6
|
+
export interface InstalledPluginInfo {
|
|
7
|
+
name: string;
|
|
8
|
+
version: string;
|
|
9
|
+
description: string | null;
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
source: string;
|
|
12
|
+
resolved_ref?: string | null;
|
|
13
|
+
repo_path?: string | null;
|
|
14
|
+
installed_at: string;
|
|
15
|
+
install_path: string;
|
|
16
|
+
}
|
|
17
|
+
/** Coordinates for installing a plugin from a git source or local path. */
|
|
18
|
+
export interface InstallPluginRequest {
|
|
19
|
+
source: string;
|
|
20
|
+
ref?: string | null;
|
|
21
|
+
repo_path?: string | null;
|
|
22
|
+
force?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Front-end management layer for installed plugins: list / install / enable /
|
|
26
|
+
* disable / uninstall / refresh. Kept separate from the read-only catalog
|
|
27
|
+
* service (`plugins-service.ts`), exactly as skills separate the marketplace
|
|
28
|
+
* catalog from install actions.
|
|
29
|
+
*
|
|
30
|
+
* Local backend only for now (per Appendix C Q5): installed plugins live on the
|
|
31
|
+
* local agent-server's `~/.openhands/plugins/installed/`. A cloud backend has no
|
|
32
|
+
* per-user installed store yet, so reads return an empty list and mutating
|
|
33
|
+
* actions throw (the UI also disables them on cloud).
|
|
34
|
+
*/
|
|
35
|
+
declare class PluginsManagementService {
|
|
36
|
+
static listInstalledPlugins(): Promise<InstalledPluginInfo[]>;
|
|
37
|
+
static installPlugin(request: InstallPluginRequest): Promise<InstalledPluginInfo>;
|
|
38
|
+
static setPluginEnabled(name: string, enabled: boolean): Promise<{
|
|
39
|
+
name: string;
|
|
40
|
+
enabled: boolean;
|
|
41
|
+
}>;
|
|
42
|
+
static uninstallPlugin(name: string): Promise<{
|
|
43
|
+
message: string;
|
|
44
|
+
}>;
|
|
45
|
+
static refreshPlugin(name: string): Promise<{
|
|
46
|
+
message: string;
|
|
47
|
+
plugin: InstalledPluginInfo;
|
|
48
|
+
}>;
|
|
49
|
+
}
|
|
50
|
+
export default PluginsManagementService;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { PluginsClient as e } from "../node_modules/@openhands/typescript-client/dist/client/plugins-client.js";
|
|
2
|
+
import "../node_modules/@openhands/typescript-client/dist/clients.js";
|
|
3
|
+
import { getActiveBackend as t } from "./backend-registry/active-store.js";
|
|
4
|
+
import { getAgentServerClientOptions as n } from "./agent-server-client-options.js";
|
|
5
|
+
//#region src/api/plugins-management-service.ts
|
|
6
|
+
function r() {
|
|
7
|
+
return t().backend.kind === "cloud";
|
|
8
|
+
}
|
|
9
|
+
function i() {
|
|
10
|
+
return new e(n());
|
|
11
|
+
}
|
|
12
|
+
var a = class {
|
|
13
|
+
static async listInstalledPlugins() {
|
|
14
|
+
if (r()) return [];
|
|
15
|
+
try {
|
|
16
|
+
return (await i().listInstalledPlugins()).plugins ?? [];
|
|
17
|
+
} catch {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
static async installPlugin(e) {
|
|
22
|
+
if (r()) throw Error("Installing plugins is only available on a local backend.");
|
|
23
|
+
return i().installPlugin(e);
|
|
24
|
+
}
|
|
25
|
+
static async setPluginEnabled(e, t) {
|
|
26
|
+
if (r()) throw Error("Enabling and disabling plugins is only available on a local backend.");
|
|
27
|
+
return i().setPluginEnabled(e, t);
|
|
28
|
+
}
|
|
29
|
+
static async uninstallPlugin(e) {
|
|
30
|
+
if (r()) throw Error("Uninstalling plugins is only available on a local backend.");
|
|
31
|
+
return i().uninstallPlugin(e);
|
|
32
|
+
}
|
|
33
|
+
static async refreshPlugin(e) {
|
|
34
|
+
if (r()) throw Error("Refreshing plugins is only available on a local backend.");
|
|
35
|
+
return i().refreshPlugin(e);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
//#endregion
|
|
39
|
+
export { a as default };
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=plugins-management-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins-management-service.js","names":[],"sources":["../../src/api/plugins-management-service.ts"],"sourcesContent":["import { PluginsClient } from \"@openhands/typescript-client/clients\";\nimport { getActiveBackend } from \"./backend-registry/active-store\";\nimport { getAgentServerClientOptions } from \"./agent-server-client-options\";\n\n/**\n * An installed plugin, as returned by the agent-server management router\n * (`GET /api/plugins/installed`). Matches the typescript-client\n * `InstalledPluginInfo`.\n */\nexport interface InstalledPluginInfo {\n name: string;\n version: string;\n description: string | null;\n enabled: boolean;\n source: string;\n resolved_ref?: string | null;\n repo_path?: string | null;\n installed_at: string;\n install_path: string;\n}\n\n/** Coordinates for installing a plugin from a git source or local path. */\nexport interface InstallPluginRequest {\n source: string;\n ref?: string | null;\n repo_path?: string | null;\n force?: boolean;\n}\n\n/**\n * The slice of the typescript-client `PluginsClient` this service drives. The\n * installed `@openhands/typescript-client` package does not yet export these\n * management methods (they ship in typescript-client PRs #222/#223); narrowing\n * to this local interface keeps `vitest` (types stripped) and `eslint` green\n * until the client is republished, at which point the cast below can be dropped.\n */\ninterface PluginsManagementClient {\n listInstalledPlugins(): Promise<{ plugins: InstalledPluginInfo[] }>;\n installPlugin(request: InstallPluginRequest): Promise<InstalledPluginInfo>;\n setPluginEnabled(\n name: string,\n enabled: boolean,\n ): Promise<{ name: string; enabled: boolean }>;\n uninstallPlugin(name: string): Promise<{ message: string }>;\n refreshPlugin(\n name: string,\n ): Promise<{ message: string; plugin: InstalledPluginInfo }>;\n}\n\nfunction isCloudBackend(): boolean {\n return getActiveBackend().backend.kind === \"cloud\";\n}\n\nfunction getManagementClient(): PluginsManagementClient {\n return new PluginsClient(\n getAgentServerClientOptions(),\n ) as unknown as PluginsManagementClient;\n}\n\n/**\n * Front-end management layer for installed plugins: list / install / enable /\n * disable / uninstall / refresh. Kept separate from the read-only catalog\n * service (`plugins-service.ts`), exactly as skills separate the marketplace\n * catalog from install actions.\n *\n * Local backend only for now (per Appendix C Q5): installed plugins live on the\n * local agent-server's `~/.openhands/plugins/installed/`. A cloud backend has no\n * per-user installed store yet, so reads return an empty list and mutating\n * actions throw (the UI also disables them on cloud).\n */\nclass PluginsManagementService {\n static async listInstalledPlugins(): Promise<InstalledPluginInfo[]> {\n if (isCloudBackend()) {\n return [];\n }\n\n try {\n const response = await getManagementClient().listInstalledPlugins();\n return response.plugins ?? [];\n } catch {\n // Agent-server may predate the plugins router or be unreachable; surface\n // an empty list rather than throwing (mirrors the catalog service).\n return [];\n }\n }\n\n static async installPlugin(\n request: InstallPluginRequest,\n ): Promise<InstalledPluginInfo> {\n if (isCloudBackend()) {\n throw new Error(\n \"Installing plugins is only available on a local backend.\",\n );\n }\n return getManagementClient().installPlugin(request);\n }\n\n static async setPluginEnabled(\n name: string,\n enabled: boolean,\n ): Promise<{ name: string; enabled: boolean }> {\n if (isCloudBackend()) {\n throw new Error(\n \"Enabling and disabling plugins is only available on a local backend.\",\n );\n }\n return getManagementClient().setPluginEnabled(name, enabled);\n }\n\n static async uninstallPlugin(name: string): Promise<{ message: string }> {\n if (isCloudBackend()) {\n throw new Error(\n \"Uninstalling plugins is only available on a local backend.\",\n );\n }\n return getManagementClient().uninstallPlugin(name);\n }\n\n static async refreshPlugin(\n name: string,\n ): Promise<{ message: string; plugin: InstalledPluginInfo }> {\n if (isCloudBackend()) {\n throw new Error(\n \"Refreshing plugins is only available on a local backend.\",\n );\n }\n return getManagementClient().refreshPlugin(name);\n }\n}\n\nexport default PluginsManagementService;\n"],"mappings":";;;;;AAiDA,SAAS,IAA0B;AACjC,QAAO,GAAkB,CAAC,QAAQ,SAAS;;AAG7C,SAAS,IAA+C;AACtD,QAAO,IAAI,EACT,GAA6B,CAC9B;;AAcH,IAAM,IAAN,MAA+B;CAC7B,aAAa,uBAAuD;AAClE,MAAI,GAAgB,CAClB,QAAO,EAAE;AAGX,MAAI;AAEF,WAAO,MADgB,GAAqB,CAAC,sBAAsB,EACnD,WAAW,EAAE;UACvB;AAGN,UAAO,EAAE;;;CAIb,aAAa,cACX,GAC8B;AAC9B,MAAI,GAAgB,CAClB,OAAU,MACR,2DACD;AAEH,SAAO,GAAqB,CAAC,cAAc,EAAQ;;CAGrD,aAAa,iBACX,GACA,GAC6C;AAC7C,MAAI,GAAgB,CAClB,OAAU,MACR,uEACD;AAEH,SAAO,GAAqB,CAAC,iBAAiB,GAAM,EAAQ;;CAG9D,aAAa,gBAAgB,GAA4C;AACvE,MAAI,GAAgB,CAClB,OAAU,MACR,6DACD;AAEH,SAAO,GAAqB,CAAC,gBAAgB,EAAK;;CAGpD,aAAa,cACX,GAC2D;AAC3D,MAAI,GAAgB,CAClB,OAAU,MACR,2DACD;AAEH,SAAO,GAAqB,CAAC,cAAc,EAAK"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A plugin in the dynamic marketplace catalog, with attachable coordinates and
|
|
3
|
+
* install state. Matches the agent-server `MarketplacePluginInfo` / the
|
|
4
|
+
* typescript-client `MarketplacePlugin`.
|
|
5
|
+
*/
|
|
6
|
+
export interface MarketplacePlugin {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string | null;
|
|
9
|
+
source: string;
|
|
10
|
+
ref?: string | null;
|
|
11
|
+
repo_path?: string | null;
|
|
12
|
+
installed: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A locally-discovered ("ambient") plugin reported by the agent-server — one
|
|
16
|
+
* found in the user's local plugin directories (e.g. `~/.agents/plugins`).
|
|
17
|
+
* These auto-load into conversations and are not managed via install/uninstall,
|
|
18
|
+
* so the Plugins page renders them as a read-only "Local" group. Matches the
|
|
19
|
+
* typescript-client `PluginInfo`.
|
|
20
|
+
*/
|
|
21
|
+
export interface LocalPlugin {
|
|
22
|
+
name: string;
|
|
23
|
+
version: string;
|
|
24
|
+
description: string;
|
|
25
|
+
}
|
|
26
|
+
declare class PluginsService {
|
|
27
|
+
/**
|
|
28
|
+
* Fetch the dynamic plugins marketplace catalog.
|
|
29
|
+
*
|
|
30
|
+
* Local backend only for now: the catalog is fetched at run time from the
|
|
31
|
+
* agent-server via the typed client (no bundled catalog, so the list stays
|
|
32
|
+
* dynamic). On a cloud backend an empty catalog is returned — there is no
|
|
33
|
+
* cloud plugins-marketplace endpoint yet (tracked as a follow-up ticket).
|
|
34
|
+
*/
|
|
35
|
+
static getPluginsMarketplace(): Promise<MarketplacePlugin[]>;
|
|
36
|
+
/**
|
|
37
|
+
* Fetch the locally-discovered ("ambient") plugins from the agent-server.
|
|
38
|
+
*
|
|
39
|
+
* Only user-level plugins are requested (`~/.agents/plugins`,
|
|
40
|
+
* `~/.openhands/plugins`, plus enabled installed plugins): the Plugins page is
|
|
41
|
+
* global, so there is no project workspace to scope project plugins to.
|
|
42
|
+
*
|
|
43
|
+
* Local backend only — a cloud backend has no local plugin directories, so an
|
|
44
|
+
* empty list is returned. Errors surface as an empty list (mirrors the
|
|
45
|
+
* catalog) rather than throwing.
|
|
46
|
+
*/
|
|
47
|
+
static getLocalPlugins(): Promise<LocalPlugin[]>;
|
|
48
|
+
}
|
|
49
|
+
export default PluginsService;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../node_modules/@openhands/typescript-client/dist/client/profiles-client.cjs`)
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../node_modules/@openhands/typescript-client/dist/client/profiles-client.cjs`);require(`../../node_modules/@openhands/typescript-client/dist/clients.cjs`);const t=require(`../backend-registry/active-store.cjs`),n=require(`../agent-server-client-options.cjs`),r=require(`../cloud/profiles-service.api.cjs`);function i(){return t.getActiveBackend().backend.kind===`cloud`}var a=class{static async listProfiles(){return i()?r.fetchCloudProfiles():new e.ProfilesClient(n.getAgentServerClientOptions()).listProfiles()}static async getProfile(t,a){if(i())return r.fetchCloudProfile(t);let o=a?{exposeSecrets:a}:{};return new e.ProfilesClient(n.getAgentServerClientOptions()).getProfile(t,o)}static async saveProfile(t,a){return i()?r.saveCloudProfile(t,a):new e.ProfilesClient(n.getAgentServerClientOptions()).saveProfile(t,a)}static async deleteProfile(t){return i()?r.deleteCloudProfile(t):new e.ProfilesClient(n.getAgentServerClientOptions()).deleteProfile(t)}static async renameProfile(t,a){return i()?r.renameCloudProfile(t,a):new e.ProfilesClient(n.getAgentServerClientOptions()).renameProfile(t,a)}static async activateProfile(t){return i()?r.activateCloudProfile(t):new e.ProfilesClient(n.getAgentServerClientOptions()).activateProfile(t)}};exports.default=a;
|
|
2
2
|
//# sourceMappingURL=profiles-service.api.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles-service.api.cjs","names":[],"sources":["../../../src/api/profiles-service/profiles-service.api.ts"],"sourcesContent":["/**\n * ProfilesService
|
|
1
|
+
{"version":3,"file":"profiles-service.api.cjs","names":[],"sources":["../../../src/api/profiles-service/profiles-service.api.ts"],"sourcesContent":["/**\n * ProfilesService is the single entry point for LLM-profile CRUD, routing per\n * active backend so callers (hooks, the settings manager) stay backend-agnostic:\n * - local agent-server: the SDK's ProfilesClient (`/api/profiles`), created\n * per-call to pick up current backend configuration;\n * - cloud app-server: `src/api/cloud/profiles-service.api.ts` (the org-gated\n * `/api/organizations/{orgId}/profiles` routes, or the per-user settings\n * route as a fallback) via the org-scoped cloud proxy.\n * This mirrors how SettingsService branches to fetchCloudSettings().\n *\n * Uses ProfilesClient from @openhands/typescript-client v0.2.0+.\n * All types are re-exported from the SDK for consumer convenience.\n *\n * Note: Unlike some SDK clients, we don't call client.close() here for\n * consistency with other services (SettingsService, SecretsService) that\n * also create SDK clients without explicit cleanup. The SDK clients use\n * fetch-based HTTP which doesn't require connection cleanup.\n */\nimport {\n ProfilesClient,\n type GetProfileOptions,\n} from \"@openhands/typescript-client/clients\";\nimport type {\n ProfileInfo,\n ProfileListResponse,\n ProfileDetailResponse,\n ProfileMutationResponse,\n ActivateProfileResponse,\n SaveProfileRequest,\n ExposeSecretsMode,\n} from \"@openhands/typescript-client\";\nimport { getAgentServerClientOptions } from \"../agent-server-client-options\";\nimport { getActiveBackend } from \"../backend-registry/active-store\";\nimport {\n activateCloudProfile,\n deleteCloudProfile,\n fetchCloudProfile,\n fetchCloudProfiles,\n renameCloudProfile,\n saveCloudProfile,\n} from \"../cloud/profiles-service.api\";\n\n// Re-export SDK types for consumers\nexport type {\n ProfileInfo,\n ProfileListResponse,\n ProfileDetailResponse,\n ProfileMutationResponse,\n ActivateProfileResponse,\n SaveProfileRequest,\n ExposeSecretsMode,\n};\n\nfunction isCloudBackend(): boolean {\n return getActiveBackend().backend.kind === \"cloud\";\n}\n\nclass ProfilesService {\n static async listProfiles(): Promise<ProfileListResponse> {\n if (isCloudBackend()) return fetchCloudProfiles();\n return new ProfilesClient(getAgentServerClientOptions()).listProfiles();\n }\n\n static async getProfile(\n name: string,\n exposeSecrets?: ExposeSecretsMode,\n ): Promise<ProfileDetailResponse> {\n // Cloud never exposes profile secrets (api_key is always nulled with an\n // api_key_set flag), so `exposeSecrets` is local-only.\n if (isCloudBackend()) return fetchCloudProfile(name);\n const options: GetProfileOptions = exposeSecrets ? { exposeSecrets } : {};\n return new ProfilesClient(getAgentServerClientOptions()).getProfile(\n name,\n options,\n );\n }\n\n static async saveProfile(\n name: string,\n request: SaveProfileRequest,\n ): Promise<ProfileMutationResponse> {\n if (isCloudBackend()) return saveCloudProfile(name, request);\n return new ProfilesClient(getAgentServerClientOptions()).saveProfile(\n name,\n request,\n );\n }\n\n static async deleteProfile(name: string): Promise<ProfileMutationResponse> {\n if (isCloudBackend()) return deleteCloudProfile(name);\n return new ProfilesClient(getAgentServerClientOptions()).deleteProfile(\n name,\n );\n }\n\n static async renameProfile(\n name: string,\n newName: string,\n ): Promise<ProfileMutationResponse> {\n if (isCloudBackend()) return renameCloudProfile(name, newName);\n return new ProfilesClient(getAgentServerClientOptions()).renameProfile(\n name,\n newName,\n );\n }\n\n static async activateProfile(name: string): Promise<ActivateProfileResponse> {\n if (isCloudBackend()) return activateCloudProfile(name);\n return new ProfilesClient(getAgentServerClientOptions()).activateProfile(\n name,\n );\n }\n}\n\nexport default ProfilesService;\n"],"mappings":"sXAqDA,SAAS,GAA0B,CACjC,OAAO,EAAA,kBAAkB,CAAC,QAAQ,OAAS,QAG7C,IAAM,EAAN,KAAsB,CACpB,aAAa,cAA6C,CAExD,OADI,GAAgB,CAAS,EAAA,oBAAoB,CAC1C,IAAI,EAAA,eAAe,EAAA,6BAA6B,CAAC,CAAC,cAAc,CAGzE,aAAa,WACX,EACA,EACgC,CAGhC,GAAI,GAAgB,CAAE,OAAO,EAAA,kBAAkB,EAAK,CACpD,IAAM,EAA6B,EAAgB,CAAE,gBAAe,CAAG,EAAE,CACzE,OAAO,IAAI,EAAA,eAAe,EAAA,6BAA6B,CAAC,CAAC,WACvD,EACA,EACD,CAGH,aAAa,YACX,EACA,EACkC,CAElC,OADI,GAAgB,CAAS,EAAA,iBAAiB,EAAM,EAAQ,CACrD,IAAI,EAAA,eAAe,EAAA,6BAA6B,CAAC,CAAC,YACvD,EACA,EACD,CAGH,aAAa,cAAc,EAAgD,CAEzE,OADI,GAAgB,CAAS,EAAA,mBAAmB,EAAK,CAC9C,IAAI,EAAA,eAAe,EAAA,6BAA6B,CAAC,CAAC,cACvD,EACD,CAGH,aAAa,cACX,EACA,EACkC,CAElC,OADI,GAAgB,CAAS,EAAA,mBAAmB,EAAM,EAAQ,CACvD,IAAI,EAAA,eAAe,EAAA,6BAA6B,CAAC,CAAC,cACvD,EACA,EACD,CAGH,aAAa,gBAAgB,EAAgD,CAE3E,OADI,GAAgB,CAAS,EAAA,qBAAqB,EAAK,CAChD,IAAI,EAAA,eAAe,EAAA,6BAA6B,CAAC,CAAC,gBACvD,EACD"}
|