@openhands/agent-canvas 1.13.0 → 1.14.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 +1 -1
- package/README.windows.md +2 -2
- package/build/assets/{acp-providers-D1PORKc0.js → acp-providers-CYy8qA2z.js} +1 -1
- package/build/assets/active-backend-context-BZDG15C0.js +2 -0
- package/build/assets/{agent-context-settings-DMrObcIS.js → agent-context-settings-DGWBBbcp.js} +1 -1
- package/build/assets/{agent-profiles-settings-DororXN5.js → agent-profiles-settings-DrkGdf4_.js} +1 -1
- package/build/assets/{agent-server-conversation-service.api-DWBe0rbX.js → agent-server-conversation-service.api-DK56YPTs.js} +7 -7
- package/build/assets/{agent-settings-BJVk92PU.js → agent-settings-DfcSgkLD.js} +2 -2
- package/build/assets/agent-settings-Lrc5-twS.js +1 -0
- package/build/assets/{alert-banner-CzZsm7ms.js → alert-banner-BgDHhL7b.js} +1 -1
- package/build/assets/api-error-message-BEIE_yD1.js +1 -0
- package/build/assets/{api-key-entry-screen-D8Fade_-.js → api-key-entry-screen-DaZnOlVo.js} +1 -1
- package/build/assets/{app-settings-CpyGB3AT.js → app-settings-BG5NAUbC.js} +1 -1
- package/build/assets/automation-detail-D4Hs831Z.js +3 -0
- package/build/assets/automation-export-n0X6FB0C.js +2 -0
- package/build/assets/automation-git-sync-CDrm8WV7.js +1 -0
- package/build/assets/automation-setup-route-CZCl4ONs.js +1 -0
- package/build/assets/{automation-templates-DgpCGOJV.js → automation-templates-DFF96AdL.js} +1 -1
- package/build/assets/automations-list-Bl-oGOrV.js +1 -0
- package/build/assets/{back-nav-button-HHEneWMw.js → back-nav-button-H_ThtDA0.js} +1 -1
- package/build/assets/{backend-form-modal-DiVrD4Cm.js → backend-form-modal-CbCemvHt.js} +1 -1
- package/build/assets/backend-not-configured-DP8KLNq_.js +1 -0
- package/build/assets/{backend-synced-settings-badge-7MIjpr8M.js → backend-synced-settings-badge-BBASWqsb.js} +1 -1
- package/build/assets/{badge-CpYmcVZV.js → badge-B-51h-SW.js} +1 -1
- package/build/assets/{base-modal-Fnh6Uln9.js → base-modal-BbjycA8X.js} +1 -1
- package/build/assets/{bot-BQZx8e2i.js → bot-CGPCg03p.js} +1 -1
- package/build/assets/{brand-button-swT1RyO0.js → brand-button-Blxv5nww.js} +1 -1
- package/build/assets/browser-CuW0nWvh.js +7 -0
- package/build/assets/{browser-tab-zAY12m_i.js → browser-tab-D5G0ORwt.js} +1 -1
- package/build/assets/{chat-send-button-DsJtivmL.js → chat-send-button-BD2tii1r.js} +1 -1
- package/build/assets/check-DSuS-lyr.js +1 -0
- package/build/assets/chevron-down-CgGcmtE2.js +1 -0
- package/build/assets/circle-check-CG5-NPw7.js +1 -0
- package/build/assets/{circle-plus-check-toggle-Cuzx55bo.js → circle-plus-check-toggle-ASbpB8vN.js} +1 -1
- package/build/assets/{cloud-funnel-analytics-86CwNdSh.js → cloud-funnel-analytics-GlCUG0gk.js} +1 -1
- package/build/assets/cog-CZiR80uT.js +1 -0
- package/build/assets/{combobox-caret-D0fRotFi.js → combobox-caret-DvpEsh2O.js} +1 -1
- package/build/assets/{command-menu-BXy03FBl.js → command-menu-DwUQzjYP.js} +1 -1
- package/build/assets/{condenser-settings-BmZa0ui_.js → condenser-settings-BptcoiLA.js} +1 -1
- package/build/assets/{confirmation-modal-BgoN6lbN.js → confirmation-modal-CiEwxZAA.js} +1 -1
- package/build/assets/{context-menu-list-item-Bq02tc-P.js → context-menu-list-item-CdcamfM1.js} +1 -1
- package/build/assets/conversation-DREHj4nT.js +1 -0
- package/build/assets/conversation-DotRfiDz.js +90 -0
- package/build/assets/conversation-panel-DREHj4nT.js +1 -0
- package/build/assets/conversation-state-store-DMLtlHbE.js +1 -0
- package/build/assets/{conversation-tab-empty-state-CMqo_0Bd.js → conversation-tab-empty-state-D-puECpY.js} +1 -1
- package/build/assets/{copy-to-clipboard-button-Cg1pF0xn.js → copy-to-clipboard-button-BGxcUbgy.js} +1 -1
- package/build/assets/{device-verify-BfQLgNyq.js → device-verify-CZJfWaJf.js} +1 -1
- package/build/assets/{dropdown-classes-BIqQr5mx.js → dropdown-classes-tLhpwtxS.js} +1 -1
- package/build/assets/{entry.client-CxFjRYqH.js → entry.client-D8GnI6GZ.js} +2 -2
- package/build/assets/{enum-filter-dropdown-C_yV4_bo.js → enum-filter-dropdown-Fk8k60nk.js} +1 -1
- package/build/assets/{environment-switch-overlay-Bi4qbh2g.js → environment-switch-overlay-DeztVYuL.js} +1 -1
- package/build/assets/{extensions-hub-BqUINAhp.js → extensions-hub-Cd6GCYzq.js} +1 -1
- package/build/assets/{extensions-navigation-lraj88Wk.js → extensions-navigation-C4sgZg-y.js} +1 -1
- package/build/assets/{external-link-CgtpA_a1.js → external-link-C0UpBgsE.js} +1 -1
- package/build/assets/{file-text-DEK4LSVw.js → file-text-C6WYtNdV.js} +1 -1
- package/build/assets/files-tab-BW_qzyAm.js +1 -0
- package/build/assets/{form-control-classes-7yFSQJq_.js → form-control-classes-CGXBLcn1.js} +1 -1
- package/build/assets/format-model-name-BNPKVsIq.js +1 -0
- package/build/assets/format-relative-time-ZhQD4rsl.js +1 -0
- package/build/assets/git-provider-icon-CaQ1yLPi.js +1 -0
- package/build/assets/{git-repo-dropdown-ByMzpNko.js → git-repo-dropdown-CgXR6M_E.js} +1 -1
- package/build/assets/git-repo-dropdown-D2Uei3CO.js +1 -0
- package/build/assets/{highlighted-source-view-C_sfncLZ.js → highlighted-source-view-C_YOp8Fo.js} +1 -1
- package/build/assets/home-DNzzJcMP.js +1 -0
- package/build/assets/home-aCos-5vc.js +1 -0
- package/build/assets/{home-store-CxqsY9Fi.js → home-store-DgzViC3f.js} +1 -1
- package/build/assets/index-home-DNzzJcMP.js +1 -0
- package/build/assets/info-CLoC1LRo.js +1 -0
- package/build/assets/install-server-modal-D7zIqNKz.js +1 -0
- package/build/assets/kebab-menu-item-content-DERMdnDv.js +1 -0
- package/build/assets/{launch-CkqiSCqi.js → launch-5PjKeLak.js} +1 -1
- package/build/assets/{list-todo-DNWlzfaM.js → list-todo-BF049YaY.js} +1 -1
- package/build/assets/llm-not-configured-banner-BK9z5eS0.js +27 -0
- package/build/assets/llm-settings-BLAMK2tR.js +1 -0
- package/build/assets/llm-settings-BWsbarGM.js +1 -0
- package/build/assets/{llm-subscription-service-BAdOl5Xx.js → llm-subscription-service-SfnEV9Uc.js} +1 -1
- package/build/assets/loader-circle-D7IagAyF.js +1 -0
- package/build/assets/{loading-spinner-xhnrGP4Y.js → loading-spinner-DBgXgra0.js} +1 -1
- package/build/assets/{manage-backends-modal-DhGk5mJt.js → manage-backends-modal-BTqNPhzc.js} +1 -1
- package/build/assets/manifest-abebca3c.js +1 -0
- package/build/assets/manifest-subpage-layout-Rn-glaxV.js +1 -0
- package/build/assets/{map-provider-Mx8mZuE-.js → map-provider-BK4HnqYz.js} +1 -1
- package/build/assets/markdown-renderer-Cp6DlHQN.js +8 -0
- package/build/assets/{mcp-DCkvl6K0.js → mcp-BC-Ixn4T.js} +2 -2
- package/build/assets/{mcp-marketplace-utils-DEbMXlQr.js → mcp-marketplace-utils-BJWJgbB6.js} +1 -1
- package/build/assets/{messages-DSXvyc21.js → messages-CzFKrzPG.js} +5 -5
- package/build/assets/{modal-body-gIe21fDv.js → modal-body-BdKfD3Hl.js} +1 -1
- package/build/assets/{modal-classes-D66dlgZ7.js → modal-classes-D5_b5vMi.js} +1 -1
- package/build/assets/{modal-close-button-B6iOGYpI.js → modal-close-button-objukxk_.js} +1 -1
- package/build/assets/{mouse-pointer-click-BYX1Pw5W.js → mouse-pointer-click-C_gXyLyD.js} +1 -1
- package/build/assets/{npm-DLckoeJc.js → npm-CHVHV1MC.js} +1 -1
- package/build/assets/{onboarding-D7WDG66N.js → onboarding-Diw0V51A.js} +1 -1
- package/build/assets/onboarding-modal-Da4yHzsA.js +1 -0
- package/build/assets/{organization-service.api-D-s9z18a.js → organization-service.api-BztSy69u.js} +1 -1
- package/build/assets/parse-git-remote-url-BkXN9jzl.js +1 -0
- package/build/assets/{pencil-BGOCPRyu.js → pencil-49avMHlD.js} +1 -1
- package/build/assets/{planner-tab-AKaXIIfg.js → planner-tab-CJiSpNax.js} +1 -1
- package/build/assets/{plugins-management-service-wtmY4QQw.js → plugins-management-service-lHdNKWNU.js} +1 -1
- package/build/assets/plus-C0BagBpV.js +1 -0
- package/build/assets/profiles-service.api-BLr7FXec.js +1 -0
- package/build/assets/providers-CWXnb7S3.js +1 -0
- package/build/assets/{proxy-9Z_WZggZ.js → proxy-DYDXxtje.js} +1 -1
- package/build/assets/{puzzle-BWLmN8z4.js → puzzle-Bt2B1rzf.js} +1 -1
- package/build/assets/recommended-automations-launcher-CcFMfJRR.js +1 -0
- package/build/assets/{refresh-cw-CXtFWpwv.js → refresh-cw-nmcesifB.js} +1 -1
- package/build/assets/root-CT4t7apy.css +1 -0
- package/build/assets/root-DnRgLKpU.js +2 -0
- package/build/assets/root-layout-2L9tr-BN.js +2 -0
- package/build/assets/{schema-field-OnM5Uob_.js → schema-field-C59lVZTA.js} +1 -1
- package/build/assets/{sdk-section-page-m5WQm2sy.js → sdk-section-page-BbBEQQjq.js} +1 -1
- package/build/assets/search-CYSDBczG.js +1 -0
- package/build/assets/secrets-service-BtsgYSlj.js +1 -0
- package/build/assets/secrets-settings-DJ0OKa4_.js +1 -0
- package/build/assets/{segmented-toggle-DCspm2U5.js → segmented-toggle-DiVfTZuN.js} +1 -1
- package/build/assets/{settings-BJQI_iBM.js → settings-CDqL_Uqh.js} +1 -1
- package/build/assets/{settings-CWFxymAf.js → settings-DcNPxz0v.js} +1 -1
- package/build/assets/{settings-dropdown-input-BI8V_Nov.js → settings-dropdown-input-Ba1UN5Du.js} +1 -1
- package/build/assets/{settings-index-BiTqJoH7.js → settings-index-Cz2cKt2K.js} +1 -1
- package/build/assets/{settings-input-Cz62hWVW.js → settings-input-CWUEHHvS.js} +1 -1
- package/build/assets/{settings-list-classes-z_3FW5H3.js → settings-list-classes-DdcLXDGn.js} +1 -1
- package/build/assets/{settings-modal-BIrIVn97.js → settings-modal-nEEK1Kh1.js} +1 -1
- package/build/assets/{settings-service.api--rJmnuLa.js → settings-service.api-3yAUFcaP.js} +1 -1
- package/build/assets/{settings-switch-BRsSI8Vs.js → settings-switch-Dk9hChx1.js} +1 -1
- package/build/assets/{settings-utils-Ba7vel6T.js → settings-utils-CxjtCSB3.js} +1 -1
- package/build/assets/{shared-conversation-CQK_PqHx.js → shared-conversation-DbAcrx3s.js} +1 -1
- package/build/assets/{shield-check-T3JsDJiM.js → shield-check-CiOTXxV2.js} +1 -1
- package/build/assets/{sidebar-layout-Bhi3hVcu.js → sidebar-layout-lrfPooIB.js} +1 -1
- package/build/assets/{sidebar-mobile-menu-toggle-YWJNRN4p.js → sidebar-mobile-menu-toggle-KERXfNu1.js} +1 -1
- package/build/assets/{sidebar-nav-link-BSUlY5Ml.js → sidebar-nav-link-B8lFD6Cb.js} +1 -1
- package/build/assets/{sidebar-store-Cl1cUv_F.js → sidebar-store-u6pUpxJ7.js} +1 -1
- package/build/assets/{skill-card-pill-row-BXz8L8Rn.js → skill-card-pill-row-dGIUzr_b.js} +1 -1
- package/build/assets/{skill-icon-badge-QgfKv31M.js → skill-icon-badge-kkOWZ89w.js} +1 -1
- package/build/assets/{skill-scope-Dc3JPW-8.js → skill-scope-DWN1PBPH.js} +1 -1
- package/build/assets/{skills-plugins-CpTV27n3.js → skills-plugins-DFjH2Nq6.js} +1 -1
- package/build/assets/{skills-settings-CSW__IW4.js → skills-settings-DIHpl3ol.js} +2 -2
- package/build/assets/{sparkles-TJ0mdECe.js → sparkles-ntyMLnbj.js} +1 -1
- package/build/assets/{styled-tooltip-BUMSbgrF.js → styled-tooltip-B6JXcsmL.js} +1 -1
- package/build/assets/{task-list-tab-mAHMOkUz.js → task-list-tab-aEJzEcHD.js} +1 -1
- package/build/assets/{terminal-BzxBaHx2.js → terminal-Dch7Ty5K.js} +1 -1
- package/build/assets/{toggle-switch-O5v1FgxW.js → toggle-switch-B2MLKsgt.js} +1 -1
- package/build/assets/{trash-2-C0xNVp9c.js → trash-2-yZnDM4Ji.js} +1 -1
- package/build/assets/{typography-NOKSk9_R.js → typography-DB5HoCk0.js} +1 -1
- package/build/assets/usage-tab-DrEtBmBT.js +1 -0
- package/build/assets/use-acp-credential-form-c8KXAa8A.js +1 -0
- package/build/assets/{use-activate-agent-profile-D9YRQPTF.js → use-activate-agent-profile-B0p34N3q.js} +1 -1
- package/build/assets/use-agent-profiles-CPIc6wLH.js +1 -0
- package/build/assets/{use-can-manage-org-profiles-Dxzq2AEd.js → use-can-manage-org-profiles-Dz_8Eqkv.js} +1 -1
- package/build/assets/{use-cloud-current-user-id-Co2eJk2A.js → use-cloud-current-user-id-DvUVqCle.js} +1 -1
- package/build/assets/use-config-C3PO4TBw.js +1 -0
- package/build/assets/{use-create-conversation-CoHTiCbI.js → use-create-conversation-DVrA_uLD.js} +1 -1
- package/build/assets/use-create-secret-DbBIpaCR.js +1 -0
- package/build/assets/use-get-secrets-6PBitf54.js +1 -0
- package/build/assets/use-has-permission-CQ31Cl8j.js +1 -0
- package/build/assets/use-is-authed-2UrDIziV.js +1 -0
- package/build/assets/use-is-creating-conversation-BvYpmb3v.js +1 -0
- package/build/assets/use-llm-profiles-diZS4FiN.js +1 -0
- package/build/assets/use-manifest-capabilities-HIWCtIUm.js +1 -0
- package/build/assets/{use-onboarding-completion-CCE8OQgV.js → use-onboarding-completion-Bs8PcXik.js} +1 -1
- package/build/assets/{use-plugins-marketplace-CEiak69h.js → use-plugins-marketplace-BCuNLFsr.js} +1 -1
- package/build/assets/use-save-agent-profile-BaMNSpBV.js +1 -0
- package/build/assets/{use-save-settings-DNmnbG6f.js → use-save-settings-BahvC2Gw.js} +1 -1
- package/build/assets/{use-settings-wCwPaSIv.js → use-settings-C6ZxpBDX.js} +1 -1
- package/build/assets/{use-settings-nav-items-BlFL7YhM.js → use-settings-nav-items-Bqn69Ggw.js} +2 -2
- package/build/assets/use-tracking-Bhu7gk2y.js +3 -0
- package/build/assets/{use-user-conversation-DVtfg0B_.js → use-user-conversation-BkNXpXrd.js} +1 -1
- package/build/assets/{useInfiniteQuery-p1xq35r2.js → useInfiniteQuery-c_OmS3lK.js} +1 -1
- package/build/assets/{useMutation-BFDQmgk9.js → useMutation-6ZsQCqAn.js} +1 -1
- package/build/assets/{useQueries-DF1NAAeC.js → useQueries-xDrGlTO_.js} +1 -1
- package/build/assets/{useQuery-DRv--6bK.js → useQuery-Bs5NFz2s.js} +1 -1
- package/build/assets/{utils-zxEjKE70.js → utils-DUD5ScdA.js} +1 -1
- package/build/assets/{vendor~entry.client-CgNUwtQL.js → vendor~entry.client-BFE7Llz9.js} +1 -1
- package/build/assets/{vendor~entry.client-zSIea5EO.js → vendor~entry.client-BaKt_PIp.js} +1 -1
- package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js} +1 -1
- package/build/assets/{vendor~files-tab-D9wR9yM2.js → vendor~files-tab-B6POTS66.js} +1 -1
- package/build/assets/{vendor~index-home~home~conversation-panel~conversation-Ipoe6hvY.js → vendor~index-home~home~conversation-panel~conversation-53Q_U6uP.js} +1 -1
- package/build/assets/{vendor~root-layout-C-IgVx6e.js → vendor~root-layout-DeQACFVA.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation-Dhd_I4H4.js → vendor~root-layout~conversation-panel~conversation-bv7ooVgH.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-Cc0f9kPP.js → vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-e8pX05xf.js} +1 -1
- package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-d7svw-BB.js → vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-BvS6PCK2.js} +1 -1
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-4WsUP-tz.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-DOPLJMH9.js} +1 -1
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-D5DWZVc7.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js} +1 -1
- package/build/assets/{verification-settings-B8UMQ7MG.js → verification-settings-COueVXmM.js} +1 -1
- package/build/assets/{wrench-DIka3hCq.js → wrench-C95ujnYo.js} +1 -1
- package/build/assets/x-86ZCfxKY.js +1 -0
- package/build/assets/{zap-DHddTPc0.js → zap-DRa-r-Tf.js} +1 -1
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +60 -2
- package/build/locales/ca/openhands.json +60 -2
- package/build/locales/de/openhands.json +60 -2
- package/build/locales/en/openhands.json +60 -2
- package/build/locales/es/openhands.json +60 -2
- package/build/locales/fr/openhands.json +60 -2
- package/build/locales/it/openhands.json +60 -2
- package/build/locales/ja/openhands.json +60 -2
- package/build/locales/ko-KR/openhands.json +60 -2
- package/build/locales/no/openhands.json +60 -2
- package/build/locales/pt/openhands.json +60 -2
- package/build/locales/tr/openhands.json +60 -2
- package/build/locales/uk/openhands.json +60 -2
- package/build/locales/zh-CN/openhands.json +60 -2
- package/build/locales/zh-TW/openhands.json +60 -2
- package/config/defaults.json +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 +10 -0
- package/dist/api/automation-service/automation-service.api.js +42 -0
- package/dist/api/automation-service/automation-service.api.js.map +1 -1
- 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 +9 -0
- package/dist/api/cloud/conversation-service.api.js +11 -1
- package/dist/api/cloud/conversation-service.api.js.map +1 -1
- package/dist/api/profiles-service/profiles-service.api.cjs +1 -1
- package/dist/api/profiles-service/profiles-service.api.cjs.map +1 -1
- package/dist/api/profiles-service/profiles-service.api.d.ts +15 -2
- package/dist/api/profiles-service/profiles-service.api.js +25 -2
- package/dist/api/profiles-service/profiles-service.api.js.map +1 -1
- package/dist/api/secrets-service.cjs +1 -1
- package/dist/api/secrets-service.cjs.map +1 -1
- package/dist/api/secrets-service.d.ts +5 -0
- package/dist/api/secrets-service.js +12 -6
- package/dist/api/secrets-service.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/index.d.ts +0 -1
- package/dist/components/features/automations/git-sync/git-sync-activity-row.d.ts +15 -0
- package/dist/components/features/automations/git-sync/git-sync-config-form.d.ts +13 -0
- package/dist/components/features/automations/git-sync/git-sync-error-banner.d.ts +6 -0
- package/dist/components/features/automations/git-sync/git-sync-not-local-state.d.ts +1 -0
- package/dist/components/features/automations/git-sync/git-sync-overview-section.d.ts +12 -0
- package/dist/components/features/automations/git-sync/git-sync-skeleton.d.ts +1 -0
- package/dist/components/features/automations/git-sync/git-sync-status-pill.d.ts +7 -0
- package/dist/components/features/automations/git-sync/git-sync-unsupported-state.d.ts +7 -0
- package/dist/components/features/automations/responder-deployment-modal.d.ts +2 -1
- package/dist/components/features/chat/chat-interface.cjs +2 -2
- package/dist/components/features/chat/chat-interface.cjs.map +1 -1
- package/dist/components/features/chat/chat-interface.js +177 -176
- package/dist/components/features/chat/chat-interface.js.map +1 -1
- package/dist/components/features/chat/error-message-banner.cjs +1 -1
- package/dist/components/features/chat/error-message-banner.cjs.map +1 -1
- package/dist/components/features/chat/error-message-banner.d.ts +3 -1
- package/dist/components/features/chat/error-message-banner.js +64 -58
- package/dist/components/features/chat/error-message-banner.js.map +1 -1
- package/dist/components/features/conversation-panel/compact-conversation-row.cjs +1 -1
- package/dist/components/features/conversation-panel/compact-conversation-row.js +6 -6
- package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.js +19 -19
- package/dist/components/features/onboarding/steps/setup-llm-step.d.ts +10 -7
- package/dist/components/shared/buttons/conversation-confirmation-buttons.cjs +1 -1
- package/dist/components/shared/buttons/conversation-confirmation-buttons.cjs.map +1 -1
- package/dist/components/shared/buttons/conversation-confirmation-buttons.js +1 -1
- package/dist/components/shared/buttons/conversation-confirmation-buttons.js.map +1 -1
- package/dist/config/defaults.cjs +1 -1
- package/dist/config/defaults.cjs.map +1 -1
- package/dist/config/defaults.js +1 -1
- package/dist/config/defaults.js.map +1 -1
- package/dist/contexts/conversation-websocket-context.cjs +2 -2
- package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
- package/dist/contexts/conversation-websocket-context.js +12 -12
- package/dist/contexts/conversation-websocket-context.js.map +1 -1
- package/dist/hooks/query/use-commit-changes.cjs +1 -1
- package/dist/hooks/query/use-commit-changes.js +4 -4
- package/dist/hooks/query/use-git-sync.d.ts +19 -0
- package/dist/hooks/query/use-task-polling.cjs +1 -1
- package/dist/hooks/query/use-task-polling.cjs.map +1 -1
- package/dist/hooks/query/use-task-polling.js +12 -10
- package/dist/hooks/query/use-task-polling.js.map +1 -1
- package/dist/hooks/query/use-unified-get-git-changes.cjs +1 -1
- package/dist/hooks/query/use-unified-get-git-changes.js +4 -4
- package/dist/hooks/query/use-unified-git-commits.cjs +1 -1
- package/dist/hooks/query/use-unified-git-commits.js +4 -4
- package/dist/hooks/query/use-unified-git-diff.cjs +1 -1
- package/dist/hooks/query/use-unified-git-diff.js +4 -4
- package/dist/hooks/query/use-workspace-files.cjs +1 -1
- package/dist/hooks/query/use-workspace-files.cjs.map +1 -1
- package/dist/hooks/query/use-workspace-files.d.ts +14 -4
- package/dist/hooks/query/use-workspace-files.js +45 -32
- package/dist/hooks/query/use-workspace-files.js.map +1 -1
- package/dist/hooks/use-responder-url-secret.d.ts +5 -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 +6 -0
- package/dist/hooks/use-tracking.js +6 -0
- package/dist/hooks/use-tracking.js.map +1 -1
- package/dist/i18n/declaration.cjs +1 -1
- package/dist/i18n/declaration.cjs.map +1 -1
- package/dist/i18n/declaration.d.ts +59 -1
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +1 -1
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +1001 -15
- package/dist/i18n/translation.js.map +1 -1
- package/dist/locales/ar/openhands.json +60 -2
- package/dist/locales/ca/openhands.json +60 -2
- package/dist/locales/de/openhands.json +60 -2
- package/dist/locales/en/openhands.json +60 -2
- package/dist/locales/es/openhands.json +60 -2
- package/dist/locales/fr/openhands.json +60 -2
- package/dist/locales/it/openhands.json +60 -2
- package/dist/locales/ja/openhands.json +60 -2
- package/dist/locales/ko-KR/openhands.json +60 -2
- package/dist/locales/no/openhands.json +60 -2
- package/dist/locales/pt/openhands.json +60 -2
- package/dist/locales/tr/openhands.json +60 -2
- package/dist/locales/uk/openhands.json +60 -2
- package/dist/locales/zh-CN/openhands.json +60 -2
- package/dist/locales/zh-TW/openhands.json +60 -2
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.js +27 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.js.map +1 -0
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +1 -1
- package/dist/package.js.map +1 -1
- package/dist/routes/files-tab.cjs +1 -1
- package/dist/routes/files-tab.js +11 -11
- package/dist/routes/files-tab.js.map +1 -1
- package/dist/services/settings.cjs +1 -1
- package/dist/services/settings.cjs.map +1 -1
- package/dist/services/settings.js +2 -2
- package/dist/services/settings.js.map +1 -1
- package/dist/services/telemetry.cjs +1 -1
- package/dist/services/telemetry.cjs.map +1 -1
- package/dist/services/telemetry.js +47 -51
- package/dist/services/telemetry.js.map +1 -1
- package/dist/stores/error-message-store.cjs +1 -1
- package/dist/stores/error-message-store.cjs.map +1 -1
- package/dist/stores/error-message-store.d.ts +3 -1
- package/dist/stores/error-message-store.js +5 -3
- package/dist/stores/error-message-store.js.map +1 -1
- package/dist/types/git-sync.d.ts +51 -0
- package/dist/utils/error-handler.cjs +1 -1
- package/dist/utils/error-handler.cjs.map +1 -1
- package/dist/utils/error-handler.d.ts +3 -2
- package/dist/utils/error-handler.js +18 -5
- package/dist/utils/error-handler.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 +1 -0
- package/dist/utils/format-model-name.js +1 -0
- package/dist/utils/format-model-name.js.map +1 -1
- package/dist/utils/transcript-export/load-complete-events.cjs +1 -1
- package/dist/utils/transcript-export/load-complete-events.cjs.map +1 -1
- package/dist/utils/transcript-export/load-complete-events.js +24 -16
- package/dist/utils/transcript-export/load-complete-events.js.map +1 -1
- package/package.json +1 -1
- package/scripts/check-translation-completeness.cjs +3 -0
- package/scripts/dev-with-automation.mjs +98 -9
- package/build/assets/active-backend-context-IqOjobNK.js +0 -2
- package/build/assets/agent-settings-COfJsQ1d.js +0 -1
- package/build/assets/automation-detail-B-jQ39Mm.js +0 -3
- package/build/assets/automation-export-B1dywoqk.js +0 -2
- package/build/assets/automation-setup-route-C-bWUZBi.js +0 -1
- package/build/assets/automations-list-DnMxlxsL.js +0 -1
- package/build/assets/browser-B9AbV6kG.js +0 -7
- package/build/assets/check-WAFXrrs_.js +0 -1
- package/build/assets/chevron-down-CifNWzme.js +0 -1
- package/build/assets/circle-check-CtnimJa8.js +0 -1
- package/build/assets/conversation-BPo8SvLN.js +0 -1
- package/build/assets/conversation-CPCVsCUY.js +0 -90
- package/build/assets/conversation-panel-BPo8SvLN.js +0 -1
- package/build/assets/conversation-state-store-C5YpjMNy.js +0 -1
- package/build/assets/files-tab-DV0L-lFE.js +0 -1
- package/build/assets/format-model-name-BN_rx1Y3.js +0 -1
- package/build/assets/format-relative-time-DSErAuVr.js +0 -1
- package/build/assets/git-provider-icon-BvlLAche.js +0 -1
- package/build/assets/git-repo-dropdown-C6R7hgM8.js +0 -1
- package/build/assets/home-BOrlwLqG.js +0 -1
- package/build/assets/home-BvMNC6E-.js +0 -1
- package/build/assets/index-home-BvMNC6E-.js +0 -1
- package/build/assets/info-BRVcJAUg.js +0 -1
- package/build/assets/install-server-modal-Bl4G1zF4.js +0 -1
- package/build/assets/kebab-menu-item-content-BGoGFEAg.js +0 -1
- package/build/assets/llm-not-configured-banner-DLw_tu-G.js +0 -27
- package/build/assets/llm-settings-B-pkVCrt.js +0 -1
- package/build/assets/llm-settings-DSC0-IQ7.js +0 -1
- package/build/assets/loader-circle-B47W9XqT.js +0 -1
- package/build/assets/manifest-653b89aa.js +0 -1
- package/build/assets/manifest-subpage-layout-CKWvL2ig.js +0 -1
- package/build/assets/markdown-renderer-DUmk7pFc.js +0 -8
- package/build/assets/onboarding-modal-C_xVrFNv.js +0 -1
- package/build/assets/plus-zNEL8rcX.js +0 -1
- package/build/assets/profiles-service.api-DCMYxHMi.js +0 -1
- package/build/assets/providers-BjrtjX4L.js +0 -1
- package/build/assets/recommended-automations-launcher-CFlzhu1o.js +0 -1
- package/build/assets/root-CanxKlNV.css +0 -1
- package/build/assets/root-DkfG_UWR.js +0 -2
- package/build/assets/root-layout-D75LHYhh.js +0 -2
- package/build/assets/search-CycosyjN.js +0 -1
- package/build/assets/secrets-service-B26R61C1.js +0 -1
- package/build/assets/secrets-settings-CbLYCKOX.js +0 -1
- package/build/assets/usage-tab-tEmVN0KD.js +0 -1
- package/build/assets/use-acp-credential-form-BPNi0Zbm.js +0 -1
- package/build/assets/use-agent-profiles-Cb2zUW3l.js +0 -1
- package/build/assets/use-config-DKAMiI5R.js +0 -1
- package/build/assets/use-create-secret-2zBlCDsF.js +0 -1
- package/build/assets/use-is-authed-C52-ivnB.js +0 -1
- package/build/assets/use-is-creating-conversation-DdaAE6jV.js +0 -1
- package/build/assets/use-llm-profiles-C_BHue65.js +0 -1
- package/build/assets/use-manifest-capabilities-DPrQsaPP.js +0 -1
- package/build/assets/use-save-agent-profile-DK9idD6a.js +0 -1
- package/build/assets/use-tracking-CVwPmhlX.js +0 -3
- package/build/assets/x-BWKA2Ver.js +0 -1
- package/dist/api/cloud/suggestions-service.api.d.ts +0 -8
- package/dist/api/suggestions-service/suggestions-service.api.d.ts +0 -11
- package/dist/components/conversation-events/chat/event-message-components/observation-pair-event-message.d.ts +0 -7
- package/dist/components/conversation-events/index.d.ts +0 -1
- package/dist/components/features/automations/metadata-chip.d.ts +0 -6
- package/dist/components/features/chat/task-tracking/status-badge.d.ts +0 -5
- package/dist/components/features/chat/task-tracking/status-icon.d.ts +0 -5
- package/dist/components/features/chat/task-tracking/task-list-section.d.ts +0 -10
- package/dist/components/features/controls/tools.d.ts +0 -2
- package/dist/components/features/conversation-panel/new-conversation-button.d.ts +0 -23
- package/dist/components/features/home/home-header/guide-message.d.ts +0 -1
- package/dist/components/features/home/home-header/home-header.d.ts +0 -1
- package/dist/components/features/home/new-conversation/create-conversation-button.d.ts +0 -1
- package/dist/components/features/home/new-conversation/new-conversation.d.ts +0 -1
- package/dist/components/features/home/new-conversation.d.ts +0 -1
- package/dist/components/features/home/tasks/task-card.d.ts +0 -6
- package/dist/components/features/home/tasks/task-group.d.ts +0 -7
- package/dist/components/features/home/tasks/task-issue-number.d.ts +0 -6
- package/dist/components/features/home/tasks/task-item-title.d.ts +0 -1
- package/dist/components/features/home/tasks/task-suggestions-skeleton.d.ts +0 -1
- package/dist/components/features/home/tasks/task-suggestions.d.ts +0 -6
- package/dist/components/features/settings/agent-server-onboarding.d.ts +0 -10
- package/dist/components/features/settings/mcp-settings/mcp-server-list-item.d.ts +0 -6
- package/dist/components/features/settings/mcp-settings/mcp-server-list.d.ts +0 -8
- package/dist/hooks/query/use-suggested-tasks.d.ts +0 -1
- package/dist/hooks/use-should-show-user-features.d.ts +0 -1
- package/dist/ui/card-title.d.ts +0 -16
- package/dist/ui/card.d.ts +0 -14
- package/dist/utils/group-suggested-tasks.d.ts +0 -7
- /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dh9v73sa-rfV8mQ9m.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dcc51rps-rfV8mQ9m.js} +0 -0
- /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~lq5hicxx-cHFhpUBq.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js} +0 -0
- /package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~9pstowjp-BOVIFA_g.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-BOVIFA_g.js} +0 -0
- /package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~ht43enc2-C0JXQb_q.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-C0JXQb_q.js} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/manage-backends-modal-DhGk5mJt.js","assets/rolldown-runtime-Cyuzqnbw.js","assets/vendor-styling-Ck5D_A2Q.js","assets/active-backend-context-IqOjobNK.js","assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js","assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dh9v73sa-rfV8mQ9m.js","assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~lq5hicxx-cHFhpUBq.js","assets/utils-zxEjKE70.js","assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-D5DWZVc7.js","assets/useQuery-DRv--6bK.js","assets/backend-form-modal-DiVrD4Cm.js","assets/chevron-down-CifNWzme.js","assets/cloud-funnel-analytics-86CwNdSh.js","assets/info-BRVcJAUg.js","assets/use-tracking-CVwPmhlX.js","assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~9pstowjp-BOVIFA_g.js","assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~ht43enc2-C0JXQb_q.js","assets/proxy-9Z_WZggZ.js","assets/segmented-toggle-DCspm2U5.js","assets/use-onboarding-completion-CCE8OQgV.js","assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-4WsUP-tz.js","assets/useQueries-DF1NAAeC.js","assets/organization-service.api-D-s9z18a.js","assets/brand-button-swT1RyO0.js","assets/form-control-classes-7yFSQJq_.js","assets/settings-input-Cz62hWVW.js","assets/modal-backdrop-BSzNhM4r.js","assets/modal-body-gIe21fDv.js","assets/modal-close-button-B6iOGYpI.js","assets/navigation-context-CQZwH_tC.js","assets/modal-classes-D66dlgZ7.js","assets/pencil-BGOCPRyu.js","assets/plus-zNEL8rcX.js","assets/refresh-cw-CXtFWpwv.js","assets/trash-2-C0xNVp9c.js","assets/confirmation-modal-BgoN6lbN.js","assets/use-cloud-current-user-id-Co2eJk2A.js","assets/api-key-entry-screen-D8Fade_-.js","assets/onboarding-modal-C_xVrFNv.js","assets/use-is-creating-conversation-DdaAE6jV.js","assets/chat-send-button-DsJtivmL.js","assets/check-WAFXrrs_.js","assets/recommended-automations-launcher-CFlzhu1o.js","assets/vendor~root-layout~index-home~home~mcp~automations-list~automation-templates~automation-set~bxsimjx0-D7IDevqN.js","assets/conversation-store-Blc5xysY.js","assets/settings-service.api--rJmnuLa.js","assets/settings-CWFxymAf.js","assets/install-server-modal-Bl4G1zF4.js","assets/useMutation-BFDQmgk9.js","assets/bot-BQZx8e2i.js","assets/secrets-service-B26R61C1.js","assets/styled-tooltip-BUMSbgrF.js","assets/use-settings-wCwPaSIv.js","assets/mcp-marketplace-utils-DEbMXlQr.js","assets/skill-card-pill-row-BXz8L8Rn.js","assets/extension-module-card-classes-Bo43vY5V.js","assets/circle-plus-check-toggle-Cuzx55bo.js","assets/checkmark-XZyokq_Y.js","assets/x-mark-BopmFoBq.js","assets/use-create-conversation-CoHTiCbI.js","assets/agent-server-conversation-service.api-DWBe0rbX.js","assets/profiles-service.api-DCMYxHMi.js","assets/llm-subscription-service-BAdOl5Xx.js","assets/llm-subscription-DTqtBCWz.js","assets/acp-providers-D1PORKc0.js","assets/use-agent-profiles-Cb2zUW3l.js","assets/plugins-management-service-wtmY4QQw.js","assets/use-llm-profiles-C_BHue65.js","assets/circle-check-CtnimJa8.js","assets/loader-circle-B47W9XqT.js","assets/llm-settings-DSC0-IQ7.js","assets/back-nav-button-HHEneWMw.js","assets/navigation-link-Bxo3-4vo.js","assets/map-provider-Mx8mZuE-.js","assets/external-link-CgtpA_a1.js","assets/use-can-manage-org-profiles-Dxzq2AEd.js","assets/dropdown-classes-BIqQr5mx.js","assets/badge-CpYmcVZV.js","assets/base-modal-Fnh6Uln9.js","assets/sdk-section-page-m5WQm2sy.js","assets/switch-skeleton-DwOoCqaL.js","assets/schema-field-OnM5Uob_.js","assets/dist-Bl64nBZL.js","assets/settings-dropdown-input-BI8V_Nov.js","assets/combobox-caret-D0fRotFi.js","assets/settings-switch-BRsSI8Vs.js","assets/toggle-switch-O5v1FgxW.js","assets/use-is-authed-C52-ivnB.js","assets/typography-NOKSk9_R.js","assets/use-save-settings-DNmnbG6f.js","assets/copy-to-clipboard-button-Cg1pF0xn.js","assets/copy-Drmhc2jD.js","assets/loading-spinner-xhnrGP4Y.js","assets/settings-section-header-context-BOJ_Fbak.js","assets/u-check-circle-BKn1spCL.js","assets/u-edit-DAkcF52u.js","assets/format-model-name-BN_rx1Y3.js","assets/settings-list-classes-z_3FW5H3.js","assets/use-acp-credential-form-BPNi0Zbm.js","assets/use-create-secret-2zBlCDsF.js","assets/openhands-logo-BS-Epajy.js","assets/use-activate-agent-profile-D9YRQPTF.js","assets/use-save-agent-profile-DK9idD6a.js","assets/terminal-BUpID2wS.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,xt as n,yt as r}from"./vendor-styling-Ck5D_A2Q.js";import{F as i,R as a,U as o,_ as s,g as c,l,p as u,u as d,z as f}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~lq5hicxx-cHFhpUBq.js";import{n as p}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dh9v73sa-rfV8mQ9m.js";import{t as m}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-D5DWZVc7.js";import{M as h,w as g}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js";import{t as ee}from"./useQuery-DRv--6bK.js";import{r as _}from"./providers-BjrtjX4L.js";import{Bt as v,Ct as y,J as b,K as x,Kt as S,L as C,V as w,_ as T,bt as E,kt as te,lt as D,n as ne,r as re,wt as O,xt as k}from"./active-backend-context-IqOjobNK.js";import{z as A}from"./utils-zxEjKE70.js";import{n as j,o as M,r as N,t as P}from"./use-onboarding-completion-CCE8OQgV.js";import{t as F}from"./loading-spinner-xhnrGP4Y.js";import{t as I}from"./use-config-DKAMiI5R.js";import{n as L}from"./use-settings-wCwPaSIv.js";import{t as R}from"./use-save-settings-DNmnbG6f.js";import{t as z}from"./modal-backdrop-BSzNhM4r.js";import{n as B}from"./modal-body-gIe21fDv.js";import{n as V,r as H}from"./base-modal-Fnh6Uln9.js";import{t as U}from"./brand-button-swT1RyO0.js";import{t as W}from"./navigation-context-CQZwH_tC.js";import{i as G,n as K}from"./color-themes-DTj5Ylbr.js";var q=e(t(),1),ie=`/api/authenticate`,J=`/login`,Y=`returnTo`,ae=new Set([`localhost`,`127.0.0.1`,`::1`]);function oe(){return typeof window>`u`?`/`:`${window.location.pathname}${window.location.search}${window.location.hash}`}function se(){return typeof window>`u`?!1:ae.has(window.location.hostname)}function ce(){return E()===`cookie`&&!se()}async function le(){try{return await h.post(ie,null,{withCredentials:!0}),!0}catch(e){if(h.isAxiosError(e)&&e.response?.status===401)return!1;throw e}}function ue(e=oe()){return`${J}?${new URLSearchParams({[Y]:e}).toString()}`}function de(){typeof window>`u`||window.location.assign(ue())}var X=r();function fe({backend:e,onChoice:t}){let{t:n,ready:r}=m(v),i=M([e])[e.id]?.isConnected===!0,{data:a,isSuccess:o}=L(),{mutateAsync:s,isPending:c}=R(),[l,u]=q.useState(!1),[d,f]=q.useState(!1);q.useEffect(()=>{f(!1)},[e.id]);let p=i&&o&&a?.user_consents_to_analytics===null&&!d;return q.useEffect(()=>{if(r&&p){let e=setTimeout(()=>u(!0),50);return()=>clearTimeout(e)}u(!1)},[r,p]),!p||!l?null:(0,X.jsx)(z,{elevated:!0,"aria-label":n(A.TELEMETRY$CONSENT_TITLE),children:(0,X.jsx)(`form`,{"data-testid":`telemetry-consent-form`,onSubmit:async e=>{e.preventDefault();let n=new FormData(e.currentTarget).get(`analytics`)===`on`;try{await s({user_consents_to_analytics:n})}catch{return}f(!0),await T(n?`granted`:`denied`),t?.(n)},className:`flex flex-col gap-2`,children:(0,X.jsxs)(B,{className:`border border-[var(--oh-border)]`,children:[(0,X.jsx)(H,{title:n(A.TELEMETRY$CONSENT_TITLE)}),(0,X.jsx)(V,{children:n(A.TELEMETRY$CONSENT_DESCRIPTION)}),(0,X.jsx)(`p`,{className:`text-xs text-neutral-400`,children:n(A.TELEMETRY$BACKEND_SCOPE,{name:e.name,host:e.host})}),(0,X.jsxs)(`label`,{className:`flex gap-2 items-center self-start text-sm cursor-pointer`,children:[(0,X.jsx)(`input`,{name:`analytics`,type:`checkbox`,defaultChecked:!0,className:`w-4 h-4 cursor-pointer`}),n(A.TELEMETRY$SEND_ANONYMOUS_DATA)]}),(0,X.jsx)(U,{testId:`confirm-telemetry-preferences`,type:`submit`,variant:`primary`,className:`w-full`,isDisabled:c,children:n(A.TELEMETRY$CONFIRM_PREFERENCES)})]})})})}function Z({onChoice:e}){let{backend:t}=ne();return k()!==null||t.kind!==`local`?null:(0,X.jsx)(fe,{backend:t,onChoice:e})}function pe(){return q.useEffect(()=>{K(G())},[]),null}var me=q.lazy(()=>n(()=>import(`./manage-backends-modal-DhGk5mJt.js`).then(e=>e.n).then(e=>({default:e.ManageBackendsModal})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))),Q=q.lazy(()=>n(()=>import(`./api-key-entry-screen-D8Fade_-.js`),__vite__mapDeps([37,1,2,3,4,5,6,7,8,10,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]))),he=q.lazy(()=>n(()=>import(`./onboarding-modal-C_xVrFNv.js`).then(e=>e.n).then(e=>({default:e.OnboardingModal})),__vite__mapDeps([38,1,2,3,4,5,6,7,8,39,29,40,41,42,15,43,44,14,16,17,45,46,47,48,49,50,23,24,25,51,26,28,52,9,53,30,54,55,56,57,58,59,60,20,61,62,63,64,65,66,67,68,69,10,11,12,13,18,19,21,22,27,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103]))),ge=q.lazy(()=>n(()=>import(`./backend-form-modal-DiVrD4Cm.js`).then(e=>e.i).then(e=>({default:e.BackendFormModal})),__vite__mapDeps([10,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30])));function _e({children:e}){return(0,X.jsxs)(`html`,{lang:`en`,children:[(0,X.jsxs)(`head`,{children:[(0,X.jsx)(`meta`,{charSet:`utf-8`}),(0,X.jsx)(`meta`,{name:`viewport`,content:`width=device-width, initial-scale=1`}),(0,X.jsx)(d,{}),(0,X.jsx)(l,{})]}),(0,X.jsxs)(`body`,{"data-agent-server-ui":``,className:`m-0`,children:[(0,X.jsxs)(_,{contentClassName:`min-h-screen`,children:[(0,X.jsx)(pe,{}),e,(0,X.jsx)(g,{toastOptions:te}),(0,X.jsx)(`div`,{id:`modal-portal-exit`})]}),(0,X.jsx)(s,{}),(0,X.jsx)(c,{})]})]})}function $(){return(0,X.jsx)(`main`,{className:`min-h-screen bg-base px-6 py-10 text-white`,children:(0,X.jsx)(`div`,{className:`mx-auto flex min-h-screen max-w-6xl items-center justify-center`,children:(0,X.jsx)(`div`,{className:`rounded-3xl border border-white/10 bg-base/80 px-8 py-10 shadow-2xl`,children:(0,X.jsx)(F,{size:`large`})})})})}function ve(){let e=p(),t=q.useCallback(()=>{D()&&(w(),e.invalidateQueries({queryKey:C.WEB_CLIENT_CONFIG}))},[e]);return(0,X.jsx)(`main`,{"data-testid":`agent-server-onboarding-screen`,className:`min-h-screen bg-base`,children:(0,X.jsx)(q.Suspense,{fallback:null,children:(0,X.jsx)(me,{onClose:t,recoveryMode:!0})})})}function ye({onClose:e}){let t=i(),n=a(),r=f(),o=t.pathname.match(/^\/conversations\/([^/]+)/)?.[1]??null,s=q.useMemo(()=>({currentPath:t.pathname,conversationId:o,isNavigating:!!r.location,navigate:(e,t)=>n(e,t)}),[o,t.pathname,n,r.location]);return k()===null?(0,X.jsx)(`main`,{"data-testid":`first-run-onboarding-screen`,className:`min-h-screen bg-base`,children:(0,X.jsx)(W,{value:s,children:(0,X.jsx)(q.Suspense,{fallback:(0,X.jsx)($,{}),children:(0,X.jsx)(he,{onClose:e})})})}):(0,X.jsx)(`main`,{"data-testid":`first-run-onboarding-screen`,className:`min-h-screen bg-base`,children:(0,X.jsx)(q.Suspense,{fallback:(0,X.jsx)($,{}),children:(0,X.jsx)(ge,{mode:`add`,onClose:e,source:`manage_backends_modal`,hideCloseButton:!0})})})}var be=()=>[{rel:`icon`,type:`image/svg+xml`,href:S(`/favicon.svg`)}],xe=()=>[{title:`OpenHands`},{name:`description`,content:`Let's Start Building!`}],Se=o(function(){let e=y(),t=!!D()?.apiKey,n=e&&!t,{active:r}=re(),i=k(),a=E(),o=i!==null,s=o&&r.backend.kind===`cloud`&&O(r.backend.host,i),{isCompleted:c,markCompleted:l}=P(),d=ce(),f=o?!d&&(!s||a!==`cookie`&&!c):!c,p=ee({queryKey:C.MAIN_APP_COOKIE_AUTH,queryFn:le,enabled:d&&!f,retry:!1,staleTime:1e3*60*5,meta:{disableToast:!0}}),m=d&&!f&&p.isPending&&!p.isError,h=d&&p.data===!1,g=!d||p.data===!0||p.isError;q.useEffect(()=>{h&&de()},[h]);let _=I({enabled:!n&&!f&&g}),v=M(r.backend.kind===`cloud`&&g?[r.backend]:[])[r.backend.id],S=r.backend.kind===`cloud`&&v?.isConnected===!1&&N(v.lastError),w=r.backend.kind===`cloud`&&v?.disabled===!0&&j(v.lastError);return f?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(ye,{onClose:l}),(0,X.jsx)(Z,{})]}):m||h?(0,X.jsx)($,{}):n||x(_.error)?(0,X.jsx)(q.Suspense,{fallback:(0,X.jsx)($,{}),children:(0,X.jsx)(Q,{})}):_.isPending||_.isLoading?(0,X.jsx)($,{}):S||w||b(_.error)?(0,X.jsx)(ve,{}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(u,{}),(0,X.jsx)(Z,{})]})});export{_e as Layout,Se as default,be as links,xe as meta};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/settings-modal-BIrIVn97.js","assets/rolldown-runtime-Cyuzqnbw.js","assets/vendor-styling-Ck5D_A2Q.js","assets/active-backend-context-IqOjobNK.js","assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js","assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dh9v73sa-rfV8mQ9m.js","assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~lq5hicxx-cHFhpUBq.js","assets/utils-zxEjKE70.js","assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-D5DWZVc7.js","assets/llm-settings-DSC0-IQ7.js","assets/useMutation-BFDQmgk9.js","assets/useQuery-DRv--6bK.js","assets/back-nav-button-HHEneWMw.js","assets/navigation-link-Bxo3-4vo.js","assets/navigation-context-CQZwH_tC.js","assets/form-control-classes-7yFSQJq_.js","assets/map-provider-Mx8mZuE-.js","assets/external-link-CgtpA_a1.js","assets/info-BRVcJAUg.js","assets/proxy-9Z_WZggZ.js","assets/profiles-service.api-DCMYxHMi.js","assets/settings-service.api--rJmnuLa.js","assets/settings-CWFxymAf.js","assets/llm-subscription-service-BAdOl5Xx.js","assets/llm-subscription-DTqtBCWz.js","assets/use-can-manage-org-profiles-Dxzq2AEd.js","assets/organization-service.api-D-s9z18a.js","assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-4WsUP-tz.js","assets/dropdown-classes-BIqQr5mx.js","assets/badge-CpYmcVZV.js","assets/settings-input-Cz62hWVW.js","assets/base-modal-Fnh6Uln9.js","assets/modal-body-gIe21fDv.js","assets/modal-classes-D66dlgZ7.js","assets/modal-backdrop-BSzNhM4r.js","assets/brand-button-swT1RyO0.js","assets/sdk-section-page-m5WQm2sy.js","assets/switch-skeleton-DwOoCqaL.js","assets/schema-field-OnM5Uob_.js","assets/dist-Bl64nBZL.js","assets/settings-dropdown-input-BI8V_Nov.js","assets/combobox-caret-D0fRotFi.js","assets/settings-switch-BRsSI8Vs.js","assets/toggle-switch-O5v1FgxW.js","assets/use-is-authed-C52-ivnB.js","assets/typography-NOKSk9_R.js","assets/use-save-settings-DNmnbG6f.js","assets/use-tracking-CVwPmhlX.js","assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~9pstowjp-BOVIFA_g.js","assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~ht43enc2-C0JXQb_q.js","assets/use-settings-wCwPaSIv.js","assets/extension-module-card-classes-Bo43vY5V.js","assets/copy-to-clipboard-button-Cg1pF0xn.js","assets/checkmark-XZyokq_Y.js","assets/copy-Drmhc2jD.js","assets/loading-spinner-xhnrGP4Y.js","assets/settings-section-header-context-BOJ_Fbak.js","assets/use-llm-profiles-C_BHue65.js","assets/u-check-circle-BKn1spCL.js","assets/u-edit-DAkcF52u.js","assets/format-model-name-BN_rx1Y3.js","assets/settings-list-classes-z_3FW5H3.js","assets/settings-utils-Ba7vel6T.js","assets/manage-backends-modal-DhGk5mJt.js","assets/backend-form-modal-DiVrD4Cm.js","assets/chevron-down-CifNWzme.js","assets/cloud-funnel-analytics-86CwNdSh.js","assets/segmented-toggle-DCspm2U5.js","assets/use-onboarding-completion-CCE8OQgV.js","assets/useQueries-DF1NAAeC.js","assets/modal-close-button-B6iOGYpI.js","assets/pencil-BGOCPRyu.js","assets/plus-zNEL8rcX.js","assets/refresh-cw-CXtFWpwv.js","assets/trash-2-C0xNVp9c.js","assets/confirmation-modal-BgoN6lbN.js","assets/use-cloud-current-user-id-Co2eJk2A.js","assets/environment-switch-overlay-Bi4qbh2g.js","assets/environment-switch-store-DVQZLFbj.js","assets/alert-banner-CzZsm7ms.js","assets/vendor~index-home~home~conversation-panel~conversation~alert-banner-B3qC_oj8.js","assets/vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-d7svw-BB.js","assets/iconBase-C2sR-uAp.js","assets/close-ScPlnwyq.js","assets/command-menu-BXy03FBl.js","assets/bot-BQZx8e2i.js","assets/wrench-DIka3hCq.js","assets/sidebar-store-Cl1cUv_F.js","assets/conversation-store-Blc5xysY.js","assets/list-todo-DNWlzfaM.js","assets/search-CycosyjN.js","assets/shield-check-T3JsDJiM.js","assets/sparkles-TJ0mdECe.js","assets/x-BWKA2Ver.js","assets/zap-DHddTPc0.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{a as e,r as t}from"./rolldown-runtime-Cyuzqnbw.js";import{St as n,bt as r,i,xt as a,yt as o}from"./vendor-styling-Ck5D_A2Q.js";import{B as s,F as c,I as l,L as u,O as d,R as f,U as p,V as m,W as h,p as g,z as _}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~lq5hicxx-cHFhpUBq.js";import{t as v}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-D5DWZVc7.js";import{t as y}from"./useInfiniteQuery-p1xq35r2.js";import{t as b}from"./useQuery-DRv--6bK.js";import{t as x}from"./use-is-creating-conversation-DdaAE6jV.js";import{t as S}from"./vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-Cc0f9kPP.js";import{At as C,D as w,H as T,Ut as E,_ as D,d as O,dt as k,ft as A,g as j,i as M,jt as N,l as P,n as F,r as I,u as ee,v as L,xt as te,y as R}from"./active-backend-context-IqOjobNK.js";import{C as z,S as B,b as V,t as H,y as ne,z as U}from"./utils-zxEjKE70.js";import{A as re,C as ie,D as W,E as ae,O as oe,S as se,T as ce,_ as le,a as ue,b as de,c as fe,d as pe,f as me,g as he,h as ge,i as G,j as _e,k as ve,l as ye,m as be,n as xe,o as Se,p as Ce,r as we,s as Te,t as Ee,u as K,v as De,w as Oe,x as ke,y as Ae}from"./vendor~root-layout-C-IgVx6e.js";import{t as je}from"./bot-BQZx8e2i.js";import{t as Me}from"./check-WAFXrrs_.js";import{n as Ne,t as Pe}from"./vendor~root-layout~conversation-panel~conversation-Dhd_I4H4.js";import{a as Fe,l as Ie,o as Le,t as Re}from"./vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-d7svw-BB.js";import{a as ze,i as Be,n as Ve,o as He,r as Ue,t as We}from"./npm-DLckoeJc.js";import{t as Ge}from"./circle-check-CtnimJa8.js";import{r as Ke}from"./map-provider-Mx8mZuE-.js";import{t as qe}from"./external-link-CgtpA_a1.js";import{a as Je,c as Ye,d as Xe,f as Ze,i as Qe,l as $e,n as et,o as tt,r as nt,s as rt,t as it,u as at}from"./git-provider-icon-BvlLAche.js";import{a as ot,c as st,d as ct,f as q,h as J,i as lt,l as ut,m as dt,n as ft,o as pt,p as mt,r as ht,s as gt,t as _t,u as vt}from"./onboarding-D7WDG66N.js";import{a as yt,i as bt,n as xt,r as St,t as Ct}from"./wrench-DIka3hCq.js";import{a as wt,i as Tt,n as Et,r as Dt,t as Ot}from"./sidebar-store-Cl1cUv_F.js";import{o as kt,r as At}from"./backend-form-modal-DiVrD4Cm.js";import{t as jt}from"./mouse-pointer-click-BYX1Pw5W.js";import{t as Mt}from"./plus-zNEL8rcX.js";import{t as Nt}from"./refresh-cw-CXtFWpwv.js";import{t as Pt}from"./search-CycosyjN.js";import{a as Ft}from"./llm-settings-DSC0-IQ7.js";import{t as It}from"./trash-2-C0xNVp9c.js";import{t as Lt}from"./x-BWKA2Ver.js";import{t as Rt}from"./zap-DHddTPc0.js";import{o as zt}from"./use-onboarding-completion-CCE8OQgV.js";import{t as Bt}from"./loading-spinner-xhnrGP4Y.js";import{t as Vt}from"./use-config-DKAMiI5R.js";import{m as Ht,n as Ut,t as Wt,x as Gt}from"./use-tracking-CVwPmhlX.js";import{n as Kt,t as qt}from"./use-settings-wCwPaSIv.js";import{t as Jt}from"./use-save-settings-DNmnbG6f.js";import{t as Yt}from"./modal-backdrop-BSzNhM4r.js";import{n as Xt}from"./modal-body-gIe21fDv.js";import{i as Zt,n as Qt,r as $t}from"./base-modal-Fnh6Uln9.js";import{_ as en,c as tn}from"./form-control-classes-7yFSQJq_.js";import{t as nn}from"./brand-button-swT1RyO0.js";import{n as rn,t as an}from"./navigation-context-CQZwH_tC.js";import{t as on}from"./openhands-logo-BS-Epajy.js";import{t as sn}from"./navigation-link-Bxo3-4vo.js";import{a as cn,d as ln,f as un,i as dn,l as fn,n as pn,r as mn,u as hn}from"./sidebar-layout-Bhi3hVcu.js";import{n as gn,t as _n}from"./sidebar-nav-link-BSUlY5Ml.js";import{t as vn}from"./vendor~root-layout~index-home~home~conversation-panel~conversation~automation-setup-route-CjECvSl5.js";import{t as yn}from"./styled-tooltip-BUMSbgrF.js";import{a as bn,d as xn,f as Sn,i as Cn,l as wn,n as Tn,o as En,r as Dn,u as On}from"./dropdown-classes-BIqQr5mx.js";import{r as kn,t as An}from"./combobox-caret-D0fRotFi.js";import{n as jn,t as Mn}from"./use-cloud-current-user-id-Co2eJk2A.js";import{s as Nn}from"./environment-switch-store-DVQZLFbj.js";import{d as Pn,f as Fn,l as In,t as Ln}from"./conversation-store-Blc5xysY.js";import{t as Rn}from"./modal-close-button-B6iOGYpI.js";import{t as zn}from"./manage-backends-modal-DhGk5mJt.js";import{i as Bn,r as Vn,t as Hn}from"./agent-server-conversation-service.api-DWBe0rbX.js";import{c as Un,d as Wn,u as Gn}from"./acp-providers-D1PORKc0.js";import{t as Kn}from"./use-is-authed-C52-ivnB.js";import{a as qn,i as Jn,n as Yn,t as Xn}from"./conversation-state-store-C5YpjMNy.js";import{a as Zn,c as Qn,d as $n,i as er,l as tr,o as nr,r as rr,s as ir,t as ar,u as or}from"./sidebar-mobile-menu-toggle-YWJNRN4p.js";import{t as sr}from"./use-click-outside-element-W6Os4Nlb.js";import{t as cr}from"./use-llm-profiles-C_BHue65.js";import{n as lr}from"./use-create-conversation-CoHTiCbI.js";import{t as ur}from"./format-time-delta-BIR5Os7T.js";import{r as dr,t as fr}from"./vendor~root-layout~conversation-panel~conversation~shared-conversation-DOuig0C0.js";import{n as pr,t as Y}from"./context-menu-list-item-Bq02tc-P.js";import{a as mr,i as hr,n as gr}from"./use-can-manage-org-profiles-Dxzq2AEd.js";import{t as _r}from"./u-edit-DAkcF52u.js";import{t as vr}from"./skills-B0IliMxw.js";import{i as yr}from"./format-model-name-BN_rx1Y3.js";import{r as br}from"./onboarding-modal-C_xVrFNv.js";import{m as xr}from"./install-server-modal-Bl4G1zF4.js";import{c as Sr,i as Cr,n as wr,r as Tr,s as Er,t as Dr}from"./home-store-CxqsY9Fi.js";import{t as Or}from"./search-BatSpWed.js";import{t as kr}from"./use-user-conversation-DVtfg0B_.js";var X=e(n(),1),Z=o(),Ar=46,jr=30;function Mr({className:e,logoClassName:t,logoWidth:n=Ar,logoHeight:r=jr}={}){let{t:i}=v(`openhands`);return(0,Z.jsx)(sn,{to:`/conversations`,"aria-label":i(U.BRANDING$OPENHANDS_LOGO),className:H(e),children:(0,Z.jsx)(on,{width:n,height:r,className:H(`shrink-0`,t)})})}function Nr(){return(0,Z.jsx)(`div`,{className:`animate-spin h-4 w-4 border-2 border-transparent border-t-white rounded-full`,"data-testid":`dropdown-loading`})}function Pr({onClear:e}){return(0,Z.jsx)(`button`,{type:`button`,"data-testid":`dropdown-clear`,onClick:e,"aria-label":`Clear selection`,className:`text-white hover:text-[var(--oh-text-tertiary)]`,children:(0,Z.jsx)(Lt,{size:14})})}function Fr({isOpen:e,isDisabled:t,getToggleButtonProps:n}){return(0,Z.jsx)(`button`,{type:`button`,"data-testid":`dropdown-trigger`,...n({disabled:t,className:H(kn,`text-current`,e&&`rotate-180`,t&&`cursor-not-allowed`)}),children:(0,Z.jsx)(An,{})})}function Ir({isOpen:e,filteredOptions:t,selectedItem:n,emptyMessage:r,getMenuProps:i,getItemProps:a,footer:o,openUpward:s=!1,fitContent:c=!1}){return(0,Z.jsxs)(`div`,{className:H(`absolute z-50 overflow-hidden text-white`,c?`min-w-full w-max`:`w-full`,s?`bottom-full mb-1`:`mt-1`,`bg-tertiary rounded-[6px] context-menu-box-shadow p-1`,`max-h-60 overflow-auto`,!e&&`hidden`),children:[(0,Z.jsxs)(`ul`,{...i({className:H(`p-0`,Cn)}),children:[e&&t.length===0&&(0,Z.jsx)(`li`,{className:`px-2 py-2 text-sm text-[var(--oh-muted)] italic`,children:r}),e&&t.map((e,t)=>(0,Z.jsxs)(`li`,{...a({item:e,index:t,className:H(En,`focus:outline-none`,n?.value===e.value&&`bg-[var(--oh-interactive-selected)] text-white`)}),children:[e.prefix?(0,Z.jsx)(`span`,{className:On,children:e.prefix}):null,(0,Z.jsx)(`span`,{className:`min-w-0 truncate`,children:e.label})]},e.value))]}),e&&o?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(at,{inset:`menu`}),(0,Z.jsx)(`div`,{className:`p-0`,children:o})]}):null]})}function Lr({placeholder:e,isDisabled:t,getInputProps:n,italicPlaceholder:r=!0,fitContent:i=!1}){return(0,Z.jsx)(`input`,{...n({placeholder:e,disabled:t,className:H(`outline-none bg-transparent text-white not-italic`,i?`w-auto field-sizing-content whitespace-nowrap text-sm`:`flex-1 min-w-0`,r&&`placeholder:italic placeholder:text-tertiary-alt`,!r&&`placeholder:text-tertiary-alt`,tn,`px-0 not-italic text-inherit`)})})}var Rr={position:`absolute`,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,border:0};function zr({options:e,emptyMessage:t=`No options`,clearable:n=!1,loading:r=!1,disabled:i=!1,placeholder:a,defaultValue:o,onChange:s,testId:c,className:l,footer:u,openUpward:d=!1,hideTrigger:f=!1,defaultOpen:p=!1,openOnHover:m=!1,italicPlaceholder:h=!0,fitContent:g=!1}){let _=X.useRef(null),[v,y]=(0,X.useState)(o?.label??``),[b,x]=(0,X.useState)(``);X.useEffect(()=>()=>{_.current&&=(clearTimeout(_.current),null)},[]);let S=e.filter(e=>e.label.toLowerCase().includes(b.toLowerCase())),{isOpen:C,selectedItem:w,selectItem:T,openMenu:E,closeMenu:D,getToggleButtonProps:O,getMenuProps:k,getItemProps:A,getInputProps:j}=vn({items:S,itemToString:e=>e?.label??``,inputValue:v,stateReducer:(e,t)=>t.type===vn.stateChangeTypes.InputClick&&e.isOpen?{...t.changes,isOpen:!0}:t.changes,initialIsOpen:p,onInputValueChange:({inputValue:e})=>{y(e??``),x(e??``)},defaultSelectedItem:o,onSelectedItemChange:({selectedItem:e})=>{s?.(e??null)},onIsOpenChange:({isOpen:e,selectedItem:t})=>{e?(y(``),x(``)):(y(t?.label??``),x(``))}}),M=r||i,N=w?e.find(e=>e.value===w.value)??w:null,P=e=>j({...e,onChange:e=>{y(e.target.value),x(e.target.value)}});return(0,Z.jsxs)(`div`,{className:H(`relative`,g?`inline-block w-auto`:`w-full`),"data-testid":c,onMouseEnter:m?()=>{_.current&&=(clearTimeout(_.current),null),E()}:void 0,onMouseLeave:m?()=>{_.current&&clearTimeout(_.current),_.current=setTimeout(()=>D(),150)}:void 0,children:[f?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`input`,{...P({"aria-label":a??`Filter options`,tabIndex:-1}),style:Rr}),(0,Z.jsx)(`button`,{type:`button`,...O({tabIndex:-1}),style:Rr,"aria-hidden":!0})]}):(0,Z.jsxs)(`div`,{className:H(Sn,g?`w-auto`:`w-full`,M&&`cursor-not-allowed opacity-60`,l),children:[N?.prefix?(0,Z.jsx)(`span`,{className:`flex items-center shrink-0`,children:N.prefix}):null,(0,Z.jsx)(Lr,{placeholder:a,isDisabled:M,getInputProps:P,italicPlaceholder:h,fitContent:g}),r&&(0,Z.jsx)(Nr,{}),n&&w&&(0,Z.jsx)(Pr,{onClear:()=>T(null)}),(0,Z.jsx)(Fr,{isOpen:C,isDisabled:M,getToggleButtonProps:O})]}),(0,Z.jsx)(Ir,{isOpen:C,filteredOptions:S,selectedItem:w,emptyMessage:t,getMenuProps:k,getItemProps:A,footer:u,openUpward:d,fitContent:g})]})}var Br=t({AddBackendModal:()=>Vr});function Vr({onClose:e}){return(0,Z.jsx)(At,{mode:`add`,onClose:e})}var Hr=`::`;function Ur(e,t){return t?`${e}${Hr}${t}`:e}function Wr(e){let[t,n]=e.split(Hr);return{backendId:t,orgId:n??null}}function Gr(e){return(0,Z.jsx)(kt,{isConnected:e?.isConnected??null})}function Kr(){return(0,Z.jsx)(kt,{isConnected:`unavailable`})}function qr(e,t,n,r,i){let a=[],o=e.filter(e=>e.kind===`local`),s=e.filter(e=>e.kind===`cloud`);for(let e of o)a.push({value:Ur(e.id,null),label:e.name,prefix:Gr(i[e.id])});for(let e of s){let o=n[e.id],s=Gr(i[e.id]);if(!o||o.orgs.length===0)a.push({value:Ur(e.id,null),label:e.name,prefix:s});else{let n=r[e.id]?.userId??null;for(let r of o.orgs){let i=n&&n===r.id?t:r.name;a.push({value:Ur(e.id,r.id),label:`${e.name} – ${i}`,prefix:s})}}}return a}function Jr({openUpward:e=!1,hideTrigger:t=!1,defaultOpen:n=!1,onSelectOption:r,onOpenAddBackend:i,onOpenManageBackends:a,sidebarCollapsed:o=!1}={}){let{t:s}=v(`openhands`),{backends:c,active:u,setActive:d}=I(),p=jn(),m=Mn(),h=zt(c),g=f(),_=l(`/settings`),y=l(`/settings/*`),b=l(`/conversations/:conversationId`),x=l(`/automations/:automationId`),[S,C]=X.useState(!1),[w,T]=X.useState(!1),E=s(U.BACKEND$PERSONAL_WORKSPACE),D=X.useMemo(()=>qr(c,E,p,m,h),[c,E,p,m,h]),O=k(u.backend),A=s(U.BACKEND$NO_BACKEND_AVAILABLE),j=Ur(u.backend.id,u.orgId),M=O?void 0:D.find(e=>e.value===j),N=!!(_||y),P=s(U.SIDEBAR$SETTINGS),F=Ln(e=>e.isRightPanelShown),ee=!o||b&&F?`top`:`left`,L=Object.values(p).some(e=>e.isLoading);X.useEffect(()=>{if(O||u.backend.kind!==`cloud`||u.orgId)return;let{backend:e}=u,t=p[e.id];if(!t||t.orgs.length===0)return;let n=t.currentOrgId?t.orgs.find(e=>e.id===t.currentOrgId):void 0,r=m[e.id]?.userId??null,i=r?t.orgs.find(e=>e.id===r):void 0,a=n??i??t.orgs[0];a&&d(e.id,a.id)},[u,p,m,d,O]);let R=X.useCallback(()=>{if(i){i(),r?.();return}C(!0)},[i,r]),z=X.useCallback(()=>{if(a){a(),r?.();return}T(!0)},[a,r]),B=te()!==null,V=X.useCallback(e=>{e.preventDefault(),e.stopPropagation()},[]),ne=X.useCallback(e=>{V(e),R()},[R,V]),re=X.useCallback(e=>{V(e),R()},[R,V]),ie=X.useCallback(e=>{V(e),z()},[z,V]),W=X.useCallback(e=>{V(e),z()},[z,V]),ae=(0,Z.jsxs)(`div`,{className:Cn,children:[B?null:(0,Z.jsxs)(`button`,{type:`button`,"data-testid":`add-backend-menu-item`,onMouseDown:V,onTouchStart:V,onTouchEnd:re,onClick:ne,className:H(Tn,`cursor-pointer rounded-md`),children:[(0,Z.jsx)(`span`,{className:On,"aria-hidden":!0,children:(0,Z.jsx)(Mt,{width:16,height:16})}),s(U.BACKEND$ADD)]}),(0,Z.jsxs)(`button`,{type:`button`,"data-testid":`manage-backends-menu-item`,onMouseDown:V,onTouchStart:V,onTouchEnd:W,onClick:ie,className:H(Tn,`cursor-pointer rounded-md`),children:[(0,Z.jsx)(`span`,{className:On,"aria-hidden":!0,children:(0,Z.jsx)(Dt,{width:16,height:16})}),s(B?U.BACKEND$RECONNECT_CLOUD:U.BACKEND$MANAGE)]})]}),oe=X.useCallback(async e=>{if(e===j)return;let{backendId:t,orgId:n}=Wr(e),i=c.find(e=>e.id===t);i&&(Nn(D.find(t=>t.value===e)?.label??i.name),await new Promise(e=>{setTimeout(e,400)}),b?g(`/conversations`):x&&g(`/automations`),d(i.id,n),r?.())},[j,c,b,x,g,D,d,s,r]);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 w-full`,children:[(0,Z.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,Z.jsx)(zr,{testId:`backend-selector`,defaultValue:M??{value:j,label:O?A:u.backend.name,prefix:O?Kr():Gr(h[u.backend.id])},footer:ae,openUpward:e,hideTrigger:t,defaultOpen:n,openOnHover:!t,onChange:e=>{e&&oe(e.value)},placeholder:O?A:u.backend.name,loading:L,options:D,className:`h-10 px-2 py-0 bg-transparent border-transparent hover:bg-[var(--oh-surface-raised)] focus-within:bg-[var(--oh-surface-raised)] focus-within:border-transparent focus-within:ring-0`},`${j}-${M?.label??``}`)}),t?null:(0,Z.jsx)(yn,{content:P,placement:ee,offset:10,children:(0,Z.jsx)(sn,{to:`/settings`,"data-testid":`backend-selector-settings-link`,"data-active":N,"aria-label":P,className:H(N?`inline-flex items-center justify-center shrink-0 w-9 h-9 rounded-md bg-tertiary text-white font-normal cursor-pointer`:`inline-flex items-center justify-center shrink-0 w-9 h-9 rounded-md text-[var(--oh-muted)] hover:text-white hover:bg-[var(--oh-surface-raised)] cursor-pointer`,en),children:(0,Z.jsx)(Dt,{width:16,height:16})})})]}),S?(0,Z.jsx)(Vr,{onClose:()=>C(!1)}):null,w?(0,Z.jsx)(zn,{onClose:()=>T(!1)}):null]})}var Yr=`command-menu-trigger`,Xr=18;function Zr({collapsed:e}){let{t}=v(`openhands`),n=Et(e=>e.open),r=t(U.COMMAND_MENU$OPEN_LABEL),i=(0,Z.jsxs)(`button`,{type:`button`,"data-testid":Yr,"aria-label":r,onClick:n,className:H(un({collapsed:e}),e?`cursor-pointer`:`group justify-between border border-[var(--oh-border-subtle)] bg-[var(--oh-surface)]/50 hover:border-[var(--oh-border)] hover:bg-[var(--oh-surface-raised)]`),children:[(0,Z.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[e?(0,Z.jsx)(gn,{active:!1,children:(0,Z.jsx)(Pt,{width:Xr,height:Xr})}):(0,Z.jsx)(`span`,{className:H(cn,`text-[var(--oh-muted)] group-hover:text-white`),"aria-hidden":`true`,children:(0,Z.jsx)(Pt,{width:Xr,height:Xr})}),(0,Z.jsx)(`span`,{className:hn(e),children:r})]}),e?null:(0,Z.jsx)(`kbd`,{className:`rounded-md border border-[var(--oh-border)] bg-black/20 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.12em] text-[var(--oh-text-dim)]`,children:t(U.COMMAND_MENU$SHORTCUT)})]});return e?(0,Z.jsx)(yn,{content:r,placement:`right`,children:i}):i}var Qr=2e3,$r=[`npm`,`docker`];function ei(e){return e===`npm`?U.SETTINGS$VERSION_NPM_RECOMMENDED:U.SETTINGS$VERSION_DOCKER}function ti({tab:e}){return e===`npm`?(0,Z.jsx)(We,{className:`size-4 shrink-0`,"aria-hidden":!0}):(0,Z.jsx)(Ve,{className:`size-5 shrink-0`,"aria-hidden":!0})}function ni({installedVersion:e,latestVersion:t,updateAvailable:n,isChecking:r,onCheckForUpdates:i,onClose:a}){let{t:o}=v(`openhands`),[s,c]=X.useState(`npm`),[l,u]=X.useState(!1),d=X.useRef(null),f=s===`npm`?ze.npm:ze.docker;X.useEffect(()=>()=>{d.current!==null&&window.clearTimeout(d.current)},[]),X.useEffect(()=>{u(!1),d.current!==null&&(window.clearTimeout(d.current),d.current=null)},[s]);let p=X.useCallback(()=>{navigator.clipboard?.writeText(f),u(!0),d.current!==null&&window.clearTimeout(d.current),d.current=window.setTimeout(()=>{u(!1),d.current=null},Qr)},[f]);return(0,Z.jsx)(Yt,{onClose:a,"aria-label":o(U.SETTINGS$VERSION_MODAL_ARIA_LABEL),children:(0,Z.jsxs)(`section`,{className:`relative flex w-[520px] max-w-[90vw] flex-col gap-5 rounded-xl border border-[var(--oh-border)] bg-base-secondary p-6 shadow-xl`,children:[(0,Z.jsx)(Rn,{onClose:a,testId:`agent-canvas-version-modal-close`}),(0,Z.jsxs)(`header`,{className:`flex items-center gap-3 pr-8`,children:[n?(0,Z.jsx)(He,{className:`size-7 shrink-0 text-[#3B82F6]`,"aria-hidden":!0}):(0,Z.jsx)(Ge,{className:`size-7 shrink-0 text-[var(--oh-status-success)]`,"aria-hidden":!0}),(0,Z.jsx)(`h2`,{className:`text-base font-semibold leading-6 text-white`,children:o(n?U.SETTINGS$VERSION_UPDATE_AVAILABLE:U.SETTINGS$VERSION_UP_TO_DATE_TITLE)}),n&&t?(0,Z.jsx)(`span`,{className:`rounded-full bg-[#1E3A5F] px-2 py-0.5 text-xs font-semibold text-[#3B82F6]`,children:t}):null]}),(0,Z.jsx)(`div`,{className:`flex flex-col gap-1`,children:n&&t?(0,Z.jsxs)(`p`,{className:`text-sm text-[var(--oh-text)]`,children:[o(U.SETTINGS$VERSION_UPDATE_MESSAGE,{installed:e,latest:t}),` `,(0,Z.jsxs)(`a`,{href:Be,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1.5 whitespace-nowrap font-medium text-white hover:text-[var(--oh-text)]`,children:[o(U.SETTINGS$VERSION_RELEASE_NOTES),(0,Z.jsx)(qe,{className:`size-4 shrink-0`,"aria-hidden":!0})]})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`p`,{className:`text-sm text-[var(--oh-text)]`,children:o(U.SETTINGS$VERSION_INSTALLED,{version:e})}),t?(0,Z.jsxs)(`p`,{className:`whitespace-nowrap text-sm text-[var(--oh-status-success)]`,children:[o(U.SETTINGS$VERSION_LATEST_MESSAGE),` `,(0,Z.jsxs)(`a`,{href:Be,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1.5 font-medium text-white hover:text-[var(--oh-text)]`,children:[o(U.SETTINGS$VERSION_RELEASE_NOTES),(0,Z.jsx)(qe,{className:`size-4 shrink-0`,"aria-hidden":!0})]})]}):(0,Z.jsx)(`p`,{className:`text-sm text-[var(--oh-muted)]`,children:o(U.SETTINGS$VERSION_CHECK_UNAVAILABLE)})]})}),n?(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`div`,{className:`flex justify-center`,children:$r.map(e=>(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>c(e),className:H(`inline-flex items-center gap-1.5 px-3 pb-2 text-sm font-medium`,s===e?`border-b border-white text-white`:`text-[var(--oh-muted)] hover:text-white`),children:[(0,Z.jsx)(ti,{tab:e}),o(ei(e))]},e))}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border border-[var(--oh-border)] bg-[var(--oh-surface-deep)] px-4 py-3`,children:[(0,Z.jsx)(`code`,{className:`min-w-0 flex-1 overflow-visible whitespace-nowrap font-mono text-sm text-white`,children:f}),(0,Z.jsx)(`button`,{type:`button`,onClick:p,"aria-label":o(l?U.BUTTON$COPIED:U.SETTINGS$VERSION_COPY_COMMAND),disabled:l,className:`shrink-0 text-[var(--oh-muted)] hover:text-white disabled:hover:text-[var(--oh-muted)]`,children:l?(0,Z.jsx)(Me,{className:`size-4 text-[var(--oh-status-success)]`,"aria-hidden":!0}):(0,Z.jsx)(Ke,{className:`size-4`,"aria-hidden":!0})})]})]}):null,n?null:(0,Z.jsx)(`div`,{className:`flex flex-wrap gap-x-8 gap-y-3`,children:(0,Z.jsxs)(`button`,{type:`button`,onClick:i,className:`inline-flex items-center gap-2 text-sm font-medium text-white hover:text-[var(--oh-text)] disabled:cursor-wait disabled:text-[var(--oh-muted)]`,disabled:r,children:[o(U.SETTINGS$VERSION_CHECK_FOR_UPDATES),(0,Z.jsx)(Nt,{className:H(`size-4 shrink-0`,r&&`animate-spin`),"aria-hidden":!0})]})})]})})}function ri({className:e,hideWhenUpToDate:t=!1}){let{t:n}=v(`openhands`),[r,i]=X.useState(!1),a=te()!==null,o=Ue({enabled:!a});if(a)return null;let s=w,c=o.data??null,l=(c===null?null:T(c,s))===1;return t&&!l?null:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`button`,{type:`button`,"data-testid":`agent-canvas-version-tile`,onClick:()=>i(!0),"aria-label":n(U.SETTINGS$VERSION_TILE_ARIA_LABEL),className:H(`flex w-full items-center gap-3 rounded-md border border-[var(--oh-border)] bg-base-secondary px-3 py-2 text-left hover:bg-[var(--oh-surface-raised)]`,e),children:[(0,Z.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`span`,{className:`block truncate text-sm font-semibold leading-5 text-white`,children:n(l?U.SETTINGS$VERSION_TILE_NEW_VERSION:U.SETTINGS$VERSION_PRODUCT_NAME)}),(0,Z.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5 truncate text-xs leading-5`,children:[(0,Z.jsx)(`span`,{className:`text-[var(--oh-muted)]`,children:n(U.SETTINGS$APP_UPDATE_VERSION_LABEL)}),(0,Z.jsx)(`span`,{className:`truncate text-white`,children:l&&c?c:s})]})]}),l?(0,Z.jsx)(He,{className:`size-5 shrink-0 text-[#3B82F6]`,"aria-hidden":!0}):(0,Z.jsx)(Ge,{className:`size-5 shrink-0 text-[var(--oh-status-success)]`,"aria-hidden":!0})]}),r?(0,Z.jsx)(ni,{installedVersion:s,latestVersion:c,updateAvailable:l,isChecking:o.isFetching,onCheckForUpdates:()=>{o.refetch()},onClose:()=>i(!1)}):null]})}function ii(){let e=F();return X.useCallback(t=>k(e.backend)?t:A(t,e),[e])}var ai=(e=20)=>{let{data:t}=Kn(),n=F(),r=!k(n.backend);return y({queryKey:[`user`,`conversations`,`paginated`,e,n.backend.id,n.orgId],queryFn:async({pageParam:t})=>await Hn.searchConversations(e,t),enabled:!!t&&r,getNextPageParam:e=>e.next_page_id,initialPageParam:void 0,refetchInterval:1e4,meta:{backendId:n.backend.id}})},oi=(e=10)=>b({queryKey:[`start-tasks`,`search`,e],queryFn:()=>[],select:e=>e.filter(e=>e.status!==`READY`&&e.status!==`ERROR`)});function si({onConfirm:e,onCancel:t,conversationTitle:n}){let{t:r}=v(`openhands`),i=n!=null&&n!==``?(0,Z.jsx)(S,{ns:`openhands`,i18nKey:U.CONVERSATION$ARCHIVE_WARNING_WITH_TITLE,values:{title:n},components:{title:(0,Z.jsx)(`span`,{className:`text-white`})}}):r(U.CONVERSATION$ARCHIVE_WARNING);return(0,Z.jsx)(Yt,{onClose:t,children:(0,Z.jsxs)(Xt,{className:`items-start border border-[var(--oh-border)]`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)($t,{title:r(U.CONVERSATION$CONFIRM_ARCHIVE)}),(0,Z.jsx)(Qt,{children:i})]}),(0,Z.jsxs)(`div`,{className:`flex justify-end gap-2 w-full`,onClick:e=>e.stopPropagation(),children:[(0,Z.jsx)(nn,{type:`button`,variant:`secondary`,onClick:t,testId:`cancel-button`,children:r(U.BUTTON$CANCEL)}),(0,Z.jsx)(nn,{type:`button`,variant:`primary`,onClick:e,testId:`confirm-button`,children:r(U.ACTION$CONFIRM_ARCHIVE)})]})]})})}function ci({onConfirm:e,onClose:t,onCancel:n}){let{t:r}=v(`openhands`);return(0,Z.jsx)(Yt,{onClose:n,children:(0,Z.jsxs)(Xt,{testID:`confirm-new-conversation-modal`,children:[(0,Z.jsx)($t,{title:r(U.CONVERSATION$EXIT_WARNING)}),(0,Z.jsxs)(`div`,{className:`flex w-full justify-end gap-2`,children:[(0,Z.jsx)(Zt,{text:r(U.BUTTON$CANCEL),onClick:t,className:`bg-tertiary`}),(0,Z.jsx)(Zt,{text:r(U.ACTION$CONFIRM),onClick:e,className:`bg-[#C63143]`})]})]})})}var li=[`[@media(hover:hover)_and_(pointer:fine)]:pointer-events-none`,`[@media(hover:hover)_and_(pointer:fine)]:invisible`,`[@media(hover:hover)_and_(pointer:fine)]:opacity-0`,`[@media(hover:hover)_and_(pointer:fine)]:group-hover:pointer-events-auto`,`[@media(hover:hover)_and_(pointer:fine)]:group-hover:visible`,`[@media(hover:hover)_and_(pointer:fine)]:group-hover:opacity-100`,`[@media(hover:hover)_and_(pointer:fine)]:group-focus-within:pointer-events-auto`,`[@media(hover:hover)_and_(pointer:fine)]:group-focus-within:visible`,`[@media(hover:hover)_and_(pointer:fine)]:group-focus-within:opacity-100`],ui=[`[@media(hover:hover)_and_(pointer:fine)]:opacity-100`,`[@media(hover:hover)_and_(pointer:fine)]:group-hover:opacity-0`,`[@media(hover:hover)_and_(pointer:fine)]:group-focus-within:opacity-0`],di=[`[@media(hover:hover)_and_(pointer:fine)]:min-w-0`,`[@media(hover:hover)_and_(pointer:fine)]:group-hover:min-w-[3.75rem]`,`[@media(hover:hover)_and_(pointer:fine)]:group-focus-within:min-w-[3.75rem]`],fi=[`[@media(hover:hover)_and_(pointer:fine)]:flex`,`[@media(hover:hover)_and_(pointer:fine)]:group-hover:hidden`,`[@media(hover:hover)_and_(pointer:fine)]:group-focus-within:hidden`];function pi(e=!1){return e?`pointer-events-auto visible opacity-100`:H(`pointer-events-auto visible opacity-100`,...li)}function mi(e=!1){return e?`opacity-0`:H(`opacity-0`,...ui)}function hi(e=!1){return e?`min-w-[3.75rem]`:H(`min-w-[3.75rem]`,...di)}function gi(e=!1){return e?`hidden`:H(`hidden`,...fi)}function _i({titleMode:e,title:t,onSave:n,isConversationArchived:r}){return e===`edit`?(0,Z.jsx)(`input`,{autoFocus:!0,"data-testid":`conversation-card-title`,onClick:e=>{e.preventDefault(),e.stopPropagation()},onBlur:e=>{n(e.currentTarget?.value?.trim?.()??``)},onKeyUp:e=>{e.nativeEvent.isComposing||e.key===`Enter`&&e.currentTarget.blur()},type:`text`,defaultValue:t,className:`text-sm leading-6 font-semibold bg-transparent w-full`}):(0,Z.jsx)(`p`,{"data-testid":`conversation-card-title`,className:H(`text-xs leading-6 font-semibold bg-transparent truncate overflow-hidden`,r&&`opacity-60`),children:t})}var vi=e=>{switch(e){case z.FINISHED:return`check`;case z.RUNNING:return`working`;case z.IDLE:case z.WAITING_FOR_CONFIRMATION:return`active`;case z.PAUSED:return`paused`;case z.ERROR:case z.STUCK:return`error`;default:return`unknown`}},yi=(e,t)=>{if(t)return`COMMON$ARCHIVED`;switch(e){case`check`:return`COMMON$FINISHED`;case`working`:case`active`:return`COMMON$WORKING`;case`paused`:return`COMMON$PAUSED`;case`error`:return`COMMON$ERROR`;default:return`COMMON$STOPPED`}};function bi(e){switch(e){case`check`:return(0,Z.jsx)(`svg`,{"data-testid":`conversation-status-check`,viewBox:`0 0 12 12`,className:`w-2.5 h-2.5 stroke-[var(--oh-status-success)]`,fill:`none`,strokeWidth:2.25,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:(0,Z.jsx)(`path`,{d:`M2.5 6.5 5 9l4.5-5.5`})});case`working`:return(0,Z.jsx)(`span`,{"data-testid":`conversation-status-working`,className:`w-1.5 h-1.5 rounded-full animate-pulse bg-[var(--oh-status-success)]`});case`active`:return(0,Z.jsx)(`span`,{"data-testid":`conversation-status-active`,className:`w-1.5 h-1.5 rounded-full bg-[var(--oh-status-success)]`});case`paused`:return(0,Z.jsx)(`span`,{"data-testid":`conversation-status-paused`,className:`w-1.5 h-1.5 rounded-full bg-[var(--oh-muted)]`});case`error`:return(0,Z.jsx)(`span`,{"data-testid":`conversation-status-error`,className:`w-1.5 h-1.5 rounded-full bg-[var(--oh-status-error)]`});default:return(0,Z.jsx)(`span`,{"data-testid":`conversation-status-unknown`,className:`w-1.5 h-1.5 rounded-full bg-[var(--oh-color-tertiary)]`})}}function xi({executionStatus:e,sandboxStatus:t,showTooltip:n=!0}){let{t:r}=v(`openhands`),i=t===`MISSING`,a=t===`ERROR`?`error`:i?`paused`:vi(e),o=r(yi(a,i)),s=(0,Z.jsx)(`div`,{className:`w-2.5 h-2.5 flex items-center justify-center shrink-0`,children:i?(0,Z.jsx)(fr,{"data-testid":`conversation-status-archived`,size:10,className:`shrink-0 text-[var(--oh-muted)] opacity-60`,"aria-hidden":!0}):bi(a)});return n?(0,Z.jsx)(yn,{content:o,placement:`right`,showArrow:!0,tooltipClassName:`bg-base text-white text-xs shadow-lg`,children:s}):s}function Si({title:e,titleMode:t,onTitleSave:n,executionStatus:r,sandboxStatus:i}){let a=rt(i);return(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 flex-1 min-w-0 overflow-hidden`,children:[r!==void 0&&(0,Z.jsx)(`div`,{className:`flex w-[18px] shrink-0 items-center justify-center`,children:(0,Z.jsx)(xi,{executionStatus:r,sandboxStatus:i,showTooltip:!1})}),(0,Z.jsx)(_i,{title:e,titleMode:t,onSave:n,isConversationArchived:a})]})}var Ci=e(r(),1);function wi({onClose:e,onDelete:t,onArchive:n,onUnarchive:r,onStop:i,onEdit:a,onDisplayCost:o,onShowAgentTools:s,onShowSkills:c,onDownloadViaVSCode:l,onDownloadConversation:u,position:d=`bottom`,floatingStyle:f,ignoreOutsideClickRef:p}){let{t:m}=v(`openhands`),{backend:h}=F(),g=sr(e,p),_=h.kind===`cloud`?U.COMMON$CLOSE_CONVERSATION_STOP_RUNTIME:U.COMMON$STOP_CONVERSATION,y=(0,X.useCallback)((e,t,n)=>{let r=e.filter(e=>e!=null);return r.length>0?n?(0,Z.jsx)(X.Fragment,{children:r},t):(0,Z.jsxs)(X.Fragment,{children:[r,(0,Z.jsx)(at,{inset:`menu`})]},t):null},[]),b=f!=null;return(0,Z.jsxs)(pr,{ref:g,testId:`context-menu`,style:b?f:void 0,theme:b?`popover`:`default`,position:b?`none`:d,alignment:b?`none`:`right`,spacing:b?`none`:`default`,className:b?`mt-0 min-w-[200px] w-max max-w-[min(280px,100vw-16px)]`:`z-[200] mt-0`,children:[y([a&&(0,Z.jsx)(Y,{testId:`edit-button`,onClick:a,children:(0,Z.jsx)(mr,{icon:(0,Z.jsx)(_r,{width:16,height:16}),text:m(U.BUTTON$RENAME)})},`edit-button`)],`edit-section`),y([s&&(0,Z.jsx)(Y,{testId:`show-agent-tools-button`,onClick:s,children:(0,Z.jsx)(mr,{icon:(0,Z.jsx)(tt,{width:16,height:16}),text:m(U.BUTTON$SHOW_AGENT_TOOLS_AND_METADATA)})},`show-agent-tools-button`),c&&(0,Z.jsx)(Y,{testId:`show-skills-button`,onClick:c,children:(0,Z.jsx)(mr,{icon:(0,Z.jsx)(vr,{width:16,height:16,className:`stroke-[1.75]`,"aria-hidden":!0}),text:m(U.CONVERSATION$SHOW_SKILLS)})},`show-skills-button`)],`tools-section`),y([i&&(0,Z.jsx)(Y,{testId:`stop-button`,onClick:i,children:(0,Z.jsx)(mr,{icon:(0,Z.jsx)(Je,{width:16,height:16}),text:m(_)})},`stop-button`),l&&(0,Z.jsx)(Y,{testId:`download-vscode-button`,onClick:l,children:(0,Z.jsx)(mr,{icon:(0,Z.jsx)(ir,{width:16,height:16}),text:m(U.BUTTON$DOWNLOAD_VIA_VSCODE)})},`download-vscode-button`),u&&(0,Z.jsx)(Y,{testId:`download-trajectory-button`,onClick:u,children:(0,Z.jsx)(mr,{icon:(0,Z.jsx)(ir,{width:16,height:16}),text:m(U.BUTTON$DOWNLOAD_CONVERSATION_DATA)})},`download-trajectory-button`)],`control-section`),y([o&&(0,Z.jsx)(Y,{testId:`display-cost-button`,onClick:o,children:(0,Z.jsx)(mr,{icon:(0,Z.jsx)(Xe,{size:16}),text:m(U.BUTTON$DISPLAY_COST)})},`display-cost-button`),n&&(0,Z.jsx)(Y,{testId:`archive-button`,onClick:n,children:(0,Z.jsx)(mr,{icon:(0,Z.jsx)(re,{className:`h-4 w-4`,"aria-hidden":!0}),text:m(U.COMMON$ARCHIVE_CONVERSATION)})},`archive-button`),r&&(0,Z.jsx)(Y,{testId:`unarchive-button`,onClick:r,children:(0,Z.jsx)(mr,{icon:(0,Z.jsx)(_e,{className:`h-4 w-4`,"aria-hidden":!0}),text:m(U.COMMON$UNARCHIVE_CONVERSATION)})},`unarchive-button`),t&&(0,Z.jsx)(Y,{testId:`delete-button`,onClick:t,children:(0,Z.jsx)(mr,{icon:(0,Z.jsx)(hr,{width:16,height:16}),text:m(U.COMMON$DELETE_CONVERSATION)})},`delete-button`)],`info-section`,!0)]})}function Ti({contextMenuOpen:e,onContextMenuToggle:t,onDelete:n,onArchive:r,onUnarchive:i,onStop:a,onEdit:o,onDownloadViaVSCode:s,onDownloadConversation:c,executionStatus:l,conversationId:u,showOptions:d}){let{t:f}=v(`openhands`),p=B(l),m=V(l),h=(0,X.useRef)(null),[,g]=(0,X.useReducer)(e=>e+1,0);(0,X.useLayoutEffect)(()=>{if(!e)return;g();let t=0,n=()=>{t||=window.requestAnimationFrame(()=>{t=0,g()})};return window.addEventListener(`resize`,n),window.addEventListener(`scroll`,n,!0),()=>{t&&window.cancelAnimationFrame(t),window.removeEventListener(`resize`,n),window.removeEventListener(`scroll`,n,!0)}},[e]);let _=(()=>{if(!e||!h.current)return;let t=h.current.getBoundingClientRect(),n=Number(window.innerWidth)||0,r=Number(window.innerHeight)||0,i=Number(t.bottom)||0,a=Number(t.right)||0;return{position:`fixed`,top:i+320+8>r?Math.max(8,t.top-320-4):i+4,right:Math.max(8,n-a),zIndex:1e5}})(),y=typeof document<`u`?document.body:null;return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(gr,{ref:h,onClick:n=>{n.preventDefault(),n.stopPropagation(),t(!e)},ariaLabel:f(U.COMMON$MORE_OPTIONS),className:H(p&&`opacity-60`)}),e&&_&&y?(0,Ci.createPortal)((0,Z.jsx)(wi,{ignoreOutsideClickRef:h,floatingStyle:_,onClose:()=>t(!1),onDelete:n,onArchive:r,onUnarchive:i,onStop:m?a:void 0,onEdit:o,onDownloadViaVSCode:u&&d?s:void 0,onDownloadConversation:u?c:void 0,position:`bottom`}),y):null]})}var Ei=`inline-flex max-w-full min-w-0 shrink-0 items-center gap-0.5 rounded-sm bg-[var(--oh-surface-raised)] px-1 py-px text-[10px] leading-4 text-[var(--oh-muted)]`,Di=`inline-flex h-4 w-3 shrink-0 items-center justify-center [&_svg]:block`,Oi=`h-3 w-3`,ki=H(Ei,`shrink`),Ai={bitbucket:Re,bitbucket_data_center:Re,github:Fe,gitlab:Le};function ji({selectedRepository:e}){let t=e.git_provider?Ai[e.git_provider]:null,n=e.selected_repository,r=e.selected_branch;return(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-1 overflow-hidden`,children:[n?(0,Z.jsxs)(`span`,{"data-testid":`conversation-card-selected-repository`,title:n,className:ki,children:[(t||e.git_provider===`azure_devops`)&&(0,Z.jsx)(`span`,{className:`inline-flex h-4 w-3 shrink-0 items-center justify-center [&_svg]:block`,"aria-hidden":!0,children:t?(0,Z.jsx)(t,{className:`h-3 w-3`}):(0,Z.jsx)(Qe,{className:`h-3 w-3`})}),(0,Z.jsx)(`span`,{className:`truncate leading-4`,children:n})]}):null,r?(0,Z.jsxs)(`span`,{"data-testid":`conversation-card-selected-branch`,title:r,className:ki,children:[(0,Z.jsx)(`span`,{className:Di,"aria-hidden":!0,children:(0,Z.jsx)(dr,{className:Oi})}),(0,Z.jsx)(`span`,{className:`truncate leading-4`,children:r})]}):null]})}function Mi({workspaceWorkingDir:e}){let{t}=v(`openhands`),n=e?Yn(e).trim():``;return n?(0,Z.jsxs)(`span`,{"data-testid":`conversation-card-workspace-folder`,className:Ei,title:e??void 0,children:[(0,Z.jsx)(`span`,{className:Di,"aria-hidden":!0,children:(0,Z.jsx)(J,{className:Oi})}),(0,Z.jsx)(`span`,{className:`truncate leading-4`,children:n})]}):(0,Z.jsxs)(`span`,{"data-testid":`conversation-card-no-repository`,className:Ei,children:[(0,Z.jsx)(`span`,{className:Di,"aria-hidden":!0,children:(0,Z.jsx)(Jn,{className:Oi})}),(0,Z.jsx)(`span`,{className:`truncate leading-4`,children:t(U.COMMON$NO_REPOSITORY)})]})}function Ni(e){switch(e.trim().toLowerCase()){case`git_provider`:return`git`;case`repo_name`:case`repo`:case`repository`:return`repo`;case`selected_branch`:case`branch`:return`branch`;case`archiveworkspacepath`:case`workspace`:case`working_dir`:return`workspace`;case`appmode`:case`app_mode`:case`mode`:return`app_mode`;case`worktools`:case`work_tools`:case`tools`:return`work_tools`;case`workwsid`:case`work_wsid`:case`wsid`:case`workspace_id`:return`work_wsid`;default:return`other`}}function Pi(e){let t=e.trim();if(!t)return t;let n=t.replace(/[_-]+/g,` `).replace(/\s+/g,` `);return n.charAt(0).toUpperCase()+n.slice(1)}function Fi(e,t){switch(Ni(e)){case`git`:return t(U.CONVERSATION_PANEL$PREVIEW_GIT);case`repo`:return t(U.CONVERSATION_PANEL$PREVIEW_REPO);case`branch`:return t(U.CONVERSATION_PANEL$PREVIEW_BRANCH);case`workspace`:return t(U.CONVERSATION_PANEL$PREVIEW_WORKSPACE);case`app_mode`:return t(U.CONVERSATION_PANEL$PREVIEW_APP_MODE);case`work_tools`:return t(U.CONVERSATION_PANEL$PREVIEW_WORK_TOOLS);case`work_wsid`:return t(U.CONVERSATION_PANEL$PREVIEW_WORK_WSID);default:return Pi(e)}}function Ii(e,t,n){return`${Fi(e,n)}: ${t}`}function Li(e,t=14){let n=Array.from(e);return n.length<=t?e:t<=1?`…`:`${n.slice(0,t-1).join(``)}…`}function Ri(e,t,n={}){let r=n.gapPx??4,i=n.overflowWidthPx??36;if(e.length===0)return 0;if(t<=0)return e.length;let a=0;for(let n=0;n<e.length;n+=1){let o=e[n],s=n>0?r:0,c=e.length-n-1>0?i+r:0;if(a+s+o+c>t)return n;a+=s+o}return e.length}var zi=new Set([`origin`,`source`,`git_provider`]),Bi=new Set([`appmode`,`app_mode`,`mode`]),Vi={origin:xe,source:me,git_provider:Fe,owner:ae,user:ae,author:ae,assignee:ae,env:ie,environment:ie,repo:De,repository:De,repo_name:De,branch:dt,selected_branch:dt,archiveworkspacepath:J,workspace:J,working_dir:J,team:we,org:oe,organization:oe,channel:ge,email:pe,automation:Rt,webhook:Ee,agent:je,project:Te,ticket:G,issue:G,pr:yt,pull_request:yt,priority:Ae,status:be,id:Tt,integration:St,appmode:Ce,app_mode:Ce,mode:Ce,worktools:Ct,work_tools:Ct,tools:Ct,workwsid:le,work_wsid:le,wsid:le,workspace_id:le},Hi={slack:xr,discord:ye,github:Fe,gitlab:Le,bitbucket:Re,bitbucket_data_center:Re,azure_devops:dt,email:pe,mail:pe,api:St,webhook:Ee,automation:Rt,review:yt,linear:Te,web:se,ui:se,canvas:se},Ui={work:ve,personal:wt,home:wt,private:wt};function Wi(e,t){let n=e.trim().toLowerCase(),r=t.trim().toLowerCase();return zi.has(n)?Hi[r]??Vi[n]??ue:Bi.has(n)?Ui[r]??Vi[n]??Ce:Vi[n]??ue}function Gi({icon:e,keyName:t,testId:n}){return(0,Z.jsx)(`span`,{className:Di,"aria-hidden":!0,children:(0,Z.jsx)(e,{"data-testid":n,"data-tag-key":t,"aria-hidden":!0,className:Oi})})}function Ki({icon:e,keyName:t,value:n,iconTestId:r}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(Gi,{icon:e,keyName:t,testId:r}),(0,Z.jsx)(`span`,{className:`truncate leading-4`,children:Li(n)})]})}function qi({tags:e}){let{t}=v(`openhands`),n=X.useRef(null),r=X.useRef(null),i=X.useRef(null),a=X.useRef(null),[o,s]=X.useState(e.length),[c,l]=X.useState(!1),[u,d]=X.useState(null),f=X.useCallback(()=>{let e=n.current,t=r.current;!e||!t||s(Ri(Array.from(t.children).map(e=>e.offsetWidth),e.clientWidth))},[]),p=X.useCallback(()=>{let e=i.current;if(!e)return;let t=e.getBoundingClientRect(),n=t.left;n+256>window.innerWidth-8&&(n=Math.max(8,window.innerWidth-8-256)),d({top:t.bottom+4,left:n})},[]),m=e.map(([e,t])=>`${e}=${t}`).join(``),h=X.useRef(null);if(X.useLayoutEffect(()=>{h.current!==m&&(h.current=m,l(!1),f())},[m,f]),X.useEffect(()=>{let e=n.current;if(!e||typeof ResizeObserver>`u`)return;let t=new ResizeObserver(()=>f());return t.observe(e),()=>t.disconnect()},[f]),X.useLayoutEffect(()=>{if(!c){d(null);return}return p(),window.addEventListener(`resize`,p),window.addEventListener(`scroll`,p,!0),()=>{window.removeEventListener(`resize`,p),window.removeEventListener(`scroll`,p,!0)}},[c,p]),X.useEffect(()=>{if(!c)return;let e=e=>{let t=e.target;i.current?.contains(t)||a.current?.contains(t)||l(!1)},t=e=>{e.key===`Escape`&&l(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[c]),e.length===0)return null;let g=Math.max(0,e.length-o),_=e.slice(0,o),y=e.slice(o),b=e=>{e.stopPropagation()};return(0,Z.jsxs)(`div`,{"data-testid":`conversation-card-tag-chips`,className:`relative min-w-0 w-full`,children:[(0,Z.jsx)(`div`,{ref:r,"aria-hidden":!0,className:`pointer-events-none fixed top-0 -left-[10000px] z-[-1] flex flex-nowrap items-center gap-1 opacity-0`,children:e.map(([e,t])=>(0,Z.jsx)(`span`,{className:Ei,children:(0,Z.jsx)(Ki,{icon:Wi(e,t),keyName:e,value:t})},e))}),(0,Z.jsxs)(`div`,{ref:n,"data-testid":`conversation-card-tag-row`,className:`flex w-full min-w-0 max-w-full flex-nowrap items-center gap-1 overflow-hidden`,children:[_.map(([e,n])=>(0,Z.jsx)(`span`,{"data-testid":`conversation-card-tag-chip`,title:Ii(e,n,t),className:Ei,children:(0,Z.jsx)(Ki,{icon:Wi(e,n),keyName:e,value:n,iconTestId:`conversation-card-tag-chip-icon`})},e)),g>0?(0,Z.jsxs)(`button`,{ref:i,type:`button`,"data-testid":`conversation-card-tag-overflow`,"aria-expanded":c,"aria-haspopup":`dialog`,"aria-label":t(U.CONVERSATION$TAGS_OVERFLOW_ARIA,{count:g}),onMouseDown:b,onClick:e=>{e.preventDefault(),e.stopPropagation(),l(e=>!e)},className:H(Ei,`shrink-0 self-center hover:bg-[var(--oh-interactive-hover)] hover:text-[var(--foreground)]`),children:[(0,Z.jsx)(`span`,{className:`inline-flex h-4 w-0 shrink-0`,"aria-hidden":!0}),(0,Z.jsx)(`span`,{className:`leading-4`,children:`+${g}`})]}):null]}),c&&u&&typeof document<`u`&&(0,Ci.createPortal)((0,Z.jsx)(`div`,{ref:a,role:`dialog`,"data-testid":`conversation-card-tag-overflow-popover`,className:H(`z-[9999] min-w-[10rem] max-w-[16rem]`,`rounded-md border border-[var(--oh-border-subtle)]`,`bg-[var(--oh-surface)] p-2 shadow-lg`),style:{position:`fixed`,top:u.top,left:u.left},onMouseDown:b,onClick:e=>{e.preventDefault(),e.stopPropagation()},children:(0,Z.jsx)(`dl`,{className:`m-0 flex flex-col gap-1`,children:y.map(([e,n])=>(0,Z.jsxs)(`div`,{"data-testid":`conversation-card-tag-overflow-row`,className:`grid grid-cols-[minmax(0,auto)_minmax(0,1fr)] gap-x-2 text-[10px] leading-4`,children:[(0,Z.jsxs)(`dt`,{className:`m-0 inline-flex min-w-0 items-center gap-1 whitespace-normal break-words text-[var(--oh-muted)]`,children:[(0,Z.jsx)(Gi,{icon:Wi(e,n)}),(0,Z.jsx)(`span`,{className:`min-w-0 whitespace-normal break-words leading-4`,children:Fi(e,t)})]}),(0,Z.jsx)(`dd`,{className:`m-0 whitespace-normal break-words text-left leading-4 text-[var(--foreground)]`,title:n,children:n})]},e))})}),document.body)]})}function Ji({selectedRepository:e,lastUpdatedAt:t,createdAt:n,executionStatus:r,workspaceWorkingDir:i,showRepositoryMetadata:a=!0,showTimestamp:o=!0,llmModel:s,showAgentChip:c=!1,agentKind:l=null,acpServer:u=null,tags:d=null,showTags:f=!1,isArchived:p=!1}){let{t:m}=v(`openhands`),h=B(r),g=null;if(c)if(l===`acp`){let e=Un(u)??m(U.CONVERSATION$ACP_AGENT_GENERIC),t=Gn(u,s),n=t??e;g={kind:Wn(u),text:n,tooltip:t?`${e} · ${t}`:e}}else s&&(g={kind:`openhands`,text:yr(s)??s,tooltip:s});let _=r===void 0?void 0:`pl-[26px]`,y=f?Bn(d):[];return(0,Z.jsxs)(`div`,{className:H(`flex flex-col gap-0.5 mt-0.5 w-full min-w-0`,h&&`opacity-60`),children:[(0,Z.jsxs)(`div`,{className:H(`flex flex-row items-center gap-2 w-full min-w-0`,a&&_),children:[a&&(e?.selected_repository?(0,Z.jsx)(ji,{selectedRepository:e}):(0,Z.jsx)(Mi,{workspaceWorkingDir:i})),(0,Z.jsx)(`div`,{className:`flex items-center gap-2 shrink-0 ml-auto`,children:o&&(n??t)&&(0,Z.jsx)(`p`,{className:`text-xs text-[var(--oh-muted)] text-right`,children:(0,Z.jsx)(`time`,{children:`${ur(t??n)} ${m(U.CONVERSATION$AGO)}`})})})]}),g?(0,Z.jsx)(`div`,{className:_,children:(0,Z.jsxs)(`span`,{"data-testid":`conversation-card-agent-chip`,className:Ei,title:g.tooltip,children:[(0,Z.jsx)(`span`,{className:`inline-flex h-4 shrink-0 items-center justify-center [&_svg]:block`,"aria-hidden":!0,children:(0,Z.jsx)(br,{kind:g.kind,size:12})}),(0,Z.jsx)(`span`,{className:`truncate leading-4`,children:g.text})]})}):null,p?(0,Z.jsx)(`div`,{className:_,children:(0,Z.jsx)(`span`,{"data-testid":`conversation-card-archived-chip`,className:Ei,children:m(U.COMMON$ARCHIVED)})}):null,y.length>0?(0,Z.jsx)(`div`,{className:_,children:(0,Z.jsx)(qi,{tags:y})}):null]})}function Yi(){let{t:e}=v(`openhands`);return(0,Z.jsxs)(`span`,{"data-testid":`error-badge`,className:`flex items-center gap-1 px-1.5 py-0.5 bg-[var(--oh-status-error)] text-white text-xs font-medium rounded-full`,children:[(0,Z.jsx)(nt,{className:`text-white w-3 h-3`}),(0,Z.jsx)(`span`,{children:e(U.COMMON$ERROR)})]})}function Xi({onClick:e,onDelete:t,onArchive:n,onUnarchive:r,onStop:i,onChangeTitle:a,showOptions:o,title:s,selectedRepository:c,lastUpdatedAt:l,createdAt:u,conversationId:d,executionStatus:f,sandboxStatus:p,contextMenuOpen:m=!1,onContextMenuToggle:h,isActive:g=!1,workspaceWorkingDir:_,showRepositoryMetadata:y=!0,llmModel:b=null,showLlmProfiles:x=!1,agentKind:S=null,acpServer:C=null,tags:w=null,showTags:T=!1,isArchived:E=!1,isPinned:D=!1,onTogglePin:O,alwaysShowPinIcon:k=!1}){let{t:A}=v(`openhands`),{trackDownloadVsCodeButtonClicked:j}=Wt(),[M,N]=X.useState(`view`),{mutateAsync:P}=et(),F=e=>{e!==``&&e!==s&&a?.(e),N(`view`)},I=e=>{e.preventDefault(),e.stopPropagation(),t?.(),h?.(!1)},ee=e=>{e.preventDefault(),e.stopPropagation(),n?.(),h?.(!1)},L=e=>{e.preventDefault(),e.stopPropagation(),r?.(),h?.(!1)},te=e=>{e.preventDefault(),e.stopPropagation(),i?.(),h?.(!1)},R=e=>{e.preventDefault(),e.stopPropagation(),N(`edit`),h?.(!1)},z=async e=>{if(e.preventDefault(),e.stopPropagation(),j(),d)try{let e=await qn.getVSCodeUrl(d);if(e.vscode_url){let t=Qn(e.vscode_url);t&&window.open(t,`_blank`)}}catch{}h?.(!1)},B=async e=>{e.preventDefault(),e.stopPropagation(),d&&await P(d),h?.(!1)},V=e=>{e.preventDefault(),e.stopPropagation(),O?.()},ne=()=>(0,Z.jsx)(`button`,{type:`button`,"data-testid":d?`conversation-pin-toggle-${d}`:`conversation-pin-toggle`,"aria-pressed":D,"aria-label":A(D?U.CONVERSATION_PANEL$UNPIN_CONVERSATION:U.CONVERSATION_PANEL$PIN_CONVERSATION),onClick:V,className:H(`flex shrink-0 cursor-pointer items-center justify-center rounded-md p-1`,`text-[var(--oh-muted)] hover:bg-white/10 hover:text-white`),children:(0,Z.jsx)(mt,{className:H(`h-3.5 w-3.5`,D&&`fill-current`),"aria-hidden":!0})}),re=!!(t||n||r||a||o),ie=re||!!O,W=k&&D&&!!O,ae=y||E||x&&(S===`acp`||!!b)||T&&Bn(w).length>0;return(0,Z.jsxs)(`div`,{"data-testid":`conversation-card`,"data-context-menu-open":m.toString(),"data-active":g?`true`:`false`,onClick:e,className:H(`group relative h-auto w-full cursor-pointer rounded-md py-1 pl-2 pr-1 transition-colors`,!m&&`hover:bg-[var(--oh-surface)]`,(g||m)&&`bg-[var(--oh-surface)]`),children:[(0,Z.jsxs)(`div`,{className:`flex items-center w-full min-w-0`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 flex-1 min-w-0 overflow-hidden`,children:[(0,Z.jsx)(Si,{title:s,titleMode:M,onTitleSave:F,executionStatus:f,sandboxStatus:p}),p===`ERROR`&&(0,Z.jsx)(Yi,{})]}),(0,Z.jsxs)(`div`,{className:H(`relative ml-auto pl-2 flex items-center justify-end shrink-0`,W?`min-w-[3.75rem]`:ie&&hi(m)),children:[!W&&(u??l)&&(0,Z.jsx)(`p`,{className:H(`text-xs text-[var(--oh-muted)] text-right whitespace-nowrap transition-opacity -translate-x-1.5`,ie&&mi(m)),children:(0,Z.jsx)(`time`,{children:ur(l??u)})}),ie?(0,Z.jsxs)(`div`,{className:H(`absolute right-0 top-1/2 flex -translate-y-1/2 items-center gap-0.5 transition-opacity`,W?`pointer-events-auto visible opacity-100`:pi(m)),children:[O?ne():null,W&&(u??l)&&re?(0,Z.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,Z.jsx)(`div`,{className:pi(m),children:(0,Z.jsx)(Ti,{contextMenuOpen:m,onContextMenuToggle:h||(()=>{}),onDelete:t&&I,onArchive:n&&ee,onUnarchive:r&&L,onStop:i&&te,onEdit:a&&R,onDownloadViaVSCode:z,onDownloadConversation:B,executionStatus:f,conversationId:d,showOptions:o})}),(0,Z.jsx)(`p`,{className:H(`pointer-events-none absolute inset-0 items-center justify-end`,`text-xs text-[var(--oh-muted)] whitespace-nowrap -translate-x-1.5`,gi(m)),children:(0,Z.jsx)(`time`,{children:ur(l??u)})})]}):null,!W&&re?(0,Z.jsx)(Ti,{contextMenuOpen:m,onContextMenuToggle:h||(()=>{}),onDelete:t&&I,onArchive:n&&ee,onUnarchive:r&&L,onStop:i&&te,onEdit:a&&R,onDownloadViaVSCode:z,onDownloadConversation:B,executionStatus:f,conversationId:d,showOptions:o}):null]}):null]})]}),ae&&(0,Z.jsx)(Ji,{selectedRepository:c,lastUpdatedAt:l,createdAt:u,executionStatus:f,workspaceWorkingDir:_,showRepositoryMetadata:y,showTimestamp:!1,llmModel:b,showAgentChip:x,agentKind:S,acpServer:C,tags:w,showTags:T,isArchived:E})]})}var Zi={bitbucket:Re,bitbucket_data_center:Re,github:Fe,gitlab:Le};function Qi({label:e,children:t}){return(0,Z.jsxs)(`div`,{className:`flex items-start gap-2 text-xs leading-4`,children:[(0,Z.jsx)(`span`,{className:`w-20 shrink-0 whitespace-normal break-words text-[var(--oh-muted)]`,children:e}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 overflow-visible whitespace-normal break-words text-[var(--oh-foreground)]`,children:t})]})}function $i({icon:e,children:t,testId:n,tagKey:r}){return(0,Z.jsxs)(`span`,{"data-testid":n,"data-tag-key":r,className:`inline-flex min-w-0 max-w-full items-start gap-1.5`,children:[e?(0,Z.jsx)(`span`,{className:`inline-flex h-4 min-w-3 shrink-0 items-center justify-center [&_svg]:block`,children:e}):null,(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 whitespace-normal break-all`,children:t})]})}function ea({title:e,executionStatus:t,sandboxStatus:n,selectedRepository:r,workspaceWorkingDir:i,llmModel:a,agentKind:o=null,acpServer:s=null,createdAt:c,tags:l=null}){let{t:u}=v(`openhands`),d=r?.selected_repository??null,f=r?.selected_branch??null,p=r?.git_provider??null,m=p?Zi[p]:null,h=c?new Date(c).toLocaleString(void 0,{dateStyle:`medium`,timeStyle:`short`}):null,g=Bn(l);return(0,Z.jsxs)(`div`,{"data-testid":`conversation-card-preview`,className:`flex w-[280px] max-w-[min(280px,90vw)] flex-col gap-3 overflow-visible p-3`,children:[(0,Z.jsxs)(`div`,{className:`flex items-start gap-2`,children:[t===void 0?null:(0,Z.jsx)(`span`,{className:`inline-flex h-5 w-2.5 shrink-0 items-center justify-center`,children:(0,Z.jsx)(xi,{executionStatus:t,sandboxStatus:n,showTooltip:!1})}),(0,Z.jsx)(`span`,{className:`break-words text-sm font-medium leading-5 text-white`,children:e})]}),(0,Z.jsxs)(`dl`,{className:`flex flex-col gap-1.5`,children:[d?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(Qi,{label:u(U.CONVERSATION_PANEL$PREVIEW_REPO),children:(0,Z.jsx)($i,{icon:m?(0,Z.jsx)(m,{size:12}):p===`azure_devops`?(0,Z.jsx)(Qe,{className:`h-3 w-3`}):void 0,children:d})}),f?(0,Z.jsx)(Qi,{label:u(U.CONVERSATION_PANEL$PREVIEW_BRANCH),children:(0,Z.jsx)($i,{icon:(0,Z.jsx)(dr,{size:11}),children:f})}):null]}):i?(0,Z.jsx)(Qi,{label:u(U.CONVERSATION_PANEL$PREVIEW_DIRECTORY),children:(0,Z.jsx)($i,{icon:(0,Z.jsx)(J,{size:12}),children:i})}):null,a?(0,Z.jsx)(Qi,{label:u(U.CONVERSATION_PANEL$PREVIEW_MODEL),children:(0,Z.jsx)($i,{testId:`conversation-card-preview-model`,icon:(0,Z.jsx)(br,{kind:o===`acp`?Wn(s):`openhands`,size:12}),children:a})}):null,g.map(([e,t])=>{let n=Wi(e,t);return(0,Z.jsx)(Qi,{label:Fi(e,u),children:(0,Z.jsx)($i,{testId:`conversation-card-preview-tag-row`,tagKey:e,icon:(0,Z.jsx)(n,{"aria-hidden":!0,className:`h-3 w-3`}),children:t})},e)}),h?(0,Z.jsx)(Qi,{label:u(U.CONVERSATION$CREATED),children:h}):null]})]})}function ta({taskStatus:e}){return(0,Z.jsx)(`div`,{className:H(`w-2 h-2 rounded-full flex-shrink-0`,(()=>{switch(e){case`READY`:return`bg-green-500`;case`ERROR`:return`bg-red-500`;case`WORKING`:case`WAITING_FOR_SANDBOX`:case`PREPARING_REPOSITORY`:case`RUNNING_SETUP_SCRIPT`:case`SETTING_UP_GIT_HOOKS`:case`SETTING_UP_SKILLS`:case`STARTING_CONVERSATION`:return`bg-yellow-500 animate-pulse`;default:return`bg-[var(--oh-interactive-selected)]`}})()),"aria-label":`Task status: ${e}`})}function na({taskStatus:e}){let{t}=v(`openhands`);return e===`WORKING`?null:(0,Z.jsx)(`span`,{className:H(`text-xs font-medium px-2 py-0.5 rounded border flex-shrink-0`,(()=>{switch(e){case`READY`:return`bg-green-500/10 text-green-400 border-green-500/20`;case`ERROR`:return`bg-red-500/10 text-red-400 border-red-500/20`;default:return`bg-yellow-500/10 text-yellow-400 border-yellow-500/20`}})()),children:t(ne(e))})}function ra({title:e,taskStatus:t}){return(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 flex-1 min-w-0 overflow-hidden mr-2`,children:[(0,Z.jsx)(`div`,{className:`flex items-center`,children:(0,Z.jsx)(ta,{taskStatus:t})}),(0,Z.jsx)(`h3`,{className:`text-sm font-medium text-content-2 truncate flex-1`,children:e}),(0,Z.jsx)(na,{taskStatus:t})]})}function ia({selectedRepository:e,createdAt:t,detail:n}){let{t:r}=v(`openhands`);return(0,Z.jsxs)(`div`,{className:H(`flex flex-col gap-1 mt-1`),children:[(0,Z.jsxs)(`div`,{className:`flex flex-row justify-between items-center`,children:[e?(0,Z.jsx)(ji,{selectedRepository:e}):(0,Z.jsx)(Mi,{}),t&&(0,Z.jsx)(`p`,{className:`text-xs text-[var(--oh-muted)] flex-1 text-right`,children:(0,Z.jsx)(`time`,{children:`${ur(t)} ${r(U.CONVERSATION$AGO)}`})})]}),n&&(0,Z.jsx)(`div`,{className:`text-xs text-[var(--oh-text-subtle)] truncate`,children:n})]})}function aa({task:e,onClick:t}){let{t:n}=v(`openhands`),r=e.request.title||e.detail||n(U.CONVERSATION$STARTING_CONVERSATION),i=e.request.selected_repository?{selected_repository:e.request.selected_repository,selected_branch:e.request.selected_branch||null,git_provider:e.request.git_provider||null}:null;return(0,Z.jsxs)(`div`,{"data-testid":`start-task-card`,onClick:t,className:H(`relative h-auto w-full p-3.5 border-b border-[var(--oh-border)] cursor-pointer`,`hover:bg-tertiary`),children:[(0,Z.jsx)(`div`,{className:`flex items-center justify-between w-full`,children:(0,Z.jsx)(ra,{title:r,taskStatus:e.status})}),(0,Z.jsx)(ia,{selectedRepository:i,createdAt:e.created_at,detail:e.detail})]})}function oa({compact:e=!1}){return e?(0,Z.jsx)(`div`,{"data-testid":`conversation-card-skeleton-compact`,className:`skeleton-stagger flex flex-col items-center gap-1.5 py-1`,"aria-hidden":!0,children:[0,1,2].map(e=>(0,Z.jsx)(`div`,{className:`h-1.5 w-7 shrink-0 skeleton`},`conversation-skeleton-compact-${e}`))}):(0,Z.jsx)(`div`,{"data-testid":`conversation-card-skeleton`,className:`skeleton-stagger flex flex-col gap-1.5 py-0.5`,"aria-hidden":!0,children:[0,1,2].map(e=>(0,Z.jsx)(`div`,{className:`h-6 min-h-6 w-full skeleton`},`conversation-skeleton-row-${e}`))})}function sa({conversationId:e,title:t,selectedRepository:n,executionStatus:r,sandboxStatus:a,lastUpdatedAt:o,createdAt:s,workspaceWorkingDir:c,isActive:l=!1,onClose:u,showRepositoryMetadata:d=!0,llmModel:f=null,showLlmProfiles:p=!1,agentKind:m=null,acpServer:h=null,tags:g=null,showTags:_=!1}){let{t:y}=v(`openhands`),b=ii();return(0,Z.jsx)(i,{content:(0,Z.jsxs)(`div`,{className:`w-[260px] p-3`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 mb-1`,children:[(0,Z.jsx)(xi,{executionStatus:r,sandboxStatus:a,showTooltip:!1}),(0,Z.jsx)(`span`,{className:`text-sm font-medium text-white truncate`,title:t,children:t||y(U.CONVERSATION$UNTITLED)})]}),(0,Z.jsx)(Ji,{selectedRepository:n,lastUpdatedAt:o,createdAt:s,executionStatus:r,workspaceWorkingDir:c,showRepositoryMetadata:d,llmModel:f,showAgentChip:p,agentKind:m,acpServer:h,tags:g,showTags:_})]}),placement:`right`,closeDelay:100,className:`bg-[var(--oh-surface)] text-white border border-[var(--oh-border-subtle)] shadow-xl p-0`,disableAnimation:!1,children:(0,Z.jsx)(sn,{to:b(`/conversations/${e}`),onClick:u,"data-testid":`compact-conversation-row`,"data-conversation-id":e,"aria-label":t||e,className:({isActive:e})=>H(`flex items-center justify-center w-10 h-9 mx-auto rounded-md`,`transition-colors cursor-pointer`,e||l?`bg-tertiary`:`hover:bg-[var(--oh-surface-raised)]`),children:(0,Z.jsx)(xi,{executionStatus:r,sandboxStatus:a,showTooltip:!1})})})}var ca={showOlderConversations:!0,showArchivedConversations:!1,showRepoBranchMetadata:!1,showLlmProfiles:!1,showTagsMetadata:!1,showHoverMetadata:!0,organizeMode:`chronological`,conversationSort:`updated`,threadScope:`all`,automationFilterMode:`all`,selectedAutomationNames:[],groupFolderOrder:[]},Q=Fn()(Pn(e=>({...ca,setShowOlderConversations:t=>e(()=>({showOlderConversations:t})),toggleShowOlderConversations:()=>e(e=>({showOlderConversations:!e.showOlderConversations})),setShowArchivedConversations:t=>e(()=>({showArchivedConversations:t})),toggleShowArchivedConversations:()=>e(e=>({showArchivedConversations:!e.showArchivedConversations})),setShowRepoBranchMetadata:t=>e(()=>({showRepoBranchMetadata:t})),toggleShowRepoBranchMetadata:()=>e(e=>({showRepoBranchMetadata:!e.showRepoBranchMetadata})),setShowLlmProfiles:t=>e(()=>({showLlmProfiles:t})),toggleShowLlmProfiles:()=>e(e=>({showLlmProfiles:!e.showLlmProfiles})),setShowTagsMetadata:t=>e(()=>({showTagsMetadata:t})),toggleShowTagsMetadata:()=>e(e=>({showTagsMetadata:!e.showTagsMetadata})),setShowHoverMetadata:t=>e(()=>({showHoverMetadata:t})),toggleShowHoverMetadata:()=>e(e=>({showHoverMetadata:!e.showHoverMetadata})),setOrganizeMode:t=>e(()=>({organizeMode:t})),setConversationSort:t=>e(()=>({conversationSort:t})),setThreadScope:t=>e(()=>({threadScope:t})),setAutomationFilterMode:t=>e(()=>({automationFilterMode:t})),toggleAutomationName:t=>e(e=>({selectedAutomationNames:e.selectedAutomationNames.includes(t)?e.selectedAutomationNames.filter(e=>e!==t):[...e.selectedAutomationNames,t]})),setGroupFolderOrder:t=>e(()=>({groupFolderOrder:[...t]}))}),{name:`conversation-panel-preferences`,storage:In(()=>localStorage),partialize:e=>({showOlderConversations:e.showOlderConversations,showArchivedConversations:e.showArchivedConversations,showRepoBranchMetadata:e.showRepoBranchMetadata,showLlmProfiles:e.showLlmProfiles,showTagsMetadata:e.showTagsMetadata,showHoverMetadata:e.showHoverMetadata,organizeMode:e.organizeMode,conversationSort:e.conversationSort,threadScope:e.threadScope,automationFilterMode:e.automationFilterMode,selectedAutomationNames:e.selectedAutomationNames,groupFolderOrder:e.groupFolderOrder})}));function la(e,t,n){if(!t)return[...e];let r=e.filter(e=>t.has(e.id));if(n!=null&&!r.some(e=>e.id===n)){let t=e.find(e=>e.id===n);t&&r.push(t)}return r}function ua(e,t){let n=t.limit??5,r=la(e,t.discoveryConversationIds,t.activeConversationId),i;if(r.length<=n)i=r;else{let e=t.activeConversationId==null?-1:r.findIndex(e=>e.id===t.activeConversationId);i=e>=n?[...r.slice(0,n-1),r[e]]:r.slice(0,n)}let a=i.length<e.length;return t.expanded?{visibleConversations:[...e],isPreviewTruncated:a,isShowingAll:!0}:{visibleConversations:i,isPreviewTruncated:a,isShowingAll:!a}}function da(e,t){let n=new Map(t.map(e=>[e.id,e]));return e.map(e=>n.get(e)).filter(e=>e!=null)}function fa(e,t){if(t.length===0)return[...e];let n=new Set(t);return e.filter(e=>!n.has(e.id))}var pa=`__unnamed__`;function ma(e){if(e.trigger===`automation`)return!0;let t=e.tags;return t?Vn.some(e=>!!t[e]):!1}function ha(e){return e.tags?.automationname?.trim()||`__unnamed__`}function ga(e){let t=new Set,n=!1;for(let r of e){if(!ma(r))continue;let e=ha(r);e===`__unnamed__`?n=!0:t.add(e)}let r=[...t].sort((e,t)=>e.localeCompare(t));return n&&r.push(pa),r}function _a(e,t,n,r){if(t===`all`)return[...e];if(t===`hide-automations`)return e.filter(e=>!ma(e));let i=new Set(r),a=n.filter(e=>i.has(e)),o=a.length>0?new Set(a):null;return e.filter(e=>ma(e)?o===null||o.has(ha(e)):!1)}function va(e,t,n){if(t===`local`)return e===`__none_workspace`?{}:e.startsWith(`ws:`)?{workingDir:e.slice(3)}:{};if(e===`__none_repo`)return{};if(e.startsWith(`repo:`)){let t=e.slice(5),r=n[0];return{repository:{name:t,gitProvider:r?.git_provider??`github`,branch:r?.selected_branch??`main`}}}return{}}function ya(e){if(!e)return 0;let t=Date.parse(e);return Number.isFinite(t)?t:0}function ba(e,t){let n=t===`created`?`created_at`:`updated_at`;return[...e].sort((e,t)=>ya(t[n])-ya(e[n]))}function xa(e){let t=e.selected_workspace?.trim().replace(/\/+$/,``);if(!t)return{id:`__none_workspace`,label:``};let n=t.split(`/`).filter(Boolean).pop()??t;return{id:`ws:${t}`,label:n}}function Sa(e){let t=e.selected_repository?.trim().replace(/\/+$/,``);if(!t)return{id:`__none_repo`,label:``};let n=t.split(`/`).filter(Boolean),r=n.length?(n[n.length-1]??t).replace(/\.git$/,``):t.replace(/\.git$/,``);return{id:`repo:${t}`,label:r}}function Ca(e,t){return t===`local`?xa(e):Sa(e)}function wa(e,t,n,r){let i=e.map(e=>({conversationId:e.id,groupId:Ca(e,n).id,page:t.get(e.id)??0})),a=new Map;for(let{groupId:e,page:t}of i){let n=a.get(e);(n===void 0||t<n)&&a.set(e,t)}let o=new Set;for(let{conversationId:e,groupId:t,page:n}of i)n===a.get(t)&&o.add(e);let s=r?.forceIncludeConversationId;return s!=null&&e.some(e=>e.id===s)&&o.add(s),o}function Ta(e,t,n,r){let i=new Map;for(let n of e){let{id:e,label:a}=Ca(n,t),o=e===`__none_workspace`?r.emptyWorkspace:e===`__none_repo`?r.emptyRepository:a,s=i.get(e);s?s.conversations.push(n):i.set(e,{label:o,conversations:[n]})}let a=[...i.entries()].map(([e,r])=>{let i=ba(r.conversations,n);return{id:e,label:r.label,conversations:i,launch:va(e,t,i)}}),o=e=>e.conversations.reduce((e,t)=>Math.max(e,ya(n===`created`?t.created_at:t.updated_at)),0);return a.sort((e,t)=>o(t)-o(e)),a}function Ea(e,t){if(t.length===0)return[...e];let n=new Map(e.map(e=>[e.id,e])),r=[],i=new Set;for(let e of t){let t=n.get(e);t&&(r.push(t),i.add(e))}for(let t of e)i.has(t.id)||r.push(t);return r}function Da(e,t,n,r,i=`after`){if(n===r)return[...e];let a=Ea(t.map(e=>({id:e})),e).map(e=>e.id),o=a.indexOf(n),s=a.indexOf(r);if(o<0||s<0)return[...e];let c=[...a];c.splice(o,1);let l=c.indexOf(r),u=i===`before`?l:l+1;return c.splice(u,0,n),c}var Oa=`px-2 pb-1 pt-1`,ka=`text-[11px] font-semibold uppercase tracking-wide text-[var(--oh-muted)]`;function Aa({children:e,suffix:t}){return t==null?(0,Z.jsx)(`div`,{role:`presentation`,className:H(Oa,ka),children:e}):(0,Z.jsxs)(`div`,{role:`presentation`,className:H(`flex items-baseline justify-between gap-2`,Oa),children:[(0,Z.jsx)(`span`,{className:H(`min-w-0 truncate text-left`,ka),children:e}),t]})}function $({icon:e,label:t,selected:n,onClick:r,testId:i,disabled:a}){return(0,Z.jsxs)(`button`,{type:`button`,role:n===void 0?`menuitem`:`menuitemradio`,"aria-checked":n===void 0?void 0:!!n,"data-testid":i,disabled:a,onClick:r,className:H(`group`,En,`text-[var(--oh-foreground)] disabled:opacity-50`),children:[(0,Z.jsx)(e,{className:H(`h-3.5 w-3.5`,wn),"aria-hidden":!0}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:t}),n?(0,Z.jsx)(Me,{className:`ml-auto h-3.5 w-3.5 shrink-0 text-white`,"aria-hidden":!0}):null]})}var ja=e=>e.length>0?e.charAt(0).toUpperCase()+e.slice(1):e;function Ma({filterMenuOpen:e,setFilterMenuOpen:t,menuRef:n,backendKind:r,organizeMode:i,setOrganizeMode:a,conversationSort:o,setConversationSort:s,threadScope:c,setThreadScope:l,automationFilterMode:u,setAutomationFilterMode:d,selectedAutomationNames:f,onToggleAutomationName:p,automationNameFacets:m,showOlderConversations:h,showArchivedConversations:g,toggleShowArchivedConversations:_,toggleShowOlderConversations:y,showRepoBranchMetadata:b,toggleShowRepoBranchMetadata:x,showLlmProfiles:S,toggleShowLlmProfiles:C,showTagsMetadata:w,toggleShowTagsMetadata:T,showHoverMetadata:E,toggleShowHoverMetadata:D,totalConversationsCount:O,onRequestDeleteAll:k}){let{t:A}=v(`openhands`),j=A(r===`local`?U.CONVERSATION_PANEL$BY_WORKSPACE:U.CONVERSATION_PANEL$BY_REPOSITORY),M=X.useRef(null),N=X.useRef(null),P=X.useRef(e);return X.useEffect(()=>{e?(N.current?.querySelector(`[role="menuitem"], [role="menuitemradio"]`))?.focus():P.current&&M.current?.focus(),P.current=e},[e]),(0,Z.jsxs)(`div`,{ref:n,className:`relative shrink-0 pr-0.5`,children:[(0,Z.jsxs)(`button`,{ref:M,type:`button`,"data-testid":`older-conversations-filter-toggle`,"aria-label":A(U.CONVERSATION_PANEL$FILTER_LABEL),"aria-haspopup":`menu`,"aria-expanded":e,onClick:()=>t(!e),className:H(`relative inline-flex h-7 w-7 items-center justify-center rounded-md text-[var(--oh-muted)] hover:text-white hover:bg-[var(--oh-surface-raised)]`,Dn),children:[(0,Z.jsx)(bt,{className:`lucide lucide-list-filter shrink-0`,width:14,height:14,strokeWidth:2,"aria-hidden":!0}),u===`all`?null:(0,Z.jsx)(`span`,{"aria-hidden":!0,"data-testid":`automation-filter-active-indicator`,className:`absolute right-0.5 top-0.5 h-1.5 w-1.5 rounded-full bg-[var(--oh-accent)]`})]}),e?(0,Z.jsxs)(`div`,{ref:N,role:`menu`,"aria-orientation":`vertical`,"aria-label":A(U.CONVERSATION_PANEL$FILTER_LABEL),tabIndex:-1,"data-testid":`older-conversations-filter-menu`,onKeyDown:e=>{if(e.key===`Escape`){e.preventDefault(),t(!1);return}if(e.key!==`ArrowDown`&&e.key!==`ArrowUp`)return;let n=N.current;if(!n)return;let r=Array.from(n.querySelectorAll(`[role="menuitem"], [role="menuitemradio"]`)).filter(e=>!e.disabled);if(r.length===0)return;let i=r.indexOf(document.activeElement),a=e.key===`ArrowDown`?1:-1,o=((i===-1?0:i)+a+r.length)%r.length;e.preventDefault(),r[o]?.focus()},className:H(`absolute right-0 top-full z-50 mt-0 w-64 rounded-md border border-[var(--oh-border-subtle)] bg-tertiary px-1 py-1 text-[var(--oh-foreground)] shadow-lg`,Cn,xn),children:[(0,Z.jsx)(Aa,{children:A(U.CONVERSATION_PANEL$ORGANIZE)}),(0,Z.jsx)($,{icon:J,label:j,selected:i===`grouped`,onClick:()=>{a(`grouped`),t(!1)}}),(0,Z.jsx)($,{icon:ce,label:A(U.CONVERSATION_PANEL$CHRONOLOGICAL),selected:i===`chronological`,onClick:()=>{a(`chronological`),t(!1)}}),(0,Z.jsx)(q,{}),(0,Z.jsx)(Aa,{children:A(U.CONVERSATION_PANEL$SORT_BY)}),(0,Z.jsx)($,{icon:W,label:A(U.CONVERSATION_PANEL$SORT_CREATED),selected:o===`created`,onClick:()=>{s(`created`),t(!1)}}),(0,Z.jsx)($,{icon:Oe,label:A(U.CONVERSATION_PANEL$SORT_UPDATED),selected:o===`updated`,onClick:()=>{s(`updated`),t(!1)}}),(0,Z.jsx)(q,{}),(0,Z.jsx)(Aa,{children:A(U.CONVERSATION_PANEL$SHOW)}),(0,Z.jsx)($,{icon:K,label:A(U.CONVERSATION_PANEL$ALL_THREADS),selected:c===`all`,onClick:()=>{l(`all`),t(!1)}}),(0,Z.jsx)($,{icon:Se,label:A(U.CONVERSATION_PANEL$RELEVANT_THREADS),selected:c===`relevant`,onClick:()=>{l(`relevant`),t(!1)}}),(0,Z.jsx)($,{icon:re,label:A(U.CONVERSATION_PANEL$SHOW_ARCHIVED),selected:g,testId:`toggle-show-archived`,onClick:()=>{_(),t(!1)}}),(0,Z.jsx)(q,{}),(0,Z.jsx)(Aa,{children:A(U.CONVERSATION_PANEL$AUTOMATIONS)}),(0,Z.jsx)($,{icon:K,label:A(U.CONVERSATION_PANEL$AUTOMATIONS_ALL),selected:u===`all`,testId:`automation-filter-all`,onClick:()=>{d(`all`),t(!1)}}),(0,Z.jsx)($,{icon:ke,label:A(U.CONVERSATION_PANEL$AUTOMATIONS_HIDE),selected:u===`hide-automations`,testId:`automation-filter-hide`,onClick:()=>{d(`hide-automations`),t(!1)}}),(0,Z.jsx)($,{icon:xt,label:A(U.CONVERSATION_PANEL$AUTOMATIONS_ONLY),selected:u===`only-automations`,testId:`automation-filter-only`,onClick:()=>{d(`only-automations`),t(!1)}}),u===`only-automations`?m.map(e=>(0,Z.jsx)($,{icon:ue,label:e===`__unnamed__`?A(U.CONVERSATION_PANEL$AUTOMATION_UNNAMED):e,selected:f.includes(e),testId:`automation-name-filter-${e}`,onClick:()=>p(e)},e)):null,(0,Z.jsx)(q,{}),(0,Z.jsx)(Aa,{children:A(U.CONVERSATION_PANEL$METADATA)}),(0,Z.jsx)($,{icon:dt,label:A(U.CONVERSATION_PANEL$REPO_BRANCH),selected:b,testId:`toggle-repo-branch-metadata`,onClick:()=>{x(),t(!1)}}),(0,Z.jsx)($,{icon:je,label:A(U.CONVERSATION_PANEL$LLM_MODEL),selected:S,testId:`toggle-llm-profiles`,onClick:()=>{C(),t(!1)}}),(0,Z.jsx)($,{icon:ue,label:A(U.CONVERSATION_PANEL$TAGS),selected:w,testId:`toggle-tags-metadata`,onClick:()=>{T(),t(!1)}}),(0,Z.jsx)($,{icon:jt,label:A(U.CONVERSATION_PANEL$HOVER_METADATA),selected:E,testId:`toggle-hover-metadata`,onClick:()=>{D(),t(!1)}}),(0,Z.jsx)(q,{}),(0,Z.jsx)(Aa,{suffix:(0,Z.jsx)(`span`,{className:`shrink-0 text-right text-[10px] font-medium normal-case tracking-normal text-[var(--oh-muted)]/70`,children:A(U.CONVERSATION_PANEL$OLDER_OVER_ONE_HOUR)}),children:A(U.CONVERSATION_PANEL$OLDER_SECTION)}),(0,Z.jsx)($,{testId:`toggle-older-conversations`,icon:h?ke:de,label:ja(A(h?U.CONVERSATION$HIDE:U.CONVERSATION$SHOW_ALL)),onClick:()=>{y(),t(!1)}}),(0,Z.jsx)(q,{}),(0,Z.jsx)($,{testId:`delete-all-conversations`,icon:It,label:ja(A(U.CONVERSATION$DELETE_ALL)),disabled:O===0,onClick:()=>{O!==0&&(k(),t(!1))}})]}):null]})}var Na=H(`z-50 flex flex-col rounded-md border border-[var(--oh-border-subtle)] bg-tertiary px-1 py-1 text-white shadow-lg`,bn);function Pa(e,t){let{open:n,enabled:r,targetWidth:i=256}=t,[a,o]=X.useState(null),s=X.useCallback(()=>{let t=e.current;if(!t)return;let n=t.getBoundingClientRect(),r=Math.min(i,window.innerWidth-16),a=n.right-r;a<8&&(a=8),a+r>window.innerWidth-8&&(a=Math.max(8,window.innerWidth-8-r)),o({top:n.bottom+4,left:a,width:r})},[e,i]);return X.useLayoutEffect(()=>{if(!n||!r){o(null);return}return s(),window.addEventListener(`resize`,s),window.addEventListener(`scroll`,s,!0),()=>{window.removeEventListener(`resize`,s),window.removeEventListener(`scroll`,s,!0)}},[n,r,s]),a}function Fa({trigger:e,className:t,popoverClassName:n,popoverTestId:r=`new-conversation-popover`,useFixedPlacement:i=!1}){let{t:a}=v(`openhands`),{navigate:o}=rn(),[s,c]=X.useState(!1),l=X.useRef(null),u=X.useRef(null),d=Pa(u,{open:s,enabled:i}),{data:f,error:p}=gt(),m=f?.workspaceParents??[],{mutate:h}=ut(),{mutate:g}=vt(),{mutate:_}=st(),{mutate:y}=ct(),{workspaces:b}=pt(),S=ot(p,a),[C,w]=X.useState(!1),[T,E]=X.useState(!1),{mutate:D,isPending:O}=lr(),k=x(),A=O||k;X.useEffect(()=>{if(!s||C||T)return;let e=e=>{l.current&&!l.current.contains(e.target)&&c(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[s,C,T]),X.useEffect(()=>{if(!s||C||T)return;let e=e=>{e.key===`Escape`&&c(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[s,C,T]);let j=e=>{A||D({workingDir:e,entryPoint:`sidebar_local_menu`},{onSuccess:e=>{c(!1),o(`/conversations/${e.conversation_id}`)}})},M=En,N=X.useCallback(e=>{e.preventDefault(),e.stopPropagation()},[]),P=X.useCallback(()=>{c(e=>!e)},[]),F=s&&(!i||d!==null),I=!!S,ee=i&&d?{position:`fixed`,top:d.top,left:d.left,width:d.width}:void 0,L=(0,Z.jsx)(`button`,{type:`button`,"data-testid":`add-workspaces-button`,disabled:I,onMouseDown:N,onClick:e=>{e.preventDefault(),e.stopPropagation(),!I&&w(!0)},className:M,children:a(U.HOME$ADD_WORKSPACES)}),te=S?(0,Z.jsx)(yn,{content:S,placement:`top`,children:(0,Z.jsx)(`span`,{className:`block`,children:L})}):L;return(0,Z.jsxs)(`div`,{className:H(!i&&`relative`,t),ref:l,children:[(0,Z.jsx)(`span`,{ref:u,className:`inline-flex`,children:e({onClick:P,"aria-expanded":s,"aria-haspopup":`menu`,disabled:A})}),F&&(0,Z.jsxs)(`div`,{"data-testid":r,className:H(Na,!i&&H(`absolute top-full mt-0`,n)),style:ee,children:[(0,Z.jsxs)(`ul`,{className:H(`max-h-[40vh] overflow-y-auto sm:max-h-[280px]`,Cn),children:[(0,Z.jsx)(`li`,{children:(0,Z.jsx)(`button`,{type:`button`,disabled:A,"data-testid":`launch-no-workspace`,onClick:()=>j(),className:M,children:(0,Z.jsx)(`span`,{className:`text-[var(--oh-muted)]`,children:a(U.HOME$NO_WORKSPACE_OPTION)})})}),b.map(e=>(0,Z.jsx)(`li`,{children:(0,Z.jsxs)(`button`,{type:`button`,disabled:A,"data-testid":`launch-workspace`,"data-workspace-path":e.path,onClick:()=>j(e.path),className:M,children:[(0,Z.jsx)(`span`,{className:On,"aria-hidden":!0,children:(0,Z.jsx)(Sr,{width:14,height:14})}),(0,Z.jsx)(`span`,{className:`truncate`,children:e.name})]})},e.id))]}),(0,Z.jsxs)(`div`,{className:H(`flex flex-col`,Cn),"data-testid":`new-conversation-menu-footer`,children:[(0,Z.jsx)(at,{inset:`menu`,testId:`new-conversation-menu-footer-divider`}),te,(b.length>0||m.length>0)&&(0,Z.jsx)(`button`,{type:`button`,"data-testid":`manage-workspaces-button`,onMouseDown:N,onClick:e=>{e.preventDefault(),e.stopPropagation(),E(!0)},className:M,children:a(U.HOME$MANAGE_WORKSPACES)})]})]}),(0,Z.jsx)(lt,{isOpen:C,onClose:()=>w(!1),onAdd:e=>h(e),onAddParent:e=>_(e)}),(0,Z.jsx)(ht,{isOpen:T,workspaces:b,workspaceParents:m,onClose:()=>E(!1),onRemove:e=>g(e),onRemoveParent:e=>y(e)})]})}function Ia({repo:e,disabled:t,onSelect:n,itemClass:r}){return(0,Z.jsx)(`li`,{children:(0,Z.jsxs)(`button`,{type:`button`,disabled:t,"data-testid":`launch-repository`,"data-repo-name":e.full_name,onClick:()=>n(e),className:r,children:[(0,Z.jsx)(`span`,{className:On,"aria-hidden":!0,children:(0,Z.jsx)(Sr,{width:14,height:14})}),(0,Z.jsx)(`span`,{className:`truncate`,children:e.full_name})]})})}function La({trigger:e,className:t,popoverClassName:n,popoverTestId:r=`new-conversation-popover`,useFixedPlacement:i=!1}){let{t:a}=v(`openhands`),{navigate:o}=rn(),{providers:s}=Er(),{lastSelectedProvider:c,setLastSelectedProvider:l}=Dr(),[u,d]=X.useState(!1),f=X.useRef(null),p=X.useRef(null),m=Pa(p,{open:u,enabled:i}),[h,g]=X.useState(c??null),[_,y]=X.useState(``),b=wr(_,300);X.useEffect(()=>{if(s.length===0){h!==null&&g(null);return}h&&s.includes(h)||g(c&&s.includes(c)?c:s[0])},[s,h,c]);let{data:S,isLoading:C,isError:w,hasNextPage:T,isFetchingNextPage:E,fetchNextPage:D}=Cr({provider:h}),{data:O,isLoading:k}=Tr(b,h),A=X.useMemo(()=>S?.pages.flatMap(e=>e.items)??[],[S]),j=b?O??[]:A,{mutate:M,isPending:N}=lr(),P=x(),F=N||P;X.useEffect(()=>{if(!u)return;let e=e=>{f.current&&!f.current.contains(e.target)&&d(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[u]),X.useEffect(()=>{if(!u)return;let e=e=>{e.key===`Escape`&&d(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[u]);let I=e=>{F||M({repository:{name:e.full_name,gitProvider:e.git_provider,branch:e.main_branch??`main`},entryPoint:`sidebar_cloud_menu`},{onSuccess:e=>{d(!1),o(`/conversations/${e.conversation_id}`)}})},ee=e=>{g(e),l(e),y(``)},L=En;X.useEffect(()=>{u&&(b||!T||E||C||j.length===0||j.length>=10||D())},[u,b,T,E,C,j.length,D]);let te=b?k:C,R=!b&&T&&j.length>0,z=X.useCallback(()=>{d(e=>!e)},[]),B=u&&(!i||m!==null),V=i&&m?{position:`fixed`,top:m.top,left:m.left,width:m.width}:void 0;return(0,Z.jsxs)(`div`,{className:H(!i&&`relative`,t),ref:f,children:[(0,Z.jsx)(`span`,{ref:p,className:`inline-flex`,children:e({onClick:z,"aria-expanded":u,"aria-haspopup":`menu`,disabled:F})}),B&&(0,Z.jsxs)(`div`,{"data-testid":r,className:H(Na,!i&&H(`absolute top-full mt-0`,n)),style:V,children:[s.length>1&&(0,Z.jsx)(`div`,{className:`flex items-center gap-1 px-1 py-1`,"data-testid":`cloud-provider-tabs`,children:s.map(e=>{let t=e===h;return(0,Z.jsxs)(`button`,{type:`button`,"data-testid":`cloud-provider-tab-${e}`,onClick:()=>ee(e),className:H(`flex items-center gap-1 rounded border px-2 py-1 text-xs`,`transition-none`,t?`border-[var(--oh-border-subtle)] bg-[var(--oh-interactive-hover)] text-white`:`border-transparent text-[var(--oh-text-secondary)] hover:text-white`),children:[(0,Z.jsx)(it,{gitProvider:e}),(0,Z.jsx)(`span`,{className:`capitalize`,children:e})]},e)})}),(0,Z.jsx)(`div`,{className:`px-2`,children:(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(Or,{width:16,height:16,"aria-hidden":!0,className:`pointer-events-none absolute left-0 top-1/2 -translate-y-1/2 text-[var(--oh-muted)]`}),(0,Z.jsx)(`input`,{type:`text`,"data-testid":`cloud-repo-search-input`,value:_,onChange:e=>y(e.target.value),placeholder:a(U.COMMON$SEARCH_REPOSITORIES),disabled:!h,className:H(`w-full border-0 bg-transparent py-1.5 pl-6 pr-0 text-sm text-white`,`outline-none placeholder:text-[var(--oh-muted)]`,`focus:outline-none focus:ring-0`,`disabled:cursor-not-allowed disabled:opacity-60`)})]})}),(0,Z.jsx)(at,{inset:`menu`}),(0,Z.jsxs)(`ul`,{className:H(`max-h-[40vh] overflow-y-auto custom-scrollbar-always sm:max-h-[280px]`,Cn),children:[te&&j.length===0&&(0,Z.jsx)(`li`,{className:`px-2 py-2 text-sm text-[var(--oh-muted)] italic`,"data-testid":`cloud-repo-loading`,children:a(U.HOME$LOADING_REPOSITORIES)}),w&&(0,Z.jsx)(`li`,{className:`px-2 py-2 text-sm text-[#F87171]`,"data-testid":`cloud-repo-error`,children:a(U.HOME$FAILED_TO_LOAD_REPOSITORIES)}),!te&&!w&&j.length===0&&!!h&&(0,Z.jsx)(`li`,{className:`px-2 py-2 text-sm text-[var(--oh-muted)] italic`,"data-testid":`cloud-repo-empty`,children:a(U.GITHUB$NO_RESULTS)}),j.map(e=>(0,Z.jsx)(Ia,{repo:e,disabled:F,onSelect:I,itemClass:L},`${e.git_provider}:${e.id}`)),R&&(0,Z.jsx)(`li`,{children:(0,Z.jsx)(`button`,{type:`button`,"data-testid":`cloud-repo-load-more`,disabled:E,onClick:()=>D(),className:L,children:(0,Z.jsx)(`span`,{className:`text-[var(--oh-text-secondary)]`,children:a(E?U.HOME$LOADING_MORE_REPOSITORIES:U.CONVERSATION$LOAD_MORE)})})})]})]})]})}var Ra=H(`inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md`,`text-[var(--oh-muted)] transition-colors`,`hover:bg-[var(--oh-surface-raised)] hover:text-white`,`focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--oh-border)]`,`disabled:cursor-not-allowed disabled:opacity-50`);function za({backendKind:e}){let{t}=v(`openhands`),n=t(U.CONVERSATION_PANEL$NEW_THREAD_FOLDER_ARIA),r=(0,Z.jsx)(he,{className:`h-4 w-4 shrink-0`,"aria-hidden":!0,strokeWidth:2});return e===`local`?(0,Z.jsx)(Fa,{useFixedPlacement:!0,popoverTestId:`conversation-panel-new-thread-popover`,popoverClassName:``,trigger:({onClick:e,"aria-expanded":t,disabled:i,"aria-haspopup":a})=>(0,Z.jsx)(`button`,{type:`button`,className:Ra,"aria-label":n,"aria-expanded":t,"aria-haspopup":a,disabled:i,"data-testid":`conversation-panel-new-thread-picker`,onClick:e,children:r})}):(0,Z.jsx)(La,{useFixedPlacement:!0,popoverTestId:`conversation-panel-new-thread-popover`,popoverClassName:``,trigger:({onClick:e,"aria-expanded":t,disabled:i,"aria-haspopup":a})=>(0,Z.jsx)(`button`,{type:`button`,className:Ra,"aria-label":n,"aria-expanded":t,"aria-haspopup":a,disabled:i,"data-testid":`conversation-panel-new-thread-picker`,onClick:e,children:r})})}function Ba({group:e,expanded:t,previewExpanded:n,isDragging:r,dropIndicatorPosition:i,animateLayout:a,isCreatingConversationFlow:o,activeConversationId:s,discoveryConversationIds:c,onToggleExpanded:l,onDragStart:u,onDragEnd:d,onDragOver:f,onDragLeave:p,onDrop:m,onTogglePreviewExpanded:h,onLaunchFromGroup:g,renderConversationCard:_}){let{t:y}=v(`openhands`),b=(0,X.useRef)(null),x=`thread-folder-${e.id.replace(/[^a-zA-Z0-9_-]/g,`-`)}`,S=e.id.replace(/[^a-zA-Z0-9_-]/g,`-`),{visibleConversations:C,isPreviewTruncated:w,isShowingAll:T}=ua(e.conversations,{expanded:n,activeConversationId:s,discoveryConversationIds:c??void 0});return(0,Z.jsxs)(Pe.section,{ref:b,layout:a?`position`:!1,transition:{type:`spring`,stiffness:600,damping:45},"aria-labelledby":x,"data-testid":`thread-folder-${S}`,onDragOver:f,onDragLeave:p,onDrop:m,className:`relative rounded-md`,children:[i?(0,Z.jsx)(`div`,{"aria-hidden":!0,"data-testid":`thread-folder-drop-indicator-${S}`,className:H(`pointer-events-none absolute inset-x-0 z-10 h-0.5 rounded-full bg-[var(--oh-accent)]`,i===`before`?`-top-0.5`:`-bottom-0.5`)}):null,(0,Z.jsxs)(`div`,{className:H(r&&`opacity-0`),children:[(0,Z.jsxs)(`div`,{className:H(`flex h-8 w-full min-w-0 items-center gap-0.5 rounded-md pl-2 pr-1 text-sm font-normal`,`text-[var(--oh-muted)] transition-colors hover:bg-[var(--oh-surface-raised)] hover:text-white`),children:[(0,Z.jsxs)(`button`,{type:`button`,draggable:!0,id:x,"aria-expanded":t,"aria-controls":`thread-folder-content-${S}`,"data-testid":`thread-folder-drag-${S}`,"aria-label":y(t?U.CONVERSATION_PANEL$COLLAPSE_FOLDER:U.CONVERSATION_PANEL$EXPAND_FOLDER,{label:e.label}),onClick:l,onDragStart:t=>{t.stopPropagation();let{dataTransfer:n}=t;if(n){n.effectAllowed=`move`,n.setData(`text/plain`,e.id);let r=b.current;if(r&&typeof n.setDragImage==`function`){let e=r.getBoundingClientRect(),i=r.cloneNode(!0);i.style.position=`fixed`,i.style.top=`0`,i.style.left=`-9999px`,i.style.width=`${e.width}px`,i.style.margin=`0`,i.style.pointerEvents=`none`,i.style.borderRadius=`0.5rem`,i.style.padding=`0.25rem`,i.style.backgroundColor=`var(--oh-surface-raised)`,i.style.boxShadow=`0 8px 24px rgba(0, 0, 0, 0.35)`,document.body.appendChild(i),n.setDragImage(i,t.clientX-e.left,t.clientY-e.top),window.setTimeout(()=>i.remove(),0)}}u()},onDragEnd:e=>{e.stopPropagation(),d()},className:H(`group/folder flex min-h-8 min-w-0 flex-1 cursor-grab items-center gap-2 rounded-md py-1 text-left text-inherit outline-none active:cursor-grabbing`,`focus-visible:ring-1 focus-visible:ring-[var(--oh-border)]`),children:[(0,Z.jsx)(J,{className:H(`h-4 w-4 shrink-0`,t?`hidden group-hover/folder:block`:`block group-hover/folder:hidden`),"aria-hidden":!0}),(0,Z.jsx)(Ze,{className:H(`h-4 w-4 shrink-0`,t?`block group-hover/folder:hidden`:`hidden group-hover/folder:block`),"aria-hidden":!0}),(0,Z.jsx)(`span`,{className:`truncate`,children:e.label})]}),(0,Z.jsx)(`button`,{type:`button`,className:H(`inline-flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded-md`,`text-inherit transition-colors`,`hover:bg-white/10 hover:text-white`,`focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--oh-border)]`,`disabled:cursor-not-allowed disabled:opacity-50`),disabled:o,"aria-label":y(U.CONVERSATION_PANEL$ADD_CONVERSATION_TO_GROUP,{label:e.label}),"data-testid":`add-conversation-to-group-${S}`,onClick:e=>{e.preventDefault(),e.stopPropagation(),g()},children:(0,Z.jsx)(Mt,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0,strokeWidth:2})})]}),t?(0,Z.jsxs)(`div`,{id:`thread-folder-content-${S}`,className:`mt-0.5 space-y-0.5`,children:[C.map(_),w?(0,Z.jsx)(`div`,{className:`pl-2`,children:(0,Z.jsx)(`button`,{type:`button`,"data-testid":`thread-folder-view-more-${S}`,onClick:h,className:`cursor-pointer text-xs text-[var(--oh-text-dim)] hover:text-white`,children:y(T?U.CONVERSATION_PANEL$LESS:U.CONVERSATION_PANEL$MORE)})}):null]}):null]})]})}function Va({groups:e,groupIds:t,groupFolderOrder:n,setGroupFolderOrder:r,collapsedGroupIds:i,expandedGroupPreviewIds:a,discoveryConversationIds:o,onToggleGroupCollapsed:s,onToggleGroupPreviewExpanded:c,isCreatingConversationFlow:l,activeConversationId:u,onLaunchFromGroup:d,renderConversationCard:f}){let{t:p}=v(`openhands`),[m,h]=(0,X.useState)(null),[g,_]=(0,X.useState)(null),[y,b]=(0,X.useState)(null),[x,S]=(0,X.useState)(!1),C=(0,X.useRef)(null);(0,X.useEffect)(()=>()=>{C.current&&clearTimeout(C.current)},[]);let w=(0,X.useCallback)(()=>{C.current&&clearTimeout(C.current),C.current=setTimeout(()=>{S(!1),C.current=null},300)},[]),T=(0,X.useCallback)(()=>{h(null),_(null),b(null)},[]),E=(0,X.useCallback)(e=>{let t=e.currentTarget.getBoundingClientRect();return e.clientY<t.top+t.height/2?`before`:`after`},[]),D=(0,X.useCallback)((e,i)=>{if(!m||m===e){T(),w();return}r(Da(n,t,m,e,i)),T(),w()},[m,n,t,T,r,w]);return(0,Z.jsx)(`nav`,{"aria-label":p(U.SIDEBAR$CONVERSATIONS),className:`space-y-1 md:space-y-0.5 pb-1`,children:e.map(e=>(0,Z.jsx)(Ba,{group:e,expanded:!i.has(e.id),previewExpanded:a.has(e.id),isDragging:m===e.id,dropIndicatorPosition:g===e.id&&m!==e.id?y:null,animateLayout:x,isCreatingConversationFlow:l,activeConversationId:u,discoveryConversationIds:o,onToggleExpanded:()=>s(e.id),onDragStart:()=>{S(!0),h(e.id)},onDragEnd:()=>{T(),w()},onDragOver:t=>{t.preventDefault();let{dataTransfer:n}=t;n&&(n.dropEffect=`move`),_(e.id),b(E(t))},onDragLeave:()=>{_(t=>t===e.id?null:t)},onDrop:t=>{t.preventDefault(),D(e.id,E(t))},onTogglePreviewExpanded:()=>c(e.id),onLaunchFromGroup:()=>d(e.launch),renderConversationCard:f},e.id))})}function Ha({pinnedConversations:e,isPreviewExpanded:t,onTogglePreviewExpanded:n,activeConversationId:r,showDivider:i=!1,renderConversationCard:a}){let{t:o}=v(`openhands`),{visibleConversations:s,isPreviewTruncated:c,isShowingAll:l}=ua(e,{limit:5,expanded:t,activeConversationId:r});return(0,Z.jsxs)(`section`,{"data-testid":`conversation-panel-pinned-section`,className:H(`pt-1`,i?`mb-2 border-b border-[var(--oh-border-subtle)] pb-2`:`pb-2`),children:[(0,Z.jsxs)(`h3`,{className:`flex items-center gap-1.5 py-1.5 pl-2 text-sm font-normal text-[var(--oh-muted)]`,children:[(0,Z.jsx)(mt,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),o(U.CONVERSATION_PANEL$PINNED)]}),(0,Z.jsx)(`div`,{className:`space-y-0.5`,children:s.map(a)}),c?(0,Z.jsx)(`div`,{className:`pl-2 pt-0.5`,children:(0,Z.jsx)(`button`,{type:`button`,"data-testid":`conversation-panel-pinned-view-more`,onClick:n,className:`cursor-pointer text-xs text-[var(--oh-text-dim)] hover:text-white`,children:o(l?U.CONVERSATION_PANEL$LESS:U.CONVERSATION_PANEL$MORE)})}):null]})}var Ua=`archived-conversations`,Wa={archivesByBackendId:{}};function Ga(e,t){return e[t]??[]}var Ka=Fn()(Pn((e,t)=>({...Wa,archiveConversation:(n,r)=>{let i=Ga(t().archivesByBackendId,n);i.includes(r)||e(e=>({archivesByBackendId:{...e.archivesByBackendId,[n]:[r,...i]}}))},removeArchivedConversation:(n,r)=>{let i=Ga(t().archivesByBackendId,n);i.includes(r)&&e(e=>({archivesByBackendId:{...e.archivesByBackendId,[n]:i.filter(e=>e!==r)}}))},isArchived:(e,n)=>Ga(t().archivesByBackendId,e).includes(n)}),{name:Ua,storage:In(()=>localStorage),partialize:e=>({archivesByBackendId:e.archivesByBackendId})})),qa={pinsByBackendId:{}};function Ja(e,t){return e[t]??[]}var Ya=Fn()(Pn((e,t)=>({...qa,pinConversation:(n,r)=>{let i=Ja(t().pinsByBackendId,n);i.includes(r)||e(e=>({pinsByBackendId:{...e.pinsByBackendId,[n]:[r,...i]}}))},unpinConversation:(n,r)=>{let i=Ja(t().pinsByBackendId,n);i.includes(r)&&e(e=>({pinsByBackendId:{...e.pinsByBackendId,[n]:i.filter(e=>e!==r)}}))},togglePin:(e,n)=>{Ja(t().pinsByBackendId,e).includes(n)?t().unpinConversation(e,n):t().pinConversation(e,n)},pruneMissingConversations:(n,r)=>{let i=new Set(r),a=Ja(t().pinsByBackendId,n),o=a.filter(e=>i.has(e));o.length!==a.length&&e(e=>({pinsByBackendId:{...e.pinsByBackendId,[n]:o}}))}}),{name:`pinned-conversations`,storage:In(()=>localStorage),partialize:e=>({pinsByBackendId:e.pinsByBackendId})})),Xa=()=>{},Za=[],Qa=3600*1e3,$a=e=>{let t=Date.now()-Qa,n=[],r=[];for(let i of e){let e=i.updated_at?Date.parse(i.updated_at):NaN;Number.isFinite(e)&&e<t?r.push(i):n.push(i)}return{recent:n,older:r}};function eo({onClose:e,compact:t=!1}){let{t:n}=v(`openhands`),{conversationId:r,navigate:a}=rn(),{backend:o}=F(),s=ii(),c=sr(e??Xa),[l,u]=X.useState(!1),[d,f]=X.useState(!1),[p,m]=X.useState(!1),[h,g]=X.useState(!1),[_,y]=X.useState(!1),b=Q(e=>e.showOlderConversations),S=Q(e=>e.showArchivedConversations),w=Q(e=>e.toggleShowArchivedConversations),T=Q(e=>e.toggleShowOlderConversations),E=Q(e=>e.showRepoBranchMetadata),D=Q(e=>e.toggleShowRepoBranchMetadata),O=Q(e=>e.showLlmProfiles),k=Q(e=>e.toggleShowLlmProfiles),A=Q(e=>e.showTagsMetadata),j=Q(e=>e.toggleShowTagsMetadata),M=Q(e=>e.showHoverMetadata),P=Q(e=>e.toggleShowHoverMetadata),I=Q(e=>e.organizeMode),ee=Q(e=>e.setOrganizeMode),L=Q(e=>e.conversationSort),te=Q(e=>e.setConversationSort),R=Q(e=>e.threadScope),z=Q(e=>e.setThreadScope),B=Q(e=>e.automationFilterMode),ne=Q(e=>e.setAutomationFilterMode),re=Q(e=>e.selectedAutomationNames),ie=Q(e=>e.toggleAutomationName),W=Q(e=>e.groupFolderOrder),ae=Q(e=>e.setGroupFolderOrder),[oe,se]=X.useState(!1),[ce,le]=X.useState(!1),ue=sr(()=>{se(!1)}),[de,fe]=X.useState(()=>new Set),[pe,me]=X.useState(()=>new Set),[he,ge]=X.useState(!1),G=Ya(e=>e.pinsByBackendId[o.id]??Za),_e=Ya(e=>e.togglePin),ve=Ya(e=>e.unpinConversation),ye=Ya(e=>e.pruneMissingConversations),be=Ka(e=>e.archivesByBackendId[o.id]??Za),xe=Ka(e=>e.archiveConversation),Se=X.useMemo(()=>new Set(be),[be]),Ce=Ka(e=>e.removeArchivedConversation),we=X.useCallback(e=>{fe(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),Te=X.useCallback(e=>{me(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]);X.useEffect(()=>{I!==`grouped`&&(fe(new Set),me(new Set))},[I]);let Ee=X.useRef(null),[K,De]=X.useState(null),[Oe,ke]=X.useState(null),[Ae,je]=X.useState(null),{data:Me,isLoading:Ne,isFetched:Pe,hasNextPage:Fe,isFetching:Ie,isFetchingNextPage:Le,fetchNextPage:Re}=ai(),{data:ze}=oi(),Be=X.useMemo(()=>{let e=Me?.pages.flatMap(e=>e.items)??[],t=new Set;return e.filter(e=>t.has(e.id)?!1:(t.add(e.id),!0))},[Me]),Ve=X.useMemo(()=>{let e=new Map;return Me?.pages.forEach((t,n)=>{t.items.forEach(t=>{e.has(t.id)||e.set(t.id,n)})}),e},[Me]),He=X.useMemo(()=>S?Be:Be.filter(e=>!Se.has(e.id)),[Be,Se,S]),Ue=X.useMemo(()=>ga(He),[He]),We=X.useMemo(()=>_a(He,B,re,Ue),[B,Ue,He,re]),Ge=X.useMemo(()=>da(G,He),[He,G]);X.useEffect(()=>{if(!Pe)return;let e=Me?.pages.flatMap(e=>e.items.map(e=>e.id))??[];ye(o.id,e)},[o.id,Me,Pe,ye]),X.useEffect(()=>{G.length===0&&ge(!1)},[G.length]);let Ke=X.useMemo(()=>{let e=R===`relevant`?We.filter(e=>V(e.execution_status)):We;return t?e:fa(e,G)},[We,t,G,R]),{recent:qe,older:Je}=X.useMemo(()=>$a(Ke),[Ke]),Xe=X.useMemo(()=>ba(b?[...qe,...Je]:qe,L),[qe,Je,b,L]),Ze=X.useMemo(()=>({emptyWorkspace:n(U.CONVERSATION_PANEL$NO_WORKSPACE),emptyRepository:n(U.CONVERSATION_PANEL$NO_REPOSITORY)}),[n]),Qe=X.useMemo(()=>t||I!==`grouped`?null:[...qe,...b?Je:[]],[t,Je,I,qe,b]),et=X.useMemo(()=>Qe?Ta(Qe,o.kind,L,Ze):null,[o.kind,L,Ze,Qe]),tt=X.useMemo(()=>Qe?wa(Qe,Ve,o.kind,{forceIncludeConversationId:r}):null,[o.kind,Ve,r,Qe]),nt=X.useMemo(()=>et?Ea(et,W):null,[et,W]),rt=X.useMemo(()=>et?.map(e=>e.id)??[],[et]),it=X.useMemo(()=>ba(qe.filter(e=>V(e.execution_status)),L),[L,qe]),at=Xe.length,ot=nt?.length??0,st=I===`grouped`&&!t?ot===0:at===0,ct=st&&B!==`all`&&He.length>0&&We.length===0,q=I===`grouped`&&!t?ot:at,J=Me?.pages.length??0,[lt,ut]=X.useState(null),[dt,ft]=X.useState(null),pt=X.useRef(q);pt.current=q;let mt=X.useRef(J);mt.current=J;let ht=X.useCallback(()=>{ut(null),ft(null)},[]),gt=X.useCallback(()=>{Fe&&(ut(pt.current),ft(mt.current))},[Fe]);X.useEffect(()=>{if(lt!==null){if(q>lt){ht();return}if(I===`grouped`&&!t&&dt!=null&&J>=dt+3){ht();return}if(!(Ie||Le)){if(!Fe){ht();return}Re()}}},[ht,t,lt,dt,q,J,I,Fe,Ie,Le,Re]);let _t=lt!==null||Le,{mutate:vt,mutateAsync:yt}=$e(),{mutate:bt}=Ye(),{mutate:xt}=tr(),St=Je.length>0&&!b,Ct=!!Fe&&!St&&!t,{mutate:wt}=lr(),Tt=x(),Et=X.useCallback(e=>{Tt||wt({workingDir:e.workingDir,repository:e.repository,entryPoint:`sidebar_relaunch_project`},{onSuccess:e=>{a(`/conversations/${e.conversation_id}`)}})},[wt,Tt,a]),Dt=X.useCallback((e,t)=>{u(!0),De(e),ke(t)},[]),Ot=X.useCallback((e,t)=>{f(!0),De(e),ke(t)},[]),kt=X.useCallback(e=>{Ce(o.id,e)},[o.id,Ce]),At=X.useCallback(e=>{m(!0),De(e)},[]),jt=X.useCallback((e,t)=>{xt({conversationId:e,newTitle:t},{onSuccess:()=>{N(n(U.CONVERSATION$TITLE_UPDATED))}})},[n,xt]),Mt=()=>{if(K){let e=K;vt({conversationId:e},{onSuccess:()=>{Ce(o.id,e),e===r&&a(`/conversations`)}})}},Nt=()=>{K&&(xe(o.id,K),ve(o.id,K),K===r&&a(`/conversations`))},Pt=()=>{K&&bt({conversationId:K})},Ft=async()=>{let e=Be.map(e=>e.id),t=await Promise.allSettled(e.map(e=>yt({conversationId:e}))),n=t.flatMap((t,n)=>t.status===`fulfilled`?[e[n]]:[]),i=t.length-n.length;for(let e of n)Ce(o.id,e);r!==null&&n.includes(r)&&a(`/conversations`),i>0&&C(`${i} conversation${i===1?``:`s`} could not be deleted.`)},It=X.useCallback((n,a)=>{let c=G.includes(n.id),l=Se.has(n.id);return t?(0,Z.jsx)(sa,{conversationId:n.id,title:n.title??``,selectedRepository:{selected_repository:n.selected_repository,selected_branch:n.selected_branch,git_provider:n.git_provider},executionStatus:n.execution_status,sandboxStatus:n.sandbox_status,lastUpdatedAt:n.updated_at,createdAt:n.created_at,workspaceWorkingDir:n.selected_workspace??n.workspace?.working_dir,isActive:n.id===r,onClose:e,showRepositoryMetadata:E,llmModel:n.llm_model,showLlmProfiles:O,agentKind:n.agent_kind,acpServer:n.acp_server,tags:n.tags,showTags:A},n.id):(0,Z.jsx)(i,{placement:`right-start`,delay:1e3,closeDelay:100,isDisabled:!M||Ae===n.id,disableAnimation:!1,className:`max-w-none overflow-visible rounded-xl border border-[var(--oh-border)] bg-base-secondary p-0 text-white shadow-xl`,content:(0,Z.jsx)(ea,{title:n.title??``,executionStatus:n.execution_status,sandboxStatus:n.sandbox_status,selectedRepository:{selected_repository:n.selected_repository,selected_branch:n.selected_branch,git_provider:n.git_provider},workspaceWorkingDir:n.selected_workspace??n.workspace?.working_dir,llmModel:n.llm_model,agentKind:n.agent_kind,acpServer:n.acp_server,createdAt:n.created_at,tags:n.tags}),children:(0,Z.jsx)(sn,{to:s(`/conversations/${n.id}`),onClick:e,className:H(`block rounded-md transition-colors`,Ae!==n.id&&`hover:bg-[var(--oh-surface)]`,(n.id===r||Ae===n.id)&&`bg-[var(--oh-surface)]`),children:(0,Z.jsx)(Xi,{onDelete:()=>Dt(n.id,n.title??``),onArchive:l?void 0:()=>Ot(n.id,n.title??``),onUnarchive:l?()=>kt(n.id):void 0,onStop:()=>At(n.id),onChangeTitle:e=>jt(n.id,e),title:n.title??``,selectedRepository:{selected_repository:n.selected_repository,selected_branch:n.selected_branch,git_provider:n.git_provider},lastUpdatedAt:n.updated_at,createdAt:n.created_at,executionStatus:n.execution_status,sandboxStatus:n.sandbox_status,conversationId:n.id,contextMenuOpen:Ae===n.id,onContextMenuToggle:e=>je(e?n.id:null),isActive:n.id===r,workspaceWorkingDir:n.selected_workspace??n.workspace?.working_dir,showRepositoryMetadata:E,llmModel:n.llm_model,showLlmProfiles:O,agentKind:n.agent_kind,acpServer:n.acp_server,tags:n.tags,showTags:A,isArchived:l,isPinned:c,onTogglePin:()=>_e(o.id,n.id),alwaysShowPinIcon:c&&!a?.inPinnedSection})})},n.id)},[o.id,Se,t,r,Ot,jt,Dt,At,kt,e,Ae,G,E,O,A,M,_e]),Lt=Ne||!Pe,Rt=!t&&!Lt&&Ge.length>0,zt=Pe&&!Ne&&!t&&st&&!Rt&&!ze?.length;return(0,Z.jsxs)(`div`,{ref:c,"data-testid":`conversation-panel`,className:`flex h-full min-h-0 w-full flex-col`,children:[!t&&(0,Z.jsx)(`div`,{className:H(`-ml-2.5 w-[calc(100%+0.625rem)] max-w-none box-border border-b`,ce?`border-[var(--oh-border)]`:`border-transparent`),children:(0,Z.jsxs)(`div`,{"data-testid":`older-conversations-summary`,className:`flex min-w-0 flex-nowrap items-center gap-x-2 py-2 pl-4 pr-2.5 text-[var(--oh-muted)]`,children:[(0,Z.jsx)(`span`,{className:`min-w-0 truncate text-sm font-medium text-[var(--oh-muted)]`,children:n(U.SIDEBAR$CONVERSATIONS)}),(0,Z.jsxs)(`div`,{className:`ml-auto flex shrink-0 items-center gap-0.5`,children:[(0,Z.jsx)(za,{backendKind:o.kind}),(0,Z.jsx)(Ma,{filterMenuOpen:oe,setFilterMenuOpen:se,menuRef:ue,backendKind:o.kind,organizeMode:I,setOrganizeMode:ee,conversationSort:L,setConversationSort:te,threadScope:R,setThreadScope:z,automationFilterMode:B,setAutomationFilterMode:ne,selectedAutomationNames:re,onToggleAutomationName:ie,automationNameFacets:Ue,showOlderConversations:b,showArchivedConversations:S,toggleShowArchivedConversations:w,toggleShowOlderConversations:T,showRepoBranchMetadata:E,toggleShowRepoBranchMetadata:D,showLlmProfiles:O,toggleShowLlmProfiles:k,showTagsMetadata:A,toggleShowTagsMetadata:j,showHoverMetadata:M,toggleShowHoverMetadata:P,totalConversationsCount:Be.length,onRequestDeleteAll:()=>y(!0)})]})]})}),(0,Z.jsxs)(`div`,{ref:Ee,"data-testid":`conversation-panel-list-scroll`,onScroll:e=>{le(e.currentTarget.scrollTop>0)},className:H(`flex min-h-0 flex-1 flex-col overflow-y-auto overflow-x-hidden overscroll-contain custom-scrollbar-always`,!t&&`conversation-panel-list-scroll`),children:[Lt&&(0,Z.jsx)(oa,{compact:t}),!t&&zt&&(0,Z.jsx)(`div`,{"data-testid":`conversation-panel-empty-state`,className:`flex min-h-0 flex-1 flex-col items-center justify-center px-4 py-8`,children:(0,Z.jsx)(`p`,{className:`text-xs text-[var(--oh-muted)]`,children:n(ct?U.CONVERSATION_PANEL$NO_AUTOMATION_MATCHES:U.CONVERSATION$NO_CONVERSATIONS)})}),Rt?(0,Z.jsx)(Ha,{pinnedConversations:Ge,isPreviewExpanded:he,onTogglePreviewExpanded:()=>ge(e=>!e),activeConversationId:r,showDivider:!t&&I===`chronological`,renderConversationCard:e=>It(e,{inPinnedSection:!0})}):null,!t&&ze?.map(t=>(0,Z.jsx)(sn,{to:s(`/conversations/task-${t.id}`),onClick:e,className:`block`,children:(0,Z.jsx)(aa,{task:t})},t.id)),!Lt&&t?it.map(e=>It(e)):null,!Lt&&!t&&I===`grouped`&&nt&&nt.length>0?(0,Z.jsx)(Va,{groups:nt,groupIds:rt,groupFolderOrder:W,setGroupFolderOrder:ae,collapsedGroupIds:de,expandedGroupPreviewIds:pe,discoveryConversationIds:tt,onToggleGroupCollapsed:we,onToggleGroupPreviewExpanded:Te,isCreatingConversationFlow:Tt,activeConversationId:r,onLaunchFromGroup:Et,renderConversationCard:e=>It(e)}):null,!Lt&&!t&&I===`chronological`?(0,Z.jsx)(`div`,{className:`space-y-0.5`,children:Xe.map(e=>It(e))}):null,Ct&&(_t?(0,Z.jsx)(`div`,{className:`py-1`,children:(0,Z.jsx)(oa,{compact:t})}):(0,Z.jsx)(`div`,{className:`flex justify-center py-4`,children:(0,Z.jsx)(`button`,{type:`button`,"data-testid":`load-more-conversations`,onClick:gt,className:`text-xs text-[var(--oh-muted)] hover:text-white`,children:n(U.CONVERSATION$LOAD_MORE)})}))]}),l&&(0,Z.jsx)($n,{onConfirm:()=>{Mt(),u(!1),ke(null)},onCancel:()=>{u(!1),ke(null)},conversationTitle:Oe??void 0}),d&&(0,Z.jsx)(si,{onConfirm:()=>{Nt(),f(!1),ke(null)},onCancel:()=>{f(!1),ke(null)},conversationTitle:Oe??void 0}),_&&(0,Z.jsx)($n,{title:n(U.CONVERSATION$CONFIRM_DELETE_ALL_TITLE),description:n(U.CONVERSATION$CONFIRM_DELETE_ALL_DESC,{count:Be.length}),onConfirm:async()=>{await Ft(),y(!1)},onCancel:()=>y(!1)}),p&&(0,Z.jsx)(or,{onConfirm:()=>{Pt(),m(!1)},onCancel:()=>m(!1)}),h&&(0,Z.jsx)(ci,{onConfirm:()=>{e?.()},onClose:()=>g(!1),onCancel:()=>g(!1)})]})}function to({collapsed:e}){return e?null:(0,Z.jsx)(`div`,{className:`flex flex-col flex-1 min-h-0`,children:(0,Z.jsx)(`div`,{className:`flex min-h-0 w-full flex-1 flex-col`,children:(0,Z.jsx)(eo,{})})})}var no=e=>(0,Z.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 20 20`,fill:`none`,...e,children:[(0,Z.jsx)(`mask`,{id:`mask0_18339_1445`,style:{maskType:`luminance`},maskUnits:`userSpaceOnUse`,x:1,y:1,width:18,height:18,children:(0,Z.jsx)(`path`,{d:`M19 1H1V19H19V1Z`,fill:`white`})}),(0,Z.jsxs)(`g`,{mask:`url(#mask0_18339_1445)`,children:[(0,Z.jsx)(`path`,{d:`M10 18.1818V16.5454`,stroke:`currentColor`,strokeWidth:1.67,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,Z.jsx)(`path`,{d:`M10 1.81836V3.45472`,stroke:`currentColor`,strokeWidth:1.67,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,Z.jsx)(`path`,{d:`M1.81824 10H3.4546`,stroke:`currentColor`,strokeWidth:1.67,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,Z.jsx)(`path`,{d:`M18.1818 10H16.5454`,stroke:`currentColor`,strokeWidth:1.67,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,Z.jsx)(`path`,{d:`M5.93359 17.1019L6.74359 15.6782`,stroke:`currentColor`,strokeWidth:1.67,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,Z.jsx)(`path`,{d:`M14.0663 2.89844L13.2563 4.32208`,stroke:`currentColor`,strokeWidth:1.67,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,Z.jsx)(`path`,{d:`M2.89819 5.93359L4.32183 6.74359`,stroke:`currentColor`,strokeWidth:1.67,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,Z.jsx)(`path`,{d:`M17.1019 14.0663L15.6782 13.2563`,stroke:`currentColor`,strokeWidth:1.67,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,Z.jsx)(`path`,{d:`M5.92542 2.90625L6.7436 4.3217`,stroke:`currentColor`,strokeWidth:1.67,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,Z.jsx)(`path`,{d:`M14.0909 17.0854L13.2727 15.6699`,stroke:`currentColor`,strokeWidth:1.67,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,Z.jsx)(`path`,{d:`M17.0855 5.90918L15.67 6.72736`,stroke:`currentColor`,strokeWidth:1.67,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,Z.jsx)(`path`,{d:`M2.91455 14.0911L4.33001 13.2729`,stroke:`currentColor`,strokeWidth:1.67,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,Z.jsx)(`path`,{d:`M10 16.5455C13.615 16.5455 16.5455 13.615 16.5455 10C16.5455 6.38509 13.615 3.45459 10 3.45459C6.38509 3.45459 3.45459 6.38509 3.45459 10C3.45459 13.615 6.38509 16.5455 10 16.5455Z`,stroke:`currentColor`,strokeWidth:1.67,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,Z.jsx)(`path`,{d:`M12.5854 9.77916L8.80545 7.59461C8.63363 7.49643 8.41272 7.61916 8.41272 7.81552V12.1846C8.41272 12.381 8.62545 12.5119 8.80545 12.4055L12.5854 10.221C12.7573 10.1228 12.7573 9.86916 12.5854 9.77098V9.77916Z`,fill:`currentColor`,stroke:`currentColor`,strokeWidth:1.67,strokeLinecap:`round`,strokeLinejoin:`round`})]})]}),ro=18,io=34,ao=Math.round(io*30/46);function oo({collapsed:e,showCollapseToggle:t,showMobileCloseButton:n=!1,onCloseMobile:r,collapseToggleLabel:i,onCollapse:a,onExpand:o,showCollapsedExpandButton:s,isExtensionsActive:c,currentPath:l,activeBackendHealth:u,collapsedBackendPopoverOpen:d,setCollapsedBackendPopoverOpen:f,collapsedBackendPopoverRef:p,collapsedBackendCloseTimer:m,onOpenAddBackend:h,onOpenManageBackends:g}){let{t:_}=v(`openhands`),y=m;return(0,Z.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,Z.jsxs)(`div`,{className:fn(e),children:[(0,Z.jsxs)(`div`,{className:H(e&&t?pn:`flex min-w-0 shrink-0 items-center`),children:[(0,Z.jsx)(`div`,{className:H(e&&t&&`flex h-full w-full items-center justify-start pl-2.5 transition-opacity duration-150`,e&&s&&`opacity-0`),children:(0,Z.jsx)(Mr,{logoWidth:io,logoHeight:ao,logoClassName:`max-w-none`,className:H(cn,`overflow-visible`)})}),e&&t?(0,Z.jsx)(`button`,{type:`button`,"data-testid":`sidebar-collapse-toggle`,"aria-pressed":e,"aria-label":i,onClick:o,className:H(mn,s?`opacity-100 pointer-events-auto`:`opacity-0 pointer-events-none`),children:(0,Z.jsx)(Ie,{width:14,height:14})}):null]}),!e&&t?(0,Z.jsx)(`button`,{type:`button`,"data-testid":`sidebar-collapse-toggle`,"aria-pressed":e,"aria-label":i,onClick:a,className:H(`hidden md:inline-flex ml-auto`,dn,`text-[var(--oh-muted)] hover:text-white hover:bg-[var(--oh-surface-raised)]`),children:(0,Z.jsx)(Ne,{width:14,height:14})}):null,!e&&n?(0,Z.jsx)(`button`,{type:`button`,"data-testid":`sidebar-mobile-drawer-close`,onClick:r,"aria-label":_(U.SIDEBAR$CLOSE_MENU),className:H(`inline-flex ml-auto`,dn,`text-[var(--oh-muted)] hover:text-white hover:bg-[var(--oh-surface-raised)]`),children:(0,Z.jsx)(Ne,{width:14,height:14})}):null]}),(0,Z.jsxs)(`nav`,{className:ln(e),children:[(0,Z.jsx)(Zr,{collapsed:e}),(0,Z.jsx)(_n,{to:`/conversations`,end:!0,label:_(U.SIDEBAR$NEW_CHAT),testId:`sidebar-conversations-link`,collapsed:e,icon:(0,Z.jsx)(Mt,{width:ro,height:ro})}),(0,Z.jsx)(_n,{to:`/customize`,label:_(U.NAV$CUSTOMIZE),testId:`sidebar-skills-link`,collapsed:e,forceActive:c,icon:(0,Z.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:ro,height:ro,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,Z.jsx)(`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`}),(0,Z.jsx)(`path`,{d:`m7 16.5-4.74-2.85`}),(0,Z.jsx)(`path`,{d:`m7 16.5 5-3`}),(0,Z.jsx)(`path`,{d:`M7 16.5v5.17`}),(0,Z.jsx)(`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`}),(0,Z.jsx)(`path`,{d:`m17 16.5-5-3`}),(0,Z.jsx)(`path`,{d:`m17 16.5 4.74-2.85`}),(0,Z.jsx)(`path`,{d:`m17 16.5v5.17`}),(0,Z.jsx)(`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`}),(0,Z.jsx)(`path`,{d:`M12 8 7.26 5.15`}),(0,Z.jsx)(`path`,{d:`m12 8 4.74-2.85`}),(0,Z.jsx)(`path`,{d:`M12 13.5V8`})]})}),(0,Z.jsx)(_n,{to:Ht(),label:Gt().sidebarLabel??_(U.SIDEBAR$AUTOMATIONS),testId:`sidebar-automations-link`,collapsed:e,icon:(0,Z.jsx)(no,{width:ro,height:ro})})]}),(0,Z.jsx)(to,{collapsed:e}),e&&t?(0,Z.jsxs)(`nav`,{className:H(ln(e),`mt-auto pb-2 cursor-pointer`),children:[(0,Z.jsx)(yn,{content:_(U.SIDEBAR$SETTINGS),placement:`right`,children:(0,Z.jsxs)(sn,{to:`/settings`,"data-testid":`collapsed-settings-link`,"aria-label":_(U.SIDEBAR$SETTINGS),className:un({collapsed:!0}),children:[(0,Z.jsx)(gn,{active:l.startsWith(`/settings`),children:(0,Z.jsx)(Dt,{width:ro,height:ro})}),(0,Z.jsx)(`span`,{className:hn(!0),children:_(U.SIDEBAR$SETTINGS)})]})}),(0,Z.jsxs)(`div`,{className:`relative`,ref:p,onMouseEnter:()=>{y.current&&=(clearTimeout(y.current),null),f(!0)},onMouseLeave:()=>{y.current=setTimeout(()=>f(!1),150)},children:[(0,Z.jsxs)(`button`,{type:`button`,"data-testid":`collapsed-backend-selector-link`,"aria-label":_(U.BACKEND$MANAGE),"aria-expanded":d,onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},onMouseUp:e=>e.stopPropagation(),className:H(un({collapsed:!0}),`relative`),children:[(0,Z.jsx)(gn,{active:d,children:(0,Z.jsxs)(`span`,{className:`relative inline-flex size-[18px] shrink-0 items-center justify-center`,children:[(0,Z.jsx)(kt,{isConnected:u?.isConnected??null,className:`absolute -left-0.5 -top-0.5 z-[1] pointer-events-none`}),(0,Z.jsx)(fe,{width:ro,height:ro})]})}),(0,Z.jsx)(`span`,{className:hn(!0),children:_(U.BACKEND$MANAGE)})]}),d?(0,Z.jsx)(`div`,{className:`absolute bottom-[-4px] left-full pl-2.5 z-40 w-[272px]`,onClick:e=>e.stopPropagation(),children:(0,Z.jsx)(Jr,{sidebarCollapsed:e,hideTrigger:!0,defaultOpen:!0,openUpward:!0,onSelectOption:()=>f(!1),onOpenAddBackend:h,onOpenManageBackends:g})}):null]})]}):null,e?null:(0,Z.jsxs)(`div`,{className:H(`flex flex-col items-stretch max-w-none box-border shrink-0 gap-2`,`-ml-2.5 w-[calc(100%+0.625rem)] border-t border-[var(--oh-border)] pt-2 px-2.5`),children:[(0,Z.jsx)(ri,{hideWhenUpToDate:!0}),(0,Z.jsx)(Jr,{sidebarCollapsed:e,openUpward:!0})]})]})}var so=X.lazy(()=>a(()=>import(`./settings-modal-BIrIVn97.js`).then(e=>({default:e.SettingsModal})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62]))),co=X.lazy(()=>a(()=>Promise.resolve().then(()=>Br).then(e=>({default:e.AddBackendModal})),void 0)),lo=X.lazy(()=>a(()=>import(`./manage-backends-modal-DhGk5mJt.js`).then(e=>e.n).then(e=>({default:e.ManageBackendsModal})),__vite__mapDeps([63,1,2,3,4,5,6,7,8,11,64,65,66,18,47,48,49,19,67,68,27,69,26,35,15,30,34,32,70,14,33,71,72,73,74,75,76]))),uo=250;function fo(){let{t:e}=v(`openhands`),{currentPath:t}=rn(),{data:n}=Vt(),{data:r,error:i,isError:a,isFetching:o}=Kt(),{backends:s,active:c}=I(),l=zt(s)[c.backend.id],u=Ot(e=>e.collapsed),d=Ot(e=>e.setCollapsed),[f,p]=X.useState(!1),[m,h]=X.useState(!1),g=X.useRef(null),[_,y]=X.useState(!1),[b,x]=X.useState(!1),[S,w]=X.useState(!1),T=X.useRef(!1),[,E]=X.useReducer(e=>e+1,0),{isOpen:D,close:O}=nr(),[k,A]=X.useState(!1),[j,M]=X.useState(!1),N=sr(()=>h(!1)),P=qt(i);X.useEffect(()=>{O()},[t,O]),X.useEffect(()=>{if(D){A(!0);let e=requestAnimationFrame(()=>{M(!0)});return()=>cancelAnimationFrame(e)}M(!1);let e=window.setTimeout(()=>{A(!1)},uo);return()=>window.clearTimeout(e)},[D]),X.useEffect(()=>{if(!D)return;let e=e=>{e.key===`Escape`&&O()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[D,O]),X.useEffect(()=>{t===`/settings`?p(!1):!o&&a&&P!==404?C(e(U.SETTINGS$FETCH_ERROR)):P===404&&!n?.feature_flags?.hide_llm_settings&&p(!0)},[t,o,a,P,n?.feature_flags?.hide_llm_settings,e]);let F=e(u?U.SIDEBAR$EXPAND:U.SIDEBAR$COLLAPSE),ee=X.useCallback(e=>{if(!u)return;let t=e.target;t instanceof HTMLElement&&(t.closest(`a,button,input,textarea,select,[role='button'],[role='link']`)||d(!1))},[u,d]),L={collapseToggleLabel:F,onCollapse:X.useCallback(()=>{w(!1),T.current=!0,E(),d(!0),window.setTimeout(()=>{T.current=!1,E()},250)},[d]),onExpand:()=>d(!1),showCollapsedExpandButton:u&&S&&!T.current,isExtensionsActive:t===`/customize`||t.startsWith(`/skills`)||t===`/plugins`||t===`/mcp`,currentPath:t,activeBackendHealth:l,collapsedBackendPopoverOpen:m,setCollapsedBackendPopoverOpen:h,collapsedBackendPopoverRef:N,collapsedBackendCloseTimer:g,onOpenAddBackend:()=>y(!0),onOpenManageBackends:()=>x(!0)};return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`aside`,{"aria-label":e(U.SIDEBAR$NAVIGATION_LABEL),"data-collapsed":u?`true`:`false`,onClick:ee,onMouseEnter:()=>{u&&w(!0)},onMouseLeave:()=>{w(!1)},className:H(`max-md:hidden flex bg-base flex-col min-h-0 transition-[width,min-width] duration-200`,`md:border-r md:border-[var(--oh-border)] md:h-full`,u?`md:w-[60px] md:min-w-[60px] md:px-2.5`:`md:w-[300px] md:min-w-[300px] pb-2 md:pl-2.5 md:pr-0`,t===`/`&&`md:pb-3`),children:(0,Z.jsx)(oo,{collapsed:u,showCollapseToggle:!0,...L})}),k?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:H(`fixed inset-0 z-40 bg-black/50 md:hidden`,`transition-opacity ease-in-out motion-reduce:transition-none`,j?`opacity-100`:`pointer-events-none opacity-0`),style:{transitionDuration:`${uo}ms`},onClick:O,"aria-hidden":!j}),(0,Z.jsx)(`aside`,{"aria-label":e(U.SIDEBAR$NAVIGATION_LABEL),"data-testid":`sidebar-mobile-drawer`,"aria-hidden":!j,className:H(`fixed inset-y-0 left-0 z-50 flex min-h-0 w-[min(300px,85vw)] flex-col bg-base`,`border-r border-[var(--oh-border)] pb-2 pl-2.5 pr-0 md:hidden`,`transition-transform ease-in-out motion-reduce:transition-none`,j?`translate-x-0`:`-translate-x-full`),style:{transitionDuration:`${uo}ms`},children:(0,Z.jsx)(oo,{collapsed:!1,showCollapseToggle:!1,showMobileCloseButton:!0,onCloseMobile:O,...L})})]}):null,f&&(0,Z.jsx)(X.Suspense,{fallback:null,children:(0,Z.jsx)(so,{settings:r,onClose:()=>p(!1)})}),_&&(0,Z.jsx)(X.Suspense,{fallback:null,children:(0,Z.jsx)(co,{onClose:()=>y(!1)})}),b&&(0,Z.jsx)(X.Suspense,{fallback:null,children:(0,Z.jsx)(lo,{onClose:()=>x(!1)})})]})}var po=`/settings`,mo=`/customize`,ho=[`/skills`,`/mcp`,`/plugins`];function go(e){return e===po?{mode:`menu`}:e.startsWith(`${po}/`)&&e.length>9?{mode:`back`,backTo:po,backLabelKey:U.SETTINGS$TITLE}:e===mo?{mode:`menu`}:ho.some(t=>e===t||e.startsWith(`${t}/`))?{mode:`back`,backTo:mo,backLabelKey:U.NAV$CUSTOMIZE}:{mode:`menu`}}function _o(){let{t:e}=v(`openhands`),{currentPath:t,navigate:n}=rn(),r=go(t);return(0,Z.jsxs)(`header`,{className:`flex md:hidden h-12 shrink-0 items-center gap-2 px-2.5`,"aria-label":e(U.SIDEBAR$NAVIGATION_LABEL),children:[(0,Z.jsx)(ar,{}),r.mode===`back`&&r.backTo?(0,Z.jsx)(`button`,{type:`button`,"data-testid":`sidebar-mobile-back-button`,onClick:()=>n(r.backTo),"aria-label":e(r.backLabelKey??U.COMMON$BACK),className:rr,children:(0,Z.jsx)(Ne,{size:20,className:er,"aria-hidden":!0,strokeWidth:2})}):null]})}function vo(){let{backend:e}=F(),t=e.kind===`local`,{data:n}=cr(),{mutate:r,isPending:i}=Ft(),a=(0,X.useRef)(null);(0,X.useEffect)(()=>{a.current=null},[e.id]),(0,X.useEffect)(()=>{if(!t||i||!n)return;let{profiles:e,active_profile:o}=n,s=o!=null&&e.some(e=>e.name===o);if(e.length===0||s){a.current=null;return}let c=e.find(e=>e.api_key_set)??e[0];a.current!==c.name&&(a.current=c.name,r(c.name))},[t,n,i,r])}var yo=()=>{let{backend:e}=F(),{data:t}=Kt(),{mutate:n,isPending:r}=Jt(`personal`,{retry:2}),i=X.useSyncExternalStore(R,P,()=>null),a=X.useRef(null);X.useEffect(()=>{if(t!==void 0){if(i!==null){if((t.user_consents_to_analytics===!0?`granted`:t.user_consents_to_analytics===!1?`denied`:null)===i){a.current=null,e.kind===`cloud`&&M(i);return}if(e.kind!==`cloud`)return;let o=`${e.id}:${i}`;if(r||a.current===o)return;a.current=o,n({user_consents_to_analytics:i===`granted`});return}t.user_consents_to_analytics!==null&&D(t.user_consents_to_analytics===!0?`granted`:`denied`,{syncToCloud:!1})}},[e.id,e.kind,r,i,n,t])};function bo(){let{backend:e}=F(),t=X.useSyncExternalStore(R,O,()=>`pending`),n=X.useRef(null);X.useEffect(()=>{let r=t===`pending`?ee():null;if(e.kind!==`local`||t===`pending`&&!r)return;let i=t===`granted`?`granted`:`denied`,a=t===`pending`?r:``,o=`${e.id}:${e.host}:${e.apiKey??``}:${i}:${a}`;n.current!==o&&(n.current=o,Ut.syncTelemetryConsent(i).catch(()=>{}))},[e.apiKey,e.host,e.id,e.kind,t])}var xo=`agent_canvas_cloud_cookie_backend_added`,So=new Set;function Co(e,t){return`${xo}:${e}:${t}`}function wo(e,t){let n=Co(e,t);if(typeof window>`u`)return!0;try{return window.sessionStorage.getItem(n)===`true`||So.has(n)}catch{return So.has(n)}}function To(e,t){let n=Co(e,t);if(!(typeof window>`u`))try{window.sessionStorage.setItem(n,`true`)}catch{So.add(n)}}var Eo=()=>{let{backend:e,orgId:t}=F(),{data:n}=Kt(),{trackBackendAdded:r}=Wt(),i=X.useRef(r),a=Mn(),o=e.kind===`cloud`?a[e.id]:void 0,s=o?.isLoading??!0,c=o?.userId??null,l=(n?.email||n?.git_user_email)?.trim()||void 0;X.useEffect(()=>{i.current=r},[r]),X.useEffect(()=>{if(e.kind!==`cloud`){j(null);return}if(!s){if(!c){j(null),L(null);return}j({userId:c,email:l,orgId:t}),L(c,l?{email:l}:{}),e.authMode===`cookie`&&l&&!wo(e.id,c)&&(i.current({backendKind:`cloud`,connectionMethod:`cloud_cookie`,hasApiKey:!1,source:`cloud_auto_connect`}),To(e.id,c))}},[e.authMode,e.connectionRevision,e.id,e.kind,l,s,t,c])};function Do(e){switch(e){case z.RUNNING:return`🟢`;case z.FINISHED:case z.IDLE:case z.WAITING_FOR_CONFIRMATION:return`✅`;case z.PAUSED:return`⚪`;case z.ERROR:case z.STUCK:return`🔴`;default:return null}}var Oo=`OpenHands`,ko=()=>{let{conversationId:e}=s(),{data:t}=kr(e??null),n=Xn(e=>e.execution_status),r=t?.title,i=e&&r?`${r} | ${Oo}`:Oo;if(!e)return i;let a=Do(n??t?.execution_status??null);return a?`${a} ${i}`:i};function Ao({children:e}){let{pathname:t}=c(),n=f(),r=_(),i=u(),a=X.useMemo(()=>{for(let e=i.length-1;e>=0;--e){let t=i[e]?.params?.conversationId;if(t)return t}return null},[i]);return(0,Z.jsx)(an,{value:X.useMemo(()=>({currentPath:t,conversationId:a,isNavigating:!!r.location,navigate:(e,t)=>n(e,t)}),[t,a,r.location,n]),children:e})}var jo=X.lazy(()=>a(()=>import(`./environment-switch-overlay-Bi4qbh2g.js`),__vite__mapDeps([77,1,2,8,5,6,78,7]))),Mo=X.lazy(()=>a(()=>import(`./alert-banner-CzZsm7ms.js`).then(e=>({default:e.AlertBanner})),__vite__mapDeps([79,1,2,8,5,6,80,81,4,82,7,14,83,45,39]))),No=X.lazy(()=>a(()=>import(`./command-menu-BXy03FBl.js`).then(e=>({default:e.CommandMenu})),__vite__mapDeps([84,1,2,4,5,8,6,85,86,87,88,89,90,91,92,93,94,47,3,7,48,49,19,14]))),Po=h(function(){let e=m(),{t}=v(`openhands`);return d(e)?(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h1`,{children:e.status}),(0,Z.jsx)(`p`,{children:e.statusText}),(0,Z.jsx)(`pre`,{children:e.data instanceof Object?JSON.stringify(e.data):e.data})]}):e instanceof Error?(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h1`,{children:t(U.ERROR$GENERIC)}),(0,Z.jsx)(`pre`,{children:e.message})]}):(0,Z.jsx)(`div`,{children:(0,Z.jsx)(`h1`,{children:t(U.ERROR$UNKNOWN)})})}),Fo=p(function(){let e=c(),t=ko(),{data:n}=Kt(),r=Vt();if(bo(),yo(),Eo(),vo(),X.useEffect(()=>{n?.language&&E.changeLanguage(n.language)},[n?.language]),r.isLoading)return(0,Z.jsx)(`div`,{className:`min-h-screen flex items-center justify-center bg-base`,children:(0,Z.jsx)(Bt,{size:`large`})});let i=/^\/conversations\/[^/]+/.test(e.pathname),a=ft(e.search);return(0,Z.jsx)(Ao,{children:(0,Z.jsxs)(Zn,{children:[(0,Z.jsxs)(`div`,{"data-testid":`root-layout`,className:`h-screen lg:min-w-5xl flex flex-col md:flex-row bg-base overflow-hidden p-0`,children:[(0,Z.jsx)(`title`,{children:t}),(0,Z.jsx)(fo,{}),(0,Z.jsxs)(`div`,{className:`flex min-h-0 flex-col w-full min-w-0 h-full gap-3`,children:[i?null:(0,Z.jsx)(_o,{}),r.data&&(r.data.maintenance_start_time||r.data.faulty_models&&r.data.faulty_models.length>0||r.data.error_message)&&(0,Z.jsx)(X.Suspense,{fallback:null,children:(0,Z.jsx)(Mo,{maintenanceStartTime:r.data.maintenance_start_time,faultyModels:r.data.faulty_models,errorMessage:r.data.error_message,updatedAt:r.data.updated_at})}),(0,Z.jsx)(`div`,{id:`root-outlet`,className:`relative flex-1 overflow-auto px-0 custom-scrollbar`,children:(0,Z.jsx)(g,{})})]})]}),(0,Z.jsxs)(X.Suspense,{fallback:null,children:[(0,Z.jsx)(jo,{}),(0,Z.jsx)(No,{})]}),a?(0,Z.jsx)(_t,{}):null]})})});export{Po as ErrorBoundary,Fo as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{D as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js";var t=e(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-Cyuzqnbw.js";import{f as t}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js";import{$ as n,X as r,ct as i}from"./active-backend-context-IqOjobNK.js";import{t as a}from"./proxy-9Z_WZggZ.js";async function o(e,t=3,n=500){for(let r=0;r<t;r+=1)try{return await e()}catch(e){if(r>=t-1)throw e;let i=n*2**r;await new Promise(e=>{setTimeout(e,i)})}throw Error(`Retry attempts exhausted`)}var s=100;function c(){let e=i().backend;if(e.kind!==`cloud`)throw Error(`Cloud secrets call requires a cloud backend.`);return e}async function l(){let e=c(),t=[],n=null;do{let r=new URLSearchParams({limit:String(s)});n&&r.set(`page_id`,n);let i=await a({backend:e,method:`GET`,path:`/api/v1/secrets/search?${r.toString()}`});t.push(...i.items??[]),n=i.next_page_id}while(n);return t}async function u({name:e,value:t,description:n,previousName:r}){let i=c();r!==void 0&&await o(()=>a({backend:i,method:`PUT`,path:`/api/v1/secrets/${encodeURIComponent(r)}`,body:{name:e,description:n}})),t!==void 0&&await o(()=>a({backend:i,method:`POST`,path:`/api/v1/secrets`,body:{name:e,value:t,description:n}}))}async function d(e){await a({backend:c(),method:`DELETE`,path:`/api/v1/secrets/${encodeURIComponent(e)}`})}var f=e({SecretsService:()=>p}),p=class{static async getSecrets(){try{return i().backend.kind===`cloud`?await o(()=>l()):(await o(()=>new t(n()).listSecrets())).secrets.map(e=>({name:e.name,description:e.description}))}catch(e){return console.error(`Failed to fetch secrets after retries:`,e),[]}}static async createSecret(e,r,a){if(i().backend.kind===`cloud`){await u({name:e,value:r,description:a});return}await o(()=>new t(n()).upsertSecret({name:e,value:r,description:a}))}static async updateSecret(e,r,a,s){if(i().backend.kind===`cloud`){await u({name:r,value:s,description:a,previousName:e});return}let c=new t(n()),l=s??await o(()=>c.getSecret(e));await o(()=>c.upsertSecret({name:r,value:l,description:a})),r!==e&&await this.deleteSecret(e)}static async deleteSecret(e){try{if(i().backend.kind===`cloud`){await o(()=>d(e));return}await o(()=>new t(n()).deleteSecret(e))}catch(e){if(r(e,404)||e&&typeof e==`object`&&`response`in e&&e.response?.status===404)return;throw e}}};export{f as n,p as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{U as r}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~lq5hicxx-cHFhpUBq.js";import{n as i}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dh9v73sa-rfV8mQ9m.js";import{t as a}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-D5DWZVc7.js";import{t as o}from"./useMutation-BFDQmgk9.js";import{t as s,z as c}from"./utils-zxEjKE70.js";import{t as l}from"./back-nav-button-HHEneWMw.js";import{t as u}from"./pencil-BGOCPRyu.js";import{t as d}from"./trash-2-C0xNVp9c.js";import{t as f}from"./loading-spinner-xhnrGP4Y.js";import{f as p,l as m}from"./form-control-classes-7yFSQJq_.js";import{t as h}from"./brand-button-swT1RyO0.js";import{n as g,t as _}from"./settings-input-Cz62hWVW.js";import{t as v}from"./confirmation-modal-BgoN6lbN.js";import{r as y}from"./typography-NOKSk9_R.js";import"./extension-module-card-classes-Bo43vY5V.js";import{a as b,c as x,i as S,l as C,o as w,r as T,s as E}from"./settings-list-classes-z_3FW5H3.js";import{t as D}from"./secrets-service-B26R61C1.js";import{n as O,t as k}from"./use-create-secret-2zBlCDsF.js";var A=e(t(),1),j=()=>o({mutationFn:e=>D.deleteSecret(e)}),M=()=>o({mutationFn:({secretToEdit:e,name:t,description:n,value:r})=>D.updateSecret(e,t,n,r)}),N=n();function P({mode:e,selectedSecret:t,onCancel:n}){let r=i(),{t:o}=a(`openhands`),{data:l}=O(),{mutate:u}=k(),{mutate:d}=M(),[f,v]=A.useState(null),y=e===`edit`&&t&&l?.find(e=>e.name===t)?.description?.trim()||``,b=()=>{r.invalidateQueries({queryKey:[`secrets-search`]}),r.invalidateQueries({queryKey:[`secrets`]})},x=(e,t,r)=>{u({name:e,value:t,description:r},{onSettled:n,onSuccess:b})},S=(e,t,r,i)=>{d({secretToEdit:e,name:t,description:r,value:i},{onSettled:n,onSuccess:b})};return(0,N.jsxs)(`form`,{"data-testid":e===`add`?`add-secret-form`:`edit-secret-form`,onSubmit:n=>{n.preventDefault();let r=new FormData(n.currentTarget),i=r.get(`secret-name`)?.toString(),a=r.get(`secret-value`)?.toString().trim(),s=r.get(`secret-description`)?.toString();if(i){if(v(null),l?.some(e=>e.name===i&&e.name!==t)){v(o(c.SECRETS$SECRET_ALREADY_EXISTS));return}if(e===`add`){if(!a){v(o(c.SECRETS$SECRET_VALUE_REQUIRED));return}x(i,a,s||void 0)}else e===`edit`&&t&&S(t,i,s||void 0,a||void 0)}},className:`flex flex-col items-start gap-6`,children:[(0,N.jsx)(_,{testId:`name-input`,name:`secret-name`,type:`text`,label:o(c.SETTINGS$NAME),className:`w-full min-w-0`,required:!0,defaultValue:e===`edit`&&t?t:``,placeholder:o(c.SECRETS$API_KEY_EXAMPLE),pattern:`^[a-zA-Z][a-zA-Z0-9_]{0,63}$`,title:o(c.SETTINGS$SECRET_NAME_PATTERN_TITLE)}),f&&(0,N.jsx)(`p`,{className:`text-red-500 text-sm`,children:f}),(0,N.jsxs)(`label`,{className:`flex flex-col gap-2.5 w-full min-w-0`,children:[(0,N.jsx)(`span`,{className:`text-sm`,children:o(e===`add`?c.FORM$VALUE:c.SECRETS$SECRET_VALUE_LEAVE_BLANK)}),(0,N.jsx)(`textarea`,{"data-testid":`value-input`,name:`secret-value`,required:e===`add`,className:s(`resize-none`,m,`placeholder:italic`,`disabled:bg-[var(--oh-surface-raised)] disabled:border-[var(--oh-border-subtle)] disabled:cursor-not-allowed`),rows:8})]}),(0,N.jsxs)(`label`,{className:`flex flex-col gap-2.5 w-full min-w-0`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(`span`,{className:`text-sm`,children:o(c.FORM$DESCRIPTION)}),(0,N.jsx)(g,{})]}),(0,N.jsx)(`input`,{"data-testid":`description-input`,name:`secret-description`,defaultValue:y,className:s(p,`disabled:bg-[var(--oh-surface-raised)] disabled:border-[var(--oh-border-subtle)]`)})]}),(0,N.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,N.jsx)(h,{testId:`cancel-button`,type:`button`,variant:`secondary`,onClick:n,children:o(c.BUTTON$CANCEL)}),(0,N.jsxs)(h,{testId:`submit-button`,type:`submit`,variant:`primary`,children:[e===`add`&&o(c.SECRETS$ADD_SECRET),e===`edit`&&o(c.SECRETS$EDIT_SECRET)]})]})]})}function F(){return(0,N.jsxs)(`div`,{className:s(S,`justify-between border-t border-[var(--oh-border)] first:border-t-0`),children:[(0,N.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-4`,children:[(0,N.jsx)(`span`,{className:`skeleton h-4 w-1/4`}),(0,N.jsx)(`span`,{className:`skeleton h-4 w-1/2`})]}),(0,N.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,N.jsx)(`span`,{className:`skeleton h-4 w-4`}),(0,N.jsx)(`span`,{className:`skeleton h-4 w-4`})]})]})}function I({title:e,description:t,onEdit:n,onDelete:r}){return(0,N.jsxs)(`tr`,{"data-testid":`secret-item`,className:C,children:[(0,N.jsx)(`td`,{className:s(w,`text-content-2 truncate`),title:e,children:e}),(0,N.jsx)(`td`,{className:s(w,`truncate text-content-2 opacity-80`),title:t||``,children:t||``}),(0,N.jsx)(`td`,{className:w,children:(0,N.jsxs)(`div`,{className:`flex items-center justify-end gap-0.5`,children:[(0,N.jsx)(`button`,{"data-testid":`edit-secret-button`,type:`button`,onClick:n,"aria-label":`Edit ${e}`,className:T,children:(0,N.jsx)(u,{"aria-hidden":!0,className:`size-4`,strokeWidth:2})}),(0,N.jsx)(`button`,{"data-testid":`delete-secret-button`,type:`button`,onClick:r,"aria-label":`Delete ${e}`,className:T,children:(0,N.jsx)(d,{"aria-hidden":!0,className:`size-4`,strokeWidth:2})})]})})]})}var L={hideTitle:!0};function R(){let e=i(),{t}=a(`openhands`),n=(0,A.useRef)(null),{data:r,isLoading:o,hasNextPage:u,isFetchingNextPage:d,onLoadMore:p}=O(),{mutate:m}=j(),[g,_]=A.useState(`list`),[S,C]=A.useState(null),[w,T]=A.useState(!1),D=(0,A.useCallback)(e=>{let t=e.currentTarget;t.scrollHeight-t.scrollTop<=t.clientHeight+100&&u&&!d&&p()},[u,d,p]),k=()=>{e.invalidateQueries({queryKey:[`secrets-search`]}),e.invalidateQueries({queryKey:[`secrets`]})},M=e=>{m(e,{onSettled:()=>{T(!1)},onSuccess:k,onError:k})},L=()=>{S&&M(S)},R=()=>{T(!1)},z=()=>{_(`list`),C(null)},B=g===`add-secret-form`||g===`edit-secret-form`,V=t(g===`add-secret-form`?c.SECRETS$ADD_A_SECRET:c.SECRETS$EDIT_A_SECRET);return(0,N.jsxs)(`div`,{"data-testid":`secrets-settings-screen`,className:`flex flex-col gap-6`,children:[g===`list`?(0,N.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,N.jsxs)(`div`,{className:`min-w-0 space-y-1`,children:[(0,N.jsx)(y.H2,{children:t(c.SETTINGS$NAV_SECRETS)}),(0,N.jsx)(`p`,{"data-testid":`settings-page-subtitle`,className:`text-sm leading-5 text-tertiary-light`,children:t(c.SETTINGS$PAGE_SECRETS_SUBLINE)})]}),(0,N.jsx)(h,{testId:`add-secret-button`,type:`button`,variant:`primary`,className:`shrink-0 whitespace-nowrap`,onClick:()=>_(`add-secret-form`),isDisabled:o,children:t(c.SECRETS$ADD_NEW_SECRET)})]}):null,B?(0,N.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,N.jsx)(l,{testId:`back-to-secrets`,onClick:z,children:t(c.BUTTON$BACK)}),(0,N.jsx)(y.H2,{testId:`secret-editor-title`,children:V})]}):null,o&&g===`list`&&(0,N.jsxs)(`ul`,{children:[(0,N.jsx)(F,{}),(0,N.jsx)(F,{}),(0,N.jsx)(F,{})]}),g===`list`&&!o&&r?.length===0&&(0,N.jsx)(`div`,{"data-testid":`secrets-empty`,className:`rounded-xl border border-[var(--oh-border)] p-8 text-center`,children:(0,N.jsx)(`p`,{className:`text-sm text-[var(--oh-muted)]`,children:t(c.SECRETS$EMPTY)})}),g===`list`&&!o&&(r?.length??0)>0&&(0,N.jsxs)(`div`,{ref:n,className:b,onScroll:D,children:[(0,N.jsxs)(`table`,{className:`w-full min-w-full table-fixed`,children:[(0,N.jsx)(`thead`,{className:E,children:(0,N.jsxs)(`tr`,{children:[(0,N.jsx)(`th`,{className:s(x,`w-1/4`),children:t(c.SETTINGS$NAME)}),(0,N.jsx)(`th`,{className:s(x,`w-1/2`),children:t(c.SECRETS$DESCRIPTION)}),(0,N.jsx)(`th`,{className:s(x,`w-1/4 text-right`),children:t(c.SETTINGS$ACTIONS)})]})}),(0,N.jsx)(`tbody`,{children:r?.map(e=>(0,N.jsx)(I,{title:e.name,description:e.description,onEdit:()=>{_(`edit-secret-form`),C(e.name)},onDelete:()=>{T(!0),C(e.name)}},e.name))})]}),d&&(0,N.jsx)(`div`,{className:`flex justify-center p-4`,children:(0,N.jsx)(f,{size:`small`})})]}),(g===`add-secret-form`||g===`edit-secret-form`)&&(0,N.jsx)(P,{mode:g===`add-secret-form`?`add`:`edit`,selectedSecret:S,onCancel:z}),w&&(0,N.jsx)(v,{text:t(c.SECRETS$CONFIRM_DELETE_KEY),onConfirm:L,onCancel:R})]})}var z=r(R);export{z as default,L as handle};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{t as r}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-D5DWZVc7.js";import{o as i}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js";import{t as a}from"./useQuery-DRv--6bK.js";import{$ as o,n as s}from"./active-backend-context-IqOjobNK.js";import{t as c,z as l}from"./utils-zxEjKE70.js";import{r as u}from"./vendor~index-home~home~conversation-panel~conversation-Ipoe6hvY.js";import{d}from"./git-provider-icon-BvlLAche.js";import{t as f}from"./info-BRVcJAUg.js";import{t as p}from"./loader-circle-B47W9XqT.js";import{t as m}from"./refresh-cw-CXtFWpwv.js";import{t as h}from"./brand-button-swT1RyO0.js";import{t as g}from"./styled-tooltip-BUMSbgrF.js";import{d as _,f as v,p as y,u as b}from"./llm-not-configured-banner-DLw_tu-G.js";import{J as x,p as S}from"./markdown-renderer-DUmk7pFc.js";import{t as C}from"./conversation-tab-empty-state-CMqo_0Bd.js";var w=e(t(),1);function T(e=!0){let t=S(e=>e.cost),n=S(e=>e.max_budget_per_task),r=S(e=>e.usage),{data:i}=x(),{data:a}=y(i?.id,i?.conversation_url,i?.session_api_key,e);return(0,w.useMemo)(()=>t!==null||r!==null?{cost:t,max_budget_per_task:n,usage:r}:a?{cost:a.accumulated_cost,max_budget_per_task:a.max_budget_per_task,usage:a.accumulated_token_usage?{prompt_tokens:a.accumulated_token_usage.prompt_tokens??0,completion_tokens:a.accumulated_token_usage.completion_tokens??0,cache_read_tokens:a.accumulated_token_usage.cache_read_tokens??0,cache_write_tokens:a.accumulated_token_usage.cache_write_tokens??0,context_window:a.accumulated_token_usage.context_window??0,per_turn_token:a.accumulated_token_usage.per_turn_token??0}:null}:{cost:null,max_budget_per_task:null,usage:null},[a,t,n,r])}var E=n();function D({currentCost:e,maxBudget:t}){let n=e/t*100;return(0,E.jsx)(`div`,{className:`relative mt-1 h-1.5 w-full rounded-full bg-tertiary`,children:(0,E.jsx)(`div`,{className:c(`absolute inset-y-0 left-0 rounded-full transition-all duration-300`,n>80?`bg-red-500`:`bg-blue-500`),style:{width:`${Math.min(100,n)}%`}})})}function O({currentCost:e,maxBudget:t}){let{t:n}=r(`openhands`),i=e/t*100;return(0,E.jsx)(`div`,{className:`flex justify-end`,children:(0,E.jsx)(`span`,{className:`text-xs text-[var(--oh-muted)]`,children:n(l.CONVERSATION$BUDGET_USAGE_FORMAT,{currentCost:`$${e.toFixed(4)}`,maxBudget:`$${t.toFixed(4)}`,usagePercentage:i.toFixed(2),used:n(l.CONVERSATION$USED)})})})}function k({cost:e,maxBudgetPerTask:t}){let{t:n}=r(`openhands`);return e===null?null:(0,E.jsx)(`div`,{children:t!==null&&t>0?(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(D,{currentCost:e,maxBudget:t}),(0,E.jsx)(O,{currentCost:e,maxBudget:t})]}):(0,E.jsx)(`span`,{className:`text-xs text-[var(--oh-muted)]`,children:n(l.CONVERSATION$NO_BUDGET_LIMIT)})})}function A({cost:e,maxBudgetPerTask:t}){let{t:n}=r(`openhands`);return e===null?null:(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(k,{cost:e,maxBudgetPerTask:t}),(0,E.jsxs)(`div`,{className:`flex justify-between items-center border-t border-[var(--oh-border-subtle)] pt-2`,children:[(0,E.jsx)(`span`,{className:`font-semibold`,children:n(l.CONVERSATION$TOTAL_COST)}),(0,E.jsxs)(`span`,{className:`font-semibold`,children:[`$`,e.toFixed(4)]})]})]})}function j({label:e,value:t,labelClassName:n=``,valueClassName:r=`font-semibold`,showBorder:i=!0}){return(0,E.jsxs)(`div`,{className:c(`flex justify-between items-center pb-2`,i&&`border-b border-[var(--oh-border-subtle)]`),children:[(0,E.jsx)(`span`,{className:n,children:e}),(0,E.jsx)(`span`,{className:r,children:t})]})}function M({usage:e}){let{t}=r(`openhands`);return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(j,{label:t(l.CONVERSATION$INPUT),value:e.prompt_tokens.toLocaleString()}),(0,E.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 pl-4 text-sm`,children:[(0,E.jsx)(`span`,{className:`text-[var(--oh-muted)]`,children:t(l.CONVERSATION$CACHE_HIT)}),(0,E.jsx)(`span`,{className:`text-right`,children:e.cache_read_tokens.toLocaleString()}),(0,E.jsx)(`span`,{className:`text-[var(--oh-muted)]`,children:t(l.CONVERSATION$CACHE_WRITE)}),(0,E.jsx)(`span`,{className:`text-right`,children:e.cache_write_tokens.toLocaleString()})]}),(0,E.jsx)(j,{label:t(l.CONVERSATION$OUTPUT),value:e.completion_tokens.toLocaleString()}),(0,E.jsx)(j,{label:t(l.CONVERSATION$TOTAL),value:(e.prompt_tokens+e.completion_tokens).toLocaleString(),labelClassName:`font-semibold`,valueClassName:`font-bold`,showBorder:!1})]})}function N({fillPercent:e,perTurnToken:t=0}){let{t:n}=r(`openhands`),{handleCompact:i,isCompacting:a,isDisabled:o,description:s}=_(t),c=e>70;return(0,E.jsxs)(`div`,{"data-testid":`compact-context-section`,className:`flex flex-col gap-2 border-t border-[var(--oh-border-subtle)] pt-3`,children:[c&&(0,E.jsx)(`span`,{className:`text-xs text-amber-500`,children:n(l.CONVERSATION$CONTEXT_FILLING_UP)}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(h,{testId:`compact-context-button`,type:`button`,variant:c?`primary`:`secondary`,isDisabled:o,"aria-busy":a,onClick:i,startContent:a?(0,E.jsx)(p,{className:`h-4 w-4 animate-spin`,"aria-hidden":!0}):(0,E.jsx)(u,{className:`h-4 w-4`,"aria-hidden":!0}),className:`w-fit`,children:n(l.CONVERSATION$COMPACT_CONTEXT)}),(0,E.jsx)(g,{content:s,placement:`top`,tooltipClassName:`max-w-[220px] text-xs font-normal leading-relaxed whitespace-normal`,children:(0,E.jsx)(`button`,{type:`button`,"data-testid":`compact-context-info`,"aria-label":s,className:`flex size-5 shrink-0 items-center justify-center rounded-full text-[var(--oh-muted)] hover:text-[var(--oh-foreground)] transition-colors cursor-help`,children:(0,E.jsx)(f,{className:`size-3.5`,"aria-hidden":!0})})})]})]})}var P=`/api/llm/balance`,F=1e4;function I(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function L(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function R(e){return I(e)&&(e.name===`TimeoutError`||e.name===`AbortError`)}function z(e){return!I(e)||typeof e.provider!=`string`?null:{provider:e.provider,limit:L(e.limit),limitRemaining:L(e.limit_remaining),usage:L(e.usage)??0,usageDaily:L(e.usage_daily),usageWeekly:L(e.usage_weekly),usageMonthly:L(e.usage_monthly),isFreeTier:e.is_free_tier===!0}}var B=class{static async getBalance(){let{host:e,apiKey:t}=o(),n=new i({host:e,apiKey:t,timeout:F});try{return z(await n.get(P,{acceptableStatusCodes:new Set([200]),responseType:`json`,timeoutSeconds:Math.floor(F/1e3)}))}catch(e){if(e instanceof Error&&`status`in e&&e.status===404)return null;if(R(e))throw Error(`Balance request timed out after ${F}ms`);let t=e instanceof Error&&`status`in e&&e.status;throw Error(t?`Balance request failed with ${t}`:`Balance request failed: ${e instanceof Error?e.message:String(e)}`)}finally{n.close()}}},V=e=>{let{backend:t}=s();return a({queryKey:[`llm-balance`,t.id,e],queryFn:()=>B.getBalance(),enabled:t.kind!==`cloud`&&!!e,staleTime:1/0,gcTime:1e3*60*5,retry:!1,refetchOnWindowFocus:!1})};function H(e){return`$${e.toFixed(2)}`}function U(){let{t:e}=r(`openhands`),{data:t}=x(),{data:n,isError:i,isFetching:a,refetch:o}=V(t?.id);if(!n||i)return null;let s=n.limit!==null&&n.limitRemaining!==null;return(0,E.jsxs)(`div`,{"data-testid":`provider-balance-card`,className:`rounded-md border border-[var(--oh-border)] bg-surface-raised p-3`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between pb-2`,children:[(0,E.jsx)(`span`,{className:`font-semibold`,children:e(l.CONVERSATION$PROVIDER_BALANCE)}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsxs)(`span`,{className:`text-xs text-[var(--oh-muted)]`,children:[n.provider,n.isFreeTier?` · ${e(l.CONVERSATION$FREE_TIER)}`:null]}),(0,E.jsx)(`button`,{type:`button`,"data-testid":`provider-balance-refresh`,"aria-label":e(l.BUTTON$REFRESH),disabled:a,onClick:()=>o(),className:`cursor-pointer text-[var(--oh-muted)] hover:text-[var(--oh-foreground)] disabled:cursor-default`,children:(0,E.jsx)(m,{className:c(`h-3.5 w-3.5`,a&&`animate-spin`)})})]})]}),(0,E.jsxs)(`div`,{className:`grid gap-3`,children:[s?(0,E.jsx)(j,{label:e(l.CONVERSATION$CREDITS_REMAINING),value:H(n.limitRemaining??0)}):null,(0,E.jsx)(j,{label:e(l.CONVERSATION$CREDITS_USED),value:H(n.usage),valueClassName:s?``:`font-semibold`,labelClassName:s?`text-[var(--oh-muted)]`:``})]})]})}function W(){let{t:e}=r(`openhands`),t=T(),{data:n}=x(),i=n?.agent_kind===`acp`,{usage:a}=t;return t.cost!==null||a!==null?(0,E.jsxs)(`main`,{"data-testid":`usage-panel`,className:`h-full overflow-y-auto custom-scrollbar-always flex flex-col gap-3 p-3`,children:[a!==null&&(0,E.jsx)(`div`,{className:`rounded-md border border-[var(--oh-border)] bg-surface-raised p-3`,children:(0,E.jsxs)(`div`,{className:`grid gap-3`,children:[(0,E.jsx)(b,{perTurnToken:a.per_turn_token,contextWindow:a.context_window}),(0,E.jsx)(N,{fillPercent:v(a.per_turn_token,a.context_window),perTurnToken:a.per_turn_token})]})}),(0,E.jsx)(`div`,{className:`rounded-md border border-[var(--oh-border)] bg-surface-raised p-3`,children:(0,E.jsxs)(`div`,{className:`grid gap-3`,children:[(0,E.jsx)(`div`,{className:`flex justify-between items-center pb-2`,children:(0,E.jsx)(`span`,{className:`text-lg font-semibold`,children:e(l.CONVERSATION$TOKEN_USAGE)})}),i&&(0,E.jsx)(`span`,{className:`text-xs text-[var(--oh-muted)]`,children:e(l.CONVERSATION$PLAN_USAGE_NOTE)}),a!==null&&(0,E.jsx)(M,{usage:a}),(0,E.jsx)(A,{cost:t.cost,maxBudgetPerTask:t.max_budget_per_task})]})}),(0,E.jsx)(U,{})]}):(0,E.jsx)(C,{icon:(0,E.jsx)(d,{}),children:e(l.CONVERSATION$NO_METRICS)})}function G(){return(0,E.jsx)(W,{})}export{G as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{n as r}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dh9v73sa-rfV8mQ9m.js";import{t as i}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-D5DWZVc7.js";import{y as a}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js";import{t as o}from"./useQuery-DRv--6bK.js";import{$ as s,At as c,Nt as l,Pt as u,jt as d,n as f}from"./active-backend-context-IqOjobNK.js";import{t as p,z as m}from"./utils-zxEjKE70.js";import{t as h}from"./check-WAFXrrs_.js";import{t as g}from"./loader-circle-B47W9XqT.js";import{l as _}from"./form-control-classes-7yFSQJq_.js";import{n as v,t as y}from"./settings-input-Cz62hWVW.js";import{a as b,l as x}from"./acp-providers-D1PORKc0.js";import{n as S,t as C}from"./use-create-secret-2zBlCDsF.js";var w=e(t(),1),T=n();function E({conflicts:e}){let{t}=i(`openhands`);return(0,T.jsx)(T.Fragment,{children:e.map(([e,n])=>(0,T.jsx)(`p`,{"data-testid":`acp-credential-conflict-warning`,className:`text-sm text-amber-300`,children:t(m.SETTINGS$ACP_CREDENTIAL_CONFLICT_WARNING,{credential:e,conflicting:n})},`${e}:${n}`))})}function D({status:e,isChecking:t,providerName:n,testIdPrefix:r}){let{t:a}=i(`openhands`);return e===`authenticated`?(0,T.jsxs)(`div`,{"data-testid":`${r}-detected`,className:`flex items-start gap-2 rounded-xl border border-green-500/40 bg-green-500/10 px-4 py-3 text-sm text-green-200`,children:[(0,T.jsx)(h,{className:`mt-0.5 size-4 shrink-0 text-green-400`,"aria-hidden":!0}),(0,T.jsx)(`span`,{children:a(m.ONBOARDING$ACP_AUTH_DETECTED,{provider:n})})]}):t?(0,T.jsxs)(`div`,{"data-testid":`${r}-checking`,className:`flex items-center gap-2 text-sm text-[var(--oh-muted)]`,children:[(0,T.jsx)(g,{className:`size-4 shrink-0 animate-spin`,"aria-hidden":!0}),(0,T.jsx)(`span`,{children:a(m.ONBOARDING$ACP_AUTH_CHECKING,{provider:n})})]}):null}function O({field:e,value:t,onChange:n,alreadySet:r,testId:a,showOptionalTag:o}){let{t:s}=i(`openhands`),c=r?s(m.ONBOARDING$ACP_SECRET_ALREADY_SET):``;return(0,T.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[e.multiline?(0,T.jsxs)(`label`,{className:`flex flex-col gap-2.5`,children:[(0,T.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(`span`,{className:`text-sm font-mono text-white`,children:e.name}),o&&(0,T.jsx)(v,{})]}),(0,T.jsx)(`textarea`,{"data-testid":a,name:e.name,rows:4,spellCheck:!1,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`,value:t,placeholder:c,onChange:e=>n(e.target.value),className:p(_,`font-mono text-xs`)})]}):(0,T.jsx)(y,{testId:a,name:e.name,label:e.name,labelClassName:`font-mono`,type:e.secret?`password`:`text`,value:t,onChange:n,showOptionalTag:o,placeholder:c}),(0,T.jsx)(`span`,{className:`text-xs text-[var(--oh-muted)]`,children:s(e.hint_key,e.hint_values)})]})}var k=10;function A(e){return`${e.stdout??``}\n${e.stderr??``}`}function j(e){let t;try{t=JSON.parse((e.stdout??``).trim())}catch{return`unknown`}let n=t?.loggedIn;return typeof n==`boolean`?n?`authenticated`:`unauthenticated`:`unknown`}function M(e){let t=A(e).toLowerCase();return t.includes(`not logged in`)?`unauthenticated`:t.includes(`logged in`)?`authenticated`:`unknown`}function N(e){let t=(e.stdout??``).trim();return t===`present`?`authenticated`:t===`absent`?`unauthenticated`:`unknown`}var P={"claude-code":{command:`claude auth status --json`,classify:j},codex:{command:`codex login status`,classify:M},"gemini-cli":{command:`test -f "$HOME/.gemini/oauth_creds.json" && echo present || echo absent`,classify:N}},F=class{static async getAuthStatus(e){let t=P[e];if(!t)return`unknown`;let n=await new a(s()).executeCommand(t.command,void 0,k);return t.classify(n)}};async function I(e){try{return await F.getAuthStatus(e)}catch{return`unknown`}}function L(e,t={}){let{enabled:n=!0}=t,r=f(),i=r.backend.kind===`local`,a=n&&i&&!!e,s=o({queryKey:[`acp-auth-status`,r.backend.id,e],queryFn:()=>I(e),enabled:a,staleTime:1/0,gcTime:1e3*60*15,retry:!1,refetchOnWindowFocus:!1,refetchOnMount:!1});return{status:s.data??`unknown`,isChecking:a&&s.isFetching&&s.data===void 0,isSupported:i}}function R(e,t){let{t:n}=i(`openhands`),a=r(),{mutateAsync:o}=C(),[s,f]=w.useState(!1);return{saveFilled:async(r,{silent:i=!1}={})=>{let s=e.map(e=>({field:e,value:r[e.name]?.trim()})).filter(e=>!!e.value);if(s.length===0)return!0;f(!0);try{for(let{field:e,value:t}of s)await o({name:e.name,value:t});return await a.invalidateQueries({queryKey:[`secrets-search`]}),await a.invalidateQueries({queryKey:[`secrets`]}),!t&&s.some(({field:e})=>e.multiline)?l(n(m.ONBOARDING$ACP_SECRETS_ORPHANED_WARNING)):i||d(n(m.SETTINGS$SAVED)),!0}catch(e){return c(u(e)||n(m.ERROR$GENERIC)),!1}finally{f(!1)}},isSaving:s}}function z(e){let{data:t}=S(),n=w.useMemo(()=>x(e),[e]),[r,i]=w.useState({}),{saveFilled:a,isSaving:o}=R(n,!0);w.useEffect(()=>{i({})},[e]);let s=w.useCallback(e=>(t??[]).some(t=>t.name===e),[t]),c=w.useCallback(e=>!!r[e]?.trim()||s(e),[r,s]),l=w.useCallback((e,t)=>i(n=>({...n,[e]:t})),[]),u=w.useCallback(()=>i({}),[]);return{fields:n,values:r,setValue:l,secretExists:s,hasValueFor:c,conflicts:b(e,c),consumesFileCredentials:!0,isDirty:n.some(e=>!!r[e.name]?.trim()),save:e=>a(r,e),reset:u,isSaving:o}}export{E as a,D as i,L as n,O as r,z as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{x as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js";import{t}from"./useQuery-DRv--6bK.js";import{$ as n,A as r,M as i,ct as a,k as o,n as s}from"./active-backend-context-IqOjobNK.js";import{t as c}from"./proxy-9Z_WZggZ.js";var l=`/api/agent-profiles`;function u(){let e=a().backend;if(e.kind!==`cloud`)throw Error(`Cloud agent-profile call requires a cloud backend.`);return e}async function d(){return c({backend:u(),method:`GET`,path:l})}async function f(e){return c({backend:u(),method:`GET`,path:`${l}/${encodeURIComponent(e)}`})}async function p(e,t){return c({backend:u(),method:`POST`,path:`${l}/${encodeURIComponent(e)}`,body:t})}async function m(e){return c({backend:u(),method:`DELETE`,path:`${l}/${encodeURIComponent(e)}`})}async function h(e,t){return c({backend:u(),method:`POST`,path:`${l}/${encodeURIComponent(e)}/rename`,body:{new_name:t}})}async function g(e){return c({backend:u(),method:`POST`,path:`${l}/${encodeURIComponent(e)}/activate`,body:{}})}function _(){return a().backend.kind===`cloud`}var v=`default`,y=class{static async listProfiles(){return _()?d():new e(n()).listAgentProfiles()}static async getProfile(t,r){if(_())return f(t);let i=r?{exposeSecrets:r}:{};return new e(n()).getAgentProfile(t,i)}static async saveProfile(t,r){return _()?p(t,r):new e(n()).saveAgentProfile(t,r)}static async deleteProfile(t){return _()?m(t):new e(n()).deleteAgentProfile(t)}static async renameProfile(t,r){return _()?h(t,r):new e(n()).renameAgentProfile(t,r)}static async activateProfile(t){return _()?g(t):new e(n()).activateAgentProfile(t)}};function b(e={}){let{backend:n,orgId:a}=s();return t({queryKey:[...o.all,n.id,a],queryFn:y.listProfiles,...i,...r,enabled:e.enabled??!0,meta:{disableToast:!0}})}export{y as n,v as r,b as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js";import{t}from"./useQuery-DRv--6bK.js";import{$ as n,J as r,K as i,L as a,M as o,Z as s}from"./active-backend-context-IqOjobNK.js";var c=class{static async getModels(){let t=new e(n()),[r,i,a]=await Promise.all([t.getModels(),t.getVerifiedModels(),t.getProviders()]),o=Object.keys(i??{}).sort(),s=o.flatMap(e=>i[e]??[]);return{models:r??[],verified_models:s,verified_providers:a?.filter(e=>o.includes(e))??o,default_model:s[0]??r?.[0]??``}}static async getConfig(){return await s(),{feature_flags:{hide_llm_settings:!1,hide_users_page:!0},providers_configured:[],maintenance_start_time:null,recaptcha_site_key:null,faulty_models:[],error_message:null,updated_at:new Date().toISOString()}}},l=e=>t({queryKey:a.WEB_CLIENT_CONFIG,queryFn:c.getConfig,retry:(e,t)=>!r(t)&&!i(t)&&e<3,meta:{disableToast:!0},...o,enabled:e?.enabled});export{c as n,l as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t}from"./vendor-styling-Ck5D_A2Q.js";import{t as n}from"./useMutation-BFDQmgk9.js";import{t as r}from"./useQuery-DRv--6bK.js";import{n as i}from"./active-backend-context-IqOjobNK.js";import{t as a}from"./secrets-service-B26R61C1.js";var o=e(t(),1),s=(e={})=>{let{nameContains:t,enabled:n=!0}=e,s=i(),c=r({queryKey:[`secrets`,s.backend.id,s.orgId],queryFn:a.getSecrets,enabled:n,staleTime:1e3*60*5,gcTime:1e3*60*15});return{data:(0,o.useMemo)(()=>{if(!c.data)return[];if(!t)return c.data;let e=t.toLowerCase();return c.data.filter(t=>t.name.toLowerCase().includes(e))},[c.data,t]),isLoading:c.isLoading,isError:c.isError,hasNextPage:!1,isFetchingNextPage:!1,fetchNextPage:()=>{},onLoadMore:()=>{},refetch:c.refetch}},c=()=>n({mutationFn:({name:e,value:t,description:n})=>a.createSecret(e,t,n)});export{s as n,c as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./useQuery-DRv--6bK.js";var t=()=>e({queryKey:[`user`,`authenticated`],queryFn:async()=>!0,staleTime:1e3*60*5,gcTime:1e3*60*15,retry:!1,meta:{disableToast:!0}});export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t}from"./vendor-styling-Ck5D_A2Q.js";import{S as n,n as r,u as i}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dh9v73sa-rfV8mQ9m.js";import{n as a}from"./navigation-context-CQZwH_tC.js";var o=e(t(),1);function s(e,t){let n=r(t);return l({filters:{...e,status:`pending`}},n).length}function c(e,t){return e.findAll(t.filters).map(e=>t.select?t.select(e):e.state)}function l(e={},t){let a=r(t).getMutationCache(),s=o.useRef(e),l=o.useRef(null);return l.current===null&&(l.current=c(a,e)),o.useEffect(()=>{s.current=e}),o.useSyncExternalStore(o.useCallback(e=>a.subscribe(()=>{let t=n(l.current,c(a,s.current));l.current!==t&&(l.current=t,i.schedule(e))}),[a]),()=>l.current,()=>l.current)}var u=()=>{let e=a(),t=s({mutationKey:[`create-conversation`]}),{isNavigating:n}=e;return t>0||n};export{s as n,u as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./useQuery-DRv--6bK.js";import{M as t,N as n,n as r}from"./active-backend-context-IqOjobNK.js";import{t as i}from"./profiles-service.api-DCMYxHMi.js";function a(a={}){let{backend:o,orgId:s}=r();return e({queryKey:[...n.all,o.id,s],queryFn:i.listProfiles,...t,enabled:a.enabled??!0,meta:{disableToast:!0}})}export{a as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{M as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js";import{t}from"./useQuery-DRv--6bK.js";import{n,z as r}from"./active-backend-context-IqOjobNK.js";import{n as i}from"./use-tracking-CVwPmhlX.js";function a(t){if(e.isAxiosError(t))return t.response?.data;if(t instanceof Error&&`response`in t)return t.response}function o(e,t){let n=a(e);if(n&&typeof n==`object`){let{message:e,detail:t}=n;if(typeof e==`string`&&e)return e;if(typeof t==`string`&&t)return t}return e instanceof Error&&e.message?e.message:t}function s(e,t){return t.filter(t=>!e.includes(t))}function c(e,t){if(!t.ready)return{supported:!1,unmet:[]};let n=[...s(t.features??[],e.requires.features??[]),...s(t.triggerKinds??[],Object.keys(e.setup.form.triggers??{}))];return{supported:n.length===0,unmet:n}}function l(){let{backend:e,orgId:a}=n();return t({queryKey:[...r.capabilities(),e.id,a],queryFn:()=>i.getCapabilities(),retry:!1,staleTime:1e3*60*5,meta:{disableToast:!0}})}function u(e){let t=l();if(t.isLoading)return{capabilities:null,supported:`unknown`,unmet:[],isLoading:!0};if(!t.data)return{capabilities:null,supported:`unknown`,unmet:[],isLoading:!1};let n=c(e,t.data);return{capabilities:t.data,supported:n.supported,unmet:n.unmet,isLoading:!1}}export{o as i,u as n,a as r,l as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dh9v73sa-rfV8mQ9m.js";import{t}from"./useMutation-BFDQmgk9.js";import{k as n}from"./active-backend-context-IqOjobNK.js";import{n as r}from"./use-agent-profiles-Cb2zUW3l.js";function i(){let i=e();return t({mutationFn:({name:e,profile:t})=>r.saveProfile(e,t),onSuccess:async()=>{await i.invalidateQueries({queryKey:n.all})},meta:{disableToast:!0}})}export{i as t};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t}from"./vendor-styling-Ck5D_A2Q.js";import{M as n}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js";import{O as r,Q as i,T as a,W as o,a as s,b as c,ct as l,d as u,dt as ee,f as te,h as d,lt as ne,n as re,p as ie,w as ae}from"./active-backend-context-IqOjobNK.js";import{t as f}from"./proxy-9Z_WZggZ.js";import{t as oe}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~ht43enc2-C0JXQb_q.js";import{n as se,t as p}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~9pstowjp-BOVIFA_g.js";var m=e(t(),1),ce=new Map(oe.map(e=>[e.name,e]));function le(e){return Object.keys(e.requires.integrations)}function ue(e){return Object.entries(e.requires.integrations).filter(([,e])=>e.required!==!1).map(([e])=>e)}function h(e){return ce.get(e.skill??e.id)?.triggers[0]??null}function de(e){return h(e)??`Set up the ${e.name} automation`}var fe=[`form`,`automation`],pe=[`list`,`templates`],me=[`layout-dashboard`,`sparkles`,`bot`,`circle-alert`,`activity`,`timer`],he=[`automations`,`needs-attention`,`total-runs`,`average-duration`],ge={automations:[`active`],"needs-attention":[],"total-runs":[],"average-duration":[]},g={status:[`all`,`active`,`failing`,`disabled`],trigger:[`all`,`schedule`,`event`]},_e=Object.keys(g),ve=[`last-run`,`runs`,`name`],ye=/<[A-Za-z/!]/,be=/^[a-z0-9]+(-[a-z0-9]+)*$/,_=`https://docs.openhands.dev/`,xe=/^[a-z][a-z-]*$/,Se=/^\.[a-z][a-z.]*json$/,Ce=/^[a-z0-9][a-z0-9.-]*$/,we=/^\/[A-Za-z0-9/{}_-]*$/,Te=/^[^{}]*\{id\}[^{}]*$/,Ee=[`github`,`gitlab`,`bitbucket`],v={name:{type:`text`,required:!0},prompt:{type:`textarea`,required:!1},model:{type:`llm-profile`,required:!1},timeout:{type:`number`,required:!1},schedule:{type:`schedule`,required:!1}},De=Object.keys(v),y=[`list`,`health`,`capabilities`,`validate`,`createPrompt`,`createPlugin`],b=[`detail`,`dispatch`,`runs`,`tarball`];function x(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function S(e,t){return typeof e==`string`&&t.includes(e)}var Oe=class{errors=[];fail(e,t){return this.errors.push(`${e}: ${t}`),!1}copy(e,t){return typeof e!=`string`||e.length===0?this.fail(t,`must be a non-empty string`):ye.test(e)?this.fail(t,`must not contain markup`):!0}closed(e,t,n){Object.keys(e).filter(e=>!t.includes(e)).forEach(e=>this.fail(`${n}.${e}`,`is not allowed`))}record(e,t){return x(e)?!0:(this.fail(t,`must be an object`),!1)}};function ke(e,t,n){e.record(t,`routes`)&&(e.closed(t,[`list`,`setup`,`detail`,`templates`],`routes`),[`list`,`setup`,`detail`].forEach(r=>{t[r]!==n[r]&&e.fail(`routes.${r}`,`must be "${n[r]}"`)}),t.templates!==void 0&&t.templates!==n.templates&&e.fail(`routes.templates`,n.templates===void 0?`is not a route this host mounts`:`must be "${n.templates}"`))}function Ae(e,t){if(!Array.isArray(t)||t.length===0){e.fail(`navigation.subPages`,`must be a non-empty array`);return}let n=new Set;t.forEach((t,r)=>{let i=`navigation.subPages[${r}]`;if(!e.record(t,i))return;e.closed(t,[`page`,`label`,`icon`],i);let{page:a,label:o,icon:s}=t;S(a,pe)?n.has(a)?e.fail(`${i}.page`,`repeats a page`):n.add(a):e.fail(`${i}.page`,`is not a sub-page this host serves`),e.copy(o,`${i}.label`),je(e,s,`${i}.icon`)})}function je(e,t,n){S(t,me)||e.fail(n,`is not an icon this host ships`)}function Me(e,t){if(e.record(t,`navigation`)){if(e.closed(t,[`sidebar`,`commandMenu`,`subPages`],`navigation`),e.record(t.sidebar,`navigation.sidebar`)&&(e.closed(t.sidebar,[`label`],`navigation.sidebar`),e.copy(t.sidebar.label,`navigation.sidebar.label`)),e.record(t.commandMenu,`navigation.commandMenu`)){let n=t.commandMenu;e.closed(n,[`title`,`description`,`keywords`],`navigation.commandMenu`),e.copy(n.title,`navigation.commandMenu.title`),e.copy(n.description,`navigation.commandMenu.description`),e.copy(n.keywords,`navigation.commandMenu.keywords`)}t.subPages!==void 0&&Ae(e,t.subPages)}}function Ne(e,t){e.record(t,`pages`)&&(e.closed(t,[`list`,`detail`,`edit`,`templates`],`pages`),e.record(t.list,`pages.list`)&&(e.closed(t.list,[`title`,`subtitle`,`overview`,`filters`,`sort`,`insights`],`pages.list`),e.copy(t.list.title,`pages.list.title`),e.copy(t.list.subtitle,`pages.list.subtitle`),t.list.overview!==void 0&&Pe(e,t.list.overview),t.list.filters!==void 0&&Le(e,t.list.filters),t.list.sort!==void 0&&Be(e,t.list.sort),t.list.insights!==void 0&&Ve(e,t.list.insights)),e.record(t.detail,`pages.detail`)&&(e.closed(t.detail,[`backLabel`],`pages.detail`),e.copy(t.detail.backLabel,`pages.detail.backLabel`)),e.record(t.edit,`pages.edit`)&&(e.closed(t.edit,[`title`],`pages.edit`),e.copy(t.edit.title,`pages.edit.title`)),t.templates!==void 0&&He(e,t.templates))}function Pe(e,t){let n=`pages.list.overview`;if(!e.record(t,n))return;e.closed(t,[`label`,`tiles`],n),e.copy(t.label,`${n}.label`);let{tiles:r}=t;if(!Array.isArray(r)||r.length===0){e.fail(`${n}.tiles`,`must be a non-empty array`);return}let i=new Set;r.forEach((t,r)=>{Fe(e,t,i,`${n}.tiles[${r}]`)})}function Fe(e,t,n,r){if(!e.record(t,r))return;e.closed(t,[`metric`,`label`,`detail`,`zeroDetail`,`icon`],r);let{metric:i,label:a,detail:o,zeroDetail:s,icon:c}=t;if(e.copy(a,`${r}.label`),je(e,c,`${r}.icon`),!S(i,he)){e.fail(`${r}.metric`,`is not a metric this host computes`),e.copy(o,`${r}.detail`),s!==void 0&&e.copy(s,`${r}.zeroDetail`);return}n.has(i)?e.fail(`${r}.metric`,`repeats a metric`):n.add(i),Ie(e,o,i,`${r}.detail`),s!==void 0&&Ie(e,s,i,`${r}.zeroDetail`)}function Ie(e,t,n,r){if(!e.copy(t,r))return;let i=ge[n];(i.length===0?/\{\{/:RegExp(`\\{\\{(?!(?:${i.join(`|`)})\\}\\})`)).test(t)&&e.fail(r,`uses a placeholder this metric does not expose`)}function Le(e,t){let n=`pages.list.filters`;if(!Array.isArray(t)||t.length===0){e.fail(n,`must be a non-empty array`);return}let r=new Set;t.forEach((t,i)=>{Re(e,t,r,`${n}[${i}]`)})}function Re(e,t,n,r){if(!e.record(t,r))return;e.closed(t,[`id`,`label`,`options`],r);let{id:i,label:a,options:o}=t;if(e.copy(a,`${r}.label`),!S(i,_e)){e.fail(`${r}.id`,`is not a filter this host implements`);return}n.has(i)?e.fail(`${r}.id`,`repeats a filter`):n.add(i),ze(e,o,g[i],`${r}.options`)}function ze(e,t,n,r){if(!Array.isArray(t)||t.length<2){e.fail(r,`must offer at least two options`);return}let i=new Set;t.forEach((t,a)=>{let o=`${r}[${a}]`;if(!e.record(t,o))return;e.closed(t,[`value`,`label`],o);let{value:s,label:c}=t;S(s,n)?i.has(s)?e.fail(`${o}.value`,`repeats a value`):i.add(s):e.fail(`${o}.value`,`is not a value this host implements`),e.copy(c,`${o}.label`)}),i.has(`all`)||e.fail(r,`must offer the "all" option`)}function Be(e,t){let n=`pages.list.sort`;if(!e.record(t,n))return;e.closed(t,[`label`,`options`,`default`],n);let{label:r,options:i,default:a}=t;e.copy(r,`${n}.label`);let o=new Set;!Array.isArray(i)||i.length===0?e.fail(`${n}.options`,`must be a non-empty array`):i.forEach((t,r)=>{let i=`${n}.options[${r}]`;e.record(t,i)&&(e.closed(t,[`value`,`label`],i),S(t.value,ve)?o.has(t.value)?e.fail(`${i}.value`,`repeats a value`):o.add(t.value):e.fail(`${i}.value`,`is not a sort this host implements`),e.copy(t.label,`${i}.label`))}),(typeof a!=`string`||!o.has(a))&&e.fail(`${n}.default`,`must be one of the declared option values`)}var C={health:[`healthy`,`failing`,`running`,`disabled`,`neverRun`,`checking`],lastRun:[`label`,`never`,`justNow`],stats:[`runs`,`recentSuccess`,`averageDuration`]};function Ve(e,t){let n=`pages.list.insights`;e.record(t,n)&&(e.closed(t,Object.keys(C),n),Object.keys(C).forEach(r=>{let i=`${n}.${r}`,a=t[r];if(!e.record(a,i))return;let o=C[r];e.closed(a,o,i),o.forEach(t=>{e.copy(a[t],`${i}.${t}`)})}))}function He(e,t){let n=`pages.templates`;e.record(t,n)&&(e.closed(t,[`title`,`description`],n),e.copy(t.title,`${n}.title`),e.copy(t.description,`${n}.description`))}function Ue(e,t){let n=x(t.routes)?t.routes:{},r=x(t.navigation)?t.navigation:{},i=x(t.pages)?t.pages:{},a=x(i.list)?i.list:{},o=[[`routes.templates`,n.templates],[`navigation.subPages`,r.subPages],[`pages.templates`,i.templates],[`pages.list.overview`,a.overview],[`pages.list.filters`,a.filters],[`pages.list.sort`,a.sort],[`pages.list.insights`,a.insights]],s=o.filter(([,e])=>e===void 0).map(([e])=>e);s.length===0||s.length===o.length||e.fail(`interface`,`the sub-page surface must be declared whole; missing ${s.join(`, `)}`)}function We(e,t,n,r){if(!e.record(n,r))return;e.closed(n,[`type`,`label`,`help`,`required`,`constraints`],r);let{type:i,label:a,help:o,required:s,constraints:c}=n;if(i!==t.type&&e.fail(`${r}.type`,`must be "${t.type}", the control this host renders`),e.copy(a,`${r}.label`),o!==void 0&&e.copy(o,`${r}.help`),s!==t.required&&e.fail(`${r}.required`,`must be ${t.required}, what this host enforces`),c!==void 0){if(t.type!==`number`)e.fail(`${r}.constraints`,`is only allowed on a number attribute`);else if(e.record(c,`${r}.constraints`)){e.closed(c,[`min`,`max`],`${r}.constraints`);let{min:t,max:n}=c;t!==void 0&&t!==1&&e.fail(`${r}.constraints.min`,`must be the 1 this host enforces`),n!==void 0&&(!Number.isInteger(n)||n<1)&&e.fail(`${r}.constraints.max`,`must be a positive integer`)}}}function Ge(e,t){if(!e.record(t,`attributes`))return;let n=Object.keys(t);n.length===0&&e.fail(`attributes`,`must declare at least one attribute`),n.forEach(n=>{if(!De.includes(n)){e.fail(`attributes.${n}`,`is not a settable attribute`);return}We(e,v[n],t[n],`attributes.${n}`)})}function Ke(e,t){if(!e.record(t,`importExport`))return;e.closed(t,[`fileKind`,`fileVersion`,`filenameSuffix`,`importDefaults`],`importExport`);let{fileKind:n,fileVersion:r,filenameSuffix:i,importDefaults:a}=t;(typeof n!=`string`||!xe.test(n))&&e.fail(`importExport.fileKind`,`must be a lowercase slug`),r!==1&&e.fail(`importExport.fileVersion`,`must be 1`),(typeof i!=`string`||!Se.test(i))&&e.fail(`importExport.filenameSuffix`,`must be a .json suffix`),e.record(a,`importExport.importDefaults`)&&(e.closed(a,[`repoProvider`,`placeholderEventSource`],`importExport.importDefaults`),(typeof a.repoProvider!=`string`||!Ee.includes(a.repoProvider))&&e.fail(`importExport.importDefaults.repoProvider`,`is not a supported provider`),(typeof a.placeholderEventSource!=`string`||!Ce.test(a.placeholderEventSource))&&e.fail(`importExport.importDefaults.placeholderEventSource`,`must be a lowercase event source`))}function qe(e,t){if(!e.record(t,`endpoints`))return;let n=[...y,...b];e.closed(t,n,`endpoints`);let r=n=>{let r=t[n];return typeof r!=`string`||!we.test(r)||r.includes(`//`)?(e.fail(`endpoints.${n}`,`must be a rooted service-relative path`),null):r};y.forEach(t=>{let n=r(t);n!==null&&/[{}]/.test(n)&&e.fail(`endpoints.${t}`,`must not carry a substitution`)}),b.forEach(t=>{let n=r(t);n!==null&&!Te.test(n)&&e.fail(`endpoints.${t}`,`must carry exactly one {id}`)})}function w(e,t,n){if(!Array.isArray(t)||t.length===0)return e.fail(n,`must be a non-empty array`),[];let r=t.filter(t=>typeof t==`string`&&be.test(t)?!0:(e.fail(n,`must contain only lowercase slugs`),!1));return new Set(r).size!==r.length&&e.fail(n,`must not repeat an id`),r}var Je=[`version`,`routes`,`navigation`,`pages`,`docsUrl`,`attributes`,`importExport`,`endpoints`,`featuredAutomationIds`,`responderIntegrationIds`];function Ye(e,t){if(!x(e))return{valid:!1,errors:[`interface: must be an object`]};if(e.version!==`1.0`)return{valid:!1,errors:[`interface.version: must be "1.0"`]};let n=new Oe;return n.closed(e,Je,`interface`),ke(n,e.routes,t.mountedRoutes),Me(n,e.navigation),Ne(n,e.pages),(typeof e.docsUrl!=`string`||!e.docsUrl.startsWith(_))&&n.fail(`docsUrl`,`must start with ${_}`),Ge(n,e.attributes),Ke(n,e.importExport),qe(n,e.endpoints),w(n,e.featuredAutomationIds,`featuredAutomationIds`).forEach(e=>{t.catalogIds.has(e)||n.fail(`featuredAutomationIds`,`${e} is not a catalog entry`)}),w(n,e.responderIntegrationIds,`responderIntegrationIds`),Ue(n,e),{valid:n.errors.length===0,errors:n.errors}}var T=/^[a-z0-9]+(-[a-z0-9]+)*$/,Xe=/^[a-z][A-Za-z0-9]*$/,Ze=/<[A-Za-z/!]/,Qe=RegExp(`\\{\\{(?!(?:${fe.join(`|`)})\\.[A-Za-z0-9_.]+\\}\\})`),$e=[`direct`,`assisted`],et=[`text`,`textarea`,`select`,`cron`,`timezone`,`repo-picker`],tt=[`github`,`gitlab`,`bitbucket`],nt=[`cron`,`event`],rt=[`safeExpressionLiteral`],E=2e3;function D(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function O(e,t){return typeof e==`string`&&t.includes(e)}function it(e,t){return typeof e==`number`&&Number.isInteger(e)&&e>=t}var at=class{errors=[];fail(e,t){return this.errors.push(`${e}: ${t}`),!1}copy(e,t){return typeof e!=`string`||e.length===0?this.fail(t,`must be a non-empty string`):Ze.test(e)?this.fail(t,`must not contain markup`):!0}placeholders(e,t){return Qe.test(e)?this.fail(t,`uses an unknown placeholder namespace`):!0}templateCopy(e,t){return this.copy(e,t)&&this.placeholders(e,t)}templateValue(e,t){return typeof e!=`string`||e.length===0?this.fail(t,`must be a non-empty string`):this.placeholders(e,t)}absent(e,t,n,r){return t in e?this.fail(`${n}.${t}`,r):!0}};function ot(e,t){if(!D(t)){e.fail(`requires`,`must be an object`);return}let{integrations:n,features:r}=t;!D(n)||Object.keys(n).length===0?e.fail(`requires.integrations`,`must be a non-empty object`):Object.entries(n).forEach(([t,n])=>{let r=`requires.integrations.${t}`;if(!D(n)){e.fail(r,`must be an object`);return}e.copy(n.message,`${r}.message`),`required`in n&&n.required!==!1&&e.fail(`${r}.required`,`may only be false`);let i=[`message`,`required`];Object.keys(n).filter(e=>!i.includes(e)).forEach(t=>e.fail(`${r}.${t}`,`is not allowed`))}),r!==void 0&&(!Array.isArray(r)||r.length===0?e.fail(`requires.features`,`must be a non-empty array`):r.forEach((t,n)=>{(typeof t!=`string`||t.length===0)&&e.fail(`requires.features[${n}]`,`must be a non-empty string`)}))}function st(e,t,n){if(!D(t)||Object.keys(t).length===0){e.fail(n,`must be a non-empty object`);return}let{minLength:r,maxLength:i,format:a}=t;r!==void 0&&!it(r,0)&&e.fail(`${n}.minLength`,`must be a non-negative integer`),i!==void 0&&!it(i,1)&&e.fail(`${n}.maxLength`,`must be a positive integer`),a!==void 0&&!O(a,rt)&&e.fail(`${n}.format`,`is not a supported format`)}function ct(e,t,n){if(!D(t)){e.fail(n,`must be an object`);return}let{type:r,label:i,help:a,placeholder:o,required:s,provider:c,options:l}=t;O(r,et)||e.fail(`${n}.type`,`is not a supported field type`),e.copy(i,`${n}.label`),e.copy(a,`${n}.help`),o!==void 0&&e.copy(o,`${n}.placeholder`),t.default!==void 0&&typeof t.default!=`string`&&e.fail(`${n}.default`,`must be a string`),typeof s!=`boolean`&&e.fail(`${n}.required`,`must be a boolean`),c!==void 0&&!O(c,tt)&&e.fail(`${n}.provider`,`is not a supported provider`),r===`repo-picker`&&c===void 0&&e.fail(`${n}.provider`,`is required for a repository field`),l!==void 0&&(r===`select`?!Array.isArray(l)||l.length===0?e.fail(`${n}.options`,`must be a non-empty array`):l.forEach((t,r)=>{let i=`${n}.options[${r}]`;if(!D(t)){e.fail(i,`must be an object`);return}(typeof t.value!=`string`||t.value.length===0)&&e.fail(`${i}.value`,`must be a non-empty string`),e.copy(t.label,`${i}.label`)}):e.fail(`${n}.options`,`is only allowed on a select field`)),t.constraints!==void 0&&st(e,t.constraints,`${n}.constraints`)}function lt(e,t,n){return!D(t)||Object.keys(t).length===0?(e.fail(n,`must be a non-empty object`),[]):Object.entries(t).map(([t,r])=>(Xe.test(t)||e.fail(`${n}.${t}`,`is not a valid field name`),ct(e,r,`${n}.${t}`),t))}function ut(e,t){if(!D(t))return e.fail(`setup.form`,`must be an object`),[];t.note!==void 0&&e.copy(t.note,`setup.form.note`);let n=lt(e,t.args,`setup.form.args`),r=[];t.triggers!==void 0&&(!D(t.triggers)||Object.keys(t.triggers).length===0?e.fail(`setup.form.triggers`,`must be a non-empty object`):Object.entries(t.triggers).forEach(([t,i])=>{if(!O(t,nt)){e.fail(`setup.form.triggers.${t}`,`is not a trigger kind`);return}r.push(t),n.push(...lt(e,i,`setup.form.triggers.${t}`))}));let i=n.filter((e,t)=>n.indexOf(e)!==t);return Array.from(new Set(i)).forEach(t=>e.fail(`setup.form.${t}`,`is declared more than once`)),r}function dt(e){return D(e)?[e.args,...Object.values(D(e.triggers)?e.triggers:{})].some(e=>D(e)&&Object.values(e).some(e=>D(e)&&e.type===`repo-picker`)):!1}function ft(e,t){e.templateCopy(t,`setup.message`)&&t.length>E&&e.fail(`setup.message`,`must be at most ${E} characters`)}function pt(e,t,n){if(!O(t.mode,$e)){e.fail(`setup.mode`,`is not a supported mode`);return}if(t.mode===`direct`){e.templateValue(t.prompt,`setup.prompt`),t.message!==void 0&&ft(e,t.message),n.length!==1&&e.fail(`setup.form.triggers`,`must declare exactly one trigger kind`),n.includes(`event`)&&!dt(t.form)&&e.fail(`setup.form`,`must declare a repository field for an event trigger`),t.filter!==void 0&&(n.includes(`event`)?e.templateValue(t.filter,`setup.filter`):e.fail(`setup.filter`,`is only allowed for an event trigger`));return}ft(e,t.message),e.absent(t,`prompt`,`setup`,`is only allowed for direct setup`),e.absent(t,`filter`,`setup`,`is only allowed for direct setup`)}function mt(e){return D(e)&&e.setup!==void 0}function ht(e){let t=new at;if(!D(e))return{valid:!1,errors:[`manifest: must be an object`]};let{setup:n}=e;return D(n)?n.version===`1.0`?((typeof e.id!=`string`||!T.test(e.id))&&t.fail(`id`,`must be a lowercase slug`),t.copy(e.name,`name`),t.copy(e.description,`description`),e.skill!==void 0&&(typeof e.skill!=`string`||!T.test(e.skill))&&t.fail(`skill`,`must be a lowercase slug`),ot(t,e.requires),pt(t,n,ut(t,n.form)),{valid:t.errors.length===0,errors:t.errors}):{valid:!1,errors:[`setup.version: must be "1.0"`]}:{valid:!1,errors:[`setup: must be an object`]}}function gt(e){let t=[],n=new Map;return e.forEach(e=>{if(!mt(e))return;let{valid:r,errors:i}=ht(e);if(!r){console.warn(`Rejected a setup manifest:`,i.join(`; `));return}let a=e;if(n.has(a.id)){console.warn(`Rejected a setup manifest: id "${a.id}" is already registered`);return}t.push(a),n.set(a.id,a)}),{entries:t,findById:e=>n.get(e)??null}}var _t=gt(p),vt=se,yt=`AUTOMATION_INTERFACE`in vt?vt.AUTOMATION_INTERFACE:void 0,k={list:`/automations`,setup:`/automations/new/:automationId`,detail:`/automations/:automationId`,templates:`/automations/templates`},bt={list:`/v1`,detail:`/v1/{id}`,dispatch:`/v1/{id}/dispatch`,runs:`/v1/{id}/runs`,tarball:`/v1/{id}/tarball`,health:`/health`,capabilities:`/v1/capabilities`,validate:`/v1/validate`,createPrompt:`/v1/preset/prompt`,createPlugin:`/v1/preset/plugin`},xt={fileKind:`automation`,fileVersion:1,filenameSuffix:`.automation.json`,importDefaults:{repoProvider:`github`,placeholderEventSource:`agent-canvas-import`}},St=`https://docs.openhands.dev/openhands/usage/automations/overview`,Ct=[`github-pr-reviewer`,`github-repo-monitor`,`slack-channel-monitor`],wt=[`github`,`slack`],Tt={present:!1,label:null,help:null,required:!1,min:null,max:null},Et={name:{present:!0,label:null,help:null,required:!0,min:null,max:null},prompt:{present:!0,label:null,help:null,required:!1,min:null,max:null},model:{present:!0,label:null,help:null,required:!1,min:null,max:null},timeout:{present:!0,label:null,help:null,required:!1,min:1,max:null},schedule:{present:!0,label:null,help:null,required:!1,min:null,max:null}};function Dt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ot(){return new Set(p.flatMap(e=>Dt(e)&&typeof e.id==`string`?[e.id]:[]))}function kt(e){if(e===void 0)return null;let t=Ye(e,{catalogIds:Ot(),mountedRoutes:k});return t.valid?e:(console.warn(`Rejected the automation interface manifest:`,t.errors.join(`; `)),null)}var A=kt(yt);function At(e,t){return e.replace(`:automationId`,encodeURIComponent(t))}function j(){return(A?.routes??k).list}function jt(e){return At((A?.routes??k).setup,e)}function Mt(e){return At((A?.routes??k).detail,e)}function Nt(){return A?.routes.templates??k.templates}function M(e){return(A?.endpoints??bt)[e]}function N(e,t){return M(e).replace(`{id}`,encodeURIComponent(t))}var Pt={sidebarLabel:null,commandMenuTitle:null,commandMenuDescription:null,commandMenuKeywords:null,listTitle:null,listSubtitle:null,detailBackLabel:null,editTitle:null};function Ft(){return A?{sidebarLabel:A.navigation.sidebar.label,commandMenuTitle:A.navigation.commandMenu.title,commandMenuDescription:A.navigation.commandMenu.description,commandMenuKeywords:A.navigation.commandMenu.keywords,listTitle:A.pages.list.title,listSubtitle:A.pages.list.subtitle,detailBackLabel:A.pages.detail.backLabel,editTitle:A.pages.edit.title}:Pt}function It(e){if(!A)return Et[e];let t=A.attributes[e];return t?{present:!0,label:t.label,help:t.help??null,required:t.required,min:t.constraints?.min??null,max:t.constraints?.max??null}:Tt}function P(){return A?.importExport??xt}function Lt(){return A?.docsUrl??St}function Rt(){return A?.featuredAutomationIds??Ct}function zt(){return A?.responderIntegrationIds??wt}function Bt(){let e=A?.navigation.subPages;return e?e.map(e=>({page:e.page,to:e.page===`templates`?Nt():j(),label:e.label,icon:e.icon})):null}function Vt(){let e=A?.pages.list;return!e?.overview||!e.filters||!e.sort||!e.insights?null:{overview:e.overview,filters:e.filters,sort:e.sort,insights:e.insights}}function Ht(){return A?.pages.templates??null}var Ut=/["'\\]/;function F(e){let t=Object.values(e.form.triggers??{});return Object.assign({},...t,e.form.args)}function Wt(e,t){let n=t?.triggers?.cron?.timezones;if(!n?.length)return{};let r=n.map(e=>({value:e,label:e}));return Object.fromEntries(Object.entries(F(e)).filter(([,e])=>e.type===`timezone`).map(([e])=>[e,{options:r}]))}function I(e,t,n={}){return n[e]?.options??t.options??[]}function Gt(e){return Object.fromEntries(Object.entries(F(e)).map(([e,t])=>[e,t.default??``]))}function Kt(e,t,n,r){let i=(n??``).trim();if(!i)return t.required?{code:`required`}:null;let{minLength:a,maxLength:o,format:s}=t.constraints??{};if(a!==void 0&&i.length<a)return{code:`minLength`,length:a};if(o!==void 0&&i.length>o)return{code:`maxLength`,length:o};if(s===`safeExpressionLiteral`&&Ut.test(i))return{code:`unsafeExpressionLiteral`};let c=I(e,t,r);return c.length>0&&!c.some(e=>e.value===i)?{code:`invalidOption`}:null}function qt(e,t,n={}){return Object.entries(F(e)).reduce((e,[r,i])=>{let a=Kt(r,i,t[r],n);return a?{...e,[r]:a}:e},{})}var L=/\{\{([A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*)\}\}/g;function Jt(e,t){return t.split(`.`).reduce((e,t)=>{if(!(typeof e!=`object`||!e))return e[t]},e)}function R(e){return typeof e==`string`?e:typeof e==`number`||typeof e==`boolean`?String(e):``}function z(e,t){return e.replace(L,(e,n)=>R(Jt(t,n)))}function Yt(e,t){return e.replace(L,(e,n)=>R(t[n]))}var B=M(`createPrompt`),Xt={cron:[`schedule`,`timezone`],event:[`on`]},Zt=[`ref`],Qt=/\{\{form\.([A-Za-z0-9_.]+)\}\}/g;function $t(e){let t=Object.entries(F(e)).find(([,e])=>e.type===`repo-picker`);return t?{name:t[0],field:t[1]}:null}function en(e){let t=Object.entries(e.form.triggers??{});if(t.length===0)return null;let[n,r]=t[0];return{kind:n,fields:r??{}}}function V(e,t){let{setup:n}=e;if(n.mode!==`direct`||!n.prompt)return null;let r={form:t,automation:e},i=$t(n),a=i?t[i.name]:void 0,o={name:a?`${e.name} - ${a}`:e.name,prompt:z(n.prompt,r)};if(a&&i?.field.provider){let e=Zt.filter(e=>e in t);o.repos=[{url:a,...Object.fromEntries(e.map(e=>[e,t[e]])),provider:i.field.provider}]}let s=en(n);if(s){let e=Xt[s.kind],a=Object.keys(s.fields).filter(t=>e.includes(t));o.trigger={type:s.kind,...Object.fromEntries(a.map(e=>[e,t[e]??``])),...s.kind===`event`&&{source:i?.field.provider??``,...n.filter&&{filter:z(n.filter,r)}}}}return o}function tn(e,t){let n=V(e,t);return n?{automationId:e.id,endpoint:B,draft:n}:null}function nn(e,t){return[h(e),e.setup.message?z(e.setup.message,{form:t,automation:e}):``].filter(Boolean).join(`
|
|
2
|
-
|
|
3
|
-
`)}function rn(e){let t=Array.from(e.matchAll(Qt),e=>e[1]);return Array.from(new Set(t))}function an(e){let t={},n=V(e,Object.fromEntries(Object.keys(F(e.setup)).map(e=>[e,`{{form.${e}}}`])));if(!n)return t;let r=(e,n)=>{if(Array.isArray(e)){e.forEach((e,t)=>r(e,`${n}[${t}]`));return}if(typeof e==`object`&&e){Object.entries(e).forEach(([e,t])=>r(t,n?`${n}.${e}`:e));return}if(typeof e==`string`){let r=rn(e);r.length>0&&(t[n]=r)}};return r(n,``),t}var H=`/api/automation`,U=n.create();async function W(e={}){let t=await te();return{...a,...t?{[r]:t}:{},...e}}U.interceptors.request.use(async e=>{let t=await W();if(Object.entries(t).forEach(([t,n])=>{e.headers.set(t,n)}),e.baseURL)return e;let n=ne();if(!n)throw new i;e.baseURL=n.host;let r=n.apiKey?.trim();return r&&e.headers.set(`X-Session-API-Key`,r),e});function G(e){return typeof e==`string`&&e.trim()||null}function on(e){return typeof e==`string`?G(e):G(e.sdk_version)??G(e.version)}function K(e,t){let n=new URLSearchParams;return n.set(`limit`,String(e)),n.set(`offset`,String(t)),n.toString()}function sn(e){return e.trigger.type===`event`?{type:`event`,source:e.trigger.source,on:e.trigger.on,...e.trigger.filter&&{filter:e.trigger.filter}}:{type:`cron`,schedule:e.trigger.schedule,timezone:e.timezone??e.trigger.timezone??`UTC`}}function cn(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?`pending.${crypto.randomUUID()}`:`pending.${Date.now()}.${Math.random().toString(36).slice(2,10)}`}function ln(e){if(!e.prompt)throw Error(`An automation prompt is required for import.`);let{importDefaults:t}=P(),n=e.repository?[{url:e.repository,...e.branch&&{ref:e.branch},...!e.repository.includes(`://`)&&!e.repository.startsWith(`git@`)&&{provider:t.repoProvider}}]:void 0;return{path:`${H}${M(e.plugins?.length?`createPlugin`:`createPrompt`)}`,body:{name:e.name,prompt:e.prompt,trigger:{type:`event`,source:t.placeholderEventSource,on:cn()},...e.model&&{model:e.model},...n&&{repos:n},...e.plugins?.length&&{plugins:e.plugins.map(e=>({source:e}))},...e.timeout!=null&&{timeout:e.timeout}}}}async function q(e){let t=e.apiKey.trim();return{baseURL:e.host,headers:await W(t?{"X-Session-API-Key":t}:{})}}async function J(e){return W(e.orgId?{"X-Org-Id":e.orgId}:{})}var Y=class e{static async syncTelemetryConsent(e=u()){if(l().backend.kind!==`local`)return;let t=await ie();await U.post(`${H}/v1/telemetry/consent`,{consent_granted:e===`granted`,frontend_distinct_id:t},{timeout:5e3}),e!==`granted`&&t&&s(t)}static async getSdkVersion(){let e=l(),t=`${H}/sdk-version`;try{let n;if(e.backend.kind===`cloud`)n=await f({backend:e.backend,method:`GET`,path:t,headers:await J(e),timeoutSeconds:5});else{let{data:e}=await U.get(t,{timeout:5e3});n=e}return on(n)}catch{return null}}static async listAutomations(e={}){let{limit:t=50,offset:n=0}=e,r=l().backend;if(r.kind===`cloud`)return f({backend:r,method:`GET`,path:`${H}${M(`list`)}?${K(t,n)}`,headers:await W()});let{data:i}=await U.get(`${H}${M(`list`)}`,{params:{limit:t,offset:n}});return i}static async getAutomations(t=50,n=0){return e.listAutomations({limit:t,offset:n})}static async getAutomation(e){let t=l().backend,n=`${H}${N(`detail`,e)}`;if(t.kind===`cloud`)return f({backend:t,method:`GET`,path:n,headers:await W()});let{data:r}=await U.get(n);return r}static async createAutomation(e){let t=l(),{path:n,body:r}=ln(e),i;if(t.backend.kind===`cloud`)i=await f({backend:t.backend,method:`POST`,path:n,body:r,headers:await J(t)});else{let{data:e}=await U.post(n,r,await q(t.backend));i=e}let a=`${H}${N(`detail`,i.id)}`,o={trigger:sn(e),enabled:!1};try{if(t.backend.kind===`cloud`)return await f({backend:t.backend,method:`PATCH`,path:a,body:o,headers:await J(t)});let{data:e}=await U.patch(a,o,await q(t.backend));return e}catch(e){try{t.backend.kind===`cloud`?await f({backend:t.backend,method:`DELETE`,path:a,headers:await J(t)}):await U.delete(a,await q(t.backend))}catch(t){throw AggregateError([e,t],`Failed to disable the imported automation and clean it up.`)}throw e}}static async updateAutomation(e,t){let n=l().backend,r=`${H}${N(`detail`,e)}`;if(n.kind===`cloud`)return f({backend:n,method:`PATCH`,path:r,body:t,headers:await W()});let{data:i}=await U.patch(r,t);return i}static async deleteAutomation(e){let t=l().backend,n=`${H}${N(`detail`,e)}`;if(t.kind===`cloud`){await f({backend:t,method:`DELETE`,path:n,headers:await W()});return}await U.delete(n)}static async dispatchAutomation(e){let t=l().backend,n=`${H}${N(`dispatch`,e)}`;if(t.kind===`cloud`)return f({backend:t,method:`POST`,path:n,headers:await W()});let{data:r}=await U.post(n);return r}static async cancelAutomationRun(e){let t=l().backend,n=`${H}/v1/runs/${encodeURIComponent(e)}/cancel`;if(t.kind===`cloud`)return f({backend:t,method:`POST`,path:n,headers:await W()});let{data:r}=await U.post(n);return r}static async listAutomationRuns(e,t={}){let{limit:n=50,offset:r=0}=t,i=l().backend,a=`${H}${N(`runs`,e)}`;if(i.kind===`cloud`)return f({backend:i,method:`GET`,path:`${a}?${K(n,r)}`,headers:await W()});let{data:o}=await U.get(a,{params:{limit:n,offset:r}});return o}static async getAutomationRuns(t,n=50,r=0){return e.listAutomationRuns(t,{limit:n,offset:r})}static async toggleAutomation(t,n){return e.updateAutomation(t,{enabled:n})}static async downloadTarball(e,t){let n=l().backend,r=`${H}${N(`tarball`,e)}`,i;if(n.kind===`cloud`)i=await f({backend:n,method:`GET`,path:r,responseType:`blob`,headers:await W()});else{let{data:e}=await U.get(r,{responseType:`blob`});i=e}let a=URL.createObjectURL(i),o=document.createElement(`a`);o.href=a,o.download=`${t}.tar`,o.click(),URL.revokeObjectURL(a)}static async getCapabilities(){let e=l().backend,t=`${H}${M(`capabilities`)}`;if(e.kind===`cloud`)return f({backend:e,method:`GET`,path:t,headers:await W()});let{data:n}=await U.get(t);return n}static async validateDraft(e){let t=l().backend,n=`${H}${M(`validate`)}`;if(t.kind===`cloud`)return f({backend:t,method:`POST`,path:n,body:e,headers:await W()});let{data:r}=await U.post(n,e);return r}static async createAutomationDraft(e){let t=l().backend,n=`${H}${B}`;if(t.kind===`cloud`)return f({backend:t,method:`POST`,path:n,body:e,headers:await W()});let{data:r}=await U.post(n,e);return r}static async checkHealth(){let e=l().backend,t=`${H}${M(`health`)}`;try{if(e.kind===`cloud`)return await f({backend:e,method:`GET`,path:t,timeoutSeconds:5,headers:await W()});let{data:n}=await U.get(t,{timeout:5e3});return n}catch{return{status:`error`}}}},un=`automation-sdk-version`,dn=3600*1e3,fn=`\0`,X=new Map,Z=new Map;function Q(e){let t=X.get(e);if(t){if(t.expiresAt<=Date.now()){X.delete(e);return}return t.version}}function $(e,t){X.set(e,{expiresAt:Date.now()+dn,version:t})}function pn(e){let t=Q(e);if(t!==void 0)return Promise.resolve(t);let n=Z.get(e);if(n)return n;if(typeof Y.getSdkVersion!=`function`)return $(e,null),Promise.resolve(null);let r=Y.getSdkVersion().then(t=>($(e,t),t)).catch(()=>($(e,null),null)).finally(()=>{Z.delete(e)});return Z.set(e,r),r}function mn(){let e=re(),{backend:t}=e,n=[un,t.id,t.kind,t.host,e.orgId??``].join(fn),[r,i]=m.useState(()=>Q(n)??null);return m.useEffect(()=>{if(ee(t)){i(null);return}let e=Q(n);if(e!==void 0){i(e);return}let r=!0;return i(null),pn(n).then(e=>{r&&i(e)}),()=>{r=!1}},[t,n]),r}var hn=()=>{let{backend:e}=re(),t=mn(),n=m.useCallback(()=>({backendKind:e.kind,agentServerVersion:e.kind===`local`?o(e.host):null,automationSdkVersion:t??null}),[t,e.host,e.kind]);m.useEffect(()=>{d(n())},[n]);let r={current_url:window.location.href},i=(e,t={})=>{d(n()),c(e,{...r,...t})};return{trackLoginButtonClick:({provider:e})=>{i(`login_button_clicked`,{provider:e})},trackConversationCreated:({conversationId:e,taskId:t,hasRepository:n,gitProvider:r,hasWorkspace:a,workspaceMode:o,hasInitialQuery:s,agentType:c,hasParentConversation:l,entryPoint:u})=>{i(`conversation_start_requested`,{conversation_id:e,task_id:t,is_start_task:e.startsWith(`task-`),has_repository:n,git_provider:r,has_workspace:a,workspace_mode:o,has_initial_query:s,agent_type:c,has_parent_conversation:l,entry_point:u})},trackPushButtonClick:()=>{i(`push_button_clicked`)},trackPullButtonClick:()=>{i(`pull_button_clicked`)},trackCreatePrButtonClick:()=>{i(`create_pr_button_clicked`)},trackUserSignupCompleted:()=>{i(`user_signup_completed`,{signup_timestamp:new Date().toISOString()})},trackPrebuiltAutomationEnabled:({automationId:e,automationName:t,automationCategory:n})=>{i(`prebuilt_automation_enabled`,{automation_id:e,automation_name:t,automation_category:n})},trackAutomationSetupOpened:({automationId:e})=>{i(`automation_setup_opened`,{automation_id:e})},trackAutomationSetupValidated:({automationId:e})=>{i(`automation_setup_validated`,{automation_id:e})},trackAutomationSetupCreated:({automationId:e,setupMode:t})=>{i(`automation_setup_created`,{automation_id:e,setup_mode:t})},trackAutomationSetupFailed:({automationId:e,setupMode:t})=>{i(`automation_setup_failed`,{automation_id:e,setup_mode:t})},trackInitialQuerySubmitted:({entryPoint:e,queryCharacterLength:t,replayJsonSize:n})=>{i(`initial_query_submitted`,{entry_point:e,query_character_length:t,replay_json_size:n})},trackUserMessageSent:({sessionMessageCount:e,currentMessageLength:t})=>{i(`user_message_sent`,{session_message_count:e,current_message_length:t})},trackDownloadVsCodeButtonClicked:()=>{i(`download_via_vscode_button_clicked`)},trackSettingsSaved:({llmModel:e,llmApiKeySet:t,searchApiKeySet:n,remoteRuntimeResourceFactor:r})=>{i(`settings_saved`,{LLM_MODEL:e,LLM_API_KEY_SET:t,SEARCH_API_KEY_SET:n,REMOTE_RUNTIME_RESOURCE_FACTOR:r})},trackMcpConfigUpdated:({sseServersCount:e,stdioServersCount:t})=>{i(`mcp_config_updated`,{has_mcp_config:!0,sse_servers_count:e,stdio_servers_count:t})},trackDownloadTrajectoryButtonClicked:()=>{i(`download_trajectory_button_clicked`)},trackConversationExported:e=>{i(`conversation_exported`,{format:e})},trackAutomationCreatedButton:({backendKind:e})=>{i(`automation_created_button`,{backend_kind:e})},trackAutomationExecuted:({backendKind:e})=>{i(`automation_executed`,{backend_kind:e})},trackAutomationDeleted:({backendKind:e})=>{i(`automation_deleted`,{backend_kind:e})},trackAutomationDisableButton:({backendKind:e})=>{i(`automation_disable_button`,{backend_kind:e})},trackAutomationEdited:({backendKind:e})=>{i(`automation_edited`,{backend_kind:e})},trackAutomationExported:({backendKind:e})=>{i(`automation_exported`,{backend_kind:e})},trackAutomationActivityLogExported:({backendKind:e,format:t})=>{i(`automation_activity_log_exported`,{backend_kind:e,format:t})},trackAutomationImported:({backendKind:e})=>{i(`automation_imported`,{backend_kind:e})},trackBackendAdded:({backendKind:e,connectionMethod:t,hasApiKey:n,source:r,agentServerVersion:a,backendVersion:o})=>{i(`backend_added`,{...ae({backendKind:e,agentServerVersion:a,backendVersion:o,connectionMethod:t}),has_api_key:n,source:r})},trackOnboardingStarted:()=>{i(`onboarding_started`)},trackOnboardingStepViewed:({step:e,stepIndex:t,totalSteps:n,agent:r})=>{i(`onboarding_step_viewed`,{step:e,step_index:t,total_steps:n,agent:r})},trackOnboardingCompleted:({agent:e})=>{i(`onboarding_completed`,{agent:e})},trackOnboardingSkipped:({step:e,stepIndex:t,totalSteps:n,agent:r})=>{i(`onboarding_skipped`,{step:e,step_index:t,total_steps:n,agent:r})}}};export{Bt as C,de as D,h as E,le as O,zt as S,_t as T,Lt as _,tn as a,P as b,F as c,Wt as d,qt as f,It as g,jt as h,V as i,ue as k,I as l,j as m,Y as n,an as o,Mt as p,nn as r,Yt as s,hn as t,Gt as u,Vt as v,Ht as w,Ft as x,Rt as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{D as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js";var t=e(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);export{t};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { SuggestedTask } from "#/utils/types";
|
|
2
|
-
export declare class SuggestionsService {
|
|
3
|
-
/**
|
|
4
|
-
* Aggregate suggested tasks for the calling user. Cloud exposes
|
|
5
|
-
* `/api/v1/git/suggested-tasks/search` which the proxy forwards to.
|
|
6
|
-
* Local agent-server has no equivalent endpoint, so we return an
|
|
7
|
-
* empty list there — the home page's `<TaskSuggestions />` already
|
|
8
|
-
* renders nothing when the active backend is local.
|
|
9
|
-
*/
|
|
10
|
-
static getSuggestedTasks(pageId?: string, limit?: number): Promise<SuggestedTask[]>;
|
|
11
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { ActionEvent } from "#/types/agent-server/core";
|
|
3
|
-
interface ObservationPairEventMessageProps {
|
|
4
|
-
event: ActionEvent;
|
|
5
|
-
}
|
|
6
|
-
export declare function ObservationPairEventMessage({ event, }: ObservationPairEventMessageProps): React.JSX.Element | null;
|
|
7
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./chat";
|