@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
package/README.md
CHANGED
|
@@ -97,7 +97,7 @@ docker run -it --rm \
|
|
|
97
97
|
-p 8000:8000 \
|
|
98
98
|
-v "$HOME/.openhands:/home/openhands/.openhands" \
|
|
99
99
|
-v "${PROJECTS_PATH}:/projects" \
|
|
100
|
-
ghcr.io/openhands/agent-canvas:1.1
|
|
100
|
+
ghcr.io/openhands/agent-canvas:1.2.1 # x-release-please-version
|
|
101
101
|
```
|
|
102
102
|
|
|
103
103
|
**Windows (PowerShell / Windows Terminal):** See [README.windows.md](./README.windows.md) for the equivalent commands.
|
package/README.windows.md
CHANGED
|
@@ -12,7 +12,7 @@ For the main install options and overall context, see [README.md](./README.md).
|
|
|
12
12
|
- A host directory for `PROJECTS_PATH` containing the project folders you want the agent to access (create it before starting the container)
|
|
13
13
|
|
|
14
14
|
```powershell
|
|
15
|
-
docker pull ghcr.io/openhands/agent-canvas:1.1
|
|
15
|
+
docker pull ghcr.io/openhands/agent-canvas:1.2.1 # x-release-please-version
|
|
16
16
|
|
|
17
17
|
$env:PROJECTS_PATH = Join-Path $HOME "projects" # directory containing your project folders
|
|
18
18
|
New-Item -ItemType Directory -Force -Path $env:PROJECTS_PATH, (Join-Path $env:USERPROFILE ".openhands") | Out-Null
|
|
@@ -21,7 +21,7 @@ docker run -it --rm `
|
|
|
21
21
|
-p 8000:8000 `
|
|
22
22
|
-v "$($env:USERPROFILE)\.openhands:/home/openhands/.openhands" `
|
|
23
23
|
-v "$($env:PROJECTS_PATH):/projects" `
|
|
24
|
-
ghcr.io/openhands/agent-canvas:1.1
|
|
24
|
+
ghcr.io/openhands/agent-canvas:1.2.1 # x-release-please-version
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
The agent will be able to access any project under `PROJECTS_PATH`.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,t}from"./rolldown-runtime-BFRubm34.js";import{Ct as n}from"./vendor-styling-CI0PQ3ab.js";import{s as r}from"./vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~d1e18dtv-5Q6lQJdE.js";import{a as i,i as a,n as o,r as s}from"./useTranslation-Cgy4JA_g.js";import{a as c,n as l,o as u,s as d}from"./declaration-B9kpCaYl.js";var f=t(((e,t)=>{t.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}})),p=e(n()),m=e(f()),h=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function g(e){var t={type:`tag`,name:``,voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(m.default[n[1]]||e.charAt(e.length-2)===`/`)&&(t.voidElement=!0),t.name.startsWith(`!--`))){var r=e.indexOf(`-->`);return{type:`comment`,comment:r===-1?``:e.slice(4,r)}}for(var i=new RegExp(h),a=null;(a=i.exec(e))!==null;)if(a[0].trim())if(a[1]){var o=a[1].trim(),s=[o,``];o.indexOf(`=`)>-1&&(s=o.split(`=`)),t.attrs[s[0]]=s[1],i.lastIndex--}else a[2]&&(t.attrs[a[2]]=a[3].trim().substring(1,a[3].length-1));return t}var _=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,v=/^\s*$/,y=Object.create(null);function b(e,t){switch(t.type){case`text`:return e+t.content;case`tag`:return e+=`<`+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+`="`+e[n]+`"`);return t.length?` `+t.join(` `):``}(t.attrs):``)+(t.voidElement?`/>`:`>`),t.voidElement?e:e+t.children.reduce(b,``)+`</`+t.name+`>`;case`comment`:return e+`<!--`+t.comment+`-->`}}var x={parse:function(e,t){t||={},t.components||=y;var n,r=[],i=[],a=-1,o=!1;if(e.indexOf(`<`)!==0){var s=e.indexOf(`<`);r.push({type:`text`,content:s===-1?e:e.substring(0,s)})}return e.replace(_,function(s,c){if(o){if(s!==`</`+n.name+`>`)return;o=!1}var l,u=s.charAt(1)!==`/`,d=s.startsWith(`<!--`),f=c+s.length,p=e.charAt(f);if(d){var m=g(s);return a<0?(r.push(m),r):((l=i[a]).children.push(m),r)}if(u&&(a++,(n=g(s)).type===`tag`&&t.components[n.name]&&(n.type=`component`,o=!0),n.voidElement||o||!p||p===`<`||n.children.push({type:`text`,content:e.slice(f,e.indexOf(`<`,f))}),a===0&&r.push(n),(l=i[a-1])&&l.children.push(n),i[a]=n),(!u||n.voidElement)&&(a>-1&&(n.voidElement||n.name===s.slice(2,-1))&&(a--,n=a===-1?r:i[a]),!o&&p!==`<`&&p)){l=a===-1?r:i[a].children;var h=e.indexOf(`<`,f),_=e.slice(f,h===-1?void 0:h);v.test(_)&&(_=` `),(h>-1&&a+l.length>=0||_!==` `)&&l.push({type:`text`,content:_})}}),r},stringify:function(e){return e.reduce(function(e,t){return e+b(``,t)},``)}},S=(e,t)=>{if(!e)return!1;let n=e.props?.children??e.children;return t?n.length>0:!!n},C=e=>{if(!e)return[];let t=e.props?.children??e.children;return e.props?.i18nIsDynamicList?T(t):t},w=e=>Array.isArray(e)&&e.every(p.isValidElement),T=e=>Array.isArray(e)?e:[e],E=(e,t)=>{let n={...t};return n.props={...t.props,...e.props},n},D=e=>{let t={};if(!e)return t;let n=e=>{T(e).forEach(e=>{s(e)||(S(e)?n(C(e)):o(e)&&!(0,p.isValidElement)(e)&&Object.assign(t,e))})};return n(e),t},O=(e,t,n,r)=>{if(!e)return``;let i=``,c=T(e),l=t?.transSupportBasicHtmlNodes?t.transKeepBasicHtmlNodesFor??[]:[];return c.forEach((e,c)=>{if(s(e)){i+=`${e}`;return}if((0,p.isValidElement)(e)){let{props:a,type:o}=e,u=Object.keys(a).length,d=l.indexOf(o)>-1,f=a.children;if(!f&&d&&!u){i+=`<${o}/>`;return}if(!f&&(!d||u)||a.i18nIsDynamicList){i+=`<${c}></${c}>`;return}if(d&&u<=1){let e=s(f)?f:O(f,t,n,r);i+=`<${o}>${e}</${o}>`;return}let p=O(f,t,n,r);i+=`<${c}>${p}</${c}>`;return}if(e===null){a(n,`TRANS_NULL_VALUE`,`Passed in a null value as child`,{i18nKey:r});return}if(o(e)){let{format:t,...o}=e,s=Object.keys(o);if(s.length===1){let e=t?`${s[0]}, ${t}`:s[0];i+=`{{${e}}}`;return}a(n,`TRANS_INVALID_OBJ`,`Invalid child - Object should only have keys {{ value, format }} (format is optional).`,{i18nKey:r,child:e});return}a(n,`TRANS_INVALID_VAR`,`Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.`,{i18nKey:r,child:e})}),i},k=(e,t=[],n={})=>{if(!e)return e;let r=Object.keys(n),i=[...t,...r],a=``,o=0;for(;o<e.length;)if(e[o]===`<`){let t=!1,n=e.slice(o).match(/^<\/(\d+|[a-zA-Z][a-zA-Z0-9_-]*)>/);if(n){let e=n[1];(/^\d+$/.test(e)||i.includes(e))&&(t=!0,a+=n[0],o+=n[0].length)}if(!t){let n=e.slice(o).match(/^<(\d+|[a-zA-Z][a-zA-Z0-9_-]*)(\s+[\w-]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]+))?)*\s*(\/)?>/);if(n){let e=n[1];(/^\d+$/.test(e)||i.includes(e))&&(t=!0,a+=n[0],o+=n[0].length)}}t||(a+=`<`,o+=1)}else a+=e[o],o+=1;return a},A=(e,t,n,r,i,a,c)=>{if(n===``)return[];let l=i.transKeepBasicHtmlNodesFor||[],f=n&&new RegExp(l.map(e=>`<${e}`).join(`|`)).test(n);if(!e&&!t&&!f&&!c)return[n];let m=t??{},h=e=>{T(e).forEach(e=>{s(e)||(S(e)?h(C(e)):o(e)&&!(0,p.isValidElement)(e)&&Object.assign(m,e))})};h(e);let g=k(n,l,m),_=x.parse(`<0>${g}</0>`),v={...m,...a},y=(e,t,n)=>{let r=C(e),i=D(r,t.children,n);return w(r)&&i.length===0||e.props?.i18nIsDynamicList?r:i},b=(e,t,n,r,i)=>{e.dummy?(e.children=t,n.push((0,p.cloneElement)(e,{key:r},i?void 0:t))):n.push(...p.Children.map([e],e=>{if(e.type===p.Fragment||e.props?.i18nIsDynamicList!==void 0){let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t===`children`||t===`i18nIsDynamicList`||(n[t]=e.props[t])}),(0,p.createElement)(e.type,n,i?null:t)}let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t===`ref`||t===`children`||(n[t]=e.props[t])}),(0,p.cloneElement)(e,n,i?null:t)}))},D=(e,n,a)=>{let m=T(e),h=T(n),g={};return h.reduce((e,n,h)=>{let _=n.children?.[0]?.content&&r.services.interpolator.interpolate(n.children[0].content,v,r.language);if(n.type===`tag`){let u=m[parseInt(n.name,10)];!u&&t&&(u=t[n.name]),a.length===1&&!u&&(u=a[0][n.name]),u||={};let x={...n.attrs};c&&Object.keys(x).forEach(e=>{let t=x[e];s(t)&&(x[e]=d(t))});let w=Object.keys(x).length===0?u:E({props:x},u),O=(0,p.isValidElement)(w),k=O&&S(n,!0)&&!n.voidElement,A=f&&o(w)&&w.dummy&&!O,j=o(t)&&Object.hasOwnProperty.call(t,n.name);if(s(w)){let t=r.services.interpolator.interpolate(w,v,r.language);e.push(t)}else if(S(w)||k)b(w,y(w,n,a),e,h);else if(A)b(w,D(m,n.children,a),e,h);else if(Number.isNaN(parseFloat(n.name)))if(j)b(w,y(w,n,a),e,h,n.voidElement);else if(i.transSupportBasicHtmlNodes&&l.indexOf(n.name)>-1)if(n.voidElement)e.push((0,p.createElement)(n.name,{key:`${n.name}-${h}`}));else{let t=g[n.name]||0;g[n.name]=t+1;let r,i=0;for(let e=0;e<m.length;e+=1){let a=m[e];if((0,p.isValidElement)(a)&&a.type===n.name){if(i===t){r=a;break}i+=1}}let o=D(r?T(C(r)):m,n.children,a);e.push((0,p.createElement)(n.name,{key:`${n.name}-${h}`},o))}else if(n.voidElement)e.push(`<${n.name} />`);else{let t=D(m,n.children,a);e.push(`<${n.name}>${t}</${n.name}>`)}else if(o(w)&&!O){let t=n.children[0]?_:null;t&&e.push(t)}else b(w,_,e,h,n.children.length!==1||!_)}else if(n.type===`text`){let t=i.transWrapTextNodes,a=typeof i.unescape==`function`?i.unescape:u().unescape,o=c?a(r.services.interpolator.interpolate(n.content,v,r.language)):r.services.interpolator.interpolate(n.content,v,r.language);t?e.push((0,p.createElement)(t,{key:`${n.name}-${h}`},o)):e.push(o)}return e},[])};return C(D([{dummy:!0,children:e||[]}],_,T(e||[]))[0])},j=(e,t,n)=>{let r=e.key||t,i=(0,p.cloneElement)(e,{key:r});if(!i.props||!i.props.children||n.indexOf(`${t}/>`)<0&&n.indexOf(`${t} />`)<0)return i;function a(){return(0,p.createElement)(p.Fragment,null,i)}return(0,p.createElement)(a,{key:r})},M=(e,t)=>e.map((e,n)=>j(e,n,t)),N=(e,t)=>{let n={};return Object.keys(e).forEach(r=>{Object.assign(n,{[r]:j(e[r],r,t)})}),n},P=(e,t,n,r)=>e?Array.isArray(e)?M(e,t):o(e)?N(e,t):(i(n,`TRANS_INVALID_COMPONENTS`,`<Trans /> "components" prop expects an object or array`,{i18nKey:r}),null):null,F=e=>!o(e)||Array.isArray(e)?!1:Object.keys(e).reduce((e,t)=>e&&Number.isNaN(Number.parseFloat(t)),!0);function I({children:e,count:t,parent:n,i18nKey:a,context:o,tOptions:l={},values:d,defaults:f,components:m,ns:h,i18n:g,t:_,shouldUnescape:v,...y}){let b=g||c();if(!b)return i(b,`NO_I18NEXT_INSTANCE`,`Trans: You need to pass in an i18next instance using i18nextReactModule`,{i18nKey:a}),e;let x=_||b.t.bind(b)||(e=>e),S={...u(),...b.options?.react},C=h||x.ns||b.options?.defaultNS;C=s(C)?[C]:C||[`translation`];let{transDefaultProps:w}=S,T=w?.tOptions?{...w.tOptions,...l}:l,E=v??w?.shouldUnescape,k=w?.values?{...w.values,...d}:d,j=w?.components?{...w.components,...m}:m,M=O(e,S,b,a),N=f||T?.defaultValue||M||S.transEmptyNodeValue||(typeof a==`function`?r(a):a),{hashTransKey:I}=S,L=a||(I?I(M||N):M||N);d=b.options?.interpolation?.defaultVariables?k&&Object.keys(k).length>0?{...k,...b.options.interpolation.defaultVariables}:{...b.options.interpolation.defaultVariables}:k;let R=D(e);R&&typeof R.count==`number`&&t===void 0&&(t=R.count);let z=d||t!==void 0&&!b.options?.interpolation?.alwaysFormat||!e?T.interpolation:{interpolation:{...T.interpolation,prefix:`#$?`,suffix:`?$#`}},B={...T,context:o||T.context,count:t,...d,...z,defaultValue:N,ns:C},V=L?x(L,B):N;V===L&&N&&(V=N);let H=P(j,V,b,a),U=H||e,W=null;F(H)&&(W=H,U=e);let G=A(U,W,V,b,S,B,E),K=n??S.defaultTransParent;return K?(0,p.createElement)(K,y,G):G}function L({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a={},values:o,defaults:s,components:u,ns:d,i18n:f,t:m,shouldUnescape:h,...g}){let{i18n:_,defaultNS:v}=(0,p.useContext)(l)||{},y=f||_||c(),b=m||y?.t.bind(y);return I({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a,values:o,defaults:s,components:u,ns:d||b?.ns||v||y?.options?.defaultNS,i18n:y,t:m,shouldUnescape:h,...g})}export{L as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./rolldown-runtime-BFRubm34.js";var t=e(((e,t)=>{t.exports={}}));export default t();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./declaration-
|
|
1
|
+
import{t as e}from"./declaration-B9kpCaYl.js";import{n as t}from"./vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~enjl5xdm-mMKDm94D.js";var n=`cli-generic`;function r(e){if(typeof e!=`string`)return null;let t=e.trim();return!t||t===`acp-managed`?null:t}function i(e){for(let t of[e.runtimeName,e.runtimeId,e.configured,e.sdkLlm]){let e=r(t);if(e)return e}return e.providerDefault??null}var a={"claude-code":{icon:`claude-code`,description_key:e.ONBOARDING$AGENT_CLAUDE_CODE_DESCRIPTION},codex:{icon:`codex`,description_key:e.ONBOARDING$AGENT_CODEX_DESCRIPTION},"gemini-cli":{icon:`gemini`,description_key:e.ONBOARDING$AGENT_GEMINI_CLI_DESCRIPTION}},o=Object.entries(a).map(([e,n])=>{let r=t(e);return{key:e,display_name:r?.display_name??e,default_command:r?[...r.default_command]:[],available_models:r?.available_models?.map(e=>({id:e.id,label:e.label})),default_model:r?.default_model??void 0,description_key:n.description_key,icon:n.icon}}),s=`custom`,c={codex:[{name:`CODEX_AUTH_JSON`,secret:!0,multiline:!0,hint_key:e.ONBOARDING$ACP_SECRET_FILE_BLOB_HINT,hint_values:{file:`~/.codex/auth.json`}}],"claude-code":[{name:`CLAUDE_CODE_OAUTH_TOKEN`,secret:!0,hint_key:e.ONBOARDING$ACP_SECRET_OAUTH_TOKEN_HINT}],"gemini-cli":[{name:`GOOGLE_APPLICATION_CREDENTIALS_JSON`,secret:!0,multiline:!0,hint_key:e.ONBOARDING$ACP_SECRET_FILE_BLOB_HINT,hint_values:{file:`~/.config/gcloud/application_default_credentials.json`}},{name:`GOOGLE_CLOUD_PROJECT`,hint_key:e.ONBOARDING$ACP_SECRET_GCP_PROJECT_HINT},{name:`GOOGLE_CLOUD_LOCATION`,hint_key:e.ONBOARDING$ACP_SECRET_GCP_LOCATION_HINT},{name:`GOOGLE_GENAI_USE_VERTEXAI`,hint_key:e.ONBOARDING$ACP_SECRET_VERTEXAI_FLAG_HINT}]},l={"claude-code":[[`CLAUDE_CODE_OAUTH_TOKEN`,`ANTHROPIC_API_KEY`],[`CLAUDE_CODE_OAUTH_TOKEN`,`ANTHROPIC_BASE_URL`]]};function u(e,t){return e?(l[e]??[]).filter(([e,n])=>t(e)&&t(n)):[]}var d=`gemini-2.5-pro`;function f(e){return e===`gemini-cli`?d:m(e)?.default_model??null}function p(n){if(!n)return[];let r=t(n);if(!r)return[];let i=[...c[n]??[]];return r.api_key_env_var&&i.push({name:r.api_key_env_var,secret:!0,hint_key:e.ONBOARDING$ACP_SECRET_API_KEY_HINT}),r.base_url_env_var&&i.push({name:r.base_url_env_var,hint_key:e.ONBOARDING$ACP_SECRET_BASE_URL_HINT}),i}function m(e){if(e)return o.find(t=>t.key===e)}function h(e){let t=m(e);return t?t.display_name:null}function g(e){return m(e)?.icon??`cli-generic`}function _(e,t){return t?m(e)?.available_models?.find(e=>e.id===t)?.label??t:null}function v(e,t={}){if(e===`openhands`)return{agent_kind:`openhands`};let n=e===s,r=n?void 0:m(e);if(!n&&!r&&!t.allowUnknownServer)return null;let i=t.model===void 0?f(e):t.model;return{agent_kind:`acp`,acp_server:e,acp_command:t.command??[],acp_args:[],acp_model:i??null}}export{u as a,h as c,g as d,i as f,v as i,p as l,o as n,f as o,n as r,m as s,s as t,_ as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-BFRubm34.js";import{Ct as t,bt as n}from"./vendor-styling-CI0PQ3ab.js";import{a as r,c as i,i as a,l as o,n as s,o as ee,r as te,u as ne}from"./vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~d1e18dtv-5Q6lQJdE.js";import{i as re,t as c}from"./declaration-B9kpCaYl.js";import{m as ie,o as ae,v as oe}from"./vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~ncdxw0bh-ClHnt5lR.js";import{I as se,t as ce}from"./utils-CE0lDWtb.js";import{E as l,c as u,d,f,g as le,h as p,l as m,m as h,n as ue,p as de,s as fe,u as pe,v as me}from"./agent-server-client-options-DVLRd9sw.js";var g=e(t(),1),_=`openhands`,v=[{label:`English`,value:`en`},{label:`日本語`,value:`ja`},{label:`简体中文`,value:`zh-CN`},{label:`繁體中文`,value:`zh-TW`},{label:`한국어`,value:`ko-KR`},{label:`Norsk`,value:`no`},{label:`Arabic`,value:`ar`},{label:`Deutsch`,value:`de`},{label:`Français`,value:`fr`},{label:`Italiano`,value:`it`},{label:`Português`,value:`pt`},{label:`Español`,value:`es`},{label:`Català`,value:`ca`},{label:`Türkçe`,value:`tr`},{label:`Українська`,value:`uk`}],y=new WeakMap,he=e=>{if(!y.has(e)){let t=e.use(r).use(a).use(re).init({fallbackLng:`en`,debug:!1,supportedLngs:v.map(e=>e.value),nonExplicitSupportedLngs:!1,ns:[_],defaultNS:_,fallbackNS:_,backend:{loadPath:`/locales/{{lng}}/{{ns}}.json`},interpolation:{escapeValue:!1}});y.set(e,t)}return e},ge=()=>he(ee()),b=null,x=null,S=()=>(b||=ge(),b),C=()=>x??S(),_e=e=>(x=e??S(),x),ve=async(e=S())=>(await y.get(e),e),ye=e=>e?typeof e==`object`&&!Array.isArray(e)?{ns:_,...e}:e:{ns:_},w=new Proxy({},{get:(e,t)=>{let n=C();if(t===`t`)return(e,t)=>n.t(e,ye(t));if(t===`exists`)return(e,t)=>n.exists(e,ye(t));let r=Reflect.get(n,t,n);return typeof r==`function`?r.bind(n):r},set:(e,t,n)=>{let r=C();return Reflect.set(r,t,n,r)}}),be=e=>typeof e.response?.data==`object`&&e.response?.data!==null&&`error`in e.response.data&&typeof e.response?.data?.error==`string`,xe=e=>typeof e.response?.data==`object`&&e.response?.data!==null&&`message`in e.response.data&&typeof e.response?.data?.message==`string`,Se=`Disconnected (check URL or network). Check that the backend URL is correct and the backend server is reachable. If the backend is on another origin, check that it allows this frontend origin.`,Ce=`Disconnected (request timed out). Check that the backend URL is correct and reachable.`,we=4;function Te(e){return typeof e==`object`&&!!e}function T(e){let t=[],n=new Set,r=e,i=0;for(;r!=null&&i<we&&!n.has(r);){if(n.add(r),r instanceof Error)r.message&&t.push(r.message),r=r.cause;else if(typeof r==`string`){r&&t.push(r);break}else if(Te(r)){let e=r.message;typeof e==`string`&&e&&t.push(e),r=r.cause}else break;i+=1}return t}function E(e){if(!e)return!1;let t=e.toLowerCase();return t.includes(`disconnected (check cors or network)`)||t.includes(`disconnected (check url or network)`)||t.includes(`blocked by cors`)||t.includes(`failed to fetch`)||t.includes(`network error`)||t.includes(`load failed`)||t.includes(`networkerror when attempting to fetch resource`)||t.includes(`cors`)&&t.includes(`blocked`)}function Ee(e){return T(e).some(E)}function D(e){if(!e)return!1;let t=e.toLowerCase();return t.includes(`request timeout`)||t.includes(`timeout after`)||t.includes(`backend request timed out`)}function O(e){let t=T(e);return t.some(E)?Se:t.some(D)?Ce:t[0]??null}function De(e){return typeof e==`object`&&!!e&&`isAxiosError`in e&&e.isAxiosError===!0}var k=e=>{let t=null,n=!1;return De(e)?(n=!0,t=be(e)&&e.response?.data.error?e.response?.data.error:xe(e)&&e.response?.data.message?e.response?.data.message:e.message):t=e instanceof Error?e.message:typeof e==`string`?e:null,O(n?t??e:e)??t??``},A=(e,t=5e3,n=1e4)=>{if(!e)return t;let r=e.length/(1e3/60)*1e3*1.5;return Math.min(Math.max(r,t),n)},j=n(),M={background:`var(--oh-color-tertiary)`,border:`1px solid var(--oh-border-input)`,color:`#fff`,borderRadius:`var(--oh-radius)`,maxWidth:`400px`,wordBreak:`break-word`,overflowWrap:`anywhere`,whiteSpace:`pre-wrap`},N={position:`top-right`,style:M},Oe={...M,color:`var(--oh-muted)`};function ke({message:e}){let t=g.useRef(null),[n,r]=g.useState(!1);return g.useLayoutEffect(()=>{let e=t.current;if(!e)return;let n=()=>{let t=Number.parseFloat(getComputedStyle(e).lineHeight);if(!Number.isFinite(t)||t<=0){r(!1);return}r(e.getBoundingClientRect().height>t*1.5)};n();let i=new ResizeObserver(n);return i.observe(e),()=>i.disconnect()},[e]),(0,j.jsxs)(`div`,{className:ce(`flex min-w-0 gap-2`,n?`items-start`:`items-center`),children:[(0,j.jsx)(te,{"aria-hidden":!0,className:`h-4 w-4 shrink-0`,strokeWidth:2,style:{color:se}}),(0,j.jsx)(`span`,{ref:t,className:`min-w-0 flex-1 text-sm leading-5 [word-break:break-word] [overflow-wrap:anywhere]`,children:e})]})}var Ae={...N,icon:null,style:Oe},P=e=>{let t=e||w.t(c.STATUS$ERROR);E(t)?t=w.t(c.ERROR$CORS_OR_NETWORK):D(t)&&(t=w.t(c.ERROR$BACKEND_REQUEST_TIMEOUT));let n=A(t,4e3);s((0,j.jsx)(ke,{message:t}),{...Ae,duration:n})},je=e=>{let t=A(e,5e3);s.success((0,j.jsx)(`span`,{className:`[word-break:break-word] [overflow-wrap:anywhere]`,children:e}),{...N,duration:t})},Me=e=>{let t=A(e,6e3);s((0,j.jsx)(`span`,{className:`[word-break:break-word] [overflow-wrap:anywhere]`,children:e}),{...N,icon:`⚠️`,duration:t})},F=`openhands-backend-health`,I=500;function Ne(e){if(typeof e!=`object`||!e)return!1;let t=e;return Number.isInteger(t.consecutiveFailures)&&t.consecutiveFailures>=0&&t.consecutiveFailures<=5&&(t.lastError===null||typeof t.lastError==`string`)&&(t.lastFailureAt===null||typeof t.lastFailureAt==`number`)&&typeof t.disabled==`boolean`}function Pe(){if(typeof window>`u`)return{};try{let e=window.localStorage.getItem(F);if(!e)return{};let t=JSON.parse(e);if(typeof t!=`object`||!t)return{};let n={};for(let[e,r]of Object.entries(t))typeof e==`string`&&e.length>0&&Ne(r)&&(n[e]=r);return n}catch{return{}}}function Fe(e){if(!(typeof window>`u`))try{if(Object.keys(e).length===0){window.localStorage.removeItem(F);return}window.localStorage.setItem(F,JSON.stringify(e))}catch{}}function Ie(e){let t=O(e)??`Unknown error`;return t.length>I?`${t.slice(0,I)}…`:t}var L=Pe(),R=new Set;function Le(){R.forEach(e=>e())}function z(e){L=e,Fe(e),Le()}function Re(){return L}function ze(e){return R.add(e),()=>{R.delete(e)}}function Be(e,t){let n=L[e],r=Math.min((n?.consecutiveFailures??0)+1,5),i=n?.disabled===!0||r>=5,a={consecutiveFailures:r,lastError:Ie(t),lastFailureAt:Date.now(),disabled:i};z({...L,[e]:a})}function Ve(e){if(!(e in L))return;let{[e]:t,...n}=L;z(n)}function He(e){if(!(e in L))return;let{[e]:t,...n}=L;z(n)}function Ue(e){if(!(e in L))return;let{[e]:t,...n}=L;z(n)}var We=(e,t)=>{(e?.response?.status===401||e?.status===401)&&t.invalidateQueries({queryKey:[`user`,`authenticated`]})},Ge=e=>{if(!(e instanceof oe)||e.response?.status!==401&&e.status!==401)return!1;let t=u().backend;if(t.kind!==`cloud`)return!1;let n=e.config?.url;return!n||n.startsWith(t.host.replace(/\/+$/,``))},B=new Set,Ke=()=>{let e=new i({queryCache:new o({onSuccess:(e,t)=>{let n=t.meta?.backendId??t.options.meta?.backendId;typeof n==`string`&&Ve(n)},onError:(t,n)=>{if(n.queryKey[0]===`user`&&n.queryKey[1]===`authenticated`||We(t,e),!(n.meta?.disableToast??n.options.meta?.disableToast)&&!Ge(t)){let e=k(t);B.has(e||``)||(P(e||w.t(c.ERROR$GENERIC)),B.add(e||``),setTimeout(()=>{B.delete(e||``)},3e3))}}}),mutationCache:new ne({onError:(t,n,r,i)=>{We(t,e),!(i?.meta?.disableToast??i?.options.meta?.disableToast)&&!Ge(t)&&P(k(t)||w.t(c.ERROR$GENERIC))}})});return e},V=null,H=null,U=()=>(V||=Ke(),V),W=()=>H??U(),qe=e=>(H=e??U(),H),G=new Proxy({},{get:(e,t)=>{let n=W(),r=Reflect.get(n,t,n);return typeof r==`function`?r.bind(n):r},set:(e,t,n)=>{let r=W();return Reflect.set(r,t,n,r)}}),Je={_comment:`Single source of truth for version pins, ports, paths, and defaults shared across the npm and Docker install paths. Read by scripts/dev-safe.mjs, scripts/dev-with-automation.mjs, docker/entrypoint.sh (via generated defaults.env), and .github/workflows/docker.yml.`,versions:{agentServer:`1.33.0`,agentCanvas:`1.2.1`,automation:`1.1.4`},compatibility:{minimumAgentServer:`1.28.0`},constraints:{_comment:`Temporary upper bound on the agent-client-protocol (acp) transitive dependency. openhands-sdk 1.33.0 requires agent-client-protocol>=0.10.1 with no upper bound, but acp 0.11.0 reordered the ACP prompt() arguments and breaks the SDK's ACP client (a PromptRequest validation error surfaces as 'ACP error: 2 validation errors for PromptRequest'). Pin acp <0.11 until a fixed openhands-sdk ships. Consumed by scripts/dev-safe.mjs (agent-server uvx install) and .github/workflows/mock-llm-e2e.yml (mock ACP server venv).`,agentClientProtocol:`agent-client-protocol<0.11`},images:{agentServer:`ghcr.io/openhands/agent-server`,agentCanvas:`ghcr.io/openhands/agent-canvas`},ports:{agentServer:18e3,automation:18001,proxy:8e3},paths:{stateSubdir:`agent-canvas`,conversations:`agent-canvas/conversations`,bashEvents:`agent-canvas/bash_events`,automationDb:`automation/automations.db`},packages:{agentServer:`openhands-agent-server`,automation:`openhands-automation`,tools:`openhands-tools`,workspace:`openhands-workspace`}},Ye=5e3,Xe=`unknown`,K=Je.compatibility.minimumAgentServer,Ze=`AGENT_SERVER_UNSUPPORTED_VERSION`,Qe=`AGENT_SERVER_UNKNOWN_VERSION`,q=null,$e=e=>Array.isArray(e?.usable_tools)?e.usable_tools:null,J=class extends Error{details;noBackendConfigured;constructor(e,t){let n=t?.noBackendConfigured??!1;super(n?`No agent server backend is configured yet. Add a backend to get started.`:`Could not connect to the configured agent server. Make sure it is running and reachable, then reload the page.`),this.name=`AgentServerUnavailableError`,this.details=e??null,this.noBackendConfigured=n}},et=e=>e instanceof J||typeof e==`object`&&!!e&&`name`in e&&e.name===`AgentServerUnavailableError`,tt=class extends J{code=Ze;actualVersion;requiredVersion=K;constructor(e){let t=`Agent Canvas requires agent-server ${K} or newer; this backend is running ${e}. Please upgrade the agent-server backend.`;super(t),this.name=`AgentServerUnsupportedVersionError`,this.message=t,this.actualVersion=e}},Y=class extends J{code=Qe;actualVersion;requiredVersion=K;constructor(e){let t=`Could not determine this backend's agent-server version.${e?` It reported "${e}".`:``} Agent Canvas requires agent-server ${K} or newer, but this backend did not return a valid version from /server_info. Restart or rebuild the agent-server backend, then try again.`;super(t),this.name=`AgentServerUnknownVersionError`,this.message=t,this.actualVersion=e}},nt=e=>l()&&Z(e,401);function X(){q=null}function rt(e){let t=$e(q);return Array.isArray(t)?t.includes(e):!0}function it(e){return e instanceof Error&&e.name===`HttpError`&&`status`in e&&typeof e.status==`number`}function Z(e,t){return it(e)&&e.status===t}function at(e){return typeof e.version==`string`&&e.version.trim()||null}function ot(e){let t=at(e);return!t||t.toLowerCase()===Xe?null:t}function st(e){let t=ot(e);return!t||!Q(t)?null:t}function ct(e,t){let n=Q(e),r=Q(t);if(!n||!r)return null;for(let e of[`major`,`minor`,`patch`]){if(n[e]>r[e])return 1;if(n[e]<r[e])return-1}return n.prerelease&&!r.prerelease?-1:!n.prerelease&&r.prerelease?1:n.prerelease&&r.prerelease?n.prerelease.localeCompare(r.prerelease):0}function Q(e){let[t]=e.trim().replace(/^v/,``).split(`+`),[n,r]=t.split(`-`,2),i=n.split(`.`);if(i.length!==3)return null;let[a,o,s]=i.map(e=>Number(e));return[a,o,s].every(e=>Number.isInteger(e)&&e>=0)?{major:a,minor:o,patch:s,prerelease:r}:null}function lt(e){let t=ot(e);if(!t)throw X(),new Y(at(e));let n=ct(t,K);if(n===null)throw X(),new Y(t);if(n<0)throw X(),new tt(t)}async function ut(){let e=pe();if(!e){if(X(),de(u().backend))throw new J(`No backend configured`,{noBackendConfigured:!0});return null}let t=ue({host:e.host,sessionApiKey:e.apiKey||null,timeout:Ye}),n;try{n=await new ie(t).getServerInfo()}catch(e){throw X(),Z(e,401)?e:new J(e instanceof Error?e.message:null)}if(lt(n),l())try{await new ae(t).getSettings()}catch(e){if(Z(e,401))throw e;console.warn(`[agent-server] getSettings() probe failed (non-401):`,e)}return q=n,n}var dt={WEB_CLIENT_CONFIG:[`web-client-config`]},ft={all:[`settings`],byScope:e=>[`settings`,e],personal:()=>[`settings`,`personal`]},pt={all:[`llm-profiles`]},mt={all:[`agent-profiles`]},ht={retry:!1},gt={all:[`llm-subscription`],openaiStatus:[`llm-subscription`,`openai`,`status`],openaiModels:[`llm-subscription`,`openai`,`models`]},_t={all:[`local-workspaces`]},vt={marketplace:[`plugins-marketplace`],installed:[`plugins-installed`],local:[`plugins-local`]},yt={staleTime:1e3*60*5,gcTime:1e3*60*15},$=g.createContext(null);function bt(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`backend-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function xt({children:e}){let t=g.useSyncExternalStore(le,f,f),n=g.useCallback(()=>{X(),G.invalidateQueries({queryKey:dt.WEB_CLIENT_CONFIG})},[]),r=g.useCallback((e,t)=>{let r=m()?.backendId??null,i=m()?.orgId??null,a=t??null;e===r&&a===i||(h({backendId:e,orgId:a}),n())},[n]),i=g.useCallback(e=>{let t={...e,id:bt()};return p([...d(),t]),h({backendId:t.id}),n(),t},[n]),a=g.useCallback((e,t)=>{let r=d().find(t=>t.id===e),i=m()?.backendId??null;p(d().map(n=>n.id===e?{...n,...t}:n));let a=t.host!==void 0&&r!==void 0&&t.host!==r.host,o=t.apiKey!==void 0&&r!==void 0&&t.apiKey!==r.apiKey;(a||o)&&(He(e),i===e&&n())},[n]),o=g.useCallback(e=>{p(d().filter(t=>t.id!==e)),Ue(e),n()},[n]),s=g.useMemo(()=>({backends:t.backends,active:t.active,setActive:r,addBackend:i,updateBackend:a,removeBackend:o}),[t,r,i,a,o]);return(0,j.jsx)($.Provider,{value:s,children:e})}function St(){let e=g.useContext($);if(!e)throw Error(`useActiveBackendContext must be used inside <ActiveBackendProvider>`);return e}function Ct(){let e=g.useContext($);return e?e.active:{backend:me()??fe,orgId:null}}export{P as A,S as B,G as C,Ve as D,Be as E,D as F,w as H,Ee as I,E as L,Me as M,k as N,ze as O,O as P,v as R,W as S,Re as T,_e as U,C as V,ve as W,rt as _,ht as a,ut as b,gt as c,dt as d,ft as f,nt as g,st as h,mt as i,je as j,N as k,_t as l,X as m,Ct as n,yt as o,lt as p,St as r,pt as s,xt as t,vt as u,et as v,qe as w,U as x,Z as y,_ as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-BFRubm34.js";import{bt as t}from"./vendor-styling-CI0PQ3ab.js";import{r as n}from"./backend-form-modal-BiaOB2C4.js";var r=e({AddBackendModal:()=>a}),i=t();function a({onClose:e}){return(0,i.jsx)(n,{mode:`add`,onClose:e})}export{r as n,a as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-BFRubm34.js";import{Ct as t,bt as n,xt as r}from"./vendor-styling-CI0PQ3ab.js";import{L as i}from"./vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~byh8a1g4-XNPdpuO8.js";import{n as a}from"./vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~i3v2mlbw-BrJQ3XZH.js";import{t as o}from"./useMutation-DCE9RcgK.js";import{t as s}from"./useTranslation-Cgy4JA_g.js";import{t as c}from"./declaration-B9kpCaYl.js";import{A as l,N as u,i as d,j as f}from"./active-backend-context-u2tdYRgH.js";import{t as p}from"./back-nav-button-BYmxFxGt.js";import{t as m}from"./utils-CE0lDWtb.js";import{t as h}from"./brand-button-DKPMEKcW.js";import{t as g}from"./loading-spinner-DHAIPZkP.js";import{i as _}from"./dropdown-classes-CgQ45JmQ.js";import{t as v}from"./use-llm-profiles-DjackuP1.js";import{n as y,t as b}from"./use-agent-profiles-DPcaYLpm.js";import{r as x,t as S}from"./ellipsis-button-1BV9Sga8.js";import{t as C}from"./u-edit-DJ90xc8Z.js";import{t as w}from"./settings-dropdown-input-xzoZwgUe.js";import{r as T}from"./typography-YGPBGzOG.js";import{o as E}from"./extension-module-card-classes-9V3J9J_b.js";import{a as D,i as O,n as k,r as A,s as j,t as M}from"./use-can-manage-org-profiles-DeX2Mfje.js";import{t as N}from"./u-check-circle-BqoIxNz_.js";import{i as P,n as F,r as I,t as L}from"./settings-list-classes-DvQr5jVS.js";import{n as R}from"./settings-section-header-context-COMOIaxV.js";import{t as z}from"./use-save-agent-profile-aKKLqDJM.js";import{n as B}from"./use-activate-agent-profile-CKtTToSx.js";import{i as V,t as H}from"./agent-settings-Ofbh6UTD.js";var U=e(t(),1),W=e(r(),1),G=n();function K({onEdit:e,onSetActive:t,onDelete:n,isActive:r,isActivating:i,onClose:a,anchorRef:o}){let{t:l}=s(`openhands`),u=(0,U.useRef)(null),d=(0,U.useRef)([]),f=o?.current??null,[p,h]=(0,U.useState)();(0,U.useLayoutEffect)(()=>{if(!f)return;let e=()=>{let e=f.getBoundingClientRect();e&&h({position:`fixed`,zIndex:9999,top:e.bottom+8,right:window.innerWidth-e.right,width:`max-content`})};return e(),window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[f]),(0,U.useEffect)(()=>{d.current[0]?.focus()},[]),(0,U.useEffect)(()=>{let e=e=>{let t=e.target;u.current&&!u.current.contains(t)&&a()},t=e=>{e.key===`Escape`&&a()};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[a]);let g=e=>{e(),a()},v=(0,U.useCallback)((e,t)=>{if(e.key===`Tab`){a();return}let n=d.current.filter(Boolean).length;if(e.key===`ArrowDown`){e.preventDefault();let r=(t+1)%n;d.current[r]?.focus()}else if(e.key===`ArrowUp`){e.preventDefault();let r=(t-1+n)%n;d.current[r]?.focus()}},[a]),y=r||i,b=!!f,S=(0,G.jsxs)(`div`,{ref:u,className:m(`absolute right-0 top-full z-10 mt-2 w-[160px] rounded-md border border-[var(--oh-border-subtle)] bg-tertiary px-1 py-1 shadow-lg`,_,b&&`!static !top-auto !bottom-auto !left-auto !right-auto !mt-0`),role:`menu`,"aria-orientation":`vertical`,"data-testid":`agent-profile-actions-menu`,children:[(0,G.jsx)(A,{index:0,icon:(0,G.jsx)(C,{width:16,height:16}),label:l(c.SETTINGS$PROFILE_EDIT),onClick:()=>g(e),onKeyDown:v,menuItemsRef:d,testId:`agent-profile-edit`}),(0,G.jsx)(A,{index:1,icon:(0,G.jsx)(N,{width:16,height:16}),label:l(c.SETTINGS$PROFILE_SET_ACTIVE),onClick:()=>g(t),onKeyDown:v,menuItemsRef:d,disabled:y,testId:`agent-profile-set-active`}),(0,G.jsx)(A,{index:2,icon:(0,G.jsx)(x,{width:16,height:16}),label:l(c.BUTTON$DELETE),onClick:()=>g(n),onKeyDown:v,menuItemsRef:d,testId:`agent-profile-delete`})]});return b?typeof document>`u`||!p?null:W.createPortal((0,G.jsx)(`div`,{style:p,children:S}),document.body):S}function q({profile:e,isActive:t,canManage:n,onActivate:r,onEdit:i,onDelete:a,isActivating:o}){let{t:l}=s(`openhands`),[u,d]=(0,U.useState)(!1),f=(0,U.useRef)(null),p=e.agent_kind===`openhands`?e.llm_profile_ref:l(c.SETTINGS$AGENT_TYPE_ACP);return(0,G.jsxs)(`div`,{"data-testid":`agent-profile-row`,className:m(P,`justify-between gap-3`),children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:[(0,G.jsx)(`span`,{className:`min-w-0 max-w-full truncate text-sm font-medium text-white`,title:e.name,children:e.name}),p?(0,G.jsx)(`span`,{className:`min-w-0 max-w-full truncate text-sm text-[var(--oh-muted)]`,title:p,children:p}):null,t&&(0,G.jsx)(k,{className:`shrink-0 whitespace-nowrap px-2.5 py-1 text-xs`,"data-testid":`agent-profile-active-badge`,children:l(c.SETTINGS$PROFILE_ACTIVE)})]}),n&&(0,G.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,G.jsx)(S,{ref:f,onClick:()=>d(e=>!e),ariaLabel:l(c.SETTINGS$PROFILE_MENU),testId:`agent-profile-menu-trigger`,className:I}),u&&(0,G.jsx)(K,{anchorRef:f,onEdit:()=>i(e),onSetActive:()=>r(e),onDelete:()=>a(e),isActive:t,isActivating:o,onClose:()=>d(!1)})]})]})}function J({isLoading:e,loadError:t,profiles:n,activeId:r,canManage:i,onActivate:a,onEdit:o,onDelete:l,isActivating:u}){let{t:d}=s(`openhands`);return e?(0,G.jsx)(`div`,{className:`flex justify-center p-4`,children:(0,G.jsx)(g,{size:`large`})}):t?(0,G.jsx)(`div`,{"data-testid":`agent-profiles-load-error`,className:E,children:(0,G.jsx)(`p`,{className:`text-sm text-red-400`,children:d(c.SETTINGS$PROFILES_LOAD_ERROR)})}):n.length===0?(0,G.jsx)(`div`,{"data-testid":`agent-profiles-empty`,className:E,children:(0,G.jsx)(`p`,{className:`text-sm text-[var(--oh-muted)]`,children:d(c.SETTINGS$PROFILES_EMPTY)})}):(0,G.jsx)(`div`,{className:m(L,F),children:n.map(e=>(0,G.jsx)(q,{profile:e,isActive:!!e.id&&e.id===r,canManage:i,onActivate:a,onEdit:o,onDelete:l,isActivating:u},e.name))})}function Y(){let e=a();return o({mutationFn:e=>y.deleteProfile(e),onSuccess:async()=>{await e.invalidateQueries({queryKey:d.all})},meta:{disableToast:!0}})}function X({profile:e,onClose:t}){let{t:n}=s(`openhands`),r=Y(),i=(0,U.useRef)(null);if(!e)return null;let a=async()=>{try{await r.mutateAsync(e.name),f(n(c.SETTINGS$PROFILE_DELETED,{name:e.name})),t()}catch(e){l(e instanceof Error?e.message:n(c.ERROR$GENERIC))}},o=()=>{r.isPending||t()},u=(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(h,{ref:i,type:`button`,variant:`tertiary`,onClick:o,isDisabled:r.isPending,children:n(c.BUTTON$CANCEL)}),(0,G.jsx)(h,{testId:`delete-agent-profile-confirm`,type:`button`,variant:`danger`,onClick:a,isDisabled:r.isPending,"aria-busy":r.isPending,children:r.isPending?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(g,{size:`small`}),(0,G.jsx)(`span`,{className:`sr-only`,children:n(c.BUTTON$DELETE)})]}):n(c.BUTTON$DELETE)})]});return(0,G.jsx)(O,{isOpen:!0,title:n(c.SETTINGS$PROFILE_DELETE_TITLE),footer:u,onClose:o,initialFocusRef:i,children:(0,G.jsx)(`p`,{className:`text-sm break-all`,children:n(c.SETTINGS$PROFILE_DELETE_CONFIRMATION,{name:e.name})})})}function Z({onAddProfile:e,onEditProfile:t}){let{t:n}=s(`openhands`),{data:r,isLoading:i,error:a}=b(),o=B(),l=M(),[u,d]=(0,U.useState)(null),p=r?.profiles??[],m=r?.active_agent_profile_id??null;return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,G.jsx)(`h2`,{className:`text-base font-medium text-white`,children:n(c.SETTINGS$AVAILABLE_PROFILES)}),e&&l?(0,G.jsx)(h,{testId:`add-agent-profile`,type:`button`,variant:`secondary`,className:`ml-auto`,onClick:e,children:n(c.SETTINGS$ADD_AGENT_PROFILE)}):null]}),(0,G.jsx)(J,{isLoading:i,loadError:a??null,profiles:p,activeId:m,canManage:l,onActivate:async e=>{if(e.id)try{await o.mutateAsync(e.id),f(n(c.SETTINGS$PROFILE_ACTIVATED,{name:e.name}))}catch(e){console.error(`Failed to activate agent profile:`,e)}},onEdit:e=>t?.(e),onDelete:d,isActivating:o.isPending})]}),(0,G.jsx)(X,{profile:u,onClose:()=>d(null)})]})}function Q(e,t){if(!e||e.agent_kind!==t.agent_kind)return t;let{id:n,name:r,revision:i,...a}=e;return{...a,...t}}function $(){let e=a();return o({mutationFn:({name:e,newName:t})=>y.renameProfile(e,t),onSuccess:async()=>{await e.invalidateQueries({queryKey:d.all})},meta:{disableToast:!0}})}function ee(e){return e.agent_kind===`acp`?{agent_kind:`acp`,acp_server:e.acp_server,acp_command:e.acp_command?V(e.acp_command):[],acp_args:e.acp_args??[],acp_model:e.acp_model??``}:{agent_kind:`openhands`,enable_sub_agents:e.enable_sub_agents,tool_concurrency_limit:e.tool_concurrency_limit}}function te(){let{t:e}=s(`openhands`),{setHideSectionHeader:t}=R(),n=z(),r=$(),{data:i}=b(),{data:a,isLoading:o}=v(),[d,m]=(0,U.useState)(`list`),[g,_]=(0,U.useState)(``),[x,S]=(0,U.useState)(null),[C,E]=(0,U.useState)(null),[O,k]=(0,U.useState)(``),[A,M]=(0,U.useState)(null),[N,P]=(0,U.useState)(!1);(0,U.useEffect)(()=>(t(d!==`list`),()=>t(!1)),[d,t]);let F=a?.profiles??[],I=a?.active_profile??F[0]?.name??``,L=(0,U.useMemo)(()=>new Set(i?.profiles?.map(e=>e.name)??[]),[i]),B=(0,U.useMemo)(()=>!(!j(g,{isRequired:!0})||d===`create`&&L.has(g)||d===`edit`&&g!==x?.name&&L.has(g)),[g,d,L,x?.name]),V=(0,U.useCallback)(()=>{_(``),S(null),E({agent_kind:`openhands`}),k(I),M(null),m(`create`)},[I]),W=(0,U.useCallback)(async t=>{try{let e=(await y.getProfile(t.name,`encrypted`)).profile;S(e),E(ee(e)),e.agent_kind===`openhands`?k(o||F.some(t=>t.name===e.llm_profile_ref)?e.llm_profile_ref:I):k(``),_(e.name),M(null),m(`edit`)}catch(t){console.error(`Failed to fetch agent profile:`,t),l(e(c.ERROR$GENERIC))}},[e,F,o,I]),K=(0,U.useCallback)(()=>{m(`list`),S(null),_(``),E(null),M(null)},[]),q=(0,U.useCallback)(async()=>{if(!A||!B)return;let t;try{let n=A.buildAgentProfileFields();if(n.agent_kind===`openhands`){if(!O){l(e(c.SETTINGS$AGENT_PROFILE_LLM_REQUIRED));return}t={...n,llm_profile_ref:O}}else t=n}catch(t){l(t instanceof Error?t.message:e(c.ERROR$GENERIC));return}let i=g.trim(),a=x?.name,o=d===`edit`&&a&&a!==i;P(!0);try{if(A.credentials.isDirty){if(!await A.credentials.save({silent:!0}))return;A.credentials.reset()}o&&await r.mutateAsync({name:a,newName:i});let s=Q(d===`edit`?x:null,t);await n.mutateAsync({name:i,profile:s}),f(e(d===`create`?c.SETTINGS$PROFILE_CREATED:c.SETTINGS$PROFILE_UPDATED,{name:i})),K()}catch(t){l(u(t)||e(c.ERROR$GENERIC))}finally{P(!1)}},[A,B,O,g,d,x,n,r,e,K]);if(d===`list`)return(0,G.jsx)(Z,{onAddProfile:V,onEditProfile:W});let J=e(d===`edit`?c.SETTINGS$EDIT_AGENT_PROFILE:c.SETTINGS$ADD_AGENT_PROFILE),Y=d===`edit`&&x?e(c.SETTINGS$PROFILE_LOADED,{name:x.name}):e(c.SETTINGS$PROFILE_SAVE_HINT),X=A?.agentType!==`acp`;return(0,G.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,G.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,G.jsx)(p,{testId:`back-to-agent-profiles`,onClick:K,children:e(c.BUTTON$BACK)}),(0,G.jsx)(T.H2,{testId:`agent-profile-editor-title`,children:J}),(0,G.jsx)(`p`,{"data-testid":`agent-profile-editor-description`,className:`text-sm leading-5 text-tertiary-light`,children:Y})]}),(0,G.jsx)(D,{testId:`agent-profile-name-input`,value:g,onChange:_,isRequired:!0}),(0,G.jsx)(H,{embedded:!0,agentSettingsOverride:C,onSaveControlChange:M},d===`edit`?`edit-${x?.id}`:`new-profile`),X&&(F.length>0?(0,G.jsx)(w,{testId:`agent-profile-llm-selector`,name:`agent-profile-llm`,label:e(c.SETTINGS$AGENT_PROFILE_LLM_LABEL),items:F.map(e=>({key:e.name,label:e.model?`${e.name} (${e.model})`:e.name})),selectedKey:O,onSelectionChange:e=>e&&k(String(e))}):(0,G.jsx)(`p`,{"data-testid":`agent-profile-no-llm`,className:`text-sm text-red-400`,children:e(c.SETTINGS$AGENT_PROFILE_NO_LLM)})),(0,G.jsxs)(`div`,{className:`flex justify-start gap-3 pt-4`,children:[(0,G.jsx)(h,{testId:`cancel-agent-profile-btn`,type:`button`,variant:`secondary`,onClick:K,children:e(c.BUTTON$CANCEL)}),(0,G.jsx)(h,{testId:`save-agent-profile-btn`,type:`button`,variant:`primary`,onClick:q,isDisabled:!B||N||!A?.isValid,"aria-busy":N,children:e(N?c.SETTINGS$SAVING:c.BUTTON$SAVE)})]})]})}var ne={hideTitle:!1},re=i(function(){return(0,G.jsx)(te,{})});export{re as default,ne as handle};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=`workspace/project`,t=`__AGENT_CANVAS_LOCK_TO_CLOUD__`;function n(e){return e?.trim()||null}function r(e){if(!e)return null;let t=e.trim().replace(/\/$/,``);return t?/^https?:\/\//i.test(t)?t:typeof window<`u`?`${window.location.protocol}//${t}`:`http://${t}`:null}function i(e){if(!e)return null;let t=e.trim().replace(/\/+$/,``);return t?/^https?:\/\//i.test(t)?t:`https://${t}`:null}function a(){return r(void 0)}function o(){let e=n(void 0);if(e)return e;if(typeof window<`u`){let e=window.__AGENT_CANVAS_SESSION_API_KEY__;if(typeof e==`string`)return n(e)}return null}function s(){return{baseUrl:u()??``,sessionApiKey:d()??``}}function c(){let e=i(void 0);if(e)return e;if(typeof window<`u`){let e=window[t];if(typeof e==`string`)return i(e)}return null}function l(e,t){let n=i(e),r=i(t);return!n||!r?!1:n.toLowerCase()===r.toLowerCase()}function u(){return a()||(typeof window<`u`?window.location.origin:null)}function d(){return o()}function f(){return(void 0)?.trim()||e}function
|
|
1
|
+
var e=`workspace/project`,t=`__AGENT_CANVAS_LOCK_TO_CLOUD__`;function n(e){return e?.trim()||null}function r(e){if(!e)return null;let t=e.trim().replace(/\/$/,``);return t?/^https?:\/\//i.test(t)?t:typeof window<`u`?`${window.location.protocol}//${t}`:`http://${t}`:null}function i(e){if(!e)return null;let t=e.trim().replace(/\/+$/,``);return t?/^https?:\/\//i.test(t)?t:`https://${t}`:null}function a(){return r(void 0)}function o(){let e=n(void 0);if(e)return e;if(typeof window<`u`){let e=window.__AGENT_CANVAS_SESSION_API_KEY__;if(typeof e==`string`)return n(e)}return null}function s(){return{baseUrl:u()??``,sessionApiKey:d()??``}}function c(){let e=i(void 0);if(e)return e;if(typeof window<`u`){let e=window[t];if(typeof e==`string`)return i(e)}return null}function l(e,t){let n=i(e),r=i(t);return!n||!r?!1:n.toLowerCase()===r.toLowerCase()}function u(){return a()||(typeof window<`u`?window.location.origin:null)}function d(){return o()}function f(){return(void 0)?.trim()||e}function p(e){return`${f().replace(/\/+$/,``)}/${e.replace(/-/g,``)}`}function m(){let e=d();return e?{"X-Session-API-Key":e}:{}}function h(){return typeof window<`u`&&window.__AGENT_CANVAS_AUTH_REQUIRED__===!0}function ee(){return h()?!d():!1}var g=`default-local`,_=`Local`;function v(){if(c())return null;let e=u(),t=d();return!e||!t?null:{id:g,name:_,host:e,apiKey:t,kind:`local`}}var y=`openhands-backends`,b=`openhands-active-backend`;function x(e){return e===`local`||e===`cloud`}function te(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.id==`string`&&t.id.length>0&&typeof t.name==`string`&&typeof t.host==`string`&&typeof t.apiKey==`string`&&x(t.kind)}function S(e){try{let{hostname:t}=new URL(e);return t===`localhost`||t===`127.0.0.1`||t===`::1`||t===`[::1]`}catch{return!1}}function ne(e,t){return e.id!==`default-local`||e.kind!==`local`?!1:e.host===t.host||S(e.host)&&S(t.host)}function C(e){let t=v();if(!t)return e;let n=!1,r=e.map(e=>!ne(e,t)||e.apiKey===t.apiKey?e:(n=!0,{...e,apiKey:t.apiKey}));return n?(w(r),r):e}function w(e){if(!(typeof window>`u`))try{window.localStorage.setItem(y,JSON.stringify(e))}catch{}}function T(){if(typeof window>`u`)return[];try{let e=window.localStorage.getItem(y);if(e===null){let e=v();return e?(w([e]),[e]):[]}let t=JSON.parse(e);if(!Array.isArray(t))return[];let n=t.filter(te);if(n.length===0){let e=v();return e?(w([e]),[e]):[]}return C(n)}catch{return[]}}function E(e){if(!e)return null;try{let t=JSON.parse(e);if(typeof t!=`object`||!t||typeof t.backendId!=`string`)return null;let n=t.orgId;return{backendId:t.backendId,orgId:typeof n==`string`&&n.length>0?n:null}}catch{return null}}function D(e,t){try{return e?.getItem(t)??null}catch{return null}}function O(e,t,n){try{e?.setItem(t,n)}catch{}}function k(e,t){try{e?.removeItem(t)}catch{}}function A(){return typeof window>`u`?null:E(D(window.sessionStorage,b))||E(D(window.localStorage,b))}function j(e){if(typeof window>`u`)return;if(!e){k(window.sessionStorage,b),k(window.localStorage,b);return}let t=JSON.stringify({backendId:e.backendId,orgId:e.orgId??null});O(window.sessionStorage,b,t),O(window.localStorage,b,t)}var M=`no-backend`,N={id:M,name:`No Backend Available`,host:``,apiKey:``,kind:`local`};function P(e){return e.id===M}function re(e){return e[0]??N}function F(e,t){let n=null,r=null;if(t){let i=e.find(e=>e.id===t.backendId);i&&(n=i,r=t.orgId??null)}return n||(n=re(e),r=null),{backends:e,selection:t,active:{backend:n,orgId:r}}}var I=F(T(),A()),L=new Set;function R(){L.forEach(e=>e())}function z(){return I.active}function B(){let e=I.active.backend;return e.kind===`local`&&!P(e)?e:null}function V(){return I.backends}function H(){return I.selection}function U(){return I}function W(e){j(e),I=F(I.backends,e),R()}function G(e){w(e);let t=I.selection;t&&!e.some(e=>e.id===t.backendId)&&(t=null,j(null)),I=F(e,t),R()}function K(e){return L.add(e),()=>{L.delete(e)}}function q(e){if(e&&!e.startsWith(`/`))try{let t=new URL(e),n=t.hostname,r=window.location.hostname??window.location.host?.split(`:`)[0];return r&&(n===`localhost`||n===`127.0.0.1`)&&r!==`localhost`&&r!==`127.0.0.1`?`${r}:${t.port}`:t.host}catch{return window.location.host}return window.location.host}function J(e){if(e&&!e.startsWith(`/`))try{return(new URL(e).pathname.split(`/api/conversations`)[0]||``).replace(/\/$/,``)}catch{return``}return``}function Y(e){let t=q(e),n=J(e),r=window.location.protocol===`https:`,i=X(e)===`https:`;return`${r||i?`https:`:`http:`}//${t}${n}`}function X(e){if(!e||e.startsWith(`/`))return null;try{return new URL(e).protocol}catch{return null}}function ie(e,t){let n=q(e),r=J(e),i=window.location.protocol===`https:`,a=X(e)===`https:`,o=`${i||a?`wss:`:`ws:`}//${n}${r}/sockets/bash-events`;return t?`${o}?session_api_key=${encodeURIComponent(t)}`:o}function ae(e,t){if(!e)return null;let n=q(t),r=J(t),i=window.location.protocol===`https:`,a=X(t)===`https:`;return`${i||a?`wss:`:`ws:`}//${n}${r}/sockets/events/${e}`}var Z=class extends Error{constructor(){super(`No backend is configured.`),this.name=`NoBackendAvailableError`}};function Q(e){return e.replace(/\/+$/,``)}function oe(e,t){return e.host?Q(e.host):e.conversationUrl?Q(Y(e.conversationUrl)):Q(t?.host??``)}function $(e={}){let t=B();if(!t&&!e.host&&!e.conversationUrl)throw new Z;let n=e.sessionApiKey??e.apiKey??t?.apiKey??void 0;return{host:oe(e,t),...n?{apiKey:n}:{},workingDir:e.workingDir??f(),...e.timeout===void 0?{}:{timeout:e.timeout}}}function se(e){let{host:t,apiKey:n,timeout:r}=$(e);return{baseUrl:t,...n?{apiKey:n}:{},timeout:r??6e4}}export{m as C,ee as D,h as E,l as O,s as S,c as T,_,Y as a,p as b,z as c,V as d,U as f,K as g,G as h,ie as i,H as l,W as m,$ as n,ae as o,P as p,se as r,N as s,Z as t,B as u,v,f as w,u as x,e as y};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/secrets-service-CZYjNxFw.js","assets/rolldown-runtime-BFRubm34.js","assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~ncdxw0bh-ClHnt5lR.js","assets/vendor-styling-CI0PQ3ab.js","assets/agent-server-client-options-DVLRd9sw.js","assets/proxy-CHmFkV16.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{St as e}from"./vendor-styling-CI0PQ3ab.js";import{d as t,f as n,r,s as i}from"./vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~ncdxw0bh-ClHnt5lR.js";import{_ as a}from"./active-backend-context-u2tdYRgH.js";import{t as o}from"./common-Dh7OqABE.js";import{a as s,b as c,c as l,n as u,t as ee,u as d,w as f}from"./agent-server-client-options-DVLRd9sw.js";import{n as p,t as m}from"./proxy-CHmFkV16.js";import{t as h}from"./settings-mQUckT0g.js";import{t as te}from"./settings-service.api-DldkFI1x.js";import{r as g,t as _}from"./vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~enjl5xdm-mMKDm94D.js";import{t as v}from"./v4-DbCkTSoU.js";import{t as y}from"./profiles-service.api-CeYEmSM3.js";import{t as b}from"./vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~automations-~ki5qnp0d-rV6d1Iv_.js";import{f as x,o as S,s as ne}from"./acp-providers-D_D8VUpP.js";import{d as re,f as C,r as ie}from"./llm-subscription-DtsX5Lhg.js";import{t as ae}from"./llm-subscription-service-CKyaV24y.js";var w=new Map;function oe(e){return/^([/\\]|[a-zA-Z]:[/\\])/.test(e)}function se(e,t){return`${e.replace(/[/\\]+$/,``)}/${t.replace(/^[/\\]+/,``)}`}async function T(e={}){let n=u(e),r=n.host,i=w.get(r);if(i)return i;let a=(async()=>{let{home:e}=await new t(n).getHome();if(!e||typeof e!=`string`)throw Error(`Agent server returned an empty home directory`);return e.replace(/[/\\]+$/,``)})();w.set(r,a);try{return await a}catch(e){throw w.delete(r),e}}async function E(e,t={}){let n=e.replace(/[/\\]+$/,``);return n?oe(n)?n:se(await T(t),n):T(t)}var D=`openhands-agent-server-conversation-metadata`,O=()=>{if(typeof window>`u`)return{};try{let e=window.localStorage.getItem(D);if(!e)return{};let t=JSON.parse(e);return!t||typeof t!=`object`?{}:t}catch{return{}}},ce=e=>{if(!(typeof window>`u`)){if(Object.keys(e).length===0){window.localStorage.removeItem(D);return}window.localStorage.setItem(D,JSON.stringify(e))}},k=e=>O()[e]??null,A=(e,t)=>{let n=O();n[e]=t,ce(n)},j=e=>{let t=O();e in t&&(delete t[e],ce(t))};function M(e){if(!e?.id)return e;let t=k(e.id);return t?{...e,selected_repository:e.selected_repository??t.selected_repository??null,selected_branch:e.selected_branch??t.selected_branch??null,git_provider:e.git_provider??t.git_provider??null,selected_workspace:e.selected_workspace??t.selected_workspace??null}:e}function N(){let e=l().backend;if(e.kind!==`cloud`)throw Error(`Cloud conversations call requires a cloud backend.`);return e}async function le(e=20,t){let n=N(),r=new URLSearchParams;r.set(`limit`,String(e)),t&&r.set(`page_id`,t),r.set(`sort_order`,`UPDATED_AT_DESC`);let i=await m({backend:n,method:`GET`,path:`/api/v1/app-conversations/search?${r.toString()}`});return{items:(i?.items??[]).map(e=>M(e)),next_page_id:i?.next_page_id??null}}async function P(e){if(e.length===0)return[];let t=N(),n=new URLSearchParams;for(let t of e)n.append(`ids`,t);return(await m({backend:t,method:`GET`,path:`/api/v1/app-conversations?${n.toString()}`})??[]).map(M)}async function ue(e){return await m({backend:N(),method:`POST`,path:`/api/v1/app-conversations`,body:e})}async function de(e){return m({backend:N(),method:`GET`,path:`/api/v1/app-conversations/${e}/download`,responseType:`blob`})}async function fe(e){await m({backend:N(),method:`DELETE`,path:`/api/v1/app-conversations/${e}`})}async function pe(e,t){return await m({backend:N(),method:`PATCH`,path:`/api/v1/app-conversations/${e}`,body:{public:t}})}async function me(e){await m({backend:N(),method:`POST`,path:`/api/v1/sandboxes/${e}/pause`})}async function he(e){await m({backend:N(),method:`POST`,path:`/api/v1/sandboxes/${e}/resume`})}async function ge(e,t){let n=N(),r=new URLSearchParams;return r.append(`file_path`,t),await m({backend:n,method:`GET`,path:`/api/v1/app-conversations/${e}/file?${r.toString()}`})??``}async function _e(e){let t=N(),n=new URLSearchParams;return n.set(`ids`,e),(await m({backend:t,method:`GET`,path:`/api/v1/app-conversations/start-tasks?${n.toString()}`}))?.[0]??null}var F=`canvas_ui`,ve=`canvas_ui_tool`,ye=[`terminal`,`file_editor`,`task_tracker`,F],I=`browser_tool_set`,L=`task_tool_set`;function be(){return!0}function xe(){let e=(void 0)?.trim();if(e)return e;if(typeof window<`u`){let e=window.__AGENT_CANVAS_RUNTIME_SERVICES_INFO__;if(typeof e==`string`)return e.trim()||null}return null}function Se(){let e=xe();if(!e)return null;try{let t=JSON.parse(e);return!t||typeof t!=`object`?null:t}catch{return null}}function Ce(){let e=Se();if(!e?.services)return;let t=[];t.push(`<RUNTIME_SERVICES>`),e.mode?t.push(`You are running inside an agent-canvas dev stack started in '${e.mode}' mode.`):t.push(`You are running inside an agent-canvas dev stack.`),t.push(`The following services are reachable from your sandbox. URLs are written`,`from your point of view (i.e., as you should curl/fetch them).`,``);let{agent_server:n,ingress:r,automation:i}=e.services,{frontend:a}=e.services;n?.url_from_agent&&t.push(`* Agent Server (you): ${n.url_from_agent}`,` ${n.description??`The agent-server hosting your tool calls.`}`),r?.url_from_agent&&t.push(`* Ingress: ${r.url_from_agent}`,` ${r.description??`Unified entry point for browser-facing traffic.`}`),a?.url_from_agent&&t.push(`* Frontend: ${a.url_from_agent}`,` ${a.description??`Frontend dev server.`}`),i?.url_from_agent?(t.push(`* Automation backend: ${i.url_from_agent}`,` ${i.description??`OpenHands Automations service.`}`),i.docs_url&&t.push(` Docs: ${i.docs_url}`),i.openapi_url&&t.push(` OpenAPI: ${i.openapi_url}`),i.auth_env_var&&t.push(` Auth: header 'X-Session-API-Key: $${i.auth_env_var}'`)):t.push(`* Automation backend: not running in this dev mode (skip /api/automation calls).`);let o=n?.url_from_agent;return t.push(``,`Trust this block over guessing: do not assume any other URLs are running.`),o&&t.push(`In particular, ${o} inside your sandbox is the Agent Server`,`you are running inside of — NOT the automation backend.`),t.push(`</RUNTIME_SERVICES>`),t.join(`
|
|
3
|
+
`)}function we(e){let{host:t}=u();return`${t}/api/conversations/${e}`}function R(e){return`Conversation ${e.slice(0,5)}`}function z(e){let t=k(e.id),n=e.agent?.kind===`ACPAgent`,r=n?e.tags?.acpserver??e.agent?.acp_server??null:null;return{id:e.id,created_by_user_id:null,selected_repository:t?.selected_repository??null,selected_branch:t?.selected_branch??null,git_provider:t?.git_provider??null,selected_workspace:t?.selected_workspace??null,active_profile:t?.active_profile??null,title:e.title?.trim()?e.title:R(e.id),trigger:null,pr_number:[],agent_kind:n?`acp`:`openhands`,acp_server:r,llm_model:n?x({runtimeName:e.current_model_name,runtimeId:e.current_model_id,configured:e.agent?.acp_model,sdkLlm:e.agent?.llm?.model}):e.agent?.llm?.model??h.llm_model,metrics:e.metrics?{accumulated_cost:e.metrics.accumulated_cost??null,max_budget_per_task:e.metrics.max_budget_per_task??null,accumulated_token_usage:e.metrics.accumulated_token_usage?{prompt_tokens:e.metrics.accumulated_token_usage.prompt_tokens??0,completion_tokens:e.metrics.accumulated_token_usage.completion_tokens??0,cache_read_tokens:e.metrics.accumulated_token_usage.cache_read_tokens??0,cache_write_tokens:e.metrics.accumulated_token_usage.cache_write_tokens??0,context_window:e.metrics.accumulated_token_usage.context_window??0,per_turn_token:e.metrics.accumulated_token_usage.per_turn_token??0}:null}:null,created_at:e.created_at,updated_at:e.updated_at,execution_status:e.execution_status??o.IDLE,sandbox_status:e.sandbox_status??null,conversation_url:we(e.id),session_api_key:u().apiKey??null,sandbox_id:null,workspace:{working_dir:e.workspace?.working_dir??f()},public:!1,sub_conversation_ids:[]}}function Te(e){return{items:e.items.map(z),next_page_id:e.next_page_id??null}}var Ee=`acpserver`,De=`gAAAAA`,Oe=new Set([`schema_version`,`agent_settings`,`workspace`,`conversation_id`,`initial_message`,`plugins`]);function B(e){return!e||typeof e!=`object`||Array.isArray(e)?{}:structuredClone(e)}function V(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function H(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function U(e){return typeof e==`string`?e.startsWith(De):Array.isArray(e)?e.some(U):H(e)?Object.values(e).some(U):!1}function ke(e){return H(e)?Object.values(e).some(U):!1}function Ae(e){return e.confirmation_mode===!0?e.security_analyzer===`llm`?{kind:`ConfirmRisky`,threshold:`HIGH`,confirm_unknown:!0}:{kind:`AlwaysConfirm`}:{kind:`NeverConfirm`}}function je(e){switch(e.security_analyzer){case`llm`:return{kind:`LLMSecurityAnalyzer`};case`pattern`:return{kind:`PatternSecurityAnalyzer`};case`policy_rail`:return{kind:`PolicyRailSecurityAnalyzer`};default:return}}function Me(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&typeof e.name==`string`}function W(e,t){return e===F?a(e):e===I?be()&&a(e):e===L?t.enable_sub_agents===!0&&a(e):!0}function Ne(e){let t=new Map;for(let n of ye)W(n,e)&&t.set(n,{name:n,params:{}});for(let n of[I,L])W(n,e)&&t.set(n,{name:n,params:{}});let n=e.tools;if(Array.isArray(n)&&n.every(e=>Me(e)))for(let r of n)W(r.name,e)&&t.set(r.name,{name:r.name,params:B(r.params)});return Array.from(t.values())}function Pe(e,t){let n=[e?.trim(),t?.trim()].filter(Boolean);return n.length===0?null:{role:`user`,content:[{type:`text`,text:n.join(`
|
|
4
|
+
|
|
5
|
+
`)}],run:!0}}function Fe(){return b.map(e=>{let t=e.triggers?.length>0?{type:`keyword`,keywords:e.triggers}:null,n=`/home/runner/work/agent-canvas/agent-canvas/node_modules/@openhands/extensions/skills/${e.name}/SKILL.md`;return{name:e.name,content:e.content,trigger:t,source:n,description:e.description??null,is_agentskills_format:!0,...e.license?{license:e.license}:{},...e.compatibility?{compatibility:e.compatibility}:{}}})}function G(e){let t=Ce(),n=B(e.agent_context),r=[...Array.isArray(n.skills)?n.skills:[],...Fe()];return{...n,skills:r,load_public_skills:!1,load_user_skills:!0,load_project_skills:!0,...t?{system_message_suffix:t}:{}}}function K(e){return B(e.agent_settings).agent_kind===`acp`}function Ie(e){let t=B(e.agent_settings).acp_server;return typeof t==`string`&&t.length>0?t:void 0}function Le(e){let t=e.acp_command;if(!(Array.isArray(t)&&t.length===0)&&t!==void 0)return t;let n=ne(typeof e.acp_server==`string`?e.acp_server:void 0);return n?[...n.default_command]:t}function Re(e){let t=B(e.agent_settings),n={agent_kind:`acp`,agent_context:G(t)};for(let e of _){if(e===`acp_model`||e===`acp_env`)continue;let r=e===`acp_command`?Le(t):t[e];r!=null&&(n[e]=r)}let r=B(t.mcp_config);Object.keys(r).length>0&&(n.mcp_config=r);let i=typeof t.acp_server==`string`?t.acp_server:void 0,a=x({configured:t.acp_model,providerDefault:S(i)});return a&&(n.acp_model=a),n}function ze(e){let t=B(e.agent_settings),n=B(t.llm);n.model=typeof n.model==`string`&&n.model.trim().length>0?n.model:h.llm_model,n.stream=!0;let r=V(n.api_key);r?n.api_key=r:delete n.api_key;let i=V(n.base_url);i?n.base_url=i:delete n.base_url,C(n)?(n.auth_type=ie,n.subscription_vendor=re,delete n.api_key,delete n.base_url):(delete n.auth_type,delete n.subscription_vendor);let a=B(t.mcp_config);Object.keys(a).length===0&&delete t.mcp_config,delete t.acp_server;for(let e of _)delete t[e];return delete t.acp_env,{...t,llm:n,agent_context:G(t),tools:Ne(t)}}function Be(e){return K(e)?Re(e):ze(e)}function Ve(e){let{settings:t,query:n,conversationInstructions:r,plugins:i,workingDir:a}=e,o=B(t.conversation_settings),s=Pe(n,r);return Oe.forEach(e=>delete o[e]),{...o,workspace:{kind:`LocalWorkspace`,working_dir:a??f()},...s?{initial_message:s}:{},...i?.length?{plugins:i.map(e=>({source:e.source,...e.ref?{ref:e.ref}:{},...e.repo_path?{repo_path:e.repo_path}:{}}))}:{}}}function He(e){let t=e.encryptedAgentSettings?{...e.settings,agent_settings:e.encryptedAgentSettings}:e.settings,n=K(t),r=Be(t),i=n?Ie(t):void 0,o=Ve(e.encryptedConversationSettings?{...e,settings:{...e.settings,conversation_settings:e.encryptedConversationSettings}}:e),s={...e.agentProfileId?{agent_profile_id:e.agentProfileId}:{agent_settings:r},workspace:o.workspace,confirmation_policy:Ae(o),max_iterations:typeof o.max_iterations==`number`?o.max_iterations:500,stuck_detection:!0,autotitle:!0,worktree:e.worktree??!0};!e.agentProfileId&&i&&(s.tags={[Ee]:i}),!e.agentProfileId&&e.secretsEncrypted&&(!n||ke(r.mcp_config))&&(s.secrets_encrypted=!0),e.conversationId&&(s.conversation_id=e.conversationId);let c=je(o);c&&(s.security_analyzer=c),o.initial_message&&(s.initial_message=o.initial_message),o.plugins&&(s.plugins=o.plugins),o.hook_config&&(s.hook_config=o.hook_config);let l={},u=a(F);if(u&&(l[F]=ve),Object.assign(l,o.tool_module_qualnames??{}),u||delete l[F],Object.keys(l).length>0&&(s.tool_module_qualnames=l),o.agent_definitions&&(s.agent_definitions=o.agent_definitions),e.customSecrets&&e.customSecrets.length>0){let t=d(),n=t?p(t):{},r={};for(let t of e.customSecrets){let e={kind:`LookupSecret`,url:`/api/settings/secrets/${encodeURIComponent(t.name)}`,description:t.description};Object.keys(n).length>0&&(e.headers=n),r[t.name]=e}s.secrets=r}return s}var Ue=`Connect your ChatGPT subscription before starting a conversation with this LLM profile.`;async function q(e){if(C(B(e.llm))&&!(await ae.getOpenAIStatus()).connected)throw Error(Ue)}async function We(t){let{SecretsService:n}=await e(async()=>{let{SecretsService:e}=await import(`./secrets-service-CZYjNxFw.js`).then(e=>e.n);return{SecretsService:e}},__vite__mapDeps([0,1,2,3,4,5])),[r,i]=await Promise.all([te.getSettingsForConversation(),n.getSecrets()]),{agentSettings:a,conversationSettings:o,secretsEncrypted:s}=r;return t.agentProfileId||await q(a),He({...t,encryptedAgentSettings:a,encryptedConversationSettings:o,secretsEncrypted:s,customSecrets:i})}function Ge(){return{hooks:[]}}var Ke=`1970-01-01T00:00:00.000Z`,qe=`Unable to load conversations because the selected agent server returned data this UI does not understand. Check the backend URL/session key and update the agent server if needed.`;function J(){return Error(qe)}function Y(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function X(e){return typeof e==`number`?e:null}function Z(e){return typeof e==`number`?e:0}function Q(e){return typeof e==`string`?e:null}function Je(e,t,n){let r=e[t]??e[n];return typeof r==`string`&&r.trim()?r:Ke}function Ye(e){return Y(e)?{prompt_tokens:Z(e.prompt_tokens),completion_tokens:Z(e.completion_tokens),cache_read_tokens:Z(e.cache_read_tokens),cache_write_tokens:Z(e.cache_write_tokens),context_window:Z(e.context_window),per_turn_token:Z(e.per_turn_token)}:null}function Xe(e){return Y(e)?{accumulated_cost:X(e.accumulated_cost),max_budget_per_task:X(e.max_budget_per_task),accumulated_token_usage:Ye(e.accumulated_token_usage)}:null}function Ze(e){if(!Y(e))return null;let t=Y(e.llm)?{model:Q(e.llm.model)}:null;return{kind:Q(e.kind),acp_server:Q(e.acp_server),acp_model:Q(e.acp_model),llm:t}}function Qe(e){return Y(e)?{working_dir:Q(e.working_dir)}:null}function $e(e){if(!Y(e))return null;let t={};for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return t}function et(e){if(!e.startsWith(`/`))return null;let t=[];for(let n of e.split(`/`))if(n&&n!==`.`)if(n===`..`){if(!t.length)return null;t.pop()}else t.push(n);return`/${t.join(`/`)}`}function tt(e,t){let n=et(e),r=et(t);if(!n||!r||n!==r&&!n.startsWith(`${r}/`))throw Error(`Conversation file path must stay inside the workspace`);return n}function nt(e){if(!Y(e)||typeof e.id!=`string`||!e.id.trim())throw J();return{id:e.id.trim(),title:Q(e.title),created_at:Je(e,`created_at`,`createdAt`),updated_at:Je(e,`updated_at`,`updatedAt`),execution_status:Q(e.execution_status),sandbox_status:Q(e.sandbox_status),metrics:Xe(e.metrics),agent:Ze(e.agent),workspace:Qe(e.workspace),tags:$e(e.tags),current_model_id:Q(e.current_model_id),current_model_name:Q(e.current_model_name)}}function $(e){if(!Array.isArray(e))throw J();return e.map(nt)}function rt(e){if(Array.isArray(e))return{items:$(e),next_page_id:null};if(!Y(e))throw J();return{items:$(e.items),next_page_id:typeof e.next_page_id==`string`?e.next_page_id:null}}var it=new Set([`idle`,`running`,`paused`,`waiting_for_confirmation`,`finished`,`error`,`stuck`]);function at(e){let t=e??`idle`;return it.has(t)?t:`idle`}function ot(e,t){if(!e)throw Error(`Conversation ${t} was not found`);return e}var st=class{static async sendMessage(e,t,r){let i=l().backend,a=r?.conversationUrl??null,o=r?.sessionApiKey??null;if(i.kind===`cloud`){if(!a||!o){let[t]=await P([e]);a=t?.conversation_url?.trim()??null,o=t?.session_api_key?.trim()??null}if(!a||!o)throw Error(`Conversation sandbox is still starting. Wait for it to finish, then try again.`);return await m({backend:i,method:`POST`,hostOverride:s(a),path:`/api/conversations/${e}/events`,body:{...t,run:!0},authMode:`session-api-key`,sessionApiKey:o}),t}return await new n(u({conversationUrl:a,sessionApiKey:o})).sendEvent(e,t,{run:!0}),t}static async createConversation(e,t,r,i,a,o,s,f,p,m){if(l().backend.kind===`cloud`)return ue({initial_message:e?{role:`user`,content:[{type:`text`,text:e}]}:null,title:t??null,selected_repository:i?.selected_repository??null,selected_branch:i?.selected_branch??null,git_provider:i?.git_provider??null,plugins:r??null,parent_conversation_id:s??null,agent_type:f,sandbox_id:p??null,agent_profile_id:m??null});let h=await te.getSettings(),g=v(),_=await E(a??c(g)),y=o??(a?`local_repo`:`new_worktree`),b=await We({settings:h,query:e,conversationInstructions:t,plugins:r,conversationId:g,workingDir:_,worktree:y===`new_worktree`,agentProfileId:m}),x=await new n(u()).createConversation(b),S=d();if(!S)throw new ee;return(i?.selected_repository||a)&&A(x.id,{selected_repository:i?.selected_repository??null,selected_branch:i?.selected_branch??null,git_provider:i?.git_provider??null,selected_workspace:a??null,workspace_mode:y}),{id:x.id,created_by_user_id:null,status:`READY`,detail:null,app_conversation_id:x.id,agent_server_url:S.host,request:{initial_message:b.initial_message,plugins:r??null},created_at:x.created_at,updated_at:x.updated_at}}static async getStartTask(e){return l().backend.kind===`cloud`?_e(e):null}static async getVSCodeUrl(e,t,n){let i=await this.resolveConversationWorkingDir(e);return{vscode_url:await new r(u({conversationUrl:t,sessionApiKey:n})).getUrl({baseUrl:typeof window<`u`?window.location.origin:void 0,workspaceDir:i})}}static async resolveConversationWorkingDir(e){let[t]=await this.batchGetAppConversations([e]);return t?.workspace?.working_dir??f()}static async batchGetAppConversations(e){return e.length===0?[]:l().backend.kind===`cloud`?P(e):$(await new n(u()).getConversations(e)).map(e=>z(e))}static async updateConversationPublicFlag(e,t){if(l().backend.kind!==`cloud`)throw Error(`Public sharing requires a cloud backend.`);return pe(e,t)}static async updateConversationRepository(e,t,n,r){t?A(e,{...k(e)??{},selected_repository:t,selected_branch:n??null,git_provider:r??null}):j(e);let[i]=await this.batchGetAppConversations([e]);return ot(i,e)}static async readConversationFile(e,n){if(l().backend.kind===`cloud`)return ge(e,tt(n??`/workspace/project/.agents_tmp/PLAN.md`,`/workspace/project`));let r=await this.resolveConversationWorkingDir(e),i=tt(n??`${r}/.agents_tmp/PLAN.md`,r);return new t(u()).downloadTextFile(i)}static async downloadConversation(e){return l().backend.kind===`cloud`?de(e):new t(u()).downloadTrajectory(e)}static async getHooks(e){return Ge()}static async getRuntimeConversation(e,t,r){let i=l().backend,a=i.kind===`cloud`&&t?await m({backend:i,method:`GET`,hostOverride:s(t),path:`/api/conversations/${e}`,authMode:`session-api-key`,sessionApiKey:r}):await new n(u({conversationUrl:t,sessionApiKey:r})).getConversation(e),o=nt(a),c=Y(a)?a.stats:null;return{id:o.id,title:o.title?.trim()?o.title:R(o.id),metrics:Xe(o.metrics),created_at:o.created_at,updated_at:o.updated_at,status:at(o.execution_status),stats:Y(c)?c:{usage_to_metrics:{}}}}static async searchConversations(e=20,t){return l().backend.kind===`cloud`?le(e,t):Te(rt(await new n(u()).searchConversations({limit:e,page_id:t,sort_order:g.UPDATED_AT_DESC})))}static async deleteConversation(e){l().backend.kind===`cloud`?await fe(e):await new n(u()).deleteConversation(e),j(e)}static async updateConversationTitle(e,t){await new n(u()).updateConversation(e,{title:t});let[r]=await this.batchGetAppConversations([e]);return ot(r,e)}static async forkConversation(e,t,r){if(l().backend.kind===`cloud`)throw Error(`Branching a conversation isn't supported on the cloud backend yet.`);let i=await new n(u()).forkConversation(e,{from_event_id:t,...r?{title:r}:{}}),a=k(e);return a&&A(i.id,a),i}static async getEventParentId(e,t){return(await new n(u()).getEvent(e,t)).parent_id??void 0}static async switchProfile(e,t){let{backend:r}=l();if(r.kind===`cloud`){if(!e){await y.activateProfile(t);return}await m({backend:r,method:`POST`,path:`/api/v1/app-conversations/${e}/switch_profile`,body:{profile_name:t}});return}if(!e){await new i(u()).activateProfile(t);return}let a=u(),o=new n(a),s=await new i(a).getProfile(t,{exposeSecrets:`encrypted`}),c=typeof s.config.model==`string`?s.config.model:``;if(!c)throw Error(`Profile '${t}' has no model.`);await q({llm:s.config}),await o.switchLLM(e,{...s.config,model:c,stream:!0,usage_id:`profile:${t}:${v()}`})}static async switchAcpModel(e,t){let{backend:r}=l();if(r.kind===`cloud`){await m({backend:r,method:`POST`,path:`/api/v1/app-conversations/${e}/switch_acp_model`,body:{model:t}});return}await new n(u()).switchAcpModel(e,t)}};export{k as a,he as i,P as n,A as o,me as r,E as s,st as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,r as t}from"./agent-settings-Ofbh6UTD.js";export{e as default,t as handle};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,t}from"./rolldown-runtime-BFRubm34.js";import{Ct as n,bt as r}from"./vendor-styling-CI0PQ3ab.js";import{L as i,s as a}from"./vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~byh8a1g4-XNPdpuO8.js";import{t as o}from"./useTranslation-Cgy4JA_g.js";import{t as s}from"./declaration-B9kpCaYl.js";import{A as c,N as l,j as u}from"./active-backend-context-u2tdYRgH.js";import{t as d}from"./utils-CE0lDWtb.js";import"./form-control-classes-9rkU4usZ.js";import{t as f}from"./brand-button-DKPMEKcW.js";import{t as p}from"./settings-input-DYs7t3oK.js";import{r as m}from"./use-settings-dX4fKUPF.js";import{c as h,i as ee,n as g,o as _,s as v,t as te}from"./acp-providers-D_D8VUpP.js";import{t as ne}from"./use-save-settings-CChDyjOB.js";import{d as re,h as ie,i as ae,m as oe}from"./sdk-settings-schema-BjBkMHzZ.js";import{n as se,r as ce}from"./schema-field-nvq_Juo2.js";import{t as y}from"./settings-dropdown-input-xzoZwgUe.js";import{r as b}from"./typography-YGPBGzOG.js";import{t as le}from"./settings-switch-C2N2xqEb.js";import{a as x,i as ue,n as S,r as de,t as fe}from"./use-acp-credential-form-Bs6s0DTU.js";var C=e(n(),1),w=r();function pe({form:e,providerKey:t}){let{t:n}=o(`openhands`),{fields:r,values:i,setValue:a,secretExists:c,conflicts:l}=e,{status:u,isChecking:d}=S(t),f=h(t)??t;return r.length===0?null:(0,w.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,w.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,w.jsx)(b.Text,{className:`text-sm font-medium text-white`,children:n(s.SETTINGS$ACP_CREDENTIALS_TITLE)}),(0,w.jsx)(b.Text,{className:`text-xs text-[#717888]`,children:n(s.SETTINGS$ACP_CREDENTIALS_DESCRIPTION)})]}),(0,w.jsx)(ue,{status:u,isChecking:d,providerName:f,testIdPrefix:`settings-acp-auth`}),(0,w.jsx)(`div`,{className:`flex flex-col gap-5`,children:r.map(e=>(0,w.jsx)(de,{field:e,value:i[e.name]??``,onChange:t=>a(e.name,t),alreadySet:c(e.name),testId:`settings-acp-secret-${e.name}`,showOptionalTag:!0},e.name))}),(0,w.jsx)(x,{conflicts:l})]})}var T=t(((e,t)=>{var n=[`||`,`&&`,`;;`,`|&`,`<(`,`<<<`,`>>`,`>&`,`<&`,`&`,`;`,`(`,`)`,`|`,`<`,`>`],r=/[\n\r\u2028\u2029]/,i=/[\s#!"$&'():;<=>@\\^`|]/g;t.exports=function(e){return e.map(function(e){if(e===``)return`''`;if(e&&typeof e==`object`){if(e.op===`glob`){if(typeof e.pattern!=`string`)throw TypeError("glob token requires a string `pattern`");if(r.test(e.pattern))throw TypeError("glob `pattern` must not contain line terminators");return e.pattern.replace(i,`\\$&`)}if(typeof e.op==`string`){if(n.indexOf(e.op)<0)throw TypeError("invalid `op` value: "+JSON.stringify(e.op));return e.op.replace(/[\s\S]/g,`\\$&`)}if(typeof e.comment==`string`){if(r.test(e.comment))throw TypeError("`comment` must not contain line terminators");return`#`+e.comment}throw TypeError(`unrecognized object token shape`)}return/["\s\\]/.test(e)&&!/'/.test(e)?`'`+e.replace(/(['])/g,`\\$1`)+`'`:/["'\s]/.test(e)?`"`+e.replace(/(["\\$`!])/g,`\\$1`)+`"`:String(e).replace(/([A-Za-z]:)?([#!"$&'()*,:;<=>?@[\\\]^`{|}])/g,`$1\\$2`)}).join(` `)}})),E=t(((e,t)=>{for(var n=`(?:`+[`\\|\\|`,`\\&\\&`,`;;`,`\\|\\&`,`\\<\\(`,`\\<\\<\\<`,`>>`,`>\\&`,`<\\&`,`[&;()|<>]`].join(`|`)+`)`,r=RegExp(`^`+n+`$`),i=`|&;()<> \\t`,a=`"((\\\\"|[^"])*?)"`,o=`'((\\\\'|[^'])*?)'`,s=/^#$/,c=`'`,l=`"`,u=`$`,d=``,f=4294967296,p=0;p<4;p++)d+=(f*Math.random()).toString(16);var m=RegExp(`^`+d);function h(e,t){for(var n=t.lastIndex,r=[],i;i=t.exec(e);)r.push(i),t.lastIndex===i.index&&(t.lastIndex+=1);return t.lastIndex=n,r}function ee(e,t,n){var r=typeof e==`function`?e(n):e[n];return r===void 0&&n!=``?r=``:r===void 0&&(r=`$`),typeof r==`object`?t+d+JSON.stringify(r)+d:t+r}function g(e,t,d){d||={};var f=d.escape||`\\`,p=`(\\`+f+`['"`+i+`]|[^\\s'"`+i+`])+`,m=h(e,new RegExp([`(`+n+`)`,`(`+p+`|`+a+`|`+o+`)+`].join(`|`),`g`));if(m.length===0)return[];t||={};var g=!1;return m.map(function(n){var i=n[0];if(!i||g)return;if(r.test(i))return{op:i};var a=!1,o=!1,d=``,p=!1,m;function h(){m+=1;var e,n,r=i.charAt(m);if(r===`{`){if(m+=1,i.charAt(m)===`}`)throw Error(`Bad substitution: `+i.slice(m-2,m+1));if(e=i.indexOf(`}`,m),e<0)throw Error(`Bad substitution: `+i.slice(m));n=i.slice(m,e),m=e}else if(/[*@#?$!_-]/.test(r))n=r,m+=1;else{var a=i.slice(m);e=a.match(/[^\w\d_]/),e?(n=a.slice(0,e.index),m+=e.index-1):(n=a,m=i.length)}return ee(t,``,n)}for(m=0;m<i.length;m++){var _=i.charAt(m);if(p||=!a&&(_===`*`||_===`?`),o)d+=_,o=!1;else if(a)_===a?a=!1:a==c?d+=_:_===f?(m+=1,_=i.charAt(m),_===l||_===f||_===u?d+=_:d+=f+_):_===u?d+=h():d+=_;else if(_===l||_===c)a=_;else if(r.test(_))return{op:i};else if(s.test(_)){g=!0;var v={comment:e.slice(n.index+m+1)};return d.length?[d,v]:[v]}else _===f?o=!0:_===u?d+=h():d+=_}return p?{op:`glob`,pattern:d}:d}).reduce(function(e,t){return t===void 0?e:e.concat(t)},[])}t.exports=function(e,t,n){var r=g(e,t,n);return typeof t==`function`?r.reduce(function(e,t){if(typeof t==`object`)return e.concat(t);var n=t.split(RegExp(`(`+d+`.*?`+d+`)`,`g`));return n.length===1?e.concat(n[0]):e.concat(n.filter(Boolean).map(function(e){return m.test(e)?JSON.parse(e.split(d)[1]):e}))},[]):r}})),{quote:D}=e(t((e=>{e.quote=T(),e.parse=E()}))(),1);function O(e){let t=[],n=0,r=``,i=!1;for(;n<e.length;){let a=e[n];if(a===` `||a===` `||a===`
|
|
2
|
+
`||a===`\r`){i&&=(t.push(r),r=``,!1),n+=1;continue}if(a===`'`){for(i=!0,n+=1;n<e.length&&e[n]!==`'`;)r+=e[n],n+=1;n<e.length&&(n+=1);continue}if(a===`"`){for(i=!0,n+=1;n<e.length&&e[n]!==`"`;){if(e[n]===`\\`&&n+1<e.length){let t=e[n+1];if(t===`"`||t===`\\`){r+=t,n+=2;continue}}r+=e[n],n+=1}n<e.length&&(n+=1);continue}if(a===`\\`&&n+1<e.length){i=!0,r+=e[n+1],n+=2;continue}i=!0,r+=a,n+=1}return i&&t.push(r),t}var k=/[\s"'\\$`&|;<>(){}*?#!~[\]]/;function A(e){return e.map(e=>k.test(e)||e===``?D([e]):e).join(` `)}var j={hideTitle:!0},me=`enable_sub_agents`,he=`tool_concurrency_limit`,ge=`npx -y <package-name>`,M=`__custom_model__`;function _e(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function N(e,t){let n=O(e).join(` `);for(let e of t)if(n===e.default_command.join(` `))return e.key;return te}function ve(e){return e?.find(e=>e.key===me)}function ye(e,t){return typeof e==`boolean`?e:t?.default===!0}function be(e,t){return e?.available_models?.some(({id:e})=>e===t.trim())??!1}function xe(e){let{isAcp:t,selectedPreset:n,isDefaultProviderCommand:r,commandTokens:i,acpModel:a,subAgentsEnabled:o,toolConcurrencyField:s,toolConcurrency:c}=e;if(t){let e=r&&n!==`custom`;return{agent_kind:`acp`,acp_server:n,acp_model:a.trim()||null,acp_command:e?null:A(i)||null,acp_args:null}}let l={agent_kind:`openhands`,enable_sub_agents:o};if(s){let e=ae(s,c),t=typeof s.default==`number`?s.default:1;l.tool_concurrency_limit=e==null?t:Number(e)}return l}function P({embedded:e=!1,agentSettingsOverride:t=null,onSaveControlChange:n}={}){let{t:r}=o(`openhands`),{data:i,isLoading:a}=m(),h=t??i?.agent_settings??null,{mutate:x,isPending:ue}=ne(),{data:S}=ce(i?.agent_settings_schema),de=C.useMemo(()=>S?.sections.flatMap(e=>e.fields),[S]),T=ve(de),E=C.useMemo(()=>ye(h?.[me],T),[T,h]),[D,k]=(0,C.useState)(E),j=de?.find(e=>e.key===he),P=C.useMemo(()=>{if(!j)return``;let e=h?.[he];return re(j,e)},[j,h]),[F,Se]=(0,C.useState)(P),[I,L]=(0,C.useState)(`openhands`),[R,z]=(0,C.useState)(``),[B,V]=(0,C.useState)(``),[Ce,H]=(0,C.useState)(!1),[we,U]=(0,C.useState)(!1),W=I===`acp`?N(R,g):null,G=fe(W&&W!==`custom`?W:null),Te=(0,C.useRef)(null),K=(0,C.useRef)(null),q=(0,C.useRef)(``);(0,C.useEffect)(()=>{let e=t??i?.agent_settings??null;if(!e&&!i)return;let n=t??i;if(Te.current!==n){if(Te.current=n,e?.agent_kind===`acp`){L(`acp`);let t=e?.acp_server,n=typeof t==`string`?t:void 0,r=v(n),i=_e(e?.acp_command),a=[...i.length>0?i:r?.default_command??[],..._e(e?.acp_args)],o=a.length>0?A(a):``;z(o),K.current=n??null,q.current=o;let s=e?.acp_model,c=typeof s==`string`?s.trim():``;V(c||_(n)||``),H(!!c&&(!r||!be(r,c)))}else L(`openhands`),z(``),V(``),K.current=null,q.current=``,H(!1);U(!1)}},[i,t]),(0,C.useEffect)(()=>{k(E)},[E]),(0,C.useEffect)(()=>{Se(P)},[P]);let Ee=(0,C.useRef)(()=>({agent_kind:`openhands`,enable_sub_agents:!1})),De=(0,C.useCallback)(()=>Ee.current(),[]),J=(0,C.useRef)(G);J.current=G;let Oe=(0,C.useCallback)(e=>J.current.save(e),[]),ke=(0,C.useCallback)(()=>J.current.reset(),[]),Ae=I===`acp`&&O(R).length===0,je=G.isDirty;if((0,C.useEffect)(()=>{!e||!n||n({agentType:I,isValid:!Ae,buildAgentProfileFields:De,credentials:{isDirty:je,save:Oe,reset:ke}})},[e,n,I,Ae,je,De,Oe,ke]),a)return null;let Y=I===`acp`,X=O(R),Me=Y&&X.length===0,Z=N(R,g),Q=v(Z),Ne=Q?.available_models??[],Pe=Ne.length>0,Fe=be(Q,B),Ie=Ce||!Fe?M:B,Le=!!Q&&X.join(` `)===Q.default_command.join(` `),Re=A(g[0]?.default_command??[])||ge;Ee.current=()=>xe({isAcp:Y,selectedPreset:Z,isDefaultProviderCommand:Le,commandTokens:X,acpModel:B,subAgentsEnabled:D,toolConcurrencyField:j,toolConcurrency:F});let ze=we||!Y&&(D!==E||F!==P),Be=G.isDirty,Ve=ze||Be,$=ue||G.isSaving,He=async()=>{if(G.isDirty){if(!await G.save({silent:ze}))return;G.reset()}if(ze)if(Y){let e=!!(Q&&Le),t=K.current,n=R===q.current,i=!!t&&t!==`custom`&&!g.some(e=>e.key===t),a=Y&&n&&i,o=ee(a?t:Q&&Le?Q.key:te,{command:e?[]:X,model:B.trim()||void 0,allowUnknownServer:a});if(!o)return;x({agent_settings_diff:o},{onError:e=>{c(l(e)||r(s.ERROR$GENERIC))},onSuccess:()=>{u(r(s.SETTINGS$SAVED)),U(!1)}})}else{let e={agent_kind:`openhands`,enable_sub_agents:D};if(j){let t;try{t=ae(j,F)}catch(e){c(e instanceof Error?e.message:r(s.ERROR$GENERIC));return}t!=null&&(e[he]=t)}x({agent_settings_diff:e},{onError:e=>{c(l(e)||r(s.ERROR$GENERIC))},onSuccess:()=>{u(r(s.SETTINGS$SAVED)),U(!1)}})}},Ue=T?ie(r,T.key,T.label):r(s.SCHEMA$ENABLE_SUB_AGENTS$LABEL),We=T?oe(r,T.key,T.description):r(s.SCHEMA$ENABLE_SUB_AGENTS$DESCRIPTION);return(0,w.jsxs)(`div`,{"data-testid":`agent-settings-screen`,className:`flex flex-col gap-6 pb-8 max-w-2xl`,children:[!e&&(0,w.jsxs)(`div`,{children:[(0,w.jsx)(b.H2,{className:`mb-2`,children:r(s.SETTINGS$NAV_AGENT)}),(0,w.jsx)(b.Paragraph,{className:`text-sm text-[#A3A3A3]`,children:r(s.SETTINGS$AGENT_PAGE_DESCRIPTION)})]}),(0,w.jsx)(y,{testId:`agent-type-selector`,name:`agent-type`,label:r(s.SETTINGS$NAV_AGENT),items:[{key:`openhands`,label:r(s.SETTINGS$AGENT_TYPE_OPENHANDS)},{key:`acp`,label:r(s.SETTINGS$AGENT_TYPE_ACP)}],selectedKey:I,onSelectionChange:e=>{if(!e)return;let t=e;if(L(t),t===`acp`&&!R){let e=g[0];e&&(z(A(e.default_command)),V(_(e.key)??``),H(!1))}else t===`openhands`&&H(!1);U(!0)}}),!Y&&(0,w.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,w.jsx)(le,{testId:`agent-settings-enable-sub-agents`,isToggled:D,onToggle:e=>{k(e)},children:Ue}),We?(0,w.jsx)(b.Paragraph,{className:d(`pl-12`,`text-tertiary-alt text-xs leading-5`),children:We}):null]}),!Y&&j?(0,w.jsx)(se,{field:j,value:F,isDisabled:$,onChange:Se}):null,Y&&(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(y,{testId:`agent-preset-selector`,name:`agent-preset`,label:r(s.SETTINGS$AGENT_PRESET),items:[...g.map(e=>({key:e.key,label:e.display_name})),{key:`custom`,label:r(s.SETTINGS$AGENT_PRESET_CUSTOM)}],selectedKey:Z,onSelectionChange:e=>{if(!e)return;let t=String(e),n=v(t);n?(z(A(n.default_command)),V(_(t)??``),H(!1)):t===`custom`&&(z(``),V(``),H(!0)),U(!0)}}),(0,w.jsxs)(`div`,{className:`flex flex-col gap-2.5`,children:[(0,w.jsx)(b.Text,{className:`text-sm`,children:r(s.SETTINGS$AGENT_COMMAND)}),(0,w.jsx)(`textarea`,{"data-testid":`agent-command-input`,className:`bg-tertiary border border-[#717888] rounded-sm p-2 text-sm font-mono text-white placeholder:text-[#717888] min-h-[60px] resize-y focus:outline-none focus:border-white`,value:R,placeholder:Re,onChange:e=>{let t=e.target.value,n=N(R,g),r=N(t,g);r!==n&&(V(_(r)??``),H(!1)),z(t),U(!0)}}),(0,w.jsx)(b.Text,{className:`text-xs text-[#717888]`,children:r(s.SETTINGS$AGENT_COMMAND_HINT)})]}),(0,w.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[Pe&&(0,w.jsx)(y,{testId:`agent-model-selector`,name:`agent-model`,label:r(s.SETTINGS$AGENT_MODEL),items:[...Ne.map(e=>({key:e.id,label:e.label})),{key:M,label:r(s.SETTINGS$AGENT_PRESET_CUSTOM)}],selectedKey:Ie,onSelectionChange:e=>{if(!e)return;let t=String(e);t===M?(H(!0),V(``)):(H(!1),V(t)),U(!0)}}),Ie===M&&(0,w.jsx)(p,{testId:`agent-model-input`,label:r(Pe?s.SETTINGS$AGENT_CUSTOM_MODEL:s.SETTINGS$AGENT_MODEL),type:`text`,className:`w-full`,value:B,showOptionalTag:!0,onChange:e=>{V(e),U(!0)}}),(0,w.jsx)(b.Text,{className:`text-xs text-[#717888]`,children:r(s.SETTINGS$AGENT_MODEL_HINT)})]})]}),Y&&Z!==`custom`&&(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(`hr`,{className:`border-[#3D4046]`}),(0,w.jsx)(pe,{form:G,providerKey:Z})]}),!e&&(0,w.jsx)(`div`,{children:(0,w.jsx)(f,{testId:`agent-save-button`,type:`button`,variant:`primary`,isDisabled:$||!Ve||Me,onClick:He,children:r($?s.SETTINGS$SAVING:s.SETTINGS$SAVE_CHANGES)})})]})}var F=i(function(){return(0,w.jsx)(a,{to:`/settings/agents`,replace:!0})});export{O as i,F as n,j as r,P as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-BFRubm34.js";import{Ct as t,bt as n}from"./vendor-styling-CI0PQ3ab.js";import{t as r}from"./useTranslation-Cgy4JA_g.js";import{t as i}from"./declaration-B9kpCaYl.js";import{t as a}from"./utils-CE0lDWtb.js";import{n as o}from"./navigation-context-DPs2G0X8.js";import{c as s}from"./vendor~root-layout~home~conversation-panel~conversation~shared-conversation~alert-banner~pl~rqjteh0a-CZM4hwUT.js";import{t as c}from"./close-p3Op5lxI.js";import{r as l}from"./typography-YGPBGzOG.js";import{t as u}from"./vendor~conversation-panel~conversation~alert-banner-DHDkknt5.js";var d=e(t(),1),f=n();function p({maintenanceStartTime:e,faultyModels:t,errorMessage:n,updatedAt:p}){let{t:m}=r(`openhands`),[h,g]=u(`alert_banner_dismissed_at`,null),{currentPath:_}=o(),v=e?(e=>new Date(e).toLocaleString(void 0,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,timeZoneName:`short`}))(e):null,y=!!e,b=t&&t.length>0,x=n&&n.trim().length>0,S=y||b||x,C=(0,d.useMemo)(()=>S?h!==p:!1,[h,p,S]),w=(0,d.useMemo)(()=>{if(!n)return null;let e=m(n);return e===n?n:e},[n,m]);return C?(0,f.jsxs)(`div`,{"data-testid":`alert-banner`,className:a(`bg-base border border-primary text-white p-4 rounded`,`flex flex-row items-center justify-between m-1`,_===`/`&&`mt-3 mr-3`),children:[(0,f.jsxs)(`div`,{className:`flex items-center`,children:[(0,f.jsx)(`div`,{className:`flex-shrink-0`,children:(0,f.jsx)(s,{className:`text-primary align-middle`})}),(0,f.jsx)(`div`,{className:`ml-3 flex flex-col gap-1`,children:(()=>{let e=[];return y&&v&&e.push((0,f.jsx)(l.Paragraph,{className:`text-sm font-medium`,children:m(i.MAINTENANCE$SCHEDULED_MESSAGE,{time:v})},`maintenance`)),b&&e.push((0,f.jsxs)(l.Paragraph,{className:`text-sm font-medium`,children:[m(i.ALERT$FAULTY_MODELS_MESSAGE),` `,t.join(`, `)]},`faulty-models`)),x&&w&&e.push((0,f.jsx)(l.Paragraph,{className:`text-sm font-medium`,children:w},`error-message`)),e})()})]}),(0,f.jsx)(`button`,{type:`button`,"data-testid":`dismiss-button`,onClick:()=>g(p),className:a(`bg-base rounded-full w-5 h-5 flex items-center justify-center cursor-pointer`),children:(0,f.jsx)(c,{})})]}):null}export{p as AlertBanner};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-BFRubm34.js";import{Ct as t,bt as n}from"./vendor-styling-CI0PQ3ab.js";import{t as r}from"./useTranslation-Cgy4JA_g.js";import{t as i}from"./declaration-B9kpCaYl.js";import{o as a}from"./vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~ncdxw0bh-ClHnt5lR.js";import{r as o,y as s}from"./active-backend-context-u2tdYRgH.js";import{t as c}from"./utils-CE0lDWtb.js";import{n as l,p as u}from"./agent-server-client-options-DVLRd9sw.js";import{r as d,t as f}from"./modal-body-Dcu5McCa.js";import{t as p}from"./brand-button-DKPMEKcW.js";import{a as m,n as h}from"./backend-form-modal-BiaOB2C4.js";var g=e(t(),1),_=n();function v(){let{t:e}=r(`openhands`),{active:t,addBackend:n,updateBackend:v}=o(),y=window.location.origin,[b,x]=g.useState(!1),[S,C]=g.useState(`idle`),[w,T]=g.useState(null),E=g.useCallback(async r=>{x(!0),C(`idle`),T(null);try{await new a(l({host:r.host,sessionApiKey:r.apiKey,timeout:5e3})).getSettings(),C(`success`),u(t.backend)?n(r):v(t.backend.id,r),window.location.reload()}catch(t){if(C(`error`),s(t,401))T(e(i.AUTH$INVALID_KEY));else{let n=t instanceof Error?t.message:String(t);T(`${e(i.AUTH$CONNECTION_FAILED)}${n?`: ${n}`:``}`)}x(!1)}},[t.backend,n,v,e]);return(0,_.jsx)(`div`,{"data-testid":`api-key-entry-screen`,className:`flex min-h-screen items-center justify-center bg-base px-6`,children:(0,_.jsxs)(`div`,{className:c(`relative rounded-xl border border-[var(--oh-border)] bg-base-secondary`,d(`md`),f),children:[(0,_.jsx)(`div`,{className:`px-6 pt-6 pb-2 pr-12`,children:(0,_.jsx)(`h2`,{className:`text-lg font-semibold`,children:e(i.BACKEND$ADD_TITLE)})}),(0,_.jsx)(`div`,{className:`px-6 pb-6 pt-2`,children:(0,_.jsx)(h,{mode:`add`,backend:{...t.backend,host:y,apiKey:``,name:``},onSubmitted:()=>{},testIdRoot:`api-key-entry`,hostReadOnly:!0,requireApiKey:!0,onSubmitOverride:E,renderActions:({canSubmit:t,testIdRoot:n})=>(0,_.jsxs)(_.Fragment,{children:[S!==`idle`&&(0,_.jsxs)(`div`,{className:`flex items-center gap-3 text-sm`,children:[(0,_.jsx)(m,{isConnected:S===`success`}),(0,_.jsx)(`span`,{"data-testid":`${n}-status`,className:S===`error`?`text-red-400`:`text-green-400`,children:S===`error`?w:e(i.ONBOARDING$BACKEND_STATUS_CONNECTED)})]}),(0,_.jsx)(p,{type:`submit`,variant:`secondary`,isDisabled:!t||b,testId:`${n}-submit`,className:`w-full text-center`,children:e(b?i.ONBOARDING$BACKEND_STATUS_CHECKING:i.BACKEND$CONNECT)})]})})})]})})}export{v as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-BFRubm34.js";import{Ct as t,bt as n}from"./vendor-styling-CI0PQ3ab.js";import{L as r}from"./vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~byh8a1g4-XNPdpuO8.js";import{t as i}from"./useTranslation-Cgy4JA_g.js";import{t as a}from"./declaration-B9kpCaYl.js";import{A as o,N as s,R as c,j as l}from"./active-backend-context-u2tdYRgH.js";import{n as u}from"./vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~nn5zty47-Zl0G1QCy.js";import{t as d}from"./brand-button-DKPMEKcW.js";import{i as f,n as p,r as m,t as h}from"./color-themes-DPBzNtVg.js";import{t as g}from"./settings-input-DYs7t3oK.js";import{t as _}from"./settings-mQUckT0g.js";import{r as v}from"./use-settings-dX4fKUPF.js";import{t as y}from"./handle-capture-consent-CPMXU29K.js";import{t as b}from"./use-save-settings-CChDyjOB.js";import{t as x}from"./settings-dropdown-input-xzoZwgUe.js";import{n as S,t as C}from"./switch-skeleton-DqQwalyu.js";import{t as w}from"./settings-switch-C2N2xqEb.js";var T=e(t(),1),E=n();function D({defaultKey:e,onChange:t,name:n}){let{t:r}=i(`openhands`);return(0,E.jsx)(x,{testId:n,name:n,onInputChange:t,label:r(a.SETTINGS$LANGUAGE),items:c.map(e=>({key:e.value,label:e.label})),defaultSelectedKey:e,isClearable:!1,wrapperClassName:`w-full min-w-0`})}function O(){let{t:e}=i(`openhands`),t=T.useCallback(e=>{if(!e)return;let t=e;p(t),m(t)},[]);return(0,E.jsx)(x,{testId:`color-theme-input`,name:`color-theme-input`,label:e(a.SETTINGS$COLOR_THEME),items:h.map(e=>({key:e.key,label:e.label})),defaultSelectedKey:f(),onSelectionChange:t,isClearable:!1,wrapperClassName:`w-full min-w-0`})}function k(){return(0,E.jsxs)(`div`,{"data-testid":`app-settings-skeleton`,className:`px-11 py-9 flex flex-col gap-6`,children:[(0,E.jsx)(S,{}),(0,E.jsx)(C,{}),(0,E.jsx)(C,{})]})}function A(){let e=u(),{t}=i(`openhands`),{mutate:n,isPending:r}=b(),{data:f,isLoading:p}=v(),[m,h]=T.useState(!1),[x,S]=T.useState(!1),[C,A]=T.useState(!1),[j,M]=T.useState(!1),[N,P]=T.useState(!1),F=r=>{let i=r.get(`language-input`)?.toString(),u=c.find(({label:e})=>e===i)?.value||_.language,d=r.get(`enable-analytics-switch`)?.toString()===`on`;n({language:u,user_consents_to_analytics:d,enable_sound_notifications:r.get(`enable-sound-notifications-switch`)?.toString()===`on`,git_user_name:r.get(`git-user-name-input`)?.toString()||_.git_user_name,git_user_email:r.get(`git-user-email-input`)?.toString()||_.git_user_email},{onSuccess:()=>{y(e,d),l(t(a.SETTINGS$SAVED))},onError:e=>{o(s(e)||t(a.ERROR$GENERIC))},onSettled:()=>{h(!1),S(!1),A(!1),M(!1),P(!1)}})},I=e=>{let t=c.find(({label:t})=>t===e)?.label,n=c.find(({value:e})=>e===f?.language)?.label;h(t!==n)},L=e=>{S(e!==(f?.user_consents_to_analytics??!0))},R=e=>{A(e!==!!f?.enable_sound_notifications)},z=e=>{let t=f?.git_user_name;M(e!==t)},B=e=>{let t=f?.git_user_email;P(e!==t)},V=!m&&!x&&!C&&!j&&!N,H=!f||p||r;return(0,E.jsxs)(`form`,{"data-testid":`app-settings-screen`,action:F,className:`flex flex-col gap-6`,children:[H&&(0,E.jsx)(k,{}),!H&&(0,E.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,E.jsx)(D,{name:`language-input`,defaultKey:f.language,onChange:I}),(0,E.jsx)(O,{}),(0,E.jsx)(w,{testId:`enable-analytics-switch`,name:`enable-analytics-switch`,defaultIsToggled:f.user_consents_to_analytics??!0,onToggle:L,children:t(a.ANALYTICS$SEND_ANONYMOUS_DATA)}),(0,E.jsx)(w,{testId:`enable-sound-notifications-switch`,name:`enable-sound-notifications-switch`,defaultIsToggled:!!f.enable_sound_notifications,onToggle:R,children:t(a.SETTINGS$SOUND_NOTIFICATIONS)}),(0,E.jsxs)(`div`,{className:`border-t border-[var(--oh-border)] pt-6 mt-2`,children:[(0,E.jsx)(`h3`,{className:`text-lg font-medium mb-2`,children:t(a.SETTINGS$GIT_SETTINGS)}),(0,E.jsx)(`p`,{className:`mb-4 text-sm leading-5 text-tertiary-light`,children:t(a.SETTINGS$GIT_SETTINGS_DESCRIPTION)}),(0,E.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,E.jsx)(g,{testId:`git-user-name-input`,name:`git-user-name-input`,type:`text`,label:t(a.SETTINGS$GIT_USERNAME),defaultValue:f.git_user_name||``,onChange:z,placeholder:t(a.SETTINGS$GIT_USERNAME_PLACEHOLDER),className:`w-full min-w-0`}),(0,E.jsx)(g,{testId:`git-user-email-input`,name:`git-user-email-input`,type:`email`,label:t(a.SETTINGS$GIT_EMAIL),defaultValue:f.git_user_email||``,onChange:B,placeholder:t(a.SETTINGS$GIT_EMAIL_PLACEHOLDER),className:`w-full min-w-0`})]}),(0,E.jsx)(`div`,{className:`flex justify-start pt-4`,children:(0,E.jsxs)(d,{testId:`submit-button`,variant:`primary`,type:`submit`,isDisabled:r||V,children:[!r&&t(a.SETTINGS$SAVE_CHANGES),r&&t(a.SETTINGS$SAVING)]})})]})]})]})}var j=r(A);export{j as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-BFRubm34.js";import{Ct as t,bt as n}from"./vendor-styling-CI0PQ3ab.js";import{L as r,P as i}from"./vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~byh8a1g4-XNPdpuO8.js";import{t as a}from"./useQuery-CpjHYtZc.js";import{t as o}from"./useTranslation-Cgy4JA_g.js";import{t as s}from"./declaration-B9kpCaYl.js";import{b as c,p as l,y as u}from"./vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~ncdxw0bh-ClHnt5lR.js";import{A as d,j as f,n as p}from"./active-backend-context-u2tdYRgH.js";import{t as m}from"./back-nav-button-BYmxFxGt.js";import{t as h}from"./utils-CE0lDWtb.js";import{a as g,c as _,n as v}from"./agent-server-client-options-DVLRd9sw.js";import{t as y}from"./proxy-CHmFkV16.js";import{r as b}from"./modal-classes-DPqxSyuP.js";import{t as x}from"./brand-button-DKPMEKcW.js";import{n as S}from"./navigation-context-DPs2G0X8.js";import{t as C}from"./use-tracking-GtXCHmTv.js";import{t as w}from"./use-create-conversation-D9OWYcte.js";import{t as T}from"./u-edit-DJ90xc8Z.js";import{t as E}from"./terminal-BuLtIrb9.js";import{t as D}from"./use-user-conversation-6uOXFP95.js";import{t as O}from"./toggle-switch-DBlOOzBr.js";import{t as k}from"./x-mark-Batp6gXa.js";import{t as A}from"./code-tag-DYlAhEQY.js";import{t as j}from"./link-external-DfKQroKX.js";import{C as M,S as ee,_ as N,a as P,b as F,c as I,d as L,f as te,i as ne,l as re,m as ie,n as ae,o as oe,p as se,r as ce,s as le,t as ue,u as de,w as fe,x as pe,y as me}from"./edit-automation-modal-B6U96gVV.js";import{t as R}from"./automation-BU8zu-FP.js";var z=e(t()),B=n();function V(){let{t:e}=o(`openhands`);return(0,B.jsx)(m,{to:`/automations`,children:e(s.AUTOMATIONS$DETAIL$BACK_TO_LIST)})}var he=e=>(0,B.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,...e,children:(0,B.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3`})});function ge({active:e}){let{t}=o(`openhands`);return(0,B.jsx)(`span`,{"data-testid":e?`active-status-badge-active`:`active-status-badge-inactive`,className:h(`inline-flex items-center rounded-full px-3 py-1 text-xs font-medium`,e?`bg-[var(--oh-success)]/15 text-[var(--oh-success)]`:`bg-surface-raised text-muted`),children:t(e?s.AUTOMATIONS$DETAIL$ACTIVE:s.AUTOMATIONS$DETAIL$INACTIVE)})}function _e({automation:e,onToggle:t,onEdit:n,onDelete:r,onRunNow:i,isRunningNow:a=!1}){let{t:c}=o(`openhands`),l=se(`manage_automations`),u=[...n?[{label:c(s.AUTOMATIONS$EDIT),icon:(0,B.jsx)(T,{className:`size-4`}),onClick:n}]:[],{label:e.enabled?c(s.AUTOMATIONS$TURN_OFF):c(s.AUTOMATIONS$TURN_ON),icon:(0,B.jsx)(le,{className:`size-4`}),onClick:t},{label:c(s.AUTOMATIONS$DOWNLOAD_TARBALL),icon:(0,B.jsx)(he,{className:`size-4`}),onClick:()=>{fe.downloadTarball(e.id,e.name)}},{label:c(s.AUTOMATIONS$DELETE),icon:(0,B.jsx)(oe,{className:`size-4`}),onClick:r}];return(0,B.jsx)(`div`,{className:`flex flex-col gap-4`,children:(0,B.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(`h1`,{className:`text-xl font-medium text-content`,children:e.name}),(0,B.jsx)(ge,{active:e.enabled})]}),(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[l&&i&&(0,B.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 rounded-md border border-[var(--oh-border)] px-3 py-1.5 text-sm font-medium text-content transition-colors hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60`,disabled:a||!e.enabled,onClick:i,children:[(0,B.jsx)(te,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),c(a?s.AUTOMATIONS$STARTING:s.AUTOMATIONS$RUN_NOW)]}),l&&(0,B.jsx)(O,{enabled:e.enabled,label:e.enabled?c(s.AUTOMATIONS$TURN_OFF):c(s.AUTOMATIONS$TURN_ON),onToggle:t}),l&&(0,B.jsx)(ie,{items:u})]})]})})}function H({icon:e,title:t,children:n}){return(0,B.jsxs)(`div`,{className:`rounded-2xl border border-[var(--oh-border)] bg-[var(--oh-surface)]`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-[var(--oh-border)] px-5 py-3`,children:[(0,B.jsx)(`span`,{className:`size-4 text-muted`,children:e}),(0,B.jsx)(`h3`,{className:`text-sm font-medium text-content`,children:t})]}),(0,B.jsx)(`div`,{className:`px-5 py-5`,children:n})]})}var ve=240,ye=`max-h-60`;function be({prompt:e}){let{t}=o(`openhands`),[n,r]=z.useState(!1),[i,a]=z.useState(!1),c=z.useRef(null),l=i&&!n;return z.useLayoutEffect(()=>{let e=c.current;if(!e)return;let t=()=>{a(e.scrollHeight>ve)};t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[e]),(0,B.jsx)(H,{icon:(0,B.jsx)(E,{className:`size-4`}),title:t(s.AUTOMATIONS$DETAIL$PROMPT),children:(0,B.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,B.jsxs)(`div`,{className:`relative`,children:[(0,B.jsx)(`p`,{ref:c,className:h(`whitespace-pre-wrap text-sm leading-6 text-content`,l&&h(ye,`overflow-hidden`)),"data-testid":`automation-prompt-content`,children:e}),l?(0,B.jsx)(`div`,{className:`pointer-events-none absolute inset-x-0 bottom-0 h-20 bg-gradient-to-t from-[var(--oh-surface)] to-transparent`,"aria-hidden":!0,"data-testid":`automation-prompt-fade`}):null]}),i?(0,B.jsx)(`button`,{type:`button`,className:`self-start cursor-pointer text-sm font-normal text-[var(--oh-muted)] hover:text-white`,onClick:()=>r(e=>!e),"data-testid":`automation-prompt-toggle`,children:t(n?s.COMMON$VIEW_LESS:s.COMMON$VIEW_MORE)}):null]})})}var xe=e=>(0,B.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:[(0,B.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 0 1 1.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.56.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.893.149c-.425.07-.765.383-.93.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 0 1-1.449.12l-.738-.527c-.35-.25-.806-.272-1.204-.107-.397.165-.71.505-.78.929l-.15.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 0 1-.12-1.45l.527-.737c.25-.35.273-.806.108-1.204-.165-.397-.506-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.108-1.204l-.526-.738a1.125 1.125 0 0 1 .12-1.45l.773-.773a1.125 1.125 0 0 1 1.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894Z`}),(0,B.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z`})]}),Se=e=>(0,B.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:[(0,B.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M6 3v12m0 0a3 3 0 1 0 3 3M6 15a3 3 0 0 1 3-3h6a3 3 0 0 0 3-3V3m0 0a3 3 0 1 0 0 0`}),(0,B.jsx)(`circle`,{cx:6,cy:3,r:2}),(0,B.jsx)(`circle`,{cx:18,cy:3,r:2}),(0,B.jsx)(`circle`,{cx:9,cy:18,r:2})]}),U=e=>(0,B.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,B.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z`})}),W=e=>(0,B.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,B.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5`})}),Ce=e=>(0,B.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,B.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0`})});function G({icon:e,label:t,children:n}){return(0,B.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(`span`,{className:`size-3.5 text-muted`,children:e}),(0,B.jsx)(`span`,{className:`text-xs font-medium text-muted`,children:t})]}),(0,B.jsx)(`div`,{className:`text-sm text-content`,children:n})]})}function we({branch:e}){return(0,B.jsx)(`span`,{className:`inline-flex items-center rounded-full border border-[var(--oh-border)] bg-surface-raised px-2.5 py-0.5 text-xs text-muted`,children:e})}var K=60;function Te({filter:e}){let{t}=o(`openhands`),[n,r]=(0,z.useState)(!1),i=e.length>K;return(0,B.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,B.jsx)(`span`,{className:`break-all`,children:i&&!n?`${e.slice(0,K)}…`:e}),i&&(0,B.jsx)(`button`,{type:`button`,onClick:()=>r(!n),"aria-expanded":n,className:`text-xs text-muted hover:text-content self-start`,children:t(n?s.SETTINGS$SKILLS_SHOW_LESS:s.SETTINGS$SKILLS_SHOW_MORE)})]})}function Ee({automation:e}){let{t}=o(`openhands`),n=e.trigger.type===`event`,r=e.trigger.schedule??``;e.trigger.schedule_human&&(r=e.timezone?`${e.trigger.schedule_human} (${e.timezone})`:e.trigger.schedule_human);let i=t(n?s.AUTOMATIONS$DETAIL$TRIGGER_EVENT:s.AUTOMATIONS$DETAIL$TRIGGER_SCHEDULE);return(0,B.jsx)(H,{icon:(0,B.jsx)(xe,{className:`size-4`}),title:t(s.AUTOMATIONS$DETAIL$CONFIGURATION),children:(0,B.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-4 gap-y-5`,children:[e.repository&&(0,B.jsx)(G,{icon:(0,B.jsx)(Se,{className:`size-3.5`}),label:t(s.AUTOMATIONS$DETAIL$REPOSITORIES),children:(0,B.jsxs)(`span`,{className:`flex items-center gap-1`,children:[e.repository,e.branch&&(0,B.jsx)(we,{branch:e.branch})]})}),(0,B.jsx)(G,{icon:(0,B.jsx)(U,{className:`size-3.5`}),label:t(s.AUTOMATIONS$DETAIL$TRIGGER),children:i}),!n&&(0,B.jsx)(G,{icon:(0,B.jsx)(W,{className:`size-3.5`}),label:t(s.AUTOMATIONS$DETAIL$SCHEDULE),children:r}),n&&e.trigger.source&&(0,B.jsx)(G,{icon:(0,B.jsx)(de,{className:`size-3.5`}),label:t(s.AUTOMATIONS$DETAIL$EVENT_SOURCE),children:e.trigger.source}),n&&e.trigger.on&&(0,B.jsx)(G,{icon:(0,B.jsx)(j,{className:`size-3.5`}),label:t(s.AUTOMATIONS$DETAIL$EVENT_TYPE),children:I(e.trigger.on)}),n&&e.trigger.filter&&(0,B.jsx)(G,{icon:(0,B.jsx)(A,{className:`size-3.5`}),label:t(s.AUTOMATIONS$DETAIL$EVENT_FILTER),children:(0,B.jsx)(Te,{filter:e.trigger.filter})}),(0,B.jsx)(G,{icon:(0,B.jsx)(re,{className:`size-3.5`}),label:t(s.AUTOMATIONS$DETAIL$MODEL),children:e.model??t(s.COMMON$ACTIVE_PROFILE)}),e.notification&&(0,B.jsx)(G,{icon:(0,B.jsx)(Ce,{className:`size-3.5`}),label:t(s.AUTOMATIONS$DETAIL$NOTIFICATION),children:e.notification})]})})}var De=e=>(0,B.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,B.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M14.25 6.087c0-.355.186-.676.401-.959.221-.29.349-.634.349-1.003 0-1.036-1.007-1.875-2.25-1.875s-2.25.84-2.25 1.875c0 .369.128.713.349 1.003.215.283.401.604.401.959v0a.64.64 0 0 1-.657.643 48.39 48.39 0 0 1-4.163-.3c.186 1.613.293 3.25.315 4.907a.656.656 0 0 1-.658.663v0c-.355 0-.676-.186-.959-.401a1.647 1.647 0 0 0-1.003-.349c-1.036 0-1.875 1.007-1.875 2.25s.84 2.25 1.875 2.25c.369 0 .713-.128 1.003-.349.283-.215.604-.401.959-.401v0c.31 0 .555.26.532.57a48.039 48.039 0 0 1-.642 5.056c1.518.19 3.058.309 4.616.354a.64.64 0 0 0 .657-.643v0c0-.355-.186-.676-.401-.959a1.647 1.647 0 0 1-.349-1.003c0-1.035 1.008-1.875 2.25-1.875 1.243 0 2.25.84 2.25 1.875 0 .369-.128.713-.349 1.003-.215.283-.4.604-.4.959v0c0 .333.277.599.61.58a48.1 48.1 0 0 0 5.427-.63 48.05 48.05 0 0 0 .582-4.717.532.532 0 0 0-.533-.57v0c-.355 0-.676.186-.959.401-.29.221-.634.349-1.003.349-1.035 0-1.875-1.007-1.875-2.25s.84-2.25 1.875-2.25c.37 0 .713.128 1.003.349.283.215.604.401.96.401v0a.656.656 0 0 0 .658-.663 48.422 48.422 0 0 0-.37-5.36c-1.886.342-3.81.574-5.766.689a.578.578 0 0 1-.61-.58v0Z`})});function Oe({name:e}){return(0,B.jsx)(`span`,{className:`inline-flex items-center rounded-full border border-[var(--oh-border)] bg-[var(--oh-surface-deep)] px-3.5 py-1.5 text-sm text-content`,children:e})}function ke({plugins:e}){let{t}=o(`openhands`);return(0,B.jsx)(H,{icon:(0,B.jsx)(De,{className:`size-4`}),title:t(s.AUTOMATIONS$DETAIL$PLUGINS),children:(0,B.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.map(e=>(0,B.jsx)(Oe,{name:e},e))})})}var q=e=>(0,B.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,B.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182`})});function J(e,t){return new Date(e).toLocaleDateString(t,{year:`numeric`,month:`short`,day:`numeric`})}function Ae(e,t,n){let r=Date.now()-new Date(e).getTime(),i=Math.floor(r/6e4),a=Math.floor(r/36e5),o=Math.floor(r/864e5);return i<1?n(s.AUTOMATIONS$DETAIL$TIME_JUST_NOW):i<60?n(s.AUTOMATIONS$DETAIL$TIME_MINUTES_AGO,{count:i}):a<24?n(s.AUTOMATIONS$DETAIL$TIME_HOURS_AGO,{count:a}):o===1?n(s.AUTOMATIONS$DETAIL$TIME_YESTERDAY):o<7?n(s.AUTOMATIONS$DETAIL$TIME_DAYS_AGO,{count:o}):J(e,t)}function je({createdAt:e,lastRunAt:t}){let{t:n,i18n:r}=o(`openhands`),i=r.language;return(0,B.jsx)(H,{icon:(0,B.jsx)(q,{className:`size-4`}),title:n(s.AUTOMATIONS$DETAIL$ACTIVITY),children:(0,B.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-4`,children:[(0,B.jsx)(G,{icon:(0,B.jsx)(W,{className:`size-3.5`}),label:n(s.AUTOMATIONS$DETAIL$CREATED),children:J(e,i)}),(0,B.jsx)(G,{icon:(0,B.jsx)(L,{className:`size-3.5`}),label:n(s.AUTOMATIONS$DETAIL$LAST_RUN),children:t?Ae(t,i,n):n(s.AUTOMATIONS$DETAIL$TIME_NEVER)})]})})}var Me=e=>(0,B.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,B.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`m9.75 9.75 4.5 4.5m0-4.5-4.5 4.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z`})}),Ne={[R.COMPLETED]:{label:s.AUTOMATIONS$DETAIL$SUCCESSFUL,style:`border-[var(--oh-success)]/50 bg-[var(--oh-success)]/10 text-[var(--oh-success)]`},[R.FAILED]:{label:s.AUTOMATIONS$DETAIL$FAILED,style:`border-[var(--oh-danger)]/50 bg-[var(--oh-danger)]/10 text-danger`},[R.PENDING]:{label:s.AUTOMATIONS$DETAIL$PENDING,style:`border-[var(--oh-border)] bg-surface-raised text-muted`},[R.RUNNING]:{label:s.AUTOMATIONS$DETAIL$RUNNING,style:`border-[var(--oh-border)] bg-surface-raised text-muted`}};function Pe({status:e}){switch(e){case R.COMPLETED:return(0,B.jsx)(U,{"data-testid":`run-status-icon-completed`,className:`size-3.5`});case R.FAILED:return(0,B.jsx)(Me,{"data-testid":`run-status-icon-failed`,className:`size-3.5`});default:return(0,B.jsx)(L,{"data-testid":`run-status-icon-pending`,className:`size-3.5`})}}function Fe({status:e}){let{t}=o(`openhands`),n=Ne[e];return(0,B.jsxs)(`span`,{className:h(`inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs font-medium`,n.style),children:[(0,B.jsx)(Pe,{status:e}),t(n.label)]})}var Ie=20;function Le(e){return e.kind===`BashOutput`}var Re=class e{static async listOutputs(t,n,r){let i=[],a;for(let o=0;o<Ie;o+=1){let o=await e.searchEvents(t,n,{kind__eq:`BashOutput`,command_id__eq:r,sort_order:`TIMESTAMP`,...a?{page_id:a}:{}});if(o.items.forEach(e=>{Le(e)&&i.push(e)}),!o.next_page_id)break;a=o.next_page_id}return i}static async searchEvents(e,t,n){let r=_().backend;if(r.kind===`cloud`){if(!e)throw Error(`BashService.listOutputs requires a conversation URL on cloud backends`);let i=new URLSearchParams;return Object.entries(n).forEach(([e,t])=>{t!=null&&i.set(e,String(t))}),y({backend:r,method:`GET`,hostOverride:g(e),path:`/api/bash/bash_events/search?${i.toString()}`,authMode:`session-api-key`,sessionApiKey:t})}return new l(v({...e?{conversationUrl:e}:{},sessionApiKey:t})).searchEvents(n)}},ze=[`bash-command-logs`];function Be(e){switch(e){case`MISSING`:return`missing`;case`PAUSED`:return`paused`;case`STARTING`:return`starting`;case`ERROR`:return`errored`;case`RUNNING`:case null:case void 0:default:return null}}function Ve(e){if(!c.isAxiosError(e))return null;if(!e.response)return`unreachable`;let t=e.response.status;return t===404||t>=500?`unreachable`:null}function He(e){let{conversationId:t,bashCommandId:n,enabled:r=!0}=e,i=p(),o=D(r?t??null:null),s=o.data,c=s?.conversation_url??null,l=s?.session_api_key??null,u=i.backend.kind===`cloud`,d=o.isFetched,f=null,m=!1;u&&d&&(s?f=Be(s.sandbox_status)??(s.conversation_url?null:`missing`):m=!0);let h=r&&!!n&&(u?!!c:!0)&&!f&&!m,g=a({queryKey:[...ze,n,c,l,i.backend.id,i.orgId],queryFn:()=>Re.listOutputs(c,l,n),enabled:h,staleTime:60*1e3,gcTime:300*1e3,retry:!1}),_=u?Ve(g.error):null,v=f??_;return{data:g.data,error:_?null:g.error,isFetching:g.isFetching,isPending:g.isPending,isResolvingConversation:u&&o.isPending,conversationMissing:m,sandboxIssue:v}}var Ue=4e3;function We(e,t){return e.length<=t?e:`…(truncated)…\n${e.slice(e.length-t)}`}function Ge({automationName:e,automationPrompt:t,errorDetail:n,stderr:r,runId:i}){let a=r?.trim()||n?.trim()||``,o=a?We(a,Ue):`No error output was captured for this run.`,s=e?.trim(),c=[`${s?`The scheduled automation "${s}" failed during a run.`:`A scheduled automation failed during a run.`} Please investigate the error and fix the root cause.`],l=t?.trim();return l&&c.push(``,`What the automation was set up to do:`,l),c.push(``,`Error output from the failed run (run ${i}):`,o,``,`Please diagnose why it failed and propose or implement a fix.`),c.join(`
|
|
2
|
+
`)}function Y({run:e,automation:t,stderr:n}){let{t:r}=o(`openhands`),{navigate:i}=S(),a=w();return(0,B.jsx)(x,{testId:`debug-automation-button`,type:`button`,variant:`primary`,onClick:()=>{if(a.isPending)return;let r=Ge({automationName:t?.name,automationPrompt:t?.prompt,errorDetail:e.error_detail,stderr:n,runId:e.id});a.mutate({query:r},{onSuccess:e=>{i(`/conversations/${e.conversation_id}`)}})},isDisabled:a.isPending,"aria-busy":a.isPending,children:r(s.AUTOMATIONS$DETAIL$DEBUG_WITH_OPENHANDS)})}var Ke={missing:s.AUTOMATIONS$DETAIL$LOGS_SANDBOX_MISSING,paused:s.AUTOMATIONS$DETAIL$LOGS_SANDBOX_PAUSED,starting:s.AUTOMATIONS$DETAIL$LOGS_SANDBOX_STARTING,errored:s.AUTOMATIONS$DETAIL$LOGS_SANDBOX_ERROR,unreachable:s.AUTOMATIONS$DETAIL$LOGS_SANDBOX_UNREACHABLE};function X(e,t){return[...e].sort((e,t)=>{let n=e.timestamp.localeCompare(t.timestamp);return n===0?(e.order??0)-(t.order??0):n}).map(e=>e[t]??``).join(``)}function qe({conversationId:e,bashCommandId:t,isOpen:n,onClose:r,run:i,automation:a}){let{t:c}=o(`openhands`),[l,u]=(0,z.useState)(`stdout`),{data:d,isFetching:f,isResolvingConversation:p,sandboxIssue:m,conversationMissing:g,error:_}=He({conversationId:e,bashCommandId:t,enabled:n});(0,z.useEffect)(()=>{n&&u(`stdout`)},[n,t]),(0,z.useEffect)(()=>{if(!n)return;let e=e=>{e.key===`Escape`&&r()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n,r]);let{stdout:v,stderr:y}=(0,z.useMemo)(()=>d?{stdout:X(d,`stdout`),stderr:X(d,`stderr`)}:{stdout:``,stderr:``},[d]);if(!n)return null;let x=p||f&&!d,S=!t,C=l===`stdout`?v:y,w=`border-b-2 px-3 py-2 text-sm font-normal transition-colors focus:outline-none`,T=`border-[var(--oh-primary)] text-white`,E=`border-transparent text-muted hover:text-content`;return(0,B.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4`,role:`dialog`,"aria-modal":`true`,"aria-label":c(s.AUTOMATIONS$DETAIL$LOGS_TITLE),children:[(0,B.jsx)(`div`,{className:`absolute inset-0 bg-black/60`,onClick:r,onKeyDown:e=>{e.key===`Escape`&&r()},role:`presentation`}),(0,B.jsxs)(`div`,{className:`relative flex max-h-[80vh] w-full max-w-3xl flex-col rounded-xl border border-[var(--oh-border)] bg-[var(--oh-surface)] p-6`,children:[(0,B.jsx)(`button`,{type:`button`,onClick:r,className:`absolute right-4 top-4 text-muted hover:text-foreground`,"aria-label":c(s.AUTOMATIONS$CANCEL),children:(0,B.jsx)(k,{className:`size-5`})}),(0,B.jsx)(`h2`,{className:h(`pr-8`,b),children:c(s.AUTOMATIONS$DETAIL$LOGS_TITLE)}),(0,B.jsxs)(`div`,{role:`tablist`,"aria-label":c(s.AUTOMATIONS$DETAIL$LOGS_TITLE),className:`mt-4 flex gap-1 border-b border-[var(--oh-border)]`,children:[(0,B.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":l===`stdout`,"aria-controls":`run-logs-panel-stdout`,id:`run-logs-tab-stdout`,tabIndex:l===`stdout`?0:-1,onClick:()=>u(`stdout`),className:`${w} ${l===`stdout`?T:E}`,children:c(s.AUTOMATIONS$DETAIL$LOGS_TAB_OUTPUT)}),(0,B.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":l===`stderr`,"aria-controls":`run-logs-panel-stderr`,id:`run-logs-tab-stderr`,tabIndex:l===`stderr`?0:-1,onClick:()=>u(`stderr`),className:`${w} ${l===`stderr`?T:E}`,children:c(s.AUTOMATIONS$DETAIL$LOGS_TAB_ERROR)})]}),(0,B.jsxs)(`div`,{role:`tabpanel`,id:`run-logs-panel-${l}`,"aria-labelledby":`run-logs-tab-${l}`,className:`mt-3 min-h-[12rem] flex-1 overflow-auto rounded-lg border border-[var(--oh-border)] bg-black/40 p-4 font-mono text-xs`,children:[S&&(0,B.jsx)(`p`,{className:`text-muted italic`,children:c(s.AUTOMATIONS$DETAIL$LOGS_NO_COMMAND)}),!S&&g&&(0,B.jsx)(`p`,{className:`text-muted italic`,children:c(s.AUTOMATIONS$DETAIL$LOGS_CONVERSATION_MISSING)}),!S&&!g&&m&&(0,B.jsx)(`p`,{"data-testid":`run-logs-sandbox-issue-${m}`,className:`text-muted italic`,children:c(Ke[m])}),!S&&!g&&!m&&x&&(0,B.jsx)(`p`,{className:`text-muted italic`,children:c(s.AUTOMATIONS$DETAIL$LOGS_LOADING)}),!S&&!g&&!m&&!x&&_&&!d&&(0,B.jsxs)(`p`,{className:`text-danger`,children:[c(s.AUTOMATIONS$DETAIL$LOGS_ERROR),`: `,String(_)]}),!x&&!m&&d&&(0,B.jsx)(`pre`,{"data-testid":`run-logs-output-${l}`,className:`whitespace-pre-wrap break-words ${l===`stderr`?`text-danger`:`text-content`}`,children:C.length>0?C:(0,B.jsx)(`span`,{className:`text-muted italic`,children:c(s.AUTOMATIONS$DETAIL$LOGS_EMPTY)})})]}),i?.status===R.FAILED&&(0,B.jsx)(`div`,{className:`mt-4 flex justify-end`,children:(0,B.jsx)(Y,{run:i,automation:a,stderr:y})})]})]})}function Je(e,t){return new Date(e).toLocaleDateString(t,{weekday:`long`,year:`numeric`,month:`long`,day:`numeric`,hour:`numeric`,minute:`2-digit`})}function Ye(e){if(!e)return!0;let t=new Date(e).getTime();return Number.isNaN(t)||t===0}function Xe(e){return`/conversations/${e}`}function Ze({run:e,automation:t}){let{t:n,i18n:r}=o(`openhands`),i=!!e.conversation_id,a=!!e.bash_command_id,c=e.status===R.COMPLETED||e.status===R.FAILED,l=!i&&c,[u,d]=(0,z.useState)(!1),[f]=(0,z.useState)(()=>new Date().toISOString()),p=Je(Ye(e.started_at)?f:e.started_at,r.language),m=a?(0,B.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),e.preventDefault(),d(!0)},className:`rounded-md p-1 text-muted hover:bg-surface-raised hover:text-foreground focus:bg-surface-raised focus:outline-none`,"aria-label":n(s.AUTOMATIONS$DETAIL$LOGS_VIEW,{timestamp:p}),title:n(s.AUTOMATIONS$DETAIL$LOGS_VIEW_SHORT),children:(0,B.jsx)(E,{className:`size-4`})}):null,h=(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(`span`,{className:`text-sm text-content`,children:p}),l&&(0,B.jsxs)(`span`,{className:`text-xs text-muted italic`,children:[`(`,n(s.AUTOMATIONS$DETAIL$NO_CONVERSATION),`)`]})]}),(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[m,(0,B.jsx)(Fe,{status:e.status})]})]});return(0,B.jsxs)(B.Fragment,{children:[i&&e.conversation_id?(0,B.jsx)(`a`,{href:Xe(e.conversation_id),className:`flex items-center justify-between px-5 py-3 transition-colors cursor-pointer hover:bg-surface-raised focus:bg-surface-raised focus:outline-none`,"aria-label":`View conversation for run at ${p}`,children:h}):(0,B.jsx)(`div`,{className:`flex items-center justify-between px-5 py-3 cursor-default`,children:h}),a&&(0,B.jsx)(qe,{conversationId:e.conversation_id,bashCommandId:e.bash_command_id,isOpen:u,onClose:()=>d(!1),run:e,automation:t})]})}var Z=20;function Qe({automation:e}){let{t}=o(`openhands`),[n,r]=(0,z.useState)(Z),{data:i,isLoading:a}=M({id:e.id,limit:n,offset:0}),c=i?i.total>i.runs.length:!1;return(0,B.jsxs)(`div`,{className:`rounded-2xl border border-[var(--oh-border)] bg-[var(--oh-surface)]`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-[var(--oh-border)] px-5 py-3`,children:[(0,B.jsx)(`span`,{className:`size-4 text-muted`,children:(0,B.jsx)(q,{className:`size-4`})}),(0,B.jsx)(`h3`,{className:`text-sm font-medium text-content`,children:t(s.AUTOMATIONS$DETAIL$ACTIVITY_LOG)})]}),a&&(0,B.jsx)(`div`,{className:`space-y-1 p-5`,children:Array.from({length:3}).map((e,t)=>(0,B.jsxs)(`div`,{className:`flex items-center justify-between py-3`,children:[(0,B.jsx)(`div`,{className:`h-5 w-64 animate-pulse rounded bg-surface-raised`}),(0,B.jsx)(`div`,{className:`h-6 w-24 animate-pulse rounded-full bg-surface-raised`})]},`skeleton-${t}`))}),!a&&i?.runs.length===0&&(0,B.jsx)(`p`,{className:`px-5 py-8 text-center text-sm text-muted`,children:t(s.AUTOMATIONS$DETAIL$NO_RUNS)}),!a&&i&&i.runs.length>0&&(0,B.jsxs)(`div`,{children:[i.runs.map((t,n)=>(0,B.jsx)(`div`,{className:n>0?`border-t border-[var(--oh-border)]`:``,children:(0,B.jsx)(Ze,{run:t,automation:e})},t.id)),c&&(0,B.jsx)(`div`,{className:`border-t border-[var(--oh-border)] px-5 py-3`,children:(0,B.jsx)(`button`,{type:`button`,onClick:()=>r(e=>e+Z),className:`text-sm text-muted hover:text-foreground`,children:t(s.AUTOMATIONS$DETAIL$LOAD_MORE_RUNS)})})]})]})}function Q({className:e}){return(0,B.jsx)(`div`,{className:h(`animate-pulse rounded bg-surface-raised`,e)})}function $(){return(0,B.jsxs)(`div`,{className:`flex flex-col gap-4`,"data-testid":`detail-skeleton`,children:[(0,B.jsx)(Q,{className:`h-5 w-40`}),(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(Q,{className:`h-6 w-48`}),(0,B.jsx)(Q,{className:`h-6 w-16 rounded-full`})]}),(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(Q,{className:`h-6 w-11 rounded-full`}),(0,B.jsx)(Q,{className:`h-8 w-8`})]})]}),(0,B.jsx)(Q,{className:`h-5 w-96`}),(0,B.jsx)(Q,{className:`h-36 w-full rounded-2xl`}),(0,B.jsx)(Q,{className:`h-72 w-full rounded-2xl`}),(0,B.jsx)(Q,{className:`h-32 w-full rounded-2xl`}),(0,B.jsx)(Q,{className:`h-40 w-full rounded-2xl`})]})}function $e(){let{t:e}=o(`openhands`);return(0,B.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-20`,children:[(0,B.jsx)(P,{className:`size-12 text-muted`}),(0,B.jsx)(`p`,{className:`mt-4 text-sm font-medium text-content`,children:e(s.AUTOMATIONS$DETAIL$NOT_FOUND_TITLE)}),(0,B.jsx)(`p`,{className:`mt-2 text-sm text-muted`,children:e(s.AUTOMATIONS$DETAIL$NOT_FOUND_MESSAGE)}),(0,B.jsx)(`div`,{className:`mt-6`,children:(0,B.jsx)(V,{})})]})}var et=r(function(){let{t:e}=o(`openhands`),{automationId:t}=i(),{navigate:n}=S(),[r,a]=(0,z.useState)(!1),[c,l]=(0,z.useState)(!1),{data:m,isLoading:h,refetch:g}=N(),_=m?.status===`ok`,v=p(),y=(0,z.useRef)(v.backend.id).current!==v.backend.id,{data:b,isLoading:x,isError:w,error:T,refetch:E}=ee({id:t??``,enabled:_&&!y}),{trackPrebuiltAutomationEnabled:D}=C(),O=pe(),k=me(),A=F(),j=w&&u(T)&&T.response?.status===404;if(h)return(0,B.jsx)(`div`,{className:`min-h-full`,children:(0,B.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,B.jsx)($,{})})});if(!_)return(0,B.jsx)(`div`,{className:`min-h-full`,children:(0,B.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,B.jsx)(ce,{onRetry:g})})});if(x)return(0,B.jsx)(`div`,{className:`min-h-full`,children:(0,B.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,B.jsx)($,{})})});if(j)return(0,B.jsx)(`div`,{className:`min-h-full`,children:(0,B.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,B.jsx)($e,{})})});if(w||!b)return(0,B.jsx)(`div`,{className:`min-h-full`,children:(0,B.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,B.jsx)(ne,{onRetry:()=>E()})})});let M=()=>{let e=!b.enabled;O.mutate({id:b.id,enabled:e}),e&&D({automationId:b.id,automationName:b.name})},P=()=>{k.mutate(b.id,{onSuccess:()=>{n?.(`/automations`)}})},I=()=>{A.mutate(b.id,{onSuccess:()=>{f(e(s.AUTOMATIONS$RUN_NOW_SUCCESS))},onError:t=>{d(u(t)?t.response?.data?.message||t.message||e(s.AUTOMATIONS$RUN_NOW_ERROR):t.message||e(s.AUTOMATIONS$RUN_NOW_ERROR))}})},L=v.backend.kind===`local`;return(0,B.jsx)(`div`,{className:`min-h-full`,children:(0,B.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,B.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,B.jsx)(V,{}),(0,B.jsx)(_e,{automation:b,onToggle:M,onEdit:L?()=>l(!0):void 0,onDelete:()=>a(!0),onRunNow:I,isRunningNow:A.isPending}),b.prompt&&(0,B.jsx)(be,{prompt:b.prompt}),(0,B.jsx)(Ee,{automation:b}),b.plugins&&b.plugins.length>0&&(0,B.jsx)(ke,{plugins:b.plugins}),(0,B.jsx)(je,{createdAt:b.created_at,lastRunAt:b.last_triggered_at}),(0,B.jsx)(Qe,{automation:b}),(0,B.jsx)(ae,{automationName:b.name,isOpen:r,onConfirm:P,onCancel:()=>a(!1)}),L&&(0,B.jsx)(ue,{automation:b,isOpen:c,onClose:()=>l(!1)})]})})})});export{et as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-BFRubm34.js";import{Ct as t,bt as n,xt as r}from"./vendor-styling-CI0PQ3ab.js";import{L as i}from"./vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~byh8a1g4-XNPdpuO8.js";import{t as a}from"./Trans-De9RwQhA.js";import{t as o}from"./useTranslation-Cgy4JA_g.js";import{t as s}from"./declaration-B9kpCaYl.js";import{y as c}from"./vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~ncdxw0bh-ClHnt5lR.js";import{A as l,j as u,n as d}from"./active-backend-context-u2tdYRgH.js";import{t as f}from"./createLucideIcon-CVAsW2Yo.js";import{t as p}from"./check-Bvi71siz.js";import{t as m}from"./utils-CE0lDWtb.js";import{t as h}from"./modal-backdrop-zVwfOJZr.js";import{n as g}from"./modal-classes-DPqxSyuP.js";import{t as _}from"./brand-button-DKPMEKcW.js";import{n as v}from"./navigation-context-DPs2G0X8.js";import{t as y}from"./styled-tooltip-DsKsFjuq.js";import{u as b}from"./dropdown-classes-CgQ45JmQ.js";import{t as x}from"./modal-close-button-CTCX4nCH.js";import{t as S}from"./use-tracking-GtXCHmTv.js";import{n as C,t as ee}from"./recommended-automations-launcher-Bk8tQ-Cn.js";import{n as te,t as w}from"./context-menu-list-item-DBFzplWW.js";import{t as T}from"./u-edit-DJ90xc8Z.js";import{t as E}from"./folder-mMWFvaw0.js";import{t as D}from"./search-BsjCEFNf.js";import{a as O,i as k,n as A,o as j,r as M,t as N}from"./extension-module-card-classes-9V3J9J_b.js";import{n as P}from"./skill-card-pill-row-D2bUe2kB.js";import{n as F,t as I}from"./use-launch-skill-in-chat-BnoDgvAy.js";import{_ as ne,b as re,c as L,d as R,f as z,g as B,h as V,i as ie,l as H,m as U,n as ae,o as oe,p as W,r as se,s as ce,t as le,u as G,v as ue,x as de,y as fe}from"./edit-automation-modal-B6U96gVV.js";var pe=f(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),me=f(`grid-2x2`,[[`path`,{d:`M12 3v18`,key:`108xh3`}],[`path`,{d:`M3 12h18`,key:`1i2n21`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}]]),he=f(`rows-3`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M21 9H3`,key:`1338ky`}],[`path`,{d:`M21 15H3`,key:`9uk58r`}]]),K=e(t(),1),q=n();function ge({value:e,onChange:t,className:n}){let{t:r}=o(`openhands`);return(0,q.jsxs)(`div`,{className:m(`relative flex min-w-0 flex-1 items-center`,`h-9 rounded-lg border border-[var(--oh-border)] bg-base-secondary`,`focus-within:border-white/40 focus-within:ring-1 focus-within:ring-white/20`,`transition-colors`,n),children:[(0,q.jsx)(D,{className:`ml-3 size-4 shrink-0 text-tertiary-alt`,"aria-hidden":!0}),(0,q.jsx)(`input`,{type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:r(s.AUTOMATIONS$SEARCH_PLACEHOLDER),"aria-label":r(s.AUTOMATIONS$SEARCH_PLACEHOLDER),className:`min-w-0 flex-1 border-0 bg-transparent px-3 text-sm text-white outline-none placeholder:text-tertiary-alt`})]})}function J(e,t){let n=[];if(e.repository&&n.push({id:`repository`,node:(0,q.jsxs)(`span`,{className:m(k,`gap-1`),children:[(0,q.jsx)(E,{className:`size-3 shrink-0`}),e.repository]})}),e.trigger.type===`event`){let t=[e.trigger.on?L(e.trigger.on):``,e.trigger.source?`(${e.trigger.source})`:``].filter(Boolean).join(` `);n.push({id:`event-trigger`,node:(0,q.jsxs)(`span`,{className:m(k,`gap-1`),children:[(0,q.jsx)(G,{className:`size-3 shrink-0`}),t]})})}else n.push({id:`schedule`,node:(0,q.jsxs)(`span`,{className:m(k,`gap-1`),children:[(0,q.jsx)(R,{className:`size-3 shrink-0`}),t]})});return e.model&&n.push({id:`model`,node:(0,q.jsxs)(`span`,{className:m(k,`gap-1`),children:[(0,q.jsx)(H,{className:`size-3 shrink-0`}),e.model]})}),n}function Y({automation:e,t,canManage:n,onRunNow:r,isRunPending:i,onView:a,onEdit:o,onToggle:c,onDelete:l}){return[...n?[{label:t(s.AUTOMATIONS$RUN_NOW),icon:(0,q.jsx)(z,{className:`size-4`}),onClick:()=>r(e.id),disabled:i||!e.enabled}]:[],{label:t(s.COMMON$VIEW),icon:(0,q.jsx)(pe,{className:`size-4`,"aria-hidden":!0}),onClick:a},...n&&o?[{label:t(s.AUTOMATIONS$EDIT),icon:(0,q.jsx)(T,{className:`size-4`}),onClick:()=>o(e.id)}]:[],...n?[{label:e.enabled?t(s.AUTOMATIONS$TURN_OFF):t(s.AUTOMATIONS$TURN_ON),icon:(0,q.jsx)(ce,{className:`size-4`}),onClick:()=>c(e.id,e.enabled)},{label:t(s.AUTOMATIONS$DELETE),icon:(0,q.jsx)(oe,{className:`size-4`}),onClick:()=>l(e.id)}]:[]]}function _e({automation:e,onToggle:t,onRunNow:n,isRunPending:r=!1,onDelete:i,onEdit:a}){let{navigate:c}=v(),{t:l}=o(`openhands`),u=W(`manage_automations`),d=e.trigger.schedule_human||e.trigger.type,f=(0,K.useMemo)(()=>J(e,d),[e,d]),p=()=>{c?.(`/automations/${e.id}`)},h=Y({automation:e,t:l,canManage:u,onRunNow:n,isRunPending:r,onView:p,onEdit:a,onToggle:t,onDelete:i}),g=()=>{p()};return(0,q.jsxs)(`div`,{role:`link`,tabIndex:0,"data-testid":`automation-card-${e.id}`,onClick:g,onKeyDown:e=>{e.key===`Enter`&&g()},className:m(`flex min-w-0 flex-col gap-3 overflow-hidden p-4 text-left`,O,M),children:[(0,q.jsxs)(`header`,{className:`flex items-start justify-between gap-3`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1.5`,children:[(0,q.jsxs)(`h3`,{className:`flex items-center gap-2 truncate text-sm font-semibold text-white`,children:[e.trigger.type===`event`?(0,q.jsx)(G,{className:`size-4 shrink-0 text-muted`}):(0,q.jsx)(R,{className:`size-4 shrink-0 text-muted`}),(0,q.jsx)(`span`,{className:`truncate`,children:e.name})]}),e.prompt?(0,q.jsx)(`p`,{className:`line-clamp-2 text-xs leading-relaxed text-tertiary-light`,children:e.prompt}):null]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5`,children:[u?(0,q.jsxs)(`button`,{type:`button`,"data-testid":`automation-run-now-${e.id}`,"aria-busy":r,disabled:r||!e.enabled,onClick:t=>{t.stopPropagation(),n(e.id)},className:B,children:[(0,q.jsx)(z,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),l(s.AUTOMATIONS$RUN_NOW)]}):null,(0,q.jsx)(U,{items:h})]})]}),f.length>0?(0,q.jsx)(P,{pills:f,testId:`automation-pills-${e.id}`}):null]})}var ve=`overflow-hidden rounded-md border border-[var(--oh-border)] bg-base-secondary`,ye=[`h-11`,`border-t border-[var(--oh-border)] transition-colors`].join(` `),be=`hover:bg-interactive-hover-low outline-none focus:outline-none focus-visible:outline-none focus-visible:bg-interactive-hover-low`,X=`px-3 align-middle`,xe=[ye,be,`cursor-pointer`].join(` `),Se=`openhands-automations-view`;function Ce(){return typeof window>`u`?`grid`:window.localStorage.getItem(`openhands-automations-view`)===`list`?`list`:`grid`}function we(e){window.localStorage.setItem(Se,e)}function Te({automation:e,onToggle:t,onRunNow:n,isRunPending:r=!1,onDelete:i,onEdit:a}){let{navigate:c}=v(),{t:l}=o(`openhands`),u=W(`manage_automations`),d=e.trigger.schedule_human||e.trigger.type,f=(0,K.useMemo)(()=>J(e,d),[e,d]),p=()=>{c?.(`/automations/${e.id}`)},h=Y({automation:e,t:l,canManage:u,onRunNow:n,isRunPending:r,onView:p,onEdit:a,onToggle:t,onDelete:i}),g=()=>{p()};return(0,q.jsxs)(`tr`,{"data-testid":`automation-list-row-${e.id}`,onClick:g,onKeyDown:e=>{e.key===`Enter`&&g()},tabIndex:0,className:m(xe,`cursor-pointer`),children:[(0,q.jsx)(`td`,{className:X,children:(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[e.trigger.type===`event`?(0,q.jsx)(G,{className:`size-4 shrink-0 text-muted`}):(0,q.jsx)(R,{className:`size-4 shrink-0 text-muted`}),(0,q.jsx)(`span`,{className:`max-w-[40%] shrink-0 truncate text-sm font-medium text-white`,title:e.name,children:e.name}),f.length>0?(0,q.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,q.jsx)(P,{pills:f,testId:`automation-pills-${e.id}`})}):null]})}),(0,q.jsx)(`td`,{className:m(`w-0 whitespace-nowrap`,X),children:(0,q.jsxs)(`div`,{className:`flex items-center justify-end gap-0.5`,children:[u?(0,q.jsx)(y,{content:l(s.AUTOMATIONS$RUN_NOW),placement:`top`,children:(0,q.jsx)(`button`,{type:`button`,"data-testid":`automation-run-now-${e.id}`,"aria-label":l(s.AUTOMATIONS$RUN_NOW),"aria-busy":r,disabled:r||!e.enabled,onClick:t=>{t.stopPropagation(),n(e.id)},className:V,children:(0,q.jsx)(z,{className:`size-4 shrink-0`,"aria-hidden":!0})})}):null,(0,q.jsx)(U,{items:h})]})})]})}function Z({title:e,count:t,automations:n,view:r,onToggle:i,onRunNow:a,runPendingId:o=null,onDelete:s,onEdit:c}){return n.length===0?null:(0,q.jsxs)(`section`,{children:[(0,q.jsxs)(`div`,{className:`flex items-center`,children:[(0,q.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:e}),(0,q.jsx)(C,{count:t})]}),r===`grid`?(0,q.jsx)(`div`,{className:m(`mt-3`,A),children:(0,q.jsx)(`div`,{className:N,children:n.map(e=>(0,q.jsx)(_e,{automation:e,onToggle:i,onRunNow:a,isRunPending:o===e.id,onDelete:s,onEdit:c},e.id))})}):(0,q.jsx)(`div`,{className:m(ve,`mt-3`),children:(0,q.jsx)(`table`,{className:`w-full min-w-full [&>tbody>tr:first-child]:border-t-0`,children:(0,q.jsx)(`tbody`,{children:n.map(e=>(0,q.jsx)(Te,{automation:e,onToggle:i,onRunNow:a,isRunPending:o===e.id,onDelete:s,onEdit:c},e.id))})})})]})}var Ee=e(r(),1);function De({icon:e,label:t,isSelected:n}){return(0,q.jsxs)(`span`,{className:`flex min-w-0 w-full items-center gap-2`,children:[(0,q.jsx)(`span`,{className:b,"aria-hidden":!0,children:(0,q.jsx)(e,{})}),(0,q.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:t}),n?(0,q.jsx)(p,{className:`size-4 shrink-0`,"aria-hidden":!0}):null]})}var Q=[{value:`grid`,icon:me,labelKey:s.AUTOMATIONS$VIEW_GRID,testId:`automations-view-toggle-grid`},{value:`list`,icon:he,labelKey:s.AUTOMATIONS$VIEW_LIST,testId:`automations-view-toggle-list`}];function Oe({view:e,onChange:t,disabled:n=!1}){let{t:r}=o(`openhands`),[i,a]=(0,K.useState)(!1),[c,l]=(0,K.useState)(),u=(0,K.useRef)(null),d=(0,K.useRef)(null),f=(Q.find(t=>t.value===e)??Q[0]).icon;(0,K.useLayoutEffect)(()=>{if(!i||!u.current)return;let e=()=>{let e=u.current?.getBoundingClientRect();e&&l({position:`fixed`,zIndex:9999,top:e.bottom+4,right:window.innerWidth-e.right})};return e(),window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[i]),(0,K.useEffect)(()=>{if(!i)return;let e=e=>{let t=e.target;u.current?.contains(t)||d.current?.contains(t)||a(!1)},t=e=>{e.key===`Escape`&&a(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[i]);let p=i&&c?(0,q.jsx)(te,{ref:d,theme:`popover`,className:`min-w-[10rem]`,children:Q.map(n=>(0,q.jsx)(`li`,{children:(0,q.jsx)(w,{testId:n.testId,onClick:()=>{t(n.value),a(!1)},className:`group`,children:(0,q.jsx)(De,{icon:n.icon,label:r(n.labelKey),isSelected:e===n.value})})},n.value))}):null;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{ref:u,type:`button`,"data-testid":`automations-view-toggle`,"aria-label":r(s.AUTOMATIONS$VIEW_MODE),"aria-haspopup":`menu`,"aria-expanded":i,"aria-disabled":n,disabled:n,onClick:()=>{n||a(e=>!e)},className:m(`inline-flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-lg border border-[var(--oh-border)] bg-base-secondary text-white transition-colors hover:bg-[var(--oh-interactive-hover)] focus-visible:border-white/40 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-white/20`,`disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-base-secondary`),children:(0,q.jsx)(f,{className:`size-4`,"aria-hidden":!0})}),i&&c&&typeof document<`u`?Ee.createPortal((0,q.jsx)(`div`,{style:c,children:p}),document.body):null]})}function ke(){return(0,q.jsxs)(`div`,{"data-testid":`automation-card-skeleton`,className:`${O} border border-transparent p-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,q.jsx)(`div`,{className:`h-5 w-40 animate-pulse rounded bg-surface-raised`}),(0,q.jsx)(`div`,{className:`h-5 w-10 animate-pulse rounded-full bg-surface-raised`})]}),(0,q.jsx)(`div`,{className:`mt-2 h-4 w-72 animate-pulse rounded bg-surface-raised`}),(0,q.jsxs)(`div`,{className:`mt-4 flex gap-2`,children:[(0,q.jsx)(`div`,{className:`h-7 w-32 animate-pulse rounded-full bg-surface-raised`}),(0,q.jsx)(`div`,{className:`h-7 w-28 animate-pulse rounded-full bg-surface-raised`}),(0,q.jsx)(`div`,{className:`h-7 w-24 animate-pulse rounded-full bg-surface-raised`})]})]})}var Ae=e=>(0,q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,q.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`m19.5 8.25-7.5 7.5-7.5-7.5`})}),je=`https://docs.openhands.dev/openhands/usage/automations/overview`;function Me({children:e}){return(0,q.jsx)(`span`,{className:`whitespace-nowrap`,children:e})}function Ne({children:e}){return(0,q.jsx)(`code`,{"data-testid":`automations-create-instructions-example`,className:m(`mx-0.5 inline-block rounded-sm border border-[var(--oh-border-subtle)]`,`bg-[var(--oh-surface-raised)] px-1.5 py-0.5 align-baseline font-mono text-[11px] text-white`),children:e})}function Pe({children:e}){return(0,q.jsx)(q.Fragment,{children:e})}var Fe={example:(0,q.jsx)(Me,{}),cmd:(0,q.jsx)(Ne,{}),punct:(0,q.jsx)(Pe,{})};function $({onLaunch:e}={}){let{t}=o(`openhands`),n=I(),r=d(),{trackAutomationCreated:i}=S();return(0,q.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,q.jsxs)(`p`,{className:`text-sm leading-relaxed text-tertiary-light`,children:[(0,q.jsx)(a,{ns:`openhands`,i18nKey:s.AUTOMATIONS$EMPTY_OPTION_CONVERSATION_DESC,components:Fe}),` `,t(s.AUTOMATIONS$CREATE_INSTRUCTIONS_GUIDANCE)]}),(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,q.jsx)(`a`,{href:je,target:`_blank`,rel:`noopener noreferrer`,className:`text-sm text-muted underline transition-colors hover:text-foreground`,children:t(s.AUTOMATIONS$EMPTY_LEARN_MORE)}),(0,q.jsx)(_,{type:`button`,variant:`primary`,testId:`automations-create-automation`,onClick:()=>{i({backendKind:r.backend.kind}),n(t(s.AUTOMATIONS$CREATE_AUTOMATION_PROMPT),e)},startContent:(0,q.jsx)(F,{className:`size-4`,"aria-hidden":!0}),children:t(s.AUTOMATIONS$CREATE_AUTOMATION_BUTTON)})]})]})}function Ie({collapsible:e=!1}){let{t}=o(`openhands`),[n,r]=(0,K.useState)(!e);return e?(0,q.jsxs)(`div`,{className:`w-full rounded-lg border border-[var(--oh-border)] bg-[var(--oh-surface)]`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>r(!n),"aria-expanded":n,className:`flex w-full items-center justify-between rounded-lg p-4 text-left transition-colors hover:bg-surface-raised`,children:[(0,q.jsx)(`span`,{className:`text-sm font-normal text-content`,children:t(s.AUTOMATIONS$EMPTY_HOW_TO_CREATE_TITLE)}),(0,q.jsx)(Ae,{className:m(`size-5 text-muted transition-transform`,n&&`rotate-180`)})]}),n?(0,q.jsx)(`div`,{className:`px-4 pb-4`,children:(0,q.jsx)($,{})}):null]}):(0,q.jsxs)(`div`,{className:`w-full max-w-2xl`,children:[(0,q.jsx)(`h3`,{className:`text-center text-sm font-medium text-content`,children:t(s.AUTOMATIONS$EMPTY_HOW_TO_CREATE_TITLE)}),(0,q.jsx)(`div`,{className:`mt-4`,children:(0,q.jsx)($,{})})]})}function Le(){let{t:e}=o(`openhands`);return(0,q.jsxs)(`div`,{"data-testid":`automations-empty`,className:j,children:[(0,q.jsx)(`p`,{className:`text-sm text-white`,children:e(s.AUTOMATIONS$EMPTY)}),(0,q.jsx)(`p`,{className:`mt-1 text-xs text-tertiary-light`,children:e(s.AUTOMATIONS$EMPTY_HINT)}),(0,q.jsx)(`div`,{className:`mt-8 flex justify-center border-t border-[var(--oh-border)] pt-8`,children:(0,q.jsx)(Ie,{})})]})}function Re({isOpen:e,onClose:t}){let{t:n}=o(`openhands`);return e?(0,q.jsx)(h,{onClose:t,"aria-label":n(s.AUTOMATIONS$EMPTY_HOW_TO_CREATE_TITLE),children:(0,q.jsxs)(`div`,{"data-testid":`add-automation-modal`,className:`relative flex w-full max-w-lg flex-col rounded-xl border border-[var(--oh-border)] bg-base-secondary`,children:[(0,q.jsx)(x,{onClose:t,testId:`add-automation-modal-close`}),(0,q.jsx)(`header`,{className:`flex-shrink-0 px-6 pb-4 pt-6`,children:(0,q.jsx)(`h2`,{id:`add-automation-modal-title`,className:m(`pr-6`,g),children:n(s.AUTOMATIONS$EMPTY_HOW_TO_CREATE_TITLE)})}),(0,q.jsx)(`div`,{className:`px-6 pb-6`,children:(0,q.jsx)($,{onLaunch:t})})]})}):null}var ze=50,Be=i(function(){let{t:e}=o(`openhands`),[t,n]=(0,K.useState)(``),[r,i]=(0,K.useState)(()=>Ce()),[a,f]=(0,K.useState)(ze),[p,m]=(0,K.useState)(null),[h,g]=(0,K.useState)(null),[v,y]=(0,K.useState)(!1),b=d().backend.kind===`local`,{data:x,isLoading:C,refetch:te}=ne(),w=x?.status===`ok`,{data:T,isLoading:E,isError:D,refetch:O}=ue({limit:a,offset:0,enabled:w}),{trackPrebuiltAutomationEnabled:k}=S(),A=de(),j=fe(),M=re(),N=(0,K.useMemo)(()=>{if(!T?.automations)return[];let e=t.toLowerCase();return e?T.automations.filter(t=>t.name.toLowerCase().includes(e)||(t.prompt??``).toLowerCase().includes(e)||t.repository?.toLowerCase().includes(e)||t.model?.toLowerCase().includes(e)):T.automations},[T?.automations,t]),P=(0,K.useMemo)(()=>N.filter(e=>e.enabled),[N]),F=(0,K.useMemo)(()=>N.filter(e=>!e.enabled),[N]),I=(e,t)=>{let n=!t;if(A.mutate({id:e,enabled:n}),n){let t=T?.automations.find(t=>t.id===e);k({automationId:e,automationName:t?.name??e})}},L=t=>{M.mutate(t,{onSuccess:()=>{u(e(s.AUTOMATIONS$RUN_NOW_SUCCESS))},onError:t=>{l(c(t)?t.response?.data?.message||t.message||e(s.AUTOMATIONS$RUN_NOW_ERROR):t.message||e(s.AUTOMATIONS$RUN_NOW_ERROR))}})},R=e=>{let t=T?.automations.find(t=>t.id===e);t&&m({id:e,name:t.name})},z=e=>{let t=T?.automations.find(t=>t.id===e);t&&g(t)},B=()=>{p&&(j.mutate(p.id),m(null))},V=(0,K.useCallback)(e=>{i(e),we(e)},[]),H=T?T.total>T.automations.length:!1,U=!E&&!D&&T?.automations.length===0;return C?(0,q.jsx)(`div`,{className:`min-h-full`,children:(0,q.jsxs)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:[(0,q.jsx)(`h1`,{className:`text-xl font-medium text-content`,children:e(s.AUTOMATIONS$TITLE)}),(0,q.jsx)(`p`,{className:`mt-1 text-sm text-muted`,children:e(s.AUTOMATIONS$SUBTITLE)}),(0,q.jsx)(`div`,{className:`mt-6 flex flex-col gap-3`,children:Array.from({length:3}).map((e,t)=>(0,q.jsx)(ke,{},`skeleton-${String(t)}`))})]})}):w?(0,q.jsx)(`div`,{className:`min-h-full`,children:(0,q.jsxs)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:[(0,q.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`h1`,{className:`text-xl font-semibold text-content`,children:e(s.AUTOMATIONS$TITLE)}),(0,q.jsx)(`p`,{className:`mt-1 text-sm text-muted`,children:e(s.AUTOMATIONS$SUBTITLE)})]}),(0,q.jsx)(_,{type:`button`,variant:`secondary`,testId:`automations-add-automation`,className:`shrink-0 whitespace-nowrap`,onClick:()=>y(!0),children:e(s.AUTOMATIONS$ADD_AUTOMATION)})]}),(0,q.jsxs)(`div`,{className:`mt-6 flex items-stretch gap-2`,children:[(0,q.jsx)(ge,{value:t,onChange:n}),(0,q.jsx)(Oe,{view:r,onChange:V,disabled:U})]}),(0,q.jsxs)(`div`,{className:`mt-6 flex flex-col gap-6`,children:[E&&(0,q.jsx)(`div`,{className:`flex flex-col gap-3`,children:Array.from({length:3}).map((e,t)=>(0,q.jsx)(ke,{},`skeleton-${String(t)}`))}),D&&!E&&(0,q.jsx)(ie,{onRetry:O}),U&&(0,q.jsx)(Le,{}),!E&&!D&&T&&T.automations.length>0&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Z,{title:e(s.AUTOMATIONS$ACTIVE),count:P.length,automations:P,view:r,onToggle:I,onRunNow:L,runPendingId:M.isPending?M.variables??null:null,onDelete:R,onEdit:b?z:void 0}),(0,q.jsx)(Z,{title:e(s.AUTOMATIONS$INACTIVE),count:F.length,automations:F,view:r,onToggle:I,onRunNow:L,runPendingId:M.isPending?M.variables??null:null,onDelete:R,onEdit:b?z:void 0}),H&&(0,q.jsx)(`button`,{type:`button`,onClick:()=>f(e=>e+ze),className:`self-center rounded-lg border border-[var(--oh-border)] px-6 py-2 text-sm text-white hover:bg-surface-raised`,children:e(s.AUTOMATIONS$LOAD_MORE)})]})]}),(0,q.jsx)(`div`,{className:`mt-6`,children:(0,q.jsx)(ee,{query:t})}),(0,q.jsx)(ae,{automationName:p?.name??``,isOpen:p!==null,onConfirm:B,onCancel:()=>m(null)}),h&&(0,q.jsx)(le,{automation:h,isOpen:h!==null,onClose:()=>g(null)}),(0,q.jsx)(Re,{isOpen:v,onClose:()=>y(!1)})]})}):(0,q.jsx)(`div`,{className:`min-h-full`,children:(0,q.jsxs)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:[(0,q.jsx)(`h1`,{className:`text-xl font-medium text-content`,children:e(s.AUTOMATIONS$TITLE)}),(0,q.jsx)(`p`,{className:`mt-1 text-sm text-muted`,children:e(s.AUTOMATIONS$SUBTITLE)}),(0,q.jsx)(se,{onRetry:te})]})})});export{Be as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./rolldown-runtime-BFRubm34.js";import{Ct as e,bt as t}from"./vendor-styling-CI0PQ3ab.js";import{t as n}from"./createLucideIcon-CVAsW2Yo.js";import{t as r}from"./utils-CE0lDWtb.js";import{r as i}from"./form-control-classes-9rkU4usZ.js";import{t as a}from"./navigation-link-D8hfwvxI.js";var o=n(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]);e();var s=t();function c({children:e}){return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o,{size:20,"aria-hidden":!0}),e]})}function l(e){let{children:t,testId:n,className:o}=e,l=r(i,o);return`to`in e?(0,s.jsx)(a,{to:e.to,onClick:e.onClick,"data-testid":n,className:l,children:(0,s.jsx)(c,{children:t})}):(0,s.jsx)(`button`,{type:`button`,onClick:e.onClick,"data-testid":n,className:l,children:(0,s.jsx)(c,{children:t})})}export{l as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-BFRubm34.js";import{Ct as t,bt as n}from"./vendor-styling-CI0PQ3ab.js";import{t as r}from"./useQuery-CpjHYtZc.js";import{t as i}from"./useTranslation-Cgy4JA_g.js";import{t as a}from"./declaration-B9kpCaYl.js";import{m as o}from"./vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~ncdxw0bh-ClHnt5lR.js";import{F as s,L as c,P as l,h as u,p as d,r as f}from"./active-backend-context-u2tdYRgH.js";import{t as p}from"./utils-CE0lDWtb.js";import{T as m,n as h}from"./agent-server-client-options-DVLRd9sw.js";import{a as g,i as _,n as v,r as y,t as b}from"./use-backends-health-CxkvJy2N.js";import{t as x}from"./modal-backdrop-zVwfOJZr.js";import{n as S,r as C,t as w}from"./modal-body-Dcu5McCa.js";import{n as T,r as E}from"./modal-classes-DPqxSyuP.js";import{t as D}from"./brand-button-DKPMEKcW.js";import{n as O}from"./navigation-context-DPs2G0X8.js";import{t as k}from"./modal-close-button-CTCX4nCH.js";import{t as A}from"./settings-input-DYs7t3oK.js";import{t as j}from"./segmented-toggle-Cen5AMUc.js";import{t as M}from"./use-tracking-GtXCHmTv.js";var N=e(t()),P=n(),F=e=>(0,P.jsxs)(`svg`,{width:1365,height:1365,viewBox:`0 -24 148 148`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,P.jsx)(`path`,{d:`M71.7542 16.863V2.97414C71.7542 1.82355 72.6872 0.890503 73.8378 0.890503C74.9884 0.890503 75.9214 1.82355 75.9214 2.97414V16.863C75.9214 18.0136 74.9884 18.9466 73.8378 18.9466C72.6872 18.9466 71.7542 18.0136 71.7542 16.863Z`,fill:`white`}),(0,P.jsx)(`path`,{d:`M82.5272 18.9329L89.4716 6.90477C90.0469 5.90832 91.3215 5.5668 92.3179 6.1421C93.3144 6.7174 93.6559 7.99197 93.0806 8.98841L86.1362 21.0165C85.5609 22.0129 84.2863 22.3545 83.2899 21.7792C82.2934 21.2039 81.9519 19.9293 82.5272 18.9329Z`,fill:`white`}),(0,P.jsx)(`path`,{d:`M65.1481 18.9329L58.2037 6.90477C57.6284 5.90832 56.3538 5.5668 55.3574 6.1421C54.3609 6.7174 54.0194 7.99197 54.5947 8.98841L61.5391 21.0165C62.1144 22.0129 63.389 22.3545 64.3854 21.7792C65.3819 21.2039 65.7234 19.9293 65.1481 18.9329Z`,fill:`white`}),(0,P.jsx)(`path`,{d:`M140.606 62.0292C140.606 58.409 141.583 47.6748 141.89 44.1323C142.097 41.7374 141.809 40.4247 141.424 39.7542C141.141 39.2626 140.699 38.915 139.634 38.8436C138.865 38.7921 138.027 39.0114 137.401 39.5761C136.814 40.1052 136.159 41.1682 136.159 43.3176L136.155 43.4388L135.198 59.758C135.164 60.3451 134.883 60.8911 134.424 61.2599C133.966 61.6284 133.374 61.7859 132.793 61.6941L122.764 60.1068L111.948 58.6703C110.949 58.5376 110.188 57.7084 110.142 56.7016L109.561 44.1323C109.535 43.621 109.51 43.1141 109.484 42.6146C109.241 37.9294 109.022 33.7805 109.022 32.4282C109.022 28.3859 108.338 26.6806 107.74 25.9634C107.263 25.3915 106.577 25.1402 105.11 25.1402C104.583 25.1402 104.212 25.2481 103.933 25.4111C103.659 25.5714 103.346 25.8587 103.049 26.4208C102.41 27.6257 101.945 29.891 102.118 33.8479C102.342 38.9804 102.692 42.8146 103.035 46.2718C103.377 49.7231 103.718 52.8561 103.908 56.4971C104.204 62.1966 104.178 66.1256 103.945 68.7924C103.828 70.124 103.656 71.1996 103.423 72.0501C103.202 72.8558 102.871 73.6757 102.296 74.2887C101.6 75.0303 100.608 75.3844 99.577 75.136C98.7592 74.9389 98.1847 74.4215 97.8706 74.0916C97.2141 73.4017 96.7501 72.5106 96.568 72.0512C95.5097 69.3812 92.2352 63.1808 87.8023 59.6811C86.5089 58.6599 85.5666 58.3652 84.9736 58.3204C84.4148 58.2783 84.0094 58.4436 83.6909 58.6967C83.34 58.9756 83.0781 59.3811 82.9479 59.7643C82.9019 59.8999 82.8823 59.9968 82.8741 60.0584C84.0759 62.0865 88.8421 69.5222 91.0896 77.069C92.7648 82.6941 96.8038 88.4259 99.8194 90.8809C102.74 93.258 107.988 94.7313 113.9 95.0218C119.756 95.3095 125.788 94.4121 130.033 92.5092C138.233 88.8334 139.903 80.7382 140.651 77.2292C141.232 74.5057 141.243 71.5987 141.087 68.9009C141.01 67.5551 140.894 66.2969 140.793 65.1373C140.695 64.0105 140.606 62.9215 140.606 62.0292ZM120.986 27.0953C120.986 25.8314 120.648 24.7049 120.089 23.9514C119.583 23.27 118.84 22.7987 117.646 22.7984C116.668 22.7982 116.011 22.9187 115.546 23.1167C115.13 23.2943 114.781 23.5699 114.463 24.0831C113.73 25.2671 113.192 27.6455 113.189 32.384L113.721 43.9088C113.91 47.5661 114.106 51.4922 114.235 54.7707L120.986 55.6666V27.0953ZM125.153 56.2652L131.172 57.218L131.992 43.267V32.5083C131.992 31.031 131.39 30.1275 130.678 29.5489C129.884 28.9039 128.957 28.6731 128.519 28.6731C127.722 28.6731 126.899 28.797 126.306 29.2179C125.849 29.5421 125.153 30.3087 125.153 32.5083V56.2652ZM136.159 35.4278C137.406 34.8069 138.74 34.6083 139.912 34.6868C142.037 34.8292 143.91 35.718 145.037 37.6779C146.06 39.4592 146.273 41.8136 146.041 44.4927C145.72 48.1949 144.772 58.6457 144.772 62.0292C144.772 62.708 144.843 63.6116 144.944 64.7758C145.042 65.907 145.165 67.2389 145.247 68.6606C145.411 71.4987 145.422 74.8383 144.727 78.0987C144.002 81.4953 142.041 91.6918 131.738 96.3108C126.731 98.5551 120.002 99.4936 113.696 99.1838C107.445 98.8767 101.128 97.3189 97.1887 94.1122C93.4809 91.0937 88.9938 84.6307 87.0962 78.2589C84.9529 71.0619 80.3109 63.9646 79.1527 61.9533C78.4706 60.7689 78.684 59.3628 79.0019 58.4258C79.3607 57.3688 80.0554 56.2631 81.0993 55.4337C82.1758 54.5784 83.6043 54.0377 85.2876 54.1647C86.9369 54.2893 88.6462 55.0393 90.3834 56.4107C94.8541 59.9401 98.1342 65.5082 99.7424 68.9231C99.759 68.7664 99.779 68.6024 99.7941 68.4298C100.003 66.0435 100.039 62.3344 99.7467 56.7132C99.5635 53.1942 99.2356 50.1809 98.8888 46.6828C98.5425 43.1904 98.184 39.2713 97.955 34.0302C97.7722 29.8481 98.2012 26.6722 99.3672 24.471C99.9716 23.3302 100.79 22.4223 101.83 21.814C102.866 21.2087 103.995 20.974 105.11 20.974C106.759 20.974 108.813 21.2062 110.448 22.7678C110.593 22.4576 110.75 22.1652 110.921 21.8899C111.676 20.6698 112.681 19.8084 113.912 19.2835C115.095 18.7791 116.378 18.6309 117.646 18.6311C120.195 18.6315 122.164 19.7567 123.434 21.4683C124.256 22.576 124.75 23.8775 124.985 25.1982C126.338 24.5876 127.691 24.5068 128.519 24.5068C129.933 24.5068 131.784 25.0791 133.305 26.3154C134.908 27.6179 136.159 29.6733 136.159 32.5083V35.4278Z`,fill:`white`}),(0,P.jsx)(`path`,{d:`M7.15661 62.0292C7.15661 58.409 6.17994 47.6748 5.87291 44.1323C5.6654 41.7374 5.95357 40.4247 6.33875 39.7542C6.62116 39.2626 7.06336 38.915 8.12834 38.8436C8.89759 38.7921 9.73544 39.0114 10.3616 39.5761C10.9484 40.1052 11.6032 41.1682 11.6032 43.3176L11.6074 43.4388L12.5644 59.758C12.5988 60.3451 12.8798 60.8911 13.338 61.2599C13.7961 61.6284 14.3887 61.7859 14.9695 61.6941L24.9988 60.1068L35.8143 58.6703C36.8135 58.5376 37.5741 57.7084 37.6208 56.7016L38.2015 44.1323C38.2279 43.621 38.2525 43.1141 38.2784 42.6146C38.5218 37.9294 38.7401 33.7805 38.7401 32.4282C38.7401 28.3859 39.4246 26.6806 40.0227 25.9634C40.4996 25.3915 41.185 25.1402 42.6523 25.1402C43.1794 25.1402 43.5505 25.2481 43.8295 25.4111C44.1038 25.5714 44.416 25.8587 44.7138 26.4208C45.3521 27.6257 45.8173 29.891 45.6444 33.8479C45.4201 38.9804 45.0703 42.8146 44.7275 46.2718C44.3853 49.7231 44.0443 52.8561 43.8548 56.4971C43.5582 62.1966 43.5847 66.1256 43.8179 68.7924C43.9344 70.124 44.1069 71.1996 44.3396 72.0501C44.5601 72.8558 44.891 73.6757 45.4663 74.2887C46.1625 75.0303 47.1546 75.3844 48.1855 75.136C49.0033 74.9389 49.5778 74.4215 49.8918 74.0916C50.5484 73.4017 51.0123 72.5106 51.1945 72.0512C52.2527 69.3812 55.5272 63.1808 59.9601 59.6811C61.2536 58.6599 62.1958 58.3652 62.7889 58.3204C63.3476 58.2783 63.753 58.4436 64.0715 58.6967C64.4225 58.9756 64.6844 59.3811 64.8146 59.7643C64.8606 59.8999 64.8801 59.9968 64.8883 60.0584C63.6866 62.0865 58.9204 69.5222 56.6729 77.069C54.9977 82.6941 50.9586 88.4259 47.9431 90.8809C45.0229 93.258 39.7747 94.7313 33.8624 95.0218C28.0068 95.3095 21.9748 94.4121 17.7297 92.5092C9.52988 88.8334 7.85961 80.7382 7.11129 77.2292C6.53054 74.5057 6.5195 71.5987 6.67496 68.9009C6.75251 67.5551 6.86809 66.2969 6.96901 65.1373C7.06707 64.0105 7.1566 62.9215 7.15661 62.0292ZM26.7768 27.0953C26.7768 25.8314 27.1147 24.7049 27.6737 23.9514C28.1792 23.27 28.9221 22.7987 30.1167 22.7984C31.0942 22.7982 31.7518 22.9187 32.2162 23.1167C32.6326 23.2943 32.9817 23.5699 33.2996 24.0831C34.0328 25.2671 34.5705 27.6455 34.5738 32.384L34.0416 43.9088C33.8524 47.5661 33.6565 51.4922 33.5273 54.7707L26.7768 55.6666V27.0953ZM22.6095 56.2652L16.5904 57.218L15.7705 43.267V32.5083C15.7705 31.031 16.3726 30.1275 17.0847 29.5489C17.8785 28.9039 18.8058 28.6731 19.2432 28.6731C20.0404 28.6731 20.8634 28.797 21.4565 29.2179C21.9131 29.5421 22.6095 30.3087 22.6095 32.5083V56.2652ZM11.6032 35.4278C10.3568 34.8069 9.02265 34.6083 7.8501 34.6868C5.72541 34.8292 3.85197 35.718 2.72584 37.6779C1.70247 39.4592 1.48924 41.8136 1.72143 44.4927C2.0423 48.1949 2.99038 58.6457 2.99038 62.0292C2.99037 62.708 2.91991 63.6116 2.81859 64.7758C2.72014 65.907 2.59699 67.2389 2.51505 68.6606C2.3515 71.4987 2.34041 74.8383 3.0357 78.0987C3.76005 81.4953 5.72154 91.6918 16.0245 96.3108C21.0311 98.5551 27.7601 99.4936 34.0669 99.1838C40.3172 98.8767 46.6346 97.3189 50.5737 94.1122C54.2816 91.0937 58.7686 84.6307 60.6662 78.2589C62.8095 71.0619 67.4515 63.9646 68.6098 61.9533C69.2919 60.7689 69.0785 59.3628 68.7605 58.4258C68.4018 57.3688 67.707 56.2631 66.6632 55.4337C65.5867 54.5784 64.1582 54.0377 62.4748 54.1647C60.8256 54.2893 59.1162 55.0393 57.379 56.4107C52.9083 59.9401 49.6283 65.5082 48.02 68.9231C48.0034 68.7664 47.9835 68.6024 47.9684 68.4298C47.7597 66.0435 47.7232 62.3344 48.0158 56.7132C48.1989 53.1942 48.5269 50.1809 48.8737 46.6828C49.22 43.1904 49.5784 39.2713 49.8075 34.0302C49.9903 29.8481 49.5612 26.6722 48.3952 24.471C47.7909 23.3302 46.9729 22.4223 45.9321 21.814C44.8964 21.2087 43.7676 20.974 42.6523 20.974C41.0038 20.974 38.9497 21.2062 37.3141 22.7678C37.1698 22.4576 37.0124 22.1652 36.8419 21.8899C36.0863 20.6698 35.0817 19.8084 33.8508 19.2835C32.6679 18.7791 31.3849 18.6309 30.1167 18.6311C27.5677 18.6315 25.5986 19.7567 24.3285 21.4683C23.5066 22.576 23.0121 23.8775 22.7771 25.1982C21.4247 24.5876 20.0718 24.5068 19.2432 24.5068C17.8298 24.5068 15.9788 25.0791 14.4573 26.3154C12.8542 27.6179 11.6032 29.6733 11.6032 32.5083V35.4278Z`,fill:`white`})]}),I=class extends Error{constructor(e,t){super(e),this.code=t,this.name=`DeviceFlowError`}},L=6e5,R=3e4;function z(e){try{let t=e.trim().toLowerCase(),n=/^https?:\/\//i.test(t)?t:`https://${t}`,r=new URL(n).hostname;return r.endsWith(`.all-hands.dev`)||r===`all-hands.dev`||r.endsWith(`.openhands.dev`)||r===`openhands.dev`}catch{return!1}}async function B(e,t,n,r,i,a){let o=r===void 0?void 0:typeof r==`string`||r instanceof Blob||r instanceof FormData||r instanceof URLSearchParams?r:JSON.stringify(r);return await fetch(`${e.replace(/\/+$/,``)}${n}`,{method:t,headers:{...i?{"Content-Type":i}:{}},body:o,signal:a})}async function V(e){let t=e.replace(/\/+$/,``);try{let e=await B(t,`POST`,`/oauth/device/authorize`,{},`application/json`);if(!e.ok)throw new I(`Failed to start device flow: Server returned ${e.status}`);let n=await e.json();if(!n.device_code||!n.user_code||!n.verification_uri)throw new I(`Invalid response from device authorization endpoint: missing required fields`);let r=n.verification_uri_complete??`${n.verification_uri}?user_code=${encodeURIComponent(n.user_code)}`;return{device_code:n.device_code,user_code:n.user_code,verification_uri:n.verification_uri,verification_uri_complete:r,expires_in:n.expires_in??600,interval:n.interval??5}}catch(e){throw e instanceof I?e:new I(`Failed to start device flow: ${e instanceof Error?e.message:String(e)}`)}}async function ee(e,t,n){let r=e.replace(/\/+$/,``),i=n.timeout??L,a=Math.max(1,n.interval)*1e3,o=Date.now();for(;Date.now()-o<i;){if(n.signal?.aborted)throw new I(`Authorization cancelled`,`cancelled`);try{let e=await B(r,`POST`,`/oauth/device/token`,new URLSearchParams({grant_type:`urn:ietf:params:oauth:grant-type:device_code`,device_code:t}).toString(),`application/x-www-form-urlencoded`,n.signal);if(e.ok){let t=await e.json();if(!t.access_token)throw new I(`Invalid token response: missing access_token`);return{access_token:t.access_token,token_type:t.token_type??`Bearer`,expires_in:t.expires_in}}let i;try{i=await e.json()}catch{throw new I(`Unexpected response from server: ${e.status}`)}let{error:o,error_description:s}=i;switch(o){case`authorization_pending`:break;case`slow_down`:a=typeof i.interval==`number`&&isFinite(i.interval)&&i.interval>0?Math.max(1,Math.min(i.interval,30))*1e3:Math.min(a+5e3,R);break;case`expired_token`:throw new I(`Device code has expired. Please try again.`,`expired_token`);case`access_denied`:throw new I(`Authorization request was denied.`,`access_denied`);default:throw new I(`Authorization error: ${o}${s?` - ${s}`:``}`,o)}}catch(e){if(e instanceof I)throw e;if(e instanceof DOMException&&e.name===`AbortError`)throw new I(`Authorization cancelled`,`cancelled`);console.warn(`Network error during polling, retrying:`,e)}try{await te(a,n.signal)}catch(e){throw e instanceof DOMException&&e.name===`AbortError`?new I(`Authorization cancelled`,`cancelled`):e}}throw new I(`Timeout waiting for authorization. Please try again.`,`timeout`)}function te(e,t){return new Promise((n,r)=>{if(t?.aborted){r(new DOMException(`Aborted`,`AbortError`));return}let i=setTimeout(n,e);t?.addEventListener(`abort`,()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))},{once:!0})})}var H=e=>(0,P.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,P.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M15.3235 10.9352L11.5016 14.2111L7.67969 10.9352L8.6152 9.84375L11.5016 12.3178L14.388 9.84375L15.3235 10.9352Z`,fill:`currentColor`})});function U(e,t,n){let r=n?.lastError??null,i=t?.kind===`cloud`;return i&&!t?.apiKey?.trim()||_(r)?e(a.BACKEND$STATUS_DISCONNECTED_ADD_API_KEY):y(r)?e(a.BACKEND$STATUS_DISCONNECTED_CHECK_API_KEY):v(r)?e(a.BACKEND$LOGGED_OUT):n?.isConnected===!0?e(a.ONBOARDING$BACKEND_STATUS_CONNECTED):i&&n?.isConnected===!1&&(b(r)||c(r))?e(a.BACKEND$STATUS_DISCONNECTED_CHECK_CLOUD_ACCESS):n?.isConnected===!1&&s(r)?e(a.BACKEND$STATUS_DISCONNECTED_CHECK_TUNNEL):n?.isConnected===!1&&c(r)?e(a.BACKEND$STATUS_DISCONNECTED_CHECK_URL_OR_NETWORK):n?.isConnected===!1?e(a.ONBOARDING$BACKEND_STATUS_DISCONNECTED):e(a.ONBOARDING$BACKEND_STATUS_CHECKING)}function W({isConnected:e,className:t}){let n,r,i;return e===`unavailable`?(n=`bg-[var(--oh-text-tertiary)]`,r=`No Backend Available`,i=`unavailable`):e===!0?(n=`bg-[var(--oh-status-success)]`,r=`Connected`,i=`connected`):e===!1?(n=`bg-red-500`,r=`Disconnected`,i=`disconnected`):(n=`bg-[var(--oh-interactive-selected)]`,r=`Checking connection`,i=`checking`),(0,P.jsx)(`span`,{"data-testid":`backend-status-dot`,"data-status":i,"aria-label":r,title:r,role:`status`,className:p(`inline-block w-2 h-2 rounded-full shrink-0`,n,t)})}var G={status:`idle`,verificationUrl:null,userCode:null,apiKey:null,error:null,errorCode:null};function ne(){let[e,t]=N.useState(G),n=N.useRef(null),r=N.useCallback(e=>{n.current?.abort();let r=new AbortController;n.current=r,t({...G,status:`starting`}),(async()=>{let n;try{n=await V(e)}catch(e){if(r.signal.aborted)return;let n=e instanceof Error?e.message:`Failed to start device flow`,i=e instanceof I?e.code:void 0;t({...G,status:`error`,error:n,errorCode:i??null});return}if(!r.signal.aborted){t({...G,status:`awaiting_authorization`,verificationUrl:n.verification_uri_complete,userCode:n.user_code});try{let i=await ee(e,n.device_code,{interval:n.interval,signal:r.signal});if(r.signal.aborted)return;t({...G,status:`success`,apiKey:i.access_token})}catch(e){if(r.signal.aborted)return;if(e instanceof I&&e.code===`cancelled`){t(G);return}let n=e instanceof Error?e.message:`Authorization failed`,i=e instanceof I?e.code:void 0;t({...G,status:`error`,error:n,errorCode:i??null})}}})()},[]),i=N.useCallback(()=>{n.current?.abort(),n.current=null,t(G)},[]),a=N.useCallback(()=>{n.current?.abort(),n.current=null,t(G)},[]);return N.useEffect(()=>()=>{n.current?.abort()},[]),{...e,start:r,cancel:i,reset:a}}function K(e){try{return new URL(e).protocol===`https:`}catch{return!1}}function q({host:e,onSuccess:t,testIdRoot:n,isDisabled:r=!1,idleButtonLabel:o,idleButtonContent:s,className:c,buttonClassName:l,buttonVariant:u=`primary`,statusDisplay:d=`inline`}){let{t:f}=i(`openhands`),m=ne(),h=N.useRef(null);N.useEffect(()=>()=>{h.current?.close()},[]),N.useEffect(()=>{if(m.status===`awaiting_authorization`&&m.verificationUrl&&h.current&&!h.current.closed){if(!K(m.verificationUrl)){console.error(`Invalid verification URL protocol`);return}try{h.current.location.href=m.verificationUrl}catch{h.current=window.open(m.verificationUrl,`_blank`,`noopener,noreferrer`)}}},[m.status,m.verificationUrl]),N.useEffect(()=>{if(m.status===`success`&&m.apiKey)try{t(m.apiKey)}finally{m.reset(),h.current?.close()}},[m.status,m.apiKey,m.reset,t]);let g=()=>{let t=e.trim().replace(/\/+$/,``),n=/^https?:\/\//i.test(t)?t:`https://${t}`;try{let e=new URL(n);if(e.username||e.password)throw Error(`Invalid URL format`)}catch{return}h.current=window.open(`about:blank`,`_blank`),h.current||console.warn(`Popup blocked - user will need to use manual link`),m.start(n)},_=()=>{m.cancel(),h.current?.close()},v=(0,P.jsx)(re,{status:m.status,error:m.error,verificationUrl:m.verificationUrl,testIdRoot:n,onCancel:_,onRetry:g}),y=d===`modal`&&m.status!==`idle`,b=o??f(a.BACKEND$LOGIN_WITH_OPENHANDS);return(0,P.jsxs)(`div`,{"data-testid":`${n}-device-flow`,className:p(`flex flex-col gap-3`,c),children:[m.status===`idle`&&u===`unstyled`&&(0,P.jsx)(`button`,{type:`button`,onClick:g,"data-testid":`${n}-login-button`,className:l,disabled:r,"aria-label":s?b:void 0,children:s??b}),m.status===`idle`&&u!==`unstyled`&&(0,P.jsx)(D,{type:`button`,variant:u,onClick:g,testId:`${n}-login-button`,className:p(`w-full`,l),isDisabled:r,ariaLabel:s?b:void 0,children:s??b}),d===`inline`?v:null,y?(0,P.jsx)(x,{onClose:_,"aria-label":f(a.BACKEND$LOGIN_WITH_OPENHANDS),closeOnBackdropClick:!1,children:(0,P.jsx)(S,{testID:`${n}-auth-modal`,width:`sm`,className:`items-stretch border border-[var(--oh-border)]`,children:v})}):null]})}function re({status:e,error:t,verificationUrl:n,testIdRoot:r,onCancel:o,onRetry:s}){let{t:c}=i(`openhands`);if(e===`idle`||e===`success`)return null;if(e===`starting`)return(0,P.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg bg-base-tertiary p-3`,"data-testid":`${r}-auth-starting`,role:`status`,"aria-live":`polite`,children:[(0,P.jsx)(J,{}),(0,P.jsx)(`span`,{className:`text-sm text-[var(--oh-text-tertiary)]`,children:c(a.BACKEND$AUTH_STARTING)})]});if(e===`awaiting_authorization`){let e=n&&K(n)?n:null;return(0,P.jsxs)(`div`,{className:`flex flex-col gap-4 rounded-lg bg-base-tertiary p-4`,"data-testid":`${r}-auth-awaiting`,role:`status`,"aria-live":`polite`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(J,{}),(0,P.jsx)(`span`,{className:`text-sm font-medium text-white`,children:c(a.BACKEND$AUTH_AWAITING)})]}),(0,P.jsx)(`p`,{className:`text-sm leading-5 text-[var(--oh-text-tertiary)]`,children:c(a.BACKEND$AUTH_BROWSER_OPENED)}),e?(0,P.jsxs)(`div`,{className:`flex flex-col gap-1 rounded-md border border-[var(--oh-border)] bg-[var(--oh-surface)] p-3 text-xs text-[var(--oh-muted)]`,children:[(0,P.jsx)(`p`,{children:c(a.BACKEND$AUTH_OPEN_MANUALLY)}),(0,P.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`max-h-16 overflow-auto break-all text-blue-400 hover:underline`,children:e})]}):null,(0,P.jsx)(D,{type:`button`,variant:`secondary`,onClick:o,testId:`${r}-auth-cancel`,className:`w-full`,children:c(a.BACKEND$AUTH_CANCEL)})]})}return(0,P.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-lg border border-red-700 bg-red-900/20 p-4`,"data-testid":`${r}-auth-error`,role:`alert`,children:[(0,P.jsx)(`p`,{className:`text-sm text-red-400`,children:t}),(0,P.jsx)(D,{type:`button`,variant:`secondary`,onClick:s,testId:`${r}-auth-retry`,className:`w-full`,children:c(a.BACKEND$AUTH_RETRY)})]})}function J(){return(0,P.jsx)(`svg`,{className:`animate-spin h-4 w-4 text-white`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,"aria-hidden":`true`,children:(0,P.jsx)(`path`,{className:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z`})})}function ie(e){return z(e)?`cloud`:`local`}function ae(e){let t=e.toLowerCase().replace(/^\[|\]$/g,``);return!!(t===`localhost`||t===`::1`||t===`::`||t===`0.0.0.0`||/^127\./.test(t)||/^::ffff:127\./i.test(t)||/^10\./.test(t)||/^192\.168\./.test(t)||/^172\.(1[6-9]|2\d|3[01])\./.test(t)||/^fe[89ab][0-9a-f]:/i.test(t)||/^f[cd][0-9a-f]{2}:/i.test(t)||t.endsWith(`.local`)||!t.includes(`.`)&&!t.includes(`:`))}function Y(e){let t=e.trim().replace(/\/+$/,``);if(!t)return``;if(/^https?:\/\//i.test(t))return t;let n=t.match(/^\[([^\]]+)\]/);return`${ae(n?n[1]:(t.match(/:/g)??[]).length>1?t:t.split(`:`)[0])?`http`:`https`}://${t}`}function X(e){let t=e.trim();if(!t||/\s/.test(t))return!1;let n=Y(t);if(!n)return!1;try{let e=new URL(n);return(e.protocol===`http:`||e.protocol===`https:`)&&e.hostname.length>0}catch{return!1}}var Z=`https://app.all-hands.dev`;function oe(e,t){return e(a.BACKEND$CONNECTION_TEST_FAILED,{host:t,interpolation:{escapeValue:!1}})}function se(e){return l(e)}function ce(e,t){let n=se(t);return n?`${e}\n${n}`:e}async function Q(e){e.kind===`local`&&d(await new o(h({host:e.host,sessionApiKey:e.apiKey||null,timeout:5e3})).getServerInfo())}function le({backend:e,testIdRoot:t}){let{t:n}=i(`openhands`),s=g([e])[e.id],c=s?.isConnected??null,l=s?.disabled===!0,d=s?.consecutiveFailures??0,f=s?.lastError??null,{data:p}=r({queryKey:[`backend-version`,e.host,e.apiKey],queryFn:async()=>u(await new o(h({host:e.host,sessionApiKey:e.apiKey||null,timeout:5e3})).getServerInfo()),retry:!1,staleTime:6e4,enabled:e.kind===`local`&&!l}),m=U(n,e,s),_=e.kind===`cloud`?n(a.BACKEND$KIND_CLOUD):n(a.BACKEND$KIND_LOCAL);return(0,P.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,P.jsxs)(`div`,{"data-testid":`${t}-status`,className:`flex items-center gap-3 text-sm`,children:[(0,P.jsx)(W,{isConnected:c}),(0,P.jsx)(`span`,{className:`text-white`,"data-testid":`${t}-status-label`,children:m}),(0,P.jsx)(`span`,{className:`text-tertiary-alt`,children:`·`}),(0,P.jsx)(`span`,{className:`text-[var(--oh-text-tertiary)]`,children:_}),p?(0,P.jsx)(`span`,{className:`text-xs text-[var(--oh-muted)]`,"data-testid":`${t}-version`,children:n(a.BACKEND$VERSION_LABEL,{version:p})}):null]}),l?(0,P.jsxs)(`div`,{"data-testid":`${t}-status-error`,className:`flex flex-col gap-1 rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm`,children:[(0,P.jsx)(`span`,{className:`font-semibold text-red-300`,children:n(a.BACKEND$HEALTH_FAILED_TITLE)}),(0,P.jsx)(`span`,{className:`text-xs text-[var(--oh-text-tertiary)]`,children:n(a.BACKEND$HEALTH_FAILED_DETAIL,{count:d})}),f?(0,P.jsx)(`span`,{"data-testid":`${t}-status-error-message`,className:`text-xs text-red-300 whitespace-pre-wrap break-words`,children:f}):null]}):null]})}function $({initialName:e=``,initialHost:t=``,initialApiKey:n=``,onTestConnection:r,onSuccess:a,requireApiKey:o=!1,onSubmitOverride:s}){let{t:c}=i(`openhands`),[l,u]=N.useState(e),[d,f]=N.useState(t),[p,m]=N.useState(n),[h,g]=N.useState(null),[_,v]=N.useState(!1),[y,b]=N.useState(null),x=y??ie(d),S=o||x!==`local`,C=l.trim().length>0&&X(d)&&(!S||p.trim().length>0);return{name:l,setName:u,host:d,setHost:f,apiKey:p,setApiKey:m,connectionError:h,setConnectionError:g,isSubmitting:_,kind:x,setKind:b,canSubmit:C,handleSubmit:N.useCallback(async e=>{if(e.preventDefault(),!C||_)return;let t={name:l.trim(),host:Y(d),apiKey:p.trim(),kind:x};g(null),v(!0);try{s?await s(t):(await r(t),a())}catch(e){g(ce(oe(c,t.host),e))}finally{v(!1)}},[C,_,l,d,p,x,r,a,o,s,c])}}function ue({mode:e,backend:t,onSubmitted:n,renderActions:r,testIdRoot:o,hostReadOnly:s,requireApiKey:c,hideConfigurationFields:l=!1,onSubmitOverride:u}){let{t:d}=i(`openhands`),{addBackend:m,updateBackend:h}=f(),g=e===`edit`&&t?t.kind:null,{name:_,setName:v,host:y,setHost:b,apiKey:x,setApiKey:S,connectionError:C,setConnectionError:w,isSubmitting:T,kind:E,handleSubmit:O}=$({initialName:t?.name??``,initialHost:t?.host??``,initialApiKey:t?.apiKey??``,onTestConnection:Q,onSuccess:async()=>{let r={name:_.trim(),host:Y(y),apiKey:x.trim(),kind:g??E};e===`edit`&&t?h(t.id,r):m(r),n()},requireApiKey:c,onSubmitOverride:u}),[k,j]=N.useState(!1),[M,F]=N.useState(!1),I=g??E,L=o??(e===`edit`?`edit-backend`:`add-backend`),R=c||I!==`local`,z=_.trim().length>0&&X(y)&&(!R||x.trim().length>0),B=k&&!_.trim()?d(a.BACKEND$NAME_REQUIRED):void 0,V=M?y.trim()?X(y)?void 0:d(a.BACKEND$HOST_INVALID):d(a.BACKEND$HOST_REQUIRED):void 0;return(0,P.jsxs)(`form`,{"data-testid":`${L}-form`,onSubmit:async e=>{if(!z){j(!0),F(!0);return}await O(e)},className:`flex flex-col gap-4`,children:[(0,P.jsxs)(`div`,{"data-testid":`${L}-configuration-fields`,className:p(`flex flex-col gap-4`,l&&`hidden`),children:[(0,P.jsx)(A,{testId:`${L}-name`,name:`${L}-name`,type:`text`,label:d(a.BACKEND$NAME_LABEL),value:_,onChange:e=>{v(e),w(null)},onBlur:()=>j(!0),placeholder:`Production`,className:`w-full`,showRequiredTag:!0,error:B}),(0,P.jsx)(A,{testId:`${L}-host`,name:`${L}-host`,type:`text`,label:d(a.BACKEND$HOST_LABEL),value:y,onChange:s?void 0:e=>{b(e),w(null)},onBlur:()=>F(!0),placeholder:Z,className:`w-full`,showRequiredTag:!0,error:V,isDisabled:s}),(0,P.jsx)(A,{testId:`${L}-api-key`,name:`${L}-api-key`,type:`password`,label:d(a.BACKEND$KEY_LABEL),value:x,onChange:e=>{S(e),w(null)},placeholder:``,className:`w-full`}),C?(0,P.jsx)(`div`,{role:`alert`,"data-testid":`${L}-error`,className:`rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm text-red-300 whitespace-pre-wrap break-words`,children:C}):null,e===`edit`&&t&&(0,P.jsx)(le,{backend:t,testIdRoot:L})]}),r?r({canSubmit:z&&!T,isSubmitting:T,testIdRoot:L}):(0,P.jsxs)(`div`,{className:`flex justify-end gap-2 mt-2 w-full`,children:[(0,P.jsx)(D,{type:`button`,variant:`secondary`,onClick:n,testId:`${L}-cancel`,children:d(a.BUTTON$CANCEL)}),(0,P.jsx)(D,{type:`submit`,variant:`primary`,isDisabled:!z||T,testId:`${L}-submit`,children:d(a.BACKEND$SAVE)})]})]})}function de(){let{currentPath:e,navigate:t}=O();return N.useCallback(()=>{/^\/automations\/[^/]+/.test(e)?t(`/automations`):/^\/conversations\/[^/]+/.test(e)&&t(`/conversations`)},[e,t])}function fe({onConnected:e,testIdRoot:t=`add-backend`,initialManualBackend:n,requireManualApiKey:r=!1,manualSubmitLabel:o,manualSubmittingLabel:s,manualSubmitTestId:c}){let{t:l}=i(`openhands`),u=m();return u?(0,P.jsx)(`div`,{"data-testid":`${t}-connection-options`,className:`flex justify-center`,children:(0,P.jsx)(`div`,{className:`w-full`,children:(0,P.jsx)(me,{onConnected:e,testIdRoot:t,lockedHost:u})})}):(0,P.jsxs)(`div`,{"data-testid":`${t}-connection-options`,className:`flex flex-col gap-6 md:flex-row`,children:[(0,P.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,P.jsx)(pe,{onConnected:e,testIdRoot:t,initialBackend:n,requireApiKey:r,submitLabel:o??l(a.BACKEND$CONNECT),submittingLabel:s??l(a.ONBOARDING$BACKEND_STATUS_CHECKING),submitTestId:c})}),(0,P.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,P.jsx)(me,{onConnected:e,testIdRoot:t})})]})}function pe({onConnected:e,testIdRoot:t,initialBackend:n,requireApiKey:r,submitLabel:o,submittingLabel:s,submitTestId:c}){let{t:l}=i(`openhands`),{name:u,setName:d,host:f,setHost:p,apiKey:m,setApiKey:h,connectionError:g,setConnectionError:_,isSubmitting:v,kind:y,setKind:b,canSubmit:x,handleSubmit:S}=$({initialName:n?.name??``,initialHost:n?.host??``,initialApiKey:n?.apiKey??``,onTestConnection:Q,onSuccess:()=>{e({name:u.trim(),host:Y(f),apiKey:m.trim(),kind:y},`manual`)},requireApiKey:r});return(0,P.jsxs)(`form`,{"data-testid":`${t}-form`,onSubmit:S,className:`flex flex-col gap-4 flex-1 min-w-0`,children:[(0,P.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,P.jsx)(A,{testId:`${t}-name`,name:`${t}-name`,type:`text`,label:l(a.BACKEND$NAME_LABEL),value:u,onChange:e=>{d(e),_(null)},placeholder:`e.g. My Server`,className:`w-full`}),(0,P.jsx)(`p`,{className:`text-xs text-[var(--oh-muted)]`,children:l(a.BACKEND$NAME_HELPER)})]}),(0,P.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,P.jsx)(A,{testId:`${t}-host`,name:`${t}-host`,type:`text`,label:l(a.BACKEND$HOST_LABEL),value:f,onChange:e=>{p(e),_(null)},placeholder:`http://localhost:8000`,className:`w-full`}),(0,P.jsx)(`p`,{className:`text-xs text-[var(--oh-muted)]`,"data-testid":`${t}-host-helper`,children:l(a.BACKEND$HOST_HELPER)})]}),(0,P.jsxs)(`div`,{className:`flex flex-col items-start gap-2.5`,children:[(0,P.jsx)(`span`,{className:`text-sm`,children:l(a.BACKEND$KIND_LABEL)}),(0,P.jsx)(j,{value:y,options:[{value:`local`,label:l(a.BACKEND$KIND_LOCAL)},{value:`cloud`,label:l(a.BACKEND$KIND_CLOUD)}],onChange:e=>b(e),ariaLabel:l(a.BACKEND$KIND_LABEL),testId:`${t}-kind`})]}),(0,P.jsx)(A,{testId:`${t}-api-key`,name:`${t}-api-key`,type:`password`,label:l(a.BACKEND$KEY_LABEL),value:m,onChange:e=>{h(e),_(null)},placeholder:`sk-••••••••••`,className:`w-full`}),g?(0,P.jsx)(`div`,{role:`alert`,"data-testid":`${t}-error`,className:`rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm text-red-300 whitespace-pre-wrap break-words`,children:g}):null,(0,P.jsx)(D,{type:`submit`,variant:`secondary`,isDisabled:!x||v,testId:c??`${t}-submit`,className:`w-full text-center`,children:v?s:o})]})}function me({onConnected:e,testIdRoot:t,lockedHost:n}){let{t:r}=i(`openhands`),[o,s]=N.useState(!1),[c,l]=N.useState(``),u=n??(c.trim()||Z);return(0,P.jsxs)(`div`,{className:`flex flex-1 min-w-0 flex-col items-center gap-3 pb-7`,children:[(0,P.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,P.jsx)(F,{width:56,height:56,"aria-hidden":!0}),(0,P.jsx)(`h4`,{className:E,"data-testid":`${t}-cloud-title`,children:r(a.BACKEND$CLOUD_TITLE)})]}),(0,P.jsx)(`p`,{className:`text-center text-sm leading-relaxed text-[var(--oh-muted)]`,children:r(a.BACKEND$CLOUD_DESCRIPTION)}),(0,P.jsx)(q,{host:u,onSuccess:t=>{e({name:`OpenHands Cloud`,host:Y(u),apiKey:t,kind:`cloud`},`cloud_login`)},testIdRoot:t}),n?null:(0,P.jsxs)(`div`,{className:`w-full`,children:[(0,P.jsxs)(`button`,{type:`button`,onClick:()=>s(e=>!e),"aria-expanded":o,"data-testid":`${t}-advanced-toggle`,className:`flex w-full cursor-pointer items-center justify-center gap-1 text-center text-xs text-[var(--oh-muted)] transition-colors hover:text-content-2`,children:[(0,P.jsx)(`span`,{children:r(a.BACKEND$ADVANCED)}),(0,P.jsx)(H,{className:p(`h-4 w-4 shrink-0 text-muted transition-transform`,o&&`rotate-180`),"aria-hidden":!0})]}),(0,P.jsxs)(`div`,{className:p(`pt-2`,!o&&`pointer-events-none invisible`),"aria-hidden":!o,children:[(0,P.jsx)(A,{testId:`${t}-cloud-host`,name:`${t}-cloud-host`,type:`text`,label:r(a.BACKEND$HOST_LABEL),value:c,onChange:l,placeholder:Z,className:`w-full`}),(0,P.jsx)(`p`,{className:`mt-1 text-xs text-[var(--oh-muted)]`,children:r(a.BACKEND$LOGIN_CLOUD_HINT)})]})]})]})}function he({onClose:e,source:t}){let{addBackend:n}=f(),r=de(),{trackBackendAdded:i}=M();return(0,P.jsx)(fe,{onConnected:N.useCallback((a,o)=>{n(a);let s=a.host===Z;i({backendKind:a.kind,connectionMethod:o,isOpenhandsCloud:s,isCustomHost:!s,hasApiKey:!!a.apiKey,source:t}),r(),e()},[n,r,e,i,t])})}function ge({mode:e,backend:t,onClose:n,source:r=`add_backend_modal`}){let{t:o}=i(`openhands`);if(e===`add`)return(0,P.jsx)(x,{onClose:n,closeOnEscape:!1,"aria-label":o(a.BACKEND$ADD_TITLE),children:(0,P.jsxs)(`div`,{"data-testid":`add-backend-modal`,className:p(`relative rounded-xl border border-[var(--oh-border)] bg-base-secondary`,C(`xl`),w),children:[(0,P.jsx)(k,{onClose:n,testId:`add-backend-close`}),(0,P.jsx)(`div`,{className:`px-6 pt-6 pb-2 pr-12`,children:(0,P.jsx)(`h2`,{className:T,children:o(a.BACKEND$ADD_TITLE)})}),(0,P.jsx)(`div`,{className:`px-6 pb-6 pt-2`,children:(0,P.jsx)(he,{onClose:n,source:r})})]})});let s=`edit-backend`;return(0,P.jsx)(x,{onClose:n,closeOnEscape:!1,"aria-label":o(a.BACKEND$EDIT_TITLE),children:(0,P.jsxs)(`div`,{"data-testid":`${s}-modal`,className:p(`relative bg-base-secondary p-6 rounded-xl flex flex-col gap-4 border border-[var(--oh-border)]`,C(`md`)),children:[(0,P.jsx)(k,{onClose:n,testId:`${s}-close`}),(0,P.jsx)(`h2`,{className:p(`pr-6`,T),children:o(a.BACKEND$EDIT_TITLE)}),(0,P.jsx)(ue,{mode:`edit`,backend:t,onSubmitted:n,testIdRoot:s})]})})}export{W as a,q as i,ue as n,U as o,ge as r,H as s,fe as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{bt as e}from"./vendor-styling-CI0PQ3ab.js";import{t}from"./useTranslation-Cgy4JA_g.js";import{t as n}from"./declaration-B9kpCaYl.js";import{n as r}from"./active-backend-context-u2tdYRgH.js";import{n as i,t as a}from"./use-cloud-current-user-id-D_PQGfmT.js";import{r as o}from"./typography-YGPBGzOG.js";var s=e();function c(){let{t:e}=t(),o=r(),s=i(),c=a();if(o.backend.kind!==`cloud`||!o.orgId)return o.backend.name;let l=s[o.backend.id]?.orgs.find(e=>e.id===o.orgId);if(!l)return o.backend.name;let u=c[o.backend.id]?.userId??null,d=u&&l.id===u?e(n.BACKEND$PERSONAL_WORKSPACE):l.name;return`${o.backend.name} – ${d}`}function l(){let{t:e}=t(),i=r(),a=c();return(0,s.jsx)(`div`,{"data-testid":`backend-synced-settings-badge`,className:`flex items-center`,children:(0,s.jsx)(o.Text,{className:`text-[11px] font-medium text-[var(--oh-text-dim)] leading-5`,children:e(n.SETTINGS$BACKEND_SYNCED_BADGE,{name:a,host:i.backend.host,interpolation:{escapeValue:!1}})})})}export{l as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./rolldown-runtime-BFRubm34.js";import{Ct as e,bt as t,yt as n}from"./vendor-styling-CI0PQ3ab.js";import{t as r}from"./utils-CE0lDWtb.js";import{n as i}from"./modal-body-Dcu5McCa.js";import{t as a}from"./modal-classes-DPqxSyuP.js";e();var o=t();function s({testId:e,variant:t=`default`,onClick:r,text:i,className:a,icon:s,type:c=`button`,disabled:l,intent:u}){return(0,o.jsxs)(`button`,{"data-testid":e,type:c===`submit`?`submit`:`button`,disabled:l,onClick:r,className:n(t===`default`&&`text-sm font-normal py-[10px] rounded-sm`,t===`text-like`&&`text-xs leading-4 font-normal`,s&&`flex items-center justify-center gap-2`,l&&`opacity-50 cursor-not-allowed`,a),name:u&&`intent`,value:u,children:[s,i]})}function c({title:e,id:t,className:n}){return(0,o.jsx)(`span`,{id:t,className:r(a,n),children:e})}function l({description:e,children:t}){return(0,o.jsx)(`span`,{className:`text-xs text-modal-muted`,children:t||e})}function u({testId:e,title:t,description:n,buttons:r}){return(0,o.jsxs)(i,{testID:e,children:[(0,o.jsxs)(`div`,{className:`flex flex-col gap-2 self-start`,children:[(0,o.jsx)(c,{title:t}),(0,o.jsx)(l,{description:n})]}),(0,o.jsx)(`div`,{className:`flex flex-col gap-2 w-full`,children:r.map((e,t)=>(0,o.jsx)(s,{onClick:e.onClick,text:e.text,className:e.className},t))})]})}export{s as i,l as n,c as r,u as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-CVAsW2Yo.js";var t=e(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]);export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-BFRubm34.js";import{Ct as t,bt as n}from"./vendor-styling-CI0PQ3ab.js";import{t as r}from"./utils-CE0lDWtb.js";import{a as i}from"./form-control-classes-9rkU4usZ.js";var a=e(t(),1),o=n(),s=(0,a.forwardRef)(function({testId:e,name:t,children:n,variant:a,type:s,isDisabled:c,className:l,onClick:u,startContent:d,ariaLabel:f,"aria-busy":p},m){return(0,o.jsxs)(`button`,{ref:m,name:t,"data-testid":e,disabled:c,type:s,onClick:u,"aria-label":f,"aria-busy":p,className:r(i,a===`primary`&&`bg-primary text-[var(--oh-color-base)] hover:opacity-80 disabled:bg-[var(--oh-interactive-hover)] disabled:text-[var(--oh-muted)] disabled:opacity-100`,a===`secondary`&&`border border-[var(--oh-border)] bg-base-secondary text-white hover:bg-surface-raised`,a===`tertiary`&&`bg-[var(--oh-interactive-hover)] text-white hover:opacity-80`,a===`danger`&&`bg-red-600 text-white hover:bg-red-700`,a===`ghost-danger`&&`h-auto min-h-0 bg-transparent px-0 text-red-600 underline hover:text-red-700 hover:no-underline font-normal`,d&&`flex items-center justify-center gap-2`,l),children:[d,n]})});export{s as t};
|