@openhands/agent-canvas 1.11.0 → 1.12.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/{active-backend-context-BBvP-bI2.js → active-backend-context-B_bg5h9O.js} +1 -1
- package/build/assets/{agent-context-settings-Bno1nwPL.js → agent-context-settings-CzWS1DgR.js} +1 -1
- package/build/assets/{agent-profiles-settings-DqoS7RL3.js → agent-profiles-settings-hd2cAIZM.js} +1 -1
- package/build/assets/{agent-server-conversation-service.api-0RztSdJJ.js → agent-server-conversation-service.api-BheU4HX3.js} +3 -3
- package/build/assets/{agent-settings-h8hQz-IU.js → agent-settings-D2J1dKVd.js} +1 -1
- package/build/assets/agent-settings-D_SVrWhI.js +1 -0
- package/build/assets/{api-key-entry-screen-Qsb83VX1.js → api-key-entry-screen-D70oJj2c.js} +1 -1
- package/build/assets/app-settings-D0OKHB3M.js +1 -0
- package/build/assets/{automation-detail-7LkL91j9.js → automation-detail-C0SxWTnQ.js} +1 -1
- package/build/assets/{automation-export-U2QNyNy6.js → automation-export-BjQa_fT6.js} +1 -1
- package/build/assets/{automation-setup-route-Bel9_Lue.js → automation-setup-route-BzCNpljP.js} +1 -1
- package/build/assets/{automation-templates-CRLDssaI.js → automation-templates-D9gs6ihu.js} +1 -1
- package/build/assets/{automations-list-B2iV3ZKW.js → automations-list-dZg8zOCl.js} +1 -1
- package/build/assets/backend-form-modal-HwclKrUS.js +1 -0
- package/build/assets/{backend-synced-settings-badge-DB4717Iu.js → backend-synced-settings-badge-YI3k09Wr.js} +1 -1
- package/build/assets/{badge-yR53enbU.js → badge-Dpn3-LTV.js} +1 -1
- package/build/assets/{browser-tab-A94o33Vn.js → browser-tab-4CPdj3J3.js} +1 -1
- package/build/assets/{cloud-funnel-analytics-CBQdPZl_.js → cloud-funnel-analytics-CcSez21r.js} +1 -1
- package/build/assets/{command-menu-PsRXVBz2.js → command-menu-BKOLj-TC.js} +1 -1
- package/build/assets/{condenser-settings-w7L3EFvm.js → condenser-settings-DLQogFnB.js} +1 -1
- package/build/assets/{conversation-BUzBZAc-.js → conversation-Cmyw9bFh.js} +3 -3
- package/build/assets/conversation-CvoGZ5vC.js +1 -0
- package/build/assets/conversation-panel-CvoGZ5vC.js +1 -0
- package/build/assets/{conversation-state-store-Bs8gA263.js → conversation-state-store-CtgILxWF.js} +1 -1
- package/build/assets/{entry.client-DzbDyLkV.js → entry.client-EBn3ZtNP.js} +1 -1
- package/build/assets/{extensions-hub-DOmHPGTA.js → extensions-hub-BZ3HYztk.js} +1 -1
- package/build/assets/{extensions-navigation-6zU5M1pa.js → extensions-navigation-Bnx32WAb.js} +1 -1
- package/build/assets/{files-tab-BzofBmF4.js → files-tab-D5zuU5TY.js} +1 -1
- package/build/assets/format-model-name-BN_rx1Y3.js +1 -0
- package/build/assets/{format-relative-time-DGPQlPx0.js → format-relative-time-BerVamGl.js} +1 -1
- package/build/assets/{git-provider-icon-BLMlwy02.js → git-provider-icon-zuKz2cwo.js} +1 -1
- package/build/assets/{git-repo-dropdown-B7RvO70z.js → git-repo-dropdown-B5VnMftu.js} +1 -1
- package/build/assets/git-repo-dropdown-Bo7ciSNX.js +1 -0
- package/build/assets/home-DqyeeFA_.js +1 -0
- package/build/assets/{home-DEZaZqYv.js → home-Y0aDou-a.js} +1 -1
- package/build/assets/{home-store-D7CjMN_-.js → home-store-Cubdq0uP.js} +1 -1
- package/build/assets/index-home-DqyeeFA_.js +1 -0
- package/build/assets/info-C9lpK5pw.js +1 -0
- package/build/assets/{install-server-modal-BTwK5lbi.js → install-server-modal-DW6dSyGr.js} +1 -1
- package/build/assets/{kebab-menu-item-content-C4CkeiJO.js → kebab-menu-item-content-CKydZrbH.js} +1 -1
- package/build/assets/{launch-DVlx4v9o.js → launch-c4GEP8oo.js} +1 -1
- package/build/assets/llm-not-configured-banner-DCE_0B4I.js +27 -0
- package/build/assets/llm-settings-8eWBF3Ij.js +1 -0
- package/build/assets/llm-settings-D9ko42Pi.js +1 -0
- package/build/assets/{llm-subscription-service-7eVfDIE1.js → llm-subscription-service-B3K-97lP.js} +1 -1
- package/build/assets/{manage-backends-modal-HNWKLYhq.js → manage-backends-modal-DTCME_Pu.js} +1 -1
- package/build/assets/manifest-e1c3bc3b.js +1 -0
- package/build/assets/{manifest-subpage-layout-D-m-h8_t.js → manifest-subpage-layout-Ds7G5GZ8.js} +1 -1
- package/build/assets/{markdown-renderer-BiiiIznl.js → markdown-renderer-DzvgdZey.js} +1 -1
- package/build/assets/{mcp-gLgPP7AS.js → mcp-Da7wFU7A.js} +1 -1
- package/build/assets/{mcp-marketplace-utils-Dr_HG_ol.js → mcp-marketplace-utils-DSLou4n7.js} +1 -1
- package/build/assets/messages-B2l0qLVk.js +40 -0
- package/build/assets/{npm-DRzJF5Zn.js → npm-Cswluf6-.js} +1 -1
- package/build/assets/{onboarding-DSr8hOpk.js → onboarding-BKbTYlW1.js} +1 -1
- package/build/assets/{onboarding-modal-C6Euf7N4.js → onboarding-modal-DrrGlEQq.js} +1 -1
- package/build/assets/{organization-service.api-C4GYWwj9.js → organization-service.api-DK8csGvK.js} +1 -1
- package/build/assets/{planner-tab-CZcguxTK.js → planner-tab-D-mZ1I7n.js} +1 -1
- package/build/assets/{plugins-management-service-BmDzOQsd.js → plugins-management-service-CywqyfLK.js} +1 -1
- package/build/assets/{profiles-service.api-CoLTwjc1.js → profiles-service.api-vcE_jJCe.js} +1 -1
- package/build/assets/{providers-tBzTpz1w.js → providers-CdrPPm0z.js} +1 -1
- package/build/assets/{proxy-DCI9S-LA.js → proxy-b4aqL4SX.js} +1 -1
- package/build/assets/{recommended-automations-launcher-BbJAJVED.js → recommended-automations-launcher-DIYgUdMm.js} +1 -1
- package/build/assets/root-CBBi6IAe.js +2 -0
- package/build/assets/root-CRK9fOFd.css +1 -0
- package/build/assets/root-layout-BFN2rCOy.js +2 -0
- package/build/assets/{schema-field-zhsVDllR.js → schema-field-Z-rMg9ti.js} +1 -1
- package/build/assets/{sdk-section-page-CS4GWn0y.js → sdk-section-page-m_cjygxR.js} +1 -1
- package/build/assets/{secrets-service-DjgGduXk.js → secrets-service-BHF4fxML.js} +1 -1
- package/build/assets/{secrets-settings-f-qahfbi.js → secrets-settings-aBGXtQhX.js} +1 -1
- package/build/assets/{settings-DQd0xLEw.js → settings-CZPGNens.js} +1 -1
- package/build/assets/{settings-index-BVwy9JEp.js → settings-index-Dtlegd6s.js} +1 -1
- package/build/assets/{settings-modal-D6D5ngET.js → settings-modal-CalzJP2l.js} +1 -1
- package/build/assets/{settings-service.api-DZp7E7A9.js → settings-service.api-DfPYaxZJ.js} +1 -1
- package/build/assets/{shared-conversation-DIxZjElr.js → shared-conversation-BIAcuORk.js} +1 -1
- package/build/assets/{sidebar-mobile-menu-toggle-OoZBHxaT.js → sidebar-mobile-menu-toggle-C6HpQ55l.js} +1 -1
- package/build/assets/{skill-scope-B1Per5XI.js → skill-scope-Dt1V5X2p.js} +1 -1
- package/build/assets/{skills-plugins-B3AO6sMz.js → skills-plugins-B-H0cCOP.js} +1 -1
- package/build/assets/{skills-settings-DmmgJ6CT.js → skills-settings-DthdIDUb.js} +1 -1
- package/build/assets/{task-list-tab-C19Q_JNf.js → task-list-tab-BTde81Iu.js} +1 -1
- package/build/assets/{terminal-CbuMRYal.js → terminal-DRrJo-cR.js} +1 -1
- package/build/assets/{use-acp-credential-form-DJmmJKMo.js → use-acp-credential-form-DGyo0QvL.js} +1 -1
- package/build/assets/{use-activate-agent-profile-CeFfYwu_.js → use-activate-agent-profile-DrPzIKJF.js} +1 -1
- package/build/assets/{use-agent-profiles-BHLkLbRR.js → use-agent-profiles-B37XWDLq.js} +1 -1
- package/build/assets/{use-can-manage-org-profiles-Bu4y8gSx.js → use-can-manage-org-profiles-BzE28H3x.js} +1 -1
- package/build/assets/{use-cloud-current-user-id-QD9x3ySO.js → use-cloud-current-user-id-U6HPjy50.js} +1 -1
- package/build/assets/{use-config-CPwqciXN.js → use-config-DapX3pjC.js} +1 -1
- package/build/assets/{use-create-conversation-DWaSVUOB.js → use-create-conversation-CRf1dCm5.js} +1 -1
- package/build/assets/{use-create-secret-BsOfOLvg.js → use-create-secret-DcpT3RPw.js} +1 -1
- package/build/assets/{use-llm-profiles-CU8ah1pz.js → use-llm-profiles-CHxqoHiN.js} +1 -1
- package/build/assets/{use-manifest-capabilities-DBYPjyV6.js → use-manifest-capabilities-zihHDbMW.js} +1 -1
- package/build/assets/{use-onboarding-completion-CtNJxkXG.js → use-onboarding-completion-6kWOW3ul.js} +1 -1
- package/build/assets/{use-plugins-marketplace-ZEA-gyM9.js → use-plugins-marketplace-CqkR8kLE.js} +1 -1
- package/build/assets/{use-save-agent-profile-DgI_Uz9a.js → use-save-agent-profile-CH9_EXQG.js} +1 -1
- package/build/assets/{use-save-settings-pSjRhD_m.js → use-save-settings-DIEurJ3D.js} +1 -1
- package/build/assets/{use-settings-BHWsOcIG.js → use-settings-BmLzQjnC.js} +1 -1
- package/build/assets/{use-settings-nav-items-CQgkxUbV.js → use-settings-nav-items-DV9qgeu7.js} +1 -1
- package/build/assets/{use-tracking-CGCsBWhg.js → use-tracking-salbPJxT.js} +1 -1
- package/build/assets/{use-user-conversation-DRfEU8x0.js → use-user-conversation-Dt-W6uNw.js} +1 -1
- package/build/assets/{verification-settings-BItwt998.js → verification-settings-oi54wEc1.js} +1 -1
- package/build/index.html +4 -4
- package/config/defaults.json +1 -1
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.cjs.map +1 -1
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.js +61 -60
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.js.map +1 -1
- package/dist/components/features/chat/model-messages.cjs +1 -1
- package/dist/components/features/chat/model-messages.cjs.map +1 -1
- package/dist/components/features/chat/model-messages.js +26 -25
- package/dist/components/features/chat/model-messages.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.js +4 -4
- package/dist/components/features/settings/llm-profiles/profile-row.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/profile-row.js +1 -0
- package/dist/components/shared/modals/settings/model-selector.cjs +1 -1
- package/dist/components/shared/modals/settings/model-selector.cjs.map +1 -1
- package/dist/components/shared/modals/settings/model-selector.js +154 -98
- package/dist/components/shared/modals/settings/model-selector.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/hooks/chat/use-slash-command.cjs +1 -1
- package/dist/hooks/chat/use-slash-command.cjs.map +1 -1
- package/dist/hooks/chat/use-slash-command.js +61 -60
- package/dist/hooks/chat/use-slash-command.js.map +1 -1
- 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/app-settings.cjs +1 -1
- package/dist/routes/app-settings.cjs.map +1 -1
- package/dist/routes/app-settings.js +94 -93
- package/dist/routes/app-settings.js.map +1 -1
- package/dist/routes/llm-settings.cjs +1 -1
- package/dist/routes/llm-settings.cjs.map +1 -1
- package/dist/routes/llm-settings.js +131 -119
- package/dist/routes/llm-settings.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 +11 -0
- package/dist/utils/format-model-name.js +11 -3
- package/dist/utils/format-model-name.js.map +1 -1
- package/package.json +1 -1
- package/build/assets/agent-settings-BJHryp65.js +0 -1
- package/build/assets/app-settings-r1RUbgGi.js +0 -1
- package/build/assets/backend-form-modal-OroTqnAv.js +0 -1
- package/build/assets/conversation-panel-pzAKsSDb.js +0 -1
- package/build/assets/conversation-pzAKsSDb.js +0 -1
- package/build/assets/git-repo-dropdown-B_PTq4ol.js +0 -1
- package/build/assets/home-r89Vj2td.js +0 -1
- package/build/assets/index-home-r89Vj2td.js +0 -1
- package/build/assets/llm-not-configured-banner-CwKu8C6g.js +0 -27
- package/build/assets/llm-settings-BJotLQND.js +0 -1
- package/build/assets/llm-settings-CDM-5H2A.js +0 -1
- package/build/assets/manifest-2a36a8f8.js +0 -1
- package/build/assets/messages-D1cbVhRK.js +0 -40
- package/build/assets/root-BfM_kC_d.css +0 -1
- package/build/assets/root-gstBEjty.js +0 -2
- package/build/assets/root-layout-BIAFLP9p.js +0 -2
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,r as t}from"./rolldown-runtime-Cyuzqnbw.js";import{St as n,yt as r}from"./vendor-styling-Ck5D_A2Q.js";import{t as i}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-Cwhh3zLe.js";import{E as a,a as o,i as s,n as c,r as l,y as u}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-oGvLV0dO.js";import{t as d}from"./useQuery-BCnzy4LX.js";import{$ as f,B as p,Ft as m,G as h,It as g,Rt as _,T as v,r as y,xt as b}from"./active-backend-context-BBvP-bI2.js";import{t as x,z as S}from"./utils-DPQfkd-7.js";import{t as C}from"./chevron-down-CnIbtM6i.js";import{i as w,n as T,r as E}from"./cloud-funnel-analytics-CBQdPZl_.js";import{a as ee,i as te,n as D,o as O,r as k}from"./use-onboarding-completion-CtNJxkXG.js";import{t as ne}from"./use-tracking-CGCsBWhg.js";import{t as A}from"./modal-backdrop-BSzNhM4r.js";import{n as j,r as M,t as N}from"./modal-body-duRaxj_K.js";import{n as P,r as re}from"./modal-classes-CLEXO6dj.js";import{t as F}from"./brand-button-CJcwjnfb.js";import{n as ie}from"./navigation-context-CQZwH_tC.js";import{t as ae}from"./modal-close-button-D0aT02hs.js";import{t as I}from"./settings-input-D61Vzp9e.js";import{t as oe}from"./segmented-toggle-SmvsR3jW.js";var se=a(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),ce=a(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),L=e(n()),R=r(),z=e=>(0,R.jsxs)(`svg`,{width:1365,height:1365,viewBox:`0 -24 148 148`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,R.jsx)(`path`,{d:`M71.7542 16.863V2.97414C71.7542 1.82355 72.6872 0.890503 73.8378 0.890503C74.9884 0.890503 75.9214 1.82355 75.9214 2.97414V16.863C75.9214 18.0136 74.9884 18.9466 73.8378 18.9466C72.6872 18.9466 71.7542 18.0136 71.7542 16.863Z`,fill:`white`}),(0,R.jsx)(`path`,{d:`M82.5272 18.9329L89.4716 6.90477C90.0469 5.90832 91.3215 5.5668 92.3179 6.1421C93.3144 6.7174 93.6559 7.99197 93.0806 8.98841L86.1362 21.0165C85.5609 22.0129 84.2863 22.3545 83.2899 21.7792C82.2934 21.2039 81.9519 19.9293 82.5272 18.9329Z`,fill:`white`}),(0,R.jsx)(`path`,{d:`M65.1481 18.9329L58.2037 6.90477C57.6284 5.90832 56.3538 5.5668 55.3574 6.1421C54.3609 6.7174 54.0194 7.99197 54.5947 8.98841L61.5391 21.0165C62.1144 22.0129 63.389 22.3545 64.3854 21.7792C65.3819 21.2039 65.7234 19.9293 65.1481 18.9329Z`,fill:`white`}),(0,R.jsx)(`path`,{d:`M140.606 62.0292C140.606 58.409 141.583 47.6748 141.89 44.1323C142.097 41.7374 141.809 40.4247 141.424 39.7542C141.141 39.2626 140.699 38.915 139.634 38.8436C138.865 38.7921 138.027 39.0114 137.401 39.5761C136.814 40.1052 136.159 41.1682 136.159 43.3176L136.155 43.4388L135.198 59.758C135.164 60.3451 134.883 60.8911 134.424 61.2599C133.966 61.6284 133.374 61.7859 132.793 61.6941L122.764 60.1068L111.948 58.6703C110.949 58.5376 110.188 57.7084 110.142 56.7016L109.561 44.1323C109.535 43.621 109.51 43.1141 109.484 42.6146C109.241 37.9294 109.022 33.7805 109.022 32.4282C109.022 28.3859 108.338 26.6806 107.74 25.9634C107.263 25.3915 106.577 25.1402 105.11 25.1402C104.583 25.1402 104.212 25.2481 103.933 25.4111C103.659 25.5714 103.346 25.8587 103.049 26.4208C102.41 27.6257 101.945 29.891 102.118 33.8479C102.342 38.9804 102.692 42.8146 103.035 46.2718C103.377 49.7231 103.718 52.8561 103.908 56.4971C104.204 62.1966 104.178 66.1256 103.945 68.7924C103.828 70.124 103.656 71.1996 103.423 72.0501C103.202 72.8558 102.871 73.6757 102.296 74.2887C101.6 75.0303 100.608 75.3844 99.577 75.136C98.7592 74.9389 98.1847 74.4215 97.8706 74.0916C97.2141 73.4017 96.7501 72.5106 96.568 72.0512C95.5097 69.3812 92.2352 63.1808 87.8023 59.6811C86.5089 58.6599 85.5666 58.3652 84.9736 58.3204C84.4148 58.2783 84.0094 58.4436 83.6909 58.6967C83.34 58.9756 83.0781 59.3811 82.9479 59.7643C82.9019 59.8999 82.8823 59.9968 82.8741 60.0584C84.0759 62.0865 88.8421 69.5222 91.0896 77.069C92.7648 82.6941 96.8038 88.4259 99.8194 90.8809C102.74 93.258 107.988 94.7313 113.9 95.0218C119.756 95.3095 125.788 94.4121 130.033 92.5092C138.233 88.8334 139.903 80.7382 140.651 77.2292C141.232 74.5057 141.243 71.5987 141.087 68.9009C141.01 67.5551 140.894 66.2969 140.793 65.1373C140.695 64.0105 140.606 62.9215 140.606 62.0292ZM120.986 27.0953C120.986 25.8314 120.648 24.7049 120.089 23.9514C119.583 23.27 118.84 22.7987 117.646 22.7984C116.668 22.7982 116.011 22.9187 115.546 23.1167C115.13 23.2943 114.781 23.5699 114.463 24.0831C113.73 25.2671 113.192 27.6455 113.189 32.384L113.721 43.9088C113.91 47.5661 114.106 51.4922 114.235 54.7707L120.986 55.6666V27.0953ZM125.153 56.2652L131.172 57.218L131.992 43.267V32.5083C131.992 31.031 131.39 30.1275 130.678 29.5489C129.884 28.9039 128.957 28.6731 128.519 28.6731C127.722 28.6731 126.899 28.797 126.306 29.2179C125.849 29.5421 125.153 30.3087 125.153 32.5083V56.2652ZM136.159 35.4278C137.406 34.8069 138.74 34.6083 139.912 34.6868C142.037 34.8292 143.91 35.718 145.037 37.6779C146.06 39.4592 146.273 41.8136 146.041 44.4927C145.72 48.1949 144.772 58.6457 144.772 62.0292C144.772 62.708 144.843 63.6116 144.944 64.7758C145.042 65.907 145.165 67.2389 145.247 68.6606C145.411 71.4987 145.422 74.8383 144.727 78.0987C144.002 81.4953 142.041 91.6918 131.738 96.3108C126.731 98.5551 120.002 99.4936 113.696 99.1838C107.445 98.8767 101.128 97.3189 97.1887 94.1122C93.4809 91.0937 88.9938 84.6307 87.0962 78.2589C84.9529 71.0619 80.3109 63.9646 79.1527 61.9533C78.4706 60.7689 78.684 59.3628 79.0019 58.4258C79.3607 57.3688 80.0554 56.2631 81.0993 55.4337C82.1758 54.5784 83.6043 54.0377 85.2876 54.1647C86.9369 54.2893 88.6462 55.0393 90.3834 56.4107C94.8541 59.9401 98.1342 65.5082 99.7424 68.9231C99.759 68.7664 99.779 68.6024 99.7941 68.4298C100.003 66.0435 100.039 62.3344 99.7467 56.7132C99.5635 53.1942 99.2356 50.1809 98.8888 46.6828C98.5425 43.1904 98.184 39.2713 97.955 34.0302C97.7722 29.8481 98.2012 26.6722 99.3672 24.471C99.9716 23.3302 100.79 22.4223 101.83 21.814C102.866 21.2087 103.995 20.974 105.11 20.974C106.759 20.974 108.813 21.2062 110.448 22.7678C110.593 22.4576 110.75 22.1652 110.921 21.8899C111.676 20.6698 112.681 19.8084 113.912 19.2835C115.095 18.7791 116.378 18.6309 117.646 18.6311C120.195 18.6315 122.164 19.7567 123.434 21.4683C124.256 22.576 124.75 23.8775 124.985 25.1982C126.338 24.5876 127.691 24.5068 128.519 24.5068C129.933 24.5068 131.784 25.0791 133.305 26.3154C134.908 27.6179 136.159 29.6733 136.159 32.5083V35.4278Z`,fill:`white`}),(0,R.jsx)(`path`,{d:`M7.15661 62.0292C7.15661 58.409 6.17994 47.6748 5.87291 44.1323C5.6654 41.7374 5.95357 40.4247 6.33875 39.7542C6.62116 39.2626 7.06336 38.915 8.12834 38.8436C8.89759 38.7921 9.73544 39.0114 10.3616 39.5761C10.9484 40.1052 11.6032 41.1682 11.6032 43.3176L11.6074 43.4388L12.5644 59.758C12.5988 60.3451 12.8798 60.8911 13.338 61.2599C13.7961 61.6284 14.3887 61.7859 14.9695 61.6941L24.9988 60.1068L35.8143 58.6703C36.8135 58.5376 37.5741 57.7084 37.6208 56.7016L38.2015 44.1323C38.2279 43.621 38.2525 43.1141 38.2784 42.6146C38.5218 37.9294 38.7401 33.7805 38.7401 32.4282C38.7401 28.3859 39.4246 26.6806 40.0227 25.9634C40.4996 25.3915 41.185 25.1402 42.6523 25.1402C43.1794 25.1402 43.5505 25.2481 43.8295 25.4111C44.1038 25.5714 44.416 25.8587 44.7138 26.4208C45.3521 27.6257 45.8173 29.891 45.6444 33.8479C45.4201 38.9804 45.0703 42.8146 44.7275 46.2718C44.3853 49.7231 44.0443 52.8561 43.8548 56.4971C43.5582 62.1966 43.5847 66.1256 43.8179 68.7924C43.9344 70.124 44.1069 71.1996 44.3396 72.0501C44.5601 72.8558 44.891 73.6757 45.4663 74.2887C46.1625 75.0303 47.1546 75.3844 48.1855 75.136C49.0033 74.9389 49.5778 74.4215 49.8918 74.0916C50.5484 73.4017 51.0123 72.5106 51.1945 72.0512C52.2527 69.3812 55.5272 63.1808 59.9601 59.6811C61.2536 58.6599 62.1958 58.3652 62.7889 58.3204C63.3476 58.2783 63.753 58.4436 64.0715 58.6967C64.4225 58.9756 64.6844 59.3811 64.8146 59.7643C64.8606 59.8999 64.8801 59.9968 64.8883 60.0584C63.6866 62.0865 58.9204 69.5222 56.6729 77.069C54.9977 82.6941 50.9586 88.4259 47.9431 90.8809C45.0229 93.258 39.7747 94.7313 33.8624 95.0218C28.0068 95.3095 21.9748 94.4121 17.7297 92.5092C9.52988 88.8334 7.85961 80.7382 7.11129 77.2292C6.53054 74.5057 6.5195 71.5987 6.67496 68.9009C6.75251 67.5551 6.86809 66.2969 6.96901 65.1373C7.06707 64.0105 7.1566 62.9215 7.15661 62.0292ZM26.7768 27.0953C26.7768 25.8314 27.1147 24.7049 27.6737 23.9514C28.1792 23.27 28.9221 22.7987 30.1167 22.7984C31.0942 22.7982 31.7518 22.9187 32.2162 23.1167C32.6326 23.2943 32.9817 23.5699 33.2996 24.0831C34.0328 25.2671 34.5705 27.6455 34.5738 32.384L34.0416 43.9088C33.8524 47.5661 33.6565 51.4922 33.5273 54.7707L26.7768 55.6666V27.0953ZM22.6095 56.2652L16.5904 57.218L15.7705 43.267V32.5083C15.7705 31.031 16.3726 30.1275 17.0847 29.5489C17.8785 28.9039 18.8058 28.6731 19.2432 28.6731C20.0404 28.6731 20.8634 28.797 21.4565 29.2179C21.9131 29.5421 22.6095 30.3087 22.6095 32.5083V56.2652ZM11.6032 35.4278C10.3568 34.8069 9.02265 34.6083 7.8501 34.6868C5.72541 34.8292 3.85197 35.718 2.72584 37.6779C1.70247 39.4592 1.48924 41.8136 1.72143 44.4927C2.0423 48.1949 2.99038 58.6457 2.99038 62.0292C2.99037 62.708 2.91991 63.6116 2.81859 64.7758C2.72014 65.907 2.59699 67.2389 2.51505 68.6606C2.3515 71.4987 2.34041 74.8383 3.0357 78.0987C3.76005 81.4953 5.72154 91.6918 16.0245 96.3108C21.0311 98.5551 27.7601 99.4936 34.0669 99.1838C40.3172 98.8767 46.6346 97.3189 50.5737 94.1122C54.2816 91.0937 58.7686 84.6307 60.6662 78.2589C62.8095 71.0619 67.4515 63.9646 68.6098 61.9533C69.2919 60.7689 69.0785 59.3628 68.7605 58.4258C68.4018 57.3688 67.707 56.2631 66.6632 55.4337C65.5867 54.5784 64.1582 54.0377 62.4748 54.1647C60.8256 54.2893 59.1162 55.0393 57.379 56.4107C52.9083 59.9401 49.6283 65.5082 48.02 68.9231C48.0034 68.7664 47.9835 68.6024 47.9684 68.4298C47.7597 66.0435 47.7232 62.3344 48.0158 56.7132C48.1989 53.1942 48.5269 50.1809 48.8737 46.6828C49.22 43.1904 49.5784 39.2713 49.8075 34.0302C49.9903 29.8481 49.5612 26.6722 48.3952 24.471C47.7909 23.3302 46.9729 22.4223 45.9321 21.814C44.8964 21.2087 43.7676 20.974 42.6523 20.974C41.0038 20.974 38.9497 21.2062 37.3141 22.7678C37.1698 22.4576 37.0124 22.1652 36.8419 21.8899C36.0863 20.6698 35.0817 19.8084 33.8508 19.2835C32.6679 18.7791 31.3849 18.6309 30.1167 18.6311C27.5677 18.6315 25.5986 19.7567 24.3285 21.4683C23.5066 22.576 23.0121 23.8775 22.7771 25.1982C21.4247 24.5876 20.0718 24.5068 19.2432 24.5068C17.8298 24.5068 15.9788 25.0791 14.4573 26.3154C12.8542 27.6179 11.6032 29.6733 11.6032 32.5083V35.4278Z`,fill:`white`})]});function le(e){return o(e,{headers:v})}function ue(e,t,n){return s(e,t,{...n,headers:v})}var B=e=>(0,R.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,R.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M15.3235 10.9352L11.5016 14.2111L7.67969 10.9352L8.6152 9.84375L11.5016 12.3178L14.388 9.84375L15.3235 10.9352Z`,fill:`currentColor`})}),V=e=>(0,R.jsxs)(`svg`,{width:16,height:16,viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,R.jsx)(`path`,{d:`M13 3H8.33337V4H11.2929L7.31315 7.97978L8.02026 8.68689L12 4.70711V7.66667H13V3Z`,fill:`currentColor`}),(0,R.jsx)(`path`,{d:`M4.33333 3.66667C3.59695 3.66667 3 4.26362 3 5V11.6667C3 12.403 3.59695 13 4.33333 13H11C11.7364 13 12.3333 12.403 12.3333 11.6667V9.66667H11.3333V11.6667C11.3333 11.8508 11.1841 12 11 12H4.33333C4.14924 12 4 11.8508 4 11.6667V5C4 4.81591 4.14924 4.66667 4.33333 4.66667H6.33333V3.66667H4.33333Z`,fill:`currentColor`})]}),de=e=>(0,R.jsx)(`svg`,{viewBox:`0 0 18 18`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,R.jsx)(`path`,{d:`M8.25 9.75C8.10166 9.75 7.95666 9.79399 7.83332 9.8764C7.70999 9.95881 7.61386 10.0759 7.55709 10.213C7.50032 10.35 7.48547 10.5008 7.51441 10.6463C7.54335 10.7918 7.61478 10.9254 7.71967 11.0303C7.82456 11.1352 7.9582 11.2066 8.10368 11.2356C8.24917 11.2645 8.39997 11.2497 8.53701 11.1929C8.67406 11.1361 8.79119 11.04 8.8736 10.9167C8.95601 10.7933 9 10.6483 9 10.5C9 10.3011 8.92098 10.1103 8.78033 9.96967C8.63968 9.82902 8.44891 9.75 8.25 9.75ZM5.25 9.75C5.10166 9.75 4.95666 9.79399 4.83332 9.8764C4.70999 9.95881 4.61386 10.0759 4.55709 10.213C4.50032 10.35 4.48547 10.5008 4.51441 10.6463C4.54335 10.7918 4.61478 10.9254 4.71967 11.0303C4.82456 11.1352 4.9582 11.2066 5.10368 11.2356C5.24917 11.2645 5.39997 11.2497 5.53701 11.1929C5.67406 11.1361 5.79119 11.04 5.8736 10.9167C5.95601 10.7933 6 10.6483 6 10.5C6 10.3011 5.92098 10.1103 5.78033 9.96967C5.63968 9.82902 5.44891 9.75 5.25 9.75ZM16.5 3C16.5 2.40326 16.2629 1.83097 15.841 1.40901C15.419 0.987053 14.8467 0.75 14.25 0.75H3.75C3.15326 0.75 2.58097 0.987053 2.15901 1.40901C1.73705 1.83097 1.5 2.40326 1.5 3V6C1.50331 6.55504 1.71166 7.08927 2.085 7.5C1.71166 7.91073 1.50331 8.44496 1.5 9V12C1.5 12.5967 1.73705 13.169 2.15901 13.591C2.58097 14.0129 3.15326 14.25 3.75 14.25H8.25V15.75H2.25C2.05109 15.75 1.86032 15.829 1.71967 15.9697C1.57902 16.1103 1.5 16.3011 1.5 16.5C1.5 16.6989 1.57902 16.8897 1.71967 17.0303C1.86032 17.171 2.05109 17.25 2.25 17.25H15.75C15.9489 17.25 16.1397 17.171 16.2803 17.0303C16.421 16.8897 16.5 16.6989 16.5 16.5C16.5 16.3011 16.421 16.1103 16.2803 15.9697C16.1397 15.829 15.9489 15.75 15.75 15.75H9.75V14.25H14.25C14.8467 14.25 15.419 14.0129 15.841 13.591C16.2629 13.169 16.5 12.5967 16.5 12V9C16.4967 8.44496 16.2883 7.91073 15.915 7.5C16.2883 7.08927 16.4967 6.55504 16.5 6V3ZM15 12C15 12.1989 14.921 12.3897 14.7803 12.5303C14.6397 12.671 14.4489 12.75 14.25 12.75H3.75C3.55109 12.75 3.36032 12.671 3.21967 12.5303C3.07902 12.3897 3 12.1989 3 12V9C3 8.80109 3.07902 8.61032 3.21967 8.46967C3.36032 8.32902 3.55109 8.25 3.75 8.25H14.25C14.4489 8.25 14.6397 8.32902 14.7803 8.46967C14.921 8.61032 15 8.80109 15 9V12ZM15 6C15 6.19891 14.921 6.38968 14.7803 6.53033C14.6397 6.67098 14.4489 6.75 14.25 6.75H3.75C3.55109 6.75 3.36032 6.67098 3.21967 6.53033C3.07902 6.38968 3 6.19891 3 6V3C3 2.80109 3.07902 2.61032 3.21967 2.46967C3.36032 2.32902 3.55109 2.25 3.75 2.25H14.25C14.4489 2.25 14.6397 2.32902 14.7803 2.46967C14.921 2.61032 15 2.80109 15 3V6ZM8.25 3.75C8.10166 3.75 7.95666 3.79399 7.83332 3.8764C7.70999 3.95881 7.61386 4.07594 7.55709 4.21299C7.50032 4.35003 7.48547 4.50083 7.51441 4.64632C7.54335 4.7918 7.61478 4.92544 7.71967 5.03033C7.82456 5.13522 7.9582 5.20665 8.10368 5.23559C8.24917 5.26453 8.39997 5.24968 8.53701 5.19291C8.67406 5.13614 8.79119 5.04001 8.8736 4.91668C8.95601 4.79334 9 4.64834 9 4.5C9 4.30109 8.92098 4.11032 8.78033 3.96967C8.63968 3.82902 8.44891 3.75 8.25 3.75ZM5.25 3.75C5.10166 3.75 4.95666 3.79399 4.83332 3.8764C4.70999 3.95881 4.61386 4.07594 4.55709 4.21299C4.50032 4.35003 4.48547 4.50083 4.51441 4.64632C4.54335 4.7918 4.61478 4.92544 4.71967 5.03033C4.82456 5.13522 4.9582 5.20665 5.10368 5.23559C5.24917 5.26453 5.39997 5.24968 5.53701 5.19291C5.67406 5.13614 5.79119 5.04001 5.8736 4.91668C5.95601 4.79334 6 4.64834 6 4.5C6 4.30109 5.92098 4.11032 5.78033 3.96967C5.63968 3.82902 5.44891 3.75 5.25 3.75Z`,fill:`currentColor`})});function H(e,t,n){let r=n?.lastError??null,i=t?.kind===`cloud`;return i&&!t?.apiKey?.trim()||ee(r)?e(S.BACKEND$STATUS_DISCONNECTED_ADD_API_KEY):te(r)?e(S.BACKEND$STATUS_DISCONNECTED_CHECK_API_KEY):k(r)?e(S.BACKEND$LOGGED_OUT):n?.isConnected===!0?e(S.ONBOARDING$BACKEND_STATUS_CONNECTED):i&&n?.isConnected===!1&&(D(r)||_(r))?e(S.BACKEND$STATUS_DISCONNECTED_CHECK_CLOUD_ACCESS):n?.isConnected===!1&&g(r)?e(S.BACKEND$STATUS_DISCONNECTED_CHECK_TUNNEL):n?.isConnected===!1&&_(r)?e(S.BACKEND$STATUS_DISCONNECTED_CHECK_URL_OR_NETWORK):n?.isConnected===!1?e(S.ONBOARDING$BACKEND_STATUS_DISCONNECTED):e(S.ONBOARDING$BACKEND_STATUS_CHECKING)}function U({isConnected:e,className:t}){let n,r,i;return e===`unavailable`?(n=`bg-[var(--oh-text-tertiary)]`,r=`No Backend Available`,i=`unavailable`):e===!0?(n=`bg-[var(--oh-status-success)]`,r=`Connected`,i=`connected`):e===!1?(n=`bg-red-500`,r=`Disconnected`,i=`disconnected`):(n=`bg-[var(--oh-interactive-selected)]`,r=`Checking connection`,i=`checking`),(0,R.jsx)(`span`,{"data-testid":`backend-status-dot`,"data-status":i,"aria-label":r,title:r,role:`status`,className:x(`inline-block w-2 h-2 rounded-full shrink-0`,n,t)})}var W={status:`idle`,verificationUrl:null,userCode:null,apiKey:null,error:null,errorCode:null};function fe(){let[e,t]=L.useState(W),n=L.useRef(null),r=L.useCallback((e,r)=>{n.current?.abort();let i=new AbortController;n.current=i,t({...W,status:`starting`}),(async()=>{let n;try{n=await le(e)}catch(e){if(i.signal.aborted)return;let n=e instanceof Error?e.message:`Failed to start device flow`,r=e instanceof c?e.code:void 0;t({...W,status:`error`,error:n,errorCode:r??null});return}if(!i.signal.aborted){T(e,r),t({...W,status:`awaiting_authorization`,verificationUrl:n.verification_uri_complete,userCode:n.user_code});try{let a=await ue(e,n.device_code,{interval:n.interval,signal:i.signal});if(i.signal.aborted)return;E(e,r),t({...W,status:`success`,apiKey:a.access_token})}catch(e){if(i.signal.aborted)return;if(e instanceof c&&e.code===`cancelled`){t(W);return}let n=e instanceof Error?e.message:`Authorization failed`,r=e instanceof c?e.code:void 0;t({...W,status:`error`,error:n,errorCode:r??null})}}})()},[]),i=L.useCallback(()=>{n.current?.abort(),n.current=null,t(W)},[]),a=L.useCallback(()=>{n.current?.abort(),n.current=null,t(W)},[]);return L.useEffect(()=>()=>{n.current?.abort()},[]),{...e,start:r,cancel:i,reset:a}}function G(e){try{return new URL(e).protocol===`https:`}catch{return!1}}function K({host:e,onSuccess:t,testIdRoot:n,isDisabled:r=!1,idleButtonLabel:a,idleButtonContent:o,idleDescription:s,idleFooter:c,className:l,buttonClassName:u,buttonVariant:d=`primary`,statusDisplay:f=`inline`,analyticsSource:p}){let{t:m}=i(`openhands`),h=fe(),g=L.useRef(null);L.useEffect(()=>()=>{g.current?.close()},[]),L.useEffect(()=>{if(h.status===`awaiting_authorization`&&h.verificationUrl&&g.current&&!g.current.closed){if(!G(h.verificationUrl)){console.error(`Invalid verification URL protocol`);return}try{g.current.location.href=h.verificationUrl}catch{g.current=window.open(h.verificationUrl,`_blank`,`noopener,noreferrer`)}}},[h.status,h.verificationUrl]),L.useEffect(()=>{if(h.status===`success`&&h.apiKey)try{t(h.apiKey)}finally{h.reset(),g.current?.close()}},[h.status,h.apiKey,h.reset,t]);let _=()=>{let t=e.trim().replace(/\/+$/,``),n=/^https?:\/\//i.test(t)?t:`https://${t}`;try{let e=new URL(n);if(e.username||e.password)throw Error(`Invalid URL format`)}catch{return}g.current=window.open(`about:blank`,`_blank`),g.current||console.warn(`Popup blocked - user will need to use manual link`),h.start(n,p)},v=()=>{h.cancel(),g.current?.close()},y=(0,R.jsx)(pe,{status:h.status,error:h.error,verificationUrl:h.verificationUrl,testIdRoot:n,onCancel:v,onRetry:_}),b=f===`modal`&&h.status!==`idle`,C=a??m(S.BACKEND$LOGIN_WITH_OPENHANDS);return(0,R.jsxs)(`div`,{"data-testid":`${n}-device-flow`,className:x(`flex flex-col gap-3`,l),children:[h.status===`idle`?s:null,h.status===`idle`&&d===`unstyled`&&(0,R.jsx)(`button`,{type:`button`,onClick:_,"data-testid":`${n}-login-button`,className:u,disabled:r,"aria-label":o?C:void 0,children:o??C}),h.status===`idle`&&d!==`unstyled`&&(0,R.jsx)(F,{type:`button`,variant:d,onClick:_,testId:`${n}-login-button`,className:u,isDisabled:r,ariaLabel:o?C:void 0,children:o??C}),h.status===`idle`?c:null,f===`inline`?y:null,b?(0,R.jsx)(A,{onClose:v,"aria-label":m(S.BACKEND$LOGIN_WITH_OPENHANDS),closeOnBackdropClick:!1,children:(0,R.jsx)(j,{testID:`${n}-auth-modal`,width:`sm`,className:`items-stretch border border-[var(--oh-border)]`,children:y})}):null]})}function pe({status:e,error:t,verificationUrl:n,testIdRoot:r,onCancel:a,onRetry:o}){let{t:s}=i(`openhands`);if(e===`idle`||e===`success`)return null;if(e===`starting`)return(0,R.jsxs)(`div`,{className:`flex items-center justify-center gap-2`,"data-testid":`${r}-auth-starting`,role:`status`,"aria-live":`polite`,children:[(0,R.jsx)(me,{}),(0,R.jsx)(`span`,{className:`text-sm text-[var(--oh-text-tertiary)]`,children:s(S.BACKEND$AUTH_STARTING)})]});if(e===`awaiting_authorization`){let e=n&&G(n)?n:null;return(0,R.jsxs)(`div`,{className:`flex flex-col gap-4`,"data-testid":`${r}-auth-awaiting`,role:`status`,"aria-live":`polite`,children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-center gap-2`,children:[(0,R.jsx)(me,{}),(0,R.jsx)(`span`,{className:`text-sm font-medium text-white`,children:s(S.BACKEND$AUTH_AWAITING)})]}),(0,R.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,R.jsx)(`p`,{className:`text-center text-sm leading-5 text-[var(--oh-text-tertiary)]`,children:e?`${s(S.BACKEND$AUTH_BROWSER_OPENED)} ${s(S.BACKEND$AUTH_OPEN_MANUALLY)}`:s(S.BACKEND$AUTH_BROWSER_OPENED)}),e?(0,R.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`max-h-16 overflow-auto break-all text-center text-xs text-blue-400 hover:underline`,children:e}):null]}),(0,R.jsx)(F,{type:`button`,variant:`secondary`,onClick:a,testId:`${r}-auth-cancel`,className:`w-full`,children:s(S.BACKEND$AUTH_CANCEL)})]})}return(0,R.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-lg border border-red-700 bg-red-900/20 p-4`,"data-testid":`${r}-auth-error`,role:`alert`,children:[(0,R.jsx)(`p`,{className:`text-sm text-red-400`,children:t}),(0,R.jsx)(F,{type:`button`,variant:`secondary`,onClick:o,testId:`${r}-auth-retry`,className:`w-full`,children:s(S.BACKEND$AUTH_RETRY)})]})}function me(){return(0,R.jsx)(`svg`,{className:`animate-spin h-4 w-4 text-white`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,"aria-hidden":`true`,children:(0,R.jsx)(`path`,{className:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z`})})}var he=t({BackendConnectionOptions:()=>Oe,BackendForm:()=>Z,BackendFormModal:()=>$});function ge(e){return l(e)?`cloud`:`local`}function _e(e){let t=e.toLowerCase().replace(/^\[|\]$/g,``);return!!(t===`localhost`||t===`::1`||t===`::`||t===`0.0.0.0`||/^127\./.test(t)||/^::ffff:127\./i.test(t)||/^10\./.test(t)||/^192\.168\./.test(t)||/^172\.(1[6-9]|2\d|3[01])\./.test(t)||/^fe[89ab][0-9a-f]:/i.test(t)||/^f[cd][0-9a-f]{2}:/i.test(t)||t.endsWith(`.local`)||!t.includes(`.`)&&!t.includes(`:`))}function q(e){let t=e.trim().replace(/\/+$/,``);if(!t)return``;if(/^https?:\/\//i.test(t))return t;let n=t.match(/^\[([^\]]+)\]/);return`${_e(n?n[1]:(t.match(/:/g)??[]).length>1?t:t.split(`:`)[0])?`http`:`https`}://${t}`}function J(e){let t=e.trim();if(!t||/\s/.test(t))return!1;let n=q(t);if(!n)return!1;try{let e=new URL(n);return(e.protocol===`http:`||e.protocol===`https:`)&&e.hostname.length>0}catch{return!1}}var Y=`https://app.all-hands.dev`,ve=`agent-canvas --backend-only --port 8001`,ye=`https://github.com/OpenHands/OpenHands/blob/main/docs/DEVELOPMENT.md#alternative-development-workflows`,be=`https://github.com/OpenHands/OpenHands/blob/main/docs/SELF_HOSTING.md`,xe=`https://docs.openhands.dev/overview/introduction`;function Se(e,t){return e(S.BACKEND$CONNECTION_TEST_FAILED,{host:t,interpolation:{escapeValue:!1}})}function Ce(e){return m(e)}function we(e,t){let n=Ce(t);return n?`${e}\n${n}`:e}async function Te(e){if(e.kind!==`local`)return{agentServerVersion:null};let t=await new u(f({host:e.host,sessionApiKey:e.apiKey||null,timeout:5e3})).getServerInfo();return p(t),{agentServerVersion:h(t)}}function Ee({backend:e,testIdRoot:t}){let{t:n}=i(`openhands`),r=O([e])[e.id],a=r?.isConnected??null,o=r?.disabled===!0,s=r?.consecutiveFailures??0,c=r?.lastError??null,{data:l}=d({queryKey:[`backend-version`,e.host,e.apiKey],queryFn:async()=>h(await new u(f({host:e.host,sessionApiKey:e.apiKey||null,timeout:5e3})).getServerInfo()),retry:!1,staleTime:6e4,enabled:e.kind===`local`&&!o}),p=H(n,e,r),m=e.kind===`cloud`?n(S.BACKEND$KIND_CLOUD):n(S.BACKEND$KIND_LOCAL);return(0,R.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,R.jsxs)(`div`,{"data-testid":`${t}-status`,className:`flex items-center gap-3 text-sm`,children:[(0,R.jsx)(U,{isConnected:a}),(0,R.jsx)(`span`,{className:`text-white`,"data-testid":`${t}-status-label`,children:p}),(0,R.jsx)(`span`,{className:`text-tertiary-alt`,children:`·`}),(0,R.jsx)(`span`,{className:`text-[var(--oh-text-tertiary)]`,children:m}),l?(0,R.jsx)(`span`,{className:`text-xs text-[var(--oh-muted)]`,"data-testid":`${t}-version`,children:n(S.BACKEND$VERSION_LABEL,{version:l})}):null]}),o?(0,R.jsxs)(`div`,{"data-testid":`${t}-status-error`,className:`flex flex-col gap-1 rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-red-300`,children:n(S.BACKEND$HEALTH_FAILED_TITLE)}),(0,R.jsx)(`span`,{className:`text-xs text-[var(--oh-text-tertiary)]`,children:n(S.BACKEND$HEALTH_FAILED_DETAIL,{count:s})}),c?(0,R.jsx)(`span`,{"data-testid":`${t}-status-error-message`,className:`text-xs text-red-300 whitespace-pre-wrap break-words`,children:c}):null]}):null]})}function X({initialName:e=``,initialHost:t=``,initialApiKey:n=``,onTestConnection:r,onSuccess:a,requireApiKey:o=!1,onSubmitOverride:s,fixedKind:c}){let{t:l}=i(`openhands`),[u,d]=L.useState(e),[f,p]=L.useState(t),[m,h]=L.useState(n),[g,_]=L.useState(null),[v,y]=L.useState(!1),[b,x]=L.useState(null),S=c??b??ge(f),C=o||S!==`local`,w=u.trim().length>0&&J(f)&&(!C||m.trim().length>0);return{name:u,setName:d,host:f,setHost:p,apiKey:m,setApiKey:h,connectionError:g,setConnectionError:_,isSubmitting:v,kind:S,setKind:x,canSubmit:w,handleSubmit:L.useCallback(async e=>{if(e.preventDefault(),!w||v)return;let t={name:u.trim(),host:q(f),apiKey:m.trim(),kind:S};_(null),y(!0);try{s?await s(t):a(await r(t))}catch(e){_(we(Se(l,t.host),e))}finally{y(!1)}},[w,v,u,f,m,S,r,a,o,s,c,l])}}function Z({mode:e,backend:t,onSubmitted:n,renderActions:r,testIdRoot:a,hostReadOnly:o,requireApiKey:s,hideConfigurationFields:c=!1,onSubmitOverride:l}){let{t:u}=i(`openhands`),{addBackend:d,updateBackend:f}=y(),p=e===`edit`&&t?t.kind:null,{name:m,setName:h,host:g,setHost:_,apiKey:v,setApiKey:b,connectionError:C,setConnectionError:w,isSubmitting:T,kind:E,handleSubmit:ee}=X({initialName:t?.name??``,initialHost:t?.host??``,initialApiKey:t?.apiKey??``,onTestConnection:Te,onSuccess:async()=>{let r={name:m.trim(),host:q(g),apiKey:v.trim(),kind:p??E};e===`edit`&&t?f(t.id,r):d(r),n()},requireApiKey:s,onSubmitOverride:l}),[te,D]=L.useState(!1),[O,k]=L.useState(!1),ne=p??E,A=a??(e===`edit`?`edit-backend`:`add-backend`),j=s||ne!==`local`,M=m.trim().length>0&&J(g)&&(!j||v.trim().length>0),N=te&&!m.trim()?u(S.BACKEND$NAME_REQUIRED):void 0,P=O?g.trim()?J(g)?void 0:u(S.BACKEND$HOST_INVALID):u(S.BACKEND$HOST_REQUIRED):void 0;return(0,R.jsxs)(`form`,{"data-testid":`${A}-form`,onSubmit:async e=>{if(!M){D(!0),k(!0);return}await ee(e)},className:`flex flex-col gap-4`,children:[(0,R.jsxs)(`div`,{"data-testid":`${A}-configuration-fields`,className:x(`flex flex-col gap-4`,c&&`hidden`),children:[(0,R.jsx)(I,{testId:`${A}-name`,name:`${A}-name`,type:`text`,label:u(S.BACKEND$NAME_LABEL),value:m,onChange:e=>{h(e),w(null)},onBlur:()=>D(!0),placeholder:`Production`,className:`w-full`,showRequiredTag:!0,error:N}),(0,R.jsx)(I,{testId:`${A}-host`,name:`${A}-host`,type:`text`,label:u(S.BACKEND$HOST_LABEL),value:g,onChange:o?void 0:e=>{_(e),w(null)},onBlur:()=>k(!0),placeholder:Y,className:`w-full`,showRequiredTag:!0,error:P,isDisabled:o}),(0,R.jsx)(I,{testId:`${A}-api-key`,name:`${A}-api-key`,type:`password`,label:u(S.BACKEND$KEY_LABEL),value:v,onChange:e=>{b(e),w(null)},placeholder:``,className:`w-full`}),C?(0,R.jsx)(`div`,{role:`alert`,"data-testid":`${A}-error`,className:`rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm text-red-300 whitespace-pre-wrap break-words`,children:C}):null,e===`edit`&&t&&(0,R.jsx)(Ee,{backend:t,testIdRoot:A})]}),r?r({canSubmit:M&&!T,isSubmitting:T,testIdRoot:A}):(0,R.jsxs)(`div`,{className:`flex justify-end gap-2 mt-2 w-full`,children:[(0,R.jsx)(F,{type:`button`,variant:`secondary`,onClick:n,testId:`${A}-cancel`,children:u(S.BUTTON$CANCEL)}),(0,R.jsx)(F,{type:`submit`,variant:`primary`,isDisabled:!M||T,testId:`${A}-submit`,children:u(S.BACKEND$SAVE)})]})]})}function De(){let{currentPath:e,navigate:t}=ie();return L.useCallback(()=>{/^\/automations\/[^/]+/.test(e)?t(`/automations`):/^\/conversations\/[^/]+/.test(e)&&t(`/conversations`)},[e,t])}function Oe({onConnected:e,testIdRoot:t=`add-backend`,initialManualBackend:n,requireManualApiKey:r=!1,manualSubmitLabel:a,manualSubmittingLabel:o,manualSubmitTestId:s,analyticsSource:c}){let{t:l}=i(`openhands`),u=b();return u?(0,R.jsx)(`div`,{"data-testid":`${t}-connection-options`,className:`flex justify-center`,children:(0,R.jsx)(`div`,{className:`w-full`,children:(0,R.jsx)(Q,{onConnected:e,testIdRoot:t,lockedHost:u,analyticsSource:c})})}):(0,R.jsxs)(`div`,{"data-testid":`${t}-connection-options`,className:`flex flex-col gap-6 md:flex-row`,children:[(0,R.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,R.jsx)(ke,{onConnected:e,testIdRoot:t,initialBackend:n,requireApiKey:r,submitLabel:a??l(S.BACKEND$CONNECT),submittingLabel:o??l(S.ONBOARDING$BACKEND_STATUS_CHECKING),submitTestId:s})}),(0,R.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,R.jsx)(Q,{onConnected:e,testIdRoot:t,analyticsSource:c})})]})}function ke({onConnected:e,testIdRoot:t,initialBackend:n,requireApiKey:r,submitLabel:a,submittingLabel:o,submitTestId:s,fixedKind:c,showKindSelector:l=!0}){let{t:u}=i(`openhands`),{name:d,setName:f,host:p,setHost:m,apiKey:h,setApiKey:g,connectionError:_,setConnectionError:v,isSubmitting:y,kind:b,setKind:x,canSubmit:C,handleSubmit:w}=X({initialName:n?.name??``,initialHost:n?.host??``,initialApiKey:n?.apiKey??``,onTestConnection:Te,onSuccess:t=>{e({name:d.trim(),host:q(p),apiKey:h.trim(),kind:b},`manual`,t)},requireApiKey:r,fixedKind:c});return(0,R.jsxs)(`form`,{"data-testid":`${t}-form`,onSubmit:w,className:`flex flex-col gap-4 flex-1 min-w-0`,children:[(0,R.jsx)(I,{testId:`${t}-name`,name:`${t}-name`,type:`text`,label:u(S.BACKEND$NAME_LABEL),hint:u(S.BACKEND$NAME_HELPER),value:d,onChange:e=>{f(e),v(null)},placeholder:`e.g. My Server`,className:`w-full`}),(0,R.jsx)(I,{testId:`${t}-host`,name:`${t}-host`,type:`text`,label:u(S.BACKEND$HOST_LABEL),hint:u(S.BACKEND$HOST_HELPER),value:p,onChange:e=>{m(e),v(null)},placeholder:`http://localhost:8000`,className:`w-full`}),l?(0,R.jsxs)(`div`,{className:`flex flex-col items-start gap-2.5`,children:[(0,R.jsx)(`span`,{className:`text-sm`,children:u(S.BACKEND$KIND_LABEL)}),(0,R.jsx)(oe,{value:b,options:[{value:`local`,label:u(S.BACKEND$KIND_LOCAL)},{value:`cloud`,label:u(S.BACKEND$KIND_CLOUD)}],onChange:e=>x(e),ariaLabel:u(S.BACKEND$KIND_LABEL),testId:`${t}-kind`})]}):null,(0,R.jsx)(I,{testId:`${t}-api-key`,name:`${t}-api-key`,type:`password`,label:u(S.BACKEND$KEY_LABEL),value:h,onChange:e=>{g(e),v(null)},placeholder:`sk-••••••••••`,className:`w-full`}),_?(0,R.jsx)(`div`,{role:`alert`,"data-testid":`${t}-error`,className:`rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm text-red-300 whitespace-pre-wrap break-words`,children:_}):null,(0,R.jsx)(F,{type:`submit`,variant:`secondary`,isDisabled:!C||y,testId:s??`${t}-submit`,className:`w-full text-center`,children:y?o:a})]})}function Q({onConnected:e,testIdRoot:t,lockedHost:n,analyticsSource:r,showBranding:a=!0}){let{t:o}=i(`openhands`),[s,c]=L.useState(!1),[l,u]=L.useState(``),d=`${t}-advanced-panel`,f=n??(l.trim()||Y);return(0,R.jsxs)(`div`,{className:`flex w-full min-w-0 flex-col items-center gap-3`,children:[a?(0,R.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,R.jsx)(z,{width:56,height:56,"aria-hidden":!0}),(0,R.jsx)(`h4`,{className:re,"data-testid":`${t}-cloud-title`,children:o(S.BACKEND$CLOUD_TITLE)})]}):null,(0,R.jsx)(K,{host:f,onSuccess:t=>{e({name:`OpenHands Cloud`,host:q(f),apiKey:t,kind:`cloud`},`cloud_login`)},testIdRoot:t,analyticsSource:r,className:`w-full items-center`,idleDescription:(0,R.jsx)(`p`,{className:`text-center text-sm leading-relaxed text-[var(--oh-muted)]`,"data-testid":`${t}-cloud-description`,children:o(S.BACKEND$CLOUD_DESCRIPTION)}),idleFooter:n?null:(0,R.jsxs)(`div`,{className:`mx-auto w-full max-w-md`,children:[(0,R.jsxs)(`button`,{type:`button`,onClick:()=>c(e=>!e),"aria-expanded":s,"aria-controls":d,"data-testid":`${t}-advanced-toggle`,className:`flex w-full cursor-pointer items-center justify-center gap-1 text-center text-xs text-[var(--oh-muted)] transition-colors hover:text-content-2`,children:[(0,R.jsx)(`span`,{children:o(S.BACKEND$ADVANCED)}),(0,R.jsx)(B,{className:x(`h-4 w-4 shrink-0 text-muted transition-transform duration-200 ease-out`,s&&`rotate-180`),"aria-hidden":!0})]}),(0,R.jsx)(`div`,{className:x(`grid transition-[grid-template-rows] duration-200 ease-out motion-reduce:transition-none`,s?`grid-rows-[1fr]`:`grid-rows-[0fr]`),children:(0,R.jsx)(`div`,{className:`overflow-hidden`,children:(0,R.jsxs)(`div`,{id:d,"data-testid":`${t}-advanced-panel`,"aria-hidden":!s,inert:s?void 0:!0,className:x(`pt-3 transition-opacity duration-200 ease-out motion-reduce:transition-none`,s?`opacity-100`:`opacity-0`),children:[(0,R.jsx)(I,{testId:`${t}-cloud-host`,name:`${t}-cloud-host`,type:`text`,label:o(S.BACKEND$HOST_LABEL),value:l,onChange:u,placeholder:Y,className:`w-full`}),(0,R.jsx)(`p`,{className:`mt-1 text-xs text-[var(--oh-muted)]`,children:o(S.BACKEND$LOGIN_CLOUD_HINT)})]})})})]})})]})}function Ae({value:e,selectedValue:t,title:n,description:r,icon:i,onSelect:a,panelId:o,testId:s}){let c=e===t;return(0,R.jsxs)(`button`,{id:`${s}-tab`,type:`button`,role:`tab`,"aria-selected":c,"aria-controls":o,"data-testid":s,onClick:()=>a(e),className:x(`relative flex min-h-16 w-full cursor-pointer items-center gap-3 px-3 py-3 text-left transition-colors`,`first:border-r first:border-r-[var(--oh-border)]`,`focus-visible:z-10 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-blue-300`,c?`bg-[var(--oh-surface-raised)] text-white after:absolute after:inset-x-0 after:bottom-0 after:h-0.5 after:bg-primary`:`text-[var(--oh-muted)] hover:bg-[var(--oh-surface-raised)] hover:text-white`),children:[(0,R.jsx)(`span`,{className:`flex size-8 shrink-0 items-center justify-center`,"aria-hidden":!0,children:i}),(0,R.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`span`,{className:`block truncate text-sm font-medium`,children:n}),(0,R.jsx)(`span`,{className:`mt-0.5 block text-xs leading-tight text-[var(--oh-muted)]`,children:r})]})]})}function je({children:e}){let t=L.useRef(null),[n,r]=L.useState();return L.useLayoutEffect(()=>{let e=t.current;if(!e)return;let n=()=>{let t=e.getBoundingClientRect().height;r(t>0?t:void 0)};if(n(),typeof ResizeObserver>`u`)return;let i=new ResizeObserver(n);return i.observe(e),()=>i.disconnect()},[]),(0,R.jsx)(`div`,{"data-testid":`add-backend-panel-height`,style:n===void 0?void 0:{height:n},className:`overflow-hidden transition-[height] duration-300 ease-in-out motion-reduce:transition-none`,children:(0,R.jsx)(`div`,{ref:t,children:e})})}function Me({location:e}){let{t}=i(`openhands`),[n,r]=L.useState(!1),a=e===`remote`,o=t(a?S.BACKEND$REMOTE_SETUP_TITLE:S.BACKEND$BEFORE_CONNECT_TITLE),s=t(a?S.BACKEND$REMOTE_SETUP_DESCRIPTION:S.BACKEND$LOCAL_SETUP_DESCRIPTION),c=a?be:ye,l=t(a?S.BACKEND$REMOTE_SETUP_DOCS:S.BACKEND$LOCAL_SETUP_DOCS),u=a?`add-backend-remote`:`add-backend-local`,d=`${u}-guidance-toggle`,f=`${u}-guidance-body`;return(0,R.jsxs)(`aside`,{"data-testid":`${u}-guidance`,className:`rounded-lg bg-[var(--oh-surface-raised)] text-sm text-[var(--oh-muted)]`,children:[(0,R.jsx)(`h4`,{className:`text-white`,children:(0,R.jsxs)(`button`,{id:d,type:`button`,onClick:()=>r(e=>!e),"aria-expanded":n,"aria-controls":f,"data-testid":d,className:x(`flex w-full cursor-pointer items-center justify-between gap-2 rounded-lg px-3 py-2 text-left font-medium`,`transition-colors hover:bg-[var(--oh-interactive-hover)]`,`focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-300`),children:[(0,R.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,R.jsx)(se,{className:`size-4 shrink-0 text-[var(--oh-muted)]`,"aria-hidden":!0}),(0,R.jsx)(`span`,{className:`truncate`,children:o})]}),(0,R.jsx)(C,{className:x(`size-5 shrink-0 text-[var(--oh-muted)] transition-transform duration-200 ease-out`,n&&`rotate-180`),"aria-hidden":!0})]})}),(0,R.jsx)(`div`,{className:x(`grid transition-[grid-template-rows] duration-200 ease-out motion-reduce:transition-none`,n?`grid-rows-[1fr]`:`grid-rows-[0fr]`),children:(0,R.jsx)(`div`,{className:`overflow-hidden`,children:(0,R.jsxs)(`div`,{id:f,"data-testid":f,role:`region`,"aria-labelledby":d,"aria-hidden":!n,inert:n?void 0:!0,className:x(`flex flex-col gap-2 px-3 pb-3 transition-opacity duration-200 ease-out motion-reduce:transition-none`,n?`opacity-100`:`opacity-0`),children:[(0,R.jsx)(`p`,{className:`leading-5`,children:s}),a?(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h5`,{className:`font-medium text-white`,children:t(S.BACKEND$REMOTE_CONNECTION_TITLE)}),(0,R.jsx)(`p`,{className:`mt-1 leading-5`,children:t(S.BACKEND$REMOTE_CONNECTION_DESCRIPTION)})]}):(0,R.jsx)(`code`,{className:`block break-words font-mono text-xs text-white`,children:ve}),(0,R.jsxs)(`a`,{href:c,target:`_blank`,rel:`noopener noreferrer`,"data-testid":`${u}-docs-link`,tabIndex:n?void 0:-1,className:`inline-flex w-fit items-center gap-1.5 text-primary hover:underline`,children:[(0,R.jsx)(`span`,{children:l}),(0,R.jsx)(V,{className:`size-4 shrink-0`,"aria-hidden":!0})]})]})})})]})}function Ne({onConnected:e,source:t}){let{t:n}=i(`openhands`),[r,a]=L.useState(`cloud`),[o,s]=L.useState(`local`),c=`add-backend-selected-panel`,l=`add-backend-option-${r}-tab`,u=r===`cloud`;return(0,R.jsxs)(`div`,{"data-testid":`add-backend-chooser`,className:`flex flex-col`,children:[(0,R.jsxs)(`div`,{role:`tablist`,"aria-label":n(S.BACKEND$CHOOSER_TITLE),className:`grid grid-cols-2 overflow-hidden rounded-lg border border-[var(--oh-border)]`,children:[(0,R.jsx)(Ae,{value:`cloud`,selectedValue:r,title:n(S.BACKEND$CLOUD_TITLE),description:n(S.BACKEND$CLOUD_OPTION_DESCRIPTION),icon:(0,R.jsx)(z,{width:32,height:32,"data-testid":`add-backend-option-cloud-logo`}),onSelect:a,panelId:c,testId:`add-backend-option-cloud`}),(0,R.jsx)(Ae,{value:`agent-server`,selectedValue:r,title:n(S.BACKEND$AGENT_SERVER_TITLE),description:n(S.BACKEND$AGENT_SERVER_OPTION_DESCRIPTION),icon:(0,R.jsx)(de,{className:`size-6`}),onSelect:a,panelId:c,testId:`add-backend-option-agent-server`})]}),(0,R.jsx)(`div`,{className:`mt-6`,children:(0,R.jsx)(je,{children:(0,R.jsx)(`section`,{id:c,role:`tabpanel`,"aria-labelledby":l,className:`min-w-0`,children:u?(0,R.jsx)(`div`,{"data-testid":`add-backend-cloud-panel`,className:x(`relative isolate flex min-h-[13.5rem] w-full items-center justify-center rounded-xl border border-[var(--oh-border)] px-5 py-6`,`before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-xl`,`before:bg-[radial-gradient(75%_75%_at_50%_50%,rgba(255,255,255,0.1)_0%,rgba(255,255,255,0)_70%)]`),children:(0,R.jsx)(Q,{onConnected:e,testIdRoot:`add-backend`,analyticsSource:t,showBranding:!1})}):(0,R.jsxs)(`div`,{"data-testid":`add-backend-agent-server-panel`,className:`mx-auto w-full max-w-xl`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,R.jsx)(`span`,{className:`h-px flex-1 bg-[var(--oh-border)]`,"aria-hidden":!0}),(0,R.jsx)(oe,{value:o,options:[{value:`local`,label:n(S.BACKEND$KIND_LOCAL),icon:(0,R.jsx)(ce,{"aria-hidden":!0})},{value:`remote`,label:n(S.BACKEND$KIND_REMOTE),icon:(0,R.jsx)(w,{"aria-hidden":!0})}],onChange:s,ariaLabel:n(S.BACKEND$AGENT_SERVER_LOCATION),testId:`add-backend-location`}),(0,R.jsx)(`span`,{className:`h-px flex-1 bg-[var(--oh-border)]`,"aria-hidden":!0})]}),(0,R.jsxs)(`div`,{className:`mt-4 flex flex-col gap-4`,children:[(0,R.jsx)(Me,{location:o},o),(0,R.jsx)(ke,{onConnected:e,testIdRoot:`add-backend`,requireApiKey:o===`remote`,submitLabel:n(S.BACKEND$CONNECT),submittingLabel:n(S.ONBOARDING$BACKEND_STATUS_CHECKING),fixedKind:`local`,showKindSelector:!1})]})]})})})})]})}function Pe({onClose:e,source:t}){let{addBackend:n}=y(),r=De(),{trackBackendAdded:i}=ne(),a=b(),o=L.useCallback((a,o,s)=>{n(a),i({backendKind:a.kind,connectionMethod:o,hasApiKey:!!a.apiKey,source:t,agentServerVersion:s?.agentServerVersion}),r(),e()},[n,r,e,i,t]);return a?(0,R.jsx)(Q,{onConnected:o,testIdRoot:`add-backend`,lockedHost:a,analyticsSource:t}):(0,R.jsx)(Ne,{onConnected:o,source:t})}function $({mode:e,backend:t,onClose:n,source:r=`add_backend_modal`,hideCloseButton:a=!1}){let{t:o}=i(`openhands`);if(e===`add`)return(0,R.jsx)(A,{onClose:a?void 0:n,closeOnEscape:!1,closeOnBackdropClick:!a,"aria-label":o(S.BACKEND$ADD_TITLE),children:(0,R.jsxs)(`div`,{"data-testid":a?`onboarding-modal`:`add-backend-modal`,className:x(`relative max-h-[92vh] w-[720px] overflow-y-auto rounded-xl border border-[var(--oh-border)] bg-base-secondary p-6`,N),children:[a?null:(0,R.jsx)(ae,{onClose:n,testId:`add-backend-close`}),a?null:(0,R.jsxs)(`div`,{className:`pr-8`,children:[(0,R.jsx)(`h2`,{className:P,children:o(S.BACKEND$CHOOSER_TITLE)}),(0,R.jsxs)(`p`,{className:`mt-2 text-sm leading-6 text-[var(--oh-muted)]`,"data-testid":`add-backend-description`,children:[o(S.BACKEND$CHOOSER_DESCRIPTION),` `,(0,R.jsxs)(`a`,{href:xe,target:`_blank`,rel:`noopener noreferrer`,"aria-label":o(S.BACKEND$DEPLOYMENT_OPTIONS),"data-testid":`add-backend-deployment-options-link`,className:`text-primary hover:underline`,children:[o(S.CTA$LEARN_MORE),(0,R.jsx)(V,{className:`ml-1 inline size-3.5 align-[-0.125em]`,"aria-hidden":!0})]})]})]}),(0,R.jsx)(`div`,{className:a?void 0:`mt-5`,children:(0,R.jsx)(Pe,{onClose:n,source:r})})]})});let s=`edit-backend`;return(0,R.jsx)(A,{onClose:n,closeOnEscape:!1,"aria-label":o(S.BACKEND$EDIT_TITLE),children:(0,R.jsxs)(`div`,{"data-testid":`${s}-modal`,className:x(`relative bg-base-secondary p-6 rounded-xl flex flex-col gap-4 border border-[var(--oh-border)]`,M(`md`)),children:[(0,R.jsx)(ae,{onClose:n,testId:`${s}-close`}),(0,R.jsx)(`h2`,{className:x(`pr-6`,P),children:o(S.BACKEND$EDIT_TITLE)}),(0,R.jsx)(Z,{mode:`edit`,backend:t,onSubmitted:n,testIdRoot:s})]})})}export{K as a,B as c,he as i,Z as n,U as o,$ as r,H as s,Oe as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./conversation-BUzBZAc-.js";export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./conversation-BUzBZAc-.js";export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./git-repo-dropdown-B7RvO70z.js";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./home-DEZaZqYv.js";export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./home-DEZaZqYv.js";export{e as default};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,bt as n,yt as r}from"./vendor-styling-Ck5D_A2Q.js";import{n as i}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~cy4jtuc2-rfV8mQ9m.js";import{t as a}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-Cwhh3zLe.js";import{t as o}from"./useInfiniteQuery-DbCv0Jzd.js";import{t as s}from"./useMutation-ChpkYxI5.js";import{t as c}from"./useQuery-BCnzy4LX.js";import{n as l}from"./use-is-creating-conversation-CVefC9Ns.js";import{A as u,At as d,Bt as f,Gt as p,M as m,N as h,Pt as g,R as _,Ut as v,jt as y,k as b,n as x,yt as S}from"./active-backend-context-BBvP-bI2.js";import{A as C,F as w,N as T,T as E,a as D,b as O,c as k,f as A,g as j,h as M,k as N,l as ee,m as te,n as ne,o as re,p as ie,r as ae,s as oe,t as P,v as se,z as F}from"./utils-DPQfkd-7.js";import{t as ce}from"./chat-send-button-B8n6-DQA.js";import{t as le}from"./check-DLOKoFU9.js";import{t as ue}from"./chevron-down-CnIbtM6i.js";import{c as I,l as L}from"./vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-CQR5Sa0H.js";import{t as de}from"./circle-check-CxCYJrpZ.js";import{i as fe,n as R,r as pe,t as me}from"./vendor~index-home~home~conversation-panel~conversation-DiXf0dkj.js";import{a as he,c as ge,d as _e,l as ve,n as ye,o as be,r as xe,s as Se,t as Ce,u as z}from"./git-provider-icon-BLMlwy02.js";import{t as we}from"./cloud-funnel-analytics-CBQdPZl_.js";import{t as Te}from"./loader-circle-C5AnEN8r.js";import{t as Ee}from"./plus-CtzlyAoF.js";import{t as De}from"./refresh-cw-B9GhC3QC.js";import{t as Oe}from"./loading-spinner-CN3riY7k.js";import{t as ke}from"./use-config-CPwqciXN.js";import{t as Ae}from"./settings-service.api-DZp7E7A9.js";import{n as B}from"./use-settings-BHWsOcIG.js";import{t as je}from"./modal-backdrop-BSzNhM4r.js";import{n as Me}from"./modal-body-duRaxj_K.js";import{r as Ne}from"./base-modal-3NmIOKDm.js";import{_ as Pe,n as Fe,s as Ie,t as Le}from"./form-control-classes-DLN3Qgub.js";import{t as Re}from"./brand-button-CJcwjnfb.js";import{n as ze}from"./navigation-context-CQZwH_tC.js";import{t as Be}from"./navigation-link-Bxo3-4vo.js";import{t as Ve}from"./vendor~root-layout~index-home~home~conversation-panel~conversation~automation-setup-route-CjECvSl5.js";import{t as He}from"./styled-tooltip-C5C07RQC.js";import{c as Ue,i as We,r as Ge,u as Ke}from"./dropdown-classes-zFW7qPSK.js";import{n as qe}from"./combobox-caret-BlmRwiM8.js";import{t as Je}from"./dist-Bl64nBZL.js";import{c as Ye,f as Xe,i as Ze,o as Qe,r as $e,t as V}from"./conversation-store-B8Eahyeg.js";import{t as et}from"./modal-close-button-D0aT02hs.js";import{C as tt,S as nt,t as H,x as rt}from"./agent-server-conversation-service.api-0RztSdJJ.js";import{t as it}from"./profiles-service.api-CoLTwjc1.js";import{f as at,o as ot,s as st,u as ct}from"./acp-providers-BkL3HWa3.js";import{f as lt}from"./llm-subscription-DTqtBCWz.js";import{d as ut,f as dt,i as ft,l as pt,o as mt,s as ht}from"./conversation-state-store-Bs8gA263.js";import{t as gt}from"./use-click-outside-element-W6Os4Nlb.js";import{t as _t}from"./use-llm-profiles-CU8ah1pz.js";import{n as vt,t as yt}from"./use-agent-profiles-BHLkLbRR.js";import{a as bt,i as xt,n as St,o as Ct,r as wt,t as Tt}from"./use-create-conversation-DWaSVUOB.js";import{n as U,t as W}from"./context-menu-list-item-BQhmFVEK.js";import{r as Et,t as Dt}from"./use-can-manage-org-profiles-Bu4y8gSx.js";import{t as Ot}from"./skills-B0IliMxw.js";import{a as kt,n as At,s as jt}from"./home-store-D7CjMN_-.js";import{t as Mt}from"./checkmark-XZyokq_Y.js";import{n as Nt,r as G}from"./typography-D9tiHct7.js";import{n as Pt,t as Ft}from"./use-activate-agent-profile-CeFfYwu_.js";import{G as It,J as K,K as q,V as Lt,a as Rt,c as zt,f as Bt,m as Vt,o as Ht,q as Ut,r as Wt,t as Gt,x as Kt,y as qt}from"./markdown-renderer-BiiiIznl.js";import{i as Jt,r as Yt,t as Xt}from"./skill-scope-B1Per5XI.js";import{t as Zt}from"./syntax-highlighter-BGDg_7w9.js";import{n as Qt,t as $t}from"./link-external-BNZzCM1I.js";import{t as en}from"./merge-agent-profile-save-input-WcFmQVKK.js";import{t as tn}from"./settings-gear-DaJj6Pde.js";import{t as nn}from"./u-robot-BvAOA2ZD.js";import{r as rn}from"./settings-utils-gw2ppAvw.js";import{a as an,i as on,n as sn,o as cn,r as ln,s as un}from"./git-repo-dropdown-B7RvO70z.js";var J=e(t(),1),dn={"image/png":`png`,"image/jpeg":`jpg`,"image/jpg":`jpg`,"image/gif":`gif`,"image/webp":`webp`,"image/bmp":`bmp`};function fn(e){if(e.name.trim())return e;let t=dn[e.type]??(e.type.startsWith(`image/`)?`png`:`bin`);return new File([e],`pasted-image-${Date.now()}.${t}`,{type:e.type,lastModified:e.lastModified})}function pn(e,t){let n=new Set(t),r=[],i=[];for(let t of e)n.has(t.name)?i.push(t):r.push(t);return{imagesToEmbed:r,imagesAsFiles:i}}function mn(e){let t=Array.from(e.files);if(t.length>0)return t.map(fn);let n=[];for(let t=0;t<e.items.length;t+=1){let r=e.items[t];if(r.kind!==`file`)continue;let i=r.getAsFile();i&&n.push(fn(i))}return n}var hn=e=>e?(e.innerText||e.textContent||``).trim()===``:!0,gn=e=>{e&&hn(e)&&(e.innerHTML=``,e.textContent=``)},Y=e=>e?.innerText||``,_n=e=>{e&&(e.textContent=``)},vn=e=>{e&&(e.value=``)},yn=e=>{if(!e)return;let t=window.getSelection();if(!t||t.rangeCount===0)return;let n=t.getRangeAt(0);if(!n.getBoundingClientRect||!e.getBoundingClientRect)return;let r=n.getBoundingClientRect(),i=e.getBoundingClientRect();r.bottom>i.bottom&&(e.scrollTop=e.scrollHeight-e.clientHeight)},bn=e=>{if(!e)return;e.focus();let t=window.getSelection();if(!t)return;let n=document.createRange();n.selectNodeContents(e),n.collapse(!1),t.removeAllRanges(),t.addRange(n),yn(e)},xn=e=>e.startsWith(`task-`),Sn=500,X=`oh:home-prompt-draft`,Cn=(e,t)=>{let{state:n,setDraftMessage:r}=Ye(e??``),i=(0,J.useRef)(null),a=(0,J.useRef)(!1),[o,s]=(0,J.useState)(!1),c=(0,J.useRef)(e),l=(0,J.useRef)(!0),u=(0,J.useRef)(``);(0,J.useEffect)(()=>{if(!e)return;let n=c.current,r=l.current;c.current=e,l.current=!1,i.current&&=(clearTimeout(i.current),null);let o=t.current;if(!r&&n&&n!==e){let t=xn(n),r=!xn(e);if(t&&r&&o){let t=Y(o).trim();if(t){Qe(e,{draftMessage:t}),a.current=!0,s(!0);return}}}o&&(o.textContent=``),a.current=!1,s(!1)},[e,t]),(0,J.useEffect)(()=>{if(a.current)return;let n=t.current;if(!n)return;if(!e){try{let e=sessionStorage.getItem(X);if(e&&Y(n).trim()===``){n.textContent=e;let t=window.getSelection(),r=document.createRange();r.selectNodeContents(n),r.collapse(!1),t?.removeAllRanges(),t?.addRange(r),u.current=e}}catch{}a.current=!0,s(!0);return}let{draftMessage:r}=Ze(e);r&&Y(n).trim()===``&&(n.textContent=r,bn(n)),a.current=!0,s(!0)},[t,e]);let d=(0,J.useCallback)(()=>{if(i.current&&clearTimeout(i.current),!e){let e=t.current;if(e){let t=Y(e).trim();u.current=t;try{t?sessionStorage.setItem(X,t):sessionStorage.removeItem(X)}catch{}}return}let a=e;i.current=setTimeout(()=>{if(a!==c.current)return;let e=t.current;if(!e)return;let i=Y(e).trim();i!==(n.draftMessage||``)&&r(i||null)},Sn)},[t,n.draftMessage,r,e]),f=(0,J.useCallback)(()=>{if(i.current&&=(clearTimeout(i.current),null),!e){try{sessionStorage.removeItem(X)}catch{}return}r(null)},[e,r]);return(0,J.useEffect)(()=>()=>{if(i.current&&clearTimeout(i.current),!c.current){let e=u.current;try{e?sessionStorage.getItem(`oh:home-prompt-draft`)!==null&&sessionStorage.setItem(X,e):sessionStorage.removeItem(X)}catch{}}},[]),{saveDraft:d,clearDraft:f,isRestored:o,hasDraft:!!n.draftMessage}},wn=()=>{let e=(0,J.useRef)(null),{conversationId:t}=K(),{messageToSend:n,messageRestoreIfEmpty:r,hasRightPanelToggled:i,setMessageToSend:a,clearMessageRestoreIfEmpty:o,setIsRightPanelShown:s}=V(),{saveDraft:c,clearDraft:l}=Cn(t,e),u=t?n:null;return(0,J.useEffect)(()=>{!t||!r||(Y(e.current).trim().length===0&&a(r.text),o())},[t,r,a,o]),(0,J.useEffect)(()=>{t&&e.current&&(a(Y(e.current)),s(i))},[t,i,a,s]),{chatInputRef:e,messageToSend:u,checkIsContentEmpty:(0,J.useCallback)(()=>hn(e.current),[]),clearEmptyContentHandler:(0,J.useCallback)(()=>{gn(e.current)},[]),getCurrentMessage:(0,J.useCallback)(()=>Y(e.current),[]),saveDraft:c,clearDraft:l}},Tn=e=>{let t=(0,J.useRef)(null),n=(0,J.useRef)(null),[r,i]=(0,J.useState)(!1),a=(0,J.useCallback)((t,n)=>{e&&t.length>0&&e(t,n)},[e]);return(0,J.useEffect)(()=>{let e=e=>{let t=e.detail.files;t&&t.length>0&&a(t,{fromPaste:!0})};return document.addEventListener(`pasteFiles`,e),()=>{document.removeEventListener(`pasteFiles`,e)}},[a]),{fileInputRef:t,chatContainerRef:n,isDragOver:r,handleFileIconClick:(0,J.useCallback)(e=>{!e&&t.current&&t.current.click()},[]),handleFileInputChange:(0,J.useCallback)(e=>{a(Array.from(e.target.files||[]))},[a]),handleDragOver:(0,J.useCallback)((e,t)=>{t||(e.preventDefault(),i(!0))},[]),handleDragLeave:(0,J.useCallback)((e,t)=>{t||n.current?.contains(e.relatedTarget)||(e.preventDefault(),i(!1))},[]),handleDrop:(0,J.useCallback)((e,t)=>{t||(e.preventDefault(),i(!1),a(Array.from(e.dataTransfer.files)))},[a])}},En=2,Dn=({elementRef:e,minHeight:t,maxHeight:n,onGripDragStart:r,onGripDragEnd:i,onHeightChange:a,onReachedMinHeight:o})=>{let s=e=>`touches`in e&&e.touches.length>0?e.touches[0].clientY:e.clientY,c=(e,t)=>{let n=document.getElementById(`resize-grip`);n&&(n.addEventListener(`touchmove`,e,{passive:!1,capture:!0}),n.addEventListener(`touchend`,t,{capture:!0}))},l=(e,t)=>{document.addEventListener(`mousemove`,e),document.addEventListener(`mouseup`,t)},u=u=>{let d=ie(),f=e.current?.offsetHeight||t,p=!1,m=i=>{if(i.preventDefault(),!p){let e=s(i);if(Math.abs(e-u)<En)return;p=!0,r?.()}let c=s(i)-u,l=Math.max(t,Math.min(n,f-c)),d=e.current;if(!d)return;d.style.height=`${l}px`;let m=d.scrollHeight>l||l>=n;d.style.overflowY=m?`auto`:`hidden`,a&&a(l),o&&Math.abs(l-t)<=1.5&&o()},h=()=>{if(p&&i?.(),d){let e=document.getElementById(`resize-grip`);if(!e)return;e.removeEventListener(`mousemove`,m),e.removeEventListener(`mouseup`,h),e.removeEventListener(`touchmove`,m),e.removeEventListener(`touchend`,h)}else document.removeEventListener(`mousemove`,m),document.removeEventListener(`mouseup`,h),document.removeEventListener(`touchmove`,m),document.removeEventListener(`touchend`,h)};d?c(m,h):l(m,h)};return{handleGripMouseDown:e=>{e.preventDefault(),u(e.clientY)},handleGripTouchStart:e=>{e.preventDefault(),u(e.touches[0].clientY)}}},On=20,kn=120,An=20,jn=50,Mn=()=>({hasUserResizedRef:(0,J.useRef)(!1),manualHeightRef:(0,J.useRef)(null)}),Nn=(e,t,n)=>{let{minHeight:r,maxHeight:i}=n,a=Math.max(r,Math.min(t,i));return e.style.setProperty(`height`,`${a}px`),e.style.setProperty(`overflow-y`,a>=i?`auto`:`hidden`),a},Pn=(e,t,n=jn)=>e>t+n,Fn=(e,t)=>{let n=A(e,t),r=n;e.style.setProperty(`height`,`auto`);let i=e.scrollHeight;return j(e,n),{currentHeight:r,currentStyleHeight:n,contentHeight:i}},In=(e,t)=>{let{finalHeight:n,overflowY:r}=t,i=e;i.style.height=`${n}px`,i.style.overflowY=r},Z=(e,t)=>{t&&t(e)},Ln=(e,t={})=>{let n=(0,J.useRef)(null),{minHeight:r=On,maxHeight:i=kn,enableManualResize:a=!1,value:o,onValueApplied:s,onGripDragStart:c,onGripDragEnd:l,onHeightChange:u}=t,d={minHeight:r,maxHeight:i},{hasUserResizedRef:f,manualHeightRef:p}=Mn(),m=()=>{f.current=!1,p.current=null},h=(0,J.useCallback)(e=>{u?.(e),f.current&&(p.current=e)},[u]),g=(0,J.useCallback)(()=>{f.current=!0,c?.()},[c]),_=(0,J.useCallback)(()=>{let t=e.current;if(t){let e=A(t,r);Math.abs(e-r)<=1.5&&(f.current=!1,p.current=null)}l?.()},[r,l]),{handleGripMouseDown:v,handleGripTouchStart:y}=Dn({elementRef:e,minHeight:r,maxHeight:i,onGripDragStart:a?g:void 0,onGripDragEnd:a?_:void 0,onHeightChange:h}),b=(0,J.useCallback)((e,t,n)=>{if(f.current&&t>r){In(e,{finalHeight:t,overflowY:`hidden`}),Z(t,u);return}let i=Math.max(n,r);In(e,{finalHeight:i,overflowY:`hidden`}),Z(i,u)},[r,u]),x=(0,J.useCallback)((e,t,n)=>{if(!Pn(t,n)){let t=Math.max(n,r);In(e,{finalHeight:t,overflowY:`hidden`}),Z(t,u);return}In(e,{finalHeight:t,overflowY:`auto`}),Z(t,u)},[r,u]),S=(0,J.useCallback)(e=>{In(e,{finalHeight:i,overflowY:`auto`}),Z(i,u)},[i,u]),C=(0,J.useCallback)(()=>{let t=e.current;if(!t)return;if((t.textContent??``).trim().length===0&&f.current&&p.current&&p.current>r+1.5){j(t,p.current),t.style.overflowY=`hidden`,Z(p.current,u);return}let{currentHeight:n,contentHeight:a}=Fn(t,r);if(a<=n){b(t,n,a);return}if(a<=i){x(t,n,a);return}S(t)},[e,r,i,u,b,x,S]),w=(0,J.useCallback)(()=>{n.current&&cancelAnimationFrame(n.current),n.current=requestAnimationFrame(()=>{n.current=null,C()})},[C]);return(0,J.useEffect)(()=>{if(o===void 0)return;let t=0,n=()=>{let t=e.current;return t?(t.textContent=o.text,w(),bn(t),s?.(),!0):!1};return n()||(t=requestAnimationFrame(()=>{n()})),()=>{t&&cancelAnimationFrame(t)}},[o,w,s]),(0,J.useEffect)(()=>{w()},[w]),{smartResize:w,handleGripMouseDown:v,handleGripTouchStart:y,increaseHeightForEmptyContent:()=>{let t=e.current;if(!t)return;let n=A(t,r),a=Math.min(n+An,i);if(a>n){let e=Nn(t,a,d);Z(e,u),f.current=!0,p.current=e}},resetManualResize:m}},Rn=(e,t)=>{let[n,r]=(0,J.useState)(!1),[i,a]=(0,J.useState)(!1),{setShouldHideSuggestions:o,clearMessageToSend:s}=V(),c=(0,J.useRef)(null),l=(0,J.useRef)(!1),u=(0,J.useCallback)(()=>{a(!0)},[]),d=(0,J.useCallback)(()=>{a(!1),l.current=!0},[]),f=(0,J.useCallback)(e=>{if(l.current){l.current=!1,e.preventDefault(),e.stopPropagation();return}e.stopPropagation(),r(e=>!e)},[]),{smartResize:p,handleGripMouseDown:m,handleGripTouchStart:h,increaseHeightForEmptyContent:g,resetManualResize:_}=Ln(e,{minHeight:20,maxHeight:400,onHeightChange:(0,J.useCallback)(e=>{o(e>C.HEIGHT_THRESHOLD)},[o]),onGripDragStart:u,onGripDragEnd:d,value:t??void 0,onValueApplied:s,enableManualResize:!0});return{gripRef:c,isGripVisible:n,isGripDragging:i,handleTopEdgeClick:f,smartResize:p,handleGripMouseDown:m,handleGripTouchStart:h,increaseHeightForEmptyContent:g,resetManualResize:_}},zn=(e,t,n,r,i,a,o)=>({handleInput:(0,J.useCallback)(()=>{t(),e.current&&gn(e.current),yn(e.current)},[t,e]),handlePaste:(0,J.useCallback)(e=>{e.preventDefault();let n=mn(e.clipboardData);if(n.length>0){let e=new CustomEvent(`pasteFiles`,{detail:{files:n}});document.dispatchEvent(e);return}let r=e.clipboardData.getData(`text/plain`);r&&(document.execCommand(`insertText`,!1,r),setTimeout(t,0))},[t]),handleKeyDown:(0,J.useCallback)((e,t,i)=>{if(e.key===`Enter`&&!e.nativeEvent.isComposing){if(r()){e.preventDefault(),n();return}!te()&&!e.shiftKey&&!t&&(e.preventDefault(),i())}},[r,n]),handleBlur:(0,J.useCallback)(()=>{e.current&&gn(e.current),o&&o()},[e,o]),handleFocus:(0,J.useCallback)(()=>{a&&a()},[a])}),Bn=(e,t,n,r,i)=>({handleSubmit:(0,J.useCallback)(()=>{let a=e.current?.innerText||``,o=a.trim(),{images:s,files:c}=V.getState(),l=s.length>0||c.length>0;!o&&!l||(r(a),_n(e.current),vn(t.current),n(),i?.())},[e,t,n,r,i]),handleStop:(0,J.useCallback)(e=>{e&&e()},[])}),Vn=()=>Jt(q().data?.selected_workspace??void 0);function Hn(e){let t=window.getSelection();if(!t||t.rangeCount===0)return-1;let n=t.getRangeAt(0),r=n.cloneRange();return r.selectNodeContents(e),r.setEnd(n.startContainer,n.startOffset),r.toString().length}var Un=e=>{let{data:t,isLoading:n}=Vn(),r=x().backend.kind===`cloud`,{data:i,isLoading:a}=_t(),[o,s]=(0,J.useState)(!1),[c,l]=(0,J.useState)(``),[u,d]=(0,J.useState)(`command`),[f,p]=(0,J.useState)(0),m=(0,J.useMemo)(()=>{let e=N.filter(e=>e.command===`/new`?r:!0);return n||!t||t.forEach(t=>{let n=(t.triggers||[]).filter(e=>e.startsWith(`/`));n.length>0?n.forEach(n=>{e.push({skill:t,command:n})}):t.type===`agentskills`&&e.push({skill:t,command:`/${t.name}`})}),e},[t,n,r]),h=(0,J.useMemo)(()=>(i?.profiles??[]).map(e=>{let t=`${w} ${e.name}`;return{command:t,skill:{name:e.name,type:`agentskills`,content:e.model?`Switch to ${e.model}`:`Switch to this LLM profile`,triggers:[t]}}}),[i?.profiles]),g=(0,J.useMemo)(()=>{let e=u===`model-profile`?h:m;if(!c)return e;let t=c.toLowerCase();return e.filter(e=>e.command.toLowerCase().includes(t)||e.skill.name.toLowerCase().includes(t)||e.skill.content?.toLowerCase().includes(t))},[u,h,m,c]),_=(0,J.useRef)(o);_.current=o;let v=(0,J.useRef)(g);v.current=g;let y=(0,J.useRef)(f);y.current=f,(0,J.useEffect)(()=>{p(0)},[c]);let b=(0,J.useRef)(null),S=(0,J.useCallback)(()=>{let t=e.current;if(!t)return null;let n=(t.innerText||``).replace(/[\n\r]+$/,``),r=Hn(t);if(r<0)return null;let i=n.slice(0,r),a=i.match(/(^|\s)(\/model(?:\s+\S*)?)$/);if(a){let e=a[2],t=i.length-e.length,o=n.slice(r).match(/^\S*/),s=r+(o?o[0].length:0);return{kind:`model-profile`,text:e.replace(/^\/model(?:\s+)?/,``),start:t,end:s}}let o=i.match(/(^|\s)(\/\S*)$/);if(!o)return null;let s=o[2],c=i.length-s.length,l=n.slice(r).match(/^\S*/),u=r+(l?l[0].length:0);return{kind:`command`,text:s.slice(1),start:c,end:u}},[e]),C=(0,J.useCallback)(()=>{let e=S(),t=e?.kind===`model-profile`?h.length>0||a:m.length>0;e!==null&&t?(d(e.kind),l(e.text),b.current={start:e.start,end:e.end},s(!0)):(s(!1),l(``),d(`command`),b.current=null)},[S,a,h.length,m.length]),T=(0,J.useCallback)(t=>{let n=e.current;if(!n)return;let r=b.current,i=(n.innerText||``).replace(/[\n\r]+$/,``),a=`${t.command} `;if(r){n.textContent=i.slice(0,r.start)+a+i.slice(r.end);let e=r.start+a.length,t=n.firstChild;if(t){let n=document.createRange(),r=window.getSelection(),i=Math.min(e,t.textContent.length);n.setStart(t,i),n.collapse(!0),r?.removeAllRanges(),r?.addRange(n)}}else{n.textContent=a;let e=document.createRange(),t=window.getSelection();e.selectNodeContents(n),e.collapse(!1),t?.removeAllRanges(),t?.addRange(e)}s(!1),l(``),d(`command`),p(0),b.current=null,n.dispatchEvent(new InputEvent(`input`,{bubbles:!0})),n.focus()},[e]);return{isMenuOpen:o,filteredItems:g,selectedIndex:f,updateSlashMenu:C,selectItem:T,handleSlashKeyDown:(0,J.useCallback)(e=>{let t=v.current;if(!_.current||t.length===0)return!1;switch(e.key){case`ArrowDown`:return e.preventDefault(),p(e=>e<t.length-1?e+1:0),!0;case`ArrowUp`:return e.preventDefault(),p(e=>e>0?e-1:t.length-1),!0;case`Enter`:case`Tab`:{let n=t[y.current];return n?(e.preventDefault(),T(n),!0):!1}case`Escape`:return e.preventDefault(),s(!1),!0;case`ArrowLeft`:case`ArrowRight`:case`Home`:case`End`:return s(!1),!1;default:return!1}},[T]),closeMenu:(0,J.useCallback)(()=>s(!1),[])}},Q=r();function Wn({gripRef:e,isGripVisible:t,isGripDragging:n,handleTopEdgeClick:r,handleGripMouseDown:i,handleGripTouchStart:a}){return(0,Q.jsxs)(`div`,{className:`absolute top-0 left-0 w-full h-3 z-20 group`,id:`resize-grip`,onClick:r,children:[(0,Q.jsx)(`div`,{className:`absolute inset-0 z-[1] cursor-ns-resize select-none`,onMouseDown:i,onTouchStart:a,"aria-hidden":!0}),(0,Q.jsx)(`div`,{ref:e,className:P(`pointer-events-none absolute top-0 left-0 w-full h-px bg-white z-[2] transition-opacity duration-200`,t||n?`opacity-100`:`opacity-0 group-hover:opacity-100`)})]})}var Gn=e=>(0,Q.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:[(0,Q.jsx)(`path`,{d:`M15.5 10C16.3284 10 17 9.32843 17 8.5C17 7.67157 16.3284 7 15.5 7C14.6716 7 14 7.67157 14 8.5C14 9.32843 14.6716 10 15.5 10Z`,fill:`currentColor`}),(0,Q.jsx)(`path`,{d:`M3 5C3 3.89543 3.89543 3 5 3H19C20.1046 3 21 3.89543 21 5V19C21 20.1046 20.1046 21 19 21H5C3.89543 21 3 20.1046 3 19V5ZM19 5H5V12.9194L8.37534 10.2191C8.74056 9.92696 9.25951 9.92696 9.62473 10.2191L13.9258 13.66L15.2929 12.2929C15.6835 11.9024 16.3166 11.9024 16.7071 12.2929L19 14.5857V5ZM5 19H19V17.4142L16 14.4142L14.7071 15.7071C14.3468 16.0674 13.7732 16.0992 13.3753 15.7809L9.00004 12.2806L5 15.4807V19Z`,fill:`currentColor`})]}),Kn=e=>(0,Q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:17,height:17,viewBox:`0 0 17 17`,fill:`none`,...e,children:(0,Q.jsx)(`path`,{d:`M14.2541 0.99075C15.0629 0.811957 15.8642 1.32275 16.0432 2.13138C16.222 2.94015 15.7113 3.74145 14.9026 3.92044C10.5163 4.8902 8.31751 8.22203 8.09593 11.8745L10.343 9.62942C10.863 9.10947 11.7057 9.10867 12.2258 9.62845C12.7459 10.1486 12.7459 10.9921 12.2258 11.5122L7.52073 16.2173C7.03316 16.7049 6.26163 16.7357 5.73851 16.3091L5.63694 16.2173L0.93089 11.5122C0.411068 10.9922 0.411047 10.1485 0.93089 9.62845C1.45095 9.10851 2.29457 9.10859 2.81468 9.62845L5.09691 11.9107C5.32362 7.06867 8.20704 2.32786 14.2541 0.99075Z`,fill:`currentColor`})});function qn(){let{t:e}=a(`openhands`);return(0,Q.jsx)(`div`,{className:`drag-over`,children:(0,Q.jsxs)(`div`,{className:`drag-over-content-wrapper`,children:[(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(Gn,{width:36,height:36,className:`rotate-[-27deg] absolute top-[-40px] left-[-10px]`}),(0,Q.jsx)(Kn,{width:16,height:16,className:`absolute top-[-16px] left-[-20px]`})]}),(0,Q.jsx)(`div`,{className:`drag-over-content`,children:(0,Q.jsx)(`p`,{children:e(F.COMMON$DROP_YOUR_FILES_HERE)})})]})})}function Jn({onClick:e}){return(0,Q.jsx)(`button`,{type:`button`,onClick:e,className:P(`z-10 flex w-4 h-4 rounded-full items-center justify-center bg-[var(--oh-surface)] hover:bg-[var(--oh-muted)] cursor-pointer absolute top-1 right-1 opacity-0 group-hover:opacity-100 transition-opacity duration-200`,ie()&&`opacity-100`),children:(0,Q.jsx)(he,{width:10,height:10,color:`#ffffff`})})}function Yn({file:e,onRemove:t,isLoading:n=!1}){let r=oe(e.name);return(0,Q.jsxs)(`div`,{className:`group flex gap-2 rounded-lg bg-[var(--oh-interactive-hover)] max-w-[160px] px-3 py-1 relative`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col justify-center gap-0.25`,children:[(0,Q.jsx)(Jn,{onClick:t}),(0,Q.jsx)(`div`,{className:`flex items-center gap-2 w-full`,children:(0,Q.jsx)(`span`,{className:P(`text-sm font-normal leading-5 flex-1 max-w-[136px] truncate`,n?`max-w-[108px] text-[var(--oh-muted)]`:`text-white`),children:e.name})}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(Zt,{width:12,height:12,color:`var(--oh-muted)`}),(0,Q.jsx)(`span`,{className:`text-[9px] font-normal leading-5 text-[var(--oh-muted)]`,children:r})]})]}),n&&(0,Q.jsx)(`div`,{className:`flex items-center justify-center`,children:(0,Q.jsx)(Te,{className:`animate-spin w-5 h-5`,color:`white`})})]})}function Xn({active:e,onToggle:t}){let{t:n}=a(`openhands`),r=n(F.CHAT_INTERFACE$UPLOAD_IMAGES_AS_FILES),i=n(F.CHAT_INTERFACE$DO_NOT_UPLOAD_AS_FILE),o=e?i:r;return(0,Q.jsx)(`div`,{className:`absolute bottom-2 left-1 z-10 h-4 w-4`,children:(0,Q.jsx)(He,{content:o,placement:`bottom`,offset:10,shouldFlip:!1,tooltipClassName:`bg-white text-black text-xs font-medium leading-5`,children:(0,Q.jsx)(`button`,{type:`button`,"aria-label":o,"aria-pressed":e,onClick:e=>{e.stopPropagation(),t()},className:P(`flex h-4 w-4 items-center justify-center rounded-full bg-[var(--oh-surface)] text-[var(--oh-foreground)] transition-colors cursor-pointer hover:bg-[var(--oh-muted)]`),children:e?(0,Q.jsx)(le,{width:10,height:10,strokeWidth:2.5,"aria-hidden":!0}):(0,Q.jsx)(pe,{width:10,height:10,strokeWidth:2.5,"aria-hidden":!0})})})})}function Zn({image:e,onRemove:t,isLoading:n=!1,showUploadAsFileToggle:r=!1,uploadAsFileActive:i=!1,onToggleUploadAsFile:a}){let[o,s]=J.useState(``);return J.useEffect(()=>{let t=URL.createObjectURL(e);return s(t),()=>{URL.revokeObjectURL(t)}},[e]),(0,Q.jsxs)(`div`,{className:`group relative flex h-[49px] w-[51px] min-h-[49px] min-w-[51px] items-center justify-center rounded-lg bg-[var(--oh-interactive-hover)]`,children:[n?(0,Q.jsx)(Te,{className:`animate-spin w-5 h-5`,color:`white`}):o&&(0,Q.jsx)(`img`,{src:o,alt:e.name,className:`h-full w-full rounded-lg object-cover`}),(0,Q.jsx)(Jn,{onClick:t}),r&&a&&(0,Q.jsx)(Xn,{active:i,onToggle:a})]})}function Qn(){let{images:e,files:t,loadingFiles:n,loadingImages:r,imagesMarkedUploadAsFile:i,removeFile:a,removeImage:o,toggleImageUploadAsFile:s}=V(),c=e=>{a(e)},l=e=>{o(e)};return e.length===0&&t.length===0&&n.length===0&&r.length===0?null:(0,Q.jsx)(`div`,{className:`flex w-full flex-col gap-2 pb-4`,children:(0,Q.jsxs)(`div`,{className:`flex w-full items-center gap-4 overflow-x-auto custom-scrollbar`,children:[t.map((e,t)=>(0,Q.jsx)(Yn,{file:e,onRemove:()=>c(t),isLoading:n.includes(e.name)},`file-${t}-${e.name}`)),n.map((e,t)=>(0,Q.jsx)(Yn,{file:new File([],e),onRemove:()=>{},isLoading:!0},`loading-file-${t}-${e}`)),e.map((e,t)=>(0,Q.jsx)(Zn,{image:e,onRemove:()=>l(t),isLoading:r.includes(e.name),showUploadAsFileToggle:!0,uploadAsFileActive:i.includes(e.name),onToggleUploadAsFile:()=>s(e.name)},`image-${t}-${e.name}`)),r.map((e,t)=>(0,Q.jsx)(Zn,{image:new File([],e),onRemove:()=>{},isLoading:!0,showUploadAsFileToggle:!0,uploadAsFileActive:i.includes(e),onToggleUploadAsFile:()=>s(e)},`loading-image-${t}-${e}`))]})})}function $n({chatInputRef:e,disabled:t=!1,onInput:n,onPaste:r,onKeyDown:i,onFocus:o,onBlur:s}){let{t:c}=a(`openhands`),l=V(e=>e.conversationMode)===`plan`;return J.useEffect(()=>{t||bn(e.current)},[]),(0,Q.jsx)(`div`,{className:`box-border content-stretch flex flex-row items-center justify-start min-h-6 p-0 relative shrink-0 flex-1`,"data-name":`Text & caret`,children:(0,Q.jsx)(`div`,{className:`basis-0 flex flex-col font-normal grow justify-center leading-[0] min-h-px min-w-px overflow-ellipsis overflow-hidden relative shrink-0 text-[var(--oh-text-tertiary)] text-[16px] text-left`,children:(0,Q.jsx)(`div`,{ref:e,className:P(`chat-input bg-transparent text-white text-[16px] font-normal leading-[20px] outline-none resize-none custom-scrollbar min-h-[20px] max-h-[400px] [text-overflow:inherit] [text-wrap-mode:inherit] [white-space-collapse:inherit] block whitespace-pre-wrap`,t&&`cursor-not-allowed opacity-50`),contentEditable:!t,"data-placeholder":c(l?F.COMMON$LET_S_WORK_ON_A_PLAN:F.SUGGESTIONS$WHAT_TO_BUILD),"data-testid":`chat-input`,onInput:n,onPaste:r,onKeyDown:i,onFocus:o,onBlur:s})})})}function er({chatInputRef:e,isNewConversationPending:t=!1,onInput:n,onPaste:r,onKeyDown:i,onFocus:a,onBlur:o}){return(0,Q.jsx)(`div`,{className:`box-border content-stretch flex flex-row items-end justify-between p-0 relative shrink-0 w-full pb-[18px] gap-2`,children:(0,Q.jsx)(`div`,{className:`basis-0 box-border content-stretch flex flex-row gap-4 grow items-end justify-start min-h-px min-w-px p-0 relative shrink-0`,children:(0,Q.jsx)($n,{chatInputRef:e,disabled:t,onInput:n,onPaste:r,onKeyDown:i,onFocus:a,onBlur:o})})})}var tr=e(n(),1),nr=e=>(0,Q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Q.jsx)(`path`,{d:`M9 6C9.55228 6 10 6.44772 10 7V17C10 17.5523 9.55228 18 9 18C8.44772 18 8 17.5523 8 17V7C8 6.44772 8.44772 6 9 6ZM15 6C15.5523 6 16 6.44772 16 7V17C16 17.5523 15.5523 18 15 18C14.4477 18 14 17.5523 14 17V7C14 6.44772 14.4477 6 15 6Z`,fill:`currentColor`})});function rr({handleStop:e}){return(0,Q.jsx)(`button`,{type:`button`,onClick:e,"data-testid":`stop-button`,className:`cursor-pointer`,children:(0,Q.jsx)(nr,{className:`block max-w-none w-4 h-4 text-current`})})}var ir=e=>(0,Q.jsx)(`svg`,{width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,Q.jsx)(`path`,{d:`M15 11H13V7C13 6.73478 12.8946 6.48043 12.7071 6.29289C12.5196 6.10536 12.2652 6 12 6C11.7348 6 11.4804 6.10536 11.2929 6.29289C11.1054 6.48043 11 6.73478 11 7V12C11 12.2652 11.1054 12.5196 11.2929 12.7071C11.4804 12.8946 11.7348 13 12 13H15C15.2652 13 15.5196 12.8946 15.7071 12.7071C15.8946 12.5196 16 12.2652 16 12C16 11.7348 15.8946 11.4804 15.7071 11.2929C15.5196 11.1054 15.2652 11 15 11ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z`,fill:`currentColor`})}),ar=e=>(0,Q.jsx)(`svg`,{width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,Q.jsx)(`path`,{d:`M8 8.37911C8 7.31633 9.15785 6.65415 10.0798 7.18966L16.3139 10.8105C17.2287 11.3419 17.2287 12.6581 16.3139 13.1895L10.0798 16.8103C9.15785 17.3459 8 16.6837 8 15.6209V8.37911Z`,fill:`currentColor`})});function or({onAgentResumed:e,disabled:t=!1}){return(0,Q.jsx)(`button`,{type:`button`,onClick:e,"data-testid":`play-button`,disabled:t,className:P(`cursor-pointer`,t&&`cursor-not-allowed`),children:(0,Q.jsx)(ar,{className:`block max-w-none w-4 h-4 text-current`})})}function sr(){return(0,Q.jsx)(`div`,{"data-testid":`agent-loading-spinner`,children:(0,Q.jsx)(Te,{className:`animate-spin w-4 h-4 text-current`})})}function cr(){let e=Rt();return e?e.connectionState:`CLOSED`}var lr=Xe()((e,t)=>({byTaskId:{},setPendingTaskAttachments:(t,n)=>e(e=>({byTaskId:{...e.byTaskId,[t]:n}})),consumePendingTaskAttachments:n=>{let r=t().byTaskId[n];return r?(e(e=>{let{[n]:t,...r}=e.byTaskId;return{byTaskId:r}}),r):null}}));function ur(e,t){lr.getState().setPendingTaskAttachments(e,t)}function dr(e){return lr.getState().consumePendingTaskAttachments(e)}var fr=e=>new Promise((t,n)=>{let r=new FileReader;r.onloadend=()=>{t(r.result)},r.onerror=n,r.readAsDataURL(e)}),pr=3*1024*1024,mr=3*1024*1024;function hr(e){let t=e.filter(e=>e.size>pr);if(t.length>0){let e=t.map(e=>e.name);return{isValid:!1,errorMessage:`Files exceeding 3MB are not allowed: ${e.join(`, `)}`,oversizedFiles:e}}return{isValid:!0}}function gr(e,t=[]){let n=t.reduce((e,t)=>e+t.size,0)+e.reduce((e,t)=>e+t.size,0);return n>mr?{isValid:!1,errorMessage:`Total file size would be ${(n/(1024*1024)).toFixed(1)}MB, exceeding the 3MB limit. Please select fewer or smaller files.`}:{isValid:!0}}function _r(e,t=[]){let n=hr(e);return n.isValid?gr(e,t):n}async function vr(e){let{conversationId:t,content:n,images:r,files:i,imagesMarkedUploadAsFile:a,t:o}=e,{imagesToEmbed:s,imagesAsFiles:c}=pn(r,a),l=[...i,...c],u=_r([...s,...l]);if(!u.isValid)throw Error(u.errorMessage??`Invalid attachments`);let f=await Promise.all(s.map(e=>fr(e))),p=await mt(t),{skipped_files:m,uploaded_files:h}=l.length>0?await ht(t,l):{skipped_files:[],uploaded_files:[]};m.forEach(e=>d(e.reason));let g=`${o(F.CHAT_INTERFACE$AUGMENTED_PROMPT_FILES_TITLE)}: ${h.join(`
|
|
2
|
-
|
|
3
|
-
`)}`,_=h.length>0?`${n}\n\n${g}`:n,v=new Date().toISOString(),y={role:`user`,content:[{type:`text`,text:_}]};return f.length>0&&y.content.push({type:`image`,image_urls:f}),await H.sendMessage(t,y,p),{text:n,content:_,imageUrls:f,fileUrls:h,timestamp:v}}async function yr(e,t){let n=dr(e);if(n)try{await p(),await vr({conversationId:t,content:n.content,images:n.images,files:n.files,imagesMarkedUploadAsFile:n.imagesMarkedUploadAsFile,t:v.getFixedT(null,f)})}catch(e){throw d(e instanceof Error?e.message:null),e}}var br=new Map,xr=null;function Sr(e,t){br.set(e,t)}function Cr(e){br.delete(e)}function wr(e,t){xr={fromConversationId:e,toConversationId:t}}function Tr(e){if(xr?.toConversationId!==e)return null;let t=xr;return xr=null,t}function Er(e,t){return t===e?!0:br.get(e)===t}var Dr=(e,t)=>{let n=e.request.plugins?.map(tt);if(!n?.length)return;let r=rt(t);nt(t,{...r,selected_repository:r?.selected_repository??e.request.selected_repository??null,selected_branch:r?.selected_branch??e.request.selected_branch??null,git_provider:r?.git_provider??e.request.git_provider??null,plugins:n})},Or=()=>{let{conversationId:e}=K(),t=!!e&&e.startsWith(`task-`),n=t?e.replace(`task-`,``):null,r=c({queryKey:[`start-task`,n],queryFn:async()=>n?H.getStartTask(n):null,enabled:!!n,refetchInterval:e=>{let t=e.state.data;return!t||t.status===`READY`||t.status===`ERROR`?!1:3e3},retry:!1});return{isTask:t,taskId:n,conversationId:t?null:e??null,task:r.data,taskStatus:r.data?.status,taskDetail:r.data?.detail,taskError:r.error,isLoadingTask:r.isLoading,repositoryInfo:{selectedRepository:r.data?.request?.selected_repository,selectedBranch:r.data?.request?.selected_branch,gitProvider:r.data?.request?.git_provider}}},kr=()=>{let e=Or(),{task:t,taskId:n}=e,{conversationId:r}=K(),{navigate:i}=ze(),a=(0,J.useRef)(null);return(0,J.useLayoutEffect)(()=>{if(!r)return;let e=Tr(r);e&&(qt.getState().reassignPendingMessages(e.fromConversationId,e.toConversationId),Cr(e.toConversationId))},[r]),(0,J.useEffect)(()=>{let e=t?.app_conversation_id;!n||t?.status!==`READY`||!e||a.current===n||(a.current=n,we(n,e),Dr(t,e),(async()=>{await yr(n,e);let t=`task-${n}`;Sr(e,t),wr(t,e);let r=$e(n);r&&Qe(e,{draftMessage:r}),i(`/conversations/${e}`,{replace:!0})})())},[t,n,i]),e},Ar=(e,t)=>{let n=c({queryKey:[`sub-conversation-task`,e],queryFn:async()=>e?H.getStartTask(e):null,enabled:!!e&&!!t,refetchInterval:e=>{let t=e.state.data;return!t||t.status===`READY`||t.status===`ERROR`?!1:3e3},retry:!1});return{task:n.data,taskStatus:n.data?.status,taskDetail:n.data?.detail,taskError:n.error,isLoadingTask:n.isLoading,subConversationId:n.data?.app_conversation_id}},jr=`/assets/notification-Cyeyy5ud.mp3`,Mr=[E.AWAITING_USER_INPUT,E.FINISHED,E.AWAITING_USER_CONFIRMATION];function Nr(e){let{data:t}=B(),n=(0,J.useRef)(void 0),r=(0,J.useRef)(void 0);(0,J.useEffect)(()=>{typeof window<`u`&&!n.current&&(n.current=new Audio(jr),n.current.volume=.5)},[]);let i=t?.enable_sound_notifications??!1;(0,J.useEffect)(()=>{r.current!==e&&(r.current=e,Mr.includes(e)&&i&&n.current&&(n.current.currentTime=0,n.current.play().catch(()=>{})))},[e,i])}function Pr({className:e=``,handleStop:t,handleResumeAgent:n,disabled:r=!1,isPausing:i=!1}){let{t:o}=a(`openhands`),{setShouldShownAgentLoading:s}=V(),{curAgentState:c,executionStatus:l}=It();Nr(c);let u=cr(),{data:d}=q(),{taskStatus:f}=Or(),{subConversationTaskId:p}=V(),{taskStatus:m}=Ar(p,d?.id||null),h=se(u,l??null,f,m),g=c===E.INIT||c===E.LOADING||u===`CONNECTING`&&f!==`ERROR`||M(f)||M(m),_=g||i,v=c===E.ERROR||c===E.RATE_LIMITED||u===`CLOSED`||f===`ERROR`,y=!v&&c===E.RUNNING,b=!v&&(c===E.STOPPED||c===E.PAUSED),x=!_&&(y||b),S=h===F.CHAT_INTERFACE$AGENT_FINISHED_MESSAGE,C=h===F.AGENT_STATUS$WAITING_FOR_TASK,w=S||C,[T,D]=(0,J.useState)(!0),[O,k]=(0,J.useState)(!1);return(0,J.useEffect)(()=>{s(!!g)},[g,s]),(0,J.useEffect)(()=>{if(!w){D(!0),k(!1);return}D(!0),k(!1);let e=window.setTimeout(()=>{k(!0)},1e3),t=window.setTimeout(()=>{D(!1)},1500);return()=>{window.clearTimeout(e),window.clearTimeout(t)}},[w]),w&&!T?null:(0,Q.jsxs)(`div`,{className:P(`flex items-center gap-1 min-w-0`,w&&`transition-opacity duration-500`,O&&`opacity-0`,e),children:[(0,Q.jsx)(`span`,{className:`text-[11px] text-[var(--oh-muted)] font-normal leading-5 min-w-0 max-w-full truncate`,title:o(h),children:o(h)}),(0,Q.jsxs)(`div`,{className:P(`box-border content-stretch flex flex-row gap-[3px] items-center justify-center overflow-clip px-0.5 py-1 relative rounded-[100px] shrink-0 size-6 transition-all duration-200 active:scale-95 bg-transparent text-[var(--oh-muted)] hover:bg-white/10 hover:text-white`,x?`cursor-pointer`:`cursor-default`),children:[_&&(0,Q.jsx)(sr,{}),!_&&y&&(0,Q.jsx)(rr,{handleStop:t}),!_&&b&&(0,Q.jsx)(or,{onAgentResumed:n,disabled:r}),!_&&v&&(0,Q.jsx)(xe,{className:`w-4 h-4 text-current`,"data-testid":`circle-error-icon`}),!_&&!y&&!b&&!v&&(w?(0,Q.jsx)(de,{className:`w-4 h-4 text-current`}):(0,Q.jsx)(ir,{className:`w-4 h-4 text-current`}))]})]})}function Fr(e){return(0,Q.jsx)(`svg`,{viewBox:`0 0 257 183`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,...e,children:(0,Q.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M151.663 5.36257C158.763 -1.73743 170.363 -1.83743 177.563 5.36257L250.663 78.4626C257.763 85.5626 257.863 97.1626 250.663 104.363L177.563 177.463C170.363 184.563 158.863 184.563 151.663 177.463C144.563 170.263 144.563 158.763 151.663 151.563L211.863 91.3626L151.663 31.1626C144.563 24.1626 144.563 12.5626 151.663 5.36257ZM104.463 5.36257C97.3626 -1.73743 85.7626 -1.83743 78.5626 5.36257L5.36257 78.4626C-1.73743 85.5626 -1.83743 97.1626 5.36257 104.363L78.4626 177.463C85.6626 184.563 97.1626 184.563 104.363 177.463C111.463 170.263 111.463 158.763 104.363 151.563L44.1626 91.4626L104.363 31.2626C111.563 24.1626 111.563 12.5626 104.463 5.36257Z`,fill:`currentColor`})})}function Ir({icon:e,text:t,className:n,iconClassName:r,isActive:i=!1}){return(0,Q.jsxs)(`div`,{className:P(`flex min-w-0 items-center`,Ue,n),children:[(0,Q.jsx)(e,{className:P(`h-4 w-4`,Ke,r)}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 leading-5`,children:t}),i&&(0,Q.jsx)(Mt,{width:14,height:14,className:`shrink-0`,"aria-hidden":!0})]})}function Lr({icon:e,title:t,description:n,className:r,iconClassName:i,isActive:a=!1}){return(0,Q.jsxs)(`div`,{className:P(`flex min-w-0 w-full flex-col justify-center gap-1`,r),children:[(0,Q.jsx)(Ir,{icon:e,text:t,className:`px-0`,iconClassName:i,isActive:a}),(0,Q.jsx)(G.Text,{className:`text-[var(--oh-muted)] text-[10px] font-normal whitespace-pre-wrap break-words`,children:n})]})}function Rr({activeMode:e,onClose:t,onCodeClick:n,onPlanClick:r}){let{t:i}=a(`openhands`),o=gt(t);return(0,Q.jsxs)(U,{ref:o,testId:`change-agent-context-menu`,position:`top`,alignment:`left`,className:`min-h-fit mb-2 min-w-[195px] max-w-[195px]`,children:[(0,Q.jsx)(W,{testId:`code-option`,onClick:e=>{e.preventDefault(),e.stopPropagation(),n?.(e),t()},className:P(e===`code`&&`bg-[var(--oh-interactive-hover)]`),children:(0,Q.jsx)(Lr,{icon:Qt,title:i(F.COMMON$CODE),description:i(F.COMMON$CODE_AGENT_DESCRIPTION),isActive:e===`code`})}),(0,Q.jsx)(W,{testId:`plan-option`,onClick:e=>{e.preventDefault(),e.stopPropagation(),r?.(e),t()},className:P(e===`plan`&&`bg-[var(--oh-interactive-hover)]`),children:(0,Q.jsx)(Lr,{icon:Wt,title:i(F.COMMON$PLAN),description:i(F.COMMON$PLAN_AGENT_DESCRIPTION),isActive:e===`plan`})})]})}var zr=()=>{let{t:e}=a(`openhands`),{setConversationMode:t,setSubConversationTaskId:n,subConversationTaskId:r}=V(),{data:i}=q(),{mutate:o,isPending:s}=St();return(0,J.useEffect)(()=>{if(!i?.id)return;let e=Ze(i.id);e.subConversationTaskId&&!r&&n(e.subConversationTaskId)},[i?.id,r,n]),{handlePlanClick:(0,J.useCallback)(a=>{a?.preventDefault(),a?.stopPropagation(),t(`plan`),!(i?.sub_conversation_ids&&i.sub_conversation_ids.length>0||!i?.id||r)&&o({parentConversationId:i.id,agentType:`plan`,entryPoint:`plan_sub_conversation`},{onSuccess:t=>{y(e(F.PLANNING_AGENTT$PLANNING_AGENT_INITIALIZED)),t.task_id&&(n(t.task_id),Qe(i.id,{subConversationTaskId:t.task_id}))}})},[i,o,t,n,r,e]),isCreatingConversation:s}};function Br(){let[e,t]=(0,J.useState)(!1),{conversationMode:n,setConversationMode:r,subConversationTaskId:o}=V(),{conversationId:s}=K(),c=!s,l=cr()===`OPEN`,{curAgentState:u}=It(),{t:d}=a(`openhands`),f=u===E.RUNNING,{data:p}=q(),m=i(),h=(0,J.useRef)(null),{taskStatus:g,subConversationId:_}=Ar(o,p?.id||null);(0,J.useEffect)(()=>{g===`READY`&&_&&p?.id&&o&&h.current!==o&&(h.current=o,m.invalidateQueries({queryKey:[`user`,`conversation`,p.id]}))},[g,_,p?.id,o,m]);let{handlePlanClick:v,isCreatingConversation:y}=zr();(0,J.useEffect)(()=>{(f||!l)&&e&&t(!1)},[f,e,l]);let b=c||f||y||!l;(0,J.useEffect)(()=>{if(b)return;let e=e=>{if(e.shiftKey&&e.key===`Tab`){e.preventDefault(),e.stopPropagation();let t=n===`code`?`plan`:`code`;t===`plan`?v(e):r(t)}};return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e)}},[b,n,r,v]);let x=n=>{n.preventDefault(),n.stopPropagation(),t(!e)},S=e=>{e.preventDefault(),e.stopPropagation(),r(`code`)},C=n===`code`,w=(0,J.useMemo)(()=>d(C?F.COMMON$CODE:F.COMMON$PLAN),[C,d]),T=(0,J.useMemo)(()=>C?(0,Q.jsx)(Fr,{className:`h-[11px] w-[11px] shrink-0`}):(0,Q.jsx)(Wt,{width:18,height:18,color:`currentColor`}),[C]),D=(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:x,disabled:b,className:P(`flex items-center rounded-[100px]`,Pe,C?`border border-transparent text-[var(--oh-muted)]`:`border border-[#597FF4] bg-[#4A67BD]`,!b&&C&&P(`cursor-pointer`,`hover:text-white hover:bg-white/10`),!b&&!C&&`cursor-pointer text-white hover:bg-[#597FF4]`,b&&P(`opacity-50 cursor-not-allowed`,C&&`border-transparent`)),children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1 pl-1.5`,children:[T,(0,Q.jsx)(G.Text,{className:`text-2.75 not-italic font-normal leading-5`,children:w})]}),(0,Q.jsx)(qe,{isOpen:e})]}),e&&(0,Q.jsx)(Rr,{activeMode:n,onClose:()=>t(!1),onCodeClick:S,onPlanClick:v})]});return c?(0,Q.jsx)(He,{content:d(F.CHANGE_AGENT$SWITCH_AFTER_CONVERSATION),placement:`top`,children:D}):D}function Vr(){let{data:e,isLoading:t}=yt(),n=e?.active_agent_profile_id??null;return{activeProfile:e?.profiles?.find(e=>e.id!=null&&e.id===n)??null,isLoading:t}}function Hr(){let{activeProfile:e}=Vr();return e?.agent_kind}var Ur=`/settings/agents`,Wr=`/settings/llm`;function Gr(){let{t:e}=a(`openhands`),{backend:t}=x(),{data:n}=q(),{data:r}=B(),i=Hr(),o=n?.agent_kind===`acp`,s=!n&&(i??r?.agent_settings?.agent_kind)===`acp`,c=o||s;return{isActiveAcpConversation:o,isHomeAcp:s,isAcpContext:c,destinationPath:c?Ur:Wr,destinationLabel:e(c?F.SETTINGS$NAV_AGENT:t.kind===`cloud`?F.SETTINGS$LLM_SETTINGS:F.SETTINGS$LLM_PROFILES)}}function Kr(e,t,n){return[...b.all,e,t,`detail`,n]}function qr(){let{backend:e,orgId:t}=x(),{conversationId:n}=K(),{activeProfile:r}=Vr(),i=r?.agent_kind===`acp`?r.name:null,{data:a}=c({queryKey:Kr(e.id,t,i??``),queryFn:()=>vt.getProfile(i),enabled:!n&&i!=null,...m,...u,meta:{disableToast:!0}}),o=a?.profile;return o?.agent_kind===`acp`?o:null}function Jr(){let{data:e}=q(),{data:t}=B(),{conversationId:n}=K(),{backend:r}=x(),i=Dt(),a=qr(),{isActiveAcpConversation:o,isHomeAcp:s,isAcpContext:c,destinationPath:l,destinationLabel:u}=Gr(),d=typeof t?.agent_settings?.acp_server==`string`?t.agent_settings.acp_server:null,f=o?e?.acp_server:s?a?.acp_server??d:null,p=c?st(f):void 0,m=typeof t?.agent_settings?.acp_model==`string`?t.agent_settings.acp_model:null,h=s&&a?a.acp_model:m,g=null;g=o?e?.llm_model??at({configured:h,providerDefault:ot(f)}):s?at({configured:h,providerDefault:ot(f)}):e?.llm_model??t?.llm_model??null;let _=g&&c?ct(f,g)??g:g,v=p?.available_models??[],y=!s||r.kind!==`cloud`||i,b=c&&v.length>0&&y;return{isAcpContext:c,displayModel:_,currentModelId:g,availableAcpModels:v,showAcpPicker:b,switchConversationId:o?n??null:null,destinationPath:l,destinationLabel:u}}var Yr=()=>{let e=i(),{backend:t,orgId:n}=x();return s({mutationFn:async({conversationId:r,model:i})=>{if(r){await H.switchAcpModel(r,i);return}let a;try{a=await e.ensureQueryData({queryKey:[...b.all,t.id,n],queryFn:vt.listProfiles,...u})}catch{}let o=a?.profiles?.find(e=>e.id!=null&&e.id===a?.active_agent_profile_id);if(o?.agent_kind===`acp`){let r=await e.ensureQueryData({queryKey:Kr(t.id,n,o.name),queryFn:()=>vt.getProfile(o.name),...u});await vt.saveProfile(o.name,en(r.profile,{agent_kind:`acp`,acp_model:i}));return}await Ae.saveSettings({agent_settings_diff:{acp_model:i}})},onSuccess:(t,{conversationId:n})=>{n?pt(e,n):(Ae.invalidateCache(),e.invalidateQueries({queryKey:_.personal()}),e.invalidateQueries({queryKey:b.all}))}})},Xr=10,Zr=22;function Qr(e,t=Xr){return e.length<=t?e:`${e.slice(0,t)}…`}function $r({model:e,onClose:t,dividerInset:n,settingsLinkClassName:r,settingsIconClassName:i}){let{t:o}=a(`openhands`),s=Yr(),c=e.showAcpPicker||!!e.displayModel,l=n=>{n!==e.currentModelId&&s.mutate({conversationId:e.switchConversationId,model:n}),t()};return(0,Q.jsxs)(Q.Fragment,{children:[e.showAcpPicker?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`li`,{role:`presentation`,className:`px-2 pt-1 pb-0.5`,children:(0,Q.jsx)(G.Text,{className:`text-[11px] font-medium text-[var(--oh-text-dim)] uppercase tracking-wide leading-4`,children:o(F.MODEL$AVAILABLE_MODELS)})}),e.availableAcpModels.map(t=>{let n=t.id===e.currentModelId;return(0,Q.jsxs)(W,{testId:`chat-input-acp-model-option-${t.id}`,onClick:e=>{e.preventDefault(),e.stopPropagation(),l(t.id)},className:P(`flex items-center gap-2`,n&&`bg-[var(--oh-interactive-hover)]`),children:[(0,Q.jsx)(`span`,{className:`flex-1 truncate text-sm leading-5`,title:t.label,children:t.label}),n&&(0,Q.jsx)(Mt,{width:14,height:14,className:`shrink-0`,"aria-hidden":!0})]},t.id)})]}):e.displayModel?(0,Q.jsx)(`li`,{className:`text-sm`,children:(0,Q.jsx)(`div`,{className:`p-2 leading-5 text-[var(--oh-foreground)] break-all`,children:e.displayModel})}):null,c&&(0,Q.jsx)(z,{inset:n}),(0,Q.jsx)(`li`,{className:`text-sm`,children:(0,Q.jsxs)(Be,{to:e.destinationPath,onClick:t,className:P(`flex h-[30px] items-center gap-2 rounded p-2 leading-5 text-[var(--oh-foreground)] hover:bg-[var(--oh-interactive-hover)] transition-colors`,r),children:[(0,Q.jsx)(tn,{width:16,height:16,className:P(`shrink-0`,i),"aria-hidden":!0}),(0,Q.jsx)(`span`,{children:e.destinationLabel})]})})]})}function ei(){let e=Jr(),[t,n]=J.useState(!1),r=J.useRef(null),i=gt(()=>n(!1),r);if(!e.displayModel)return null;let a=Qr(e.displayModel,e.isAcpContext?Zr:Xr);return(0,Q.jsxs)(`div`,{className:`relative min-w-0`,children:[(0,Q.jsxs)(`button`,{ref:r,type:`button`,className:Fe,title:e.displayModel,"data-testid":`chat-input-llm-model`,"aria-expanded":t,"aria-haspopup":`dialog`,onClick:e=>{e.preventDefault(),e.stopPropagation(),n(e=>!e)},children:[(0,Q.jsx)(`span`,{children:a}),(0,Q.jsx)(qe,{isOpen:t})]}),t&&(0,Q.jsx)(U,{ref:i,testId:`chat-input-llm-model-popover`,position:`top`,alignment:`left`,spacing:`none`,className:`z-[60] mb-2 min-w-[200px] max-w-[320px] max-h-[60vh] overflow-y-auto`,children:(0,Q.jsx)($r,{model:e,onClose:()=>n(!1)})})]})}var ti=[`switch-llm-profile`],ni=()=>{let e=i(),{t}=a();return s({mutationKey:ti,mutationFn:({conversationId:e,profileName:t})=>H.switchProfile(e,t),meta:{disableToast:!0},onMutate:({conversationId:e})=>({anchorEventId:e?zt():null}),onError:(e,{profileName:n})=>{let r=t(F.MODEL$SWITCH_FAILED,{name:n});d(g(e)||r)},onSuccess:(t,{conversationId:n,profileName:r},i)=>{if(e.invalidateQueries({queryKey:h.all}),n){pt(e,n),Ht(n,r,i?.anchorEventId??null);let t=rt(n);nt(n,{selected_repository:t?.selected_repository??null,selected_branch:t?.selected_branch??null,git_provider:t?.git_provider??null,selected_workspace:t?.selected_workspace??null,active_profile:r,plugins:t?.plugins??null})}else Ae.invalidateCache(),e.invalidateQueries({queryKey:_.personal()})}})};function ri(){let{mutate:e,isPending:t}=ni();return{switchAndLog:(0,J.useCallback)((t,n)=>{e({conversationId:t,profileName:n})},[e]),isPending:t}}function ii(){let{conversationId:e}=K(),{data:t}=q(),{data:n,isLoading:r}=_t(),i=Dt(),{switchAndLog:a}=ri(),o=l({mutationKey:ti})>0,s=Vt(t=>e?t.activeProfileByConversation[e]:void 0),c=n?.profiles??[],u=t?.llm_model??null,d=t?.active_profile??null,f=d&&c.some(e=>e.name===d)?d:null,p=s??f??(u?c.find(e=>e.model===u)?.name??null:n?.active_profile??null),m=c.find(e=>e.name===p)?.model??u??null,h=!(e?.startsWith(`task-`)??!1)&&(!!e||i);return{profiles:c,currentProfileName:p,currentProfileModel:m,isLoading:r,isSwitching:o,canSwitchProfile:h,selectProfile:(0,J.useCallback)(t=>{!h||t===p||a(e,t)},[h,e,p,a])}}var ai=18;function oi(e){return e.length<=ai?e:`${e.slice(0,ai)}…`}function si({onClose:e,dividerInset:t,settingsLinkClassName:n,settingsIconClassName:r}){let{t:i}=a(`openhands`),{profiles:o,currentProfileName:s,currentProfileModel:c,canSwitchProfile:l,selectProfile:u}=ii(),d=l&&o.length>0,f=l?null:s,p=t=>{u(t),e()};return(0,Q.jsxs)(Q.Fragment,{children:[d&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`li`,{role:`presentation`,className:`px-2 pt-1 pb-0.5`,children:(0,Q.jsx)(G.Text,{className:`text-[11px] font-medium text-[var(--oh-text-dim)] uppercase tracking-wide leading-4`,children:i(F.SETTINGS$AVAILABLE_PROFILES)})}),o.map(t=>{let n=t.name===s;return(0,Q.jsxs)(W,{testId:`chat-input-llm-profile-option-${t.name}`,onClick:r=>{if(r.preventDefault(),r.stopPropagation(),n){e();return}p(t.name)},className:P(`flex flex-col items-stretch gap-0.5`,n&&`bg-[var(--oh-interactive-hover)]`),children:[(0,Q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`flex-1 truncate text-sm leading-5`,title:t.model??t.name,children:t.name}),n&&(0,Q.jsx)(Mt,{width:14,height:14,className:`shrink-0`,"aria-hidden":!0})]}),t.model&&(0,Q.jsx)(`span`,{className:`block truncate text-xs leading-4 text-[var(--oh-muted)]`,children:t.model})]},t.name)})]}),f&&(0,Q.jsx)(`li`,{className:`text-sm`,"data-testid":`chat-input-llm-profile-current`,children:(0,Q.jsxs)(`div`,{className:`flex flex-col gap-0.5 p-2 leading-5 text-[var(--oh-foreground)]`,children:[(0,Q.jsx)(`span`,{className:`truncate`,title:f,children:f}),c&&(0,Q.jsx)(`span`,{className:`truncate text-xs leading-4 text-[var(--oh-muted)]`,children:c})]})}),(d||f)&&(0,Q.jsx)(z,{inset:t}),(0,Q.jsx)(`li`,{className:`text-sm`,children:(0,Q.jsxs)(Be,{to:`/settings/llm`,onClick:e,className:P(`flex h-[30px] items-center gap-2 rounded p-2 leading-5 text-[var(--oh-foreground)] hover:bg-[var(--oh-interactive-hover)] transition-colors`,n),children:[(0,Q.jsx)(tn,{width:16,height:16,className:P(`shrink-0`,r),"aria-hidden":!0}),(0,Q.jsx)(`span`,{children:i(F.SETTINGS$LLM_PROFILES)})]})})]})}function ci(){let{t:e}=a(`openhands`),{profiles:t,currentProfileName:n,isLoading:r,isSwitching:i}=ii(),[o,s]=J.useState(!1),c=J.useRef(null),l=gt(()=>s(!1),c);if(r||t.length===0)return null;let u=n??e(F.LLM$SELECT_MODEL_PLACEHOLDER);return(0,Q.jsxs)(`div`,{className:`relative min-w-0`,children:[(0,Q.jsxs)(`button`,{ref:c,type:`button`,className:P(Fe,`max-w-[200px]`),title:n??void 0,"data-testid":`chat-input-llm-profile`,"aria-expanded":o,"aria-haspopup":`dialog`,disabled:i,"aria-busy":i,onClick:e=>{e.preventDefault(),e.stopPropagation(),s(e=>!e)},children:[(0,Q.jsx)(`span`,{className:`truncate`,children:oi(u)}),(0,Q.jsx)(qe,{isOpen:o})]}),o&&(0,Q.jsx)(U,{ref:l,testId:`chat-input-llm-profile-popover`,position:`top`,alignment:`left`,spacing:`none`,className:`z-[60] mb-2 min-w-[200px] max-w-[320px] max-h-[60vh] overflow-y-auto`,children:(0,Q.jsx)(si,{onClose:()=>s(!1)})})]})}function li({isLoadingHistory:e,hasUserEvents:t,hasPendingUserMessages:n,hasSubstantiveAgentActions:r,hasModelEntries:i}){return e||t||n||r||i}function ui({isAcp:e}){return e?`model`:`llm-profile`}var di=()=>{let e=i(),{t}=a();return s({mutationFn:e=>H.updateConversationPublicFlag(e.conversationId,e.isPublic),onMutate:async t=>{let n=[`user`,`conversation`,t.conversationId];await e.cancelQueries({queryKey:n});let r=e.getQueriesData({queryKey:n});return e.setQueriesData({queryKey:n},e=>e&&typeof e==`object`?{...e,public:t.isPublic}:e),{previousEntries:r}},onError:(n,r,i)=>{i?.previousEntries?.forEach(([t,n])=>{e.setQueryData(t,n)}),d(t(F.CONVERSATION$FAILED_TO_UPDATE_PUBLIC_SHARING))},onSettled:(t,n,r)=>{e.invalidateQueries({queryKey:[`user`,`conversation`,r.conversationId]}),e.invalidateQueries({queryKey:[`user`,`conversations`]})}})},fi=`<secret-hidden>`;function pi(e){let t=/(<CUSTOM_SECRETS>)([\s\S]*?)(<\/CUSTOM_SECRETS>|$)/gi,n=/^(\s*[^=:\n]+?\s*[:=]\s*)(.+?)\s*$/gm;return e.replace(t,(e,t,r,i)=>`${t}${r.replace(n,(e,t,n)=>n===fi?e:`${t}${fi}`)}${i}`)}function mi(e){let t=e.find(Lt);if(!t)return null;let n=t.dynamic_context?.text;return{content:n?`${t.system_prompt.text.trimEnd()}\n\n${pi(n)}`:t.system_prompt.text,tools:t.tools??null,openhands_version:null,agent_class:null}}function hi({conversationId:e,executionStatus:t,showOptions:n=!1,onContextMenuToggle:r}){let{t:i}=a(),{conversationId:o,navigate:s}=ze(),{backend:c}=x(),l=Kt(e=>e.events),{mutate:u}=ve(),{mutate:d}=ge(),{mutate:f}=di(),{data:p}=q(),m=Bt(),[h,g]=J.useState(!1),[_,v]=J.useState(!1),[b,S]=J.useState(!1),[C,w]=J.useState(!1),[T,E]=J.useState(!1),[D,k]=J.useState(!1),[A,j]=J.useState(!1),{mutateAsync:M}=ye(),N=mi(l),ee=e=>{e.preventDefault(),e.stopPropagation(),k(!0),r?.(!1)},te=e=>{e.preventDefault(),e.stopPropagation(),j(!0),r?.(!1)},ne=()=>{e&&u({conversationId:e},{onSuccess:()=>{e===o&&s(`/conversations`)}}),k(!1)},re=()=>{e&&d({conversationId:e}),j(!1)},ie=e=>{e.preventDefault(),e.stopPropagation(),r?.(!1)},ae=async t=>{t.preventDefault(),t.stopPropagation(),e&&await M(e),r?.(!1)},oe=e=>{e.stopPropagation(),g(!0),r?.(!1)},P=e=>{e.stopPropagation(),v(!0),r?.(!1)},se=e=>{e.stopPropagation(),S(!0),r?.(!1)},ce=e=>{e.stopPropagation(),w(!0),r?.(!1)},le=e=>{e.stopPropagation(),E(!0),r?.(!1)},ue=t=>{e&&p&&f({conversationId:e,isPublic:t??!p.public})},I=J.useMemo(()=>e?`${c.kind===`cloud`?c.host.replace(/\/+$/,``):window.location.origin}/shared/conversations/${e}`:``,[e,c.kind,c.host]);return{handleDelete:ee,handleStop:te,handleEdit:ie,handleDownloadConversation:ae,handleDisplayCost:oe,handleShowAgentTools:P,handleShowSkills:se,handleShowPlugins:ce,handleShowHooks:le,handleTogglePublic:ue,handleCopyShareLink:e=>{if(e.preventDefault(),e.stopPropagation(),!I){r?.(!1);return}navigator.clipboard.writeText(I),y(i(F.CONVERSATION$LINK_COPIED))},shareUrl:I,handleConfirmDelete:ne,handleConfirmStop:re,metricsModalVisible:h,setMetricsModalVisible:g,systemModalVisible:_,setSystemModalVisible:v,skillsModalVisible:b,setSkillsModalVisible:S,pluginsModalVisible:C,setPluginsModalVisible:w,hooksModalVisible:T,setHooksModalVisible:E,confirmDeleteModalVisible:D,setConfirmDeleteModalVisible:k,confirmStopModalVisible:A,setConfirmStopModalVisible:j,metrics:m,systemMessage:N,shouldShowStop:O(t),shouldShowDownloadConversation:!!(e&&n),shouldShowDisplayCost:n,shouldShowAgentTools:!!(n&&N),shouldShowSkills:!!(n&&e),shouldShowPlugins:!!(n&&e&&(rt(e)?.plugins?.length??0)>0),shouldShowHooks:!!(n&&e&&O(t))}}var gi=e=>(0,Q.jsx)(`svg`,{width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,Q.jsx)(`path`,{d:`M17 6.05994C16.3065 6.0604 15.6345 6.30114 15.0985 6.74118C14.5625 7.18123 14.1954 7.7934 14.0599 8.47355C13.9243 9.1537 14.0286 9.85981 14.355 10.4717C14.6813 11.0837 15.2097 11.5636 15.85 11.8299C15.6978 12.1949 15.4408 12.5065 15.1115 12.7254C14.7822 12.9444 14.3954 13.0608 14 13.0599H10C9.29505 13.0629 8.604 13.2564 8.00001 13.6199V7.87994C8.66722 7.64405 9.22956 7.17987 9.58764 6.56946C9.94571 5.95905 10.0765 5.2417 9.9568 4.54421C9.83713 3.84671 9.47473 3.21398 8.93367 2.75784C8.3926 2.30169 7.70769 2.05151 7.00001 2.05151C6.29232 2.05151 5.60741 2.30169 5.06635 2.75784C4.52528 3.21398 4.16288 3.84671 4.04321 4.54421C3.92354 5.2417 4.0543 5.95905 4.41237 6.56946C4.77045 7.17987 5.33279 7.64405 6.00001 7.87994V16.2399C5.34099 16.4769 4.78566 16.937 4.43026 17.5405C4.07485 18.1439 3.94176 18.8527 4.05406 19.544C4.16635 20.2352 4.51695 20.8654 5.0451 21.3254C5.57325 21.7853 6.24567 22.0459 6.94581 22.0621C7.64596 22.0783 8.32971 21.8491 8.87857 21.4141C9.42744 20.9791 9.80683 20.3658 9.95099 19.6805C10.0952 18.9951 9.995 18.281 9.6679 17.6617C9.34079 17.0425 8.80735 16.5572 8.16001 16.2899C8.31158 15.9266 8.56704 15.616 8.89436 15.3972C9.22168 15.1784 9.60629 15.0611 10 15.0599H14C14.9148 15.0598 15.802 14.746 16.5135 14.171C17.225 13.5959 17.7179 12.7944 17.91 11.8999C18.5786 11.6728 19.1456 11.217 19.5113 10.613C19.8769 10.0089 20.0178 9.29524 19.9091 8.59754C19.8004 7.89984 19.449 7.26285 18.9169 6.79869C18.3848 6.33452 17.706 6.07292 17 6.05994ZM7.00001 4.05994C7.19779 4.05994 7.39113 4.11859 7.55558 4.22847C7.72003 4.33835 7.8482 4.49453 7.92389 4.67726C7.99957 4.85998 8.01938 5.06105 7.98079 5.25503C7.94221 5.44901 7.84697 5.6272 7.70711 5.76705C7.56726 5.9069 7.38908 6.00214 7.1951 6.04073C7.00112 6.07931 6.80005 6.05951 6.61732 5.98382C6.4346 5.90813 6.27842 5.77996 6.16854 5.61551C6.05866 5.45106 6.00001 5.25772 6.00001 5.05994C6.00001 4.79472 6.10536 4.54037 6.2929 4.35283C6.48044 4.1653 6.73479 4.05994 7.00001 4.05994ZM7.00001 20.0599C6.80222 20.0599 6.60889 20.0013 6.44444 19.8914C6.27999 19.7815 6.15181 19.6254 6.07613 19.4426C6.00044 19.2599 5.98064 19.0588 6.01922 18.8649C6.05781 18.6709 6.15305 18.4927 6.2929 18.3528C6.43275 18.213 6.61093 18.1177 6.80492 18.0792C6.9989 18.0406 7.19996 18.0604 7.38269 18.1361C7.56542 18.2117 7.72159 18.3399 7.83148 18.5044C7.94136 18.6688 8.00001 18.8622 8.00001 19.0599C8.00001 19.3252 7.89465 19.5795 7.70711 19.767C7.51958 19.9546 7.26522 20.0599 7.00001 20.0599ZM17 10.0599C16.8022 10.0599 16.6089 10.0013 16.4444 9.89141C16.28 9.78153 16.1518 9.62535 16.0761 9.44262C16.0004 9.2599 15.9806 9.05883 16.0192 8.86485C16.0578 8.67087 16.153 8.49269 16.2929 8.35283C16.4328 8.21298 16.6109 8.11774 16.8049 8.07916C16.9989 8.04057 17.2 8.06037 17.3827 8.13606C17.5654 8.21175 17.7216 8.33992 17.8315 8.50437C17.9414 8.66882 18 8.86216 18 9.05994C18 9.32516 17.8947 9.57951 17.7071 9.76705C17.5196 9.95458 17.2652 10.0599 17 10.0599Z`,fill:`currentColor`})}),_i=e=>(0,Q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Q.jsx)(`path`,{d:`M17 22H5C4.20435 22 3.44129 21.6839 2.87868 21.1213C2.31607 20.5587 2 19.7956 2 19V8.99997C2 8.20432 2.31607 7.44125 2.87868 6.87864C3.44129 6.31604 4.20435 5.99997 5 5.99997H6C6.01682 5.1526 6.30235 4.33248 6.81541 3.65789C7.32848 2.98331 8.04255 2.48911 8.85464 2.2466C9.66673 2.00408 10.5349 2.02578 11.3338 2.30856C12.1328 2.59134 12.8213 3.12059 13.3 3.81997C13.7484 4.45911 13.9925 5.21923 14 5.99997H17C17.2652 5.99997 17.5196 6.10532 17.7071 6.29286C17.8946 6.48039 18 6.73475 18 6.99997V9.99997C18.8474 10.0168 19.6675 10.3023 20.3421 10.8154C21.0167 11.3284 21.5109 12.0425 21.7534 12.8546C21.9959 13.6667 21.9742 14.5348 21.6914 15.3338C21.4086 16.1328 20.8794 16.8212 20.18 17.3C19.5409 17.7484 18.7807 17.9925 18 18V21C18 21.2652 17.8946 21.5195 17.7071 21.7071C17.5196 21.8946 17.2652 22 17 22ZM5 7.99997C4.73478 7.99997 4.48043 8.10532 4.29289 8.29286C4.10536 8.48039 4 8.73475 4 8.99997V19C4 19.2652 4.10536 19.5195 4.29289 19.7071C4.48043 19.8946 4.73478 20 5 20H16V16.82C15.9991 16.6596 16.0368 16.5014 16.1099 16.3587C16.183 16.216 16.2894 16.093 16.42 16C16.5502 15.9071 16.7008 15.8468 16.8592 15.8242C17.0175 15.8016 17.179 15.8173 17.33 15.87C17.615 15.9862 17.9254 16.0262 18.2305 15.9858C18.5357 15.9455 18.825 15.8263 19.07 15.64C19.3139 15.4913 19.523 15.292 19.6834 15.0557C19.8439 14.8194 19.9518 14.5515 20 14.27C20.0386 13.986 20.0157 13.6971 19.9329 13.4228C19.85 13.1485 19.7092 12.8951 19.52 12.68C19.2641 12.3691 18.9155 12.1481 18.5252 12.0491C18.1349 11.9502 17.7231 11.9785 17.35 12.13C17.199 12.1827 17.0375 12.1983 16.8792 12.1757C16.7208 12.1531 16.5702 12.0928 16.44 12C16.3094 11.907 16.203 11.7839 16.1299 11.6412C16.0568 11.4985 16.0191 11.3403 16.02 11.18V7.99997H12.82C12.6557 8.00928 12.4915 7.97788 12.3422 7.90855C12.1929 7.83922 12.0631 7.7341 11.9641 7.60253C11.8652 7.47096 11.8003 7.317 11.7752 7.15432C11.75 6.99164 11.7654 6.82526 11.82 6.66997C11.9363 6.38497 11.9762 6.07459 11.9359 5.76945C11.8955 5.46431 11.7763 5.17496 11.59 4.92997C11.4424 4.67913 11.2402 4.46473 10.9984 4.30266C10.7566 4.14058 10.4815 4.03499 10.1934 3.99369C9.90527 3.95239 9.61155 3.97645 9.33399 4.06409C9.05644 4.15173 8.80216 4.3007 8.59 4.49997C8.39298 4.69538 8.23877 4.92966 8.1372 5.1879C8.03562 5.44614 7.9889 5.72269 8 5.99997C8.00232 6.22934 8.04637 6.45637 8.13 6.66997C8.18287 6.82118 8.19863 6.98289 8.17597 7.14147C8.1533 7.30005 8.09287 7.45087 7.99976 7.58122C7.90665 7.71158 7.78358 7.81765 7.64093 7.89053C7.49827 7.9634 7.34019 8.00093 7.18 7.99997H5Z`,fill:`currentColor`})}),vi=e=>(0,Q.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,...e,children:[(0,Q.jsx)(`path`,{d:`m17.586 11.414-5.93 5.93a1 1 0 0 1-8-8l3.137-3.137a.707.707 0 0 1 1.207.5V10`}),(0,Q.jsx)(`path`,{d:`M20.414 8.586 22 7`}),(0,Q.jsx)(`circle`,{cx:19,cy:10,r:2})]}),yi=e=>(0,Q.jsxs)(`svg`,{width:29,height:28,viewBox:`0 0 29 28`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,Q.jsx)(`path`,{d:`M14.5 18.375C12.085 18.375 10.125 16.415 10.125 14C10.125 11.585 12.085 9.625 14.5 9.625C16.915 9.625 18.875 11.585 18.875 14C18.875 16.415 16.915 18.375 14.5 18.375ZM14.5 11.375C13.0533 11.375 11.875 12.5533 11.875 14C11.875 15.4467 13.0533 16.625 14.5 16.625C15.9467 16.625 17.125 15.4467 17.125 14C17.125 12.5533 15.9467 11.375 14.5 11.375Z`,fill:`currentColor`}),(0,Q.jsx)(`path`,{d:`M18.245 25.8883C18 25.8883 17.755 25.8533 17.51 25.795C16.7867 25.5967 16.18 25.1417 15.795 24.5L15.655 24.2667C14.9667 23.0767 14.0217 23.0767 13.3333 24.2667L13.205 24.4883C12.82 25.1417 12.2133 25.6083 11.49 25.795C10.755 25.9933 9.99668 25.8883 9.35501 25.5033L7.34834 24.3483C6.63668 23.94 6.12334 23.275 5.90168 22.47C5.69168 21.665 5.79668 20.8367 6.20501 20.125C6.54334 19.53 6.63668 18.9933 6.43834 18.655C6.24001 18.3167 5.73834 18.1183 5.05001 18.1183C3.34668 18.1183 1.95834 16.73 1.95834 15.0267V12.9733C1.95834 11.27 3.34668 9.88168 5.05001 9.88168C5.73834 9.88168 6.24001 9.68334 6.43834 9.34501C6.63668 9.00668 6.55501 8.47001 6.20501 7.87501C5.79668 7.16334 5.69168 6.32334 5.90168 5.53001C6.11168 4.72501 6.62501 4.06001 7.34834 3.65168L9.36668 2.49668C10.685 1.71501 12.4233 2.17001 13.2167 3.51168L13.3567 3.74501C14.045 4.93501 14.99 4.93501 15.6783 3.74501L15.8067 3.52334C16.6 2.17001 18.3383 1.71501 19.6683 2.50834L21.675 3.66334C22.3867 4.07168 22.9 4.73668 23.1217 5.54168C23.3317 6.34668 23.2267 7.17501 22.8183 7.88668C22.48 8.48168 22.3867 9.01834 22.585 9.35668C22.7833 9.69501 23.285 9.89334 23.9733 9.89334C25.6767 9.89334 27.065 11.2817 27.065 12.985V15.0383C27.065 16.7417 25.6767 18.13 23.9733 18.13C23.285 18.13 22.7833 18.3283 22.585 18.6667C22.3867 19.005 22.4683 19.5417 22.8183 20.1367C23.2267 20.8483 23.3433 21.6883 23.1217 22.4817C22.9117 23.2867 22.3983 23.9517 21.675 24.36L19.6567 25.515C19.2133 25.76 18.735 25.8883 18.245 25.8883ZM14.5 21.5717C15.5383 21.5717 16.5067 22.225 17.1717 23.38L17.3 23.6017C17.44 23.8467 17.6733 24.0217 17.9533 24.0917C18.2333 24.1617 18.5133 24.1267 18.7467 23.9867L20.765 22.82C21.0683 22.645 21.3017 22.3533 21.395 22.0033C21.4883 21.6533 21.4417 21.2917 21.2667 20.9883C20.6017 19.845 20.52 18.6667 21.0333 17.7683C21.5467 16.87 22.6083 16.3567 23.9383 16.3567C24.685 16.3567 25.28 15.7617 25.28 15.015V12.9617C25.28 12.2267 24.685 11.62 23.9383 11.62C22.6083 11.62 21.5467 11.1067 21.0333 10.2083C20.52 9.31001 20.6017 8.13168 21.2667 6.98834C21.4417 6.68501 21.4883 6.32334 21.395 5.97334C21.3017 5.62334 21.08 5.34334 20.7767 5.15668L18.7583 4.00168C18.2567 3.69834 17.5917 3.87334 17.2883 4.38668L17.16 4.60834C16.495 5.76334 15.5267 6.41668 14.4883 6.41668C13.45 6.41668 12.4817 5.76334 11.8167 4.60834L11.6883 4.37501C11.3967 3.88501 10.7433 3.71001 10.2417 4.00168L8.22334 5.16834C7.92001 5.34334 7.68668 5.63501 7.59334 5.98501C7.50001 6.33501 7.54668 6.69668 7.72168 7.00001C8.38668 8.14334 8.46834 9.32168 7.95501 10.22C7.44168 11.1183 6.38001 11.6317 5.05001 11.6317C4.30334 11.6317 3.70834 12.2267 3.70834 12.9733V15.0267C3.70834 15.7617 4.30334 16.3683 5.05001 16.3683C6.38001 16.3683 7.44168 16.8817 7.95501 17.78C8.46834 18.6783 8.38668 19.8567 7.72168 21C7.54668 21.3033 7.50001 21.665 7.59334 22.015C7.68668 22.365 7.90834 22.645 8.21168 22.8317L10.23 23.9867C10.475 24.1383 10.7667 24.1733 11.035 24.1033C11.315 24.0333 11.5483 23.8467 11.7 23.6017L11.8283 23.38C12.4933 22.2367 13.4617 21.5717 14.5 21.5717Z`,fill:`currentColor`})]}),bi=e=>(0,Q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Q.jsx)(`path`,{d:`M18.2099 13.1289L9.98776 20.3232C9.01788 21.1719 7.5 20.4831 7.5 19.1943L7.5 4.80565C7.5 3.51691 9.01788 2.82815 9.98775 3.67678L18.2099 10.8711C18.8929 11.4688 18.8929 12.5312 18.2099 13.1289Z`,fill:`currentColor`})});function $({icon:e,text:t,rightIcon:n,className:r}){return(0,Q.jsxs)(`div`,{className:P(`flex min-w-0 w-full items-center justify-between`,Ue,r),children:[(0,Q.jsxs)(`div`,{className:P(`flex min-w-0 items-center`,Ue),children:[(0,Q.jsx)(`span`,{className:Ke,"aria-hidden":!0,children:e}),(0,Q.jsx)(`span`,{className:`text-sm font-normal leading-5`,children:t})]}),n?(0,Q.jsx)(`span`,{className:Ke,"aria-hidden":!0,children:n}):null]})}var xi=e=>(0,Q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Q.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M20.781 10.5L13.281 3H12.2205L4.72049 10.5L5.78099 11.5605L12 5.3415V21H13.5V5.34L19.719 11.5605L20.781 10.5Z`,fill:`currentColor`})}),Si=e=>(0,Q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Q.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M4.72049 13.5L12.2205 21H13.281L20.781 13.5L19.7205 12.4395L13.5 18.6585V3H12V18.66L5.78099 12.438L4.72049 13.5Z`,fill:`currentcolor`})}),Ci=e=>(0,Q.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 12 14`,fill:`none`,...e,children:[(0,Q.jsx)(`path`,{d:`M9.79249 10.1936C10.2876 10.1936 10.6902 10.5962 10.6902 11.0913C10.6902 11.5864 10.2876 11.989 9.79249 11.989C9.29739 11.989 8.89478 11.5864 8.89478 11.0913C8.89478 10.5962 9.29739 10.1936 9.79249 10.1936ZM9.79249 9.10547C8.69891 9.10547 7.80664 9.99774 7.80664 11.0913C7.80664 12.1849 8.69891 13.0772 9.79249 13.0772C10.8861 13.0772 11.7783 12.1849 11.7783 11.0913C11.7783 9.99774 10.8861 9.10547 9.79249 9.10547Z`,fill:`currentColor`}),(0,Q.jsx)(`path`,{d:`M2.23585 10.1936C2.73095 10.1936 3.13356 10.5962 3.13356 11.0913C3.13356 11.5864 2.73095 11.989 2.23585 11.989C1.74075 11.989 1.33814 11.5864 1.33814 11.0913C1.33814 10.5962 1.74075 10.1936 2.23585 10.1936ZM2.23585 9.10547C1.14227 9.10547 0.25 9.99774 0.25 11.0913C0.25 12.1849 1.14227 13.0772 2.23585 13.0772C3.32943 13.0772 4.2217 12.1849 4.2217 11.0913C4.2217 9.99774 3.32943 9.10547 2.23585 9.10547Z`,fill:`currentColor`}),(0,Q.jsx)(`path`,{d:`M2.23585 2.16846C2.73095 2.16846 3.13356 2.57107 3.13356 3.06617C3.13356 3.56128 2.73095 3.96389 2.23585 3.96389C1.74075 3.96389 1.33814 3.56128 1.33814 3.06617C1.33814 2.57107 1.74075 2.16846 2.23585 2.16846ZM2.23585 1.08032C1.14227 1.08032 0.25 1.97259 0.25 3.06617C0.25 4.15975 1.14227 5.05202 2.23585 5.05202C3.32943 5.05202 4.2217 4.15975 4.2217 3.06617C4.2217 1.97259 3.32943 1.08032 2.23585 1.08032Z`,fill:`currentColor`}),(0,Q.jsx)(`path`,{d:`M2.23633 9.17627V4.55713`,stroke:`currentColor`,strokeMiterlimit:10}),(0,Q.jsx)(`path`,{d:`M9.79304 9.17605V4.33928C9.79304 3.63743 9.22176 3.06616 8.51992 3.06616H7.38281`,stroke:`currentColor`,strokeMiterlimit:10}),(0,Q.jsx)(`path`,{d:`M7.38191 5.21531L5.23828 3.06624L7.38191 0.922607V5.21531Z`,fill:`currentColor`})]}),wi=`!w-auto whitespace-nowrap`;function Ti({onClose:e}){let{t}=a(`openhands`),{setMessageToSend:n}=V(),{data:r}=q(),i=r?.git_provider;return(0,Q.jsxs)(U,{testId:`git-tools-submenu`,className:`w-max`,children:[(0,Q.jsx)(W,{testId:`git-pull-button`,onClick:()=>{n(k()),e()},className:wi,children:(0,Q.jsx)($,{icon:(0,Q.jsx)(Si,{width:16,height:16}),text:t(F.COMMON$GIT_PULL)})}),(0,Q.jsx)(W,{testId:`git-push-button`,onClick:()=>{n(ee(i)),e()},className:wi,children:(0,Q.jsx)($,{icon:(0,Q.jsx)(xi,{width:16,height:16}),text:t(F.COMMON$GIT_PUSH)})}),(0,Q.jsx)(W,{testId:`create-pr-button`,onClick:()=>{n(re(i)),e()},className:wi,children:(0,Q.jsx)($,{icon:(0,Q.jsx)(Ci,{width:16,height:16}),text:t(F.COMMON$CREATE_PR)})}),(0,Q.jsx)(W,{testId:`create-new-branch-button`,onClick:()=>{n(D()),e()},className:wi,children:(0,Q.jsx)($,{icon:(0,Q.jsx)(gi,{width:16,height:16}),text:t(F.COMMON$CREATE_NEW_BRANCH)})})]})}var Ei=e=>(0,Q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:25,viewBox:`0 0 24 25`,fill:`none`,...e,children:(0,Q.jsx)(`path`,{d:`M15.29 10.79L12.51 13.57C12.3436 13.5257 12.1723 13.5022 12 13.5C11.4696 13.5 10.9609 13.7107 10.5858 14.0858C10.2107 14.4609 10 14.9696 10 15.5C10.0023 15.6722 10.0258 15.8435 10.07 16.01L9.29003 16.79C9.1963 16.883 9.12191 16.9936 9.07114 17.1154C9.02037 17.2373 8.99423 17.368 8.99423 17.5C8.99423 17.632 9.02037 17.7627 9.07114 17.8846C9.12191 18.0064 9.1963 18.117 9.29003 18.21C9.38299 18.3037 9.49359 18.3781 9.61545 18.4289C9.73731 18.4797 9.86802 18.5058 10 18.5058C10.132 18.5058 10.2627 18.4797 10.3846 18.4289C10.5065 18.3781 10.6171 18.3037 10.71 18.21L11.49 17.43C11.6565 17.4743 11.8278 17.4978 12 17.5C12.5305 17.5 13.0392 17.2893 13.4142 16.9142C13.7893 16.5391 14 16.0304 14 15.5C13.9978 15.3278 13.9743 15.1565 13.93 14.99L16.71 12.21C16.8983 12.0217 17.0041 11.7663 17.0041 11.5C17.0041 11.2337 16.8983 10.9783 16.71 10.79C16.5217 10.6017 16.2663 10.4959 16 10.4959C15.7337 10.4959 15.4783 10.6017 15.29 10.79ZM12 4.5C10.6868 4.5 9.38645 4.75866 8.1732 5.2612C6.95994 5.76375 5.85755 6.50035 4.92896 7.42893C3.0536 9.3043 2.00003 11.8478 2.00003 14.5C1.99511 16.4806 2.58375 18.4172 3.69003 20.06C3.83855 20.2801 4.06844 20.4322 4.32911 20.4829C4.58979 20.5335 4.8599 20.4785 5.08003 20.33C5.30016 20.1815 5.45227 19.9516 5.50291 19.6909C5.55354 19.4302 5.49855 19.1601 5.35003 18.94C4.54455 17.7355 4.08131 16.3349 4.00978 14.8877C3.93826 13.4405 4.26113 12.001 4.94392 10.723C5.62671 9.44501 6.64378 8.37643 7.88653 7.63139C9.12928 6.88634 10.5511 6.49281 12 6.49281C13.449 6.49281 14.8708 6.88634 16.1135 7.63139C17.3563 8.37643 18.3734 9.44501 19.0561 10.723C19.7389 12.001 20.0618 13.4405 19.9903 14.8877C19.9188 16.3349 19.4555 17.7355 18.65 18.94C18.5763 19.0489 18.5248 19.1714 18.4985 19.3002C18.4722 19.4291 18.4716 19.5619 18.4966 19.691C18.5217 19.8201 18.572 19.943 18.6447 20.0527C18.7173 20.1623 18.8109 20.2566 18.92 20.33C19.0856 20.4412 19.2806 20.5004 19.48 20.5C19.6438 20.5002 19.8052 20.4603 19.9499 20.3835C20.0946 20.3068 20.2183 20.1957 20.31 20.06C21.4163 18.4172 22.005 16.4806 22 14.5C22 11.8478 20.9465 9.3043 19.0711 7.42893C17.1957 5.55357 14.6522 4.5 12 4.5Z`,fill:`currentColor`})}),Di=e=>(0,Q.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 20 21`,fill:`none`,...e,children:[(0,Q.jsx)(`path`,{d:`M15.9532 15.8037C16.7679 15.8037 17.4304 16.4662 17.4304 17.2809C17.4304 18.0955 16.7679 18.758 15.9532 18.758C15.1385 18.758 14.4761 18.0955 14.4761 17.2809C14.4761 16.4662 15.1385 15.8037 15.9532 15.8037ZM15.9532 14.0132C14.1538 14.0132 12.6855 15.4814 12.6855 17.2809C12.6855 19.0803 14.1538 20.5485 15.9532 20.5485C17.7527 20.5485 19.2209 19.0803 19.2209 17.2809C19.2209 15.4814 17.7527 14.0132 15.9532 14.0132Z`,fill:`currentColor`}),(0,Q.jsx)(`path`,{d:`M3.51768 15.8037C4.33236 15.8037 4.99485 16.4662 4.99485 17.2809C4.99485 18.0955 4.33236 18.758 3.51768 18.758C2.703 18.758 2.04051 18.0955 2.04051 17.2809C2.04051 16.4662 2.703 15.8037 3.51768 15.8037ZM3.51768 14.0132C1.71822 14.0132 0.25 15.4814 0.25 17.2809C0.25 19.0803 1.71822 20.5485 3.51768 20.5485C5.31714 20.5485 6.78536 19.0803 6.78536 17.2809C6.78536 15.4814 5.31714 14.0132 3.51768 14.0132Z`,fill:`currentColor`}),(0,Q.jsx)(`path`,{d:`M3.51768 2.59862C4.33236 2.59862 4.99485 3.2611 4.99485 4.07579C4.99485 4.89047 4.33236 5.55296 3.51768 5.55296C2.703 5.55296 2.04051 4.89047 2.04051 4.07579C2.04051 3.2611 2.703 2.59862 3.51768 2.59862ZM3.51768 0.808105C1.71822 0.808105 0.25 2.27632 0.25 4.07579C0.25 5.87525 1.71822 7.34347 3.51768 7.34347C5.31714 7.34347 6.78536 5.87525 6.78536 4.07579C6.78536 2.27632 5.31714 0.808105 3.51768 0.808105Z`,fill:`currentColor`}),(0,Q.jsx)(`path`,{d:`M3.51758 14.1295V6.52881`,stroke:`currentColor`,strokeWidth:2,strokeMiterlimit:10}),(0,Q.jsx)(`path`,{d:`M15.9523 14.1294V6.17058C15.9523 5.0157 15.0123 4.07568 13.8574 4.07568H11.9863`,stroke:`currentColor`,strokeWidth:2,strokeMiterlimit:10}),(0,Q.jsx)(`path`,{d:`M11.9863 7.6119L8.45898 4.07565L11.9863 0.54834V7.6119Z`,fill:`currentColor`})]}),Oi=e=>(0,Q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,Q.jsx)(`path`,{d:`M4 4C4 2.89543 4.89543 2 6 2H14C14.2652 2 14.5196 2.10536 14.7071 2.29289L19.7071 7.29289C19.8946 7.48043 20 7.73478 20 8V20C20 21.1046 19.1046 22 18 22H6C4.89543 22 4 21.1046 4 20V4ZM17.5858 8L14 4.41421V8H17.5858ZM12 4L6 4V20H18V10H13C12.4477 10 12 9.55228 12 9V4ZM8 13C8 12.4477 8.44772 12 9 12H15C15.5523 12 16 12.4477 16 13C16 13.5523 15.5523 14 15 14H9C8.44772 14 8 13.5523 8 13ZM8 17C8 16.4477 8.44772 16 9 16H15C15.5523 16 16 16.4477 16 17C16 17.5523 15.5523 18 15 18H9C8.44772 18 8 17.5523 8 17Z`,fill:`currentColor`})}),ki=e=>(0,Q.jsx)(`svg`,{width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,Q.jsx)(`path`,{d:`M2.71996 7.64998C2.91552 7.7074 3.10351 7.78797 3.27996 7.88998C3.89978 8.25991 4.60814 8.45523 5.32996 8.45523C6.05178 8.45523 6.76015 8.25991 7.37996 7.88998C7.77042 7.66914 8.21137 7.55307 8.65996 7.55307C9.10855 7.55307 9.5495 7.66914 9.93996 7.88998C10.5673 8.24867 11.2773 8.43735 12 8.43735C12.7226 8.43735 13.4327 8.24867 14.06 7.88998C14.4504 7.66914 14.8914 7.55307 15.34 7.55307C15.7885 7.55307 16.2295 7.66914 16.62 7.88998C17.2537 8.25217 17.97 8.44503 18.7 8.44998C19.4051 8.44852 20.0966 8.25492 20.7 7.88998C20.8764 7.78797 21.0644 7.7074 21.26 7.64998C21.5146 7.57572 21.7292 7.40336 21.8568 7.17081C21.9843 6.93827 22.0142 6.66459 21.94 6.40998C21.8657 6.15537 21.6933 5.94069 21.4608 5.81317C21.2282 5.68564 20.9546 5.65572 20.7 5.72998C20.3494 5.83818 20.0135 5.98932 19.7 6.17998C19.3814 6.36627 19.019 6.46446 18.65 6.46446C18.2809 6.46446 17.9185 6.36627 17.6 6.17998C16.9066 5.79105 16.1249 5.58679 15.33 5.58679C14.535 5.58679 13.7533 5.79105 13.06 6.17998C12.738 6.36703 12.3723 6.46556 12 6.46556C11.6276 6.46556 11.2619 6.36703 10.94 6.17998C10.2466 5.79105 9.46495 5.58679 8.66996 5.58679C7.87497 5.58679 7.09332 5.79105 6.39996 6.17998C6.08139 6.36627 5.719 6.46446 5.34996 6.46446C4.98092 6.46446 4.61853 6.36627 4.29996 6.17998C3.98645 5.98932 3.65057 5.83818 3.29996 5.72998C3.04535 5.65572 2.77167 5.68564 2.53913 5.81317C2.30658 5.94069 2.13422 6.15537 2.05996 6.40998C1.9857 6.66459 2.01562 6.93827 2.14315 7.17081C2.27067 7.40336 2.48535 7.57572 2.73996 7.64998H2.71996ZM20.72 15.73C20.3694 15.8382 20.0335 15.9893 19.72 16.18C19.4014 16.3663 19.039 16.4645 18.67 16.4645C18.3009 16.4645 17.9385 16.3663 17.62 16.18C16.9266 15.7911 16.1449 15.5868 15.35 15.5868C14.555 15.5868 13.7733 15.7911 13.08 16.18C12.758 16.367 12.3923 16.4656 12.02 16.4656C11.6476 16.4656 11.2819 16.367 10.96 16.18C10.2666 15.7911 9.48495 15.5868 8.68996 15.5868C7.89497 15.5868 7.11332 15.7911 6.41996 16.18C6.10139 16.3663 5.739 16.4645 5.36996 16.4645C5.00092 16.4645 4.63853 16.3663 4.31996 16.18C4.00645 15.9893 3.67057 15.8382 3.31996 15.73C3.19389 15.6932 3.06182 15.6816 2.93127 15.6959C2.80073 15.7102 2.67427 15.75 2.55913 15.8132C2.44398 15.8763 2.3424 15.9615 2.26019 16.0639C2.17797 16.1663 2.11673 16.2839 2.07996 16.41C2.04319 16.536 2.03161 16.6681 2.04589 16.7987C2.06016 16.9292 2.1 17.0557 2.16315 17.1708C2.22629 17.286 2.3115 17.3875 2.4139 17.4698C2.5163 17.552 2.63389 17.6132 2.75996 17.65C2.95552 17.7074 3.14351 17.788 3.31996 17.89C3.93978 18.2599 4.64814 18.4552 5.36996 18.4552C6.09178 18.4552 6.80015 18.2599 7.41996 17.89C7.81042 17.6691 8.25137 17.5531 8.69996 17.5531C9.14855 17.5531 9.5895 17.6691 9.97996 17.89C10.6073 18.2487 11.3173 18.4374 12.04 18.4374C12.7626 18.4374 13.4727 18.2487 14.1 17.89C14.4904 17.6691 14.9314 17.5531 15.38 17.5531C15.8285 17.5531 16.2695 17.6691 16.66 17.89C17.2937 18.2522 18.01 18.445 18.74 18.45C19.4451 18.4485 20.1366 18.2549 20.74 17.89C20.9164 17.788 21.1044 17.7074 21.3 17.65C21.5546 17.5757 21.7692 17.4034 21.8968 17.1708C22.0243 16.9383 22.0542 16.6646 21.98 16.41C21.9057 16.1554 21.7333 15.9407 21.5008 15.8132C21.2682 15.6856 20.9946 15.6557 20.74 15.73H20.72ZM20.72 10.73C20.3694 10.8382 20.0335 10.9893 19.72 11.18C19.4014 11.3663 19.039 11.4645 18.67 11.4645C18.3009 11.4645 17.9385 11.3663 17.62 11.18C16.9266 10.7911 16.1449 10.5868 15.35 10.5868C14.555 10.5868 13.7733 10.7911 13.08 11.18C12.758 11.367 12.3923 11.4656 12.02 11.4656C11.6476 11.4656 11.2819 11.367 10.96 11.18C10.2666 10.7911 9.48495 10.5868 8.68996 10.5868C7.89497 10.5868 7.11332 10.7911 6.41996 11.18C6.10139 11.3663 5.739 11.4645 5.36996 11.4645C5.00092 11.4645 4.63853 11.3663 4.31996 11.18C4.00645 10.9893 3.67057 10.8382 3.31996 10.73C3.18902 10.6805 3.04917 10.6591 2.90944 10.6672C2.76971 10.6752 2.63322 10.7125 2.5088 10.7766C2.38438 10.8406 2.2748 10.9301 2.18715 11.0393C2.0995 11.1484 2.03573 11.2747 1.99996 11.41C1.96319 11.536 1.95161 11.6681 1.96589 11.7987C1.98016 11.9292 2.02 12.0557 2.08315 12.1708C2.14629 12.286 2.2315 12.3875 2.3339 12.4698C2.4363 12.552 2.55389 12.6132 2.67996 12.65C2.87552 12.7074 3.06351 12.788 3.23996 12.89C3.85978 13.2599 4.56814 13.4552 5.28996 13.4552C6.01178 13.4552 6.72015 13.2599 7.33996 12.89C7.73042 12.6691 8.17137 12.5531 8.61996 12.5531C9.06855 12.5531 9.5095 12.6691 9.89996 12.89C10.5273 13.2487 11.2373 13.4374 11.96 13.4374C12.6826 13.4374 13.3927 13.2487 14.02 12.89C14.4104 12.6691 14.8514 12.5531 15.3 12.5531C15.7485 12.5531 16.1895 12.6691 16.58 12.89C17.2137 13.2522 17.93 13.445 18.66 13.45C19.3651 13.4485 20.0566 13.2549 20.66 12.89C20.8364 12.788 21.0244 12.7074 21.22 12.65C21.4746 12.5757 21.6892 12.4034 21.8168 12.1708C21.9443 11.9383 21.9742 11.6646 21.9 11.41C21.8257 11.1554 21.6533 10.9407 21.4208 10.8132C21.1882 10.6856 20.9146 10.6557 20.66 10.73H20.72Z`,fill:`currentColor`})}),Ai=`INCREASE_TEST_COVERAGE`,ji=`I want to increase the test coverage of the repository in the current directory.
|
|
4
|
-
|
|
5
|
-
Please investigate the repo to figure out what language is being used, and where tests are located, if there are any.
|
|
6
|
-
|
|
7
|
-
If there are no tests already in the repo, add a very basic test, using typical testing strategies for the language involved.
|
|
8
|
-
|
|
9
|
-
If there are existing tests, find a function or method which lacks adequate unit tests, and add unit tests for it. Be sure to respect the projects existing test structures.
|
|
10
|
-
|
|
11
|
-
Make sure the tests pass before you finish.`,Mi=`AUTO_MERGE_PRS`,Ni=`Please add a GitHub action to this repository which automatically merges pull requests from Dependabot so long as the tests are passing.`,Pi=`FIX_README`,Fi=`Please look at the README and make the following improvements, if they make sense:
|
|
12
|
-
* correct any typos that you find
|
|
13
|
-
* add missing language annotations on codeblocks
|
|
14
|
-
* if there are references to other files or other sections of the README, turn them into links
|
|
15
|
-
* make sure the readme has an h1 title towards the top
|
|
16
|
-
* make sure any existing sections in the readme are appropriately separated with headings
|
|
17
|
-
|
|
18
|
-
If there are no obvious ways to improve the README, make at least one small change to make the wording clearer or friendlier`,Ii=`CLEAN_DEPENDENCIES`,Li=`Examine the dependencies of the current codebase. Make sure you can run the code and any tests.
|
|
19
|
-
|
|
20
|
-
Then run any commands necessary to update all dependencies to the latest versions, and make sure the code continues to run correctly and the tests pass. If changes need to be made to the codebase, go ahead and make those changes. You can look up documentation for new versions using the browser if you need to.
|
|
21
|
-
|
|
22
|
-
If a particular dependency update is causing trouble (e.g. breaking changes that you can't fix), you can revert it and send a message to the user explaining why.
|
|
23
|
-
|
|
24
|
-
Additionally, if you're able to prune any dependencies that are obviously unused, please do so. You may use third party tools to check for unused dependencies.`,Ri=`ADD_DOCS`,zi=`Investigate the documentation in the root of the current repo. Please add a CODE_OF_CONDUCT.md and CONTRIBUTORS.md with good defaults if they are not present. Use information in the README to inform the CONTRIBUTORS doc. If there is no LICENSE currently in the repo, please add the Apache 2.0 license. Add links to all these documents into the README`,Bi=`ADD_DOCKERFILE`,Vi=`Investigate the current repo to understand the installation instructions. Then create a Dockerfile that runs the application, using best practices like arguments and multi-stage builds wherever appropriate.
|
|
25
|
-
|
|
26
|
-
If there is an existing Dockerfile, and there are ways to improve it according to best practices, do so.`,Hi={[Ai]:ji,[Mi]:Ni,[Pi]:Fi,[Ii]:Li,[Ri]:zi,[Bi]:Vi},Ui=`!w-auto whitespace-nowrap`;function Wi({onClose:e}){let{t}=a(`openhands`),{setMessageToSend:n}=V();return(0,Q.jsxs)(U,{testId:`macros-submenu`,className:`overflow-visible`,children:[(0,Q.jsx)(W,{testId:`increase-test-coverage-button`,onClick:()=>{n(Hi.INCREASE_TEST_COVERAGE),e()},className:Ui,children:(0,Q.jsx)($,{icon:(0,Q.jsx)(Ei,{width:16,height:16}),text:t(F.INCREASE_TEST_COVERAGE)})}),(0,Q.jsx)(W,{testId:`fix-readme-button`,onClick:()=>{n(Hi.FIX_README),e()},className:Ui,children:(0,Q.jsx)($,{icon:(0,Q.jsx)(Oi,{width:16,height:16}),text:t(F.FIX_README)})}),(0,Q.jsx)(W,{testId:`auto-merge-prs-button`,onClick:()=>{n(Hi.AUTO_MERGE_PRS),e()},className:Ui,children:(0,Q.jsx)($,{icon:(0,Q.jsx)(Di,{width:16,height:16}),text:t(F.AUTO_MERGE_PRS)})}),(0,Q.jsx)(W,{testId:`clean-dependencies-button`,onClick:()=>{n(Hi.CLEAN_DEPENDENCIES),e()},className:Ui,children:(0,Q.jsx)($,{icon:(0,Q.jsx)(ki,{width:16,height:16}),text:t(F.CLEAN_DEPENDENCIES)})})]})}function Gi(){let{conversationId:e,navigate:t}=ze(),{data:n,isLoading:r}=q(),{data:i,isLoading:a}=yt(),o=St(),s=Pt(),c=l({mutationKey:Ft}),u=l({mutationKey:Tt}),d=e?.startsWith(`task-`)??!1,f=d||c>0||u>0,p=i?.profiles??[],m=!!e,h=m?n?.launched_agent_profile?.agent_profile_id??i?.active_agent_profile_id??null:i?.active_agent_profile_id??null,g=p.find(e=>e.id!=null&&e.id===h)?.name??null,_=(0,J.useCallback)(r=>{if(d||!r.id||r.id===h)return;if(!m){s.mutate(r.id);return}let i=e?rt(e):null,a={agentProfileId:r.id,entryPoint:`blank_conversation_profile_picker`};n?.selected_repository&&(a.repository={name:n.selected_repository,gitProvider:n.git_provider??`github`,branch:n.selected_branch??void 0}),n?.selected_workspace&&(a.workingDir=n.selected_workspace,a.workspaceMode=i?.workspace_mode??`local_repo`),i?.plugins?.length&&(a.plugins=i.plugins),o.mutateAsync(a).then(e=>t(`/conversations/${e.conversation_id}`)).catch(()=>{})},[s,n,e,o,h,m,d,t]);return{profiles:p,currentProfileId:h,currentProfileName:g,isInConversation:m,isLoading:a||d||m&&r,isSwitching:f,selectProfile:_}}function Ki({onClose:e,dividerInset:t,settingsLinkClassName:n,settingsIconClassName:r}){let{t:i}=a(`openhands`),{profiles:o,currentProfileId:s,isInConversation:c,isSwitching:l,selectProfile:u}=Gi(),d=t=>{u(t),e()};return(0,Q.jsxs)(Q.Fragment,{children:[o.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`li`,{role:`presentation`,className:`px-2 pt-1 pb-0.5`,children:(0,Q.jsx)(G.Text,{className:`text-[11px] font-medium text-[var(--oh-text-dim)] uppercase tracking-wide leading-4`,children:i(F.SETTINGS$AVAILABLE_PROFILES)})}),o.map(t=>{let n=t.id!=null&&t.id===s;return(0,Q.jsxs)(W,{testId:`chat-input-agent-profile-option-${t.name}`,isDisabled:l,onClick:r=>{if(r.preventDefault(),r.stopPropagation(),n){e();return}d(t)},className:P(`flex items-center gap-2`,n&&`bg-[var(--oh-interactive-hover)]`),children:[(0,Q.jsx)(`span`,{className:`flex-1 truncate text-sm leading-5`,title:t.name,children:t.name}),n&&(0,Q.jsx)(Mt,{width:14,height:14,className:`shrink-0`,"aria-hidden":!0})]},t.id??t.name)}),c&&(0,Q.jsx)(`li`,{role:`presentation`,className:`px-2 pt-0.5 pb-1`,children:(0,Q.jsx)(G.Text,{className:`text-[11px] text-[var(--oh-text-dim)] leading-4`,children:i(F.CHAT$START_NEW_WITH_PROFILE_HINT)})})]}),o.length>0&&(0,Q.jsx)(z,{inset:t}),(0,Q.jsx)(`li`,{className:`text-sm`,children:(0,Q.jsxs)(Be,{to:`/settings/agents`,onClick:e,className:P(`flex h-[30px] items-center gap-2 rounded p-2 leading-5 text-[var(--oh-foreground)] hover:bg-[var(--oh-interactive-hover)] transition-colors`,n),children:[(0,Q.jsx)(tn,{width:16,height:16,className:P(`shrink-0`,r),"aria-hidden":!0}),(0,Q.jsx)(`span`,{children:i(F.CHAT$MANAGE_AGENT_PROFILES)})]})})]})}function qi({isDisabled:e,children:t,placement:n=`right`}){let{t:r}=a(`openhands`);return e?(0,Q.jsx)(He,{content:r(F.CONVERSATION$UNAVAILABLE_FOR_ARCHIVES),placement:n,tooltipClassName:`bg-white text-black text-xs font-medium leading-5`,children:(0,Q.jsx)(`span`,{className:`block w-full`,children:t})}):t}function Ji(){let{data:e}=q();return Se(e?.sandbox_status)}function Yi({onClose:e,onShowSkills:t,onShowPlugins:n,onShowHooks:r,onShowAgentTools:i,shouldShowAgentTools:o=!0,shouldShowHooks:s=!1,shouldShowPlugins:c=!1,showAgentProfileSwitch:l=!1,footerAction:u}){let{t:d}=a(`openhands`),{data:f}=q(),{providers:p}=jt(),m=Ji(),[h,g]=(0,J.useState)(null),_=!!f?.selected_repository,v=p.length>0,y=_&&v,b=e=>{m||g(h===e?null:e)},x=()=>{g(null),e()};return(0,Q.jsxs)(U,{ref:gt(x),testId:`tools-context-menu`,position:`top`,alignment:`left`,className:`left-[-16px] mb-2 bottom-full overflow-visible min-w-[200px]`,children:[l&&(0,Q.jsxs)(`div`,{className:`relative group/agent-profile`,children:[(0,Q.jsx)(W,{testId:`switch-agent-profile-button`,onClick:()=>b(`agent-profile`),children:(0,Q.jsx)($,{icon:(0,Q.jsx)(nn,{width:16,height:16,"aria-hidden":!0}),text:d(F.CHAT$SWITCH_AGENT_PROFILE),rightIcon:(0,Q.jsx)(bi,{width:10,height:10})})}),(0,Q.jsx)(`div`,{className:P(`absolute left-full top-[-4px] z-60 opacity-0 invisible pointer-events-none transition-all duration-200 ml-[1px]`,`group-hover/agent-profile:opacity-100 group-hover/agent-profile:visible group-hover/agent-profile:pointer-events-auto`,`hover:opacity-100 hover:visible hover:pointer-events-auto`,h===`agent-profile`&&`opacity-100 visible pointer-events-auto`),children:(0,Q.jsx)(U,{testId:`agent-profile-submenu`,className:`min-w-[220px] max-w-[320px] max-h-[60vh] overflow-y-auto gap-0`,children:(0,Q.jsx)(Ki,{onClose:x,dividerInset:`menu`})})})]}),y&&(0,Q.jsxs)(`div`,{className:`relative group/git`,children:[(0,Q.jsx)(qi,{isDisabled:m,children:(0,Q.jsx)(W,{testId:`git-tools-button`,onClick:()=>b(`git`),isDisabled:m,children:(0,Q.jsx)($,{icon:(0,Q.jsx)(gi,{width:16,height:16}),text:d(F.COMMON$GIT_TOOLS),rightIcon:(0,Q.jsx)(bi,{width:10,height:10})})})}),!m&&(0,Q.jsx)(`div`,{className:P(`absolute left-full top-[-6px] z-60 opacity-0 invisible pointer-events-none transition-all duration-200 ml-[1px]`,`group-hover/git:opacity-100 group-hover/git:visible group-hover/git:pointer-events-auto`,`hover:opacity-100 hover:visible hover:pointer-events-auto`,h===`git`&&`opacity-100 visible pointer-events-auto`),children:(0,Q.jsx)(Ti,{onClose:x})})]}),(0,Q.jsxs)(`div`,{className:`relative group/macros`,children:[(0,Q.jsx)(qi,{isDisabled:m,children:(0,Q.jsx)(W,{testId:`macros-button`,onClick:()=>b(`macros`),isDisabled:m,children:(0,Q.jsx)($,{icon:(0,Q.jsx)(yi,{width:16,height:16}),text:d(F.COMMON$MACROS),rightIcon:(0,Q.jsx)(bi,{width:10,height:10})})})}),!m&&(0,Q.jsx)(`div`,{className:P(`absolute left-full top-[-4px] z-60 opacity-0 invisible pointer-events-none transition-all duration-200 ml-[1px]`,`group-hover/macros:opacity-100 group-hover/macros:visible group-hover/macros:pointer-events-auto`,`hover:opacity-100 hover:visible hover:pointer-events-auto`,h===`macros`&&`opacity-100 visible pointer-events-auto`),children:(0,Q.jsx)(Wi,{onClose:x})})]}),o&&(0,Q.jsx)(z,{inset:`menu`}),(0,Q.jsx)(qi,{isDisabled:m,children:(0,Q.jsx)(W,{testId:`show-skills-button`,onClick:t,isDisabled:m,children:(0,Q.jsx)($,{icon:(0,Q.jsx)(Ot,{width:16,height:16,className:`stroke-[1.75]`,"aria-hidden":!0}),text:d(F.CONVERSATION$SHOW_SKILLS)})})}),c&&(0,Q.jsx)(qi,{isDisabled:m,children:(0,Q.jsx)(W,{testId:`show-plugins-button`,onClick:n,isDisabled:m,children:(0,Q.jsx)($,{icon:(0,Q.jsx)(_i,{width:16,height:16,"aria-hidden":!0}),text:d(F.CONVERSATION$SHOW_PLUGINS)})})}),s&&(0,Q.jsx)(qi,{isDisabled:m,children:(0,Q.jsx)(W,{testId:`show-hooks-button`,onClick:r,isDisabled:m,children:(0,Q.jsx)($,{icon:(0,Q.jsx)(vi,{width:16,height:16,"aria-hidden":!0}),text:d(F.CONVERSATION$SHOW_HOOKS)})})}),o&&(0,Q.jsx)(qi,{isDisabled:m,children:(0,Q.jsx)(W,{testId:`show-agent-tools-button`,onClick:i,isDisabled:m,children:(0,Q.jsx)($,{icon:(0,Q.jsx)(be,{width:16,height:16}),text:d(F.BUTTON$SHOW_AGENT_TOOLS_AND_METADATA)})})}),u&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(z,{}),(0,Q.jsx)(W,{testId:u.testId,onClick:e=>{e.preventDefault(),e.stopPropagation(),u.onClick(),x()},children:(0,Q.jsx)($,{icon:u.icon,text:u.label})})]})]})}function Xi({agentClass:e,openhandsVersion:t,onClose:n}){let{t:r}=a(`openhands`);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(et,{onClose:n,testId:`close-system-message-modal`}),(0,Q.jsxs)(`div`,{className:`flex w-full min-w-0 flex-col gap-2 pr-6`,children:[(0,Q.jsx)(Ne,{title:r(F.SYSTEM_MESSAGE_MODAL$TITLE)}),(e||t)&&(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[e&&(0,Q.jsxs)(`div`,{className:`text-sm`,children:[(0,Q.jsx)(G.Text,{className:`font-semibold text-[var(--oh-text-tertiary)]`,children:r(F.SYSTEM_MESSAGE_MODAL$AGENT_CLASS)}),` `,(0,Q.jsx)(G.Text,{className:`font-medium text-content-2`,children:e})]}),t&&(0,Q.jsxs)(`div`,{className:`text-sm`,children:[(0,Q.jsx)(G.Text,{className:`font-semibold text-[var(--oh-text-tertiary)]`,children:r(F.SYSTEM_MESSAGE_MODAL$OPENHANDS_VERSION)}),` `,(0,Q.jsx)(G.Text,{className:`text-content-2`,children:t})]})]})]})]})}function Zi({isActive:e,children:t,onClick:n,className:r,disabled:i=!1}){return(0,Q.jsx)(`button`,{type:`button`,disabled:i,className:P(`px-4 py-2 font-normal border-b-2 transition-colors`,e?`border-foreground text-foreground`:`border-transparent text-[var(--oh-muted)] hover:text-[var(--oh-foreground)]`,i&&`opacity-50 cursor-not-allowed`,r),onClick:n,"aria-selected":e,role:`tab`,children:t})}function Qi({activeTab:e,onTabChange:t,hasTools:n}){let{t:r}=a(`openhands`);return(0,Q.jsxs)(`div`,{className:`mb-2 flex border-b border-[var(--oh-border)]`,role:`tablist`,children:[(0,Q.jsx)(Zi,{isActive:e===`system`,onClick:()=>t(`system`),children:r(F.SYSTEM_MESSAGE_MODAL$SYSTEM_MESSAGE_TAB)}),n&&(0,Q.jsx)(Zi,{isActive:e===`tools`,onClick:()=>t(`tools`),children:r(F.SYSTEM_MESSAGE_MODAL$TOOLS_TAB)})]})}var $i=Je(`whitespace-pre-wrap`,{variants:{size:{default:`text-sm`,small:`text-xs`},font:{default:``,mono:`font-mono`},lineHeight:{default:``,relaxed:`leading-relaxed`},background:{default:``,dark:`bg-base`},textColor:{default:``,light:`text-[var(--oh-text-tertiary)]`},padding:{default:``,medium:`p-3`,large:`px-5`},borderRadius:{default:``,medium:`rounded-md`},shadow:{default:``,inner:`shadow-inner`},maxHeight:{default:``,small:`max-h-[400px]`,large:`max-h-[60vh]`},overflow:{default:``,auto:`overflow-auto`}},defaultVariants:{size:`default`,font:`default`,lineHeight:`default`,background:`default`,textColor:`default`,padding:`default`,borderRadius:`default`,shadow:`default`,maxHeight:`default`,overflow:`default`}});function ea({size:e,font:t,lineHeight:n,background:r,textColor:i,padding:a,borderRadius:o,shadow:s,maxHeight:c,overflow:l,className:u,testId:d,children:f}){return(0,Q.jsx)(`pre`,{"data-testid":d,className:P($i({size:e,font:t,lineHeight:n,background:r,textColor:i,padding:a,borderRadius:o,shadow:s,maxHeight:c,overflow:l}),u),children:f})}function ta({content:e}){return(0,Q.jsx)(ea,{size:`small`,font:`mono`,lineHeight:`relaxed`,padding:`medium`,className:`text-[var(--oh-text-tertiary)]`,children:e})}function na({parameters:e}){let{t}=a(`openhands`);return(0,Q.jsxs)(`div`,{className:`mt-2`,"data-testid":`tool-parameters`,children:[(0,Q.jsx)(G.Text,{className:`text-sm font-semibold text-[var(--oh-text-tertiary)]`,children:t(F.SYSTEM_MESSAGE_MODAL$PARAMETERS)}),(0,Q.jsx)(`div`,{className:`text-sm mt-2 p-3 bg-base rounded-md overflow-auto text-[var(--oh-text-tertiary)] max-h-[400px] border border-[var(--oh-border)]`,children:(0,Q.jsx)(me,{name:!1,src:e,theme:T})})]})}function ra({title:e,isExpanded:t,onClick:n,className:r}){return(0,Q.jsxs)(`button`,{type:`button`,"data-testid":`toggle-button`,onClick:n,className:P(`w-full py-3 px-3 text-left flex items-center justify-between hover:bg-tertiary transition-colors`,r),children:[(0,Q.jsx)(`div`,{className:`flex items-center`,children:(0,Q.jsx)(G.Text,{className:`font-bold text-content-2`,children:e})}),(0,Q.jsx)(G.Text,{className:`text-[var(--oh-text-tertiary)]`,children:t?(0,Q.jsx)(ue,{size:18}):(0,Q.jsx)(L,{size:18})})]})}function ia({tool:e,index:t,isExpanded:n,onToggle:r}){let i=e,a=i.function||i,o=i.title||i.annotations?.title||a.name||i.type===`function`&&i.function?.name||``,s=i.description||a.description||i.type===`function`&&i.function?.description||``,c=a.parameters||i.type===`function`&&i.function?.parameters||i.parameters||null;return(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(ra,{title:String(o),isExpanded:n,onClick:()=>r(t)}),n&&(0,Q.jsxs)(`div`,{className:`px-3 pb-3 pt-1 border-t border-[var(--oh-border)]`,children:[(0,Q.jsx)(`div`,{className:`mt-2 mb-3 text-sm text-[var(--oh-text-tertiary)] leading-relaxed`,children:(0,Q.jsx)(Gt,{children:String(s)})}),c&&(0,Q.jsx)(na,{parameters:c})]})]})}function aa({tools:e,expandedTools:t,onToggleTool:n}){return(0,Q.jsx)(`div`,{className:`divide-y divide-[var(--oh-border)]`,children:e.map((e,r)=>(0,Q.jsx)(ia,{tool:e,index:r,isExpanded:t[r]||!1,onToggle:n},r))})}function oa(){let{t:e}=a(`openhands`);return(0,Q.jsx)(`div`,{className:`flex items-center justify-center h-full p-4`,children:(0,Q.jsx)(G.Text,{className:`text-[var(--oh-muted)]`,children:e(F.SYSTEM_MESSAGE_MODAL$NO_TOOLS)})})}function sa({activeTab:e,systemMessage:t,expandedTools:n,onToggleTool:r}){return e===`system`?(0,Q.jsx)(ta,{content:t.content}):e===`tools`?t.tools&&t.tools.length>0?(0,Q.jsx)(aa,{tools:t.tools,expandedTools:n,onToggleTool:r}):(0,Q.jsx)(oa,{}):null}function ca({isOpen:e,onClose:t,systemMessage:n}){let[r,i]=(0,J.useState)(`system`),[a,o]=(0,J.useState)({});return n?e&&(0,Q.jsx)(je,{onClose:t,children:(0,Q.jsxs)(Me,{width:`lg`,className:`relative max-h-[80vh] flex flex-col items-start border border-[var(--oh-border)]`,testID:`system-message-modal`,children:[(0,Q.jsx)(Xi,{agentClass:n.agent_class,openhandsVersion:n.openhands_version,onClose:t}),(0,Q.jsxs)(`div`,{className:`w-full`,children:[(0,Q.jsx)(Qi,{activeTab:r,onTabChange:i,hasTools:!!(n.tools&&n.tools.length>0)}),(0,Q.jsx)(`div`,{className:`h-[60vh] overflow-auto rounded-md border border-[var(--oh-border)] bg-surface-raised custom-scrollbar-always`,children:(0,Q.jsx)(sa,{activeTab:r,systemMessage:n,expandedTools:a,onToggleTool:e=>{o(t=>({...t,[e]:!t[e]}))}})})]})]})}):null}var la=`rounded-md p-1 text-white hover:bg-tertiary cursor-pointer disabled:opacity-30 disabled:cursor-not-allowed`;function ua({isLoading:e,isRefetching:t,onRefresh:n,onClose:r}){let{t:i}=a(`openhands`),o=i(F.BUTTON$REFRESH);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(et,{onClose:r,testId:`close-skills-modal`}),(0,Q.jsxs)(`div`,{className:`flex w-full items-start justify-between gap-4 pr-10`,children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2`,children:[(0,Q.jsx)(Ne,{title:i(F.SKILLS_MODAL$TITLE)}),(0,Q.jsx)(G.Text,{className:`text-sm text-[var(--oh-muted)]`,children:i(F.SKILLS_MODAL$WARNING)})]}),(0,Q.jsx)(He,{content:o,placement:`bottom`,children:(0,Q.jsx)(`button`,{type:`button`,"data-testid":`refresh-skills`,onClick:n,disabled:e||t,"aria-label":o,className:la,children:(0,Q.jsx)(De,{size:18,className:P(t&&`animate-spin`),"aria-hidden":!0})})})]})]})}function da({title:e,count:t,children:n}){return(0,Q.jsxs)(`section`,{className:`w-full`,children:[(0,Q.jsx)(`div`,{className:`sticky top-0 z-10 border-b border-[var(--oh-border)] bg-surface-raised px-3 py-2`,children:(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Q.jsx)(G.Text,{className:`text-xs font-medium tracking-[0.01em] text-tertiary-light`,children:e}),(0,Q.jsx)(`span`,{className:`inline-flex shrink-0 items-center rounded-full px-2 py-0.5 text-[11px] font-medium leading-4 border border-[var(--oh-border)] bg-[var(--oh-surface)] text-tertiary-light`,children:t})]})}),(0,Q.jsx)(`div`,{className:`divide-y divide-[var(--oh-border)]`,children:n})]})}function fa(){return(0,Q.jsx)(`div`,{className:`flex justify-center items-center py-8`,children:(0,Q.jsx)(`div`,{className:`animate-spin rounded-full h-8 w-8 border-t-2 border-b-2 border-white`})})}function pa({isError:e}){let{t}=a(`openhands`);return(0,Q.jsx)(`div`,{className:`flex items-center justify-center h-full p-4`,children:(0,Q.jsx)(G.Text,{className:`text-[var(--oh-muted)]`,children:t(e?F.COMMON$FETCH_ERROR:F.CONVERSATION$NO_SKILLS)})})}function ma({triggers:e}){let{t}=a(`openhands`);return!e||e.length===0?null:(0,Q.jsxs)(`div`,{className:`mt-2 mb-3`,children:[(0,Q.jsx)(G.Text,{className:`text-sm font-semibold text-[var(--oh-text-tertiary)] mb-2`,children:t(F.COMMON$TRIGGERS)}),(0,Q.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:e.map(e=>(0,Q.jsx)(`span`,{className:`inline-flex items-center rounded-full px-2 py-0.5 text-[11px] font-medium leading-4 border border-[var(--oh-border)] bg-[var(--oh-surface)] text-tertiary-light`,children:e},e))})]})}function ha({content:e}){let{t}=a(`openhands`);return(0,Q.jsxs)(`div`,{className:`mt-2`,children:[(0,Q.jsx)(G.Text,{className:`text-sm font-semibold text-[var(--oh-text-tertiary)] mb-2`,children:t(F.COMMON$CONTENT)}),(0,Q.jsx)(ea,{size:`small`,font:`mono`,lineHeight:`relaxed`,padding:`medium`,borderRadius:`medium`,maxHeight:`small`,overflow:`auto`,className:`mt-2 border border-[var(--oh-border)] bg-base text-[var(--oh-text-tertiary)]`,children:e||t(F.SKILLS_MODAL$NO_CONTENT)})]})}var ga={knowledge:`Knowledge`,repo:`Repository`,agentskills:`AgentSkills`},_a=`inline-flex shrink-0 items-center rounded-full px-2 py-0.5 text-[11px] font-medium leading-4 border border-[var(--oh-border)] bg-[var(--oh-surface)] text-tertiary-light`;function va({skill:e,isExpanded:t,onToggle:n}){return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>n(e.name),className:`w-full py-3 px-3 text-left flex items-center justify-between hover:bg-tertiary transition-colors`,children:[(0,Q.jsx)(`div`,{className:`flex items-center`,children:(0,Q.jsx)(G.Text,{className:`font-bold text-content-2`,children:e.name})}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:_a,children:ga[e.type]}),(0,Q.jsx)(G.Text,{className:`text-[var(--oh-text-tertiary)]`,children:t?(0,Q.jsx)(ue,{size:18}):(0,Q.jsx)(L,{size:18})})]})]}),t&&(0,Q.jsxs)(`div`,{className:`px-3 pb-3 pt-1 border-t border-[var(--oh-border)]`,children:[(0,Q.jsx)(ma,{triggers:e.triggers??[]}),(0,Q.jsx)(ha,{content:e.content??``})]})]})}var ya={project:F.SKILLS_MODAL$SECTION_PROJECT,personal:F.SKILLS_MODAL$SECTION_USER,public:F.SKILLS_MODAL$SECTION_PUBLIC};function ba({onClose:e}){let{t}=a(`openhands`),n=S(),[r,i]=(0,J.useState)({}),{data:o,isLoading:s,isError:c,refetch:l,isRefetching:u}=Vn(),d=(0,J.useMemo)(()=>o?Yt(o,n):null,[o,n]),f=e=>{i(t=>({...t,[e]:!t[e]}))};return(0,Q.jsx)(je,{onClose:e,children:(0,Q.jsxs)(Me,{width:`lg`,className:`relative max-h-[80vh] flex flex-col items-start border border-[var(--oh-border)]`,testID:`skills-modal`,children:[(0,Q.jsx)(ua,{isLoading:s,isRefetching:u,onRefresh:l,onClose:e}),(0,Q.jsx)(`div`,{className:`w-full h-[60vh] overflow-auto rounded-md border border-[var(--oh-border)] bg-surface-raised custom-scrollbar-always`,children:s?(0,Q.jsx)(fa,{}):c||!o||o.length===0?(0,Q.jsx)(pa,{isError:c}):d&&(0,Q.jsx)(`div`,{className:`divide-y divide-[var(--oh-border)]`,children:Xt.map(e=>{let n=d[e];return n.length===0?null:(0,Q.jsx)(da,{title:t(ya[e]),count:n.length,children:n.map(t=>(0,Q.jsx)(va,{skill:t,isExpanded:r[t.name]||!1,onToggle:f},`${e}-${t.name}`))},e)})})})]})})}function xa(){let{conversationId:e}=K();return(0,J.useMemo)(()=>e?rt(e)?.plugins??[]:[],[e])}function Sa({onClose:e}){let{t}=a(`openhands`),n=xa();return(0,Q.jsx)(je,{onClose:e,children:(0,Q.jsxs)(Me,{width:`lg`,className:`relative flex max-h-[80vh] flex-col items-start border border-[var(--oh-border)]`,testID:`plugins-modal`,children:[(0,Q.jsx)(et,{onClose:e,testId:`close-plugins-modal`}),(0,Q.jsxs)(`div`,{className:`flex w-full flex-col gap-2 pr-10`,children:[(0,Q.jsx)(Ne,{title:t(F.PLUGINS_MODAL$TITLE)}),(0,Q.jsx)(G.Text,{className:`text-sm text-[var(--oh-muted)]`,children:t(F.PLUGINS_MODAL$DESCRIPTION)})]}),(0,Q.jsx)(`div`,{className:`w-full overflow-auto rounded-md border border-[var(--oh-border)] bg-surface-raised custom-scrollbar-always`,children:n.length===0?(0,Q.jsx)(`div`,{className:`flex items-center justify-center p-6`,children:(0,Q.jsx)(G.Text,{className:`text-[var(--oh-muted)]`,children:t(F.PLUGINS_MODAL$EMPTY)})}):(0,Q.jsx)(`ul`,{className:`divide-y divide-[var(--oh-border)]`,children:n.map(e=>(0,Q.jsxs)(`li`,{"data-testid":`active-plugin-${wt(e)}`,className:`flex flex-col gap-1 p-4`,children:[(0,Q.jsx)(G.Text,{className:`font-semibold text-white`,children:wt(e)}),(0,Q.jsx)(G.Text,{className:`text-xs text-tertiary-alt`,children:bt(e)?t(F.PLUGINS_MODAL$SOURCE_LOCAL):xt(e)})]},Ct(e)))})})]})})}var Ca=()=>{let{conversationId:e}=Ut(),{curAgentState:t}=It();return c({queryKey:[`conversation`,e,`hooks`],queryFn:async()=>{if(!e)throw Error(`No conversation ID provided`);let{hooks:t}=await H.getHooks(e);return t},enabled:!!e&&t!==E.LOADING&&t!==E.INIT,staleTime:1e3*60*5,gcTime:1e3*60*15})},wa=`rounded-md p-1 text-white hover:bg-tertiary cursor-pointer disabled:opacity-30 disabled:cursor-not-allowed`;function Ta({isLoading:e,isRefetching:t,onRefresh:n,onClose:r}){let{t:i}=a(`openhands`),o=i(F.BUTTON$REFRESH);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(et,{onClose:r,testId:`close-hooks-modal`}),(0,Q.jsxs)(`div`,{className:`flex w-full items-start justify-between gap-4 pr-10`,children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2`,children:[(0,Q.jsx)(Ne,{title:i(F.HOOKS_MODAL$TITLE)}),(0,Q.jsx)(G.Text,{className:`text-sm text-[var(--oh-muted)]`,children:i(F.HOOKS_MODAL$WARNING)})]}),(0,Q.jsx)(He,{content:o,placement:`bottom`,children:(0,Q.jsx)(`button`,{type:`button`,"data-testid":`refresh-hooks`,onClick:n,disabled:e||t,"aria-label":o,className:wa,children:(0,Q.jsx)(De,{size:18,className:P(t&&`animate-spin`),"aria-hidden":!0})})})]})]})}function Ea(){return(0,Q.jsx)(`div`,{className:`flex justify-center items-center py-8`,children:(0,Q.jsx)(`div`,{className:`animate-spin rounded-full h-8 w-8 border-t-2 border-b-2 border-white`})})}function Da({isError:e}){let{t}=a(`openhands`);return(0,Q.jsx)(`div`,{className:`flex items-center justify-center h-full p-4`,children:(0,Q.jsx)(G.Text,{className:`text-[var(--oh-muted)]`,children:t(e?F.COMMON$FETCH_ERROR:F.CONVERSATION$NO_HOOKS)})})}var Oa=`inline-flex items-center rounded-full px-2 py-0.5 text-[11px] font-medium leading-4 border border-[var(--oh-border)] bg-[var(--oh-surface)] text-tertiary-light`;function ka({matcher:e}){let{t}=a(`openhands`);return(0,Q.jsxs)(`div`,{className:`py-3`,children:[(0,Q.jsxs)(`div`,{className:`mb-2`,children:[(0,Q.jsx)(G.Text,{className:`text-sm font-semibold text-[var(--oh-text-tertiary)]`,children:t(F.HOOKS_MODAL$MATCHER)}),(0,Q.jsx)(`span`,{className:`ml-2 ${Oa}`,children:e.matcher})]}),(0,Q.jsxs)(`div`,{className:`mt-2`,children:[(0,Q.jsx)(G.Text,{className:`text-sm font-semibold text-[var(--oh-text-tertiary)] mb-2`,children:t(F.HOOKS_MODAL$COMMANDS)}),(e.hooks??[]).map((e,n)=>(0,Q.jsxs)(`div`,{className:`mt-2`,children:[(0,Q.jsx)(ea,{size:`small`,font:`mono`,lineHeight:`relaxed`,padding:`medium`,borderRadius:`medium`,maxHeight:`small`,overflow:`auto`,className:`border border-[var(--oh-border)] bg-base text-[var(--oh-text-tertiary)]`,children:e.command}),(0,Q.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2 text-xs text-[var(--oh-muted)]`,children:[(0,Q.jsx)(`span`,{className:Oa,children:t(F.HOOKS_MODAL$TYPE,{type:e.type})}),(0,Q.jsx)(`span`,{className:Oa,children:t(F.HOOKS_MODAL$TIMEOUT,{timeout:e.timeout})}),e.async?(0,Q.jsx)(`span`,{className:Oa,children:t(F.HOOKS_MODAL$ASYNC)}):null]})]},`${e.command}-${n}`))]})]})}var Aa={pre_tool_use:F.HOOKS_MODAL$EVENT_PRE_TOOL_USE,post_tool_use:F.HOOKS_MODAL$EVENT_POST_TOOL_USE,user_prompt_submit:F.HOOKS_MODAL$EVENT_USER_PROMPT_SUBMIT,session_start:F.HOOKS_MODAL$EVENT_SESSION_START,session_end:F.HOOKS_MODAL$EVENT_SESSION_END,stop:F.HOOKS_MODAL$EVENT_STOP},ja=`inline-flex shrink-0 items-center rounded-full px-2 py-0.5 text-[11px] font-medium leading-4 border border-[var(--oh-border)] bg-[var(--oh-surface)] text-tertiary-light`,Ma=`HOOKS_MODAL$HOOK_COUNT`;function Na({hookEvent:e,isExpanded:t,onToggle:n}){let{t:r}=a(`openhands`),i=Aa[e.event_type],o=i?r(i):e.event_type,s=e.matchers.reduce((e,t)=>e+(t.hooks??[]).length,0);return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>n(e.event_type),className:`w-full py-3 px-3 text-left flex items-center justify-between hover:bg-tertiary transition-colors`,children:[(0,Q.jsx)(`div`,{className:`flex items-center`,children:(0,Q.jsx)(G.Text,{className:`font-bold text-content-2`,children:o})}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:ja,children:r(Ma,{count:s})}),(0,Q.jsx)(G.Text,{className:`text-[var(--oh-text-tertiary)]`,children:t?(0,Q.jsx)(ue,{size:18}):(0,Q.jsx)(L,{size:18})})]})]}),t&&(0,Q.jsx)(`div`,{className:`border-t border-[var(--oh-border)] px-3 pt-3 pb-3`,children:(0,Q.jsx)(`div`,{className:`divide-y divide-[var(--oh-border)]`,children:e.matchers.map((t,n)=>(0,Q.jsx)(ka,{matcher:t},`${e.event_type}-${t.matcher}-${n}`))})})]})}function Pa({testId:e=`runtime-waiting`,messageKey:t=F.DIFF_VIEWER$WAITING_FOR_RUNTIME,className:n}){let{t:r}=a(`openhands`);return(0,Q.jsxs)(`div`,{"data-testid":e,className:P(`flex h-full w-full flex-col items-center justify-center gap-3 py-8 text-center`,n),children:[(0,Q.jsx)(Oe,{size:`small`}),(0,Q.jsx)(G.Text,{className:`text-sm text-[var(--oh-muted)]`,children:r(t)})]})}function Fa({onClose:e}){let{curAgentState:t}=It(),[n,r]=(0,J.useState)({}),{data:i,isLoading:a,isError:o,refetch:s,isRefetching:c}=Ca(),l=e=>{r(t=>({...t,[e]:!t[e]}))},u=![E.LOADING,E.INIT].includes(t);return(0,Q.jsx)(je,{onClose:e,children:(0,Q.jsxs)(Me,{width:`lg`,className:`relative max-h-[80vh] flex flex-col items-start border border-[var(--oh-border)]`,testID:`hooks-modal`,children:[(0,Q.jsx)(Ta,{isLoading:a,isRefetching:c,onRefresh:s,onClose:e}),(0,Q.jsx)(`div`,{className:`w-full h-[60vh] overflow-auto rounded-md border border-[var(--oh-border)] bg-surface-raised custom-scrollbar-always`,children:u?a?(0,Q.jsx)(Ea,{}):o||!i||i.length===0?(0,Q.jsx)(Da,{isError:o}):(0,Q.jsx)(`div`,{className:`divide-y divide-[var(--oh-border)]`,children:i.map(e=>(0,Q.jsx)(Na,{hookEvent:e,isExpanded:n[e.event_type]||!1,onToggle:l},e.event_type))}):(0,Q.jsx)(Pa,{testId:`hooks-runtime-waiting`})})]})})}function Ia({handleFileIconClick:e,disabled:t=!1,showAgentProfileSwitch:n=!1}){let{t:r}=a(`openhands`),{conversationId:i}=K(),{data:o}=q(),[s,c]=J.useState(!1),{handleShowAgentTools:l,handleShowSkills:u,handleShowPlugins:d,handleShowHooks:f,systemModalVisible:p,setSystemModalVisible:m,skillsModalVisible:h,setSkillsModalVisible:g,pluginsModalVisible:_,setPluginsModalVisible:v,hooksModalVisible:y,setHooksModalVisible:b,systemMessage:x,shouldShowAgentTools:S,shouldShowHooks:C,shouldShowPlugins:w}=hi({conversationId:i??void 0,executionStatus:o?.execution_status,showOptions:!0,onContextMenuToggle:c});return(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(`button`,{type:`button`,className:P(Le,`relative shrink-0 size-6`,t?`cursor-not-allowed text-[var(--oh-text-subtle)]`:void 0,s&&!t&&`text-white bg-white/10`),"aria-label":r(F.CHAT_INTERFACE$PLUS_MENU),"aria-expanded":s,"aria-haspopup":`menu`,"data-testid":`chat-plus-button`,onClick:e=>{e.preventDefault(),e.stopPropagation(),!t&&c(e=>!e)},disabled:t,children:(0,Q.jsx)(`span`,{className:`flex h-full w-full items-center justify-center`,children:(0,Q.jsx)(Ee,{className:`h-[13px] w-[13px] shrink-0`,strokeWidth:2})})}),s&&(0,Q.jsx)(Yi,{onClose:()=>c(!1),showAgentProfileSwitch:n,onShowSkills:u,onShowPlugins:d,onShowHooks:f,onShowAgentTools:l,shouldShowAgentTools:S,shouldShowHooks:C,shouldShowPlugins:w,footerAction:{testId:`add-files-and-images-button`,icon:(0,Q.jsx)(R,{className:`h-4 w-4 shrink-0`,strokeWidth:2,"aria-hidden":!0}),label:r(F.CHAT_INTERFACE$ADD_FILES_AND_IMAGES),onClick:e}}),(0,Q.jsx)(ca,{isOpen:p,onClose:()=>m(!1),systemMessage:x||null}),h&&(0,Q.jsx)(ba,{onClose:()=>g(!1)}),_&&(0,Q.jsx)(Sa,{onClose:()=>v(!1)}),y&&(0,Q.jsx)(Fa,{onClose:()=>b(!1)})]})}var La=()=>{let e=i();return s({mutationFn:e=>ut(e.conversationId),onMutate:async()=>(await e.cancelQueries({queryKey:[`user`,`conversations`]}),{previousConversations:e.getQueryData([`user`,`conversations`])}),onError:(t,n,r)=>{r?.previousConversations&&e.setQueryData([`user`,`conversations`],r.previousConversations)},onSettled:(t,n,r)=>{e.invalidateQueries({queryKey:[`user`,`conversation`,r.conversationId]}),e.invalidateQueries({queryKey:[`user`,`conversations`]}),e.invalidateQueries({queryKey:[`v1-batch-get-app-conversations`]})}})},Ra=()=>{let e=i();return s({mutationFn:e=>dt(e.conversationId),onMutate:async()=>(await e.cancelQueries({queryKey:[`user`,`conversations`]}),{previousConversations:e.getQueryData([`user`,`conversations`])}),onError:(t,n,r)=>{r?.previousConversations&&e.setQueryData([`user`,`conversations`],r.previousConversations)},onSettled:(t,n,r)=>{e.invalidateQueries({queryKey:[`user`,`conversation`,r.conversationId]}),e.invalidateQueries({queryKey:[`user`,`conversations`]}),e.invalidateQueries({queryKey:[`v1-batch-get-app-conversations`]}),e.invalidateQueries({queryKey:[`unified`,`vscode_url`]})}})};function za({disabled:e,canSubmit:t=!0,hasStartedConversation:n,onAddFileClick:r=()=>{},showButton:i=!0,buttonClassName:o=``,handleSubmit:s=()=>{}}){let{t:c}=a(`openhands`),l=ge(),u=La(),d=Ra(),{conversationId:f}=K(),{backend:p}=x(),m=p.kind===`cloud`,h=Jr(),g=!f||n===!1,_=yt({enabled:g}),v=g&&!(f?.startsWith(`task-`)??!1)&&(_.data?.profiles?.length??0)>0,y=m&&!h.isAcpContext,b=cr(),{curAgentState:S}=It(),{conversationMode:C,setConversationMode:w}=V(),{handlePlanClick:T,isCreatingConversation:D}=zr(),O=J.useRef(null),k=J.useRef(null),A=J.useRef(null),j=J.useRef(null),M=J.useRef(null),N=J.useRef(null),[ee,te]=J.useState(1/0),[ne,re]=J.useState(0),[ie,ae]=J.useState(32),[oe,se]=J.useState(96),[le,ue]=J.useState(120),[I,L]=J.useState(!1),[de,R]=J.useState(null),[pe,me]=J.useState();J.useEffect(()=>{let e=O.current,t=k.current,n=A.current,r=j.current,i=M.current;if(!e||!t||!n||!i||y&&!r||typeof ResizeObserver>`u`)return;let a=()=>{let a=e.getBoundingClientRect().width,o=t.getBoundingClientRect().width,s=n.getBoundingClientRect().width,c=i.getBoundingClientRect().width;if(a>0&&te(a),o>0&&re(o),s>0&&ae(s),c>0&&ue(c),r){let e=r.getBoundingClientRect().width;e>0&&se(e)}},o=new ResizeObserver(()=>{a()});return o.observe(e),o.observe(t),o.observe(n),o.observe(i),r&&o.observe(r),a(),()=>o.disconnect()},[y]);let he=()=>{f&&u.mutate({conversationId:f})},_e=()=>{f&&d.mutate({conversationId:f})},ve=l.isPending||u.isPending,ye=J.useCallback(e=>{let t=e,n={showCodeInline:!1,showModelInline:!1};return y&&t>=oe&&(n.showCodeInline=!0,t-=oe+12),t>=le&&(n.showModelInline=!0),n},[y,oe,le]),be=ee-ne-8-ie-12,xe=ye(be),Se=(!y||xe.showCodeInline)&&xe.showModelInline?xe:ye(be-28-12),Ce=y?Se.showCodeInline:!1,z=Se.showModelInline,we=ee>=360,Te=y&&!Ce||!z;J.useEffect(()=>{Te||(L(!1),R(null))},[Te]);let Ee=gt(()=>{L(!1),R(null)}),De=S===E.RUNNING||D||b!==`OPEN`,Oe=()=>{R(null),L(!1)},ke=ui({isAcp:h.isAcpContext}),Ae=P(`group`,Pe),B=P(`text-[var(--oh-muted)] group-hover:text-[var(--oh-foreground)]`,Pe);J.useLayoutEffect(()=>{if(!I||!N.current)return;let e=N.current,t=()=>{let t=e.getBoundingClientRect();me({position:`fixed`,top:t.top-8,left:t.left,transform:`translateY(-100%)`,zIndex:9999})};return t(),window.addEventListener(`resize`,t),window.addEventListener(`scroll`,t,!0),()=>{window.removeEventListener(`resize`,t),window.removeEventListener(`scroll`,t,!0)}},[I]);let je=(0,Q.jsxs)(U,{ref:Ee,testId:`chat-input-overflow-menu`,position:`top`,alignment:`left`,className:`!static !top-auto !bottom-auto !left-auto !right-auto !mt-0 overflow-visible min-w-[200px]`,children:[y&&!Ce&&(0,Q.jsxs)(`div`,{className:`relative group/overflow-agent`,children:[(0,Q.jsx)(W,{testId:`overflow-agent-button`,onClick:()=>R(e=>e===`agent`?null:`agent`),isDisabled:De,children:(0,Q.jsx)($,{icon:(0,Q.jsx)(Fr,{className:`h-[11px] w-[11px]`}),text:c(C===`code`?F.COMMON$CODE:F.COMMON$PLAN),rightIcon:(0,Q.jsx)(bi,{width:10,height:10})})}),!De&&(0,Q.jsx)(`div`,{className:P(`absolute left-full top-[-4px] z-60 opacity-0 invisible pointer-events-none transition-all duration-200 ml-[1px]`,`group-hover/overflow-agent:opacity-100 group-hover/overflow-agent:visible group-hover/overflow-agent:pointer-events-auto`,`hover:opacity-100 hover:visible hover:pointer-events-auto`,de===`agent`&&`opacity-100 visible pointer-events-auto`),children:(0,Q.jsxs)(U,{testId:`overflow-agent-submenu`,className:`overflow-visible min-w-[195px]`,children:[(0,Q.jsx)(W,{testId:`overflow-agent-code`,onClick:e=>{e.preventDefault(),e.stopPropagation(),w(`code`),Oe()},children:(0,Q.jsx)($,{icon:(0,Q.jsx)(Fr,{className:`h-[11px] w-[11px]`}),text:c(F.COMMON$CODE)})}),(0,Q.jsx)(W,{testId:`overflow-agent-plan`,onClick:e=>{T(e),Oe()},children:(0,Q.jsx)($,{icon:(0,Q.jsx)(Wt,{width:16,height:16,color:`currentColor`}),text:c(F.COMMON$PLAN)})})]})})]}),!z&&(0,Q.jsxs)(`div`,{className:`relative group/overflow-model`,children:[(0,Q.jsx)(W,{testId:`overflow-model-button`,onClick:()=>R(e=>e===`model`?null:`model`),children:(0,Q.jsx)($,{icon:(0,Q.jsx)(fe,{width:16,height:16,strokeWidth:2,"aria-hidden":!0}),text:c(F.SETTINGS$AGENT_MODEL),rightIcon:(0,Q.jsx)(bi,{width:10,height:10})})}),(0,Q.jsx)(`div`,{className:P(`absolute left-full top-[-4px] z-60 opacity-0 invisible pointer-events-none transition-all duration-200 ml-[1px]`,`group-hover/overflow-model:opacity-100 group-hover/overflow-model:visible group-hover/overflow-model:pointer-events-auto`,`hover:opacity-100 hover:visible hover:pointer-events-auto`,de===`model`&&`opacity-100 visible pointer-events-auto`),children:(0,Q.jsx)(U,{testId:`overflow-model-submenu`,className:`min-w-[220px] max-w-[320px] max-h-[60vh] overflow-y-auto gap-0`,children:ke===`model`?(0,Q.jsx)($r,{model:h,onClose:Oe,dividerInset:`menu`,settingsLinkClassName:Ae,settingsIconClassName:B}):(0,Q.jsx)(si,{onClose:Oe,dividerInset:`menu`,settingsLinkClassName:Ae,settingsIconClassName:B})})})]})]});return(0,Q.jsxs)(`div`,{ref:O,className:`w-full min-w-0 flex items-center justify-between gap-2`,children:[(0,Q.jsx)(`div`,{className:`flex min-w-0 items-center gap-1`,children:(0,Q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,Q.jsx)(`div`,{ref:A,className:P(!1),children:(0,Q.jsx)(Ia,{disabled:e,handleFileIconClick:r,showAgentProfileSwitch:v})}),y&&(0,Q.jsx)(`div`,{ref:j,className:P(!Ce&&`hidden`),children:(0,Q.jsx)(Br,{})}),(0,Q.jsx)(`div`,{ref:M,className:P(!z&&`hidden`),children:ke===`model`?(0,Q.jsx)(ei,{}):(0,Q.jsx)(ci,{})}),Te&&(0,Q.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,Q.jsx)(`button`,{ref:N,type:`button`,className:P(Le,`size-6`),"aria-label":c(F.CHAT_INTERFACE$MORE_INPUT_ACTIONS),"aria-expanded":I,"aria-haspopup":`menu`,onClick:e=>{e.preventDefault(),e.stopPropagation(),L(e=>!e)},children:(0,Q.jsx)(Et,{width:16,height:16,color:`currentColor`})}),I&&typeof document<`u`&&pe&&tr.createPortal((0,Q.jsx)(`div`,{style:pe,children:je}),document.body)]})]})}),(0,Q.jsxs)(`div`,{ref:k,className:`ml-auto flex shrink-0 items-center gap-2`,children:[we&&f&&(0,Q.jsx)(Pr,{handleStop:he,handleResumeAgent:_e,disabled:e,isPausing:ve}),i&&(0,Q.jsx)(ce,{buttonClassName:o,handleSubmit:s,disabled:e||!t})]})]})}function Ba(e){return e.replace(/!\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/\*{3}(.+?)\*{3}/g,`$1`).replace(/\*{2}(.+?)\*{2}/g,`$1`).replace(/\*(.+?)\*/g,`$1`).replace(/_{3}(.+?)_{3}/g,`$1`).replace(/_{2}(.+?)_{2}/g,`$1`).replace(/_(.+?)_/g,`$1`).replace(/`(.+?)`/g,`$1`).replace(/~~(.+?)~~/g,`$1`)}function Va(e){let t=e,n=e.match(/^---\s*\n([\s\S]*?)\n---/);if(n){let r=n[1].match(/^description:\s*(.+)$/m);if(r){let e=r[1].trim();return(e.startsWith(`"`)&&e.endsWith(`"`)||e.startsWith(`'`)&&e.endsWith(`'`))&&(e=e.slice(1,-1)),Ba(e)}t=e.slice(n[0].length)}let r=t.split(`
|
|
27
|
-
`).map(e=>e.trim()).find(e=>e.length>0&&!e.startsWith(`#`)&&e!==`---`);if(!r)return null;let i=Ba(r);return i.match(/^[^.!?\n]*[.!?]/)?.[0]||i}function Ha({item:e,isSelected:t,onSelect:n,ref:r}){let i=(0,J.useMemo)(()=>`description`in e.skill&&e.skill.description?Ba(e.skill.description):`content`in e.skill&&e.skill.content?Va(e.skill.content):null,[e.skill]);return(0,Q.jsxs)(`button`,{role:`option`,"aria-selected":t,ref:r,type:`button`,className:P(`w-full px-3 py-2.5 text-left`,Ge,t?`bg-tertiary`:`hover:bg-[var(--oh-surface-raised)]`),onMouseDown:t=>{t.preventDefault(),n(e)},children:[(0,Q.jsx)(Nt,{className:`font-normal`,children:e.command}),i&&(0,Q.jsx)(Nt,{className:`text-xs text-[var(--oh-muted)] mt-0.5 truncate block`,children:i})]})}function Ua({items:e,selectedIndex:t,onSelect:n}){let{t:r}=a(`openhands`),i=(0,J.useRef)([]);return(0,J.useEffect)(()=>{i.current=i.current.slice(0,e.length)},[e.length]),(0,J.useEffect)(()=>{let e=i.current[t];e&&e.scrollIntoView({block:`nearest`})},[t]),e.length===0?null:(0,Q.jsxs)(`div`,{role:`listbox`,"aria-label":r(F.CHAT_INTERFACE$COMMANDS),className:`absolute bottom-full left-0 w-full mb-1 bg-[var(--oh-surface)] border border-[var(--oh-border-subtle)] rounded-lg shadow-lg max-h-[300px] overflow-y-auto custom-scrollbar z-50`,"data-testid":`slash-command-menu`,children:[(0,Q.jsx)(`div`,{className:`px-3 py-2 text-xs text-[var(--oh-muted)] border-b border-[var(--oh-border-subtle)]`,children:r(F.CHAT_INTERFACE$COMMANDS)}),(0,Q.jsx)(`div`,{className:We,children:e.map((e,r)=>(0,Q.jsx)(Ha,{item:e,isSelected:r===t,onSelect:n,ref:e=>{i.current[r]=e}},e.command))})]})}function Wa({chatContainerRef:e,isDragOver:t,disabled:n,canSubmit:r,hasStartedConversation:i,isNewConversationPending:a=!1,showButton:o,buttonClassName:s,chatInputRef:c,handleFileIconClick:l,handleSubmit:u,onDragOver:d,onDragLeave:f,onDrop:p,onInput:m,onPaste:h,onKeyDown:g,onFocus:_,onBlur:v,isSlashMenuOpen:y=!1,slashItems:b=[],slashSelectedIndex:x=0,onSlashSelect:S}){return(0,Q.jsxs)(`div`,{ref:e,className:P(`bg-[var(--oh-surface)] box-border content-stretch flex flex-col items-start justify-center p-4 relative rounded-[15px] w-full`,V(e=>e.conversationMode)===`plan`&&`border border-[#597FF4]`),onDragOver:e=>d(e,n),onDragLeave:e=>f(e,n),onDrop:e=>p(e,n),children:[t&&(0,Q.jsx)(qn,{}),(0,Q.jsx)(Qn,{}),(0,Q.jsxs)(`div`,{className:`relative w-full`,children:[y&&S&&(0,Q.jsx)(Ua,{items:b,selectedIndex:x,onSelect:S}),(0,Q.jsx)(er,{chatInputRef:c,isNewConversationPending:a,onInput:m,onPaste:h,onKeyDown:g,onFocus:_,onBlur:v})]}),(0,Q.jsx)(za,{disabled:n,canSubmit:r,hasStartedConversation:i,onAddFileClick:()=>l(n),showButton:o,buttonClassName:s,handleSubmit:u})]})}function Ga({fileInputRef:e,onChange:t}){return(0,Q.jsx)(`input`,{type:`file`,ref:e,multiple:!0,accept:`*/*`,className:`hidden`,onChange:t,"data-testid":`upload-image-input`})}function Ka({disabled:e=!1,isNewConversationPending:t=!1,hasStartedConversation:n,showButton:r=!0,onSubmit:i,onFocus:a,onBlur:o,onFilesPaste:s,className:c=``,buttonClassName:l=``}){let[u,d]=J.useState(!1),{submittedMessage:f,clearAllFiles:p,setShouldHideSuggestions:m,setSubmittedMessage:h,images:g,files:_}=V(),v=e,y=(0,J.useRef)(i);(0,J.useEffect)(()=>{y.current=i},[i]),(0,J.useEffect)(()=>{!f||e||(y.current(f),h(null))},[f,e,h]);let{chatInputRef:b,messageToSend:x,checkIsContentEmpty:S,clearEmptyContentHandler:C,saveDraft:w}=wn(),T=J.useCallback(()=>{let e=b.current?.innerText??``,t=g.length>0||_.length>0;d(e.trim().length>0||t)},[b,g,_]),{fileInputRef:E,chatContainerRef:D,isDragOver:O,handleFileIconClick:k,handleFileInputChange:A,handleDragOver:j,handleDragLeave:M,handleDrop:N}=Tn(s),{gripRef:ee,isGripVisible:te,isGripDragging:ne,handleTopEdgeClick:re,smartResize:ie,handleGripMouseDown:ae,handleGripTouchStart:oe,increaseHeightForEmptyContent:se,resetManualResize:F}=Rn(b,x),{handleSubmit:ce}=Bn(b,E,ie,i,F),le=J.useCallback(()=>{ce(),T()},[ce,T]),{handleInput:ue,handlePaste:I,handleKeyDown:L,handleBlur:de,handleFocus:fe}=zn(b,ie,se,S,C,a,o),{isMenuOpen:R,filteredItems:pe,selectedIndex:me,updateSlashMenu:he,selectItem:ge,handleSlashKeyDown:_e,closeMenu:ve}=Un(b);return(0,J.useEffect)(()=>()=>{m(!1),p()},[m,p]),(0,J.useEffect)(()=>{T()},[T,g.length,_.length]),(0,Q.jsxs)(`div`,{className:P(`w-full`,c),children:[(0,Q.jsx)(Ga,{fileInputRef:E,onChange:A}),(0,Q.jsxs)(`div`,{className:`relative w-full`,children:[(0,Q.jsx)(Wn,{gripRef:ee,isGripVisible:te,isGripDragging:ne,handleTopEdgeClick:re,handleGripMouseDown:ae,handleGripTouchStart:oe}),(0,Q.jsx)(Wa,{chatContainerRef:D,isDragOver:O,disabled:v,canSubmit:u,hasStartedConversation:n,isNewConversationPending:t,showButton:r,buttonClassName:l,chatInputRef:b,handleFileIconClick:k,handleSubmit:le,onDragOver:j,onDragLeave:M,onDrop:N,onInput:()=>{ue(),he(),w(),T()},onPaste:I,onKeyDown:e=>{_e(e)||L(e,v,le)},onFocus:fe,onBlur:()=>{de(),ve(),T()},isSlashMenuOpen:R,slashItems:pe,slashSelectedIndex:me,onSlashSelect:ge})]})]})}var qa=`${w} `,Ja=(e,t)=>{let n=Vt(e=>e.show),r=i(),{switchAndLog:o}=ri(),{backend:s,orgId:c}=x(),{t:l}=a();return(0,J.useCallback)(i=>{let a=i.trim();if(!(a===`/model`||a.startsWith(qa))){t(i);return}let u=a.slice(w.length).trim();if(u){o(e??null,u);return}if(!e)return;let f=zt();r.fetchQuery({queryKey:[...h.all,s.id,c],queryFn:it.listProfiles,staleTime:0}).then(({profiles:t})=>n(e,f,t)).catch(e=>{let t=l(F.MODEL$LIST_FAILED);d(e instanceof Error&&e.message?e.message:t)})},[e,t,n,r,o,s.id,c,l])};function Ya(){let{data:e,isLoading:t,isError:n}=B(),{data:r,isLoading:i,isError:a}=ke(),{data:o,isLoading:s,isError:l}=_t(),{backend:u,orgId:d}=x(),f=u.kind===`local`,{activeProfile:p,isLoading:g}=Vr(),_=(p?.agent_kind??e?.agent_settings?.agent_kind)===`acp`,v=e?.llm_api_key_set===!0,y=p?.agent_kind===`openhands`&&!(f&&p.name==="default")?p.llm_profile_ref:void 0,b=(y?o?.profiles.find(e=>e.name===y):void 0)??o?.profiles.find(e=>e.name===o?.active_profile),S=b?.api_key_set===!0,C=f&&!!b&&!S,{data:w,isLoading:T,isError:E}=c({queryKey:[...h.all,u.id,d,`detail`,b?.name],queryFn:()=>it.getProfile(b.name),...m,enabled:C,meta:{disableToast:!0}}),D=C&<(w?.config),O=rn(`/settings/llm`,r?.feature_flags);return{isConfigured:_||O||(f?S||D:v),isLoading:t||n&&!e||i||a&&!r||s||l&&!o||g||C&&(T||E&&!w)}}var Xa=e=>e.type.startsWith(`image/`),Za=async e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{t()},r.onerror=()=>{n(Error(`Failed to read file: ${e.name}`))},r.onabort=()=>{n(Error(`File reading was aborted: ${e.name}`))},r.readAsArrayBuffer(e)}),Qa=async e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{t()},r.onerror=()=>{n(Error(`Failed to read image: ${e.name}`))},r.onabort=()=>{n(Error(`Image reading was aborted: ${e.name}`))},r.readAsDataURL(e)}),$a=async e=>{let t=await Promise.allSettled(e.map(async e=>(await Za(e),e))),n=[],r=[];return t.forEach((t,i)=>{t.status===`fulfilled`?n.push(t.value):r.push({file:e[i],error:t.reason})}),{successful:n,failed:r}},eo=async e=>{let t=await Promise.allSettled(e.map(async e=>(await Qa(e),e))),n=[],r=[];return t.forEach((t,i)=>{t.status===`fulfilled`?n.push(t.value):r.push({file:e[i],error:t.reason})}),{successful:n,failed:r}};function to(){let{images:e,files:t,addImages:n,addFiles:r,addFileLoading:i,removeFileLoading:a,addImageLoading:o,removeImageLoading:s,markImagesAsPasted:c}=V();return{handleUpload:(0,J.useCallback)(async(l,u)=>{let f=_r(l,[...e,...t]);if(!f.isValid){d(`Error: ${f.errorMessage}`);return}let p=l.filter(e=>!Xa(e)),m=l.filter(e=>Xa(e));m.length>0&&c(m.map(e=>e.name)),p.forEach(e=>i(e.name)),m.forEach(e=>o(e.name));try{let[e,t]=await Promise.all([$a(p),eo(m)]);e.successful.length>0&&(r(e.successful),e.successful.forEach(e=>a(e.name))),t.successful.length>0&&(n(t.successful),t.successful.forEach(e=>s(e.name))),e.failed.forEach(({file:e,error:t})=>{a(e.name),d(`Failed to process file ${e.name}: ${t.message}`)}),t.failed.forEach(({file:e,error:t})=>{s(e.name),d(`Failed to process image ${e.name}: ${t.message}`)})}catch{p.forEach(e=>a(e.name)),m.forEach(e=>s(e.name)),d(`An unexpected error occurred while processing files`)}},[e,t,n,r,i,a,o,s,c])}}function no({hasSelection:e,testId:t=`dropdown-loading`}){return(0,Q.jsx)(`div`,{className:P(`absolute top-1/2 transform -translate-y-1/2`,e?`right-11`:`right-6`),children:(0,Q.jsx)(`div`,{className:`animate-spin h-4 w-4 border-2 border-transparent border-t-white rounded-full`,"data-testid":t})})}function ro({providers:e,value:t,placeholder:n,className:r,errorMessage:i,disabled:o=!1,isLoading:s=!1,onChange:c,inputClassName:l,toggleButtonClassName:u,itemClassName:d}){let{t:f}=a(`openhands`),[p,m]=(0,J.useState)(``),[h,g]=(0,J.useState)(t||null),_=e=>{switch(e){case`github`:return`GitHub`;case`gitlab`:return`GitLab`;case`bitbucket`:return`Bitbucket`;case`bitbucket_data_center`:return`Bitbucket Data Center`;case`azure_devops`:return`Azure DevOps`;default:return e.charAt(0).toUpperCase()+e.slice(1)}},v=(0,J.useMemo)(()=>h&&p===_(h)||!p?.trim()?e:e.filter(e=>_(e).toLowerCase().includes(p.toLowerCase())),[e,p,h]),{isOpen:y,getToggleButtonProps:b,getMenuProps:x,getInputProps:S,highlightedIndex:C,getItemProps:w,selectedItem:T}=Ve({items:v,itemToString:e=>e?_(e):``,selectedItem:h,onSelectedItemChange:({selectedItem:e})=>{g(e||null),c?.(e||null)},onInputValueChange:({inputValue:e})=>{m(e||``)},inputValue:p});(0,J.useEffect)(()=>{t!==h&&g(t||null)},[t,h]),(0,J.useEffect)(()=>{T&&!y?m(_(T)):T||m(``)},[T,y]);let E=(e,t,n,r,i)=>(0,Q.jsx)(an,{item:e,index:t,isSelected:e===r,getItemProps:i,getDisplayText:_,getItemKey:e=>e,isProviderDropdown:!0,itemClassName:d},e),D=e=>(0,Q.jsx)(on,{inputValue:e,searchMessage:`No providers found`,emptyMessage:`No providers available`,testId:`git-provider-dropdown-empty`});return(0,Q.jsxs)(`div`,{className:P(`relative`,r),children:[(0,Q.jsxs)(`div`,{className:`group relative text-[var(--oh-muted)] hover:text-white`,children:[T&&(0,Q.jsx)(`div`,{className:`absolute left-2 top-1/2 transform -translate-y-1/2 z-10`,children:(0,Q.jsx)(Ce,{gitProvider:T,className:`min-w-[14px] min-h-[14px] w-[14px] h-[14px]`})}),(0,Q.jsx)(`input`,{...S({disabled:o,placeholder:n??f(F.COMMON$SELECT_PROVIDER_PLACEHOLDER),readOnly:!0,className:P(`w-29.5 h-6 py-0 border border-[var(--oh-border-input)] rounded shadow-none h-6 min-h-6 max-h-6 `,`text-inherit bg-tertiary placeholder:text-[var(--oh-muted)]`,`focus:outline-none focus:ring-0 focus:border-[var(--oh-border-input)]`,`disabled:bg-tertiary disabled:cursor-not-allowed disabled:opacity-60`,`pl-1.5 pr-[1px] cursor-pointer text-xs font-normal leading-5`,T&&`pl-6`,l)}),"data-testid":`git-provider-dropdown`}),(0,Q.jsx)(`div`,{className:`absolute right-0 top-1/2 transform -translate-y-1/2 flex items-center gap-1`,children:(0,Q.jsx)(cn,{isOpen:y,disabled:o,getToggleButtonProps:b,iconClassName:u})}),s&&(0,Q.jsx)(no,{hasSelection:!!T})]}),(0,Q.jsx)(ln,{isOpen:y,filteredItems:v,inputValue:p,highlightedIndex:C,selectedItem:T,getMenuProps:x,getItemProps:w,renderItem:E,renderEmptyState:D,itemKey:e=>e}),(0,Q.jsx)(sn,{isError:!!i,message:i})]})}var io=(e,t=30,n)=>o({queryKey:[`repository`,e,`branches`,`paginated`,t,n],queryFn:async({pageParam:r})=>!e||!n?{items:[],next_page_id:null}:kt.getRepositoryBranches(e,n,``,r??void 0,t),enabled:!!e&&!!n,staleTime:1e3*60*5,getNextPageParam:e=>e.next_page_id?e.next_page_id:void 0,initialPageParam:null});function ao(e,t,n=30,r){return c({queryKey:[`repository`,e,`branches`,`search`,t,n,r],queryFn:async()=>!e||!t||!r?[]:(await kt.searchRepositoryBranches(e,r,t,void 0,n)).items,enabled:!!e&&!!t&&!!r,staleTime:1e3*60*5,gcTime:1e3*60*15})}function oo(e,t,n,r,i,a){let{data:o,fetchNextPage:s,hasNextPage:c,isLoading:l,isFetchingNextPage:u,isError:d}=io(e,30,t),{data:f,isLoading:p}=ao(e,r,30,t),m=(0,J.useMemo)(()=>o?.pages?.flatMap(e=>e.items)||[],[o]),h=(0,J.useMemo)(()=>n?m.find(e=>e.name===n):null,[m,n]),{data:g,isLoading:_}=ao(e,n&&!h&&m.length>0&&!r?n:``,30,t);return{branches:(0,J.useMemo)(()=>{let e=r&&f&&i!==a?.name,t=e?f:m;if(n){let r=e?t.find(e=>e.name===n):h;if(!r&&g&&g.length>0)r=g.find(e=>e.name===n),r&&(t=[r,...t]);else if(r){let e=t.filter(e=>e.name!==n);t=[r,...e]}}return t},[r,f,m,a,i,n,h,g]),allBranches:m,fetchNextPage:s,hasNextPage:c,isLoading:l||_,isFetchingNextPage:u,isError:d,isSearchLoading:p}}function so({isOpen:e,filteredBranches:t,inputValue:n,highlightedIndex:r,selectedItem:i,getMenuProps:a,getItemProps:o,onScroll:s,menuRef:c}){return(0,Q.jsx)(`div`,{"data-testid":`git-branch-dropdown-menu`,children:(0,Q.jsx)(ln,{isOpen:e,filteredItems:t,inputValue:n,highlightedIndex:r,selectedItem:i,getMenuProps:a,getItemProps:o,onScroll:s,menuRef:c,renderItem:(e,t,n,r,i)=>(0,Q.jsx)(an,{item:e,index:t,isSelected:r?.name===e.name,getItemProps:i,getDisplayText:e=>e.name,getItemKey:e=>e.name},e.name),renderEmptyState:e=>(0,Q.jsx)(`li`,{className:`px-3 py-2`,children:(0,Q.jsx)(on,{inputValue:e,searchMessage:`No branches found`,emptyMessage:`No branches available`,testId:`git-branch-dropdown-empty`})}),itemKey:e=>e.name})})}function co({repository:e,provider:t,selectedBranch:n,onBranchSelect:r,defaultBranch:i,placeholder:o,disabled:s=!1,className:c}){let{t:l}=a(`openhands`),[u,d]=(0,J.useState)(``),[f,p]=(0,J.useState)(!1),m=At(u,300),h=(0,J.useRef)(null),g=(0,J.useMemo)(()=>m.trim().length>0?m.trim():``,[m]),{branches:_,isLoading:v,isError:y,fetchNextPage:b,hasNextPage:x,isFetchingNextPage:S,isSearchLoading:C}=oo(e,t,i||null,g,u,n),w=y?Error(`Failed to load branches`):null,T=(0,J.useCallback)(()=>{d(``),r(null),p(!0)},[r]),E=(0,J.useCallback)(e=>{r(e),d(``)},[r]),D=(0,J.useCallback)(e=>{let{scrollTop:t,scrollHeight:n,clientHeight:r}=e.currentTarget;n-t<=r*1.5&&x&&!S&&b()},[x,S,b]),{isOpen:O,selectedItem:k,highlightedIndex:A,getInputProps:j,getItemProps:M,getMenuProps:N,getToggleButtonProps:ee}=Ve({items:_,selectedItem:n,itemToString:e=>e?.name||``,onSelectedItemChange:({selectedItem:e})=>{E(e||null)},inputValue:u,stateReducer:(e,t)=>t.type===Ve.stateChangeTypes.InputClick&&e.isOpen?{...t.changes,isOpen:!0}:t.changes});(0,J.useEffect)(()=>{e&&(r(null),p(!1))},[e,r]),(0,J.useEffect)(()=>{if(e&&i&&!n&&!f&&_.length>0&&!v){let e=_.find(e=>e.name===i);e&&r(e)}},[e,i,n,f,_,r,v]),(0,J.useEffect)(()=>{d(``)},[e]),(0,J.useEffect)(()=>{n&&!O?d(n.name):!n&&!O&&d(``)},[n,O]);let te=v||C||S;return(0,Q.jsxs)(`div`,{className:P(`relative`,c),children:[(0,Q.jsxs)(`div`,{className:`group relative text-[var(--oh-muted)] hover:text-white`,children:[(0,Q.jsx)(`div`,{className:`absolute left-2 top-1/2 transform -translate-y-1/2 z-10`,children:te?(0,Q.jsx)(`div`,{className:`animate-spin h-4 w-4 border-2 border-transparent border-t-white rounded-full`}):(0,Q.jsx)(gi,{width:16,height:16})}),(0,Q.jsx)(`input`,{...j({disabled:s||!e,placeholder:o??l(F.COMMON$SELECT_BRANCH_PLACEHOLDER),className:P(Ie,`text-inherit shadow-none pl-7 pr-16 text-sm font-normal leading-5`,`placeholder:text-[var(--oh-muted)]`,`disabled:cursor-not-allowed disabled:opacity-60`),onChange:e=>{d(e.target.value)}}),"data-testid":`git-branch-dropdown-input`}),(0,Q.jsxs)(`div`,{className:`absolute right-1 top-1/2 transform -translate-y-1/2 flex items-center`,children:[n&&(0,Q.jsx)(un,{disabled:s,onClear:T}),(0,Q.jsx)(cn,{isOpen:O,disabled:s||!e,getToggleButtonProps:ee})]})]}),(0,Q.jsx)(so,{isOpen:O,filteredBranches:_,inputValue:u,highlightedIndex:A,selectedItem:k,getMenuProps:N,getItemProps:M,onScroll:D,menuRef:h}),(0,Q.jsx)(sn,{isError:!!w})]})}function lo({className:e}){return(0,Q.jsx)(`div`,{className:P(`w-3 h-3 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300 absolute right-0 top-1/2 -translate-y-1/2 h-full w-10.5 pr-2.5 justify-end git-external-link-icon`,e),children:(0,Q.jsx)($t,{width:12,height:12,color:`white`})})}function uo({selectedRepository:e,gitProvider:t,workspaceName:n,emptyStateLabel:r,onClick:i,disabled:o}){let{t:s}=a(`openhands`),{data:c}=B(),l=!!e&&!!t,u=t?c?.provider_tokens_set[t]:null,d=l?ae(t,e,u):void 0,f=!e&&!n,p=e||n||s(F.COMMON$CONNECT_REPO);return l?(0,Q.jsxs)(`a`,{href:d,target:`_blank`,rel:`noopener noreferrer`,className:P(`group flex flex-row items-center justify-between gap-2 pl-2.5 pr-2.5 py-1 rounded-[100px] flex-1 truncate relative`,`border border-[var(--oh-border)] bg-transparent hover:border-[var(--oh-border-subtle)] cursor-pointer`),children:[(0,Q.jsx)(`div`,{className:`w-3 h-3 flex items-center justify-center flex-shrink-0`,children:(0,Q.jsx)(Ce,{gitProvider:t,className:`w-3 h-3 inline-flex`})}),(0,Q.jsx)(`div`,{className:`font-normal text-white text-sm leading-5 truncate flex-1 min-w-0`,title:p,children:p}),(0,Q.jsx)(lo,{})]}):(0,Q.jsxs)(`button`,{type:`button`,onClick:i,disabled:o,className:P(`group flex flex-row items-center justify-between gap-2 pl-2.5 pr-2.5 py-1 rounded-[100px] truncate relative`,`border border-[rgba(71,74,84,0.50)] bg-transparent`,o?`cursor-not-allowed opacity-50`:`cursor-pointer hover:border-[var(--oh-border-subtle)]`),children:[(0,Q.jsx)(`div`,{className:`w-3 h-3 flex items-center justify-center flex-shrink-0 text-white`,children:f?(0,Q.jsx)(_e,{className:`w-3 h-3`,strokeWidth:2,"aria-hidden":!0,"data-testid":`git-control-bar-connect-repo-icon`}):(0,Q.jsx)(ft,{width:12,height:12,color:`white`})}),(0,Q.jsx)(`div`,{className:`font-normal text-white text-sm leading-5 truncate flex-1 min-w-0`,title:p,children:p})]})}function fo({selectedBranch:e,selectedRepository:t,gitProvider:n}){let{t:r}=a(`openhands`),{data:i}=B(),o=n?i?.provider_tokens_set[n]:null,s=!!e&&!!t&&!!n,c=s?ne(n,t,e,o):void 0,l=e||r(F.COMMON$NO_BRANCH);return(0,Q.jsxs)(`a`,{href:s?c:void 0,target:`_blank`,rel:`noopener noreferrer`,className:P(`group flex flex-row items-center justify-between gap-2 pl-2.5 pr-2.5 py-1 rounded-[100px] w-fit flex-shrink-0 max-w-[200px] truncate relative`,s?`border border-[var(--oh-border)] bg-transparent hover:border-[var(--oh-border-subtle)] cursor-pointer`:`border border-[rgba(71,74,84,0.50)] bg-transparent cursor-not-allowed min-w-[108px]`),children:[(0,Q.jsx)(`div`,{className:`w-3 h-3 flex items-center justify-center flex-shrink-0`,children:(0,Q.jsx)(gi,{width:12,height:12,color:`white`})}),(0,Q.jsx)(`div`,{className:`font-normal text-white text-sm leading-5 truncate`,title:l,children:l}),s&&(0,Q.jsx)(lo,{})]})}function po(){let{t:e}=a(`openhands`),{navigate:t}=ze(),{isConfigured:n,isLoading:r}=Ya();return r||n?null:(0,Q.jsxs)(`div`,{"data-testid":`home-llm-not-configured-banner`,role:`alert`,className:`mt-3 flex w-full flex-col gap-3 rounded-xl border border-[var(--oh-border)] bg-[var(--oh-surface-raised)] px-4 py-3 text-[var(--oh-foreground)] sm:flex-row sm:items-center sm:justify-between sm:py-4`,children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 items-start sm:items-center`,children:[(0,Q.jsx)(`div`,{className:`flex-shrink-0`,children:(0,Q.jsx)(I,{className:`align-middle text-yellow-400`})}),(0,Q.jsx)(G.Text,{className:`ml-3 text-sm font-medium`,children:e(F.HOME$LLM_NOT_CONFIGURED_MESSAGE)})]}),(0,Q.jsx)(Re,{testId:`home-llm-not-configured-action`,type:`button`,variant:`primary`,className:`w-fit shrink-0 self-start whitespace-nowrap sm:self-auto`,onClick:()=>t(`/settings/llm`),children:e(F.HOME$LLM_NOT_CONFIGURED_ACTION)})]})}export{Or as A,xi as C,li as D,hi as E,fr as F,ur as I,cr as L,Er as M,vr as N,zr as O,_r as P,X as R,Si as S,_i as T,ki as _,ro as a,Ei as b,Ja as c,Pa as d,ba as f,Hi as g,qi as h,co as i,kr as j,Ar as k,Ka as l,Ji as m,fo as n,to as o,ca as p,uo as r,Ya as s,po as t,Fa as u,Oi as v,vi as w,Ci as x,Di as y,pn as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,bt as n,n as r,r as i,t as a,yt as o}from"./vendor-styling-Ck5D_A2Q.js";import{U as s}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~lq5hicxx-cHFhpUBq.js";import{n as c}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~cy4jtuc2-rfV8mQ9m.js";import{t as l}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-Cwhh3zLe.js";import{E as u,m as d}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-oGvLV0dO.js";import{t as f}from"./useMutation-ChpkYxI5.js";import{t as p}from"./useQuery-BCnzy4LX.js";import{$ as m,At as h,N as g,P as _,R as v,ct as y,jt as b}from"./active-backend-context-BBvP-bI2.js";import{I as x,t as S,z as C}from"./utils-DPQfkd-7.js";import{t as w}from"./back-nav-button-B3pYwmUJ.js";import{n as T,r as E}from"./map-provider-7Bp2aih5.js";import{t as D}from"./external-link-zWbg5KXS.js";import{t as O}from"./proxy-DCI9S-LA.js";import{t as k}from"./loading-spinner-CN3riY7k.js";import{t as A}from"./settings-CWFxymAf.js";import{t as j}from"./settings-service.api-DZp7E7A9.js";import{n as M}from"./use-settings-BHWsOcIG.js";import{f as N}from"./form-control-classes-DLN3Qgub.js";import{t as P}from"./brand-button-CJcwjnfb.js";import{i as ee}from"./dropdown-classes-zFW7qPSK.js";import{i as te}from"./combobox-caret-BlmRwiM8.js";import{t as F}from"./settings-input-D61Vzp9e.js";import{t as I}from"./profiles-service.api-CoLTwjc1.js";import{a as L,d as R,n as z,p as B,r as V,t as H}from"./llm-subscription-DTqtBCWz.js";import{t as U}from"./llm-subscription-service-7eVfDIE1.js";import{t as ne}from"./use-llm-profiles-CU8ah1pz.js";import{i as re,n as ie,t as ae}from"./use-can-manage-org-profiles-Bu4y8gSx.js";import{t as oe}from"./u-edit-DAkcF52u.js";import{_ as se,f as ce,m as le,y as W}from"./schema-field-zhsVDllR.js";import{t as ue}from"./settings-dropdown-input-TWIeiG02.js";import{t as de}from"./copy-to-clipboard-button-DatoElj8.js";import{r as G}from"./typography-D9tiHct7.js";import{t as fe}from"./sdk-section-page-CS4GWn0y.js";import{o as pe}from"./extension-module-card-classes-Bo43vY5V.js";import{a as me,i as he,n as K,o as q,r as J,t as ge}from"./badge-yR53enbU.js";import{t as _e}from"./u-check-circle-BKn1spCL.js";import{i as ve,n as ye,r as be,t as xe}from"./settings-list-classes-sE0ASr1s.js";import{n as Se}from"./settings-section-header-context-BOJ_Fbak.js";var Ce=u(`text-cursor`,[[`path`,{d:`M17 22h-1a4 4 0 0 1-4-4V6a4 4 0 0 1 4-4h1`,key:`uvaxm9`}],[`path`,{d:`M7 22h1a4 4 0 0 0 4-4`,key:`1l7xii`}],[`path`,{d:`M7 2h1a4 4 0 0 1 4 4`,key:`1vrvvh`}]]);function Y(){let e=c();return f({mutationFn:e=>I.activateProfile(e),onSuccess:async()=>{j.invalidateCache(),await e.invalidateQueries({queryKey:g.all}),await e.invalidateQueries({queryKey:v.personal()})},meta:{disableToast:!0}})}var we=e=>{let[t,...n]=e.split(`/`);return!t||n.length===0?{provider:``,model:e,separator:``}:{provider:t,model:n.join(`/`),separator:`/`}};function Te(e,t){if(!t)return e;let n=t.toLowerCase();return e.filter(e=>e.name.toLowerCase().includes(n))}function Ee(e,t){return t===void 0?e:e.filter(e=>e.verified===t)}function De(e,t){return!t||t<=0?e:e.slice(0,t)}function Oe(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))r!==void 0&&t.set(n,String(r));let n=t.toString();return n?`?${n}`:``}var ke=class{static async searchModels(e={},t){let n=y();if(n.backend.kind===`cloud`){let t=Oe({page_id:e.page_id,limit:e.limit,query:e.query,verified__eq:e.verified__eq,provider__eq:e.provider__eq});return O({backend:n.backend,method:`GET`,path:`/api/v1/config/models/search${t}`})}let r=new d(m()),i=t===void 0?r.getVerifiedModels():Promise.resolve(t),[a,o]=await Promise.all([r.getModels(),i]),s=e.provider__eq??null,c=new Set(s?o?.[s]??[]:[]),l=[...c].map(e=>({provider:s,name:e,verified:!0})),u=s?(a??[]).filter(e=>e.startsWith(`${s}/`)).map(e=>e.slice(s.length+1)).filter(e=>e.length>0&&!c.has(e)).map(e=>({provider:s,name:e,verified:!1})):[];return{items:De(Ee(Te([...l,...u],e.query),e.verified__eq),e.limit),next_page_id:null}}static async searchProviders(e={},t){let n=y();if(n.backend.kind===`cloud`){let t=Oe({page_id:e.page_id,limit:e.limit,query:e.query,verified__eq:e.verified__eq});return O({backend:n.backend,method:`GET`,path:`/api/v1/config/providers/search${t}`})}let r=new d(m()),i=t===void 0?r.getVerifiedModels():Promise.resolve(t),[a,o]=await Promise.all([r.getProviders(),i]),s=new Set(Object.keys(o??{}));return{items:De(Ee(Te([...new Set([...s,...a??[]])].map(e=>({name:e,verified:s.has(e)})),e.query),e.verified__eq),e.limit),next_page_id:null}}},Ae=[`config`,`verified-models`],X=1e3*60*5,je=1e3*60*15;async function Me(){return y().backend.kind===`cloud`?{}:await new d(m()).getVerifiedModels()??{}}var Ne=()=>p({queryKey:[`config`,`providers`],queryFn:async({client:e})=>{let t=await e.fetchQuery({queryKey:Ae,queryFn:Me,staleTime:X});return(await ke.searchProviders({limit:100},t)).items},staleTime:X,gcTime:je}),Pe=10;async function Fe(e,t,n,r=0){if(r>=Pe)throw Error(`Too many pagination requests for provider ${e}`);let i=await ke.searchModels({provider__eq:e,limit:100,page_id:n},t);if(i.next_page_id){let n=await Fe(e,t,i.next_page_id,r+1);return[...i.items,...n]}return i.items}var Ie=e=>p({queryKey:[`config`,`models`,e],queryFn:async({client:t})=>Fe(e,await t.fetchQuery({queryKey:Ae,queryFn:Me,staleTime:X})),enabled:!!e,staleTime:X,gcTime:je}),Z=e(t(),1),Q=o();function Le({isDisabled:e,currentModel:t,onChange:n,onDefaultValuesChanged:o,wrapperClassName:s,labelClassName:c}){let[,u]=Z.useState(null),[d,f]=Z.useState(null),[p,m]=Z.useState(null),{data:h=[]}=Ne(),{data:g=[],isLoading:_,error:v}=Ie(d),y=Z.useMemo(()=>h.filter(e=>e.verified),[h]),b=Z.useMemo(()=>h.filter(e=>!e.verified),[h]),w=Z.useMemo(()=>g.filter(e=>e.verified),[g]),E=Z.useMemo(()=>g.filter(e=>!e.verified),[g]);Z.useEffect(()=>{if(t){let{provider:e,model:n}=we(t);u(t),f(e||null),m(n),o?.(e||null,n)}},[t]);let D=e=>{f(e),m(null),u(`${e}/`),n?.(e,null)},O=e=>{let t=`${d}/${e}`;d===`openai`&&(t=e),u(t),m(e),n?.(d,e)},k=()=>{f(null),u(null)},{t:A}=l(`openhands`);return(0,Q.jsxs)(`div`,{className:S(`flex flex-col md:flex-row w-full min-w-0 justify-between gap-4 md:gap-[46px]`,s),children:[(0,Q.jsxs)(`fieldset`,{className:`flex flex-col gap-2.5 w-full`,children:[(0,Q.jsx)(`label`,{className:S(`text-sm`,c),children:A(C.LLM$PROVIDER)}),(0,Q.jsxs)(a,{"data-testid":`llm-provider-input`,isRequired:!0,isVirtualized:!1,name:`llm-provider-input`,isDisabled:e,"aria-label":A(C.LLM$PROVIDER),isClearable:!1,onSelectionChange:e=>{e?.toString()&&D(e.toString())},onInputChange:e=>!e&&k(),defaultSelectedKey:d??void 0,selectedKey:d,classNames:{popoverContent:`bg-content1 rounded-xl border border-[var(--oh-border)]`,selectorButton:te},selectorButtonProps:{disableRipple:!0},inputProps:{classNames:{inputWrapper:N}},children:[(0,Q.jsx)(r,{title:A(C.MODEL_SELECTOR$VERIFIED),classNames:{heading:`text-[var(--oh-muted)]`},children:y.map(e=>(0,Q.jsx)(i,{"data-testid":`provider-item-${e.name}`,children:T(e.name)},e.name))}),b.length>0?(0,Q.jsx)(r,{title:A(C.MODEL_SELECTOR$OTHERS),classNames:{heading:`text-[var(--oh-muted)]`},children:b.map(e=>(0,Q.jsx)(i,{children:T(e.name)},e.name))}):null]})]}),d===`openhands`&&(0,Q.jsx)(W,{testId:`openhands-account-help`,text:A(C.SETTINGS$NEED_OPENHANDS_ACCOUNT),linkText:A(C.SETTINGS$CLICK_HERE),href:x.PRODUCTION,size:`settings`,linkColor:`white`}),(0,Q.jsxs)(`fieldset`,{className:`flex flex-col gap-2.5 w-full`,children:[(0,Q.jsx)(`label`,{className:S(`text-sm`,c),children:A(C.LLM$MODEL)}),(0,Q.jsxs)(a,{"data-testid":`llm-model-input`,isRequired:!0,isVirtualized:!1,isLoading:_,name:`llm-model-input`,"aria-label":A(C.LLM$MODEL),isClearable:!1,onSelectionChange:e=>{e?.toString()&&O(e.toString())},isDisabled:e||!d,selectedKey:p,defaultSelectedKey:p??void 0,classNames:{popoverContent:`bg-content1 rounded-xl border border-[var(--oh-border)]`,selectorButton:te},selectorButtonProps:{disableRipple:!0},inputProps:{classNames:{inputWrapper:N}},children:[(0,Q.jsx)(r,{title:A(C.MODEL_SELECTOR$VERIFIED),classNames:{heading:`text-[var(--oh-muted)]`},children:w.map(e=>(0,Q.jsx)(i,{children:e.name},e.name))}),E.length>0?(0,Q.jsx)(r,{title:A(C.MODEL_SELECTOR$OTHERS),classNames:{heading:`text-[var(--oh-muted)]`},children:E.map(e=>(0,Q.jsx)(i,{"data-testid":`model-item-${e.name}`,children:e.name},e.name))}):null]}),v&&(0,Q.jsx)(`p`,{"data-testid":`models-error`,className:`text-danger text-xs`,children:A(C.CONFIGURATION$ERROR_FETCH_MODELS)})]})]})}function Re(){return f({mutationFn:U.startOpenAIDeviceLogin})}function ze(){let e=c();return f({mutationFn:U.pollOpenAIDeviceLogin,onSuccess:()=>{e.invalidateQueries({queryKey:_.openaiStatus})}})}function Be(){let e=c();return f({mutationFn:U.logoutOpenAI,onSuccess:()=>{e.invalidateQueries({queryKey:_.openaiStatus})}})}function Ve({enabled:e=!0}={}){return p({queryKey:_.openaiStatus,queryFn:U.getOpenAIStatus,enabled:e,retry:!1,refetchOnWindowFocus:!1,staleTime:1e3*60*5,meta:{disableToast:!0}})}var He=5,Ue=1;function We(e){let t=e.verificationUriComplete??e.verificationUri;window.open(t,`_blank`,`noopener,noreferrer`)}function Ge({isDisabled:e=!1}){let{t}=l(`openhands`),n=Ve(),r=Re(),i=ze(),a=Be(),[o,s]=Z.useState(null),[c,u]=Z.useState(!1),[d,f]=Z.useState(!1),p=Z.useRef(null),m=Z.useCallback(()=>{p.current!==null&&(window.clearTimeout(p.current),p.current=null)},[]),g=()=>{o&&(navigator.clipboard.writeText(o.userCode),u(!0),setTimeout(()=>u(!1),2e3))},_=r.isPending||i.isPending||a.isPending,v=!!n.data?.connected,y=Z.useCallback(async e=>{try{return(await i.mutateAsync(e)).connected?(s(null),f(!1),b(t(C.SETTINGS$SUBSCRIPTION_CONNECTED_TOAST)),!0):(f(!0),!1)}catch{return h(t(C.SETTINGS$SUBSCRIPTION_CONNECT_ERROR)),!0}},[i,t]);return Z.useEffect(()=>{if(!o||v||e)return;let t=!1,n=Math.max(o.intervalSeconds??He,Ue),r=()=>{m(),p.current=window.setTimeout(async()=>{if(t)return;let e=await y(o.deviceCode);!t&&!e&&r()},n*1e3)};return r(),()=>{t=!0,m()}},[o,m,v,e,y]),(0,Q.jsxs)(`section`,{"data-testid":`openai-subscription-auth-card`,className:`flex flex-col gap-4 rounded-xl border border-[var(--oh-border)] bg-[var(--oh-surface-raised)] p-4`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsx)(G.H3,{children:t(C.SETTINGS$SUBSCRIPTION_CARD_TITLE)}),(0,Q.jsx)(G.Paragraph,{className:`text-tertiary-alt text-sm leading-5`,children:t(C.SETTINGS$SUBSCRIPTION_CARD_DESCRIPTION)})]}),(0,Q.jsx)(`div`,{className:`flex flex-col gap-1 text-sm`,"data-testid":`subscription-status`,children:n.isLoading?(0,Q.jsx)(`span`,{className:`text-tertiary-light`,children:t(C.SETTINGS$SUBSCRIPTION_STATUS_CHECKING)}):n.isError?(0,Q.jsx)(`span`,{className:`text-danger`,children:t(C.SETTINGS$SUBSCRIPTION_STATUS_UNAVAILABLE)}):v?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`text-success`,children:t(C.SETTINGS$SUBSCRIPTION_STATUS_CONNECTED)}),n.data?.accountEmail?(0,Q.jsx)(`span`,{className:`text-tertiary-light`,children:t(C.SETTINGS$SUBSCRIPTION_ACCOUNT,{account:n.data.accountEmail})}):null]}):(0,Q.jsx)(`span`,{className:`text-warning`,children:t(C.SETTINGS$SUBSCRIPTION_STATUS_DISCONNECTED)})}),o?(0,Q.jsxs)(`div`,{"data-testid":`subscription-device-challenge`,className:`flex flex-col gap-2 rounded-lg border border-[var(--oh-border-subtle)] p-3 text-sm`,children:[(0,Q.jsx)(`span`,{children:t(C.SETTINGS$SUBSCRIPTION_DEVICE_INSTRUCTIONS)}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg bg-[var(--oh-surface-deep)] px-3 py-2 font-mono text-base font-semibold text-white`,children:[(0,Q.jsx)(`span`,{"data-testid":`subscription-user-code`,className:`flex-1 select-all tracking-[0.08em]`,children:o.userCode}),(0,Q.jsx)(de,{isHidden:!1,isDisabled:!1,onClick:g,mode:c?`copied`:`copy`})]}),(0,Q.jsxs)(`a`,{href:o.verificationUriComplete??o.verificationUri,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 text-sm text-[var(--oh-accent)] underline`,children:[t(C.SETTINGS$SUBSCRIPTION_OPEN_LOGIN),(0,Q.jsx)(D,{size:14,"aria-hidden":!0})]}),d?(0,Q.jsx)(`span`,{className:`text-warning`,children:t(C.SETTINGS$SUBSCRIPTION_PENDING_TOAST)}):null]}):null,(0,Q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[v?(0,Q.jsx)(P,{testId:`subscription-disconnect`,type:`button`,variant:`tertiary`,isDisabled:e||_,onClick:async()=>{try{await a.mutateAsync(),m(),s(null),f(!1),b(t(C.SETTINGS$SUBSCRIPTION_DISCONNECTED_TOAST))}catch{h(t(C.ERROR$GENERIC))}},children:t(C.SETTINGS$SUBSCRIPTION_DISCONNECT)}):(0,Q.jsx)(P,{testId:`subscription-connect`,type:`button`,variant:`primary`,isDisabled:e||_,onClick:async()=>{try{let e=await r.mutateAsync();s(e),f(!0),We(e)}catch{h(t(C.SETTINGS$SUBSCRIPTION_CONNECT_ERROR))}},children:t(C.SETTINGS$SUBSCRIPTION_CONNECT)}),o?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(P,{testId:`subscription-poll`,type:`button`,variant:`secondary`,isDisabled:e||_,onClick:async()=>{o&&(m(),y(o.deviceCode))},children:t(C.SETTINGS$SUBSCRIPTION_FINISH_SIGN_IN)}),(0,Q.jsx)(P,{testId:`subscription-cancel`,type:`button`,variant:`tertiary`,isDisabled:e||_,onClick:()=>{m(),s(null),f(!1)},children:t(C.BUTTON$CANCEL)})]}):null]})]})}var Ke=e=>(0,Q.jsxs)(`svg`,{width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,Q.jsx)(`path`,{d:`M9.9509 15.588H10.8349L16.5125 9.91042L15.6285 9.0264L10.3991 14.2681L8.00867 11.8777L7.12465 12.7617L9.9509 15.588Z`,fill:`currentColor`}),(0,Q.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M12.8521 3.29895C14.8443 3.42346 16.712 4.41954 18.0816 5.78916C19.7002 7.53231 20.5718 9.64898 20.5718 12.1392C20.5718 14.1314 19.8247 15.999 18.5796 17.6177C17.3345 19.1118 15.5914 20.2324 13.5992 20.6059C11.607 20.9794 9.61486 20.7304 7.87171 19.7343C6.12856 18.7382 4.75895 17.2441 4.01189 15.3765C3.26482 13.5088 3.14031 11.3921 3.76286 9.52447C4.38542 7.53231 5.50601 5.91367 7.24916 4.79308C8.86779 3.67248 10.86 3.17444 12.8521 3.29895ZM13.4747 19.3608C15.0933 18.9873 16.5874 18.1157 17.708 16.7461C18.7041 15.3765 19.3267 13.7578 19.2022 12.0147C19.2022 10.0225 18.4551 8.03035 17.0855 6.66073C15.8404 5.41563 14.3463 4.66857 12.6031 4.54405C10.9845 4.41954 9.24132 4.79308 7.87171 5.78916C6.50209 6.78524 5.50601 8.15486 5.00797 9.89801C4.50993 11.5166 4.50993 13.2598 5.25699 14.8784C6.00405 16.4971 7.12465 17.7422 8.61877 18.6137C10.1129 19.4853 11.856 19.7343 13.4747 19.3608Z`,fill:`currentColor`})]});function qe({testId:e,isSet:t}){return(0,Q.jsx)(`span`,{"data-testid":e||(t?`set-indicator`:`unset-indicator`),children:(0,Q.jsx)(Ke,{className:S(t?`text-success`:`text-danger`)})})}function Je(){let e=c();return f({mutationFn:({name:e,newName:t})=>I.renameProfile(e,t),onSuccess:async(t,{name:n,newName:r})=>{y().backend.kind===`local`&&(await j.getSettings())?.title_llm_profile===n&&await j.saveSettings({title_llm_profile:r}),j.invalidateCache(),await e.invalidateQueries({queryKey:g.all}),await e.invalidateQueries({queryKey:v.personal()})},meta:{disableToast:!0}})}function Ye({profile:e,onClose:t}){let{t:n}=l(`openhands`),[r,i]=(0,Z.useState)(``),a=Je(),o=(0,Z.useRef)(null);if((0,Z.useEffect)(()=>{i(e?.name??``)},[e?.name]),!e)return null;let s=q(r,{isRequired:!0}),c=r===e.name,u=async()=>{if(!s){h(n(C.SETTINGS$PROFILE_NAME_RULE));return}if(c){t();return}try{await a.mutateAsync({name:e.name,newName:r}),b(n(C.SETTINGS$PROFILE_RENAMED,{name:r})),t()}catch(e){h(e instanceof Error?e.message:n(C.ERROR$GENERIC))}},d=()=>{a.isPending||t()},f=(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(P,{type:`button`,variant:`tertiary`,onClick:d,isDisabled:a.isPending,children:n(C.BUTTON$CANCEL)}),(0,Q.jsx)(P,{testId:`rename-profile-submit`,type:`button`,variant:`primary`,onClick:u,isDisabled:a.isPending||!s,children:a.isPending?(0,Q.jsx)(k,{size:`small`}):n(C.BUTTON$RENAME)})]});return(0,Q.jsx)(J,{isOpen:!0,title:n(C.SETTINGS$PROFILE_RENAME_TITLE),footer:f,onClose:d,initialFocusRef:o,children:(0,Q.jsx)(`div`,{"data-testid":`rename-profile-modal`,className:`flex flex-col gap-3`,children:(0,Q.jsx)(he,{ref:o,testId:`rename-profile-input`,ruleTestId:`rename-profile-rule`,value:r,onChange:i,isRequired:!0,onKeyDown:e=>{e.key===`Enter`&&!a.isPending&&s&&u()}})})})}function Xe(){let e=c();return f({mutationFn:e=>I.deleteProfile(e),onSuccess:async(t,n)=>{y().backend.kind===`local`&&(await j.getSettings())?.title_llm_profile===n&&await j.saveSettings({title_llm_profile:null}),j.invalidateCache(),await e.invalidateQueries({queryKey:g.all}),await e.invalidateQueries({queryKey:v.personal()})},meta:{disableToast:!0}})}function Ze({profile:e,onClose:t}){let{t:n}=l(`openhands`),r=Xe(),i=(0,Z.useRef)(null);if(!e)return null;let a=async()=>{try{await r.mutateAsync(e.name),b(n(C.SETTINGS$PROFILE_DELETED,{name:e.name})),t()}catch(e){h(e instanceof Error?e.message:n(C.ERROR$GENERIC))}},o=()=>{r.isPending||t()},s=(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(P,{ref:i,type:`button`,variant:`tertiary`,onClick:o,isDisabled:r.isPending,children:n(C.BUTTON$CANCEL)}),(0,Q.jsx)(P,{testId:`delete-profile-confirm`,type:`button`,variant:`danger`,onClick:a,isDisabled:r.isPending,"aria-busy":r.isPending,children:r.isPending?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(k,{size:`small`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:n(C.BUTTON$DELETE)})]}):n(C.BUTTON$DELETE)})]});return(0,Q.jsx)(J,{isOpen:!0,title:n(C.SETTINGS$PROFILE_DELETE_TITLE),footer:s,onClose:o,initialFocusRef:i,children:(0,Q.jsx)(`p`,{className:`text-sm break-all`,children:n(C.SETTINGS$PROFILE_DELETE_CONFIRMATION,{name:e.name})})})}var Qe=e(n(),1);function $e({onEdit:e,onRename:t,onDuplicate:n,onSetActive:r,onDelete:i,isActive:a,isActivating:o,onClose:s,anchorRef:c}){let{t:u}=l(`openhands`),d=(0,Z.useRef)(null),f=(0,Z.useRef)([]),p=c?.current??null,[m,h]=(0,Z.useState)();(0,Z.useLayoutEffect)(()=>{if(!p)return;let e=()=>{let e=p.getBoundingClientRect();e&&h({position:`fixed`,zIndex:9999,top:e.bottom+8,right:window.innerWidth-e.right,width:`max-content`})};return e(),window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[p]),(0,Z.useEffect)(()=>{f.current[0]?.focus()},[]),(0,Z.useEffect)(()=>{let e=e=>{let t=e.target;d.current&&!d.current.contains(t)&&s()},t=e=>{e.key===`Escape`&&s()};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[s]);let g=e=>{e(),s()},_=(0,Z.useCallback)((e,t)=>{if(e.key===`Tab`){s();return}let n=f.current.filter(Boolean).length;if(e.key===`ArrowDown`){e.preventDefault();let r=(t+1)%n;f.current[r]?.focus()}else if(e.key===`ArrowUp`){e.preventDefault();let r=(t-1+n)%n;f.current[r]?.focus()}},[s]),v=a||o,y=!!p,b=(0,Q.jsxs)(`div`,{ref:d,className:S(`absolute right-0 top-full z-10 mt-2 w-[160px] rounded-md border border-[var(--oh-border-subtle)] bg-tertiary px-1 py-1 shadow-lg`,ee,y&&`!static !top-auto !bottom-auto !left-auto !right-auto !mt-0`),role:`menu`,"aria-orientation":`vertical`,"data-testid":`profile-actions-menu`,children:[(0,Q.jsx)(K,{index:0,icon:(0,Q.jsx)(oe,{width:16,height:16}),label:u(C.SETTINGS$PROFILE_EDIT),onClick:()=>g(e),onKeyDown:_,menuItemsRef:f,testId:`profile-edit`}),(0,Q.jsx)(K,{index:1,icon:(0,Q.jsx)(Ce,{"aria-hidden":!0,className:`size-4`,strokeWidth:2}),label:u(C.BUTTON$RENAME),onClick:()=>g(t),onKeyDown:_,menuItemsRef:f,testId:`profile-rename`}),(0,Q.jsx)(K,{index:2,icon:(0,Q.jsx)(E,{"aria-hidden":!0,className:`size-4`,strokeWidth:2}),label:u(C.BUTTON$DUPLICATE),onClick:()=>g(n),onKeyDown:_,menuItemsRef:f,testId:`profile-duplicate`}),(0,Q.jsx)(K,{index:3,icon:(0,Q.jsx)(_e,{width:16,height:16}),label:u(C.SETTINGS$PROFILE_SET_DEFAULT),onClick:()=>g(r),onKeyDown:_,menuItemsRef:f,disabled:v,testId:`profile-set-active`}),(0,Q.jsx)(K,{index:4,icon:(0,Q.jsx)(re,{width:16,height:16}),label:u(C.BUTTON$DELETE),onClick:()=>g(i),onKeyDown:_,menuItemsRef:f,testId:`profile-delete`})]});return y?typeof document>`u`||!m?null:Qe.createPortal((0,Q.jsx)(`div`,{style:m,children:b}),document.body):b}function et({profile:e,isActive:t,canManage:n,onActivate:r,onEdit:i,onRename:a,onDuplicate:o,onDelete:s,isActivating:c}){let{t:u}=l(`openhands`),[d,f]=(0,Z.useState)(!1),p=(0,Z.useRef)(null);return(0,Q.jsxs)(`div`,{"data-testid":`profile-row`,className:S(ve,`justify-between gap-3`),children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:[(0,Q.jsx)(`span`,{className:`min-w-0 max-w-full truncate text-sm font-medium text-white`,title:e.name,children:e.name}),e.model?(0,Q.jsx)(`span`,{className:`min-w-0 max-w-full truncate text-sm text-[var(--oh-muted)]`,title:e.model,children:e.model}):null,t&&(0,Q.jsx)(ge,{className:`shrink-0 whitespace-nowrap px-2.5 py-1 text-xs`,"data-testid":`profile-active-badge`,children:u(C.SETTINGS$PROFILE_DEFAULT)})]}),n&&(0,Q.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,Q.jsx)(ie,{ref:p,onClick:()=>f(e=>!e),ariaLabel:u(C.SETTINGS$PROFILE_MENU),testId:`profile-menu-trigger`,className:be}),d&&(0,Q.jsx)($e,{anchorRef:p,onEdit:()=>i(e),onRename:()=>a(e),onDuplicate:()=>o(e),onSetActive:()=>r(e.name),onDelete:()=>s(e),isActive:t,isActivating:c,onClose:()=>f(!1)})]})]})}function tt({isLoading:e,loadError:t,profiles:n,active:r,canManage:i,onActivate:a,onEdit:o,onRename:s,onDuplicate:c,onDelete:u,isActivating:d}){let{t:f}=l(`openhands`);return e?(0,Q.jsx)(`div`,{className:`flex justify-center p-4`,children:(0,Q.jsx)(k,{size:`large`})}):t?(0,Q.jsx)(`div`,{"data-testid":`profiles-load-error`,className:pe,children:(0,Q.jsx)(`p`,{className:`text-sm text-red-400`,children:f(C.SETTINGS$PROFILES_LOAD_ERROR)})}):n.length===0?(0,Q.jsx)(`div`,{"data-testid":`profiles-empty`,className:pe,children:(0,Q.jsx)(`p`,{className:`text-sm text-[var(--oh-muted)]`,children:f(C.SETTINGS$PROFILES_EMPTY)})}):(0,Q.jsx)(`div`,{className:S(xe,ye),children:n.map(e=>(0,Q.jsx)(et,{profile:e,isActive:e.name===r,canManage:i,onActivate:a,onEdit:o,onRename:s,onDuplicate:c,onDelete:u,isActivating:d},e.name))})}function $(){let e=c();return f({mutationFn:({name:e,request:t})=>I.saveProfile(e,t),onSuccess:async()=>{j.invalidateCache(),await e.invalidateQueries({queryKey:g.all}),await e.invalidateQueries({queryKey:v.personal()})},meta:{disableToast:!0}})}function nt({onAddProfile:e,onEditProfile:t}){let{t:n}=l(`openhands`),{data:r,isLoading:i,error:a}=ne(),o=Y(),s=$(),c=ae(),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(null),m=r?.profiles??[],g=r?.active_profile??null;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,Q.jsx)(`h2`,{className:`text-base font-medium text-white`,children:n(C.SETTINGS$AVAILABLE_PROFILES)}),e&&c?(0,Q.jsx)(P,{testId:`add-llm-profile`,type:`button`,variant:`secondary`,className:`ml-auto`,onClick:e,children:n(C.SETTINGS$ADD_LLM_PROFILE)}):null]}),(0,Q.jsx)(tt,{isLoading:i,loadError:a??null,profiles:m,active:g,canManage:c,onActivate:async e=>{try{await o.mutateAsync(e),b(n(C.SETTINGS$PROFILE_ACTIVATED,{name:e}))}catch(e){console.error(`Failed to activate profile:`,e),h(n(C.ERROR$GENERIC))}},onEdit:e=>{t?.(e)},onRename:d,onDuplicate:async e=>{try{let t=await I.getProfile(e.name,`encrypted`),r=new Set(m.map(e=>e.name)),i=`${e.name}-copy`,a=1;for(;r.has(i);)i=`${e.name}-copy-${a}`,a+=1;await s.mutateAsync({name:i,request:{llm:t.config,include_secrets:!0}}),b(n(C.SETTINGS$PROFILE_DUPLICATED,{name:i}))}catch(e){console.error(`Failed to duplicate profile:`,e),h(n(C.ERROR$GENERIC))}},onDelete:p,isActivating:o.isPending})]}),(0,Q.jsx)(Ye,{profile:u,onClose:()=>d(null)}),(0,Q.jsx)(Ze,{profile:f,onClose:()=>p(null)})]})}function rt({activeProfileName:e,originalName:t,savedName:n}){return e?t?e===t:e===n:!1}function it(){let{t:e}=l(`openhands`),{setHideSectionHeader:t}=Se(),n=$(),r=Y(),{data:i}=ne(),{data:a}=M(),{data:o}=se(a?.agent_settings_schema),s=(0,Z.useRef)(o);s.current=o;let[c,u]=(0,Z.useState)(`list`),[d,f]=(0,Z.useState)(``),[p,m]=(0,Z.useState)(null),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>(t(c!==`list`),()=>t(!1)),[c,t]);let x=(0,Z.useMemo)(()=>new Set(i?.profiles.map(e=>e.name)??[]),[i]),S=(0,Z.useMemo)(()=>!(!q(d,{isRequired:!0})||c===`create`&&x.has(d)||c===`edit`&&d!==p?.profile.name&&x.has(d)),[d,c,x,p?.profile.name]),T=(0,Z.useCallback)(()=>{f(``),m(null),u(`create`)},[]),E=(0,Z.useCallback)(async t=>{try{let e=(await I.getProfile(t.name,`encrypted`)).config??{},n=s.current?.sections.find(e=>e.key===`llm`)?.fields??[],r={};for(let t of n){let n=t.key.startsWith(`llm.`)?t.key.slice(4):t.key;r[t.key]=le(t,e[n])}n.length===0&&(r[`llm.model`]=e.model??``,r[`llm.api_key`]=e.api_key??``,r[`llm.base_url`]=e.base_url??``,r[z]=B(e.auth_type),r[L]=e.subscription_vendor??`openai`),m({profile:t,initialValues:r,baseConfig:e}),f(t.name),u(`edit`)}catch(t){console.error(`Failed to fetch profile details:`,t),h(e(C.ERROR$GENERIC))}},[e]),D=(0,Z.useCallback)(()=>{u(`list`),m(null),f(``),_(null)},[]),O=(0,Z.useCallback)(e=>{if(_(e),c===`create`&&!d){let t=e.values[`llm.model`];if(typeof t==`string`&&t){let e=me(t);x.has(e)||f(e)}}},[c,d,x]),k=(0,Z.useCallback)(async()=>{if(!g||!S)return;let t;try{t=g.getDirtyPayload().llm??{}}catch(t){h(t instanceof Error?t.message:e(C.ERROR$GENERIC));return}let a=c===`edit`&&p?.baseConfig?{...p.baseConfig}:{},o=g.view===`basic`&&Object.prototype.hasOwnProperty.call(t,`model`)&&t.model!==a.model,s={...a,...t};if(B(s.auth_type)===`subscription`)s.auth_type=V,s.subscription_vendor=R,delete s.api_key,delete s.base_url;else if(s.auth_type=H,s.subscription_vendor=null,o&&delete s.base_url,typeof s.api_key!=`string`||s.api_key.trim()===``){let e=typeof a.api_key==`string`?a.api_key:``;e?s.api_key=e:delete s.api_key}if(!(typeof s.model==`string`&&s.model)){h(e(C.SETTINGS$MODEL_REQUIRED));return}let l=d.trim(),u=p?.profile.name,f=c===`edit`&&u&&u!==l,m=rt({activeProfileName:i?.active_profile,originalName:u,savedName:l});y(!0);try{f&&await I.renameProfile(u,l),await n.mutateAsync({name:l,request:{llm:s,include_secrets:!0}}),m&&await r.mutateAsync(l),b(e(c===`create`?C.SETTINGS$PROFILE_CREATED:C.SETTINGS$PROFILE_UPDATED,{name:l})),D()}catch(t){console.error(`Failed to save profile:`,t),h(e(C.ERROR$GENERIC))}finally{y(!1)}},[g,S,d,c,p,i?.active_profile,n,r,e,D]);if(c===`list`)return(0,Q.jsx)(nt,{onAddProfile:T,onEditProfile:E});let A=e(c===`edit`?C.SETTINGS$EDIT_LLM_PROFILE:C.SETTINGS$ADD_LLM_PROFILE),j=c===`edit`&&p?e(C.SETTINGS$PROFILE_LOADED,{name:p.profile.name}):e(C.SETTINGS$PROFILE_SAVE_HINT);return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsx)(w,{testId:`back-to-profiles`,onClick:D,children:e(C.BUTTON$BACK)}),(0,Q.jsx)(G.H2,{testId:`profile-editor-title`,children:A}),(0,Q.jsx)(`p`,{"data-testid":`profile-editor-description`,className:`text-sm leading-5 text-tertiary-light`,children:j})]}),(0,Q.jsx)(he,{testId:`profile-name-input`,value:d,onChange:f,isRequired:!0}),(0,Q.jsx)(pt,{embedded:!0,hideSaveButton:!0,initialValueOverrides:c===`edit`&&p?.initialValues?p.initialValues:{"llm.model":``,"llm.api_key":``,"llm.base_url":``,[z]:H,[L]:R},onSaveControlChange:O},c===`edit`?`edit-${p?.profile.name}`:`new-profile`),(0,Q.jsxs)(`div`,{className:`flex justify-start gap-3 pt-4`,children:[(0,Q.jsx)(P,{testId:`cancel-profile-btn`,type:`button`,variant:`secondary`,onClick:D,children:e(C.BUTTON$CANCEL)}),(0,Q.jsx)(P,{testId:`save-profile-btn`,type:`button`,variant:`primary`,onClick:k,isDisabled:!S||v||!g,"aria-busy":v,children:e(v?C.STATUS$SAVING:C.BUTTON$SAVE)})]})]})}function at({enabled:e=!0}={}){return p({queryKey:_.openaiModels,queryFn:U.getOpenAIModels,enabled:e,retry:!1,refetchOnWindowFocus:!1,staleTime:1e3*60*5,meta:{disableToast:!0}})}var ot=new Set([`llm.model`,`llm.api_key`,`llm.base_url`,z,L]),st=(e,t)=>!e||!t?null:`${e}/${t}`,ct=(e,t)=>e?.sections.flatMap(e=>e.fields).find(e=>e.key===t)?.default??null,lt={openai:new Set([`https://api.openai.com`,`https://api.openai.com/v1`]),moonshot:new Set([`https://api.kimi.com/coding/v1`])},ut=e=>{try{let t=new URL(e),n=t.pathname.replace(/\/+$/,``)||``;return`${t.origin}${n}`}catch{return e.trim().replace(/\/+$/,``)}},dt=(e,t)=>{let n=ut(t),{provider:r}=we(e);if(r){let e=lt[r];if(e)return e.has(n)}return Object.values(lt).some(e=>e?.has(n))};function ft({testId:e}){let{t}=l(`openhands`);return(0,Q.jsx)(W,{testId:e,text:t(C.SETTINGS$OPENHANDS_API_KEY_HELP_TEXT),linkText:t(C.SETTINGS$NAV_API_KEYS),href:`https://app.all-hands.dev/settings/api-keys`,suffix:` ${t(C.SETTINGS$OPENHANDS_API_KEY_HELP_SUFFIX)}`})}function pt({scope:e=`personal`,onSaveSuccess:t,initialValueOverrides:n,embedded:r,hideSaveButton:i,suppressSuccessToast:a,onSaveControlChange:o}){let{t:s}=l(`openhands`),{data:c}=M(e),{data:u}=se(c?.agent_settings_schema),d=c?.agent_settings?.llm,f=B(n?.[`llm.auth_type`]??d?.auth_type),[p,m]=Z.useState(f===V),{data:h,isLoading:g,isFetching:_}=at({enabled:p}),v=p&&!h&&(g||_),y=Z.useRef(null),b=Z.useRef(null);Z.useEffect(()=>{f===`subscription`&&m(!0)},[f]);let x=String(A.agent_settings?.llm?.model??``),S=Z.useCallback((e,t)=>{let n=ce(e,t);if(n!==`basic`)return n;let r=e.llm_model??``,i=e.llm_base_url?.trim()??``;return i.length>0&&!dt(r,i)?`all`:`basic`},[]),w=Z.useCallback(({values:e,isDisabled:t,view:n,onChange:i})=>{let a=typeof e[`llm.model`]==`string`?e[`llm.model`]:``,o=typeof e[`llm.base_url`]==`string`?e[`llm.base_url`]:``,l=a.startsWith(`openhands/`),u=B(e[z]),d=u===V,f=t||d&&v,p=h?.includes(a)?a:h?.[0]??``,g=typeof e[`llm.api_key`]==`string`?e[`llm.api_key`]:``,_=r?g.length>0:!!c?.llm_api_key_set,S=(e,n)=>(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(F,{testId:e,label:s(C.SETTINGS_FORM$API_KEY),type:`password`,className:`w-full`,value:g,placeholder:_?`<hidden>`:``,onChange:e=>i(`llm.api_key`,e),isDisabled:t,startContent:_?(0,Q.jsx)(qe,{isSet:_}):void 0}),(0,Q.jsx)(W,{testId:n,text:s(C.SETTINGS$DONT_KNOW_API_KEY),linkText:s(C.SETTINGS$CLICK_FOR_INSTRUCTIONS),href:`https://docs.openhands.dev/usage/local-setup#getting-an-api-key`})]}),w=e=>{let t=e===`subscription`?V:H;if(i(z,t),t===`subscription`){m(!0),a&&!h?.includes(a)&&(y.current=a);let e=b.current&&h?.includes(b.current)?b.current:h?.[0];i(L,R),!h?.includes(a)&&e&&i(`llm.model`,e);return}a&&h?.includes(a)&&(b.current=a,i(`llm.model`,y.current??x))},T=()=>(0,Q.jsx)(ue,{testId:`llm-auth-type-input`,name:z,label:s(C.SETTINGS$LLM_AUTH_TYPE),items:[{key:H,label:s(C.SETTINGS$LLM_AUTH_TYPE_API_KEY)},{key:V,label:s(C.SETTINGS$LLM_AUTH_TYPE_SUBSCRIPTION)}],selectedKey:u,isClearable:!1,required:!0,isDisabled:f,onSelectionChange:w}),E=()=>(0,Q.jsxs)(`div`,{className:`flex flex-col gap-6`,"data-testid":`llm-subscription-settings`,children:[(0,Q.jsx)(ue,{testId:`llm-subscription-model-input`,name:`llm.subscription_model`,label:s(C.SETTINGS$SUBSCRIPTION_MODEL),items:(h??[]).map(e=>({key:e,label:e})),selectedKey:p,isClearable:!1,required:!0,isDisabled:f||!h?.length,onSelectionChange:e=>{let t=typeof e==`string`?e:h?.[0];t&&i(`llm.model`,t)}}),(0,Q.jsx)(Ge,{isDisabled:t})]});return(0,Q.jsx)(`div`,{className:`flex flex-col gap-6`,children:n===`basic`?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-6`,"data-testid":`llm-settings-form-basic`,children:[T(),d?E():(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Le,{currentModel:a||void 0,onChange:(e,t)=>{let n=st(e,t);n&&i(`llm.model`,n)},wrapperClassName:`!flex-col !gap-6`,isDisabled:t}),l?(0,Q.jsx)(ft,{testId:`openhands-api-key-help`}):null,S(`llm-api-key-input`,`llm-api-key-help-anchor`)]})]}):(0,Q.jsxs)(`div`,{className:`flex flex-col gap-6`,"data-testid":`llm-settings-form-advanced`,children:[T(),d?E():(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(F,{testId:`llm-custom-model-input`,label:s(C.SETTINGS$CUSTOM_MODEL),type:`text`,className:`w-full`,value:a,placeholder:x,onChange:e=>i(`llm.model`,e),isDisabled:t}),l?(0,Q.jsx)(ft,{testId:`openhands-api-key-help-2`}):null,(0,Q.jsx)(F,{testId:`base-url-input`,label:s(C.SETTINGS$BASE_URL),type:`text`,className:`w-full`,value:o,placeholder:`https://api.openai.com`,onChange:e=>i(`llm.base_url`,e),isDisabled:t}),S(`llm-api-key-input`,`llm-api-key-help-anchor-advanced`)]})]})})},[x,r,v,c?.llm_api_key_set,h,s]),T=Z.useCallback((e,t)=>{let n=structuredClone(e.agent_settings_diff??{}),r=n.llm??{};if(B(t.values[`llm.auth_type`])===`subscription`){r.auth_type=V,r.subscription_vendor=R;let e=typeof r.model==`string`?r.model:String(t.values[`llm.model`]??``),n=h?.[0];if(!h?.includes(e)&&!n)throw Error(`Subscription models are not loaded yet.`);r.model=h?.includes(e)?e:n,delete r.api_key,delete r.base_url}else t.dirty[`llm.auth_type`]&&(r.auth_type=H,r.subscription_vendor=null),t.view===`basic`&&r.model!==void 0&&(r.base_url=ct(u,`llm.base_url`));return n.llm=r,{agent_settings_diff:n}},[u,h]);return(0,Q.jsx)(fe,{scope:e,settingsSources:[{settingsSource:`agent_settings`,sectionKeys:[`llm`],excludeKeys:ot}],header:w,buildPayload:T,getInitialView:S,forceShowAdvancedView:!0,allowAllView:!0,onSaveSuccess:t,initialValueOverrides:n,embedded:r,hideSaveButton:i,suppressSuccessToast:a,onSaveControlChange:o,testId:`llm-settings-screen`})}var mt=s(function(){return(0,Q.jsx)(it,{})});export{Y as a,Le as i,mt as n,$ as r,pt as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./llm-settings-BJotLQND.js";export{e as default};
|