@openhands/agent-canvas 1.11.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/README.windows.md +2 -2
- package/build/assets/{acp-providers-BkL3HWa3.js → acp-providers-D1PORKc0.js} +1 -1
- package/build/assets/active-backend-context-IqOjobNK.js +2 -0
- package/build/assets/{agent-context-settings-Bno1nwPL.js → agent-context-settings-DMrObcIS.js} +1 -1
- package/build/assets/agent-profiles-settings-DororXN5.js +1 -0
- package/build/assets/agent-server-conversation-service.api-DWBe0rbX.js +86 -0
- package/build/assets/{agent-settings-h8hQz-IU.js → agent-settings-BJVk92PU.js} +1 -1
- package/build/assets/agent-settings-COfJsQ1d.js +1 -0
- package/build/assets/{alert-banner-lrK-2_0Y.js → alert-banner-CzZsm7ms.js} +1 -1
- package/build/assets/{api-key-entry-screen-Qsb83VX1.js → api-key-entry-screen-D8Fade_-.js} +1 -1
- package/build/assets/app-settings-CpyGB3AT.js +1 -0
- package/build/assets/{automation-detail-7LkL91j9.js → automation-detail-B-jQ39Mm.js} +1 -1
- package/build/assets/{automation-export-U2QNyNy6.js → automation-export-B1dywoqk.js} +1 -1
- package/build/assets/{automation-setup-route-Bel9_Lue.js → automation-setup-route-C-bWUZBi.js} +1 -1
- package/build/assets/{automation-templates-CRLDssaI.js → automation-templates-DgpCGOJV.js} +1 -1
- package/build/assets/{automations-list-B2iV3ZKW.js → automations-list-DnMxlxsL.js} +1 -1
- package/build/assets/{back-nav-button-B3pYwmUJ.js → back-nav-button-HHEneWMw.js} +1 -1
- package/build/assets/backend-form-modal-DiVrD4Cm.js +1 -0
- package/build/assets/{backend-synced-settings-badge-DB4717Iu.js → backend-synced-settings-badge-7MIjpr8M.js} +1 -1
- package/build/assets/{badge-yR53enbU.js → badge-CpYmcVZV.js} +1 -1
- package/build/assets/{base-modal-3NmIOKDm.js → base-modal-Fnh6Uln9.js} +1 -1
- package/build/assets/bot-BQZx8e2i.js +1 -0
- package/build/assets/{brand-button-CJcwjnfb.js → brand-button-swT1RyO0.js} +1 -1
- package/build/assets/browser-B9AbV6kG.js +7 -0
- package/build/assets/{browser-tab-A94o33Vn.js → browser-tab-zAY12m_i.js} +1 -1
- package/build/assets/{chat-send-button-B8n6-DQA.js → chat-send-button-DsJtivmL.js} +1 -1
- package/build/assets/check-WAFXrrs_.js +1 -0
- package/build/assets/chevron-down-CifNWzme.js +1 -0
- package/build/assets/circle-check-CtnimJa8.js +1 -0
- package/build/assets/{circle-plus-check-toggle-BVzv5EkZ.js → circle-plus-check-toggle-Cuzx55bo.js} +1 -1
- package/build/assets/{cloud-funnel-analytics-CBQdPZl_.js → cloud-funnel-analytics-86CwNdSh.js} +1 -1
- package/build/assets/{combobox-caret-BlmRwiM8.js → combobox-caret-D0fRotFi.js} +1 -1
- package/build/assets/{command-menu-PsRXVBz2.js → command-menu-BXy03FBl.js} +1 -1
- package/build/assets/{condenser-settings-w7L3EFvm.js → condenser-settings-BmZa0ui_.js} +1 -1
- package/build/assets/{confirmation-modal-DAH0XtOp.js → confirmation-modal-BgoN6lbN.js} +1 -1
- package/build/assets/{context-menu-list-item-BQhmFVEK.js → context-menu-list-item-Bq02tc-P.js} +1 -1
- package/build/assets/conversation-BPo8SvLN.js +1 -0
- package/build/assets/conversation-CPCVsCUY.js +90 -0
- package/build/assets/conversation-panel-BPo8SvLN.js +1 -0
- package/build/assets/{conversation-state-store-Bs8gA263.js → conversation-state-store-C5YpjMNy.js} +1 -1
- package/build/assets/conversation-store-Blc5xysY.js +6 -0
- package/build/assets/{conversation-tab-empty-state-C9sfDOlt.js → conversation-tab-empty-state-CMqo_0Bd.js} +1 -1
- package/build/assets/{copy-to-clipboard-button-DatoElj8.js → copy-to-clipboard-button-Cg1pF0xn.js} +1 -1
- package/build/assets/{device-verify-BIjXeW9N.js → device-verify-BfQLgNyq.js} +1 -1
- package/build/assets/{dropdown-classes-zFW7qPSK.js → dropdown-classes-BIqQr5mx.js} +1 -1
- package/build/assets/{entry.client-DzbDyLkV.js → entry.client-CxFjRYqH.js} +2 -2
- package/build/assets/{enum-filter-dropdown-CctILg5t.js → enum-filter-dropdown-C_yV4_bo.js} +1 -1
- package/build/assets/{environment-switch-overlay-Cvmo6clk.js → environment-switch-overlay-Bi4qbh2g.js} +1 -1
- package/build/assets/{extensions-hub-DOmHPGTA.js → extensions-hub-BqUINAhp.js} +1 -1
- package/build/assets/{extensions-navigation-6zU5M1pa.js → extensions-navigation-lraj88Wk.js} +1 -1
- package/build/assets/external-link-CgtpA_a1.js +1 -0
- package/build/assets/{file-text-RecuaId_.js → file-text-DEK4LSVw.js} +1 -1
- package/build/assets/files-tab-DV0L-lFE.js +1 -0
- package/build/assets/{form-control-classes-DLN3Qgub.js → form-control-classes-7yFSQJq_.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-DSErAuVr.js} +1 -1
- package/build/assets/git-provider-icon-BvlLAche.js +1 -0
- package/build/assets/{git-repo-dropdown-B7RvO70z.js → git-repo-dropdown-ByMzpNko.js} +1 -1
- package/build/assets/git-repo-dropdown-C6R7hgM8.js +1 -0
- package/build/assets/{highlighted-source-view-CgJfD5VT.js → highlighted-source-view-C_sfncLZ.js} +1 -1
- package/build/assets/{home-DEZaZqYv.js → home-BOrlwLqG.js} +1 -1
- package/build/assets/home-BvMNC6E-.js +1 -0
- package/build/assets/{home-store-D7CjMN_-.js → home-store-CxqsY9Fi.js} +1 -1
- package/build/assets/index-home-BvMNC6E-.js +1 -0
- package/build/assets/info-BRVcJAUg.js +1 -0
- package/build/assets/{install-server-modal-BTwK5lbi.js → install-server-modal-Bl4G1zF4.js} +1 -1
- package/build/assets/{kebab-menu-item-content-C4CkeiJO.js → kebab-menu-item-content-BGoGFEAg.js} +1 -1
- package/build/assets/{launch-DVlx4v9o.js → launch-CkqiSCqi.js} +1 -1
- package/build/assets/{list-todo-CheUtB7F.js → list-todo-DNWlzfaM.js} +1 -1
- package/build/assets/llm-not-configured-banner-DLw_tu-G.js +27 -0
- package/build/assets/llm-settings-B-pkVCrt.js +1 -0
- package/build/assets/llm-settings-DSC0-IQ7.js +1 -0
- package/build/assets/llm-subscription-service-BAdOl5Xx.js +1 -0
- package/build/assets/loader-circle-B47W9XqT.js +1 -0
- package/build/assets/{loading-spinner-CN3riY7k.js → loading-spinner-xhnrGP4Y.js} +1 -1
- package/build/assets/{manage-backends-modal-HNWKLYhq.js → manage-backends-modal-DhGk5mJt.js} +1 -1
- package/build/assets/manifest-653b89aa.js +1 -0
- package/build/assets/{manifest-subpage-layout-D-m-h8_t.js → manifest-subpage-layout-CKWvL2ig.js} +1 -1
- package/build/assets/{map-provider-7Bp2aih5.js → map-provider-Mx8mZuE-.js} +1 -1
- package/build/assets/markdown-renderer-DUmk7pFc.js +8 -0
- package/build/assets/{mcp-gLgPP7AS.js → mcp-DCkvl6K0.js} +2 -2
- package/build/assets/mcp-marketplace-utils-DEbMXlQr.js +1 -0
- package/build/assets/messages-DSXvyc21.js +40 -0
- package/build/assets/{modal-body-duRaxj_K.js → modal-body-gIe21fDv.js} +1 -1
- package/build/assets/{modal-classes-CLEXO6dj.js → modal-classes-D66dlgZ7.js} +1 -1
- package/build/assets/{modal-close-button-D0aT02hs.js → modal-close-button-B6iOGYpI.js} +1 -1
- package/build/assets/{mouse-pointer-click-Px-dXWcS.js → mouse-pointer-click-BYX1Pw5W.js} +1 -1
- package/build/assets/{npm-DRzJF5Zn.js → npm-DLckoeJc.js} +1 -1
- package/build/assets/{onboarding-DSr8hOpk.js → onboarding-D7WDG66N.js} +1 -1
- package/build/assets/{onboarding-modal-C6Euf7N4.js → onboarding-modal-C_xVrFNv.js} +1 -1
- package/build/assets/{organization-service.api-C4GYWwj9.js → organization-service.api-D-s9z18a.js} +1 -1
- package/build/assets/pencil-BGOCPRyu.js +1 -0
- package/build/assets/{planner-tab-CZcguxTK.js → planner-tab-AKaXIIfg.js} +1 -1
- package/build/assets/{plugins-management-service-BmDzOQsd.js → plugins-management-service-wtmY4QQw.js} +1 -1
- package/build/assets/plus-zNEL8rcX.js +1 -0
- package/build/assets/{profiles-service.api-CoLTwjc1.js → profiles-service.api-DCMYxHMi.js} +1 -1
- package/build/assets/{providers-tBzTpz1w.js → providers-BjrtjX4L.js} +1 -1
- package/build/assets/{proxy-DCI9S-LA.js → proxy-9Z_WZggZ.js} +1 -1
- package/build/assets/{puzzle-B3v361yY.js → puzzle-BWLmN8z4.js} +1 -1
- package/build/assets/recommended-automations-launcher-CFlzhu1o.js +1 -0
- package/build/assets/refresh-cw-CXtFWpwv.js +1 -0
- package/build/assets/root-CanxKlNV.css +1 -0
- package/build/assets/root-DkfG_UWR.js +2 -0
- package/build/assets/root-layout-D75LHYhh.js +2 -0
- package/build/assets/{schema-field-zhsVDllR.js → schema-field-OnM5Uob_.js} +1 -1
- package/build/assets/{sdk-section-page-CS4GWn0y.js → sdk-section-page-m5WQm2sy.js} +1 -1
- package/build/assets/search-CycosyjN.js +1 -0
- package/build/assets/{secrets-service-DjgGduXk.js → secrets-service-B26R61C1.js} +1 -1
- package/build/assets/{secrets-settings-f-qahfbi.js → secrets-settings-CbLYCKOX.js} +1 -1
- package/build/assets/{segmented-toggle-SmvsR3jW.js → segmented-toggle-DCspm2U5.js} +1 -1
- package/build/assets/{settings-DQd0xLEw.js → settings-BJQI_iBM.js} +1 -1
- package/build/assets/{settings-dropdown-input-TWIeiG02.js → settings-dropdown-input-BI8V_Nov.js} +1 -1
- package/build/assets/{settings-index-BVwy9JEp.js → settings-index-BiTqJoH7.js} +1 -1
- package/build/assets/{settings-input-D61Vzp9e.js → settings-input-Cz62hWVW.js} +1 -1
- package/build/assets/{settings-list-classes-sE0ASr1s.js → settings-list-classes-z_3FW5H3.js} +1 -1
- package/build/assets/{settings-modal-D6D5ngET.js → settings-modal-BIrIVn97.js} +1 -1
- package/build/assets/{settings-service.api-DZp7E7A9.js → settings-service.api--rJmnuLa.js} +1 -1
- package/build/assets/{settings-switch-Drt-rF5s.js → settings-switch-BRsSI8Vs.js} +1 -1
- package/build/assets/{settings-utils-gw2ppAvw.js → settings-utils-Ba7vel6T.js} +1 -1
- package/build/assets/shared-conversation-CQK_PqHx.js +1 -0
- package/build/assets/shield-check-T3JsDJiM.js +1 -0
- package/build/assets/{sidebar-layout-Dxg6zc2K.js → sidebar-layout-Bhi3hVcu.js} +1 -1
- package/build/assets/{sidebar-mobile-menu-toggle-OoZBHxaT.js → sidebar-mobile-menu-toggle-YWJNRN4p.js} +1 -1
- package/build/assets/{sidebar-nav-link-CxLoG-dG.js → sidebar-nav-link-BSUlY5Ml.js} +1 -1
- package/build/assets/{sidebar-store-BJeYY-E9.js → sidebar-store-Cl1cUv_F.js} +1 -1
- package/build/assets/{skill-card-pill-row-B_BYBONu.js → skill-card-pill-row-BXz8L8Rn.js} +1 -1
- package/build/assets/{skill-icon-badge-CN41Hy9l.js → skill-icon-badge-QgfKv31M.js} +1 -1
- package/build/assets/{skill-scope-B1Per5XI.js → skill-scope-Dc3JPW-8.js} +1 -1
- package/build/assets/{skills-plugins-B3AO6sMz.js → skills-plugins-CpTV27n3.js} +1 -1
- package/build/assets/{skills-settings-DmmgJ6CT.js → skills-settings-CSW__IW4.js} +1 -1
- package/build/assets/{sparkles-g7y3r-Ut.js → sparkles-TJ0mdECe.js} +1 -1
- package/build/assets/{styled-tooltip-C5C07RQC.js → styled-tooltip-BUMSbgrF.js} +1 -1
- package/build/assets/{task-list-tab-C19Q_JNf.js → task-list-tab-mAHMOkUz.js} +1 -1
- package/build/assets/{terminal-CbuMRYal.js → terminal-BzxBaHx2.js} +1 -1
- package/build/assets/{toggle-switch-CIioisto.js → toggle-switch-O5v1FgxW.js} +1 -1
- package/build/assets/trash-2-C0xNVp9c.js +1 -0
- package/build/assets/{typography-D9tiHct7.js → typography-NOKSk9_R.js} +1 -1
- package/build/assets/usage-tab-tEmVN0KD.js +1 -0
- package/build/assets/{use-acp-credential-form-DJmmJKMo.js → use-acp-credential-form-BPNi0Zbm.js} +1 -1
- package/build/assets/{use-activate-agent-profile-CeFfYwu_.js → use-activate-agent-profile-D9YRQPTF.js} +1 -1
- package/build/assets/{use-agent-profiles-BHLkLbRR.js → use-agent-profiles-Cb2zUW3l.js} +1 -1
- package/build/assets/{use-can-manage-org-profiles-Bu4y8gSx.js → use-can-manage-org-profiles-Dxzq2AEd.js} +1 -1
- package/build/assets/{use-cloud-current-user-id-QD9x3ySO.js → use-cloud-current-user-id-Co2eJk2A.js} +1 -1
- package/build/assets/{use-config-CPwqciXN.js → use-config-DKAMiI5R.js} +1 -1
- package/build/assets/use-create-conversation-CoHTiCbI.js +1 -0
- package/build/assets/{use-create-secret-BsOfOLvg.js → use-create-secret-2zBlCDsF.js} +1 -1
- package/build/assets/use-is-authed-C52-ivnB.js +1 -0
- package/build/assets/{use-is-creating-conversation-CVefC9Ns.js → use-is-creating-conversation-DdaAE6jV.js} +1 -1
- package/build/assets/{use-launch-skill-in-chat-BcKNjxxd.js → use-launch-skill-in-chat-COnDpxCQ.js} +1 -1
- package/build/assets/use-llm-profiles-C_BHue65.js +1 -0
- package/build/assets/{use-manifest-capabilities-DBYPjyV6.js → use-manifest-capabilities-DPrQsaPP.js} +1 -1
- package/build/assets/{use-onboarding-completion-CtNJxkXG.js → use-onboarding-completion-CCE8OQgV.js} +1 -1
- package/build/assets/{use-plugins-marketplace-ZEA-gyM9.js → use-plugins-marketplace-CEiak69h.js} +1 -1
- package/build/assets/use-save-agent-profile-DK9idD6a.js +1 -0
- package/build/assets/{use-save-settings-pSjRhD_m.js → use-save-settings-DNmnbG6f.js} +1 -1
- package/build/assets/{use-settings-nav-items-CQgkxUbV.js → use-settings-nav-items-BlFL7YhM.js} +1 -1
- package/build/assets/{use-settings-BHWsOcIG.js → use-settings-wCwPaSIv.js} +1 -1
- package/build/assets/{use-tracking-CGCsBWhg.js → use-tracking-CVwPmhlX.js} +1 -1
- package/build/assets/{use-user-conversation-DRfEU8x0.js → use-user-conversation-DVtfg0B_.js} +1 -1
- package/build/assets/{useInfiniteQuery-DbCv0Jzd.js → useInfiniteQuery-p1xq35r2.js} +1 -1
- package/build/assets/{useMutation-ChpkYxI5.js → useMutation-BFDQmgk9.js} +1 -1
- package/build/assets/{useQueries-Cjv3E8_1.js → useQueries-DF1NAAeC.js} +1 -1
- package/build/assets/{useQuery-BCnzy4LX.js → useQuery-DRv--6bK.js} +1 -1
- package/build/assets/utils-zxEjKE70.js +1 -0
- package/build/assets/{vendor~browser-DJ1pl_wn.js → vendor~browser-B-fae1JU.js} +14 -14
- package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-oGvLV0dO.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js} +3 -3
- package/build/assets/{vendor~files-tab-C87pjSpi.js → vendor~files-tab-D9wR9yM2.js} +1 -1
- package/build/assets/vendor~index-home~home~conversation-panel~conversation-Ipoe6hvY.js +13 -0
- package/build/assets/vendor~root-layout-C-IgVx6e.js +1 -0
- package/build/assets/{vendor~root-layout~conversation-panel~conversation-DEzjR4K7.js → vendor~root-layout~conversation-panel~conversation-Dhd_I4H4.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-U-xdsAEx.js → vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-Cc0f9kPP.js} +1 -1
- package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-CQR5Sa0H.js → vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-d7svw-BB.js} +1 -1
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-Cwhh3zLe.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-D5DWZVc7.js} +1 -1
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-CuQhkiS7.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-4WsUP-tz.js} +2 -2
- package/build/assets/{verification-settings-BItwt998.js → verification-settings-B8UMQ7MG.js} +1 -1
- package/build/assets/{wrench-B1_H-tL1.js → wrench-DIka3hCq.js} +1 -1
- package/build/assets/x-BWKA2Ver.js +1 -0
- package/build/assets/zap-DHddTPc0.js +1 -0
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +28 -1
- package/build/locales/ca/openhands.json +28 -1
- package/build/locales/de/openhands.json +28 -1
- package/build/locales/en/openhands.json +28 -1
- package/build/locales/es/openhands.json +28 -1
- package/build/locales/fr/openhands.json +28 -1
- package/build/locales/it/openhands.json +28 -1
- package/build/locales/ja/openhands.json +28 -1
- package/build/locales/ko-KR/openhands.json +28 -1
- package/build/locales/no/openhands.json +28 -1
- package/build/locales/pt/openhands.json +28 -1
- package/build/locales/tr/openhands.json +28 -1
- package/build/locales/uk/openhands.json +28 -1
- package/build/locales/zh-CN/openhands.json +28 -1
- package/build/locales/zh-TW/openhands.json +28 -1
- package/config/defaults.json +3 -3
- package/dist/api/agent-server-compatibility.cjs +1 -1
- package/dist/api/agent-server-compatibility.cjs.map +1 -1
- package/dist/api/agent-server-compatibility.js +1 -1
- package/dist/api/agent-server-compatibility.js.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.d.ts +24 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +116 -97
- package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
- package/dist/api/llm-balance-service.cjs +2 -0
- package/dist/api/llm-balance-service.cjs.map +1 -0
- package/dist/api/llm-balance-service.d.ts +33 -0
- package/dist/api/llm-balance-service.js +53 -0
- package/dist/api/llm-balance-service.js.map +1 -0
- package/dist/api/llm-subscription-service.cjs +1 -1
- package/dist/api/llm-subscription-service.cjs.map +1 -1
- package/dist/api/llm-subscription-service.js +42 -34
- package/dist/api/llm-subscription-service.js.map +1 -1
- package/dist/components/conversation/index.cjs +1 -1
- package/dist/components/conversation/index.d.ts +0 -1
- package/dist/components/conversation/index.js +0 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.cjs +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.js +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.js +24 -23
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.js.map +1 -1
- package/dist/components/conversation-events/chat/group-events.cjs +1 -1
- package/dist/components/conversation-events/chat/group-events.cjs.map +1 -1
- package/dist/components/conversation-events/chat/group-events.d.ts +3 -3
- package/dist/components/conversation-events/chat/group-events.js +27 -26
- package/dist/components/conversation-events/chat/group-events.js.map +1 -1
- package/dist/components/features/automations/recommended-automations-section.d.ts +7 -0
- package/dist/components/features/chat/components/chat-input-actions.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-actions.cjs.map +1 -1
- package/dist/components/features/chat/components/chat-input-actions.js +123 -118
- package/dist/components/features/chat/components/chat-input-actions.js.map +1 -1
- package/dist/components/features/chat/components/chat-input-grip.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-grip.cjs.map +1 -1
- package/dist/components/features/chat/components/chat-input-grip.d.ts +2 -1
- package/dist/components/features/chat/components/chat-input-grip.js +7 -7
- package/dist/components/features/chat/components/chat-input-grip.js.map +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/components/context-window-meter.cjs +2 -0
- package/dist/components/features/chat/components/context-window-meter.cjs.map +1 -0
- package/dist/components/features/chat/components/context-window-meter.d.ts +2 -0
- package/dist/components/features/chat/components/context-window-meter.js +131 -0
- package/dist/components/features/chat/components/context-window-meter.js.map +1 -0
- package/dist/components/features/chat/components/context-window-ring.cjs +2 -0
- package/dist/components/features/chat/components/context-window-ring.cjs.map +1 -0
- package/dist/components/features/chat/components/context-window-ring.d.ts +26 -0
- package/dist/components/features/chat/components/context-window-ring.js +45 -0
- package/dist/components/features/chat/components/context-window-ring.js.map +1 -0
- package/dist/components/features/chat/custom-chat-input.cjs +1 -1
- package/dist/components/features/chat/custom-chat-input.cjs.map +1 -1
- package/dist/components/features/chat/custom-chat-input.js +68 -67
- package/dist/components/features/chat/custom-chat-input.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/chat/path-component.cjs +1 -1
- package/dist/components/features/chat/path-component.cjs.map +1 -1
- package/dist/components/features/chat/path-component.js +9 -6
- package/dist/components/features/chat/path-component.js.map +1 -1
- package/dist/components/features/chat/plan-preview.cjs +1 -1
- package/dist/components/features/chat/plan-preview.js +4 -4
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.d.ts +0 -8
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js +92 -50
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.d.ts +7 -2
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js +15 -9
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/markdown-file-preview.cjs +2 -0
- package/dist/components/features/chat/tool-visualizers/primitives/markdown-file-preview.cjs.map +1 -0
- package/dist/components/features/chat/tool-visualizers/primitives/markdown-file-preview.d.ts +20 -0
- package/dist/components/features/chat/tool-visualizers/primitives/markdown-file-preview.js +76 -0
- package/dist/components/features/chat/tool-visualizers/primitives/markdown-file-preview.js.map +1 -0
- package/dist/components/features/controls/server-status-context-menu.cjs +1 -1
- package/dist/components/features/controls/server-status-context-menu.cjs.map +1 -1
- package/dist/components/features/controls/server-status-context-menu.d.ts +5 -3
- package/dist/components/features/controls/server-status-context-menu.js +8 -8
- package/dist/components/features/controls/server-status-context-menu.js.map +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu.cjs +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu.js +58 -61
- package/dist/components/features/conversation/conversation-name-context-menu.js.map +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.cjs +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.js +74 -46
- package/dist/components/features/conversation/conversation-name-with-status.js.map +1 -1
- package/dist/components/features/conversation/conversation-name.cjs +1 -1
- package/dist/components/features/conversation/conversation-name.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-name.js +69 -71
- package/dist/components/features/conversation/conversation-name.js.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.js +7 -6
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.js.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js +92 -86
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js +81 -71
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js.map +1 -1
- package/dist/components/features/conversation/metrics-modal/cost-section.cjs +1 -1
- package/dist/components/features/conversation/metrics-modal/cost-section.cjs.map +1 -1
- package/dist/components/features/conversation/metrics-modal/cost-section.js +6 -6
- package/dist/components/features/conversation/metrics-modal/cost-section.js.map +1 -1
- package/dist/components/features/conversation/metrics-modal/metric-row.cjs +1 -1
- package/dist/components/features/conversation/metrics-modal/metric-row.cjs.map +1 -1
- package/dist/components/features/conversation/metrics-modal/metric-row.d.ts +2 -1
- package/dist/components/features/conversation/metrics-modal/metric-row.js +10 -9
- package/dist/components/features/conversation/metrics-modal/metric-row.js.map +1 -1
- package/dist/components/features/conversation/metrics-modal/usage-section.cjs +1 -1
- package/dist/components/features/conversation/metrics-modal/usage-section.cjs.map +1 -1
- package/dist/components/features/conversation/metrics-modal/usage-section.js +2 -1
- package/dist/components/features/conversation/metrics-modal/usage-section.js.map +1 -1
- package/dist/components/features/conversation/usage-panel/compact-context-button.cjs +2 -0
- package/dist/components/features/conversation/usage-panel/compact-context-button.cjs.map +1 -0
- package/dist/components/features/conversation/usage-panel/compact-context-button.d.ts +16 -0
- package/dist/components/features/conversation/usage-panel/compact-context-button.js +59 -0
- package/dist/components/features/conversation/usage-panel/compact-context-button.js.map +1 -0
- package/dist/components/features/conversation/usage-panel/context-meter.cjs +2 -0
- package/dist/components/features/conversation/usage-panel/context-meter.cjs.map +1 -0
- package/dist/components/features/conversation/usage-panel/context-meter.d.ts +19 -0
- package/dist/components/features/conversation/usage-panel/context-meter.js +46 -0
- package/dist/components/features/conversation/usage-panel/context-meter.js.map +1 -0
- package/dist/components/features/conversation/usage-panel/provider-balance-card.cjs +2 -0
- package/dist/components/features/conversation/usage-panel/provider-balance-card.cjs.map +1 -0
- package/dist/components/features/conversation/usage-panel/provider-balance-card.d.ts +7 -0
- package/dist/components/features/conversation/usage-panel/provider-balance-card.js +57 -0
- package/dist/components/features/conversation/usage-panel/provider-balance-card.js.map +1 -0
- package/dist/components/features/conversation/usage-panel/usage-panel.cjs +2 -0
- package/dist/components/features/conversation/usage-panel/usage-panel.cjs.map +1 -0
- package/dist/components/features/conversation/usage-panel/usage-panel.d.ts +9 -0
- package/dist/components/features/conversation/usage-panel/usage-panel.js +68 -0
- package/dist/components/features/conversation/usage-panel/usage-panel.js.map +1 -0
- package/dist/components/features/conversation-panel/budget-display.cjs +1 -1
- package/dist/components/features/conversation-panel/budget-display.cjs.map +1 -1
- package/dist/components/features/conversation-panel/budget-display.js +10 -13
- package/dist/components/features/conversation-panel/budget-display.js.map +1 -1
- package/dist/components/features/conversation-panel/budget-progress-bar.cjs +1 -1
- package/dist/components/features/conversation-panel/budget-progress-bar.cjs.map +1 -1
- package/dist/components/features/conversation-panel/budget-progress-bar.js +2 -2
- package/dist/components/features/conversation-panel/budget-progress-bar.js.map +1 -1
- package/dist/components/features/conversation-panel/confirm-archive-modal.cjs +2 -0
- package/dist/components/features/conversation-panel/confirm-archive-modal.cjs.map +1 -0
- package/dist/components/features/conversation-panel/confirm-archive-modal.d.ts +8 -0
- package/dist/components/features/conversation-panel/confirm-archive-modal.js +48 -0
- package/dist/components/features/conversation-panel/confirm-archive-modal.js.map +1 -0
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.d.ts +3 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js +39 -34
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.d.ts +3 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.js +104 -80
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.d.ts +7 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.js +28 -20
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.d.ts +9 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.js +94 -84
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-list.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-list.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-list.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-list.js +32 -31
- package/dist/components/features/conversation-panel/conversation-group-folder-list.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-row.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-row.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-row.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-row.js +27 -26
- package/dist/components/features/conversation-panel/conversation-group-folder-row.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.d.ts +3 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js +116 -106
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.d.ts +27 -0
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js +69 -46
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.js +230 -165
- package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.js +22 -25
- package/dist/components/features/files-tab/file-content-viewer.js.map +1 -1
- package/dist/components/features/markdown/markdown-table-scroll.cjs +1 -1
- package/dist/components/features/markdown/markdown-table-scroll.cjs.map +1 -1
- package/dist/components/features/markdown/markdown-table-scroll.js +2 -2
- package/dist/components/features/markdown/markdown-table-scroll.js.map +1 -1
- 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/buttons/conversation-confirmation-buttons.cjs +1 -1
- package/dist/components/shared/buttons/conversation-confirmation-buttons.cjs.map +1 -1
- package/dist/components/shared/buttons/conversation-confirmation-buttons.js +2 -2
- package/dist/components/shared/buttons/conversation-confirmation-buttons.js.map +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.cjs +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.cjs.map +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.js +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.js.map +1 -1
- 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 +3 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/constants/llm-balance.cjs +2 -0
- package/dist/constants/llm-balance.cjs.map +1 -0
- package/dist/constants/llm-balance.d.ts +13 -0
- package/dist/constants/llm-balance.js +6 -0
- package/dist/constants/llm-balance.js.map +1 -0
- package/dist/contexts/conversation-websocket-context.cjs +2 -2
- package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
- package/dist/contexts/conversation-websocket-context.js +217 -209
- package/dist/contexts/conversation-websocket-context.js.map +1 -1
- package/dist/hooks/chat/use-grip-resize.cjs +1 -1
- package/dist/hooks/chat/use-grip-resize.cjs.map +1 -1
- package/dist/hooks/chat/use-grip-resize.d.ts +1 -0
- package/dist/hooks/chat/use-grip-resize.js +39 -30
- package/dist/hooks/chat/use-grip-resize.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/hooks/mutation/use-condense-conversation.cjs +2 -0
- package/dist/hooks/mutation/use-condense-conversation.cjs.map +1 -0
- package/dist/hooks/mutation/use-condense-conversation.d.ts +12 -0
- package/dist/hooks/mutation/use-condense-conversation.js +17 -0
- package/dist/hooks/mutation/use-condense-conversation.js.map +1 -0
- package/dist/hooks/mutation/use-create-conversation.cjs +1 -1
- package/dist/hooks/mutation/use-create-conversation.cjs.map +1 -1
- package/dist/hooks/mutation/use-create-conversation.js +30 -21
- package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
- package/dist/hooks/mutation/use-new-conversation-command.cjs +1 -1
- package/dist/hooks/mutation/use-new-conversation-command.cjs.map +1 -1
- package/dist/hooks/mutation/use-new-conversation-command.js +1 -1
- package/dist/hooks/mutation/use-new-conversation-command.js.map +1 -1
- package/dist/hooks/query/use-conversation-metrics.cjs +1 -1
- package/dist/hooks/query/use-conversation-metrics.cjs.map +1 -1
- package/dist/hooks/query/use-conversation-metrics.js +1 -1
- package/dist/hooks/query/use-conversation-metrics.js.map +1 -1
- package/dist/hooks/query/use-llm-balance.cjs +2 -0
- package/dist/hooks/query/use-llm-balance.cjs.map +1 -0
- package/dist/hooks/query/use-llm-balance.d.ts +10 -0
- package/dist/hooks/query/use-llm-balance.js +24 -0
- package/dist/hooks/query/use-llm-balance.js.map +1 -0
- package/dist/hooks/query/use-search-providers.cjs +1 -1
- package/dist/hooks/query/use-search-providers.cjs.map +1 -1
- package/dist/hooks/query/use-search-providers.js +1 -1
- package/dist/hooks/query/use-search-providers.js.map +1 -1
- package/dist/hooks/use-await-context-compaction.cjs +2 -0
- package/dist/hooks/use-await-context-compaction.cjs.map +1 -0
- package/dist/hooks/use-await-context-compaction.d.ts +38 -0
- package/dist/hooks/use-await-context-compaction.js +61 -0
- package/dist/hooks/use-await-context-compaction.js.map +1 -0
- package/dist/hooks/use-compact-context-action.cjs +2 -0
- package/dist/hooks/use-compact-context-action.cjs.map +1 -0
- package/dist/hooks/use-compact-context-action.d.ts +10 -0
- package/dist/hooks/use-compact-context-action.js +61 -0
- package/dist/hooks/use-compact-context-action.js.map +1 -0
- package/dist/hooks/use-context-window-usage.cjs +2 -0
- package/dist/hooks/use-context-window-usage.cjs.map +1 -0
- package/dist/hooks/use-context-window-usage.d.ts +5 -0
- package/dist/hooks/use-context-window-usage.js +20 -0
- package/dist/hooks/use-context-window-usage.js.map +1 -0
- package/dist/hooks/use-conversation-name-context-menu.cjs +1 -1
- package/dist/hooks/use-conversation-name-context-menu.cjs.map +1 -1
- package/dist/hooks/use-conversation-name-context-menu.d.ts +0 -3
- package/dist/hooks/use-conversation-name-context-menu.js +54 -57
- package/dist/hooks/use-conversation-name-context-menu.js.map +1 -1
- package/dist/hooks/use-drag-resize.cjs +1 -1
- package/dist/hooks/use-drag-resize.cjs.map +1 -1
- package/dist/hooks/use-drag-resize.d.ts +8 -0
- package/dist/hooks/use-drag-resize.js +21 -18
- package/dist/hooks/use-drag-resize.js.map +1 -1
- package/dist/hooks/use-live-conversation-metrics.cjs +2 -0
- package/dist/hooks/use-live-conversation-metrics.cjs.map +1 -0
- package/dist/hooks/use-live-conversation-metrics.d.ts +18 -0
- package/dist/hooks/use-live-conversation-metrics.js +37 -0
- package/dist/hooks/use-live-conversation-metrics.js.map +1 -0
- package/dist/hooks/use-select-conversation-tab.cjs +1 -1
- package/dist/hooks/use-select-conversation-tab.cjs.map +1 -1
- package/dist/hooks/use-select-conversation-tab.js +2 -2
- package/dist/hooks/use-select-conversation-tab.js.map +1 -1
- package/dist/i18n/declaration.cjs +1 -1
- package/dist/i18n/declaration.cjs.map +1 -1
- package/dist/i18n/declaration.d.ts +27 -0
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +2 -2
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +474 -15
- package/dist/i18n/translation.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +28 -29
- package/dist/lib/index.cjs +1 -1
- package/dist/lib/index.js +0 -1
- package/dist/locales/ar/openhands.json +28 -1
- package/dist/locales/ca/openhands.json +28 -1
- package/dist/locales/de/openhands.json +28 -1
- package/dist/locales/en/openhands.json +28 -1
- package/dist/locales/es/openhands.json +28 -1
- package/dist/locales/fr/openhands.json +28 -1
- package/dist/locales/it/openhands.json +28 -1
- package/dist/locales/ja/openhands.json +28 -1
- package/dist/locales/ko-KR/openhands.json +28 -1
- package/dist/locales/no/openhands.json +28 -1
- package/dist/locales/pt/openhands.json +28 -1
- package/dist/locales/tr/openhands.json +28 -1
- package/dist/locales/uk/openhands.json +28 -1
- package/dist/locales/zh-CN/openhands.json +28 -1
- package/dist/locales/zh-TW/openhands.json +28 -1
- package/dist/node_modules/@microlink/react-json-view/dist/main.cjs +5 -5
- package/dist/node_modules/@microlink/react-json-view/dist/main.cjs.map +1 -1
- package/dist/node_modules/@microlink/react-json-view/dist/main.js +5194 -5187
- package/dist/node_modules/@microlink/react-json-view/dist/main.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.cjs +2 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.js +21 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.cjs +2 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.js +22 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.cjs +2 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.js +33 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.js +56 -22
- package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/profiles-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/profiles-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/profiles-client.js +3 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/profiles-client.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.cjs +2 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.js +31 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.cjs +2 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.js +21 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.cjs +2 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.js +21 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/local-conversation.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/local-conversation.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.js +9 -5
- package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.js.map +1 -1
- package/dist/node_modules/i18next-http-backend/esm/index.cjs +1 -1
- package/dist/node_modules/i18next-http-backend/esm/index.cjs.map +1 -1
- package/dist/node_modules/i18next-http-backend/esm/index.js +2 -2
- package/dist/node_modules/i18next-http-backend/esm/index.js.map +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/archive-restore.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/archive-restore.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/archive-restore.js +31 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/archive-restore.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/archive.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/archive.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/archive.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/archive.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/gauge.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/gauge.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/gauge.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/gauge.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/minimize.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/minimize.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/minimize.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/minimize.js.map +1 -0
- package/dist/node_modules/zustand/esm/middleware.cjs +3 -3
- package/dist/node_modules/zustand/esm/middleware.cjs.map +1 -1
- package/dist/node_modules/zustand/esm/middleware.js +33 -31
- package/dist/node_modules/zustand/esm/middleware.js.map +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +17 -16
- 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/routes/usage-tab.cjs +2 -0
- package/dist/routes/usage-tab.cjs.map +1 -0
- package/dist/routes/usage-tab.d.ts +2 -0
- package/dist/routes/usage-tab.js +10 -0
- package/dist/routes/usage-tab.js.map +1 -0
- package/dist/services/child-conversation-launch.cjs +1 -1
- package/dist/services/child-conversation-launch.cjs.map +1 -1
- package/dist/services/child-conversation-launch.js +11 -5
- package/dist/services/child-conversation-launch.js.map +1 -1
- package/dist/stores/archived-conversations-store.cjs +2 -0
- package/dist/stores/archived-conversations-store.cjs.map +1 -0
- package/dist/stores/archived-conversations-store.d.ts +24 -0
- package/dist/stores/archived-conversations-store.js +33 -0
- package/dist/stores/archived-conversations-store.js.map +1 -0
- package/dist/stores/conversation-panel-preferences-store.cjs +1 -1
- package/dist/stores/conversation-panel-preferences-store.cjs.map +1 -1
- package/dist/stores/conversation-panel-preferences-store.d.ts +3 -0
- package/dist/stores/conversation-panel-preferences-store.js +4 -0
- package/dist/stores/conversation-panel-preferences-store.js.map +1 -1
- package/dist/stores/conversation-store.cjs.map +1 -1
- package/dist/stores/conversation-store.d.ts +1 -1
- package/dist/stores/conversation-store.js.map +1 -1
- package/dist/stores/metrics-store.cjs +1 -1
- package/dist/stores/metrics-store.cjs.map +1 -1
- package/dist/stores/metrics-store.d.ts +1 -0
- package/dist/stores/metrics-store.js +7 -4
- package/dist/stores/metrics-store.js.map +1 -1
- package/dist/types/agent-server/core/events/condensation-event.d.ts +3 -0
- package/dist/types/agent-server/core/events/conversation-state-event.d.ts +4 -6
- package/dist/types/agent-server/type-guards.cjs +1 -1
- package/dist/types/agent-server/type-guards.cjs.map +1 -1
- package/dist/types/agent-server/type-guards.d.ts +5 -0
- package/dist/types/agent-server/type-guards.js +3 -3
- package/dist/types/agent-server/type-guards.js.map +1 -1
- package/dist/utils/conversation-local-storage.cjs +1 -1
- package/dist/utils/conversation-local-storage.cjs.map +1 -1
- package/dist/utils/conversation-local-storage.js +2 -1
- package/dist/utils/conversation-local-storage.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/dist/utils/format-token-count.cjs +2 -0
- package/dist/utils/format-token-count.cjs.map +1 -0
- package/dist/utils/format-token-count.d.ts +3 -0
- package/dist/utils/format-token-count.js +19 -0
- package/dist/utils/format-token-count.js.map +1 -0
- package/dist/utils/hover-reveal-classes.cjs +2 -0
- package/dist/utils/hover-reveal-classes.cjs.map +1 -0
- package/dist/utils/hover-reveal-classes.d.ts +34 -0
- package/dist/utils/hover-reveal-classes.js +41 -0
- package/dist/utils/hover-reveal-classes.js.map +1 -0
- package/dist/utils/is-markdown-file-path.cjs +2 -0
- package/dist/utils/is-markdown-file-path.cjs.map +1 -0
- package/dist/utils/is-markdown-file-path.d.ts +4 -0
- package/dist/utils/is-markdown-file-path.js +14 -0
- package/dist/utils/is-markdown-file-path.js.map +1 -0
- package/dist/utils/mcp-marketplace-utils.cjs +1 -1
- package/dist/utils/mcp-marketplace-utils.cjs.map +1 -1
- package/dist/utils/mcp-marketplace-utils.d.ts +7 -0
- package/dist/utils/mcp-marketplace-utils.js +19 -16
- package/dist/utils/mcp-marketplace-utils.js.map +1 -1
- package/dist/utils/transcript-export/index.cjs +3 -3
- package/dist/utils/transcript-export/index.cjs.map +1 -1
- package/dist/utils/transcript-export/index.js +12 -12
- package/dist/utils/transcript-export/index.js.map +1 -1
- package/dist/utils/transcript-export/load-complete-events.cjs +1 -1
- package/dist/utils/transcript-export/load-complete-events.cjs.map +1 -1
- package/dist/utils/transcript-export/load-complete-events.js +4 -4
- package/dist/utils/transcript-export/load-complete-events.js.map +1 -1
- package/dist/utils/workspace-relative-path.cjs +2 -0
- package/dist/utils/workspace-relative-path.cjs.map +1 -0
- package/dist/utils/workspace-relative-path.d.ts +10 -0
- package/dist/utils/workspace-relative-path.js +22 -0
- package/dist/utils/workspace-relative-path.js.map +1 -0
- package/package.json +17 -16
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/dev-process-utils.mjs +6 -1
- package/scripts/dev-safe.mjs +57 -2
- package/build/assets/active-backend-context-BBvP-bI2.js +0 -2
- package/build/assets/agent-profiles-settings-DqoS7RL3.js +0 -1
- package/build/assets/agent-server-conversation-service.api-0RztSdJJ.js +0 -86
- 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/bot-DuN83i3p.js +0 -1
- package/build/assets/browser--eoQOo4M.js +0 -6
- package/build/assets/check-DLOKoFU9.js +0 -1
- package/build/assets/chevron-down-CnIbtM6i.js +0 -1
- package/build/assets/circle-check-CxCYJrpZ.js +0 -1
- package/build/assets/conversation-BUzBZAc-.js +0 -90
- package/build/assets/conversation-panel-pzAKsSDb.js +0 -1
- package/build/assets/conversation-pzAKsSDb.js +0 -1
- package/build/assets/conversation-store-B8Eahyeg.js +0 -6
- package/build/assets/external-link-zWbg5KXS.js +0 -1
- package/build/assets/files-tab-BzofBmF4.js +0 -1
- package/build/assets/git-provider-icon-BLMlwy02.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/llm-subscription-service-7eVfDIE1.js +0 -1
- package/build/assets/loader-circle-C5AnEN8r.js +0 -1
- package/build/assets/manifest-2a36a8f8.js +0 -1
- package/build/assets/markdown-renderer-BiiiIznl.js +0 -8
- package/build/assets/mcp-marketplace-utils-Dr_HG_ol.js +0 -1
- package/build/assets/messages-D1cbVhRK.js +0 -40
- package/build/assets/pencil-Bl3GWhgq.js +0 -1
- package/build/assets/plus-CtzlyAoF.js +0 -1
- package/build/assets/recommended-automations-launcher-BbJAJVED.js +0 -1
- package/build/assets/refresh-cw-B9GhC3QC.js +0 -1
- 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
- package/build/assets/search-CYaiKHRp.js +0 -1
- package/build/assets/shared-conversation-DIxZjElr.js +0 -1
- package/build/assets/shield-check-D2cpEpv3.js +0 -1
- package/build/assets/trash-2-CzDVN-Iw.js +0 -1
- package/build/assets/use-create-conversation-DWaSVUOB.js +0 -1
- package/build/assets/use-is-authed-Bka89Xmm.js +0 -1
- package/build/assets/use-llm-profiles-CU8ah1pz.js +0 -1
- package/build/assets/use-save-agent-profile-DgI_Uz9a.js +0 -1
- package/build/assets/utils-DPQfkd-7.js +0 -1
- package/build/assets/vendor~index-home~home~conversation-panel~conversation-DiXf0dkj.js +0 -13
- package/build/assets/x-RYDBg-e2.js +0 -1
- package/build/assets/zap-tbKDzCe3.js +0 -1
- package/dist/components/features/conversation/metrics-modal/context-window-section.cjs +0 -2
- package/dist/components/features/conversation/metrics-modal/context-window-section.cjs.map +0 -1
- package/dist/components/features/conversation/metrics-modal/context-window-section.d.ts +0 -6
- package/dist/components/features/conversation/metrics-modal/context-window-section.js +0 -46
- package/dist/components/features/conversation/metrics-modal/context-window-section.js.map +0 -1
- package/dist/components/features/conversation/metrics-modal/empty-state.cjs +0 -2
- package/dist/components/features/conversation/metrics-modal/empty-state.cjs.map +0 -1
- package/dist/components/features/conversation/metrics-modal/empty-state.d.ts +0 -1
- package/dist/components/features/conversation/metrics-modal/empty-state.js +0 -18
- package/dist/components/features/conversation/metrics-modal/empty-state.js.map +0 -1
- package/dist/components/features/conversation/metrics-modal/metrics-modal-header.cjs +0 -2
- package/dist/components/features/conversation/metrics-modal/metrics-modal-header.cjs.map +0 -1
- package/dist/components/features/conversation/metrics-modal/metrics-modal-header.d.ts +0 -5
- package/dist/components/features/conversation/metrics-modal/metrics-modal-header.js +0 -20
- package/dist/components/features/conversation/metrics-modal/metrics-modal-header.js.map +0 -1
- package/dist/components/features/conversation/metrics-modal/metrics-modal.cjs +0 -2
- package/dist/components/features/conversation/metrics-modal/metrics-modal.cjs.map +0 -1
- package/dist/components/features/conversation/metrics-modal/metrics-modal.d.ts +0 -6
- package/dist/components/features/conversation/metrics-modal/metrics-modal.js +0 -57
- package/dist/components/features/conversation/metrics-modal/metrics-modal.js.map +0 -1
- package/dist/icons/u-credit-card.cjs +0 -2
- package/dist/icons/u-credit-card.cjs.map +0 -1
- package/dist/icons/u-credit-card.js +0 -21
- package/dist/icons/u-credit-card.js.map +0 -1
- /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~cy4jtuc2-rfV8mQ9m.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dh9v73sa-rfV8mQ9m.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","names":[],"sources":["../../../../node_modules/zustand/esm/middleware.mjs"],"sourcesContent":["const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...args) => api.dispatch(...args), ...initial };\n};\nconst redux = reduxImpl;\n\nconst shouldDispatchFromDevtools = (api) => !!api.dispatchFromDevtools && typeof api.dispatch === \"function\";\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst removeStoreFromTrackedConnections = (name, store) => {\n if (store === void 0) return;\n const connectionInfo = trackedConnections.get(name);\n if (!connectionInfo) return;\n delete connectionInfo.stores[store];\n if (Object.keys(connectionInfo.stores).length === 0) {\n trackedConnections.delete(name);\n }\n};\nconst findCallerName = (stack) => {\n var _a, _b;\n if (!stack) return void 0;\n const traceLines = stack.split(\"\\n\");\n const apiSetStateLineIndex = traceLines.findIndex(\n (traceLine) => traceLine.includes(\"api.setState\")\n );\n if (apiSetStateLineIndex < 0) return void 0;\n const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || \"\";\n return (_b = /.+ (.+) .+/.exec(callerLine)) == null ? void 0 : _b[1];\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = ((state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? {\n type: anonymousActionType || findCallerName(new Error().stack) || \"anonymous\"\n } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n });\n api.devtools = {\n cleanup: () => {\n if (connection && typeof connection.unsubscribe === \"function\") {\n connection.unsubscribe();\n }\n removeStoreFromTrackedConnections(options.name, store);\n }\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (shouldDispatchFromDevtools(api)) {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...args) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && args[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...args);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (shouldDispatchFromDevtools(api)) {\n api.dispatch(action);\n }\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, fn) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) fn(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = ((selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n });\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nfunction combine(initialState, create) {\n return (...args) => Object.assign({}, initialState, create(...args));\n}\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => window.localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n let hydrationVersion = 0;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n return setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n return setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n const currentVersion = ++hydrationVersion;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n const migration = options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n if (migration instanceof Promise) {\n return migration.then((result) => [true, result]);\n }\n return [true, migration];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n if (currentVersion !== hydrationVersion) {\n return;\n }\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(get(), void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nfunction ssrSafe(config, isSSR = typeof window === \"undefined\") {\n return (set, get, api) => {\n if (!isSSR) {\n return config(set, get, api);\n }\n const ssrSet = () => {\n throw new Error(\"Cannot set state of Zustand store in SSR\");\n };\n api.setState = ssrSet;\n return config(ssrSet, get, api);\n };\n}\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector, ssrSafe as unstable_ssrSafe };\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"middleware.js","names":[],"sources":["../../../../node_modules/zustand/esm/middleware.mjs"],"sourcesContent":["const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...args) => api.dispatch(...args), ...initial };\n};\nconst redux = reduxImpl;\n\nconst shouldDispatchFromDevtools = (api) => !!api.dispatchFromDevtools && typeof api.dispatch === \"function\";\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst removeStoreFromTrackedConnections = (name, store) => {\n if (store === void 0) return;\n const connectionInfo = trackedConnections.get(name);\n if (!connectionInfo) return;\n delete connectionInfo.stores[store];\n if (Object.keys(connectionInfo.stores).length === 0) {\n trackedConnections.delete(name);\n }\n};\nconst v8StackLineRe = /.+ (.+) .+/;\nconst geckoStackLineRe = /^([^@]+)@/;\nfunction findCallerName(stack) {\n var _a, _b, _c;\n if (!stack) return void 0;\n const traceLines = stack.split(\"\\n\");\n const apiSetStateLineIndex = traceLines.findIndex(\n (traceLine) => traceLine.includes(\"api.setState\")\n );\n if (apiSetStateLineIndex < 0) return void 0;\n const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || \"\";\n return ((_b = v8StackLineRe.exec(callerLine)) == null ? void 0 : _b[1]) || ((_c = geckoStackLineRe.exec(callerLine)) == null ? void 0 : _c[1]);\n}\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = ((state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? {\n type: anonymousActionType || findCallerName(new Error().stack) || \"anonymous\"\n } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n });\n api.devtools = {\n cleanup: () => {\n if (connection && typeof connection.unsubscribe === \"function\") {\n connection.unsubscribe();\n }\n removeStoreFromTrackedConnections(options.name, store);\n }\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (shouldDispatchFromDevtools(api)) {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...args) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && args[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...args);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (shouldDispatchFromDevtools(api)) {\n api.dispatch(action);\n }\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, fn) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) fn(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = ((selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n });\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nfunction combine(initialState, create) {\n return (...args) => Object.assign({}, initialState, create(...args));\n}\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => window.localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n let hydrationVersion = 0;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n return setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n return setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n const currentVersion = ++hydrationVersion;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n const migration = options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n if (migration instanceof Promise) {\n return migration.then((result) => [true, result]);\n }\n return [true, migration];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n if (currentVersion !== hydrationVersion) {\n return;\n }\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(get(), void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nfunction ssrSafe(config, isSSR = typeof window === \"undefined\") {\n return (set, get, api) => {\n if (!isSSR) {\n return config(set, get, api);\n }\n const ssrSet = () => {\n throw new Error(\"Cannot set state of Zustand store in SSR\");\n };\n api.setState = ssrSet;\n return config(ssrSet, get, api);\n };\n}\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector, ssrSafe as unstable_ssrSafe };\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
package/dist/package.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require("./_virtual/_rolldown/runtime.cjs");var e={name:`@openhands/agent-canvas`,version:`1.
|
|
1
|
+
require("./_virtual/_rolldown/runtime.cjs");var e={name:`@openhands/agent-canvas`,version:`1.13.0`,description:`Agent Canvas UI for OpenHands - run AI coding agents with a visual interface`,license:`MIT`,private:!1,type:`module`,repository:{type:`git`,url:`https://github.com/OpenHands/OpenHands`},homepage:`https://github.com/OpenHands/OpenHands#readme`,bugs:{url:`https://github.com/OpenHands/OpenHands/issues`},bin:{"agent-canvas":`bin/agent-canvas.mjs`},engines:{node:`>=22.12.0`},dependencies:{"@heroui/react":`2.8.10`,"@microlink/react-json-view":`1.31.25`,"@monaco-editor/react":`4.7.0`,"@openhands/extensions":`0.16.0`,"@openhands/typescript-client":`1.38.0`,"@react-router/node":`7.18.2`,"@react-router/serve":`7.18.2`,"@tailwindcss/vite":`4.3.3`,"@tanstack/react-query":`5.101.4`,"@types/shell-quote":`1.7.5`,"@uidotdev/usehooks":`2.4.1`,"@xterm/addon-fit":`0.11.0`,"@xterm/xterm":`6.0.0`,axios:`1.18.0`,"class-variance-authority":`0.7.1`,clsx:`2.1.1`,downshift:`9.3.2`,"framer-motion":`12.38.0`,httpxy:`0.5.3`,i18next:`26.3.6`,"i18next-browser-languagedetector":`8.2.1`,"i18next-http-backend":`4.0.1`,isbot:`5.1.39`,"lucide-react":`1.25.0`,"monaco-editor":`0.56.0`,"posthog-js":`1.380.0`,react:`19.2.8`,"react-dom":`19.2.8`,"react-hot-toast":`2.6.0`,"react-i18next":`17.0.11`,"react-icons":`5.6.0`,"react-markdown":`10.1.0`,"react-router":`7.18.2`,"react-syntax-highlighter":`16.1.1`,"rehype-raw":`7.0.0`,"rehype-sanitize":`6.0.0`,"remark-breaks":`4.0.0`,"remark-gfm":`4.0.1`,"shell-quote":`1.9.0`,sirv:`3.0.2`,"sirv-cli":`3.0.1`,"socket.io-client":`4.8.3`,"tailwind-merge":`3.6.0`,"tailwind-scrollbar":`4.0.2`,"unist-util-visit":`5.1.0`,uuid:`14.0.0`,vite:`8.0.16`,winston:`3.19.0`,"winston-daily-rotate-file":`5.0.0`,zustand:`5.0.14`},scripts:{dev:`node --env-file-if-exists=.env scripts/dev-with-automation.mjs`,"dev:static":`node --env-file-if-exists=.env scripts/dev-static.mjs`,"dev:extra-backend":`node --env-file-if-exists=.env scripts/dev-extra-backend.mjs`,"dev:minimal":`node --env-file-if-exists=.env scripts/dev-safe.mjs`,"dev:frontend":`npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev`,"dev:mock":`npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev`,build:`npm run build:app`,"build:mock":`npm run make-i18n && cross-env VITE_MOCK_API=true react-router build`,start:`npx sirv-cli build/ --single`,test:`npm run make-i18n && vitest run`,"test:e2e":`playwright test --pass-with-no-tests`,"test:e2e:live":`node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs`,"test:e2e:mock-llm":`playwright test --config=playwright.mock-llm.config.ts`,"test:e2e:mock-llm:docker":`playwright test --config=playwright.mock-llm-docker.config.ts`,"test:coverage":`npm run make-i18n && vitest run --coverage`,"test:mutation":`npm run make-i18n && stryker run`,"test:mutation:diff":`npm run make-i18n && node scripts/stryker-diff.mjs`,"test:mutation:incremental":`npm run make-i18n && stryker run --incremental`,dev_wsl:`VITE_WATCH_USE_POLLING=true vite`,preview:`vite preview`,"make-i18n":`node scripts/make-i18n-translations.cjs`,prelint:`npm run make-i18n`,lint:`npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}`,"lint:fix":`eslint src --fix && prettier --write src/**/*.{ts,tsx}`,postinstall:`node -e "if (process.env.npm_config_global === 'true') { console.log('\\n\\x1b[32m\\x1b[1m\\u2713 @openhands/agent-canvas installed!\\x1b[0m\\n\\nTo start Agent Canvas, run:\\n\\n \\x1b[36m\\x1b[1magent-canvas\\x1b[0m\\n\\nThis launches the full stack at \\x1b[36mhttp://localhost:8000\\x1b[0m.\\n\\nDocs: https://docs.openhands.dev/openhands/usage/agent-canvas/setup\\n') }"`,prepare:`husky`,typecheck:`react-router typegen && tsc`,"typecheck:staged":`react-router typegen && npx tsc --noEmit --skipLibCheck`,"check-translation-completeness":`node scripts/check-translation-completeness.cjs`,"build:app":`npm run make-i18n && react-router build`,"build:lib":`npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true vite build && tsc -p tsconfig.lib.json`,"build:docker":`node scripts/docker-build.mjs`,"example:acp-docker:env":`node scripts/gen-acp-docker-env.mjs`,predesktop:`node scripts/brand-dev-electron.mjs`,desktop:`npm run build:app && electron electron`,"build:desktop":`npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && electron-builder --config electron-builder.config.mjs --publish never`,"build:desktop:universal":`npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && cross-env ELECTRON_ARCH=universal electron-builder --config electron-builder.config.mjs --publish never`,"download-uv":`node scripts/download-uv.mjs`,"download-node":`node scripts/download-node.mjs`,"generate-icons":`node scripts/generate-icons.mjs`},"lint-staged":{"src/**/*.{ts,tsx,js}":[`eslint --fix`,`prettier --write`],"src/**/*.{ts,tsx}":[`node scripts/run-staged-typecheck.mjs`],"src/**/*":[`npm run check-translation-completeness`]},devDependencies:{"@eslint/eslintrc":`3.3.6`,"@eslint/js":`9.39.4`,"@mswjs/socket.io-binding":`0.2.0`,"@playwright/test":`1.62.1`,"@react-router/dev":`7.18.2`,"@stryker-mutator/core":`9.6.1`,"@stryker-mutator/vitest-runner":`9.6.1`,"@tailwindcss/typography":`0.5.20`,"@tanstack/eslint-plugin-query":`5.101.4`,"@testing-library/dom":`10.4.1`,"@testing-library/jest-dom":`7.0.0`,"@testing-library/react":`16.3.2`,"@testing-library/user-event":`14.6.1`,"@types/mdast":`4.0.4`,"@types/node":`26.1.2`,"@types/react":`19.2.18`,"@types/react-dom":`19.2.4`,"@types/react-syntax-highlighter":`15.5.13`,"@typescript-eslint/eslint-plugin":`8.65.0`,"@typescript-eslint/parser":`8.65.0`,"@vercel/react-router":`1.3.0`,"@vitest/coverage-v8":`4.1.10`,"cross-env":`10.1.0`,electron:`42.3.3`,"electron-builder":`26.15.3`,eslint:`9.39.5`,"eslint-config-prettier":`10.1.8`,"eslint-import-resolver-typescript":`4.4.5`,"eslint-plugin-i18next":`6.1.5`,"eslint-plugin-import-x":`4.17.1`,"eslint-plugin-jsx-a11y":`6.10.2`,"eslint-plugin-prettier":`5.5.6`,"eslint-plugin-react":`7.37.5`,"eslint-plugin-react-hooks":`7.1.1`,"eslint-plugin-unused-imports":`4.4.1`,globals:`16.5.0`,husky:`9.1.7`,jsdom:`30.0.1`,"lint-staged":`17.3.0`,msw:`2.15.0`,png2icons:`2.0.1`,"postcss-prefix-selector":`2.1.1`,prettier:`3.8.3`,tailwindcss:`4.3.3`,typescript:`6.0.3`,"vite-plugin-svgr":`5.2.0`,vitest:`4.1.10`},packageManager:`npm@10.5.0`,volta:{node:`22.12.0`},msw:{workerDirectory:[`public`]},overrides:{"@vercel/static-config":{ajv:`8.20.0`},dompurify:`3.4.12`,"typed-rest-client":{qs:`6.15.3`}},main:`./dist/index.cjs`,module:`./dist/index.js`,types:`./dist/index.d.ts`,files:[`dist`,`bin`,`build`,`config`,`scripts`,`tools`],exports:{".":{types:`./dist/index.d.ts`,import:`./dist/index.js`,require:`./dist/index.cjs`},"./browser":{types:`./dist/components/browser/index.d.ts`,import:`./dist/components/browser/index.js`,require:`./dist/components/browser/index.cjs`},"./conversation":{types:`./dist/components/conversation/index.d.ts`,import:`./dist/components/conversation/index.js`,require:`./dist/components/conversation/index.cjs`},"./files":{types:`./dist/components/files/index.d.ts`,import:`./dist/components/files/index.js`,require:`./dist/components/files/index.cjs`},"./settings":{types:`./dist/components/settings/index.d.ts`,import:`./dist/components/settings/index.js`,require:`./dist/components/settings/index.cjs`},"./sidebar":{types:`./dist/components/sidebar/index.d.ts`,import:`./dist/components/sidebar/index.js`,require:`./dist/components/sidebar/index.cjs`},"./terminal":{types:`./dist/components/terminal/index.d.ts`,import:`./dist/components/terminal/index.js`,require:`./dist/components/terminal/index.cjs`},"./i18n":{types:`./dist/i18n/index.d.ts`,import:`./dist/i18n/index.js`,require:`./dist/i18n/index.cjs`},"./package.json":`./package.json`},peerDependencies:{react:`19.2.8`,"react-dom":`19.2.8`,"react-router":`7.18.2`}};exports.default=e;
|
|
2
2
|
//# sourceMappingURL=package.cjs.map
|
package/dist/package.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.cjs","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.11.0\",\n \"description\": \"Agent Canvas UI for OpenHands - run AI coding agents with a visual interface\",\n \"license\": \"MIT\",\n \"private\": false,\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/OpenHands/OpenHands\"\n },\n \"homepage\": \"https://github.com/OpenHands/OpenHands#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/OpenHands/OpenHands/issues\"\n },\n \"bin\": {\n \"agent-canvas\": \"bin/agent-canvas.mjs\"\n },\n \"engines\": {\n \"node\": \">=22.12.0\"\n },\n \"dependencies\": {\n \"@heroui/react\": \"2.8.10\",\n \"@microlink/react-json-view\": \"1.31.20\",\n \"@monaco-editor/react\": \"4.7.0\",\n \"@openhands/extensions\": \"0.16.0\",\n \"@openhands/typescript-client\": \"1.36.1\",\n \"@react-router/node\": \"7.18.2\",\n \"@react-router/serve\": \"7.18.2\",\n \"@tailwindcss/vite\": \"4.3.3\",\n \"@tanstack/react-query\": \"5.101.4\",\n \"@types/shell-quote\": \"1.7.5\",\n \"@uidotdev/usehooks\": \"2.4.1\",\n \"@xterm/addon-fit\": \"0.11.0\",\n \"@xterm/xterm\": \"6.0.0\",\n \"axios\": \"1.18.0\",\n \"class-variance-authority\": \"0.7.1\",\n \"clsx\": \"2.1.1\",\n \"downshift\": \"9.3.2\",\n \"framer-motion\": \"12.38.0\",\n \"httpxy\": \"0.5.3\",\n \"i18next\": \"26.3.6\",\n \"i18next-browser-languagedetector\": \"8.2.1\",\n \"i18next-http-backend\": \"4.0.0\",\n \"isbot\": \"5.1.39\",\n \"lucide-react\": \"1.25.0\",\n \"monaco-editor\": \"0.56.0\",\n \"posthog-js\": \"1.380.0\",\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"react-hot-toast\": \"2.6.0\",\n \"react-i18next\": \"17.0.11\",\n \"react-icons\": \"5.6.0\",\n \"react-markdown\": \"10.1.0\",\n \"react-router\": \"7.18.2\",\n \"react-syntax-highlighter\": \"16.1.1\",\n \"rehype-raw\": \"7.0.0\",\n \"rehype-sanitize\": \"6.0.0\",\n \"remark-breaks\": \"4.0.0\",\n \"remark-gfm\": \"4.0.1\",\n \"shell-quote\": \"1.9.0\",\n \"sirv\": \"3.0.2\",\n \"sirv-cli\": \"3.0.1\",\n \"socket.io-client\": \"4.8.3\",\n \"tailwind-merge\": \"3.6.0\",\n \"tailwind-scrollbar\": \"4.0.2\",\n \"unist-util-visit\": \"5.1.0\",\n \"uuid\": \"14.0.0\",\n \"vite\": \"8.0.16\",\n \"winston\": \"3.19.0\",\n \"winston-daily-rotate-file\": \"5.0.0\",\n \"zustand\": \"5.0.12\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env scripts/dev-with-automation.mjs\",\n \"dev:static\": \"node --env-file-if-exists=.env scripts/dev-static.mjs\",\n \"dev:extra-backend\": \"node --env-file-if-exists=.env scripts/dev-extra-backend.mjs\",\n \"dev:minimal\": \"node --env-file-if-exists=.env scripts/dev-safe.mjs\",\n \"dev:frontend\": \"npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev\",\n \"dev:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev\",\n \"build\": \"npm run build:app\",\n \"build:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router build\",\n \"start\": \"npx sirv-cli build/ --single\",\n \"test\": \"npm run make-i18n && vitest run\",\n \"test:e2e\": \"playwright test --pass-with-no-tests\",\n \"test:e2e:live\": \"node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs\",\n \"test:e2e:mock-llm\": \"playwright test --config=playwright.mock-llm.config.ts\",\n \"test:e2e:mock-llm:docker\": \"playwright test --config=playwright.mock-llm-docker.config.ts\",\n \"test:coverage\": \"npm run make-i18n && vitest run --coverage\",\n \"test:mutation\": \"npm run make-i18n && stryker run\",\n \"test:mutation:diff\": \"npm run make-i18n && node scripts/stryker-diff.mjs\",\n \"test:mutation:incremental\": \"npm run make-i18n && stryker run --incremental\",\n \"dev_wsl\": \"VITE_WATCH_USE_POLLING=true vite\",\n \"preview\": \"vite preview\",\n \"make-i18n\": \"node scripts/make-i18n-translations.cjs\",\n \"prelint\": \"npm run make-i18n\",\n \"lint\": \"npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}\",\n \"lint:fix\": \"eslint src --fix && prettier --write src/**/*.{ts,tsx}\",\n \"prepare\": \"husky\",\n \"typecheck\": \"react-router typegen && tsc\",\n \"typecheck:staged\": \"react-router typegen && npx tsc --noEmit --skipLibCheck\",\n \"check-translation-completeness\": \"node scripts/check-translation-completeness.cjs\",\n \"build:app\": \"npm run make-i18n && react-router build\",\n \"build:lib\": \"npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true vite build && tsc -p tsconfig.lib.json\",\n \"build:docker\": \"node scripts/docker-build.mjs\",\n \"example:acp-docker:env\": \"node scripts/gen-acp-docker-env.mjs\",\n \"predesktop\": \"node scripts/brand-dev-electron.mjs\",\n \"desktop\": \"npm run build:app && electron electron\",\n \"build:desktop\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && electron-builder --config electron-builder.config.mjs --publish never\",\n \"build:desktop:universal\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && cross-env ELECTRON_ARCH=universal electron-builder --config electron-builder.config.mjs --publish never\",\n \"download-uv\": \"node scripts/download-uv.mjs\",\n \"download-node\": \"node scripts/download-node.mjs\",\n \"generate-icons\": \"node scripts/generate-icons.mjs\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,tsx,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"src/**/*.{ts,tsx}\": [\n \"node scripts/run-staged-typecheck.mjs\"\n ],\n \"src/**/*\": [\n \"npm run check-translation-completeness\"\n ]\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"3.3.1\",\n \"@eslint/js\": \"9.39.4\",\n \"@mswjs/socket.io-binding\": \"0.2.0\",\n \"@playwright/test\": \"1.62.0\",\n \"@react-router/dev\": \"7.18.2\",\n \"@stryker-mutator/core\": \"9.6.1\",\n \"@stryker-mutator/vitest-runner\": \"9.6.1\",\n \"@tailwindcss/typography\": \"0.5.20\",\n \"@tanstack/eslint-plugin-query\": \"5.101.4\",\n \"@testing-library/dom\": \"10.4.1\",\n \"@testing-library/jest-dom\": \"7.0.0\",\n \"@testing-library/react\": \"16.3.2\",\n \"@testing-library/user-event\": \"14.6.1\",\n \"@types/mdast\": \"4.0.4\",\n \"@types/node\": \"26.1.2\",\n \"@types/react\": \"19.2.17\",\n \"@types/react-dom\": \"19.2.3\",\n \"@types/react-syntax-highlighter\": \"15.5.13\",\n \"@typescript-eslint/eslint-plugin\": \"8.59.2\",\n \"@typescript-eslint/parser\": \"8.59.2\",\n \"@vercel/react-router\": \"1.3.0\",\n \"@vitest/coverage-v8\": \"4.1.10\",\n \"cross-env\": \"10.1.0\",\n \"electron\": \"42.3.3\",\n \"electron-builder\": \"26.15.3\",\n \"eslint\": \"9.39.4\",\n \"eslint-config-prettier\": \"10.1.8\",\n \"eslint-import-resolver-typescript\": \"4.4.5\",\n \"eslint-plugin-i18next\": \"6.1.5\",\n \"eslint-plugin-import-x\": \"4.16.2\",\n \"eslint-plugin-jsx-a11y\": \"6.10.2\",\n \"eslint-plugin-prettier\": \"5.5.5\",\n \"eslint-plugin-react\": \"7.37.5\",\n \"eslint-plugin-react-hooks\": \"7.1.1\",\n \"eslint-plugin-unused-imports\": \"4.4.1\",\n \"globals\": \"16.5.0\",\n \"husky\": \"9.1.7\",\n \"jsdom\": \"30.0.0\",\n \"lint-staged\": \"16.4.0\",\n \"msw\": \"2.15.0\",\n \"png2icons\": \"2.0.1\",\n \"postcss-prefix-selector\": \"2.1.1\",\n \"prettier\": \"3.8.3\",\n \"tailwindcss\": \"4.3.3\",\n \"typescript\": \"6.0.3\",\n \"vite-plugin-svgr\": \"5.2.0\",\n \"vitest\": \"4.1.10\"\n },\n \"packageManager\": \"npm@10.5.0\",\n \"volta\": {\n \"node\": \"22.12.0\"\n },\n \"msw\": {\n \"workerDirectory\": [\n \"public\"\n ]\n },\n \"overrides\": {\n \"@vercel/static-config\": {\n \"ajv\": \"8.20.0\"\n },\n \"dompurify\": \"3.4.12\",\n \"typed-rest-client\": {\n \"qs\": \"6.15.3\"\n }\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"build\",\n \"config\",\n \"scripts\",\n \"tools\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./browser\": {\n \"types\": \"./dist/components/browser/index.d.ts\",\n \"import\": \"./dist/components/browser/index.js\",\n \"require\": \"./dist/components/browser/index.cjs\"\n },\n \"./conversation\": {\n \"types\": \"./dist/components/conversation/index.d.ts\",\n \"import\": \"./dist/components/conversation/index.js\",\n \"require\": \"./dist/components/conversation/index.cjs\"\n },\n \"./files\": {\n \"types\": \"./dist/components/files/index.d.ts\",\n \"import\": \"./dist/components/files/index.js\",\n \"require\": \"./dist/components/files/index.cjs\"\n },\n \"./settings\": {\n \"types\": \"./dist/components/settings/index.d.ts\",\n \"import\": \"./dist/components/settings/index.js\",\n \"require\": \"./dist/components/settings/index.cjs\"\n },\n \"./sidebar\": {\n \"types\": \"./dist/components/sidebar/index.d.ts\",\n \"import\": \"./dist/components/sidebar/index.js\",\n \"require\": \"./dist/components/sidebar/index.cjs\"\n },\n \"./terminal\": {\n \"types\": \"./dist/components/terminal/index.d.ts\",\n \"import\": \"./dist/components/terminal/index.js\",\n \"require\": \"./dist/components/terminal/index.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.js\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"peerDependencies\": {\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"react-router\": \"7.18.2\"\n }\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"package.cjs","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.13.0\",\n \"description\": \"Agent Canvas UI for OpenHands - run AI coding agents with a visual interface\",\n \"license\": \"MIT\",\n \"private\": false,\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/OpenHands/OpenHands\"\n },\n \"homepage\": \"https://github.com/OpenHands/OpenHands#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/OpenHands/OpenHands/issues\"\n },\n \"bin\": {\n \"agent-canvas\": \"bin/agent-canvas.mjs\"\n },\n \"engines\": {\n \"node\": \">=22.12.0\"\n },\n \"dependencies\": {\n \"@heroui/react\": \"2.8.10\",\n \"@microlink/react-json-view\": \"1.31.25\",\n \"@monaco-editor/react\": \"4.7.0\",\n \"@openhands/extensions\": \"0.16.0\",\n \"@openhands/typescript-client\": \"1.38.0\",\n \"@react-router/node\": \"7.18.2\",\n \"@react-router/serve\": \"7.18.2\",\n \"@tailwindcss/vite\": \"4.3.3\",\n \"@tanstack/react-query\": \"5.101.4\",\n \"@types/shell-quote\": \"1.7.5\",\n \"@uidotdev/usehooks\": \"2.4.1\",\n \"@xterm/addon-fit\": \"0.11.0\",\n \"@xterm/xterm\": \"6.0.0\",\n \"axios\": \"1.18.0\",\n \"class-variance-authority\": \"0.7.1\",\n \"clsx\": \"2.1.1\",\n \"downshift\": \"9.3.2\",\n \"framer-motion\": \"12.38.0\",\n \"httpxy\": \"0.5.3\",\n \"i18next\": \"26.3.6\",\n \"i18next-browser-languagedetector\": \"8.2.1\",\n \"i18next-http-backend\": \"4.0.1\",\n \"isbot\": \"5.1.39\",\n \"lucide-react\": \"1.25.0\",\n \"monaco-editor\": \"0.56.0\",\n \"posthog-js\": \"1.380.0\",\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"react-hot-toast\": \"2.6.0\",\n \"react-i18next\": \"17.0.11\",\n \"react-icons\": \"5.6.0\",\n \"react-markdown\": \"10.1.0\",\n \"react-router\": \"7.18.2\",\n \"react-syntax-highlighter\": \"16.1.1\",\n \"rehype-raw\": \"7.0.0\",\n \"rehype-sanitize\": \"6.0.0\",\n \"remark-breaks\": \"4.0.0\",\n \"remark-gfm\": \"4.0.1\",\n \"shell-quote\": \"1.9.0\",\n \"sirv\": \"3.0.2\",\n \"sirv-cli\": \"3.0.1\",\n \"socket.io-client\": \"4.8.3\",\n \"tailwind-merge\": \"3.6.0\",\n \"tailwind-scrollbar\": \"4.0.2\",\n \"unist-util-visit\": \"5.1.0\",\n \"uuid\": \"14.0.0\",\n \"vite\": \"8.0.16\",\n \"winston\": \"3.19.0\",\n \"winston-daily-rotate-file\": \"5.0.0\",\n \"zustand\": \"5.0.14\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env scripts/dev-with-automation.mjs\",\n \"dev:static\": \"node --env-file-if-exists=.env scripts/dev-static.mjs\",\n \"dev:extra-backend\": \"node --env-file-if-exists=.env scripts/dev-extra-backend.mjs\",\n \"dev:minimal\": \"node --env-file-if-exists=.env scripts/dev-safe.mjs\",\n \"dev:frontend\": \"npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev\",\n \"dev:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev\",\n \"build\": \"npm run build:app\",\n \"build:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router build\",\n \"start\": \"npx sirv-cli build/ --single\",\n \"test\": \"npm run make-i18n && vitest run\",\n \"test:e2e\": \"playwright test --pass-with-no-tests\",\n \"test:e2e:live\": \"node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs\",\n \"test:e2e:mock-llm\": \"playwright test --config=playwright.mock-llm.config.ts\",\n \"test:e2e:mock-llm:docker\": \"playwright test --config=playwright.mock-llm-docker.config.ts\",\n \"test:coverage\": \"npm run make-i18n && vitest run --coverage\",\n \"test:mutation\": \"npm run make-i18n && stryker run\",\n \"test:mutation:diff\": \"npm run make-i18n && node scripts/stryker-diff.mjs\",\n \"test:mutation:incremental\": \"npm run make-i18n && stryker run --incremental\",\n \"dev_wsl\": \"VITE_WATCH_USE_POLLING=true vite\",\n \"preview\": \"vite preview\",\n \"make-i18n\": \"node scripts/make-i18n-translations.cjs\",\n \"prelint\": \"npm run make-i18n\",\n \"lint\": \"npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}\",\n \"lint:fix\": \"eslint src --fix && prettier --write src/**/*.{ts,tsx}\",\n \"postinstall\": \"node -e \\\"if (process.env.npm_config_global === 'true') { console.log('\\\\n\\\\x1b[32m\\\\x1b[1m\\\\u2713 @openhands/agent-canvas installed!\\\\x1b[0m\\\\n\\\\nTo start Agent Canvas, run:\\\\n\\\\n \\\\x1b[36m\\\\x1b[1magent-canvas\\\\x1b[0m\\\\n\\\\nThis launches the full stack at \\\\x1b[36mhttp://localhost:8000\\\\x1b[0m.\\\\n\\\\nDocs: https://docs.openhands.dev/openhands/usage/agent-canvas/setup\\\\n') }\\\"\",\n \"prepare\": \"husky\",\n \"typecheck\": \"react-router typegen && tsc\",\n \"typecheck:staged\": \"react-router typegen && npx tsc --noEmit --skipLibCheck\",\n \"check-translation-completeness\": \"node scripts/check-translation-completeness.cjs\",\n \"build:app\": \"npm run make-i18n && react-router build\",\n \"build:lib\": \"npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true vite build && tsc -p tsconfig.lib.json\",\n \"build:docker\": \"node scripts/docker-build.mjs\",\n \"example:acp-docker:env\": \"node scripts/gen-acp-docker-env.mjs\",\n \"predesktop\": \"node scripts/brand-dev-electron.mjs\",\n \"desktop\": \"npm run build:app && electron electron\",\n \"build:desktop\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && electron-builder --config electron-builder.config.mjs --publish never\",\n \"build:desktop:universal\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && cross-env ELECTRON_ARCH=universal electron-builder --config electron-builder.config.mjs --publish never\",\n \"download-uv\": \"node scripts/download-uv.mjs\",\n \"download-node\": \"node scripts/download-node.mjs\",\n \"generate-icons\": \"node scripts/generate-icons.mjs\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,tsx,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"src/**/*.{ts,tsx}\": [\n \"node scripts/run-staged-typecheck.mjs\"\n ],\n \"src/**/*\": [\n \"npm run check-translation-completeness\"\n ]\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"3.3.6\",\n \"@eslint/js\": \"9.39.4\",\n \"@mswjs/socket.io-binding\": \"0.2.0\",\n \"@playwright/test\": \"1.62.1\",\n \"@react-router/dev\": \"7.18.2\",\n \"@stryker-mutator/core\": \"9.6.1\",\n \"@stryker-mutator/vitest-runner\": \"9.6.1\",\n \"@tailwindcss/typography\": \"0.5.20\",\n \"@tanstack/eslint-plugin-query\": \"5.101.4\",\n \"@testing-library/dom\": \"10.4.1\",\n \"@testing-library/jest-dom\": \"7.0.0\",\n \"@testing-library/react\": \"16.3.2\",\n \"@testing-library/user-event\": \"14.6.1\",\n \"@types/mdast\": \"4.0.4\",\n \"@types/node\": \"26.1.2\",\n \"@types/react\": \"19.2.18\",\n \"@types/react-dom\": \"19.2.4\",\n \"@types/react-syntax-highlighter\": \"15.5.13\",\n \"@typescript-eslint/eslint-plugin\": \"8.65.0\",\n \"@typescript-eslint/parser\": \"8.65.0\",\n \"@vercel/react-router\": \"1.3.0\",\n \"@vitest/coverage-v8\": \"4.1.10\",\n \"cross-env\": \"10.1.0\",\n \"electron\": \"42.3.3\",\n \"electron-builder\": \"26.15.3\",\n \"eslint\": \"9.39.5\",\n \"eslint-config-prettier\": \"10.1.8\",\n \"eslint-import-resolver-typescript\": \"4.4.5\",\n \"eslint-plugin-i18next\": \"6.1.5\",\n \"eslint-plugin-import-x\": \"4.17.1\",\n \"eslint-plugin-jsx-a11y\": \"6.10.2\",\n \"eslint-plugin-prettier\": \"5.5.6\",\n \"eslint-plugin-react\": \"7.37.5\",\n \"eslint-plugin-react-hooks\": \"7.1.1\",\n \"eslint-plugin-unused-imports\": \"4.4.1\",\n \"globals\": \"16.5.0\",\n \"husky\": \"9.1.7\",\n \"jsdom\": \"30.0.1\",\n \"lint-staged\": \"17.3.0\",\n \"msw\": \"2.15.0\",\n \"png2icons\": \"2.0.1\",\n \"postcss-prefix-selector\": \"2.1.1\",\n \"prettier\": \"3.8.3\",\n \"tailwindcss\": \"4.3.3\",\n \"typescript\": \"6.0.3\",\n \"vite-plugin-svgr\": \"5.2.0\",\n \"vitest\": \"4.1.10\"\n },\n \"packageManager\": \"npm@10.5.0\",\n \"volta\": {\n \"node\": \"22.12.0\"\n },\n \"msw\": {\n \"workerDirectory\": [\n \"public\"\n ]\n },\n \"overrides\": {\n \"@vercel/static-config\": {\n \"ajv\": \"8.20.0\"\n },\n \"dompurify\": \"3.4.12\",\n \"typed-rest-client\": {\n \"qs\": \"6.15.3\"\n }\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"build\",\n \"config\",\n \"scripts\",\n \"tools\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./browser\": {\n \"types\": \"./dist/components/browser/index.d.ts\",\n \"import\": \"./dist/components/browser/index.js\",\n \"require\": \"./dist/components/browser/index.cjs\"\n },\n \"./conversation\": {\n \"types\": \"./dist/components/conversation/index.d.ts\",\n \"import\": \"./dist/components/conversation/index.js\",\n \"require\": \"./dist/components/conversation/index.cjs\"\n },\n \"./files\": {\n \"types\": \"./dist/components/files/index.d.ts\",\n \"import\": \"./dist/components/files/index.js\",\n \"require\": \"./dist/components/files/index.cjs\"\n },\n \"./settings\": {\n \"types\": \"./dist/components/settings/index.d.ts\",\n \"import\": \"./dist/components/settings/index.js\",\n \"require\": \"./dist/components/settings/index.cjs\"\n },\n \"./sidebar\": {\n \"types\": \"./dist/components/sidebar/index.d.ts\",\n \"import\": \"./dist/components/sidebar/index.js\",\n \"require\": \"./dist/components/sidebar/index.cjs\"\n },\n \"./terminal\": {\n \"types\": \"./dist/components/terminal/index.d.ts\",\n \"import\": \"./dist/components/terminal/index.js\",\n \"require\": \"./dist/components/terminal/index.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.js\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"peerDependencies\": {\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"react-router\": \"7.18.2\"\n }\n}\n"],"mappings":""}
|
package/dist/package.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var e = {
|
|
2
2
|
name: "@openhands/agent-canvas",
|
|
3
|
-
version: "1.
|
|
3
|
+
version: "1.13.0",
|
|
4
4
|
description: "Agent Canvas UI for OpenHands - run AI coding agents with a visual interface",
|
|
5
5
|
license: "MIT",
|
|
6
6
|
private: !1,
|
|
@@ -15,10 +15,10 @@ var e = {
|
|
|
15
15
|
engines: { node: ">=22.12.0" },
|
|
16
16
|
dependencies: {
|
|
17
17
|
"@heroui/react": "2.8.10",
|
|
18
|
-
"@microlink/react-json-view": "1.31.
|
|
18
|
+
"@microlink/react-json-view": "1.31.25",
|
|
19
19
|
"@monaco-editor/react": "4.7.0",
|
|
20
20
|
"@openhands/extensions": "0.16.0",
|
|
21
|
-
"@openhands/typescript-client": "1.
|
|
21
|
+
"@openhands/typescript-client": "1.38.0",
|
|
22
22
|
"@react-router/node": "7.18.2",
|
|
23
23
|
"@react-router/serve": "7.18.2",
|
|
24
24
|
"@tailwindcss/vite": "4.3.3",
|
|
@@ -35,7 +35,7 @@ var e = {
|
|
|
35
35
|
httpxy: "0.5.3",
|
|
36
36
|
i18next: "26.3.6",
|
|
37
37
|
"i18next-browser-languagedetector": "8.2.1",
|
|
38
|
-
"i18next-http-backend": "4.0.
|
|
38
|
+
"i18next-http-backend": "4.0.1",
|
|
39
39
|
isbot: "5.1.39",
|
|
40
40
|
"lucide-react": "1.25.0",
|
|
41
41
|
"monaco-editor": "0.56.0",
|
|
@@ -63,7 +63,7 @@ var e = {
|
|
|
63
63
|
vite: "8.0.16",
|
|
64
64
|
winston: "3.19.0",
|
|
65
65
|
"winston-daily-rotate-file": "5.0.0",
|
|
66
|
-
zustand: "5.0.
|
|
66
|
+
zustand: "5.0.14"
|
|
67
67
|
},
|
|
68
68
|
scripts: {
|
|
69
69
|
dev: "node --env-file-if-exists=.env scripts/dev-with-automation.mjs",
|
|
@@ -90,6 +90,7 @@ var e = {
|
|
|
90
90
|
prelint: "npm run make-i18n",
|
|
91
91
|
lint: "npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}",
|
|
92
92
|
"lint:fix": "eslint src --fix && prettier --write src/**/*.{ts,tsx}",
|
|
93
|
+
postinstall: "node -e \"if (process.env.npm_config_global === 'true') { console.log('\\n\\x1b[32m\\x1b[1m\\u2713 @openhands/agent-canvas installed!\\x1b[0m\\n\\nTo start Agent Canvas, run:\\n\\n \\x1b[36m\\x1b[1magent-canvas\\x1b[0m\\n\\nThis launches the full stack at \\x1b[36mhttp://localhost:8000\\x1b[0m.\\n\\nDocs: https://docs.openhands.dev/openhands/usage/agent-canvas/setup\\n') }\"",
|
|
93
94
|
prepare: "husky",
|
|
94
95
|
typecheck: "react-router typegen && tsc",
|
|
95
96
|
"typecheck:staged": "react-router typegen && npx tsc --noEmit --skipLibCheck",
|
|
@@ -112,10 +113,10 @@ var e = {
|
|
|
112
113
|
"src/**/*": ["npm run check-translation-completeness"]
|
|
113
114
|
},
|
|
114
115
|
devDependencies: {
|
|
115
|
-
"@eslint/eslintrc": "3.3.
|
|
116
|
+
"@eslint/eslintrc": "3.3.6",
|
|
116
117
|
"@eslint/js": "9.39.4",
|
|
117
118
|
"@mswjs/socket.io-binding": "0.2.0",
|
|
118
|
-
"@playwright/test": "1.62.
|
|
119
|
+
"@playwright/test": "1.62.1",
|
|
119
120
|
"@react-router/dev": "7.18.2",
|
|
120
121
|
"@stryker-mutator/core": "9.6.1",
|
|
121
122
|
"@stryker-mutator/vitest-runner": "9.6.1",
|
|
@@ -127,30 +128,30 @@ var e = {
|
|
|
127
128
|
"@testing-library/user-event": "14.6.1",
|
|
128
129
|
"@types/mdast": "4.0.4",
|
|
129
130
|
"@types/node": "26.1.2",
|
|
130
|
-
"@types/react": "19.2.
|
|
131
|
-
"@types/react-dom": "19.2.
|
|
131
|
+
"@types/react": "19.2.18",
|
|
132
|
+
"@types/react-dom": "19.2.4",
|
|
132
133
|
"@types/react-syntax-highlighter": "15.5.13",
|
|
133
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
134
|
-
"@typescript-eslint/parser": "8.
|
|
134
|
+
"@typescript-eslint/eslint-plugin": "8.65.0",
|
|
135
|
+
"@typescript-eslint/parser": "8.65.0",
|
|
135
136
|
"@vercel/react-router": "1.3.0",
|
|
136
137
|
"@vitest/coverage-v8": "4.1.10",
|
|
137
138
|
"cross-env": "10.1.0",
|
|
138
139
|
electron: "42.3.3",
|
|
139
140
|
"electron-builder": "26.15.3",
|
|
140
|
-
eslint: "9.39.
|
|
141
|
+
eslint: "9.39.5",
|
|
141
142
|
"eslint-config-prettier": "10.1.8",
|
|
142
143
|
"eslint-import-resolver-typescript": "4.4.5",
|
|
143
144
|
"eslint-plugin-i18next": "6.1.5",
|
|
144
|
-
"eslint-plugin-import-x": "4.
|
|
145
|
+
"eslint-plugin-import-x": "4.17.1",
|
|
145
146
|
"eslint-plugin-jsx-a11y": "6.10.2",
|
|
146
|
-
"eslint-plugin-prettier": "5.5.
|
|
147
|
+
"eslint-plugin-prettier": "5.5.6",
|
|
147
148
|
"eslint-plugin-react": "7.37.5",
|
|
148
149
|
"eslint-plugin-react-hooks": "7.1.1",
|
|
149
150
|
"eslint-plugin-unused-imports": "4.4.1",
|
|
150
151
|
globals: "16.5.0",
|
|
151
152
|
husky: "9.1.7",
|
|
152
|
-
jsdom: "30.0.
|
|
153
|
-
"lint-staged": "
|
|
153
|
+
jsdom: "30.0.1",
|
|
154
|
+
"lint-staged": "17.3.0",
|
|
154
155
|
msw: "2.15.0",
|
|
155
156
|
png2icons: "2.0.1",
|
|
156
157
|
"postcss-prefix-selector": "2.1.1",
|
package/dist/package.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.js","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.11.0\",\n \"description\": \"Agent Canvas UI for OpenHands - run AI coding agents with a visual interface\",\n \"license\": \"MIT\",\n \"private\": false,\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/OpenHands/OpenHands\"\n },\n \"homepage\": \"https://github.com/OpenHands/OpenHands#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/OpenHands/OpenHands/issues\"\n },\n \"bin\": {\n \"agent-canvas\": \"bin/agent-canvas.mjs\"\n },\n \"engines\": {\n \"node\": \">=22.12.0\"\n },\n \"dependencies\": {\n \"@heroui/react\": \"2.8.10\",\n \"@microlink/react-json-view\": \"1.31.20\",\n \"@monaco-editor/react\": \"4.7.0\",\n \"@openhands/extensions\": \"0.16.0\",\n \"@openhands/typescript-client\": \"1.36.1\",\n \"@react-router/node\": \"7.18.2\",\n \"@react-router/serve\": \"7.18.2\",\n \"@tailwindcss/vite\": \"4.3.3\",\n \"@tanstack/react-query\": \"5.101.4\",\n \"@types/shell-quote\": \"1.7.5\",\n \"@uidotdev/usehooks\": \"2.4.1\",\n \"@xterm/addon-fit\": \"0.11.0\",\n \"@xterm/xterm\": \"6.0.0\",\n \"axios\": \"1.18.0\",\n \"class-variance-authority\": \"0.7.1\",\n \"clsx\": \"2.1.1\",\n \"downshift\": \"9.3.2\",\n \"framer-motion\": \"12.38.0\",\n \"httpxy\": \"0.5.3\",\n \"i18next\": \"26.3.6\",\n \"i18next-browser-languagedetector\": \"8.2.1\",\n \"i18next-http-backend\": \"4.0.0\",\n \"isbot\": \"5.1.39\",\n \"lucide-react\": \"1.25.0\",\n \"monaco-editor\": \"0.56.0\",\n \"posthog-js\": \"1.380.0\",\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"react-hot-toast\": \"2.6.0\",\n \"react-i18next\": \"17.0.11\",\n \"react-icons\": \"5.6.0\",\n \"react-markdown\": \"10.1.0\",\n \"react-router\": \"7.18.2\",\n \"react-syntax-highlighter\": \"16.1.1\",\n \"rehype-raw\": \"7.0.0\",\n \"rehype-sanitize\": \"6.0.0\",\n \"remark-breaks\": \"4.0.0\",\n \"remark-gfm\": \"4.0.1\",\n \"shell-quote\": \"1.9.0\",\n \"sirv\": \"3.0.2\",\n \"sirv-cli\": \"3.0.1\",\n \"socket.io-client\": \"4.8.3\",\n \"tailwind-merge\": \"3.6.0\",\n \"tailwind-scrollbar\": \"4.0.2\",\n \"unist-util-visit\": \"5.1.0\",\n \"uuid\": \"14.0.0\",\n \"vite\": \"8.0.16\",\n \"winston\": \"3.19.0\",\n \"winston-daily-rotate-file\": \"5.0.0\",\n \"zustand\": \"5.0.12\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env scripts/dev-with-automation.mjs\",\n \"dev:static\": \"node --env-file-if-exists=.env scripts/dev-static.mjs\",\n \"dev:extra-backend\": \"node --env-file-if-exists=.env scripts/dev-extra-backend.mjs\",\n \"dev:minimal\": \"node --env-file-if-exists=.env scripts/dev-safe.mjs\",\n \"dev:frontend\": \"npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev\",\n \"dev:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev\",\n \"build\": \"npm run build:app\",\n \"build:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router build\",\n \"start\": \"npx sirv-cli build/ --single\",\n \"test\": \"npm run make-i18n && vitest run\",\n \"test:e2e\": \"playwright test --pass-with-no-tests\",\n \"test:e2e:live\": \"node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs\",\n \"test:e2e:mock-llm\": \"playwright test --config=playwright.mock-llm.config.ts\",\n \"test:e2e:mock-llm:docker\": \"playwright test --config=playwright.mock-llm-docker.config.ts\",\n \"test:coverage\": \"npm run make-i18n && vitest run --coverage\",\n \"test:mutation\": \"npm run make-i18n && stryker run\",\n \"test:mutation:diff\": \"npm run make-i18n && node scripts/stryker-diff.mjs\",\n \"test:mutation:incremental\": \"npm run make-i18n && stryker run --incremental\",\n \"dev_wsl\": \"VITE_WATCH_USE_POLLING=true vite\",\n \"preview\": \"vite preview\",\n \"make-i18n\": \"node scripts/make-i18n-translations.cjs\",\n \"prelint\": \"npm run make-i18n\",\n \"lint\": \"npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}\",\n \"lint:fix\": \"eslint src --fix && prettier --write src/**/*.{ts,tsx}\",\n \"prepare\": \"husky\",\n \"typecheck\": \"react-router typegen && tsc\",\n \"typecheck:staged\": \"react-router typegen && npx tsc --noEmit --skipLibCheck\",\n \"check-translation-completeness\": \"node scripts/check-translation-completeness.cjs\",\n \"build:app\": \"npm run make-i18n && react-router build\",\n \"build:lib\": \"npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true vite build && tsc -p tsconfig.lib.json\",\n \"build:docker\": \"node scripts/docker-build.mjs\",\n \"example:acp-docker:env\": \"node scripts/gen-acp-docker-env.mjs\",\n \"predesktop\": \"node scripts/brand-dev-electron.mjs\",\n \"desktop\": \"npm run build:app && electron electron\",\n \"build:desktop\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && electron-builder --config electron-builder.config.mjs --publish never\",\n \"build:desktop:universal\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && cross-env ELECTRON_ARCH=universal electron-builder --config electron-builder.config.mjs --publish never\",\n \"download-uv\": \"node scripts/download-uv.mjs\",\n \"download-node\": \"node scripts/download-node.mjs\",\n \"generate-icons\": \"node scripts/generate-icons.mjs\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,tsx,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"src/**/*.{ts,tsx}\": [\n \"node scripts/run-staged-typecheck.mjs\"\n ],\n \"src/**/*\": [\n \"npm run check-translation-completeness\"\n ]\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"3.3.1\",\n \"@eslint/js\": \"9.39.4\",\n \"@mswjs/socket.io-binding\": \"0.2.0\",\n \"@playwright/test\": \"1.62.0\",\n \"@react-router/dev\": \"7.18.2\",\n \"@stryker-mutator/core\": \"9.6.1\",\n \"@stryker-mutator/vitest-runner\": \"9.6.1\",\n \"@tailwindcss/typography\": \"0.5.20\",\n \"@tanstack/eslint-plugin-query\": \"5.101.4\",\n \"@testing-library/dom\": \"10.4.1\",\n \"@testing-library/jest-dom\": \"7.0.0\",\n \"@testing-library/react\": \"16.3.2\",\n \"@testing-library/user-event\": \"14.6.1\",\n \"@types/mdast\": \"4.0.4\",\n \"@types/node\": \"26.1.2\",\n \"@types/react\": \"19.2.17\",\n \"@types/react-dom\": \"19.2.3\",\n \"@types/react-syntax-highlighter\": \"15.5.13\",\n \"@typescript-eslint/eslint-plugin\": \"8.59.2\",\n \"@typescript-eslint/parser\": \"8.59.2\",\n \"@vercel/react-router\": \"1.3.0\",\n \"@vitest/coverage-v8\": \"4.1.10\",\n \"cross-env\": \"10.1.0\",\n \"electron\": \"42.3.3\",\n \"electron-builder\": \"26.15.3\",\n \"eslint\": \"9.39.4\",\n \"eslint-config-prettier\": \"10.1.8\",\n \"eslint-import-resolver-typescript\": \"4.4.5\",\n \"eslint-plugin-i18next\": \"6.1.5\",\n \"eslint-plugin-import-x\": \"4.16.2\",\n \"eslint-plugin-jsx-a11y\": \"6.10.2\",\n \"eslint-plugin-prettier\": \"5.5.5\",\n \"eslint-plugin-react\": \"7.37.5\",\n \"eslint-plugin-react-hooks\": \"7.1.1\",\n \"eslint-plugin-unused-imports\": \"4.4.1\",\n \"globals\": \"16.5.0\",\n \"husky\": \"9.1.7\",\n \"jsdom\": \"30.0.0\",\n \"lint-staged\": \"16.4.0\",\n \"msw\": \"2.15.0\",\n \"png2icons\": \"2.0.1\",\n \"postcss-prefix-selector\": \"2.1.1\",\n \"prettier\": \"3.8.3\",\n \"tailwindcss\": \"4.3.3\",\n \"typescript\": \"6.0.3\",\n \"vite-plugin-svgr\": \"5.2.0\",\n \"vitest\": \"4.1.10\"\n },\n \"packageManager\": \"npm@10.5.0\",\n \"volta\": {\n \"node\": \"22.12.0\"\n },\n \"msw\": {\n \"workerDirectory\": [\n \"public\"\n ]\n },\n \"overrides\": {\n \"@vercel/static-config\": {\n \"ajv\": \"8.20.0\"\n },\n \"dompurify\": \"3.4.12\",\n \"typed-rest-client\": {\n \"qs\": \"6.15.3\"\n }\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"build\",\n \"config\",\n \"scripts\",\n \"tools\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./browser\": {\n \"types\": \"./dist/components/browser/index.d.ts\",\n \"import\": \"./dist/components/browser/index.js\",\n \"require\": \"./dist/components/browser/index.cjs\"\n },\n \"./conversation\": {\n \"types\": \"./dist/components/conversation/index.d.ts\",\n \"import\": \"./dist/components/conversation/index.js\",\n \"require\": \"./dist/components/conversation/index.cjs\"\n },\n \"./files\": {\n \"types\": \"./dist/components/files/index.d.ts\",\n \"import\": \"./dist/components/files/index.js\",\n \"require\": \"./dist/components/files/index.cjs\"\n },\n \"./settings\": {\n \"types\": \"./dist/components/settings/index.d.ts\",\n \"import\": \"./dist/components/settings/index.js\",\n \"require\": \"./dist/components/settings/index.cjs\"\n },\n \"./sidebar\": {\n \"types\": \"./dist/components/sidebar/index.d.ts\",\n \"import\": \"./dist/components/sidebar/index.js\",\n \"require\": \"./dist/components/sidebar/index.cjs\"\n },\n \"./terminal\": {\n \"types\": \"./dist/components/terminal/index.d.ts\",\n \"import\": \"./dist/components/terminal/index.js\",\n \"require\": \"./dist/components/terminal/index.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.js\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"peerDependencies\": {\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"react-router\": \"7.18.2\"\n }\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"package.js","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.13.0\",\n \"description\": \"Agent Canvas UI for OpenHands - run AI coding agents with a visual interface\",\n \"license\": \"MIT\",\n \"private\": false,\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/OpenHands/OpenHands\"\n },\n \"homepage\": \"https://github.com/OpenHands/OpenHands#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/OpenHands/OpenHands/issues\"\n },\n \"bin\": {\n \"agent-canvas\": \"bin/agent-canvas.mjs\"\n },\n \"engines\": {\n \"node\": \">=22.12.0\"\n },\n \"dependencies\": {\n \"@heroui/react\": \"2.8.10\",\n \"@microlink/react-json-view\": \"1.31.25\",\n \"@monaco-editor/react\": \"4.7.0\",\n \"@openhands/extensions\": \"0.16.0\",\n \"@openhands/typescript-client\": \"1.38.0\",\n \"@react-router/node\": \"7.18.2\",\n \"@react-router/serve\": \"7.18.2\",\n \"@tailwindcss/vite\": \"4.3.3\",\n \"@tanstack/react-query\": \"5.101.4\",\n \"@types/shell-quote\": \"1.7.5\",\n \"@uidotdev/usehooks\": \"2.4.1\",\n \"@xterm/addon-fit\": \"0.11.0\",\n \"@xterm/xterm\": \"6.0.0\",\n \"axios\": \"1.18.0\",\n \"class-variance-authority\": \"0.7.1\",\n \"clsx\": \"2.1.1\",\n \"downshift\": \"9.3.2\",\n \"framer-motion\": \"12.38.0\",\n \"httpxy\": \"0.5.3\",\n \"i18next\": \"26.3.6\",\n \"i18next-browser-languagedetector\": \"8.2.1\",\n \"i18next-http-backend\": \"4.0.1\",\n \"isbot\": \"5.1.39\",\n \"lucide-react\": \"1.25.0\",\n \"monaco-editor\": \"0.56.0\",\n \"posthog-js\": \"1.380.0\",\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"react-hot-toast\": \"2.6.0\",\n \"react-i18next\": \"17.0.11\",\n \"react-icons\": \"5.6.0\",\n \"react-markdown\": \"10.1.0\",\n \"react-router\": \"7.18.2\",\n \"react-syntax-highlighter\": \"16.1.1\",\n \"rehype-raw\": \"7.0.0\",\n \"rehype-sanitize\": \"6.0.0\",\n \"remark-breaks\": \"4.0.0\",\n \"remark-gfm\": \"4.0.1\",\n \"shell-quote\": \"1.9.0\",\n \"sirv\": \"3.0.2\",\n \"sirv-cli\": \"3.0.1\",\n \"socket.io-client\": \"4.8.3\",\n \"tailwind-merge\": \"3.6.0\",\n \"tailwind-scrollbar\": \"4.0.2\",\n \"unist-util-visit\": \"5.1.0\",\n \"uuid\": \"14.0.0\",\n \"vite\": \"8.0.16\",\n \"winston\": \"3.19.0\",\n \"winston-daily-rotate-file\": \"5.0.0\",\n \"zustand\": \"5.0.14\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env scripts/dev-with-automation.mjs\",\n \"dev:static\": \"node --env-file-if-exists=.env scripts/dev-static.mjs\",\n \"dev:extra-backend\": \"node --env-file-if-exists=.env scripts/dev-extra-backend.mjs\",\n \"dev:minimal\": \"node --env-file-if-exists=.env scripts/dev-safe.mjs\",\n \"dev:frontend\": \"npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev\",\n \"dev:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev\",\n \"build\": \"npm run build:app\",\n \"build:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router build\",\n \"start\": \"npx sirv-cli build/ --single\",\n \"test\": \"npm run make-i18n && vitest run\",\n \"test:e2e\": \"playwright test --pass-with-no-tests\",\n \"test:e2e:live\": \"node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs\",\n \"test:e2e:mock-llm\": \"playwright test --config=playwright.mock-llm.config.ts\",\n \"test:e2e:mock-llm:docker\": \"playwright test --config=playwright.mock-llm-docker.config.ts\",\n \"test:coverage\": \"npm run make-i18n && vitest run --coverage\",\n \"test:mutation\": \"npm run make-i18n && stryker run\",\n \"test:mutation:diff\": \"npm run make-i18n && node scripts/stryker-diff.mjs\",\n \"test:mutation:incremental\": \"npm run make-i18n && stryker run --incremental\",\n \"dev_wsl\": \"VITE_WATCH_USE_POLLING=true vite\",\n \"preview\": \"vite preview\",\n \"make-i18n\": \"node scripts/make-i18n-translations.cjs\",\n \"prelint\": \"npm run make-i18n\",\n \"lint\": \"npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}\",\n \"lint:fix\": \"eslint src --fix && prettier --write src/**/*.{ts,tsx}\",\n \"postinstall\": \"node -e \\\"if (process.env.npm_config_global === 'true') { console.log('\\\\n\\\\x1b[32m\\\\x1b[1m\\\\u2713 @openhands/agent-canvas installed!\\\\x1b[0m\\\\n\\\\nTo start Agent Canvas, run:\\\\n\\\\n \\\\x1b[36m\\\\x1b[1magent-canvas\\\\x1b[0m\\\\n\\\\nThis launches the full stack at \\\\x1b[36mhttp://localhost:8000\\\\x1b[0m.\\\\n\\\\nDocs: https://docs.openhands.dev/openhands/usage/agent-canvas/setup\\\\n') }\\\"\",\n \"prepare\": \"husky\",\n \"typecheck\": \"react-router typegen && tsc\",\n \"typecheck:staged\": \"react-router typegen && npx tsc --noEmit --skipLibCheck\",\n \"check-translation-completeness\": \"node scripts/check-translation-completeness.cjs\",\n \"build:app\": \"npm run make-i18n && react-router build\",\n \"build:lib\": \"npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true vite build && tsc -p tsconfig.lib.json\",\n \"build:docker\": \"node scripts/docker-build.mjs\",\n \"example:acp-docker:env\": \"node scripts/gen-acp-docker-env.mjs\",\n \"predesktop\": \"node scripts/brand-dev-electron.mjs\",\n \"desktop\": \"npm run build:app && electron electron\",\n \"build:desktop\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && electron-builder --config electron-builder.config.mjs --publish never\",\n \"build:desktop:universal\": \"npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && cross-env ELECTRON_ARCH=universal electron-builder --config electron-builder.config.mjs --publish never\",\n \"download-uv\": \"node scripts/download-uv.mjs\",\n \"download-node\": \"node scripts/download-node.mjs\",\n \"generate-icons\": \"node scripts/generate-icons.mjs\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,tsx,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"src/**/*.{ts,tsx}\": [\n \"node scripts/run-staged-typecheck.mjs\"\n ],\n \"src/**/*\": [\n \"npm run check-translation-completeness\"\n ]\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"3.3.6\",\n \"@eslint/js\": \"9.39.4\",\n \"@mswjs/socket.io-binding\": \"0.2.0\",\n \"@playwright/test\": \"1.62.1\",\n \"@react-router/dev\": \"7.18.2\",\n \"@stryker-mutator/core\": \"9.6.1\",\n \"@stryker-mutator/vitest-runner\": \"9.6.1\",\n \"@tailwindcss/typography\": \"0.5.20\",\n \"@tanstack/eslint-plugin-query\": \"5.101.4\",\n \"@testing-library/dom\": \"10.4.1\",\n \"@testing-library/jest-dom\": \"7.0.0\",\n \"@testing-library/react\": \"16.3.2\",\n \"@testing-library/user-event\": \"14.6.1\",\n \"@types/mdast\": \"4.0.4\",\n \"@types/node\": \"26.1.2\",\n \"@types/react\": \"19.2.18\",\n \"@types/react-dom\": \"19.2.4\",\n \"@types/react-syntax-highlighter\": \"15.5.13\",\n \"@typescript-eslint/eslint-plugin\": \"8.65.0\",\n \"@typescript-eslint/parser\": \"8.65.0\",\n \"@vercel/react-router\": \"1.3.0\",\n \"@vitest/coverage-v8\": \"4.1.10\",\n \"cross-env\": \"10.1.0\",\n \"electron\": \"42.3.3\",\n \"electron-builder\": \"26.15.3\",\n \"eslint\": \"9.39.5\",\n \"eslint-config-prettier\": \"10.1.8\",\n \"eslint-import-resolver-typescript\": \"4.4.5\",\n \"eslint-plugin-i18next\": \"6.1.5\",\n \"eslint-plugin-import-x\": \"4.17.1\",\n \"eslint-plugin-jsx-a11y\": \"6.10.2\",\n \"eslint-plugin-prettier\": \"5.5.6\",\n \"eslint-plugin-react\": \"7.37.5\",\n \"eslint-plugin-react-hooks\": \"7.1.1\",\n \"eslint-plugin-unused-imports\": \"4.4.1\",\n \"globals\": \"16.5.0\",\n \"husky\": \"9.1.7\",\n \"jsdom\": \"30.0.1\",\n \"lint-staged\": \"17.3.0\",\n \"msw\": \"2.15.0\",\n \"png2icons\": \"2.0.1\",\n \"postcss-prefix-selector\": \"2.1.1\",\n \"prettier\": \"3.8.3\",\n \"tailwindcss\": \"4.3.3\",\n \"typescript\": \"6.0.3\",\n \"vite-plugin-svgr\": \"5.2.0\",\n \"vitest\": \"4.1.10\"\n },\n \"packageManager\": \"npm@10.5.0\",\n \"volta\": {\n \"node\": \"22.12.0\"\n },\n \"msw\": {\n \"workerDirectory\": [\n \"public\"\n ]\n },\n \"overrides\": {\n \"@vercel/static-config\": {\n \"ajv\": \"8.20.0\"\n },\n \"dompurify\": \"3.4.12\",\n \"typed-rest-client\": {\n \"qs\": \"6.15.3\"\n }\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"build\",\n \"config\",\n \"scripts\",\n \"tools\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./browser\": {\n \"types\": \"./dist/components/browser/index.d.ts\",\n \"import\": \"./dist/components/browser/index.js\",\n \"require\": \"./dist/components/browser/index.cjs\"\n },\n \"./conversation\": {\n \"types\": \"./dist/components/conversation/index.d.ts\",\n \"import\": \"./dist/components/conversation/index.js\",\n \"require\": \"./dist/components/conversation/index.cjs\"\n },\n \"./files\": {\n \"types\": \"./dist/components/files/index.d.ts\",\n \"import\": \"./dist/components/files/index.js\",\n \"require\": \"./dist/components/files/index.cjs\"\n },\n \"./settings\": {\n \"types\": \"./dist/components/settings/index.d.ts\",\n \"import\": \"./dist/components/settings/index.js\",\n \"require\": \"./dist/components/settings/index.cjs\"\n },\n \"./sidebar\": {\n \"types\": \"./dist/components/sidebar/index.d.ts\",\n \"import\": \"./dist/components/sidebar/index.js\",\n \"require\": \"./dist/components/sidebar/index.cjs\"\n },\n \"./terminal\": {\n \"types\": \"./dist/components/terminal/index.d.ts\",\n \"import\": \"./dist/components/terminal/index.js\",\n \"require\": \"./dist/components/terminal/index.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.js\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"peerDependencies\": {\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"react-router\": \"7.18.2\"\n }\n}\n"],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../node_modules/react-i18next/dist/es/useTranslation.cjs"),n=require("../i18n/declaration.cjs"),r=require("../i18n/index.cjs"),i=require("../utils/retrieve-axios-error-message.cjs"),a=require("../utils/custom-toast-handlers.cjs"),o=require("../services/telemetry.cjs"),s=require("../contexts/active-backend-context.cjs"),c=require("../services/settings.cjs"),l=require("../hooks/query/use-llm-profiles.cjs"),
|
|
1
|
+
const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../node_modules/react-i18next/dist/es/useTranslation.cjs"),n=require("../i18n/declaration.cjs"),r=require("../i18n/index.cjs"),i=require("../utils/retrieve-axios-error-message.cjs"),a=require("../utils/custom-toast-handlers.cjs"),o=require("../services/telemetry.cjs"),s=require("../contexts/active-backend-context.cjs"),c=require("../services/settings.cjs"),l=require("../utils/format-model-name.cjs"),u=require("../hooks/query/use-llm-profiles.cjs"),d=require("../hooks/query/use-settings.cjs"),f=require("../components/shared/navigation-link.cjs"),p=require("../components/features/settings/brand-button.cjs"),m=require("../hooks/mutation/use-save-settings.cjs"),h=require("../components/features/settings/settings-switch.cjs"),g=require("../components/features/settings/settings-input.cjs"),_=require("../components/features/settings/settings-dropdown-input.cjs"),v=require("../components/features/settings/app-settings/language-input.cjs"),y=require("../components/features/settings/app-settings/theme-input.cjs"),b=require("../components/features/settings/app-settings/app-settings-inputs-skeleton.cjs");let x=require("react");x=e.__toESM(x,1);let S=require("react/jsx-runtime");var C=`__automatic__`;function w(){let{t:e}=t.useTranslation(`openhands`),{mutate:w,isPending:T}=m.useSaveSettings(),{data:E,isLoading:D}=d.useSettings(),O=s.useActiveBackend().backend.kind===`cloud`,{data:k,isLoading:A}=u.useLlmProfiles(),[j,M]=x.default.useState(!1),[N,P]=x.default.useState(!1),[F,I]=x.default.useState(!1),[L,R]=x.default.useState(!1),[z,B]=x.default.useState(!1),[V,H]=x.default.useState(void 0),U=x.default.useMemo(()=>{let e=E?.title_llm_profile??null;return!e||!k||k.profiles.some(t=>t.name===e)?e:null},[k,E?.title_llm_profile]),W=V===void 0?U:V,G=x.default.useMemo(()=>[{key:C,label:e(n.I18nKey.SETTINGS$TITLE_GENERATION_AUTOMATIC)},...k?.profiles.map(t=>({key:t.name,label:t.model?e(n.I18nKey.SETTINGS$TITLE_GENERATION_PROFILE_OPTION,{name:t.name,model:l.formatModelNameForDisplay(t.model)??t.model}):t.name}))??[]],[k?.profiles,e]),K=t=>{let s=t.get(`language-input`)?.toString(),l=r.AvailableLanguages.find(({label:e})=>e===s)?.value||c.DEFAULT_SETTINGS.language,u=O?!0:t.get(`enable-analytics-switch`)?.toString()===`on`,d=t.get(`enable-sound-notifications-switch`)?.toString()===`on`,f=t.get(`git-user-name-input`)?.toString()||c.DEFAULT_SETTINGS.git_user_name,p=t.get(`git-user-email-input`)?.toString()||c.DEFAULT_SETTINGS.git_user_email;w({language:l,...!O&&{user_consents_to_analytics:u},enable_sound_notifications:d,git_user_name:f,git_user_email:p,title_llm_profile:W},{onSuccess:()=>{o.setTelemetryConsent(u?`granted`:`denied`),a.displaySuccessToast(e(n.I18nKey.SETTINGS$SAVED))},onError:t=>{a.displayErrorToast(i.retrieveAxiosErrorMessage(t)||e(n.I18nKey.ERROR$GENERIC))},onSettled:()=>{M(!1),P(!1),I(!1),R(!1),B(!1),H(void 0)}})},q=e=>{let t=r.AvailableLanguages.find(({label:t})=>t===e)?.label,n=r.AvailableLanguages.find(({value:e})=>e===E?.language)?.label;M(t!==n)},J=e=>{P(e!==(E?.user_consents_to_analytics??!0))},Y=e=>{I(e!==!!E?.enable_sound_notifications)},X=e=>{let t=E?.git_user_name;R(e!==t)},Z=e=>{let t=E?.git_user_email;B(e!==t)},Q=!j&&!N&&!F&&W===U&&!L&&!z,$=!E||D||A||T;return(0,S.jsxs)(`form`,{"data-testid":`app-settings-screen`,action:K,className:`flex flex-col gap-6`,children:[$&&(0,S.jsx)(b.AppSettingsInputsSkeleton,{}),!$&&(0,S.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,S.jsx)(v.LanguageInput,{name:`language-input`,defaultKey:E.language,onChange:q}),(0,S.jsx)(y.ThemeInput,{}),(0,S.jsx)(h.SettingsSwitch,{testId:`enable-analytics-switch`,name:O?void 0:`enable-analytics-switch`,defaultIsToggled:O?!0:E.user_consents_to_analytics??!0,isToggled:O?!0:void 0,isDisabled:O,onToggle:O?void 0:J,children:e(n.I18nKey.ANALYTICS$SEND_ANONYMOUS_DATA)}),(0,S.jsx)(h.SettingsSwitch,{testId:`enable-sound-notifications-switch`,name:`enable-sound-notifications-switch`,defaultIsToggled:!!E.enable_sound_notifications,onToggle:Y,children:e(n.I18nKey.SETTINGS$SOUND_NOTIFICATIONS)}),(0,S.jsxs)(`div`,{className:`border-t border-[var(--oh-border)] pt-6 mt-2`,children:[(0,S.jsx)(`h3`,{className:`text-lg font-medium mb-2`,children:e(n.I18nKey.SETTINGS$CONVERSATION_TITLES)}),(0,S.jsx)(`p`,{className:`mb-4 text-sm leading-5 text-tertiary-light`,children:e(n.I18nKey.SETTINGS$TITLE_GENERATION_DESCRIPTION)}),(0,S.jsx)(_.SettingsDropdownInput,{testId:`title-llm-profile-input`,name:`title-llm-profile-input`,label:e(n.I18nKey.SETTINGS$TITLE_GENERATION_MODEL),items:G,selectedKey:W??C,onSelectionChange:e=>{let t=e?.toString();H(!t||t===C?null:t)}}),(0,S.jsx)(f.NavigationLink,{to:`/settings/llm`,className:`mt-3 inline-block text-sm text-primary hover:underline`,children:e(n.I18nKey.SETTINGS$MANAGE_LLM_PROFILES)})]}),(0,S.jsxs)(`div`,{className:`border-t border-[var(--oh-border)] pt-6 mt-2`,children:[(0,S.jsx)(`h3`,{className:`text-lg font-medium mb-2`,children:e(n.I18nKey.SETTINGS$GIT_SETTINGS)}),(0,S.jsx)(`p`,{className:`mb-4 text-sm leading-5 text-tertiary-light`,children:e(n.I18nKey.SETTINGS$GIT_SETTINGS_DESCRIPTION)}),(0,S.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,S.jsx)(g.SettingsInput,{testId:`git-user-name-input`,name:`git-user-name-input`,type:`text`,label:e(n.I18nKey.SETTINGS$GIT_USERNAME),defaultValue:E.git_user_name||``,onChange:X,placeholder:e(n.I18nKey.SETTINGS$GIT_USERNAME_PLACEHOLDER),className:`w-full min-w-0`}),(0,S.jsx)(g.SettingsInput,{testId:`git-user-email-input`,name:`git-user-email-input`,type:`email`,label:e(n.I18nKey.SETTINGS$GIT_EMAIL),defaultValue:E.git_user_email||``,onChange:Z,placeholder:e(n.I18nKey.SETTINGS$GIT_EMAIL_PLACEHOLDER),className:`w-full min-w-0`})]}),(0,S.jsx)(`div`,{className:`flex justify-start pt-4`,children:(0,S.jsxs)(p.BrandButton,{testId:`submit-button`,variant:`primary`,type:`submit`,isDisabled:T||Q,children:[!T&&e(n.I18nKey.SETTINGS$SAVE_CHANGES),T&&e(n.I18nKey.SETTINGS$SAVING)]})})]})]})]})}exports.default=w;
|
|
2
2
|
//# sourceMappingURL=app-settings.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-settings.cjs","names":[],"sources":["../../src/routes/app-settings.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useSaveSettings } from \"#/hooks/mutation/use-save-settings\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { AvailableLanguages } from \"#/i18n\";\nimport { DEFAULT_SETTINGS } from \"#/services/settings\";\nimport { setTelemetryConsent } from \"#/services/telemetry\";\nimport { BrandButton } from \"#/components/features/settings/brand-button\";\nimport { SettingsSwitch } from \"#/components/features/settings/settings-switch\";\nimport { SettingsInput } from \"#/components/features/settings/settings-input\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { LanguageInput } from \"#/components/features/settings/app-settings/language-input\";\nimport { ThemeInput } from \"#/components/features/settings/app-settings/theme-input\";\nimport {\n displayErrorToast,\n displaySuccessToast,\n} from \"#/utils/custom-toast-handlers\";\nimport { retrieveAxiosErrorMessage } from \"#/utils/retrieve-axios-error-message\";\nimport { AppSettingsInputsSkeleton } from \"#/components/features/settings/app-settings/app-settings-inputs-skeleton\";\nimport { SettingsDropdownInput } from \"#/components/features/settings/settings-dropdown-input\";\nimport { NavigationLink } from \"#/components/shared/navigation-link\";\nimport { useLlmProfiles } from \"#/hooks/query/use-llm-profiles\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\n\nconst AUTOMATIC_TITLE_LLM_PROFILE_KEY = \"__automatic__\";\n\nexport function AppSettingsScreen() {\n const { t } = useTranslation(\"openhands\");\n\n const { mutate: saveSettings, isPending } = useSaveSettings();\n const { data: settings, isLoading } = useSettings();\n const activeBackend = useActiveBackend();\n const isCloudBackend = activeBackend.backend.kind === \"cloud\";\n const { data: llmProfiles, isLoading: areLlmProfilesLoading } =\n useLlmProfiles();\n\n const [languageInputHasChanged, setLanguageInputHasChanged] =\n React.useState(false);\n const [analyticsSwitchHasChanged, setAnalyticsSwitchHasChanged] =\n React.useState(false);\n const [\n soundNotificationsSwitchHasChanged,\n setSoundNotificationsSwitchHasChanged,\n ] = React.useState(false);\n const [gitUserNameHasChanged, setGitUserNameHasChanged] =\n React.useState(false);\n const [gitUserEmailHasChanged, setGitUserEmailHasChanged] =\n React.useState(false);\n const [titleLlmProfileInput, setTitleLlmProfileInput] = React.useState<\n string | null | undefined\n >(undefined);\n\n const storedTitleLlmProfile = React.useMemo(() => {\n const preference = settings?.title_llm_profile ?? null;\n if (!preference || !llmProfiles) return preference;\n return llmProfiles.profiles.some((profile) => profile.name === preference)\n ? preference\n : null;\n }, [llmProfiles, settings?.title_llm_profile]);\n const selectedTitleLlmProfile =\n titleLlmProfileInput === undefined\n ? storedTitleLlmProfile\n : titleLlmProfileInput;\n const titleLlmProfileItems = React.useMemo(\n () => [\n {\n key: AUTOMATIC_TITLE_LLM_PROFILE_KEY,\n label: t(I18nKey.SETTINGS$TITLE_GENERATION_AUTOMATIC),\n },\n ...(llmProfiles?.profiles.map((profile) => ({\n key: profile.name,\n label: profile.model\n ? t(I18nKey.SETTINGS$TITLE_GENERATION_PROFILE_OPTION, {\n name: profile.name,\n model: profile.model,\n })\n : profile.name,\n })) ?? []),\n ],\n [llmProfiles?.profiles, t],\n );\n\n const formAction = (formData: FormData) => {\n const languageLabel = formData.get(\"language-input\")?.toString();\n const languageValue = AvailableLanguages.find(\n ({ label }) => label === languageLabel,\n )?.value;\n const language = languageValue || DEFAULT_SETTINGS.language;\n\n const enableAnalytics = isCloudBackend\n ? true\n : formData.get(\"enable-analytics-switch\")?.toString() === \"on\";\n const enableSoundNotifications =\n formData.get(\"enable-sound-notifications-switch\")?.toString() === \"on\";\n\n const gitUserName =\n formData.get(\"git-user-name-input\")?.toString() ||\n DEFAULT_SETTINGS.git_user_name;\n const gitUserEmail =\n formData.get(\"git-user-email-input\")?.toString() ||\n DEFAULT_SETTINGS.git_user_email;\n\n saveSettings(\n {\n language,\n ...(!isCloudBackend && { user_consents_to_analytics: enableAnalytics }),\n enable_sound_notifications: enableSoundNotifications,\n git_user_name: gitUserName,\n git_user_email: gitUserEmail,\n title_llm_profile: selectedTitleLlmProfile,\n },\n {\n onSuccess: () => {\n void setTelemetryConsent(enableAnalytics ? \"granted\" : \"denied\");\n displaySuccessToast(t(I18nKey.SETTINGS$SAVED));\n },\n onError: (error) => {\n const errorMessage = retrieveAxiosErrorMessage(error);\n displayErrorToast(errorMessage || t(I18nKey.ERROR$GENERIC));\n },\n onSettled: () => {\n setLanguageInputHasChanged(false);\n setAnalyticsSwitchHasChanged(false);\n setSoundNotificationsSwitchHasChanged(false);\n setGitUserNameHasChanged(false);\n setGitUserEmailHasChanged(false);\n setTitleLlmProfileInput(undefined);\n },\n },\n );\n };\n\n const checkIfLanguageInputHasChanged = (value: string) => {\n const selectedLanguage = AvailableLanguages.find(\n ({ label: langValue }) => langValue === value,\n )?.label;\n const currentLanguage = AvailableLanguages.find(\n ({ value: langValue }) => langValue === settings?.language,\n )?.label;\n\n setLanguageInputHasChanged(selectedLanguage !== currentLanguage);\n };\n\n const checkIfAnalyticsSwitchHasChanged = (checked: boolean) => {\n // Treat null as true since analytics is opt-in by default\n const currentAnalytics = settings?.user_consents_to_analytics ?? true;\n setAnalyticsSwitchHasChanged(checked !== currentAnalytics);\n };\n\n const checkIfSoundNotificationsSwitchHasChanged = (checked: boolean) => {\n const currentSoundNotifications = !!settings?.enable_sound_notifications;\n setSoundNotificationsSwitchHasChanged(\n checked !== currentSoundNotifications,\n );\n };\n\n const checkIfGitUserNameHasChanged = (value: string) => {\n const currentValue = settings?.git_user_name;\n setGitUserNameHasChanged(value !== currentValue);\n };\n\n const checkIfGitUserEmailHasChanged = (value: string) => {\n const currentValue = settings?.git_user_email;\n setGitUserEmailHasChanged(value !== currentValue);\n };\n\n const formIsClean =\n !languageInputHasChanged &&\n !analyticsSwitchHasChanged &&\n !soundNotificationsSwitchHasChanged &&\n selectedTitleLlmProfile === storedTitleLlmProfile &&\n !gitUserNameHasChanged &&\n !gitUserEmailHasChanged;\n\n const shouldBeLoading =\n !settings || isLoading || areLlmProfilesLoading || isPending;\n\n return (\n <form\n data-testid=\"app-settings-screen\"\n action={formAction}\n className=\"flex flex-col gap-6\"\n >\n {shouldBeLoading && <AppSettingsInputsSkeleton />}\n {!shouldBeLoading && (\n <div className=\"flex flex-col gap-6\">\n <LanguageInput\n name=\"language-input\"\n defaultKey={settings.language}\n onChange={checkIfLanguageInputHasChanged}\n />\n\n <ThemeInput />\n\n <SettingsSwitch\n testId=\"enable-analytics-switch\"\n name={isCloudBackend ? undefined : \"enable-analytics-switch\"}\n defaultIsToggled={\n isCloudBackend\n ? true\n : (settings.user_consents_to_analytics ?? true)\n }\n isToggled={isCloudBackend ? true : undefined}\n isDisabled={isCloudBackend}\n onToggle={\n isCloudBackend ? undefined : checkIfAnalyticsSwitchHasChanged\n }\n >\n {t(I18nKey.ANALYTICS$SEND_ANONYMOUS_DATA)}\n </SettingsSwitch>\n\n <SettingsSwitch\n testId=\"enable-sound-notifications-switch\"\n name=\"enable-sound-notifications-switch\"\n defaultIsToggled={!!settings.enable_sound_notifications}\n onToggle={checkIfSoundNotificationsSwitchHasChanged}\n >\n {t(I18nKey.SETTINGS$SOUND_NOTIFICATIONS)}\n </SettingsSwitch>\n\n <div className=\"border-t border-[var(--oh-border)] pt-6 mt-2\">\n <h3 className=\"text-lg font-medium mb-2\">\n {t(I18nKey.SETTINGS$CONVERSATION_TITLES)}\n </h3>\n <p className=\"mb-4 text-sm leading-5 text-tertiary-light\">\n {t(I18nKey.SETTINGS$TITLE_GENERATION_DESCRIPTION)}\n </p>\n <SettingsDropdownInput\n testId=\"title-llm-profile-input\"\n name=\"title-llm-profile-input\"\n label={t(I18nKey.SETTINGS$TITLE_GENERATION_MODEL)}\n items={titleLlmProfileItems}\n selectedKey={\n selectedTitleLlmProfile ?? AUTOMATIC_TITLE_LLM_PROFILE_KEY\n }\n onSelectionChange={(key) => {\n const value = key?.toString();\n setTitleLlmProfileInput(\n !value || value === AUTOMATIC_TITLE_LLM_PROFILE_KEY\n ? null\n : value,\n );\n }}\n />\n <NavigationLink\n to=\"/settings/llm\"\n className=\"mt-3 inline-block text-sm text-primary hover:underline\"\n >\n {t(I18nKey.SETTINGS$MANAGE_LLM_PROFILES)}\n </NavigationLink>\n </div>\n\n <div className=\"border-t border-[var(--oh-border)] pt-6 mt-2\">\n <h3 className=\"text-lg font-medium mb-2\">\n {t(I18nKey.SETTINGS$GIT_SETTINGS)}\n </h3>\n <p className=\"mb-4 text-sm leading-5 text-tertiary-light\">\n {t(I18nKey.SETTINGS$GIT_SETTINGS_DESCRIPTION)}\n </p>\n <div className=\"flex flex-col gap-6\">\n <SettingsInput\n testId=\"git-user-name-input\"\n name=\"git-user-name-input\"\n type=\"text\"\n label={t(I18nKey.SETTINGS$GIT_USERNAME)}\n defaultValue={settings.git_user_name || \"\"}\n onChange={checkIfGitUserNameHasChanged}\n placeholder={t(I18nKey.SETTINGS$GIT_USERNAME_PLACEHOLDER)}\n className=\"w-full min-w-0\"\n />\n <SettingsInput\n testId=\"git-user-email-input\"\n name=\"git-user-email-input\"\n type=\"email\"\n label={t(I18nKey.SETTINGS$GIT_EMAIL)}\n defaultValue={settings.git_user_email || \"\"}\n onChange={checkIfGitUserEmailHasChanged}\n placeholder={t(I18nKey.SETTINGS$GIT_EMAIL_PLACEHOLDER)}\n className=\"w-full min-w-0\"\n />\n </div>\n <div className=\"flex justify-start pt-4\">\n <BrandButton\n testId=\"submit-button\"\n variant=\"primary\"\n type=\"submit\"\n isDisabled={isPending || formIsClean}\n >\n {!isPending && t(I18nKey.SETTINGS$SAVE_CHANGES)}\n {isPending && t(I18nKey.SETTINGS$SAVING)}\n </BrandButton>\n </div>\n </div>\n </div>\n )}\n </form>\n );\n}\n\nexport default AppSettingsScreen;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-settings.cjs","names":[],"sources":["../../src/routes/app-settings.tsx"],"sourcesContent":["import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useSaveSettings } from \"#/hooks/mutation/use-save-settings\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { AvailableLanguages } from \"#/i18n\";\nimport { DEFAULT_SETTINGS } from \"#/services/settings\";\nimport { setTelemetryConsent } from \"#/services/telemetry\";\nimport { BrandButton } from \"#/components/features/settings/brand-button\";\nimport { SettingsSwitch } from \"#/components/features/settings/settings-switch\";\nimport { SettingsInput } from \"#/components/features/settings/settings-input\";\nimport { I18nKey } from \"#/i18n/declaration\";\nimport { LanguageInput } from \"#/components/features/settings/app-settings/language-input\";\nimport { ThemeInput } from \"#/components/features/settings/app-settings/theme-input\";\nimport {\n displayErrorToast,\n displaySuccessToast,\n} from \"#/utils/custom-toast-handlers\";\nimport { retrieveAxiosErrorMessage } from \"#/utils/retrieve-axios-error-message\";\nimport { AppSettingsInputsSkeleton } from \"#/components/features/settings/app-settings/app-settings-inputs-skeleton\";\nimport { SettingsDropdownInput } from \"#/components/features/settings/settings-dropdown-input\";\nimport { NavigationLink } from \"#/components/shared/navigation-link\";\nimport { useLlmProfiles } from \"#/hooks/query/use-llm-profiles\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { formatModelNameForDisplay } from \"#/utils/format-model-name\";\n\nconst AUTOMATIC_TITLE_LLM_PROFILE_KEY = \"__automatic__\";\n\nexport function AppSettingsScreen() {\n const { t } = useTranslation(\"openhands\");\n\n const { mutate: saveSettings, isPending } = useSaveSettings();\n const { data: settings, isLoading } = useSettings();\n const activeBackend = useActiveBackend();\n const isCloudBackend = activeBackend.backend.kind === \"cloud\";\n const { data: llmProfiles, isLoading: areLlmProfilesLoading } =\n useLlmProfiles();\n\n const [languageInputHasChanged, setLanguageInputHasChanged] =\n React.useState(false);\n const [analyticsSwitchHasChanged, setAnalyticsSwitchHasChanged] =\n React.useState(false);\n const [\n soundNotificationsSwitchHasChanged,\n setSoundNotificationsSwitchHasChanged,\n ] = React.useState(false);\n const [gitUserNameHasChanged, setGitUserNameHasChanged] =\n React.useState(false);\n const [gitUserEmailHasChanged, setGitUserEmailHasChanged] =\n React.useState(false);\n const [titleLlmProfileInput, setTitleLlmProfileInput] = React.useState<\n string | null | undefined\n >(undefined);\n\n const storedTitleLlmProfile = React.useMemo(() => {\n const preference = settings?.title_llm_profile ?? null;\n if (!preference || !llmProfiles) return preference;\n return llmProfiles.profiles.some((profile) => profile.name === preference)\n ? preference\n : null;\n }, [llmProfiles, settings?.title_llm_profile]);\n const selectedTitleLlmProfile =\n titleLlmProfileInput === undefined\n ? storedTitleLlmProfile\n : titleLlmProfileInput;\n const titleLlmProfileItems = React.useMemo(\n () => [\n {\n key: AUTOMATIC_TITLE_LLM_PROFILE_KEY,\n label: t(I18nKey.SETTINGS$TITLE_GENERATION_AUTOMATIC),\n },\n ...(llmProfiles?.profiles.map((profile) => ({\n key: profile.name,\n label: profile.model\n ? t(I18nKey.SETTINGS$TITLE_GENERATION_PROFILE_OPTION, {\n name: profile.name,\n model: formatModelNameForDisplay(profile.model) ?? profile.model,\n })\n : profile.name,\n })) ?? []),\n ],\n [llmProfiles?.profiles, t],\n );\n\n const formAction = (formData: FormData) => {\n const languageLabel = formData.get(\"language-input\")?.toString();\n const languageValue = AvailableLanguages.find(\n ({ label }) => label === languageLabel,\n )?.value;\n const language = languageValue || DEFAULT_SETTINGS.language;\n\n const enableAnalytics = isCloudBackend\n ? true\n : formData.get(\"enable-analytics-switch\")?.toString() === \"on\";\n const enableSoundNotifications =\n formData.get(\"enable-sound-notifications-switch\")?.toString() === \"on\";\n\n const gitUserName =\n formData.get(\"git-user-name-input\")?.toString() ||\n DEFAULT_SETTINGS.git_user_name;\n const gitUserEmail =\n formData.get(\"git-user-email-input\")?.toString() ||\n DEFAULT_SETTINGS.git_user_email;\n\n saveSettings(\n {\n language,\n ...(!isCloudBackend && { user_consents_to_analytics: enableAnalytics }),\n enable_sound_notifications: enableSoundNotifications,\n git_user_name: gitUserName,\n git_user_email: gitUserEmail,\n title_llm_profile: selectedTitleLlmProfile,\n },\n {\n onSuccess: () => {\n void setTelemetryConsent(enableAnalytics ? \"granted\" : \"denied\");\n displaySuccessToast(t(I18nKey.SETTINGS$SAVED));\n },\n onError: (error) => {\n const errorMessage = retrieveAxiosErrorMessage(error);\n displayErrorToast(errorMessage || t(I18nKey.ERROR$GENERIC));\n },\n onSettled: () => {\n setLanguageInputHasChanged(false);\n setAnalyticsSwitchHasChanged(false);\n setSoundNotificationsSwitchHasChanged(false);\n setGitUserNameHasChanged(false);\n setGitUserEmailHasChanged(false);\n setTitleLlmProfileInput(undefined);\n },\n },\n );\n };\n\n const checkIfLanguageInputHasChanged = (value: string) => {\n const selectedLanguage = AvailableLanguages.find(\n ({ label: langValue }) => langValue === value,\n )?.label;\n const currentLanguage = AvailableLanguages.find(\n ({ value: langValue }) => langValue === settings?.language,\n )?.label;\n\n setLanguageInputHasChanged(selectedLanguage !== currentLanguage);\n };\n\n const checkIfAnalyticsSwitchHasChanged = (checked: boolean) => {\n // Treat null as true since analytics is opt-in by default\n const currentAnalytics = settings?.user_consents_to_analytics ?? true;\n setAnalyticsSwitchHasChanged(checked !== currentAnalytics);\n };\n\n const checkIfSoundNotificationsSwitchHasChanged = (checked: boolean) => {\n const currentSoundNotifications = !!settings?.enable_sound_notifications;\n setSoundNotificationsSwitchHasChanged(\n checked !== currentSoundNotifications,\n );\n };\n\n const checkIfGitUserNameHasChanged = (value: string) => {\n const currentValue = settings?.git_user_name;\n setGitUserNameHasChanged(value !== currentValue);\n };\n\n const checkIfGitUserEmailHasChanged = (value: string) => {\n const currentValue = settings?.git_user_email;\n setGitUserEmailHasChanged(value !== currentValue);\n };\n\n const formIsClean =\n !languageInputHasChanged &&\n !analyticsSwitchHasChanged &&\n !soundNotificationsSwitchHasChanged &&\n selectedTitleLlmProfile === storedTitleLlmProfile &&\n !gitUserNameHasChanged &&\n !gitUserEmailHasChanged;\n\n const shouldBeLoading =\n !settings || isLoading || areLlmProfilesLoading || isPending;\n\n return (\n <form\n data-testid=\"app-settings-screen\"\n action={formAction}\n className=\"flex flex-col gap-6\"\n >\n {shouldBeLoading && <AppSettingsInputsSkeleton />}\n {!shouldBeLoading && (\n <div className=\"flex flex-col gap-6\">\n <LanguageInput\n name=\"language-input\"\n defaultKey={settings.language}\n onChange={checkIfLanguageInputHasChanged}\n />\n\n <ThemeInput />\n\n <SettingsSwitch\n testId=\"enable-analytics-switch\"\n name={isCloudBackend ? undefined : \"enable-analytics-switch\"}\n defaultIsToggled={\n isCloudBackend\n ? true\n : (settings.user_consents_to_analytics ?? true)\n }\n isToggled={isCloudBackend ? true : undefined}\n isDisabled={isCloudBackend}\n onToggle={\n isCloudBackend ? undefined : checkIfAnalyticsSwitchHasChanged\n }\n >\n {t(I18nKey.ANALYTICS$SEND_ANONYMOUS_DATA)}\n </SettingsSwitch>\n\n <SettingsSwitch\n testId=\"enable-sound-notifications-switch\"\n name=\"enable-sound-notifications-switch\"\n defaultIsToggled={!!settings.enable_sound_notifications}\n onToggle={checkIfSoundNotificationsSwitchHasChanged}\n >\n {t(I18nKey.SETTINGS$SOUND_NOTIFICATIONS)}\n </SettingsSwitch>\n\n <div className=\"border-t border-[var(--oh-border)] pt-6 mt-2\">\n <h3 className=\"text-lg font-medium mb-2\">\n {t(I18nKey.SETTINGS$CONVERSATION_TITLES)}\n </h3>\n <p className=\"mb-4 text-sm leading-5 text-tertiary-light\">\n {t(I18nKey.SETTINGS$TITLE_GENERATION_DESCRIPTION)}\n </p>\n <SettingsDropdownInput\n testId=\"title-llm-profile-input\"\n name=\"title-llm-profile-input\"\n label={t(I18nKey.SETTINGS$TITLE_GENERATION_MODEL)}\n items={titleLlmProfileItems}\n selectedKey={\n selectedTitleLlmProfile ?? AUTOMATIC_TITLE_LLM_PROFILE_KEY\n }\n onSelectionChange={(key) => {\n const value = key?.toString();\n setTitleLlmProfileInput(\n !value || value === AUTOMATIC_TITLE_LLM_PROFILE_KEY\n ? null\n : value,\n );\n }}\n />\n <NavigationLink\n to=\"/settings/llm\"\n className=\"mt-3 inline-block text-sm text-primary hover:underline\"\n >\n {t(I18nKey.SETTINGS$MANAGE_LLM_PROFILES)}\n </NavigationLink>\n </div>\n\n <div className=\"border-t border-[var(--oh-border)] pt-6 mt-2\">\n <h3 className=\"text-lg font-medium mb-2\">\n {t(I18nKey.SETTINGS$GIT_SETTINGS)}\n </h3>\n <p className=\"mb-4 text-sm leading-5 text-tertiary-light\">\n {t(I18nKey.SETTINGS$GIT_SETTINGS_DESCRIPTION)}\n </p>\n <div className=\"flex flex-col gap-6\">\n <SettingsInput\n testId=\"git-user-name-input\"\n name=\"git-user-name-input\"\n type=\"text\"\n label={t(I18nKey.SETTINGS$GIT_USERNAME)}\n defaultValue={settings.git_user_name || \"\"}\n onChange={checkIfGitUserNameHasChanged}\n placeholder={t(I18nKey.SETTINGS$GIT_USERNAME_PLACEHOLDER)}\n className=\"w-full min-w-0\"\n />\n <SettingsInput\n testId=\"git-user-email-input\"\n name=\"git-user-email-input\"\n type=\"email\"\n label={t(I18nKey.SETTINGS$GIT_EMAIL)}\n defaultValue={settings.git_user_email || \"\"}\n onChange={checkIfGitUserEmailHasChanged}\n placeholder={t(I18nKey.SETTINGS$GIT_EMAIL_PLACEHOLDER)}\n className=\"w-full min-w-0\"\n />\n </div>\n <div className=\"flex justify-start pt-4\">\n <BrandButton\n testId=\"submit-button\"\n variant=\"primary\"\n type=\"submit\"\n isDisabled={isPending || formIsClean}\n >\n {!isPending && t(I18nKey.SETTINGS$SAVE_CHANGES)}\n {isPending && t(I18nKey.SETTINGS$SAVING)}\n </BrandButton>\n </div>\n </div>\n </div>\n )}\n </form>\n );\n}\n\nexport default AppSettingsScreen;\n"],"mappings":"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"}
|