@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
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useConversationId as e } from "../use-conversation-id.js";
|
|
2
|
+
import { useQuery as t } from "../../node_modules/@tanstack/react-query/build/modern/useQuery.js";
|
|
3
|
+
import { useActiveConversation as n } from "./use-active-conversation.js";
|
|
4
|
+
import { useRuntimeIsReady as r } from "../use-runtime-is-ready.js";
|
|
5
|
+
import i from "../../api/git-service/agent-server-git-service.api.js";
|
|
6
|
+
import { getGitPath as a } from "../../utils/get-git-path.js";
|
|
7
|
+
import o from "react";
|
|
8
|
+
//#region src/hooks/query/use-commit-changes.ts
|
|
9
|
+
var s = (s, c) => {
|
|
10
|
+
let { conversationId: l } = e(), { data: u } = n(), d = r(), f = u?.conversation_url, p = u?.session_api_key, m = u?.selected_repository, h = u?.workspace?.working_dir?.trim(), g = o.useMemo(() => a(m, h), [m, h]);
|
|
11
|
+
return t({
|
|
12
|
+
queryKey: [
|
|
13
|
+
"commit_changes",
|
|
14
|
+
l,
|
|
15
|
+
f,
|
|
16
|
+
p,
|
|
17
|
+
g,
|
|
18
|
+
s
|
|
19
|
+
],
|
|
20
|
+
queryFn: async () => {
|
|
21
|
+
if (!l) throw Error("No conversation ID");
|
|
22
|
+
return i.getCommitChanges(f, p, g, s);
|
|
23
|
+
},
|
|
24
|
+
staleTime: Infinity,
|
|
25
|
+
gcTime: 1e3 * 60 * 15,
|
|
26
|
+
retry: !1,
|
|
27
|
+
enabled: c.enabled && d && !!l,
|
|
28
|
+
meta: { disableToast: !0 }
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
//#endregion
|
|
32
|
+
export { s as useCommitChanges };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=use-commit-changes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-commit-changes.js","names":[],"sources":["../../../src/hooks/query/use-commit-changes.ts"],"sourcesContent":["import React from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport AgentServerGitService from \"#/api/git-service/agent-server-git-service.api\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useRuntimeIsReady } from \"#/hooks/use-runtime-is-ready\";\nimport { getGitPath } from \"#/utils/get-git-path\";\n\ntype UseCommitChangesConfig = {\n enabled: boolean;\n};\n\nexport const useCommitChanges = (\n sha: string,\n config: UseCommitChangesConfig,\n) => {\n const { conversationId } = useConversationId();\n const { data: conversation } = useActiveConversation();\n const runtimeIsReady = useRuntimeIsReady();\n\n const conversationUrl = conversation?.conversation_url;\n const sessionApiKey = conversation?.session_api_key;\n const selectedRepository = conversation?.selected_repository;\n const workingDir = conversation?.workspace?.working_dir?.trim();\n\n const gitPath = React.useMemo(\n () => getGitPath(selectedRepository, workingDir),\n [selectedRepository, workingDir],\n );\n\n return useQuery({\n queryKey: [\n \"commit_changes\",\n conversationId,\n conversationUrl,\n sessionApiKey,\n gitPath,\n sha,\n ],\n queryFn: async () => {\n if (!conversationId) throw new Error(\"No conversation ID\");\n\n return AgentServerGitService.getCommitChanges(\n conversationUrl,\n sessionApiKey,\n gitPath,\n sha,\n );\n },\n // A commit's change list is sha-addressed and immutable — never stale,\n // and deliberately not invalidated by the bash-observation refresh.\n staleTime: Infinity,\n gcTime: 1000 * 60 * 15, // 15 minutes\n retry: false,\n enabled: config.enabled && runtimeIsReady && !!conversationId,\n meta: {\n disableToast: true,\n },\n });\n};\n"],"mappings":";;;;;;;;AAYA,IAAa,KACX,GACA,MACG;CACH,IAAM,EAAE,sBAAmB,GAAmB,EACxC,EAAE,MAAM,MAAiB,GAAuB,EAChD,IAAiB,GAAmB,EAEpC,IAAkB,GAAc,kBAChC,IAAgB,GAAc,iBAC9B,IAAqB,GAAc,qBACnC,IAAa,GAAc,WAAW,aAAa,MAAM,EAEzD,IAAU,EAAM,cACd,EAAW,GAAoB,EAAW,EAChD,CAAC,GAAoB,EAAW,CACjC;AAED,QAAO,EAAS;EACd,UAAU;GACR;GACA;GACA;GACA;GACA;GACA;GACD;EACD,SAAS,YAAY;AACnB,OAAI,CAAC,EAAgB,OAAU,MAAM,qBAAqB;AAE1D,UAAO,EAAsB,iBAC3B,GACA,GACA,GACA,EACD;;EAIH,WAAW;EACX,QAAQ,MAAO,KAAK;EACpB,OAAO;EACP,SAAS,EAAO,WAAW,KAAkB,CAAC,CAAC;EAC/C,MAAM,EACJ,cAAc,IACf;EACF,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../context/navigation-context.cjs`),t=require(`../use-conversation-id.cjs`),n=require(`../../utils/conversation-local-storage.cjs`),r=require(`../../node_modules/@tanstack/react-query/build/modern/useQuery.cjs`),i=require(`../../stores/optimistic-user-message-store.cjs`),a=require(`../../api/conversation-service/agent-server-conversation-service.api.cjs`),
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../context/navigation-context.cjs`),t=require(`../use-conversation-id.cjs`),n=require(`../../utils/conversation-local-storage.cjs`),r=require(`../../node_modules/@tanstack/react-query/build/modern/useQuery.cjs`),i=require(`../../stores/optimistic-user-message-store.cjs`),a=require(`../../api/conversation-metadata-store.cjs`),o=require(`../../api/conversation-service/agent-server-conversation-service.api.cjs`),s=require(`../../services/cloud-funnel-analytics.cjs`),c=require(`../../utils/flush-pending-task-attachments.cjs`),l=require(`../../utils/pending-task-message-link.cjs`);let u=require(`react`);var d=(e,t)=>{let n=e.request.plugins?.map(a.toPluginCoordinates);if(!n?.length)return;let r=a.getStoredConversationMetadata(t);a.setStoredConversationMetadata(t,{...r,selected_repository:r?.selected_repository??e.request.selected_repository??null,selected_branch:r?.selected_branch??e.request.selected_branch??null,git_provider:r?.git_provider??e.request.git_provider??null,plugins:n})},f=()=>{let{conversationId:a}=t.useOptionalConversationId(),{navigate:f}=e.useNavigation(),p=!!a&&a.startsWith(`task-`),m=p?a.replace(`task-`,``):null,h=r.useQuery({queryKey:[`start-task`,m],queryFn:async()=>m?o.default.getStartTask(m):null,enabled:!!m,refetchInterval:e=>{let t=e.state.data;return!t||t.status===`READY`||t.status===`ERROR`?!1:3e3},retry:!1}),g=(0,u.useRef)(null);return(0,u.useLayoutEffect)(()=>{if(!a)return;let e=l.consumeScheduledPendingTaskMessageReassign(a);e&&(i.useOptimisticUserMessageStore.getState().reassignPendingMessages(e.fromConversationId,e.toConversationId),l.clearPendingTaskMessageLink(e.toConversationId))},[a]),(0,u.useEffect)(()=>{let e=h.data,t=e?.app_conversation_id;!m||e?.status!==`READY`||!t||g.current===m||(g.current=m,s.trackCloudConversationReady(m,t),d(e,t),(async()=>{await c.flushPendingTaskAttachments(m,t);let e=`task-${m}`;l.linkPendingTaskMessages(t,e),l.schedulePendingTaskMessageReassign(e,t);let r=n.consumePendingTaskDraft(m);r&&n.setConversationState(t,{draftMessage:r}),f(`/conversations/${t}`,{replace:!0})})())},[h.data,f,m]),(0,u.useEffect)(()=>{g.current=null},[m]),{isTask:p,taskId:m,conversationId:p?null:a??null,task:h.data,taskStatus:h.data?.status,taskDetail:h.data?.detail,taskError:h.error,isLoadingTask:h.isLoading,repositoryInfo:{selectedRepository:h.data?.request?.selected_repository,selectedBranch:h.data?.request?.selected_branch,gitProvider:h.data?.request?.git_provider}}};exports.useTaskPolling=f;
|
|
2
2
|
//# sourceMappingURL=use-task-polling.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-task-polling.cjs","names":[],"sources":["../../../src/hooks/query/use-task-polling.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport AgentServerConversationService from \"#/api/conversation-service/agent-server-conversation-service.api\";\nimport { useNavigation } from \"#/context/navigation-context\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport {\n consumePendingTaskDraft,\n setConversationState,\n} from \"#/utils/conversation-local-storage\";\nimport { useOptimisticUserMessageStore } from \"#/stores/optimistic-user-message-store\";\nimport { flushPendingTaskAttachments } from \"#/utils/flush-pending-task-attachments\";\nimport {\n clearPendingTaskMessageLink,\n consumeScheduledPendingTaskMessageReassign,\n linkPendingTaskMessages,\n schedulePendingTaskMessageReassign,\n} from \"#/utils/pending-task-message-link\";\n\n/**\n * Hook that polls V1 conversation start tasks and navigates when ready.\n *\n * This hook:\n * - Detects if the conversationId URL param is a task ID (format: \"task-{uuid}\")\n * - Polls the V1 start task API every 3 seconds until status is READY or ERROR\n * - Automatically navigates to the conversation URL when the task becomes READY\n * - Exposes task status and details for UI components to show loading states and errors\n *\n * URL patterns:\n * - /conversations/task-{uuid} → Polls start task, then navigates to /conversations/{conversation-id}\n * - /conversations/{uuid or hex} → No polling (handled by useActiveConversation)\n *\n * Note: This hook does NOT fetch conversation data. It only handles task polling and navigation.\n */\nexport const useTaskPolling = () => {\n // Optional: the chat input shell renders on the home page too; polling\n // simply no-ops when there's no conversation id yet.\n const { conversationId } = useOptionalConversationId();\n const { navigate } = useNavigation();\n\n // Check if this is a task ID (format: \"task-{uuid}\")\n const isTask = !!conversationId && conversationId.startsWith(\"task-\");\n const taskId = isTask ? conversationId!.replace(\"task-\", \"\") : null;\n\n // Poll the task if this is a task ID\n const taskQuery = useQuery({\n queryKey: [\"start-task\", taskId],\n queryFn: async () => {\n if (!taskId) return null;\n return AgentServerConversationService.getStartTask(taskId);\n },\n enabled: !!taskId,\n refetchInterval: (query) => {\n const task = query.state.data;\n if (!task) return false;\n\n // Stop polling if ready or error\n if (task.status === \"READY\" || task.status === \"ERROR\") {\n return false;\n }\n\n // Poll every 3 seconds while task is in progress\n return 3000;\n },\n retry: false,\n });\n\n const handledReadyTaskIdRef = useRef<string | null>(null);\n\n // Reassign optimistic pending messages before paint on the real conversation\n // route. Doing this in the ready handler before navigate leaves a frame where\n // the URL still points at `task-{uuid}` but pending is keyed to the real id.\n useLayoutEffect(() => {\n if (!conversationId) {\n return;\n }\n\n const pendingReassign =\n consumeScheduledPendingTaskMessageReassign(conversationId);\n if (!pendingReassign) {\n return;\n }\n\n useOptimisticUserMessageStore\n .getState()\n .reassignPendingMessages(\n pendingReassign.fromConversationId,\n pendingReassign.toConversationId,\n );\n clearPendingTaskMessageLink(pendingReassign.toConversationId);\n }, [conversationId]);\n\n // Navigate to conversation ID when task is ready\n useEffect(() => {\n const task = taskQuery.data;\n if (\n !taskId ||\n task?.status !== \"READY\" ||\n !
|
|
1
|
+
{"version":3,"file":"use-task-polling.cjs","names":[],"sources":["../../../src/hooks/query/use-task-polling.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport AgentServerConversationService from \"#/api/conversation-service/agent-server-conversation-service.api\";\nimport type { AppConversationStartTask } from \"#/api/conversation-service/agent-server-conversation-service.types\";\nimport {\n getStoredConversationMetadata,\n setStoredConversationMetadata,\n toPluginCoordinates,\n} from \"#/api/conversation-metadata-store\";\nimport { useNavigation } from \"#/context/navigation-context\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport {\n consumePendingTaskDraft,\n setConversationState,\n} from \"#/utils/conversation-local-storage\";\nimport { useOptimisticUserMessageStore } from \"#/stores/optimistic-user-message-store\";\nimport { trackCloudConversationReady } from \"#/services/cloud-funnel-analytics\";\nimport { flushPendingTaskAttachments } from \"#/utils/flush-pending-task-attachments\";\nimport {\n clearPendingTaskMessageLink,\n consumeScheduledPendingTaskMessageReassign,\n linkPendingTaskMessages,\n schedulePendingTaskMessageReassign,\n} from \"#/utils/pending-task-message-link\";\n\nconst storeTaskPlugins = (\n task: AppConversationStartTask,\n conversationId: string,\n) => {\n const plugins = task.request.plugins?.map(toPluginCoordinates);\n if (!plugins?.length) return;\n\n const metadata = getStoredConversationMetadata(conversationId);\n setStoredConversationMetadata(conversationId, {\n ...metadata,\n selected_repository:\n metadata?.selected_repository ?? task.request.selected_repository ?? null,\n selected_branch:\n metadata?.selected_branch ?? task.request.selected_branch ?? null,\n git_provider: metadata?.git_provider ?? task.request.git_provider ?? null,\n plugins,\n });\n};\n\n/**\n * Hook that polls V1 conversation start tasks and navigates when ready.\n *\n * This hook:\n * - Detects if the conversationId URL param is a task ID (format: \"task-{uuid}\")\n * - Polls the V1 start task API every 3 seconds until status is READY or ERROR\n * - Automatically navigates to the conversation URL when the task becomes READY\n * - Exposes task status and details for UI components to show loading states and errors\n *\n * URL patterns:\n * - /conversations/task-{uuid} → Polls start task, then navigates to /conversations/{conversation-id}\n * - /conversations/{uuid or hex} → No polling (handled by useActiveConversation)\n *\n * Note: This hook does NOT fetch conversation data. It only handles task polling and navigation.\n */\nexport const useTaskPolling = () => {\n // Optional: the chat input shell renders on the home page too; polling\n // simply no-ops when there's no conversation id yet.\n const { conversationId } = useOptionalConversationId();\n const { navigate } = useNavigation();\n\n // Check if this is a task ID (format: \"task-{uuid}\")\n const isTask = !!conversationId && conversationId.startsWith(\"task-\");\n const taskId = isTask ? conversationId!.replace(\"task-\", \"\") : null;\n\n // Poll the task if this is a task ID\n const taskQuery = useQuery({\n queryKey: [\"start-task\", taskId],\n queryFn: async () => {\n if (!taskId) return null;\n return AgentServerConversationService.getStartTask(taskId);\n },\n enabled: !!taskId,\n refetchInterval: (query) => {\n const task = query.state.data;\n if (!task) return false;\n\n // Stop polling if ready or error\n if (task.status === \"READY\" || task.status === \"ERROR\") {\n return false;\n }\n\n // Poll every 3 seconds while task is in progress\n return 3000;\n },\n retry: false,\n });\n\n const handledReadyTaskIdRef = useRef<string | null>(null);\n\n // Reassign optimistic pending messages before paint on the real conversation\n // route. Doing this in the ready handler before navigate leaves a frame where\n // the URL still points at `task-{uuid}` but pending is keyed to the real id.\n useLayoutEffect(() => {\n if (!conversationId) {\n return;\n }\n\n const pendingReassign =\n consumeScheduledPendingTaskMessageReassign(conversationId);\n if (!pendingReassign) {\n return;\n }\n\n useOptimisticUserMessageStore\n .getState()\n .reassignPendingMessages(\n pendingReassign.fromConversationId,\n pendingReassign.toConversationId,\n );\n clearPendingTaskMessageLink(pendingReassign.toConversationId);\n }, [conversationId]);\n\n // Navigate to conversation ID when task is ready\n useEffect(() => {\n const task = taskQuery.data;\n const appConversationId = task?.app_conversation_id;\n if (\n !taskId ||\n task?.status !== \"READY\" ||\n !appConversationId ||\n handledReadyTaskIdRef.current === taskId\n ) {\n return;\n }\n\n handledReadyTaskIdRef.current = taskId;\n trackCloudConversationReady(taskId, appConversationId);\n storeTaskPlugins(task, appConversationId);\n\n void (async () => {\n await flushPendingTaskAttachments(taskId, appConversationId);\n\n const taskConversationId = `task-${taskId}`;\n linkPendingTaskMessages(appConversationId, taskConversationId);\n schedulePendingTaskMessageReassign(taskConversationId, appConversationId);\n\n const pendingDraft = consumePendingTaskDraft(taskId);\n if (pendingDraft) {\n setConversationState(appConversationId, {\n draftMessage: pendingDraft,\n });\n }\n\n navigate(`/conversations/${appConversationId}`, { replace: true });\n })();\n }, [taskQuery.data, navigate, taskId]);\n\n useEffect(() => {\n handledReadyTaskIdRef.current = null;\n }, [taskId]);\n\n return {\n isTask,\n taskId,\n conversationId: isTask ? null : (conversationId ?? null),\n task: taskQuery.data,\n taskStatus: taskQuery.data?.status,\n taskDetail: taskQuery.data?.detail,\n taskError: taskQuery.error,\n isLoadingTask: taskQuery.isLoading,\n // Repository information from task request\n repositoryInfo: {\n selectedRepository: taskQuery.data?.request?.selected_repository,\n selectedBranch: taskQuery.data?.request?.selected_branch,\n gitProvider: taskQuery.data?.request?.git_provider,\n },\n };\n};\n"],"mappings":"kqBAyBA,IAAM,GACJ,EACA,IACG,CACH,IAAM,EAAU,EAAK,QAAQ,SAAS,IAAI,EAAA,oBAAoB,CAC9D,GAAI,CAAC,GAAS,OAAQ,OAEtB,IAAM,EAAW,EAAA,8BAA8B,EAAe,CAC9D,EAAA,8BAA8B,EAAgB,CAC5C,GAAG,EACH,oBACE,GAAU,qBAAuB,EAAK,QAAQ,qBAAuB,KACvE,gBACE,GAAU,iBAAmB,EAAK,QAAQ,iBAAmB,KAC/D,aAAc,GAAU,cAAgB,EAAK,QAAQ,cAAgB,KACrE,UACD,CAAC,EAkBS,MAAuB,CAGlC,GAAM,CAAE,kBAAmB,EAAA,2BAA2B,CAChD,CAAE,YAAa,EAAA,eAAe,CAG9B,EAAS,CAAC,CAAC,GAAkB,EAAe,WAAW,QAAQ,CAC/D,EAAS,EAAS,EAAgB,QAAQ,QAAS,GAAG,CAAG,KAGzD,EAAY,EAAA,SAAS,CACzB,SAAU,CAAC,aAAc,EAAO,CAChC,QAAS,SACF,EACE,EAAA,QAA+B,aAAa,EAAO,CADtC,KAGtB,QAAS,CAAC,CAAC,EACX,gBAAkB,GAAU,CAC1B,IAAM,EAAO,EAAM,MAAM,KASzB,MARI,CAAC,GAGD,EAAK,SAAW,SAAW,EAAK,SAAW,QACtC,GAIF,KAET,MAAO,GACR,CAAC,CAEI,GAAA,EAAA,EAAA,QAA8C,KAAK,CAgEzD,OA3DA,EAAA,EAAA,qBAAsB,CACpB,GAAI,CAAC,EACH,OAGF,IAAM,EACJ,EAAA,2CAA2C,EAAe,CACvD,IAIL,EAAA,8BACG,UAAU,CACV,wBACC,EAAgB,mBAChB,EAAgB,iBACjB,CACH,EAAA,4BAA4B,EAAgB,iBAAiB,GAC5D,CAAC,EAAe,CAAC,EAGpB,EAAA,EAAA,eAAgB,CACd,IAAM,EAAO,EAAU,KACjB,EAAoB,GAAM,oBAE9B,CAAC,GACD,GAAM,SAAW,SACjB,CAAC,GACD,EAAsB,UAAY,IAKpC,EAAsB,QAAU,EAChC,EAAA,4BAA4B,EAAQ,EAAkB,CACtD,EAAiB,EAAM,EAAkB,EAEnC,SAAY,CAChB,MAAM,EAAA,4BAA4B,EAAQ,EAAkB,CAE5D,IAAM,EAAqB,QAAQ,IACnC,EAAA,wBAAwB,EAAmB,EAAmB,CAC9D,EAAA,mCAAmC,EAAoB,EAAkB,CAEzE,IAAM,EAAe,EAAA,wBAAwB,EAAO,CAChD,GACF,EAAA,qBAAqB,EAAmB,CACtC,aAAc,EACf,CAAC,CAGJ,EAAS,kBAAkB,IAAqB,CAAE,QAAS,GAAM,CAAC,IAChE,GACH,CAAC,EAAU,KAAM,EAAU,EAAO,CAAC,EAEtC,EAAA,EAAA,eAAgB,CACd,EAAsB,QAAU,MAC/B,CAAC,EAAO,CAAC,CAEL,CACL,SACA,SACA,eAAgB,EAAS,KAAQ,GAAkB,KACnD,KAAM,EAAU,KAChB,WAAY,EAAU,MAAM,OAC5B,WAAY,EAAU,MAAM,OAC5B,UAAW,EAAU,MACrB,cAAe,EAAU,UAEzB,eAAgB,CACd,mBAAoB,EAAU,MAAM,SAAS,oBAC7C,eAAgB,EAAU,MAAM,SAAS,gBACzC,YAAa,EAAU,MAAM,SAAS,aACvC,CACF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AppConversationStartTask } from "#/api/conversation-service/agent-server-conversation-service.types";
|
|
1
2
|
/**
|
|
2
3
|
* Hook that polls V1 conversation start tasks and navigates when ready.
|
|
3
4
|
*
|
|
@@ -17,8 +18,8 @@ export declare const useTaskPolling: () => {
|
|
|
17
18
|
isTask: boolean;
|
|
18
19
|
taskId: string | null;
|
|
19
20
|
conversationId: string | null;
|
|
20
|
-
task:
|
|
21
|
-
taskStatus: import("
|
|
21
|
+
task: AppConversationStartTask | null | undefined;
|
|
22
|
+
taskStatus: import("#/api/conversation-service/agent-server-conversation-service.types").AppConversationStartTaskStatus | undefined;
|
|
22
23
|
taskDetail: string | null | undefined;
|
|
23
24
|
taskError: import("axios").AxiosError<unknown, any> | null;
|
|
24
25
|
isLoadingTask: boolean;
|
|
@@ -3,58 +3,71 @@ import { useOptionalConversationId as t } from "../use-conversation-id.js";
|
|
|
3
3
|
import { consumePendingTaskDraft as n, setConversationState as r } from "../../utils/conversation-local-storage.js";
|
|
4
4
|
import { useQuery as i } from "../../node_modules/@tanstack/react-query/build/modern/useQuery.js";
|
|
5
5
|
import { useOptimisticUserMessageStore as a } from "../../stores/optimistic-user-message-store.js";
|
|
6
|
-
import o from "../../api/conversation-
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
6
|
+
import { getStoredConversationMetadata as o, setStoredConversationMetadata as s, toPluginCoordinates as c } from "../../api/conversation-metadata-store.js";
|
|
7
|
+
import l from "../../api/conversation-service/agent-server-conversation-service.api.js";
|
|
8
|
+
import { trackCloudConversationReady as u } from "../../services/cloud-funnel-analytics.js";
|
|
9
|
+
import { flushPendingTaskAttachments as d } from "../../utils/flush-pending-task-attachments.js";
|
|
10
|
+
import { clearPendingTaskMessageLink as f, consumeScheduledPendingTaskMessageReassign as p, linkPendingTaskMessages as m, schedulePendingTaskMessageReassign as h } from "../../utils/pending-task-message-link.js";
|
|
11
|
+
import { useEffect as g, useLayoutEffect as _, useRef as v } from "react";
|
|
10
12
|
//#region src/hooks/query/use-task-polling.ts
|
|
11
|
-
var
|
|
12
|
-
let
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
var y = (e, t) => {
|
|
14
|
+
let n = e.request.plugins?.map(c);
|
|
15
|
+
if (!n?.length) return;
|
|
16
|
+
let r = o(t);
|
|
17
|
+
s(t, {
|
|
18
|
+
...r,
|
|
19
|
+
selected_repository: r?.selected_repository ?? e.request.selected_repository ?? null,
|
|
20
|
+
selected_branch: r?.selected_branch ?? e.request.selected_branch ?? null,
|
|
21
|
+
git_provider: r?.git_provider ?? e.request.git_provider ?? null,
|
|
22
|
+
plugins: n
|
|
23
|
+
});
|
|
24
|
+
}, b = () => {
|
|
25
|
+
let { conversationId: o } = t(), { navigate: s } = e(), c = !!o && o.startsWith("task-"), b = c ? o.replace("task-", "") : null, x = i({
|
|
26
|
+
queryKey: ["start-task", b],
|
|
27
|
+
queryFn: async () => b ? l.getStartTask(b) : null,
|
|
28
|
+
enabled: !!b,
|
|
16
29
|
refetchInterval: (e) => {
|
|
17
30
|
let t = e.state.data;
|
|
18
31
|
return !t || t.status === "READY" || t.status === "ERROR" ? !1 : 3e3;
|
|
19
32
|
},
|
|
20
33
|
retry: !1
|
|
21
|
-
}),
|
|
22
|
-
return
|
|
23
|
-
if (!
|
|
24
|
-
let e =
|
|
25
|
-
e && (a.getState().reassignPendingMessages(e.fromConversationId, e.toConversationId),
|
|
26
|
-
}, [
|
|
27
|
-
let e =
|
|
28
|
-
!
|
|
29
|
-
await
|
|
30
|
-
let
|
|
31
|
-
|
|
32
|
-
let i = n(
|
|
33
|
-
i && r(
|
|
34
|
+
}), S = v(null);
|
|
35
|
+
return _(() => {
|
|
36
|
+
if (!o) return;
|
|
37
|
+
let e = p(o);
|
|
38
|
+
e && (a.getState().reassignPendingMessages(e.fromConversationId, e.toConversationId), f(e.toConversationId));
|
|
39
|
+
}, [o]), g(() => {
|
|
40
|
+
let e = x.data, t = e?.app_conversation_id;
|
|
41
|
+
!b || e?.status !== "READY" || !t || S.current === b || (S.current = b, u(b, t), y(e, t), (async () => {
|
|
42
|
+
await d(b, t);
|
|
43
|
+
let e = `task-${b}`;
|
|
44
|
+
m(t, e), h(e, t);
|
|
45
|
+
let i = n(b);
|
|
46
|
+
i && r(t, { draftMessage: i }), s(`/conversations/${t}`, { replace: !0 });
|
|
34
47
|
})());
|
|
35
48
|
}, [
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
]),
|
|
40
|
-
|
|
41
|
-
}, [
|
|
42
|
-
isTask:
|
|
43
|
-
taskId:
|
|
44
|
-
conversationId:
|
|
45
|
-
task:
|
|
46
|
-
taskStatus:
|
|
47
|
-
taskDetail:
|
|
48
|
-
taskError:
|
|
49
|
-
isLoadingTask:
|
|
49
|
+
x.data,
|
|
50
|
+
s,
|
|
51
|
+
b
|
|
52
|
+
]), g(() => {
|
|
53
|
+
S.current = null;
|
|
54
|
+
}, [b]), {
|
|
55
|
+
isTask: c,
|
|
56
|
+
taskId: b,
|
|
57
|
+
conversationId: c ? null : o ?? null,
|
|
58
|
+
task: x.data,
|
|
59
|
+
taskStatus: x.data?.status,
|
|
60
|
+
taskDetail: x.data?.detail,
|
|
61
|
+
taskError: x.error,
|
|
62
|
+
isLoadingTask: x.isLoading,
|
|
50
63
|
repositoryInfo: {
|
|
51
|
-
selectedRepository:
|
|
52
|
-
selectedBranch:
|
|
53
|
-
gitProvider:
|
|
64
|
+
selectedRepository: x.data?.request?.selected_repository,
|
|
65
|
+
selectedBranch: x.data?.request?.selected_branch,
|
|
66
|
+
gitProvider: x.data?.request?.git_provider
|
|
54
67
|
}
|
|
55
68
|
};
|
|
56
69
|
};
|
|
57
70
|
//#endregion
|
|
58
|
-
export {
|
|
71
|
+
export { b as useTaskPolling };
|
|
59
72
|
|
|
60
73
|
//# sourceMappingURL=use-task-polling.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-task-polling.js","names":[],"sources":["../../../src/hooks/query/use-task-polling.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport AgentServerConversationService from \"#/api/conversation-service/agent-server-conversation-service.api\";\nimport { useNavigation } from \"#/context/navigation-context\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport {\n consumePendingTaskDraft,\n setConversationState,\n} from \"#/utils/conversation-local-storage\";\nimport { useOptimisticUserMessageStore } from \"#/stores/optimistic-user-message-store\";\nimport { flushPendingTaskAttachments } from \"#/utils/flush-pending-task-attachments\";\nimport {\n clearPendingTaskMessageLink,\n consumeScheduledPendingTaskMessageReassign,\n linkPendingTaskMessages,\n schedulePendingTaskMessageReassign,\n} from \"#/utils/pending-task-message-link\";\n\n/**\n * Hook that polls V1 conversation start tasks and navigates when ready.\n *\n * This hook:\n * - Detects if the conversationId URL param is a task ID (format: \"task-{uuid}\")\n * - Polls the V1 start task API every 3 seconds until status is READY or ERROR\n * - Automatically navigates to the conversation URL when the task becomes READY\n * - Exposes task status and details for UI components to show loading states and errors\n *\n * URL patterns:\n * - /conversations/task-{uuid} → Polls start task, then navigates to /conversations/{conversation-id}\n * - /conversations/{uuid or hex} → No polling (handled by useActiveConversation)\n *\n * Note: This hook does NOT fetch conversation data. It only handles task polling and navigation.\n */\nexport const useTaskPolling = () => {\n // Optional: the chat input shell renders on the home page too; polling\n // simply no-ops when there's no conversation id yet.\n const { conversationId } = useOptionalConversationId();\n const { navigate } = useNavigation();\n\n // Check if this is a task ID (format: \"task-{uuid}\")\n const isTask = !!conversationId && conversationId.startsWith(\"task-\");\n const taskId = isTask ? conversationId!.replace(\"task-\", \"\") : null;\n\n // Poll the task if this is a task ID\n const taskQuery = useQuery({\n queryKey: [\"start-task\", taskId],\n queryFn: async () => {\n if (!taskId) return null;\n return AgentServerConversationService.getStartTask(taskId);\n },\n enabled: !!taskId,\n refetchInterval: (query) => {\n const task = query.state.data;\n if (!task) return false;\n\n // Stop polling if ready or error\n if (task.status === \"READY\" || task.status === \"ERROR\") {\n return false;\n }\n\n // Poll every 3 seconds while task is in progress\n return 3000;\n },\n retry: false,\n });\n\n const handledReadyTaskIdRef = useRef<string | null>(null);\n\n // Reassign optimistic pending messages before paint on the real conversation\n // route. Doing this in the ready handler before navigate leaves a frame where\n // the URL still points at `task-{uuid}` but pending is keyed to the real id.\n useLayoutEffect(() => {\n if (!conversationId) {\n return;\n }\n\n const pendingReassign =\n consumeScheduledPendingTaskMessageReassign(conversationId);\n if (!pendingReassign) {\n return;\n }\n\n useOptimisticUserMessageStore\n .getState()\n .reassignPendingMessages(\n pendingReassign.fromConversationId,\n pendingReassign.toConversationId,\n );\n clearPendingTaskMessageLink(pendingReassign.toConversationId);\n }, [conversationId]);\n\n // Navigate to conversation ID when task is ready\n useEffect(() => {\n const task = taskQuery.data;\n if (\n !taskId ||\n task?.status !== \"READY\" ||\n !
|
|
1
|
+
{"version":3,"file":"use-task-polling.js","names":[],"sources":["../../../src/hooks/query/use-task-polling.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport AgentServerConversationService from \"#/api/conversation-service/agent-server-conversation-service.api\";\nimport type { AppConversationStartTask } from \"#/api/conversation-service/agent-server-conversation-service.types\";\nimport {\n getStoredConversationMetadata,\n setStoredConversationMetadata,\n toPluginCoordinates,\n} from \"#/api/conversation-metadata-store\";\nimport { useNavigation } from \"#/context/navigation-context\";\nimport { useOptionalConversationId } from \"#/hooks/use-conversation-id\";\nimport {\n consumePendingTaskDraft,\n setConversationState,\n} from \"#/utils/conversation-local-storage\";\nimport { useOptimisticUserMessageStore } from \"#/stores/optimistic-user-message-store\";\nimport { trackCloudConversationReady } from \"#/services/cloud-funnel-analytics\";\nimport { flushPendingTaskAttachments } from \"#/utils/flush-pending-task-attachments\";\nimport {\n clearPendingTaskMessageLink,\n consumeScheduledPendingTaskMessageReassign,\n linkPendingTaskMessages,\n schedulePendingTaskMessageReassign,\n} from \"#/utils/pending-task-message-link\";\n\nconst storeTaskPlugins = (\n task: AppConversationStartTask,\n conversationId: string,\n) => {\n const plugins = task.request.plugins?.map(toPluginCoordinates);\n if (!plugins?.length) return;\n\n const metadata = getStoredConversationMetadata(conversationId);\n setStoredConversationMetadata(conversationId, {\n ...metadata,\n selected_repository:\n metadata?.selected_repository ?? task.request.selected_repository ?? null,\n selected_branch:\n metadata?.selected_branch ?? task.request.selected_branch ?? null,\n git_provider: metadata?.git_provider ?? task.request.git_provider ?? null,\n plugins,\n });\n};\n\n/**\n * Hook that polls V1 conversation start tasks and navigates when ready.\n *\n * This hook:\n * - Detects if the conversationId URL param is a task ID (format: \"task-{uuid}\")\n * - Polls the V1 start task API every 3 seconds until status is READY or ERROR\n * - Automatically navigates to the conversation URL when the task becomes READY\n * - Exposes task status and details for UI components to show loading states and errors\n *\n * URL patterns:\n * - /conversations/task-{uuid} → Polls start task, then navigates to /conversations/{conversation-id}\n * - /conversations/{uuid or hex} → No polling (handled by useActiveConversation)\n *\n * Note: This hook does NOT fetch conversation data. It only handles task polling and navigation.\n */\nexport const useTaskPolling = () => {\n // Optional: the chat input shell renders on the home page too; polling\n // simply no-ops when there's no conversation id yet.\n const { conversationId } = useOptionalConversationId();\n const { navigate } = useNavigation();\n\n // Check if this is a task ID (format: \"task-{uuid}\")\n const isTask = !!conversationId && conversationId.startsWith(\"task-\");\n const taskId = isTask ? conversationId!.replace(\"task-\", \"\") : null;\n\n // Poll the task if this is a task ID\n const taskQuery = useQuery({\n queryKey: [\"start-task\", taskId],\n queryFn: async () => {\n if (!taskId) return null;\n return AgentServerConversationService.getStartTask(taskId);\n },\n enabled: !!taskId,\n refetchInterval: (query) => {\n const task = query.state.data;\n if (!task) return false;\n\n // Stop polling if ready or error\n if (task.status === \"READY\" || task.status === \"ERROR\") {\n return false;\n }\n\n // Poll every 3 seconds while task is in progress\n return 3000;\n },\n retry: false,\n });\n\n const handledReadyTaskIdRef = useRef<string | null>(null);\n\n // Reassign optimistic pending messages before paint on the real conversation\n // route. Doing this in the ready handler before navigate leaves a frame where\n // the URL still points at `task-{uuid}` but pending is keyed to the real id.\n useLayoutEffect(() => {\n if (!conversationId) {\n return;\n }\n\n const pendingReassign =\n consumeScheduledPendingTaskMessageReassign(conversationId);\n if (!pendingReassign) {\n return;\n }\n\n useOptimisticUserMessageStore\n .getState()\n .reassignPendingMessages(\n pendingReassign.fromConversationId,\n pendingReassign.toConversationId,\n );\n clearPendingTaskMessageLink(pendingReassign.toConversationId);\n }, [conversationId]);\n\n // Navigate to conversation ID when task is ready\n useEffect(() => {\n const task = taskQuery.data;\n const appConversationId = task?.app_conversation_id;\n if (\n !taskId ||\n task?.status !== \"READY\" ||\n !appConversationId ||\n handledReadyTaskIdRef.current === taskId\n ) {\n return;\n }\n\n handledReadyTaskIdRef.current = taskId;\n trackCloudConversationReady(taskId, appConversationId);\n storeTaskPlugins(task, appConversationId);\n\n void (async () => {\n await flushPendingTaskAttachments(taskId, appConversationId);\n\n const taskConversationId = `task-${taskId}`;\n linkPendingTaskMessages(appConversationId, taskConversationId);\n schedulePendingTaskMessageReassign(taskConversationId, appConversationId);\n\n const pendingDraft = consumePendingTaskDraft(taskId);\n if (pendingDraft) {\n setConversationState(appConversationId, {\n draftMessage: pendingDraft,\n });\n }\n\n navigate(`/conversations/${appConversationId}`, { replace: true });\n })();\n }, [taskQuery.data, navigate, taskId]);\n\n useEffect(() => {\n handledReadyTaskIdRef.current = null;\n }, [taskId]);\n\n return {\n isTask,\n taskId,\n conversationId: isTask ? null : (conversationId ?? null),\n task: taskQuery.data,\n taskStatus: taskQuery.data?.status,\n taskDetail: taskQuery.data?.detail,\n taskError: taskQuery.error,\n isLoadingTask: taskQuery.isLoading,\n // Repository information from task request\n repositoryInfo: {\n selectedRepository: taskQuery.data?.request?.selected_repository,\n selectedBranch: taskQuery.data?.request?.selected_branch,\n gitProvider: taskQuery.data?.request?.git_provider,\n },\n };\n};\n"],"mappings":";;;;;;;;;;;;AAyBA,IAAM,KACJ,GACA,MACG;CACH,IAAM,IAAU,EAAK,QAAQ,SAAS,IAAI,EAAoB;AAC9D,KAAI,CAAC,GAAS,OAAQ;CAEtB,IAAM,IAAW,EAA8B,EAAe;AAC9D,GAA8B,GAAgB;EAC5C,GAAG;EACH,qBACE,GAAU,uBAAuB,EAAK,QAAQ,uBAAuB;EACvE,iBACE,GAAU,mBAAmB,EAAK,QAAQ,mBAAmB;EAC/D,cAAc,GAAU,gBAAgB,EAAK,QAAQ,gBAAgB;EACrE;EACD,CAAC;GAkBS,UAAuB;CAGlC,IAAM,EAAE,sBAAmB,GAA2B,EAChD,EAAE,gBAAa,GAAe,EAG9B,IAAS,CAAC,CAAC,KAAkB,EAAe,WAAW,QAAQ,EAC/D,IAAS,IAAS,EAAgB,QAAQ,SAAS,GAAG,GAAG,MAGzD,IAAY,EAAS;EACzB,UAAU,CAAC,cAAc,EAAO;EAChC,SAAS,YACF,IACE,EAA+B,aAAa,EAAO,GADtC;EAGtB,SAAS,CAAC,CAAC;EACX,kBAAkB,MAAU;GAC1B,IAAM,IAAO,EAAM,MAAM;AASzB,UARI,CAAC,KAGD,EAAK,WAAW,WAAW,EAAK,WAAW,UACtC,KAIF;;EAET,OAAO;EACR,CAAC,EAEI,IAAwB,EAAsB,KAAK;AAgEzD,QA3DA,QAAsB;AACpB,MAAI,CAAC,EACH;EAGF,IAAM,IACJ,EAA2C,EAAe;AACvD,QAIL,EACG,UAAU,CACV,wBACC,EAAgB,oBAChB,EAAgB,iBACjB,EACH,EAA4B,EAAgB,iBAAiB;IAC5D,CAAC,EAAe,CAAC,EAGpB,QAAgB;EACd,IAAM,IAAO,EAAU,MACjB,IAAoB,GAAM;AAE9B,GAAC,KACD,GAAM,WAAW,WACjB,CAAC,KACD,EAAsB,YAAY,MAKpC,EAAsB,UAAU,GAChC,EAA4B,GAAQ,EAAkB,EACtD,EAAiB,GAAM,EAAkB,GAEnC,YAAY;AAChB,SAAM,EAA4B,GAAQ,EAAkB;GAE5D,IAAM,IAAqB,QAAQ;AAEnC,GADA,EAAwB,GAAmB,EAAmB,EAC9D,EAAmC,GAAoB,EAAkB;GAEzE,IAAM,IAAe,EAAwB,EAAO;AAOpD,GANI,KACF,EAAqB,GAAmB,EACtC,cAAc,GACf,CAAC,EAGJ,EAAS,kBAAkB,KAAqB,EAAE,SAAS,IAAM,CAAC;MAChE;IACH;EAAC,EAAU;EAAM;EAAU;EAAO,CAAC,EAEtC,QAAgB;AACd,IAAsB,UAAU;IAC/B,CAAC,EAAO,CAAC,EAEL;EACL;EACA;EACA,gBAAgB,IAAS,OAAQ,KAAkB;EACnD,MAAM,EAAU;EAChB,YAAY,EAAU,MAAM;EAC5B,YAAY,EAAU,MAAM;EAC5B,WAAW,EAAU;EACrB,eAAe,EAAU;EAEzB,gBAAgB;GACd,oBAAoB,EAAU,MAAM,SAAS;GAC7C,gBAAgB,EAAU,MAAM,SAAS;GACzC,aAAa,EAAU,MAAM,SAAS;GACvC;EACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../use-conversation-id.cjs`),n=require(`../../node_modules/@tanstack/react-query/build/modern/useQuery.cjs`),r=require(`./use-active-conversation.cjs`),i=require(`../use-runtime-is-ready.cjs`),a=require(`../../api/git-service/agent-server-git-service.api.cjs`),o=require(`../../utils/get-git-path.cjs`);let s=require(`react`);s=e.__toESM(s,1);var c=()=>{let{conversationId:e}=t.useConversationId(),{data:c}=r.useActiveConversation(),l=i.useRuntimeIsReady(),u=c?.conversation_url,d=c?.session_api_key,f=c?.selected_repository,p=c?.workspace?.working_dir?.trim(),m=s.default.useMemo(()=>o.getGitPath(f,p),[f,p]),h=n.useQuery({queryKey:[`git_commits`,e,u,d,m],queryFn:async()=>{if(!e)throw Error(`No conversation ID`);return a.default.getGitCommits(u,d,m,50)},retry:!1,staleTime:1e3*60*5,gcTime:1e3*60*15,refetchOnMount:`always`,enabled:l&&!!e,meta:{disableToast:!0}});return{commits:h.data?.commits??[],hasMore:h.data?.hasMore??!1,isUnsupported:h.data===null,isLoading:h.isLoading,isFetching:h.isFetching,isSuccess:h.isSuccess,isError:h.isError}};exports.useUnifiedGitCommits=c;
|
|
2
|
+
//# sourceMappingURL=use-unified-git-commits.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-unified-git-commits.cjs","names":[],"sources":["../../../src/hooks/query/use-unified-git-commits.ts"],"sourcesContent":["import React from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport AgentServerGitService from \"#/api/git-service/agent-server-git-service.api\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useRuntimeIsReady } from \"#/hooks/use-runtime-is-ready\";\nimport { getGitPath } from \"#/utils/get-git-path\";\n\nexport const COMMITS_PAGE_LIMIT = 50;\n\nexport const useUnifiedGitCommits = () => {\n const { conversationId } = useConversationId();\n const { data: conversation } = useActiveConversation();\n const runtimeIsReady = useRuntimeIsReady();\n\n const conversationUrl = conversation?.conversation_url;\n const sessionApiKey = conversation?.session_api_key;\n const selectedRepository = conversation?.selected_repository;\n const workingDir = conversation?.workspace?.working_dir?.trim();\n\n const gitPath = React.useMemo(\n () => getGitPath(selectedRepository, workingDir),\n [selectedRepository, workingDir],\n );\n\n const result = useQuery({\n queryKey: [\n \"git_commits\",\n conversationId,\n conversationUrl,\n sessionApiKey,\n gitPath,\n ],\n queryFn: async () => {\n if (!conversationId) throw new Error(\"No conversation ID\");\n\n return AgentServerGitService.getGitCommits(\n conversationUrl,\n sessionApiKey,\n gitPath,\n COMMITS_PAGE_LIMIT,\n );\n },\n retry: false,\n staleTime: 1000 * 60 * 5, // 5 minutes\n gcTime: 1000 * 60 * 15, // 15 minutes\n refetchOnMount: \"always\",\n enabled: runtimeIsReady && !!conversationId,\n meta: {\n disableToast: true,\n },\n });\n\n return {\n commits: result.data?.commits ?? [],\n hasMore: result.data?.hasMore ?? false,\n // `null` data = the endpoint 404'd: the agent server predates the\n // commits API. Hide the section rather than rendering an empty state.\n isUnsupported: result.data === null,\n isLoading: result.isLoading,\n isFetching: result.isFetching,\n isSuccess: result.isSuccess,\n isError: result.isError,\n };\n};\n"],"mappings":"0ZAUA,IAAa,MAA6B,CACxC,GAAM,CAAE,kBAAmB,EAAA,mBAAmB,CACxC,CAAE,KAAM,GAAiB,EAAA,uBAAuB,CAChD,EAAiB,EAAA,mBAAmB,CAEpC,EAAkB,GAAc,iBAChC,EAAgB,GAAc,gBAC9B,EAAqB,GAAc,oBACnC,EAAa,GAAc,WAAW,aAAa,MAAM,CAEzD,EAAU,EAAA,QAAM,YACd,EAAA,WAAW,EAAoB,EAAW,CAChD,CAAC,EAAoB,EAAW,CACjC,CAEK,EAAS,EAAA,SAAS,CACtB,SAAU,CACR,cACA,EACA,EACA,EACA,EACD,CACD,QAAS,SAAY,CACnB,GAAI,CAAC,EAAgB,MAAU,MAAM,qBAAqB,CAE1D,OAAO,EAAA,QAAsB,cAC3B,EACA,EACA,EAAA,GAED,EAEH,MAAO,GACP,UAAW,IAAO,GAAK,EACvB,OAAQ,IAAO,GAAK,GACpB,eAAgB,SAChB,QAAS,GAAkB,CAAC,CAAC,EAC7B,KAAM,CACJ,aAAc,GACf,CACF,CAAC,CAEF,MAAO,CACL,QAAS,EAAO,MAAM,SAAW,EAAE,CACnC,QAAS,EAAO,MAAM,SAAW,GAGjC,cAAe,EAAO,OAAS,KAC/B,UAAW,EAAO,UAClB,WAAY,EAAO,WACnB,UAAW,EAAO,UAClB,QAAS,EAAO,QACjB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const COMMITS_PAGE_LIMIT = 50;
|
|
2
|
+
export declare const useUnifiedGitCommits: () => {
|
|
3
|
+
commits: import("../../api/open-hands.types").GitCommit[];
|
|
4
|
+
hasMore: boolean;
|
|
5
|
+
isUnsupported: boolean;
|
|
6
|
+
isLoading: boolean;
|
|
7
|
+
isFetching: boolean;
|
|
8
|
+
isSuccess: boolean;
|
|
9
|
+
isError: boolean;
|
|
10
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { useConversationId as e } from "../use-conversation-id.js";
|
|
2
|
+
import { useQuery as t } from "../../node_modules/@tanstack/react-query/build/modern/useQuery.js";
|
|
3
|
+
import { useActiveConversation as n } from "./use-active-conversation.js";
|
|
4
|
+
import { useRuntimeIsReady as r } from "../use-runtime-is-ready.js";
|
|
5
|
+
import i from "../../api/git-service/agent-server-git-service.api.js";
|
|
6
|
+
import { getGitPath as a } from "../../utils/get-git-path.js";
|
|
7
|
+
import o from "react";
|
|
8
|
+
var s = () => {
|
|
9
|
+
let { conversationId: s } = e(), { data: c } = n(), l = r(), u = c?.conversation_url, d = c?.session_api_key, f = c?.selected_repository, p = c?.workspace?.working_dir?.trim(), m = o.useMemo(() => a(f, p), [f, p]), h = t({
|
|
10
|
+
queryKey: [
|
|
11
|
+
"git_commits",
|
|
12
|
+
s,
|
|
13
|
+
u,
|
|
14
|
+
d,
|
|
15
|
+
m
|
|
16
|
+
],
|
|
17
|
+
queryFn: async () => {
|
|
18
|
+
if (!s) throw Error("No conversation ID");
|
|
19
|
+
return i.getGitCommits(u, d, m, 50);
|
|
20
|
+
},
|
|
21
|
+
retry: !1,
|
|
22
|
+
staleTime: 1e3 * 60 * 5,
|
|
23
|
+
gcTime: 1e3 * 60 * 15,
|
|
24
|
+
refetchOnMount: "always",
|
|
25
|
+
enabled: l && !!s,
|
|
26
|
+
meta: { disableToast: !0 }
|
|
27
|
+
});
|
|
28
|
+
return {
|
|
29
|
+
commits: h.data?.commits ?? [],
|
|
30
|
+
hasMore: h.data?.hasMore ?? !1,
|
|
31
|
+
isUnsupported: h.data === null,
|
|
32
|
+
isLoading: h.isLoading,
|
|
33
|
+
isFetching: h.isFetching,
|
|
34
|
+
isSuccess: h.isSuccess,
|
|
35
|
+
isError: h.isError
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
//#endregion
|
|
39
|
+
export { s as useUnifiedGitCommits };
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=use-unified-git-commits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-unified-git-commits.js","names":[],"sources":["../../../src/hooks/query/use-unified-git-commits.ts"],"sourcesContent":["import React from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport AgentServerGitService from \"#/api/git-service/agent-server-git-service.api\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useRuntimeIsReady } from \"#/hooks/use-runtime-is-ready\";\nimport { getGitPath } from \"#/utils/get-git-path\";\n\nexport const COMMITS_PAGE_LIMIT = 50;\n\nexport const useUnifiedGitCommits = () => {\n const { conversationId } = useConversationId();\n const { data: conversation } = useActiveConversation();\n const runtimeIsReady = useRuntimeIsReady();\n\n const conversationUrl = conversation?.conversation_url;\n const sessionApiKey = conversation?.session_api_key;\n const selectedRepository = conversation?.selected_repository;\n const workingDir = conversation?.workspace?.working_dir?.trim();\n\n const gitPath = React.useMemo(\n () => getGitPath(selectedRepository, workingDir),\n [selectedRepository, workingDir],\n );\n\n const result = useQuery({\n queryKey: [\n \"git_commits\",\n conversationId,\n conversationUrl,\n sessionApiKey,\n gitPath,\n ],\n queryFn: async () => {\n if (!conversationId) throw new Error(\"No conversation ID\");\n\n return AgentServerGitService.getGitCommits(\n conversationUrl,\n sessionApiKey,\n gitPath,\n COMMITS_PAGE_LIMIT,\n );\n },\n retry: false,\n staleTime: 1000 * 60 * 5, // 5 minutes\n gcTime: 1000 * 60 * 15, // 15 minutes\n refetchOnMount: \"always\",\n enabled: runtimeIsReady && !!conversationId,\n meta: {\n disableToast: true,\n },\n });\n\n return {\n commits: result.data?.commits ?? [],\n hasMore: result.data?.hasMore ?? false,\n // `null` data = the endpoint 404'd: the agent server predates the\n // commits API. Hide the section rather than rendering an empty state.\n isUnsupported: result.data === null,\n isLoading: result.isLoading,\n isFetching: result.isFetching,\n isSuccess: result.isSuccess,\n isError: result.isError,\n };\n};\n"],"mappings":";;;;;;;AAUA,IAAa,UAA6B;CACxC,IAAM,EAAE,sBAAmB,GAAmB,EACxC,EAAE,MAAM,MAAiB,GAAuB,EAChD,IAAiB,GAAmB,EAEpC,IAAkB,GAAc,kBAChC,IAAgB,GAAc,iBAC9B,IAAqB,GAAc,qBACnC,IAAa,GAAc,WAAW,aAAa,MAAM,EAEzD,IAAU,EAAM,cACd,EAAW,GAAoB,EAAW,EAChD,CAAC,GAAoB,EAAW,CACjC,EAEK,IAAS,EAAS;EACtB,UAAU;GACR;GACA;GACA;GACA;GACA;GACD;EACD,SAAS,YAAY;AACnB,OAAI,CAAC,EAAgB,OAAU,MAAM,qBAAqB;AAE1D,UAAO,EAAsB,cAC3B,GACA,GACA,GAAA,GAED;;EAEH,OAAO;EACP,WAAW,MAAO,KAAK;EACvB,QAAQ,MAAO,KAAK;EACpB,gBAAgB;EAChB,SAAS,KAAkB,CAAC,CAAC;EAC7B,MAAM,EACJ,cAAc,IACf;EACF,CAAC;AAEF,QAAO;EACL,SAAS,EAAO,MAAM,WAAW,EAAE;EACnC,SAAS,EAAO,MAAM,WAAW;EAGjC,eAAe,EAAO,SAAS;EAC/B,WAAW,EAAO;EAClB,YAAY,EAAO;EACnB,WAAW,EAAO;EAClB,SAAS,EAAO;EACjB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../use-conversation-id.cjs`),n=require(`../../node_modules/@tanstack/react-query/build/modern/useQuery.cjs`),r=require(`./use-active-conversation.cjs`),i=require(`../../api/git-service/agent-server-git-service.api.cjs`),a=require(`../../utils/get-git-path.cjs`);let o=require(`react`);o=e.__toESM(o,1);var s=e=>{let{conversationId:s}=t.useConversationId(),{data:c}=r.useActiveConversation(),l=c?.conversation_url,u=c?.session_api_key,d=c?.selected_repository,f=c?.workspace?.working_dir?.trim(),p=o.default.useMemo(()=>`${a.getGitPath(d,f)}/${e.filePath}`,[d,e.filePath,f]),m=e.type===`D`;return n.useQuery({queryKey:[`file_diff`,s,l,u,p],queryFn:async()=>{if(!s)throw Error(`No conversation ID`);return i.default.getGitChangeDiff(s,l,u,p)},enabled:e.enabled
|
|
1
|
+
const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../use-conversation-id.cjs`),n=require(`../../node_modules/@tanstack/react-query/build/modern/useQuery.cjs`),r=require(`./use-active-conversation.cjs`),i=require(`../../api/git-service/agent-server-git-service.api.cjs`),a=require(`../../utils/get-git-path.cjs`);let o=require(`react`);o=e.__toESM(o,1);var s=e=>{let{conversationId:s}=t.useConversationId(),{data:c}=r.useActiveConversation(),l=c?.conversation_url,u=c?.session_api_key,d=c?.selected_repository,f=c?.workspace?.working_dir?.trim(),p=o.default.useMemo(()=>`${a.getGitPath(d,f)}/${e.filePath}`,[d,e.filePath,f]),m=e.type===`D`;return n.useQuery({queryKey:e.commit?[`commit_file_diff`,s,l,u,e.commit,p]:[`file_diff`,s,l,u,p],queryFn:async()=>{if(!s)throw Error(`No conversation ID`);return i.default.getGitChangeDiff(s,l,u,p,e.commit)},enabled:e.enabled&&(!m||!!e.commit),staleTime:e.commit?1/0:1e3*60*5,gcTime:1e3*60*15})};exports.useUnifiedGitDiff=s;
|
|
2
2
|
//# sourceMappingURL=use-unified-git-diff.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-unified-git-diff.cjs","names":[],"sources":["../../../src/hooks/query/use-unified-git-diff.ts"],"sourcesContent":["import React from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport AgentServerGitService from \"#/api/git-service/agent-server-git-service.api\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { getGitPath } from \"#/utils/get-git-path\";\nimport { GitChangeStatus } from \"#/api/open-hands.types\";\n\ntype UseUnifiedGitDiffConfig = {\n filePath: string;\n type: GitChangeStatus;\n enabled: boolean;\n};\n\nexport const useUnifiedGitDiff = (config: UseUnifiedGitDiffConfig) => {\n const { conversationId } = useConversationId();\n const { data: conversation } = useActiveConversation();\n\n const conversationUrl = conversation?.conversation_url;\n const sessionApiKey = conversation?.session_api_key;\n const selectedRepository = conversation?.selected_repository;\n const workingDir = conversation?.workspace?.working_dir?.trim();\n\n const absoluteFilePath = React.useMemo(() => {\n const gitPath = getGitPath(selectedRepository, workingDir);\n return `${gitPath}/${config.filePath}`;\n }, [selectedRepository, config.filePath, workingDir]);\n\n // Deleted files no longer exist on disk, so the agent server's\n // `/api/git/diff` endpoint returns a `GitPathError` (HTTP 400) for them.\n // Skip the request entirely and let the UI render a \"file deleted\"\n // placeholder instead of triggering an error toast.\n const isDeleted = config.type === \"D\";\n\n
|
|
1
|
+
{"version":3,"file":"use-unified-git-diff.cjs","names":[],"sources":["../../../src/hooks/query/use-unified-git-diff.ts"],"sourcesContent":["import React from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport AgentServerGitService from \"#/api/git-service/agent-server-git-service.api\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { getGitPath } from \"#/utils/get-git-path\";\nimport { GitChangeStatus } from \"#/api/open-hands.types\";\n\ntype UseUnifiedGitDiffConfig = {\n filePath: string;\n type: GitChangeStatus;\n enabled: boolean;\n /**\n * When set, fetch the file's diff as changed by this commit (both sides\n * from git objects) instead of the working-tree-vs-base diff.\n */\n commit?: string;\n};\n\nexport const useUnifiedGitDiff = (config: UseUnifiedGitDiffConfig) => {\n const { conversationId } = useConversationId();\n const { data: conversation } = useActiveConversation();\n\n const conversationUrl = conversation?.conversation_url;\n const sessionApiKey = conversation?.session_api_key;\n const selectedRepository = conversation?.selected_repository;\n const workingDir = conversation?.workspace?.working_dir?.trim();\n\n const absoluteFilePath = React.useMemo(() => {\n const gitPath = getGitPath(selectedRepository, workingDir);\n return `${gitPath}/${config.filePath}`;\n }, [selectedRepository, config.filePath, workingDir]);\n\n // Deleted files no longer exist on disk, so the agent server's\n // `/api/git/diff` endpoint returns a `GitPathError` (HTTP 400) for them.\n // Skip the request entirely and let the UI render a \"file deleted\"\n // placeholder instead of triggering an error toast. Per-commit diffs are\n // exempt: both sides come from git objects, so deleted files render.\n const isDeleted = config.type === \"D\";\n\n // Per-commit diffs get their own cache root: they must not collide with\n // the working-tree diff of the same file, and — being sha-addressed and\n // immutable — must not be refetched by the bash-observation invalidation\n // of [\"file_diff\"].\n const queryKey = config.commit\n ? [\n \"commit_file_diff\",\n conversationId,\n conversationUrl,\n sessionApiKey,\n config.commit,\n absoluteFilePath,\n ]\n : [\n \"file_diff\",\n conversationId,\n conversationUrl,\n sessionApiKey,\n absoluteFilePath,\n ];\n\n return useQuery({\n queryKey,\n queryFn: async () => {\n if (!conversationId) throw new Error(\"No conversation ID\");\n\n return AgentServerGitService.getGitChangeDiff(\n conversationId,\n conversationUrl,\n sessionApiKey,\n absoluteFilePath,\n config.commit,\n );\n },\n enabled: config.enabled && (!isDeleted || !!config.commit),\n staleTime: config.commit ? Infinity : 1000 * 60 * 5, // 5 minutes\n gcTime: 1000 * 60 * 15, // 15 minutes\n });\n};\n"],"mappings":"iXAmBA,IAAa,EAAqB,GAAoC,CACpE,GAAM,CAAE,kBAAmB,EAAA,mBAAmB,CACxC,CAAE,KAAM,GAAiB,EAAA,uBAAuB,CAEhD,EAAkB,GAAc,iBAChC,EAAgB,GAAc,gBAC9B,EAAqB,GAAc,oBACnC,EAAa,GAAc,WAAW,aAAa,MAAM,CAEzD,EAAmB,EAAA,QAAM,YAEtB,GADS,EAAA,WAAW,EAAoB,EACrC,CAAQ,GAAG,EAAO,WAC3B,CAAC,EAAoB,EAAO,SAAU,EAAW,CAAC,CAO/C,EAAY,EAAO,OAAS,IAuBlC,OAAO,EAAA,SAAS,CACd,SAlBe,EAAO,OACpB,CACE,mBACA,EACA,EACA,EACA,EAAO,OACP,EACD,CACD,CACE,YACA,EACA,EACA,EACA,EACD,CAIH,QAAS,SAAY,CACnB,GAAI,CAAC,EAAgB,MAAU,MAAM,qBAAqB,CAE1D,OAAO,EAAA,QAAsB,iBAC3B,EACA,EACA,EACA,EACA,EAAO,OACR,EAEH,QAAS,EAAO,UAAY,CAAC,GAAa,CAAC,CAAC,EAAO,QACnD,UAAW,EAAO,OAAS,IAAW,IAAO,GAAK,EAClD,OAAQ,IAAO,GAAK,GACrB,CAAC"}
|
|
@@ -3,6 +3,11 @@ type UseUnifiedGitDiffConfig = {
|
|
|
3
3
|
filePath: string;
|
|
4
4
|
type: GitChangeStatus;
|
|
5
5
|
enabled: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* When set, fetch the file's diff as changed by this commit (both sides
|
|
8
|
+
* from git objects) instead of the working-tree-vs-base diff.
|
|
9
|
+
*/
|
|
10
|
+
commit?: string;
|
|
6
11
|
};
|
|
7
12
|
export declare const useUnifiedGitDiff: (config: UseUnifiedGitDiffConfig) => import("@tanstack/react-query").UseQueryResult<import("#/api/open-hands.types").GitChangeDiff, import("axios").AxiosError<unknown, any>>;
|
|
8
13
|
export {};
|
|
@@ -12,7 +12,14 @@ var o = (o) => {
|
|
|
12
12
|
f
|
|
13
13
|
]), m = o.type === "D";
|
|
14
14
|
return t({
|
|
15
|
-
queryKey: [
|
|
15
|
+
queryKey: o.commit ? [
|
|
16
|
+
"commit_file_diff",
|
|
17
|
+
s,
|
|
18
|
+
l,
|
|
19
|
+
u,
|
|
20
|
+
o.commit,
|
|
21
|
+
p
|
|
22
|
+
] : [
|
|
16
23
|
"file_diff",
|
|
17
24
|
s,
|
|
18
25
|
l,
|
|
@@ -21,10 +28,10 @@ var o = (o) => {
|
|
|
21
28
|
],
|
|
22
29
|
queryFn: async () => {
|
|
23
30
|
if (!s) throw Error("No conversation ID");
|
|
24
|
-
return r.getGitChangeDiff(s, l, u, p);
|
|
31
|
+
return r.getGitChangeDiff(s, l, u, p, o.commit);
|
|
25
32
|
},
|
|
26
|
-
enabled: o.enabled && !m,
|
|
27
|
-
staleTime: 1e3 * 60 * 5,
|
|
33
|
+
enabled: o.enabled && (!m || !!o.commit),
|
|
34
|
+
staleTime: o.commit ? Infinity : 1e3 * 60 * 5,
|
|
28
35
|
gcTime: 1e3 * 60 * 15
|
|
29
36
|
});
|
|
30
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-unified-git-diff.js","names":[],"sources":["../../../src/hooks/query/use-unified-git-diff.ts"],"sourcesContent":["import React from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport AgentServerGitService from \"#/api/git-service/agent-server-git-service.api\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { getGitPath } from \"#/utils/get-git-path\";\nimport { GitChangeStatus } from \"#/api/open-hands.types\";\n\ntype UseUnifiedGitDiffConfig = {\n filePath: string;\n type: GitChangeStatus;\n enabled: boolean;\n};\n\nexport const useUnifiedGitDiff = (config: UseUnifiedGitDiffConfig) => {\n const { conversationId } = useConversationId();\n const { data: conversation } = useActiveConversation();\n\n const conversationUrl = conversation?.conversation_url;\n const sessionApiKey = conversation?.session_api_key;\n const selectedRepository = conversation?.selected_repository;\n const workingDir = conversation?.workspace?.working_dir?.trim();\n\n const absoluteFilePath = React.useMemo(() => {\n const gitPath = getGitPath(selectedRepository, workingDir);\n return `${gitPath}/${config.filePath}`;\n }, [selectedRepository, config.filePath, workingDir]);\n\n // Deleted files no longer exist on disk, so the agent server's\n // `/api/git/diff` endpoint returns a `GitPathError` (HTTP 400) for them.\n // Skip the request entirely and let the UI render a \"file deleted\"\n // placeholder instead of triggering an error toast.\n const isDeleted = config.type === \"D\";\n\n
|
|
1
|
+
{"version":3,"file":"use-unified-git-diff.js","names":[],"sources":["../../../src/hooks/query/use-unified-git-diff.ts"],"sourcesContent":["import React from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport AgentServerGitService from \"#/api/git-service/agent-server-git-service.api\";\nimport { useConversationId } from \"#/hooks/use-conversation-id\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { getGitPath } from \"#/utils/get-git-path\";\nimport { GitChangeStatus } from \"#/api/open-hands.types\";\n\ntype UseUnifiedGitDiffConfig = {\n filePath: string;\n type: GitChangeStatus;\n enabled: boolean;\n /**\n * When set, fetch the file's diff as changed by this commit (both sides\n * from git objects) instead of the working-tree-vs-base diff.\n */\n commit?: string;\n};\n\nexport const useUnifiedGitDiff = (config: UseUnifiedGitDiffConfig) => {\n const { conversationId } = useConversationId();\n const { data: conversation } = useActiveConversation();\n\n const conversationUrl = conversation?.conversation_url;\n const sessionApiKey = conversation?.session_api_key;\n const selectedRepository = conversation?.selected_repository;\n const workingDir = conversation?.workspace?.working_dir?.trim();\n\n const absoluteFilePath = React.useMemo(() => {\n const gitPath = getGitPath(selectedRepository, workingDir);\n return `${gitPath}/${config.filePath}`;\n }, [selectedRepository, config.filePath, workingDir]);\n\n // Deleted files no longer exist on disk, so the agent server's\n // `/api/git/diff` endpoint returns a `GitPathError` (HTTP 400) for them.\n // Skip the request entirely and let the UI render a \"file deleted\"\n // placeholder instead of triggering an error toast. Per-commit diffs are\n // exempt: both sides come from git objects, so deleted files render.\n const isDeleted = config.type === \"D\";\n\n // Per-commit diffs get their own cache root: they must not collide with\n // the working-tree diff of the same file, and — being sha-addressed and\n // immutable — must not be refetched by the bash-observation invalidation\n // of [\"file_diff\"].\n const queryKey = config.commit\n ? [\n \"commit_file_diff\",\n conversationId,\n conversationUrl,\n sessionApiKey,\n config.commit,\n absoluteFilePath,\n ]\n : [\n \"file_diff\",\n conversationId,\n conversationUrl,\n sessionApiKey,\n absoluteFilePath,\n ];\n\n return useQuery({\n queryKey,\n queryFn: async () => {\n if (!conversationId) throw new Error(\"No conversation ID\");\n\n return AgentServerGitService.getGitChangeDiff(\n conversationId,\n conversationUrl,\n sessionApiKey,\n absoluteFilePath,\n config.commit,\n );\n },\n enabled: config.enabled && (!isDeleted || !!config.commit),\n staleTime: config.commit ? Infinity : 1000 * 60 * 5, // 5 minutes\n gcTime: 1000 * 60 * 15, // 15 minutes\n });\n};\n"],"mappings":";;;;;;;AAmBA,IAAa,KAAqB,MAAoC;CACpE,IAAM,EAAE,sBAAmB,GAAmB,EACxC,EAAE,MAAM,MAAiB,GAAuB,EAEhD,IAAkB,GAAc,kBAChC,IAAgB,GAAc,iBAC9B,IAAqB,GAAc,qBACnC,IAAa,GAAc,WAAW,aAAa,MAAM,EAEzD,IAAmB,EAAM,cAEtB,GADS,EAAW,GAAoB,EACrC,CAAQ,GAAG,EAAO,YAC3B;EAAC;EAAoB,EAAO;EAAU;EAAW,CAAC,EAO/C,IAAY,EAAO,SAAS;AAuBlC,QAAO,EAAS;EACd,UAlBe,EAAO,SACpB;GACE;GACA;GACA;GACA;GACA,EAAO;GACP;GACD,GACD;GACE;GACA;GACA;GACA;GACA;GACD;EAIH,SAAS,YAAY;AACnB,OAAI,CAAC,EAAgB,OAAU,MAAM,qBAAqB;AAE1D,UAAO,EAAsB,iBAC3B,GACA,GACA,GACA,GACA,EAAO,OACR;;EAEH,SAAS,EAAO,YAAY,CAAC,KAAa,CAAC,CAAC,EAAO;EACnD,WAAW,EAAO,SAAS,WAAW,MAAO,KAAK;EAClD,QAAQ,MAAO,KAAK;EACrB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../node_modules/react-i18next/dist/es/useTranslation.cjs`),t=require(`../i18n/declaration.cjs`),n=require(`../contexts/active-backend-context.cjs`),r=require(`./query/use-active-conversation.cjs`),i=require(`./query/use-settings.cjs`),a=require(`./use-active-agent-profile.cjs`);function
|
|
1
|
+
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../node_modules/react-i18next/dist/es/useTranslation.cjs`),t=require(`../i18n/declaration.cjs`),n=require(`../contexts/active-backend-context.cjs`),r=require(`./query/use-active-conversation.cjs`),i=require(`./query/use-settings.cjs`),a=require(`./use-active-agent-profile.cjs`);var o=`/settings/agents`,s=`/settings/llm`;function c(){let{t:c}=e.useTranslation(`openhands`),{backend:l}=n.useActiveBackend(),{data:u}=r.useActiveConversation(),{data:d}=i.useSettings(),f=a.useActiveAgentKind(),p=u?.agent_kind===`acp`,m=!u&&(f??d?.agent_settings?.agent_kind)===`acp`,h=p||m;return{isActiveAcpConversation:p,isHomeAcp:m,isAcpContext:h,destinationPath:h?o:s,destinationLabel:c(h?t.I18nKey.SETTINGS$NAV_AGENT:l.kind===`cloud`?t.I18nKey.SETTINGS$LLM_SETTINGS:t.I18nKey.SETTINGS$LLM_PROFILES)}}exports.useAcpModelContext=c;
|
|
2
2
|
//# sourceMappingURL=use-acp-model-context.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-acp-model-context.cjs","names":[],"sources":["../../src/hooks/use-acp-model-context.ts"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { useActiveAgentKind } from \"#/hooks/use-active-agent-profile\";\nimport { I18nKey } from \"#/i18n/declaration\";\n\nexport interface AcpModelContext {\n /** The active conversation runs an ACP agent. */\n isActiveAcpConversation: boolean;\n /**\n * No active conversation (home page) but the saved agent settings already\n * select an ACP agent — the next conversation created here inherits it, so\n * the model UI should reflect that now.\n */\n isHomeAcp: boolean;\n /** Either of the above: the model affordance should defer to the ACP picker. */\n isAcpContext: boolean;\n /** Where the model/settings link should navigate. */\n destinationPath:
|
|
1
|
+
{"version":3,"file":"use-acp-model-context.cjs","names":[],"sources":["../../src/hooks/use-acp-model-context.ts"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { useActiveAgentKind } from \"#/hooks/use-active-agent-profile\";\nimport { I18nKey } from \"#/i18n/declaration\";\n\nconst AGENT_SETTINGS_PATH = \"/settings/agents\";\nconst LLM_SETTINGS_PATH = \"/settings/llm\";\n\nexport interface AcpModelContext {\n /** The active conversation runs an ACP agent. */\n isActiveAcpConversation: boolean;\n /**\n * No active conversation (home page) but the saved agent settings already\n * select an ACP agent — the next conversation created here inherits it, so\n * the model UI should reflect that now.\n */\n isHomeAcp: boolean;\n /** Either of the above: the model affordance should defer to the ACP picker. */\n isAcpContext: boolean;\n /** Where the model/settings link should navigate. */\n destinationPath: typeof AGENT_SETTINGS_PATH | typeof LLM_SETTINGS_PATH;\n /** Translated label for that link. */\n destinationLabel: string;\n}\n\n/**\n * Shared source of truth for \"is this an ACP model context, and where does\n * the model affordance link?\". The chat model affordance consumes this through\n * ``useChatInputModelState`` so inline and overflow surfaces can't drift on the\n * home-page-ACP rule or on the destination path/label.\n */\nexport function useAcpModelContext(): AcpModelContext {\n const { t } = useTranslation(\"openhands\");\n const { backend } = useActiveBackend();\n const { data: conversation } = useActiveConversation();\n const { data: settings } = useSettings();\n const activeAgentKind = useActiveAgentKind();\n\n const isActiveAcpConversation = conversation?.agent_kind === \"acp\";\n // On the home page the \"current agent\" is the active AgentProfile, not the\n // global agent settings (activate never writes them). Fall back to settings\n // only while the profile list is loading.\n const isHomeAcp =\n !conversation &&\n (activeAgentKind ?? settings?.agent_settings?.agent_kind) === \"acp\";\n const isAcpContext = isActiveAcpConversation || isHomeAcp;\n\n const destinationPath = isAcpContext\n ? AGENT_SETTINGS_PATH\n : LLM_SETTINGS_PATH;\n const destinationLabel = t(\n isAcpContext\n ? I18nKey.SETTINGS$NAV_AGENT\n : backend.kind === \"cloud\"\n ? I18nKey.SETTINGS$LLM_SETTINGS\n : I18nKey.SETTINGS$LLM_PROFILES,\n );\n\n return {\n isActiveAcpConversation,\n isHomeAcp,\n isAcpContext,\n destinationPath,\n destinationLabel,\n };\n}\n"],"mappings":"qVAOA,IAAM,EAAsB,mBACtB,EAAoB,gBAyB1B,SAAgB,GAAsC,CACpD,GAAM,CAAE,KAAM,EAAA,eAAe,YAAY,CACnC,CAAE,WAAY,EAAA,kBAAkB,CAChC,CAAE,KAAM,GAAiB,EAAA,uBAAuB,CAChD,CAAE,KAAM,GAAa,EAAA,aAAa,CAClC,EAAkB,EAAA,oBAAoB,CAEtC,EAA0B,GAAc,aAAe,MAIvD,EACJ,CAAC,IACA,GAAmB,GAAU,gBAAgB,cAAgB,MAC1D,EAAe,GAA2B,EAahD,MAAO,CACL,0BACA,YACA,eACA,gBAfsB,EACpB,EACA,EAcF,iBAbuB,EACvB,EACI,EAAA,QAAQ,mBACR,EAAQ,OAAS,QACf,EAAA,QAAQ,sBACR,EAAA,QAAQ,sBAQd,CACD"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
declare const AGENT_SETTINGS_PATH = "/settings/agents";
|
|
2
|
+
declare const LLM_SETTINGS_PATH = "/settings/llm";
|
|
1
3
|
export interface AcpModelContext {
|
|
2
4
|
/** The active conversation runs an ACP agent. */
|
|
3
5
|
isActiveAcpConversation: boolean;
|
|
@@ -10,7 +12,7 @@ export interface AcpModelContext {
|
|
|
10
12
|
/** Either of the above: the model affordance should defer to the ACP picker. */
|
|
11
13
|
isAcpContext: boolean;
|
|
12
14
|
/** Where the model/settings link should navigate. */
|
|
13
|
-
destinationPath:
|
|
15
|
+
destinationPath: typeof AGENT_SETTINGS_PATH | typeof LLM_SETTINGS_PATH;
|
|
14
16
|
/** Translated label for that link. */
|
|
15
17
|
destinationLabel: string;
|
|
16
18
|
}
|
|
@@ -21,3 +23,4 @@ export interface AcpModelContext {
|
|
|
21
23
|
* home-page-ACP rule or on the destination path/label.
|
|
22
24
|
*/
|
|
23
25
|
export declare function useAcpModelContext(): AcpModelContext;
|
|
26
|
+
export {};
|
|
@@ -5,17 +5,18 @@ import { useActiveConversation as r } from "./query/use-active-conversation.js";
|
|
|
5
5
|
import { useSettings as i } from "./query/use-settings.js";
|
|
6
6
|
import { useActiveAgentKind as a } from "./use-active-agent-profile.js";
|
|
7
7
|
//#region src/hooks/use-acp-model-context.ts
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
var o = "/settings/agents", s = "/settings/llm";
|
|
9
|
+
function c() {
|
|
10
|
+
let { t: c } = e("openhands"), { backend: l } = n(), { data: u } = r(), { data: d } = i(), f = a(), p = u?.agent_kind === "acp", m = !u && (f ?? d?.agent_settings?.agent_kind) === "acp", h = p || m;
|
|
10
11
|
return {
|
|
11
|
-
isActiveAcpConversation:
|
|
12
|
-
isHomeAcp:
|
|
13
|
-
isAcpContext:
|
|
14
|
-
destinationPath:
|
|
15
|
-
destinationLabel:
|
|
12
|
+
isActiveAcpConversation: p,
|
|
13
|
+
isHomeAcp: m,
|
|
14
|
+
isAcpContext: h,
|
|
15
|
+
destinationPath: h ? o : s,
|
|
16
|
+
destinationLabel: c(h ? t.SETTINGS$NAV_AGENT : l.kind === "cloud" ? t.SETTINGS$LLM_SETTINGS : t.SETTINGS$LLM_PROFILES)
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
19
|
//#endregion
|
|
19
|
-
export {
|
|
20
|
+
export { c as useAcpModelContext };
|
|
20
21
|
|
|
21
22
|
//# sourceMappingURL=use-acp-model-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-acp-model-context.js","names":[],"sources":["../../src/hooks/use-acp-model-context.ts"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { useActiveAgentKind } from \"#/hooks/use-active-agent-profile\";\nimport { I18nKey } from \"#/i18n/declaration\";\n\nexport interface AcpModelContext {\n /** The active conversation runs an ACP agent. */\n isActiveAcpConversation: boolean;\n /**\n * No active conversation (home page) but the saved agent settings already\n * select an ACP agent — the next conversation created here inherits it, so\n * the model UI should reflect that now.\n */\n isHomeAcp: boolean;\n /** Either of the above: the model affordance should defer to the ACP picker. */\n isAcpContext: boolean;\n /** Where the model/settings link should navigate. */\n destinationPath:
|
|
1
|
+
{"version":3,"file":"use-acp-model-context.js","names":[],"sources":["../../src/hooks/use-acp-model-context.ts"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { useActiveConversation } from \"#/hooks/query/use-active-conversation\";\nimport { useSettings } from \"#/hooks/query/use-settings\";\nimport { useActiveAgentKind } from \"#/hooks/use-active-agent-profile\";\nimport { I18nKey } from \"#/i18n/declaration\";\n\nconst AGENT_SETTINGS_PATH = \"/settings/agents\";\nconst LLM_SETTINGS_PATH = \"/settings/llm\";\n\nexport interface AcpModelContext {\n /** The active conversation runs an ACP agent. */\n isActiveAcpConversation: boolean;\n /**\n * No active conversation (home page) but the saved agent settings already\n * select an ACP agent — the next conversation created here inherits it, so\n * the model UI should reflect that now.\n */\n isHomeAcp: boolean;\n /** Either of the above: the model affordance should defer to the ACP picker. */\n isAcpContext: boolean;\n /** Where the model/settings link should navigate. */\n destinationPath: typeof AGENT_SETTINGS_PATH | typeof LLM_SETTINGS_PATH;\n /** Translated label for that link. */\n destinationLabel: string;\n}\n\n/**\n * Shared source of truth for \"is this an ACP model context, and where does\n * the model affordance link?\". The chat model affordance consumes this through\n * ``useChatInputModelState`` so inline and overflow surfaces can't drift on the\n * home-page-ACP rule or on the destination path/label.\n */\nexport function useAcpModelContext(): AcpModelContext {\n const { t } = useTranslation(\"openhands\");\n const { backend } = useActiveBackend();\n const { data: conversation } = useActiveConversation();\n const { data: settings } = useSettings();\n const activeAgentKind = useActiveAgentKind();\n\n const isActiveAcpConversation = conversation?.agent_kind === \"acp\";\n // On the home page the \"current agent\" is the active AgentProfile, not the\n // global agent settings (activate never writes them). Fall back to settings\n // only while the profile list is loading.\n const isHomeAcp =\n !conversation &&\n (activeAgentKind ?? settings?.agent_settings?.agent_kind) === \"acp\";\n const isAcpContext = isActiveAcpConversation || isHomeAcp;\n\n const destinationPath = isAcpContext\n ? AGENT_SETTINGS_PATH\n : LLM_SETTINGS_PATH;\n const destinationLabel = t(\n isAcpContext\n ? I18nKey.SETTINGS$NAV_AGENT\n : backend.kind === \"cloud\"\n ? I18nKey.SETTINGS$LLM_SETTINGS\n : I18nKey.SETTINGS$LLM_PROFILES,\n );\n\n return {\n isActiveAcpConversation,\n isHomeAcp,\n isAcpContext,\n destinationPath,\n destinationLabel,\n };\n}\n"],"mappings":";;;;;;;AAOA,IAAM,IAAsB,oBACtB,IAAoB;AAyB1B,SAAgB,IAAsC;CACpD,IAAM,EAAE,SAAM,EAAe,YAAY,EACnC,EAAE,eAAY,GAAkB,EAChC,EAAE,MAAM,MAAiB,GAAuB,EAChD,EAAE,MAAM,MAAa,GAAa,EAClC,IAAkB,GAAoB,EAEtC,IAA0B,GAAc,eAAe,OAIvD,IACJ,CAAC,MACA,KAAmB,GAAU,gBAAgB,gBAAgB,OAC1D,IAAe,KAA2B;AAahD,QAAO;EACL;EACA;EACA;EACA,iBAfsB,IACpB,IACA;EAcF,kBAbuB,EACvB,IACI,EAAQ,qBACR,EAAQ,SAAS,UACf,EAAQ,wBACR,EAAQ,sBAQd;EACD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs`),t=require(`../stores/use-event-store.cjs`),n=require(`../stores/use-workspace-mutation-counter.cjs`);let r=require(`react`);var i=new Set([`FileEditorObservation`,`StrReplaceEditorObservation`,`PlanningFileEditorObservation`]),a=new Set([`view`]),o=new Set([`ExecuteBashObservation`,`TerminalObservation`]);function s(e){let t=e.observation;return!(!t||typeof t.kind!=`string`||!i.has(t.kind)||t.command&&a.has(t.command))}function c(e){let t=e.observation;return!!t&&typeof t.kind==`string`&&o.has(t.kind)}function l(){let i=e.useQueryClient(),a=t.useEventStore(e=>e.events),o=n.useWorkspaceMutationCounter(e=>e.bump),l=(0,r.useRef)(new Set),u=(0,r.useRef)(new WeakSet);(0,r.useEffect)(()=>{let e=!1,t=!1;for(let n of a){let r=`id`in n?n.id:void 0;(r===void 0?u.current.has(n):l.current.has(r))||(r===void 0?u.current.add(n):l.current.add(r),s(n)?e=!0:c(n)&&(t=!0))}!e&&!t||(i.invalidateQueries({queryKey:[`file_changes`]}),i.invalidateQueries({queryKey:[`file_diff`]}),e&&(i.invalidateQueries({queryKey:[`workspace-files`]}),i.invalidateQueries({queryKey:[`workspace-file-content`]}),o()))},[a,i,o])}exports.useAutoRefreshFilesOnEdit=l;
|
|
1
|
+
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs`),t=require(`../stores/use-event-store.cjs`),n=require(`../stores/use-workspace-mutation-counter.cjs`);let r=require(`react`);var i=new Set([`FileEditorObservation`,`StrReplaceEditorObservation`,`PlanningFileEditorObservation`]),a=new Set([`view`]),o=new Set([`ExecuteBashObservation`,`TerminalObservation`]);function s(e){let t=e.observation;return!(!t||typeof t.kind!=`string`||!i.has(t.kind)||t.command&&a.has(t.command))}function c(e){let t=e.observation;return!!t&&typeof t.kind==`string`&&o.has(t.kind)}function l(){let i=e.useQueryClient(),a=t.useEventStore(e=>e.events),o=n.useWorkspaceMutationCounter(e=>e.bump),l=(0,r.useRef)(new Set),u=(0,r.useRef)(new WeakSet);(0,r.useEffect)(()=>{let e=!1,t=!1;for(let n of a){let r=`id`in n?n.id:void 0;(r===void 0?u.current.has(n):l.current.has(r))||(r===void 0?u.current.add(n):l.current.add(r),s(n)?e=!0:c(n)&&(t=!0))}!e&&!t||(i.invalidateQueries({queryKey:[`file_changes`]}),i.invalidateQueries({queryKey:[`file_diff`]}),i.invalidateQueries({queryKey:[`git_commits`]}),e&&(i.invalidateQueries({queryKey:[`workspace-files`]}),i.invalidateQueries({queryKey:[`workspace-file-content`]}),o()))},[a,i,o])}exports.useAutoRefreshFilesOnEdit=l;
|
|
2
2
|
//# sourceMappingURL=use-auto-refresh-files-on-edit.cjs.map
|