@openhands/agent-canvas 1.4.0 → 1.5.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 +11 -12
- package/README.windows.md +4 -2
- package/build/assets/{Trans-Ch-OVWEA.js → Trans-DqF_OEZB.js} +1 -1
- package/build/assets/{acp-providers-Sy2LKyMa.js → acp-providers-BQwoUBpe.js} +1 -1
- package/build/assets/active-backend-context-BCXRv5pm.js +1 -0
- package/build/assets/{add-backend-modal-Bgy8anoR.js → add-backend-modal-BKHzq5no.js} +1 -1
- package/build/assets/{agent-profiles-settings-3mmXljZX.js → agent-profiles-settings-CEp5CIz8.js} +1 -1
- package/build/assets/agent-server-compatibility-D6DSanlx.js +1 -0
- package/build/assets/agent-server-conversation-service.api-cylugfDz.js +41 -0
- package/build/assets/{agent-settings-B-W10B4E.js → agent-settings-C-tann3x.js} +2 -2
- package/build/assets/agent-settings-DGUKNSnU.js +1 -0
- package/build/assets/{alert-banner-Bpf2NQJq.js → alert-banner-Dd4woGbm.js} +1 -1
- package/build/assets/api-key-entry-screen-Bll_CkuQ.js +1 -0
- package/build/assets/app-settings-BpViWwpC.js +1 -0
- package/build/assets/automation-detail-Z9dN2f5l.js +2 -0
- package/build/assets/automation-export-D5uL0Tf8.js +2 -0
- package/build/assets/automations-list-BMOWcqzZ.js +1 -0
- package/build/assets/{back-nav-button-CUS2mi-U.js → back-nav-button-ZUDTMOTB.js} +1 -1
- package/build/assets/backend-form-modal-DhBT8P4g.js +1 -0
- package/build/assets/{backend-synced-settings-badge-D9hZx05w.js → backend-synced-settings-badge-Db_REKVw.js} +1 -1
- package/build/assets/{base-modal-BuF2f0YL.js → base-modal-Cb0C6m0Q.js} +1 -1
- package/build/assets/{bot-D7eUAuSB.js → bot-C-EA6685.js} +1 -1
- package/build/assets/{brand-button-vMVuyDXu.js → brand-button-2Tp3aXk1.js} +1 -1
- package/build/assets/{browser-BifzWIBd.js → browser-QYLVr1kS.js} +2 -2
- package/build/assets/browser-store-BGXOGo-R.js +1 -0
- package/build/assets/{browser-tab-CkkqJnqw.js → browser-tab-BTTP1OE2.js} +1 -1
- package/build/assets/canvas-ui-BhxjoA1f.js +1 -0
- package/build/assets/{chat-send-button-B_jc5z5C.js → chat-send-button-BZHG2hAW.js} +1 -1
- package/build/assets/check-TbOEtHKj.js +1 -0
- package/build/assets/{chevron-down-CI8A6tet.js → chevron-down-D7IvFMBM.js} +1 -1
- package/build/assets/{circle-plus-check-toggle-C5YxjxvI.js → circle-plus-check-toggle-QQJKUnF6.js} +1 -1
- package/build/assets/client-source-Biqarhgr.js +1 -0
- package/build/assets/cloud-funnel-analytics-D-27T5Ao.js +1 -0
- package/build/assets/{combobox-caret-DoObzqf4.js → combobox-caret-A5jMVHgE.js} +1 -1
- package/build/assets/{command-menu-D-JV3Wqm.js → command-menu-BMVEme4H.js} +1 -1
- package/build/assets/{command-store-D8J5LMW1.js → command-store-jrWX_CcW.js} +1 -1
- package/build/assets/condenser-settings-CIa6eyB4.js +1 -0
- package/build/assets/{confirmation-modal-BGLu6XJN.js → confirmation-modal-4n_944zq.js} +1 -1
- package/build/assets/{context-menu-list-item-BD5_EaKN.js → context-menu-list-item-DvfFic5I.js} +1 -1
- package/build/assets/conversation-CHnEXGRM.js +1 -0
- package/build/assets/conversation-D4o4dG2t.js +89 -0
- package/build/assets/conversation-panel-11FjLCId.js +1 -0
- package/build/assets/conversation-service.api-0JG_fF9d.js +1 -0
- package/build/assets/conversation-state-store-JiUQp02U.js +1 -0
- package/build/assets/{conversation-store-LptbOvKa.js → conversation-store-BCSpLuEf.js} +1 -1
- package/build/assets/{conversation-tab-empty-state-B2dDYEwf.js → conversation-tab-empty-state-BUhKVwoi.js} +1 -1
- package/build/assets/{copy-3JCw_XFB.js → copy-D1YGjP-C.js} +1 -1
- package/build/assets/{copy-to-clipboard-button-CaR52OnA.js → copy-to-clipboard-button-Dp4Q_hXi.js} +1 -1
- package/build/assets/declaration-BGsHjPEW.js +1 -0
- package/build/assets/{device-verify-Dj6I4Iqe.js → device-verify-CM086oKs.js} +1 -1
- package/build/assets/{dropdown-classes-DJSXeLqc.js → dropdown-classes-DZq0BQjb.js} +1 -1
- package/build/assets/{ellipsis-button-C5Z-tPFp.js → ellipsis-button-TPJdyxnK.js} +1 -1
- package/build/assets/{entry.client-2_3ePAm0.js → entry.client-DypYHsYm.js} +2 -2
- package/build/assets/{enum-filter-dropdown-DXbVwiNZ.js → enum-filter-dropdown-CW_mBg0e.js} +1 -1
- package/build/assets/{environment-switch-overlay-DZQfRGTx.js → environment-switch-overlay-6laJch-9.js} +1 -1
- package/build/assets/{extensions-hub-CLjmOGqS.js → extensions-hub-BJFbFfKS.js} +1 -1
- package/build/assets/{extensions-navigation-B5MeUiMq.js → extensions-navigation-DqSl7CJw.js} +1 -1
- package/build/assets/{external-link-D2zJjE9G.js → external-link-lhdITPqq.js} +1 -1
- package/build/assets/files-tab-c316dKAq.js +1 -0
- package/build/assets/{files-tab-store-DJsPxYdg.js → files-tab-store-tfCav6bB.js} +1 -1
- package/build/assets/{form-control-classes-ChpNBe9n.js → form-control-classes-CvUaw8_L.js} +1 -1
- package/build/assets/format-time-delta-DhDbkD7V.js +1 -0
- package/build/assets/git-provider-icon-DUb2pEos.js +1 -0
- package/build/assets/home-BQ-DC06B.js +1 -0
- package/build/assets/home-D7ds4Jyw.js +1 -0
- package/build/assets/index-home-BRFDWs_4.js +1 -0
- package/build/assets/install-server-modal-CvHvzZj3.js +1 -0
- package/build/assets/{launch-V_3Rp7WS.js → launch-A47TK2Me.js} +1 -1
- package/build/assets/lesson-plan-DSf95kQ2.js +4 -0
- package/build/assets/{list-todo-BfH6yYUK.js → list-todo-CAtvkzcy.js} +1 -1
- package/build/assets/llm-not-configured-banner-B7DR8SPs.js +27 -0
- package/build/assets/llm-settings-Ch4ZbW3c.js +1 -0
- package/build/assets/llm-settings-Cvi7q4ox.js +1 -0
- package/build/assets/llm-subscription-service-Cz1yBBvE.js +1 -0
- package/build/assets/loader-circle-CsAsfLIs.js +1 -0
- package/build/assets/{loading-spinner-BLdswi6q.js → loading-spinner-Txxx1I1p.js} +1 -1
- package/build/assets/manage-backends-modal-DAVhNUCe.js +1 -0
- package/build/assets/manifest-958c741a.js +1 -0
- package/build/assets/{markdown-renderer-DMT7Zkpd.js → markdown-renderer-B6cJJ_MN.js} +1 -1
- package/build/assets/{mcp-BQufNPZ6.js → mcp-BwssgMpg.js} +2 -2
- package/build/assets/{messages-BnJCqnFf.js → messages-D8MeG2ZQ.js} +26 -26
- package/build/assets/{modal-body-DouOE5KH.js → modal-body-CDZdZ-eT.js} +1 -1
- package/build/assets/{modal-classes-Cf-4tbHz.js → modal-classes-B4oit_4c.js} +1 -1
- package/build/assets/{modal-close-button-B6CfxxJj.js → modal-close-button-DQElFMPo.js} +1 -1
- package/build/assets/model-selector-BxTbbKub.js +1 -0
- package/build/assets/{navigation-link-D8hfwvxI.js → navigation-link-imH6S7h2.js} +1 -1
- package/build/assets/onboarding-CyicadGt.js +1 -0
- package/build/assets/onboarding-modal-DQwihcTz.js +1 -0
- package/build/assets/option-service.api-DAkg_F7p.js +1 -0
- package/build/assets/organization-service.api-QknzKDh3.js +1 -0
- package/build/assets/package-Dk_VtWJ4.js +1 -0
- package/build/assets/path-utils-BECGet7G.js +1 -0
- package/build/assets/{pencil-Dj2XjKmI.js → pencil-CWhApFIT.js} +1 -1
- package/build/assets/{plan-components-CcCBmCzW.js → plan-components-CgPHWz3E.js} +1 -1
- package/build/assets/{planner-tab-Dhyqcqmb.js → planner-tab-DPKHmMAX.js} +1 -1
- package/build/assets/plugins-management-service-DuTTxquo.js +1 -0
- package/build/assets/profiles-service.api-D6jvZOWu.js +1 -0
- package/build/assets/providers-B8pxQK8x.js +1 -0
- package/build/assets/proxy-CuhhyjdX.js +1 -0
- package/build/assets/{recommended-automations-launcher-CTcGTl4d.js → recommended-automations-launcher-DA6DWS7V.js} +1 -1
- package/build/assets/{refresh-cw-DM82EIyx.js → refresh-cw-B9B7-vsy.js} +1 -1
- package/build/assets/root-BhP6bTBB.js +2 -0
- package/build/assets/root-CYWeTrWE.css +1 -0
- package/build/assets/root-layout-oBaHHW4s.js +2 -0
- package/build/assets/{runtime-waiting-state-BsXLElvN.js → runtime-waiting-state-DeD9G7yJ.js} +1 -1
- package/build/assets/schema-field-BOLdL_U7.js +1 -0
- package/build/assets/sdk-section-page-ZIltERxf.js +1 -0
- package/build/assets/{sdk-settings-schema-Cv7M9eSe.js → sdk-settings-schema-Ba_Pa9uf.js} +1 -1
- package/build/assets/search-dIQ09UY2.js +1 -0
- package/build/assets/secrets-service-50DElFny.js +1 -0
- package/build/assets/{secrets-settings-Cx6yJlyb.js → secrets-settings-Digl7JLe.js} +1 -1
- package/build/assets/{segmented-toggle-DyQqPhoD.js → segmented-toggle-C1-ZVyr5.js} +1 -1
- package/build/assets/settings-BfgLHsgd.js +1 -0
- package/build/assets/{settings-dropdown-input-BjunGXJb.js → settings-dropdown-input-BD5C9fBn.js} +1 -1
- package/build/assets/{settings-index-D6sxWSRk.js → settings-index-CODBijya.js} +1 -1
- package/build/assets/{settings-input-bD6npsDm.js → settings-input-CzNOq-Pj.js} +1 -1
- package/build/assets/{settings-list-classes-Dp_OgzN0.js → settings-list-classes-CuxH9ZoR.js} +1 -1
- package/build/assets/settings-modal-BcSWpKI0.js +1 -0
- package/build/assets/settings-service.api-Bsu1PvYO.js +1 -0
- package/build/assets/{settings-switch-5cuxl8Dc.js → settings-switch-DqmHAfWJ.js} +1 -1
- package/build/assets/{settings-utils-BMdG65By.js → settings-utils-B1lBErvV.js} +1 -1
- package/build/assets/shared-conversation-CDskdmrb.js +1 -0
- package/build/assets/{sidebar-layout-DuzJMMw-.js → sidebar-layout-Cn6eQaEI.js} +1 -1
- package/build/assets/{sidebar-mobile-menu-toggle-VvvX32iF.js → sidebar-mobile-menu-toggle-DmCmZgq1.js} +1 -1
- package/build/assets/{sidebar-nav-link-5AlTT5-j.js → sidebar-nav-link-DMc8AIe7.js} +1 -1
- package/build/assets/{sidebar-store-CZuE8AH5.js → sidebar-store-DXWSCFpa.js} +1 -1
- package/build/assets/{skill-card-pill-row-eTIkE4nz.js → skill-card-pill-row-DOIWjiMF.js} +1 -1
- package/build/assets/skills-plugins-DLgINYuY.js +1 -0
- package/build/assets/{skills-settings-BUv04tSc.js → skills-settings-DPiCWalR.js} +2 -2
- package/build/assets/{square-chevron-right-Czw3FFWc.js → square-chevron-right-DE-JN-2Z.js} +1 -1
- package/build/assets/{styled-tooltip-CgX2oRaK.js → styled-tooltip-CvsjHuIf.js} +1 -1
- package/build/assets/{suspense-BO1Tl_Vf.js → suspense-DmZ3MSSh.js} +1 -1
- package/build/assets/{task-list-tab-0k9PhuqO.js → task-list-tab-CuhcDycu.js} +1 -1
- package/build/assets/telemetry-DHiTRl5_.js +2 -0
- package/build/assets/{terminal-B61WrJdS.js → terminal-CVqF-tCD.js} +1 -1
- package/build/assets/{toggle-switch-2j5wwR85.js → toggle-switch-CS0ClOy2.js} +1 -1
- package/build/assets/{trash-2-Be_7y3Mn.js → trash-2-BU6BlW4i.js} +1 -1
- package/build/assets/{typography-D8mHDeNG.js → typography-CQn9wyEX.js} +1 -1
- package/build/assets/use-acp-credential-form-LlfZO_DD.js +1 -0
- package/build/assets/{use-activate-agent-profile-20v1xU0H.js → use-activate-agent-profile-DpQjsXM0.js} +1 -1
- package/build/assets/{use-active-agent-profile-BkJN7Xsy.js → use-active-agent-profile-Gw_uJujV.js} +1 -1
- package/build/assets/{use-active-conversation-DOZVSVtU.js → use-active-conversation-B0sttISF.js} +1 -1
- package/build/assets/use-agent-profiles-LHZEK0Gg.js +1 -0
- package/build/assets/{use-agent-state-DHZO1obC.js → use-agent-state-C5uA0bRj.js} +1 -1
- package/build/assets/use-backends-health-DKt1SmiU.js +1 -0
- package/build/assets/{use-can-manage-org-profiles-C-OhWVBS.js → use-can-manage-org-profiles-BAtqsbCi.js} +1 -1
- package/build/assets/use-cloud-current-user-id-C8m1oBy4.js +1 -0
- package/build/assets/use-config-CXy4vD0H.js +1 -0
- package/build/assets/use-create-conversation-CWQGNQ9J.js +1 -0
- package/build/assets/{use-create-secret-D0HCOZFu.js → use-create-secret-BIrsX3OB.js} +1 -1
- package/build/assets/{use-event-store-DjgU4wfO.js → use-event-store-CsD17BKu.js} +1 -1
- package/build/assets/{use-handle-plan-click-DyRASKMC.js → use-handle-plan-click-DEuO7Byo.js} +1 -1
- package/build/assets/use-is-authed-Dvbpiu3B.js +1 -0
- package/build/assets/{use-launch-skill-in-chat-BnoDgvAy.js → use-launch-skill-in-chat-CdHOoQGM.js} +1 -1
- package/build/assets/use-llm-profiles-DQpQxVOD.js +1 -0
- package/build/assets/use-plugins-marketplace-Bkk07W_M.js +1 -0
- package/build/assets/use-runtime-is-ready-D4pkGT6E.js +1 -0
- package/build/assets/use-save-agent-profile-BxEsjnW0.js +1 -0
- package/build/assets/{use-save-settings-BGlSfuYn.js → use-save-settings-ioSUMqbE.js} +1 -1
- package/build/assets/use-settings-DNJC4gqu.js +1 -0
- package/build/assets/use-settings-nav-items-BUsrDbVR.js +16 -0
- package/build/assets/use-skills-BsmKm23M.js +1 -0
- package/build/assets/{use-task-list-AVBLbbcR.js → use-task-list-rs7Xbzl8.js} +1 -1
- package/build/assets/{use-tracking-BIXzagSI.js → use-tracking-poxQHMwR.js} +1 -1
- package/build/assets/{use-user-conversation-zpx7I18x.js → use-user-conversation-B337kUKB.js} +1 -1
- package/build/assets/{useMutation-DrCAVg5w.js → useMutation-u8UgRgDK.js} +1 -1
- package/build/assets/{useMutationState-D8QN0ZCy.js → useMutationState-OnAsCLA_.js} +1 -1
- package/build/assets/{useQueries-DClgUTc7.js → useQueries-BpIlT8Mt.js} +1 -1
- package/build/assets/{useQuery-CRBP8vIS.js → useQuery-D5pEZbY0.js} +1 -1
- package/build/assets/{useTranslation-CDRCKC9-.js → useTranslation-Cbf5AGg_.js} +1 -1
- package/build/assets/{utils-D3U3rlqr.js → utils-DB9LsAzA.js} +1 -1
- package/build/assets/{vendor~browser-Cvg7jXCP.js → vendor~browser-5Njjw1Cl.js} +1 -1
- package/build/assets/{vendor~browser-tab-Di0kh5Zw.js → vendor~browser-tab-Xn94EtUo.js} +1 -1
- package/build/assets/{vendor~entry.client-9tWQ_Ugw.js → vendor~entry.client-DDuH4--y.js} +1 -1
- package/build/assets/{vendor~entry.client-D6BtSOtn.js → vendor~entry.client-DQGrNspu.js} +1 -1
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dhilvkxv-BIieS_OD.js +2 -0
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~iztiaf2o-rqo6vRFz.js +185 -0
- package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~jewnulst-C57fm7C-.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ljq5gbus-B2XD4bi2.js} +1 -1
- package/build/assets/{vendor~files-tab-B02k3xvx.js → vendor~files-tab-CiC3-lGh.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation-CYMF9JYB.js → vendor~index-home~home~conversation-panel~conversation-ChmYLVgz.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-9UMeuPV6.js → vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-B8XNNEQZ.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-d8aETPbZ.js → vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CnJRLn5s.js} +1 -1
- package/build/assets/vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DWteoTyr.js +2 -0
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-D7EUmQ8Y.js → vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-Dc5nKwLO.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BD0GaRGa.js → vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-tlf6AnDe.js} +1 -1
- package/build/assets/{vendor~launch-CHXA9cJu.js → vendor~launch-28DK5Rsl.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation-CpiTHpHl.js → vendor~root-layout~conversation-panel~conversation-8tIsyrPj.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation~shared-conversation-_TdZcNMD.js → vendor~root-layout~conversation-panel~conversation~shared-conversation-lYNG9C1U.js} +1 -1
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation-Cn2jwSga.js → vendor~root-layout~index-home~home~conversation-panel~conversation-Zhq6xAxR.js} +1 -1
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~shared-conversation~alert-banner~pl~rqjteh0a-CZM4hwUT.js → vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation~aler~gfu7qdtz-B81b08bw.js} +1 -1
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~enjl5xdm-B0EIDu4M.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~ftka0fnu-jpyLM1Nn.js} +2 -2
- package/build/assets/{verification-settings-D576N2xa.js → verification-settings-HRgEM-_3.js} +1 -1
- package/build/assets/x-ZE4iplpF.js +1 -0
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +9 -0
- package/build/locales/ca/openhands.json +9 -0
- package/build/locales/de/openhands.json +9 -0
- package/build/locales/en/openhands.json +9 -0
- package/build/locales/es/openhands.json +9 -0
- package/build/locales/fr/openhands.json +9 -0
- package/build/locales/it/openhands.json +9 -0
- package/build/locales/ja/openhands.json +9 -0
- package/build/locales/ko-KR/openhands.json +9 -0
- package/build/locales/no/openhands.json +9 -0
- package/build/locales/pt/openhands.json +9 -0
- package/build/locales/tr/openhands.json +9 -0
- package/build/locales/uk/openhands.json +9 -0
- package/build/locales/zh-CN/openhands.json +9 -0
- package/build/locales/zh-TW/openhands.json +9 -0
- package/config/defaults.json +5 -4
- package/dist/api/agent-server-adapter.cjs +3 -3
- package/dist/api/agent-server-adapter.cjs.map +1 -1
- package/dist/api/agent-server-adapter.d.ts +9 -1
- package/dist/api/agent-server-adapter.js +105 -102
- package/dist/api/agent-server-adapter.js.map +1 -1
- package/dist/api/agent-server-config.cjs +1 -1
- package/dist/api/agent-server-config.cjs.map +1 -1
- package/dist/api/agent-server-config.d.ts +3 -0
- package/dist/api/agent-server-config.js +45 -23
- package/dist/api/agent-server-config.js.map +1 -1
- package/dist/api/backend-registry/auth.cjs +1 -1
- package/dist/api/backend-registry/auth.cjs.map +1 -1
- package/dist/api/backend-registry/auth.js +1 -1
- package/dist/api/backend-registry/auth.js.map +1 -1
- package/dist/api/backend-registry/default-backend.cjs +1 -1
- package/dist/api/backend-registry/default-backend.cjs.map +1 -1
- package/dist/api/backend-registry/default-backend.d.ts +3 -0
- package/dist/api/backend-registry/default-backend.js +22 -10
- package/dist/api/backend-registry/default-backend.js.map +1 -1
- package/dist/api/backend-registry/storage.cjs +1 -1
- package/dist/api/backend-registry/storage.cjs.map +1 -1
- package/dist/api/backend-registry/storage.js +38 -33
- package/dist/api/backend-registry/storage.js.map +1 -1
- package/dist/api/backend-registry/types.d.ts +2 -0
- package/dist/api/canvas-ui-client-tool.cjs +38 -0
- package/dist/api/canvas-ui-client-tool.cjs.map +1 -0
- package/dist/api/canvas-ui-client-tool.d.ts +14 -0
- package/dist/api/canvas-ui-client-tool.js +47 -0
- package/dist/api/canvas-ui-client-tool.js.map +1 -0
- package/dist/api/client-source.cjs +2 -0
- package/dist/api/client-source.cjs.map +1 -0
- package/dist/api/client-source.d.ts +9 -0
- package/dist/api/client-source.js +10 -0
- package/dist/api/client-source.js.map +1 -0
- package/dist/api/cloud/client.cjs +2 -0
- package/dist/api/cloud/client.cjs.map +1 -0
- package/dist/api/cloud/client.d.ts +4 -0
- package/dist/api/cloud/client.js +38 -0
- package/dist/api/cloud/client.js.map +1 -0
- package/dist/api/cloud/conversation-service.api.cjs +1 -1
- package/dist/api/cloud/conversation-service.api.cjs.map +1 -1
- package/dist/api/cloud/conversation-service.api.js +33 -31
- package/dist/api/cloud/conversation-service.api.js.map +1 -1
- package/dist/api/cloud/organization-service.api.cjs +1 -1
- package/dist/api/cloud/organization-service.api.cjs.map +1 -1
- package/dist/api/cloud/organization-service.api.js +11 -10
- package/dist/api/cloud/organization-service.api.js.map +1 -1
- package/dist/api/cloud/proxy.cjs +1 -1
- package/dist/api/cloud/proxy.cjs.map +1 -1
- package/dist/api/cloud/proxy.d.ts +2 -40
- package/dist/api/cloud/proxy.js +14 -39
- package/dist/api/cloud/proxy.js.map +1 -1
- package/dist/api/conversation-metadata-store.cjs +1 -1
- package/dist/api/conversation-metadata-store.cjs.map +1 -1
- package/dist/api/conversation-metadata-store.d.ts +2 -9
- package/dist/api/conversation-metadata-store.js +13 -9
- package/dist/api/conversation-metadata-store.js.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.d.ts +2 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +98 -88
- package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.types.d.ts +5 -0
- package/dist/api/device-flow-client.cjs +1 -1
- package/dist/api/device-flow-client.cjs.map +1 -1
- package/dist/api/device-flow-client.d.ts +4 -58
- package/dist/api/device-flow-client.js +8 -98
- package/dist/api/device-flow-client.js.map +1 -1
- package/dist/api/git-service/agent-server-git-service.api.cjs +1 -1
- package/dist/api/git-service/agent-server-git-service.api.cjs.map +1 -1
- package/dist/api/git-service/agent-server-git-service.api.d.ts +10 -2
- package/dist/api/git-service/agent-server-git-service.api.js +107 -40
- package/dist/api/git-service/agent-server-git-service.api.js.map +1 -1
- package/dist/api/open-hands.types.d.ts +11 -0
- package/dist/api/secrets-service.cjs +1 -1
- package/dist/api/secrets-service.cjs.map +1 -1
- package/dist/api/secrets-service.js +15 -14
- package/dist/api/secrets-service.js.map +1 -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 +73 -64
- package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.js.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-observation-content.cjs +2 -2
- package/dist/components/conversation-events/chat/event-content-helpers/get-observation-content.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-observation-content.js +2 -0
- package/dist/components/conversation-events/chat/event-content-helpers/get-observation-content.js.map +1 -1
- package/dist/components/features/backends/backend-form-modal.cjs +1 -1
- package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
- package/dist/components/features/backends/backend-form-modal.d.ts +4 -2
- package/dist/components/features/backends/backend-form-modal.js +202 -188
- package/dist/components/features/backends/backend-form-modal.js.map +1 -1
- package/dist/components/features/backends/backend-row.cjs +1 -1
- package/dist/components/features/backends/backend-row.cjs.map +1 -1
- package/dist/components/features/backends/backend-row.js +2 -1
- package/dist/components/features/backends/backend-row.js.map +1 -1
- package/dist/components/features/backends/backend-selector.cjs +1 -1
- package/dist/components/features/backends/backend-selector.cjs.map +1 -1
- package/dist/components/features/backends/backend-selector.js +51 -51
- package/dist/components/features/backends/backend-selector.js.map +1 -1
- package/dist/components/features/backends/device-flow-auth.cjs +1 -1
- package/dist/components/features/backends/device-flow-auth.cjs.map +1 -1
- package/dist/components/features/backends/device-flow-auth.d.ts +4 -1
- package/dist/components/features/backends/device-flow-auth.js +38 -38
- package/dist/components/features/backends/device-flow-auth.js.map +1 -1
- package/dist/components/features/chat/chat-interface.cjs +2 -2
- package/dist/components/features/chat/chat-interface.cjs.map +1 -1
- package/dist/components/features/chat/chat-interface.js +173 -165
- package/dist/components/features/chat/chat-interface.js.map +1 -1
- 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.d.ts +2 -1
- package/dist/components/features/chat/components/chat-input-actions.js +44 -43
- package/dist/components/features/chat/components/chat-input-actions.js.map +1 -1
- package/dist/components/features/chat/components/chat-input-container.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-container.cjs.map +1 -1
- package/dist/components/features/chat/components/chat-input-container.d.ts +2 -1
- package/dist/components/features/chat/components/chat-input-container.js +20 -19
- package/dist/components/features/chat/components/chat-input-container.js.map +1 -1
- package/dist/components/features/chat/components/chat-input-profile-picker.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-profile-picker.cjs.map +1 -1
- package/dist/components/features/chat/components/chat-input-profile-picker.js +44 -32
- package/dist/components/features/chat/components/chat-input-profile-picker.js.map +1 -1
- package/dist/components/features/chat/components/resolve-picker-kind.cjs +1 -1
- package/dist/components/features/chat/components/resolve-picker-kind.cjs.map +1 -1
- package/dist/components/features/chat/components/resolve-picker-kind.d.ts +10 -22
- package/dist/components/features/chat/components/resolve-picker-kind.js +6 -3
- package/dist/components/features/chat/components/resolve-picker-kind.js.map +1 -1
- 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.d.ts +2 -1
- package/dist/components/features/chat/custom-chat-input.js +52 -51
- package/dist/components/features/chat/custom-chat-input.js.map +1 -1
- package/dist/components/features/chat/interactive-chat-box.cjs +1 -1
- package/dist/components/features/chat/interactive-chat-box.cjs.map +1 -1
- package/dist/components/features/chat/interactive-chat-box.d.ts +2 -1
- package/dist/components/features/chat/interactive-chat-box.js +9 -8
- package/dist/components/features/chat/interactive-chat-box.js.map +1 -1
- package/dist/components/features/diff-viewer/commit-list.cjs +2 -0
- package/dist/components/features/diff-viewer/commit-list.cjs.map +1 -0
- package/dist/components/features/diff-viewer/commit-list.d.ts +13 -0
- package/dist/components/features/diff-viewer/commit-list.js +27 -0
- package/dist/components/features/diff-viewer/commit-list.js.map +1 -0
- package/dist/components/features/diff-viewer/commit-row.cjs +2 -0
- package/dist/components/features/diff-viewer/commit-row.cjs.map +1 -0
- package/dist/components/features/diff-viewer/commit-row.d.ts +14 -0
- package/dist/components/features/diff-viewer/commit-row.js +59 -0
- package/dist/components/features/diff-viewer/commit-row.js.map +1 -0
- package/dist/components/features/diff-viewer/file-diff-viewer.cjs +1 -1
- package/dist/components/features/diff-viewer/file-diff-viewer.cjs.map +1 -1
- package/dist/components/features/diff-viewer/file-diff-viewer.d.ts +7 -1
- package/dist/components/features/diff-viewer/file-diff-viewer.js +40 -39
- package/dist/components/features/diff-viewer/file-diff-viewer.js.map +1 -1
- package/dist/components/features/plugins/plugin-detail-modal.d.ts +2 -1
- package/dist/components/shared/modals/settings/settings-modal.cjs +1 -1
- package/dist/components/shared/modals/settings/settings-modal.cjs.map +1 -1
- package/dist/components/shared/modals/settings/settings-modal.js +23 -22
- package/dist/components/shared/modals/settings/settings-modal.js.map +1 -1
- package/dist/config/defaults.cjs +1 -1
- package/dist/config/defaults.cjs.map +1 -1
- package/dist/config/defaults.js +5 -4
- package/dist/config/defaults.js.map +1 -1
- package/dist/constants/acp-providers.cjs.map +1 -1
- package/dist/constants/acp-providers.d.ts +1 -1
- package/dist/constants/acp-providers.js.map +1 -1
- package/dist/constants/canvas-ui.cjs +2 -0
- package/dist/constants/canvas-ui.cjs.map +1 -0
- package/dist/constants/canvas-ui.d.ts +8 -0
- package/dist/constants/canvas-ui.js +6 -0
- package/dist/constants/canvas-ui.js.map +1 -0
- package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
- package/dist/contexts/conversation-websocket-context.js.map +1 -1
- package/dist/hooks/mutation/use-create-conversation.cjs +1 -1
- package/dist/hooks/mutation/use-create-conversation.cjs.map +1 -1
- package/dist/hooks/mutation/use-create-conversation.d.ts +2 -1
- package/dist/hooks/mutation/use-create-conversation.js +52 -52
- package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
- package/dist/hooks/query/query-keys.cjs +1 -1
- package/dist/hooks/query/query-keys.cjs.map +1 -1
- package/dist/hooks/query/query-keys.d.ts +2 -0
- package/dist/hooks/query/query-keys.js +4 -1
- package/dist/hooks/query/query-keys.js.map +1 -1
- package/dist/hooks/query/use-backends-health.cjs +1 -1
- package/dist/hooks/query/use-backends-health.cjs.map +1 -1
- package/dist/hooks/query/use-backends-health.js +50 -48
- package/dist/hooks/query/use-backends-health.js.map +1 -1
- package/dist/hooks/query/use-cloud-organizations.cjs +1 -1
- package/dist/hooks/query/use-cloud-organizations.cjs.map +1 -1
- package/dist/hooks/query/use-cloud-organizations.d.ts +1 -0
- package/dist/hooks/query/use-cloud-organizations.js +5 -2
- package/dist/hooks/query/use-cloud-organizations.js.map +1 -1
- package/dist/hooks/query/use-commit-changes.cjs +2 -0
- package/dist/hooks/query/use-commit-changes.cjs.map +1 -0
- package/dist/hooks/query/use-commit-changes.d.ts +5 -0
- package/dist/hooks/query/use-commit-changes.js +34 -0
- package/dist/hooks/query/use-commit-changes.js.map +1 -0
- package/dist/hooks/query/use-task-polling.cjs +1 -1
- package/dist/hooks/query/use-task-polling.cjs.map +1 -1
- package/dist/hooks/query/use-task-polling.d.ts +3 -2
- package/dist/hooks/query/use-task-polling.js +53 -40
- package/dist/hooks/query/use-task-polling.js.map +1 -1
- package/dist/hooks/query/use-unified-git-commits.cjs +2 -0
- package/dist/hooks/query/use-unified-git-commits.cjs.map +1 -0
- package/dist/hooks/query/use-unified-git-commits.d.ts +10 -0
- package/dist/hooks/query/use-unified-git-commits.js +41 -0
- package/dist/hooks/query/use-unified-git-commits.js.map +1 -0
- package/dist/hooks/query/use-unified-git-diff.cjs +1 -1
- package/dist/hooks/query/use-unified-git-diff.cjs.map +1 -1
- package/dist/hooks/query/use-unified-git-diff.d.ts +5 -0
- package/dist/hooks/query/use-unified-git-diff.js +11 -4
- package/dist/hooks/query/use-unified-git-diff.js.map +1 -1
- package/dist/hooks/use-acp-model-context.cjs +1 -1
- package/dist/hooks/use-acp-model-context.cjs.map +1 -1
- package/dist/hooks/use-acp-model-context.d.ts +4 -1
- package/dist/hooks/use-acp-model-context.js +9 -8
- package/dist/hooks/use-acp-model-context.js.map +1 -1
- package/dist/hooks/use-auto-refresh-files-on-edit.cjs +1 -1
- package/dist/hooks/use-auto-refresh-files-on-edit.cjs.map +1 -1
- package/dist/hooks/use-auto-refresh-files-on-edit.js +1 -1
- package/dist/hooks/use-auto-refresh-files-on-edit.js.map +1 -1
- package/dist/hooks/use-chat-input-model-state.cjs.map +1 -1
- package/dist/hooks/use-chat-input-model-state.d.ts +2 -1
- package/dist/hooks/use-chat-input-model-state.js.map +1 -1
- package/dist/hooks/use-chat-input-profile-state.cjs +1 -1
- package/dist/hooks/use-chat-input-profile-state.cjs.map +1 -1
- package/dist/hooks/use-chat-input-profile-state.d.ts +1 -10
- package/dist/hooks/use-chat-input-profile-state.js +42 -15
- package/dist/hooks/use-chat-input-profile-state.js.map +1 -1
- package/dist/hooks/use-device-flow.cjs +1 -1
- package/dist/hooks/use-device-flow.cjs.map +1 -1
- package/dist/hooks/use-device-flow.d.ts +4 -1
- package/dist/hooks/use-device-flow.js +42 -40
- package/dist/hooks/use-device-flow.js.map +1 -1
- package/dist/hooks/use-tracking.cjs.map +1 -1
- package/dist/hooks/use-tracking.d.ts +2 -1
- package/dist/hooks/use-tracking.js.map +1 -1
- package/dist/i18n/declaration.cjs +1 -1
- package/dist/i18n/declaration.cjs.map +1 -1
- package/dist/i18n/declaration.d.ts +9 -0
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/index.cjs +1 -1
- package/dist/i18n/index.cjs.map +1 -1
- package/dist/i18n/index.js +19 -18
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/translation.cjs +2 -2
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +153 -0
- package/dist/i18n/translation.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +32 -32
- package/dist/lib/index.cjs +1 -1
- package/dist/lib/index.js +1 -1
- package/dist/locales/ar/openhands.json +9 -0
- package/dist/locales/ca/openhands.json +9 -0
- package/dist/locales/de/openhands.json +9 -0
- package/dist/locales/en/openhands.json +9 -0
- package/dist/locales/es/openhands.json +9 -0
- package/dist/locales/fr/openhands.json +9 -0
- package/dist/locales/it/openhands.json +9 -0
- package/dist/locales/ja/openhands.json +9 -0
- package/dist/locales/ko-KR/openhands.json +9 -0
- package/dist/locales/no/openhands.json +9 -0
- package/dist/locales/pt/openhands.json +9 -0
- package/dist/locales/tr/openhands.json +9 -0
- package/dist/locales/uk/openhands.json +9 -0
- package/dist/locales/zh-CN/openhands.json +9 -0
- package/dist/locales/zh-TW/openhands.json +9 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/cloud-client.cjs +2 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/cloud-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/cloud-client.js +351 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/cloud-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/device-flow-client.cjs +2 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/device-flow-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/device-flow-client.js +106 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/device-flow-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.cjs +2 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.cjs.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.js +69 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.js.map +1 -0
- package/dist/node_modules/@openhands/typescript-client/dist/clients.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/clients.js +3 -0
- 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 +18 -2
- package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/models/acp.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/models/acp.js.map +1 -1
- package/dist/node_modules/axios/index.cjs +1 -1
- package/dist/node_modules/axios/index.js +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +2 -2
- 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 +67 -66
- package/dist/routes/app-settings.js.map +1 -1
- package/dist/routes/commits-tab.cjs +2 -0
- package/dist/routes/commits-tab.cjs.map +1 -0
- package/dist/routes/commits-tab.d.ts +8 -0
- package/dist/routes/commits-tab.js +45 -0
- package/dist/routes/commits-tab.js.map +1 -0
- package/dist/routes/files-tab.cjs +1 -1
- package/dist/routes/files-tab.cjs.map +1 -1
- package/dist/routes/files-tab.js +148 -127
- package/dist/routes/files-tab.js.map +1 -1
- package/dist/services/cloud-funnel-analytics.cjs +2 -0
- package/dist/services/cloud-funnel-analytics.cjs.map +1 -0
- package/dist/services/cloud-funnel-analytics.d.ts +12 -0
- package/dist/services/cloud-funnel-analytics.js +53 -0
- package/dist/services/cloud-funnel-analytics.js.map +1 -0
- package/dist/services/telemetry.cjs +1 -1
- package/dist/services/telemetry.cjs.map +1 -1
- package/dist/services/telemetry.js +49 -47
- package/dist/services/telemetry.js.map +1 -1
- package/dist/types/agent-server/core/base/action.d.ts +5 -4
- package/dist/types/agent-server/core/base/base.d.ts +3 -2
- package/dist/types/agent-server/core/base/observation.d.ts +1 -1
- 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 +3 -5
- package/dist/types/agent-server/type-guards.js +2 -1
- package/dist/types/agent-server/type-guards.js.map +1 -1
- package/dist/types/automation.d.ts +5 -0
- package/dist/utils/api-error-message.d.ts +11 -0
- package/dist/utils/automation-timeout.d.ts +19 -0
- package/dist/utils/base-path.cjs +2 -0
- package/dist/utils/base-path.cjs.map +1 -0
- package/dist/utils/base-path.d.ts +2 -0
- package/dist/utils/base-path.js +23 -0
- package/dist/utils/base-path.js.map +1 -0
- package/package.json +2 -2
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/dev-safe.mjs +7 -8
- package/scripts/dev-static.mjs +3 -0
- package/scripts/dev-with-automation.mjs +3 -0
- package/scripts/docker-build.mjs +4 -0
- package/scripts/static-server.mjs +93 -7
- package/tools/canvas_ui_tool.py +14 -8
- package/build/assets/active-backend-context-hxq31W25.js +0 -1
- package/build/assets/agent-server-client-options-DVLRd9sw.js +0 -1
- package/build/assets/agent-server-conversation-service.api-CuSdr4Qb.js +0 -5
- package/build/assets/agent-settings-D_yOy8XB.js +0 -1
- package/build/assets/api-key-entry-screen-Dl0qVYi4.js +0 -1
- package/build/assets/app-settings-yVizGXox.js +0 -1
- package/build/assets/automation-detail-dvJfLs5u.js +0 -2
- package/build/assets/automation-export-BPcgLqPD.js +0 -2
- package/build/assets/automations-list-CUXogTe0.js +0 -1
- package/build/assets/backend-form-modal-CQJGmItq.js +0 -1
- package/build/assets/browser-store-BI6uklCG.js +0 -1
- package/build/assets/check-Bvi71siz.js +0 -1
- package/build/assets/condenser-settings-Ca8fYZ_Z.js +0 -1
- package/build/assets/conversation-9NBSRoR9.js +0 -1
- package/build/assets/conversation-BXg6Oti2.js +0 -89
- package/build/assets/conversation-panel-CZri9Rup.js +0 -1
- package/build/assets/conversation-service.api-DPBQvTKD.js +0 -1
- package/build/assets/conversation-state-store-B2Bp32XI.js +0 -1
- package/build/assets/declaration-gq8V5eTU.js +0 -1
- package/build/assets/files-tab-UVoray88.js +0 -1
- package/build/assets/git-provider-icon-o6hdnJUB.js +0 -1
- package/build/assets/home-D1IHvGTN.js +0 -1
- package/build/assets/index-redirect-CUUJiNki.js +0 -1
- package/build/assets/install-server-modal-BbuQaA2w.js +0 -1
- package/build/assets/lesson-plan-jC0HBoe6.js +0 -4
- package/build/assets/llm-not-configured-banner-DoARbcdL.js +0 -27
- package/build/assets/llm-settings-4JMLV8mq.js +0 -1
- package/build/assets/llm-settings-D91gMw3U.js +0 -1
- package/build/assets/llm-subscription-service-CKyaV24y.js +0 -1
- package/build/assets/loader-circle-BEykUKYG.js +0 -1
- package/build/assets/manage-backends-modal-DkWAMSle.js +0 -1
- package/build/assets/manifest-aa5c29f6.js +0 -1
- package/build/assets/model-selector-BfqpMkSJ.js +0 -1
- package/build/assets/mouse-pointer-click-PdEQPL6v.js +0 -1
- package/build/assets/onboarding-Bu-HN1ze.js +0 -1
- package/build/assets/onboarding-modal-CZgjs5Bx.js +0 -1
- package/build/assets/option-service.api-BrZ5q87N.js +0 -1
- package/build/assets/organization-service.api-Bk4pCGU1.js +0 -1
- package/build/assets/path-utils-CSmuZoix.js +0 -1
- package/build/assets/plugins-management-service-BRBLxvUl.js +0 -1
- package/build/assets/profiles-service.api-BMXQ9pZC.js +0 -1
- package/build/assets/providers-BpO967xS.js +0 -1
- package/build/assets/proxy-BgJLtxu7.js +0 -1
- package/build/assets/root-BM5WgQ4_.js +0 -2
- package/build/assets/root-V8fkplMy.css +0 -1
- package/build/assets/root-layout-BdoyoobY.js +0 -2
- package/build/assets/schema-field-BSHrUMme.js +0 -1
- package/build/assets/sdk-section-page-t82gsOqa.js +0 -1
- package/build/assets/search-4DHskuhE.js +0 -1
- package/build/assets/secrets-service-B2GqPV0N.js +0 -1
- package/build/assets/settings-DmPLkgq0.js +0 -1
- package/build/assets/settings-modal-CwrZKrTq.js +0 -1
- package/build/assets/settings-service.api-Ce-ub11I.js +0 -1
- package/build/assets/shared-conversation-BDREQPnE.js +0 -1
- package/build/assets/skills-plugins-2Y44YHbO.js +0 -1
- package/build/assets/use-acp-credential-form-MzZM6D7D.js +0 -1
- package/build/assets/use-agent-profiles-DwZxnwO5.js +0 -1
- package/build/assets/use-backends-health-CRHzuvxO.js +0 -1
- package/build/assets/use-cloud-current-user-id-utFreJ0i.js +0 -1
- package/build/assets/use-config-mJrtZHP1.js +0 -1
- package/build/assets/use-create-conversation-DdqsP78F.js +0 -1
- package/build/assets/use-is-authed-B6M0mcGL.js +0 -1
- package/build/assets/use-llm-profiles-RC-PkpBl.js +0 -1
- package/build/assets/use-plugins-marketplace-FHlbeQ4c.js +0 -1
- package/build/assets/use-runtime-is-ready-RKj2WmEh.js +0 -1
- package/build/assets/use-save-agent-profile-tvDP15mh.js +0 -1
- package/build/assets/use-settings-CH5LzXD8.js +0 -1
- package/build/assets/use-settings-nav-items-Dwktv8wo.js +0 -16
- package/build/assets/use-skills-CSzSL6HG.js +0 -1
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~lf310vj7-CSVPGId3.js +0 -10
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~nfpll1wp-BCpa95De.js +0 -177
- package/build/assets/vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CqXiHwjU.js +0 -2
- package/build/assets/x-Cb0WAtak.js +0 -1
- /package/build/assets/{__vite-browser-external-4xJsU2-u.js → __vite-browser-external-DU-Cb_sT.js} +0 -0
- /package/build/assets/{automation-BU8zu-FP.js → automation-BVEmGghX.js} +0 -0
- /package/build/assets/{checkmark-h7udgXMM.js → checkmark-DhcMGwtO.js} +0 -0
- /package/build/assets/{close-p3Op5lxI.js → close-DO5Rq_CS.js} +0 -0
- /package/build/assets/{code-tag-DYlAhEQY.js → code-tag-BvjtzUsr.js} +0 -0
- /package/build/assets/{color-themes-DPBzNtVg.js → color-themes-bVMmJJG6.js} +0 -0
- /package/build/assets/{common-Dh7OqABE.js → common-CxbUL3nR.js} +0 -0
- /package/build/assets/{conversation-local-storage-F6zVMM--.js → conversation-local-storage-B31voBg7.js} +0 -0
- /package/build/assets/{copy-BLmGeJcd.js → copy-DLUw2us-.js} +0 -0
- /package/build/assets/{createLucideIcon-CVAsW2Yo.js → createLucideIcon-D4Tak8A1.js} +0 -0
- /package/build/assets/{dist-CodhvuAP.js → dist-Dj01FXbZ.js} +0 -0
- /package/build/assets/{environment-switch-store-DkjlKWzN.js → environment-switch-store-D9hB9PvY.js} +0 -0
- /package/build/assets/{extension-module-card-classes-9V3J9J_b.js → extension-module-card-classes-BlO4w702.js} +0 -0
- /package/build/assets/{folder-mMWFvaw0.js → folder-ynxP2EIL.js} +0 -0
- /package/build/assets/{get-language-from-path-CPNnuVhI.js → get-language-from-path-rWEQrOGU.js} +0 -0
- /package/build/assets/{git-status-mapper-BI8FyUVp.js → git-status-mapper-C3rfzUex.js} +0 -0
- /package/build/assets/{handle-capture-consent-CPMXU29K.js → handle-capture-consent-DDnXMC9Y.js} +0 -0
- /package/build/assets/{iconBase-DaTRRUjy.js → iconBase-CuvxAQZ5.js} +0 -0
- /package/build/assets/{link-external-DfKQroKX.js → link-external-BVDiJfZt.js} +0 -0
- /package/build/assets/{llm-subscription-DtsX5Lhg.js → llm-subscription-BkdHwtQe.js} +0 -0
- /package/build/assets/{map-provider-BM2SJarp.js → map-provider-XSFHmdDs.js} +0 -0
- /package/build/assets/{middleware-DYHYNAnP.js → middleware-CWYDMVuG.js} +0 -0
- /package/build/assets/{modal-backdrop-zVwfOJZr.js → modal-backdrop-Dsmzgr5s.js} +0 -0
- /package/build/assets/{navigation-context-DPs2G0X8.js → navigation-context-SjzfpygH.js} +0 -0
- /package/build/assets/{objectWithoutPropertiesLoose-BgYIAs2y.js → objectWithoutPropertiesLoose-CQwg6tC0.js} +0 -0
- /package/build/assets/{openhands-logo-bcNw5bkY.js → openhands-logo-C-gDp1wr.js} +0 -0
- /package/build/assets/{react-DPDgL6du.js → react-ao3tWj6K.js} +0 -0
- /package/build/assets/{search-BsjCEFNf.js → search-pb4UKTfK.js} +0 -0
- /package/build/assets/{settings-mQUckT0g.js → settings-DksoDv5z.js} +0 -0
- /package/build/assets/{settings-gear-MXCyZW0x.js → settings-gear-D_HVvE5L.js} +0 -0
- /package/build/assets/{settings-like-page-layout-classes-DENKlZpD.js → settings-like-page-layout-classes-DLrsPCaI.js} +0 -0
- /package/build/assets/{settings-section-header-context-COMOIaxV.js → settings-section-header-context-C2MUIG88.js} +0 -0
- /package/build/assets/{skills-9cDZONKh.js → skills-CH4xgIh-.js} +0 -0
- /package/build/assets/{switch-skeleton-DqQwalyu.js → switch-skeleton-BpSOvZ-n.js} +0 -0
- /package/build/assets/{terminal-BuLtIrb9.js → terminal-Dokfkxn0.js} +0 -0
- /package/build/assets/{u-check-circle-BqoIxNz_.js → u-check-circle-DPWVO-9N.js} +0 -0
- /package/build/assets/{u-check-circle-half-LiwZkuFe.js → u-check-circle-half-BGNAAjOW.js} +0 -0
- /package/build/assets/{u-edit-DJ90xc8Z.js → u-edit-BIskOoEG.js} +0 -0
- /package/build/assets/{use-breakpoint-B-O0lQ84.js → use-breakpoint-OjLm94cF.js} +0 -0
- /package/build/assets/{use-click-outside-element-Bf4Omzot.js → use-click-outside-element-Jpt2WWd7.js} +0 -0
- /package/build/assets/{use-onboarding-completion-C_Swglzp.js → use-onboarding-completion-DkRpDTsD.js} +0 -0
- /package/build/assets/{v4-DbCkTSoU.js → v4-DPgam_jW.js} +0 -0
- /package/build/assets/{vendor~browser-Dqd33JyP.js → vendor~browser-BvEKaLBz.js} +0 -0
- /package/build/assets/{vendor~conversation-panel~conversation~alert-banner-DHDkknt5.js → vendor~conversation-panel~conversation~alert-banner-CznX01nZ.js} +0 -0
- /package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~epa72zsm-B4rXs7Zd.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~e0djk9ee-Cw6LUe8p.js} +0 -0
- /package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~ivvrgjsa-BlIZPCXX.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g9hift2g-DmmpG9SI.js} +0 -0
- /package/build/assets/{vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~byh8a1g4-XNPdpuO8.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~jkpzbynd-CkpBIhVe.js} +0 -0
- /package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DTzw2x50.js → vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BuL5kjfS.js} +0 -0
- /package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~automations-~ki5qnp0d-rV6d1Iv_.js → vendor~root-layout~index-home~home~conversation-panel~conversation~launch~skills-settings~a~j2jlu22h-DUYl8gbZ.js} +0 -0
- /package/build/assets/{vendor~root-layout~home~mcp~automations-list~onboarding-modal-CXyYYvYh.js → vendor~root-layout~index-home~home~mcp~automations-list~onboarding-modal-pIgQDxTc.js} +0 -0
- /package/build/assets/{vendor~terminal-aeP3PnKf.js → vendor~terminal-jAaNQWS9.js} +0 -0
- /package/build/assets/{x-mark-Batp6gXa.js → x-mark-C5przfXl.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tracking.cjs","names":[],"sources":["../../src/hooks/use-tracking.ts"],"sourcesContent":["import { usePostHog } from \"posthog-js/react\";\nimport { useSettings } from \"./query/use-settings\";\nimport { Provider } from \"#/types/settings\";\nimport type { BackendKind } from \"#/api/backend-registry/types\";\nimport type { WorkspaceMode } from \"#/api/conversation-metadata-store\";\n\n/**\n * Hook that provides tracking functions with automatic data collection\n * from available hooks (settings, etc.)\n *\n * All events require explicit user consent (user_consents_to_analytics === true).\n * Events are silently dropped when:\n * - posthog is not initialized (VITE_POSTHOG_CLIENT_KEY not set)\n * - user_consents_to_analytics is false or null (consent not yet collected)\n */\nexport const useTracking = () => {\n const posthog = usePostHog();\n const { data: settings } = useSettings();\n\n // Common properties included in all tracking events\n const commonProperties = {\n current_url: window.location.href,\n user_email: settings?.email || settings?.git_user_email || null,\n };\n\n /**\n * Capture an event only when PostHog is available and the user has\n * explicitly consented. null and false are both treated as \"not consented\".\n */\n const track = (event: string, properties: Record<string, unknown> = {}) => {\n if (!posthog || settings?.user_consents_to_analytics !== true) return;\n posthog.capture(event, { ...properties, ...commonProperties });\n };\n\n const trackLoginButtonClick = ({ provider }: { provider: Provider }) => {\n track(\"login_button_clicked\", { provider });\n };\n\n const trackConversationCreated = ({\n conversationId,\n taskId,\n hasRepository,\n gitProvider,\n hasWorkspace,\n workspaceMode,\n hasInitialQuery,\n agentType,\n hasParentConversation,\n entryPoint,\n }: {\n conversationId: string;\n taskId?: string;\n hasRepository: boolean;\n gitProvider?: Provider;\n hasWorkspace: boolean;\n workspaceMode?: WorkspaceMode;\n hasInitialQuery: boolean;\n agentType?: \"default\" | \"plan\";\n hasParentConversation: boolean;\n entryPoint?: string;\n }) => {\n track(\"conversation_created\", {\n conversation_id: conversationId,\n task_id: taskId,\n is_start_task: conversationId.startsWith(\"task-\"),\n has_repository: hasRepository,\n git_provider: gitProvider,\n has_workspace: hasWorkspace,\n workspace_mode: workspaceMode,\n has_initial_query: hasInitialQuery,\n agent_type: agentType,\n has_parent_conversation: hasParentConversation,\n entry_point: entryPoint,\n });\n };\n\n const trackPushButtonClick = () => {\n track(\"push_button_clicked\");\n };\n\n const trackPullButtonClick = () => {\n track(\"pull_button_clicked\");\n };\n\n const trackCreatePrButtonClick = () => {\n track(\"create_pr_button_clicked\");\n };\n\n const trackUserSignupCompleted = () => {\n track(\"user_signup_completed\", {\n signup_timestamp: new Date().toISOString(),\n });\n };\n\n const trackPrebuiltAutomationEnabled = ({\n automationId,\n automationName,\n automationCategory,\n }: {\n automationId?: string;\n automationName: string;\n automationCategory?: string;\n }) => {\n track(\"prebuilt_automation_enabled\", {\n automation_id: automationId,\n automation_name: automationName,\n automation_category: automationCategory,\n });\n };\n\n const trackInitialQuerySubmitted = ({\n entryPoint,\n queryCharacterLength,\n replayJsonSize,\n }: {\n entryPoint: string;\n queryCharacterLength: number;\n replayJsonSize?: number;\n }) => {\n track(\"initial_query_submitted\", {\n entry_point: entryPoint,\n query_character_length: queryCharacterLength,\n replay_json_size: replayJsonSize,\n });\n };\n\n const trackUserMessageSent = ({\n sessionMessageCount,\n currentMessageLength,\n }: {\n sessionMessageCount: number;\n currentMessageLength: number;\n }) => {\n track(\"user_message_sent\", {\n session_message_count: sessionMessageCount,\n current_message_length: currentMessageLength,\n });\n };\n\n const trackDownloadVsCodeButtonClicked = () => {\n track(\"download_via_vscode_button_clicked\");\n };\n\n const trackSettingsSaved = ({\n llmModel,\n llmApiKeySet,\n searchApiKeySet,\n remoteRuntimeResourceFactor,\n }: {\n llmModel: unknown;\n llmApiKeySet: \"SET\" | \"UNSET\";\n searchApiKeySet: \"SET\" | \"UNSET\";\n remoteRuntimeResourceFactor?: unknown;\n }) => {\n track(\"settings_saved\", {\n LLM_MODEL: llmModel,\n LLM_API_KEY_SET: llmApiKeySet,\n SEARCH_API_KEY_SET: searchApiKeySet,\n REMOTE_RUNTIME_RESOURCE_FACTOR: remoteRuntimeResourceFactor,\n });\n };\n\n const trackMcpConfigUpdated = ({\n sseServersCount,\n stdioServersCount,\n }: {\n sseServersCount: number;\n stdioServersCount: number;\n }) => {\n track(\"mcp_config_updated\", {\n has_mcp_config: true,\n sse_servers_count: sseServersCount,\n stdio_servers_count: stdioServersCount,\n });\n };\n\n const trackDownloadTrajectoryButtonClicked = () => {\n track(\"download_trajectory_button_clicked\");\n };\n\n const trackConversationExported = (format: \"markdown\" | \"html\") => {\n track(\"conversation_exported\", { format });\n };\n\n const trackAutomationCreated = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_created\", { backend_kind: backendKind });\n };\n\n const trackAutomationExecuted = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_executed\", { backend_kind: backendKind });\n };\n\n const trackAutomationDeleted = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_deleted\", { backend_kind: backendKind });\n };\n\n const trackAutomationDeactivated = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_deactivated\", { backend_kind: backendKind });\n };\n\n const trackAutomationEdited = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_edited\", { backend_kind: backendKind });\n };\n\n const trackAutomationExported = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_exported\", { backend_kind: backendKind });\n };\n\n const trackAutomationImported = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_imported\", { backend_kind: backendKind });\n };\n\n const trackBackendAdded = ({\n backendKind,\n connectionMethod,\n isOpenhandsCloud,\n isCustomHost,\n hasApiKey,\n source,\n }: {\n backendKind: BackendKind;\n connectionMethod: \"manual\" | \"cloud_login\";\n isOpenhandsCloud: boolean;\n isCustomHost: boolean;\n hasApiKey: boolean;\n source?: \"add_backend_modal\" | \"manage_backends_modal\";\n }) => {\n track(\"backend_added\", {\n backend_kind: backendKind,\n connection_method: connectionMethod,\n is_openhands_cloud: isOpenhandsCloud,\n is_custom_host: isCustomHost,\n has_api_key: hasApiKey,\n source,\n });\n };\n\n const trackOnboardingStarted = () => {\n track(\"onboarding_started\");\n };\n\n const trackOnboardingStepViewed = ({\n step,\n stepIndex,\n totalSteps,\n agent,\n }: {\n step: string;\n stepIndex: number;\n totalSteps: number;\n agent: string;\n }) => {\n track(\"onboarding_step_viewed\", {\n step,\n step_index: stepIndex,\n total_steps: totalSteps,\n agent,\n });\n };\n\n const trackOnboardingCompleted = ({ agent }: { agent: string }) => {\n track(\"onboarding_completed\", { agent });\n };\n\n const trackOnboardingSkipped = ({\n step,\n stepIndex,\n totalSteps,\n agent,\n }: {\n step: string;\n stepIndex: number;\n totalSteps: number;\n agent: string;\n }) => {\n track(\"onboarding_skipped\", {\n step,\n step_index: stepIndex,\n total_steps: totalSteps,\n agent,\n });\n };\n\n return {\n trackLoginButtonClick,\n trackConversationCreated,\n trackPushButtonClick,\n trackPullButtonClick,\n trackCreatePrButtonClick,\n trackUserSignupCompleted,\n trackPrebuiltAutomationEnabled,\n trackInitialQuerySubmitted,\n trackUserMessageSent,\n trackDownloadVsCodeButtonClicked,\n trackSettingsSaved,\n trackMcpConfigUpdated,\n trackDownloadTrajectoryButtonClicked,\n trackConversationExported,\n trackAutomationCreated,\n trackAutomationExecuted,\n trackAutomationDeleted,\n trackAutomationDeactivated,\n trackAutomationEdited,\n trackAutomationExported,\n trackAutomationImported,\n trackBackendAdded,\n trackOnboardingStarted,\n trackOnboardingStepViewed,\n trackOnboardingCompleted,\n trackOnboardingSkipped,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-tracking.cjs","names":[],"sources":["../../src/hooks/use-tracking.ts"],"sourcesContent":["import { usePostHog } from \"posthog-js/react\";\nimport { useSettings } from \"./query/use-settings\";\nimport { Provider } from \"#/types/settings\";\nimport type { BackendKind } from \"#/api/backend-registry/types\";\nimport type { WorkspaceMode } from \"#/api/conversation-metadata-store\";\nimport type { CloudConnectionSource } from \"#/services/cloud-funnel-analytics\";\n\n/**\n * Hook that provides tracking functions with automatic data collection\n * from available hooks (settings, etc.)\n *\n * All events require explicit user consent (user_consents_to_analytics === true).\n * Events are silently dropped when:\n * - posthog is not initialized (VITE_POSTHOG_CLIENT_KEY not set)\n * - user_consents_to_analytics is false or null (consent not yet collected)\n */\nexport const useTracking = () => {\n const posthog = usePostHog();\n const { data: settings } = useSettings();\n\n // Common properties included in all tracking events\n const commonProperties = {\n current_url: window.location.href,\n user_email: settings?.email || settings?.git_user_email || null,\n };\n\n /**\n * Capture an event only when PostHog is available and the user has\n * explicitly consented. null and false are both treated as \"not consented\".\n */\n const track = (event: string, properties: Record<string, unknown> = {}) => {\n if (!posthog || settings?.user_consents_to_analytics !== true) return;\n posthog.capture(event, { ...properties, ...commonProperties });\n };\n\n const trackLoginButtonClick = ({ provider }: { provider: Provider }) => {\n track(\"login_button_clicked\", { provider });\n };\n\n const trackConversationCreated = ({\n conversationId,\n taskId,\n hasRepository,\n gitProvider,\n hasWorkspace,\n workspaceMode,\n hasInitialQuery,\n agentType,\n hasParentConversation,\n entryPoint,\n }: {\n conversationId: string;\n taskId?: string;\n hasRepository: boolean;\n gitProvider?: Provider;\n hasWorkspace: boolean;\n workspaceMode?: WorkspaceMode;\n hasInitialQuery: boolean;\n agentType?: \"default\" | \"plan\";\n hasParentConversation: boolean;\n entryPoint?: string;\n }) => {\n track(\"conversation_created\", {\n conversation_id: conversationId,\n task_id: taskId,\n is_start_task: conversationId.startsWith(\"task-\"),\n has_repository: hasRepository,\n git_provider: gitProvider,\n has_workspace: hasWorkspace,\n workspace_mode: workspaceMode,\n has_initial_query: hasInitialQuery,\n agent_type: agentType,\n has_parent_conversation: hasParentConversation,\n entry_point: entryPoint,\n });\n };\n\n const trackPushButtonClick = () => {\n track(\"push_button_clicked\");\n };\n\n const trackPullButtonClick = () => {\n track(\"pull_button_clicked\");\n };\n\n const trackCreatePrButtonClick = () => {\n track(\"create_pr_button_clicked\");\n };\n\n const trackUserSignupCompleted = () => {\n track(\"user_signup_completed\", {\n signup_timestamp: new Date().toISOString(),\n });\n };\n\n const trackPrebuiltAutomationEnabled = ({\n automationId,\n automationName,\n automationCategory,\n }: {\n automationId?: string;\n automationName: string;\n automationCategory?: string;\n }) => {\n track(\"prebuilt_automation_enabled\", {\n automation_id: automationId,\n automation_name: automationName,\n automation_category: automationCategory,\n });\n };\n\n const trackInitialQuerySubmitted = ({\n entryPoint,\n queryCharacterLength,\n replayJsonSize,\n }: {\n entryPoint: string;\n queryCharacterLength: number;\n replayJsonSize?: number;\n }) => {\n track(\"initial_query_submitted\", {\n entry_point: entryPoint,\n query_character_length: queryCharacterLength,\n replay_json_size: replayJsonSize,\n });\n };\n\n const trackUserMessageSent = ({\n sessionMessageCount,\n currentMessageLength,\n }: {\n sessionMessageCount: number;\n currentMessageLength: number;\n }) => {\n track(\"user_message_sent\", {\n session_message_count: sessionMessageCount,\n current_message_length: currentMessageLength,\n });\n };\n\n const trackDownloadVsCodeButtonClicked = () => {\n track(\"download_via_vscode_button_clicked\");\n };\n\n const trackSettingsSaved = ({\n llmModel,\n llmApiKeySet,\n searchApiKeySet,\n remoteRuntimeResourceFactor,\n }: {\n llmModel: unknown;\n llmApiKeySet: \"SET\" | \"UNSET\";\n searchApiKeySet: \"SET\" | \"UNSET\";\n remoteRuntimeResourceFactor?: unknown;\n }) => {\n track(\"settings_saved\", {\n LLM_MODEL: llmModel,\n LLM_API_KEY_SET: llmApiKeySet,\n SEARCH_API_KEY_SET: searchApiKeySet,\n REMOTE_RUNTIME_RESOURCE_FACTOR: remoteRuntimeResourceFactor,\n });\n };\n\n const trackMcpConfigUpdated = ({\n sseServersCount,\n stdioServersCount,\n }: {\n sseServersCount: number;\n stdioServersCount: number;\n }) => {\n track(\"mcp_config_updated\", {\n has_mcp_config: true,\n sse_servers_count: sseServersCount,\n stdio_servers_count: stdioServersCount,\n });\n };\n\n const trackDownloadTrajectoryButtonClicked = () => {\n track(\"download_trajectory_button_clicked\");\n };\n\n const trackConversationExported = (format: \"markdown\" | \"html\") => {\n track(\"conversation_exported\", { format });\n };\n\n const trackAutomationCreated = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_created\", { backend_kind: backendKind });\n };\n\n const trackAutomationExecuted = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_executed\", { backend_kind: backendKind });\n };\n\n const trackAutomationDeleted = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_deleted\", { backend_kind: backendKind });\n };\n\n const trackAutomationDeactivated = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_deactivated\", { backend_kind: backendKind });\n };\n\n const trackAutomationEdited = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_edited\", { backend_kind: backendKind });\n };\n\n const trackAutomationExported = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_exported\", { backend_kind: backendKind });\n };\n\n const trackAutomationImported = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_imported\", { backend_kind: backendKind });\n };\n\n const trackBackendAdded = ({\n backendKind,\n connectionMethod,\n isOpenhandsCloud,\n isCustomHost,\n hasApiKey,\n source,\n }: {\n backendKind: BackendKind;\n connectionMethod: \"manual\" | \"cloud_login\";\n isOpenhandsCloud: boolean;\n isCustomHost: boolean;\n hasApiKey: boolean;\n source?: CloudConnectionSource;\n }) => {\n track(\"backend_added\", {\n backend_kind: backendKind,\n connection_method: connectionMethod,\n is_openhands_cloud: isOpenhandsCloud,\n is_custom_host: isCustomHost,\n has_api_key: hasApiKey,\n source,\n });\n };\n\n const trackOnboardingStarted = () => {\n track(\"onboarding_started\");\n };\n\n const trackOnboardingStepViewed = ({\n step,\n stepIndex,\n totalSteps,\n agent,\n }: {\n step: string;\n stepIndex: number;\n totalSteps: number;\n agent: string;\n }) => {\n track(\"onboarding_step_viewed\", {\n step,\n step_index: stepIndex,\n total_steps: totalSteps,\n agent,\n });\n };\n\n const trackOnboardingCompleted = ({ agent }: { agent: string }) => {\n track(\"onboarding_completed\", { agent });\n };\n\n const trackOnboardingSkipped = ({\n step,\n stepIndex,\n totalSteps,\n agent,\n }: {\n step: string;\n stepIndex: number;\n totalSteps: number;\n agent: string;\n }) => {\n track(\"onboarding_skipped\", {\n step,\n step_index: stepIndex,\n total_steps: totalSteps,\n agent,\n });\n };\n\n return {\n trackLoginButtonClick,\n trackConversationCreated,\n trackPushButtonClick,\n trackPullButtonClick,\n trackCreatePrButtonClick,\n trackUserSignupCompleted,\n trackPrebuiltAutomationEnabled,\n trackInitialQuerySubmitted,\n trackUserMessageSent,\n trackDownloadVsCodeButtonClicked,\n trackSettingsSaved,\n trackMcpConfigUpdated,\n trackDownloadTrajectoryButtonClicked,\n trackConversationExported,\n trackAutomationCreated,\n trackAutomationExecuted,\n trackAutomationDeleted,\n trackAutomationDeactivated,\n trackAutomationEdited,\n trackAutomationExported,\n trackAutomationImported,\n trackBackendAdded,\n trackOnboardingStarted,\n trackOnboardingStepViewed,\n trackOnboardingCompleted,\n trackOnboardingSkipped,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Provider } from "#/types/settings";
|
|
2
2
|
import type { BackendKind } from "#/api/backend-registry/types";
|
|
3
3
|
import type { WorkspaceMode } from "#/api/conversation-metadata-store";
|
|
4
|
+
import type { CloudConnectionSource } from "#/services/cloud-funnel-analytics";
|
|
4
5
|
/**
|
|
5
6
|
* Hook that provides tracking functions with automatic data collection
|
|
6
7
|
* from available hooks (settings, etc.)
|
|
@@ -84,7 +85,7 @@ export declare const useTracking: () => {
|
|
|
84
85
|
isOpenhandsCloud: boolean;
|
|
85
86
|
isCustomHost: boolean;
|
|
86
87
|
hasApiKey: boolean;
|
|
87
|
-
source?:
|
|
88
|
+
source?: CloudConnectionSource;
|
|
88
89
|
}) => void;
|
|
89
90
|
trackOnboardingStarted: () => void;
|
|
90
91
|
trackOnboardingStepViewed: ({ step, stepIndex, totalSteps, agent, }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tracking.js","names":[],"sources":["../../src/hooks/use-tracking.ts"],"sourcesContent":["import { usePostHog } from \"posthog-js/react\";\nimport { useSettings } from \"./query/use-settings\";\nimport { Provider } from \"#/types/settings\";\nimport type { BackendKind } from \"#/api/backend-registry/types\";\nimport type { WorkspaceMode } from \"#/api/conversation-metadata-store\";\n\n/**\n * Hook that provides tracking functions with automatic data collection\n * from available hooks (settings, etc.)\n *\n * All events require explicit user consent (user_consents_to_analytics === true).\n * Events are silently dropped when:\n * - posthog is not initialized (VITE_POSTHOG_CLIENT_KEY not set)\n * - user_consents_to_analytics is false or null (consent not yet collected)\n */\nexport const useTracking = () => {\n const posthog = usePostHog();\n const { data: settings } = useSettings();\n\n // Common properties included in all tracking events\n const commonProperties = {\n current_url: window.location.href,\n user_email: settings?.email || settings?.git_user_email || null,\n };\n\n /**\n * Capture an event only when PostHog is available and the user has\n * explicitly consented. null and false are both treated as \"not consented\".\n */\n const track = (event: string, properties: Record<string, unknown> = {}) => {\n if (!posthog || settings?.user_consents_to_analytics !== true) return;\n posthog.capture(event, { ...properties, ...commonProperties });\n };\n\n const trackLoginButtonClick = ({ provider }: { provider: Provider }) => {\n track(\"login_button_clicked\", { provider });\n };\n\n const trackConversationCreated = ({\n conversationId,\n taskId,\n hasRepository,\n gitProvider,\n hasWorkspace,\n workspaceMode,\n hasInitialQuery,\n agentType,\n hasParentConversation,\n entryPoint,\n }: {\n conversationId: string;\n taskId?: string;\n hasRepository: boolean;\n gitProvider?: Provider;\n hasWorkspace: boolean;\n workspaceMode?: WorkspaceMode;\n hasInitialQuery: boolean;\n agentType?: \"default\" | \"plan\";\n hasParentConversation: boolean;\n entryPoint?: string;\n }) => {\n track(\"conversation_created\", {\n conversation_id: conversationId,\n task_id: taskId,\n is_start_task: conversationId.startsWith(\"task-\"),\n has_repository: hasRepository,\n git_provider: gitProvider,\n has_workspace: hasWorkspace,\n workspace_mode: workspaceMode,\n has_initial_query: hasInitialQuery,\n agent_type: agentType,\n has_parent_conversation: hasParentConversation,\n entry_point: entryPoint,\n });\n };\n\n const trackPushButtonClick = () => {\n track(\"push_button_clicked\");\n };\n\n const trackPullButtonClick = () => {\n track(\"pull_button_clicked\");\n };\n\n const trackCreatePrButtonClick = () => {\n track(\"create_pr_button_clicked\");\n };\n\n const trackUserSignupCompleted = () => {\n track(\"user_signup_completed\", {\n signup_timestamp: new Date().toISOString(),\n });\n };\n\n const trackPrebuiltAutomationEnabled = ({\n automationId,\n automationName,\n automationCategory,\n }: {\n automationId?: string;\n automationName: string;\n automationCategory?: string;\n }) => {\n track(\"prebuilt_automation_enabled\", {\n automation_id: automationId,\n automation_name: automationName,\n automation_category: automationCategory,\n });\n };\n\n const trackInitialQuerySubmitted = ({\n entryPoint,\n queryCharacterLength,\n replayJsonSize,\n }: {\n entryPoint: string;\n queryCharacterLength: number;\n replayJsonSize?: number;\n }) => {\n track(\"initial_query_submitted\", {\n entry_point: entryPoint,\n query_character_length: queryCharacterLength,\n replay_json_size: replayJsonSize,\n });\n };\n\n const trackUserMessageSent = ({\n sessionMessageCount,\n currentMessageLength,\n }: {\n sessionMessageCount: number;\n currentMessageLength: number;\n }) => {\n track(\"user_message_sent\", {\n session_message_count: sessionMessageCount,\n current_message_length: currentMessageLength,\n });\n };\n\n const trackDownloadVsCodeButtonClicked = () => {\n track(\"download_via_vscode_button_clicked\");\n };\n\n const trackSettingsSaved = ({\n llmModel,\n llmApiKeySet,\n searchApiKeySet,\n remoteRuntimeResourceFactor,\n }: {\n llmModel: unknown;\n llmApiKeySet: \"SET\" | \"UNSET\";\n searchApiKeySet: \"SET\" | \"UNSET\";\n remoteRuntimeResourceFactor?: unknown;\n }) => {\n track(\"settings_saved\", {\n LLM_MODEL: llmModel,\n LLM_API_KEY_SET: llmApiKeySet,\n SEARCH_API_KEY_SET: searchApiKeySet,\n REMOTE_RUNTIME_RESOURCE_FACTOR: remoteRuntimeResourceFactor,\n });\n };\n\n const trackMcpConfigUpdated = ({\n sseServersCount,\n stdioServersCount,\n }: {\n sseServersCount: number;\n stdioServersCount: number;\n }) => {\n track(\"mcp_config_updated\", {\n has_mcp_config: true,\n sse_servers_count: sseServersCount,\n stdio_servers_count: stdioServersCount,\n });\n };\n\n const trackDownloadTrajectoryButtonClicked = () => {\n track(\"download_trajectory_button_clicked\");\n };\n\n const trackConversationExported = (format: \"markdown\" | \"html\") => {\n track(\"conversation_exported\", { format });\n };\n\n const trackAutomationCreated = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_created\", { backend_kind: backendKind });\n };\n\n const trackAutomationExecuted = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_executed\", { backend_kind: backendKind });\n };\n\n const trackAutomationDeleted = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_deleted\", { backend_kind: backendKind });\n };\n\n const trackAutomationDeactivated = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_deactivated\", { backend_kind: backendKind });\n };\n\n const trackAutomationEdited = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_edited\", { backend_kind: backendKind });\n };\n\n const trackAutomationExported = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_exported\", { backend_kind: backendKind });\n };\n\n const trackAutomationImported = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_imported\", { backend_kind: backendKind });\n };\n\n const trackBackendAdded = ({\n backendKind,\n connectionMethod,\n isOpenhandsCloud,\n isCustomHost,\n hasApiKey,\n source,\n }: {\n backendKind: BackendKind;\n connectionMethod: \"manual\" | \"cloud_login\";\n isOpenhandsCloud: boolean;\n isCustomHost: boolean;\n hasApiKey: boolean;\n source?: \"add_backend_modal\" | \"manage_backends_modal\";\n }) => {\n track(\"backend_added\", {\n backend_kind: backendKind,\n connection_method: connectionMethod,\n is_openhands_cloud: isOpenhandsCloud,\n is_custom_host: isCustomHost,\n has_api_key: hasApiKey,\n source,\n });\n };\n\n const trackOnboardingStarted = () => {\n track(\"onboarding_started\");\n };\n\n const trackOnboardingStepViewed = ({\n step,\n stepIndex,\n totalSteps,\n agent,\n }: {\n step: string;\n stepIndex: number;\n totalSteps: number;\n agent: string;\n }) => {\n track(\"onboarding_step_viewed\", {\n step,\n step_index: stepIndex,\n total_steps: totalSteps,\n agent,\n });\n };\n\n const trackOnboardingCompleted = ({ agent }: { agent: string }) => {\n track(\"onboarding_completed\", { agent });\n };\n\n const trackOnboardingSkipped = ({\n step,\n stepIndex,\n totalSteps,\n agent,\n }: {\n step: string;\n stepIndex: number;\n totalSteps: number;\n agent: string;\n }) => {\n track(\"onboarding_skipped\", {\n step,\n step_index: stepIndex,\n total_steps: totalSteps,\n agent,\n });\n };\n\n return {\n trackLoginButtonClick,\n trackConversationCreated,\n trackPushButtonClick,\n trackPullButtonClick,\n trackCreatePrButtonClick,\n trackUserSignupCompleted,\n trackPrebuiltAutomationEnabled,\n trackInitialQuerySubmitted,\n trackUserMessageSent,\n trackDownloadVsCodeButtonClicked,\n trackSettingsSaved,\n trackMcpConfigUpdated,\n trackDownloadTrajectoryButtonClicked,\n trackConversationExported,\n trackAutomationCreated,\n trackAutomationExecuted,\n trackAutomationDeleted,\n trackAutomationDeactivated,\n trackAutomationEdited,\n trackAutomationExported,\n trackAutomationImported,\n trackBackendAdded,\n trackOnboardingStarted,\n trackOnboardingStepViewed,\n trackOnboardingCompleted,\n trackOnboardingSkipped,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-tracking.js","names":[],"sources":["../../src/hooks/use-tracking.ts"],"sourcesContent":["import { usePostHog } from \"posthog-js/react\";\nimport { useSettings } from \"./query/use-settings\";\nimport { Provider } from \"#/types/settings\";\nimport type { BackendKind } from \"#/api/backend-registry/types\";\nimport type { WorkspaceMode } from \"#/api/conversation-metadata-store\";\nimport type { CloudConnectionSource } from \"#/services/cloud-funnel-analytics\";\n\n/**\n * Hook that provides tracking functions with automatic data collection\n * from available hooks (settings, etc.)\n *\n * All events require explicit user consent (user_consents_to_analytics === true).\n * Events are silently dropped when:\n * - posthog is not initialized (VITE_POSTHOG_CLIENT_KEY not set)\n * - user_consents_to_analytics is false or null (consent not yet collected)\n */\nexport const useTracking = () => {\n const posthog = usePostHog();\n const { data: settings } = useSettings();\n\n // Common properties included in all tracking events\n const commonProperties = {\n current_url: window.location.href,\n user_email: settings?.email || settings?.git_user_email || null,\n };\n\n /**\n * Capture an event only when PostHog is available and the user has\n * explicitly consented. null and false are both treated as \"not consented\".\n */\n const track = (event: string, properties: Record<string, unknown> = {}) => {\n if (!posthog || settings?.user_consents_to_analytics !== true) return;\n posthog.capture(event, { ...properties, ...commonProperties });\n };\n\n const trackLoginButtonClick = ({ provider }: { provider: Provider }) => {\n track(\"login_button_clicked\", { provider });\n };\n\n const trackConversationCreated = ({\n conversationId,\n taskId,\n hasRepository,\n gitProvider,\n hasWorkspace,\n workspaceMode,\n hasInitialQuery,\n agentType,\n hasParentConversation,\n entryPoint,\n }: {\n conversationId: string;\n taskId?: string;\n hasRepository: boolean;\n gitProvider?: Provider;\n hasWorkspace: boolean;\n workspaceMode?: WorkspaceMode;\n hasInitialQuery: boolean;\n agentType?: \"default\" | \"plan\";\n hasParentConversation: boolean;\n entryPoint?: string;\n }) => {\n track(\"conversation_created\", {\n conversation_id: conversationId,\n task_id: taskId,\n is_start_task: conversationId.startsWith(\"task-\"),\n has_repository: hasRepository,\n git_provider: gitProvider,\n has_workspace: hasWorkspace,\n workspace_mode: workspaceMode,\n has_initial_query: hasInitialQuery,\n agent_type: agentType,\n has_parent_conversation: hasParentConversation,\n entry_point: entryPoint,\n });\n };\n\n const trackPushButtonClick = () => {\n track(\"push_button_clicked\");\n };\n\n const trackPullButtonClick = () => {\n track(\"pull_button_clicked\");\n };\n\n const trackCreatePrButtonClick = () => {\n track(\"create_pr_button_clicked\");\n };\n\n const trackUserSignupCompleted = () => {\n track(\"user_signup_completed\", {\n signup_timestamp: new Date().toISOString(),\n });\n };\n\n const trackPrebuiltAutomationEnabled = ({\n automationId,\n automationName,\n automationCategory,\n }: {\n automationId?: string;\n automationName: string;\n automationCategory?: string;\n }) => {\n track(\"prebuilt_automation_enabled\", {\n automation_id: automationId,\n automation_name: automationName,\n automation_category: automationCategory,\n });\n };\n\n const trackInitialQuerySubmitted = ({\n entryPoint,\n queryCharacterLength,\n replayJsonSize,\n }: {\n entryPoint: string;\n queryCharacterLength: number;\n replayJsonSize?: number;\n }) => {\n track(\"initial_query_submitted\", {\n entry_point: entryPoint,\n query_character_length: queryCharacterLength,\n replay_json_size: replayJsonSize,\n });\n };\n\n const trackUserMessageSent = ({\n sessionMessageCount,\n currentMessageLength,\n }: {\n sessionMessageCount: number;\n currentMessageLength: number;\n }) => {\n track(\"user_message_sent\", {\n session_message_count: sessionMessageCount,\n current_message_length: currentMessageLength,\n });\n };\n\n const trackDownloadVsCodeButtonClicked = () => {\n track(\"download_via_vscode_button_clicked\");\n };\n\n const trackSettingsSaved = ({\n llmModel,\n llmApiKeySet,\n searchApiKeySet,\n remoteRuntimeResourceFactor,\n }: {\n llmModel: unknown;\n llmApiKeySet: \"SET\" | \"UNSET\";\n searchApiKeySet: \"SET\" | \"UNSET\";\n remoteRuntimeResourceFactor?: unknown;\n }) => {\n track(\"settings_saved\", {\n LLM_MODEL: llmModel,\n LLM_API_KEY_SET: llmApiKeySet,\n SEARCH_API_KEY_SET: searchApiKeySet,\n REMOTE_RUNTIME_RESOURCE_FACTOR: remoteRuntimeResourceFactor,\n });\n };\n\n const trackMcpConfigUpdated = ({\n sseServersCount,\n stdioServersCount,\n }: {\n sseServersCount: number;\n stdioServersCount: number;\n }) => {\n track(\"mcp_config_updated\", {\n has_mcp_config: true,\n sse_servers_count: sseServersCount,\n stdio_servers_count: stdioServersCount,\n });\n };\n\n const trackDownloadTrajectoryButtonClicked = () => {\n track(\"download_trajectory_button_clicked\");\n };\n\n const trackConversationExported = (format: \"markdown\" | \"html\") => {\n track(\"conversation_exported\", { format });\n };\n\n const trackAutomationCreated = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_created\", { backend_kind: backendKind });\n };\n\n const trackAutomationExecuted = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_executed\", { backend_kind: backendKind });\n };\n\n const trackAutomationDeleted = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_deleted\", { backend_kind: backendKind });\n };\n\n const trackAutomationDeactivated = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_deactivated\", { backend_kind: backendKind });\n };\n\n const trackAutomationEdited = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_edited\", { backend_kind: backendKind });\n };\n\n const trackAutomationExported = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_exported\", { backend_kind: backendKind });\n };\n\n const trackAutomationImported = ({\n backendKind,\n }: {\n backendKind: BackendKind;\n }) => {\n track(\"automation_imported\", { backend_kind: backendKind });\n };\n\n const trackBackendAdded = ({\n backendKind,\n connectionMethod,\n isOpenhandsCloud,\n isCustomHost,\n hasApiKey,\n source,\n }: {\n backendKind: BackendKind;\n connectionMethod: \"manual\" | \"cloud_login\";\n isOpenhandsCloud: boolean;\n isCustomHost: boolean;\n hasApiKey: boolean;\n source?: CloudConnectionSource;\n }) => {\n track(\"backend_added\", {\n backend_kind: backendKind,\n connection_method: connectionMethod,\n is_openhands_cloud: isOpenhandsCloud,\n is_custom_host: isCustomHost,\n has_api_key: hasApiKey,\n source,\n });\n };\n\n const trackOnboardingStarted = () => {\n track(\"onboarding_started\");\n };\n\n const trackOnboardingStepViewed = ({\n step,\n stepIndex,\n totalSteps,\n agent,\n }: {\n step: string;\n stepIndex: number;\n totalSteps: number;\n agent: string;\n }) => {\n track(\"onboarding_step_viewed\", {\n step,\n step_index: stepIndex,\n total_steps: totalSteps,\n agent,\n });\n };\n\n const trackOnboardingCompleted = ({ agent }: { agent: string }) => {\n track(\"onboarding_completed\", { agent });\n };\n\n const trackOnboardingSkipped = ({\n step,\n stepIndex,\n totalSteps,\n agent,\n }: {\n step: string;\n stepIndex: number;\n totalSteps: number;\n agent: string;\n }) => {\n track(\"onboarding_skipped\", {\n step,\n step_index: stepIndex,\n total_steps: totalSteps,\n agent,\n });\n };\n\n return {\n trackLoginButtonClick,\n trackConversationCreated,\n trackPushButtonClick,\n trackPullButtonClick,\n trackCreatePrButtonClick,\n trackUserSignupCompleted,\n trackPrebuiltAutomationEnabled,\n trackInitialQuerySubmitted,\n trackUserMessageSent,\n trackDownloadVsCodeButtonClicked,\n trackSettingsSaved,\n trackMcpConfigUpdated,\n trackDownloadTrajectoryButtonClicked,\n trackConversationExported,\n trackAutomationCreated,\n trackAutomationExecuted,\n trackAutomationDeleted,\n trackAutomationDeactivated,\n trackAutomationEdited,\n trackAutomationExported,\n trackAutomationImported,\n trackBackendAdded,\n trackOnboardingStarted,\n trackOnboardingStepViewed,\n trackOnboardingCompleted,\n trackOnboardingSkipped,\n };\n};\n"],"mappings":"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"}
|