@openhands/agent-canvas 1.14.0 → 1.16.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-CX3Lh9gj.js +1 -0
- package/build/assets/active-backend-context-CrHTlgvN.js +2 -0
- package/build/assets/agent-context-settings-DSZlXrLj.js +1 -0
- package/build/assets/agent-profiles-settings-Dzgb7G9z.js +1 -0
- package/build/assets/agent-server-conversation-service.api-tnqNjbpE.js +86 -0
- package/build/assets/agent-settings-DLtsqaOs.js +2 -0
- package/build/assets/agent-settings-fFvR-XC2.js +1 -0
- package/build/assets/alert-banner-HP6mX-Vr.js +1 -0
- package/build/assets/api-error-message-B-XdSk3b.js +1 -0
- package/build/assets/api-key-entry-screen-qTzrmJcr.js +1 -0
- package/build/assets/app-settings-dbnneVaV.js +1 -0
- package/build/assets/automation-detail-BmwlCUAB.js +3 -0
- package/build/assets/automation-export-D3a3of4G.js +2 -0
- package/build/assets/automation-git-sync-CprN5DcU.js +1 -0
- package/build/assets/automation-setup-route-C40kXjMY.js +1 -0
- package/build/assets/automation-templates-BRppNh99.js +1 -0
- package/build/assets/automations-list-DuNcRawl.js +1 -0
- package/build/assets/back-nav-button-Cjl_hoxq.js +1 -0
- package/build/assets/backend-form-modal-lhGwzXFI.js +1 -0
- package/build/assets/backend-synced-settings-badge-DPkz30BE.js +1 -0
- package/build/assets/badge-BU3S0VtE.js +1 -0
- package/build/assets/base-modal-D_L0oEbG.js +1 -0
- package/build/assets/bot-dMYHVfYM.js +1 -0
- package/build/assets/brand-button-BAfk4wGP.js +1 -0
- package/build/assets/browser-DSAo0tz1.js +46 -0
- package/build/assets/browser-tab-C9vy56R5.js +1 -0
- package/build/assets/canvas-extension-page-dx1gFrfW.js +1 -0
- package/build/assets/canvas-extensions-8A-XhpgP.js +1 -0
- package/build/assets/canvas-extensions-runtime-2_x5Ezmi.js +1 -0
- package/build/assets/chat-send-button-MUQqCZCS.js +1 -0
- package/build/assets/check-CS0vmpQQ.js +1 -0
- package/build/assets/chevron-down-e1QBpjVy.js +1 -0
- package/build/assets/chevron-right-ZG4R5G4Q.js +1 -0
- package/build/assets/circle-check-DzWLNsbE.js +1 -0
- package/build/assets/circle-plus-check-toggle-BO_kFZt3.js +1 -0
- package/build/assets/cloud-funnel-analytics-CztBCCPp.js +1 -0
- package/build/assets/cog-D-MPQW6G.js +1 -0
- package/build/assets/command-menu--UIlGL72.js +1 -0
- package/build/assets/commits-tab-AnZwLvh-.js +1 -0
- package/build/assets/condenser-settings-DmEOje-7.js +1 -0
- package/build/assets/confirmation-modal-Dv1ktp8K.js +1 -0
- package/build/assets/context-menu-list-item-I86vKcmM.js +1 -0
- package/build/assets/conversation-BbGrAO4Z.js +93 -0
- package/build/assets/conversation-mYT6NAoj.js +1 -0
- package/build/assets/conversation-panel-mYT6NAoj.js +1 -0
- package/build/assets/conversation-state-store-B0ImPLHO.js +1 -0
- package/build/assets/conversation-store-Ca3ghXap.js +6 -0
- package/build/assets/conversation-tab-empty-state-FIbh_lc8.js +1 -0
- package/build/assets/copy-to-clipboard-button-Ca8iSkkA.js +1 -0
- package/build/assets/device-verify-Bhn2e_Ye.js +1 -0
- package/build/assets/dropdown-classes-Bc1djN0-.js +1 -0
- package/build/assets/edit-automation-modal-DadGbJ2u.js +1 -0
- package/build/assets/empty-state-BoGVDecT.js +1 -0
- package/build/assets/entry.client-CqyPPjOq.js +2 -0
- package/build/assets/enum-filter-dropdown-Bgca129f.js +1 -0
- package/build/assets/environment-switch-overlay-BmBRT7gv.js +1 -0
- package/build/assets/error-state-Body8Ngd.js +1 -0
- package/build/assets/extension-module-card-classes-DpeaYhYo.js +1 -0
- package/build/assets/extensions-hub-CcDqq_vR.js +1 -0
- package/build/assets/extensions-navigation-Cr4yzYk4.js +1 -0
- package/build/assets/external-link-DKUlnCQV.js +1 -0
- package/build/assets/files-tab-D4o2VyE_.js +1 -0
- package/build/assets/form-control-classes-Bkh5FGrD.js +1 -0
- package/build/assets/format-model-name-CasAP3nd.js +1 -0
- package/build/assets/get-git-path-ChKDVHZp.js +1 -0
- package/build/assets/git-repo-dropdown-4ROKl2cB.js +1 -0
- package/build/assets/git-repo-dropdown-BkqzkMmM.js +1 -0
- package/build/assets/highlighted-source-view-BFRxGT_Q.js +1 -0
- package/build/assets/home-ChpSuepX.js +1 -0
- package/build/assets/home-DIsB440S.js +1 -0
- package/build/assets/home-automation-run-tooltip-BVNDWjAH.js +1 -0
- package/build/assets/home-store-CY9Ej0ux.js +1 -0
- package/build/assets/index-home-BdlrFIif.js +1 -0
- package/build/assets/info-B6RQawoW.js +1 -0
- package/build/assets/install-server-modal-Dpy89p4g.js +1 -0
- package/build/assets/kebab-menu-item-content-D8hSNGmm.js +1 -0
- package/build/assets/key-BmVyxs-2.js +1 -0
- package/build/assets/launch-IrTDEFCs.js +1 -0
- package/build/assets/list-filter-DsEK7NFC.js +1 -0
- package/build/assets/list-todo-apgLVjMw.js +1 -0
- package/build/assets/llm-not-configured-banner-CIFABh3K.js +27 -0
- package/build/assets/llm-settings-B9juXhIa.js +1 -0
- package/build/assets/llm-settings-De1d5dfr.js +1 -0
- package/build/assets/llm-subscription-service-BpJ0ouQo.js +1 -0
- package/build/assets/loader-circle-CC1au6hc.js +1 -0
- package/build/assets/loading-spinner-BY9N3pOe.js +1 -0
- package/build/assets/manage-backends-modal-BrPV3oB-.js +1 -0
- package/build/assets/manifest-80fb1c29.js +1 -0
- package/build/assets/manifest-subpage-layout-CAOYzrYp.js +1 -0
- package/build/assets/map-provider-Cu3Zgumb.js +1 -0
- package/build/assets/markdown-renderer-BzTlxI8x.js +8 -0
- package/build/assets/mcp-BTs_SXfZ.js +1 -0
- package/build/assets/mcp-marketplace-utils-AIBzzHTO.js +1 -0
- package/build/assets/mcp-page-BEBYqH_K.js +9 -0
- package/build/assets/messages-DKV9cRc2.js +41 -0
- package/build/assets/modal-body-BxZjsju9.js +1 -0
- package/build/assets/modal-classes-C8eycCwG.js +1 -0
- package/build/assets/modal-close-button-DDzdRvCs.js +1 -0
- package/build/assets/mouse-pointer-click-Co2uyaPA.js +1 -0
- package/build/assets/onboarding-DV_OXoeP.js +1 -0
- package/build/assets/onboarding-modal-rkyBYkeQ.js +1 -0
- package/build/assets/organization-service.api-DrYNkEN_.js +1 -0
- package/build/assets/parse-git-remote-url-DpDM9bK6.js +1 -0
- package/build/assets/pencil-47jAZH_V.js +1 -0
- package/build/assets/pin-By41Vl5J.js +1 -0
- package/build/assets/planner-tab-C9uZmhme.js +1 -0
- package/build/assets/plug-CG5HFcNG.js +1 -0
- package/build/assets/plugins-management-service-BMJgC3Ga.js +1 -0
- package/build/assets/plus-C7Slq-0I.js +1 -0
- package/build/assets/profiles-service.api-ChoKrL0l.js +1 -0
- package/build/assets/providers-BhMcY5nv.js +1 -0
- package/build/assets/proxy-9Fe1v5na.js +1 -0
- package/build/assets/puzzle-JM_QaRm0.js +1 -0
- package/build/assets/recommended-automations-launcher-6ABrI9Cy.js +1 -0
- package/build/assets/refresh-cw-3q3Frrii.js +1 -0
- package/build/assets/root-Dc8YmC9F.js +2 -0
- package/build/assets/root-VDaypvK4.css +1 -0
- package/build/assets/root-layout-CXkhSPYh.js +2 -0
- package/build/assets/schema-field-D-y9-LDb.js +1 -0
- package/build/assets/scroll-fade-state-Dw-i4SGq.js +1 -0
- package/build/assets/sdk-section-page-BlFiizlG.js +1 -0
- package/build/assets/secret-form-BB7the8W.js +1 -0
- package/build/assets/secrets-service-ByZVENbp.js +1 -0
- package/build/assets/secrets-settings-B_GpxKW2.js +1 -0
- package/build/assets/server-process-C9RKzd1x.js +1 -0
- package/build/assets/settings-C0EWuBtA.js +1 -0
- package/build/assets/settings-CKqk8ZnH.js +1 -0
- package/build/assets/settings-dropdown-input-BcwylHs2.js +1 -0
- package/build/assets/settings-index-5w5UW2K3.js +1 -0
- package/build/assets/settings-input-Db-1g8Ql.js +1 -0
- package/build/assets/settings-list-classes-BzeSZbF2.js +1 -0
- package/build/assets/settings-modal-DfJ3tcJQ.js +1 -0
- package/build/assets/settings-service.api-DJ1r62Zr.js +1 -0
- package/build/assets/settings-switch-CS-dJDmA.js +1 -0
- package/build/assets/settings-utils-UYpEdPuD.js +1 -0
- package/build/assets/shared-conversation-CA5ISEDy.js +1 -0
- package/build/assets/shield-check-D2aCRd16.js +1 -0
- package/build/assets/sidebar-layout-D6fS8-Gl.js +1 -0
- package/build/assets/sidebar-mobile-menu-toggle-C_fb0Jki.js +1 -0
- package/build/assets/sidebar-nav-link-DQQcMf1A.js +1 -0
- package/build/assets/sidebar-onboarding-checklist-storage-BBkeI6Bp.js +1 -0
- package/build/assets/sidebar-store-DGqHkVLw.js +1 -0
- package/build/assets/skill-card-pill-row-B27-xyig.js +1 -0
- package/build/assets/skill-enablement-DXeaImBz.js +1 -0
- package/build/assets/skill-filter-w__3UCEE.js +2 -0
- package/build/assets/skill-icon-badge-RQkq8wvl.js +1 -0
- package/build/assets/skill-scope-B42H-XOc.js +1 -0
- package/build/assets/skills-plugins-tgF8EiXC.js +1 -0
- package/build/assets/skills-settings-BgJ9PaOe.js +1 -0
- package/build/assets/styled-tooltip-C4jf5Fv9.js +1 -0
- package/build/assets/task-list-tab-C5zcaktH.js +1 -0
- package/build/assets/terminal-CNElN42a.js +3 -0
- package/build/assets/toggle-switch-ChOLXv2n.js +1 -0
- package/build/assets/trash-2-D7K26eDO.js +1 -0
- package/build/assets/trash-D-HYiVYM.js +1 -0
- package/build/assets/triangle-alert-CtdXWHUI.js +1 -0
- package/build/assets/typography-v1KN0tzi.js +1 -0
- package/build/assets/usage-tab-CVDffLPt.js +1 -0
- package/build/assets/use-acp-credential-form-XIQmpX6M.js +1 -0
- package/build/assets/use-activate-agent-profile-BLfmvDiG.js +1 -0
- package/build/assets/use-agent-profiles-Bd9Bvvp1.js +1 -0
- package/build/assets/use-automation-health-E6NZi9rb.js +1 -0
- package/build/assets/use-automations-xijQKIl9.js +1 -0
- package/build/assets/use-can-manage-org-profiles-CrJP5262.js +1 -0
- package/build/assets/use-canvas-extensions-Bi693ujJ.js +1 -0
- package/build/assets/use-cloud-current-user-id-CDfAHpPX.js +1 -0
- package/build/assets/use-config-A9QovgXO.js +1 -0
- package/build/assets/use-create-conversation-Dx3l7mFZ.js +1 -0
- package/build/assets/use-create-secret-B9cUFWRG.js +1 -0
- package/build/assets/use-get-secrets-K3jmk-LH.js +1 -0
- package/build/assets/use-has-permission-B3C8rQmR.js +1 -0
- package/build/assets/use-is-authed-nTBcM7dE.js +1 -0
- package/build/assets/use-launch-skill-in-chat-BYjYihBP.js +1 -0
- package/build/assets/use-llm-configured-BV9nZ1_j.js +1 -0
- package/build/assets/use-llm-profiles-BO-P4Oyo.js +1 -0
- package/build/assets/use-manifest-capabilities-Cw_flwEz.js +1 -0
- package/build/assets/use-onboarding-completion-D8U7k4Qb.js +1 -0
- package/build/assets/use-pinned-home-route-CckOZrmb.js +1 -0
- package/build/assets/use-plugins-marketplace-7i94Zu3Z.js +1 -0
- package/build/assets/use-save-agent-profile-BUjSsDXK.js +1 -0
- package/build/assets/use-save-settings-DYqkKv7T.js +1 -0
- package/build/assets/use-settings-DSXLbvBl.js +1 -0
- package/build/assets/use-settings-nav-items-CwRw-CmX.js +16 -0
- package/build/assets/use-tracking-D53y3TH9.js +3 -0
- package/build/assets/use-user-conversation-B9Gebw_g.js +1 -0
- package/build/assets/useInfiniteQuery-C926xzY4.js +1 -0
- package/build/assets/useMutation-B-qc391N.js +1 -0
- package/build/assets/useQueries-DlbhlH9I.js +1 -0
- package/build/assets/useQuery-BSTgq1rl.js +1 -0
- package/build/assets/utils-CN5ZfZy1.js +1 -0
- package/build/assets/vendor~browser-hbU4u2Ag.js +47 -0
- package/build/assets/vendor~commits-tab-BaO2Ce3e.js +11 -0
- package/build/assets/vendor~conversation-panel~conversation-C8Fn4XOf.js +1 -0
- package/build/assets/vendor~entry.client-CoCfUXUF.js +1 -0
- package/build/assets/vendor~entry.client-DA2izTjq.js +9 -0
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-DqZDXfg2.js +186 -0
- package/build/assets/vendor~index-home~home~conversation-panel~conversation-hWywRBaR.js +13 -0
- package/build/assets/vendor~root-layout-C9Ju9DQg.js +1 -0
- package/build/assets/vendor~root-layout~conversation-panel~conversation-BMbMgaGu.js +1 -0
- package/build/assets/vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-BWir3rJs.js +1 -0
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation-j5MFqfSy.js +1 -0
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-cDuKr-WD.js +1 -0
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-DXqM7vqB.js +1 -0
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iyia17eu-Chf7vmKB.js +1 -0
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~nj1hli3r-DP9wmsjo.js +48 -0
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-CUmIwQCN.js +5053 -0
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-C7HiY4Ae.js +8459 -0
- package/build/assets/verification-settings-gw_q6vkL.js +1 -0
- package/build/assets/wrench-CUEI1krB.js +1 -0
- package/build/assets/x-DJdhbdmt.js +1 -0
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +156 -59
- package/build/locales/ca/openhands.json +156 -59
- package/build/locales/de/openhands.json +156 -59
- package/build/locales/en/openhands.json +156 -59
- package/build/locales/es/openhands.json +156 -59
- package/build/locales/fr/openhands.json +156 -59
- package/build/locales/it/openhands.json +156 -59
- package/build/locales/ja/openhands.json +156 -59
- package/build/locales/ko-KR/openhands.json +156 -59
- package/build/locales/no/openhands.json +156 -59
- package/build/locales/pt/openhands.json +156 -59
- package/build/locales/tr/openhands.json +156 -59
- package/build/locales/uk/openhands.json +156 -59
- package/build/locales/zh-CN/openhands.json +156 -59
- package/build/locales/zh-TW/openhands.json +156 -59
- 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 +10 -1
- package/dist/api/agent-server-adapter.js +139 -132
- 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 +26 -0
- package/dist/api/agent-server-config.js +18 -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 +13 -2
- package/dist/api/automation-service/automation-service.api.js +99 -84
- package/dist/api/automation-service/automation-service.api.js.map +1 -1
- package/dist/api/backend-registry/url-selection.cjs +1 -1
- package/dist/api/backend-registry/url-selection.cjs.map +1 -1
- package/dist/api/backend-registry/url-selection.d.ts +2 -1
- package/dist/api/backend-registry/url-selection.js +2 -2
- package/dist/api/backend-registry/url-selection.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/conversation-file-upload.api.cjs +1 -1
- package/dist/api/conversation-file-upload.api.js +10 -10
- 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 +11 -0
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +138 -122
- 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-provider-items-service.cjs +2 -0
- package/dist/api/git-provider-items-service.cjs.map +1 -0
- package/dist/api/git-provider-items-service.d.ts +25 -0
- package/dist/api/git-provider-items-service.js +127 -0
- package/dist/api/git-provider-items-service.js.map +1 -0
- 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/mcp-health/probe-mcp-server-health.cjs +1 -1
- package/dist/api/mcp-health/probe-mcp-server-health.js +31 -31
- package/dist/api/open-hands.types.d.ts +0 -19
- package/dist/api/profiles-service/profiles-service.api.cjs.map +1 -1
- package/dist/api/profiles-service/profiles-service.api.d.ts +16 -2
- package/dist/api/profiles-service/profiles-service.api.js.map +1 -1
- package/dist/api/provider-connections-service/provider-connections-service.api.cjs +2 -0
- package/dist/api/provider-connections-service/provider-connections-service.api.cjs.map +1 -0
- package/dist/api/provider-connections-service/provider-connections-service.api.d.ts +34 -0
- package/dist/api/provider-connections-service/provider-connections-service.api.js +50 -0
- package/dist/api/provider-connections-service/provider-connections-service.api.js.map +1 -0
- 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 +3 -2
- package/dist/api/settings-service/settings-service.api.js +2 -1
- package/dist/api/settings-service/settings-service.api.js.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/create-skill-ready-event.cjs +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/create-skill-ready-event.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/create-skill-ready-event.js +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/create-skill-ready-event.js.map +1 -1
- 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.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message.js +1 -1
- package/dist/components/conversation-events/chat/event-message.js.map +1 -1
- package/dist/components/conversation-events/chat/messages.cjs.map +1 -1
- package/dist/components/conversation-events/chat/messages.js.map +1 -1
- package/dist/components/features/automations/add-automation-menu.d.ts +7 -0
- package/dist/components/features/automations/add-automation-modal.cjs +2 -0
- package/dist/components/features/automations/add-automation-modal.cjs.map +1 -0
- package/dist/components/features/automations/add-automation-modal.js +42 -0
- package/dist/components/features/automations/add-automation-modal.js.map +1 -0
- package/dist/components/features/automations/automation-action-button-classes.cjs +2 -0
- package/dist/components/features/automations/automation-action-button-classes.cjs.map +1 -0
- package/dist/components/features/automations/automation-action-button-classes.d.ts +0 -2
- package/dist/components/features/automations/automation-action-button-classes.js +8 -0
- package/dist/components/features/automations/automation-action-button-classes.js.map +1 -0
- package/dist/components/features/automations/automation-card-skeleton.cjs +2 -0
- package/dist/components/features/automations/automation-card-skeleton.cjs.map +1 -0
- package/dist/components/features/automations/automation-card-skeleton.js +33 -0
- package/dist/components/features/automations/automation-card-skeleton.js.map +1 -0
- package/dist/components/features/automations/automation-card.cjs +2 -0
- package/dist/components/features/automations/automation-card.cjs.map +1 -0
- package/dist/components/features/automations/automation-card.d.ts +1 -1
- package/dist/components/features/automations/automation-card.js +170 -0
- package/dist/components/features/automations/automation-card.js.map +1 -0
- package/dist/components/features/automations/automation-group.cjs +2 -0
- package/dist/components/features/automations/automation-group.cjs.map +1 -0
- package/dist/components/features/automations/automation-group.js +54 -0
- package/dist/components/features/automations/automation-group.js.map +1 -0
- package/dist/components/features/automations/automation-list-row.cjs +2 -0
- package/dist/components/features/automations/automation-list-row.cjs.map +1 -0
- package/dist/components/features/automations/automation-list-row.js +152 -0
- package/dist/components/features/automations/automation-list-row.js.map +1 -0
- package/dist/components/features/automations/automation-run-insights.cjs +2 -0
- package/dist/components/features/automations/automation-run-insights.cjs.map +1 -0
- package/dist/components/features/automations/automation-run-insights.js +46 -0
- package/dist/components/features/automations/automation-run-insights.js.map +1 -0
- package/dist/components/features/automations/automation-view-mode.cjs +2 -0
- package/dist/components/features/automations/automation-view-mode.cjs.map +1 -0
- package/dist/components/features/automations/automation-view-mode.d.ts +5 -1
- package/dist/components/features/automations/automation-view-mode.js +6 -0
- package/dist/components/features/automations/automation-view-mode.js.map +1 -0
- package/dist/components/features/automations/backend-not-configured.cjs +2 -0
- package/dist/components/features/automations/backend-not-configured.cjs.map +1 -0
- package/dist/components/features/automations/backend-not-configured.js +34 -0
- package/dist/components/features/automations/backend-not-configured.js.map +1 -0
- package/dist/components/features/automations/build-automation-menu-items.cjs +2 -0
- package/dist/components/features/automations/build-automation-menu-items.cjs.map +1 -0
- package/dist/components/features/automations/build-automation-menu-items.js +53 -0
- package/dist/components/features/automations/build-automation-menu-items.js.map +1 -0
- package/dist/components/features/automations/build-automation-pills.cjs +2 -0
- package/dist/components/features/automations/build-automation-pills.cjs.map +1 -0
- package/dist/components/features/automations/build-automation-pills.js +71 -0
- package/dist/components/features/automations/build-automation-pills.js.map +1 -0
- package/dist/components/features/automations/create-instructions.cjs +2 -0
- package/dist/components/features/automations/create-instructions.cjs.map +1 -0
- package/dist/components/features/automations/create-instructions.js +102 -0
- package/dist/components/features/automations/create-instructions.js.map +1 -0
- package/dist/components/features/automations/dashboard/automations-dashboard-controls.d.ts +4 -3
- 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 +2 -0
- package/dist/components/features/automations/detail/run-status-badge.cjs.map +1 -0
- package/dist/components/features/automations/detail/run-status-badge.js +102 -0
- package/dist/components/features/automations/detail/run-status-badge.js.map +1 -0
- package/dist/components/features/automations/empty-state.cjs +2 -0
- package/dist/components/features/automations/empty-state.cjs.map +1 -0
- package/dist/components/features/automations/empty-state.js +35 -0
- package/dist/components/features/automations/empty-state.js.map +1 -0
- package/dist/components/features/automations/error-state.cjs +2 -0
- package/dist/components/features/automations/error-state.cjs.map +1 -0
- package/dist/components/features/automations/error-state.js +28 -0
- package/dist/components/features/automations/error-state.js.map +1 -0
- package/dist/components/features/automations/import-automation-modal.d.ts +2 -1
- package/dist/components/features/automations/kebab-menu-item-content.cjs +2 -0
- package/dist/components/features/automations/kebab-menu-item-content.cjs.map +1 -0
- package/dist/components/features/automations/kebab-menu-item-content.js +21 -0
- package/dist/components/features/automations/kebab-menu-item-content.js.map +1 -0
- package/dist/components/features/automations/kebab-menu.cjs +2 -0
- package/dist/components/features/automations/kebab-menu.cjs.map +1 -0
- package/dist/components/features/automations/kebab-menu.d.ts +2 -1
- package/dist/components/features/automations/kebab-menu.js +76 -0
- package/dist/components/features/automations/kebab-menu.js.map +1 -0
- package/dist/components/features/automations/recommended-automations-launcher.cjs +2 -0
- package/dist/components/features/automations/recommended-automations-launcher.cjs.map +1 -0
- package/dist/components/features/automations/recommended-automations-launcher.d.ts +7 -1
- package/dist/components/features/automations/recommended-automations-launcher.js +134 -0
- package/dist/components/features/automations/recommended-automations-launcher.js.map +1 -0
- package/dist/components/features/automations/recommended-automations-rail.cjs +2 -0
- package/dist/components/features/automations/recommended-automations-rail.cjs.map +1 -0
- package/dist/components/features/automations/recommended-automations-rail.d.ts +9 -0
- package/dist/components/features/automations/recommended-automations-rail.js +127 -0
- package/dist/components/features/automations/recommended-automations-rail.js.map +1 -0
- package/dist/components/features/automations/recommended-automations-section.cjs +2 -0
- package/dist/components/features/automations/recommended-automations-section.cjs.map +1 -0
- package/dist/components/features/automations/recommended-automations-section.d.ts +2 -2
- package/dist/components/features/automations/recommended-automations-section.js +198 -0
- package/dist/components/features/automations/recommended-automations-section.js.map +1 -0
- package/dist/components/features/automations/responder-deployment-modal.cjs +2 -0
- package/dist/components/features/automations/responder-deployment-modal.cjs.map +1 -0
- package/dist/components/features/automations/responder-deployment-modal.js +75 -0
- package/dist/components/features/automations/responder-deployment-modal.js.map +1 -0
- package/dist/components/features/automations/status-badge.cjs +2 -0
- package/dist/components/features/automations/status-badge.cjs.map +1 -0
- package/dist/components/features/automations/status-badge.js +12 -0
- package/dist/components/features/automations/status-badge.js.map +1 -0
- package/dist/components/features/automations/to-latest-run-state.cjs +2 -0
- package/dist/components/features/automations/to-latest-run-state.cjs.map +1 -0
- package/dist/components/features/automations/to-latest-run-state.d.ts +6 -0
- package/dist/components/features/automations/to-latest-run-state.js +21 -0
- package/dist/components/features/automations/to-latest-run-state.js.map +1 -0
- 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 +15 -21
- package/dist/components/features/backends/backend-form-modal.js.map +1 -1
- package/dist/components/features/backends/manage-backends-modal.cjs +1 -1
- package/dist/components/features/backends/manage-backends-modal.js +5 -5
- 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/chat-interface.cjs +2 -2
- package/dist/components/features/chat/chat-interface.cjs.map +1 -1
- package/dist/components/features/chat/chat-interface.js +138 -133
- 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/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/command-menu/command-menu-items.d.ts +10 -4
- package/dist/components/features/conversation/conversation-git-actions-menu.cjs +2 -0
- package/dist/components/features/conversation/conversation-git-actions-menu.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-git-actions-menu.d.ts +15 -0
- package/dist/components/features/conversation/conversation-git-actions-menu.js +123 -0
- package/dist/components/features/conversation/conversation-git-actions-menu.js.map +1 -0
- package/dist/components/features/conversation/conversation-git-actions-toggle.cjs +2 -0
- package/dist/components/features/conversation/conversation-git-actions-toggle.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-git-actions-toggle.d.ts +10 -0
- package/dist/components/features/conversation/conversation-git-actions-toggle.js +60 -0
- package/dist/components/features/conversation/conversation-git-actions-toggle.js.map +1 -0
- package/dist/components/features/conversation/conversation-main/chat-interface-wrapper.cjs +1 -1
- package/dist/components/features/conversation/conversation-main/chat-interface-wrapper.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-main/chat-interface-wrapper.js +46 -10
- package/dist/components/features/conversation/conversation-main/chat-interface-wrapper.js.map +1 -1
- package/dist/components/features/conversation/conversation-main/conversation-main.cjs +1 -1
- package/dist/components/features/conversation/conversation-main/conversation-main.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-main/conversation-main.js +49 -43
- package/dist/components/features/conversation/conversation-main/conversation-main.js.map +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.cjs +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.js +49 -40
- package/dist/components/features/conversation/conversation-name-with-status.js.map +1 -1
- package/dist/components/features/conversation/conversation-name.cjs +1 -1
- package/dist/components/features/conversation/conversation-name.js +4 -4
- package/dist/components/features/conversation/conversation-overview-automations-panel.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-automations-panel.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-automations-panel.d.ts +6 -0
- package/dist/components/features/conversation/conversation-overview-automations-panel.js +48 -0
- package/dist/components/features/conversation/conversation-overview-automations-panel.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-context-menu.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-context-menu.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-context-menu.d.ts +10 -0
- package/dist/components/features/conversation/conversation-overview-context-menu.js +221 -0
- package/dist/components/features/conversation/conversation-overview-context-menu.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-diffs-row.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-diffs-row.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-diffs-row.d.ts +2 -0
- package/dist/components/features/conversation/conversation-overview-diffs-row.js +88 -0
- package/dist/components/features/conversation/conversation-overview-diffs-row.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer-content.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-drawer-content.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer-content.d.ts +6 -0
- package/dist/components/features/conversation/conversation-overview-drawer-content.js +138 -0
- package/dist/components/features/conversation/conversation-overview-drawer-content.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer-context.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-drawer-context.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer-context.d.ts +17 -0
- package/dist/components/features/conversation/conversation-overview-drawer-context.js +43 -0
- package/dist/components/features/conversation/conversation-overview-drawer-context.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-drawer.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer.constants.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-drawer.constants.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer.constants.d.ts +6 -0
- package/dist/components/features/conversation/conversation-overview-drawer.constants.js +6 -0
- package/dist/components/features/conversation/conversation-overview-drawer.constants.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer.d.ts +7 -0
- package/dist/components/features/conversation/conversation-overview-drawer.js +45 -0
- package/dist/components/features/conversation/conversation-overview-drawer.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer.types.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-drawer.types.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer.types.d.ts +12 -0
- package/dist/components/features/conversation/conversation-overview-drawer.types.js +13 -0
- package/dist/components/features/conversation/conversation-overview-drawer.types.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-git-items-panel.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-git-items-panel.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-git-items-panel.d.ts +7 -0
- package/dist/components/features/conversation/conversation-overview-git-items-panel.js +81 -0
- package/dist/components/features/conversation/conversation-overview-git-items-panel.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-git-section.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-git-section.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-git-section.d.ts +6 -0
- package/dist/components/features/conversation/conversation-overview-git-section.js +143 -0
- package/dist/components/features/conversation/conversation-overview-git-section.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-mcp-panel.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-mcp-panel.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-mcp-panel.d.ts +6 -0
- package/dist/components/features/conversation/conversation-overview-mcp-panel.js +108 -0
- package/dist/components/features/conversation/conversation-overview-mcp-panel.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-panel.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-panel.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-panel.constants.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-panel.constants.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-panel.constants.d.ts +24 -0
- package/dist/components/features/conversation/conversation-overview-panel.constants.js +12 -0
- package/dist/components/features/conversation/conversation-overview-panel.constants.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-panel.d.ts +2 -0
- package/dist/components/features/conversation/conversation-overview-panel.js +102 -0
- package/dist/components/features/conversation/conversation-overview-panel.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-project-scope-toggle.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-project-scope-toggle.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-project-scope-toggle.d.ts +8 -0
- package/dist/components/features/conversation/conversation-overview-project-scope-toggle.js +29 -0
- package/dist/components/features/conversation/conversation-overview-project-scope-toggle.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-secrets-panel.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-secrets-panel.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-secrets-panel.d.ts +6 -0
- package/dist/components/features/conversation/conversation-overview-secrets-panel.js +89 -0
- package/dist/components/features/conversation/conversation-overview-secrets-panel.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-sections.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-sections.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-sections.d.ts +43 -0
- package/dist/components/features/conversation/conversation-overview-sections.js +27 -0
- package/dist/components/features/conversation/conversation-overview-sections.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-skills-panel.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-skills-panel.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-skills-panel.d.ts +6 -0
- package/dist/components/features/conversation/conversation-overview-skills-panel.js +120 -0
- package/dist/components/features/conversation/conversation-overview-skills-panel.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-toggle.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-toggle.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-toggle.d.ts +11 -0
- package/dist/components/features/conversation/conversation-overview-toggle.js +99 -0
- package/dist/components/features/conversation/conversation-overview-toggle.js.map +1 -0
- package/dist/components/features/conversation/conversation-secondary-drawer.classes.cjs +2 -0
- package/dist/components/features/conversation/conversation-secondary-drawer.classes.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-secondary-drawer.classes.d.ts +4 -0
- package/dist/components/features/conversation/conversation-secondary-drawer.classes.js +7 -0
- package/dist/components/features/conversation/conversation-secondary-drawer.classes.js.map +1 -0
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.js +10 -9
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.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 +68 -62
- 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 +89 -79
- 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/right-panel-toggle.cjs +1 -1
- package/dist/components/features/conversation/right-panel-toggle.cjs.map +1 -1
- package/dist/components/features/conversation/right-panel-toggle.d.ts +3 -2
- package/dist/components/features/conversation/right-panel-toggle.js +34 -33
- package/dist/components/features/conversation/right-panel-toggle.js.map +1 -1
- 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 +2 -1
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js +14 -7
- 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 +252 -225
- package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.js +4 -4
- package/dist/components/features/conversation-panel/local-new-conversation-menu.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/diff-viewer/accordion-panel.cjs +2 -0
- package/dist/components/features/diff-viewer/accordion-panel.cjs.map +1 -0
- package/dist/components/features/diff-viewer/accordion-panel.d.ts +13 -0
- package/dist/components/features/diff-viewer/accordion-panel.js +41 -0
- package/dist/components/features/diff-viewer/accordion-panel.js.map +1 -0
- package/dist/components/features/diff-viewer/commit-list.cjs +1 -1
- package/dist/components/features/diff-viewer/commit-list.cjs.map +1 -1
- package/dist/components/features/diff-viewer/commit-list.d.ts +5 -1
- package/dist/components/features/diff-viewer/commit-list.js +30 -16
- package/dist/components/features/diff-viewer/commit-list.js.map +1 -1
- package/dist/components/features/diff-viewer/commit-row.cjs +1 -1
- package/dist/components/features/diff-viewer/commit-row.cjs.map +1 -1
- package/dist/components/features/diff-viewer/commit-row.d.ts +1 -2
- package/dist/components/features/diff-viewer/commit-row.js +38 -34
- package/dist/components/features/diff-viewer/commit-row.js.map +1 -1
- package/dist/components/features/diff-viewer/diff-change-list.cjs +2 -0
- package/dist/components/features/diff-viewer/diff-change-list.cjs.map +1 -0
- package/dist/components/features/diff-viewer/diff-change-list.d.ts +18 -0
- package/dist/components/features/diff-viewer/diff-change-list.js +22 -0
- package/dist/components/features/diff-viewer/diff-change-list.js.map +1 -0
- package/dist/components/features/diff-viewer/editor-container.cjs +1 -1
- package/dist/components/features/diff-viewer/editor-container.cjs.map +1 -1
- package/dist/components/features/diff-viewer/editor-container.d.ts +2 -1
- package/dist/components/features/diff-viewer/editor-container.js +8 -7
- package/dist/components/features/diff-viewer/editor-container.js.map +1 -1
- package/dist/components/features/diff-viewer/file-diff-viewer.cjs +1 -1
- package/dist/components/features/diff-viewer/file-diff-viewer.cjs.map +1 -1
- package/dist/components/features/diff-viewer/file-diff-viewer.d.ts +10 -1
- package/dist/components/features/diff-viewer/file-diff-viewer.js +138 -112
- package/dist/components/features/diff-viewer/file-diff-viewer.js.map +1 -1
- package/dist/components/features/diff-viewer/uncommitted-changes-row.cjs +2 -0
- package/dist/components/features/diff-viewer/uncommitted-changes-row.cjs.map +1 -0
- package/dist/components/features/diff-viewer/uncommitted-changes-row.d.ts +12 -0
- package/dist/components/features/diff-viewer/uncommitted-changes-row.js +51 -0
- package/dist/components/features/diff-viewer/uncommitted-changes-row.js.map +1 -0
- package/dist/components/features/files-tab/file-content-viewer.cjs +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.js +5 -6
- package/dist/components/features/files-tab/file-content-viewer.js.map +1 -1
- package/dist/components/features/files-tab/file-quick-row.cjs +1 -1
- package/dist/components/features/files-tab/file-quick-row.cjs.map +1 -1
- package/dist/components/features/files-tab/file-quick-row.d.ts +9 -7
- package/dist/components/features/files-tab/file-quick-row.js +63 -34
- package/dist/components/features/files-tab/file-quick-row.js.map +1 -1
- package/dist/components/features/files-tab/files-tab-tree.constants.cjs +2 -0
- package/dist/components/features/files-tab/files-tab-tree.constants.cjs.map +1 -0
- package/dist/components/features/files-tab/files-tab-tree.constants.d.ts +7 -0
- package/dist/components/features/files-tab/files-tab-tree.constants.js +6 -0
- package/dist/components/features/files-tab/files-tab-tree.constants.js.map +1 -0
- package/dist/components/features/files-tab/segmented-toggle.cjs +1 -1
- package/dist/components/features/files-tab/segmented-toggle.cjs.map +1 -1
- package/dist/components/features/files-tab/segmented-toggle.d.ts +5 -3
- package/dist/components/features/files-tab/segmented-toggle.js +10 -13
- package/dist/components/features/files-tab/segmented-toggle.js.map +1 -1
- package/dist/components/features/files-tab/tree-node.cjs +1 -1
- package/dist/components/features/files-tab/tree-node.cjs.map +1 -1
- package/dist/components/features/files-tab/tree-node.js +34 -32
- package/dist/components/features/files-tab/tree-node.js.map +1 -1
- package/dist/components/features/files-tab/workspace-path.cjs +2 -0
- package/dist/components/features/files-tab/workspace-path.cjs.map +1 -0
- package/dist/components/features/files-tab/workspace-path.d.ts +6 -0
- package/dist/components/features/files-tab/workspace-path.js +41 -0
- package/dist/components/features/files-tab/workspace-path.js.map +1 -0
- package/dist/components/features/home/featured-automations/automation-health-indicator.cjs +2 -0
- package/dist/components/features/home/featured-automations/automation-health-indicator.cjs.map +1 -0
- package/dist/components/features/home/featured-automations/automation-health-indicator.js +22 -0
- package/dist/components/features/home/featured-automations/automation-health-indicator.js.map +1 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs +2 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs.map +1 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js +45 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js.map +1 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs +2 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs.map +1 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js +108 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js.map +1 -0
- package/dist/components/features/home/featured-automations/automation-run-health.cjs +2 -0
- package/dist/components/features/home/featured-automations/automation-run-health.cjs.map +1 -0
- package/dist/components/features/home/featured-automations/automation-run-health.js +75 -0
- package/dist/components/features/home/featured-automations/automation-run-health.js.map +1 -0
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs +2 -0
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs.map +1 -0
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js +96 -0
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js.map +1 -0
- package/dist/components/features/home/featured-automations/pinned-automation-card.d.ts +3 -3
- package/dist/components/features/home/git-repo-dropdown/use-url-search.cjs +1 -1
- package/dist/components/features/home/git-repo-dropdown/use-url-search.cjs.map +1 -1
- package/dist/components/features/home/git-repo-dropdown/use-url-search.js +1 -1
- package/dist/components/features/home/git-repo-dropdown/use-url-search.js.map +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.cjs +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.js +6 -6
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.cjs +1 -1
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.js +6 -6
- package/dist/components/features/manifest/manifest-form-field.d.ts +4 -3
- package/dist/components/features/manifest/manifest-icons.cjs +2 -0
- package/dist/components/features/manifest/manifest-icons.cjs.map +1 -0
- package/dist/components/features/manifest/manifest-icons.d.ts +1 -0
- package/dist/components/features/manifest/manifest-icons.js +21 -0
- package/dist/components/features/manifest/manifest-icons.js.map +1 -0
- package/dist/components/features/manifest/manifest-repository-list.d.ts +25 -0
- package/dist/components/features/markdown/markdown-table-scroll.cjs +1 -1
- package/dist/components/features/markdown/markdown-table-scroll.cjs.map +1 -1
- package/dist/components/features/markdown/markdown-table-scroll.d.ts +2 -6
- package/dist/components/features/markdown/markdown-table-scroll.js +15 -21
- package/dist/components/features/markdown/markdown-table-scroll.js.map +1 -1
- package/dist/components/features/mcp-logo-badge.cjs +1 -1
- package/dist/components/features/mcp-logo-badge.cjs.map +1 -1
- package/dist/components/features/mcp-logo-badge.d.ts +1 -1
- package/dist/components/features/mcp-logo-badge.js +1 -0
- package/dist/components/features/mcp-logo-badge.js.map +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.cjs +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.js +16 -16
- package/dist/components/features/mcp-page/index.cjs +1 -1
- package/dist/components/features/mcp-page/index.js +2 -2
- package/dist/components/features/mcp-page/install-server-modal.cjs +1 -1
- package/dist/components/features/mcp-page/install-server-modal.cjs.map +1 -1
- package/dist/components/features/mcp-page/install-server-modal.js +25 -25
- package/dist/components/features/mcp-page/install-server-modal.js.map +1 -1
- package/dist/components/features/mcp-page/installed-server-card.cjs +1 -1
- package/dist/components/features/mcp-page/installed-server-card.js +5 -5
- package/dist/components/features/mcp-page/marketplace-card.cjs +1 -1
- package/dist/components/features/mcp-page/marketplace-card.js +4 -4
- package/dist/components/features/mcp-page/marketplace-section.cjs +1 -1
- package/dist/components/features/mcp-page/marketplace-section.js +3 -3
- package/dist/components/features/mcp-page/mcp-logo-stack-badge.cjs +2 -0
- package/dist/components/features/mcp-page/mcp-logo-stack-badge.cjs.map +1 -0
- package/dist/components/features/mcp-page/mcp-logo-stack-badge.js +60 -0
- package/dist/components/features/mcp-page/mcp-logo-stack-badge.js.map +1 -0
- package/dist/components/features/mcp-page/mcp-server-health.cjs +1 -1
- package/dist/components/features/mcp-page/mcp-server-health.js +18 -18
- 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/onboarding/use-onboarding-completion.cjs +2 -0
- package/dist/components/features/onboarding/use-onboarding-completion.cjs.map +1 -0
- package/dist/components/features/onboarding/use-onboarding-completion.js +32 -0
- package/dist/components/features/onboarding/use-onboarding-completion.js.map +1 -0
- package/dist/components/features/settings/acp-auth-status-banner.d.ts +23 -6
- package/dist/components/features/settings/app-settings/getting-started-checklist-switch.cjs +2 -0
- package/dist/components/features/settings/app-settings/getting-started-checklist-switch.cjs.map +1 -0
- package/dist/components/features/settings/app-settings/getting-started-checklist-switch.d.ts +1 -0
- package/dist/components/features/settings/app-settings/getting-started-checklist-switch.js +22 -0
- package/dist/components/features/settings/app-settings/getting-started-checklist-switch.js.map +1 -0
- package/dist/components/features/settings/brand-button.cjs +1 -1
- package/dist/components/features/settings/brand-button.cjs.map +1 -1
- package/dist/components/features/settings/brand-button.d.ts +2 -0
- package/dist/components/features/settings/brand-button.js +4 -2
- package/dist/components/features/settings/brand-button.js.map +1 -1
- package/dist/components/features/settings/llm-profiles/delete-provider-connection-modal.cjs +1 -0
- package/dist/components/features/settings/llm-profiles/delete-provider-connection-modal.d.ts +7 -0
- package/dist/components/features/settings/llm-profiles/delete-provider-connection-modal.js +7 -0
- package/dist/components/features/settings/llm-profiles/llm-profiles-manager.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/llm-profiles-manager.js +3 -0
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.js +2 -0
- package/dist/components/features/settings/llm-profiles/profiles-body.d.ts +20 -1
- package/dist/components/features/settings/llm-profiles/provider-connection-modal.cjs +1 -0
- package/dist/components/features/settings/llm-profiles/provider-connection-modal.d.ts +19 -0
- package/dist/components/features/settings/llm-profiles/provider-connection-modal.js +13 -0
- package/dist/components/features/settings/llm-profiles/provider-connection-row.cjs +1 -0
- package/dist/components/features/settings/llm-profiles/provider-connection-row.d.ts +10 -0
- package/dist/components/features/settings/llm-profiles/provider-connection-row.js +6 -0
- package/dist/components/features/settings/llm-profiles/provider-connections-manager.cjs +1 -0
- package/dist/components/features/settings/llm-profiles/provider-connections-manager.d.ts +15 -0
- package/dist/components/features/settings/llm-profiles/provider-connections-manager.js +8 -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/schema-field.cjs +1 -1
- package/dist/components/features/settings/sdk-settings/schema-field.js +6 -6
- package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs +1 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.js +9 -9
- package/dist/components/features/settings/secrets-settings/secret-form.cjs +1 -1
- package/dist/components/features/settings/secrets-settings/secret-form.js +7 -7
- package/dist/components/features/settings/settings-input.cjs +1 -1
- package/dist/components/features/settings/settings-input.cjs.map +1 -1
- package/dist/components/features/settings/settings-input.d.ts +6 -0
- package/dist/components/features/settings/settings-input.js +14 -13
- package/dist/components/features/settings/settings-input.js.map +1 -1
- 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-onboarding-checklist-item-icon.cjs +2 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-icon.cjs.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-icon.d.ts +7 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-icon.js +102 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-icon.js.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-preview.cjs +2 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-preview.cjs.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-preview.d.ts +8 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-preview.js +66 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-preview.js.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-llm-complete.cjs +2 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-llm-complete.cjs.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-llm-complete.d.ts +3 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-llm-complete.js +15 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-llm-complete.js.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-storage.cjs +2 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-storage.cjs.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-storage.d.ts +10 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-storage.js +39 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-storage.js.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.cjs +2 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.cjs.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.constants.cjs +2 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.constants.cjs.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.constants.d.ts +26 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.constants.js +78 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.constants.js.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.d.ts +5 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.js +127 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.js.map +1 -0
- 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.js +137 -110
- 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 +1 -1
- package/dist/components/features/sidebar/sidebar.js.map +1 -1
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist-dismissed.cjs +2 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist-dismissed.cjs.map +1 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist-dismissed.d.ts +1 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist-dismissed.js +10 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist-dismissed.js.map +1 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.cjs +2 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.cjs.map +1 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.d.ts +15 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.js +75 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.js.map +1 -0
- package/dist/components/features/skills/add-skill-modal.cjs +2 -0
- package/dist/components/features/skills/add-skill-modal.cjs.map +1 -0
- package/dist/components/features/skills/add-skill-modal.js +164 -0
- package/dist/components/features/skills/add-skill-modal.js.map +1 -0
- package/dist/components/features/skills/build-skill-pills.cjs +2 -0
- package/dist/components/features/skills/build-skill-pills.cjs.map +1 -0
- package/dist/components/features/skills/build-skill-pills.js +96 -0
- package/dist/components/features/skills/build-skill-pills.js.map +1 -0
- package/dist/components/features/skills/extensions-navigation.cjs +1 -1
- package/dist/components/features/skills/extensions-navigation.cjs.map +1 -1
- package/dist/components/features/skills/extensions-navigation.js +54 -43
- package/dist/components/features/skills/extensions-navigation.js.map +1 -1
- package/dist/components/features/skills/get-skill-card-description.cjs +2 -0
- package/dist/components/features/skills/get-skill-card-description.cjs.map +1 -0
- package/dist/components/features/skills/get-skill-card-description.js +34 -0
- package/dist/components/features/skills/get-skill-card-description.js.map +1 -0
- package/dist/components/features/skills/get-skill-chat-launch-message.cjs +2 -0
- package/dist/components/features/skills/get-skill-chat-launch-message.cjs.map +1 -0
- package/dist/components/features/skills/get-skill-chat-launch-message.js +9 -0
- package/dist/components/features/skills/get-skill-chat-launch-message.js.map +1 -0
- package/dist/components/features/skills/is-copyable-skill-source.cjs +2 -0
- package/dist/components/features/skills/is-copyable-skill-source.cjs.map +1 -0
- package/dist/components/features/skills/is-copyable-skill-source.js +9 -0
- package/dist/components/features/skills/is-copyable-skill-source.js.map +1 -0
- package/dist/components/features/skills/skill-card-pill-row.cjs +2 -0
- package/dist/components/features/skills/skill-card-pill-row.cjs.map +1 -0
- package/dist/components/features/skills/skill-card-pill-row.d.ts +1 -1
- package/dist/components/features/skills/skill-card-pill-row.js +137 -0
- package/dist/components/features/skills/skill-card-pill-row.js.map +1 -0
- package/dist/components/features/skills/skill-card.cjs +2 -0
- package/dist/components/features/skills/skill-card.cjs.map +1 -0
- package/dist/components/features/skills/skill-card.js +93 -0
- package/dist/components/features/skills/skill-card.js.map +1 -0
- package/dist/components/features/skills/skill-detail-modal.cjs +3 -0
- package/dist/components/features/skills/skill-detail-modal.cjs.map +1 -0
- package/dist/components/features/skills/skill-detail-modal.js +150 -0
- package/dist/components/features/skills/skill-detail-modal.js.map +1 -0
- package/dist/components/features/skills/skill-facet-rail.cjs +2 -0
- package/dist/components/features/skills/skill-facet-rail.cjs.map +1 -0
- package/dist/components/features/skills/skill-facet-rail.js +42 -0
- package/dist/components/features/skills/skill-facet-rail.js.map +1 -0
- package/dist/components/features/skills/skill-facet-row.cjs +2 -0
- package/dist/components/features/skills/skill-facet-row.cjs.map +1 -0
- package/dist/components/features/skills/skill-facet-row.js +44 -0
- package/dist/components/features/skills/skill-facet-row.js.map +1 -0
- package/dist/components/features/skills/skill-filter.cjs +2 -0
- package/dist/components/features/skills/skill-filter.cjs.map +1 -0
- package/dist/components/features/skills/skill-filter.d.ts +8 -3
- package/dist/components/features/skills/skill-filter.js +183 -0
- package/dist/components/features/skills/skill-filter.js.map +1 -0
- package/dist/components/features/skills/skill-filters-modal.cjs +2 -0
- package/dist/components/features/skills/skill-filters-modal.cjs.map +1 -0
- package/dist/components/features/skills/skill-filters-modal.js +53 -0
- package/dist/components/features/skills/skill-filters-modal.js.map +1 -0
- package/dist/components/features/skills/skill-icon-badge.cjs +2 -0
- package/dist/components/features/skills/skill-icon-badge.cjs.map +1 -0
- package/dist/components/features/skills/skill-icon-badge.js +17 -0
- package/dist/components/features/skills/skill-icon-badge.js.map +1 -0
- package/dist/components/features/skills/skill-type-badge.cjs +2 -0
- package/dist/components/features/skills/skill-type-badge.cjs.map +1 -0
- package/dist/components/features/skills/skill-type-badge.js +21 -0
- package/dist/components/features/skills/skill-type-badge.js.map +1 -0
- package/dist/components/features/skills/skills-toolbar.cjs +2 -0
- package/dist/components/features/skills/skills-toolbar.cjs.map +1 -0
- package/dist/components/features/skills/skills-toolbar.js +63 -0
- package/dist/components/features/skills/skills-toolbar.js.map +1 -0
- package/dist/components/shared/buttons/circle-plus-check-toggle.cjs +1 -1
- package/dist/components/shared/buttons/circle-plus-check-toggle.cjs.map +1 -1
- package/dist/components/shared/buttons/circle-plus-check-toggle.js +19 -6
- package/dist/components/shared/buttons/circle-plus-check-toggle.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 +4 -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/settings/settings-form.cjs +1 -1
- package/dist/components/shared/modals/settings/settings-form.js +6 -6
- package/dist/components/ui/resize-handle.cjs +1 -1
- package/dist/components/ui/resize-handle.cjs.map +1 -1
- package/dist/components/ui/resize-handle.d.ts +2 -1
- package/dist/components/ui/resize-handle.js +6 -5
- package/dist/components/ui/resize-handle.js.map +1 -1
- 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/skills-docs.cjs +2 -0
- package/dist/constants/skills-docs.cjs.map +1 -0
- package/dist/constants/skills-docs.js +6 -0
- package/dist/constants/skills-docs.js.map +1 -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.js +174 -149
- package/dist/contexts/conversation-websocket-context.js.map +1 -1
- package/dist/extensions/canvas-extension-module-loader.d.ts +11 -0
- package/dist/fixtures/home-automations-demo.cjs +2 -0
- package/dist/fixtures/home-automations-demo.cjs.map +1 -0
- package/dist/fixtures/home-automations-demo.d.ts +1 -3
- package/dist/fixtures/home-automations-demo.js +384 -0
- package/dist/fixtures/home-automations-demo.js.map +1 -0
- package/dist/hooks/chat/use-slash-command.cjs +1 -1
- package/dist/hooks/chat/use-slash-command.cjs.map +1 -1
- package/dist/hooks/chat/use-slash-command.d.ts +1 -2
- package/dist/hooks/chat/use-slash-command.js +1 -0
- package/dist/hooks/chat/use-slash-command.js.map +1 -1
- 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 +27 -30
- package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
- package/dist/hooks/mutation/use-create-provider-connection.cjs +1 -0
- package/dist/hooks/mutation/use-create-provider-connection.d.ts +2 -0
- package/dist/hooks/mutation/use-create-provider-connection.js +1 -0
- package/dist/hooks/mutation/use-delete-mcp-server.cjs +1 -1
- package/dist/hooks/mutation/use-delete-mcp-server.js +3 -3
- package/dist/hooks/mutation/use-delete-provider-connection.cjs +1 -0
- package/dist/hooks/mutation/use-delete-provider-connection.d.ts +1 -0
- package/dist/hooks/mutation/use-delete-provider-connection.js +1 -0
- package/dist/hooks/mutation/use-manage-canvas-extensions.d.ts +12 -0
- package/dist/hooks/mutation/use-switch-acp-model.cjs +1 -1
- package/dist/hooks/mutation/use-switch-acp-model.cjs.map +1 -1
- package/dist/hooks/mutation/use-switch-acp-model.d.ts +5 -3
- package/dist/hooks/mutation/use-switch-acp-model.js +9 -13
- package/dist/hooks/mutation/use-switch-acp-model.js.map +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.cjs +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.js +6 -6
- package/dist/hooks/mutation/use-update-provider-connection.cjs +1 -0
- package/dist/hooks/mutation/use-update-provider-connection.d.ts +7 -0
- package/dist/hooks/mutation/use-update-provider-connection.js +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 +7 -0
- package/dist/hooks/query/query-keys.js +4 -4
- 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-detail.cjs +1 -0
- package/dist/hooks/query/use-automation-detail.js +2 -0
- package/dist/hooks/query/use-automation-health.cjs +2 -0
- package/dist/hooks/query/use-automation-health.cjs.map +1 -0
- package/dist/hooks/query/use-automation-health.js +22 -0
- package/dist/hooks/query/use-automation-health.js.map +1 -0
- package/dist/hooks/query/use-automations.cjs +2 -0
- package/dist/hooks/query/use-automations.cjs.map +1 -0
- package/dist/hooks/query/use-automations.js +28 -0
- package/dist/hooks/query/use-automations.js.map +1 -0
- package/dist/hooks/query/use-backends-health.cjs +1 -1
- package/dist/hooks/query/use-backends-health.cjs.map +1 -1
- package/dist/hooks/query/use-backends-health.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-conversation-history.cjs +1 -1
- package/dist/hooks/query/use-conversation-history.cjs.map +1 -1
- package/dist/hooks/query/use-conversation-history.js +3 -1
- package/dist/hooks/query/use-conversation-history.js.map +1 -1
- package/dist/hooks/query/use-conversation-metrics.cjs +1 -1
- package/dist/hooks/query/use-conversation-metrics.js +3 -3
- package/dist/hooks/query/use-latest-automation-runs.cjs +1 -0
- package/dist/hooks/query/use-latest-automation-runs.d.ts +2 -0
- package/dist/hooks/query/use-latest-automation-runs.js +4 -0
- package/dist/hooks/query/use-llm-profiles.d.ts +1 -1
- package/dist/hooks/query/use-paginated-conversations.cjs +1 -1
- package/dist/hooks/query/use-paginated-conversations.cjs.map +1 -1
- package/dist/hooks/query/use-paginated-conversations.js +19 -16
- package/dist/hooks/query/use-paginated-conversations.js.map +1 -1
- package/dist/hooks/query/use-provider-connections.cjs +2 -0
- package/dist/hooks/query/use-provider-connections.cjs.map +1 -0
- package/dist/hooks/query/use-provider-connections.d.ts +8 -0
- package/dist/hooks/query/use-provider-connections.js +19 -0
- package/dist/hooks/query/use-provider-connections.js.map +1 -0
- package/dist/hooks/query/use-repository-git-items.cjs +2 -0
- package/dist/hooks/query/use-repository-git-items.cjs.map +1 -0
- package/dist/hooks/query/use-repository-git-items.d.ts +3 -0
- package/dist/hooks/query/use-repository-git-items.js +33 -0
- package/dist/hooks/query/use-repository-git-items.js.map +1 -0
- 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-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/use-acp-credential-form.d.ts +6 -0
- package/dist/hooks/use-bash-command-runner.cjs +1 -1
- package/dist/hooks/use-bash-command-runner.cjs.map +1 -1
- package/dist/hooks/use-bash-command-runner.js +45 -42
- package/dist/hooks/use-bash-command-runner.js.map +1 -1
- package/dist/hooks/use-conversation-overview-column-space.cjs +2 -0
- package/dist/hooks/use-conversation-overview-column-space.cjs.map +1 -0
- package/dist/hooks/use-conversation-overview-column-space.d.ts +2 -0
- package/dist/hooks/use-conversation-overview-column-space.js +25 -0
- package/dist/hooks/use-conversation-overview-column-space.js.map +1 -0
- package/dist/hooks/use-conversation-overview-git-diff-stats.cjs +2 -0
- package/dist/hooks/use-conversation-overview-git-diff-stats.cjs.map +1 -0
- package/dist/hooks/use-conversation-overview-git-diff-stats.d.ts +7 -0
- package/dist/hooks/use-conversation-overview-git-diff-stats.js +37 -0
- package/dist/hooks/use-conversation-overview-git-diff-stats.js.map +1 -0
- package/dist/hooks/use-conversation-overview-panel-peek.cjs +2 -0
- package/dist/hooks/use-conversation-overview-panel-peek.cjs.map +1 -0
- package/dist/hooks/use-conversation-overview-panel-peek.d.ts +9 -0
- package/dist/hooks/use-conversation-overview-panel-peek.js +32 -0
- package/dist/hooks/use-conversation-overview-panel-peek.js.map +1 -0
- package/dist/hooks/use-conversation-overview-stats.cjs +2 -0
- package/dist/hooks/use-conversation-overview-stats.cjs.map +1 -0
- package/dist/hooks/use-conversation-overview-stats.d.ts +4 -0
- package/dist/hooks/use-conversation-overview-stats.js +15 -0
- package/dist/hooks/use-conversation-overview-stats.js.map +1 -0
- package/dist/hooks/use-conversation-primary-repository.cjs +2 -0
- package/dist/hooks/use-conversation-primary-repository.cjs.map +1 -0
- package/dist/hooks/use-conversation-primary-repository.d.ts +11 -0
- package/dist/hooks/use-conversation-primary-repository.js +17 -0
- package/dist/hooks/use-conversation-primary-repository.js.map +1 -0
- package/dist/hooks/use-drag-scroll.cjs +2 -0
- package/dist/hooks/use-drag-scroll.cjs.map +1 -0
- package/dist/hooks/use-drag-scroll.d.ts +12 -0
- package/dist/hooks/use-drag-scroll.js +41 -0
- package/dist/hooks/use-drag-scroll.js.map +1 -0
- package/dist/hooks/use-has-permission.cjs +2 -0
- package/dist/hooks/use-has-permission.cjs.map +1 -0
- package/dist/hooks/use-has-permission.js +8 -0
- package/dist/hooks/use-has-permission.js.map +1 -0
- package/dist/hooks/use-home-automation-actions.cjs +2 -0
- package/dist/hooks/use-home-automation-actions.cjs.map +1 -0
- package/dist/hooks/use-home-automation-actions.js +15 -0
- package/dist/hooks/use-home-automation-actions.js.map +1 -0
- package/dist/hooks/use-launch-skill-in-chat.cjs +2 -0
- package/dist/hooks/use-launch-skill-in-chat.cjs.map +1 -0
- package/dist/hooks/use-launch-skill-in-chat.js +16 -0
- package/dist/hooks/use-launch-skill-in-chat.js.map +1 -0
- package/dist/hooks/use-mcp-server-health.cjs +1 -1
- package/dist/hooks/use-mcp-server-health.js +3 -3
- 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-resizable-drawer-width.cjs +2 -0
- package/dist/hooks/use-resizable-drawer-width.cjs.map +1 -0
- package/dist/hooks/use-resizable-drawer-width.d.ts +22 -0
- package/dist/hooks/use-resizable-drawer-width.js +46 -0
- package/dist/hooks/use-resizable-drawer-width.js.map +1 -0
- package/dist/hooks/use-responder-url-secret.cjs +2 -0
- package/dist/hooks/use-responder-url-secret.cjs.map +1 -0
- package/dist/hooks/use-responder-url-secret.js +51 -0
- package/dist/hooks/use-responder-url-secret.js.map +1 -0
- package/dist/hooks/use-select-conversation-tab.cjs +1 -1
- package/dist/hooks/use-select-conversation-tab.cjs.map +1 -1
- package/dist/hooks/use-select-conversation-tab.d.ts +2 -0
- package/dist/hooks/use-select-conversation-tab.js +15 -7
- package/dist/hooks/use-select-conversation-tab.js.map +1 -1
- 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-tracking.cjs +1 -1
- package/dist/hooks/use-tracking.cjs.map +1 -1
- package/dist/hooks/use-tracking.d.ts +17 -0
- package/dist/hooks/use-tracking.js +10 -0
- package/dist/hooks/use-tracking.js.map +1 -1
- package/dist/hooks/use-websocket.cjs +1 -1
- package/dist/hooks/use-websocket.cjs.map +1 -1
- package/dist/hooks/use-websocket.d.ts +1 -2
- package/dist/hooks/use-websocket.js +58 -51
- package/dist/hooks/use-websocket.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 +153 -56
- 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 +2629 -980
- package/dist/i18n/translation.js.map +1 -1
- package/dist/icons/check-circle.cjs +2 -0
- package/dist/icons/check-circle.cjs.map +1 -0
- package/dist/icons/check-circle.js +20 -0
- package/dist/icons/check-circle.js.map +1 -0
- package/dist/icons/chevron-down.cjs +2 -0
- package/dist/icons/chevron-down.cjs.map +1 -0
- package/dist/icons/chevron-down.js +20 -0
- package/dist/icons/chevron-down.js.map +1 -0
- package/dist/icons/clock.cjs +2 -0
- package/dist/icons/clock.cjs.map +1 -0
- package/dist/icons/clock.js +20 -0
- package/dist/icons/clock.js.map +1 -0
- package/dist/icons/exclamation-circle.cjs +2 -0
- package/dist/icons/exclamation-circle.cjs.map +1 -0
- package/dist/icons/exclamation-circle.js +20 -0
- package/dist/icons/exclamation-circle.js.map +1 -0
- package/dist/icons/kebab-vertical.cjs +2 -0
- package/dist/icons/kebab-vertical.cjs.map +1 -0
- package/dist/icons/kebab-vertical.js +14 -0
- package/dist/icons/kebab-vertical.js.map +1 -0
- package/dist/icons/key.cjs +2 -0
- package/dist/icons/key.cjs.map +1 -0
- package/dist/icons/key.js +21 -0
- package/dist/icons/key.js.map +1 -0
- package/dist/icons/message-square-share.cjs +2 -0
- package/dist/icons/message-square-share.cjs.map +1 -0
- package/dist/icons/message-square-share.js +22 -0
- package/dist/icons/message-square-share.js.map +1 -0
- package/dist/icons/play.cjs +2 -0
- package/dist/icons/play.cjs.map +1 -0
- package/dist/icons/play.js +19 -0
- package/dist/icons/play.js.map +1 -0
- package/dist/icons/power.cjs +2 -0
- package/dist/icons/power.cjs.map +1 -0
- package/dist/icons/power.js +20 -0
- package/dist/icons/power.js.map +1 -0
- package/dist/icons/sparkle.cjs +2 -0
- package/dist/icons/sparkle.cjs.map +1 -0
- package/dist/icons/sparkle.js +20 -0
- package/dist/icons/sparkle.js.map +1 -0
- package/dist/icons/trash.cjs +2 -0
- package/dist/icons/trash.cjs.map +1 -0
- package/dist/icons/trash.js +20 -0
- package/dist/icons/trash.js.map +1 -0
- package/dist/icons/x-circle.cjs +2 -0
- package/dist/icons/x-circle.cjs.map +1 -0
- package/dist/icons/x-circle.js +20 -0
- package/dist/icons/x-circle.js.map +1 -0
- 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 +156 -59
- package/dist/locales/ca/openhands.json +156 -59
- package/dist/locales/de/openhands.json +156 -59
- package/dist/locales/en/openhands.json +156 -59
- package/dist/locales/es/openhands.json +156 -59
- package/dist/locales/fr/openhands.json +156 -59
- package/dist/locales/it/openhands.json +156 -59
- package/dist/locales/ja/openhands.json +156 -59
- package/dist/locales/ko-KR/openhands.json +156 -59
- package/dist/locales/no/openhands.json +156 -59
- package/dist/locales/pt/openhands.json +156 -59
- package/dist/locales/tr/openhands.json +156 -59
- package/dist/locales/uk/openhands.json +156 -59
- package/dist/locales/zh-CN/openhands.json +156 -59
- package/dist/locales/zh-TW/openhands.json +156 -59
- package/dist/manifests/automation-insights.cjs +2 -0
- package/dist/manifests/automation-insights.cjs.map +1 -0
- package/dist/manifests/automation-insights.d.ts +2 -0
- package/dist/manifests/automation-insights.js +9 -0
- package/dist/manifests/automation-insights.js.map +1 -0
- package/dist/manifests/automation-interface.cjs +1 -1
- package/dist/manifests/automation-interface.cjs.map +1 -1
- package/dist/manifests/automation-interface.d.ts +53 -31
- package/dist/manifests/automation-interface.js +56 -59
- 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 +37 -3
- package/dist/manifests/automation-setup.js +16 -2
- package/dist/manifests/automation-setup.js.map +1 -1
- package/dist/manifests/interface-validation.cjs +1 -1
- package/dist/manifests/interface-validation.cjs.map +1 -1
- package/dist/manifests/interface-validation.js +56 -52
- package/dist/manifests/interface-validation.js.map +1 -1
- package/dist/manifests/manifest-actions.d.ts +5 -0
- package/dist/manifests/manifest-bundle.d.ts +30 -0
- package/dist/manifests/manifest-local-validation.d.ts +10 -1
- package/dist/manifests/manifest-sources.cjs +1 -1
- package/dist/manifests/manifest-sources.cjs.map +1 -1
- package/dist/manifests/manifest-sources.js +3 -3
- package/dist/manifests/manifest-sources.js.map +1 -1
- package/dist/manifests/manifest-template.d.ts +14 -0
- package/dist/manifests/manifest-validation.cjs +1 -1
- package/dist/manifests/manifest-validation.cjs.map +1 -1
- package/dist/manifests/manifest-validation.js +78 -45
- package/dist/manifests/manifest-validation.js.map +1 -1
- package/dist/manifests/types.cjs +1 -1
- package/dist/manifests/types.cjs.map +1 -1
- package/dist/manifests/types.d.ts +64 -3
- package/dist/manifests/types.js +7 -6
- package/dist/manifests/types.js.map +1 -1
- package/dist/node_modules/@heroui/popover/dist/chunk-NW7HJLND.cjs +1 -1
- package/dist/node_modules/@heroui/popover/dist/chunk-NW7HJLND.js +10 -10
- package/dist/node_modules/@heroui/ripple/dist/chunk-UIQI3AYJ.cjs +1 -1
- package/dist/node_modules/@heroui/ripple/dist/chunk-UIQI3AYJ.js +8 -8
- package/dist/node_modules/@heroui/tooltip/dist/chunk-AUA5GDXN.cjs +1 -1
- package/dist/node_modules/@heroui/tooltip/dist/chunk-AUA5GDXN.js +9 -9
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs +4884 -0
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.js +11 -0
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs +13 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js +92 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs +12 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js +103 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs +9 -7
- 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 +37 -13
- 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 +2 -2
- 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 +34 -34
- 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/jira-issue-to-pr/manifest.cjs +3 -3
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-pr/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-pr/manifest.js +2 -2
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-pr/manifest.js.map +1 -1
- 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 +14 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js +77 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js.map +1 -0
- 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 -10
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/index.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/index.js +18 -13
- package/dist/node_modules/@openhands/extensions/automations/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 +6 -2
- 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 +40 -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/posthog.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js +36 -3
- package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sonarqube.cjs +2 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sonarqube.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sonarqube.js +75 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sonarqube.js.map +1 -0
- 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 +75 -71
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.cjs +1043 -49
- package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.js +78 -17
- 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/lucide-react/dist/esm/icons/activity.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/activity.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/activity.js +9 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/activity.js.map +1 -0
- 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/book-open.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/book-open.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/book-open.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/book-open.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/download.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/download.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/download.js +19 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/download.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/file-text.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/file-text.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/file-text.js +27 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/file-text.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/git-commit-horizontal.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/git-commit-horizontal.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/git-commit-horizontal.js +27 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/git-commit-horizontal.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/laptop.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/laptop.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/laptop.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/laptop.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/layout-dashboard.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/layout-dashboard.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/layout-dashboard.js +39 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/layout-dashboard.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/library.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/library.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/library.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/library.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/package.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/package.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/package.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/package.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/palette.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/palette.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/palette.js +39 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/palette.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/pen-line.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/pen-line.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/pen-line.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/pen-line.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shield-check.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shield-check.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shield-check.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shield-check.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sparkles.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sparkles.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sparkles.js +25 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sparkles.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/timer.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/timer.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/timer.js +27 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/timer.js.map +1 -0
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +3 -3
- package/dist/package.js.map +1 -1
- package/dist/routes/agent-settings.d.ts +10 -0
- package/dist/routes/app-settings.cjs +1 -1
- package/dist/routes/app-settings.cjs.map +1 -1
- package/dist/routes/app-settings.js +88 -86
- package/dist/routes/app-settings.js.map +1 -1
- package/dist/routes/commits-tab.cjs +1 -1
- package/dist/routes/commits-tab.cjs.map +1 -1
- package/dist/routes/commits-tab.js +27 -21
- package/dist/routes/commits-tab.js.map +1 -1
- package/dist/routes/conversation.cjs +1 -1
- package/dist/routes/conversation.cjs.map +1 -1
- package/dist/routes/conversation.js +56 -55
- package/dist/routes/conversation.js.map +1 -1
- package/dist/routes/files-tab.cjs +1 -1
- package/dist/routes/files-tab.cjs.map +1 -1
- package/dist/routes/files-tab.d.ts +4 -0
- package/dist/routes/files-tab.js +119 -149
- 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 +9 -1
- package/dist/routes/llm-settings.js +141 -103
- package/dist/routes/llm-settings.js.map +1 -1
- package/dist/routes/mcp.cjs +1 -1
- package/dist/routes/mcp.cjs.map +1 -1
- package/dist/routes/mcp.js +20 -20
- package/dist/routes/secrets-settings.cjs +1 -1
- package/dist/routes/secrets-settings.js +15 -15
- 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/stores/conversation-store.cjs +1 -1
- package/dist/stores/conversation-store.cjs.map +1 -1
- package/dist/stores/conversation-store.d.ts +8 -1
- package/dist/stores/conversation-store.js +9 -0
- package/dist/stores/conversation-store.js.map +1 -1
- package/dist/stores/files-tab-store.cjs +1 -1
- package/dist/stores/files-tab-store.cjs.map +1 -1
- package/dist/stores/files-tab-store.d.ts +13 -0
- package/dist/stores/files-tab-store.js +49 -5
- package/dist/stores/files-tab-store.js.map +1 -1
- package/dist/stores/use-event-store.cjs +1 -1
- package/dist/stores/use-event-store.cjs.map +1 -1
- package/dist/stores/use-event-store.js +11 -11
- package/dist/stores/use-event-store.js.map +1 -1
- package/dist/types/agent-server/core/events/message-event.d.ts +2 -2
- package/dist/types/automation.cjs +2 -0
- package/dist/types/automation.cjs.map +1 -0
- package/dist/types/automation.d.ts +20 -0
- package/dist/types/automation.js +8 -0
- package/dist/types/automation.js.map +1 -0
- 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/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/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 -0
- package/dist/utils/automation-catalog.js +20 -1
- package/dist/utils/automation-catalog.js.map +1 -1
- package/dist/utils/automation-schedule.cjs +2 -0
- package/dist/utils/automation-schedule.cjs.map +1 -0
- package/dist/utils/automation-schedule.js +8 -0
- package/dist/utils/automation-schedule.js.map +1 -0
- package/dist/utils/automation-stack-section.cjs +2 -0
- package/dist/utils/automation-stack-section.cjs.map +1 -0
- package/dist/utils/automation-stack-section.d.ts +2 -0
- package/dist/utils/automation-stack-section.js +6 -0
- package/dist/utils/automation-stack-section.js.map +1 -0
- 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.js +4 -0
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/conversation-local-storage.cjs +1 -1
- package/dist/utils/conversation-local-storage.cjs.map +1 -1
- package/dist/utils/conversation-local-storage.d.ts +17 -4
- package/dist/utils/conversation-local-storage.js +111 -63
- package/dist/utils/conversation-local-storage.js.map +1 -1
- package/dist/utils/conversation-metrics.cjs +1 -1
- package/dist/utils/conversation-metrics.cjs.map +1 -1
- package/dist/utils/conversation-metrics.d.ts +3 -2
- package/dist/utils/conversation-metrics.js +16 -14
- package/dist/utils/conversation-metrics.js.map +1 -1
- package/dist/utils/conversation-overview-project-scope.cjs +2 -0
- package/dist/utils/conversation-overview-project-scope.cjs.map +1 -0
- package/dist/utils/conversation-overview-project-scope.d.ts +16 -0
- package/dist/utils/conversation-overview-project-scope.js +22 -0
- package/dist/utils/conversation-overview-project-scope.js.map +1 -0
- package/dist/utils/extension-module-card-classes.cjs +1 -1
- package/dist/utils/extension-module-card-classes.cjs.map +1 -1
- package/dist/utils/extension-module-card-classes.d.ts +1 -1
- package/dist/utils/extension-module-card-classes.js +2 -2
- package/dist/utils/extension-module-card-classes.js.map +1 -1
- 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 +2 -0
- package/dist/utils/format-relative-time.cjs.map +1 -0
- package/dist/utils/format-relative-time.d.ts +7 -0
- package/dist/utils/format-relative-time.js +22 -0
- package/dist/utils/format-relative-time.js.map +1 -0
- package/dist/utils/git-diff-stats.cjs +5 -0
- package/dist/utils/git-diff-stats.cjs.map +1 -0
- package/dist/utils/git-diff-stats.d.ts +9 -0
- package/dist/utils/git-diff-stats.js +53 -0
- package/dist/utils/git-diff-stats.js.map +1 -0
- package/dist/utils/handle-event-for-ui.cjs +1 -1
- package/dist/utils/handle-event-for-ui.cjs.map +1 -1
- package/dist/utils/handle-event-for-ui.js +13 -11
- package/dist/utils/handle-event-for-ui.js.map +1 -1
- package/dist/utils/mcp-credential-validation.cjs +1 -1
- package/dist/utils/mcp-credential-validation.js +3 -3
- package/dist/utils/mcp-marketplace-utils.cjs +1 -1
- package/dist/utils/mcp-marketplace-utils.cjs.map +1 -1
- package/dist/utils/mcp-marketplace-utils.js +22 -9
- package/dist/utils/mcp-marketplace-utils.js.map +1 -1
- package/dist/utils/parse-git-remote-url.cjs +1 -1
- package/dist/utils/parse-git-remote-url.cjs.map +1 -1
- package/dist/utils/parse-git-remote-url.js +6 -7
- package/dist/utils/parse-git-remote-url.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/recommended-automation-rail.cjs +2 -0
- package/dist/utils/recommended-automation-rail.cjs.map +1 -0
- package/dist/utils/recommended-automation-rail.d.ts +22 -0
- package/dist/utils/recommended-automation-rail.js +44 -0
- package/dist/utils/recommended-automation-rail.js.map +1 -0
- package/dist/utils/responder-deployment.cjs +2 -0
- package/dist/utils/responder-deployment.cjs.map +1 -0
- package/dist/utils/responder-deployment.js +42 -0
- package/dist/utils/responder-deployment.js.map +1 -0
- package/dist/utils/scroll-fade-state.cjs +2 -0
- package/dist/utils/scroll-fade-state.cjs.map +1 -0
- package/dist/utils/scroll-fade-state.d.ts +6 -0
- package/dist/utils/scroll-fade-state.js +13 -0
- package/dist/utils/scroll-fade-state.js.map +1 -0
- package/dist/utils/skill-category.cjs +2 -0
- package/dist/utils/skill-category.cjs.map +1 -0
- package/dist/utils/skill-category.js +51 -0
- package/dist/utils/skill-category.js.map +1 -0
- 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/skill-scope.cjs +1 -1
- package/dist/utils/skill-scope.cjs.map +1 -1
- package/dist/utils/skill-scope.js +1 -1
- package/dist/utils/skill-scope.js.map +1 -1
- package/dist/utils/streaming-delta-batcher.cjs +2 -0
- package/dist/utils/streaming-delta-batcher.cjs.map +1 -0
- package/dist/utils/streaming-delta-batcher.d.ts +21 -0
- package/dist/utils/streaming-delta-batcher.js +31 -0
- package/dist/utils/streaming-delta-batcher.js.map +1 -0
- package/dist/utils/tar-gzip.d.ts +26 -0
- package/dist/utils/utils.cjs +1 -1
- package/dist/utils/utils.cjs.map +1 -1
- package/dist/utils/utils.d.ts +1 -41
- package/dist/utils/utils.js +27 -6
- 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/websocket-handshake.cjs +2 -0
- package/dist/utils/websocket-handshake.cjs.map +1 -0
- package/dist/utils/websocket-handshake.d.ts +11 -0
- package/dist/utils/websocket-handshake.js +12 -0
- package/dist/utils/websocket-handshake.js.map +1 -0
- package/dist/utils/workspace-mode.d.ts +4 -0
- package/package.json +3 -3
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/check-translation-completeness.cjs +5 -0
- package/scripts/dev-extra-backend.mjs +28 -9
- package/scripts/dev-safe.mjs +81 -8
- package/scripts/dev-static.mjs +48 -44
- package/scripts/dev-with-automation.mjs +95 -6
- package/scripts/ingress.mjs +27 -1
- package/scripts/seed-automation-ux-data.mjs +810 -0
- package/scripts/static-server.mjs +74 -1
- package/tools/canvas_ui_tool.py +19 -0
- package/build/assets/acp-providers-CYy8qA2z.js +0 -1
- package/build/assets/active-backend-context-BZDG15C0.js +0 -2
- package/build/assets/agent-context-settings-DGWBBbcp.js +0 -1
- package/build/assets/agent-profiles-settings-DrkGdf4_.js +0 -1
- package/build/assets/agent-server-conversation-service.api-DK56YPTs.js +0 -86
- package/build/assets/agent-settings-DfcSgkLD.js +0 -2
- package/build/assets/agent-settings-Lrc5-twS.js +0 -1
- package/build/assets/alert-banner-BgDHhL7b.js +0 -1
- package/build/assets/api-error-message-BEIE_yD1.js +0 -1
- package/build/assets/api-key-entry-screen-DaZnOlVo.js +0 -1
- package/build/assets/app-settings-BG5NAUbC.js +0 -1
- package/build/assets/automation-detail-D4Hs831Z.js +0 -3
- package/build/assets/automation-export-n0X6FB0C.js +0 -2
- package/build/assets/automation-git-sync-CDrm8WV7.js +0 -1
- package/build/assets/automation-setup-route-CZCl4ONs.js +0 -1
- package/build/assets/automation-templates-DFF96AdL.js +0 -1
- package/build/assets/automations-list-Bl-oGOrV.js +0 -1
- package/build/assets/back-nav-button-H_ThtDA0.js +0 -1
- package/build/assets/backend-form-modal-CbCemvHt.js +0 -1
- package/build/assets/backend-not-configured-DP8KLNq_.js +0 -1
- package/build/assets/backend-synced-settings-badge-BBASWqsb.js +0 -1
- package/build/assets/badge-B-51h-SW.js +0 -1
- package/build/assets/base-modal-BbjycA8X.js +0 -1
- package/build/assets/bot-CGPCg03p.js +0 -1
- package/build/assets/brand-button-Blxv5nww.js +0 -1
- package/build/assets/browser-CuW0nWvh.js +0 -7
- package/build/assets/browser-tab-D5G0ORwt.js +0 -1
- package/build/assets/chat-send-button-BD2tii1r.js +0 -1
- package/build/assets/check-DSuS-lyr.js +0 -1
- package/build/assets/chevron-down-CgGcmtE2.js +0 -1
- package/build/assets/circle-check-CG5-NPw7.js +0 -1
- package/build/assets/circle-plus-check-toggle-ASbpB8vN.js +0 -1
- package/build/assets/cloud-funnel-analytics-GlCUG0gk.js +0 -1
- package/build/assets/cog-CZiR80uT.js +0 -1
- package/build/assets/combobox-caret-DvpEsh2O.js +0 -1
- package/build/assets/command-menu-DwUQzjYP.js +0 -1
- package/build/assets/condenser-settings-BptcoiLA.js +0 -1
- package/build/assets/confirmation-modal-CiEwxZAA.js +0 -1
- package/build/assets/context-menu-list-item-CdcamfM1.js +0 -1
- package/build/assets/conversation-DREHj4nT.js +0 -1
- package/build/assets/conversation-DotRfiDz.js +0 -90
- package/build/assets/conversation-panel-DREHj4nT.js +0 -1
- package/build/assets/conversation-state-store-DMLtlHbE.js +0 -1
- package/build/assets/conversation-store-Blc5xysY.js +0 -6
- package/build/assets/conversation-tab-empty-state-D-puECpY.js +0 -1
- package/build/assets/copy-to-clipboard-button-BGxcUbgy.js +0 -1
- package/build/assets/device-verify-CZJfWaJf.js +0 -1
- package/build/assets/dropdown-classes-tLhpwtxS.js +0 -1
- package/build/assets/entry.client-D8GnI6GZ.js +0 -2
- package/build/assets/enum-filter-dropdown-Fk8k60nk.js +0 -1
- package/build/assets/environment-switch-overlay-DeztVYuL.js +0 -1
- package/build/assets/extension-module-card-classes-Bo43vY5V.js +0 -1
- package/build/assets/extensions-hub-Cd6GCYzq.js +0 -1
- package/build/assets/extensions-navigation-C4sgZg-y.js +0 -1
- package/build/assets/external-link-C0UpBgsE.js +0 -1
- package/build/assets/file-text-C6WYtNdV.js +0 -1
- package/build/assets/files-tab-BW_qzyAm.js +0 -1
- package/build/assets/form-control-classes-CGXBLcn1.js +0 -1
- package/build/assets/format-model-name-BNPKVsIq.js +0 -1
- package/build/assets/format-relative-time-ZhQD4rsl.js +0 -1
- package/build/assets/git-provider-icon-CaQ1yLPi.js +0 -1
- package/build/assets/git-repo-dropdown-CgXR6M_E.js +0 -1
- package/build/assets/git-repo-dropdown-D2Uei3CO.js +0 -1
- package/build/assets/highlighted-source-view-C_YOp8Fo.js +0 -1
- package/build/assets/home-DNzzJcMP.js +0 -1
- package/build/assets/home-aCos-5vc.js +0 -1
- package/build/assets/home-store-DgzViC3f.js +0 -1
- package/build/assets/index-home-DNzzJcMP.js +0 -1
- package/build/assets/info-CLoC1LRo.js +0 -1
- package/build/assets/install-server-modal-D7zIqNKz.js +0 -1
- package/build/assets/kebab-menu-item-content-DERMdnDv.js +0 -1
- package/build/assets/launch-5PjKeLak.js +0 -1
- package/build/assets/list-todo-BF049YaY.js +0 -1
- package/build/assets/llm-not-configured-banner-BK9z5eS0.js +0 -27
- package/build/assets/llm-settings-BLAMK2tR.js +0 -1
- package/build/assets/llm-settings-BWsbarGM.js +0 -1
- package/build/assets/llm-subscription-service-SfnEV9Uc.js +0 -1
- package/build/assets/loader-circle-D7IagAyF.js +0 -1
- package/build/assets/loading-spinner-DBgXgra0.js +0 -1
- package/build/assets/manage-backends-modal-BTqNPhzc.js +0 -1
- package/build/assets/manifest-abebca3c.js +0 -1
- package/build/assets/manifest-subpage-layout-Rn-glaxV.js +0 -1
- package/build/assets/map-provider-BK4HnqYz.js +0 -1
- package/build/assets/markdown-renderer-Cp6DlHQN.js +0 -8
- package/build/assets/mcp-BC-Ixn4T.js +0 -9
- package/build/assets/mcp-marketplace-utils-BJWJgbB6.js +0 -1
- package/build/assets/messages-CzFKrzPG.js +0 -40
- package/build/assets/modal-body-BdKfD3Hl.js +0 -1
- package/build/assets/modal-classes-D5_b5vMi.js +0 -1
- package/build/assets/modal-close-button-objukxk_.js +0 -1
- package/build/assets/mouse-pointer-click-C_gXyLyD.js +0 -1
- package/build/assets/npm-CHVHV1MC.js +0 -1
- package/build/assets/onboarding-Diw0V51A.js +0 -1
- package/build/assets/onboarding-modal-Da4yHzsA.js +0 -1
- package/build/assets/organization-service.api-BztSy69u.js +0 -1
- package/build/assets/parse-git-remote-url-BkXN9jzl.js +0 -1
- package/build/assets/pencil-49avMHlD.js +0 -1
- package/build/assets/planner-tab-CJiSpNax.js +0 -1
- package/build/assets/plugins-management-service-lHdNKWNU.js +0 -1
- package/build/assets/plus-C0BagBpV.js +0 -1
- package/build/assets/profiles-service.api-BLr7FXec.js +0 -1
- package/build/assets/providers-CWXnb7S3.js +0 -1
- package/build/assets/proxy-DYDXxtje.js +0 -1
- package/build/assets/puzzle-Bt2B1rzf.js +0 -1
- package/build/assets/recommended-automations-launcher-CcFMfJRR.js +0 -1
- package/build/assets/refresh-cw-nmcesifB.js +0 -1
- package/build/assets/root-CT4t7apy.css +0 -1
- package/build/assets/root-DnRgLKpU.js +0 -2
- package/build/assets/root-layout-2L9tr-BN.js +0 -2
- package/build/assets/schema-field-C59lVZTA.js +0 -1
- package/build/assets/sdk-section-page-BbBEQQjq.js +0 -1
- package/build/assets/search-CYSDBczG.js +0 -1
- package/build/assets/secrets-service-BtsgYSlj.js +0 -1
- package/build/assets/secrets-settings-DJ0OKa4_.js +0 -1
- package/build/assets/segmented-toggle-DiVfTZuN.js +0 -1
- package/build/assets/settings-CDqL_Uqh.js +0 -1
- package/build/assets/settings-DcNPxz0v.js +0 -1
- package/build/assets/settings-dropdown-input-Ba1UN5Du.js +0 -1
- package/build/assets/settings-index-Cz2cKt2K.js +0 -1
- package/build/assets/settings-input-CWUEHHvS.js +0 -1
- package/build/assets/settings-list-classes-DdcLXDGn.js +0 -1
- package/build/assets/settings-modal-nEEK1Kh1.js +0 -1
- package/build/assets/settings-service.api-3yAUFcaP.js +0 -1
- package/build/assets/settings-switch-Dk9hChx1.js +0 -1
- package/build/assets/settings-utils-CxjtCSB3.js +0 -1
- package/build/assets/shared-conversation-DbAcrx3s.js +0 -1
- package/build/assets/shield-check-CiOTXxV2.js +0 -1
- package/build/assets/sidebar-layout-lrfPooIB.js +0 -1
- package/build/assets/sidebar-mobile-menu-toggle-KERXfNu1.js +0 -1
- package/build/assets/sidebar-nav-link-B8lFD6Cb.js +0 -1
- package/build/assets/sidebar-store-u6pUpxJ7.js +0 -1
- package/build/assets/skill-card-pill-row-dGIUzr_b.js +0 -1
- package/build/assets/skill-icon-badge-kkOWZ89w.js +0 -1
- package/build/assets/skill-scope-DWN1PBPH.js +0 -1
- package/build/assets/skills-plugins-DFjH2Nq6.js +0 -1
- package/build/assets/skills-settings-DIHpl3ol.js +0 -2
- package/build/assets/sparkles-ntyMLnbj.js +0 -1
- package/build/assets/styled-tooltip-B6JXcsmL.js +0 -1
- package/build/assets/task-list-tab-aEJzEcHD.js +0 -1
- package/build/assets/terminal-Dch7Ty5K.js +0 -3
- package/build/assets/toggle-switch-B2MLKsgt.js +0 -1
- package/build/assets/trash-2-yZnDM4Ji.js +0 -1
- package/build/assets/typography-DB5HoCk0.js +0 -1
- package/build/assets/usage-tab-DrEtBmBT.js +0 -1
- package/build/assets/use-acp-credential-form-c8KXAa8A.js +0 -1
- package/build/assets/use-activate-agent-profile-B0p34N3q.js +0 -1
- package/build/assets/use-agent-profiles-CPIc6wLH.js +0 -1
- package/build/assets/use-can-manage-org-profiles-Dz_8Eqkv.js +0 -1
- package/build/assets/use-cloud-current-user-id-DvUVqCle.js +0 -1
- package/build/assets/use-config-C3PO4TBw.js +0 -1
- package/build/assets/use-create-conversation-DVrA_uLD.js +0 -1
- package/build/assets/use-create-secret-DbBIpaCR.js +0 -1
- package/build/assets/use-get-secrets-6PBitf54.js +0 -1
- package/build/assets/use-has-permission-CQ31Cl8j.js +0 -1
- package/build/assets/use-is-authed-2UrDIziV.js +0 -1
- package/build/assets/use-is-creating-conversation-BvYpmb3v.js +0 -1
- package/build/assets/use-launch-skill-in-chat-COnDpxCQ.js +0 -1
- package/build/assets/use-llm-profiles-diZS4FiN.js +0 -1
- package/build/assets/use-manifest-capabilities-HIWCtIUm.js +0 -1
- package/build/assets/use-onboarding-completion-Bs8PcXik.js +0 -1
- package/build/assets/use-plugins-marketplace-BCuNLFsr.js +0 -1
- package/build/assets/use-save-agent-profile-BaMNSpBV.js +0 -1
- package/build/assets/use-save-settings-BahvC2Gw.js +0 -1
- package/build/assets/use-settings-C6ZxpBDX.js +0 -1
- package/build/assets/use-settings-nav-items-Bqn69Ggw.js +0 -16
- package/build/assets/use-tracking-Bhu7gk2y.js +0 -3
- package/build/assets/use-user-conversation-BkNXpXrd.js +0 -1
- package/build/assets/useInfiniteQuery-c_OmS3lK.js +0 -1
- package/build/assets/useMutation-6ZsQCqAn.js +0 -1
- package/build/assets/useQueries-xDrGlTO_.js +0 -1
- package/build/assets/useQuery-Bs5NFz2s.js +0 -1
- package/build/assets/utils-DUD5ScdA.js +0 -1
- package/build/assets/vendor~browser-B-fae1JU.js +0 -47
- package/build/assets/vendor~entry.client-BFE7Llz9.js +0 -1
- package/build/assets/vendor~entry.client-BaKt_PIp.js +0 -9
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js +0 -186
- package/build/assets/vendor~files-tab-B6POTS66.js +0 -11
- package/build/assets/vendor~index-home~home~conversation-panel~conversation-53Q_U6uP.js +0 -13
- package/build/assets/vendor~index-home~home~conversation-panel~conversation~alert-banner-B3qC_oj8.js +0 -1
- package/build/assets/vendor~root-layout-DeQACFVA.js +0 -1
- package/build/assets/vendor~root-layout~conversation-panel~conversation-bv7ooVgH.js +0 -1
- package/build/assets/vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-e8pX05xf.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-BvS6PCK2.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~mcp~automations-list~automation-templates~automation-set~bxsimjx0-D7IDevqN.js +0 -1
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-DOPLJMH9.js +0 -48
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js +0 -1
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-BOVIFA_g.js +0 -73
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-C0JXQb_q.js +0 -7465
- package/build/assets/verification-settings-COueVXmM.js +0 -1
- package/build/assets/wrench-C95ujnYo.js +0 -1
- package/build/assets/x-86ZCfxKY.js +0 -1
- package/build/assets/zap-DRa-r-Tf.js +0 -1
- package/dist/components/features/diff-viewer/empty-changes-message.cjs +0 -2
- package/dist/components/features/diff-viewer/empty-changes-message.cjs.map +0 -1
- package/dist/components/features/diff-viewer/empty-changes-message.js +0 -17
- package/dist/components/features/diff-viewer/empty-changes-message.js.map +0 -1
- package/dist/components/features/tips/random-tip.cjs +0 -2
- package/dist/components/features/tips/random-tip.cjs.map +0 -1
- package/dist/components/features/tips/random-tip.d.ts +0 -2
- package/dist/components/features/tips/random-tip.js +0 -41
- package/dist/components/features/tips/random-tip.js.map +0 -1
- package/dist/hooks/query/use-has-git-commits.cjs +0 -2
- package/dist/hooks/query/use-has-git-commits.cjs.map +0 -1
- package/dist/hooks/query/use-has-git-commits.d.ts +0 -25
- package/dist/hooks/query/use-has-git-commits.js +0 -31
- package/dist/hooks/query/use-has-git-commits.js.map +0 -1
- package/dist/hooks/use-has-attached-source.cjs +0 -2
- package/dist/hooks/use-has-attached-source.cjs.map +0 -1
- package/dist/hooks/use-has-attached-source.d.ts +0 -18
- package/dist/hooks/use-has-attached-source.js +0 -14
- package/dist/hooks/use-has-attached-source.js.map +0 -1
- package/dist/icons/chveron-up.cjs +0 -2
- package/dist/icons/chveron-up.cjs.map +0 -1
- package/dist/icons/chveron-up.js +0 -21
- package/dist/icons/chveron-up.js.map +0 -1
- package/dist/routes/changes-tab.cjs +0 -2
- package/dist/routes/changes-tab.cjs.map +0 -1
- package/dist/routes/changes-tab.d.ts +0 -3
- package/dist/routes/changes-tab.js +0 -64
- package/dist/routes/changes-tab.js.map +0 -1
- package/dist/utils/file-priority.cjs +0 -2
- package/dist/utils/file-priority.cjs.map +0 -1
- package/dist/utils/file-priority.d.ts +0 -27
- package/dist/utils/file-priority.js +0 -61
- package/dist/utils/file-priority.js.map +0 -1
- package/dist/utils/table-row-classes.d.ts +0 -9
- package/dist/utils/tips.cjs +0 -2
- package/dist/utils/tips.cjs.map +0 -1
- package/dist/utils/tips.d.ts +0 -7
- package/dist/utils/tips.js +0 -45
- package/dist/utils/tips.js.map +0 -1
- 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~dcc51rps-rfV8mQ9m.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-rfV8mQ9m.js} +0 -0
- /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
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,bt as n,yt as r}from"./vendor-styling-Ck5D_A2Q.js";import{n as i}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-rfV8mQ9m.js";import{t as a}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iyia17eu-Chf7vmKB.js";import{t as o}from"./useInfiniteQuery-C926xzY4.js";import{t as s}from"./useMutation-B-qc391N.js";import{t as c}from"./useQuery-BSTgq1rl.js";import{a as l}from"./recommended-automations-launcher-6ABrI9Cy.js";import{Ft as u,Gt as d,It as f,Jt as p,M as m,N as h,O as g,Xt as _,k as v,n as y,wt as b,z as x,zt as S}from"./active-backend-context-CrHTlgvN.js";import{L as C,N as w,P as T,S as E,W as D,_ as O,b as k,c as A,d as j,f as ee,g as M,i as te,k as N,n as ne,o as re,s as ie,t as P,v as ae,w as oe,y as F,z as se}from"./utils-CN5ZfZy1.js";import{t as ce}from"./chat-send-button-MUQqCZCS.js";import{t as I}from"./check-CS0vmpQQ.js";import{t as le}from"./chevron-down-e1QBpjVy.js";import{t as L}from"./chevron-right-ZG4R5G4Q.js";import{t as ue}from"./circle-check-DzWLNsbE.js";import{a as de,i as fe,n as R,r as pe,t as me}from"./vendor~index-home~home~conversation-panel~conversation-hWywRBaR.js";import{i as he,r as ge}from"./vendor~root-layout~index-home~home~conversation-panel~conversation-j5MFqfSy.js";import{t as _e}from"./cloud-funnel-analytics-CztBCCPp.js";import{t as z}from"./loader-circle-CC1au6hc.js";import{t as ve}from"./plus-C7Slq-0I.js";import{t as ye}from"./refresh-cw-3q3Frrii.js";import{n as B,t as V}from"./context-menu-list-item-I86vKcmM.js";import{t as be}from"./loading-spinner-BY9N3pOe.js";import{t as xe}from"./settings-service.api-DJ1r62Zr.js";import{n as H}from"./use-settings-DSXLbvBl.js";import{t as Se}from"./modal-backdrop-BSzNhM4r.js";import{n as U}from"./modal-body-BxZjsju9.js";import{r as Ce}from"./base-modal-D_L0oEbG.js";import{_ as we,n as Te,s as Ee,t as De}from"./form-control-classes-Bkh5FGrD.js";import{t as Oe}from"./brand-button-BAfk4wGP.js";import{n as ke}from"./navigation-context-CQZwH_tC.js";import{t as Ae}from"./navigation-link-Bxo3-4vo.js";import{t as je}from"./vendor~root-layout~index-home~home~conversation-panel~conversation~automation-setup-route-CjECvSl5.js";import{t as Me}from"./styled-tooltip-C4jf5Fv9.js";import{c as Ne,i as Pe,r as Fe,u as Ie}from"./dropdown-classes-Bc1djN0-.js";import{r as Le}from"./settings-dropdown-input-BcwylHs2.js";import{t as Re}from"./dist-Bl64nBZL.js";import{a as ze,c as Be,d as Ve,f as He,i as Ue,l as We,m as Ge,n as Ke,o as qe,p as Je,r as Ye,t as Xe,u as Ze}from"./use-llm-configured-BV9nZ1_j.js";import{_ as Qe,c as $e,i as et,o as tt,r as nt,t as W}from"./conversation-store-Ca3ghXap.js";import{t as rt}from"./modal-close-button-DDzdRvCs.js";import{C as it,T as at,m as ot,t as G,w as st}from"./agent-server-conversation-service.api-tnqNjbpE.js";import{t as ct}from"./profiles-service.api-ChoKrL0l.js";import{f as lt,o as ut,s as dt,u as ft}from"./acp-providers-CX3Lh9gj.js";import{c as pt,d as mt,l as ht,m as gt,o as _t,p as vt}from"./conversation-state-store-B0ImPLHO.js";import{t as yt}from"./use-click-outside-element-W6Os4Nlb.js";import{t as bt}from"./use-llm-profiles-BO-P4Oyo.js";import{n as xt,t as St}from"./use-agent-profiles-Bd9Bvvp1.js";import{a as Ct,i as wt,n as Tt,o as Et,r as Dt,t as Ot}from"./use-create-conversation-Dx3l7mFZ.js";import{a as kt,r as At,t as jt}from"./use-can-manage-org-profiles-CrJP5262.js";import{t as Mt}from"./skills-B0IliMxw.js";import{r as Nt}from"./format-model-name-CasAP3nd.js";import{c as Pt}from"./vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-DXqM7vqB.js";import{a as Ft,n as It,s as Lt}from"./home-store-CY9Ej0ux.js";import{t as Rt}from"./checkmark-XZyokq_Y.js";import{n as zt,r as K}from"./typography-v1KN0tzi.js";import{n as Bt,t as Vt}from"./use-activate-agent-profile-BLfmvDiG.js";import{$ as Ht,C as Ut,I as Wt,K as Gt,Q as q,T as Kt,Z as qt,_ as Jt,a as Yt,c as Xt,d as Zt,et as J,h as Qt,l as $t,o as en,t as tn}from"./markdown-renderer-BzTlxI8x.js";import{i as nn,o as rn,r as an,t as on}from"./skill-scope-B42H-XOc.js";import{t as sn}from"./syntax-highlighter-BGDg_7w9.js";import{n as cn,t as ln}from"./link-external-BNZzCM1I.js";import{t as un}from"./merge-agent-profile-save-input-WcFmQVKK.js";import{t as dn}from"./settings-gear-DaJj6Pde.js";import{t as fn}from"./u-robot-BvAOA2ZD.js";import{a as pn,i as mn,n as hn,o as gn,r as _n,s as vn}from"./git-repo-dropdown-4ROKl2cB.js";var Y=e(t(),1),yn={"image/png":`png`,"image/jpeg":`jpg`,"image/jpg":`jpg`,"image/gif":`gif`,"image/webp":`webp`,"image/bmp":`bmp`};function bn(e){if(e.name.trim())return e;let t=yn[e.type]??(e.type.startsWith(`image/`)?`png`:`bin`);return new File([e],`pasted-image-${Date.now()}.${t}`,{type:e.type,lastModified:e.lastModified})}function xn(e,t){let n=new Set(t),r=[],i=[];for(let t of e)n.has(t.name)?i.push(t):r.push(t);return{imagesToEmbed:r,imagesAsFiles:i}}function Sn(e){let t=Array.from(e.files);if(t.length>0)return t.map(bn);let n=[];for(let t=0;t<e.items.length;t+=1){let r=e.items[t];if(r.kind!==`file`)continue;let i=r.getAsFile();i&&n.push(bn(i))}return n}var Cn=e=>e?(e.innerText||e.textContent||``).trim()===``:!0,wn=e=>{e&&Cn(e)&&(e.innerHTML=``,e.textContent=``)},X=e=>e?.innerText||``,Tn=e=>{e&&(e.textContent=``)},En=e=>{e&&(e.value=``)},Dn=e=>{if(!e)return;let t=window.getSelection();if(!t||t.rangeCount===0)return;let n=t.getRangeAt(0);if(!n.getBoundingClientRect||!e.getBoundingClientRect)return;let r=n.getBoundingClientRect(),i=e.getBoundingClientRect();r.bottom>i.bottom&&(e.scrollTop=e.scrollHeight-e.clientHeight)},On=e=>{if(!e)return;e.focus();let t=window.getSelection();if(!t)return;let n=document.createRange();n.selectNodeContents(e),n.collapse(!1),t.removeAllRanges(),t.addRange(n),Dn(e)},kn=e=>e.startsWith(`task-`),An=500,jn=`oh:home-prompt-draft`,Mn=(e,t)=>{let{state:n,setDraftMessage:r}=$e(e??``),i=(0,Y.useRef)(null),a=(0,Y.useRef)(!1),[o,s]=(0,Y.useState)(!1),c=(0,Y.useRef)(e),l=(0,Y.useRef)(!0),u=(0,Y.useRef)(``);(0,Y.useEffect)(()=>{if(!e)return;let n=c.current,r=l.current;c.current=e,l.current=!1,i.current&&=(clearTimeout(i.current),null);let o=t.current;if(!r&&n&&n!==e){let t=kn(n),r=!kn(e);if(t&&r&&o){let t=X(o).trim();if(t){tt(e,{draftMessage:t}),a.current=!0,s(!0);return}}}o&&(o.textContent=``),a.current=!1,s(!1)},[e,t]),(0,Y.useEffect)(()=>{if(a.current)return;let n=t.current;if(!n)return;if(!e){try{let e=sessionStorage.getItem(jn);if(e&&X(n).trim()===``){n.textContent=e;let t=window.getSelection(),r=document.createRange();r.selectNodeContents(n),r.collapse(!1),t?.removeAllRanges(),t?.addRange(r),u.current=e}}catch{}a.current=!0,s(!0);return}let{draftMessage:r}=et(e);r&&X(n).trim()===``&&(n.textContent=r,On(n)),a.current=!0,s(!0)},[t,e]);let d=(0,Y.useCallback)(()=>{if(i.current&&clearTimeout(i.current),!e){let e=t.current;if(e){let t=X(e).trim();u.current=t;try{t?sessionStorage.setItem(jn,t):sessionStorage.removeItem(jn)}catch{}}return}let a=e;i.current=setTimeout(()=>{if(a!==c.current)return;let e=t.current;if(!e)return;let i=X(e).trim();i!==(n.draftMessage||``)&&r(i||null)},An)},[t,n.draftMessage,r,e]),f=(0,Y.useCallback)(()=>{if(i.current&&=(clearTimeout(i.current),null),!e){try{sessionStorage.removeItem(jn)}catch{}return}r(null)},[e,r]);return(0,Y.useEffect)(()=>()=>{if(i.current&&clearTimeout(i.current),!c.current){let e=u.current;try{e?sessionStorage.getItem(`oh:home-prompt-draft`)!==null&&sessionStorage.setItem(jn,e):sessionStorage.removeItem(jn)}catch{}}},[]),{saveDraft:d,clearDraft:f,isRestored:o,hasDraft:!!n.draftMessage}},Nn=()=>{let e=(0,Y.useRef)(null),{conversationId:t}=J(),{messageToSend:n,messageRestoreIfEmpty:r,hasRightPanelToggled:i,setMessageToSend:a,clearMessageRestoreIfEmpty:o,setIsRightPanelShown:s}=W(),{saveDraft:c,clearDraft:l}=Mn(t,e),u=t?n:null;return(0,Y.useEffect)(()=>{!t||!r||(X(e.current).trim().length===0&&a(r.text),o())},[t,r,a,o]),(0,Y.useEffect)(()=>{t&&e.current&&(a(X(e.current)),s(i))},[t,i,a,s]),{chatInputRef:e,messageToSend:u,checkIsContentEmpty:(0,Y.useCallback)(()=>Cn(e.current),[]),clearEmptyContentHandler:(0,Y.useCallback)(()=>{wn(e.current)},[]),getCurrentMessage:(0,Y.useCallback)(()=>X(e.current),[]),saveDraft:c,clearDraft:l}},Pn=e=>{let t=(0,Y.useRef)(null),n=(0,Y.useRef)(null),[r,i]=(0,Y.useState)(!1),a=(0,Y.useCallback)((t,n)=>{e&&t.length>0&&e(t,n)},[e]);return(0,Y.useEffect)(()=>{let e=e=>{let t=e.detail.files;t&&t.length>0&&a(t,{fromPaste:!0})};return document.addEventListener(`pasteFiles`,e),()=>{document.removeEventListener(`pasteFiles`,e)}},[a]),{fileInputRef:t,chatContainerRef:n,isDragOver:r,handleFileIconClick:(0,Y.useCallback)(e=>{!e&&t.current&&t.current.click()},[]),handleFileInputChange:(0,Y.useCallback)(e=>{a(Array.from(e.target.files||[]))},[a]),handleDragOver:(0,Y.useCallback)((e,t)=>{t||(e.preventDefault(),i(!0))},[]),handleDragLeave:(0,Y.useCallback)((e,t)=>{t||n.current?.contains(e.relatedTarget)||(e.preventDefault(),i(!1))},[]),handleDrop:(0,Y.useCallback)((e,t)=>{t||(e.preventDefault(),i(!1),a(Array.from(e.dataTransfer.files)))},[a])}},Fn=2,In=120,Ln=()=>{let e=document.getElementById(`resize-grip`)?.parentElement??null;return e?e.getBoundingClientRect().bottom>=window.innerHeight-In:!0},Rn=({elementRef:e,minHeight:t,maxHeight:n,onGripDragStart:r,onGripDragEnd:i,onHeightChange:a,onReachedMinHeight:o})=>{let s=e=>`touches`in e&&e.touches.length>0?e.touches[0].clientY:e.clientY,c=(e,t)=>{let n=document.getElementById(`resize-grip`);n&&(n.addEventListener(`touchmove`,e,{passive:!1,capture:!0}),n.addEventListener(`touchend`,t,{capture:!0}))},l=(e,t)=>{document.addEventListener(`mousemove`,e),document.addEventListener(`mouseup`,t)},u=u=>{let d=O(),f=e.current?.offsetHeight||t,p=!1,m=i=>{if(i.preventDefault(),!p){let e=s(i);if(Math.abs(e-u)<Fn)return;p=!0,r?.()}let c=s(i)-u,l=Math.max(t,Math.min(n,f-c)),d=e.current;if(!d)return;d.style.height=`${l}px`;let m=d.scrollHeight>l||l>=n;d.style.overflowY=m?`auto`:`hidden`,a&&a(l),o&&Math.abs(l-t)<=1.5&&o()},h=()=>{if(p&&i?.(),d){let e=document.getElementById(`resize-grip`);if(!e)return;e.removeEventListener(`mousemove`,m),e.removeEventListener(`mouseup`,h),e.removeEventListener(`touchmove`,m),e.removeEventListener(`touchend`,h)}else document.removeEventListener(`mousemove`,m),document.removeEventListener(`mouseup`,h),document.removeEventListener(`touchmove`,m),document.removeEventListener(`touchend`,h)};d?c(m,h):l(m,h)};return{handleGripMouseDown:e=>{e.preventDefault(),Ln()&&u(e.clientY)},handleGripTouchStart:e=>{e.preventDefault(),Ln()&&u(e.touches[0].clientY)}}},zn=20,Bn=120,Vn=20,Hn=50,Un=()=>({hasUserResizedRef:(0,Y.useRef)(!1),manualHeightRef:(0,Y.useRef)(null)}),Wn=(e,t,n)=>{let{minHeight:r,maxHeight:i}=n,a=Math.max(r,Math.min(t,i));return e.style.setProperty(`height`,`${a}px`),e.style.setProperty(`overflow-y`,a>=i?`auto`:`hidden`),a},Gn=(e,t,n=Hn)=>e>t+n,Kn=(e,t)=>{let n=M(e,t),r=n;e.style.setProperty(`height`,`auto`);let i=e.scrollHeight;return k(e,n),{currentHeight:r,currentStyleHeight:n,contentHeight:i}},qn=(e,t)=>{let{finalHeight:n,overflowY:r}=t,i=e;i.style.height=`${n}px`,i.style.overflowY=r},Jn=(e,t)=>{t&&t(e)},Yn=(e,t={})=>{let n=(0,Y.useRef)(null),{minHeight:r=zn,maxHeight:i=Bn,enableManualResize:a=!1,value:o,onValueApplied:s,onGripDragStart:c,onGripDragEnd:l,onHeightChange:u}=t,d={minHeight:r,maxHeight:i},{hasUserResizedRef:f,manualHeightRef:p}=Un(),m=()=>{f.current=!1,p.current=null},h=(0,Y.useCallback)(e=>{u?.(e),f.current&&(p.current=e)},[u]),g=(0,Y.useCallback)(()=>{f.current=!0,c?.()},[c]),_=(0,Y.useCallback)(()=>{let t=e.current;if(t){let e=M(t,r);Math.abs(e-r)<=1.5&&(f.current=!1,p.current=null)}l?.()},[r,l]),{handleGripMouseDown:v,handleGripTouchStart:y}=Rn({elementRef:e,minHeight:r,maxHeight:i,onGripDragStart:a?g:void 0,onGripDragEnd:a?_:void 0,onHeightChange:h}),b=(0,Y.useCallback)((e,t,n)=>{if(f.current&&t>r){qn(e,{finalHeight:t,overflowY:`hidden`}),Jn(t,u);return}let i=Math.max(n,r);qn(e,{finalHeight:i,overflowY:`hidden`}),Jn(i,u)},[r,u]),x=(0,Y.useCallback)((e,t,n)=>{if(!Gn(t,n)){let t=Math.max(n,r);qn(e,{finalHeight:t,overflowY:`hidden`}),Jn(t,u);return}qn(e,{finalHeight:t,overflowY:`auto`}),Jn(t,u)},[r,u]),S=(0,Y.useCallback)(e=>{qn(e,{finalHeight:i,overflowY:`auto`}),Jn(i,u)},[i,u]),C=(0,Y.useCallback)(()=>{let t=e.current;if(!t)return;if((t.textContent??``).trim().length===0&&f.current&&p.current&&p.current>r+1.5){k(t,p.current),t.style.overflowY=`hidden`,Jn(p.current,u);return}let{currentHeight:n,contentHeight:a}=Kn(t,r);if(a<=n){b(t,n,a);return}if(a<=i){x(t,n,a);return}S(t)},[e,r,i,u,b,x,S]),w=(0,Y.useCallback)(()=>{n.current&&cancelAnimationFrame(n.current),n.current=requestAnimationFrame(()=>{n.current=null,C()})},[C]);return(0,Y.useEffect)(()=>{if(o===void 0)return;let t=0,n=()=>{let t=e.current;return t?(t.textContent=o.text,w(),On(t),s?.(),!0):!1};return n()||(t=requestAnimationFrame(()=>{n()})),()=>{t&&cancelAnimationFrame(t)}},[o,w,s]),(0,Y.useEffect)(()=>{w()},[w]),{smartResize:w,handleGripMouseDown:v,handleGripTouchStart:y,increaseHeightForEmptyContent:()=>{let t=e.current;if(!t)return;let n=M(t,r),a=Math.min(n+Vn,i);if(a>n){let e=Wn(t,a,d);Jn(e,u),f.current=!0,p.current=e}},resetManualResize:m}},Xn=(e,t)=>{let[n,r]=(0,Y.useState)(!1),[i,a]=(0,Y.useState)(!1),[o,s]=(0,Y.useState)(!0),{setShouldHideSuggestions:c,clearMessageToSend:l}=W(),u=(0,Y.useRef)(null),d=(0,Y.useRef)(!1);(0,Y.useEffect)(()=>{let e=()=>s(Ln());return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let f=(0,Y.useCallback)(()=>{a(!0)},[]),p=(0,Y.useCallback)(()=>{a(!1),d.current=!0},[]),m=(0,Y.useCallback)(e=>{if(o){if(d.current){d.current=!1,e.preventDefault(),e.stopPropagation();return}e.stopPropagation(),r(e=>!e)}},[o]),{smartResize:h,handleGripMouseDown:g,handleGripTouchStart:_,increaseHeightForEmptyContent:v,resetManualResize:y}=Yn(e,{minHeight:20,maxHeight:400,onHeightChange:(0,Y.useCallback)(e=>{c(e>T.HEIGHT_THRESHOLD)},[c]),onGripDragStart:f,onGripDragEnd:p,value:t??void 0,onValueApplied:l,enableManualResize:!0});return{gripRef:u,isGripVisible:n,isGripDragging:i,canResize:o,handleTopEdgeClick:m,smartResize:h,handleGripMouseDown:g,handleGripTouchStart:_,increaseHeightForEmptyContent:v,resetManualResize:y}},Zn=(e,t,n,r,i,a,o)=>({handleInput:(0,Y.useCallback)(()=>{t(),e.current&&wn(e.current),Dn(e.current)},[t,e]),handlePaste:(0,Y.useCallback)(e=>{e.preventDefault();let n=Sn(e.clipboardData);if(n.length>0){let e=new CustomEvent(`pasteFiles`,{detail:{files:n}});document.dispatchEvent(e);return}let r=e.clipboardData.getData(`text/plain`);r&&(document.execCommand(`insertText`,!1,r),setTimeout(t,0))},[t]),handleKeyDown:(0,Y.useCallback)((e,t,i)=>{if(e.key===`Enter`&&!e.nativeEvent.isComposing){if(r()){e.preventDefault(),n();return}!ae()&&!e.shiftKey&&!t&&(e.preventDefault(),i())}},[r,n]),handleBlur:(0,Y.useCallback)(()=>{e.current&&wn(e.current),o&&o()},[e,o]),handleFocus:(0,Y.useCallback)(()=>{a&&a()},[a])}),Qn=(e,t,n,r,i)=>({handleSubmit:(0,Y.useCallback)(()=>{let a=e.current?.innerText||``,o=a.trim(),{images:s,files:c}=W.getState(),l=s.length>0||c.length>0;!o&&!l||(r(a),Tn(e.current),En(t.current),n(),i?.())},[e,t,n,r,i]),handleStop:(0,Y.useCallback)(e=>{e&&e()},[])}),$n=()=>rn(q().data?.selected_workspace??void 0);function er(e){let t=window.getSelection();if(!t||t.rangeCount===0)return-1;let n=t.getRangeAt(0),r=n.cloneRange();return r.selectNodeContents(e),r.setEnd(n.startContainer,n.startOffset),r.toString().length}var tr=e=>{let{data:t,isLoading:n}=$n(),r=y().backend.kind===`cloud`,{data:i,isLoading:a}=bt(),[o,s]=(0,Y.useState)(!1),[c,l]=(0,Y.useState)(``),[u,d]=(0,Y.useState)(`command`),[f,p]=(0,Y.useState)(0),m=(0,Y.useMemo)(()=>{let e=w.filter(e=>e.command===`/new`?r:!0);return n||!t||t.forEach(t=>{let n=(t.triggers||[]).filter(e=>e.startsWith(`/`));n.length>0?n.forEach(n=>{e.push({skill:t,command:n})}):t.type===`agentskills`&&e.push({skill:t,command:`/${t.name}`})}),e},[t,n,r]),h=(0,Y.useMemo)(()=>(i?.profiles??[]).map(e=>{let t=`${se} ${e.name}`;return{command:t,skill:{name:e.name,type:`agentskills`,source:null,content:e.model?`Switch to ${Nt(e.model)}`:`Switch to this LLM profile`,triggers:[t]}}}),[i?.profiles]),g=(0,Y.useMemo)(()=>{let e=u===`model-profile`?h:m;if(!c)return e;let t=c.toLowerCase();return e.filter(e=>e.command.toLowerCase().includes(t)||e.skill.name.toLowerCase().includes(t)||e.skill.content?.toLowerCase().includes(t))},[u,h,m,c]),_=(0,Y.useRef)(o);_.current=o;let v=(0,Y.useRef)(g);v.current=g;let b=(0,Y.useRef)(f);b.current=f,(0,Y.useEffect)(()=>{p(0)},[c]);let x=(0,Y.useRef)(null),S=(0,Y.useCallback)(()=>{let t=e.current;if(!t)return null;let n=(t.innerText||``).replace(/[\n\r]+$/,``),r=er(t);if(r<0)return null;let i=n.slice(0,r),a=i.match(/(^|\s)(\/model(?:\s+\S*)?)$/);if(a){let e=a[2],t=i.length-e.length,o=n.slice(r).match(/^\S*/),s=r+(o?o[0].length:0);return{kind:`model-profile`,text:e.replace(/^\/model(?:\s+)?/,``),start:t,end:s}}let o=i.match(/(^|\s)(\/\S*)$/);if(!o)return null;let s=o[2],c=i.length-s.length,l=n.slice(r).match(/^\S*/),u=r+(l?l[0].length:0);return{kind:`command`,text:s.slice(1),start:c,end:u}},[e]),C=(0,Y.useCallback)(()=>{let e=S(),t=e?.kind===`model-profile`?h.length>0||a:m.length>0;e!==null&&t?(d(e.kind),l(e.text),x.current={start:e.start,end:e.end},s(!0)):(s(!1),l(``),d(`command`),x.current=null)},[S,a,h.length,m.length]),T=(0,Y.useCallback)(t=>{let n=e.current;if(!n)return;let r=x.current,i=(n.innerText||``).replace(/[\n\r]+$/,``),a=`${t.command} `;if(r){n.textContent=i.slice(0,r.start)+a+i.slice(r.end);let e=r.start+a.length,t=n.firstChild;if(t){let n=document.createRange(),r=window.getSelection(),i=Math.min(e,t.textContent.length);n.setStart(t,i),n.collapse(!0),r?.removeAllRanges(),r?.addRange(n)}}else{n.textContent=a;let e=document.createRange(),t=window.getSelection();e.selectNodeContents(n),e.collapse(!1),t?.removeAllRanges(),t?.addRange(e)}s(!1),l(``),d(`command`),p(0),x.current=null,n.dispatchEvent(new InputEvent(`input`,{bubbles:!0})),n.focus()},[e]);return{isMenuOpen:o,filteredItems:g,selectedIndex:f,updateSlashMenu:C,selectItem:T,handleSlashKeyDown:(0,Y.useCallback)(e=>{let t=v.current;if(!_.current||t.length===0)return!1;switch(e.key){case`ArrowDown`:return e.preventDefault(),p(e=>e<t.length-1?e+1:0),!0;case`ArrowUp`:return e.preventDefault(),p(e=>e>0?e-1:t.length-1),!0;case`Enter`:case`Tab`:{let n=t[b.current];return n?(e.preventDefault(),T(n),!0):!1}case`Escape`:return e.preventDefault(),s(!1),!0;case`ArrowLeft`:case`ArrowRight`:case`Home`:case`End`:return s(!1),!1;default:return!1}},[T]),closeMenu:(0,Y.useCallback)(()=>s(!1),[])}},Z=r();function nr({gripRef:e,isGripVisible:t,isGripDragging:n,canResize:r,handleTopEdgeClick:i,handleGripMouseDown:a,handleGripTouchStart:o}){return(0,Z.jsxs)(`div`,{className:P(`absolute top-0 left-0 w-full h-3 z-20 group`,!r&&`pointer-events-none`),id:`resize-grip`,onClick:r?i:void 0,children:[r&&(0,Z.jsx)(`div`,{className:`absolute inset-0 z-[1] cursor-ns-resize select-none`,onMouseDown:a,onTouchStart:o,"aria-hidden":!0}),(0,Z.jsx)(`div`,{ref:e,className:P(`pointer-events-none absolute top-0 left-0 w-full h-px bg-white z-[2] transition-opacity duration-200`,!r&&`opacity-0`,r&&(t||n?`opacity-100`:`opacity-0 group-hover:opacity-100`))})]})}var rr=e=>(0,Z.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:[(0,Z.jsx)(`path`,{d:`M15.5 10C16.3284 10 17 9.32843 17 8.5C17 7.67157 16.3284 7 15.5 7C14.6716 7 14 7.67157 14 8.5C14 9.32843 14.6716 10 15.5 10Z`,fill:`currentColor`}),(0,Z.jsx)(`path`,{d:`M3 5C3 3.89543 3.89543 3 5 3H19C20.1046 3 21 3.89543 21 5V19C21 20.1046 20.1046 21 19 21H5C3.89543 21 3 20.1046 3 19V5ZM19 5H5V12.9194L8.37534 10.2191C8.74056 9.92696 9.25951 9.92696 9.62473 10.2191L13.9258 13.66L15.2929 12.2929C15.6835 11.9024 16.3166 11.9024 16.7071 12.2929L19 14.5857V5ZM5 19H19V17.4142L16 14.4142L14.7071 15.7071C14.3468 16.0674 13.7732 16.0992 13.3753 15.7809L9.00004 12.2806L5 15.4807V19Z`,fill:`currentColor`})]}),ir=e=>(0,Z.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:17,height:17,viewBox:`0 0 17 17`,fill:`none`,...e,children:(0,Z.jsx)(`path`,{d:`M14.2541 0.99075C15.0629 0.811957 15.8642 1.32275 16.0432 2.13138C16.222 2.94015 15.7113 3.74145 14.9026 3.92044C10.5163 4.8902 8.31751 8.22203 8.09593 11.8745L10.343 9.62942C10.863 9.10947 11.7057 9.10867 12.2258 9.62845C12.7459 10.1486 12.7459 10.9921 12.2258 11.5122L7.52073 16.2173C7.03316 16.7049 6.26163 16.7357 5.73851 16.3091L5.63694 16.2173L0.93089 11.5122C0.411068 10.9922 0.411047 10.1485 0.93089 9.62845C1.45095 9.10851 2.29457 9.10859 2.81468 9.62845L5.09691 11.9107C5.32362 7.06867 8.20704 2.32786 14.2541 0.99075Z`,fill:`currentColor`})});function ar(){let{t:e}=a(`openhands`);return(0,Z.jsx)(`div`,{className:`drag-over`,children:(0,Z.jsxs)(`div`,{className:`drag-over-content-wrapper`,children:[(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(rr,{width:36,height:36,className:`rotate-[-27deg] absolute top-[-40px] left-[-10px]`}),(0,Z.jsx)(ir,{width:16,height:16,className:`absolute top-[-16px] left-[-20px]`})]}),(0,Z.jsx)(`div`,{className:`drag-over-content`,children:(0,Z.jsx)(`p`,{children:e(D.COMMON$DROP_YOUR_FILES_HERE)})})]})})}function or({onClick:e}){return(0,Z.jsx)(`button`,{type:`button`,onClick:e,className:P(`z-10 flex w-4 h-4 rounded-full items-center justify-center bg-[var(--oh-surface)] hover:bg-[var(--oh-muted)] cursor-pointer absolute top-1 right-1 opacity-0 group-hover:opacity-100 transition-opacity duration-200`,O()&&`opacity-100`),children:(0,Z.jsx)(Be,{width:10,height:10,color:`#ffffff`})})}function sr({file:e,onRemove:t,isLoading:n=!1}){let r=A(e.name);return(0,Z.jsxs)(`div`,{className:`group flex gap-2 rounded-lg bg-[var(--oh-interactive-hover)] max-w-[160px] px-3 py-1 relative`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col justify-center gap-0.25`,children:[(0,Z.jsx)(or,{onClick:t}),(0,Z.jsx)(`div`,{className:`flex items-center gap-2 w-full`,children:(0,Z.jsx)(`span`,{className:P(`text-sm font-normal leading-5 flex-1 max-w-[136px] truncate`,n?`max-w-[108px] text-[var(--oh-muted)]`:`text-white`),children:e.name})}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(sn,{width:12,height:12,color:`var(--oh-muted)`}),(0,Z.jsx)(`span`,{className:`text-[9px] font-normal leading-5 text-[var(--oh-muted)]`,children:r})]})]}),n&&(0,Z.jsx)(`div`,{className:`flex items-center justify-center`,children:(0,Z.jsx)(z,{className:`animate-spin w-5 h-5`,color:`white`})})]})}function cr({active:e,onToggle:t}){let{t:n}=a(`openhands`),r=n(D.CHAT_INTERFACE$UPLOAD_IMAGES_AS_FILES),i=n(D.CHAT_INTERFACE$DO_NOT_UPLOAD_AS_FILE),o=e?i:r;return(0,Z.jsx)(`div`,{className:`absolute bottom-2 left-1 z-10 h-4 w-4`,children:(0,Z.jsx)(Me,{content:o,placement:`bottom`,offset:10,shouldFlip:!1,tooltipClassName:`bg-white text-black text-xs font-medium leading-5`,children:(0,Z.jsx)(`button`,{type:`button`,"aria-label":o,"aria-pressed":e,onClick:e=>{e.stopPropagation(),t()},className:P(`flex h-4 w-4 items-center justify-center rounded-full bg-[var(--oh-surface)] text-[var(--oh-foreground)] transition-colors cursor-pointer hover:bg-[var(--oh-muted)]`),children:e?(0,Z.jsx)(I,{width:10,height:10,strokeWidth:2.5,"aria-hidden":!0}):(0,Z.jsx)(fe,{width:10,height:10,strokeWidth:2.5,"aria-hidden":!0})})})})}function lr({image:e,onRemove:t,isLoading:n=!1,showUploadAsFileToggle:r=!1,uploadAsFileActive:i=!1,onToggleUploadAsFile:a}){let[o,s]=Y.useState(``);return Y.useEffect(()=>{let t=URL.createObjectURL(e);return s(t),()=>{URL.revokeObjectURL(t)}},[e]),(0,Z.jsxs)(`div`,{className:`group relative flex h-[49px] w-[51px] min-h-[49px] min-w-[51px] items-center justify-center rounded-lg bg-[var(--oh-interactive-hover)]`,children:[n?(0,Z.jsx)(z,{className:`animate-spin w-5 h-5`,color:`white`}):o&&(0,Z.jsx)(`img`,{src:o,alt:e.name,className:`h-full w-full rounded-lg object-cover`}),(0,Z.jsx)(or,{onClick:t}),r&&a&&(0,Z.jsx)(cr,{active:i,onToggle:a})]})}function ur(){let{images:e,files:t,loadingFiles:n,loadingImages:r,imagesMarkedUploadAsFile:i,removeFile:a,removeImage:o,toggleImageUploadAsFile:s}=W(),c=e=>{a(e)},l=e=>{o(e)};return e.length===0&&t.length===0&&n.length===0&&r.length===0?null:(0,Z.jsx)(`div`,{className:`flex w-full flex-col gap-2 pb-4`,children:(0,Z.jsxs)(`div`,{className:`flex w-full items-center gap-4 overflow-x-auto custom-scrollbar`,children:[t.map((e,t)=>(0,Z.jsx)(sr,{file:e,onRemove:()=>c(t),isLoading:n.includes(e.name)},`file-${t}-${e.name}`)),n.map((e,t)=>(0,Z.jsx)(sr,{file:new File([],e),onRemove:()=>{},isLoading:!0},`loading-file-${t}-${e}`)),e.map((e,t)=>(0,Z.jsx)(lr,{image:e,onRemove:()=>l(t),isLoading:r.includes(e.name),showUploadAsFileToggle:!0,uploadAsFileActive:i.includes(e.name),onToggleUploadAsFile:()=>s(e.name)},`image-${t}-${e.name}`)),r.map((e,t)=>(0,Z.jsx)(lr,{image:new File([],e),onRemove:()=>{},isLoading:!0,showUploadAsFileToggle:!0,uploadAsFileActive:i.includes(e),onToggleUploadAsFile:()=>s(e)},`loading-image-${t}-${e}`))]})})}function dr({chatInputRef:e,disabled:t=!1,onInput:n,onPaste:r,onKeyDown:i,onFocus:o,onBlur:s}){let{t:c}=a(`openhands`),l=W(e=>e.conversationMode)===`plan`;return Y.useEffect(()=>{t||On(e.current)},[]),(0,Z.jsx)(`div`,{className:`box-border content-stretch flex flex-row items-center justify-start min-h-6 p-0 relative shrink-0 flex-1`,"data-name":`Text & caret`,children:(0,Z.jsx)(`div`,{className:`basis-0 flex flex-col font-normal grow justify-center leading-[0] min-h-px min-w-px overflow-ellipsis overflow-hidden relative shrink-0 text-[var(--oh-text-tertiary)] text-[16px] text-left`,children:(0,Z.jsx)(`div`,{ref:e,className:P(`chat-input bg-transparent text-white text-[16px] font-normal leading-[20px] outline-none resize-none custom-scrollbar min-h-[20px] max-h-[400px] [text-overflow:inherit] [text-wrap-mode:inherit] [white-space-collapse:inherit] block whitespace-pre-wrap`,t&&`cursor-not-allowed opacity-50`),contentEditable:!t,"data-placeholder":c(l?D.COMMON$LET_S_WORK_ON_A_PLAN:D.SUGGESTIONS$WHAT_TO_BUILD),"data-testid":`chat-input`,onInput:n,onPaste:r,onKeyDown:i,onFocus:o,onBlur:s})})})}function fr({chatInputRef:e,isNewConversationPending:t=!1,onInput:n,onPaste:r,onKeyDown:i,onFocus:a,onBlur:o}){return(0,Z.jsx)(`div`,{className:`box-border content-stretch flex flex-row items-end justify-between p-0 relative shrink-0 w-full pb-[18px] gap-2`,children:(0,Z.jsx)(`div`,{className:`basis-0 box-border content-stretch flex flex-row gap-4 grow items-end justify-start min-h-px min-w-px p-0 relative shrink-0`,children:(0,Z.jsx)(dr,{chatInputRef:e,disabled:t,onInput:n,onPaste:r,onKeyDown:i,onFocus:a,onBlur:o})})})}var pr=e(n(),1),mr=e=>(0,Z.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Z.jsx)(`path`,{d:`M9 6C9.55228 6 10 6.44772 10 7V17C10 17.5523 9.55228 18 9 18C8.44772 18 8 17.5523 8 17V7C8 6.44772 8.44772 6 9 6ZM15 6C15.5523 6 16 6.44772 16 7V17C16 17.5523 15.5523 18 15 18C14.4477 18 14 17.5523 14 17V7C14 6.44772 14.4477 6 15 6Z`,fill:`currentColor`})});function hr({handleStop:e}){return(0,Z.jsx)(`button`,{type:`button`,onClick:e,"data-testid":`stop-button`,className:`cursor-pointer`,children:(0,Z.jsx)(mr,{className:`block max-w-none w-4 h-4 text-current`})})}var gr=e=>(0,Z.jsx)(`svg`,{width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,Z.jsx)(`path`,{d:`M15 11H13V7C13 6.73478 12.8946 6.48043 12.7071 6.29289C12.5196 6.10536 12.2652 6 12 6C11.7348 6 11.4804 6.10536 11.2929 6.29289C11.1054 6.48043 11 6.73478 11 7V12C11 12.2652 11.1054 12.5196 11.2929 12.7071C11.4804 12.8946 11.7348 13 12 13H15C15.2652 13 15.5196 12.8946 15.7071 12.7071C15.8946 12.5196 16 12.2652 16 12C16 11.7348 15.8946 11.4804 15.7071 11.2929C15.5196 11.1054 15.2652 11 15 11ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z`,fill:`currentColor`})}),_r=e=>(0,Z.jsx)(`svg`,{width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,Z.jsx)(`path`,{d:`M8 8.37911C8 7.31633 9.15785 6.65415 10.0798 7.18966L16.3139 10.8105C17.2287 11.3419 17.2287 12.6581 16.3139 13.1895L10.0798 16.8103C9.15785 17.3459 8 16.6837 8 15.6209V8.37911Z`,fill:`currentColor`})});function vr({onAgentResumed:e,disabled:t=!1}){return(0,Z.jsx)(`button`,{type:`button`,onClick:e,"data-testid":`play-button`,disabled:t,className:P(`cursor-pointer`,t&&`cursor-not-allowed`),children:(0,Z.jsx)(_r,{className:`block max-w-none w-4 h-4 text-current`})})}function yr(){return(0,Z.jsx)(`div`,{"data-testid":`agent-loading-spinner`,children:(0,Z.jsx)(z,{className:`animate-spin w-4 h-4 text-current`})})}function br(){let e=Xt();return e?e.connectionState:`CLOSED`}var xr=Qe()((e,t)=>({byTaskId:{},setPendingTaskAttachments:(t,n)=>e(e=>({byTaskId:{...e.byTaskId,[t]:n}})),consumePendingTaskAttachments:n=>{let r=t().byTaskId[n];return r?(e(e=>{let{[n]:t,...r}=e.byTaskId;return{byTaskId:r}}),r):null}}));function Sr(e,t){xr.getState().setPendingTaskAttachments(e,t)}function Cr(e){return xr.getState().consumePendingTaskAttachments(e)}var wr=e=>new Promise((t,n)=>{let r=new FileReader;r.onloadend=()=>{t(r.result)},r.onerror=n,r.readAsDataURL(e)}),Tr=3*1024*1024,Er=3*1024*1024;function Dr(e){let t=e.filter(e=>e.size>Tr);if(t.length>0){let e=t.map(e=>e.name);return{isValid:!1,errorMessage:`Files exceeding 3MB are not allowed: ${e.join(`, `)}`,oversizedFiles:e}}return{isValid:!0}}function Or(e,t=[]){let n=t.reduce((e,t)=>e+t.size,0)+e.reduce((e,t)=>e+t.size,0);return n>Er?{isValid:!1,errorMessage:`Total file size would be ${(n/(1024*1024)).toFixed(1)}MB, exceeding the 3MB limit. Please select fewer or smaller files.`}:{isValid:!0}}function kr(e,t=[]){let n=Dr(e);return n.isValid?Or(e,t):n}async function Ar(e){let{conversationId:t,content:n,images:r,files:i,imagesMarkedUploadAsFile:a,t:o}=e,{imagesToEmbed:s,imagesAsFiles:c}=xn(r,a),l=[...i,...c],d=kr([...s,...l]);if(!d.isValid)throw Error(d.errorMessage??`Invalid attachments`);let f=await Promise.all(s.map(e=>wr(e))),p=await pt(t),{skipped_files:m,uploaded_files:h}=l.length>0?await ht(t,l):{skipped_files:[],uploaded_files:[]};m.forEach(e=>u(e.reason));let g=`${o(D.CHAT_INTERFACE$AUGMENTED_PROMPT_FILES_TITLE)}: ${h.join(`
|
|
2
|
+
|
|
3
|
+
`)}`,_=h.length>0?`${n}\n\n${g}`:n,v=new Date().toISOString(),y={role:`user`,content:[{type:`text`,text:_}]};return f.length>0&&y.content.push({type:`image`,image_urls:f}),await G.sendMessage(t,y,p),{text:n,content:_,imageUrls:f,fileUrls:h,timestamp:v}}async function jr(e,t){let n=Cr(e);if(n)try{await _(),await Ar({conversationId:t,content:n.content,images:n.images,files:n.files,imagesMarkedUploadAsFile:n.imagesMarkedUploadAsFile,t:p.getFixedT(null,d)})}catch(e){throw u(e instanceof Error?e.message:null),e}}var Mr=new Map,Nr=null;function Pr(e,t){Mr.set(e,t)}function Fr(e){Mr.delete(e)}function Ir(e,t){Nr={fromConversationId:e,toConversationId:t}}function Lr(e){if(Nr?.toConversationId!==e)return null;let t=Nr;return Nr=null,t}function Rr(e,t){return t===e?!0:Mr.get(e)===t}var zr=(e,t)=>{let n=e.request.plugins?.map(at);if(!n?.length)return;let r=it(t);st(t,{...r,selected_repository:r?.selected_repository??e.request.selected_repository??null,selected_branch:r?.selected_branch??e.request.selected_branch??null,git_provider:r?.git_provider??e.request.git_provider??null,plugins:n})},Br=()=>{let{conversationId:e}=J(),t=!!e&&e.startsWith(`task-`),n=t?e.replace(`task-`,``):null,r=c({queryKey:[`start-task`,n],queryFn:async()=>n?G.getStartTask(n):null,enabled:!!n,refetchInterval:e=>{let t=e.state.data;return!t||t.status===`READY`||t.status===`ERROR`?!1:3e3},retry:!1});return{isTask:t,taskId:n,conversationId:t?null:e??null,task:r.data,taskStatus:r.data?.status,taskDetail:r.data?.detail,taskError:r.error,isLoadingTask:r.isLoading,repositoryInfo:{selectedRepository:r.data?.request?.selected_repository,selectedBranch:r.data?.request?.selected_branch,gitProvider:r.data?.request?.git_provider}}},Vr=()=>{let e=Br(),{task:t,taskId:n}=e,{conversationId:r}=J(),{navigate:i}=ke(),a=Je(),o=(0,Y.useRef)(null);return(0,Y.useLayoutEffect)(()=>{if(!r)return;let e=Lr(r);e&&(Ut.getState().reassignPendingMessages(e.fromConversationId,e.toConversationId),Fr(e.toConversationId))},[r]),(0,Y.useEffect)(()=>{let e=t?.app_conversation_id;!n||t?.status!==`READY`||!e||o.current===n||(o.current=n,_e(n,e),zr(t,e),(async()=>{await jr(n,e);let t=`task-${n}`;Pr(e,t),Ir(t,e);let r=nt(n);r&&tt(e,{draftMessage:r}),i(a(`/conversations/${e}`),{replace:!0})})())},[a,t,n,i]),e},Hr=(e,t)=>{let n=c({queryKey:[`sub-conversation-task`,e],queryFn:async()=>e?G.getStartTask(e):null,enabled:!!e&&!!t,refetchInterval:e=>{let t=e.state.data;return!t||t.status===`READY`||t.status===`ERROR`?!1:3e3},retry:!1});return{task:n.data,taskStatus:n.data?.status,taskDetail:n.data?.detail,taskError:n.error,isLoadingTask:n.isLoading,subConversationId:n.data?.app_conversation_id}},Ur=`/assets/notification-Cyeyy5ud.mp3`,Wr=[N.AWAITING_USER_INPUT,N.FINISHED,N.AWAITING_USER_CONFIRMATION];function Gr(e){let{data:t}=H(),n=(0,Y.useRef)(void 0),r=(0,Y.useRef)(void 0);(0,Y.useEffect)(()=>{typeof window<`u`&&!n.current&&(n.current=new Audio(Ur),n.current.volume=.5)},[]);let i=t?.enable_sound_notifications??!1;(0,Y.useEffect)(()=>{r.current!==e&&(r.current=e,Wr.includes(e)&&i&&n.current&&(n.current.currentTime=0,n.current.play().catch(()=>{})))},[e,i])}function Kr({className:e=``,handleStop:t,handleResumeAgent:n,disabled:r=!1,isPausing:i=!1}){let{t:o}=a(`openhands`),{setShouldShownAgentLoading:s}=W(),{curAgentState:c,executionStatus:l}=qt();Gr(c);let u=br(),{data:d}=q(),{taskStatus:f}=Br(),{subConversationTaskId:p}=W(),{taskStatus:m}=Hr(p,d?.id||null),h=E(u,l??null,f,m),g=c===N.INIT||c===N.LOADING||u===`CONNECTING`&&f!==`ERROR`||F(f)||F(m),_=g||i,v=c===N.ERROR||c===N.RATE_LIMITED||u===`CLOSED`||f===`ERROR`,y=!v&&c===N.RUNNING,b=!v&&(c===N.STOPPED||c===N.PAUSED),x=!_&&(y||b),S=h===D.CHAT_INTERFACE$AGENT_FINISHED_MESSAGE,C=h===D.AGENT_STATUS$WAITING_FOR_TASK,w=S||C,[T,O]=(0,Y.useState)(!0),[k,A]=(0,Y.useState)(!1);return(0,Y.useEffect)(()=>{s(!!g)},[g,s]),(0,Y.useEffect)(()=>{if(!w){O(!0),A(!1);return}O(!0),A(!1);let e=window.setTimeout(()=>{A(!0)},1e3),t=window.setTimeout(()=>{O(!1)},1500);return()=>{window.clearTimeout(e),window.clearTimeout(t)}},[w]),w&&!T?null:(0,Z.jsxs)(`div`,{className:P(`flex items-center gap-1 min-w-0`,w&&`transition-opacity duration-500`,k&&`opacity-0`,e),children:[(0,Z.jsx)(`span`,{className:`text-[11px] text-[var(--oh-muted)] font-normal leading-5 min-w-0 max-w-full truncate`,title:o(h),children:o(h)}),(0,Z.jsxs)(`div`,{className:P(`box-border content-stretch flex flex-row gap-[3px] items-center justify-center overflow-clip px-0.5 py-1 relative rounded-[100px] shrink-0 size-6 transition-all duration-200 active:scale-95 bg-transparent text-[var(--oh-muted)] hover:bg-white/10 hover:text-white`,x?`cursor-pointer`:`cursor-default`),children:[_&&(0,Z.jsx)(yr,{}),!_&&y&&(0,Z.jsx)(hr,{handleStop:t}),!_&&b&&(0,Z.jsx)(vr,{onAgentResumed:n,disabled:r}),!_&&v&&(0,Z.jsx)(qe,{className:`w-4 h-4 text-current`,"data-testid":`circle-error-icon`}),!_&&!y&&!b&&!v&&(w?(0,Z.jsx)(ue,{className:`w-4 h-4 text-current`}):(0,Z.jsx)(gr,{className:`w-4 h-4 text-current`}))]})]})}function qr(e){return(0,Z.jsx)(`svg`,{viewBox:`0 0 257 183`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,...e,children:(0,Z.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M151.663 5.36257C158.763 -1.73743 170.363 -1.83743 177.563 5.36257L250.663 78.4626C257.763 85.5626 257.863 97.1626 250.663 104.363L177.563 177.463C170.363 184.563 158.863 184.563 151.663 177.463C144.563 170.263 144.563 158.763 151.663 151.563L211.863 91.3626L151.663 31.1626C144.563 24.1626 144.563 12.5626 151.663 5.36257ZM104.463 5.36257C97.3626 -1.73743 85.7626 -1.83743 78.5626 5.36257L5.36257 78.4626C-1.73743 85.5626 -1.83743 97.1626 5.36257 104.363L78.4626 177.463C85.6626 184.563 97.1626 184.563 104.363 177.463C111.463 170.263 111.463 158.763 104.363 151.563L44.1626 91.4626L104.363 31.2626C111.563 24.1626 111.563 12.5626 104.463 5.36257Z`,fill:`currentColor`})})}function Jr({icon:e,text:t,className:n,iconClassName:r,isActive:i=!1}){return(0,Z.jsxs)(`div`,{className:P(`flex min-w-0 items-center`,Ne,n),children:[(0,Z.jsx)(e,{className:P(`h-4 w-4`,Ie,r)}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 leading-5`,children:t}),i&&(0,Z.jsx)(Rt,{width:14,height:14,className:`shrink-0`,"aria-hidden":!0})]})}function Yr({icon:e,title:t,description:n,className:r,iconClassName:i,isActive:a=!1}){return(0,Z.jsxs)(`div`,{className:P(`flex min-w-0 w-full flex-col justify-center gap-1`,r),children:[(0,Z.jsx)(Jr,{icon:e,text:t,className:`px-0`,iconClassName:i,isActive:a}),(0,Z.jsx)(K.Text,{className:`text-[var(--oh-muted)] text-[10px] font-normal whitespace-pre-wrap break-words`,children:n})]})}function Xr({activeMode:e,onClose:t,onCodeClick:n,onPlanClick:r}){let{t:i}=a(`openhands`),o=yt(t);return(0,Z.jsxs)(B,{ref:o,testId:`change-agent-context-menu`,position:`top`,alignment:`left`,className:`min-h-fit mb-2 min-w-[195px] max-w-[195px]`,children:[(0,Z.jsx)(V,{testId:`code-option`,onClick:e=>{e.preventDefault(),e.stopPropagation(),n?.(e),t()},className:P(e===`code`&&`bg-[var(--oh-interactive-hover)]`),children:(0,Z.jsx)(Yr,{icon:cn,title:i(D.COMMON$CODE),description:i(D.COMMON$CODE_AGENT_DESCRIPTION),isActive:e===`code`})}),(0,Z.jsx)(V,{testId:`plan-option`,onClick:e=>{e.preventDefault(),e.stopPropagation(),r?.(e),t()},className:P(e===`plan`&&`bg-[var(--oh-interactive-hover)]`),children:(0,Z.jsx)(Yr,{icon:en,title:i(D.COMMON$PLAN),description:i(D.COMMON$PLAN_AGENT_DESCRIPTION),isActive:e===`plan`})})]})}var Zr=()=>{let{t:e}=a(`openhands`),{setConversationMode:t,setSubConversationTaskId:n,subConversationTaskId:r}=W(),{data:i}=q(),{mutate:o,isPending:s}=Tt();return(0,Y.useEffect)(()=>{if(!i?.id)return;let e=et(i.id);e.subConversationTaskId&&!r&&n(e.subConversationTaskId)},[i?.id,r,n]),{handlePlanClick:(0,Y.useCallback)(a=>{a?.preventDefault(),a?.stopPropagation(),t(`plan`),!(i?.sub_conversation_ids&&i.sub_conversation_ids.length>0||!i?.id||r)&&o({parentConversationId:i.id,agentType:`plan`,entryPoint:`plan_sub_conversation`},{onSuccess:t=>{f(e(D.PLANNING_AGENTT$PLANNING_AGENT_INITIALIZED)),t.task_id&&(n(t.task_id),tt(i.id,{subConversationTaskId:t.task_id}))}})},[i,o,t,n,r,e]),isCreatingConversation:s}};function Qr(){let[e,t]=(0,Y.useState)(!1),{conversationMode:n,setConversationMode:r,subConversationTaskId:o}=W(),{conversationId:s}=J(),c=!s,l=br()===`OPEN`,{curAgentState:u}=qt(),{t:d}=a(`openhands`),f=u===N.RUNNING,{data:p}=q(),m=i(),h=(0,Y.useRef)(null),{taskStatus:g,subConversationId:_}=Hr(o,p?.id||null);(0,Y.useEffect)(()=>{g===`READY`&&_&&p?.id&&o&&h.current!==o&&(h.current=o,m.invalidateQueries({queryKey:[`user`,`conversation`,p.id]}))},[g,_,p?.id,o,m]);let{handlePlanClick:v,isCreatingConversation:y}=Zr();(0,Y.useEffect)(()=>{(f||!l)&&e&&t(!1)},[f,e,l]);let b=c||f||y||!l;(0,Y.useEffect)(()=>{if(b)return;let e=e=>{if(e.shiftKey&&e.key===`Tab`){e.preventDefault(),e.stopPropagation();let t=n===`code`?`plan`:`code`;t===`plan`?v(e):r(t)}};return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e)}},[b,n,r,v]);let x=n=>{n.preventDefault(),n.stopPropagation(),t(!e)},S=e=>{e.preventDefault(),e.stopPropagation(),r(`code`)},C=n===`code`,w=(0,Y.useMemo)(()=>d(C?D.COMMON$CODE:D.COMMON$PLAN),[C,d]),T=(0,Y.useMemo)(()=>C?(0,Z.jsx)(qr,{className:`h-[11px] w-[11px] shrink-0`}):(0,Z.jsx)(en,{width:18,height:18,color:`currentColor`}),[C]),E=(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsxs)(`button`,{type:`button`,onClick:x,disabled:b,className:P(`flex items-center rounded-[100px]`,we,C?`border border-transparent text-[var(--oh-muted)]`:`border border-[#597FF4] bg-[#4A67BD]`,!b&&C&&P(`cursor-pointer`,`hover:text-white hover:bg-white/10`),!b&&!C&&`cursor-pointer text-white hover:bg-[#597FF4]`,b&&P(`opacity-50 cursor-not-allowed`,C&&`border-transparent`)),children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-1 pl-1.5`,children:[T,(0,Z.jsx)(K.Text,{className:`text-2.75 not-italic font-normal leading-5`,children:w})]}),(0,Z.jsx)(Le,{isOpen:e})]}),e&&(0,Z.jsx)(Xr,{activeMode:n,onClose:()=>t(!1),onCodeClick:S,onPlanClick:v})]});return c?(0,Z.jsx)(Me,{content:d(D.CHANGE_AGENT$SWITCH_AFTER_CONVERSATION),placement:`top`,children:E}):E}var $r=`/settings/agents`,ei=`/settings/llm`;function ti(){let{t:e}=a(`openhands`),{backend:t}=y(),{data:n}=q(),{data:r}=H(),i=Ke(),o=n?.agent_kind===`acp`,s=!n&&(i??r?.agent_settings?.agent_kind)===`acp`,c=o||s;return{isActiveAcpConversation:o,isHomeAcp:s,isAcpContext:c,destinationPath:c?$r:ei,destinationLabel:e(c?D.SETTINGS$NAV_AGENT:t.kind===`cloud`?D.SETTINGS$LLM_SETTINGS:D.SETTINGS$LLM_PROFILES)}}function ni(e,t,n){return[...g.all,e,t,`detail`,n]}function ri(){let{backend:e,orgId:t}=y(),{conversationId:n}=J(),{activeProfile:r}=Ye(),i=r?.agent_kind===`acp`?r.name:null,{data:a}=c({queryKey:ni(e.id,t,i??``),queryFn:()=>xt.getProfile(i),enabled:!n&&i!=null,...m,...v,meta:{disableToast:!0}}),o=a?.profile;return o?.agent_kind===`acp`?o:null}function ii(){let{data:e}=q(),{data:t}=H(),{conversationId:n}=J(),{backend:r}=y(),i=jt(),a=ri(),{isActiveAcpConversation:o,isHomeAcp:s,isAcpContext:c,destinationPath:l,destinationLabel:u}=ti(),d=typeof t?.agent_settings?.acp_server==`string`?t.agent_settings.acp_server:null,f=o?e?.acp_server:s?a?.acp_server??d:null,p=c?dt(f):void 0,m=typeof t?.agent_settings?.acp_model==`string`?t.agent_settings.acp_model:null,h=s&&a?a.acp_model:m,g=null;g=o?e?.llm_model??lt({configured:h,providerDefault:ut(f)}):s?lt({configured:h,providerDefault:ut(f)}):e?.llm_model??t?.llm_model??null;let _=g&&c?ft(f,g)??g:g,v=p?.available_models??[],b=!s||r.kind!==`cloud`||i,x=c&&v.length>0&&b;return{isAcpContext:c,displayModel:_,currentModelId:g,availableAcpModels:v,showAcpPicker:x,switchConversationId:o?n??null:null,destinationPath:l,destinationLabel:u}}var ai=()=>{let e=i(),{backend:t,orgId:n}=y();return s({mutationFn:async({conversationId:r,model:i})=>{if(r){await G.switchAcpModel(r,i);return}let a=await e.ensureQueryData({queryKey:[...g.all,t.id,n],queryFn:xt.listProfiles,...v}),o=a.profiles?.find(e=>e.id!=null&&e.id===a.active_agent_profile_id);if(o?.agent_kind===`acp`){let r=await e.ensureQueryData({queryKey:ni(t.id,n,o.name),queryFn:()=>xt.getProfile(o.name),...v});await xt.saveProfile(o.name,un(r.profile,{agent_kind:`acp`,acp_model:i}));return}await xe.saveSettings({agent_settings_diff:{acp_model:i}})},onSuccess:(t,{conversationId:n})=>{n?mt(e,n):(xe.invalidateCache(),e.invalidateQueries({queryKey:x.personal()}),e.invalidateQueries({queryKey:g.all}))}})},oi=10,si=22;function ci(e,t=oi){return e.length<=t?e:`${e.slice(0,t)}…`}function li({model:e,onClose:t,dividerInset:n,settingsLinkClassName:r,settingsIconClassName:i}){let{t:o}=a(`openhands`),s=ai(),c=e.showAcpPicker||!!e.displayModel,l=n=>{n!==e.currentModelId&&s.mutate({conversationId:e.switchConversationId,model:n}),t()};return(0,Z.jsxs)(Z.Fragment,{children:[e.showAcpPicker?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`li`,{role:`presentation`,className:`px-2 pt-1 pb-0.5`,children:(0,Z.jsx)(K.Text,{className:`text-[11px] font-medium text-[var(--oh-text-dim)] uppercase tracking-wide leading-4`,children:o(D.MODEL$AVAILABLE_MODELS)})}),e.availableAcpModels.map(t=>{let n=t.id===e.currentModelId;return(0,Z.jsxs)(V,{testId:`chat-input-acp-model-option-${t.id}`,onClick:e=>{e.preventDefault(),e.stopPropagation(),l(t.id)},className:P(`flex items-center gap-2`,n&&`bg-[var(--oh-interactive-hover)]`),children:[(0,Z.jsx)(`span`,{className:`flex-1 truncate text-sm leading-5`,title:t.label,children:t.label}),n&&(0,Z.jsx)(Rt,{width:14,height:14,className:`shrink-0`,"aria-hidden":!0})]},t.id)})]}):e.displayModel?(0,Z.jsx)(`li`,{className:`text-sm`,children:(0,Z.jsx)(`div`,{className:`p-2 leading-5 text-[var(--oh-foreground)] break-all`,children:e.displayModel})}):null,c&&(0,Z.jsx)(Ge,{inset:n}),(0,Z.jsx)(`li`,{className:`text-sm`,children:(0,Z.jsxs)(Ae,{to:e.destinationPath,onClick:t,className:P(`flex h-[30px] items-center gap-2 rounded p-2 leading-5 text-[var(--oh-foreground)] hover:bg-[var(--oh-interactive-hover)] transition-colors`,r),children:[(0,Z.jsx)(dn,{width:16,height:16,className:P(`shrink-0`,i),"aria-hidden":!0}),(0,Z.jsx)(`span`,{children:e.destinationLabel})]})})]})}function ui(){let e=ii(),[t,n]=Y.useState(!1),r=Y.useRef(null),i=yt(()=>n(!1),r);if(!e.displayModel)return null;let a=ci(e.displayModel,e.isAcpContext?si:oi);return(0,Z.jsxs)(`div`,{className:`relative min-w-0`,children:[(0,Z.jsxs)(`button`,{ref:r,type:`button`,className:Te,title:e.displayModel,"data-testid":`chat-input-llm-model`,"aria-expanded":t,"aria-haspopup":`dialog`,onClick:e=>{e.preventDefault(),e.stopPropagation(),n(e=>!e)},children:[(0,Z.jsx)(`span`,{children:a}),(0,Z.jsx)(Le,{isOpen:t})]}),t&&(0,Z.jsx)(B,{ref:i,testId:`chat-input-llm-model-popover`,position:`top`,alignment:`left`,spacing:`none`,className:`z-[60] mb-2 min-w-[200px] max-w-[320px] max-h-[60vh] overflow-y-auto`,children:(0,Z.jsx)(li,{model:e,onClose:()=>n(!1)})})]})}var di=[`switch-llm-profile`],fi=()=>{let e=i(),{t}=a();return s({mutationKey:di,mutationFn:({conversationId:e,profileName:t})=>G.switchProfile(e,t),meta:{disableToast:!0},onMutate:({conversationId:e})=>({anchorEventId:e?Zt():null}),onError:(e,{profileName:n})=>{let r=t(D.MODEL$SWITCH_FAILED,{name:n});u(S(e)||r)},onSuccess:(t,{conversationId:n,profileName:r},i)=>{if(e.invalidateQueries({queryKey:h.all}),n){mt(e,n),$t(n,r,i?.anchorEventId??null);let t=it(n);st(n,{selected_repository:t?.selected_repository??null,selected_branch:t?.selected_branch??null,git_provider:t?.git_provider??null,selected_workspace:t?.selected_workspace??null,active_profile:r,plugins:t?.plugins??null})}else xe.invalidateCache(),e.invalidateQueries({queryKey:x.personal()})}})};function pi(){let{mutate:e,isPending:t}=fi();return{switchAndLog:(0,Y.useCallback)((t,n)=>{e({conversationId:t,profileName:n})},[e]),isPending:t}}function mi(){let{conversationId:e}=J(),{data:t}=q(),{data:n,isLoading:r}=bt(),i=jt(),{switchAndLog:a}=pi(),o=l({mutationKey:di})>0,s=Jt(t=>e?t.activeProfileByConversation[e]:void 0),c=n?.profiles??[],u=t?.llm_model??null,d=t?.active_profile??null,f=d&&c.some(e=>e.name===d)?d:null,p=s??f??(u?c.find(e=>e.model===u)?.name??null:n?.active_profile??null),m=c.find(e=>e.name===p)?.model??u??null,h=!(e?.startsWith(`task-`)??!1)&&(!!e||i);return{profiles:c,currentProfileName:p,currentProfileModel:m,isLoading:r,isSwitching:o,canSwitchProfile:h,selectProfile:(0,Y.useCallback)(t=>{!h||t===p||a(e,t)},[h,e,p,a])}}var hi=18;function gi(e){return e.length<=hi?e:`${e.slice(0,hi)}…`}function _i({onClose:e,dividerInset:t,settingsLinkClassName:n,settingsIconClassName:r}){let{t:i}=a(`openhands`),{profiles:o,currentProfileName:s,currentProfileModel:c,canSwitchProfile:l,selectProfile:u}=mi(),d=l&&o.length>0,f=l?null:s,p=t=>{u(t),e()};return(0,Z.jsxs)(Z.Fragment,{children:[d&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`li`,{role:`presentation`,className:`px-2 pt-1 pb-0.5`,children:(0,Z.jsx)(K.Text,{className:`text-[11px] font-medium text-[var(--oh-text-dim)] uppercase tracking-wide leading-4`,children:i(D.SETTINGS$AVAILABLE_PROFILES)})}),o.map(t=>{let n=t.name===s,r=Nt(t.model);return(0,Z.jsxs)(V,{testId:`chat-input-llm-profile-option-${t.name}`,onClick:r=>{if(r.preventDefault(),r.stopPropagation(),n){e();return}p(t.name)},className:P(`flex flex-col items-stretch gap-0.5`,n&&`bg-[var(--oh-interactive-hover)]`),children:[(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`flex-1 truncate text-sm leading-5`,title:t.model??t.name,children:t.name}),n&&(0,Z.jsx)(Rt,{width:14,height:14,className:`shrink-0`,"aria-hidden":!0})]}),r&&(0,Z.jsx)(`span`,{className:`block truncate text-xs leading-4 text-[var(--oh-muted)]`,children:r})]},t.name)})]}),f&&(0,Z.jsx)(`li`,{className:`text-sm`,"data-testid":`chat-input-llm-profile-current`,children:(0,Z.jsxs)(`div`,{className:`flex flex-col gap-0.5 p-2 leading-5 text-[var(--oh-foreground)]`,children:[(0,Z.jsx)(`span`,{className:`truncate`,title:f,children:f}),c&&(0,Z.jsx)(`span`,{className:`truncate text-xs leading-4 text-[var(--oh-muted)]`,children:Nt(c)})]})}),(d||f)&&(0,Z.jsx)(Ge,{inset:t}),(0,Z.jsx)(`li`,{className:`text-sm`,children:(0,Z.jsxs)(Ae,{to:`/settings/llm`,onClick:e,className:P(`flex h-[30px] items-center gap-2 rounded p-2 leading-5 text-[var(--oh-foreground)] hover:bg-[var(--oh-interactive-hover)] transition-colors`,n),children:[(0,Z.jsx)(dn,{width:16,height:16,className:P(`shrink-0`,r),"aria-hidden":!0}),(0,Z.jsx)(`span`,{children:i(D.SETTINGS$LLM_PROFILES)})]})})]})}function vi(){let{t:e}=a(`openhands`),{profiles:t,currentProfileName:n,isLoading:r,isSwitching:i}=mi(),[o,s]=Y.useState(!1),c=Y.useRef(null),l=yt(()=>s(!1),c);if(r||t.length===0)return null;let u=n??e(D.LLM$SELECT_MODEL_PLACEHOLDER);return(0,Z.jsxs)(`div`,{className:`relative min-w-0`,children:[(0,Z.jsxs)(`button`,{ref:c,type:`button`,className:P(Te,`max-w-[200px]`),title:n??void 0,"data-testid":`chat-input-llm-profile`,"aria-expanded":o,"aria-haspopup":`dialog`,disabled:i,"aria-busy":i,onClick:e=>{e.preventDefault(),e.stopPropagation(),s(e=>!e)},children:[(0,Z.jsx)(`span`,{className:`truncate`,children:gi(u)}),(0,Z.jsx)(Le,{isOpen:o})]}),o&&(0,Z.jsx)(B,{ref:l,testId:`chat-input-llm-profile-popover`,position:`top`,alignment:`left`,spacing:`none`,className:`z-[60] mb-2 min-w-[200px] max-w-[320px] max-h-[60vh] overflow-y-auto`,children:(0,Z.jsx)(_i,{onClose:()=>s(!1)})})]})}function yi({isLoadingHistory:e,hasUserEvents:t,hasPendingUserMessages:n,hasSubstantiveAgentActions:r,hasModelEntries:i}){return e||t||n||r||i}function bi({isAcp:e}){return e?`model`:`llm-profile`}var xi=()=>{let e=i(),{t}=a();return s({mutationFn:e=>G.updateConversationPublicFlag(e.conversationId,e.isPublic),onMutate:async t=>{let n=[`user`,`conversation`,t.conversationId];await e.cancelQueries({queryKey:n});let r=e.getQueriesData({queryKey:n});return e.setQueriesData({queryKey:n},e=>e&&typeof e==`object`?{...e,public:t.isPublic}:e),{previousEntries:r}},onError:(n,r,i)=>{i?.previousEntries?.forEach(([t,n])=>{e.setQueryData(t,n)}),u(t(D.CONVERSATION$FAILED_TO_UPDATE_PUBLIC_SHARING))},onSettled:(t,n,r)=>{e.invalidateQueries({queryKey:[`user`,`conversation`,r.conversationId]}),e.invalidateQueries({queryKey:[`user`,`conversations`]})}})},Si=`<secret-hidden>`;function Ci(e){let t=/(<CUSTOM_SECRETS>)([\s\S]*?)(<\/CUSTOM_SECRETS>|$)/gi,n=/^(\s*[^=:\n]+?\s*[:=]\s*)(.+?)\s*$/gm;return e.replace(t,(e,t,r,i)=>`${t}${r.replace(n,(e,t,n)=>n===Si?e:`${t}${Si}`)}${i}`)}function wi(e){let t=e.find(Gt);if(!t)return null;let n=t.dynamic_context?.text;return{content:n?`${t.system_prompt.text.trimEnd()}\n\n${Ci(n)}`:t.system_prompt.text,tools:t.tools??null,openhands_version:null,agent_class:null}}function Ti({conversationId:e,executionStatus:t,showOptions:n=!1,onContextMenuToggle:r}){let{t:i}=a(),{conversationId:o,navigate:s}=ke(),{backend:c}=y(),l=Kt(e=>e.events),{mutate:u}=He(),{mutate:d}=Ve(),{mutate:p}=xi(),{data:m}=q(),[h,g]=Y.useState(!1),[_,v]=Y.useState(!1),[b,x]=Y.useState(!1),[S,C]=Y.useState(!1),[w,T]=Y.useState(!1),[E,O]=Y.useState(!1),{mutateAsync:k}=ze(),{navigateToTab:A}=Yt(),j=wi(l),ee=e=>{e.preventDefault(),e.stopPropagation(),T(!0),r?.(!1)},M=e=>{e.preventDefault(),e.stopPropagation(),O(!0),r?.(!1)},te=()=>{e&&u({conversationId:e},{onSuccess:()=>{e===o&&s(`/conversations`)}}),T(!1)},N=()=>{e&&d({conversationId:e}),O(!1)},ne=e=>{e.preventDefault(),e.stopPropagation(),r?.(!1)},re=async t=>{t.preventDefault(),t.stopPropagation(),e&&await k(e),r?.(!1)},ie=e=>{e.stopPropagation(),A(`usage`),r?.(!1)},P=e=>{e.stopPropagation(),g(!0),r?.(!1)},ae=e=>{e.stopPropagation(),v(!0),r?.(!1)},F=e=>{e.stopPropagation(),x(!0),r?.(!1)},se=e=>{e.stopPropagation(),C(!0),r?.(!1)},ce=t=>{e&&m&&p({conversationId:e,isPublic:t??!m.public})},I=Y.useMemo(()=>e?`${c.kind===`cloud`?c.host.replace(/\/+$/,``):window.location.origin}/shared/conversations/${e}`:``,[e,c.kind,c.host]);return{handleDelete:ee,handleStop:M,handleEdit:ne,handleDownloadConversation:re,handleDisplayCost:ie,handleShowAgentTools:P,handleShowSkills:ae,handleShowPlugins:F,handleShowHooks:se,handleTogglePublic:ce,handleCopyShareLink:e=>{if(e.preventDefault(),e.stopPropagation(),!I){r?.(!1);return}navigator.clipboard.writeText(I),f(i(D.CONVERSATION$LINK_COPIED))},shareUrl:I,handleConfirmDelete:te,handleConfirmStop:N,systemModalVisible:h,setSystemModalVisible:g,skillsModalVisible:_,setSkillsModalVisible:v,pluginsModalVisible:b,setPluginsModalVisible:x,hooksModalVisible:S,setHooksModalVisible:C,confirmDeleteModalVisible:w,setConfirmDeleteModalVisible:T,confirmStopModalVisible:E,setConfirmStopModalVisible:O,systemMessage:j,shouldShowStop:oe(t),shouldShowDownloadConversation:!!(e&&n),shouldShowDisplayCost:n,shouldShowAgentTools:!!(n&&j),shouldShowSkills:!!(n&&e),shouldShowPlugins:!!(n&&e&&(it(e)?.plugins?.length??0)>0),shouldShowHooks:!!(n&&e&&oe(t))}}var Ei=e=>(0,Z.jsx)(`svg`,{width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,Z.jsx)(`path`,{d:`M17 6.05994C16.3065 6.0604 15.6345 6.30114 15.0985 6.74118C14.5625 7.18123 14.1954 7.7934 14.0599 8.47355C13.9243 9.1537 14.0286 9.85981 14.355 10.4717C14.6813 11.0837 15.2097 11.5636 15.85 11.8299C15.6978 12.1949 15.4408 12.5065 15.1115 12.7254C14.7822 12.9444 14.3954 13.0608 14 13.0599H10C9.29505 13.0629 8.604 13.2564 8.00001 13.6199V7.87994C8.66722 7.64405 9.22956 7.17987 9.58764 6.56946C9.94571 5.95905 10.0765 5.2417 9.9568 4.54421C9.83713 3.84671 9.47473 3.21398 8.93367 2.75784C8.3926 2.30169 7.70769 2.05151 7.00001 2.05151C6.29232 2.05151 5.60741 2.30169 5.06635 2.75784C4.52528 3.21398 4.16288 3.84671 4.04321 4.54421C3.92354 5.2417 4.0543 5.95905 4.41237 6.56946C4.77045 7.17987 5.33279 7.64405 6.00001 7.87994V16.2399C5.34099 16.4769 4.78566 16.937 4.43026 17.5405C4.07485 18.1439 3.94176 18.8527 4.05406 19.544C4.16635 20.2352 4.51695 20.8654 5.0451 21.3254C5.57325 21.7853 6.24567 22.0459 6.94581 22.0621C7.64596 22.0783 8.32971 21.8491 8.87857 21.4141C9.42744 20.9791 9.80683 20.3658 9.95099 19.6805C10.0952 18.9951 9.995 18.281 9.6679 17.6617C9.34079 17.0425 8.80735 16.5572 8.16001 16.2899C8.31158 15.9266 8.56704 15.616 8.89436 15.3972C9.22168 15.1784 9.60629 15.0611 10 15.0599H14C14.9148 15.0598 15.802 14.746 16.5135 14.171C17.225 13.5959 17.7179 12.7944 17.91 11.8999C18.5786 11.6728 19.1456 11.217 19.5113 10.613C19.8769 10.0089 20.0178 9.29524 19.9091 8.59754C19.8004 7.89984 19.449 7.26285 18.9169 6.79869C18.3848 6.33452 17.706 6.07292 17 6.05994ZM7.00001 4.05994C7.19779 4.05994 7.39113 4.11859 7.55558 4.22847C7.72003 4.33835 7.8482 4.49453 7.92389 4.67726C7.99957 4.85998 8.01938 5.06105 7.98079 5.25503C7.94221 5.44901 7.84697 5.6272 7.70711 5.76705C7.56726 5.9069 7.38908 6.00214 7.1951 6.04073C7.00112 6.07931 6.80005 6.05951 6.61732 5.98382C6.4346 5.90813 6.27842 5.77996 6.16854 5.61551C6.05866 5.45106 6.00001 5.25772 6.00001 5.05994C6.00001 4.79472 6.10536 4.54037 6.2929 4.35283C6.48044 4.1653 6.73479 4.05994 7.00001 4.05994ZM7.00001 20.0599C6.80222 20.0599 6.60889 20.0013 6.44444 19.8914C6.27999 19.7815 6.15181 19.6254 6.07613 19.4426C6.00044 19.2599 5.98064 19.0588 6.01922 18.8649C6.05781 18.6709 6.15305 18.4927 6.2929 18.3528C6.43275 18.213 6.61093 18.1177 6.80492 18.0792C6.9989 18.0406 7.19996 18.0604 7.38269 18.1361C7.56542 18.2117 7.72159 18.3399 7.83148 18.5044C7.94136 18.6688 8.00001 18.8622 8.00001 19.0599C8.00001 19.3252 7.89465 19.5795 7.70711 19.767C7.51958 19.9546 7.26522 20.0599 7.00001 20.0599ZM17 10.0599C16.8022 10.0599 16.6089 10.0013 16.4444 9.89141C16.28 9.78153 16.1518 9.62535 16.0761 9.44262C16.0004 9.2599 15.9806 9.05883 16.0192 8.86485C16.0578 8.67087 16.153 8.49269 16.2929 8.35283C16.4328 8.21298 16.6109 8.11774 16.8049 8.07916C16.9989 8.04057 17.2 8.06037 17.3827 8.13606C17.5654 8.21175 17.7216 8.33992 17.8315 8.50437C17.9414 8.66882 18 8.86216 18 9.05994C18 9.32516 17.8947 9.57951 17.7071 9.76705C17.5196 9.95458 17.2652 10.0599 17 10.0599Z`,fill:`currentColor`})}),Di=e=>(0,Z.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Z.jsx)(`path`,{d:`M17 22H5C4.20435 22 3.44129 21.6839 2.87868 21.1213C2.31607 20.5587 2 19.7956 2 19V8.99997C2 8.20432 2.31607 7.44125 2.87868 6.87864C3.44129 6.31604 4.20435 5.99997 5 5.99997H6C6.01682 5.1526 6.30235 4.33248 6.81541 3.65789C7.32848 2.98331 8.04255 2.48911 8.85464 2.2466C9.66673 2.00408 10.5349 2.02578 11.3338 2.30856C12.1328 2.59134 12.8213 3.12059 13.3 3.81997C13.7484 4.45911 13.9925 5.21923 14 5.99997H17C17.2652 5.99997 17.5196 6.10532 17.7071 6.29286C17.8946 6.48039 18 6.73475 18 6.99997V9.99997C18.8474 10.0168 19.6675 10.3023 20.3421 10.8154C21.0167 11.3284 21.5109 12.0425 21.7534 12.8546C21.9959 13.6667 21.9742 14.5348 21.6914 15.3338C21.4086 16.1328 20.8794 16.8212 20.18 17.3C19.5409 17.7484 18.7807 17.9925 18 18V21C18 21.2652 17.8946 21.5195 17.7071 21.7071C17.5196 21.8946 17.2652 22 17 22ZM5 7.99997C4.73478 7.99997 4.48043 8.10532 4.29289 8.29286C4.10536 8.48039 4 8.73475 4 8.99997V19C4 19.2652 4.10536 19.5195 4.29289 19.7071C4.48043 19.8946 4.73478 20 5 20H16V16.82C15.9991 16.6596 16.0368 16.5014 16.1099 16.3587C16.183 16.216 16.2894 16.093 16.42 16C16.5502 15.9071 16.7008 15.8468 16.8592 15.8242C17.0175 15.8016 17.179 15.8173 17.33 15.87C17.615 15.9862 17.9254 16.0262 18.2305 15.9858C18.5357 15.9455 18.825 15.8263 19.07 15.64C19.3139 15.4913 19.523 15.292 19.6834 15.0557C19.8439 14.8194 19.9518 14.5515 20 14.27C20.0386 13.986 20.0157 13.6971 19.9329 13.4228C19.85 13.1485 19.7092 12.8951 19.52 12.68C19.2641 12.3691 18.9155 12.1481 18.5252 12.0491C18.1349 11.9502 17.7231 11.9785 17.35 12.13C17.199 12.1827 17.0375 12.1983 16.8792 12.1757C16.7208 12.1531 16.5702 12.0928 16.44 12C16.3094 11.907 16.203 11.7839 16.1299 11.6412C16.0568 11.4985 16.0191 11.3403 16.02 11.18V7.99997H12.82C12.6557 8.00928 12.4915 7.97788 12.3422 7.90855C12.1929 7.83922 12.0631 7.7341 11.9641 7.60253C11.8652 7.47096 11.8003 7.317 11.7752 7.15432C11.75 6.99164 11.7654 6.82526 11.82 6.66997C11.9363 6.38497 11.9762 6.07459 11.9359 5.76945C11.8955 5.46431 11.7763 5.17496 11.59 4.92997C11.4424 4.67913 11.2402 4.46473 10.9984 4.30266C10.7566 4.14058 10.4815 4.03499 10.1934 3.99369C9.90527 3.95239 9.61155 3.97645 9.33399 4.06409C9.05644 4.15173 8.80216 4.3007 8.59 4.49997C8.39298 4.69538 8.23877 4.92966 8.1372 5.1879C8.03562 5.44614 7.9889 5.72269 8 5.99997C8.00232 6.22934 8.04637 6.45637 8.13 6.66997C8.18287 6.82118 8.19863 6.98289 8.17597 7.14147C8.1533 7.30005 8.09287 7.45087 7.99976 7.58122C7.90665 7.71158 7.78358 7.81765 7.64093 7.89053C7.49827 7.9634 7.34019 8.00093 7.18 7.99997H5Z`,fill:`currentColor`})}),Oi=e=>(0,Z.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,...e,children:[(0,Z.jsx)(`path`,{d:`m17.586 11.414-5.93 5.93a1 1 0 0 1-8-8l3.137-3.137a.707.707 0 0 1 1.207.5V10`}),(0,Z.jsx)(`path`,{d:`M20.414 8.586 22 7`}),(0,Z.jsx)(`circle`,{cx:19,cy:10,r:2})]}),ki=e=>(0,Z.jsxs)(`svg`,{width:29,height:28,viewBox:`0 0 29 28`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,Z.jsx)(`path`,{d:`M14.5 18.375C12.085 18.375 10.125 16.415 10.125 14C10.125 11.585 12.085 9.625 14.5 9.625C16.915 9.625 18.875 11.585 18.875 14C18.875 16.415 16.915 18.375 14.5 18.375ZM14.5 11.375C13.0533 11.375 11.875 12.5533 11.875 14C11.875 15.4467 13.0533 16.625 14.5 16.625C15.9467 16.625 17.125 15.4467 17.125 14C17.125 12.5533 15.9467 11.375 14.5 11.375Z`,fill:`currentColor`}),(0,Z.jsx)(`path`,{d:`M18.245 25.8883C18 25.8883 17.755 25.8533 17.51 25.795C16.7867 25.5967 16.18 25.1417 15.795 24.5L15.655 24.2667C14.9667 23.0767 14.0217 23.0767 13.3333 24.2667L13.205 24.4883C12.82 25.1417 12.2133 25.6083 11.49 25.795C10.755 25.9933 9.99668 25.8883 9.35501 25.5033L7.34834 24.3483C6.63668 23.94 6.12334 23.275 5.90168 22.47C5.69168 21.665 5.79668 20.8367 6.20501 20.125C6.54334 19.53 6.63668 18.9933 6.43834 18.655C6.24001 18.3167 5.73834 18.1183 5.05001 18.1183C3.34668 18.1183 1.95834 16.73 1.95834 15.0267V12.9733C1.95834 11.27 3.34668 9.88168 5.05001 9.88168C5.73834 9.88168 6.24001 9.68334 6.43834 9.34501C6.63668 9.00668 6.55501 8.47001 6.20501 7.87501C5.79668 7.16334 5.69168 6.32334 5.90168 5.53001C6.11168 4.72501 6.62501 4.06001 7.34834 3.65168L9.36668 2.49668C10.685 1.71501 12.4233 2.17001 13.2167 3.51168L13.3567 3.74501C14.045 4.93501 14.99 4.93501 15.6783 3.74501L15.8067 3.52334C16.6 2.17001 18.3383 1.71501 19.6683 2.50834L21.675 3.66334C22.3867 4.07168 22.9 4.73668 23.1217 5.54168C23.3317 6.34668 23.2267 7.17501 22.8183 7.88668C22.48 8.48168 22.3867 9.01834 22.585 9.35668C22.7833 9.69501 23.285 9.89334 23.9733 9.89334C25.6767 9.89334 27.065 11.2817 27.065 12.985V15.0383C27.065 16.7417 25.6767 18.13 23.9733 18.13C23.285 18.13 22.7833 18.3283 22.585 18.6667C22.3867 19.005 22.4683 19.5417 22.8183 20.1367C23.2267 20.8483 23.3433 21.6883 23.1217 22.4817C22.9117 23.2867 22.3983 23.9517 21.675 24.36L19.6567 25.515C19.2133 25.76 18.735 25.8883 18.245 25.8883ZM14.5 21.5717C15.5383 21.5717 16.5067 22.225 17.1717 23.38L17.3 23.6017C17.44 23.8467 17.6733 24.0217 17.9533 24.0917C18.2333 24.1617 18.5133 24.1267 18.7467 23.9867L20.765 22.82C21.0683 22.645 21.3017 22.3533 21.395 22.0033C21.4883 21.6533 21.4417 21.2917 21.2667 20.9883C20.6017 19.845 20.52 18.6667 21.0333 17.7683C21.5467 16.87 22.6083 16.3567 23.9383 16.3567C24.685 16.3567 25.28 15.7617 25.28 15.015V12.9617C25.28 12.2267 24.685 11.62 23.9383 11.62C22.6083 11.62 21.5467 11.1067 21.0333 10.2083C20.52 9.31001 20.6017 8.13168 21.2667 6.98834C21.4417 6.68501 21.4883 6.32334 21.395 5.97334C21.3017 5.62334 21.08 5.34334 20.7767 5.15668L18.7583 4.00168C18.2567 3.69834 17.5917 3.87334 17.2883 4.38668L17.16 4.60834C16.495 5.76334 15.5267 6.41668 14.4883 6.41668C13.45 6.41668 12.4817 5.76334 11.8167 4.60834L11.6883 4.37501C11.3967 3.88501 10.7433 3.71001 10.2417 4.00168L8.22334 5.16834C7.92001 5.34334 7.68668 5.63501 7.59334 5.98501C7.50001 6.33501 7.54668 6.69668 7.72168 7.00001C8.38668 8.14334 8.46834 9.32168 7.95501 10.22C7.44168 11.1183 6.38001 11.6317 5.05001 11.6317C4.30334 11.6317 3.70834 12.2267 3.70834 12.9733V15.0267C3.70834 15.7617 4.30334 16.3683 5.05001 16.3683C6.38001 16.3683 7.44168 16.8817 7.95501 17.78C8.46834 18.6783 8.38668 19.8567 7.72168 21C7.54668 21.3033 7.50001 21.665 7.59334 22.015C7.68668 22.365 7.90834 22.645 8.21168 22.8317L10.23 23.9867C10.475 24.1383 10.7667 24.1733 11.035 24.1033C11.315 24.0333 11.5483 23.8467 11.7 23.6017L11.8283 23.38C12.4933 22.2367 13.4617 21.5717 14.5 21.5717Z`,fill:`currentColor`})]}),Ai=e=>(0,Z.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Z.jsx)(`path`,{d:`M18.2099 13.1289L9.98776 20.3232C9.01788 21.1719 7.5 20.4831 7.5 19.1943L7.5 4.80565C7.5 3.51691 9.01788 2.82815 9.98775 3.67678L18.2099 10.8711C18.8929 11.4688 18.8929 12.5312 18.2099 13.1289Z`,fill:`currentColor`})});function Q({icon:e,text:t,rightIcon:n,className:r}){return(0,Z.jsxs)(`div`,{className:P(`flex min-w-0 w-full items-center justify-between`,Ne,r),children:[(0,Z.jsxs)(`div`,{className:P(`flex min-w-0 items-center`,Ne),children:[(0,Z.jsx)(`span`,{className:Ie,"aria-hidden":!0,children:e}),(0,Z.jsx)(`span`,{className:`text-sm font-normal leading-5`,children:t})]}),n?(0,Z.jsx)(`span`,{className:Ie,"aria-hidden":!0,children:n}):null]})}var ji=e=>(0,Z.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Z.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M20.781 10.5L13.281 3H12.2205L4.72049 10.5L5.78099 11.5605L12 5.3415V21H13.5V5.34L19.719 11.5605L20.781 10.5Z`,fill:`currentColor`})}),Mi=e=>(0,Z.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Z.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M4.72049 13.5L12.2205 21H13.281L20.781 13.5L19.7205 12.4395L13.5 18.6585V3H12V18.66L5.78099 12.438L4.72049 13.5Z`,fill:`currentcolor`})}),Ni=e=>(0,Z.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 12 14`,fill:`none`,...e,children:[(0,Z.jsx)(`path`,{d:`M9.79249 10.1936C10.2876 10.1936 10.6902 10.5962 10.6902 11.0913C10.6902 11.5864 10.2876 11.989 9.79249 11.989C9.29739 11.989 8.89478 11.5864 8.89478 11.0913C8.89478 10.5962 9.29739 10.1936 9.79249 10.1936ZM9.79249 9.10547C8.69891 9.10547 7.80664 9.99774 7.80664 11.0913C7.80664 12.1849 8.69891 13.0772 9.79249 13.0772C10.8861 13.0772 11.7783 12.1849 11.7783 11.0913C11.7783 9.99774 10.8861 9.10547 9.79249 9.10547Z`,fill:`currentColor`}),(0,Z.jsx)(`path`,{d:`M2.23585 10.1936C2.73095 10.1936 3.13356 10.5962 3.13356 11.0913C3.13356 11.5864 2.73095 11.989 2.23585 11.989C1.74075 11.989 1.33814 11.5864 1.33814 11.0913C1.33814 10.5962 1.74075 10.1936 2.23585 10.1936ZM2.23585 9.10547C1.14227 9.10547 0.25 9.99774 0.25 11.0913C0.25 12.1849 1.14227 13.0772 2.23585 13.0772C3.32943 13.0772 4.2217 12.1849 4.2217 11.0913C4.2217 9.99774 3.32943 9.10547 2.23585 9.10547Z`,fill:`currentColor`}),(0,Z.jsx)(`path`,{d:`M2.23585 2.16846C2.73095 2.16846 3.13356 2.57107 3.13356 3.06617C3.13356 3.56128 2.73095 3.96389 2.23585 3.96389C1.74075 3.96389 1.33814 3.56128 1.33814 3.06617C1.33814 2.57107 1.74075 2.16846 2.23585 2.16846ZM2.23585 1.08032C1.14227 1.08032 0.25 1.97259 0.25 3.06617C0.25 4.15975 1.14227 5.05202 2.23585 5.05202C3.32943 5.05202 4.2217 4.15975 4.2217 3.06617C4.2217 1.97259 3.32943 1.08032 2.23585 1.08032Z`,fill:`currentColor`}),(0,Z.jsx)(`path`,{d:`M2.23633 9.17627V4.55713`,stroke:`currentColor`,strokeMiterlimit:10}),(0,Z.jsx)(`path`,{d:`M9.79304 9.17605V4.33928C9.79304 3.63743 9.22176 3.06616 8.51992 3.06616H7.38281`,stroke:`currentColor`,strokeMiterlimit:10}),(0,Z.jsx)(`path`,{d:`M7.38191 5.21531L5.23828 3.06624L7.38191 0.922607V5.21531Z`,fill:`currentColor`})]}),Pi=`!w-auto whitespace-nowrap`;function Fi({onClose:e}){let{t}=a(`openhands`),{setMessageToSend:n}=W(),{data:r}=q(),i=r?.git_provider;return(0,Z.jsxs)(B,{testId:`git-tools-submenu`,className:`w-max`,children:[(0,Z.jsx)(V,{testId:`git-pull-button`,onClick:()=>{n(j()),e()},className:Pi,children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(Mi,{width:16,height:16}),text:t(D.COMMON$GIT_PULL)})}),(0,Z.jsx)(V,{testId:`git-push-button`,onClick:()=>{n(ee(i)),e()},className:Pi,children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(ji,{width:16,height:16}),text:t(D.COMMON$GIT_PUSH)})}),(0,Z.jsx)(V,{testId:`create-pr-button`,onClick:()=>{n(ie(i)),e()},className:Pi,children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(Ni,{width:16,height:16}),text:t(D.COMMON$CREATE_PR)})}),(0,Z.jsx)(V,{testId:`create-new-branch-button`,onClick:()=>{n(re()),e()},className:Pi,children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(Ei,{width:16,height:16}),text:t(D.COMMON$CREATE_NEW_BRANCH)})})]})}var Ii=e=>(0,Z.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:25,viewBox:`0 0 24 25`,fill:`none`,...e,children:(0,Z.jsx)(`path`,{d:`M15.29 10.79L12.51 13.57C12.3436 13.5257 12.1723 13.5022 12 13.5C11.4696 13.5 10.9609 13.7107 10.5858 14.0858C10.2107 14.4609 10 14.9696 10 15.5C10.0023 15.6722 10.0258 15.8435 10.07 16.01L9.29003 16.79C9.1963 16.883 9.12191 16.9936 9.07114 17.1154C9.02037 17.2373 8.99423 17.368 8.99423 17.5C8.99423 17.632 9.02037 17.7627 9.07114 17.8846C9.12191 18.0064 9.1963 18.117 9.29003 18.21C9.38299 18.3037 9.49359 18.3781 9.61545 18.4289C9.73731 18.4797 9.86802 18.5058 10 18.5058C10.132 18.5058 10.2627 18.4797 10.3846 18.4289C10.5065 18.3781 10.6171 18.3037 10.71 18.21L11.49 17.43C11.6565 17.4743 11.8278 17.4978 12 17.5C12.5305 17.5 13.0392 17.2893 13.4142 16.9142C13.7893 16.5391 14 16.0304 14 15.5C13.9978 15.3278 13.9743 15.1565 13.93 14.99L16.71 12.21C16.8983 12.0217 17.0041 11.7663 17.0041 11.5C17.0041 11.2337 16.8983 10.9783 16.71 10.79C16.5217 10.6017 16.2663 10.4959 16 10.4959C15.7337 10.4959 15.4783 10.6017 15.29 10.79ZM12 4.5C10.6868 4.5 9.38645 4.75866 8.1732 5.2612C6.95994 5.76375 5.85755 6.50035 4.92896 7.42893C3.0536 9.3043 2.00003 11.8478 2.00003 14.5C1.99511 16.4806 2.58375 18.4172 3.69003 20.06C3.83855 20.2801 4.06844 20.4322 4.32911 20.4829C4.58979 20.5335 4.8599 20.4785 5.08003 20.33C5.30016 20.1815 5.45227 19.9516 5.50291 19.6909C5.55354 19.4302 5.49855 19.1601 5.35003 18.94C4.54455 17.7355 4.08131 16.3349 4.00978 14.8877C3.93826 13.4405 4.26113 12.001 4.94392 10.723C5.62671 9.44501 6.64378 8.37643 7.88653 7.63139C9.12928 6.88634 10.5511 6.49281 12 6.49281C13.449 6.49281 14.8708 6.88634 16.1135 7.63139C17.3563 8.37643 18.3734 9.44501 19.0561 10.723C19.7389 12.001 20.0618 13.4405 19.9903 14.8877C19.9188 16.3349 19.4555 17.7355 18.65 18.94C18.5763 19.0489 18.5248 19.1714 18.4985 19.3002C18.4722 19.4291 18.4716 19.5619 18.4966 19.691C18.5217 19.8201 18.572 19.943 18.6447 20.0527C18.7173 20.1623 18.8109 20.2566 18.92 20.33C19.0856 20.4412 19.2806 20.5004 19.48 20.5C19.6438 20.5002 19.8052 20.4603 19.9499 20.3835C20.0946 20.3068 20.2183 20.1957 20.31 20.06C21.4163 18.4172 22.005 16.4806 22 14.5C22 11.8478 20.9465 9.3043 19.0711 7.42893C17.1957 5.55357 14.6522 4.5 12 4.5Z`,fill:`currentColor`})}),Li=e=>(0,Z.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 20 21`,fill:`none`,...e,children:[(0,Z.jsx)(`path`,{d:`M15.9532 15.8037C16.7679 15.8037 17.4304 16.4662 17.4304 17.2809C17.4304 18.0955 16.7679 18.758 15.9532 18.758C15.1385 18.758 14.4761 18.0955 14.4761 17.2809C14.4761 16.4662 15.1385 15.8037 15.9532 15.8037ZM15.9532 14.0132C14.1538 14.0132 12.6855 15.4814 12.6855 17.2809C12.6855 19.0803 14.1538 20.5485 15.9532 20.5485C17.7527 20.5485 19.2209 19.0803 19.2209 17.2809C19.2209 15.4814 17.7527 14.0132 15.9532 14.0132Z`,fill:`currentColor`}),(0,Z.jsx)(`path`,{d:`M3.51768 15.8037C4.33236 15.8037 4.99485 16.4662 4.99485 17.2809C4.99485 18.0955 4.33236 18.758 3.51768 18.758C2.703 18.758 2.04051 18.0955 2.04051 17.2809C2.04051 16.4662 2.703 15.8037 3.51768 15.8037ZM3.51768 14.0132C1.71822 14.0132 0.25 15.4814 0.25 17.2809C0.25 19.0803 1.71822 20.5485 3.51768 20.5485C5.31714 20.5485 6.78536 19.0803 6.78536 17.2809C6.78536 15.4814 5.31714 14.0132 3.51768 14.0132Z`,fill:`currentColor`}),(0,Z.jsx)(`path`,{d:`M3.51768 2.59862C4.33236 2.59862 4.99485 3.2611 4.99485 4.07579C4.99485 4.89047 4.33236 5.55296 3.51768 5.55296C2.703 5.55296 2.04051 4.89047 2.04051 4.07579C2.04051 3.2611 2.703 2.59862 3.51768 2.59862ZM3.51768 0.808105C1.71822 0.808105 0.25 2.27632 0.25 4.07579C0.25 5.87525 1.71822 7.34347 3.51768 7.34347C5.31714 7.34347 6.78536 5.87525 6.78536 4.07579C6.78536 2.27632 5.31714 0.808105 3.51768 0.808105Z`,fill:`currentColor`}),(0,Z.jsx)(`path`,{d:`M3.51758 14.1295V6.52881`,stroke:`currentColor`,strokeWidth:2,strokeMiterlimit:10}),(0,Z.jsx)(`path`,{d:`M15.9523 14.1294V6.17058C15.9523 5.0157 15.0123 4.07568 13.8574 4.07568H11.9863`,stroke:`currentColor`,strokeWidth:2,strokeMiterlimit:10}),(0,Z.jsx)(`path`,{d:`M11.9863 7.6119L8.45898 4.07565L11.9863 0.54834V7.6119Z`,fill:`currentColor`})]}),Ri=e=>(0,Z.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Z.jsx)(`path`,{d:`M4 4C4 2.89543 4.89543 2 6 2H14C14.2652 2 14.5196 2.10536 14.7071 2.29289L19.7071 7.29289C19.8946 7.48043 20 7.73478 20 8V20C20 21.1046 19.1046 22 18 22H6C4.89543 22 4 21.1046 4 20V4ZM17.5858 8L14 4.41421V8H17.5858ZM12 4L6 4V20H18V10H13C12.4477 10 12 9.55228 12 9V4ZM8 13C8 12.4477 8.44772 12 9 12H15C15.5523 12 16 12.4477 16 13C16 13.5523 15.5523 14 15 14H9C8.44772 14 8 13.5523 8 13ZM8 17C8 16.4477 8.44772 16 9 16H15C15.5523 16 16 16.4477 16 17C16 17.5523 15.5523 18 15 18H9C8.44772 18 8 17.5523 8 17Z`,fill:`currentColor`})}),zi=e=>(0,Z.jsx)(`svg`,{width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,Z.jsx)(`path`,{d:`M2.71996 7.64998C2.91552 7.7074 3.10351 7.78797 3.27996 7.88998C3.89978 8.25991 4.60814 8.45523 5.32996 8.45523C6.05178 8.45523 6.76015 8.25991 7.37996 7.88998C7.77042 7.66914 8.21137 7.55307 8.65996 7.55307C9.10855 7.55307 9.5495 7.66914 9.93996 7.88998C10.5673 8.24867 11.2773 8.43735 12 8.43735C12.7226 8.43735 13.4327 8.24867 14.06 7.88998C14.4504 7.66914 14.8914 7.55307 15.34 7.55307C15.7885 7.55307 16.2295 7.66914 16.62 7.88998C17.2537 8.25217 17.97 8.44503 18.7 8.44998C19.4051 8.44852 20.0966 8.25492 20.7 7.88998C20.8764 7.78797 21.0644 7.7074 21.26 7.64998C21.5146 7.57572 21.7292 7.40336 21.8568 7.17081C21.9843 6.93827 22.0142 6.66459 21.94 6.40998C21.8657 6.15537 21.6933 5.94069 21.4608 5.81317C21.2282 5.68564 20.9546 5.65572 20.7 5.72998C20.3494 5.83818 20.0135 5.98932 19.7 6.17998C19.3814 6.36627 19.019 6.46446 18.65 6.46446C18.2809 6.46446 17.9185 6.36627 17.6 6.17998C16.9066 5.79105 16.1249 5.58679 15.33 5.58679C14.535 5.58679 13.7533 5.79105 13.06 6.17998C12.738 6.36703 12.3723 6.46556 12 6.46556C11.6276 6.46556 11.2619 6.36703 10.94 6.17998C10.2466 5.79105 9.46495 5.58679 8.66996 5.58679C7.87497 5.58679 7.09332 5.79105 6.39996 6.17998C6.08139 6.36627 5.719 6.46446 5.34996 6.46446C4.98092 6.46446 4.61853 6.36627 4.29996 6.17998C3.98645 5.98932 3.65057 5.83818 3.29996 5.72998C3.04535 5.65572 2.77167 5.68564 2.53913 5.81317C2.30658 5.94069 2.13422 6.15537 2.05996 6.40998C1.9857 6.66459 2.01562 6.93827 2.14315 7.17081C2.27067 7.40336 2.48535 7.57572 2.73996 7.64998H2.71996ZM20.72 15.73C20.3694 15.8382 20.0335 15.9893 19.72 16.18C19.4014 16.3663 19.039 16.4645 18.67 16.4645C18.3009 16.4645 17.9385 16.3663 17.62 16.18C16.9266 15.7911 16.1449 15.5868 15.35 15.5868C14.555 15.5868 13.7733 15.7911 13.08 16.18C12.758 16.367 12.3923 16.4656 12.02 16.4656C11.6476 16.4656 11.2819 16.367 10.96 16.18C10.2666 15.7911 9.48495 15.5868 8.68996 15.5868C7.89497 15.5868 7.11332 15.7911 6.41996 16.18C6.10139 16.3663 5.739 16.4645 5.36996 16.4645C5.00092 16.4645 4.63853 16.3663 4.31996 16.18C4.00645 15.9893 3.67057 15.8382 3.31996 15.73C3.19389 15.6932 3.06182 15.6816 2.93127 15.6959C2.80073 15.7102 2.67427 15.75 2.55913 15.8132C2.44398 15.8763 2.3424 15.9615 2.26019 16.0639C2.17797 16.1663 2.11673 16.2839 2.07996 16.41C2.04319 16.536 2.03161 16.6681 2.04589 16.7987C2.06016 16.9292 2.1 17.0557 2.16315 17.1708C2.22629 17.286 2.3115 17.3875 2.4139 17.4698C2.5163 17.552 2.63389 17.6132 2.75996 17.65C2.95552 17.7074 3.14351 17.788 3.31996 17.89C3.93978 18.2599 4.64814 18.4552 5.36996 18.4552C6.09178 18.4552 6.80015 18.2599 7.41996 17.89C7.81042 17.6691 8.25137 17.5531 8.69996 17.5531C9.14855 17.5531 9.5895 17.6691 9.97996 17.89C10.6073 18.2487 11.3173 18.4374 12.04 18.4374C12.7626 18.4374 13.4727 18.2487 14.1 17.89C14.4904 17.6691 14.9314 17.5531 15.38 17.5531C15.8285 17.5531 16.2695 17.6691 16.66 17.89C17.2937 18.2522 18.01 18.445 18.74 18.45C19.4451 18.4485 20.1366 18.2549 20.74 17.89C20.9164 17.788 21.1044 17.7074 21.3 17.65C21.5546 17.5757 21.7692 17.4034 21.8968 17.1708C22.0243 16.9383 22.0542 16.6646 21.98 16.41C21.9057 16.1554 21.7333 15.9407 21.5008 15.8132C21.2682 15.6856 20.9946 15.6557 20.74 15.73H20.72ZM20.72 10.73C20.3694 10.8382 20.0335 10.9893 19.72 11.18C19.4014 11.3663 19.039 11.4645 18.67 11.4645C18.3009 11.4645 17.9385 11.3663 17.62 11.18C16.9266 10.7911 16.1449 10.5868 15.35 10.5868C14.555 10.5868 13.7733 10.7911 13.08 11.18C12.758 11.367 12.3923 11.4656 12.02 11.4656C11.6476 11.4656 11.2819 11.367 10.96 11.18C10.2666 10.7911 9.48495 10.5868 8.68996 10.5868C7.89497 10.5868 7.11332 10.7911 6.41996 11.18C6.10139 11.3663 5.739 11.4645 5.36996 11.4645C5.00092 11.4645 4.63853 11.3663 4.31996 11.18C4.00645 10.9893 3.67057 10.8382 3.31996 10.73C3.18902 10.6805 3.04917 10.6591 2.90944 10.6672C2.76971 10.6752 2.63322 10.7125 2.5088 10.7766C2.38438 10.8406 2.2748 10.9301 2.18715 11.0393C2.0995 11.1484 2.03573 11.2747 1.99996 11.41C1.96319 11.536 1.95161 11.6681 1.96589 11.7987C1.98016 11.9292 2.02 12.0557 2.08315 12.1708C2.14629 12.286 2.2315 12.3875 2.3339 12.4698C2.4363 12.552 2.55389 12.6132 2.67996 12.65C2.87552 12.7074 3.06351 12.788 3.23996 12.89C3.85978 13.2599 4.56814 13.4552 5.28996 13.4552C6.01178 13.4552 6.72015 13.2599 7.33996 12.89C7.73042 12.6691 8.17137 12.5531 8.61996 12.5531C9.06855 12.5531 9.5095 12.6691 9.89996 12.89C10.5273 13.2487 11.2373 13.4374 11.96 13.4374C12.6826 13.4374 13.3927 13.2487 14.02 12.89C14.4104 12.6691 14.8514 12.5531 15.3 12.5531C15.7485 12.5531 16.1895 12.6691 16.58 12.89C17.2137 13.2522 17.93 13.445 18.66 13.45C19.3651 13.4485 20.0566 13.2549 20.66 12.89C20.8364 12.788 21.0244 12.7074 21.22 12.65C21.4746 12.5757 21.6892 12.4034 21.8168 12.1708C21.9443 11.9383 21.9742 11.6646 21.9 11.41C21.8257 11.1554 21.6533 10.9407 21.4208 10.8132C21.1882 10.6856 20.9146 10.6557 20.66 10.73H20.72Z`,fill:`currentColor`})}),Bi=`INCREASE_TEST_COVERAGE`,Vi=`I want to increase the test coverage of the repository in the current directory.
|
|
4
|
+
|
|
5
|
+
Please investigate the repo to figure out what language is being used, and where tests are located, if there are any.
|
|
6
|
+
|
|
7
|
+
If there are no tests already in the repo, add a very basic test, using typical testing strategies for the language involved.
|
|
8
|
+
|
|
9
|
+
If there are existing tests, find a function or method which lacks adequate unit tests, and add unit tests for it. Be sure to respect the projects existing test structures.
|
|
10
|
+
|
|
11
|
+
Make sure the tests pass before you finish.`,Hi=`AUTO_MERGE_PRS`,Ui=`Please add a GitHub action to this repository which automatically merges pull requests from Dependabot so long as the tests are passing.`,Wi=`FIX_README`,Gi=`Please look at the README and make the following improvements, if they make sense:
|
|
12
|
+
* correct any typos that you find
|
|
13
|
+
* add missing language annotations on codeblocks
|
|
14
|
+
* if there are references to other files or other sections of the README, turn them into links
|
|
15
|
+
* make sure the readme has an h1 title towards the top
|
|
16
|
+
* make sure any existing sections in the readme are appropriately separated with headings
|
|
17
|
+
|
|
18
|
+
If there are no obvious ways to improve the README, make at least one small change to make the wording clearer or friendlier`,Ki=`CLEAN_DEPENDENCIES`,qi=`Examine the dependencies of the current codebase. Make sure you can run the code and any tests.
|
|
19
|
+
|
|
20
|
+
Then run any commands necessary to update all dependencies to the latest versions, and make sure the code continues to run correctly and the tests pass. If changes need to be made to the codebase, go ahead and make those changes. You can look up documentation for new versions using the browser if you need to.
|
|
21
|
+
|
|
22
|
+
If a particular dependency update is causing trouble (e.g. breaking changes that you can't fix), you can revert it and send a message to the user explaining why.
|
|
23
|
+
|
|
24
|
+
Additionally, if you're able to prune any dependencies that are obviously unused, please do so. You may use third party tools to check for unused dependencies.`,Ji=`ADD_DOCS`,Yi=`Investigate the documentation in the root of the current repo. Please add a CODE_OF_CONDUCT.md and CONTRIBUTORS.md with good defaults if they are not present. Use information in the README to inform the CONTRIBUTORS doc. If there is no LICENSE currently in the repo, please add the Apache 2.0 license. Add links to all these documents into the README`,Xi=`ADD_DOCKERFILE`,Zi=`Investigate the current repo to understand the installation instructions. Then create a Dockerfile that runs the application, using best practices like arguments and multi-stage builds wherever appropriate.
|
|
25
|
+
|
|
26
|
+
If there is an existing Dockerfile, and there are ways to improve it according to best practices, do so.`,Qi={[Bi]:Vi,[Hi]:Ui,[Wi]:Gi,[Ki]:qi,[Ji]:Yi,[Xi]:Zi},$i=`!w-auto whitespace-nowrap`;function ea({onClose:e}){let{t}=a(`openhands`),{setMessageToSend:n}=W();return(0,Z.jsxs)(B,{testId:`macros-submenu`,className:`overflow-visible`,children:[(0,Z.jsx)(V,{testId:`increase-test-coverage-button`,onClick:()=>{n(Qi.INCREASE_TEST_COVERAGE),e()},className:$i,children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(Ii,{width:16,height:16}),text:t(D.INCREASE_TEST_COVERAGE)})}),(0,Z.jsx)(V,{testId:`fix-readme-button`,onClick:()=>{n(Qi.FIX_README),e()},className:$i,children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(Ri,{width:16,height:16}),text:t(D.FIX_README)})}),(0,Z.jsx)(V,{testId:`auto-merge-prs-button`,onClick:()=>{n(Qi.AUTO_MERGE_PRS),e()},className:$i,children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(Li,{width:16,height:16}),text:t(D.AUTO_MERGE_PRS)})}),(0,Z.jsx)(V,{testId:`clean-dependencies-button`,onClick:()=>{n(Qi.CLEAN_DEPENDENCIES),e()},className:$i,children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(zi,{width:16,height:16}),text:t(D.CLEAN_DEPENDENCIES)})})]})}function ta(){let{conversationId:e,navigate:t}=ke(),{data:n,isLoading:r}=q(),{data:i,isLoading:a}=St(),o=Tt(),s=Bt(),c=l({mutationKey:Vt}),u=l({mutationKey:Ot}),d=e?.startsWith(`task-`)??!1,f=d||c>0||u>0,p=i?.profiles??[],m=!!e,h=m?n?.launched_agent_profile?.agent_profile_id??i?.active_agent_profile_id??null:i?.active_agent_profile_id??null,g=p.find(e=>e.id!=null&&e.id===h)?.name??null,_=(0,Y.useCallback)(r=>{if(d||!r.id||r.id===h)return;if(!m){s.mutate(r.id);return}let i=e?it(e):null,a={agentProfileId:r.id,entryPoint:`blank_conversation_profile_picker`};n?.selected_repository&&(a.repository={name:n.selected_repository,gitProvider:n.git_provider??`github`,branch:n.selected_branch??void 0}),n?.selected_workspace&&(a.workingDir=n.selected_workspace,a.workspaceMode=i?.workspace_mode??`local_repo`),i?.plugins?.length&&(a.plugins=i.plugins),o.mutateAsync(a).then(e=>t(`/conversations/${e.conversation_id}`)).catch(()=>{})},[s,n,e,o,h,m,d,t]);return{profiles:p,currentProfileId:h,currentProfileName:g,isInConversation:m,isLoading:a||d||m&&r,isSwitching:f,selectProfile:_}}function na({onClose:e,dividerInset:t,settingsLinkClassName:n,settingsIconClassName:r}){let{t:i}=a(`openhands`),{profiles:o,currentProfileId:s,isInConversation:c,isSwitching:l,selectProfile:u}=ta(),d=t=>{u(t),e()};return(0,Z.jsxs)(Z.Fragment,{children:[o.length>0&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`li`,{role:`presentation`,className:`px-2 pt-1 pb-0.5`,children:(0,Z.jsx)(K.Text,{className:`text-[11px] font-medium text-[var(--oh-text-dim)] uppercase tracking-wide leading-4`,children:i(D.SETTINGS$AVAILABLE_PROFILES)})}),o.map(t=>{let n=t.id!=null&&t.id===s;return(0,Z.jsxs)(V,{testId:`chat-input-agent-profile-option-${t.name}`,isDisabled:l,onClick:r=>{if(r.preventDefault(),r.stopPropagation(),n){e();return}d(t)},className:P(`flex items-center gap-2`,n&&`bg-[var(--oh-interactive-hover)]`),children:[(0,Z.jsx)(`span`,{className:`flex-1 truncate text-sm leading-5`,title:t.name,children:t.name}),n&&(0,Z.jsx)(Rt,{width:14,height:14,className:`shrink-0`,"aria-hidden":!0})]},t.id??t.name)}),c&&(0,Z.jsx)(`li`,{role:`presentation`,className:`px-2 pt-0.5 pb-1`,children:(0,Z.jsx)(K.Text,{className:`text-[11px] text-[var(--oh-text-dim)] leading-4`,children:i(D.CHAT$START_NEW_WITH_PROFILE_HINT)})})]}),o.length>0&&(0,Z.jsx)(Ge,{inset:t}),(0,Z.jsx)(`li`,{className:`text-sm`,children:(0,Z.jsxs)(Ae,{to:`/settings/agents`,onClick:e,className:P(`flex h-[30px] items-center gap-2 rounded p-2 leading-5 text-[var(--oh-foreground)] hover:bg-[var(--oh-interactive-hover)] transition-colors`,n),children:[(0,Z.jsx)(dn,{width:16,height:16,className:P(`shrink-0`,r),"aria-hidden":!0}),(0,Z.jsx)(`span`,{children:i(D.CHAT$MANAGE_AGENT_PROFILES)})]})})]})}function ra({isDisabled:e,children:t,placement:n=`right`}){let{t:r}=a(`openhands`);return e?(0,Z.jsx)(Me,{content:r(D.CONVERSATION$UNAVAILABLE_FOR_ARCHIVES),placement:n,tooltipClassName:`bg-white text-black text-xs font-medium leading-5`,children:(0,Z.jsx)(`span`,{className:`block w-full`,children:t})}):t}function ia(){let{data:e}=q();return Ze(e?.sandbox_status)}function aa({onClose:e,onShowSkills:t,onShowPlugins:n,onShowHooks:r,onShowAgentTools:i,shouldShowAgentTools:o=!0,shouldShowHooks:s=!1,shouldShowPlugins:c=!1,showAgentProfileSwitch:l=!1,footerAction:u}){let{t:d}=a(`openhands`),{data:f}=q(),{providers:p}=Lt(),m=ia(),[h,g]=(0,Y.useState)(null),_=!!f?.selected_repository,v=p.length>0,y=_&&v,b=e=>{m||g(h===e?null:e)},x=()=>{g(null),e()};return(0,Z.jsxs)(B,{ref:yt(x),testId:`tools-context-menu`,position:`top`,alignment:`left`,className:`left-[-16px] mb-2 bottom-full overflow-visible min-w-[200px]`,children:[l&&(0,Z.jsxs)(`div`,{className:`relative group/agent-profile`,children:[(0,Z.jsx)(V,{testId:`switch-agent-profile-button`,onClick:()=>b(`agent-profile`),children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(fn,{width:16,height:16,"aria-hidden":!0}),text:d(D.CHAT$SWITCH_AGENT_PROFILE),rightIcon:(0,Z.jsx)(Ai,{width:10,height:10})})}),(0,Z.jsx)(`div`,{className:P(`absolute left-full top-[-4px] z-60 opacity-0 invisible pointer-events-none transition-all duration-200 ml-[1px]`,`group-hover/agent-profile:opacity-100 group-hover/agent-profile:visible group-hover/agent-profile:pointer-events-auto`,`hover:opacity-100 hover:visible hover:pointer-events-auto`,h===`agent-profile`&&`opacity-100 visible pointer-events-auto`),children:(0,Z.jsx)(B,{testId:`agent-profile-submenu`,className:`min-w-[220px] max-w-[320px] max-h-[60vh] overflow-y-auto gap-0`,children:(0,Z.jsx)(na,{onClose:x,dividerInset:`menu`})})})]}),y&&(0,Z.jsxs)(`div`,{className:`relative group/git`,children:[(0,Z.jsx)(ra,{isDisabled:m,children:(0,Z.jsx)(V,{testId:`git-tools-button`,onClick:()=>b(`git`),isDisabled:m,children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(Ei,{width:16,height:16}),text:d(D.COMMON$GIT_TOOLS),rightIcon:(0,Z.jsx)(Ai,{width:10,height:10})})})}),!m&&(0,Z.jsx)(`div`,{className:P(`absolute left-full top-[-6px] z-60 opacity-0 invisible pointer-events-none transition-all duration-200 ml-[1px]`,`group-hover/git:opacity-100 group-hover/git:visible group-hover/git:pointer-events-auto`,`hover:opacity-100 hover:visible hover:pointer-events-auto`,h===`git`&&`opacity-100 visible pointer-events-auto`),children:(0,Z.jsx)(Fi,{onClose:x})})]}),(0,Z.jsxs)(`div`,{className:`relative group/macros`,children:[(0,Z.jsx)(ra,{isDisabled:m,children:(0,Z.jsx)(V,{testId:`macros-button`,onClick:()=>b(`macros`),isDisabled:m,children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(ki,{width:16,height:16}),text:d(D.COMMON$MACROS),rightIcon:(0,Z.jsx)(Ai,{width:10,height:10})})})}),!m&&(0,Z.jsx)(`div`,{className:P(`absolute left-full top-[-4px] z-60 opacity-0 invisible pointer-events-none transition-all duration-200 ml-[1px]`,`group-hover/macros:opacity-100 group-hover/macros:visible group-hover/macros:pointer-events-auto`,`hover:opacity-100 hover:visible hover:pointer-events-auto`,h===`macros`&&`opacity-100 visible pointer-events-auto`),children:(0,Z.jsx)(ea,{onClose:x})})]}),o&&(0,Z.jsx)(Ge,{inset:`menu`}),(0,Z.jsx)(ra,{isDisabled:m,children:(0,Z.jsx)(V,{testId:`show-skills-button`,onClick:t,isDisabled:m,children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(Mt,{width:16,height:16,className:`stroke-[1.75]`,"aria-hidden":!0}),text:d(D.CONVERSATION$SHOW_SKILLS)})})}),c&&(0,Z.jsx)(ra,{isDisabled:m,children:(0,Z.jsx)(V,{testId:`show-plugins-button`,onClick:n,isDisabled:m,children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(Di,{width:16,height:16,"aria-hidden":!0}),text:d(D.CONVERSATION$SHOW_PLUGINS)})})}),s&&(0,Z.jsx)(ra,{isDisabled:m,children:(0,Z.jsx)(V,{testId:`show-hooks-button`,onClick:r,isDisabled:m,children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(Oi,{width:16,height:16,"aria-hidden":!0}),text:d(D.CONVERSATION$SHOW_HOOKS)})})}),o&&(0,Z.jsx)(ra,{isDisabled:m,children:(0,Z.jsx)(V,{testId:`show-agent-tools-button`,onClick:i,isDisabled:m,children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(We,{width:16,height:16}),text:d(D.BUTTON$SHOW_AGENT_TOOLS_AND_METADATA)})})}),u&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(Ge,{}),(0,Z.jsx)(V,{testId:u.testId,onClick:e=>{e.preventDefault(),e.stopPropagation(),u.onClick(),x()},children:(0,Z.jsx)(Q,{icon:u.icon,text:u.label})})]})]})}function oa({agentClass:e,openhandsVersion:t,onClose:n}){let{t:r}=a(`openhands`);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(rt,{onClose:n,testId:`close-system-message-modal`}),(0,Z.jsxs)(`div`,{className:`flex w-full min-w-0 flex-col gap-2 pr-6`,children:[(0,Z.jsx)(Ce,{title:r(D.SYSTEM_MESSAGE_MODAL$TITLE)}),(e||t)&&(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[e&&(0,Z.jsxs)(`div`,{className:`text-sm`,children:[(0,Z.jsx)(K.Text,{className:`font-semibold text-[var(--oh-text-tertiary)]`,children:r(D.SYSTEM_MESSAGE_MODAL$AGENT_CLASS)}),` `,(0,Z.jsx)(K.Text,{className:`font-medium text-content-2`,children:e})]}),t&&(0,Z.jsxs)(`div`,{className:`text-sm`,children:[(0,Z.jsx)(K.Text,{className:`font-semibold text-[var(--oh-text-tertiary)]`,children:r(D.SYSTEM_MESSAGE_MODAL$OPENHANDS_VERSION)}),` `,(0,Z.jsx)(K.Text,{className:`text-content-2`,children:t})]})]})]})]})}function sa({isActive:e,children:t,onClick:n,className:r,disabled:i=!1}){return(0,Z.jsx)(`button`,{type:`button`,disabled:i,className:P(`px-4 py-2 font-normal border-b-2 transition-colors`,e?`border-foreground text-foreground`:`border-transparent text-[var(--oh-muted)] hover:text-[var(--oh-foreground)]`,i&&`opacity-50 cursor-not-allowed`,r),onClick:n,"aria-selected":e,role:`tab`,children:t})}function ca({activeTab:e,onTabChange:t,hasTools:n}){let{t:r}=a(`openhands`);return(0,Z.jsxs)(`div`,{className:`mb-2 flex border-b border-[var(--oh-border)]`,role:`tablist`,children:[(0,Z.jsx)(sa,{isActive:e===`system`,onClick:()=>t(`system`),children:r(D.SYSTEM_MESSAGE_MODAL$SYSTEM_MESSAGE_TAB)}),n&&(0,Z.jsx)(sa,{isActive:e===`tools`,onClick:()=>t(`tools`),children:r(D.SYSTEM_MESSAGE_MODAL$TOOLS_TAB)})]})}var la=Re(`whitespace-pre-wrap`,{variants:{size:{default:`text-sm`,small:`text-xs`},font:{default:``,mono:`font-mono`},lineHeight:{default:``,relaxed:`leading-relaxed`},background:{default:``,dark:`bg-base`},textColor:{default:``,light:`text-[var(--oh-text-tertiary)]`},padding:{default:``,medium:`p-3`,large:`px-5`},borderRadius:{default:``,medium:`rounded-md`},shadow:{default:``,inner:`shadow-inner`},maxHeight:{default:``,small:`max-h-[400px]`,large:`max-h-[60vh]`},overflow:{default:``,auto:`overflow-auto`}},defaultVariants:{size:`default`,font:`default`,lineHeight:`default`,background:`default`,textColor:`default`,padding:`default`,borderRadius:`default`,shadow:`default`,maxHeight:`default`,overflow:`default`}});function ua({size:e,font:t,lineHeight:n,background:r,textColor:i,padding:a,borderRadius:o,shadow:s,maxHeight:c,overflow:l,className:u,testId:d,children:f}){return(0,Z.jsx)(`pre`,{"data-testid":d,className:P(la({size:e,font:t,lineHeight:n,background:r,textColor:i,padding:a,borderRadius:o,shadow:s,maxHeight:c,overflow:l}),u),children:f})}function da({content:e}){return(0,Z.jsx)(ua,{size:`small`,font:`mono`,lineHeight:`relaxed`,padding:`medium`,className:`text-[var(--oh-text-tertiary)]`,children:e})}function fa({parameters:e}){let{t}=a(`openhands`);return(0,Z.jsxs)(`div`,{className:`mt-2`,"data-testid":`tool-parameters`,children:[(0,Z.jsx)(K.Text,{className:`text-sm font-semibold text-[var(--oh-text-tertiary)]`,children:t(D.SYSTEM_MESSAGE_MODAL$PARAMETERS)}),(0,Z.jsx)(`div`,{className:`text-sm mt-2 p-3 bg-base rounded-md overflow-auto text-[var(--oh-text-tertiary)] max-h-[400px] border border-[var(--oh-border)]`,children:(0,Z.jsx)(me,{name:!1,src:e,theme:C})})]})}function pa({title:e,isExpanded:t,onClick:n,className:r}){return(0,Z.jsxs)(`button`,{type:`button`,"data-testid":`toggle-button`,onClick:n,className:P(`w-full py-3 px-3 text-left flex items-center justify-between hover:bg-tertiary transition-colors`,r),children:[(0,Z.jsx)(`div`,{className:`flex items-center`,children:(0,Z.jsx)(K.Text,{className:`font-bold text-content-2`,children:e})}),(0,Z.jsx)(K.Text,{className:`text-[var(--oh-text-tertiary)]`,children:t?(0,Z.jsx)(le,{size:18}):(0,Z.jsx)(L,{size:18})})]})}function ma({tool:e,index:t,isExpanded:n,onToggle:r}){let i=e,a=i.function||i,o=i.title||i.annotations?.title||a.name||i.type===`function`&&i.function?.name||``,s=i.description||a.description||i.type===`function`&&i.function?.description||``,c=a.parameters||i.type===`function`&&i.function?.parameters||i.parameters||null;return(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(pa,{title:String(o),isExpanded:n,onClick:()=>r(t)}),n&&(0,Z.jsxs)(`div`,{className:`px-3 pb-3 pt-1 border-t border-[var(--oh-border)]`,children:[(0,Z.jsx)(`div`,{className:`mt-2 mb-3 text-sm text-[var(--oh-text-tertiary)] leading-relaxed`,children:(0,Z.jsx)(tn,{children:String(s)})}),c&&(0,Z.jsx)(fa,{parameters:c})]})]})}function ha({tools:e,expandedTools:t,onToggleTool:n}){return(0,Z.jsx)(`div`,{className:`divide-y divide-[var(--oh-border)]`,children:e.map((e,r)=>(0,Z.jsx)(ma,{tool:e,index:r,isExpanded:t[r]||!1,onToggle:n},r))})}function ga(){let{t:e}=a(`openhands`);return(0,Z.jsx)(`div`,{className:`flex items-center justify-center h-full p-4`,children:(0,Z.jsx)(K.Text,{className:`text-[var(--oh-muted)]`,children:e(D.SYSTEM_MESSAGE_MODAL$NO_TOOLS)})})}function _a({activeTab:e,systemMessage:t,expandedTools:n,onToggleTool:r}){return e===`system`?(0,Z.jsx)(da,{content:t.content}):e===`tools`?t.tools&&t.tools.length>0?(0,Z.jsx)(ha,{tools:t.tools,expandedTools:n,onToggleTool:r}):(0,Z.jsx)(ga,{}):null}function va({isOpen:e,onClose:t,systemMessage:n}){let[r,i]=(0,Y.useState)(`system`),[a,o]=(0,Y.useState)({});return n?e&&(0,Z.jsx)(Se,{onClose:t,children:(0,Z.jsxs)(U,{width:`lg`,className:`relative max-h-[80vh] flex flex-col items-start border border-[var(--oh-border)]`,testID:`system-message-modal`,children:[(0,Z.jsx)(oa,{agentClass:n.agent_class,openhandsVersion:n.openhands_version,onClose:t}),(0,Z.jsxs)(`div`,{className:`w-full`,children:[(0,Z.jsx)(ca,{activeTab:r,onTabChange:i,hasTools:!!(n.tools&&n.tools.length>0)}),(0,Z.jsx)(`div`,{className:`h-[60vh] overflow-auto rounded-md border border-[var(--oh-border)] bg-surface-raised custom-scrollbar-always`,children:(0,Z.jsx)(_a,{activeTab:r,systemMessage:n,expandedTools:a,onToggleTool:e=>{o(t=>({...t,[e]:!t[e]}))}})})]})]})}):null}var ya=`rounded-md p-1 text-white hover:bg-tertiary cursor-pointer disabled:opacity-30 disabled:cursor-not-allowed`;function ba({isLoading:e,isRefetching:t,onRefresh:n,onClose:r}){let{t:i}=a(`openhands`),o=i(D.BUTTON$REFRESH);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(rt,{onClose:r,testId:`close-skills-modal`}),(0,Z.jsxs)(`div`,{className:`flex w-full items-start justify-between gap-4 pr-10`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2`,children:[(0,Z.jsx)(Ce,{title:i(D.SKILLS_MODAL$TITLE)}),(0,Z.jsx)(K.Text,{className:`text-sm text-[var(--oh-muted)]`,children:i(D.SKILLS_MODAL$WARNING)})]}),(0,Z.jsx)(Me,{content:o,placement:`bottom`,children:(0,Z.jsx)(`button`,{type:`button`,"data-testid":`refresh-skills`,onClick:n,disabled:e||t,"aria-label":o,className:ya,children:(0,Z.jsx)(ye,{size:18,className:P(t&&`animate-spin`),"aria-hidden":!0})})})]})]})}function xa({title:e,count:t,children:n}){return(0,Z.jsxs)(`section`,{className:`w-full`,children:[(0,Z.jsx)(`div`,{className:`sticky top-0 z-10 border-b border-[var(--oh-border)] bg-surface-raised px-3 py-2`,children:(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Z.jsx)(K.Text,{className:`text-xs font-medium tracking-[0.01em] text-tertiary-light`,children:e}),(0,Z.jsx)(`span`,{className:`inline-flex shrink-0 items-center rounded-full px-2 py-0.5 text-[11px] font-medium leading-4 border border-[var(--oh-border)] bg-[var(--oh-surface)] text-tertiary-light`,children:t})]})}),(0,Z.jsx)(`div`,{className:`divide-y divide-[var(--oh-border)]`,children:n})]})}function Sa(){return(0,Z.jsx)(`div`,{className:`flex justify-center items-center py-8`,children:(0,Z.jsx)(`div`,{className:`animate-spin rounded-full h-8 w-8 border-t-2 border-b-2 border-white`})})}function Ca({isError:e}){let{t}=a(`openhands`);return(0,Z.jsx)(`div`,{className:`flex items-center justify-center h-full p-4`,children:(0,Z.jsx)(K.Text,{className:`text-[var(--oh-muted)]`,children:t(e?D.COMMON$FETCH_ERROR:D.CONVERSATION$NO_SKILLS)})})}function wa({triggers:e}){let{t}=a(`openhands`);return!e||e.length===0?null:(0,Z.jsxs)(`div`,{className:`mt-2 mb-3`,children:[(0,Z.jsx)(K.Text,{className:`text-sm font-semibold text-[var(--oh-text-tertiary)] mb-2`,children:t(D.COMMON$TRIGGERS)}),(0,Z.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:e.map(e=>(0,Z.jsx)(`span`,{className:`inline-flex items-center rounded-full px-2 py-0.5 text-[11px] font-medium leading-4 border border-[var(--oh-border)] bg-[var(--oh-surface)] text-tertiary-light`,children:e},e))})]})}function Ta({content:e}){let{t}=a(`openhands`);return(0,Z.jsxs)(`div`,{className:`mt-2`,children:[(0,Z.jsx)(K.Text,{className:`text-sm font-semibold text-[var(--oh-text-tertiary)] mb-2`,children:t(D.COMMON$CONTENT)}),(0,Z.jsx)(ua,{size:`small`,font:`mono`,lineHeight:`relaxed`,padding:`medium`,borderRadius:`medium`,maxHeight:`small`,overflow:`auto`,className:`mt-2 border border-[var(--oh-border)] bg-base text-[var(--oh-text-tertiary)]`,children:e||t(D.SKILLS_MODAL$NO_CONTENT)})]})}var Ea={knowledge:`Knowledge`,repo:`Repository`,agentskills:`AgentSkills`},Da=`inline-flex shrink-0 items-center rounded-full px-2 py-0.5 text-[11px] font-medium leading-4 border border-[var(--oh-border)] bg-[var(--oh-surface)] text-tertiary-light`;function Oa({skill:e,isExpanded:t,onToggle:n}){return(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>n(e.name),className:`w-full py-3 px-3 text-left flex items-center justify-between hover:bg-tertiary transition-colors`,children:[(0,Z.jsx)(`div`,{className:`flex items-center`,children:(0,Z.jsx)(K.Text,{className:`font-bold text-content-2`,children:e.name})}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:Da,children:Ea[e.type]}),(0,Z.jsx)(K.Text,{className:`text-[var(--oh-text-tertiary)]`,children:t?(0,Z.jsx)(le,{size:18}):(0,Z.jsx)(L,{size:18})})]})]}),t&&(0,Z.jsxs)(`div`,{className:`px-3 pb-3 pt-1 border-t border-[var(--oh-border)]`,children:[(0,Z.jsx)(wa,{triggers:e.triggers??[]}),(0,Z.jsx)(Ta,{content:e.content??``})]})]})}var ka={project:D.SKILLS_MODAL$SECTION_PROJECT,personal:D.SKILLS_MODAL$SECTION_USER,public:D.SKILLS_MODAL$SECTION_PUBLIC};function Aa({onClose:e}){let{t}=a(`openhands`),n=b(),[r,i]=(0,Y.useState)({}),{data:o,isLoading:s,isError:c,refetch:l,isRefetching:u}=$n(),d=nn(),f=(0,Y.useMemo)(()=>(o??[]).filter(d),[o,d]),p=(0,Y.useMemo)(()=>an(f,n),[f,n]),m=e=>{i(t=>({...t,[e]:!t[e]}))};return(0,Z.jsx)(Se,{onClose:e,children:(0,Z.jsxs)(U,{width:`lg`,className:`relative max-h-[80vh] flex flex-col items-start border border-[var(--oh-border)]`,testID:`skills-modal`,children:[(0,Z.jsx)(ba,{isLoading:s,isRefetching:u,onRefresh:l,onClose:e}),(0,Z.jsx)(`div`,{className:`w-full h-[60vh] overflow-auto rounded-md border border-[var(--oh-border)] bg-surface-raised custom-scrollbar-always`,children:s?(0,Z.jsx)(Sa,{}):c||!o||f.length===0?(0,Z.jsx)(Ca,{isError:c}):p&&(0,Z.jsx)(`div`,{className:`divide-y divide-[var(--oh-border)]`,children:on.map(e=>{let n=p[e];return n.length===0?null:(0,Z.jsx)(xa,{title:t(ka[e]),count:n.length,children:n.map(t=>(0,Z.jsx)(Oa,{skill:t,isExpanded:r[t.name]||!1,onToggle:m},`${e}-${t.name}`))},e)})})})]})})}function ja(){let{conversationId:e}=J();return(0,Y.useMemo)(()=>e?it(e)?.plugins??[]:[],[e])}function Ma({onClose:e}){let{t}=a(`openhands`),n=ja();return(0,Z.jsx)(Se,{onClose:e,children:(0,Z.jsxs)(U,{width:`lg`,className:`relative flex max-h-[80vh] flex-col items-start border border-[var(--oh-border)]`,testID:`plugins-modal`,children:[(0,Z.jsx)(rt,{onClose:e,testId:`close-plugins-modal`}),(0,Z.jsxs)(`div`,{className:`flex w-full flex-col gap-2 pr-10`,children:[(0,Z.jsx)(Ce,{title:t(D.PLUGINS_MODAL$TITLE)}),(0,Z.jsx)(K.Text,{className:`text-sm text-[var(--oh-muted)]`,children:t(D.PLUGINS_MODAL$DESCRIPTION)})]}),(0,Z.jsx)(`div`,{className:`w-full overflow-auto rounded-md border border-[var(--oh-border)] bg-surface-raised custom-scrollbar-always`,children:n.length===0?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-6`,children:(0,Z.jsx)(K.Text,{className:`text-[var(--oh-muted)]`,children:t(D.PLUGINS_MODAL$EMPTY)})}):(0,Z.jsx)(`ul`,{className:`divide-y divide-[var(--oh-border)]`,children:n.map(e=>(0,Z.jsxs)(`li`,{"data-testid":`active-plugin-${Dt(e)}`,className:`flex flex-col gap-1 p-4`,children:[(0,Z.jsx)(K.Text,{className:`font-semibold text-white`,children:Dt(e)}),(0,Z.jsx)(K.Text,{className:`text-xs text-tertiary-alt`,children:Ct(e)?t(D.PLUGINS_MODAL$SOURCE_LOCAL):wt(e)})]},Et(e)))})})]})})}var Na=()=>{let{conversationId:e}=Ht(),{curAgentState:t}=qt();return c({queryKey:[`conversation`,e,`hooks`],queryFn:async()=>{if(!e)throw Error(`No conversation ID provided`);let{hooks:t}=await G.getHooks(e);return t},enabled:!!e&&t!==N.LOADING&&t!==N.INIT,staleTime:1e3*60*5,gcTime:1e3*60*15})},Pa=`rounded-md p-1 text-white hover:bg-tertiary cursor-pointer disabled:opacity-30 disabled:cursor-not-allowed`;function Fa({isLoading:e,isRefetching:t,onRefresh:n,onClose:r}){let{t:i}=a(`openhands`),o=i(D.BUTTON$REFRESH);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(rt,{onClose:r,testId:`close-hooks-modal`}),(0,Z.jsxs)(`div`,{className:`flex w-full items-start justify-between gap-4 pr-10`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2`,children:[(0,Z.jsx)(Ce,{title:i(D.HOOKS_MODAL$TITLE)}),(0,Z.jsx)(K.Text,{className:`text-sm text-[var(--oh-muted)]`,children:i(D.HOOKS_MODAL$WARNING)})]}),(0,Z.jsx)(Me,{content:o,placement:`bottom`,children:(0,Z.jsx)(`button`,{type:`button`,"data-testid":`refresh-hooks`,onClick:n,disabled:e||t,"aria-label":o,className:Pa,children:(0,Z.jsx)(ye,{size:18,className:P(t&&`animate-spin`),"aria-hidden":!0})})})]})]})}function Ia(){return(0,Z.jsx)(`div`,{className:`flex justify-center items-center py-8`,children:(0,Z.jsx)(`div`,{className:`animate-spin rounded-full h-8 w-8 border-t-2 border-b-2 border-white`})})}function La({isError:e}){let{t}=a(`openhands`);return(0,Z.jsx)(`div`,{className:`flex items-center justify-center h-full p-4`,children:(0,Z.jsx)(K.Text,{className:`text-[var(--oh-muted)]`,children:t(e?D.COMMON$FETCH_ERROR:D.CONVERSATION$NO_HOOKS)})})}var Ra=`inline-flex items-center rounded-full px-2 py-0.5 text-[11px] font-medium leading-4 border border-[var(--oh-border)] bg-[var(--oh-surface)] text-tertiary-light`;function za({matcher:e}){let{t}=a(`openhands`);return(0,Z.jsxs)(`div`,{className:`py-3`,children:[(0,Z.jsxs)(`div`,{className:`mb-2`,children:[(0,Z.jsx)(K.Text,{className:`text-sm font-semibold text-[var(--oh-text-tertiary)]`,children:t(D.HOOKS_MODAL$MATCHER)}),(0,Z.jsx)(`span`,{className:`ml-2 ${Ra}`,children:e.matcher})]}),(0,Z.jsxs)(`div`,{className:`mt-2`,children:[(0,Z.jsx)(K.Text,{className:`text-sm font-semibold text-[var(--oh-text-tertiary)] mb-2`,children:t(D.HOOKS_MODAL$COMMANDS)}),(e.hooks??[]).map((e,n)=>(0,Z.jsxs)(`div`,{className:`mt-2`,children:[(0,Z.jsx)(ua,{size:`small`,font:`mono`,lineHeight:`relaxed`,padding:`medium`,borderRadius:`medium`,maxHeight:`small`,overflow:`auto`,className:`border border-[var(--oh-border)] bg-base text-[var(--oh-text-tertiary)]`,children:e.command}),(0,Z.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2 text-xs text-[var(--oh-muted)]`,children:[(0,Z.jsx)(`span`,{className:Ra,children:t(D.HOOKS_MODAL$TYPE,{type:e.type})}),(0,Z.jsx)(`span`,{className:Ra,children:t(D.HOOKS_MODAL$TIMEOUT,{timeout:e.timeout})}),e.async?(0,Z.jsx)(`span`,{className:Ra,children:t(D.HOOKS_MODAL$ASYNC)}):null]})]},`${e.command}-${n}`))]})]})}var Ba={pre_tool_use:D.HOOKS_MODAL$EVENT_PRE_TOOL_USE,post_tool_use:D.HOOKS_MODAL$EVENT_POST_TOOL_USE,user_prompt_submit:D.HOOKS_MODAL$EVENT_USER_PROMPT_SUBMIT,session_start:D.HOOKS_MODAL$EVENT_SESSION_START,session_end:D.HOOKS_MODAL$EVENT_SESSION_END,stop:D.HOOKS_MODAL$EVENT_STOP},Va=`inline-flex shrink-0 items-center rounded-full px-2 py-0.5 text-[11px] font-medium leading-4 border border-[var(--oh-border)] bg-[var(--oh-surface)] text-tertiary-light`,Ha=`HOOKS_MODAL$HOOK_COUNT`;function Ua({hookEvent:e,isExpanded:t,onToggle:n}){let{t:r}=a(`openhands`),i=Ba[e.event_type],o=i?r(i):e.event_type,s=e.matchers.reduce((e,t)=>e+(t.hooks??[]).length,0);return(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>n(e.event_type),className:`w-full py-3 px-3 text-left flex items-center justify-between hover:bg-tertiary transition-colors`,children:[(0,Z.jsx)(`div`,{className:`flex items-center`,children:(0,Z.jsx)(K.Text,{className:`font-bold text-content-2`,children:o})}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:Va,children:r(Ha,{count:s})}),(0,Z.jsx)(K.Text,{className:`text-[var(--oh-text-tertiary)]`,children:t?(0,Z.jsx)(le,{size:18}):(0,Z.jsx)(L,{size:18})})]})]}),t&&(0,Z.jsx)(`div`,{className:`border-t border-[var(--oh-border)] px-3 pt-3 pb-3`,children:(0,Z.jsx)(`div`,{className:`divide-y divide-[var(--oh-border)]`,children:e.matchers.map((t,n)=>(0,Z.jsx)(za,{matcher:t},`${e.event_type}-${t.matcher}-${n}`))})})]})}function Wa({testId:e=`runtime-waiting`,messageKey:t=D.DIFF_VIEWER$WAITING_FOR_RUNTIME,className:n}){let{t:r}=a(`openhands`);return(0,Z.jsxs)(`div`,{"data-testid":e,className:P(`flex h-full w-full flex-col items-center justify-center gap-3 py-8 text-center`,n),children:[(0,Z.jsx)(be,{size:`small`}),(0,Z.jsx)(K.Text,{className:`text-sm text-[var(--oh-muted)]`,children:r(t)})]})}function Ga({onClose:e}){let{curAgentState:t}=qt(),[n,r]=(0,Y.useState)({}),{data:i,isLoading:a,isError:o,refetch:s,isRefetching:c}=Na(),l=e=>{r(t=>({...t,[e]:!t[e]}))},u=![N.LOADING,N.INIT].includes(t);return(0,Z.jsx)(Se,{onClose:e,children:(0,Z.jsxs)(U,{width:`lg`,className:`relative max-h-[80vh] flex flex-col items-start border border-[var(--oh-border)]`,testID:`hooks-modal`,children:[(0,Z.jsx)(Fa,{isLoading:a,isRefetching:c,onRefresh:s,onClose:e}),(0,Z.jsx)(`div`,{className:`w-full h-[60vh] overflow-auto rounded-md border border-[var(--oh-border)] bg-surface-raised custom-scrollbar-always`,children:u?a?(0,Z.jsx)(Ia,{}):o||!i||i.length===0?(0,Z.jsx)(La,{isError:o}):(0,Z.jsx)(`div`,{className:`divide-y divide-[var(--oh-border)]`,children:i.map(e=>(0,Z.jsx)(Ua,{hookEvent:e,isExpanded:n[e.event_type]||!1,onToggle:l},e.event_type))}):(0,Z.jsx)(Wa,{testId:`hooks-runtime-waiting`})})]})})}function Ka({handleFileIconClick:e,disabled:t=!1,showAgentProfileSwitch:n=!1}){let{t:r}=a(`openhands`),{conversationId:i}=J(),{data:o}=q(),[s,c]=Y.useState(!1),{handleShowAgentTools:l,handleShowSkills:u,handleShowPlugins:d,handleShowHooks:f,systemModalVisible:p,setSystemModalVisible:m,skillsModalVisible:h,setSkillsModalVisible:g,pluginsModalVisible:_,setPluginsModalVisible:v,hooksModalVisible:y,setHooksModalVisible:b,systemMessage:x,shouldShowAgentTools:S,shouldShowHooks:C,shouldShowPlugins:w}=Ti({conversationId:i??void 0,executionStatus:o?.execution_status,showOptions:!0,onContextMenuToggle:c});return(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(`button`,{type:`button`,className:P(De,`relative shrink-0 size-6`,t?`cursor-not-allowed text-[var(--oh-text-subtle)]`:void 0,s&&!t&&`text-white bg-white/10`),"aria-label":r(D.CHAT_INTERFACE$PLUS_MENU),"aria-expanded":s,"aria-haspopup":`menu`,"data-testid":`chat-plus-button`,onClick:e=>{e.preventDefault(),e.stopPropagation(),!t&&c(e=>!e)},disabled:t,children:(0,Z.jsx)(`span`,{className:`flex h-full w-full items-center justify-center`,children:(0,Z.jsx)(ve,{className:`h-[13px] w-[13px] shrink-0`,strokeWidth:2})})}),s&&(0,Z.jsx)(aa,{onClose:()=>c(!1),showAgentProfileSwitch:n,onShowSkills:u,onShowPlugins:d,onShowHooks:f,onShowAgentTools:l,shouldShowAgentTools:S,shouldShowHooks:C,shouldShowPlugins:w,footerAction:{testId:`add-files-and-images-button`,icon:(0,Z.jsx)(R,{className:`h-4 w-4 shrink-0`,strokeWidth:2,"aria-hidden":!0}),label:r(D.CHAT_INTERFACE$ADD_FILES_AND_IMAGES),onClick:e}}),(0,Z.jsx)(va,{isOpen:p,onClose:()=>m(!1),systemMessage:x||null}),h&&(0,Z.jsx)(Aa,{onClose:()=>g(!1)}),_&&(0,Z.jsx)(Ma,{onClose:()=>v(!1)}),y&&(0,Z.jsx)(Ga,{onClose:()=>b(!1)})]})}var qa=(e,t,n,r=!0)=>{let i=c({queryKey:[`conversation-metrics`,e,t,n],queryFn:async()=>{if(!e)throw Error(`Conversation ID is required`);return ot(await G.getRuntimeConversation(e,t,n))},enabled:r&&!!e,staleTime:1e3*30,gcTime:1e3*60*5,refetchInterval:1e3*30,retry:!1});return{data:i.data,isLoading:i.isLoading,error:i.error}};function Ja(e){let t=e?.context_window??0;return t<=0?null:{perTurnToken:e?.per_turn_token??0,contextWindow:t}}function Ya(){let e=Qt(e=>e.usage),{data:t}=q(),{data:n}=qa(t?.id,t?.conversation_url,t?.session_api_key,!!t?.id);return(0,Y.useMemo)(()=>Ja(e)||Ja(n?.accumulated_token_usage??null),[e,n])}var Xa=()=>{let e=i();return s({mutationFn:e=>G.condenseConversation(e.conversationId,e.conversationUrl,e.sessionApiKey),onSettled:(t,n,r)=>{e.invalidateQueries({queryKey:[`conversation-metrics`,r.conversationId]})}})},Za=2500,Qa=9e4;function $a(e,t,n){return{beforeToken:e,afterToken:t,savedToken:Math.max(0,e-t),outcome:n}}function eo({beforeToken:e,baselineEventIds:t,onComplete:n,timeoutMs:r=Qa}){let i=(0,Y.useRef)(n);i.current=n,(0,Y.useEffect)(()=>{if(e===null)return;let n=!1,a=!1,o,s=t?new Set(t):new Set(Kt.getState().eventIds),c=()=>Qt.getState().usage?.per_turn_token??e,l=(t,r)=>{n||(n=!0,i.current($a(e,t,r)))},u=()=>{let t=c();return a&&t<e?(l(t,`compacted`),!0):!1},d=()=>{clearTimeout(o),o=setTimeout(()=>{l(c(),`no_change`)},Za)},f=()=>{for(let e of Kt.getState().events){let t=`id`in e?e.id:void 0;if(t!==void 0){if(s.has(t))continue;s.add(t)}if(Wt(e)){a=!0,u()||d();return}}};f();let p=Kt.subscribe(()=>{n||f()}),m=Qt.subscribe(()=>{n||u()&&clearTimeout(o)}),h=setTimeout(()=>{l(c(),a?`no_change`:`timeout`)},r);return()=>{n=!0,p(),m(),clearTimeout(o),clearTimeout(h)}},[e,t,r])}function to(e){if(e>=1e6){let t=e/1e6;return t>=10&&Number.isInteger(t)?`${t.toFixed(0)}M`:`${t.toFixed(1)}M`}if(e>=1e3){let t=e/1e3;return Number.isInteger(t)?`${t.toFixed(0)}k`:`${t.toFixed(1)}k`}return e.toLocaleString()}function no(e,t){return t<=0?0:Math.min(100,e/t*100)}function ro(e=0){let{t}=a(`openhands`),n=i(),{data:r}=q(),{curAgentState:o}=qt(),{mutate:s,isPending:c}=Xa(),[l,d]=Y.useState(null),p=Y.useRef(null),m=o===N.RUNNING||o===N.LOADING,h=c||l!==null,g=!r?.id||m||h,_=t(D.CONVERSATION$COMPACT_CONTEXT_DESCRIPTION),v=Y.useEffectEvent(e=>{if(d(null),p.current=null,r?.id&&n.invalidateQueries({queryKey:[`conversation-metrics`,r.id]}),e.outcome===`timeout`){u(t(D.CONVERSATION$COMPACT_CONTEXT_FAILED));return}if(e.savedToken>0){f(t(D.CONVERSATION$COMPACT_CONTEXT_COMPLETE,{saved:to(e.savedToken),before:to(e.beforeToken),after:to(e.afterToken)}));return}f(t(D.CONVERSATION$COMPACT_CONTEXT_COMPLETE_NO_CHANGE))});return eo({beforeToken:l,baselineEventIds:l===null?null:p.current,onComplete:v}),{handleCompact:()=>{if(!r?.id||h)return;let n=Qt.getState().usage?.per_turn_token??e;p.current=new Set(Kt.getState().eventIds),s({conversationId:r.id,conversationUrl:r.conversation_url,sessionApiKey:r.session_api_key},{onSuccess:()=>{d(n),f(t(D.CONVERSATION$COMPACT_CONTEXT_STARTED))},onError:e=>{d(null),p.current=null,u(S(e)||t(D.CONVERSATION$COMPACT_CONTEXT_FAILED))}})},isCompacting:h,isDisabled:g,description:_}}function io(e){return e>90?`danger`:e>70?`warning`:`neutral`}function ao({perTurnToken:e,contextWindow:t}){let{t:n}=a(`openhands`),r=t<=0,i=no(e,t),o=io(i),s=o===`warning`,c=o===`danger`,l=Math.round(i),u=Math.max(0,100-l),d=r?n(D.CONVERSATION$CONTEXT_WINDOW_UNKNOWN):`${l}% ${n(D.CONVERSATION$USED)} (${u}% ${n(D.CONVERSATION$LEFT)})`;return(0,Z.jsxs)(`div`,{"data-testid":`context-meter`,className:`flex flex-col gap-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Z.jsx)(`span`,{className:`font-semibold`,children:n(D.CONVERSATION$CONTEXT_WINDOW)}),(0,Z.jsx)(`span`,{className:P(`shrink-0 text-xs`,c?`text-red-500`:s?`text-amber-500`:`text-[var(--oh-muted)]`),children:d})]}),(0,Z.jsx)(`div`,{className:`relative h-1.5 w-full rounded-full bg-tertiary`,children:(0,Z.jsx)(`div`,{"data-testid":`context-meter-bar`,className:P(`absolute inset-y-0 left-0 rounded-full transition-all duration-300`,c?`bg-red-500`:s?`bg-amber-500`:`bg-foreground`),style:{width:`${i}%`}})}),(0,Z.jsx)(`div`,{className:`flex justify-end`,children:(0,Z.jsx)(`span`,{className:`text-xs text-[var(--oh-muted)]`,children:r?e.toLocaleString():`${e.toLocaleString()} / ${t.toLocaleString()}`})})]})}var $=16,oo=2,so=`color-mix(in srgb, var(--oh-foreground) ${.42*100}%, transparent)`,co={neutral:`var(--oh-foreground)`,warning:`#f59e0b`,danger:`#ef4444`};function lo({percentage:e,className:t}){let n=($-oo)/2,r=2*Math.PI*n,i=Math.min(100,Math.max(0,e)),a=r-i/100*r,o=io(i);return(0,Z.jsxs)(`svg`,{width:$,height:$,viewBox:`0 0 ${$} ${$}`,className:P(`shrink-0`,t),"aria-hidden":!0,children:[(0,Z.jsx)(`circle`,{cx:$/2,cy:$/2,r:n,fill:`none`,style:{stroke:so},strokeWidth:oo,"data-testid":`context-window-ring-track`}),(0,Z.jsx)(`circle`,{cx:$/2,cy:$/2,r:n,fill:`none`,stroke:co[o],strokeWidth:oo,strokeLinecap:`round`,strokeDasharray:r,strokeDashoffset:a,transform:`rotate(-90 ${$/2} ${$/2})`,className:`transition-[stroke-dashoffset,stroke] duration-300`,"data-testid":`context-window-ring-arc`})]})}var uo={neutral:`bg-foreground`,warning:`bg-amber-500`,danger:`bg-red-500`},fo={neutral:`text-[var(--oh-muted)]`,warning:`text-amber-500`,danger:`text-red-500`};function po(){let{t:e}=a(`openhands`),t=Ya(),{navigateToTab:n}=Yt(),[r,i]=Y.useState(!1),o=Y.useRef(null),s=yt(()=>i(!1),o),{handleCompact:c,isCompacting:l,isDisabled:u}=ro(t?.perTurnToken??0);if(!t)return null;let d=no(t.perTurnToken,t.contextWindow),f=Math.round(d),p=Math.max(0,100-f),m=`${f}% ${e(D.CONVERSATION$USED)} (${p}% ${e(D.CONVERSATION$LEFT)})`,h=`${to(t.perTurnToken)} / ${to(t.contextWindow)}`,g=io(d),_=()=>{i(!1),n(`usage`)};return(0,Z.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,Z.jsx)(Me,{content:e(D.CHAT_INTERFACE$SHOW_CONTEXT),placement:`top`,children:(0,Z.jsx)(`button`,{ref:o,type:`button`,className:P(De,`size-8`),"aria-label":`${e(D.CHAT_INTERFACE$CONTEXT_WINDOW_METER_LABEL)}: ${m}`,"aria-expanded":r,"aria-haspopup":`dialog`,"data-testid":`context-window-meter`,onClick:e=>{e.preventDefault(),e.stopPropagation(),i(e=>!e)},children:(0,Z.jsx)(lo,{percentage:d})})}),r&&(0,Z.jsxs)(`div`,{ref:s,"data-testid":`context-window-meter-popover`,className:P(`absolute bottom-full right-0 z-[60] mb-2 w-[280px]`,`flex flex-col gap-0.5 rounded-md border border-[var(--oh-border-subtle)] bg-tertiary px-1 py-1 shadow-lg`),children:[(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2 px-2 py-1.5`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-sm`,children:[(0,Z.jsx)(`span`,{className:`font-semibold text-[var(--oh-foreground)]`,children:e(D.CONVERSATION$CONTEXT_WINDOW)}),(0,Z.jsx)(`span`,{className:P(`shrink-0 text-xs`,fo[g]),children:m})]}),(0,Z.jsx)(`button`,{type:`button`,"data-testid":`context-window-meter-bar-button`,className:`relative h-1.5 w-full rounded-full cursor-pointer`,style:{backgroundColor:so},"aria-label":e(D.COMMON$USAGE),onClick:e=>{e.preventDefault(),e.stopPropagation(),_()},children:(0,Z.jsx)(`span`,{className:P(`absolute inset-y-0 left-0 rounded-full transition-all duration-300`,uo[g]),style:{width:`${Math.min(100,d)}%`}})}),(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Z.jsxs)(`button`,{type:`button`,"data-testid":`context-window-compact-button`,disabled:u,"aria-busy":l,"aria-label":e(D.CONVERSATION$COMPACT_CONTEXT),className:P(`inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xs`,`text-[var(--oh-muted)] hover:bg-[var(--oh-interactive-hover)] hover:text-[var(--oh-foreground)]`,`transition-colors disabled:cursor-not-allowed disabled:opacity-50`),onClick:e=>{e.preventDefault(),e.stopPropagation(),c()},children:[l?(0,Z.jsx)(z,{className:`size-3 animate-spin`,"aria-hidden":!0}):(0,Z.jsx)(pe,{className:`size-3`,"aria-hidden":!0}),(0,Z.jsx)(`span`,{children:e(D.CONVERSATION$COMPACT_CONTEXT)})]}),(0,Z.jsx)(`span`,{className:`text-xs text-[var(--oh-muted)]`,children:h})]})]}),(0,Z.jsx)(Ge,{inset:`menu`}),(0,Z.jsx)(V,{testId:`context-window-plan-usage`,onClick:e=>{e.preventDefault(),e.stopPropagation(),_()},children:(0,Z.jsx)(kt,{icon:(0,Z.jsx)(ge,{size:16}),text:e(D.COMMON$USAGE)})})]})]})}var mo=()=>{let e=i();return s({mutationFn:e=>vt(e.conversationId),onMutate:async()=>(await e.cancelQueries({queryKey:[`user`,`conversations`]}),{previousConversations:e.getQueryData([`user`,`conversations`])}),onError:(t,n,r)=>{r?.previousConversations&&e.setQueryData([`user`,`conversations`],r.previousConversations)},onSettled:(t,n,r)=>{e.invalidateQueries({queryKey:[`user`,`conversation`,r.conversationId]}),e.invalidateQueries({queryKey:[`user`,`conversations`]}),e.invalidateQueries({queryKey:[`v1-batch-get-app-conversations`]})}})},ho=()=>{let e=i();return s({mutationFn:e=>gt(e.conversationId),onMutate:async()=>(await e.cancelQueries({queryKey:[`user`,`conversations`]}),{previousConversations:e.getQueryData([`user`,`conversations`])}),onError:(t,n,r)=>{r?.previousConversations&&e.setQueryData([`user`,`conversations`],r.previousConversations)},onSettled:(t,n,r)=>{e.invalidateQueries({queryKey:[`user`,`conversation`,r.conversationId]}),e.invalidateQueries({queryKey:[`user`,`conversations`]}),e.invalidateQueries({queryKey:[`v1-batch-get-app-conversations`]}),e.invalidateQueries({queryKey:[`unified`,`vscode_url`]})}})};function go({disabled:e,canSubmit:t=!0,hasStartedConversation:n,onAddFileClick:r=()=>{},showButton:i=!0,buttonClassName:o=``,handleSubmit:s=()=>{}}){let{t:c}=a(`openhands`),l=Ve(),u=mo(),d=ho(),{conversationId:f}=J(),{backend:p}=y(),m=p.kind===`cloud`,h=ii(),g=!f||n===!1,_=St({enabled:g}),v=g&&!(f?.startsWith(`task-`)??!1)&&(_.data?.profiles?.length??0)>0,b=m&&!h.isAcpContext,x=br(),{curAgentState:S}=qt(),{conversationMode:C,setConversationMode:w}=W(),{handlePlanClick:T,isCreatingConversation:E}=Zr(),O=Y.useRef(null),k=Y.useRef(null),A=Y.useRef(null),j=Y.useRef(null),ee=Y.useRef(null),M=Y.useRef(null),[te,ne]=Y.useState(1/0),[re,ie]=Y.useState(0),[ae,oe]=Y.useState(32),[F,se]=Y.useState(96),[I,le]=Y.useState(120),[L,ue]=Y.useState(!1),[fe,R]=Y.useState(null),[pe,me]=Y.useState();Y.useEffect(()=>{let e=O.current,t=k.current,n=A.current,r=j.current,i=ee.current;if(!e||!t||!n||!i||b&&!r||typeof ResizeObserver>`u`)return;let a=()=>{let a=e.getBoundingClientRect().width,o=t.getBoundingClientRect().width,s=n.getBoundingClientRect().width,c=i.getBoundingClientRect().width;if(a>0&&ne(a),o>0&&ie(o),s>0&&oe(s),c>0&&le(c),r){let e=r.getBoundingClientRect().width;e>0&&se(e)}},o=new ResizeObserver(()=>{a()});return o.observe(e),o.observe(t),o.observe(n),o.observe(i),r&&o.observe(r),a(),()=>o.disconnect()},[b]);let he=()=>{f&&u.mutate({conversationId:f})},ge=()=>{f&&d.mutate({conversationId:f})},_e=l.isPending||u.isPending,z=Y.useCallback(e=>{let t=e,n={showCodeInline:!1,showModelInline:!1};return b&&t>=F&&(n.showCodeInline=!0,t-=F+12),t>=I&&(n.showModelInline=!0),n},[b,F,I]),ve=te-re-8-ae-12,ye=z(ve),be=(!b||ye.showCodeInline)&&ye.showModelInline?ye:z(ve-28-12),xe=b?be.showCodeInline:!1,H=be.showModelInline,Se=te>=360,U=b&&!xe||!H;Y.useEffect(()=>{U||(ue(!1),R(null))},[U]);let Ce=yt(()=>{ue(!1),R(null)}),Te=S===N.RUNNING||E||x!==`OPEN`,Ee=()=>{R(null),ue(!1)},Oe=bi({isAcp:h.isAcpContext}),ke=P(`group`,we),Ae=P(`text-[var(--oh-muted)] group-hover:text-[var(--oh-foreground)]`,we);Y.useLayoutEffect(()=>{if(!L||!M.current)return;let e=M.current,t=()=>{let t=e.getBoundingClientRect();me({position:`fixed`,top:t.top-8,left:t.left,transform:`translateY(-100%)`,zIndex:9999})};return t(),window.addEventListener(`resize`,t),window.addEventListener(`scroll`,t,!0),()=>{window.removeEventListener(`resize`,t),window.removeEventListener(`scroll`,t,!0)}},[L]);let je=(0,Z.jsxs)(B,{ref:Ce,testId:`chat-input-overflow-menu`,position:`top`,alignment:`left`,className:`!static !top-auto !bottom-auto !left-auto !right-auto !mt-0 overflow-visible min-w-[200px]`,children:[b&&!xe&&(0,Z.jsxs)(`div`,{className:`relative group/overflow-agent`,children:[(0,Z.jsx)(V,{testId:`overflow-agent-button`,onClick:()=>R(e=>e===`agent`?null:`agent`),isDisabled:Te,children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(qr,{className:`h-[11px] w-[11px]`}),text:c(C===`code`?D.COMMON$CODE:D.COMMON$PLAN),rightIcon:(0,Z.jsx)(Ai,{width:10,height:10})})}),!Te&&(0,Z.jsx)(`div`,{className:P(`absolute left-full top-[-4px] z-60 opacity-0 invisible pointer-events-none transition-all duration-200 ml-[1px]`,`group-hover/overflow-agent:opacity-100 group-hover/overflow-agent:visible group-hover/overflow-agent:pointer-events-auto`,`hover:opacity-100 hover:visible hover:pointer-events-auto`,fe===`agent`&&`opacity-100 visible pointer-events-auto`),children:(0,Z.jsxs)(B,{testId:`overflow-agent-submenu`,className:`overflow-visible min-w-[195px]`,children:[(0,Z.jsx)(V,{testId:`overflow-agent-code`,onClick:e=>{e.preventDefault(),e.stopPropagation(),w(`code`),Ee()},children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(qr,{className:`h-[11px] w-[11px]`}),text:c(D.COMMON$CODE)})}),(0,Z.jsx)(V,{testId:`overflow-agent-plan`,onClick:e=>{T(e),Ee()},children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(en,{width:16,height:16,color:`currentColor`}),text:c(D.COMMON$PLAN)})})]})})]}),!H&&(0,Z.jsxs)(`div`,{className:`relative group/overflow-model`,children:[(0,Z.jsx)(V,{testId:`overflow-model-button`,onClick:()=>R(e=>e===`model`?null:`model`),children:(0,Z.jsx)(Q,{icon:(0,Z.jsx)(de,{width:16,height:16,strokeWidth:2,"aria-hidden":!0}),text:c(D.SETTINGS$AGENT_MODEL),rightIcon:(0,Z.jsx)(Ai,{width:10,height:10})})}),(0,Z.jsx)(`div`,{className:P(`absolute left-full top-[-4px] z-60 opacity-0 invisible pointer-events-none transition-all duration-200 ml-[1px]`,`group-hover/overflow-model:opacity-100 group-hover/overflow-model:visible group-hover/overflow-model:pointer-events-auto`,`hover:opacity-100 hover:visible hover:pointer-events-auto`,fe===`model`&&`opacity-100 visible pointer-events-auto`),children:(0,Z.jsx)(B,{testId:`overflow-model-submenu`,className:`min-w-[220px] max-w-[320px] max-h-[60vh] overflow-y-auto gap-0`,children:Oe===`model`?(0,Z.jsx)(li,{model:h,onClose:Ee,dividerInset:`menu`,settingsLinkClassName:ke,settingsIconClassName:Ae}):(0,Z.jsx)(_i,{onClose:Ee,dividerInset:`menu`,settingsLinkClassName:ke,settingsIconClassName:Ae})})})]})]});return(0,Z.jsxs)(`div`,{ref:O,className:`w-full min-w-0 flex items-center justify-between gap-2`,children:[(0,Z.jsx)(`div`,{className:`flex min-w-0 items-center gap-1`,children:(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,Z.jsx)(`div`,{ref:A,className:P(!1),children:(0,Z.jsx)(Ka,{disabled:e,handleFileIconClick:r,showAgentProfileSwitch:v})}),b&&(0,Z.jsx)(`div`,{ref:j,className:P(!xe&&`hidden`),children:(0,Z.jsx)(Qr,{})}),(0,Z.jsx)(`div`,{ref:ee,className:P(!H&&`hidden`),children:Oe===`model`?(0,Z.jsx)(ui,{}):(0,Z.jsx)(vi,{})}),U&&(0,Z.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,Z.jsx)(`button`,{ref:M,type:`button`,className:P(De,`size-6`),"aria-label":c(D.CHAT_INTERFACE$MORE_INPUT_ACTIONS),"aria-expanded":L,"aria-haspopup":`menu`,onClick:e=>{e.preventDefault(),e.stopPropagation(),ue(e=>!e)},children:(0,Z.jsx)(At,{width:16,height:16,color:`currentColor`})}),L&&typeof document<`u`&&pe&&pr.createPortal((0,Z.jsx)(`div`,{style:pe,children:je}),document.body)]})]})}),(0,Z.jsxs)(`div`,{ref:k,className:`ml-auto flex shrink-0 items-center gap-2`,children:[Se&&f&&(0,Z.jsx)(Kr,{handleStop:he,handleResumeAgent:ge,disabled:e,isPausing:_e}),(0,Z.jsx)(po,{}),i&&(0,Z.jsx)(ce,{buttonClassName:o,handleSubmit:s,disabled:e||!t})]})]})}function _o(e){return e.replace(/!\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/\*{3}(.+?)\*{3}/g,`$1`).replace(/\*{2}(.+?)\*{2}/g,`$1`).replace(/\*(.+?)\*/g,`$1`).replace(/_{3}(.+?)_{3}/g,`$1`).replace(/_{2}(.+?)_{2}/g,`$1`).replace(/_(.+?)_/g,`$1`).replace(/`(.+?)`/g,`$1`).replace(/~~(.+?)~~/g,`$1`)}function vo(e){let t=e,n=e.match(/^---\s*\n([\s\S]*?)\n---/);if(n){let r=n[1].match(/^description:\s*(.+)$/m);if(r){let e=r[1].trim();return(e.startsWith(`"`)&&e.endsWith(`"`)||e.startsWith(`'`)&&e.endsWith(`'`))&&(e=e.slice(1,-1)),_o(e)}t=e.slice(n[0].length)}let r=t.split(`
|
|
27
|
+
`).map(e=>e.trim()).find(e=>e.length>0&&!e.startsWith(`#`)&&e!==`---`);if(!r)return null;let i=_o(r);return i.match(/^[^.!?\n]*[.!?]/)?.[0]||i}function yo({item:e,isSelected:t,onSelect:n,ref:r}){let i=(0,Y.useMemo)(()=>`description`in e.skill&&e.skill.description?_o(e.skill.description):`content`in e.skill&&e.skill.content?vo(e.skill.content):null,[e.skill]);return(0,Z.jsxs)(`button`,{role:`option`,"aria-selected":t,ref:r,type:`button`,className:P(`w-full px-3 py-2.5 text-left`,Fe,t?`bg-tertiary`:`hover:bg-[var(--oh-surface-raised)]`),onMouseDown:t=>{t.preventDefault(),n(e)},children:[(0,Z.jsx)(zt,{className:`font-normal`,children:e.command}),i&&(0,Z.jsx)(zt,{className:`text-xs text-[var(--oh-muted)] mt-0.5 truncate block`,children:i})]})}function bo({items:e,selectedIndex:t,onSelect:n}){let{t:r}=a(`openhands`),i=(0,Y.useRef)([]);return(0,Y.useEffect)(()=>{i.current=i.current.slice(0,e.length)},[e.length]),(0,Y.useEffect)(()=>{let e=i.current[t];e&&e.scrollIntoView({block:`nearest`})},[t]),e.length===0?null:(0,Z.jsxs)(`div`,{role:`listbox`,"aria-label":r(D.CHAT_INTERFACE$COMMANDS),className:`absolute bottom-full left-0 w-full mb-1 bg-[var(--oh-surface)] border border-[var(--oh-border-subtle)] rounded-lg shadow-lg max-h-[300px] overflow-y-auto custom-scrollbar z-50`,"data-testid":`slash-command-menu`,children:[(0,Z.jsx)(`div`,{className:`px-3 py-2 text-xs text-[var(--oh-muted)] border-b border-[var(--oh-border-subtle)]`,children:r(D.CHAT_INTERFACE$COMMANDS)}),(0,Z.jsx)(`div`,{className:Pe,children:e.map((e,r)=>(0,Z.jsx)(yo,{item:e,isSelected:r===t,onSelect:n,ref:e=>{i.current[r]=e}},e.command))})]})}function xo({chatContainerRef:e,isDragOver:t,disabled:n,canSubmit:r,hasStartedConversation:i,isNewConversationPending:a=!1,showButton:o,buttonClassName:s,chatInputRef:c,handleFileIconClick:l,handleSubmit:u,onDragOver:d,onDragLeave:f,onDrop:p,onInput:m,onPaste:h,onKeyDown:g,onFocus:_,onBlur:v,isSlashMenuOpen:y=!1,slashItems:b=[],slashSelectedIndex:x=0,onSlashSelect:S}){return(0,Z.jsxs)(`div`,{ref:e,className:P(`bg-[var(--oh-surface)] box-border content-stretch flex flex-col items-start justify-center p-4 relative rounded-[15px] w-full`,W(e=>e.conversationMode)===`plan`&&`border border-[#597FF4]`),onDragOver:e=>d(e,n),onDragLeave:e=>f(e,n),onDrop:e=>p(e,n),children:[t&&(0,Z.jsx)(ar,{}),(0,Z.jsx)(ur,{}),(0,Z.jsxs)(`div`,{className:`relative w-full`,children:[y&&S&&(0,Z.jsx)(bo,{items:b,selectedIndex:x,onSelect:S}),(0,Z.jsx)(fr,{chatInputRef:c,isNewConversationPending:a,onInput:m,onPaste:h,onKeyDown:g,onFocus:_,onBlur:v})]}),(0,Z.jsx)(go,{disabled:n,canSubmit:r,hasStartedConversation:i,onAddFileClick:()=>l(n),showButton:o,buttonClassName:s,handleSubmit:u})]})}function So({fileInputRef:e,onChange:t}){return(0,Z.jsx)(`input`,{type:`file`,ref:e,multiple:!0,accept:`*/*`,className:`hidden`,onChange:t,"data-testid":`upload-image-input`})}function Co({disabled:e=!1,isNewConversationPending:t=!1,hasStartedConversation:n,showButton:r=!0,onSubmit:i,onFocus:a,onBlur:o,onFilesPaste:s,className:c=``,buttonClassName:l=``}){let[u,d]=Y.useState(!1),{submittedMessage:f,clearAllFiles:p,setShouldHideSuggestions:m,setSubmittedMessage:h,images:g,files:_}=W(),v=e,y=(0,Y.useRef)(i);(0,Y.useEffect)(()=>{y.current=i},[i]),(0,Y.useEffect)(()=>{!f||e||(y.current(f),h(null))},[f,e,h]);let{chatInputRef:b,messageToSend:x,checkIsContentEmpty:S,clearEmptyContentHandler:C,saveDraft:w}=Nn(),T=Y.useCallback(()=>{let e=b.current?.innerText??``,t=g.length>0||_.length>0;d(e.trim().length>0||t)},[b,g,_]),{fileInputRef:E,chatContainerRef:D,isDragOver:O,handleFileIconClick:k,handleFileInputChange:A,handleDragOver:j,handleDragLeave:ee,handleDrop:M}=Pn(s),{gripRef:te,isGripVisible:N,isGripDragging:ne,canResize:re,handleTopEdgeClick:ie,smartResize:ae,handleGripMouseDown:oe,handleGripTouchStart:F,increaseHeightForEmptyContent:se,resetManualResize:ce}=Xn(b,x),{handleSubmit:I}=Qn(b,E,ae,i,ce),le=Y.useCallback(()=>{I(),T()},[I,T]),{handleInput:L,handlePaste:ue,handleKeyDown:de,handleBlur:fe,handleFocus:R}=Zn(b,ae,se,S,C,a,o),{isMenuOpen:pe,filteredItems:me,selectedIndex:he,updateSlashMenu:ge,selectItem:_e,handleSlashKeyDown:z,closeMenu:ve}=tr(b);return(0,Y.useEffect)(()=>()=>{m(!1),p()},[m,p]),(0,Y.useEffect)(()=>{T()},[T,g.length,_.length]),(0,Z.jsxs)(`div`,{className:P(`w-full`,c),children:[(0,Z.jsx)(So,{fileInputRef:E,onChange:A}),(0,Z.jsxs)(`div`,{className:`relative w-full`,children:[(0,Z.jsx)(nr,{gripRef:te,isGripVisible:N,isGripDragging:ne,canResize:re,handleTopEdgeClick:ie,handleGripMouseDown:oe,handleGripTouchStart:F}),(0,Z.jsx)(xo,{chatContainerRef:D,isDragOver:O,disabled:v,canSubmit:u,hasStartedConversation:n,isNewConversationPending:t,showButton:r,buttonClassName:l,chatInputRef:b,handleFileIconClick:k,handleSubmit:le,onDragOver:j,onDragLeave:ee,onDrop:M,onInput:()=>{L(),ge(),w(),T()},onPaste:ue,onKeyDown:e=>{z(e)||de(e,v,le)},onFocus:R,onBlur:()=>{fe(),ve(),T()},isSlashMenuOpen:pe,slashItems:me,slashSelectedIndex:he,onSlashSelect:_e})]})]})}var wo=`${se} `,To=(e,t)=>{let n=Jt(e=>e.show),r=i(),{switchAndLog:o}=pi(),{backend:s,orgId:c}=y(),{t:l}=a();return(0,Y.useCallback)(i=>{let a=i.trim();if(!(a===`/model`||a.startsWith(wo))){t(i);return}let d=a.slice(se.length).trim();if(d){o(e??null,d);return}if(!e)return;let f=Zt();r.fetchQuery({queryKey:[...h.all,s.id,c],queryFn:ct.listProfiles,staleTime:0}).then(({profiles:t})=>n(e,f,t)).catch(e=>{let t=l(D.MODEL$LIST_FAILED);u(e instanceof Error&&e.message?e.message:t)})},[e,t,n,r,o,s.id,c,l])},Eo=e=>e.type.startsWith(`image/`),Do=async e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{t()},r.onerror=()=>{n(Error(`Failed to read file: ${e.name}`))},r.onabort=()=>{n(Error(`File reading was aborted: ${e.name}`))},r.readAsArrayBuffer(e)}),Oo=async e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{t()},r.onerror=()=>{n(Error(`Failed to read image: ${e.name}`))},r.onabort=()=>{n(Error(`Image reading was aborted: ${e.name}`))},r.readAsDataURL(e)}),ko=async e=>{let t=await Promise.allSettled(e.map(async e=>(await Do(e),e))),n=[],r=[];return t.forEach((t,i)=>{t.status===`fulfilled`?n.push(t.value):r.push({file:e[i],error:t.reason})}),{successful:n,failed:r}},Ao=async e=>{let t=await Promise.allSettled(e.map(async e=>(await Oo(e),e))),n=[],r=[];return t.forEach((t,i)=>{t.status===`fulfilled`?n.push(t.value):r.push({file:e[i],error:t.reason})}),{successful:n,failed:r}};function jo(){let{images:e,files:t,addImages:n,addFiles:r,addFileLoading:i,removeFileLoading:a,addImageLoading:o,removeImageLoading:s,markImagesAsPasted:c}=W();return{handleUpload:(0,Y.useCallback)(async(l,d)=>{let f=kr(l,[...e,...t]);if(!f.isValid){u(`Error: ${f.errorMessage}`);return}let p=l.filter(e=>!Eo(e)),m=l.filter(e=>Eo(e));m.length>0&&c(m.map(e=>e.name)),p.forEach(e=>i(e.name)),m.forEach(e=>o(e.name));try{let[e,t]=await Promise.all([ko(p),Ao(m)]);e.successful.length>0&&(r(e.successful),e.successful.forEach(e=>a(e.name))),t.successful.length>0&&(n(t.successful),t.successful.forEach(e=>s(e.name))),e.failed.forEach(({file:e,error:t})=>{a(e.name),u(`Failed to process file ${e.name}: ${t.message}`)}),t.failed.forEach(({file:e,error:t})=>{s(e.name),u(`Failed to process image ${e.name}: ${t.message}`)})}catch{p.forEach(e=>a(e.name)),m.forEach(e=>s(e.name)),u(`An unexpected error occurred while processing files`)}},[e,t,n,r,i,a,o,s,c])}}function Mo({hasSelection:e,testId:t=`dropdown-loading`}){return(0,Z.jsx)(`div`,{className:P(`absolute top-1/2 transform -translate-y-1/2`,e?`right-11`:`right-6`),children:(0,Z.jsx)(`div`,{className:`animate-spin h-4 w-4 border-2 border-transparent border-t-white rounded-full`,"data-testid":t})})}function No({providers:e,value:t,placeholder:n,className:r,errorMessage:i,disabled:o=!1,isLoading:s=!1,onChange:c,inputClassName:l,toggleButtonClassName:u,itemClassName:d}){let{t:f}=a(`openhands`),[p,m]=(0,Y.useState)(``),[h,g]=(0,Y.useState)(t||null),_=e=>{switch(e){case`github`:return`GitHub`;case`gitlab`:return`GitLab`;case`bitbucket`:return`Bitbucket`;case`bitbucket_data_center`:return`Bitbucket Data Center`;case`azure_devops`:return`Azure DevOps`;default:return e.charAt(0).toUpperCase()+e.slice(1)}},v=(0,Y.useMemo)(()=>h&&p===_(h)||!p?.trim()?e:e.filter(e=>_(e).toLowerCase().includes(p.toLowerCase())),[e,p,h]),{isOpen:y,getToggleButtonProps:b,getMenuProps:x,getInputProps:S,highlightedIndex:C,getItemProps:w,selectedItem:T}=je({items:v,itemToString:e=>e?_(e):``,selectedItem:h,onSelectedItemChange:({selectedItem:e})=>{g(e||null),c?.(e||null)},onInputValueChange:({inputValue:e})=>{m(e||``)},inputValue:p});(0,Y.useEffect)(()=>{t!==h&&g(t||null)},[t,h]),(0,Y.useEffect)(()=>{T&&!y?m(_(T)):T||m(``)},[T,y]);let E=(e,t,n,r,i)=>(0,Z.jsx)(pn,{item:e,index:t,isSelected:e===r,getItemProps:i,getDisplayText:_,getItemKey:e=>e,isProviderDropdown:!0,itemClassName:d},e),O=e=>(0,Z.jsx)(mn,{inputValue:e,searchMessage:`No providers found`,emptyMessage:`No providers available`,testId:`git-provider-dropdown-empty`});return(0,Z.jsxs)(`div`,{className:P(`relative`,r),children:[(0,Z.jsxs)(`div`,{className:`group relative text-[var(--oh-muted)] hover:text-white`,children:[T&&(0,Z.jsx)(`div`,{className:`absolute left-2 top-1/2 transform -translate-y-1/2 z-10`,children:(0,Z.jsx)(Ue,{gitProvider:T,className:`min-w-[14px] min-h-[14px] w-[14px] h-[14px]`})}),(0,Z.jsx)(`input`,{...S({disabled:o,placeholder:n??f(D.COMMON$SELECT_PROVIDER_PLACEHOLDER),readOnly:!0,className:P(`w-29.5 h-6 py-0 border border-[var(--oh-border-input)] rounded shadow-none h-6 min-h-6 max-h-6 `,`text-inherit bg-tertiary placeholder:text-[var(--oh-muted)]`,`focus:outline-none focus:ring-0 focus:border-[var(--oh-border-input)]`,`disabled:bg-tertiary disabled:cursor-not-allowed disabled:opacity-60`,`pl-1.5 pr-[1px] cursor-pointer text-xs font-normal leading-5`,T&&`pl-6`,l)}),"data-testid":`git-provider-dropdown`}),(0,Z.jsx)(`div`,{className:`absolute right-0 top-1/2 transform -translate-y-1/2 flex items-center gap-1`,children:(0,Z.jsx)(gn,{isOpen:y,disabled:o,getToggleButtonProps:b,iconClassName:u})}),s&&(0,Z.jsx)(Mo,{hasSelection:!!T})]}),(0,Z.jsx)(_n,{isOpen:y,filteredItems:v,inputValue:p,highlightedIndex:C,selectedItem:T,getMenuProps:x,getItemProps:w,renderItem:E,renderEmptyState:O,itemKey:e=>e}),(0,Z.jsx)(hn,{isError:!!i,message:i})]})}var Po=(e,t=30,n)=>o({queryKey:[`repository`,e,`branches`,`paginated`,t,n],queryFn:async({pageParam:r})=>!e||!n?{items:[],next_page_id:null}:Ft.getRepositoryBranches(e,n,``,r??void 0,t),enabled:!!e&&!!n,staleTime:1e3*60*5,getNextPageParam:e=>e.next_page_id?e.next_page_id:void 0,initialPageParam:null});function Fo(e,t,n=30,r){return c({queryKey:[`repository`,e,`branches`,`search`,t,n,r],queryFn:async()=>!e||!t||!r?[]:(await Ft.searchRepositoryBranches(e,r,t,void 0,n)).items,enabled:!!e&&!!t&&!!r,staleTime:1e3*60*5,gcTime:1e3*60*15})}function Io(e,t,n,r,i,a){let{data:o,fetchNextPage:s,hasNextPage:c,isLoading:l,isFetchingNextPage:u,isError:d}=Po(e,30,t),{data:f,isLoading:p}=Fo(e,r,30,t),m=(0,Y.useMemo)(()=>o?.pages?.flatMap(e=>e.items)||[],[o]),h=(0,Y.useMemo)(()=>n?m.find(e=>e.name===n):null,[m,n]),{data:g,isLoading:_}=Fo(e,n&&!h&&m.length>0&&!r?n:``,30,t);return{branches:(0,Y.useMemo)(()=>{let e=r&&f&&i!==a?.name,t=e?f:m;if(n){let r=e?t.find(e=>e.name===n):h;if(!r&&g&&g.length>0)r=g.find(e=>e.name===n),r&&(t=[r,...t]);else if(r){let e=t.filter(e=>e.name!==n);t=[r,...e]}}return t},[r,f,m,a,i,n,h,g]),allBranches:m,fetchNextPage:s,hasNextPage:c,isLoading:l||_,isFetchingNextPage:u,isError:d,isSearchLoading:p}}function Lo({isOpen:e,filteredBranches:t,inputValue:n,highlightedIndex:r,selectedItem:i,getMenuProps:a,getItemProps:o,onScroll:s,menuRef:c}){return(0,Z.jsx)(`div`,{"data-testid":`git-branch-dropdown-menu`,children:(0,Z.jsx)(_n,{isOpen:e,filteredItems:t,inputValue:n,highlightedIndex:r,selectedItem:i,getMenuProps:a,getItemProps:o,onScroll:s,menuRef:c,renderItem:(e,t,n,r,i)=>(0,Z.jsx)(pn,{item:e,index:t,isSelected:r?.name===e.name,getItemProps:i,getDisplayText:e=>e.name,getItemKey:e=>e.name},e.name),renderEmptyState:e=>(0,Z.jsx)(`li`,{className:`px-3 py-2`,children:(0,Z.jsx)(mn,{inputValue:e,searchMessage:`No branches found`,emptyMessage:`No branches available`,testId:`git-branch-dropdown-empty`})}),itemKey:e=>e.name})})}function Ro({repository:e,provider:t,selectedBranch:n,onBranchSelect:r,defaultBranch:i,placeholder:o,disabled:s=!1,className:c}){let{t:l}=a(`openhands`),[u,d]=(0,Y.useState)(``),[f,p]=(0,Y.useState)(!1),m=It(u,300),h=(0,Y.useRef)(null),g=(0,Y.useMemo)(()=>m.trim().length>0?m.trim():``,[m]),{branches:_,isLoading:v,isError:y,fetchNextPage:b,hasNextPage:x,isFetchingNextPage:S,isSearchLoading:C}=Io(e,t,i||null,g,u,n),w=y?Error(`Failed to load branches`):null,T=(0,Y.useCallback)(()=>{d(``),r(null),p(!0)},[r]),E=(0,Y.useCallback)(e=>{r(e),d(``)},[r]),O=(0,Y.useCallback)(e=>{let{scrollTop:t,scrollHeight:n,clientHeight:r}=e.currentTarget;n-t<=r*1.5&&x&&!S&&b()},[x,S,b]),{isOpen:k,selectedItem:A,highlightedIndex:j,getInputProps:ee,getItemProps:M,getMenuProps:te,getToggleButtonProps:N}=je({items:_,selectedItem:n,itemToString:e=>e?.name||``,onSelectedItemChange:({selectedItem:e})=>{E(e||null)},inputValue:u,stateReducer:(e,t)=>t.type===je.stateChangeTypes.InputClick&&e.isOpen?{...t.changes,isOpen:!0}:t.changes});(0,Y.useEffect)(()=>{e&&(r(null),p(!1))},[e,r]),(0,Y.useEffect)(()=>{if(e&&i&&!n&&!f&&_.length>0&&!v){let e=_.find(e=>e.name===i);e&&r(e)}},[e,i,n,f,_,r,v]),(0,Y.useEffect)(()=>{d(``)},[e]),(0,Y.useEffect)(()=>{n&&!k?d(n.name):!n&&!k&&d(``)},[n,k]);let ne=v||C||S;return(0,Z.jsxs)(`div`,{className:P(`relative`,c),children:[(0,Z.jsxs)(`div`,{className:`group relative text-[var(--oh-muted)] hover:text-white`,children:[(0,Z.jsx)(`div`,{className:`absolute left-2 top-1/2 transform -translate-y-1/2 z-10`,children:ne?(0,Z.jsx)(`div`,{className:`animate-spin h-4 w-4 border-2 border-transparent border-t-white rounded-full`}):(0,Z.jsx)(Ei,{width:16,height:16})}),(0,Z.jsx)(`input`,{...ee({disabled:s||!e,placeholder:o??l(D.COMMON$SELECT_BRANCH_PLACEHOLDER),className:P(Ee,`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=>{d(e.target.value)}}),"data-testid":`git-branch-dropdown-input`}),(0,Z.jsxs)(`div`,{className:`absolute right-1 top-1/2 transform -translate-y-1/2 flex items-center`,children:[n&&(0,Z.jsx)(vn,{disabled:s,onClear:T}),(0,Z.jsx)(gn,{isOpen:k,disabled:s||!e,getToggleButtonProps:N})]})]}),(0,Z.jsx)(Lo,{isOpen:k,filteredBranches:_,inputValue:u,highlightedIndex:j,selectedItem:A,getMenuProps:te,getItemProps:M,onScroll:O,menuRef:h}),(0,Z.jsx)(hn,{isError:!!w})]})}function zo({className:e}){return(0,Z.jsx)(`div`,{className:P(`w-3 h-3 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300 absolute right-0 top-1/2 -translate-y-1/2 h-full w-10.5 pr-2.5 justify-end git-external-link-icon`,e),children:(0,Z.jsx)(ln,{width:12,height:12,color:`white`})})}function Bo({selectedRepository:e,gitProvider:t,workspaceName:n,emptyStateLabel:r,onClick:i,disabled:o}){let{t:s}=a(`openhands`),{data:c}=H(),l=!!e&&!!t,u=t?c?.provider_tokens_set[t]:null,d=l?te(t,e,u):void 0,f=!e&&!n,p=e||n||s(D.COMMON$CONNECT_REPO);return l?(0,Z.jsxs)(`a`,{href:d,target:`_blank`,rel:`noopener noreferrer`,className:P(`group flex flex-row items-center justify-between gap-2 pl-2.5 pr-2.5 py-1 rounded-[100px] flex-1 truncate relative`,`border border-[var(--oh-border)] bg-transparent hover:border-[var(--oh-border-subtle)] cursor-pointer`),children:[(0,Z.jsx)(`div`,{className:`w-3 h-3 flex items-center justify-center flex-shrink-0`,children:(0,Z.jsx)(Ue,{gitProvider:t,className:`w-3 h-3 inline-flex`})}),(0,Z.jsx)(`div`,{className:`font-normal text-white text-sm leading-5 truncate flex-1 min-w-0`,title:p,children:p}),(0,Z.jsx)(zo,{})]}):(0,Z.jsxs)(`button`,{type:`button`,onClick:i,disabled:o,className:P(`group flex flex-row items-center justify-between gap-2 pl-2.5 pr-2.5 py-1 rounded-[100px] truncate relative`,`border border-[rgba(71,74,84,0.50)] bg-transparent`,o?`cursor-not-allowed opacity-50`:`cursor-pointer hover:border-[var(--oh-border-subtle)]`),children:[(0,Z.jsx)(`div`,{className:`w-3 h-3 flex items-center justify-center flex-shrink-0 text-white`,children:f?(0,Z.jsx)(he,{className:`w-3 h-3`,strokeWidth:2,"aria-hidden":!0,"data-testid":`git-control-bar-connect-repo-icon`}):(0,Z.jsx)(_t,{width:12,height:12,color:`white`})}),(0,Z.jsx)(`div`,{className:`font-normal text-white text-sm leading-5 truncate flex-1 min-w-0`,title:p,children:p})]})}function Vo({selectedBranch:e,selectedRepository:t,gitProvider:n}){let{t:r}=a(`openhands`),{data:i}=H(),o=n?i?.provider_tokens_set[n]:null,s=!!e&&!!t&&!!n,c=s?ne(n,t,e,o):void 0,l=e||r(D.COMMON$NO_BRANCH);return(0,Z.jsxs)(`a`,{href:s?c:void 0,target:`_blank`,rel:`noopener noreferrer`,className:P(`group flex flex-row items-center justify-between gap-2 pl-2.5 pr-2.5 py-1 rounded-[100px] w-fit flex-shrink-0 max-w-[200px] truncate relative`,s?`border border-[var(--oh-border)] bg-transparent hover:border-[var(--oh-border-subtle)] cursor-pointer`:`border border-[rgba(71,74,84,0.50)] bg-transparent cursor-not-allowed min-w-[108px]`),children:[(0,Z.jsx)(`div`,{className:`w-3 h-3 flex items-center justify-center flex-shrink-0`,children:(0,Z.jsx)(Ei,{width:12,height:12,color:`white`})}),(0,Z.jsx)(`div`,{className:`font-normal text-white text-sm leading-5 truncate`,title:l,children:l}),s&&(0,Z.jsx)(zo,{})]})}function Ho(){let{t:e}=a(`openhands`),{navigate:t}=ke(),{isConfigured:n,isLoading:r}=Xe();return r||n?null:(0,Z.jsxs)(`div`,{"data-testid":`home-llm-not-configured-banner`,role:`alert`,className:`mt-3 flex w-full flex-col gap-3 rounded-xl border border-[var(--oh-border)] bg-[var(--oh-surface-raised)] px-4 py-3 text-[var(--oh-foreground)] sm:flex-row sm:items-center sm:justify-between sm:py-4`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-start sm:items-center`,children:[(0,Z.jsx)(`div`,{className:`flex-shrink-0`,children:(0,Z.jsx)(Pt,{className:`align-middle text-yellow-400`})}),(0,Z.jsx)(K.Text,{className:`ml-3 text-sm font-medium`,children:e(D.HOME$LLM_NOT_CONFIGURED_MESSAGE)})]}),(0,Z.jsx)(Oe,{testId:`home-llm-not-configured-action`,type:`button`,variant:`primary`,className:`w-fit shrink-0 self-start whitespace-nowrap sm:self-auto`,onClick:()=>t(`/settings/llm`),children:e(D.HOME$LLM_NOT_CONFIGURED_ACTION)})]})}export{Ei as A,wr as B,Ii as C,Q as D,ji as E,Br as F,xn as G,br as H,Vr as I,Rr as L,yi as M,Zr as N,Oi as O,Hr as P,Ar as R,Li as S,Mi as T,$n as U,Sr as V,jn as W,ia as _,No as a,zi as b,Co as c,no as d,qa as f,va as g,Aa as h,Ro as i,Ti as j,Di as k,ao as l,Wa as m,Vo as n,jo as o,Ga as p,Bo as r,To as s,Ho as t,ro as u,ra as v,Ni as w,Ri as x,Qi as y,kr as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./llm-settings-De1d5dfr.js";export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,bt as n,n as r,r as i,t as a,yt as o}from"./vendor-styling-Ck5D_A2Q.js";import{U as s}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~i58xkef6-cHFhpUBq.js";import{n as c}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-rfV8mQ9m.js";import{t as l}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iyia17eu-Chf7vmKB.js";import{D as u,h as d,o as f}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-DqZDXfg2.js";import{t as p}from"./useMutation-B-qc391N.js";import{t as m}from"./useQuery-BSTgq1rl.js";import{Ft as h,It as g,L as _,M as v,N as y,P as b,n as x,tt as S,ut as C,z as w}from"./active-backend-context-CrHTlgvN.js";import{B as T,W as E,t as D}from"./utils-CN5ZfZy1.js";import{t as O}from"./back-nav-button-Cjl_hoxq.js";import{n as k,r as A}from"./map-provider-Cu3Zgumb.js";import{t as j}from"./external-link-DKUlnCQV.js";import{t as M}from"./info-B6RQawoW.js";import{t as N}from"./triangle-alert-CtdXWHUI.js";import{t as P}from"./proxy-9Fe1v5na.js";import{t as F}from"./loading-spinner-BY9N3pOe.js";import{t as ee}from"./settings-CKqk8ZnH.js";import{t as I}from"./settings-service.api-DJ1r62Zr.js";import{n as te}from"./use-settings-DSXLbvBl.js";import{f as ne}from"./form-control-classes-Bkh5FGrD.js";import{t as L}from"./brand-button-BAfk4wGP.js";import{i as re}from"./dropdown-classes-Bc1djN0-.js";import{a as ie,t as ae}from"./settings-dropdown-input-BcwylHs2.js";import{t as R}from"./settings-input-Db-1g8Ql.js";import{t as z}from"./profiles-service.api-ChoKrL0l.js";import{a as B,d as V,n as H,p as U,r as W,t as G}from"./llm-subscription-DTqtBCWz.js";import{t as K}from"./llm-subscription-service-BpJ0ouQo.js";import{t as oe}from"./use-llm-profiles-BO-P4Oyo.js";import{i as se,n as ce,t as le}from"./use-can-manage-org-profiles-CrJP5262.js";import{t as ue}from"./u-edit-DAkcF52u.js";import{a as de,n as fe,o as pe,r as me,t as he}from"./format-model-name-CasAP3nd.js";import{_ as ge,f as _e,m as ve,y as ye}from"./schema-field-D-y9-LDb.js";import{t as be}from"./copy-to-clipboard-button-Ca8iSkkA.js";import{r as xe}from"./typography-v1KN0tzi.js";import{t as Se}from"./sdk-section-page-BlFiizlG.js";import{o as q}from"./extension-module-card-classes-DpeaYhYo.js";import{a as Ce,i as we,n as J,o as Te,r as Y,t as Ee}from"./badge-BU3S0VtE.js";import{t as De}from"./u-check-circle-BKn1spCL.js";import{i as Oe,n as ke,r as Ae,t as je}from"./settings-list-classes-BzeSZbF2.js";import{n as Me}from"./api-error-message-B-XdSk3b.js";import{n as Ne}from"./settings-section-header-context-BOJ_Fbak.js";var Pe=u(`text-cursor`,[[`path`,{d:`M17 22h-1a4 4 0 0 1-4-4V6a4 4 0 0 1 4-4h1`,key:`uvaxm9`}],[`path`,{d:`M7 22h1a4 4 0 0 0 4-4`,key:`1l7xii`}],[`path`,{d:`M7 2h1a4 4 0 0 1 4 4`,key:`1vrvvh`}]]);function Fe(){let e=c();return p({mutationFn:e=>z.activateProfile(e),onSuccess:async()=>{I.invalidateCache(),await e.invalidateQueries({queryKey:y.all}),await e.invalidateQueries({queryKey:w.personal()})},meta:{disableToast:!0}})}var Ie=e=>{let[t,...n]=e.split(`/`);return!t||n.length===0?{provider:``,model:e,separator:``}:{provider:t,model:n.join(`/`),separator:`/`}};function Le(e,t){if(!t)return e;let n=t.toLowerCase();return e.filter(e=>e.name.toLowerCase().includes(n))}function Re(e,t){return t===void 0?e:e.filter(e=>e.verified===t)}function ze(e,t){return!t||t<=0?e:e.slice(0,t)}function Be(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))r!==void 0&&t.set(n,String(r));let n=t.toString();return n?`?${n}`:``}var Ve=class{static async searchModels(e={},t){let n=C();if(n.backend.kind===`cloud`){let t=Be({page_id:e.page_id,limit:e.limit,query:e.query,verified__eq:e.verified__eq,provider__eq:e.provider__eq});return P({backend:n.backend,method:`GET`,path:`/api/v1/config/models/search${t}`})}let r=new d(S()),i=t===void 0?r.getVerifiedModels():Promise.resolve(t),[a,o]=await Promise.all([r.getModels(),i]),s=e.provider__eq??null,c=new Set(s?o?.[s]??[]:[]),l=[...c].map(e=>({provider:s,name:e,verified:!0})),u=s?(a??[]).filter(e=>e.startsWith(`${s}/`)).map(e=>e.slice(s.length+1)).filter(e=>e.length>0&&!c.has(e)).map(e=>({provider:s,name:e,verified:!1})):[];return{items:ze(Re(Le([...l,...u],e.query),e.verified__eq),e.limit),next_page_id:null}}static async searchProviders(e={},t){let n=C();if(n.backend.kind===`cloud`){let t=Be({page_id:e.page_id,limit:e.limit,query:e.query,verified__eq:e.verified__eq});return P({backend:n.backend,method:`GET`,path:`/api/v1/config/providers/search${t}`})}let r=new d(S()),i=t===void 0?r.getVerifiedModels():Promise.resolve(t),[a,o]=await Promise.all([r.getProviders(),i]),s=new Set(Object.keys(o??{}));return{items:ze(Re(Le([...new Set([...s,...a??[]])].map(e=>({name:e,verified:s.has(e)})),e.query),e.verified__eq),e.limit),next_page_id:null}}},He=[`config`,`verified-models`],X=1e3*60*5,Ue=1e3*60*15;async function We(){return C().backend.kind===`cloud`?{}:await new d(S()).getVerifiedModels()??{}}var Ge=10;async function Ke(e,t,n,r){if(r>=Ge)throw Error(`Too many pagination requests while fetching providers (depth=${r})`);let i=await Ve.searchProviders(t?{page_id:t}:{},e);if(!i.next_page_id)return i.items;if(n.has(i.next_page_id))throw Error(`Repeated page id while fetching providers: ${i.next_page_id}`);n.add(i.next_page_id);let a=await Ke(e,i.next_page_id,n,r+1);return[...i.items,...a]}var qe=()=>m({queryKey:[`config`,`providers`],queryFn:async({client:e})=>Ke(await e.fetchQuery({queryKey:He,queryFn:We,staleTime:X}),null,new Set,0),staleTime:X,gcTime:Ue}),Je=10;async function Ye(e,t,n,r=0){if(r>=Je)throw Error(`Too many pagination requests for provider ${e}`);let i=await Ve.searchModels({provider__eq:e,limit:100,page_id:n},t);if(i.next_page_id){let n=await Ye(e,t,i.next_page_id,r+1);return[...i.items,...n]}return i.items}var Xe=e=>m({queryKey:[`config`,`models`,e],queryFn:async({client:t})=>Ye(e,await t.fetchQuery({queryKey:He,queryFn:We,staleTime:X})),enabled:!!e,staleTime:X,gcTime:Ue}),Z=e(t(),1),Q=o(),Ze=`shrink-0 rounded-full border border-warning/40 bg-warning/10 px-1.5 py-0.5 text-[10px] leading-none text-warning`;function Qe(){return(0,Q.jsxs)(`p`,{"data-testid":`openhands-free-models-note`,className:`flex items-start gap-2 text-xs text-warning`,children:[(0,Q.jsx)(M,{className:`mt-0.5 size-4 shrink-0 text-warning`,"aria-hidden":!0}),(0,Q.jsx)(`span`,{children:fe})]})}function $e({isDisabled:e,currentModel:t,onChange:n,onDefaultValuesChanged:o,wrapperClassName:s,labelClassName:c}){let[,u]=Z.useState(null),[d,f]=Z.useState(null),[p,m]=Z.useState(null),{data:h=[]}=qe(),{data:g=[],isLoading:_,error:v}=Xe(d),y=Z.useMemo(()=>h.filter(e=>e.verified),[h]),b=Z.useMemo(()=>h.filter(e=>!e.verified),[h]),x=Z.useMemo(()=>g.filter(e=>e.verified),[g]),S=Z.useMemo(()=>g.filter(e=>!e.verified),[g]);Z.useEffect(()=>{if(t){let{provider:e,model:n}=Ie(t);u(t),f(e||null),m(n),o?.(e||null,n)}},[t]);let C=e=>{f(e),m(null),u(`${e}/`),n?.(e,null)},w=e=>{let t=`${d}/${e}`;d===`openai`&&(t=e),u(t),m(e),n?.(d,e)},O=()=>{f(null),u(null)},A=de(d&&p?`${d}/${p}`:null),j=Z.useRef(null),[M,N]=Z.useState(0);Z.useLayoutEffect(()=>{if(!A||!j.current){N(0);return}let e=()=>{N(Math.ceil(j.current?.getBoundingClientRect().width??0))};if(e(),typeof ResizeObserver>`u`)return;let t=new ResizeObserver(e);return t.observe(j.current),()=>t.disconnect()},[A,p]);let{t:P}=l(`openhands`);return(0,Q.jsxs)(`div`,{className:D(`flex flex-col md:flex-row w-full min-w-0 justify-between gap-4 md:gap-[46px]`,s),children:[(0,Q.jsxs)(`fieldset`,{className:`flex flex-col gap-2.5 w-full`,children:[(0,Q.jsx)(`label`,{className:D(`text-sm`,c),children:P(E.LLM$PROVIDER)}),(0,Q.jsxs)(a,{"data-testid":`llm-provider-input`,isRequired:!0,isVirtualized:!1,name:`llm-provider-input`,isDisabled:e,"aria-label":P(E.LLM$PROVIDER),isClearable:!1,onSelectionChange:e=>{e?.toString()&&C(e.toString())},onInputChange:e=>!e&&O(),defaultSelectedKey:d??void 0,selectedKey:d,classNames:{popoverContent:`bg-content1 rounded-xl border border-[var(--oh-border)]`,selectorButton:ie},selectorButtonProps:{disableRipple:!0},inputProps:{classNames:{inputWrapper:ne}},children:[(0,Q.jsx)(r,{title:P(E.MODEL_SELECTOR$VERIFIED),classNames:{heading:`text-[var(--oh-muted)]`},children:y.map(e=>(0,Q.jsx)(i,{"data-testid":`provider-item-${e.name}`,children:k(e.name)},e.name))}),b.length>0?(0,Q.jsx)(r,{title:P(E.MODEL_SELECTOR$OTHERS),classNames:{heading:`text-[var(--oh-muted)]`},children:b.map(e=>(0,Q.jsx)(i,{children:k(e.name)},e.name))}):null]})]}),d===`openhands`&&(0,Q.jsx)(`div`,{className:`flex flex-col gap-2`,children:(0,Q.jsx)(ye,{testId:`openhands-account-help`,text:P(E.SETTINGS$NEED_OPENHANDS_ACCOUNT),linkText:P(E.SETTINGS$CLICK_HERE),href:T.PRODUCTION,size:`settings`,linkColor:`white`})}),(0,Q.jsxs)(`fieldset`,{className:`flex flex-col gap-2.5 w-full`,children:[(0,Q.jsx)(`label`,{className:D(`text-sm`,c),children:P(E.LLM$MODEL)}),(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsxs)(a,{"data-testid":`llm-model-input`,isRequired:!0,isVirtualized:!1,isLoading:_,name:`llm-model-input`,"aria-label":P(E.LLM$MODEL),isClearable:!1,onSelectionChange:e=>{e?.toString()&&w(e.toString())},isDisabled:e||!d,selectedKey:p,defaultSelectedKey:p??void 0,classNames:{popoverContent:`bg-content1 rounded-xl border border-[var(--oh-border)]`,selectorButton:ie},selectorButtonProps:{disableRipple:!0},inputProps:{classNames:{inputWrapper:ne}},children:[(0,Q.jsx)(r,{title:P(E.MODEL_SELECTOR$VERIFIED),classNames:{heading:`text-[var(--oh-muted)]`},children:x.map(e=>(0,Q.jsx)(i,{textValue:e.name,children:(0,Q.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`truncate`,children:e.name}),de(`${d}/${e.name}`)?(0,Q.jsx)(`span`,{className:Ze,children:he}):null]})},e.name))}),S.length>0?(0,Q.jsx)(r,{title:P(E.MODEL_SELECTOR$OTHERS),classNames:{heading:`text-[var(--oh-muted)]`},children:S.map(e=>(0,Q.jsx)(i,{"data-testid":`model-item-${e.name}`,textValue:e.name,children:e.name},e.name))}):null]}),A&&p?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{ref:j,className:`pointer-events-none absolute left-3 top-1/2 whitespace-pre text-sm opacity-0`,"aria-hidden":!0,children:p}),(0,Q.jsx)(`span`,{"data-testid":`selected-free-model-badge`,className:D(Ze,`pointer-events-none absolute top-1/2 z-10 -translate-y-1/2`),style:{left:`calc(0.75rem + ${M}px + 0.5rem)`},children:he})]}):null]}),v&&(0,Q.jsx)(`p`,{"data-testid":`models-error`,className:`text-danger text-xs`,children:P(E.CONFIGURATION$ERROR_FETCH_MODELS)}),d===`openhands`?(0,Q.jsx)(Qe,{}):null]})]})}function et(){return p({mutationFn:K.startOpenAIDeviceLogin})}function tt(){let e=c();return p({mutationFn:K.pollOpenAIDeviceLogin,onSuccess:()=>{e.invalidateQueries({queryKey:b.openaiStatus})}})}function nt(){let e=c();return p({mutationFn:K.logoutOpenAI,onSuccess:()=>{e.invalidateQueries({queryKey:b.openaiStatus})}})}function rt({enabled:e=!0}={}){return m({queryKey:b.openaiStatus,queryFn:K.getOpenAIStatus,enabled:e,retry:!1,refetchOnWindowFocus:!1,staleTime:1e3*60*5,meta:{disableToast:!0}})}var it=5,at=1;function ot(e){let t=e.verificationUriComplete??e.verificationUri;window.open(t,`_blank`,`noopener,noreferrer`)}function st({isDisabled:e=!1}){let{t}=l(`openhands`),n=rt(),r=et(),i=tt(),a=nt(),[o,s]=Z.useState(null),[c,u]=Z.useState(!1),[d,f]=Z.useState(!1),p=Z.useRef(null),m=Z.useCallback(()=>{p.current!==null&&(window.clearTimeout(p.current),p.current=null)},[]),_=()=>{o&&(navigator.clipboard.writeText(o.userCode),u(!0),setTimeout(()=>u(!1),2e3))},v=r.isPending||i.isPending||a.isPending,y=!!n.data?.connected,b=Z.useCallback(async e=>{try{return(await i.mutateAsync(e)).connected?(s(null),f(!1),g(t(E.SETTINGS$SUBSCRIPTION_CONNECTED_TOAST)),!0):(f(!0),!1)}catch{return h(t(E.SETTINGS$SUBSCRIPTION_CONNECT_ERROR)),!0}},[i,t]);return Z.useEffect(()=>{if(!o||y||e)return;let t=!1,n=Math.max(o.intervalSeconds??it,at),r=()=>{m(),p.current=window.setTimeout(async()=>{if(t)return;let e=await b(o.deviceCode);!t&&!e&&r()},n*1e3)};return r(),()=>{t=!0,m()}},[o,m,y,e,b]),(0,Q.jsxs)(`section`,{"data-testid":`openai-subscription-auth-card`,className:`flex flex-col gap-4 rounded-xl border border-[var(--oh-border)] bg-[var(--oh-surface-raised)] p-4`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsx)(xe.H3,{children:t(E.SETTINGS$SUBSCRIPTION_CARD_TITLE)}),(0,Q.jsx)(xe.Paragraph,{className:`text-tertiary-alt text-sm leading-5`,children:t(E.SETTINGS$SUBSCRIPTION_CARD_DESCRIPTION)})]}),(0,Q.jsx)(`div`,{className:`flex flex-col gap-1 text-sm`,"data-testid":`subscription-status`,children:n.isLoading?(0,Q.jsx)(`span`,{className:`text-tertiary-light`,children:t(E.SETTINGS$SUBSCRIPTION_STATUS_CHECKING)}):n.isError?(0,Q.jsx)(`span`,{className:`text-danger`,children:t(E.SETTINGS$SUBSCRIPTION_STATUS_UNAVAILABLE)}):y?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`text-success`,children:t(E.SETTINGS$SUBSCRIPTION_STATUS_CONNECTED)}),n.data?.accountEmail?(0,Q.jsx)(`span`,{className:`text-tertiary-light`,children:t(E.SETTINGS$SUBSCRIPTION_ACCOUNT,{account:n.data.accountEmail})}):null]}):(0,Q.jsx)(`span`,{className:`text-warning`,children:t(E.SETTINGS$SUBSCRIPTION_STATUS_DISCONNECTED)})}),o?(0,Q.jsxs)(`div`,{"data-testid":`subscription-device-challenge`,className:`flex flex-col gap-2 rounded-lg border border-[var(--oh-border-subtle)] p-3 text-sm`,children:[(0,Q.jsx)(`span`,{children:t(E.SETTINGS$SUBSCRIPTION_DEVICE_INSTRUCTIONS)}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg bg-[var(--oh-surface-deep)] px-3 py-2 font-mono text-base font-semibold text-white`,children:[(0,Q.jsx)(`span`,{"data-testid":`subscription-user-code`,className:`flex-1 select-all tracking-[0.08em]`,children:o.userCode}),(0,Q.jsx)(be,{isHidden:!1,isDisabled:!1,onClick:_,mode:c?`copied`:`copy`})]}),(0,Q.jsxs)(`a`,{href:o.verificationUriComplete??o.verificationUri,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 text-sm text-[var(--oh-accent)] underline`,children:[t(E.SETTINGS$SUBSCRIPTION_OPEN_LOGIN),(0,Q.jsx)(j,{size:14,"aria-hidden":!0})]}),d?(0,Q.jsx)(`span`,{className:`text-warning`,children:t(E.SETTINGS$SUBSCRIPTION_PENDING_TOAST)}):null]}):null,(0,Q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[y?(0,Q.jsx)(L,{testId:`subscription-disconnect`,type:`button`,variant:`tertiary`,isDisabled:e||v,onClick:async()=>{try{await a.mutateAsync(),m(),s(null),f(!1),g(t(E.SETTINGS$SUBSCRIPTION_DISCONNECTED_TOAST))}catch{h(t(E.ERROR$GENERIC))}},children:t(E.SETTINGS$SUBSCRIPTION_DISCONNECT)}):(0,Q.jsx)(L,{testId:`subscription-connect`,type:`button`,variant:`primary`,isDisabled:e||v,onClick:async()=>{try{let e=await r.mutateAsync();s(e),f(!0),ot(e)}catch{h(t(E.SETTINGS$SUBSCRIPTION_CONNECT_ERROR))}},children:t(E.SETTINGS$SUBSCRIPTION_CONNECT)}),o?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(L,{testId:`subscription-poll`,type:`button`,variant:`secondary`,isDisabled:e||v,onClick:async()=>{o&&(m(),b(o.deviceCode))},children:t(E.SETTINGS$SUBSCRIPTION_FINISH_SIGN_IN)}),(0,Q.jsx)(L,{testId:`subscription-cancel`,type:`button`,variant:`tertiary`,isDisabled:e||v,onClick:()=>{m(),s(null),f(!1)},children:t(E.BUTTON$CANCEL)})]}):null]})]})}var ct=e=>(0,Q.jsxs)(`svg`,{width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,Q.jsx)(`path`,{d:`M9.9509 15.588H10.8349L16.5125 9.91042L15.6285 9.0264L10.3991 14.2681L8.00867 11.8777L7.12465 12.7617L9.9509 15.588Z`,fill:`currentColor`}),(0,Q.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M12.8521 3.29895C14.8443 3.42346 16.712 4.41954 18.0816 5.78916C19.7002 7.53231 20.5718 9.64898 20.5718 12.1392C20.5718 14.1314 19.8247 15.999 18.5796 17.6177C17.3345 19.1118 15.5914 20.2324 13.5992 20.6059C11.607 20.9794 9.61486 20.7304 7.87171 19.7343C6.12856 18.7382 4.75895 17.2441 4.01189 15.3765C3.26482 13.5088 3.14031 11.3921 3.76286 9.52447C4.38542 7.53231 5.50601 5.91367 7.24916 4.79308C8.86779 3.67248 10.86 3.17444 12.8521 3.29895ZM13.4747 19.3608C15.0933 18.9873 16.5874 18.1157 17.708 16.7461C18.7041 15.3765 19.3267 13.7578 19.2022 12.0147C19.2022 10.0225 18.4551 8.03035 17.0855 6.66073C15.8404 5.41563 14.3463 4.66857 12.6031 4.54405C10.9845 4.41954 9.24132 4.79308 7.87171 5.78916C6.50209 6.78524 5.50601 8.15486 5.00797 9.89801C4.50993 11.5166 4.50993 13.2598 5.25699 14.8784C6.00405 16.4971 7.12465 17.7422 8.61877 18.6137C10.1129 19.4853 11.856 19.7343 13.4747 19.3608Z`,fill:`currentColor`})]});function lt({testId:e,isSet:t}){return(0,Q.jsx)(`span`,{"data-testid":e||(t?`set-indicator`:`unset-indicator`),children:(0,Q.jsx)(ct,{className:D(t?`text-success`:`text-danger`)})})}function ut(){let e=c();return p({mutationFn:({name:e,newName:t})=>z.renameProfile(e,t),onSuccess:async(t,{name:n,newName:r})=>{C().backend.kind===`local`&&(await I.getSettings())?.title_llm_profile===n&&await I.saveSettings({title_llm_profile:r}),I.invalidateCache(),await e.invalidateQueries({queryKey:y.all}),await e.invalidateQueries({queryKey:w.personal()})},meta:{disableToast:!0}})}function dt({profile:e,onClose:t}){let{t:n}=l(`openhands`),[r,i]=(0,Z.useState)(``),a=ut(),o=(0,Z.useRef)(null);if((0,Z.useEffect)(()=>{i(e?.name??``)},[e?.name]),!e)return null;let s=Te(r,{isRequired:!0}),c=r===e.name,u=async()=>{if(!s){h(n(E.SETTINGS$PROFILE_NAME_RULE));return}if(c){t();return}try{await a.mutateAsync({name:e.name,newName:r}),g(n(E.SETTINGS$PROFILE_RENAMED,{name:r})),t()}catch(e){h(e instanceof Error?e.message:n(E.ERROR$GENERIC))}},d=()=>{a.isPending||t()},f=(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(L,{type:`button`,variant:`tertiary`,onClick:d,isDisabled:a.isPending,children:n(E.BUTTON$CANCEL)}),(0,Q.jsx)(L,{testId:`rename-profile-submit`,type:`button`,variant:`primary`,onClick:u,isDisabled:a.isPending||!s,children:a.isPending?(0,Q.jsx)(F,{size:`small`}):n(E.BUTTON$RENAME)})]});return(0,Q.jsx)(Y,{isOpen:!0,title:n(E.SETTINGS$PROFILE_RENAME_TITLE),footer:f,onClose:d,initialFocusRef:o,children:(0,Q.jsx)(`div`,{"data-testid":`rename-profile-modal`,className:`flex flex-col gap-3`,children:(0,Q.jsx)(we,{ref:o,testId:`rename-profile-input`,ruleTestId:`rename-profile-rule`,value:r,onChange:i,isRequired:!0,onKeyDown:e=>{e.key===`Enter`&&!a.isPending&&s&&u()}})})})}function ft(){let e=c();return p({mutationFn:e=>z.deleteProfile(e),onSuccess:async(t,n)=>{C().backend.kind===`local`&&(await I.getSettings())?.title_llm_profile===n&&await I.saveSettings({title_llm_profile:null}),I.invalidateCache(),await e.invalidateQueries({queryKey:y.all}),await e.invalidateQueries({queryKey:w.personal()})},meta:{disableToast:!0}})}function pt({profile:e,onClose:t}){let{t:n}=l(`openhands`),r=ft(),i=(0,Z.useRef)(null);if(!e)return null;let a=async()=>{try{await r.mutateAsync(e.name),g(n(E.SETTINGS$PROFILE_DELETED,{name:e.name})),t()}catch(e){h(e instanceof Error?e.message:n(E.ERROR$GENERIC))}},o=()=>{r.isPending||t()},s=(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(L,{ref:i,type:`button`,variant:`tertiary`,onClick:o,isDisabled:r.isPending,children:n(E.BUTTON$CANCEL)}),(0,Q.jsx)(L,{testId:`delete-profile-confirm`,type:`button`,variant:`danger`,onClick:a,isDisabled:r.isPending,"aria-busy":r.isPending,children:r.isPending?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(F,{size:`small`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:n(E.BUTTON$DELETE)})]}):n(E.BUTTON$DELETE)})]});return(0,Q.jsx)(Y,{isOpen:!0,title:n(E.SETTINGS$PROFILE_DELETE_TITLE),footer:s,onClose:o,initialFocusRef:i,children:(0,Q.jsx)(`p`,{className:`text-sm break-all`,children:n(E.SETTINGS$PROFILE_DELETE_CONFIRMATION,{name:e.name})})})}var mt=e(n(),1);function ht({onEdit:e,onRename:t,onDuplicate:n,onSetActive:r,onDelete:i,isActive:a,isActivating:o,onClose:s,anchorRef:c}){let{t:u}=l(`openhands`),d=(0,Z.useRef)(null),f=(0,Z.useRef)([]),p=c?.current??null,[m,h]=(0,Z.useState)();(0,Z.useLayoutEffect)(()=>{if(!p)return;let e=()=>{let e=p.getBoundingClientRect();e&&h({position:`fixed`,zIndex:9999,top:e.bottom+8,right:window.innerWidth-e.right,width:`max-content`})};return e(),window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[p]),(0,Z.useEffect)(()=>{f.current[0]?.focus()},[]),(0,Z.useEffect)(()=>{let e=e=>{let t=e.target;d.current?.contains(t)||p?.contains(t)||s()},t=e=>{e.key===`Escape`&&s()};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[p,s]);let g=e=>{e(),s()},_=(0,Z.useCallback)((e,t)=>{if(e.key===`Tab`){s();return}let n=f.current.filter(Boolean).length;if(e.key===`ArrowDown`){e.preventDefault();let r=(t+1)%n;f.current[r]?.focus()}else if(e.key===`ArrowUp`){e.preventDefault();let r=(t-1+n)%n;f.current[r]?.focus()}},[s]),v=a||o,y=!!p,b=(0,Q.jsxs)(`div`,{ref:d,className:D(`absolute right-0 top-full z-10 mt-2 w-[160px] rounded-md border border-[var(--oh-border-subtle)] bg-tertiary px-1 py-1 shadow-lg`,re,y&&`!static !top-auto !bottom-auto !left-auto !right-auto !mt-0`),role:`menu`,"aria-orientation":`vertical`,"data-testid":`profile-actions-menu`,children:[(0,Q.jsx)(J,{index:0,icon:(0,Q.jsx)(ue,{width:16,height:16}),label:u(E.SETTINGS$PROFILE_EDIT),onClick:()=>g(e),onKeyDown:_,menuItemsRef:f,testId:`profile-edit`}),(0,Q.jsx)(J,{index:1,icon:(0,Q.jsx)(Pe,{"aria-hidden":!0,className:`size-4`,strokeWidth:2}),label:u(E.BUTTON$RENAME),onClick:()=>g(t),onKeyDown:_,menuItemsRef:f,testId:`profile-rename`}),(0,Q.jsx)(J,{index:2,icon:(0,Q.jsx)(A,{"aria-hidden":!0,className:`size-4`,strokeWidth:2}),label:u(E.BUTTON$DUPLICATE),onClick:()=>g(n),onKeyDown:_,menuItemsRef:f,testId:`profile-duplicate`}),(0,Q.jsx)(J,{index:3,icon:(0,Q.jsx)(De,{width:16,height:16}),label:u(E.SETTINGS$PROFILE_SET_DEFAULT),onClick:()=>g(r),onKeyDown:_,menuItemsRef:f,disabled:v,testId:`profile-set-active`}),(0,Q.jsx)(J,{index:4,icon:(0,Q.jsx)(se,{width:16,height:16}),label:u(E.BUTTON$DELETE),onClick:()=>g(i),onKeyDown:_,menuItemsRef:f,testId:`profile-delete`})]});return y?typeof document>`u`||!m?null:mt.createPortal((0,Q.jsx)(`div`,{style:m,children:b}),document.body):b}function gt({profile:e,isActive:t,canManage:n,onActivate:r,onEdit:i,onRename:a,onDuplicate:o,onDelete:s,isActivating:c}){let{t:u}=l(`openhands`),[d,f]=(0,Z.useState)(!1),p=(0,Z.useRef)(null),m=me(e.model);return(0,Q.jsxs)(`div`,{"data-testid":`profile-row`,className:D(Oe,`justify-between gap-3`),children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:[(0,Q.jsx)(`span`,{className:`min-w-0 max-w-full truncate text-sm font-medium text-white`,title:e.name,children:e.name}),m?(0,Q.jsx)(`span`,{className:`min-w-0 max-w-full truncate text-sm text-[var(--oh-muted)]`,title:e.model??void 0,children:m}):null,t&&(0,Q.jsx)(Ee,{className:`shrink-0 whitespace-nowrap px-2.5 py-1 text-xs`,"data-testid":`profile-active-badge`,children:u(E.SETTINGS$PROFILE_DEFAULT)}),e.provider_connection_broken&&(0,Q.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[var(--oh-warning,#f59e0b)] px-2 py-0.5 text-xs font-medium text-black`,title:u(E.SETTINGS$PROFILE_BROKEN_CONNECTION_TOOLTIP),"data-testid":`profile-broken-connection-badge`,children:[(0,Q.jsx)(N,{className:`h-3 w-3`,"aria-hidden":!0}),u(E.SETTINGS$PROFILE_BROKEN_CONNECTION)]})]}),n&&(0,Q.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,Q.jsx)(ce,{ref:p,onClick:()=>f(e=>!e),ariaLabel:u(E.SETTINGS$PROFILE_MENU),testId:`profile-menu-trigger`,className:Ae}),d&&(0,Q.jsx)(ht,{anchorRef:p,onEdit:()=>i(e),onRename:()=>a(e),onDuplicate:()=>o(e),onSetActive:()=>r(e.name),onDelete:()=>s(e),isActive:t,isActivating:c,onClose:()=>f(!1)})]})]})}function _t(e,t){let n=new Map,r={connectionId:null,label:null,profiles:[]};for(let i of e){let e=i.provider_connection_id??null;if(!e){r.profiles.push(i);continue}let a=n.get(e);a||(a={connectionId:e,label:t[e]??e,profiles:[]},n.set(e,a)),a.profiles.push(i)}let i=[...n.values()];return r.profiles.length>0?[...i,r]:i}function vt({isLoading:e,loadError:t,profiles:n,active:r,canManage:i,connectionNamesById:a={},onActivate:o,onEdit:s,onRename:c,onDuplicate:u,onDelete:d,isActivating:f}){let{t:p}=l(`openhands`),m=e=>(0,Q.jsx)(gt,{profile:e,isActive:e.name===r,canManage:i,onActivate:o,onEdit:s,onRename:c,onDuplicate:u,onDelete:d,isActivating:f},e.name),h=D(je,ke);return e?(0,Q.jsx)(`div`,{className:`flex justify-center p-4`,children:(0,Q.jsx)(F,{size:`large`})}):t?(0,Q.jsx)(`div`,{"data-testid":`profiles-load-error`,className:q,children:(0,Q.jsx)(`p`,{className:`text-sm text-red-400`,children:p(E.SETTINGS$PROFILES_LOAD_ERROR)})}):n.length===0?(0,Q.jsx)(`div`,{"data-testid":`profiles-empty`,className:q,children:(0,Q.jsx)(`p`,{className:`text-sm text-[var(--oh-muted)]`,children:p(E.SETTINGS$PROFILES_EMPTY)})}):n.some(e=>e.provider_connection_id)?(0,Q.jsx)(`div`,{className:`flex flex-col gap-4`,children:_t(n,a).map(e=>(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsx)(`h3`,{"data-testid":`profile-group-header`,className:`text-xs font-medium uppercase tracking-wide text-[var(--oh-muted)]`,children:e.label??p(E.SETTINGS$PROFILES_UNGROUPED)}),(0,Q.jsx)(`div`,{className:h,children:e.profiles.map(m)})]},e.connectionId??`__unlinked__`))}):(0,Q.jsx)(`div`,{className:h,children:n.map(m)})}function yt({connection:e,linkedProfileCount:t,onEdit:n,onDelete:r}){let{t:i}=l(`openhands`);return(0,Q.jsxs)(`div`,{"data-testid":`provider-connection-row`,className:D(Oe,`justify-between gap-3`),children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:[(0,Q.jsx)(`span`,{className:`min-w-0 max-w-full truncate text-sm font-medium text-white`,title:e.display_name,children:e.display_name}),(0,Q.jsx)(`span`,{className:`min-w-0 max-w-full truncate text-sm text-[var(--oh-muted)]`,children:e.provider}),(0,Q.jsx)(`span`,{className:`shrink-0 text-sm text-[var(--oh-muted)]`,children:i(E.SETTINGS$PROVIDER_CONNECTION_MODEL_COUNT,{count:t})}),(0,Q.jsx)(lt,{isSet:e.api_key_set})]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,Q.jsx)(`button`,{type:`button`,"data-testid":`provider-connection-edit`,"aria-label":i(E.SETTINGS$PROVIDER_CONNECTION_EDIT_TITLE),className:Ae,onClick:()=>n(e),children:(0,Q.jsx)(ue,{width:16,height:16})}),(0,Q.jsx)(`button`,{type:`button`,"data-testid":`provider-connection-delete`,"aria-label":i(E.SETTINGS$PROVIDER_CONNECTION_DELETE_TITLE),className:Ae,onClick:()=>r(e),children:(0,Q.jsx)(se,{width:16,height:16})})]})]})}var bt=`/api/llm/provider-connections`;function xt(){let{host:e,apiKey:t}=S();return new f({host:e,...t?{apiKey:t}:{}})}var St=class{static async list(){let e=xt();try{return await e.get(bt,{responseType:`json`})}finally{e.close()}}static async create(e){let t=xt();try{return await t.post(bt,e,{responseType:`json`})}finally{t.close()}}static async update(e,t){let n=xt();try{return await n.patch(`${bt}/${encodeURIComponent(e)}`,t,{responseType:`json`})}finally{n.close()}}static async delete(e){let t=xt();try{return await t.delete(`${bt}/${encodeURIComponent(e)}`,{responseType:`json`})}finally{t.close()}}};function Ct(){let e=c();return p({mutationFn:e=>St.create(e),onSuccess:async()=>{await e.invalidateQueries({queryKey:_.all})},meta:{disableToast:!0}})}function wt(){let e=c();return p({mutationFn:({id:e,request:t})=>St.update(e,t),onSuccess:async()=>{await e.invalidateQueries({queryKey:_.all}),await e.invalidateQueries({queryKey:y.all})},meta:{disableToast:!0}})}var Tt=`custom`;function Et({connection:e,isCreate:t,onClose:n,onSaved:o}){let{t:s}=l(`openhands`),c=Ct(),u=wt(),{data:d=[]}=qe(),f=(0,Z.useRef)(null),[p,m]=(0,Z.useState)(``),[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(``),[x,S]=(0,Z.useState)(``),C=t||!!e,w=!!e?.api_key_set;(0,Z.useEffect)(()=>{m(e?.display_name??``),v(e?.provider??(t?null:Tt)),S(e?.base_url??``),b(``)},[e,t]);let T=c.isPending||u.isPending,D=p.trim(),O=y.trim(),A=!!D&&!!_?.trim()&&(!t||!!O),j=d.filter(e=>e.verified),M=d.filter(e=>!e.verified);if(!C)return null;let N=()=>{T||n()},P=(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(L,{type:`button`,variant:`tertiary`,onClick:N,isDisabled:T,children:s(E.BUTTON$CANCEL)}),(0,Q.jsx)(L,{testId:`provider-connection-submit`,type:`button`,variant:`primary`,onClick:async()=>{if(!A||T)return;let r=x.trim();try{if(t){let e=await c.mutateAsync({display_name:D,provider:_?.trim()||Tt,api_key:O,base_url:r||null});g(s(E.SETTINGS$PROVIDER_CONNECTION_CREATED,{name:e.display_name})),o?.(e)}else if(e){let t=await u.mutateAsync({id:e.id,request:{display_name:D,provider:_?.trim()||Tt,base_url:r||null,...O?{api_key:O}:{}}});g(s(E.SETTINGS$PROVIDER_CONNECTION_UPDATED,{name:t.display_name})),o?.(t)}n()}catch(e){h(Me(e,s(E.ERROR$GENERIC)))}},isDisabled:T||!A,"aria-busy":T,children:T?(0,Q.jsx)(F,{size:`small`}):s(E.BUTTON$SAVE)})]});return(0,Q.jsx)(Y,{isOpen:!0,title:s(t?E.SETTINGS$PROVIDER_CONNECTION_ADD_TITLE:E.SETTINGS$PROVIDER_CONNECTION_EDIT_TITLE),footer:P,onClose:N,initialFocusRef:f,children:(0,Q.jsxs)(`div`,{"data-testid":`provider-connection-modal`,className:`flex flex-col gap-4`,children:[(0,Q.jsx)(R,{ref:f,testId:`provider-connection-name-input`,label:s(E.SETTINGS$NAME),type:`text`,className:`w-full`,value:p,onChange:m,required:!0}),t?(0,Q.jsxs)(`fieldset`,{className:`flex flex-col gap-2.5 w-full`,children:[(0,Q.jsx)(`label`,{className:`text-sm`,children:s(E.SETTINGS$PROVIDER_CONNECTION_PROVIDER)}),(0,Q.jsxs)(a,{"data-testid":`provider-connection-provider-input`,isRequired:!0,isVirtualized:!1,name:`provider-connection-provider-input`,"aria-label":s(E.SETTINGS$PROVIDER_CONNECTION_PROVIDER),isClearable:!1,selectedKey:_,onSelectionChange:e=>v(e?.toString()??null),classNames:{popoverContent:`bg-content1 rounded-xl border border-[var(--oh-border)]`,selectorButton:ie},selectorButtonProps:{disableRipple:!0},inputProps:{classNames:{inputWrapper:ne}},children:[(0,Q.jsx)(r,{title:s(E.MODEL_SELECTOR$VERIFIED),classNames:{heading:`text-[var(--oh-muted)]`},children:j.map(e=>(0,Q.jsx)(i,{"data-testid":`provider-item-${e.name}`,textValue:k(e.name),children:k(e.name)},e.name))}),M.length>0?(0,Q.jsx)(r,{title:s(E.MODEL_SELECTOR$OTHERS),classNames:{heading:`text-[var(--oh-muted)]`},children:M.map(e=>(0,Q.jsx)(i,{textValue:k(e.name),children:k(e.name)},e.name))}):null]})]}):(0,Q.jsx)(R,{testId:`provider-connection-provider-input`,label:s(E.SETTINGS$PROVIDER_CONNECTION_PROVIDER),type:`text`,className:`w-full`,value:_??``,onChange:v}),(0,Q.jsx)(R,{testId:`provider-connection-api-key-input`,label:s(E.SETTINGS_FORM$API_KEY),type:`password`,className:`w-full`,value:y,placeholder:w?`<hidden>`:``,onChange:b,startContent:w?(0,Q.jsx)(lt,{isSet:w}):void 0,hint:w?s(E.SETTINGS$PROVIDER_CONNECTION_ROTATE_HINT):void 0}),(0,Q.jsx)(R,{testId:`provider-connection-base-url-input`,label:s(E.SETTINGS$BASE_URL),type:`text`,className:`w-full`,value:x,placeholder:`https://api.openai.com`,onChange:S,showOptionalTag:!0})]})})}function Dt(){let e=c();return p({mutationFn:e=>St.delete(e),onSuccess:async()=>{await e.invalidateQueries({queryKey:_.all}),await e.invalidateQueries({queryKey:y.all})},meta:{disableToast:!0}})}function Ot({connection:e,onClose:t}){let{t:n}=l(`openhands`),r=Dt(),i=(0,Z.useRef)(null);if(!e)return null;let a=async()=>{try{await r.mutateAsync(e.id),g(n(E.SETTINGS$PROVIDER_CONNECTION_DELETED,{name:e.display_name})),t()}catch(e){h(Me(e,n(E.ERROR$GENERIC)))}},o=()=>{r.isPending||t()},s=(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(L,{ref:i,type:`button`,variant:`tertiary`,onClick:o,isDisabled:r.isPending,children:n(E.BUTTON$CANCEL)}),(0,Q.jsx)(L,{testId:`delete-provider-connection-confirm`,type:`button`,variant:`danger`,onClick:a,isDisabled:r.isPending,"aria-busy":r.isPending,children:r.isPending?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(F,{size:`small`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:n(E.BUTTON$DELETE)})]}):n(E.BUTTON$DELETE)})]});return(0,Q.jsx)(Y,{isOpen:!0,title:n(E.SETTINGS$PROVIDER_CONNECTION_DELETE_TITLE),footer:s,onClose:o,initialFocusRef:i,children:(0,Q.jsx)(`p`,{className:`text-sm break-all`,children:n(E.SETTINGS$PROVIDER_CONNECTION_DELETE_CONFIRMATION,{name:e.display_name})})})}function kt({connections:e,linkedCountById:t,isLoading:n,loadError:r}){let{t:i}=l(`openhands`),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(null);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Q.jsx)(`h2`,{className:`text-base font-medium text-white`,children:i(E.SETTINGS$PROVIDER_CONNECTIONS_TITLE)}),(0,Q.jsx)(`p`,{className:`text-sm text-[var(--oh-muted)]`,children:i(E.SETTINGS$PROVIDER_CONNECTIONS_SUBLINE)})]}),(0,Q.jsx)(L,{testId:`add-provider-connection`,type:`button`,variant:`secondary`,className:`ml-auto`,onClick:()=>o(!0),children:i(E.SETTINGS$PROVIDER_CONNECTION_ADD)})]}),n?null:r?(0,Q.jsx)(`div`,{"data-testid":`provider-connections-load-error`,className:q,children:(0,Q.jsx)(`p`,{className:`text-sm text-red-400`,children:i(E.SETTINGS$PROVIDER_CONNECTIONS_LOAD_ERROR)})}):e.length===0?(0,Q.jsx)(`div`,{"data-testid":`provider-connections-empty`,className:q,children:(0,Q.jsx)(`p`,{className:`text-sm text-[var(--oh-muted)]`,children:i(E.SETTINGS$PROVIDER_CONNECTIONS_EMPTY)})}):(0,Q.jsx)(`div`,{className:D(je,ke),children:e.map(e=>(0,Q.jsx)(yt,{connection:e,linkedProfileCount:t[e.id]??0,onEdit:c,onDelete:d},e.id))})]}),a&&(0,Q.jsx)(Et,{isCreate:!0,onClose:()=>o(!1)}),(0,Q.jsx)(Et,{isCreate:!1,connection:s,onClose:()=>c(null)}),(0,Q.jsx)(Ot,{connection:u,onClose:()=>d(null)})]})}function At(){let{backend:e}=x(),t=e.kind===`local`;return m({queryKey:[..._.all,e.id],queryFn:St.list,...v,enabled:t,meta:{disableToast:!0}})}function jt(){let e=c();return p({mutationFn:({name:e,request:t})=>z.saveProfile(e,t),onSuccess:async()=>{I.invalidateCache(),await e.invalidateQueries({queryKey:y.all}),await e.invalidateQueries({queryKey:w.personal()})},meta:{disableToast:!0}})}function Mt({onAddProfile:e,onEditProfile:t}){let{t:n}=l(`openhands`),{data:r,isLoading:i,error:a}=oe(),o=Fe(),s=jt(),c=le(),{backend:u}=x(),d=u.kind===`local`,{data:f,isLoading:p,error:m}=At(),[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(null),S=r?.profiles??[],C=r?.active_profile??null,w=(0,Z.useMemo)(()=>f??[],[f]),T=(0,Z.useMemo)(()=>Object.fromEntries(w.map(e=>[e.id,e.display_name])),[w]),D=(0,Z.useMemo)(()=>{let e={};for(let t of S){let n=t.provider_connection_id;n&&(e[n]=(e[n]??0)+1)}return e},[S]);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,Q.jsx)(`h2`,{className:`text-base font-medium text-white`,children:n(E.SETTINGS$AVAILABLE_PROFILES)}),e&&c?(0,Q.jsx)(L,{testId:`add-llm-profile`,type:`button`,variant:`secondary`,className:`ml-auto`,onClick:e,children:n(E.SETTINGS$ADD_LLM_PROFILE)}):null]}),(0,Q.jsx)(vt,{isLoading:i,loadError:a??null,profiles:S,active:C,canManage:c,connectionNamesById:T,onActivate:async e=>{try{await o.mutateAsync(e),g(n(E.SETTINGS$PROFILE_ACTIVATED,{name:e}))}catch(e){console.error(`Failed to activate profile:`,e),h(n(E.ERROR$GENERIC))}},onEdit:e=>{t?.(e)},onRename:v,onDuplicate:async e=>{try{let t=await z.getProfile(e.name,`encrypted`),r=new Set(S.map(e=>e.name)),i=`${e.name}-copy`,a=1;for(;r.has(i);)i=`${e.name}-copy-${a}`,a+=1;await s.mutateAsync({name:i,request:{llm:t.config,include_secrets:!0}}),g(n(E.SETTINGS$PROFILE_DUPLICATED,{name:i}))}catch(e){console.error(`Failed to duplicate profile:`,e),h(n(E.ERROR$GENERIC))}},onDelete:b,isActivating:o.isPending})]}),d&&c?(0,Q.jsx)(kt,{connections:w,linkedCountById:D,isLoading:p,loadError:m??null}):null]}),(0,Q.jsx)(dt,{profile:_,onClose:()=>v(null)}),(0,Q.jsx)(pt,{profile:y,onClose:()=>b(null)})]})}function Nt({activeProfileName:e,originalName:t,savedName:n}){return e?t?e===t:e===n:!1}function Pt(){let{t:e}=l(`openhands`),{setHideSectionHeader:t}=Ne(),n=jt(),r=Fe(),{data:i}=oe(),{data:a}=te(),{data:o}=ge(a?.agent_settings_schema),s=(0,Z.useRef)(o);s.current=o;let{backend:c}=x(),u=c.kind===`local`,[d,f]=(0,Z.useState)(`list`),[p,m]=(0,Z.useState)(``),[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(null),[S,C]=(0,Z.useState)(!1),[w,T]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>(t(d!==`list`),()=>t(!1)),[d,t]);let D=(0,Z.useMemo)(()=>new Set(i?.profiles.map(e=>e.name)??[]),[i]),k=(0,Z.useMemo)(()=>!(!Te(p,{isRequired:!0})||d===`create`&&D.has(p)||d===`edit`&&p!==_?.profile.name&&D.has(p)),[p,d,D,_?.profile.name]),A=(0,Z.useCallback)(()=>{m(``),v(null),f(`create`)},[]),j=(0,Z.useCallback)(async t=>{try{let e=(await z.getProfile(t.name,`encrypted`)).config??{},n=s.current?.sections.find(e=>e.key===`llm`)?.fields??[],r={};for(let t of n){let n=t.key.startsWith(`llm.`)?t.key.slice(4):t.key;r[t.key]=ve(t,e[n])}n.length===0&&(r[`llm.model`]=e.model??``,r[`llm.api_key`]=e.api_key??``,r[`llm.base_url`]=e.base_url??``,r[H]=U(e.auth_type),r[B]=e.subscription_vendor??`openai`),r[$]=typeof e.provider_connection_id==`string`?e.provider_connection_id:``,v({profile:t,initialValues:r,baseConfig:e}),m(t.name),f(`edit`)}catch(t){console.error(`Failed to fetch profile details:`,t),h(e(E.ERROR$GENERIC))}},[e]),M=(0,Z.useCallback)(()=>{f(`list`),v(null),m(``),b(null)},[]),N=(0,Z.useCallback)(e=>{if(b(e),d===`create`&&!p){let t=e.values[`llm.model`];if(typeof t==`string`&&t){let e=Ce(t);D.has(e)||m(e)}}},[d,p,D]),P=(0,Z.useCallback)(async()=>{if(!y||!k)return;let t;try{t=y.getDirtyPayload().llm??{}}catch(t){h(t instanceof Error?t.message:e(E.ERROR$GENERIC));return}let a=d===`edit`&&_?.baseConfig?{..._.baseConfig}:{},o=y.view===`basic`&&Object.prototype.hasOwnProperty.call(t,`model`)&&t.model!==a.model,s={...a,...t},c=U(s.auth_type),l=u?String(y.values[`llm.provider_connection_id`]??``).trim():``;if(c===`subscription`)s.auth_type=W,s.subscription_vendor=V,s.provider_connection_id=null,delete s.api_key,delete s.base_url;else if(l)s.auth_type=G,s.subscription_vendor=null,s.provider_connection_id=l,delete s.api_key,delete s.base_url;else if(s.auth_type=G,s.subscription_vendor=null,u&&(s.provider_connection_id=null),!u&&pe(typeof s.model==`string`?s.model:``))delete s.api_key,delete s.base_url;else if(o&&delete s.base_url,typeof s.api_key!=`string`||s.api_key.trim()===``){let e=typeof a.api_key==`string`?a.api_key:``;e?s.api_key=e:delete s.api_key}if(!(typeof s.model==`string`&&s.model)){h(e(E.SETTINGS$MODEL_REQUIRED));return}let f=p.trim(),m=_?.profile.name,v=d===`edit`&&m&&m!==f,b=Nt({activeProfileName:i?.active_profile,originalName:m,savedName:f});C(!0),T(!0);try{if(!l){let t=await z.validateProfile(f,{llm:s,include_secrets:!0});if(t&&!t.valid){h(t.error?.message??e(E.ERROR$GENERIC));return}}T(!1),v&&await z.renameProfile(m,f),await n.mutateAsync({name:f,request:{llm:s,include_secrets:!0}}),b&&await r.mutateAsync(f),g(e(d===`create`?E.SETTINGS$PROFILE_CREATED:E.SETTINGS$PROFILE_UPDATED,{name:f})),M()}catch(t){console.error(`Failed to save profile:`,t),h(e(E.ERROR$GENERIC))}finally{T(!1),C(!1)}},[y,k,u,p,d,_,i?.active_profile,n,r,e,M]);if(d===`list`)return(0,Q.jsx)(Mt,{onAddProfile:A,onEditProfile:j});let F=e(d===`edit`?E.SETTINGS$EDIT_LLM_PROFILE:E.SETTINGS$ADD_LLM_PROFILE),I=d===`edit`&&_?e(E.SETTINGS$PROFILE_LOADED,{name:_.profile.name}):e(E.SETTINGS$PROFILE_SAVE_HINT);return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsx)(O,{testId:`back-to-profiles`,onClick:M,children:e(E.BUTTON$BACK)}),(0,Q.jsx)(xe.H2,{testId:`profile-editor-title`,children:F}),(0,Q.jsx)(`p`,{"data-testid":`profile-editor-description`,className:`text-sm leading-5 text-tertiary-light`,children:I})]}),(0,Q.jsx)(we,{testId:`profile-name-input`,value:p,onChange:m,isRequired:!0}),(0,Q.jsx)(Gt,{embedded:!0,hideSaveButton:!0,initialValueOverrides:d===`edit`&&_?.initialValues?_.initialValues:{"llm.model":ee.llm_model,"llm.api_key":``,"llm.base_url":``,[$]:``,[H]:G,[B]:V},showProviderConnection:u,onSaveControlChange:N},d===`edit`?`edit-${_?.profile.name}`:`new-profile`),(0,Q.jsxs)(`div`,{className:`flex justify-start gap-3 pt-4`,children:[(0,Q.jsx)(L,{testId:`cancel-profile-btn`,type:`button`,variant:`secondary`,onClick:M,children:e(E.BUTTON$CANCEL)}),(0,Q.jsx)(L,{testId:`save-profile-btn`,type:`button`,variant:`primary`,onClick:P,isDisabled:!k||S||w||!y,"aria-busy":S||w,children:e(w?E.STATUS$VALIDATING:S?E.STATUS$SAVING:E.BUTTON$SAVE)})]})]})}function Ft({enabled:e=!0}={}){return m({queryKey:b.openaiModels,queryFn:K.getOpenAIModels,enabled:e,retry:!1,refetchOnWindowFocus:!1,staleTime:1e3*60*5,meta:{disableToast:!0}})}var $=`llm.provider_connection_id`,It=`__none__`,Lt=new Set([`llm.model`,`llm.api_key`,`llm.base_url`,$,H,B]),Rt=(e,t)=>!e||!t?null:`${e}/${t}`,zt=(e,t)=>e?.sections.flatMap(e=>e.fields).find(e=>e.key===t)?.default??null,Bt={openai:new Set([`https://api.openai.com`,`https://api.openai.com/v1`]),moonshot:new Set([`https://api.kimi.com/coding/v1`])},Vt=e=>{try{let t=new URL(e),n=t.pathname.replace(/\/+$/,``)||``;return`${t.origin}${n}`}catch{return e.trim().replace(/\/+$/,``)}},Ht=(e,t)=>{let n=Vt(t),{provider:r}=Ie(e);if(r){let e=Bt[r];if(e)return e.has(n)}return Object.values(Bt).some(e=>e?.has(n))};function Ut({testId:e}){let{t}=l(`openhands`);return(0,Q.jsx)(ye,{testId:e,text:t(E.SETTINGS$OPENHANDS_API_KEY_HELP_TEXT),linkText:t(E.SETTINGS$OPENHANDS_API_KEY_HELP_LINK),href:`https://app.all-hands.dev/settings/api-keys`,suffix:` ${t(E.SETTINGS$OPENHANDS_API_KEY_HELP_SUFFIX)}`,suffixLinkText:t(E.SETTINGS$SEE_HERE_FOR_MORE_DETAILS),suffixLinkHref:`https://docs.openhands.dev/usage/local-setup#getting-an-api-key`,trailing:`.`})}function Wt(){return(0,Q.jsxs)(`p`,{"data-testid":`openhands-free-models-note`,className:`flex items-start gap-2 text-xs text-warning`,children:[(0,Q.jsx)(M,{className:`mt-0.5 size-4 shrink-0 text-warning`,"aria-hidden":!0}),(0,Q.jsx)(`span`,{children:fe})]})}function Gt({scope:e=`personal`,onSaveSuccess:t,initialValueOverrides:n,embedded:r,hideSaveButton:i,suppressSuccessToast:a,onSaveControlChange:o,showProviderConnection:s}){let{t:c}=l(`openhands`),{backend:u}=x(),d=u.kind===`cloud`,{data:f}=At(),p=Z.useMemo(()=>s?f??[]:[],[s,f]),{data:m}=te(e),{data:h}=ge(m?.agent_settings_schema),g=m?.agent_settings?.llm,_=U(n?.[`llm.auth_type`]??g?.auth_type),[v,y]=Z.useState(_===W),{data:b,isLoading:S,isFetching:C}=Ft({enabled:v}),w=v&&!b&&(S||C),T=Z.useRef(null),D=Z.useRef(null);Z.useEffect(()=>{_===`subscription`&&y(!0)},[_]);let O=String(ee.agent_settings?.llm?.model??``),k=Z.useCallback((e,t)=>{let n=_e(e,t);if(n!==`basic`)return n;let r=e.llm_model??``,i=e.llm_base_url?.trim()??``;return i.length>0&&!Ht(r,i)?`all`:`basic`},[]),A=Z.useCallback(({values:e,isDisabled:t,view:n,onChange:i})=>{let a=typeof e[`llm.model`]==`string`?e[`llm.model`]:``,o=typeof e[`llm.base_url`]==`string`?e[`llm.base_url`]:``,l=pe(a),u=U(e[H]),f=u===W,h=d&&l&&!f,g=t||f&&w,_=b?.includes(a)?a:b?.[0]??``,v=typeof e[`llm.api_key`]==`string`?e[`llm.api_key`]:``,x=r?v.length>0:!!m?.llm_api_key_set,S=typeof e[`llm.provider_connection_id`]==`string`?e[$]:``,C=!!S,k=s&&!f&&(C||p.length>0),A=C&&!p.some(e=>e.id===S),j=()=>(0,Q.jsx)(ae,{testId:`llm-provider-connection-input`,name:$,label:c(E.SETTINGS$PROVIDER_CONNECTION_SELECT_LABEL),items:[{key:It,label:c(E.SETTINGS$MCP_AUTH_MODE_NONE)},...p.map(e=>({key:e.id,label:e.display_name})),...A?[{key:S,label:S}]:[]],selectedKey:S||It,isClearable:!1,isDisabled:t,onSelectionChange:e=>{i($,typeof e==`string`&&e!==It?e:``)}}),M=(e,n,r)=>(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(R,{testId:e,label:c(E.SETTINGS_FORM$API_KEY),type:`password`,className:`w-full`,value:v,placeholder:x?`<hidden>`:``,onChange:e=>i(`llm.api_key`,e),isDisabled:t,startContent:x?(0,Q.jsx)(lt,{isSet:x}):void 0}),l?(0,Q.jsx)(Ut,{testId:r}):(0,Q.jsx)(ye,{testId:n,text:c(E.SETTINGS$DONT_KNOW_API_KEY),linkText:c(E.SETTINGS$CLICK_FOR_INSTRUCTIONS),href:`https://docs.openhands.dev/usage/local-setup#getting-an-api-key`})]}),N=e=>{let t=e===`subscription`?W:G;if(i(H,t),t===`subscription`){y(!0),a&&!b?.includes(a)&&(T.current=a);let e=D.current&&b?.includes(D.current)?D.current:b?.[0];i(B,V),!b?.includes(a)&&e&&i(`llm.model`,e);return}a&&b?.includes(a)&&(D.current=a,i(`llm.model`,T.current??O))},P=()=>(0,Q.jsx)(ae,{testId:`llm-auth-type-input`,name:H,label:c(E.SETTINGS$LLM_AUTH_TYPE),items:[{key:G,label:c(E.SETTINGS$LLM_AUTH_TYPE_API_KEY)},{key:W,label:c(E.SETTINGS$LLM_AUTH_TYPE_SUBSCRIPTION)}],selectedKey:u,isClearable:!1,required:!0,isDisabled:g,onSelectionChange:N}),F=()=>(0,Q.jsxs)(`div`,{className:`flex flex-col gap-6`,"data-testid":`llm-subscription-settings`,children:[(0,Q.jsx)(ae,{testId:`llm-subscription-model-input`,name:`llm.subscription_model`,label:c(E.SETTINGS$SUBSCRIPTION_MODEL),items:(b??[]).map(e=>({key:e,label:e})),selectedKey:_,isClearable:!1,required:!0,isDisabled:g||!b?.length,onSelectionChange:e=>{let t=typeof e==`string`?e:b?.[0];t&&i(`llm.model`,t)}}),(0,Q.jsx)(st,{isDisabled:t})]});return(0,Q.jsx)(`div`,{className:`flex flex-col gap-6`,children:n===`basic`?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-6`,"data-testid":`llm-settings-form-basic`,children:[P(),f?F():(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($e,{currentModel:a||void 0,onChange:(e,t)=>{let n=Rt(e,t);n&&i(`llm.model`,n)},wrapperClassName:`!flex-col !gap-6`,isDisabled:t}),k?j():null,C||h?null:M(`llm-api-key-input`,`llm-api-key-help-anchor`,`openhands-api-key-help`)]})]}):(0,Q.jsxs)(`div`,{className:`flex flex-col gap-6`,"data-testid":`llm-settings-form-advanced`,children:[P(),f?F():(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(R,{testId:`llm-custom-model-input`,label:c(E.SETTINGS$CUSTOM_MODEL),type:`text`,className:`w-full`,value:a,placeholder:O,onChange:e=>i(`llm.model`,e),isDisabled:t}),l&&!C?(0,Q.jsx)(Q.Fragment,{children:de(a)?(0,Q.jsx)(Wt,{}):null}):null,k?j():null,C||h?null:(0,Q.jsx)(R,{testId:`base-url-input`,label:c(E.SETTINGS$BASE_URL),type:`text`,className:`w-full`,value:o,placeholder:`https://api.openai.com`,onChange:e=>i(`llm.base_url`,e),isDisabled:t}),C||h?null:M(`llm-api-key-input`,`llm-api-key-help-anchor-advanced`,`openhands-api-key-help-2`)]})]})})},[p,s,O,r,d,w,m?.llm_api_key_set,b,c]),j=Z.useCallback((e,t)=>{let n=structuredClone(e.agent_settings_diff??{}),r=n.llm??{};if(U(t.values[`llm.auth_type`])===`subscription`){r.auth_type=W,r.subscription_vendor=V;let e=typeof r.model==`string`?r.model:String(t.values[`llm.model`]??``),n=b?.[0];if(!b?.includes(e)&&!n)throw Error(`Subscription models are not loaded yet.`);r.model=b?.includes(e)?e:n,delete r.api_key,delete r.base_url}else t.dirty[`llm.auth_type`]&&(r.auth_type=G,r.subscription_vendor=null),t.view===`basic`&&r.model!==void 0&&(r.base_url=zt(h,`llm.base_url`)),d&&pe(String(t.values[`llm.model`]??``))&&(delete r.api_key,delete r.base_url);return n.llm=r,{agent_settings_diff:n}},[h,b,d]);return(0,Q.jsx)(Se,{scope:e,settingsSources:[{settingsSource:`agent_settings`,sectionKeys:[`llm`],excludeKeys:Lt}],header:A,buildPayload:j,getInitialView:k,forceShowAdvancedView:!0,allowAllView:!0,onSaveSuccess:t,initialValueOverrides:n,embedded:r,hideSaveButton:i,suppressSuccessToast:a,onSaveControlChange:o,testId:`llm-settings-screen`})}var Kt=s(function(){return(0,Q.jsx)(Pt,{})});export{Fe as a,$e as i,Kt as n,jt as r,Gt as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-DqZDXfg2.js";import{tt as t}from"./active-backend-context-CrHTlgvN.js";import{c as n,d as r,l as i,o as a,s as o,u as s}from"./llm-subscription-DTqtBCWz.js";function c(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var l=(e,t)=>{for(let n of t){let t=e[n];if(typeof t==`string`&&t.trim().length>0)return t.trim()}return null},u=(e,t)=>{for(let n of t){let t=e[n];if(typeof t==`number`&&Number.isFinite(t))return t}return null},d=(e,t)=>{for(let n of t){let t=e[n];if(typeof t==`boolean`)return t}return!1};async function f(n,r={}){let{host:i,apiKey:a}=t(),o=new e({host:i,apiKey:a});try{return await o.request({method:r.method??`GET`,path:n,body:r.jsonBody,responseType:`json`})}finally{o.close()}}function p(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):c(e)&&Array.isArray(e.models)?e.models.filter(e=>typeof e==`string`):[]}function m(e){return{vendor:r,connected:d(e,[`connected`,`authenticated`,`is_connected`]),accountEmail:l(e,[`account_email`,`email`,`account`]),expiresAt:l(e,[`expires_at`,`expiresAt`])??u(e,[`expires_at`,`expiresAt`])}}function h(e){let t=l(e,[`device_code`,`deviceCode`]),n=l(e,[`user_code`,`userCode`]),r=l(e,[`verification_uri`,`verificationUri`,`verification_url`,`verificationUrl`]);if(!t||!n||!r)throw Error(`Subscription device login response is incomplete`);return{deviceCode:t,userCode:n,verificationUri:r,verificationUriComplete:l(e,[`verification_uri_complete`,`verificationUriComplete`,`verification_url_complete`,`verificationUrlComplete`]),expiresAt:l(e,[`expires_at`,`expiresAt`])??u(e,[`expires_at`,`expiresAt`,`expires_in`,`expiresIn`]),intervalSeconds:u(e,[`interval`,`interval_seconds`,`intervalSeconds`])}}var g=class{static async getOpenAIModels(){return p(await f(i))}static async getOpenAIStatus(){return m(await f(s))}static async startOpenAIDeviceLogin(){return h(await f(o,{method:`POST`}))}static async pollOpenAIDeviceLogin(e){return m(await f(a,{method:`POST`,jsonBody:{device_code:e}}))}static async logoutOpenAI(){return m(await f(n,{method:`POST`}))}};export{g as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{D as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-DqZDXfg2.js";var t=e(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]);export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./rolldown-runtime-Cyuzqnbw.js";import{St as e,yt as t}from"./vendor-styling-Ck5D_A2Q.js";import{t as n}from"./utils-CN5ZfZy1.js";e();var r=t(),i=e=>(0,r.jsx)(`svg`,{width:66,height:66,viewBox:`0 0 66 66`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,r.jsx)(`path`,{d:`M63 33C63 16.4315 49.5685 3 33 3C16.4315 3 3 16.4315 3 33C3 49.5685 16.4315 63 33 63`,stroke:`currentColor`,strokeWidth:6,strokeLinecap:`round`})});function a({size:e,className:t,outerClassName:a}){let o=e===`small`?`w-[25px] h-[25px]`:`w-[50px] h-[50px]`;return(0,r.jsx)(`div`,{"data-testid":`loading-spinner`,className:n(`relative`,o,t),children:(0,r.jsx)(i,{className:n(`absolute animate-spin`,o,a)})})}export{a as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,r as t}from"./rolldown-runtime-Cyuzqnbw.js";import{St 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~iyia17eu-Chf7vmKB.js";import{b as a}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-DqZDXfg2.js";import{t as o}from"./useQuery-BSTgq1rl.js";import{Et as s,K as c,r as l,tt as u}from"./active-backend-context-CrHTlgvN.js";import{W as d,t as f}from"./utils-CN5ZfZy1.js";import{a as p,o as m,r as h,s as g}from"./backend-form-modal-lhGwzXFI.js";import{t as _}from"./pencil-47jAZH_V.js";import{t as v}from"./plus-C7Slq-0I.js";import{t as y}from"./refresh-cw-3q3Frrii.js";import{t as b}from"./trash-2-D7K26eDO.js";import{i as x,o as S,r as C}from"./use-onboarding-completion-D8U7k4Qb.js";import{t as w}from"./modal-backdrop-BSzNhM4r.js";import{r as T,t as E}from"./modal-body-BxZjsju9.js";import{n as D}from"./modal-classes-C8eycCwG.js";import{t as O}from"./brand-button-BAfk4wGP.js";import{n as k,t as A}from"./use-cloud-current-user-id-CDfAHpPX.js";import{t as j}from"./modal-close-button-DDzdRvCs.js";import{t as M}from"./confirmation-modal-Dv1ktp8K.js";var N=e(n(),1),P=r();function F({backend:e}){let{t}=i(`openhands`),{data:n}=o({queryKey:[`backend-version`,e.host,e.apiKey],queryFn:async()=>c(await new a(u({host:e.host,sessionApiKey:e.apiKey||null,timeout:5e3})).getServerInfo()),retry:!1,staleTime:6e4,enabled:e.kind===`local`});return n?(0,P.jsx)(`span`,{className:`inline-flex shrink-0 items-center rounded-full border border-[var(--oh-border)] bg-[var(--oh-surface)] px-1.5 py-0.5 text-[10px] font-medium leading-none text-[var(--oh-text-dim)]`,"data-testid":`manage-backends-version-${e.name}`,children:t(d.BACKEND$VERSION_LABEL,{version:n})}):null}var I=`inline-flex cursor-pointer items-center justify-center rounded-md p-1 text-muted transition-colors hover:bg-interactive-hover hover:text-white`;function L({backend:e,health:t,orgLabel:n,onSelect:r,onEdit:a,onRemove:o,onLogin:c}){let{t:l}=i(`openhands`),u=x(t?.lastError),h=e.kind===`cloud`&&C(t?.lastError),v=!u&&!h&&t?.isConnected===!1&&t.lastError?t.lastError:null,S=h?l(d.BACKEND$LOGGED_OUT):g(l,e,t),w=t?.isConnected===!0?`text-green-300`:t?.isConnected===!1?`text-red-300`:`text-[var(--oh-muted)]`,T=u?!1:t?.isConnected??null,E=t?.isConnected===!0&&!u,D=s();return(0,P.jsxs)(`li`,{className:`flex items-stretch`,"data-testid":`manage-backends-row-${e.name}`,children:[(0,P.jsxs)(`button`,{type:`button`,disabled:!E,onClick:r,className:f(`flex min-w-0 flex-1 items-center gap-3 px-3 py-3 text-left`,E?`cursor-pointer transition-colors hover:bg-interactive-hover focus-visible:bg-interactive-hover focus-visible:outline-none`:`cursor-default`),children:[(0,P.jsx)(m,{isConnected:T}),(0,P.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,P.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,P.jsx)(`span`,{className:`truncate text-sm text-white`,children:e.name}),(0,P.jsx)(F,{backend:e})]}),n?(0,P.jsx)(`span`,{"data-testid":`manage-backends-org-${e.name}`,className:`truncate text-xs text-[var(--oh-text-secondary)]`,children:n}):null,(0,P.jsx)(`span`,{className:`truncate text-xs text-[var(--oh-muted)]`,children:e.host}),(0,P.jsx)(`span`,{"data-testid":`manage-backends-status-${e.name}`,className:f(`truncate text-xs`,w),children:S}),v?(0,P.jsx)(`span`,{"data-testid":`manage-backends-status-detail-${e.name}`,title:v,className:`text-xs text-red-300/80 whitespace-normal break-words`,children:v}):null]}),(0,P.jsx)(`span`,{className:`px-2 py-1 rounded-full text-[11px] uppercase tracking-wide text-[var(--oh-text-tertiary)] bg-[var(--oh-surface)] border border-[var(--oh-border)]`,children:e.kind===`cloud`?l(d.BACKEND$KIND_CLOUD):l(d.BACKEND$KIND_LOCAL)})]}),(0,P.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 px-3 py-3`,children:[h&&c?(0,P.jsx)(p,{host:e.host,onSuccess:c,testIdRoot:`manage-backends-login-${e.id}`,idleButtonLabel:l(d.BACKEND$LOG_BACK_IN),idleButtonContent:(0,P.jsx)(y,{className:`size-4`,strokeWidth:2,"aria-hidden":!0}),className:`w-auto`,buttonVariant:`unstyled`,buttonClassName:I,statusDisplay:`modal`,analyticsSource:`manage_backends_modal`}):null,!D&&(0,P.jsx)(`button`,{type:`button`,onClick:a,"aria-label":l(d.BACKEND$EDIT),"data-testid":`manage-backends-edit-${e.name}`,className:I,children:(0,P.jsx)(_,{"aria-hidden":!0,className:`size-4`,strokeWidth:2})}),!D&&(0,P.jsx)(`button`,{type:`button`,onClick:o,"aria-label":l(d.BACKEND$REMOVE),"data-testid":`manage-backends-remove-${e.name}`,className:I,children:(0,P.jsx)(b,{"aria-hidden":!0,className:`size-4`,strokeWidth:2})})]})]})}var R=t({ManageBackendsModal:()=>B});function z(e,t,n,r){if(e.kind!==`cloud`)return;let i=t[e.id];if(!i||i.orgs.length===0)return;let a=n[e.id]?.userId??null;return i.orgs.map(e=>a&&a===e.id?r:e.name).join(`, `)}function B({onClose:e,recoveryMode:t=!1}){let{t:n}=i(`openhands`),{backends:r,active:a,removeBackend:o,setActive:c,updateBackend:u}=l(),m=S(r,{probeDisabledOnce:!0}),g=k(),_=A(),y=n(d.BACKEND$PERSONAL_WORKSPACE),b=s(),x=b!==null,C=x&&a.backend.kind===`cloud`?a.backend:null,F=b??C?.host??``,I=n(x?d.BACKEND$RECONNECT_CLOUD_TITLE:d.BACKEND$MANAGE_TITLE),[R,B]=N.useState(null),[V,H]=N.useState(null),[U,W]=N.useState(!1),G=()=>{R&&(o(R.id),B(null))},K=N.useCallback(t=>{(a.backend.id!==t.id||a.orgId!==null)&&c(t.id),e()},[a.backend.id,a.orgId,e,c]),q=N.useCallback((e,t)=>{u(e.id,{apiKey:t})},[u]),J=N.useCallback(e=>{C&&u(C.id,{apiKey:e})},[C,u]);return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(w,{onClose:t?void 0:e,closeOnEscape:!t,closeOnBackdropClick:!t,"aria-label":I,children:(0,P.jsxs)(`div`,{"data-testid":`manage-backends-modal`,className:f(`relative flex flex-col bg-[var(--oh-surface)] border border-[var(--oh-border)] rounded-xl`,T(`lg`),E,`max-h-[70vh]`),children:[t?null:(0,P.jsx)(j,{onClose:e,testId:`close-manage-backends-modal`}),(0,P.jsx)(`div`,{className:f(`p-5`,!t&&`pr-12`),children:(0,P.jsx)(`h2`,{className:D,children:I})}),(0,P.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-5`,children:(0,P.jsx)(`div`,{className:`flex-1 overflow-auto rounded-md border border-[var(--oh-border)] bg-surface-raised custom-scrollbar-always`,"data-testid":`manage-backends-list`,children:r.length===0?(0,P.jsx)(`p`,{className:`px-3 py-6 text-center text-sm text-[var(--oh-text-secondary)]`,children:n(d.BACKEND$MANAGE_EMPTY)}):(0,P.jsx)(`ul`,{className:`divide-y divide-[var(--oh-border)]`,children:r.map(e=>(0,P.jsx)(L,{backend:e,health:m[e.id],orgLabel:z(e,g,_,y),onSelect:()=>K(e),onEdit:()=>H(e),onRemove:()=>B({id:e.id,name:e.name}),onLogin:t=>q(e,t)},e.id))})})}),(0,P.jsxs)(`div`,{className:`flex justify-end gap-2 p-5`,children:[x?C?(0,P.jsx)(p,{host:F,onSuccess:J,testIdRoot:`manage-backends-reconnect-cloud`,idleButtonLabel:n(d.BACKEND$RECONNECT_CLOUD),className:`w-full sm:w-auto`,buttonClassName:`w-full sm:w-auto`,statusDisplay:`modal`}):null:(0,P.jsx)(O,{type:`button`,variant:t?`primary`:`secondary`,onClick:()=>W(!0),testId:`manage-backends-add`,startContent:(0,P.jsx)(v,{width:14,height:14}),children:n(d.BACKEND$ADD)}),t?null:(0,P.jsx)(O,{type:`button`,variant:`primary`,onClick:e,testId:`manage-backends-done`,children:n(d.HOME$DONE)})]})]})}),U?(0,P.jsx)(h,{mode:`add`,source:`manage_backends_modal`,onClose:()=>W(!1)}):null,V?(0,P.jsx)(h,{mode:`edit`,backend:V,onClose:()=>H(null)}):null,R?(0,P.jsx)(M,{text:n(d.BACKEND$REMOVE_CONFIRMATION,{name:R.name}),onConfirm:G,onCancel:()=>B(null)}):null]})}export{R as n,B as t};
|