@openhands/agent-canvas 1.15.0 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -1
- package/README.windows.md +2 -2
- package/build/assets/{acp-providers-BKvmTf82.js → acp-providers-DrjNsPOH.js} +1 -1
- package/build/assets/active-backend-context-rZiLJRUc.js +2 -0
- package/build/assets/{agent-context-settings-D3PjSTU1.js → agent-context-settings-CJUrcBut.js} +1 -1
- package/build/assets/agent-profiles-service.api-Biieml2L.js +1 -0
- package/build/assets/agent-profiles-settings-x6RvPsq7.js +1 -0
- package/build/assets/agent-server-client-options-BikiNwTa.js +1 -0
- package/build/assets/agent-server-conversation-service.api-DYFsNHKf.js +88 -0
- package/build/assets/agent-settings-BJyovpJ_.js +1 -0
- package/build/assets/agent-settings-CpY3zObk.js +2 -0
- package/build/assets/alert-banner-vARz1idS.js +1 -0
- package/build/assets/{api-error-message-BJyfWp6p.js → api-error-message-Ve79qDcN.js} +1 -1
- package/build/assets/api-key-entry-screen-CsMuBhoP.js +1 -0
- package/build/assets/{app-settings-CbHqzQus.js → app-settings-BaJ7nfHt.js} +1 -1
- package/build/assets/automation-detail-CVoGDrKq.js +3 -0
- package/build/assets/{automation-export-BRopEHMu.js → automation-export-DxY47m3T.js} +1 -1
- package/build/assets/automation-git-sync-CRMP9Bbm.js +1 -0
- package/build/assets/automation-setup-route-072beLz1.js +3 -0
- package/build/assets/{automation-templates-C_0FZgLG.js → automation-templates-4C4PM8K7.js} +1 -1
- package/build/assets/automations-list-xuqTSQL4.js +1 -0
- package/build/assets/{back-nav-button-Dm9tIjVf.js → back-nav-button-B8tH0BEp.js} +1 -1
- package/build/assets/backend-form-modal-0aJmWdsa.js +1 -0
- package/build/assets/{backend-synced-settings-badge-3fOwg6Bd.js → backend-synced-settings-badge-B7rKWBir.js} +1 -1
- package/build/assets/{badge-D4SqUCsR.js → badge-CcGx2TaV.js} +1 -1
- package/build/assets/{base-modal-C7_BDl_U.js → base-modal-DTULovNc.js} +1 -1
- package/build/assets/bot-CLMxGFaq.js +1 -0
- package/build/assets/{brand-button-Dxv6PDeN.js → brand-button-DxPO4Lf8.js} +1 -1
- package/build/assets/browser-C-_qBasq.js +46 -0
- package/build/assets/{browser-tab-BAl4ckJE.js → browser-tab-DZanIw5m.js} +1 -1
- package/build/assets/canvas-extension-page-o_cWgE9B.js +1 -0
- package/build/assets/canvas-extensions-DSgNlCha.js +1 -0
- package/build/assets/canvas-extensions-runtime-DdnkgJXV.js +1 -0
- package/build/assets/{chat-send-button-DWwR2cgI.js → chat-send-button-B3SFSIg5.js} +1 -1
- package/build/assets/check-fDEfgSzj.js +1 -0
- package/build/assets/chevron-down-CFrWHqu8.js +1 -0
- package/build/assets/chevron-right-C5roOrJu.js +1 -0
- package/build/assets/circle-check-ClTzJTdb.js +1 -0
- package/build/assets/{circle-plus-check-toggle-CBh_qomE.js → circle-plus-check-toggle-Fr-h-mbL.js} +1 -1
- package/build/assets/{cloud-funnel-analytics-287iIERo.js → cloud-funnel-analytics-BQanUEEC.js} +1 -1
- package/build/assets/{cog-C4rrw-ZK.js → cog-VBlRo6iw.js} +1 -1
- package/build/assets/command-menu-BT3Ia5Ru.js +1 -0
- package/build/assets/commits-tab-2jhtaohl.js +1 -0
- package/build/assets/{condenser-settings-BcNmYR4s.js → condenser-settings-eVKFMvap.js} +1 -1
- package/build/assets/confirmation-modal-gIFHeZt6.js +1 -0
- package/build/assets/{context-menu-list-item-lVYETtY5.js → context-menu-list-item-DDROe12Z.js} +1 -1
- package/build/assets/conversation-BnjJSFf5.js +93 -0
- package/build/assets/conversation-DZ578rOX.js +1 -0
- package/build/assets/conversation-panel-DZ578rOX.js +1 -0
- package/build/assets/conversation-state-store-D1_G_9I-.js +1 -0
- package/build/assets/{conversation-store-Ca3ghXap.js → conversation-store-DVVfkCsk.js} +1 -1
- package/build/assets/{conversation-tab-empty-state-HJtkmHZj.js → conversation-tab-empty-state-DKlzAz5c.js} +1 -1
- package/build/assets/{copy-to-clipboard-button-Cjkswvnj.js → copy-to-clipboard-button-B3w0X7WH.js} +1 -1
- package/build/assets/{device-verify-EZhHhBT7.js → device-verify-BfkCzyFB.js} +1 -1
- package/build/assets/{dropdown-classes-DJe-E6MC.js → dropdown-classes-B9kJVDIk.js} +1 -1
- package/build/assets/edit-automation-modal-BwhJ39JT.js +1 -0
- package/build/assets/empty-state-RZz0OfnY.js +1 -0
- package/build/assets/{entry.client-C7Bi2tkU.js → entry.client-Ds8LVp-E.js} +2 -2
- package/build/assets/enum-filter-dropdown-C4pW0ORd.js +1 -0
- package/build/assets/{environment-switch-overlay-CEKrFiMw.js → environment-switch-overlay-P2ZAuzov.js} +1 -1
- package/build/assets/{error-state-BALXiBNy.js → error-state-B_5cgNPJ.js} +1 -1
- package/build/assets/extensions-hub-DsaUr4ca.js +1 -0
- package/build/assets/extensions-navigation-CRMZd-FE.js +1 -0
- package/build/assets/external-link-DQtv7eTh.js +1 -0
- package/build/assets/files-tab-CCgAcVdc.js +1 -0
- package/build/assets/{form-control-classes-CGw40z5h.js → form-control-classes-B-z85REi.js} +1 -1
- package/build/assets/format-model-name-CasAP3nd.js +1 -0
- package/build/assets/get-git-path-EHrSDxTM.js +1 -0
- package/build/assets/git-repo-dropdown-D2WEQ97X.js +1 -0
- package/build/assets/{git-repo-dropdown-ai8qaNkD.js → git-repo-dropdown-DVeCUUXG.js} +1 -1
- package/build/assets/{highlighted-source-view-C3sxykQi.js → highlighted-source-view-DjHO3SdW.js} +1 -1
- package/build/assets/home-BorS_vdS.js +1 -0
- package/build/assets/home-aIMbHw5M.js +1 -0
- package/build/assets/home-automation-run-tooltip-CpHNFiFl.js +1 -0
- package/build/assets/home-store-DyXz0w6d.js +1 -0
- package/build/assets/hooks-service-C6dpRtZM.js +1 -0
- package/build/assets/index-home-zKFuKK2B.js +1 -0
- package/build/assets/info-CTIdjttz.js +1 -0
- package/build/assets/install-server-modal-DUiZMc8u.js +1 -0
- package/build/assets/kebab-menu-item-content-mm04SBD3.js +1 -0
- package/build/assets/{key-Cn5za3rg.js → key-CfXbJa8w.js} +1 -1
- package/build/assets/{launch-C1ieiOGe.js → launch-BSIf9KEg.js} +1 -1
- package/build/assets/list-filter-CNpqTWVY.js +1 -0
- package/build/assets/{list-todo-Cuu-STFc.js → list-todo-ByXMdY4W.js} +1 -1
- package/build/assets/llm-not-configured-banner-z_QRSeV0.js +27 -0
- package/build/assets/llm-settings-B-5AHMiX.js +1 -0
- package/build/assets/llm-settings-B3SjHDmA.js +1 -0
- package/build/assets/llm-subscription-service-aDNBQ7Gq.js +1 -0
- package/build/assets/loader-circle-Dex47vVW.js +1 -0
- package/build/assets/{loading-spinner-0L3ZTToZ.js → loading-spinner-DfHI77BA.js} +1 -1
- package/build/assets/manage-backends-modal-q1NdFisr.js +1 -0
- package/build/assets/manifest-8920b615.js +1 -0
- package/build/assets/{manifest-subpage-layout-BGhiUQbA.js → manifest-subpage-layout-BQQy5ipR.js} +1 -1
- package/build/assets/{map-provider-B9LTm23I.js → map-provider-DXvssjw9.js} +1 -1
- package/build/assets/markdown-renderer-rivLvYh-.js +8 -0
- package/build/assets/{mcp-CKbR4Vft.js → mcp-CEXDhQWn.js} +1 -1
- package/build/assets/{mcp-marketplace-utils-C13fFccR.js → mcp-marketplace-utils-Cn_NIMWM.js} +1 -1
- package/build/assets/mcp-page-LGYIICMG.js +9 -0
- package/build/assets/messages-DUSeANAh.js +41 -0
- package/build/assets/{modal-body-CMOc2tLl.js → modal-body-DJw4xBki.js} +1 -1
- package/build/assets/{modal-classes-BAb4Y_BG.js → modal-classes-Dg0ngBPO.js} +1 -1
- package/build/assets/{modal-close-button-CkJ0Ktjj.js → modal-close-button-B9j4nasm.js} +1 -1
- package/build/assets/{mouse-pointer-click-CsgRs_-r.js → mouse-pointer-click-DEhsSUpu.js} +1 -1
- package/build/assets/onboarding-BjFebfs5.js +1 -0
- package/build/assets/onboarding-modal-DDTjOpyd.js +1 -0
- package/build/assets/organization-service.api-Cyg1Tn03.js +1 -0
- package/build/assets/pencil-D5c47kyN.js +1 -0
- package/build/assets/pin-C7vMagvf.js +1 -0
- package/build/assets/planner-tab-D8f2Y3rn.js +1 -0
- package/build/assets/plug-CeaqeF6u.js +1 -0
- package/build/assets/plugins-management-service-Bh_pBuf-.js +1 -0
- package/build/assets/plus-B3wvU06-.js +1 -0
- package/build/assets/profiles-service.api-BbOK0EkF.js +1 -0
- package/build/assets/providers-2gIIkz2N.js +1 -0
- package/build/assets/proxy-CBgMd2zf.js +1 -0
- package/build/assets/{puzzle-A9pGxxai.js → puzzle-DdAqbUrb.js} +1 -1
- package/build/assets/recommended-automations-launcher-YLAQTp4s.js +1 -0
- package/build/assets/refresh-cw-DEQdPCpH.js +1 -0
- package/build/assets/root-Bye_XmEL.js +2 -0
- package/build/assets/root-Cnwwzgo0.css +1 -0
- package/build/assets/root-layout-CSAwxBGM.js +2 -0
- package/build/assets/schema-field-CK0xYNbO.js +1 -0
- package/build/assets/scroll-fade-state-Dt_fx2kf.js +1 -0
- package/build/assets/sdk-section-page-Da73Rs_o.js +1 -0
- package/build/assets/secret-form-CB2VwYYg.js +1 -0
- package/build/assets/secrets-service-Cr8g8xuv.js +1 -0
- package/build/assets/{secrets-settings-BizaTEr1.js → secrets-settings-Bh0udeKv.js} +1 -1
- package/build/assets/settings-CKqk8ZnH.js +1 -0
- package/build/assets/settings-DmyIgRxO.js +1 -0
- package/build/assets/{settings-dropdown-input-tM0A0ipy.js → settings-dropdown-input-DVpyD87C.js} +1 -1
- package/build/assets/settings-index-BSJUFmjE.js +1 -0
- package/build/assets/{settings-input-C03KUoSC.js → settings-input-C0dd8Utu.js} +1 -1
- package/build/assets/{settings-list-classes-BJ0g8rWj.js → settings-list-classes-Ds4jPBHK.js} +1 -1
- package/build/assets/{settings-modal-AzEF1QPP.js → settings-modal-yStgEh2o.js} +1 -1
- package/build/assets/settings-service.api-9_xdv_mh.js +1 -0
- package/build/assets/{settings-switch-CQE0EGC-.js → settings-switch-B78Khmyz.js} +1 -1
- package/build/assets/{settings-utils-ClYOkbbI.js → settings-utils-8GIIgOQL.js} +1 -1
- package/build/assets/shared-conversation-DM96X4KV.js +1 -0
- package/build/assets/shield-check-DO7wa_eu.js +1 -0
- package/build/assets/{sidebar-layout-D3hE08wK.js → sidebar-layout-EPfWxk11.js} +1 -1
- package/build/assets/sidebar-mobile-menu-toggle-D5GR5xT9.js +1 -0
- package/build/assets/sidebar-nav-link-_t4_Ef-9.js +1 -0
- package/build/assets/{sidebar-onboarding-checklist-storage-3qYflszY.js → sidebar-onboarding-checklist-storage-DbDX-Wvj.js} +1 -1
- package/build/assets/sidebar-store-CSDFK0W5.js +1 -0
- package/build/assets/{skill-card-pill-row-CFxjoqxn.js → skill-card-pill-row-989y15jV.js} +1 -1
- package/build/assets/skill-enablement-DXeaImBz.js +1 -0
- package/build/assets/skill-filter-BBeZ4JEP.js +2 -0
- package/build/assets/{skill-icon-badge-CPQJ6A-I.js → skill-icon-badge-BDhQ-tQ0.js} +1 -1
- package/build/assets/skill-scope-Dz3kPH3P.js +1 -0
- package/build/assets/skills-plugins-e3CYGdUJ.js +1 -0
- package/build/assets/skills-settings-3e-FuHw_.js +1 -0
- package/build/assets/styled-tooltip-Pd22BIvr.js +1 -0
- package/build/assets/{task-list-tab-04GNQuii.js → task-list-tab-3Jg8ywch.js} +1 -1
- package/build/assets/{terminal-Cj0iHIW7.js → terminal-onXx0_Qz.js} +1 -1
- package/build/assets/toggle-switch-lwQtxDcm.js +1 -0
- package/build/assets/trash-2-ZhKuTLiz.js +1 -0
- package/build/assets/trash-B6OIe4yX.js +1 -0
- package/build/assets/triangle-alert-BajLPpQg.js +1 -0
- package/build/assets/{typography-SgFy466J.js → typography-HLLg_FAn.js} +1 -1
- package/build/assets/usage-tab-Cm-9j3UK.js +1 -0
- package/build/assets/use-acp-credential-form-BARcvjYE.js +1 -0
- package/build/assets/use-activate-agent-profile-BLKML6vQ.js +1 -0
- package/build/assets/use-agent-profiles-1P91KSXz.js +1 -0
- package/build/assets/{use-automation-health-BxXdzZMP.js → use-automation-health-BZkQNEA8.js} +1 -1
- package/build/assets/use-automation-permissions-B_RpvL-s.js +1 -0
- package/build/assets/{use-automations-zYb0dUny.js → use-automations-Cg0PDIZr.js} +1 -1
- package/build/assets/{use-can-manage-org-profiles-BWMahtUh.js → use-can-manage-org-profiles-BbN6KfDr.js} +1 -1
- package/build/assets/use-canvas-extensions-CFUpHat6.js +1 -0
- package/build/assets/{use-cloud-current-user-id-CPHMDG-C.js → use-cloud-current-user-id-Dk0rjr63.js} +1 -1
- package/build/assets/use-config-DpafU_QP.js +1 -0
- package/build/assets/use-create-conversation-1YgmAHt-.js +1 -0
- package/build/assets/use-create-secret-D8p9ybQj.js +1 -0
- package/build/assets/{use-get-secrets-BT4ihRwj.js → use-get-secrets-CQ4b0qK8.js} +1 -1
- package/build/assets/use-is-authed-BRPjCRKM.js +1 -0
- package/build/assets/{use-launch-skill-in-chat-BYjYihBP.js → use-launch-skill-in-chat-DeYa1tFM.js} +1 -1
- package/build/assets/use-llm-configured-DGm8FiRR.js +1 -0
- package/build/assets/use-llm-profiles-BTTtpW4z.js +1 -0
- package/build/assets/use-manifest-capabilities-AOWGcu0j.js +1 -0
- package/build/assets/use-onboarding-completion-CoINurkm.js +1 -0
- package/build/assets/use-pinned-home-route-D6krwXjy.js +1 -0
- package/build/assets/use-plugins-marketplace-mLsIDhBv.js +1 -0
- package/build/assets/use-save-agent-profile-CxyO9YG-.js +1 -0
- package/build/assets/{use-save-settings-CUZW6yXP.js → use-save-settings-3U5K9-8x.js} +1 -1
- package/build/assets/use-settings-Dn00UISA.js +1 -0
- package/build/assets/use-settings-nav-items-vrjxTqcu.js +16 -0
- package/build/assets/use-tracking-B9prBsrq.js +3 -0
- package/build/assets/{use-user-conversation-DT0_QCnL.js → use-user-conversation-ZWlXtbZb.js} +1 -1
- package/build/assets/{useInfiniteQuery-CgeUQPfs.js → useInfiniteQuery-BzrRqjLg.js} +1 -1
- package/build/assets/{useMutation-DFnzkf6f.js → useMutation-CJuK90oc.js} +1 -1
- package/build/assets/{useQueries-BhbrGEf1.js → useQueries-CykmpT-a.js} +1 -1
- package/build/assets/{useQuery-BXWbZBZl.js → useQuery-S6j94er1.js} +1 -1
- package/build/assets/utils-BOco8mxR.js +1 -0
- package/build/assets/{vendor~conversation-panel~conversation-CTvDDiXg.js → vendor~conversation-panel~conversation-4eJ0tml3.js} +1 -1
- package/build/assets/{vendor~entry.client-BFE7Llz9.js → vendor~entry.client-CoCfUXUF.js} +1 -1
- package/build/assets/{vendor~entry.client-BaKt_PIp.js → vendor~entry.client-DA2izTjq.js} +1 -1
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~b0x1wrp2-Z0lly3FE.js +2 -0
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-BfkNGovw.js +185 -0
- package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew3u153i-rfV8mQ9m.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-DnDoaYNi.js} +1 -1
- package/build/assets/{vendor~index-home~home~conversation-panel~conversation-BTyukeM-.js → vendor~index-home~home~conversation-panel~conversation-CSFLzmTN.js} +1 -1
- package/build/assets/vendor~root-layout-n8XCEXG8.js +1 -0
- package/build/assets/{vendor~root-layout~conversation-panel~conversation-BYAWJwQX.js → vendor~root-layout~conversation-panel~conversation-3Idg1_U3.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-CHaLEBVR.js → vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-DkPlXWl9.js} +1 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation-DgQ564nC.js +1 -0
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-CxhwKuAd.js +1 -0
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-Dtu7BpYk.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~inibp4qe-CnsDDzeE.js} +2 -2
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iyia17eu-CV850oio.js +1 -0
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-DonTKfQD.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-BPjI-atc.js} +125 -15
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-BgxDvUcf.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-C7HiY4Ae.js} +42 -3
- package/build/assets/{verification-settings-Bj6bo097.js → verification-settings-u2POabjH.js} +1 -1
- package/build/assets/{wrench-hi7Q13dF.js → wrench-CkgI4rxA.js} +1 -1
- package/build/assets/x-By6qCmtY.js +1 -0
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +94 -25
- package/build/locales/ca/openhands.json +94 -25
- package/build/locales/de/openhands.json +94 -25
- package/build/locales/en/openhands.json +94 -25
- package/build/locales/es/openhands.json +94 -25
- package/build/locales/fr/openhands.json +94 -25
- package/build/locales/it/openhands.json +94 -25
- package/build/locales/ja/openhands.json +94 -25
- package/build/locales/ko-KR/openhands.json +94 -25
- package/build/locales/no/openhands.json +94 -25
- package/build/locales/pt/openhands.json +94 -25
- package/build/locales/tr/openhands.json +94 -25
- package/build/locales/uk/openhands.json +94 -25
- package/build/locales/zh-CN/openhands.json +94 -25
- package/build/locales/zh-TW/openhands.json +94 -25
- package/config/defaults.json +9 -5
- package/dist/api/agent-profiles-service/profile-field-support.d.ts +26 -0
- package/dist/api/agent-server-adapter.cjs +3 -3
- package/dist/api/agent-server-adapter.cjs.map +1 -1
- package/dist/api/agent-server-adapter.d.ts +72 -12
- package/dist/api/agent-server-adapter.js +249 -145
- 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.d.ts +21 -0
- package/dist/api/agent-server-compatibility.js +52 -38
- package/dist/api/agent-server-compatibility.js.map +1 -1
- package/dist/api/agent-server-config.cjs +1 -1
- package/dist/api/agent-server-config.cjs.map +1 -1
- package/dist/api/agent-server-config.d.ts +32 -0
- package/dist/api/agent-server-config.js +21 -5
- package/dist/api/agent-server-config.js.map +1 -1
- package/dist/api/automation-service/automation-service.api.cjs +1 -1
- package/dist/api/automation-service/automation-service.api.cjs.map +1 -1
- package/dist/api/automation-service/automation-service.api.d.ts +2 -2
- package/dist/api/automation-service/automation-service.api.js +7 -7
- package/dist/api/automation-service/automation-service.api.js.map +1 -1
- package/dist/api/canvas-extensions-service.cjs +1 -0
- package/dist/api/canvas-extensions-service.d.ts +22 -0
- package/dist/api/canvas-extensions-service.js +4 -0
- package/dist/api/cloud/conversation-service.api.cjs +1 -1
- package/dist/api/cloud/conversation-service.api.cjs.map +1 -1
- package/dist/api/cloud/conversation-service.api.d.ts +6 -0
- package/dist/api/cloud/conversation-service.api.js +14 -6
- package/dist/api/cloud/conversation-service.api.js.map +1 -1
- package/dist/api/cloud/provider-connections-service.api.cjs +2 -0
- package/dist/api/cloud/provider-connections-service.api.cjs.map +1 -0
- package/dist/api/cloud/provider-connections-service.api.d.ts +5 -0
- package/dist/api/cloud/provider-connections-service.api.js +50 -0
- package/dist/api/cloud/provider-connections-service.api.js.map +1 -0
- package/dist/api/cloud/skills-service.api.cjs +1 -1
- package/dist/api/cloud/skills-service.api.cjs.map +1 -1
- package/dist/api/cloud/skills-service.api.d.ts +10 -0
- package/dist/api/cloud/skills-service.api.js +11 -1
- package/dist/api/cloud/skills-service.api.js.map +1 -1
- package/dist/api/conversation-file-upload.api.cjs +1 -1
- package/dist/api/conversation-file-upload.api.js +10 -10
- package/dist/api/conversation-metadata-store.cjs +1 -1
- package/dist/api/conversation-metadata-store.cjs.map +1 -1
- package/dist/api/conversation-metadata-store.d.ts +24 -0
- package/dist/api/conversation-metadata-store.js +10 -2
- 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 +31 -0
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +188 -128
- package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
- package/dist/api/event-service/event-service.api.cjs +1 -1
- package/dist/api/event-service/event-service.api.js +12 -12
- package/dist/api/git-service/agent-server-git-service.api.cjs +1 -1
- package/dist/api/git-service/agent-server-git-service.api.js +8 -8
- package/dist/api/hooks-service.cjs +2 -0
- package/dist/api/hooks-service.cjs.map +1 -0
- package/dist/api/hooks-service.d.ts +13 -0
- package/dist/api/hooks-service.js +20 -0
- package/dist/api/hooks-service.js.map +1 -0
- package/dist/api/provider-connections-service/provider-connections-service.api.cjs +1 -1
- package/dist/api/provider-connections-service/provider-connections-service.api.cjs.map +1 -1
- package/dist/api/provider-connections-service/provider-connections-service.api.js +25 -16
- package/dist/api/provider-connections-service/provider-connections-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.js +8 -8
- 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.d.ts +5 -2
- package/dist/api/settings-service/settings-service.api.js +20 -11
- 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.d.ts +7 -0
- package/dist/api/skills-service.js +11 -8
- package/dist/api/skills-service.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/critic-result-display.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/critic-result-display.js +5 -5
- package/dist/components/conversation-events/chat/event-message-components/event-group.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/event-group.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/event-group.js +40 -36
- package/dist/components/conversation-events/chat/event-message-components/event-group.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/finish-event-message.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/finish-event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/finish-event-message.js +2 -1
- package/dist/components/conversation-events/chat/event-message-components/finish-event-message.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.d.ts +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.js +28 -28
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/thought-event-message.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/thought-event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/thought-event-message.js +2 -1
- package/dist/components/conversation-events/chat/event-message-components/thought-event-message.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.d.ts +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js +37 -37
- 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 +79 -70
- package/dist/components/conversation-events/chat/event-message.js.map +1 -1
- package/dist/components/conversation-events/chat/messages.cjs +1 -1
- package/dist/components/conversation-events/chat/messages.cjs.map +1 -1
- package/dist/components/conversation-events/chat/messages.js +28 -27
- package/dist/components/conversation-events/chat/messages.js.map +1 -1
- package/dist/components/features/automations/automation-card.cjs +1 -1
- package/dist/components/features/automations/automation-card.cjs.map +1 -1
- package/dist/components/features/automations/automation-card.js +118 -102
- package/dist/components/features/automations/automation-card.js.map +1 -1
- package/dist/components/features/automations/automation-list-row.cjs +1 -1
- package/dist/components/features/automations/automation-list-row.cjs.map +1 -1
- package/dist/components/features/automations/automation-list-row.js +88 -77
- package/dist/components/features/automations/automation-list-row.js.map +1 -1
- package/dist/components/features/automations/detail/detail-header.d.ts +3 -1
- package/dist/components/features/automations/detail/run-phase.cjs +2 -0
- package/dist/components/features/automations/detail/run-phase.cjs.map +1 -0
- package/dist/components/features/automations/detail/run-phase.d.ts +89 -0
- package/dist/components/features/automations/detail/run-phase.js +72 -0
- package/dist/components/features/automations/detail/run-phase.js.map +1 -0
- package/dist/components/features/automations/detail/run-status-badge.cjs +1 -1
- package/dist/components/features/automations/detail/run-status-badge.cjs.map +1 -1
- package/dist/components/features/automations/detail/run-status-badge.d.ts +2 -2
- package/dist/components/features/automations/detail/run-status-badge.js +82 -53
- package/dist/components/features/automations/detail/run-status-badge.js.map +1 -1
- package/dist/components/features/automations/kebab-menu.cjs +1 -1
- package/dist/components/features/automations/kebab-menu.cjs.map +1 -1
- package/dist/components/features/automations/kebab-menu.js +9 -5
- package/dist/components/features/automations/kebab-menu.js.map +1 -1
- package/dist/components/features/automations/recommended-automations-launcher.cjs +1 -1
- package/dist/components/features/automations/recommended-automations-launcher.cjs.map +1 -1
- package/dist/components/features/automations/recommended-automations-launcher.js +12 -12
- package/dist/components/features/automations/recommended-automations-launcher.js.map +1 -1
- package/dist/components/features/automations/recommended-automations-section.cjs +1 -1
- package/dist/components/features/automations/recommended-automations-section.js +9 -9
- 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.js +5 -11
- package/dist/components/features/backends/backend-form-modal.js.map +1 -1
- package/dist/components/features/backends/backend-selector.cjs +1 -1
- package/dist/components/features/backends/backend-selector.cjs.map +1 -1
- package/dist/components/features/backends/backend-selector.js +133 -122
- package/dist/components/features/backends/backend-selector.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 +29 -29
- package/dist/components/features/backends/manage-backends-modal.js.map +1 -1
- package/dist/components/features/canvas-extensions/add-canvas-extension-modal.d.ts +6 -0
- package/dist/components/features/canvas-extensions/canvas-extension-card.d.ts +9 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.cjs +2 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.cjs.map +1 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.d.ts +23 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.js +19 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.js.map +1 -0
- package/dist/components/features/chat/change-agent-button.cjs +1 -1
- package/dist/components/features/chat/change-agent-button.js +4 -4
- 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 +107 -104
- package/dist/components/features/chat/chat-interface.js.map +1 -1
- package/dist/components/features/chat/chat-markdown-path-code.cjs +3 -0
- package/dist/components/features/chat/chat-markdown-path-code.cjs.map +1 -0
- package/dist/components/features/chat/chat-markdown-path-code.d.ts +27 -0
- package/dist/components/features/chat/chat-markdown-path-code.js +72 -0
- package/dist/components/features/chat/chat-markdown-path-code.js.map +1 -0
- package/dist/components/features/chat/chat-message.cjs +1 -1
- package/dist/components/features/chat/chat-message.cjs.map +1 -1
- package/dist/components/features/chat/chat-message.d.ts +2 -1
- package/dist/components/features/chat/chat-message.js +88 -79
- package/dist/components/features/chat/chat-message.js.map +1 -1
- package/dist/components/features/chat/components/context-window-meter.cjs +1 -1
- package/dist/components/features/chat/components/context-window-meter.js +4 -4
- package/dist/components/features/chat/confirmation-mode-enabled.cjs +1 -1
- package/dist/components/features/chat/confirmation-mode-enabled.js +4 -4
- package/dist/components/features/chat/generic-event-message.cjs +1 -1
- package/dist/components/features/chat/generic-event-message.cjs.map +1 -1
- package/dist/components/features/chat/generic-event-message.d.ts +2 -1
- package/dist/components/features/chat/generic-event-message.js +41 -22
- package/dist/components/features/chat/generic-event-message.js.map +1 -1
- 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/path-component.cjs +1 -1
- package/dist/components/features/chat/path-component.cjs.map +1 -1
- package/dist/components/features/chat/path-component.d.ts +8 -2
- package/dist/components/features/chat/path-component.js +33 -21
- package/dist/components/features/chat/path-component.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js +38 -43
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.d.ts +8 -5
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js +22 -16
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.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.d.ts +4 -0
- package/dist/components/features/chat/user-message-body.js +30 -24
- package/dist/components/features/chat/user-message-body.js.map +1 -1
- package/dist/components/features/conversation/conversation-overview-git-section.cjs +1 -1
- package/dist/components/features/conversation/conversation-overview-git-section.js +4 -4
- package/dist/components/features/conversation/conversation-overview-skills-panel.cjs +1 -1
- package/dist/components/features/conversation/conversation-overview-skills-panel.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-overview-skills-panel.js +63 -81
- package/dist/components/features/conversation/conversation-overview-skills-panel.js.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js +77 -78
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js +96 -96
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.d.ts +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.js +3 -3
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.js.map +1 -1
- package/dist/components/features/conversation-panel/advanced-conversation-options-modal.cjs +2 -0
- package/dist/components/features/conversation-panel/advanced-conversation-options-modal.cjs.map +1 -0
- package/dist/components/features/conversation-panel/advanced-conversation-options-modal.d.ts +21 -0
- package/dist/components/features/conversation-panel/advanced-conversation-options-modal.js +239 -0
- package/dist/components/features/conversation-panel/advanced-conversation-options-modal.js.map +1 -0
- package/dist/components/features/conversation-panel/conversation-active-tag-filters.cjs +2 -0
- package/dist/components/features/conversation-panel/conversation-active-tag-filters.cjs.map +1 -0
- package/dist/components/features/conversation-panel/conversation-active-tag-filters.d.ts +28 -0
- package/dist/components/features/conversation-panel/conversation-active-tag-filters.js +69 -0
- package/dist/components/features/conversation-panel/conversation-active-tag-filters.js.map +1 -0
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js +19 -18
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.js +91 -80
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.js +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.d.ts +7 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.js +87 -81
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.js +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.js +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-layouts-menu.cjs +2 -0
- package/dist/components/features/conversation-panel/conversation-layouts-menu.cjs.map +1 -0
- package/dist/components/features/conversation-panel/conversation-layouts-menu.d.ts +29 -0
- package/dist/components/features/conversation-panel/conversation-layouts-menu.js +177 -0
- package/dist/components/features/conversation-panel/conversation-layouts-menu.js.map +1 -0
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.d.ts +37 -0
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js +85 -45
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.js +296 -290
- package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
- package/dist/components/features/conversation-panel/edit-conversation-tags-modal.cjs +2 -0
- package/dist/components/features/conversation-panel/edit-conversation-tags-modal.cjs.map +1 -0
- package/dist/components/features/conversation-panel/edit-conversation-tags-modal.d.ts +22 -0
- package/dist/components/features/conversation-panel/edit-conversation-tags-modal.js +153 -0
- package/dist/components/features/conversation-panel/edit-conversation-tags-modal.js.map +1 -0
- package/dist/components/features/conversation-panel/hide-older-conversations-row.cjs +2 -0
- package/dist/components/features/conversation-panel/hide-older-conversations-row.cjs.map +1 -0
- package/dist/components/features/conversation-panel/hide-older-conversations-row.d.ts +6 -0
- package/dist/components/features/conversation-panel/hide-older-conversations-row.js +65 -0
- package/dist/components/features/conversation-panel/hide-older-conversations-row.js.map +1 -0
- package/dist/components/features/conversation-panel/menu-row.cjs +1 -1
- package/dist/components/features/conversation-panel/menu-row.cjs.map +1 -1
- package/dist/components/features/conversation-panel/menu-row.d.ts +11 -1
- package/dist/components/features/conversation-panel/menu-row.js +27 -16
- package/dist/components/features/conversation-panel/menu-row.js.map +1 -1
- package/dist/components/features/conversation-panel/skills-modal.cjs +1 -1
- package/dist/components/features/conversation-panel/skills-modal.cjs.map +1 -1
- package/dist/components/features/conversation-panel/skills-modal.js +29 -28
- package/dist/components/features/conversation-panel/skills-modal.js.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs +1 -1
- package/dist/components/features/files-tab/file-content-viewer.js +5 -5
- package/dist/components/features/home/featured-automations/automation-health-indicator.cjs +1 -1
- package/dist/components/features/home/featured-automations/automation-health-indicator.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/automation-health-indicator.js +1 -1
- package/dist/components/features/home/featured-automations/automation-health-indicator.js.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.d.ts +4 -3
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js +22 -25
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.d.ts +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js +15 -15
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-health.cjs +1 -1
- package/dist/components/features/home/featured-automations/automation-run-health.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-health.d.ts +5 -3
- package/dist/components/features/home/featured-automations/automation-run-health.js +30 -23
- package/dist/components/features/home/featured-automations/automation-run-health.js.map +1 -1
- package/dist/components/features/home/featured-automations/home-automation-activity.d.ts +3 -2
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs +1 -1
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.d.ts +1 -1
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js +59 -37
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js.map +1 -1
- package/dist/components/features/manifest/manifest-form-field.d.ts +3 -1
- package/dist/components/features/manifest/manifest-review-step.d.ts +3 -1
- package/dist/components/features/onboarding/onboarding-host.d.ts +3 -4
- package/dist/components/features/onboarding/steps/setup-llm-step.d.ts +5 -9
- package/dist/components/features/settings/acp-auth-status-banner.d.ts +23 -6
- package/dist/components/features/settings/cloud-settings-link.cjs +1 -1
- package/dist/components/features/settings/cloud-settings-link.cjs.map +1 -1
- package/dist/components/features/settings/cloud-settings-link.js +5 -3
- package/dist/components/features/settings/cloud-settings-link.js.map +1 -1
- package/dist/components/features/settings/integrations-settings-link.cjs +1 -1
- package/dist/components/features/settings/integrations-settings-link.cjs.map +1 -1
- package/dist/components/features/settings/integrations-settings-link.d.ts +3 -1
- package/dist/components/features/settings/integrations-settings-link.js +20 -17
- package/dist/components/features/settings/integrations-settings-link.js.map +1 -1
- 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 +2 -1
- package/dist/components/features/settings/llm-profiles/profiles-body.d.ts +2 -2
- package/dist/components/features/settings/llm-profiles/provider-connection-modal.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/provider-connection-modal.js +3 -0
- package/dist/components/features/settings/sdk-settings/field-help.cjs +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.cjs.map +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.d.ts +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.js +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.js.map +1 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs +1 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs.map +1 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.d.ts +8 -7
- package/dist/components/features/settings/sdk-settings/sdk-section-page.js +172 -142
- package/dist/components/features/settings/sdk-settings/sdk-section-page.js.map +1 -1
- package/dist/components/features/settings/secrets-settings/secret-form.cjs +1 -1
- package/dist/components/features/settings/secrets-settings/secret-form.cjs.map +1 -1
- package/dist/components/features/settings/secrets-settings/secret-form.js +38 -25
- package/dist/components/features/settings/secrets-settings/secret-form.js.map +1 -1
- 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-nav-link.cjs +1 -1
- package/dist/components/features/sidebar/sidebar-nav-link.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar-nav-link.d.ts +10 -1
- package/dist/components/features/sidebar/sidebar-nav-link.js +54 -36
- package/dist/components/features/sidebar/sidebar-nav-link.js.map +1 -1
- 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 +3 -1
- package/dist/components/features/sidebar/sidebar-rail-body.js +98 -58
- 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 +44 -43
- package/dist/components/features/sidebar/sidebar.js.map +1 -1
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.cjs +1 -1
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.js +3 -3
- package/dist/components/features/skills/build-skill-pills.cjs +1 -1
- package/dist/components/features/skills/build-skill-pills.cjs.map +1 -1
- package/dist/components/features/skills/build-skill-pills.js +60 -52
- package/dist/components/features/skills/build-skill-pills.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 +54 -43
- package/dist/components/features/skills/extensions-navigation.js.map +1 -1
- package/dist/components/features/skills/skill-filter.cjs +1 -1
- package/dist/components/features/skills/skill-filter.cjs.map +1 -1
- package/dist/components/features/skills/skill-filter.d.ts +8 -3
- package/dist/components/features/skills/skill-filter.js +69 -52
- package/dist/components/features/skills/skill-filter.js.map +1 -1
- package/dist/components/shared/buttons/styled-tooltip.cjs +1 -1
- package/dist/components/shared/buttons/styled-tooltip.cjs.map +1 -1
- package/dist/components/shared/buttons/styled-tooltip.d.ts +2 -1
- package/dist/components/shared/buttons/styled-tooltip.js +2 -1
- package/dist/components/shared/buttons/styled-tooltip.js.map +1 -1
- package/dist/components/shared/filters/enum-filter-dropdown.cjs +1 -1
- package/dist/components/shared/filters/enum-filter-dropdown.cjs.map +1 -1
- package/dist/components/shared/filters/enum-filter-dropdown.d.ts +5 -1
- package/dist/components/shared/filters/enum-filter-dropdown.js +14 -14
- package/dist/components/shared/filters/enum-filter-dropdown.js.map +1 -1
- package/dist/components/shared/modals/confirmation-modal.cjs +1 -1
- package/dist/components/shared/modals/confirmation-modal.cjs.map +1 -1
- package/dist/components/shared/modals/confirmation-modal.d.ts +2 -1
- package/dist/components/shared/modals/confirmation-modal.js +8 -8
- package/dist/components/shared/modals/confirmation-modal.js.map +1 -1
- package/dist/components/shared/modals/settings/model-selector.cjs +1 -1
- package/dist/components/shared/modals/settings/model-selector.js +27 -27
- package/dist/components/shared/modals/settings/settings-form.cjs +1 -1
- package/dist/components/shared/modals/settings/settings-form.js +8 -8
- package/dist/config/defaults.cjs +1 -1
- package/dist/config/defaults.cjs.map +1 -1
- package/dist/config/defaults.js +9 -5
- package/dist/config/defaults.js.map +1 -1
- package/dist/constants/settings-nav.d.ts +8 -0
- 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.d.ts +5 -0
- package/dist/contexts/conversation-websocket-context.js +194 -198
- package/dist/contexts/conversation-websocket-context.js.map +1 -1
- package/dist/contexts/websocket-provider-wrapper.cjs +1 -1
- package/dist/contexts/websocket-provider-wrapper.cjs.map +1 -1
- package/dist/contexts/websocket-provider-wrapper.js +31 -15
- package/dist/contexts/websocket-provider-wrapper.js.map +1 -1
- package/dist/extensions/canvas-extension-module-loader.d.ts +11 -0
- package/dist/hooks/chat/record-model-switch-message.cjs +1 -1
- package/dist/hooks/chat/record-model-switch-message.cjs.map +1 -1
- package/dist/hooks/chat/record-model-switch-message.d.ts +31 -0
- package/dist/hooks/chat/record-model-switch-message.js +25 -12
- package/dist/hooks/chat/record-model-switch-message.js.map +1 -1
- package/dist/hooks/chat/use-plan-mode-interceptor.cjs +2 -0
- package/dist/hooks/chat/use-plan-mode-interceptor.cjs.map +1 -0
- package/dist/hooks/chat/use-plan-mode-interceptor.d.ts +16 -0
- package/dist/hooks/chat/use-plan-mode-interceptor.js +43 -0
- package/dist/hooks/chat/use-plan-mode-interceptor.js.map +1 -0
- package/dist/hooks/mutation/use-create-conversation.cjs +1 -1
- package/dist/hooks/mutation/use-create-conversation.cjs.map +1 -1
- package/dist/hooks/mutation/use-create-conversation.js +5 -1
- package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
- package/dist/hooks/mutation/use-manage-canvas-extensions.d.ts +12 -0
- package/dist/hooks/mutation/use-read-conversation-file.cjs +1 -1
- package/dist/hooks/mutation/use-read-conversation-file.cjs.map +1 -1
- package/dist/hooks/mutation/use-read-conversation-file.js +11 -4
- package/dist/hooks/mutation/use-read-conversation-file.js.map +1 -1
- package/dist/hooks/mutation/use-save-settings.cjs +1 -1
- package/dist/hooks/mutation/use-save-settings.js +3 -3
- 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.js +13 -25
- package/dist/hooks/mutation/use-switch-llm-profile.js.map +1 -1
- package/dist/hooks/mutation/use-update-conversation-tags.cjs +2 -0
- package/dist/hooks/mutation/use-update-conversation-tags.cjs.map +1 -0
- package/dist/hooks/mutation/use-update-conversation-tags.d.ts +8 -0
- package/dist/hooks/mutation/use-update-conversation-tags.js +45 -0
- package/dist/hooks/mutation/use-update-conversation-tags.js.map +1 -0
- package/dist/hooks/query/concurrency-limiter.cjs +2 -0
- package/dist/hooks/query/concurrency-limiter.cjs.map +1 -0
- package/dist/hooks/query/concurrency-limiter.d.ts +22 -0
- package/dist/hooks/query/concurrency-limiter.js +29 -0
- package/dist/hooks/query/concurrency-limiter.js.map +1 -0
- 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 +10 -0
- package/dist/hooks/query/query-keys.js +2 -2
- 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.js +4 -4
- package/dist/hooks/query/use-automation-sdk-version.cjs +1 -1
- package/dist/hooks/query/use-automation-sdk-version.cjs.map +1 -1
- package/dist/hooks/query/use-automation-sdk-version.d.ts +0 -1
- package/dist/hooks/query/use-automation-sdk-version.js +30 -55
- package/dist/hooks/query/use-automation-sdk-version.js.map +1 -1
- package/dist/hooks/query/use-automations.cjs.map +1 -1
- package/dist/hooks/query/use-automations.js.map +1 -1
- package/dist/hooks/query/use-backends-health.cjs +1 -1
- package/dist/hooks/query/use-backends-health.cjs.map +1 -1
- package/dist/hooks/query/use-backends-health.d.ts +1 -1
- package/dist/hooks/query/use-backends-health.js +50 -64
- package/dist/hooks/query/use-backends-health.js.map +1 -1
- package/dist/hooks/query/use-canvas-extensions.cjs +1 -0
- package/dist/hooks/query/use-canvas-extensions.d.ts +5 -0
- package/dist/hooks/query/use-canvas-extensions.js +3 -0
- package/dist/hooks/query/use-commit-changes.cjs +1 -1
- package/dist/hooks/query/use-commit-changes.js +4 -4
- package/dist/hooks/query/use-conversation-skills.cjs +1 -1
- package/dist/hooks/query/use-conversation-skills.cjs.map +1 -1
- package/dist/hooks/query/use-conversation-skills.d.ts +14 -5
- package/dist/hooks/query/use-conversation-skills.js +20 -4
- package/dist/hooks/query/use-conversation-skills.js.map +1 -1
- package/dist/hooks/query/use-latest-automation-runs.cjs +1 -1
- package/dist/hooks/query/use-latest-automation-runs.js +1 -0
- package/dist/hooks/query/use-paginated-conversations.cjs +1 -1
- package/dist/hooks/query/use-paginated-conversations.cjs.map +1 -1
- package/dist/hooks/query/use-paginated-conversations.js +19 -16
- package/dist/hooks/query/use-paginated-conversations.js.map +1 -1
- package/dist/hooks/query/use-provider-connections.cjs +1 -1
- package/dist/hooks/query/use-provider-connections.cjs.map +1 -1
- package/dist/hooks/query/use-provider-connections.d.ts +6 -3
- package/dist/hooks/query/use-provider-connections.js +7 -3
- package/dist/hooks/query/use-provider-connections.js.map +1 -1
- package/dist/hooks/query/use-search-providers.cjs +1 -1
- package/dist/hooks/query/use-search-providers.cjs.map +1 -1
- package/dist/hooks/query/use-search-providers.js +17 -10
- package/dist/hooks/query/use-search-providers.js.map +1 -1
- package/dist/hooks/query/use-sub-conversations.cjs +1 -1
- package/dist/hooks/query/use-sub-conversations.cjs.map +1 -1
- package/dist/hooks/query/use-sub-conversations.js +16 -16
- package/dist/hooks/query/use-sub-conversations.js.map +1 -1
- package/dist/hooks/query/use-unified-get-git-changes.cjs +1 -1
- package/dist/hooks/query/use-unified-get-git-changes.js +4 -4
- package/dist/hooks/query/use-unified-git-commits.cjs +1 -1
- package/dist/hooks/query/use-unified-git-commits.js +4 -4
- package/dist/hooks/query/use-unified-git-diff.cjs +1 -1
- package/dist/hooks/query/use-unified-git-diff.js +4 -4
- package/dist/hooks/query/use-unified-vscode-url.cjs +1 -1
- package/dist/hooks/query/use-unified-vscode-url.cjs.map +1 -1
- package/dist/hooks/query/use-unified-vscode-url.d.ts +1 -0
- package/dist/hooks/query/use-unified-vscode-url.js +40 -26
- package/dist/hooks/query/use-unified-vscode-url.js.map +1 -1
- package/dist/hooks/query/use-workspace-file-content.cjs +1 -1
- package/dist/hooks/query/use-workspace-file-content.js +5 -5
- package/dist/hooks/query/use-workspace-files.cjs +1 -1
- package/dist/hooks/query/use-workspace-files.js +6 -6
- package/dist/hooks/use-acp-credential-form.d.ts +6 -0
- package/dist/hooks/use-acp-model-context.cjs +1 -1
- package/dist/hooks/use-acp-model-context.js +3 -3
- package/dist/hooks/use-agent-state.cjs +1 -1
- package/dist/hooks/use-agent-state.cjs.map +1 -1
- package/dist/hooks/use-agent-state.d.ts +17 -1
- package/dist/hooks/use-agent-state.js +19 -9
- package/dist/hooks/use-agent-state.js.map +1 -1
- package/dist/hooks/use-automation-permissions.cjs +2 -0
- package/dist/hooks/use-automation-permissions.cjs.map +1 -0
- package/dist/hooks/use-automation-permissions.d.ts +43 -0
- package/dist/hooks/use-automation-permissions.js +52 -0
- package/dist/hooks/use-automation-permissions.js.map +1 -0
- package/dist/hooks/use-chat-input-model-state.cjs +1 -1
- package/dist/hooks/use-chat-input-model-state.js +3 -3
- package/dist/hooks/use-conversation-overview-git-diff-stats.cjs +1 -1
- package/dist/hooks/use-conversation-overview-git-diff-stats.js +4 -4
- 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.d.ts +3 -1
- package/dist/hooks/use-handle-plan-click.js +85 -26
- package/dist/hooks/use-handle-plan-click.js.map +1 -1
- package/dist/hooks/use-home-automation-actions.cjs +1 -1
- package/dist/hooks/use-home-automation-actions.cjs.map +1 -1
- package/dist/hooks/use-home-automation-actions.js +1 -0
- package/dist/hooks/use-home-automation-actions.js.map +1 -1
- package/dist/hooks/use-llm-configured.cjs +1 -1
- package/dist/hooks/use-llm-configured.js +3 -3
- package/dist/hooks/use-manifest-preflight.d.ts +1 -1
- package/dist/hooks/use-pinned-home-route.cjs +2 -0
- package/dist/hooks/use-pinned-home-route.cjs.map +1 -0
- package/dist/hooks/use-pinned-home-route.d.ts +33 -0
- package/dist/hooks/use-pinned-home-route.js +34 -0
- package/dist/hooks/use-pinned-home-route.js.map +1 -0
- package/dist/hooks/use-skill-enablement.cjs +2 -0
- package/dist/hooks/use-skill-enablement.cjs.map +1 -0
- package/dist/hooks/use-skill-enablement.d.ts +14 -0
- package/dist/hooks/use-skill-enablement.js +80 -0
- package/dist/hooks/use-skill-enablement.js.map +1 -0
- package/dist/hooks/use-unified-websocket-status.cjs +1 -1
- package/dist/hooks/use-unified-websocket-status.cjs.map +1 -1
- package/dist/hooks/use-unified-websocket-status.d.ts +7 -0
- package/dist/hooks/use-unified-websocket-status.js +5 -1
- package/dist/hooks/use-unified-websocket-status.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 +83 -14
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +3 -3
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +1575 -402
- package/dist/i18n/translation.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +15 -14
- package/dist/lib/index.cjs +1 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +1 -0
- package/dist/locales/ar/openhands.json +94 -25
- package/dist/locales/ca/openhands.json +94 -25
- package/dist/locales/de/openhands.json +94 -25
- package/dist/locales/en/openhands.json +94 -25
- package/dist/locales/es/openhands.json +94 -25
- package/dist/locales/fr/openhands.json +94 -25
- package/dist/locales/it/openhands.json +94 -25
- package/dist/locales/ja/openhands.json +94 -25
- package/dist/locales/ko-KR/openhands.json +94 -25
- package/dist/locales/no/openhands.json +94 -25
- package/dist/locales/pt/openhands.json +94 -25
- package/dist/locales/tr/openhands.json +94 -25
- package/dist/locales/uk/openhands.json +94 -25
- package/dist/locales/zh-CN/openhands.json +94 -25
- package/dist/locales/zh-TW/openhands.json +94 -25
- package/dist/manifests/automation-insights.cjs.map +1 -1
- package/dist/manifests/automation-insights.d.ts +10 -2
- package/dist/manifests/automation-insights.js.map +1 -1
- package/dist/manifests/automation-interface.cjs +1 -1
- package/dist/manifests/automation-interface.cjs.map +1 -1
- package/dist/manifests/automation-interface.d.ts +6 -0
- package/dist/manifests/automation-interface.js +11 -8
- package/dist/manifests/automation-interface.js.map +1 -1
- package/dist/manifests/automation-setup.cjs +1 -1
- package/dist/manifests/automation-setup.cjs.map +1 -1
- package/dist/manifests/automation-setup.d.ts +9 -16
- package/dist/manifests/automation-setup.js +17 -7
- package/dist/manifests/automation-setup.js.map +1 -1
- package/dist/manifests/manifest-actions.d.ts +1 -1
- package/dist/manifests/manifest-capabilities.d.ts +3 -1
- package/dist/manifests/manifest-local-validation.cjs +2 -0
- package/dist/manifests/manifest-local-validation.cjs.map +1 -0
- package/dist/manifests/manifest-local-validation.d.ts +15 -11
- package/dist/manifests/manifest-local-validation.js +8 -0
- package/dist/manifests/manifest-local-validation.js.map +1 -0
- package/dist/manifests/manifest-template.cjs +2 -0
- package/dist/manifests/manifest-template.cjs.map +1 -0
- package/dist/manifests/manifest-template.d.ts +4 -4
- package/dist/manifests/manifest-template.js +12 -0
- package/dist/manifests/manifest-template.js.map +1 -0
- package/dist/manifests/manifest-validation.cjs +1 -1
- package/dist/manifests/manifest-validation.cjs.map +1 -1
- package/dist/manifests/manifest-validation.js +106 -28
- package/dist/manifests/manifest-validation.js.map +1 -1
- package/dist/manifests/types.cjs.map +1 -1
- package/dist/manifests/types.d.ts +39 -4
- package/dist/manifests/types.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs +45 -4
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.js +1 -1
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.cjs +8 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.js +221 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs +2 -2
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js +6 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs +2 -2
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js +6 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs +30 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js +65 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js +28 -14
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/interface.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/interface.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/interface.js +2 -1
- package/dist/node_modules/@openhands/extensions/automations/interface.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 +2 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs +2 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js +59 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js.map +1 -0
- 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 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.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 +74 -72
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.cjs +42 -3
- package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.js +22 -3
- package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
- 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 +1 -1
- 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 +8 -7
- 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 +2 -2
- package/dist/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs +1 -1
- package/dist/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/blocks.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/blocks.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/blocks.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/blocks.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.js +21 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shrink.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shrink.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shrink.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shrink.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.js +43 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tags.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tags.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tags.js +22 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tags.js.map +1 -0
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +5 -5
- package/dist/package.js.map +1 -1
- package/dist/routes/agent-settings.d.ts +12 -0
- package/dist/routes/app-settings.cjs +1 -1
- package/dist/routes/app-settings.cjs.map +1 -1
- package/dist/routes/app-settings.js +11 -11
- package/dist/routes/files-tab.cjs +1 -1
- package/dist/routes/files-tab.cjs.map +1 -1
- package/dist/routes/files-tab.js +14 -14
- package/dist/routes/files-tab.js.map +1 -1
- package/dist/routes/llm-settings.cjs +1 -1
- package/dist/routes/llm-settings.cjs.map +1 -1
- package/dist/routes/llm-settings.d.ts +3 -1
- package/dist/routes/llm-settings.js +100 -91
- package/dist/routes/llm-settings.js.map +1 -1
- package/dist/routes/planner-tab.cjs +1 -1
- package/dist/routes/planner-tab.cjs.map +1 -1
- package/dist/routes/planner-tab.js +44 -28
- package/dist/routes/planner-tab.js.map +1 -1
- package/dist/services/canvas-ui.cjs +1 -1
- package/dist/services/canvas-ui.cjs.map +1 -1
- package/dist/services/canvas-ui.d.ts +5 -0
- package/dist/services/canvas-ui.js +24 -10
- package/dist/services/canvas-ui.js.map +1 -1
- package/dist/services/settings.cjs +1 -1
- package/dist/services/settings.cjs.map +1 -1
- package/dist/services/settings.js +3 -2
- package/dist/services/settings.js.map +1 -1
- package/dist/services/telemetry.cjs +1 -1
- package/dist/services/telemetry.cjs.map +1 -1
- package/dist/services/telemetry.d.ts +5 -0
- package/dist/services/telemetry.js +122 -115
- package/dist/services/telemetry.js.map +1 -1
- package/dist/stores/conversation-panel-preferences-store.cjs +1 -1
- package/dist/stores/conversation-panel-preferences-store.cjs.map +1 -1
- package/dist/stores/conversation-panel-preferences-store.d.ts +32 -5
- package/dist/stores/conversation-panel-preferences-store.js +29 -12
- package/dist/stores/conversation-panel-preferences-store.js.map +1 -1
- package/dist/stores/conversation-state-store.cjs +1 -1
- package/dist/stores/conversation-state-store.cjs.map +1 -1
- package/dist/stores/conversation-state-store.d.ts +9 -3
- package/dist/stores/conversation-state-store.js +6 -3
- package/dist/stores/conversation-state-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 +2 -0
- package/dist/stores/conversation-store.js +3 -0
- package/dist/stores/conversation-store.js.map +1 -1
- package/dist/stores/model-store.cjs +1 -1
- package/dist/stores/model-store.cjs.map +1 -1
- package/dist/stores/model-store.d.ts +7 -0
- package/dist/stores/model-store.js +4 -0
- package/dist/stores/model-store.js.map +1 -1
- package/dist/types/automation.cjs.map +1 -1
- package/dist/types/automation.d.ts +66 -1
- package/dist/types/automation.js.map +1 -1
- package/dist/types/canvas-extension.cjs +2 -0
- package/dist/types/canvas-extension.cjs.map +1 -0
- package/dist/types/canvas-extension.d.ts +77 -0
- package/dist/types/canvas-extension.js +6 -0
- package/dist/types/canvas-extension.js.map +1 -0
- package/dist/types/settings.d.ts +7 -0
- package/dist/ui/context-menu.d.ts +1 -1
- package/dist/ui/help-link.cjs +1 -1
- package/dist/ui/help-link.cjs.map +1 -1
- package/dist/ui/help-link.d.ts +6 -1
- package/dist/ui/help-link.js +32 -18
- package/dist/ui/help-link.js.map +1 -1
- package/dist/ui/toggle-switch.cjs +1 -1
- package/dist/ui/toggle-switch.cjs.map +1 -1
- package/dist/ui/toggle-switch.d.ts +4 -1
- package/dist/ui/toggle-switch.js +4 -3
- package/dist/ui/toggle-switch.js.map +1 -1
- package/dist/utils/acp-auth-display.d.ts +35 -0
- package/dist/utils/automation-catalog.cjs +1 -1
- package/dist/utils/automation-catalog.cjs.map +1 -1
- package/dist/utils/automation-catalog.d.ts +12 -1
- package/dist/utils/automation-catalog.js +42 -12
- package/dist/utils/automation-catalog.js.map +1 -1
- package/dist/utils/automation-run-display.cjs +2 -0
- package/dist/utils/automation-run-display.cjs.map +1 -0
- package/dist/utils/automation-run-display.d.ts +20 -0
- package/dist/utils/automation-run-display.js +85 -0
- package/dist/utils/automation-run-display.js.map +1 -0
- package/dist/utils/automation-schedule.cjs +1 -1
- package/dist/utils/automation-schedule.cjs.map +1 -1
- package/dist/utils/automation-schedule.d.ts +16 -0
- package/dist/utils/automation-schedule.js +2 -0
- package/dist/utils/automation-schedule.js.map +1 -1
- package/dist/utils/cache-utils.cjs +1 -1
- package/dist/utils/cache-utils.js +5 -5
- package/dist/utils/constants.cjs +1 -1
- package/dist/utils/constants.cjs.map +1 -1
- package/dist/utils/constants.d.ts +4 -0
- package/dist/utils/constants.js +23 -3
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/format-event-timestamp.cjs +2 -0
- package/dist/utils/format-event-timestamp.cjs.map +1 -0
- package/dist/utils/format-event-timestamp.d.ts +1 -0
- package/dist/utils/format-event-timestamp.js +13 -0
- package/dist/utils/format-event-timestamp.js.map +1 -0
- package/dist/utils/format-model-name.cjs +1 -1
- package/dist/utils/format-model-name.cjs.map +1 -1
- package/dist/utils/format-model-name.d.ts +7 -3
- package/dist/utils/format-model-name.js +6 -11
- package/dist/utils/format-model-name.js.map +1 -1
- package/dist/utils/format-relative-time.cjs +1 -1
- package/dist/utils/format-relative-time.cjs.map +1 -1
- package/dist/utils/format-relative-time.d.ts +7 -0
- package/dist/utils/format-relative-time.js +7 -2
- package/dist/utils/format-relative-time.js.map +1 -1
- package/dist/utils/git-diff-stats.cjs +2 -2
- package/dist/utils/git-diff-stats.cjs.map +1 -1
- package/dist/utils/git-diff-stats.d.ts +4 -0
- package/dist/utils/git-diff-stats.js +12 -2
- package/dist/utils/git-diff-stats.js.map +1 -1
- package/dist/utils/path-utils.cjs +1 -1
- package/dist/utils/path-utils.cjs.map +1 -1
- package/dist/utils/path-utils.d.ts +15 -3
- package/dist/utils/path-utils.js +29 -3
- package/dist/utils/path-utils.js.map +1 -1
- package/dist/utils/plan-file.cjs +4 -0
- package/dist/utils/plan-file.cjs.map +1 -0
- package/dist/utils/plan-file.d.ts +18 -0
- package/dist/utils/plan-file.js +58 -0
- package/dist/utils/plan-file.js.map +1 -0
- package/dist/utils/recommended-automation-rail.cjs +1 -1
- package/dist/utils/recommended-automation-rail.cjs.map +1 -1
- package/dist/utils/recommended-automation-rail.js +1 -0
- package/dist/utils/recommended-automation-rail.js.map +1 -1
- package/dist/utils/scroll-fade-state.cjs +1 -1
- package/dist/utils/scroll-fade-state.cjs.map +1 -1
- package/dist/utils/scroll-fade-state.d.ts +6 -0
- package/dist/utils/scroll-fade-state.js +8 -1
- package/dist/utils/scroll-fade-state.js.map +1 -1
- package/dist/utils/sdk-settings-schema.cjs +1 -1
- package/dist/utils/sdk-settings-schema.cjs.map +1 -1
- package/dist/utils/sdk-settings-schema.d.ts +1 -0
- package/dist/utils/sdk-settings-schema.js +25 -22
- package/dist/utils/sdk-settings-schema.js.map +1 -1
- package/dist/utils/skill-enablement.cjs +2 -0
- package/dist/utils/skill-enablement.cjs.map +1 -0
- package/dist/utils/skill-enablement.d.ts +51 -0
- package/dist/utils/skill-enablement.js +31 -0
- package/dist/utils/skill-enablement.js.map +1 -0
- package/dist/utils/utils.cjs +1 -1
- package/dist/utils/utils.cjs.map +1 -1
- package/dist/utils/utils.js +11 -11
- package/dist/utils/utils.js.map +1 -1
- package/dist/utils/vscode-origin.cjs +2 -0
- package/dist/utils/vscode-origin.cjs.map +1 -0
- package/dist/utils/vscode-origin.d.ts +55 -0
- package/dist/utils/vscode-origin.js +27 -0
- package/dist/utils/vscode-origin.js.map +1 -0
- package/dist/utils/workspace-mode.d.ts +4 -0
- package/package.json +5 -5
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/check-translation-completeness.cjs +1 -0
- package/scripts/dev-extra-backend.mjs +28 -9
- package/scripts/dev-safe.mjs +81 -8
- package/scripts/dev-static.mjs +35 -37
- package/scripts/dev-with-automation.mjs +83 -2
- package/scripts/ingress.mjs +27 -1
- package/scripts/static-server.mjs +107 -2
- package/tools/canvas_ui_tool.py +19 -0
- package/build/assets/active-backend-context-DKFSMbn3.js +0 -2
- package/build/assets/agent-profiles-settings-D4cY5U2T.js +0 -1
- package/build/assets/agent-server-conversation-service.api-DozDKIW_.js +0 -86
- package/build/assets/agent-settings-351vXWc9.js +0 -2
- package/build/assets/agent-settings-Ce7BDZ6I.js +0 -1
- package/build/assets/alert-banner-Kyy1YWZU.js +0 -1
- package/build/assets/api-key-entry-screen-INIxqAMs.js +0 -1
- package/build/assets/automation-detail-DXDhUwPq.js +0 -3
- package/build/assets/automation-git-sync-CzyS4cn1.js +0 -1
- package/build/assets/automation-setup-route-FRr05f_g.js +0 -1
- package/build/assets/automations-list-CERuQWE6.js +0 -1
- package/build/assets/backend-form-modal-DK78-jn1.js +0 -1
- package/build/assets/bot-C-0Wu7vQ.js +0 -1
- package/build/assets/browser-11etCQ04.js +0 -7
- package/build/assets/check-Cf2YoT90.js +0 -1
- package/build/assets/chevron-down-C3OQ-ehx.js +0 -1
- package/build/assets/chevron-right-CN1uUiJ1.js +0 -1
- package/build/assets/circle-check-g5yeGMd-.js +0 -1
- package/build/assets/command-menu-BZQ8S3Ke.js +0 -1
- package/build/assets/commits-tab-DZtJgaDM.js +0 -1
- package/build/assets/confirmation-modal-Bk4JRcCM.js +0 -1
- package/build/assets/conversation-CchMzpGl.js +0 -1
- package/build/assets/conversation-Dpzftz57.js +0 -93
- package/build/assets/conversation-panel-CchMzpGl.js +0 -1
- package/build/assets/conversation-state-store-a9d2fxRc.js +0 -1
- package/build/assets/edit-automation-modal-D-urtv8n.js +0 -1
- package/build/assets/empty-state-CvaVahVr.js +0 -1
- package/build/assets/enum-filter-dropdown-DliX_Lo0.js +0 -1
- package/build/assets/extensions-hub-CFduxBnk.js +0 -1
- package/build/assets/extensions-navigation-BeC224yX.js +0 -1
- package/build/assets/external-link-DFpYunfj.js +0 -1
- package/build/assets/files-tab-CL3J9b3p.js +0 -1
- package/build/assets/format-model-name-BNPKVsIq.js +0 -1
- package/build/assets/get-git-path-DlAJa_i6.js +0 -1
- package/build/assets/git-repo-dropdown-DGMEhz7d.js +0 -1
- package/build/assets/home-BCGlNJCA.js +0 -1
- package/build/assets/home-DB1pRqTC.js +0 -1
- package/build/assets/home-automation-run-tooltip-CooFQRIG.js +0 -1
- package/build/assets/home-store-Dl1dPE58.js +0 -1
- package/build/assets/index-home-DB1pRqTC.js +0 -1
- package/build/assets/info-uYSVzX86.js +0 -1
- package/build/assets/install-server-modal-BbJdhzet.js +0 -1
- package/build/assets/kebab-menu-item-content-BYokkRHi.js +0 -1
- package/build/assets/list-filter-OFkpRrmi.js +0 -1
- package/build/assets/llm-not-configured-banner-BqqYnJ1t.js +0 -27
- package/build/assets/llm-settings-CnDbbmVW.js +0 -1
- package/build/assets/llm-settings-S8Yjg__1.js +0 -1
- package/build/assets/llm-subscription-service-BpPfzW4x.js +0 -1
- package/build/assets/loader-circle-nvrwthvj.js +0 -1
- package/build/assets/manage-backends-modal-BCUPswyl.js +0 -1
- package/build/assets/manifest-58597dde.js +0 -1
- package/build/assets/markdown-renderer-Cb2sBWtV.js +0 -8
- package/build/assets/mcp-page-Bm4K2NQq.js +0 -9
- package/build/assets/messages-BTN5thLe.js +0 -40
- package/build/assets/onboarding-Cx_kaiD1.js +0 -1
- package/build/assets/onboarding-modal-vMwn7ihv.js +0 -1
- package/build/assets/organization-service.api-C8XpQ0pM.js +0 -1
- package/build/assets/pencil-Clh1Wjvh.js +0 -1
- package/build/assets/planner-tab-DQvDU3ap.js +0 -1
- package/build/assets/plug-BuQhHSSG.js +0 -1
- package/build/assets/plugins-management-service-BjYeF0b0.js +0 -1
- package/build/assets/plus-CEKne-Yp.js +0 -1
- package/build/assets/profiles-service.api-QB-T_u-g.js +0 -1
- package/build/assets/providers-FfSZ5TXP.js +0 -1
- package/build/assets/proxy-tcFL2yTQ.js +0 -1
- package/build/assets/recommended-automations-launcher-Bw8uC4V6.js +0 -1
- package/build/assets/refresh-cw-Bh69DyYO.js +0 -1
- package/build/assets/root-BLeQfBEq.css +0 -1
- package/build/assets/root-ZKKYPR1Z.js +0 -2
- package/build/assets/root-layout-luJoE9IG.js +0 -2
- package/build/assets/schema-field-Csw5fhtN.js +0 -1
- package/build/assets/scroll-fade-state-Dw-i4SGq.js +0 -1
- package/build/assets/sdk-section-page-HTffvm7Q.js +0 -1
- package/build/assets/secret-form-HTUbYw5o.js +0 -1
- package/build/assets/secrets-service-BTor9uAU.js +0 -1
- package/build/assets/settings-BlmrkwRi.js +0 -1
- package/build/assets/settings-DcNPxz0v.js +0 -1
- package/build/assets/settings-index-CKq0b0Vg.js +0 -1
- package/build/assets/settings-service.api-B2agVfjL.js +0 -1
- package/build/assets/shared-conversation-B55pCyBG.js +0 -1
- package/build/assets/shield-check-CFDViW82.js +0 -1
- package/build/assets/sidebar-mobile-menu-toggle-BOtyJHwE.js +0 -1
- package/build/assets/sidebar-nav-link-CPzhyHQg.js +0 -1
- package/build/assets/sidebar-store-DtpU7zaI.js +0 -1
- package/build/assets/skill-filter-CWZ5kjcg.js +0 -2
- package/build/assets/skill-scope-CV1dkAbW.js +0 -1
- package/build/assets/skills-plugins-DGHULTq6.js +0 -1
- package/build/assets/skills-settings-CM1lFv3e.js +0 -1
- package/build/assets/styled-tooltip-Dl06rkpY.js +0 -1
- package/build/assets/toggle-switch-Fd_QGz0r.js +0 -1
- package/build/assets/trash-2-Dl8_RGz0.js +0 -1
- package/build/assets/trash-_RMt7Ayc.js +0 -1
- package/build/assets/triangle-alert-SM-q4NU_.js +0 -1
- package/build/assets/usage-tab-BcfWV6db.js +0 -1
- package/build/assets/use-acp-credential-form-BsSW5NHG.js +0 -1
- package/build/assets/use-activate-agent-profile-B2NS8nA5.js +0 -1
- package/build/assets/use-agent-profiles-DWBPC0Si.js +0 -1
- package/build/assets/use-config-Bft35DOK.js +0 -1
- package/build/assets/use-create-conversation-DwN5vv2f.js +0 -1
- package/build/assets/use-create-secret-BSxJMxHp.js +0 -1
- package/build/assets/use-has-permission-B3C8rQmR.js +0 -1
- package/build/assets/use-is-authed-CFGkY3-Z.js +0 -1
- package/build/assets/use-llm-configured-BI6obxsc.js +0 -1
- package/build/assets/use-llm-profiles-djGAhTWL.js +0 -1
- package/build/assets/use-manifest-capabilities-3z0-1G59.js +0 -1
- package/build/assets/use-onboarding-completion-BXpyUSsJ.js +0 -1
- package/build/assets/use-plugins-marketplace-DI4_pK56.js +0 -1
- package/build/assets/use-save-agent-profile-DdBSTdpN.js +0 -1
- package/build/assets/use-settings-C5VhGpqd.js +0 -1
- package/build/assets/use-settings-nav-items-DHaUu1Dg.js +0 -16
- package/build/assets/use-tracking-D5t9otIF.js +0 -3
- package/build/assets/utils-DaCIEEQP.js +0 -1
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-ZixYGy6E.js +0 -186
- package/build/assets/vendor~index-home~home~conversation-panel~conversation~alert-banner-B3qC_oj8.js +0 -1
- package/build/assets/vendor~root-layout-BlUaZ18v.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-B2OLKL7N.js +0 -1
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz-MAyNb.js +0 -1
- package/build/assets/x-DkgltWa0.js +0 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs +0 -2
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs.map +0 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.d.ts +0 -35
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js +0 -247
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js.map +0 -1
- package/dist/components/features/tips/random-tip.d.ts +0 -2
- package/dist/hooks/query/use-skills.cjs +0 -2
- package/dist/hooks/query/use-skills.cjs.map +0 -1
- package/dist/hooks/query/use-skills.d.ts +0 -7
- package/dist/hooks/query/use-skills.js +0 -13
- package/dist/hooks/query/use-skills.js.map +0 -1
- package/dist/hooks/use-has-permission.cjs +0 -2
- package/dist/hooks/use-has-permission.cjs.map +0 -1
- package/dist/hooks/use-has-permission.d.ts +0 -1
- package/dist/hooks/use-has-permission.js +0 -8
- package/dist/hooks/use-has-permission.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs +0 -2
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.js +0 -14
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.js.map +0 -1
- package/dist/utils/tips.d.ts +0 -7
- package/dist/utils/workspace-relative-path.cjs +0 -2
- package/dist/utils/workspace-relative-path.cjs.map +0 -1
- package/dist/utils/workspace-relative-path.d.ts +0 -10
- package/dist/utils/workspace-relative-path.js +0 -22
- package/dist/utils/workspace-relative-path.js.map +0 -1
- /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~i58xkef6-cHFhpUBq.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{n as r}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew3u153i-rfV8mQ9m.js";import{t as i}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz-MAyNb.js";import{D as a,_ as o}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-ZixYGy6E.js";import{t as s}from"./useQuery-BXWbZBZl.js";import{$ as c,ct as l,dt as u,nt as d,pt as f}from"./active-backend-context-DKFSMbn3.js";import{W as p,t as m}from"./utils-DaCIEEQP.js";import{r as h}from"./messages-BTN5thLe.js";import{c as g}from"./use-llm-configured-BI6obxsc.js";import{i as ee}from"./cloud-funnel-analytics-287iIERo.js";import{t as _}from"./mouse-pointer-click-CsgRs_-r.js";import{i as v}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-Dtu7BpYk.js";import{t as y}from"./proxy-tcFL2yTQ.js";import{_ as b,c as te,i as ne}from"./conversation-store-Ca3ghXap.js";import{v as x,x as S}from"./agent-server-conversation-service.api-DozDKIW_.js";import{t as C}from"./copy-to-clipboard-button-Cjkswvnj.js";import{S as w,Y as T,Z as E,g as D,t as O}from"./markdown-renderer-Cb2sBWtV.js";import{t as re}from"./link-external-BNZzCM1I.js";import{n as ie,r as ae}from"./conversation-Dpzftz57.js";import{n as k,t as A}from"./get-git-path-DlAJa_i6.js";import{n as oe,t as j}from"./highlighted-source-view-C3sxykQi.js";import{t as M}from"./conversation-tab-empty-state-HJtkmHZj.js";var N=a(`list-tree`,[[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`M3 10a2 2 0 0 0 2 2h3`,key:`1npucw`}],[`path`,{d:`M3 5v12a2 2 0 0 0 2 2h3`,key:`x1gjn2`}]]),P=e(t(),1),F=n();function se(){let{t:e}=i(`openhands`);return(0,F.jsx)(M,{className:`h-full`,icon:(0,F.jsx)(_,{"aria-hidden":!0,strokeWidth:2,className:`size-full`}),children:e(p.FILES$NO_FILE_SELECTED)})}var I=class{static async executeCommand(e,t,n,r,i=30){let a=l().backend;if(a.kind===`cloud`&&e){let o=await y({backend:a,method:`POST`,hostOverride:d(e),path:`/api/bash/execute_bash_command`,body:{command:n,...r?{cwd:r}:{},timeout:Math.floor(i)},authMode:`session-api-key`,sessionApiKey:t,timeoutSeconds:i+10});return{exit_code:o.exit_code??-1,stdout:o.stdout??``,stderr:o.stderr??``}}let o=await new v(c({conversationUrl:e,sessionApiKey:t})).executeCommand(n,r,i);return{exit_code:o.exit_code,stdout:o.stdout,stderr:o.stderr}}static async downloadFile(e,t,n){let r=l().backend;return r.kind===`cloud`&&e?(await y({backend:r,method:`GET`,hostOverride:d(e),path:`/api/file/download?path=${encodeURIComponent(n)}`,authMode:`session-api-key`,sessionApiKey:t,responseType:`blob`})).arrayBuffer():new o(c({conversationUrl:e,sessionApiKey:t})).downloadFile(n)}},L=2e3,R=[`.git`,`node_modules`,`.venv`,`venv`,`__pycache__`,`dist`,`build`,`.next`,`.cache`,`.pytest_cache`,`.mypy_cache`,`.turbo`,`.parcel-cache`,`target`];function z(){return`find . \\( ${R.map(e=>`-name '${e}' -prune`).join(` -o `)} \\) -o -type f -print 2>/dev/null | sort | head -n ${L}`}function B(e){return e.startsWith(`./`)?e.slice(2):e}function ce(e){let{data:t}=T(),n=k(),r=t?.id,i=t?.conversation_url,a=t?.session_api_key,o=t?.workspace?.working_dir?.trim(),c=s({queryKey:[`workspace-files`,r,i,a,o],queryFn:async()=>{let e=await I.executeCommand(i,a,z(),o,30);if(e.exit_code!==0)throw Error(e.stderr?.trim()||`Failed to list workspace files`);let t=e.stdout.split(/\r?\n/).map(e=>e.trim()).filter(Boolean).map(B);return Array.from(new Set(t)).slice(0,L)},enabled:e&&n&&!!r&&!!o,retry:!1,staleTime:1e3*30,gcTime:1e3*60*5,meta:{disableToast:!0}});return{data:c.data,isLoading:c.isLoading}}function V(e){let{conversationId:t}=E(),{data:n}=T(),r=k(),i=n?.selected_repository,a=n?.workspace?.working_dir?.trim(),o=A(i,a),c=o.startsWith(`/`)?o:`/${o}`,l=s({queryKey:[`workspace-files-cloud`,t,c],queryFn:async()=>{let e=(await x(t,c)).map(B).filter(Boolean);return Array.from(new Set(e)).slice(0,L)},enabled:e&&r&&!!t,retry:!1,staleTime:1e3*30,gcTime:1e3*60*5,meta:{disableToast:!0}});return{data:l.data,isLoading:l.isLoading}}function H(){let e=(0,P.useSyncExternalStore)(f,u,u).active.backend.kind===`cloud`,t=ce(!e),n=V(e);return e?n:t}function U(){let{data:e}=T(),t=k(),n=e?.id,r=e?.conversation_url,i=e?.session_api_key,a=l().backend.kind===`local`,o=s({queryKey:[`workspace-session`,n,r,i],queryFn:async()=>({baseUrl:await new v(c({conversationUrl:r,sessionApiKey:i})).startWorkspaceSession(n)}),enabled:t&&!!n&&a,staleTime:1/0,gcTime:1/0,retry:!1});return{data:o.data??null,isLoading:o.isLoading,isError:o.isError,error:o.error??null}}function W(e,t){let n=(t??``).replace(/^\/+/,``);return n?`${e}${n.split(`/`).map(e=>encodeURIComponent(e)).join(`/`)}`:e}var G=b(e=>({count:0,bump:()=>e(e=>({count:e.count+1}))}));function K(e,t){return e===null?null:`${e}${e.includes(`?`)?`&`:`?`}v=${t}`}var le=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`bmp`,`ico`,`svg`,`avif`]),ue=new Set([`pdf`]);function q(e){let t=e.lastIndexOf(`.`);return t===-1?``:e.slice(t+1).toLowerCase()}function de(e){switch(q(e)){case`html`:case`htm`:return`text/html`;case`css`:return`text/css`;case`js`:case`mjs`:case`cjs`:return`text/javascript`;case`json`:return`application/json`;case`md`:case`markdown`:return`text/markdown`;case`svg`:return`image/svg+xml`;case`png`:return`image/png`;case`jpg`:case`jpeg`:return`image/jpeg`;case`gif`:return`image/gif`;case`webp`:return`image/webp`;case`bmp`:return`image/bmp`;case`ico`:return`image/x-icon`;case`avif`:return`image/avif`;case`pdf`:return`application/pdf`;default:return`text/plain`}}function fe(e){let t=q(e);return le.has(t)?`image`:ue.has(t)?`pdf`:`text`}function J(e){let t=new Uint8Array(e,0,Math.min(e.byteLength,8e3));for(let e=0;e<t.length;e+=1)if(t[e]===0)return!0;return!1}function Y(e){let t=new Uint8Array(e),n=32768,r=``;for(let e=0;e<t.length;e+=n)r+=String.fromCharCode.apply(null,t.subarray(e,e+n));return btoa(r)}function X(e){let{data:t}=T(),n=k(),{data:r}=U(),i=G(e=>e.count),a=t?.id,o=t?.conversation_url,c=t?.session_api_key,u=t?.selected_repository,d=t?.workspace?.working_dir?.trim(),f=r?.baseUrl,p=l().backend.kind===`cloud`,m=A(u,d),h=m.startsWith(`/`)?m:`/${m}`,g=e?`${h}/${e}`:null;return s({queryKey:[`workspace-file-content`,a,o,c,p?`cloud`:f,e,g,i],queryFn:async()=>{if(!e)throw Error(`No path`);let t=fe(e),n=de(e);if(p){let r=await S(a,g);if(t===`text`){let t=new TextEncoder().encode(r);return J(t.buffer)?{path:e,kind:`binary`,text:null,staticUrl:`data:application/octet-stream;base64,${Y(t.buffer)}`,mimeType:`application/octet-stream`}:{path:e,kind:`text`,text:r,staticUrl:`data:${n};charset=utf-8;base64,${Y(t.buffer)}`,mimeType:n}}return{path:e,kind:t,text:null,staticUrl:`data:${n};base64,${Y(new TextEncoder().encode(r).buffer)}`,mimeType:n}}if(!f)throw Error(`No workspace session`);let r=W(f,e);if(t!==`text`)return{path:e,kind:t,text:null,staticUrl:r,mimeType:n};let i=await fetch(r,{credentials:`include`});if(!i.ok)throw Error(`Failed to read ${e}: ${i.status}`);let o=await i.arrayBuffer();return J(o)?{path:e,kind:`binary`,text:null,staticUrl:r,mimeType:`application/octet-stream`}:{path:e,kind:`text`,text:new TextDecoder(`utf-8`,{fatal:!1}).decode(o),staticUrl:r,mimeType:n}},enabled:n&&!!a&&!!e&&(p||!!f),retry:!1,staleTime:1e3*5,gcTime:1e3*60,meta:{disableToast:!0}})}var pe=new Set([`FileEditorObservation`,`StrReplaceEditorObservation`,`PlanningFileEditorObservation`]),me=new Set([`view`]),he=new Set([`ExecuteBashObservation`,`TerminalObservation`]);function ge(e){let t=e.observation;return!(!t||typeof t.kind!=`string`||!pe.has(t.kind)||t.command&&me.has(t.command))}function _e(e){let t=e.observation;return!!t&&typeof t.kind==`string`&&he.has(t.kind)}function ve(){let e=r(),t=w(e=>e.events),n=G(e=>e.bump),i=(0,P.useRef)(new Set),a=(0,P.useRef)(new WeakSet);(0,P.useEffect)(()=>{let r=!1,o=!1;for(let e of t){let t=`id`in e?e.id:void 0;(t===void 0?a.current.has(e):i.current.has(t))||(t===void 0?a.current.add(e):i.current.add(t),ge(e)?r=!0:_e(e)&&(o=!0))}!r&&!o||(e.invalidateQueries({queryKey:[`file_changes`]}),e.invalidateQueries({queryKey:[`file_diff`]}),e.invalidateQueries({queryKey:[`git_commits`]}),r&&(e.invalidateQueries({queryKey:[`workspace-files`]}),e.invalidateQueries({queryKey:[`workspace-file-content`]}),n()))},[t,e,n])}var Z=`[scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden`;function ye({openPaths:e,selectedPath:t,onSelectFile:n,onCloseFile:r,isTreeVisible:a,onToggleTree:o,actions:s}){let{t:c}=i(`openhands`);return(0,F.jsxs)(`div`,{className:`flex h-[34px] shrink-0 items-stretch gap-1.5 overflow-y-hidden border-b border-[var(--oh-border)] px-2`,"data-testid":`file-quick-row`,children:[(0,F.jsx)(`button`,{type:`button`,onClick:o,"data-testid":`file-quick-row-tree-toggle`,"aria-pressed":a,"aria-label":c(a?p.FILES$HIDE_FILE_TREE:p.FILES$SHOW_FILE_TREE),title:c(a?p.FILES$HIDE_FILE_TREE:p.FILES$SHOW_FILE_TREE),className:m(`shrink-0 self-center inline-flex items-center justify-center w-6 h-6 rounded-md cursor-pointer`,`text-[var(--oh-text-tertiary)] hover:bg-tertiary`,a&&`bg-[var(--oh-surface-raised)]`),children:(0,F.jsx)(N,{className:`w-3 h-3`,"aria-hidden":!0,strokeWidth:2})}),e.length>0?(0,F.jsx)(`div`,{role:`tablist`,"aria-label":c(p.COMMON$FILES),className:m(`flex min-h-0 min-w-0 flex-1 flex-nowrap items-stretch overflow-x-auto overflow-y-hidden overscroll-y-none`,Z),children:e.map((e,i)=>{let a=t===e,o=e.split(`/`).pop()||e;return(0,F.jsxs)(`div`,{className:m(`group/file-tab relative flex shrink-0 items-stretch`,`border-r border-r-[var(--oh-border)]`,i===0&&`border-l border-l-[var(--oh-border)]`,`border-b-2 -mb-px transition-colors`,a?`border-b-white text-white`:`border-b-transparent text-[var(--oh-muted)] hover:text-white hover:border-b-white/25`),children:[(0,F.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":a,onClick:()=>n(e),title:e,"data-testid":`file-quick-row-item-${e}`,className:`flex min-w-0 max-w-[160px] items-center pl-2.5 pr-1 text-xs cursor-pointer text-inherit`,children:(0,F.jsx)(`span`,{className:`truncate`,children:o})}),(0,F.jsx)(`button`,{type:`button`,"data-testid":`file-quick-row-close-${e}`,"aria-label":c(p.FILES$CLOSE_TAB,{path:e}),title:c(p.FILES$CLOSE_TAB,{path:e}),className:m(`inline-flex items-center justify-center size-5 self-center mr-1 rounded-sm shrink-0 cursor-pointer`,`text-inherit hover:bg-white/10`,`opacity-100 transition-opacity`,`md:opacity-0 md:group-hover/file-tab:opacity-100 md:group-focus-within/file-tab:opacity-100`),onClick:()=>r(e),children:(0,F.jsx)(g,{width:10,height:10,"aria-hidden":!0})})]},e)})}):(0,F.jsx)(`div`,{className:`flex-1 min-w-0`}),s?(0,F.jsx)(`div`,{className:`ml-auto shrink-0 self-center flex items-center gap-1`,children:s}):null]})}var be=new Set([`html`,`htm`,`svg`]),xe={pptx:`PowerPoint`,ppt:`PowerPoint`,docx:`Word`,doc:`Word`,xlsx:`Excel`,xls:`Excel`};function Q(e){let t=e.lastIndexOf(`.`);return t===-1?``:e.slice(t+1).toLowerCase()}function $({path:e}){let{t}=i(`openhands`),n=xe[Q(e)];return(0,F.jsx)(`div`,{className:`flex h-full w-full items-center justify-center text-sm text-[var(--oh-muted)]`,"data-testid":n?`file-content-viewer-unsupported-document`:`file-content-viewer-binary-fallback`,children:n?t(p.FILES$UNSUPPORTED_DOCUMENT,{type:n}):t(p.FILES$BINARY_FALLBACK)})}function Se({path:e,viewMode:t}){let{t:n}=i(`openhands`),r=X(e),a=G(e=>e.count);if(r.isLoading)return(0,F.jsx)(`div`,{className:`flex h-full w-full items-center justify-center text-sm text-[var(--oh-muted)]`,children:n(p.FILES$LOADING_FILES)});if(r.isError||!r.data)return(0,F.jsx)(`div`,{className:`flex h-full w-full items-center justify-center text-sm text-[var(--oh-muted)]`,"data-testid":`file-content-viewer-error`,children:r.error?.message??n(p.FILES$LOAD_ERROR)});let{kind:o,text:s,staticUrl:c,mimeType:l}=r.data,u=K(c,a);return t===`plain`?o===`text`&&s!==null?(0,F.jsx)(j,{path:e,text:s,mimeType:l??void 0}):(0,F.jsx)($,{path:e}):o===`image`?(0,F.jsx)(`div`,{className:`flex h-full w-full items-center justify-center bg-[var(--oh-surface)] p-4`,"data-testid":`file-content-viewer-image`,children:(0,F.jsx)(`img`,{src:u,alt:e,className:`max-h-full max-w-full object-contain`})}):o===`pdf`?(0,F.jsx)(`iframe`,{title:e,src:u,"data-testid":`file-content-viewer-iframe`,className:`h-full w-full bg-white`}):o===`binary`?(0,F.jsx)($,{path:e}):l===`text/html`||be.has(Q(e))?(0,F.jsx)(`iframe`,{title:e,src:u,sandbox:`allow-same-origin`,"data-testid":`file-content-viewer-iframe`,className:`h-full w-full bg-white`}):o===`text`&&h(e)?(0,F.jsx)(`div`,{"data-testid":`file-content-viewer-markdown`,className:`h-full w-full overflow-auto bg-[var(--oh-surface)] text-white custom-scrollbar-always [--oh-scroll-fade-from:var(--oh-surface)]`,children:(0,F.jsx)(`div`,{className:`prose prose-sm prose-invert max-w-none p-6 [--tw-prose-body:#fff] [--tw-prose-bold:#fff] [--tw-prose-headings:#fff] [--tw-prose-lead:#fff] [--tw-prose-counters:#fff] [--tw-prose-quotes:#fff] [--tw-prose-quote-borders:var(--oh-border-subtle)] [--tw-prose-bullets:var(--oh-muted)] [--tw-prose-hr:var(--oh-border-subtle)] [--tw-prose-captions:var(--oh-muted)] [--tw-prose-kbd:#fff]`,children:(0,F.jsx)(O,{content:s??``,includeStandard:!0,includeHeadings:!0})})}):o===`text`&&s!==null?(0,F.jsx)(j,{path:e,text:s,mimeType:l??void 0}):(0,F.jsx)($,{path:e})}function Ce({path:e}){let{t}=i(`openhands`),[n,r]=P.useState(!1),a=e?.trim();return P.useEffect(()=>{if(!n)return;let e=window.setTimeout(()=>r(!1),2e3);return()=>window.clearTimeout(e)},[n]),a?(0,F.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 border-b border-[var(--oh-border)] px-3 py-1.5 text-xs`,"data-testid":`files-tab-workspace-path`,children:[(0,F.jsxs)(`span`,{className:`shrink-0 text-[var(--oh-muted)]`,children:[t(p.WORKSPACE$TITLE),`:`]}),(0,F.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono`,"data-testid":`files-tab-workspace-path-value`,title:a,children:a}),(0,F.jsx)(C,{isHidden:!1,isDisabled:n,onClick:async()=>{await navigator.clipboard.writeText(a),r(!0)},mode:n?`copied`:`copy`})]}):null}var we=`files-tab-tree-width`,Te=e=>(0,F.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 13 15`,fill:`none`,...e,children:(0,F.jsx)(`path`,{d:`M6.59467 0.21967C6.88756 -0.0732233 7.36244 -0.0732233 7.65533 0.21967L9.90533 2.46967C10.1982 2.76256 10.1982 3.23744 9.90533 3.53033L7.65533 5.78033C7.36244 6.07322 6.88756 6.07322 6.59467 5.78033C6.30178 5.48744 6.30178 5.01256 6.59467 4.71967L7.56434 3.75H6.375C3.71421 3.75 1.5 5.96421 1.5 8.625C1.5 11.2858 3.71421 13.5 6.375 13.5C9.03579 13.5 11.25 11.2858 11.25 8.625C11.25 8.21079 11.5858 7.875 12 7.875C12.4142 7.875 12.75 8.21079 12.75 8.625C12.75 12.1142 9.86421 15 6.375 15C2.88579 15 0 12.1142 0 8.625C0 5.13579 2.88579 2.25 6.375 2.25H7.56434L6.59467 1.28033C6.30178 0.987437 6.30178 0.512563 6.59467 0.21967Z`,fill:`currentColor`})});function Ee(){let{t:e}=i(`openhands`);ve();let{data:t}=T(),n=t?.workspace?.working_dir,{conversationId:a}=E(),{state:o,setFilesTabContentViewMode:s,setFilesTabTreeVisible:c}=te(a??``),l=o.filesTabContentViewMode,u=o.filesTabTreeVisible??!0,d=(0,P.useCallback)(()=>{c?.(!u)},[u,c]),f=(0,P.useRef)(null),{drawerWidth:m,isDragging:h,handleMouseDown:g}=ie({containerRef:f,defaultWidth:224,minWidth:160,maxWidth:480,storageKey:we,enabled:u,edge:`left`}),_=H(),v=(0,P.useMemo)(()=>_.data??[],[_.data]),y=D(e=>e.selectedPath),b=D(e=>e.selectedConversationId),x=D(e=>e.openPaths),S=D(e=>e.setSelectedPath),C=D(e=>e.closeOpenPath),w=D(e=>e.hydrateForConversation),O=b===a?y:null,k=b===a?x:[],A=(0,P.useCallback)(e=>S(e,a),[a,S]),j=X(O),M=G(e=>e.count),N=K(j.data?.staticUrl??null,M);(0,P.useEffect)(()=>{if(!a||b===a)return;let e=ne(a);w(a,e.filesTabOpenPaths??[],e.filesTabSelectedPath??null)},[a,b,w]);let I=r(),[L,R]=(0,P.useState)(!1),z=(0,F.jsx)(`button`,{type:`button`,onClick:async()=>{R(!0);try{await Promise.all([I.invalidateQueries({queryKey:[`workspace-files`]}),I.invalidateQueries({queryKey:[`workspace-file-content`]})])}finally{R(!1)}},disabled:L,"aria-label":e(p.FILES$REFRESH),title:e(p.FILES$REFRESH),"data-testid":`files-tab-refresh`,className:`flex items-center justify-center w-[26px] py-1 rounded-[7px] hover:enabled:bg-[var(--oh-interactive-hover)] cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed`,children:(0,F.jsx)(Te,{width:12.75,height:15,color:`#ffffff`,className:L?`animate-spin`:``})});return(0,F.jsxs)(`main`,{className:`h-full w-full flex flex-col items-stretch`,"data-testid":`files-tab`,children:[(0,F.jsx)(Ce,{path:n}),_.isLoading?(0,F.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-sm text-[var(--oh-muted)]`,children:e(p.FILES$LOADING_FILES)}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(ye,{openPaths:k,selectedPath:O,onSelectFile:A,onCloseFile:C,isTreeVisible:u,onToggleTree:d,actions:z}),(0,F.jsxs)(`div`,{ref:f,className:`flex h-full min-h-0 flex-1`,children:[u&&(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`aside`,{className:`shrink-0 border-r border-[var(--oh-border)] overflow-y-auto custom-scrollbar-always`,"data-testid":`files-tab-tree`,style:{width:`${m}px`},children:(0,F.jsx)(oe,{paths:v,selectedPath:O,onSelectFile:A})}),(0,F.jsx)(ae,{testId:`files-tab-tree-resize-handle`,onMouseDown:g,isDragging:h})]}),(0,F.jsx)(`section`,{className:`flex h-full min-h-0 min-w-0 flex-1 flex-col`,"data-testid":`files-tab-content`,children:O?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-3 px-3 py-1.5 border-b border-[var(--oh-border)]`,children:[(0,F.jsx)(ee,{ariaLabel:e(p.FILES$RICH),testId:`files-tab-content-mode-toggle`,value:l,options:[{value:`rich`,label:e(p.FILES$RICH)},{value:`plain`,label:e(p.FILES$PLAIN)}],onChange:s}),N?(0,F.jsx)(`a`,{href:N,target:`_blank`,rel:`noopener noreferrer`,"aria-label":e(p.FILES$OPEN_IN_NEW_WINDOW),title:e(p.FILES$OPEN_IN_NEW_WINDOW),"data-testid":`files-tab-open-in-new-window`,className:`ml-auto flex items-center justify-center w-[26px] py-1 rounded-[7px] hover:bg-[var(--oh-interactive-hover)] cursor-pointer text-white`,children:(0,F.jsx)(re,{width:14,height:14})}):null]}),(0,F.jsx)(Se,{path:O,viewMode:l})]}):(0,F.jsx)(se,{})})]})]})]})}export{Ee as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=`Free`,t={"openhands/kimi-k3":`OpenHands Kimi K3 (free)`,"openhands/glm-5.2":`OpenHands GLM-5.2 (free)`,"openhands/deepseek-v4-flash":`OpenHands DeepSeek V4 Flash (free)`,"openhands/minimax-m2.7":`OpenHands MiniMax M2.7 (free)`},n=`Free OpenHands models: ${Object.keys(t).join(`, `)}. Other provider endpoints with similar model names may require separate billing.`,r=e=>!!(e&&e in t);function i(e){return e?r(e)?t[e]:e:null}function a(e){return e?r(e)?t[e]:e.split(`/`).pop()||e:null}export{r as a,a as i,n,i as r,e as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{gt as e}from"./active-backend-context-DKFSMbn3.js";import{A as t,j as n,w as r}from"./utils-DaCIEEQP.js";import{J as i,Y as a}from"./markdown-renderer-Cb2sBWtV.js";var o=({allowAgentError:e=!1}={})=>{let{data:o}=a(),{curAgentState:s}=i(),c=e?n:t;return r(o?.execution_status)&&!c.includes(s)};function s(t,n){let r=n?.trim();if(r)return r;if(!t)return e;let i=t.split(`/`);return`${e}/${i[i.length-1]}`}export{o as n,s as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./git-repo-dropdown-ai8qaNkD.js";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,bt as n,i as r,yt as i}from"./vendor-styling-Ck5D_A2Q.js";import{F as a,U as o}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js";import{t as s}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz-MAyNb.js";import{D as c,T as l}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-ZixYGy6E.js";import{i as u,r as d,t as f}from"./recommended-automations-launcher-Bw8uC4V6.js";import{Mt as p,jt as m,n as h}from"./active-backend-context-DKFSMbn3.js";import{W as g,t as _}from"./utils-DaCIEEQP.js";import{t as v}from"./chevron-down-C3OQ-ehx.js";import{t as y}from"./external-link-DFpYunfj.js";import{A as b,C as x,D as S,E as C,M as w,N as T,O as E,P as D,S as O,T as k,a as A,b as j,f as M,i as N,j as P,k as F,n as I,o as L,p as R,r as z,s as B,t as V,u as H,v as U,w as ee,x as W,y as te}from"./home-automation-run-tooltip-CooFQRIG.js";import{h as ne,t as re}from"./use-llm-configured-BI6obxsc.js";import{a as ie,c as ae,d as oe,f as se,i as ce,l as le,m as ue,n as de,o as fe,p as pe,r as me,s as he,t as ge,u as _e}from"./onboarding-Cx_kaiD1.js";import{t as ve}from"./plus-CEKne-Yp.js";import{n as ye,t as be}from"./x-DkgltWa0.js";import{n as xe,r as Se,t as Ce}from"./context-menu-list-item-lVYETtY5.js";import{C as we}from"./use-tracking-D5t9otIF.js";import{t as Te}from"./modal-backdrop-BSzNhM4r.js";import{n as Ee,r as De,t as Oe}from"./modal-body-CMOc2tLl.js";import{r as ke}from"./base-modal-C7_BDl_U.js";import{r as Ae}from"./modal-classes-BAb4Y_BG.js";import{_ as je,i as Me,m as Ne,s as Pe}from"./form-control-classes-CGw40z5h.js";import{t as Fe}from"./brand-button-Dxv6PDeN.js";import{n as Ie}from"./navigation-context-CQZwH_tC.js";import{t as G}from"./navigation-link-Bxo3-4vo.js";import{t as Le}from"./vendor~root-layout~index-home~home~conversation-panel~conversation~automation-setup-route-CjECvSl5.js";import{t as Re}from"./styled-tooltip-Dl06rkpY.js";import{i as ze,n as Be,o as Ve,u as He}from"./dropdown-classes-DJe-E6MC.js";import{t as Ue}from"./conversation-store-Ca3ghXap.js";import{t as We}from"./modal-close-button-CkJ0Ktjj.js";import{i as Ge}from"./conversation-state-store-a9d2fxRc.js";import{t as Ke}from"./use-click-outside-element-W6Os4Nlb.js";import{n as qe}from"./use-create-conversation-DwN5vv2f.js";import{n as Je}from"./use-can-manage-org-profiles-BWMahtUh.js";import{t as Ye}from"./u-edit-DAkcF52u.js";import{c as Xe,s as Ze,t as Qe}from"./home-store-Dl1dPE58.js";import{t as $e}from"./folder-C1ou4_DT.js";import{n as et,t as tt}from"./use-automation-health-BxXdzZMP.js";import{t as K}from"./automation-C_eCrGyP.js";import{t as nt}from"./use-automations-zYb0dUny.js";import{t as rt}from"./use-user-conversation-DT0_QCnL.js";import{r as q}from"./typography-SgFy466J.js";import{a as it,i as at,n as ot,r as st,t as ct}from"./extension-module-card-classes-DpeaYhYo.js";import{n as lt}from"./skill-card-pill-row-CFxjoqxn.js";import{n as ut}from"./circle-plus-check-toggle-CBh_qomE.js";import{t as dt}from"./x-mark-BopmFoBq.js";import{B as ft,G as pt,R as mt,V as ht,W as gt,a as _t,c as vt,i as yt,k as bt,n as xt,o as St,r as Ct,s as wt,t as Tt}from"./llm-not-configured-banner-BqqYnJ1t.js";import{b as Et}from"./markdown-renderer-Cb2sBWtV.js";import{t as Dt}from"./use-plugins-marketplace-DI4_pK56.js";import{t as Ot}from"./vendor~index-home~home~conversation-panel~conversation~alert-banner-B3qC_oj8.js";import{a as kt,n as At,o as jt,r as Mt,t as Nt}from"./kebab-menu-item-content-BYokkRHi.js";import{t as Pt}from"./edit-automation-modal-D-urtv8n.js";import{a as Ft,i as It,o as Lt,r as Rt,s as zt,t as Bt}from"./git-repo-dropdown-ai8qaNkD.js";import"./git-repo-dropdown-DGMEhz7d.js";var Vt=c(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),J=e(t(),1);async function Ht(e){let{imagesToEmbed:t}=pt(e.images,e.imagesMarkedUploadAsFile),n=await Promise.all(t.map(e=>ft(e)));Et.getState().enqueuePendingMessage({conversationId:e.conversationId,text:e.text,content:e.text,imageUrls:n,fileUrls:[]})}var Y=i();function Ut({plugin:e,isSelected:t,isDisabled:n=!1,onToggle:r}){return(0,Y.jsxs)(`div`,{"data-testid":`plugin-picker-card-${e.name}`,className:_(`flex min-w-0 items-start justify-between gap-3 rounded-lg bg-tertiary p-4`),children:[(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`h3`,{"data-testid":`plugin-picker-name-${e.name}`,className:`truncate text-sm font-semibold text-white`,children:e.name}),(0,Y.jsx)(`p`,{className:`mt-0.5 min-w-0 truncate text-xs text-tertiary-alt`,title:e.source,children:e.source}),e.description?(0,Y.jsx)(`p`,{className:`mt-1 line-clamp-2 text-xs text-tertiary-light`,children:e.description}):null,e.repo_path||e.ref?(0,Y.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:[e.repo_path?(0,Y.jsx)(`span`,{className:at,children:e.repo_path}):null,e.ref?(0,Y.jsxs)(`span`,{className:at,children:[`@`,e.ref]}):null]}):null]}),(0,Y.jsx)(ut,{testId:`plugin-picker-toggle-${e.name}`,isSelected:t,isDisabled:n,onToggle:r,enableLabelKey:g.BUTTON$ADD,disableLabelKey:g.COMMON$REMOVE,enableTooltipKey:g.BUTTON$ADD,disableTooltipKey:g.COMMON$REMOVE})]})}function X(e){return[e.source,e.ref??``,e.repo_path??``].join(`\0`)}function Wt(e){return{source:e.source,ref:e.ref??null,repo_path:e.repo_path??null}}function Gt(e,t){let n=X(t);return e.some(e=>X(e)===n)}function Kt(e,t){let n=X(t);return e.some(e=>X(e)===n)?e.filter(e=>X(e)!==n):[...e,Wt(t)]}function qt(e,t){let n=t.trim().toLowerCase();return n?[e.name,e.description,e.source,e.repo_path,e.ref].filter(e=>typeof e==`string`&&e.length>0).some(e=>e.toLowerCase().includes(n)):!0}function Jt({selected:e,onChange:t,disabled:n=!1}){let{t:r}=s(`openhands`),{data:i,isLoading:a,isError:o}=Dt(),[c,l]=(0,J.useState)(``),u=(i??[]).filter(e=>qt(e,c));return(0,Y.jsxs)(`div`,{"data-testid":`plugin-picker`,className:`flex w-full flex-col gap-3`,children:[(0,Y.jsxs)(`div`,{className:_(`relative flex min-w-0 items-center`,`rounded-lg border border-[var(--oh-border)] bg-base-secondary`,`transition-colors focus-within:border-white/40 focus-within:ring-1 focus-within:ring-white/20`),children:[(0,Y.jsx)(ye,{className:`ml-3 h-4 w-4 shrink-0 text-tertiary-alt`,"aria-hidden":!0}),(0,Y.jsx)(`input`,{"data-testid":`plugin-picker-search-input`,type:`search`,value:c,onChange:e=>l(e.target.value),placeholder:r(g.PLUGINS$PICKER_SEARCH_PLACEHOLDER),"aria-label":r(g.PLUGINS$PICKER_SEARCH_PLACEHOLDER),className:_(`min-w-0 flex-1 border-0 bg-transparent outline-none`,`px-3 py-2 text-sm placeholder:text-tertiary-alt`,`[&::-webkit-search-cancel-button]:hidden`)}),c?(0,Y.jsx)(`button`,{type:`button`,onClick:()=>l(``),"aria-label":r(g.MCP$SEARCH_CLEAR),className:`mr-2 cursor-pointer rounded p-1 text-tertiary-alt hover:text-white`,children:(0,Y.jsx)(be,{className:`h-4 w-4`,"aria-hidden":!0})}):null]}),a?(0,Y.jsx)(`p`,{"data-testid":`plugin-picker-loading`,className:`py-8 text-center text-sm text-tertiary-light`,children:r(g.PLUGINS$PICKER_LOADING)}):o?(0,Y.jsx)(`p`,{"data-testid":`plugin-picker-error`,className:`py-8 text-center text-sm text-tertiary-light`,children:r(g.PLUGINS$PICKER_ERROR)}):u.length===0?(0,Y.jsx)(`p`,{"data-testid":`plugin-picker-empty`,className:`py-8 text-center text-sm text-tertiary-light`,children:r(g.PLUGINS$PICKER_EMPTY)}):(0,Y.jsx)(`div`,{className:ot,children:(0,Y.jsx)(`div`,{className:ct,children:u.map(r=>(0,Y.jsx)(Ut,{plugin:r,isSelected:Gt(e,r),isDisabled:n,onToggle:()=>t(Kt(e,r))},`${r.source} ${r.ref??``} ${r.repo_path??``} ${r.name}`))})})]})}function Yt({selected:e,onChange:t,onClose:n}){let{t:r}=s(`openhands`);return(0,Y.jsx)(Te,{onClose:n,children:(0,Y.jsxs)(`div`,{"data-testid":`plugin-picker-modal`,className:_(`relative flex max-h-[80vh] flex-col gap-4 rounded-xl border border-[var(--oh-border)] bg-base-secondary p-6`,De(`lg`),Oe),children:[(0,Y.jsx)(We,{onClose:n,testId:`plugin-picker-close`}),(0,Y.jsxs)(`div`,{className:`pr-6`,children:[(0,Y.jsx)(q.H2,{children:r(g.PLUGINS$PICKER_TITLE)}),(0,Y.jsx)(q.Text,{className:`mt-1 block text-sm text-tertiary-light`,children:r(g.PLUGINS$PICKER_SUBTITLE)})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto custom-scrollbar`,children:(0,Y.jsx)(Jt,{selected:e,onChange:t})}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between border-t border-[var(--oh-border-subtle)] pt-4`,children:[(0,Y.jsx)(q.Text,{className:`text-sm text-tertiary-light`,children:r(g.PLUGINS$PICKER_SELECTED_COUNT,{count:e.length})}),(0,Y.jsx)(Fe,{testId:`plugin-picker-done`,type:`button`,variant:`primary`,onClick:n,className:`px-4`,children:r(g.PLUGINS$PICKER_DONE)})]})]})})}function Xt({count:e,onClick:t,disabled:n=!1}){let{t:r}=s(`openhands`);return(0,Y.jsxs)(`button`,{type:`button`,"data-testid":`open-plugin-picker`,onClick:t,disabled:n,className:_(`flex flex-row items-center gap-2 rounded-full px-2.5 py-1 text-white`,Me,Ne,je,n?`cursor-not-allowed opacity-50`:`cursor-pointer hover:bg-surface-raised`),children:[(0,Y.jsx)(`span`,{className:`flex h-4 w-4 shrink-0 items-center justify-center`,children:(0,Y.jsx)(bt,{width:16,height:16,className:`shrink-0`,"aria-hidden":!0})}),(0,Y.jsx)(`span`,{className:`text-sm font-normal leading-5`,children:r(g.PLUGINS$PICKER_TRIGGER)}),e>0?(0,Y.jsx)(`span`,{"data-testid":`plugin-picker-count`,className:`inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-white px-1 text-[11px] font-semibold leading-none text-black`,children:e}):null]})}var Zt={latestRun:null,recentRuns:[],isLoading:!0,isError:!1};function Qt(){let e=w(),{data:t,isLoading:n}=tt(),r=t?.status===`ok`,{data:i,isError:a,isLoading:o}=nt({limit:50,offset:0,enabled:!e&&r}),s=e?E:i?.automations??[],c=s.filter(e=>e.enabled).slice(0,20),l=new Set(s.map(e=>e.id)),u=e?!0:i!=null&&s.length>=i.total,d=T(e?[]:c),f=e?b:d;return e?{isBackendHealthy:!0,isHealthLoading:!1,isError:!1,isAutomationsLoading:!1,enabledAutomations:c,knownAutomationIds:l,isAutomationListComplete:u,runStates:f}:{isBackendHealthy:r,isHealthLoading:n,isError:a,isAutomationsLoading:o,enabledAutomations:c,knownAutomationIds:l,isAutomationListComplete:u,runStates:f}}var $t=`oh:home-pinned-automations`;function en(e,t){return`${$t}:${e}:${t??`-`}`}function Z(e){if(!Array.isArray(e))return[];let t=new Set,n=[];for(let r of e)typeof r!=`string`||!r||t.has(r)||(t.add(r),n.push(r));return n}function Q(e,t){let n=new Set(e),r=[];for(let e of t)n.has(e)&&(r.push(e),n.delete(e));for(let t of e)n.has(t)&&r.push(t);return r}function tn(e,t,n,r=`after`){if(t===n)return[...e];let i=e.indexOf(t),a=e.indexOf(n);if(i<0||a<0)return[...e];let o=[...e];o.splice(i,1);let s=o.indexOf(n),c=r===`before`?s:s+1;return o.splice(c,0,t),o}function nn(){let e=w(),t=h(),[n,r]=Ot(en(t.backend.id,t.orgId),[]),[i,a]=(0,J.useState)(null),o=(0,J.useMemo)(()=>e?i?Q(F,i):[...F]:Z(n),[e,i,n]),s=(0,J.useCallback)(e=>o.includes(e),[o]),c=(0,J.useCallback)(t=>{if(e){a(e=>{let n=e?Q(F,e):[...F];return n.includes(t)?n:[...n,t]});return}r(e=>{let n=Z(e);return n.includes(t)?n:[...n,t]})},[e,r]),l=(0,J.useCallback)(t=>{if(e){a(e=>(e?Q(F,e):[...F]).filter(e=>e!==t));return}r(e=>Z(e).filter(e=>e!==t))},[e,r]);return{pinnedIds:o,isPinned:s,pin:c,unpin:l,togglePin:(0,J.useCallback)(e=>{if(s(e)){l(e);return}c(e)},[s,c,l]),reorder:(0,J.useCallback)((t,n,i=`after`)=>{if(e){a(e=>tn(e?Q(F,e):[...F],t,n,i));return}r(e=>tn(Z(e),t,n,i))},[e,r]),pruneMissing:(0,J.useCallback)(t=>{e||r(e=>{let n=Z(e),r=n.filter(e=>t.has(e));return r.length===n.length&&r.every((e,t)=>e===n[t])?n:r})},[e,r])}}function rn({automationName:e,isOpen:t,onConfirm:n,onCancel:r}){let{t:i}=s(`openhands`);return t?(0,Y.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center`,children:[(0,Y.jsx)(`div`,{className:`absolute inset-0 bg-black/60`,onClick:r,onKeyDown:e=>{e.key===`Escape`&&r()},role:`presentation`}),(0,Y.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":`turn-off-automation-title`,className:`relative w-full max-w-sm rounded-xl border border-[var(--oh-border)] bg-[var(--oh-surface)] p-6`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:r,className:`absolute right-4 top-4 text-muted hover:text-foreground`,"aria-label":i(g.BUTTON$CLOSE),children:(0,Y.jsx)(dt,{className:`size-5`})}),(0,Y.jsx)(`h2`,{id:`turn-off-automation-title`,className:Ae,children:i(g.AUTOMATIONS$TURN_OFF_CONFIRM_TITLE)}),(0,Y.jsx)(`p`,{className:`mt-2 text-sm text-muted`,children:i(g.AUTOMATIONS$TURN_OFF_CONFIRM_MESSAGE,{name:e})}),(0,Y.jsxs)(`div`,{className:`mt-6 flex justify-end gap-3`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:r,className:`rounded-lg border border-[var(--oh-border)] px-4 py-2 text-sm text-white hover:bg-surface-raised`,children:i(g.AUTOMATIONS$CANCEL)}),(0,Y.jsx)(`button`,{type:`button`,"data-testid":`turn-off-automation-confirm`,onClick:n,className:`rounded-lg bg-danger px-4 py-2 text-sm text-white hover:bg-danger/80`,children:i(g.AUTOMATIONS$TURN_OFF)})]})]})]}):null}function an({automation:e,t,canManage:n,canEdit:r,isRunPending:i,isCancelPending:a,canCancel:o,testIdPrefix:s,pinTestId:c,isPinned:l,onRunNow:u,onCancelRun:d,onView:f,onEdit:p,onTurnOff:m,onTogglePin:h}){let _=[];return n&&_.push({kind:`item`,key:`run-now`,label:t(g.AUTOMATIONS$RUN_NOW),icon:(0,Y.jsx)(Mt,{className:`size-4`}),onClick:u,disabled:i||!e.enabled||o,testId:`${s}-run-${e.id}`}),n&&o&&_.push({kind:`item`,key:`cancel-run`,label:t(g.AUTOMATIONS$CANCEL_RUN),icon:(0,Y.jsx)(Vt,{className:`size-3.5 fill-current`,"aria-hidden":!0}),onClick:d,disabled:a,testId:`${s}-cancel-${e.id}`}),_.push({kind:`item`,key:`view`,label:t(g.COMMON$VIEW),icon:(0,Y.jsx)(D,{className:`size-4`,"aria-hidden":!0}),onClick:f,testId:`${s}-view-${e.id}`}),n&&r&&p&&_.push({kind:`item`,key:`edit`,label:t(g.AUTOMATIONS$EDIT),icon:(0,Y.jsx)(Ye,{className:`size-4`}),onClick:p,testId:`${s}-edit-${e.id}`}),n&&_.push({kind:`item`,key:`turn-off`,label:t(g.AUTOMATIONS$TURN_OFF),icon:(0,Y.jsx)(At,{className:`size-4`}),onClick:m,testId:`${s}-turn-off-${e.id}`}),_.push({kind:`separator`,key:`pin-separator`},{kind:`item`,key:`pin`,label:t(l?g.FEATURED_AUTOMATIONS$UNPIN:g.FEATURED_AUTOMATIONS$PIN),icon:(0,Y.jsx)(pe,{className:l?`size-3.5 fill-current`:`size-3.5`,"aria-hidden":`true`}),onClick:h,testId:c}),_}function on({onUnpin:e,automation:t,...n}){return an({...n,automation:t,testIdPrefix:`pinned-automation`,pinTestId:`unpin-automation-${t.id}`,isPinned:!0,onTogglePin:e})}var sn=e(n(),1);function cn({testId:e,panelTestId:t,ariaLabel:n,items:r,triggerClassName:i}){let[a,o]=(0,J.useState)(!1),[s,c]=(0,J.useState)(0),l=(0,J.useRef)(null),u=(0,J.useRef)([]),[,d]=(0,J.useReducer)(e=>e+1,0),f=()=>{o(!1),queueMicrotask(()=>l.current?.focus())},p=Ke(f,l),m=r.map((e,t)=>e.kind===`item`&&!e.disabled?t:-1).filter(e=>e>=0);(0,J.useLayoutEffect)(()=>{if(!a)return;d(),c(m[0]??0);let e=0,t=()=>{e||=window.requestAnimationFrame(()=>{e=0,d()})};return window.addEventListener(`resize`,t),window.addEventListener(`scroll`,t,!0),()=>{window.removeEventListener(`resize`,t),window.removeEventListener(`scroll`,t,!0),e&&window.cancelAnimationFrame(e)}},[a]),(0,J.useEffect)(()=>{a&&u.current[s]?.focus()},[s,a]);let h=(()=>{if(!a||!l.current)return;let e=l.current.getBoundingClientRect(),t=window.innerWidth,n=window.innerHeight,i=r.reduce((e,t)=>e+(t.kind===`separator`?9:36),10),o=p.current?.getBoundingClientRect().height??i;return{position:`fixed`,...e.bottom+4+o+8>n?{bottom:n-e.top+4}:{top:e.bottom+4},right:Math.max(8,t-e.right),zIndex:1e5}})(),g=typeof document<`u`?document.body:null,_=e=>{m.length!==0&&c(m[(m.indexOf(s)+e+m.length)%m.length]??m[0])};return(0,Y.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,Y.jsx)(Je,{ref:l,testId:e,ariaLabel:n,className:i,onClick:e=>{e.preventDefault(),e.stopPropagation(),o(e=>!e)}}),a&&h&&g?(0,sn.createPortal)((0,Y.jsx)(xe,{ref:p,testId:t,theme:`popover`,position:`none`,alignment:`none`,spacing:`none`,style:h,className:`min-w-40`,onKeyDown:e=>{if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),f();return}if(e.key===`ArrowDown`){e.preventDefault(),_(1);return}e.key===`ArrowUp`&&(e.preventDefault(),_(-1))},children:r.map((e,t)=>e.kind===`separator`?(0,Y.jsx)(_e,{},e.key):(0,Y.jsx)(`li`,{children:(0,Y.jsx)(Ce,{ref:e=>{u.current[t]=e},testId:e.testId,isDisabled:e.disabled,className:`group`,onClick:t=>{t.preventDefault(),t.stopPropagation(),!e.disabled&&(e.onClick(),f())},children:(0,Y.jsx)(Nt,{icon:e.icon,label:e.label})})},e.key))}),g):null]})}function ln({automation:e,runState:t,onUnpin:n,onDragStart:i,onDragOver:a,onDrop:o,onDragEnd:c,isDropTarget:l,dropPosition:u,isDragging:d}){let{t:f,i18n:p}=s(`openhands`),{latestRun:m,recentRuns:h,isLoading:v,isError:b}=t,x=H(e,m),w=m?.conversation_id??null,T=w?P(w):void 0,{data:E}=rt(T===void 0?w:null),D=T===void 0?E?.title??null:T,O=m?W(m):null,k=m?.status===K.COMPLETED||m?.status===K.FAILED,A=e.trigger.schedule_human||e.trigger.type,j=(0,J.useMemo)(()=>U(e,A),[e,A]),F=m?.status===K.FAILED&&m.error_detail?.trim()||null,I=F?C(F):null,L=F!=null&&I!=null&&S(F,I),z=(0,J.useRef)(null),V=we()?.insights,ee=on({automation:e,t:f,canManage:x.canManage,canEdit:x.canEdit,isRunPending:x.isRunPending,isCancelPending:x.isCancelPending,canCancel:x.canCancel,onRunNow:x.runNow,onCancelRun:x.cancelRun,onView:x.viewDetails,onEdit:x.canEdit?x.openEdit:void 0,onTurnOff:x.requestTurnOff,onUnpin:()=>n(e.id)});return(0,Y.jsxs)(`article`,{ref:z,role:`listitem`,"data-testid":`pinned-automation-card-${e.id}`,onDragOver:t=>{t.preventDefault();let{dataTransfer:n}=t;n.dropEffect=`move`;let r=t.currentTarget.getBoundingClientRect(),i=(t.clientX-r.left)/r.width,o=(t.clientY-r.top)/r.height,s=i<.3||i>.7?i<.5?`before`:`after`:o<.5?`before`:`after`;a(e.id,s)},onDrop:t=>{t.preventDefault(),o(e.id)},onDragEnd:c,className:_(`group relative flex min-w-0 flex-col overflow-hidden p-4 text-left`,it,st,d&&`opacity-50`,l&&u===`before`&&`shadow-[inset_0_2px_0_0_var(--oh-focus)]`,l&&u===`after`&&`shadow-[inset_0_-2px_0_0_var(--oh-focus)]`),children:[(0,Y.jsxs)(`header`,{className:`flex flex-col gap-1.5`,children:[(0,Y.jsxs)(`div`,{draggable:!0,"data-testid":`pinned-automation-drag-${e.id}`,"aria-label":f(g.FEATURED_AUTOMATIONS$REORDER_HANDLE,{name:e.name}),className:`-mx-4 -mt-4 flex cursor-grab items-center justify-between gap-3 px-4 pt-4 active:cursor-grabbing`,onDragStart:t=>{if(t.target?.closest(`[data-no-drag]`)){t.preventDefault();return}let{dataTransfer:n}=t;n.effectAllowed=`move`,n.setData(`text/plain`,e.id),z.current&&n.setDragImage(z.current,24,24),i(e.id)},onDragEnd:c,children:[(0,Y.jsx)(`span`,{role:`link`,tabIndex:0,title:f(g.FEATURED_AUTOMATIONS$VIEW_DETAILS),className:`h-8 min-w-0 flex-1 cursor-pointer truncate text-sm font-semibold leading-8 text-[var(--oh-foreground)] hover:underline focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--oh-focus)]`,onClick:()=>x.viewDetails(),onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),x.viewDetails())},children:e.name}),(0,Y.jsx)(`div`,{"data-no-drag":!0,className:`flex h-8 shrink-0 items-center`,children:(0,Y.jsx)(cn,{testId:`pinned-automation-menu-${e.id}`,panelTestId:`pinned-automation-menu-panel-${e.id}`,ariaLabel:f(g.FEATURED_AUTOMATIONS$ROW_MENU_LABEL,{name:e.name}),triggerClassName:`opacity-70 group-hover:opacity-100`,items:ee})})]}),e.prompt?(0,Y.jsx)(`p`,{className:`line-clamp-2 text-xs leading-relaxed text-[var(--oh-text-secondary)]`,children:e.prompt}):null]}),j.length>0||h.length>0?(0,Y.jsxs)(`div`,{className:_(`mt-3 flex items-center gap-3`,j.length>0?`justify-between`:`justify-end`),children:[j.length>0?(0,Y.jsx)(`div`,{className:`min-w-0 flex-1 overflow-hidden`,children:(0,Y.jsx)(lt,{pills:j,testId:`pinned-automation-pills-${e.id}`})}):null,h.length>0?(0,Y.jsx)(N,{automationId:e.id,runs:h,testId:`pinned-automation-activity-${e.id}`}):null]}):null,(0,Y.jsxs)(`div`,{className:B,children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2 overflow-hidden`,children:[v?(0,Y.jsx)(`div`,{className:`h-3.5 w-3/4 animate-pulse rounded bg-surface-raised motion-reduce:animate-none`,"aria-hidden":`true`}):null,!v&&b?(0,Y.jsx)(`p`,{className:`truncate text-[var(--oh-text-secondary)]`,children:f(g.FEATURED_AUTOMATIONS$STATUS_UNAVAILABLE)}):null,!v&&!b&&!m?(0,Y.jsx)(`p`,{className:`truncate text-[var(--oh-text-secondary)]`,children:f(g.AUTOMATIONS$DETAIL$NO_RUNS)}):null,m?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(jt,{status:m.status,iconOnly:!0,showLabel:m.status===K.PENDING||m.status===K.RUNNING&&!D}),I?L&&F?(0,Y.jsx)(r,{content:(0,Y.jsx)(`p`,{className:`max-w-xs whitespace-pre-wrap break-words p-2 text-xs`,children:F}),placement:`top`,closeDelay:100,disableAnimation:!1,className:`rounded-xl border border-[var(--oh-border)] bg-base-secondary p-0 text-white shadow-xl`,children:(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 cursor-default truncate text-[var(--oh-status-error)]`,children:I})}):(0,Y.jsx)(`p`,{className:`min-w-0 flex-1 truncate text-[var(--oh-status-error)]`,children:I}):null,w&&D?(0,Y.jsxs)(G,{to:`/conversations/${w}`,"aria-label":D,title:D,className:`group/conversation inline-flex min-w-0 items-center gap-1 text-[var(--oh-foreground)] hover:text-[var(--oh-text-secondary)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--oh-focus)]`,children:[(0,Y.jsx)(`span`,{className:`truncate`,children:D}),(0,Y.jsx)(y,{className:`size-3 shrink-0 opacity-0 transition-opacity group-hover/conversation:opacity-100 group-focus-visible/conversation:opacity-100`,"aria-hidden":`true`})]}):null,!w&&k?(0,Y.jsx)(`p`,{className:`min-w-0 truncate text-[var(--oh-text-secondary)]`,children:f(g.AUTOMATIONS$DETAIL$NO_CONVERSATION)}):null]}):null]}),O?(0,Y.jsx)(`span`,{className:`shrink-0 text-[var(--oh-text-secondary)]`,children:kt(O,p.language,f)}):null]}),V?(0,Y.jsx)(`div`,{className:`mt-3`,children:(0,Y.jsx)(R,{state:M(t),copy:V.stats})}):null,x.editOpen?(0,Y.jsx)(Pt,{automation:e,isOpen:x.editOpen,onClose:()=>x.setEditOpen(!1)}):null,(0,Y.jsx)(rn,{automationName:e.name,isOpen:x.turnOffConfirmOpen,onConfirm:x.confirmTurnOff,onCancel:x.cancelTurnOff})]})}function un(){let{t:e}=s(`openhands`),{pinnedIds:t,unpin:n,reorder:r,pruneMissing:i}=nn(),{isBackendHealthy:a,isHealthLoading:o,isError:c,enabledAutomations:l,knownAutomationIds:u,isAutomationListComplete:f,runStates:p}=Qt(),[m,h]=(0,J.useState)(!1),[v,y]=(0,J.useState)(null),[b,x]=(0,J.useState)(null),[S,C]=(0,J.useState)(null);(0,J.useEffect)(()=>{!f||u.size===0||i(u)},[f,u,i]);let w=new Map(l.map(e=>[e.id,e])),T=t.map(e=>w.get(e)).filter(e=>!!e);if(o||!a||c||T.length===0)return null;let E=m||T.length<=6?T:T.slice(0,6),D=T.length>6;return(0,Y.jsxs)(`section`,{"data-testid":`pinned-automations-dashboard`,"aria-label":e(g.FEATURED_AUTOMATIONS$PINNED_DASHBOARD_LABEL),className:_(`w-full`,d),children:[(0,Y.jsx)(`h2`,{className:`mb-2 text-sm font-medium text-[var(--oh-foreground)]`,children:e(g.FEATURED_AUTOMATIONS$PINNED_TITLE)}),(0,Y.jsx)(`div`,{role:`list`,className:`grid grid-cols-1 gap-3 sm:grid-cols-2`,children:E.map(e=>(0,Y.jsx)(ln,{automation:e,runState:p.get(e.id)??Zt,onUnpin:n,onDragStart:y,onDragOver:(e,t)=>{x(e),C(t)},onDrop:e=>{v&&S&&r(v,e,S),y(null),x(null),C(null)},onDragEnd:()=>{y(null),x(null),C(null)},isDropTarget:b===e.id,dropPosition:b===e.id?S:null,isDragging:v===e.id},e.id))}),D?(0,Y.jsx)(`div`,{className:`mt-2 flex justify-start`,children:(0,Y.jsx)(`button`,{type:`button`,"data-testid":`pinned-automations-view-more`,onClick:()=>h(e=>!e),className:`text-xs text-[var(--oh-text-secondary)] hover:text-[var(--oh-foreground)]`,children:e(m?g.COMMON$VIEW_LESS:g.COMMON$VIEW_MORE)})}):null]})}function dn(e,t,n,r){let{latestRun:i}=t,a=i?W(i):null;return{id:e.id,name:e.name,triggerSummary:k(e),status:i?.status??null,whenLabel:a?kt(a,n,r):null,conversationId:i?.conversation_id??null}}function fn(e,t){let n=t.get(e),r=n?.latestRun?.status;if(r===K.PENDING||r===K.RUNNING)return 2**53-1;let i=n?.latestRun?W(n.latestRun):null;return i?new Date(i).getTime():0}function pn(e,t,n,r,i){return[...e].map(e=>dn(e,t.get(e.id)??i,n,r)).sort((e,n)=>fn(n.id,t)-fn(e.id,t))}function mn(e){return e.conversationId?`/conversations/${e.conversationId}`:`/automations/${e.id}`}function hn({item:e,automation:t,runState:n}){let{t:i}=s(`openhands`),{isPinned:a,togglePin:o}=nn(),c=H(t,n.latestRun),l=a(e.id),u=t.trigger.type===`event`?Se:et,d=O(t),f=x(t),p=ee(t),m=!!(d||f||p),h=m||!!e.whenLabel||!!e.status,v=te(n),y=I(n),b=an({automation:t,t:i,canManage:c.canManage,canEdit:c.canEdit,isRunPending:c.isRunPending,isCancelPending:c.isCancelPending,canCancel:c.canCancel,testIdPrefix:`running-automation`,pinTestId:`running-automation-pin-${e.id}`,isPinned:l,onRunNow:c.runNow,onCancelRun:c.cancelRun,onView:c.viewDetails,onEdit:c.canEdit?c.openEdit:void 0,onTurnOff:c.requestTurnOff,onTogglePin:()=>o(e.id)});return(0,Y.jsxs)(`li`,{"data-testid":`running-automation-row-${e.id}`,className:L,children:[(0,Y.jsx)(r,{content:(0,Y.jsx)(V,{automation:t,runState:n}),placement:`top-start`,closeDelay:100,disableAnimation:!1,className:`rounded-xl border border-[var(--oh-border)] bg-base-secondary p-0 text-white shadow-xl`,children:(0,Y.jsx)(G,{to:mn(e),"aria-label":`${e.name} ${i(y)}`,className:`flex min-w-0 flex-1 items-center justify-between gap-3 px-3 py-2.5 focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--oh-focus)]`,children:(0,Y.jsxs)(`div`,{className:`grid min-w-0 flex-1 grid-cols-[auto_minmax(0,1fr)] gap-x-2`,children:[(0,Y.jsx)(`span`,{className:`inline-flex h-5 w-2.5 shrink-0 items-center justify-center`,children:(0,Y.jsx)(z,{health:v})}),(0,Y.jsx)(`span`,{className:`truncate text-sm font-medium leading-5 text-[var(--oh-foreground)]`,children:e.name}),h?(0,Y.jsxs)(`span`,{className:`col-start-2 mt-0.5 flex min-w-0 items-center gap-1.5 text-xs leading-4 text-[var(--oh-text-secondary)]`,children:[(0,Y.jsx)(u,{className:`size-3 shrink-0`,"aria-hidden":`true`}),d?(0,Y.jsx)(`span`,{className:`truncate`,children:d}):null,f?(0,Y.jsx)(`span`,{className:`truncate`,children:f}):null,p?(0,Y.jsx)(`span`,{className:_(at,`shrink-0 px-1.5 py-0 text-[var(--oh-text-secondary)]`),children:j(p)}):null,e.whenLabel?(0,Y.jsxs)(Y.Fragment,{children:[m?(0,Y.jsx)(`span`,{className:`shrink-0`,"aria-hidden":`true`,children:`·`}):null,(0,Y.jsx)(`span`,{className:`truncate`,children:e.whenLabel})]}):null,e.status?(0,Y.jsxs)(Y.Fragment,{children:[m||e.whenLabel?(0,Y.jsx)(`span`,{className:`shrink-0`,"aria-hidden":`true`,children:`·`}):null,(0,Y.jsx)(jt,{status:e.status,compact:!0})]}):null]}):null,(0,Y.jsx)(`span`,{className:`sr-only`,children:i(y)})]})})}),(0,Y.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5 pr-1.5`,children:[(0,Y.jsx)(N,{automationId:t.id,runs:n.recentRuns,testId:`running-automation-activity-${e.id}`}),(0,Y.jsx)(cn,{testId:`running-automation-menu-${e.id}`,panelTestId:`running-automation-menu-panel-${e.id}`,ariaLabel:i(g.FEATURED_AUTOMATIONS$ROW_MENU_LABEL,{name:e.name}),triggerClassName:`opacity-70 group-hover:opacity-100`,items:b})]}),c.editOpen?(0,Y.jsx)(Pt,{automation:t,isOpen:c.editOpen,onClose:()=>c.setEditOpen(!1)}):null,(0,Y.jsx)(rn,{automationName:t.name,isOpen:c.turnOffConfirmOpen,onConfirm:c.confirmTurnOff,onCancel:c.cancelTurnOff})]})}function gn(){let{t:e,i18n:t}=s(`openhands`),[n,r]=(0,J.useState)(!1),{isBackendHealthy:i,isHealthLoading:a,isError:o,isAutomationsLoading:c,enabledAutomations:l,runStates:u}=Qt(),d=t?.language??`en`,f=(0,J.useMemo)(()=>pn(l,u,d,e,Zt),[l,u,d,e]),p=(0,J.useMemo)(()=>new Map(l.map(e=>[e.id,e])),[l]),m=n?20:10,h=f.slice(0,m),_=!n&&f.length>10,v=n&&f.length>=20;if(a||!i||o||c)return null;let y=f.length===0;return(0,Y.jsxs)(`section`,{"aria-labelledby":`running-automations-heading`,"data-testid":`running-automations-list`,className:`w-full`,children:[(0,Y.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-2`,children:[(0,Y.jsx)(`h2`,{id:`running-automations-heading`,className:`text-sm font-medium text-[var(--oh-foreground)]`,children:e(g.FEATURED_AUTOMATIONS$SECTION_TITLE)}),(0,Y.jsx)(Re,{content:e(g.FEATURED_AUTOMATIONS$MANAGE),placement:`bottom`,children:(0,Y.jsxs)(G,{to:`/automations`,"data-testid":`home-automations-manage`,"aria-label":e(g.FEATURED_AUTOMATIONS$MANAGE),className:`inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 text-xs font-medium text-[var(--oh-text-secondary)] transition-colors hover:bg-[var(--oh-interactive-hover)] hover:text-[var(--oh-foreground)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--oh-focus)]`,children:[(0,Y.jsx)(ve,{className:`size-3`,"aria-hidden":`true`}),e(g.BUTTON$ADD)]})})]}),y?(0,Y.jsx)(`p`,{"data-testid":`running-automations-empty-hint`,className:`rounded-xl border border-[var(--oh-border-subtle)] bg-[var(--oh-surface)] px-4 py-3 text-xs text-[var(--oh-text-secondary)]`,children:e(g.FEATURED_AUTOMATIONS$EMPTY_HINT)}):(0,Y.jsx)(`ul`,{"aria-label":e(g.FEATURED_AUTOMATIONS$RECENT_GROUP_LABEL),className:A,children:h.map(e=>{let t=p.get(e.id);return t?(0,Y.jsx)(hn,{item:e,automation:t,runState:u.get(e.id)??Zt},e.id):null})}),_?(0,Y.jsx)(`div`,{className:`mt-2 flex justify-start`,children:(0,Y.jsx)(`button`,{type:`button`,"data-testid":`home-automations-view-more`,onClick:()=>r(!0),className:`rounded-md px-1.5 py-0.5 text-xs font-medium text-[var(--oh-text-secondary)] transition-colors hover:bg-[var(--oh-interactive-hover)] hover:text-[var(--oh-foreground)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--oh-focus)]`,children:e(g.COMMON$VIEW_MORE)})}):null,v?(0,Y.jsx)(`div`,{className:`mt-2 flex justify-start`,children:(0,Y.jsx)(G,{to:`/automations`,"data-testid":`home-automations-view-all`,className:`rounded-md px-1.5 py-0.5 text-xs font-medium text-[var(--oh-text-secondary)] transition-colors hover:bg-[var(--oh-interactive-hover)] hover:text-[var(--oh-foreground)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--oh-focus)]`,children:e(g.FEATURED_AUTOMATIONS$VIEW_ALL)})}):null]})}function _n(){let{t:e}=s(`openhands`);return(0,Y.jsx)(`div`,{className:`flex w-full items-center justify-center py-2`,children:(0,Y.jsx)(q.H1,{className:`w-full text-center leading-normal`,children:e(g.HOME$LETS_START_BUILDING)})})}function vn({kind:e,onClick:t,disabled:n=!1,disabledTooltip:r}){let{t:i}=s(`openhands`),a=e===`local`,o=i(a?g.HOME$OPEN_WORKSPACE:g.COMMON$OPEN_REPOSITORY),c=(0,Y.jsxs)(`button`,{type:`button`,"data-testid":a?`open-workspace-button`:`open-repository-button`,onClick:t,disabled:n,className:_(`flex flex-row items-center gap-2 rounded-full px-2.5 py-1 text-white`,Me,Ne,je,n?`cursor-not-allowed opacity-50`:`cursor-pointer hover:bg-surface-raised`),children:[(0,Y.jsx)(`span`,{className:`flex h-4 w-4 shrink-0 items-center justify-center`,children:a?(0,Y.jsx)(ue,{"aria-hidden":!0,className:`h-4 w-4`,strokeWidth:2}):(0,Y.jsx)(Ge,{width:16,height:16,className:`shrink-0`})}),(0,Y.jsx)(`span`,{className:`text-sm font-normal leading-5`,children:o})]});return r?(0,Y.jsx)(Re,{content:r,placement:`top`,children:(0,Y.jsx)(`span`,{className:`inline-flex`,children:c})}):c}var $=`__ungrouped__`;function yn({workspaces:e,parents:t=[],value:n,placeholder:r,className:i,disabled:a=!1,disabledTooltip:o,showManage:c,onChange:l,onAddClick:u,onManageClick:d}){let{t:f}=s(`openhands`),[p,m]=(0,J.useState)(n?.name??``),h=(0,J.useRef)(null),v=(0,J.useMemo)(()=>{let t=p.trim().toLowerCase();return t?e.filter(e=>e.name.toLowerCase().includes(t)||e.path.toLowerCase().includes(t)):e},[e,p]),y=(0,J.useCallback)(e=>e.parentPath??$,[]),b=(0,J.useMemo)(()=>{let e=new Map;return t.forEach(t=>e.set(t.path,t.name)),e},[t]),{groupedWorkspaces:x,isGrouped:S,headerByFirstIndex:C,groupLabelByIndex:w}=(0,J.useMemo)(()=>{let e=[],t=new Map;v.forEach(n=>{let r=y(n);t.has(r)||(t.set(r,[]),e.push(r)),t.get(r)?.push(n)}),e.sort((e,t)=>e===$?1:t===$?-1:0);let n=e.length>1,r=[],i=new Map,a=new Map;return e.forEach(e=>{let o=e===$?f(g.HOME$WORKSPACE_GROUP_OTHER):b.get(e)||e.split(`/`).filter(Boolean).pop()||e;n&&i.set(r.length,o),(t.get(e)??[]).forEach(e=>{a.set(r.length,o),r.push(e)})}),{groupedWorkspaces:r,isGrouped:n,headerByFirstIndex:i,groupLabelByIndex:a}},[v,y,b,f]),T=(0,J.useCallback)(e=>{l(e),e&&m(e.name)},[l]),E=(0,J.useCallback)(()=>{T(null),m(``)},[T]),{isOpen:D,getToggleButtonProps:O,getMenuProps:k,getInputProps:A,highlightedIndex:j,getItemProps:M,selectedItem:N,closeMenu:P}=Le({items:x,itemToString:e=>e?.name??``,selectedItem:n,onSelectedItemChange:({selectedItem:e})=>{T(e??null)},inputValue:p,onIsOpenChange:({isOpen:e,selectedItem:t})=>{m(e?``:t?.name??``)},stateReducer:(e,t)=>t.type===Le.stateChangeTypes.InputClick&&e.isOpen?{...t.changes,isOpen:!0}:t.changes}),F=(e,t,n,r,i)=>(0,Y.jsx)(Ft,{item:e,index:t,isSelected:r?.id===e.id,getItemProps:i,getDisplayText:e=>e.name,getItemKey:e=>e.id,ariaLabel:S?`${w.get(t)??``}, ${e.name}`.trim():void 0},e.id),I=e=>(0,Y.jsx)(It,{inputValue:e,searchMessage:f(g.HOME$NO_WORKSPACES),emptyMessage:f(g.HOME$NO_WORKSPACES),testId:`workspace-dropdown-empty`}),L=(0,J.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]),R=(0,J.useCallback)(e=>{L(e),P(),u()},[P,u,L]),z=(0,J.useCallback)(e=>{L(e),P(),u()},[P,u,L]),B=(0,J.useCallback)(e=>{L(e),P(),d()},[P,d,L]),V=(0,J.useCallback)(e=>{L(e),P(),d()},[P,d,L]),H=(0,J.useMemo)(()=>(0,Y.jsxs)(`div`,{className:ze,children:[(0,Y.jsx)(`button`,{type:`button`,"data-testid":`add-workspaces-button`,className:_(Be,`cursor-pointer`),onMouseDown:L,onTouchStart:L,onTouchEnd:z,onClick:R,children:f(g.HOME$ADD_WORKSPACES)}),(c??e.length>0)&&(0,Y.jsx)(`button`,{type:`button`,"data-testid":`manage-workspaces-button`,className:_(Be,`cursor-pointer`),onMouseDown:L,onTouchStart:L,onTouchEnd:V,onClick:B,children:f(g.HOME$MANAGE_WORKSPACES)})]}),[R,z,B,V,L,f,e.length,c]),U=(0,Y.jsxs)(`div`,{className:_(`relative`,i),children:[(0,Y.jsxs)(`div`,{className:`group relative text-[var(--oh-muted)] hover:text-white`,children:[(0,Y.jsx)(`div`,{className:`absolute left-2 top-1/2 transform -translate-y-1/2 z-10`,children:(0,Y.jsx)(Xe,{width:16,height:16})}),(0,Y.jsx)(`input`,{...A({disabled:a,placeholder:D&&n?n.name:r??f(g.HOME$WORKSPACE_PLACEHOLDER),className:_(Pe,`text-inherit shadow-none pl-7 pr-16 text-sm font-normal leading-5`,`placeholder:text-[var(--oh-muted)]`,`disabled:cursor-not-allowed disabled:opacity-60`),onChange:e=>{m(e.target.value)}}),"data-testid":`workspace-dropdown`}),(0,Y.jsxs)(`div`,{className:`absolute right-1 top-1/2 transform -translate-y-1/2 flex items-center`,children:[n&&(0,Y.jsx)(zt,{disabled:a,onClear:E}),(0,Y.jsx)(Lt,{isOpen:D,disabled:a,getToggleButtonProps:O})]})]}),(0,Y.jsx)(Rt,{isOpen:D,filteredItems:x,inputValue:p,highlightedIndex:j,selectedItem:N,getMenuProps:k,getItemProps:M,menuRef:h,renderItem:F,renderItemPrefix:S?(e,t)=>{let n=C.get(t);return n?(0,Y.jsx)(`li`,{role:`presentation`,"aria-hidden":`true`,"data-testid":`workspace-group-header`,className:`px-2 pt-2 pb-1 text-xs font-medium text-[var(--oh-muted)] select-none`,children:n}):null}:void 0,renderEmptyState:I,stickyFooterItem:H,testId:`workspace-dropdown-menu`,itemKey:e=>e.id})]});return o?(0,Y.jsx)(Re,{content:o,placement:`top`,children:(0,Y.jsx)(`span`,{className:`block`,children:U})}):U}var bn=`oh:home-selected-workspace-path`;function xn(){if(typeof window>`u`)return null;try{let e=window.sessionStorage.getItem(bn);return e&&e.length>0?e:null}catch{return null}}function Sn(e){if(!(typeof window>`u`))try{e?window.sessionStorage.setItem(bn,e):window.sessionStorage.removeItem(bn)}catch{}}function Cn({isLoadingSettings:e=!1,onConfirm:t}){let{t:n}=s(`openhands`),{navigate:r}=Ie(),{data:i,error:a}=se(),o=i?.workspaceParents??[],{mutate:c}=he(),{mutate:l}=ae(),{mutate:d}=fe(),{mutate:f}=le(),{workspaces:p,parents:m,isLoading:h,isError:_,error:v}=oe(),y=ie(a??v,n),[b,x]=J.useState(null),[S,C]=J.useState(!1),[w,T]=J.useState(!1),{mutate:E,isPending:D,isSuccess:O}=qe(),k=u(),A=D||O||k,j=J.useCallback(e=>{x(e),Sn(e?.path??null)},[]);J.useEffect(()=>{let e=xn();if(!e)return;let t=p.find(t=>t.path===e);if(t){x(e=>e?.path===t.path?e:t);return}!h&&!_&&!y&&(Sn(null),x(t=>t?.path===e?null:t))},[_,h,p,y]);let M=o.length>0||!!y,N=null;y?N=y:h?N=n(g.HOME$LOADING):_&&(N=n(g.HOME$WORKSPACE_SCAN_ERROR));let P=!!y||e||h&&p.length===0;return(0,Y.jsxs)(`div`,{className:`flex flex-col`,children:[!t&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-[10px] pb-4`,children:[(0,Y.jsx)($e,{width:24,height:24}),(0,Y.jsx)(`span`,{className:`leading-5 font-bold text-base text-white`,children:n(g.HOME$WORKSPACES_TAB)})]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-[10px] pb-4`,children:[(0,Y.jsx)(yn,{workspaces:p,parents:m,value:b,placeholder:y?n(g.HOME$WORKSPACES_UNSUPPORTED_PLACEHOLDER):P?n(g.HOME$LOADING):void 0,disabled:P,disabledTooltip:y,showManage:p.length>0||o.length>0,onChange:j,onAddClick:()=>C(!0),onManageClick:()=>T(!0),className:`max-w-auto`},b?.path??`empty-workspace-selection`),M&&N&&(0,Y.jsx)(`p`,{className:`px-1 text-xs text-[var(--oh-text-secondary)]`,"data-testid":`workspace-status-message`,children:N})]}),(0,Y.jsx)(Fe,{testId:`workspace-launch-button`,variant:`primary`,type:`button`,isDisabled:!b||!t&&A||e,onClick:()=>{if(b){if(t){t(b);return}E({workingDir:b.path,entryPoint:`home_workspace_form`},{onSuccess:e=>r(`/conversations/${e.conversation_id}`)})}},className:t?`w-full`:`w-auto absolute bottom-5 left-5 right-5`,children:n(t?g.BUTTON$CONFIRM:A?g.HOME$LOADING:g.BUTTON$LAUNCH)}),(0,Y.jsx)(ce,{isOpen:S,onClose:()=>C(!1),onAdd:e=>{let t=e[e.length-1];c(e,{onSuccess:()=>{t&&j(t)}})},onAddParent:e=>d(e)}),(0,Y.jsx)(me,{isOpen:w,workspaces:p,workspaceParents:o,onClose:()=>T(!1),onRemove:e=>{b?.path===e&&j(null),l(e)},onRemoveParent:e=>{b?.parentPath===e&&j(null),f(e)}})]})}function wn({isOpen:e,onClose:t,onConfirm:n}){let{t:r}=s(`openhands`),{isLoadingSettings:i}=Ze();return e?(0,Y.jsx)(Te,{onClose:t,children:(0,Y.jsxs)(Ee,{width:`sm`,className:`relative items-start border border-[var(--oh-border)] !gap-4`,children:[(0,Y.jsx)(We,{onClose:t,testId:`close-open-workspace-dialog`}),(0,Y.jsx)(`div`,{className:`w-full pr-6`,children:(0,Y.jsx)(ke,{title:r(g.HOME$OPEN_WORKSPACE)})}),(0,Y.jsx)(`div`,{className:`w-full`,"data-testid":`open-workspace-dialog-body`,children:(0,Y.jsx)(Cn,{isLoadingSettings:i,onConfirm:e=>{n(e),t()}})})]})}):null}function Tn({onRepoSelection:e,isLoadingSettings:t=!1,onConfirm:n}){let{navigate:r}=Ie(),[i,a]=J.useState(null),[o,c]=J.useState(null),[l,d]=J.useState(null),{providers:f}=Ze(),{addRecentRepository:p,setLastSelectedProvider:m,getLastSelectedProvider:h}=Qe(),{mutate:_,isPending:v,isSuccess:y}=qe(),b=u(),{t:x}=s(`openhands`);J.useEffect(()=>{if(f.length!==0){if(f.length===1&&!l){d(f[0]);return}if(f.length>1&&!l){let e=h();e&&f.includes(e)&&d(e)}}},[f,l,h]);let S=v||y||b,C=t=>{t!==l&&(d(t),m(t),a(null),c(null),e?.(null))},w=J.useCallback(e=>{c(e)},[]);return(0,Y.jsxs)(`div`,{className:`flex flex-col`,children:[!n&&(0,Y.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,Y.jsxs)(`div`,{className:`flex items-center gap-[10px] pb-4`,children:[(0,Y.jsx)(Ge,{width:24,height:24}),(0,Y.jsx)(`span`,{className:`leading-5 font-bold text-base text-white`,children:x(g.COMMON$OPEN_REPOSITORY)})]})}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-[10px] pb-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-sm text-white font-normal leading-[22px]`,children:x(g.HOME$SELECT_OR_INSERT_URL)}),f.length<=1?null:(0,Y.jsx)(_t,{providers:f,value:l,className:`max-w-[500px]`,onChange:C,disabled:t})]}),(0,Y.jsx)(Bt,{provider:l||f[0],value:i?.id||null,repositoryName:i?.full_name||null,placeholder:`user/repo`,disabled:!l||t,onChange:t=>{t?(e?.(t),a(t)):(e?.(null),a(null),c(null))},className:`max-w-auto`}),(()=>{let e=i?.main_branch||null;return(0,Y.jsx)(yt,{repository:i?.full_name||null,provider:l||f[0],selectedBranch:o,onBranchSelect:w,defaultBranch:e,className:`max-w-full`,disabled:!i||t})})()]}),(0,Y.jsx)(Fe,{testId:`repo-launch-button`,variant:`primary`,type:`button`,isDisabled:!i||!o||!n&&S||f.length>1&&!l||t,onClick:()=>{if(!(!i||!o)){if(p(i),n){n({repository:i,branch:o,provider:l});return}_({repository:{name:i.full_name||``,gitProvider:i.git_provider||`github`,branch:o.name||`main`},entryPoint:`home_repo_form`},{onSuccess:e=>r(`/conversations/${e.conversation_id}`)})}},className:`w-full`,children:x(n?g.BUTTON$CONFIRM:S?g.HOME$LOADING:g.BUTTON$LAUNCH)})]})}function En({isOpen:e,onClose:t,onConfirm:n}){let{t:r}=s(`openhands`),{isLoadingSettings:i}=Ze();return e?(0,Y.jsx)(Te,{onClose:t,children:(0,Y.jsxs)(Ee,{width:`sm`,className:`relative items-start border border-[var(--oh-border)] !gap-4`,children:[(0,Y.jsx)(We,{onClose:t,testId:`close-open-repository-dialog`}),(0,Y.jsx)(`div`,{className:`w-full pr-6`,children:(0,Y.jsx)(ke,{title:r(g.COMMON$OPEN_REPOSITORY)})}),(0,Y.jsx)(`div`,{className:`w-full`,"data-testid":`open-repository-dialog-body`,children:(0,Y.jsx)(Tn,{isLoadingSettings:i,onConfirm:e=>{n(e),t()}})})]})}):null}function Dn(e,t){return e===`new_worktree`?g.COMMON$WORKSPACE_MODE_NEW_WORKTREE:t===`cloud`?g.COMMON$WORKSPACE_MODE_CLOUD_REPO:g.COMMON$WORKSPACE_MODE_LOCAL_REPO}function On({mode:e}){return e===`new_worktree`?(0,Y.jsx)(ne,{className:`size-3`,strokeWidth:2,"aria-hidden":!0}):(0,Y.jsx)(Ge,{width:12,height:12,color:`white`,"aria-hidden":!0})}var kn=[`local_repo`,`new_worktree`];function An({value:e,backendKind:t,onChange:n,disabled:r=!1,testId:i=`workspace-mode-selector`}){let{t:a}=s(`openhands`),[o,c]=(0,J.useState)(!1),l=(0,J.useRef)(null),u=a(Dn(e,t));return(0,J.useEffect)(()=>{if(!o)return;let e=e=>{l.current&&!l.current.contains(e.target)&&c(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[o]),(0,J.useEffect)(()=>{if(!o)return;let e=e=>{e.key===`Escape`&&c(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[o]),(0,Y.jsxs)(`div`,{ref:l,className:`relative inline-flex`,children:[(0,Y.jsxs)(`button`,{type:`button`,"data-testid":i,"aria-haspopup":`menu`,"aria-expanded":o,"aria-label":u,disabled:r,onClick:()=>c(e=>!e),className:_(`group flex flex-row items-center justify-between gap-2 pl-2.5 pr-2 py-1 rounded-[100px] truncate relative`,`border border-[rgba(71,74,84,0.50)] bg-transparent text-white`,r?`cursor-not-allowed opacity-50`:`cursor-pointer hover:border-[var(--oh-border-subtle)]`),children:[(0,Y.jsx)(`span`,{className:`flex size-3 shrink-0 items-center justify-center`,children:(0,Y.jsx)(On,{mode:e})}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm font-normal leading-5`,children:u}),(0,Y.jsx)(v,{className:`size-3 shrink-0 text-white`,"aria-hidden":!0})]}),o?(0,Y.jsx)(`div`,{role:`menu`,"data-testid":`${i}-menu`,className:_(`absolute left-0 top-full z-50 mt-1 min-w-[180px] rounded-lg border border-[var(--oh-border)] bg-[var(--oh-surface)] p-1 shadow-lg`,ze),children:kn.map(r=>{let o=a(Dn(r,t));return(0,Y.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":r===e,"data-testid":`${i}-option-${r}`,onClick:()=>{n(r),c(!1)},className:Ve,children:[(0,Y.jsx)(`span`,{className:He,children:(0,Y.jsx)(On,{mode:r})}),(0,Y.jsx)(`span`,{className:`truncate`,children:o})]},r)})}):null]})}function jn({workspace:e,repository:t,branch:n,provider:r,workspaceMode:i,backendKind:a,onRepoClick:o,onWorkspaceModeChange:s}){let c=e?e.path.replace(/\/+$/,``).split(`/`).pop()||e.path:null;return(0,Y.jsxs)(`div`,{className:`flex flex-row gap-2.5 items-center flex-wrap`,"data-testid":`home-git-control-bar-preview`,children:[(0,Y.jsx)(Ct,{selectedRepository:t?.full_name??null,gitProvider:r??null,workspaceName:c,onClick:o}),e?(0,Y.jsx)(An,{value:i,backendKind:a,onChange:s}):null,n?(0,Y.jsx)(xt,{selectedBranch:n.name,selectedRepository:t?.full_name??null,gitProvider:r??null}):null]})}function Mn(){let{t:e}=s(`openhands`),{backend:t}=h(),{navigate:n}=Ie(),r=t.kind===`local`,[i,a]=(0,J.useState)(!1),[o,c]=(0,J.useState)(null),[d,_]=(0,J.useState)(null),[v,y]=(0,J.useState)(null),[b,x]=(0,J.useState)(null),[S,C]=(0,J.useState)(`local_repo`),[w,T]=(0,J.useState)([]),[E,D]=(0,J.useState)(!1),{mutateAsync:O,isPending:k}=qe(),A=u(),j=k||A,{isConfigured:M,isLoading:N}=re(),P=!N&&!M,{images:F,files:I,imagesMarkedUploadAsFile:L,clearAllFiles:R}=Ue(),{handleUpload:z}=St(),{error:B}=se({enabled:r}),V=r?ie(B,e):null,H=r?!!o:!!d&&!!v,U=wt(null,t=>{let i=t.trim(),a=F.length>0||I.length>0;if(!i&&!a||j||P)return;let s={images:[...F],files:[...I]},c={query:a?void 0:i||void 0,entryPoint:`home_chat_launcher`};r&&o?c={...c,workingDir:o.path,workspaceMode:S}:!r&&d&&v&&(c={...c,repository:{name:d.full_name,gitProvider:d.git_provider,branch:v.name}}),w.length>0&&(c={...c,plugins:w});let u=l.loading(e(g.HOME$CREATING_CONVERSATION),m);(async()=>{try{let t=await O(c);l.dismiss(u);try{sessionStorage.removeItem(gt)}catch{}let o=t.conversation_id,d=o.startsWith(`task-`);if(a)if(!r||d){let e=t.task_id??(d?o.slice(5):null);if(!e){p(null);return}ht(e,{content:i,images:s.images,files:s.files,imagesMarkedUploadAsFile:[...L]}),R(),await Ht({conversationId:o,text:i,images:s.images,imagesMarkedUploadAsFile:L}),n(`/conversations/${o}`);return}else try{await mt({conversationId:o,content:i,images:s.images,files:s.files,imagesMarkedUploadAsFile:L,t:e}),R()}catch(e){p(e instanceof Error?e.message:null);return}d&&i&&await Ht({conversationId:o,text:i,images:[],imagesMarkedUploadAsFile:[]}),n(`/conversations/${o}`)}catch(e){l.dismiss(u),p(e instanceof Error?e.message:null)}})()});return(0,Y.jsxs)(`div`,{"data-testid":`home-chat-launcher`,className:`flex w-full flex-col items-center pt-[max(4rem,28vh)] pb-10`,children:[(0,Y.jsxs)(`div`,{className:`flex w-full max-w-[800px] flex-col gap-4 md:px-4`,children:[(0,Y.jsx)(`div`,{className:`flex w-full justify-center`,children:(0,Y.jsx)(_n,{})}),(0,Y.jsx)(`div`,{className:`w-full`,children:(0,Y.jsx)(vt,{onSubmit:U,onFilesPaste:z,disabled:j||P})}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-start gap-2`,children:[H?(0,Y.jsx)(jn,{workspace:o,repository:d,branch:v,provider:b,workspaceMode:S,backendKind:t.kind,onRepoClick:()=>a(!0),onWorkspaceModeChange:C}):(0,Y.jsx)(vn,{kind:r?`local`:`cloud`,onClick:()=>a(!0),disabled:j||!!V,disabledTooltip:V}),(0,Y.jsx)(Xt,{count:w.length,onClick:()=>D(!0),disabled:j})]}),(0,Y.jsxs)(`div`,{className:`mt-8 flex w-full flex-col gap-8`,children:[(0,Y.jsx)(f,{variant:`rail`}),(0,Y.jsx)(un,{}),(0,Y.jsx)(gn,{})]})]}),r?(0,Y.jsx)(wn,{isOpen:i,onClose:()=>a(!1),onConfirm:e=>{c(e),_(null),y(null),x(null),C(`local_repo`)}}):(0,Y.jsx)(En,{isOpen:i,onClose:()=>a(!1),onConfirm:({repository:e,branch:t,provider:n})=>{_(e),y(t),x(n??e.git_provider),c(null),C(`local_repo`)}}),E&&(0,Y.jsx)(Yt,{selected:w,onChange:T,onClose:()=>D(!1)})]})}function Nn(){let e=de(a().search);return(0,Y.jsxs)(`div`,{"data-testid":`home-screen`,className:`custom-scrollbar-always h-full overflow-y-auto rounded-xl bg-transparent px-4 md:px-0 lg:px-[42px]`,children:[(0,Y.jsx)(`div`,{className:`md:px-4 lg:px-0`,children:(0,Y.jsx)(Tt,{})}),(0,Y.jsx)(Mn,{}),e?null:(0,Y.jsx)(ge,{})]})}var Pn=o(Nn);export{Pn as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./home-BCGlNJCA.js";export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,i as n,yt as r}from"./vendor-styling-Ck5D_A2Q.js";import{t as i}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz-MAyNb.js";import{D as a}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-ZixYGy6E.js";import{t as o}from"./useQueries-BhbrGEf1.js";import{Mt as s,Nt as c,n as l}from"./active-backend-context-DKFSMbn3.js";import{W as u,t as d}from"./utils-DaCIEEQP.js";import{t as f}from"./plug-BuQhHSSG.js";import{r as p}from"./context-menu-list-item-lVYETtY5.js";import{n as m}from"./use-tracking-D5t9otIF.js";import{n as ee}from"./navigation-context-CQZwH_tC.js";import{t as h}from"./navigation-link-Bxo3-4vo.js";import{p as g}from"./install-server-modal-BbJdhzet.js";import{t as _}from"./folder-C1ou4_DT.js";import{n as v}from"./use-automation-health-BxXdzZMP.js";import{t as y}from"./automation-C_eCrGyP.js";import{c as b,i as te,n as ne,o as re}from"./use-automations-zYb0dUny.js";import{i as x}from"./extension-module-card-classes-DpeaYhYo.js";import{n as S}from"./api-error-message-BJyfWp6p.js";import{o as ie}from"./mcp-marketplace-utils-C13fFccR.js";import{t as C}from"./vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-B2OLKL7N.js";import{a as w,l as ae,p as oe}from"./kebab-menu-item-content-BYokkRHi.js";import{t as se}from"./use-has-permission-B3C8rQmR.js";var ce=a(`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`}]]),T=e(t(),1),E=r(),le=15e3;function ue(e){let t=l(),n=o({queries:e.map(e=>({queryKey:[...b,e.id,{limit:12,offset:0},t.backend.id,t.orgId],queryFn:()=>m.getAutomationRuns(e.id,12,0),staleTime:60*1e3,retry:!1,refetchOnWindowFocus:!1,refetchInterval:e=>{let t=e.state.data?.runs[0];return t?.status===y.PENDING||t?.status===y.RUNNING?le:!1}}))}),r=new Map;return e.forEach((e,t)=>{let i=n[t],a=i?.data?.runs??[];r.set(e.id,{latestRun:a[0]??null,recentRuns:a,total:i?.data?.total,isLoading:i?.isPending??!0,isError:i?.isError??!1})}),r}var de=20,fe=[y.COMPLETED,y.COMPLETED,y.FAILED,y.COMPLETED,y.CANCELLED,y.COMPLETED,y.COMPLETED,y.FAILED,y.COMPLETED,y.SKIPPED,y.COMPLETED];function pe(){return!1}var D={"demo-conv-titled":`Fix flaky CI on main`,"demo-conv-untitled":`Summarize open pull requests`};function me(e){if(e in D)return D[e]}function O(e){return new Date(Date.now()-e*36e5).toISOString()}function k(e,t,n){return{id:e,name:t,trigger:n,enabled:!0,created_at:O(720),updated_at:O(24),prompt:`demo`}}function A(e,t,n={}){let r=n.startedHoursAgo??2,i=n.completedHoursAgo===void 0?1:n.completedHoursAgo;return{id:e,status:t,conversation_id:n.conversationId===void 0?null:n.conversationId,bash_command_id:null,error_detail:n.errorDetail===void 0?null:n.errorDetail,started_at:O(r),completed_at:i===null?null:O(i)}}function he(e){if(!e)return[];let t=[2,8,45,3,15,1,25,90,5,12,6];return[e,...fe.slice(0,11).map((n,r)=>{let i=24+r*6,a=(t[r]??5)/60;return A(`${e.id}-hist-${r}`,n,{startedHoursAgo:i,completedHoursAgo:i-a,conversationId:null,errorDetail:n===y.FAILED?`Prior failure`:null})})]}function ge(e){return{...e,recentRuns:e.recentRuns??he(e.latestRun)}}var j=[{pin:!0,automation:k(`demo-pin-loading`,`Card: loading skeleton`,{type:`cron`,schedule:`0 * * * *`,schedule_human:`Every hour`}),runState:{latestRun:null,isLoading:!0,isError:!1}},{pin:!0,automation:k(`demo-pin-error`,`Card: status unavailable`,{type:`cron`,schedule:`0 9 * * *`,schedule_human:`Daily at 9am`}),runState:{latestRun:null,isLoading:!1,isError:!0}},{pin:!0,automation:k(`demo-pin-no-runs`,`Card: no runs yet`,{type:`event`,source:`github`,on:`pull_request.opened`}),runState:{latestRun:null,isLoading:!1,isError:!1}},{pin:!0,automation:k(`demo-pin-failed-detail`,`Card: failed with error detail`,{type:`cron`,schedule:`*/15 * * * *`,schedule_human:`Every 15 min`}),runState:{latestRun:A(`run-failed-detail`,y.FAILED,{errorDetail:`Sandbox provisioning timed out after 120s while waiting for the runtime to become ready.`,startedHoursAgo:3,completedHoursAgo:2.5}),isLoading:!1,isError:!1}},{pin:!0,automation:k(`demo-pin-completed-title`,`Card: completed + conversation title`,{type:`event`,source:`github`,on:`push`}),runState:{latestRun:A(`run-completed-title`,y.COMPLETED,{conversationId:`demo-conv-titled`,startedHoursAgo:5,completedHoursAgo:4}),isLoading:!1,isError:!1}},{pin:!0,automation:k(`demo-pin-completed-untitled`,`Card: completed + conversation title`,{type:`cron`,schedule:`0 0 * * 1`,schedule_human:`Mondays at midnight`}),runState:{latestRun:A(`run-completed-untitled`,y.COMPLETED,{conversationId:`demo-conv-untitled`,startedHoursAgo:8,completedHoursAgo:7}),isLoading:!1,isError:!1}},{pin:!0,automation:k(`demo-pin-completed-no-conv`,`Card: completed, no conversation`,{type:`cron`,schedule:`0 12 * * *`,schedule_human:`Daily at noon`}),runState:{latestRun:A(`run-completed-no-conv`,y.COMPLETED,{conversationId:null,startedHoursAgo:10,completedHoursAgo:9}),isLoading:!1,isError:!1}},{pin:!0,automation:k(`demo-pin-failed-no-conv`,`Card: failed, no conversation`,{type:`event`,source:`slack`,on:`message`}),runState:{latestRun:A(`run-failed-no-conv`,y.FAILED,{conversationId:null,errorDetail:null,startedHoursAgo:12,completedHoursAgo:11}),isLoading:!1,isError:!1}},{pin:!0,automation:k(`demo-pin-pending`,`Card: pending (empty result panel)`,{type:`cron`,schedule:`0 */6 * * *`,schedule_human:`Every 6 hours`}),runState:{latestRun:A(`run-pending`,y.PENDING,{conversationId:null,startedHoursAgo:.1,completedHoursAgo:null}),isLoading:!1,isError:!1}},{pin:!0,automation:k(`demo-pin-running`,`Card: running (empty result panel)`,{type:`event`,source:`github`,on:`issues.opened`}),runState:{latestRun:A(`run-running`,y.RUNNING,{conversationId:null,startedHoursAgo:.25,completedHoursAgo:null}),isLoading:!1,isError:!1}},{automation:k(`demo-list-cancelled`,`List: cancelled run`,{type:`cron`,schedule:`30 2 * * *`,schedule_human:`Daily at 2:30am`}),runState:{latestRun:A(`run-cancelled`,y.CANCELLED,{startedHoursAgo:14,completedHoursAgo:13}),isLoading:!1,isError:!1}},{automation:k(`demo-list-skipped`,`List: skipped run`,{type:`event`,source:`github`,on:`pull_request.synchronize`}),runState:{latestRun:A(`run-skipped`,y.SKIPPED,{startedHoursAgo:16,completedHoursAgo:16}),isLoading:!1,isError:!1}},{automation:k(`demo-list-running-2`,`List: second in-flight run`,{type:`cron`,schedule:`*/5 * * * *`,schedule_human:`Every 5 min`}),runState:{latestRun:A(`run-running-2`,y.RUNNING,{conversationId:null,startedHoursAgo:.5,completedHoursAgo:null}),isLoading:!1,isError:!1}},{automation:k(`demo-list-success-old`,`List: older success`,{type:`cron`,schedule:`0 8 * * 1-5`,schedule_human:`Weekdays at 8am`}),runState:{latestRun:A(`run-success-old`,y.COMPLETED,{conversationId:`demo-conv-titled`,startedHoursAgo:48,completedHoursAgo:47}),isLoading:!1,isError:!1}},{automation:k(`demo-list-failed-old`,`List: older failure`,{type:`event`,source:`github`,on:`release.published`}),runState:{latestRun:A(`run-failed-old`,y.FAILED,{errorDetail:`Model returned an empty completion.`,startedHoursAgo:72,completedHoursAgo:71}),isLoading:!1,isError:!1}},{automation:k(`demo-list-no-runs-2`,`List: never ran`,{type:`cron`,schedule:`0 0 1 * *`,schedule_human:`Monthly on the 1st`}),runState:{latestRun:null,isLoading:!1,isError:!1}},{automation:k(`demo-list-loading-2`,`List: loading status`,{type:`event`,source:`linear`,on:`Issue.create`}),runState:{latestRun:null,isLoading:!0,isError:!1}},{automation:k(`demo-list-error-2`,`List: fetch error`,{type:`cron`,schedule:`15 * * * *`,schedule_human:`Hourly at :15`}),runState:{latestRun:null,isLoading:!1,isError:!0}},{automation:k(`demo-list-pending-2`,`List: pending, long name that should truncate in the activity row when the viewport is narrow`,{type:`cron`,schedule:`0 3 * * 0`,schedule_human:`Sundays at 3am`}),runState:{latestRun:A(`run-pending-2`,y.PENDING,{startedHoursAgo:.05,completedHoursAgo:null}),isLoading:!1,isError:!1}},{automation:k(`demo-list-completed-fallback`,`List: completed with conversation`,{type:`event`,source:`github`,on:`workflow_run.completed`}),runState:{latestRun:A(`run-completed-fallback`,y.COMPLETED,{conversationId:`demo-conv-untitled`,startedHoursAgo:20,completedHoursAgo:19}),isLoading:!1,isError:!1}}];if(j.length!==de)throw Error(`home-automations-demo: expected ${de} specs, got ${j.length}`);var _e=j.filter(e=>e.pin).map(e=>e.automation.id),ve=j.map(e=>e.automation),ye=new Map(j.map(e=>[e.automation.id,ge(e.runState)]));function M(e){if(e.isLoading||e.isError)return`unknown`;if(!e.latestRun)return`none`;switch(e.latestRun.status){case y.COMPLETED:return`success`;case y.FAILED:return`failed`;case y.PENDING:case y.RUNNING:return`in_progress`;default:return`unknown`}}function be(e){switch(e){case`success`:return u.FEATURED_AUTOMATIONS$LAST_RUN_SUCCEEDED;case`failed`:return u.FEATURED_AUTOMATIONS$LAST_RUN_FAILED;case`in_progress`:return u.FEATURED_AUTOMATIONS$RUN_IN_PROGRESS;case`none`:return u.AUTOMATIONS$DETAIL$NO_RUNS;default:return u.FEATURED_AUTOMATIONS$STATUS_UNKNOWN}}var xe={github:`GitHub`,gitlab:`GitLab`,slack:`Slack`,linear:`Linear`,jira:`Jira`};function N(e){let t=e.trim().toLowerCase();return t?xe[t]??t.replace(/\b\w/g,e=>e.toUpperCase()):e}function P(e){let{trigger:t}=e;return t.type===`event`&&t.on?ae(t.on):null}function F(e){let{trigger:t}=e;return t.type===`event`&&t.source?.trim()||null}function I(e){let{trigger:t}=e;return t.type===`event`?null:t.schedule_human||t.schedule||t.type||null}function L(e){let{trigger:t}=e;if(t.type===`event`){let t=F(e);return[P(e)??``,t?`(${N(t)})`:``].filter(Boolean).join(` `)}return I(e)??t.type}var R=48;function z(e){let t=e.trim().replace(/\s+/g,` `);if(!t)return t;let n=t.match(/^.*?[.!?](?=\s|$)/)?.[0]??t;return n.length<=R?n:`${n.slice(0,R-1).trimEnd()}…`}function Se(e,t=z(e)){return e.trim().replace(/\s+/g,` `)!==t}function B(e){let t=e.completed_at??e.started_at;if(!t)return null;let n=new Date(t).getTime();return Number.isNaN(n)||n===0?null:t}function Ce(e,t){let n=[];if(e.repository&&n.push({id:`repository`,node:(0,E.jsxs)(`span`,{className:d(x,`gap-1`),children:[(0,E.jsx)(_,{className:`size-3 shrink-0`}),e.repository]})}),e.trigger.type===`event`){let t=P(e);t&&n.push({id:`event-trigger`,node:(0,E.jsxs)(`span`,{className:d(x,`gap-1`),children:[(0,E.jsx)(p,{className:`size-3 shrink-0`,"aria-hidden":`true`}),t]})});let r=F(e);if(r){let e=ie(r.toLowerCase(),C);n.push({id:`event-source`,node:(0,E.jsxs)(`span`,{className:d(x,`gap-1`),children:[e?(0,E.jsx)(g,{entry:e,size:`xs`,testId:`automation-source-logo`}):(0,E.jsx)(f,{className:`size-3 shrink-0`,"aria-hidden":`true`,"data-testid":`automation-source-logo`}),N(r)]})})}}else n.push({id:`schedule`,node:(0,E.jsxs)(`span`,{className:d(x,`gap-1`),children:[(0,E.jsx)(v,{className:`size-3 shrink-0`}),t]})});return e.model&&n.push({id:`model`,node:(0,E.jsxs)(`span`,{className:d(x,`gap-1`),children:[(0,E.jsx)(oe,{className:`size-3 shrink-0`}),e.model]})}),n}var we=new Set([y.COMPLETED,y.FAILED]);function V(e){let t=e.runs.filter(e=>we.has(e.status)),n=t.filter(e=>e.status===y.COMPLETED).length,r=t.flatMap(e=>{if(!e.completed_at)return[];let t=new Date(e.completed_at).getTime()-new Date(e.started_at).getTime();return Number.isFinite(t)&&t>=0?[t]:[]});return{total:e.total,latestRun:e.runs[0]??null,recentRuns:e.runs,recentSuccessRate:t.length===0?null:n/t.length,averageDurationMs:r.length===0?null:r.reduce((e,t)=>e+t,0)/r.length}}function H(e,t){if(!e.enabled)return`disabled`;if(!t||t.isError||t.isLoading||!t.summary)return`unknown`;let n=t.summary.latestRun;return n?n.status===y.FAILED?`failing`:n.status===y.PENDING||n.status===y.RUNNING?`running`:`healthy`:`never-run`}function U(e){return e===null||!Number.isFinite(e)?`—`:e<6e4?`${Math.max(1,Math.round(e/1e3))}s`:e<36e5?`${Math.max(1,Math.round(e/6e4))}m`:`${(e/36e5).toFixed(1)}h`}function W(e,t){let n=t.toLowerCase();return n?e.name.toLowerCase().includes(n)||(e.prompt??``).toLowerCase().includes(n)||e.repository?.toLowerCase().includes(n)===!0||e.model?.toLowerCase().includes(n)===!0:!0}var Te={active:e=>e.enabled,failing:(e,t)=>t===`failing`,disabled:e=>!e.enabled},Ee={event:e=>e.trigger.type===`event`,schedule:e=>e.trigger.type!==`event`};function G(e,t){return t.get(e.id)?.summary?.total??0}function K(e,t){let n=t.get(e.id)?.summary?.latestRun?.started_at??e.last_triggered_at;if(!n)return 0;let r=new Date(n).getTime();return Number.isFinite(r)?r:0}var De={"last-run":(e,t,n)=>K(t,n)-K(e,n),runs:(e,t,n)=>G(t,n)-G(e,n),name:(e,t)=>e.name.localeCompare(t.name)};function Oe(e,t,n){return e.filter(e=>!(!W(e,t.search)||t.status!==`all`&&!Te[t.status](e,H(e,n.get(e.id)))||t.trigger!==`all`&&!Ee[t.trigger](e))).sort((e,r)=>De[t.sort](e,r,n))}function q(e,t){return e.flatMap(e=>{let n=t.get(e.id);return n?.summary&&!n.isLoading&&!n.isError?[n.summary]:[]})}var ke={automations:e=>({display:e.length.toLocaleString(),isZero:e.length===0,placeholderValues:{active:e.filter(e=>e.enabled).length}}),"needs-attention":(e,t)=>{let n=e.filter(e=>H(e,t.get(e.id))===`failing`).length;return{display:n.toLocaleString(),isZero:n===0,placeholderValues:{}}},"total-runs":(e,t)=>{let n=q(e,t);if(n.length===0&&e.length>0)return{display:`—`,isZero:!1,placeholderValues:{}};let r=n.reduce((e,t)=>e+t.total,0);return{display:r.toLocaleString(),isZero:r===0,placeholderValues:{}}},"average-duration":(e,t)=>{let n=q(e,t).flatMap(e=>e.averageDurationMs===null?[]:[e.averageDurationMs]);return{display:U(n.length===0?null:n.reduce((e,t)=>e+t,0)/n.length),isZero:!1,placeholderValues:{}}}};function Ae(e,t,n){return ke[e](t,n)}function je(e){return e?.summary?e.summary.total.toLocaleString():!e||e.isLoading?`…`:`—`}function Me(e){let t=e?.summary?.recentSuccessRate;return t==null?`—`:`${Math.round(t*100)}%`}function Ne(e){return U(e?.summary?.averageDurationMs??null)}function Pe({state:e,copy:t}){return(0,E.jsx)(`dl`,{"data-testid":`automation-run-stats`,className:`grid grid-cols-3 gap-2 text-xs`,children:[{label:t.runs,value:je(e)},{label:t.recentSuccess,value:Me(e)},{label:t.averageDuration,value:Ne(e)}].map(e=>(0,E.jsxs)(`div`,{className:`min-w-0`,children:[(0,E.jsx)(`dt`,{className:`truncate text-muted`,children:e.label}),(0,E.jsx)(`dd`,{className:`mt-0.5 truncate font-medium text-content`,children:e.value})]},e.label))})}var Fe={latestRun:null,recentRuns:[],isLoading:!1,isError:!1};function Ie(e){return e?{latestRun:e.summary?.latestRun??null,recentRuns:e.summary?.recentRuns??[],total:e.summary?.total,isLoading:e.isLoading,isError:e.isError}:Fe}function Le(e){return e.recentRuns.length===0&&(e.isLoading||e.isError)?{summary:null,isLoading:e.isLoading,isError:e.isError}:{summary:V({runs:e.recentRuns,total:e.total??e.recentRuns.length}),isLoading:e.isLoading,isError:e.isError}}function J(e){return e?.status===y.PENDING||e?.status===y.RUNNING}function Re(e,t){let{t:n}=i(`openhands`),{navigate:r}=ee(),a=l(),o=se(`manage_automations`),d=a.backend.kind===`local`,f=pe(),p=te(),m=re(),h=ne(),[g,_]=(0,T.useState)(!1),[v,y]=(0,T.useState)(!1),b=p.isPending&&p.variables===e.id,x=h.isPending&&h.variables?.runId===t?.id,ie=o&&J(t),C=(0,T.useCallback)(()=>{if(f){c(n(u.AUTOMATIONS$RUN_NOW_SUCCESS));return}p.mutate(e.id,{onSuccess:()=>{c(n(u.AUTOMATIONS$RUN_NOW_SUCCESS))},onError:e=>{s(S(e,n(u.AUTOMATIONS$RUN_NOW_ERROR)))}})},[e.id,p,f,n]),w=(0,T.useCallback)(()=>{r?.(`/automations/${e.id}`)},[e.id,r]);return{canManage:o,canEdit:d,isRunPending:b,isCancelPending:x,canCancel:ie,editOpen:g,setEditOpen:_,turnOffConfirmOpen:v,runNow:C,viewDetails:w,openEdit:(0,T.useCallback)(()=>{if(!d){w();return}_(!0)},[d,w]),requestTurnOff:(0,T.useCallback)(()=>{y(!0)},[]),confirmTurnOff:(0,T.useCallback)(()=>{y(!1),!f&&m.mutate({id:e.id,enabled:!1},{onError:e=>{s(S(e,n(u.AUTOMATIONS$TURN_OFF_ERROR)))}})},[e.id,f,n,m]),cancelTurnOff:(0,T.useCallback)(()=>{y(!1)},[]),cancelRun:(0,T.useCallback)(()=>{if(!(!t||!J(t))){if(f){c(n(u.AUTOMATIONS$CANCEL_RUN_SUCCESS));return}h.mutate({automationId:e.id,runId:t.id},{onSuccess:()=>{c(n(u.AUTOMATIONS$CANCEL_RUN_SUCCESS))},onError:e=>{s(S(e,n(u.AUTOMATIONS$CANCEL_RUN_ERROR)))}})}},[e.id,h,f,t,n])}}var ze=`openhands-automations-view`;function Be(){return typeof window>`u`?`grid`:window.localStorage.getItem(`openhands-automations-view`)===`list`?`list`:`grid`}function Ve(e){window.localStorage.setItem(ze,e)}var He=`divide-y divide-[var(--oh-border-subtle)] overflow-hidden rounded-xl border border-[var(--oh-border-subtle)] bg-[var(--oh-surface)]`,Ue=`group relative flex items-stretch transition-colors hover:bg-surface-raised has-[:focus-visible]:bg-surface-raised`,We=`mt-3 flex min-h-9 items-center justify-between gap-2 overflow-hidden rounded-md border border-[var(--oh-border-subtle)] bg-[var(--oh-surface)] px-3 py-2 text-xs`,Y=1e3,X=30*6e4;function Z(e,t=Date.now()){let n=e.started_at?new Date(e.started_at).getTime():NaN;if(Number.isNaN(n)||n<=0)return null;if(e.completed_at){let t=new Date(e.completed_at).getTime();return Number.isNaN(t)||t<n?null:t-n}return e.status===y.PENDING||e.status===y.RUNNING?Math.max(0,t-n):null}function Ge(e){if(e==null||e<=0)return 11;let t=Math.log(Math.min(X,Math.max(Y,e))/Y)/Math.log(X/Y);return Math.round(6+t*9)}function Q(e){switch(e){case y.COMPLETED:return`bg-[var(--oh-status-success)]`;case y.FAILED:return`bg-[var(--oh-status-error)]`;case y.RUNNING:return`bg-[var(--oh-status-success)] animate-pulse motion-reduce:animate-none`;case y.PENDING:return`bg-[repeating-linear-gradient(-45deg,var(--oh-muted)_0_1.5px,var(--oh-border)_1.5px_3px)]`;case y.CANCELLED:return`bg-[var(--oh-muted)]`;default:return`bg-[var(--oh-border)]`}}function Ke(e){switch(e){case y.COMPLETED:return u.AUTOMATIONS$DETAIL$SUCCESSFUL;case y.FAILED:return u.AUTOMATIONS$DETAIL$FAILED;case y.PENDING:return u.AUTOMATIONS$DETAIL$PENDING;case y.RUNNING:return u.AUTOMATIONS$DETAIL$RUNNING;case y.CANCELLED:return u.AUTOMATIONS$DETAIL$CANCELLED;case y.SKIPPED:return u.AUTOMATIONS$DETAIL$SKIPPED;default:return u.FEATURED_AUTOMATIONS$STATUS_UNKNOWN}}function qe(e){return e==null||e<=0?null:e<6e4?`${Math.max(1,Math.round(e/1e3))}s`:e<36e5?`${Math.round(e/6e4)}m`:`${(e/36e5).toFixed(1)}h`}function Je({label:e,children:t}){return(0,E.jsxs)(`div`,{className:`flex items-start gap-2 text-xs`,children:[(0,E.jsx)(`span`,{className:`w-16 shrink-0 text-[var(--oh-muted)]`,children:e}),(0,E.jsx)(`span`,{className:`min-w-0 flex-1 break-words text-white`,children:t})]})}function Ye({run:e,nowMs:t}){let{t:n,i18n:r}=i(`openhands`),a=B(e),o=a?w(a,r.language,n):null,s=qe(Z(e,t)),c=n(Ke(e.status)),l=e.status===y.FAILED&&e.error_detail?.trim()||null;return(0,E.jsxs)(`div`,{className:`flex w-[220px] flex-col gap-2 p-3`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(`span`,{"aria-hidden":`true`,className:d(`h-3 w-1.5 shrink-0 rounded-[1px]`,Q(e.status))}),(0,E.jsx)(`span`,{className:`text-sm font-medium text-white`,children:c})]}),(0,E.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[o?(0,E.jsx)(Je,{label:n(u.AUTOMATIONS$DETAIL$LAST_RUN),children:o}):null,s?(0,E.jsx)(Je,{label:n(u.FEATURED_AUTOMATIONS$RUN_DURATION),children:s}):null]}),l?(0,E.jsx)(`p`,{className:`line-clamp-3 text-xs text-[var(--oh-status-error)]`,children:l}):null]})}function Xe({automationId:e,run:t,nowMs:r}){let{t:a}=i(`openhands`),o=Z(t,r),s=a(Ke(t.status)),c=`/automations/${encodeURIComponent(e)}?run=${encodeURIComponent(t.id)}`;return(0,E.jsx)(n,{content:(0,E.jsx)(Ye,{run:t,nowMs:r}),placement:`top`,closeDelay:80,delay:200,disableAnimation:!1,className:`rounded-xl border border-[var(--oh-border)] bg-base-secondary p-0 text-white shadow-xl`,children:(0,E.jsx)(h,{to:c,"aria-label":s,className:`group/spark-bar inline-flex h-full cursor-pointer items-end px-[2px] focus:outline-none focus-visible:ring-1 focus-visible:ring-[var(--oh-focus)]`,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,E.jsx)(`span`,{className:d(`w-1 shrink-0 origin-bottom rounded-[1px]`,`transition-transform duration-100 ease-out motion-reduce:transition-none`,`group-hover/spark-bar:scale-x-[1.4] group-hover/spark-bar:scale-y-[1.15]`,`group-focus-visible/spark-bar:scale-x-[1.4] group-focus-visible/spark-bar:scale-y-[1.15]`,Q(t.status)),style:{height:Ge(o)}})})})}function Ze({automationId:e,runs:t,testId:n}){let{t:r}=i(`openhands`),a=t.some(e=>J(e)),[o,s]=(0,T.useState)(()=>Date.now());if((0,T.useEffect)(()=>{if(!a)return;let e=window.setInterval(()=>s(Date.now()),1e3);return()=>window.clearInterval(e)},[a]),t.length===0)return null;let c=[...t].reverse().slice(-12);return(0,E.jsx)(`span`,{"data-testid":n,"aria-label":r(u.FEATURED_AUTOMATIONS$RUN_ACTIVITY_LABEL,{count:c.length}),className:`inline-flex shrink-0 items-end`,style:{height:18},onMouseDown:e=>e.preventDefault(),children:c.map((t,n)=>(0,E.jsx)(Xe,{automationId:e,run:t,nowMs:o},`${t.id}-${n}`))})}function Qe({health:e}){return e===`success`?(0,E.jsx)(`svg`,{viewBox:`0 0 12 12`,className:`h-2.5 w-2.5 shrink-0 stroke-[var(--oh-status-success)]`,fill:`none`,strokeWidth:2.25,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:(0,E.jsx)(`path`,{d:`M2.5 6.5 5 9l4.5-5.5`})}):(0,E.jsx)(`span`,{"aria-hidden":`true`,className:d(`h-1.5 w-1.5 shrink-0 rounded-full`,e===`failed`&&`bg-[var(--oh-status-error)]`,e===`in_progress`&&`animate-pulse bg-[var(--oh-status-success)] motion-reduce:animate-none`,(e===`none`||e===`unknown`)&&`bg-[var(--oh-border)]`)})}function $e(e){return e.isError?u.FEATURED_AUTOMATIONS$STATUS_UNAVAILABLE:be(M(e))}function $({label:e,children:t}){return(0,E.jsxs)(`div`,{className:`flex items-start gap-2 text-xs`,children:[(0,E.jsx)(`span`,{className:`w-20 shrink-0 text-[var(--oh-muted)]`,children:e}),(0,E.jsx)(`span`,{className:`min-w-0 flex-1 break-words text-[var(--oh-foreground)]`,children:t})]})}function et({automation:e,runState:t}){let{t:n,i18n:r}=i(`openhands`),{latestRun:a}=t,o=a?B(a):null,s=e.trigger.type===`event`?p:v,c=M(t);return(0,E.jsxs)(`div`,{className:`flex w-[280px] flex-col gap-3 p-3`,children:[(0,E.jsx)(`span`,{className:`break-words text-sm font-medium text-white`,children:e.name}),(0,E.jsxs)(`dl`,{className:`flex flex-col gap-1.5`,children:[(0,E.jsx)($,{label:n(u.AUTOMATIONS$DETAIL$TRIGGER),children:(0,E.jsxs)(`span`,{className:`inline-flex min-w-0 items-start gap-1.5`,children:[(0,E.jsx)(s,{className:`mt-0.5 size-3 shrink-0`,"aria-hidden":`true`}),(0,E.jsx)(`span`,{className:`break-all`,children:L(e)})]})}),(0,E.jsx)($,{label:n(u.COMMON$STATUS),children:(0,E.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1.5`,children:[(0,E.jsx)(Qe,{health:c}),(0,E.jsx)(`span`,{children:n($e(t))})]})}),o?(0,E.jsx)($,{label:n(u.AUTOMATIONS$DETAIL$LAST_RUN),children:w(o,r.language,n)}):null,a?.status===y.FAILED&&a.error_detail?(0,E.jsx)($,{label:n(u.STATUS$ERROR),children:(0,E.jsx)(`span`,{className:`line-clamp-3 text-[var(--oh-status-error)]`,children:a.error_detail})}):null]})]})}export{ye as A,I as C,Se as D,z as E,pe as M,ue as N,ve as O,ce as P,P as S,L as T,V as _,He as a,N as b,Be as c,Ie as d,Le as f,W as g,Ae as h,Ze as i,me as j,_e as k,Ve as l,Oe as m,$e as n,Ue as o,Pe as p,Qe as r,We as s,et as t,Re as u,Ce as v,F as w,B as x,M as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{t as r}from"./useInfiniteQuery-CgeUQPfs.js";import{t as i}from"./useQuery-BXWbZBZl.js";import{$ as a,ct as o,n as s}from"./active-backend-context-DKFSMbn3.js";import{x as c}from"./utils-DaCIEEQP.js";import{i as l}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-Dtu7BpYk.js";import{t as u}from"./proxy-tcFL2yTQ.js";import{n as d}from"./use-settings-C5VhGpqd.js";import{_ as f,g as p,m}from"./conversation-store-Ca3ghXap.js";import{t as h}from"./agent-server-conversation-service.api-DozDKIW_.js";import{t as g}from"./use-is-authed-CFGkY3-Z.js";var _=e(t()),v=n(),y=e=>(0,v.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,v.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M21 15V2.25L20.25 1.5H5.60999C5.26596 1.50381 4.92547 1.56987 4.60499 1.695C4.28194 1.83856 3.99081 2.0452 3.74868 2.30278C3.50656 2.56036 3.31831 2.8637 3.19499 3.195C3.07229 3.49004 3.00614 3.80552 2.99999 4.125V18.375C2.99638 18.7197 3.06272 19.0616 3.19499 19.38C3.46049 20.0205 3.96749 20.532 4.60499 20.805C4.92547 20.9301 5.26596 20.9962 5.60999 21H5.99999V19.5H5.60999C5.46032 19.5005 5.31218 19.4698 5.17499 19.41C4.90342 19.2974 4.68763 19.0816 4.57499 18.81C4.52706 18.6699 4.50174 18.5231 4.49999 18.375V17.625C4.50174 17.4769 4.52706 17.3301 4.57499 17.19C4.68763 16.9184 4.90342 16.7026 5.17499 16.59C5.31033 16.531 5.45634 16.5004 5.60399 16.5H19.5V19.5H13.5V21H20.25L21 20.25V15ZM5.99999 15V3H19.5V15H5.99999ZM7.49999 4.5H8.99999V6H7.49999V4.5ZM7.49999 7.5H8.99999V9H7.49999V7.5ZM8.99999 10.5H7.49999V12H8.99999V10.5ZM9.74999 20.235L7.91999 22.5H7.49999V18H12V22.5H11.58L9.74999 20.235Z`,fill:`currentColor`})}),b=e=>{if(!e)return[];let t=[];for(let n of Object.keys(e))n&&t.push(n);return t},x=()=>{let{data:e,isLoading:t}=d();return{providers:_.useMemo(()=>b(e?.provider_tokens_set),[e?.provider_tokens_set]),isLoadingSettings:t}};function S(e){switch(e){case`ADDED`:case`added`:return`A`;case`DELETED`:case`deleted`:return`D`;case`UPDATED`:case`modified`:return`M`;case`MOVED`:case`renamed`:return`R`;default:return`M`}}function C(){let e=o().backend;if(e.kind!==`cloud`)throw Error(`Cloud git call requires a cloud backend.`);return e}async function w(e){let t=C(),n=new URLSearchParams;n.set(`provider`,e.provider),n.set(`limit`,String(e.limit??100)),e.query&&n.set(`query`,e.query),e.pageId&&n.set(`page_id`,e.pageId),e.installationId&&n.set(`installation_id`,e.installationId);let r=await u({backend:t,method:`GET`,path:`/api/v1/git/repositories/search?${n.toString()}`});return{items:r?.items??[],next_page_id:r?.next_page_id??null}}async function T(e){let t=C(),n=new URLSearchParams;n.set(`provider`,e.provider),n.set(`limit`,String(e.limit??100)),e.pageId&&n.set(`page_id`,e.pageId);let r=await u({backend:t,method:`GET`,path:`/api/v1/git/installations/search?${n.toString()}`});return{items:r?.items??[],next_page_id:r?.next_page_id??null}}async function E(e){let t=C(),n=new URLSearchParams;n.set(`provider`,e.provider),n.set(`repository`,e.repository),n.set(`limit`,String(e.limit??30)),n.set(`query`,e.query??``),e.pageId&&n.set(`page_id`,e.pageId);let r=await u({backend:t,method:`GET`,path:`/api/v1/git/branches/search?${n.toString()}`});return{items:r?.items??[],next_page_id:r?.next_page_id??null}}var D=e=>e,O=()=>o().backend.kind===`cloud`,k=e=>!e||e===`undefined`||e===`null`,A={items:[],next_page_id:null},j={items:[],next_page_id:null},M={items:[],next_page_id:null},N=class{static async searchGitRepositories(e,t,n=100,r,i){return k(t)||!O()?A:w({provider:D(t),query:e||void 0,limit:n,pageId:r,installationId:i})}static async retrieveUserGitRepositories(e,t,n=30,r){return k(e)||!O()?A:w({provider:D(e),limit:n,pageId:t,installationId:r})}static async retrieveInstallationRepositories(e,t,n,r,i=30){if(k(e)||!O())return A;let a=n[t];return a?w({provider:D(e),installationId:a,limit:i,pageId:r}):A}static async getRepositoryBranches(e,t,n=``,r,i=30){return k(t)||!O()?j:E({provider:D(t),repository:e,query:n||void 0,pageId:r,limit:i})}static async searchRepositoryBranches(e,t,n,r,i=30){return k(t)||!O()?j:E({provider:D(t),repository:e,query:n,pageId:r,limit:i})}static async getUserInstallations(e,t,n=100){return k(e)||!O()?M:T({provider:D(e),pageId:t,limit:n})}static async getGitChanges(e){let t=await h.resolveConversationWorkingDir(e);return(await new l(a({workingDir:t})).gitChanges(t)).map(e=>({path:e.path,status:S(String(e.status))}))}static async getGitChangeDiff(e,t){let n=await new l(a()).gitDiff(t);return{modified:n.modified??``,original:n.original??``}}},P=e=>{let{data:t}=g(),{providers:n}=x(),r=s();return i({queryKey:[`installations`,e,r.backend.id,r.orgId],queryFn:()=>N.getUserInstallations(e),enabled:t&&!!e&&n.length>0&&c(e,r.backend.kind),staleTime:1e3*60*5,gcTime:1e3*60*15})};function F(e){let{provider:t,pageSize:n=30,enabled:i=!0}=e,{providers:a}=x(),{data:o}=P(t),l=o?.items,u=s(),d=t?c(t,u.backend.kind):!1,f=r({queryKey:[`repositories`,t,d,n,u.backend.id,u.orgId,...d?[l||[]]:[]],queryFn:async({pageParam:e})=>{if(!t)throw Error(`Provider is required`);if(d){if(!l)throw Error(`Missing installation list`);let r=e;return await N.retrieveInstallationRepositories(t,r.installationIndex,l,r.pageId??void 0,n)}let r=e;return await N.retrieveUserGitRepositories(t,r??void 0,n)},getNextPageParam:(e,t,n)=>{if(d&&l){let t=n;if(e.next_page_id)return{installationIndex:t.installationIndex,pageId:e.next_page_id};let r=t.installationIndex+1;return r<l.length?{installationIndex:r,pageId:null}:void 0}return e.next_page_id},initialPageParam:d?{installationIndex:0,pageId:null}:null,enabled:i&&(a||[]).length>0&&!!t&&(!d||Array.isArray(l)&&l.length>0),staleTime:1e3*60*5,gcTime:1e3*60*15,refetchOnWindowFocus:!1});return{data:f.data,isLoading:f.isLoading,isError:f.isError,hasNextPage:f.hasNextPage,isFetchingNextPage:f.isFetchingNextPage,fetchNextPage:f.fetchNextPage,onLoadMore:()=>{f.hasNextPage&&!f.isFetchingNextPage&&f.fetchNextPage()}}}function I(e,t,n,r=100){return i({queryKey:[`repositories`,`search`,e,t,r],queryFn:async()=>t?(await N.searchGitRepositories(e,t,r)).items:[],enabled:!!e&&!!t&&!n,staleTime:1e3*60*5,gcTime:1e3*60*15})}function L(e,t){let[n,r]=(0,_.useState)(e);return(0,_.useEffect)(()=>{let n=setTimeout(()=>r(e),t);return()=>clearTimeout(n)},[e,t]),n}var R={recentRepositories:[],lastSelectedProvider:null},z=f()(p((e,t)=>({...R,addRecentRepository:t=>e(e=>({recentRepositories:[t,...e.recentRepositories.filter(e=>e.id!==t.id)].slice(0,3)})),clearRecentRepositories:()=>e(()=>({recentRepositories:[]})),getRecentRepositories:()=>t().recentRepositories,setLastSelectedProvider:t=>e(()=>({lastSelectedProvider:t})),getLastSelectedProvider:()=>t().lastSelectedProvider}),{name:`home-store`,storage:m(()=>localStorage)}));export{N as a,y as c,F as i,L as n,S as o,I as r,x as s,z as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./home-BCGlNJCA.js";export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{D as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-ZixYGy6E.js";var t=e(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{n as r}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew3u153i-rfV8mQ9m.js";import{t as i}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz-MAyNb.js";import{m as a}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-ZixYGy6E.js";import{t as o}from"./useMutation-DFnzkf6f.js";import{$ as s,It as c,Mt as l,Nt as u,R as d,ct as f,n as ee,ut as te}from"./active-backend-context-DKFSMbn3.js";import{W as p,t as m}from"./utils-DaCIEEQP.js";import{t as h}from"./bot-C-0Wu7vQ.js";import{c as g,i as _,l as v,m as y,p as ne,r as b,t as x,u as S}from"./settings-service.api-B2agVfjL.js";import{n as C}from"./use-settings-C5VhGpqd.js";import{t as re}from"./modal-backdrop-BSzNhM4r.js";import{n as ie}from"./modal-classes-BAb4Y_BG.js";import{t as ae}from"./brand-button-Dxv6PDeN.js";import{t as w}from"./styled-tooltip-Dl06rkpY.js";import{t as oe}from"./modal-close-button-CkJ0Ktjj.js";import{t as T}from"./settings-input-C03KUoSC.js";import{t as E}from"./secrets-service-BTor9uAU.js";import{c as se,i as ce,s as D,t as O}from"./mcp-marketplace-utils-C13fFccR.js";import{t as k}from"./vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-B2OLKL7N.js";var A=e(t()),j=n(),M=e=>(0,j.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,j.jsx)(`path`,{d:`M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z`,fill:`currentColor`})});function N({fieldKey:e,checked:t,onToggle:n}){let{t:r}=i(`openhands`);return(0,j.jsxs)(`label`,{"data-testid":`mcp-install-save-secret-${e}`,className:m(`flex items-center gap-2 px-3 py-2 mt-0.5 rounded-lg border cursor-pointer transition-colors`,t?`border-green-500/35 bg-green-500/10`:`border-[var(--oh-border)] bg-transparent hover:bg-white/[0.03]`),children:[(0,j.jsx)(`input`,{className:`sr-only`,id:`mcp-save-secret-checkbox-${e}`,type:`checkbox`,checked:t,onChange:e=>n(e.target.checked)}),(0,j.jsx)(`span`,{"aria-hidden":`true`,className:m(`relative inline-flex h-[22px] w-[40px] shrink-0 items-center rounded-full border transition-colors duration-200`,t?`border-green-500 bg-green-500`:`border-[var(--oh-border)] bg-surface-raised`),children:(0,j.jsx)(`span`,{className:m(`inline-block size-4 rounded-full transition-transform duration-200`,t?`translate-x-[21px] bg-white`:`translate-x-[2px] bg-[var(--oh-muted)]`)})}),(0,j.jsx)(`span`,{className:`text-sm`,children:r(p.MCP$ALSO_SAVE_AS_SECRET)}),(0,j.jsx)(`code`,{className:m(`ml-auto text-[11px] font-mono tracking-tight border rounded px-1.5 py-0.5`,t?`text-green-500 border-green-500/35 bg-white/[0.04]`:`text-tertiary-alt border-[var(--oh-border)]`),children:e}),(0,j.jsx)(w,{content:r(p.MCP$SAVE_AS_SECRET_TOOLTIP),placement:`top`,children:(0,j.jsx)(`button`,{type:`button`,"aria-label":r(p.MCP$SAVE_AS_SECRET_TOOLTIP),className:`flex items-center justify-center size-[15px] shrink-0 rounded-full border border-[var(--oh-muted)] text-tertiary-alt text-[9px] font-bold cursor-help`,onClick:e=>e.preventDefault(),children:`?`})})]})}var P={xs:`h-4 w-4 rounded [&>svg]:h-2.5 [&>svg]:w-2.5`,sm:`h-5 w-5 rounded-md [&>svg]:h-3 [&>svg]:w-3`,base:`h-7 w-7 rounded-lg [&>svg]:h-3.5 [&>svg]:w-3.5`,md:`h-10 w-10 rounded-lg [&>svg]:h-5 [&>svg]:w-5`},F={slack:M};function le({entry:e,size:t=`md`,className:n,fallback:r,testId:i}){let a=e?F[e.id]:void 0;return(0,j.jsx)(`span`,{"aria-hidden":`true`,title:e?.name,"data-testid":i,className:m(`inline-flex shrink-0 items-center justify-center overflow-hidden`,`border border-white/10 shadow-[inset_0_1px_0_rgba(255,255,255,0.18)]`,P[t],n),style:{backgroundColor:e?.iconBg??`var(--oh-color-tertiary)`,color:e?.iconColor??`#FFFFFF`},children:a?(0,j.jsx)(a,{}):e?.logoUrl?(0,j.jsx)(`img`,{src:e.logoUrl,alt:`${e.name} logo`,className:`h-full w-full object-contain p-[22%]`,onError:e=>{let t=e.currentTarget;t.style.display=`none`}}):r??(0,j.jsx)(h,{className:`h-5 w-5`,strokeWidth:2.25})})}var ue=new Set([`invalid_auth`,`not_authed`,`account_inactive`,`token_revoked`,`token_expired`]),I=e=>e.is_error?e.text||`tool call failed`:null,de={github:{toolCall:{name:`get_me`,arguments:{}},interpret:I},linear:{toolCall:{name:`list_teams`,arguments:{}},interpret:I},slack:{toolCall:{name:`slack_list_channels`,arguments:{limit:1}},interpret:e=>{if(e.is_error)return e.text||`tool call failed`;try{let t=JSON.parse(e.text);if(t?.ok===!1&&ue.has(t.error))return String(t.error)}catch{}return null}}};function L(e){let t=O(e,D(k));return t?de[t.id]:void 0}var fe=4,pe=/token|key|secret|auth/i,me=[/\bgh[pousr]_[A-Za-z0-9]{16,}\b/g,/\bgithub_pat_[A-Za-z0-9_]{20,}\b/g,/\bxox[a-z](?:-[A-Za-z0-9]+)+/g,/\blin_api_[A-Za-z0-9]{10,}\b/g,/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{5,}\.[A-Za-z0-9_-]{5,}\b/g],he=/\bBearer\s+[A-Za-z0-9._~+/=-]{8,}/gi;function R(e,t){typeof t==`string`&&(t.length<fe||t!==`**********`&&e.add(t))}function z(e,t){for(let n of Object.values(t??{}))R(e,n)}function ge(e,t){if(t)try{let n=new URL(t);R(e,n.username),R(e,n.password),R(e,decodeURIComponent(n.username)),R(e,decodeURIComponent(n.password)),n.searchParams.forEach((t,n)=>{pe.test(n)&&R(e,t)})}catch{}}function _e(e,t){if(t)switch(t.strategy){case`api_key`:case`bearer`:R(e,t.value);break;case`basic`:R(e,t.username),R(e,t.password);break;case`header`:z(e,t.headers);break;case`oauth2`:R(e,t.authentication?.client_secret),z(e,t.state?.tokens);break;default:break}}function ve(e){let t=new Set;return z(t,e.env),z(t,e.headers),_e(t,e.auth),ge(t,e.url),[...t].sort((e,t)=>t.length-e.length)}function B(e,...t){if(!e)return e;let n=e;for(let e of t)if(e)for(let t of ve(e))n=n.split(t).join(b);n=n.replace(he,`Bearer ${b}`);for(let e of me)n=n.replace(e,b);return n}var V=e=>!!e&&typeof e==`object`&&!Array.isArray(e),ye=e=>{if(!V(e))return;let t=Object.entries(e).filter(e=>typeof e[1]==`string`);return t.length>0?Object.fromEntries(t):void 0},be=e=>!!e&&Object.values(e).some(e=>e===`**********`);function xe(e,t){if(!V(e))return e;let n=V(t)?t:{},r={...e};for(let[t,i]of Object.entries(e))if(i===`**********`){let e=n[t];typeof e==`string`&&e!==`**********`&&(r[t]=e)}else V(i)&&(r[t]=xe(i,n[t]));return r}var Se=(e,t)=>t[e.id];async function Ce(e){let t=(await x.fetchSettingsFromApi(`encrypted`)).agent_settings?.mcp_config;if(V(t))return Se(e,t)}async function we(e){let t=e.type===`stdio`&&be(e.env),n=(e.type===`sse`||e.type===`shttp`)&&g(e.auth),r=(e.type===`sse`||e.type===`shttp`)&&be(e.headers);if(!t&&!n&&!r)return e;try{let i=await Ce(e);if(!i)return e;if(t){let t=ye(i.env)??{},n=Object.fromEntries(Object.entries(e.env??{}).map(([e,n])=>[e,n===`**********`&&typeof t[e]==`string`?t[e]:n]));return{...e,env:n}}let a={...e};if(n&&y(i.auth)&&(a.auth=xe(e.auth,i.auth)),r){let t=ye(i.headers)??{};a.headers=Object.fromEntries(Object.entries(e.headers??{}).map(([e,n])=>[e,n===`**********`&&typeof t[e]==`string`?t[e]:n]))}return a}catch{return e}}var Te=120;function Ee(e){return e.type===`stdio`?{type:`stdio`,command:e.command,...e.args?.length&&{args:e.args},...e.env&&Object.keys(e.env).length>0&&{env:e.env}}:{type:e.type===`sse`?`sse`:`http`,url:e.url,...e.headers&&Object.keys(e.headers).length>0&&{headers:e.headers},...e.auth?{auth:e.auth}:{}}}function De(e){return e.auth?.strategy===`oauth2`?Te:e.timeout}async function Oe(e){let t=L(e),n=await we(e),r=Ee(n),i=De(e);return{request:{server:r,...e.name?{name:e.name}:{},...i===void 0?{}:{timeout:i},...t?{tool_call:t.toolCall}:{}},substituted:n}}function ke(e,t){return e.ok?e.tool_result?{...e,tool_result:{...e.tool_result,text:B(e.tool_result.text,...t)}}:e:{...e,error:B(e.error,...t)}}function Ae(e,t,n){let r=ke(e,n);if(r.ok&&t&&r.tool_result&&r.tools.includes(t.toolCall.name)){let e=t.interpret(r.tool_result);if(e)return{ok:!1,error:e,error_kind:`credentials`}}return r}function je(){if(f().backend.kind===`local`){let{host:e,apiKey:t}=s();return{host:e,...t?{apiKey:t}:{}}}let e=te().find(e=>e.kind===`local`&&e.host);if(e)return{host:e.host.replace(/\/+$/,``),...e.apiKey?{apiKey:e.apiKey}:{}};throw Error(`OAuth authorization requires a reachable local backend.`)}function H(){let{host:e,apiKey:t}=je();return new a({host:e,...t?{apiKey:t}:{},timeout:125e3})}function Me(e){return e.status===`succeeded`?{ok:!0,tools:e.tools??[],...e.tool_result!==void 0&&{tool_result:e.tool_result},...e.oauth_state!==void 0&&{oauth_state:e.oauth_state}}:{ok:!1,error:e.error||`OAuth authorization did not complete`,error_kind:e.error_kind||`unknown`}}var Ne=e=>new Promise(t=>{window.setTimeout(t,e)}),U=class e{static async testServer(e){if(f().backend.kind===`cloud`)return{ok:!0,tools:[]};let t=L(e),{host:n,apiKey:r}=s(),i=new a({host:n,...r?{apiKey:r}:{}});try{let{request:n,substituted:r}=await Oe(e);return Ae(await i.testServer(n),t,[r,e])}finally{i.close()}}static async startOAuth(t){let n=H();try{return await e.startOAuthWithClient(n,t)}finally{n.close()}}static async getOAuthStatus(t){let n=H();try{return await e.getOAuthStatusWithClient(n,t)}finally{n.close()}}static async submitOAuthCallback(t,n){let r=H();try{return await e.submitOAuthCallbackWithClient(r,t,n)}finally{r.close()}}static async authorizeOAuth(t){let n=L(t),r=e=>Ae(e,n,[t]),i=window.open(`about:blank`,`_blank`),a=H();try{let n=await e.startOAuthWithClient(a,t);if(!n.ok||!n.job_id||!n.authorization_url)return i?.close(),r({ok:!1,error:n.error||`Could not start OAuth authorization`,error_kind:n.error_kind||`unknown`});let o=await e.getOAuthStatusWithClient(a,n.job_id);for(let t=0;t<20;t+=1){if(o.status===`succeeded`||o.status===`failed`)return i?.close(),r(Me(o));if(o.callback_ready)break;await Ne(250),o=await e.getOAuthStatusWithClient(a,n.job_id)}i&&(i.location.href=n.authorization_url);for(let t=0;t<Te;t+=1)if(await Ne(1e3),o=await e.getOAuthStatusWithClient(a,n.job_id),o.status===`succeeded`||o.status===`failed`)return i?.close(),r(Me(o));return{ok:!1,error:`OAuth authorization timed out`,error_kind:`timeout`}}finally{a.close()}}static async startOAuthWithClient(e,t){let{request:n}=await Oe(t);return e.startOAuth(n)}static async getOAuthStatusWithClient(e,t){return await e.getOAuthStatus(t)}static async submitOAuthCallbackWithClient(e,t,n){return await e.submitOAuthCallback(t,{callback_url:n})}},W=e=>Object.keys(e??{}).sort();function G(e){return e.type===`stdio`?JSON.stringify({type:e.type,name:e.name??``,command:e.command??``,args:e.args??[],envKeys:W(e.env)}):JSON.stringify({type:e.type,name:e.name??``,url:e.url??``,headerKeys:W(e.headers),authStrategy:e.auth?.strategy??``,authHeaderName:e.auth?.strategy===`api_key`?e.auth.header_name??``:``,authHeaderKeys:e.auth?.strategy===`header`?W(e.auth.headers):[]})}var K={},q=new Set,Pe=1;function J(e){K=e,q.forEach(e=>e())}function Fe(){return K}function Ie(e){return q.add(e),()=>{q.delete(e)}}function Le(e){let t=Pe;return Pe+=1,J({...K,[e]:{status:`checking`,checkId:t}}),t}function Y(e,t,n){let r=K[e];r?.status!==`checking`||r.checkId!==t||J({...K,[e]:n})}function Re(e,t){J({...K,[e]:t})}function ze(e){if(!(e in K))return;let{[e]:t,...n}=K;J(n)}var Be=/\b(401|403)\b|unauthorized|forbidden|invalid[ _-]?(token|credentials?|api[ _-]?key)/i;function Ve(e,t){return{status:`failed`,kind:`unknown`,error:B(t instanceof Error?t.message:String(t),e),checkedAt:Date.now()}}function X(e,t){let n=Date.now();if(!t.ok)return{status:`failed`,kind:(t.error_kind===`connection`||t.error_kind===`unknown`)&&Be.test(t.error)?`credentials`:t.error_kind,error:t.error,checkedAt:n};let r=L(e);return{status:`healthy`,verification:r&&t.tools.includes(r.toolCall.name)&&t.tool_result&&!t.tool_result.is_error?`verified`:`connectivity-only`,toolCount:t.tools.length,checkedAt:n}}async function He(e){let t=G(e),n=Le(t),r;try{r=X(e,await U.testServer(e))}catch(t){r=Ve(e,t)}Y(t,n,r)}async function Ue(e){let t=G(e),n=Le(t);try{let r=await U.authorizeOAuth(e);return Y(t,n,X(e,r)),r}catch(r){return Y(t,n,Ve(e,r)),null}}function Z(e,t,n){let r=G(e);n.some(e=>G(e)===r)||Re(r,X(e,t))}function We(){let e=r(),{data:t}=C();return o({mutationFn:async e=>{if(!t)throw Error(`MCP settings are still loading. Please try again.`);let n=_(t.mcp_config??v(t.agent_settings?.mcp_config),e.name,e.type);await x.createMcpServer(n,S(e))},onSuccess:()=>{e.invalidateQueries({queryKey:d.personal()})}})}function Ge(){return o({mutationFn:e=>U.testServer(e)})}function Ke(e){return e.length<=3?e.join(`, `):`${e.slice(0,3).join(`, `)} … (+${e.length-3})`}function qe(){let{t:e}=i(`openhands`),t=r();return(0,A.useCallback)((n,r,i)=>{let a=n.filter(e=>i[e.key]&&(r[e.key]??``).trim());return a.length===0?Promise.resolve():Promise.allSettled(a.map(e=>E.createSecret(e.key,r[e.key].trim(),e.label))).then(n=>{let r=a.filter((e,t)=>n[t].status===`fulfilled`).map(e=>e.key),i=a.filter((e,t)=>n[t].status===`rejected`).map(e=>e.key);r.length>0&&(t.invalidateQueries({queryKey:[`secrets-search`]}),t.invalidateQueries({queryKey:[`secrets`]}),u(e(p.MCP$SECRETS_SAVED,{keys:Ke(r)}))),i.length>0&&l(e(p.MCP$SECRETS_SAVE_FAILED,{keys:Ke(i)}))})},[e,t])}function Je(e,t,n){switch(t){case`timeout`:return e(p.MCP$TEST_ERROR_TIMEOUT);case`connection`:return e(p.MCP$TEST_ERROR_CONNECTION);case`credentials`:return e(p.MCP$TEST_ERROR_CREDENTIALS,{error:n});default:return e(p.MCP$TEST_ERROR_UNKNOWN,{error:n})}}function Q(e){let t=/\[([^\]]+)\]\(([^)]+)\)/g,n=[],r=0;for(let i of e.matchAll(t))i.index>r&&n.push(e.slice(r,i.index)),n.push((0,j.jsx)(`a`,{href:/^https?:\/\//i.test(i[2])?i[2]:`#`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-white transition-colors`,children:i[1]},i.index)),r=i.index+i[0].length;return r<e.length&&n.push(e.slice(r)),n}function Ye(e){return e?.transport.kind!==`shttp`&&e?.transport.kind!==`sse`?!1:[`api_key`,`bearer`].includes(e.auth.strategy)}function Xe(e){return!!e&&e.auth.strategy===`oauth2`}function Ze(e){return e.transport.kind===`stdio`?e.auth.apiKeyOptional??!1:e.auth.apiKeyOptional??e.transport.apiKeyOptional??!1}function $(e){return e?.transport.kind!==`shttp`&&e?.transport.kind!==`sse`?[]:e.transport.headerFields??[]}function Qe(e){let t={},n={},r=ce(e),i=r?.transport;if(i?.kind===`stdio`){for(let e of i.envFields??[])t[e.key]=``,n[e.key]=e.type===`password`;for(let e of i.argFields??[])t[e.key]=``}else if(i?.kind===`shttp`||i?.kind===`sse`){t.url=i.url;for(let e of $(r))t[e.key]=``,n[e.key]=e.type===`password`;Ye(r)&&(t.api_key=``,r?.auth.credentialSecretName&&(n.api_key=r.auth.saveCredentialAsSecretByDefault??!1))}return{values:t,errors:{},savedAsSecret:n}}function $e({entry:e,existingServers:t,onClose:n,onSuccess:r}){let{t:a}=i(`openhands`),{mutate:o,isPending:s}=We(),{mutate:l,isPending:d}=Ge(),f=qe(),{backend:te}=ee(),m=te.kind===`cloud`,[h,g]=A.useState(()=>Qe(e)),_=A.useRef(h);_.current=h;let[v,y]=A.useState(null),[b,x]=A.useState(!1),[S,C]=A.useState(!1),w=ce(e),E=w?.transport,D=d||S||s||b,O=(e,t)=>{g(n=>({...n,values:{...n.values,[e]:t},errors:{...n.errors,[e]:null}})),y(null)},k=(e,t)=>{g(n=>({...n,savedAsSecret:{...n.savedAsSecret,[e]:t}}))},M=()=>{let e=w?.auth.credentialSecretName,t=_.current.values.api_key?.trim();return!e||!t||!_.current.savedAsSecret.api_key?Promise.resolve():f([{key:e,label:w.auth.credentialLabel??e,type:`password`,required:!0}],{[e]:t},{[e]:!0})},P=()=>E?.kind===`stdio`?f(E.envFields??[],_.current.values,_.current.savedAsSecret):E?.kind===`shttp`||E?.kind===`sse`?Promise.all([M(),f($(w),_.current.values,_.current.savedAsSecret)]).then(()=>void 0):Promise.resolve(),F=i=>{if(i.auth?.strategy===`oauth2`){C(!0),U.authorizeOAuth(i).then(s=>{if(!s.ok){y(Je(a,s.error_kind,s.error));return}let l=s.oauth_state?{...i,auth:{...i.auth,state:s.oauth_state}}:i;o(l,{onSuccess:()=>{m||Z(l,s,t),u(a(p.MCP$INSTALL_SUCCESS)),x(!0),(async()=>{try{await P()}finally{r?.(e),n()}})()},onError:e=>{y(c(e)||a(p.ERROR$GENERIC))}})}).catch(e=>{y(c(e)||a(p.ERROR$GENERIC))}).finally(()=>C(!1));return}l(i,{onSuccess:s=>{if(!s.ok){y(Je(a,s.error_kind,s.error));return}let l=s.oauth_state&&i.auth?.strategy===`oauth2`?{...i,auth:{...i.auth,state:s.oauth_state}}:i;o(l,{onSuccess:()=>{m||Z(l,s,t),u(a(p.MCP$INSTALL_SUCCESS)),x(!0),(async()=>{try{await P()}finally{r?.(e),n()}})()},onError:e=>{y(c(e)||a(p.ERROR$GENERIC))}})},onError:e=>{y(c(e)||a(p.ERROR$GENERIC))}})},ue=()=>{if(E?.kind!==`shttp`&&E?.kind!==`sse`||!w)return;let t=h.values.api_key?.trim()??``,n=E.urlEditable?h.values.url?.trim()??``:E.url,r=Xe(w),i=Ye(w),o=$(w),s={};if(!n)s.url=a(p.SETTINGS$MCP_ERROR_URL_REQUIRED);else try{let e=new URL(n);[`http:`,`https:`].includes(e.protocol)||(s.url=a(p.SETTINGS$MCP_ERROR_URL_INVALID_PROTOCOL))}catch{s.url=a(p.SETTINGS$MCP_ERROR_URL_INVALID)}for(let e of o)e.required&&!(h.values[e.key]??``).trim()&&(s[e.key]=a(p.MCP$ERROR_FIELD_REQUIRED));if(!r&&i&&!Ze(w)&&!t&&(s.api_key=a(p.MCP$ERROR_FIELD_REQUIRED)),Object.values(s).some(Boolean)){g(e=>({...e,errors:s}));return}let c=r?se(w):void 0,l=Object.fromEntries(o.map(e=>[e.key,h.values[e.key]?.trim()??``]).filter(([,e])=>e)),u=Object.keys(l).length>0,d;r?d={strategy:`oauth2`,...c&&{authentication:c}}:i&&t?d=w.auth.strategy===`api_key`?{strategy:`api_key`,value:t,...w.auth.apiKeyHeaderName&&{header_name:w.auth.apiKeyHeaderName}}:{strategy:`bearer`,value:t}:u&&(d={strategy:`header`,headers:l}),F({id:``,type:E.kind,name:ne(e.id),url:n,...d&&{auth:d},...u&&d?.strategy!==`header`&&{headers:l}})},I=()=>{if(E?.kind!==`stdio`)return;let e=E,t={};for(let n of e.envFields??[])n.required&&!(h.values[n.key]??``).trim()&&(t[n.key]=a(p.MCP$ERROR_FIELD_REQUIRED));for(let n of e.argFields??[])n.required&&!(h.values[n.key]??``).trim()&&(t[n.key]=a(p.MCP$ERROR_FIELD_REQUIRED));if(Object.values(t).some(Boolean)){g(e=>({...e,errors:t}));return}let n={};for(let t of e.envFields??[]){let e=h.values[t.key]?.trim();e&&(n[t.key]=e)}let r=[];for(let t of e.argFields??[]){let e=h.values[t.key]?.trim();if(e)for(let t of e.split(/\s+/))t&&r.push(t)}F({id:``,type:`stdio`,name:e.serverName,command:e.command,args:[...e.args,...r],...Object.keys(n).length>0&&{env:n}})};return(0,j.jsx)(re,{onClose:n,"aria-label":e.name,children:(0,j.jsxs)(`form`,{"data-testid":`mcp-install-modal`,"data-marketplace-id":e.id,onSubmit:e=>(e.preventDefault(),y(null),E?.kind===`shttp`||E?.kind===`sse`?ue():I()),className:`relative bg-base-secondary p-6 rounded-xl flex flex-col gap-4 border border-[var(--oh-border)] w-[520px] max-w-[90vw] max-h-[85vh] overflow-y-auto custom-scrollbar`,children:[(0,j.jsx)(oe,{onClose:n,testId:`mcp-install-modal-close`,disabled:D}),(0,j.jsxs)(`div`,{className:`flex items-start gap-3 pr-6`,children:[(0,j.jsx)(le,{entry:e}),(0,j.jsxs)(`div`,{className:`flex flex-col flex-1`,children:[(0,j.jsx)(`h2`,{className:ie,children:e.name}),(0,j.jsx)(`p`,{className:`text-xs text-tertiary-light`,children:e.description})]})]}),e.installHint&&(0,j.jsx)(`p`,{className:`text-xs text-tertiary-light`,children:e.installHint}),e.docsUrl&&(0,j.jsx)(`a`,{href:e.docsUrl,target:`_blank`,rel:`noreferrer`,className:`text-xs text-[var(--oh-muted)] hover:text-white hover:underline self-start transition-colors`,children:a(p.MCP$VIEW_DOCS)}),(0,j.jsx)(`div`,{className:`flex flex-col gap-3`,children:(()=>{if(E?.kind===`shttp`||E?.kind===`sse`){let e=Xe(w),t=Ye(w),n=w?Ze(w):!1,r=w?.auth.credentialSecretName,i=$(w);return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(T,{testId:`mcp-install-field-url`,name:`url`,type:`url`,label:a(p.SETTINGS$MCP_URL),value:h.values.url??E.url,onChange:e=>O(`url`,e),isDisabled:!E.urlEditable,className:`w-full`}),h.errors.url&&(0,j.jsx)(`p`,{className:`text-xs text-red-500`,children:h.errors.url}),i.map(e=>(0,j.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,j.jsx)(T,{testId:`mcp-install-field-${e.key}`,name:e.key,type:e.type===`password`?`password`:`text`,label:e.label,value:h.values[e.key]??``,onChange:t=>O(e.key,t),placeholder:e.placeholder,required:e.required,showOptionalTag:!e.required,className:`w-full`}),e.helperText&&(0,j.jsx)(`p`,{className:`text-xs text-tertiary-alt`,children:Q(e.helperText)}),h.errors[e.key]&&(0,j.jsx)(`p`,{className:`text-xs text-red-500`,children:h.errors[e.key]}),e.key in h.savedAsSecret&&(0,j.jsx)(N,{fieldKey:e.key,checked:h.savedAsSecret[e.key]??!1,onToggle:t=>k(e.key,t)})]},e.key)),e?(0,j.jsxs)(`div`,{"data-testid":`mcp-install-oauth-info`,className:`flex flex-col gap-2 p-3 rounded-lg border border-[var(--oh-border)] bg-base-tertiary`,children:[(0,j.jsx)(`p`,{className:`text-sm text-secondary-light`,children:a(p.MCP$OAUTH_CONNECT_INFO)}),(0,j.jsx)(`p`,{className:`text-xs text-tertiary-alt`,children:a(p.MCP$OAUTH_CONNECT_HINT)})]}):t?(0,j.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,j.jsx)(T,{testId:`mcp-install-field-api_key`,name:`api_key`,type:`password`,label:w?.auth.credentialLabel??a(p.SETTINGS$MCP_API_KEY),value:h.values.api_key??``,onChange:e=>O(`api_key`,e),placeholder:w?.auth.credentialPlaceholder??a(p.SETTINGS$MCP_API_KEY_PLACEHOLDER),showOptionalTag:n,required:!n,className:`w-full`}),w?.auth.credentialHelp&&(0,j.jsx)(`p`,{className:`text-xs text-tertiary-alt`,children:Q(w.auth.credentialHelp)}),h.errors.api_key&&(0,j.jsx)(`p`,{className:`text-xs text-red-500`,children:h.errors.api_key}),r&&(0,j.jsx)(N,{fieldKey:r,checked:h.savedAsSecret.api_key??!1,onToggle:e=>k(`api_key`,e)})]}):null]})}if(E?.kind!==`stdio`)return null;let e=E;return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(T,{testId:`mcp-install-field-command-readonly`,name:`command-readonly`,type:`text`,label:a(p.MCP$COMMAND_LABEL),value:`${e.command} ${e.args.join(` `)}`.trim(),onChange:()=>{},isDisabled:!0,className:`w-full`}),(e.envFields??[]).map(e=>(0,j.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,j.jsx)(T,{testId:`mcp-install-field-${e.key}`,name:e.key,type:e.type===`password`?`password`:`text`,label:e.label,value:h.values[e.key]??``,onChange:t=>O(e.key,t),placeholder:e.placeholder,required:e.required,showOptionalTag:!e.required,className:`w-full`}),e.helperText&&(0,j.jsx)(`p`,{className:`text-xs text-tertiary-alt`,children:Q(e.helperText)}),h.errors[e.key]&&(0,j.jsx)(`p`,{className:`text-xs text-red-500`,children:h.errors[e.key]}),e.key in h.savedAsSecret&&(0,j.jsx)(N,{fieldKey:e.key,checked:h.savedAsSecret[e.key],onToggle:t=>k(e.key,t)})]},e.key)),(e.argFields??[]).map(e=>(0,j.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,j.jsx)(T,{testId:`mcp-install-field-${e.key}`,name:e.key,type:e.type===`password`?`password`:`text`,label:e.label,value:h.values[e.key]??``,onChange:t=>O(e.key,t),placeholder:e.placeholder,required:e.required,showOptionalTag:!e.required,className:`w-full`}),e.helperText&&(0,j.jsx)(`p`,{className:`text-xs text-tertiary-alt`,children:Q(e.helperText)}),h.errors[e.key]&&(0,j.jsx)(`p`,{className:`text-xs text-red-500`,children:h.errors[e.key]})]},e.key))]})})()}),v&&(0,j.jsx)(`p`,{"data-testid":`mcp-install-modal-error`,className:`text-sm text-red-500 whitespace-pre-wrap`,children:v}),(0,j.jsxs)(`div`,{className:`flex justify-end gap-2 mt-2`,children:[(0,j.jsx)(ae,{type:`button`,variant:`secondary`,onClick:n,testId:`mcp-install-cancel`,isDisabled:D,children:a(p.BUTTON$CANCEL)}),(0,j.jsx)(ae,{type:`submit`,variant:`primary`,isDisabled:D,testId:`mcp-install-submit`,children:a(d||S?p.MCP$VERIFYING:s||b?p.SETTINGS$SAVING:p.MCP$INSTALL_BUTTON)})]})]})})}export{He as a,ze as c,G as d,U as f,We as i,Fe as l,M as m,Je as n,Ue as o,le as p,Ge as r,Z as s,$e as t,Ie as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./rolldown-runtime-Cyuzqnbw.js";import{St as e,yt as t}from"./vendor-styling-Ck5D_A2Q.js";import{t as n}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz-MAyNb.js";import{W as r,t as i}from"./utils-DaCIEEQP.js";import{t as a}from"./loader-circle-nvrwthvj.js";import{t as o}from"./styled-tooltip-Dl06rkpY.js";import{u as s}from"./dropdown-classes-DJe-E6MC.js";import{n as c}from"./use-automation-health-BxXdzZMP.js";import{t as l}from"./automation-C_eCrGyP.js";e();var u=t(),d=e=>(0,u.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,...e,children:(0,u.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09zM18.259 8.715L18 9.75l-.259-1.035a3.375 3.375 0 00-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 002.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 002.455 2.456L21.75 6l-1.036.259a3.375 3.375 0 00-2.455 2.456z`})}),f=/^(\d+)$/;function p(e,t,n){let r=e.match(f);if(!r)return null;let i=Number(r[1]);return Number.isNaN(i)||i<t||i>n?null:i}function m(e){let t=(e??``).trim();if(!t)return{kind:`custom`,raw:``};let n=t.split(/\s+/);if(n.length!==5)return{kind:`custom`,raw:t};let[r,i,a,o,s]=n,c=p(r,0,59),l=p(i,0,23);if(c===null||l===null)return{kind:`custom`,raw:t};if(a!==`*`||o!==`*`)return{kind:`custom`,raw:t,hour:l,minute:c};if(s===`*`||s===`0-6`)return{kind:`daily`,hour:l,minute:c};if(s===`1-5`)return{kind:`weekdays`,hour:l,minute:c};let u=p(s,0,6);return u===null?{kind:`custom`,raw:t,hour:l,minute:c}:{kind:`weekly`,hour:l,minute:c,weekday:u}}function h(e){let{kind:t,hour:n,minute:r,weekday:i}=e;switch(t){case`daily`:return`${r} ${n} * * *`;case`weekdays`:return`${r} ${n} * * 1-5`;case`weekly`:return`${r} ${n} * * ${i??1}`;default:return t}}function g(e,t){return`${String(e).padStart(2,`0`)}:${String(t).padStart(2,`0`)}`}function _(e){let t=e.match(/^(\d{1,2}):(\d{2})$/);if(!t)return null;let n=Number(t[1]),r=Number(t[2]);return Number.isNaN(n)||Number.isNaN(r)||n<0||n>23||r<0||r>59?null:{hour:n,minute:r}}function v(e){return e?Array.isArray(e)?e.join(`, `):e:`—`}var y=e=>(0,u.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,u.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`})}),b=e=>(0,u.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,u.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`})}),x={[l.COMPLETED]:{label:r.AUTOMATIONS$DETAIL$SUCCESSFUL,style:`bg-[var(--oh-success)]/10 text-[var(--oh-success)]`,iconTone:`text-[var(--oh-success)]`},[l.FAILED]:{label:r.AUTOMATIONS$DETAIL$FAILED,style:`bg-[var(--oh-danger)]/10 text-danger`,iconTone:`text-danger`},[l.PENDING]:{label:r.AUTOMATIONS$DETAIL$PENDING,style:`bg-surface-raised text-muted`,iconTone:`text-muted`},[l.RUNNING]:{label:r.AUTOMATIONS$DETAIL$RUNNING,style:`bg-surface-raised text-muted`,iconTone:`text-muted`},[l.CANCELLED]:{label:r.AUTOMATIONS$DETAIL$CANCELLED,style:`bg-surface-raised text-muted`,iconTone:`text-muted`},[l.SKIPPED]:{label:r.AUTOMATIONS$DETAIL$SKIPPED,style:`bg-surface-raised text-muted`,iconTone:`text-muted`}};function S({status:e,compact:t=!1}){let n=t?`size-3`:`size-3.5`;switch(e){case l.COMPLETED:return(0,u.jsx)(y,{"data-testid":`run-status-icon-completed`,className:n});case l.FAILED:return(0,u.jsx)(b,{"data-testid":`run-status-icon-failed`,className:n});case l.RUNNING:return(0,u.jsx)(a,{"data-testid":`run-status-icon-running`,className:i(n,`animate-spin motion-reduce:animate-none`),"aria-hidden":`true`});default:return(0,u.jsx)(c,{"data-testid":`run-status-icon-pending`,className:n})}}function C({status:e,iconOnly:t=!1,showLabel:r=!1,compact:a=!1}){let{t:s}=n(`openhands`),c=x[e]??x[l.PENDING],d=s(c.label);return t?r?(0,u.jsxs)(`span`,{"data-testid":`run-status-badge-icon`,className:i(`inline-flex min-w-0 shrink-0 items-center gap-1.5 text-xs font-medium`,c.iconTone),children:[(0,u.jsx)(S,{status:e,compact:a}),(0,u.jsx)(`span`,{className:`truncate`,children:d})]}):(0,u.jsx)(o,{content:d,placement:`top`,children:(0,u.jsx)(`span`,{role:`img`,"aria-label":d,"data-testid":`run-status-badge-icon`,className:i(`inline-flex shrink-0 cursor-default items-center justify-center`,c.iconTone),children:(0,u.jsx)(S,{status:e,compact:a})})}):(0,u.jsxs)(`span`,{className:i(`inline-flex items-center rounded-full font-medium`,a?`gap-1 pl-1 pr-1.5 py-0 text-[10px] leading-4`:`gap-1.5 pl-2 pr-2.5 py-1 text-xs`,c.style),children:[(0,u.jsx)(S,{status:e,compact:a}),d]})}function w(e,t){return new Date(e).toLocaleDateString(t,{year:`numeric`,month:`short`,day:`numeric`})}function T(e,t,n){let i=Date.now()-new Date(e).getTime(),a=Math.floor(i/6e4),o=Math.floor(i/36e5),s=Math.floor(i/864e5);return a<1?n(r.AUTOMATIONS$DETAIL$TIME_JUST_NOW):a<60?n(r.AUTOMATIONS$DETAIL$TIME_MINUTES_AGO,{count:a}):o<24?n(r.AUTOMATIONS$DETAIL$TIME_HOURS_AGO,{count:o}):s===1?n(r.AUTOMATIONS$DETAIL$TIME_YESTERDAY):s<7?n(r.AUTOMATIONS$DETAIL$TIME_DAYS_AGO,{count:s}):w(e,t)}var E=e=>(0,u.jsx)(`svg`,{width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,u.jsx)(`path`,{d:`M8.4 3.9c-1.1-.66-2.5.13-2.5 1.4v13.4c0 1.27 1.4 2.06 2.5 1.4l11.2-6.7c1.06-.64 1.06-2.16 0-2.8L8.4 3.9Z`,fill:`currentColor`})}),D=e=>(0,u.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,...e,children:(0,u.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M5.636 5.636a9 9 0 1012.728 0M12 3v9`})});function O({icon:e,label:t}){return(0,u.jsxs)(`span`,{className:`flex min-w-0 w-full items-center gap-2`,children:[(0,u.jsx)(`span`,{className:i(`[&_svg]:size-4`,s),"aria-hidden":!0,children:e}),(0,u.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:t})]})}export{T as a,h as c,m as d,_ as f,w as i,v as l,D as n,C as o,d as p,E as r,y as s,O as t,g as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{D as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-ZixYGy6E.js";var t=e(`list-filter`,[[`path`,{d:`M2 5h20`,key:`1fs1ex`}],[`path`,{d:`M6 12h12`,key:`8npq4p`}],[`path`,{d:`M9 19h6`,key:`456am0`}]]);export{t};
|