@openhands/agent-canvas 1.15.0 → 1.16.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 +15 -1
- package/README.windows.md +2 -2
- package/build/assets/{acp-providers-BKvmTf82.js → acp-providers-CX3Lh9gj.js} +1 -1
- package/build/assets/active-backend-context-CrHTlgvN.js +2 -0
- package/build/assets/{agent-context-settings-D3PjSTU1.js → agent-context-settings-DSZlXrLj.js} +1 -1
- package/build/assets/{agent-profiles-settings-D4cY5U2T.js → agent-profiles-settings-Dzgb7G9z.js} +1 -1
- package/build/assets/agent-server-conversation-service.api-tnqNjbpE.js +86 -0
- package/build/assets/agent-settings-DLtsqaOs.js +2 -0
- package/build/assets/agent-settings-fFvR-XC2.js +1 -0
- package/build/assets/alert-banner-HP6mX-Vr.js +1 -0
- package/build/assets/{api-error-message-BJyfWp6p.js → api-error-message-B-XdSk3b.js} +1 -1
- package/build/assets/api-key-entry-screen-qTzrmJcr.js +1 -0
- package/build/assets/{app-settings-CbHqzQus.js → app-settings-dbnneVaV.js} +1 -1
- package/build/assets/automation-detail-BmwlCUAB.js +3 -0
- package/build/assets/{automation-export-BRopEHMu.js → automation-export-D3a3of4G.js} +1 -1
- package/build/assets/{automation-git-sync-CzyS4cn1.js → automation-git-sync-CprN5DcU.js} +1 -1
- package/build/assets/automation-setup-route-C40kXjMY.js +1 -0
- package/build/assets/{automation-templates-C_0FZgLG.js → automation-templates-BRppNh99.js} +1 -1
- package/build/assets/automations-list-DuNcRawl.js +1 -0
- package/build/assets/{back-nav-button-Dm9tIjVf.js → back-nav-button-Cjl_hoxq.js} +1 -1
- package/build/assets/backend-form-modal-lhGwzXFI.js +1 -0
- package/build/assets/{backend-synced-settings-badge-3fOwg6Bd.js → backend-synced-settings-badge-DPkz30BE.js} +1 -1
- package/build/assets/{badge-D4SqUCsR.js → badge-BU3S0VtE.js} +1 -1
- package/build/assets/{base-modal-C7_BDl_U.js → base-modal-D_L0oEbG.js} +1 -1
- package/build/assets/{bot-C-0Wu7vQ.js → bot-dMYHVfYM.js} +1 -1
- package/build/assets/{brand-button-Dxv6PDeN.js → brand-button-BAfk4wGP.js} +1 -1
- package/build/assets/browser-DSAo0tz1.js +46 -0
- package/build/assets/{browser-tab-BAl4ckJE.js → browser-tab-C9vy56R5.js} +1 -1
- package/build/assets/canvas-extension-page-dx1gFrfW.js +1 -0
- package/build/assets/canvas-extensions-8A-XhpgP.js +1 -0
- package/build/assets/canvas-extensions-runtime-2_x5Ezmi.js +1 -0
- package/build/assets/{chat-send-button-DWwR2cgI.js → chat-send-button-MUQqCZCS.js} +1 -1
- package/build/assets/check-CS0vmpQQ.js +1 -0
- package/build/assets/chevron-down-e1QBpjVy.js +1 -0
- package/build/assets/chevron-right-ZG4R5G4Q.js +1 -0
- package/build/assets/circle-check-DzWLNsbE.js +1 -0
- package/build/assets/{circle-plus-check-toggle-CBh_qomE.js → circle-plus-check-toggle-BO_kFZt3.js} +1 -1
- package/build/assets/{cloud-funnel-analytics-287iIERo.js → cloud-funnel-analytics-CztBCCPp.js} +1 -1
- package/build/assets/{cog-C4rrw-ZK.js → cog-D-MPQW6G.js} +1 -1
- package/build/assets/command-menu--UIlGL72.js +1 -0
- package/build/assets/{commits-tab-DZtJgaDM.js → commits-tab-AnZwLvh-.js} +1 -1
- package/build/assets/{condenser-settings-BcNmYR4s.js → condenser-settings-DmEOje-7.js} +1 -1
- package/build/assets/{confirmation-modal-Bk4JRcCM.js → confirmation-modal-Dv1ktp8K.js} +1 -1
- package/build/assets/{context-menu-list-item-lVYETtY5.js → context-menu-list-item-I86vKcmM.js} +1 -1
- package/build/assets/conversation-BbGrAO4Z.js +93 -0
- package/build/assets/conversation-mYT6NAoj.js +1 -0
- package/build/assets/conversation-panel-mYT6NAoj.js +1 -0
- package/build/assets/conversation-state-store-B0ImPLHO.js +1 -0
- package/build/assets/{conversation-tab-empty-state-HJtkmHZj.js → conversation-tab-empty-state-FIbh_lc8.js} +1 -1
- package/build/assets/{copy-to-clipboard-button-Cjkswvnj.js → copy-to-clipboard-button-Ca8iSkkA.js} +1 -1
- package/build/assets/{device-verify-EZhHhBT7.js → device-verify-Bhn2e_Ye.js} +1 -1
- package/build/assets/{dropdown-classes-DJe-E6MC.js → dropdown-classes-Bc1djN0-.js} +1 -1
- package/build/assets/{edit-automation-modal-D-urtv8n.js → edit-automation-modal-DadGbJ2u.js} +1 -1
- package/build/assets/empty-state-BoGVDecT.js +1 -0
- package/build/assets/{entry.client-C7Bi2tkU.js → entry.client-CqyPPjOq.js} +2 -2
- package/build/assets/{enum-filter-dropdown-DliX_Lo0.js → enum-filter-dropdown-Bgca129f.js} +1 -1
- package/build/assets/{environment-switch-overlay-CEKrFiMw.js → environment-switch-overlay-BmBRT7gv.js} +1 -1
- package/build/assets/{error-state-BALXiBNy.js → error-state-Body8Ngd.js} +1 -1
- package/build/assets/extensions-hub-CcDqq_vR.js +1 -0
- package/build/assets/extensions-navigation-Cr4yzYk4.js +1 -0
- package/build/assets/{external-link-DFpYunfj.js → external-link-DKUlnCQV.js} +1 -1
- package/build/assets/files-tab-D4o2VyE_.js +1 -0
- package/build/assets/{form-control-classes-CGw40z5h.js → form-control-classes-Bkh5FGrD.js} +1 -1
- package/build/assets/format-model-name-CasAP3nd.js +1 -0
- package/build/assets/get-git-path-ChKDVHZp.js +1 -0
- package/build/assets/{git-repo-dropdown-ai8qaNkD.js → git-repo-dropdown-4ROKl2cB.js} +1 -1
- package/build/assets/git-repo-dropdown-BkqzkMmM.js +1 -0
- package/build/assets/{highlighted-source-view-C3sxykQi.js → highlighted-source-view-BFRxGT_Q.js} +1 -1
- package/build/assets/home-ChpSuepX.js +1 -0
- package/build/assets/home-DIsB440S.js +1 -0
- package/build/assets/home-automation-run-tooltip-BVNDWjAH.js +1 -0
- package/build/assets/home-store-CY9Ej0ux.js +1 -0
- package/build/assets/index-home-BdlrFIif.js +1 -0
- package/build/assets/info-B6RQawoW.js +1 -0
- package/build/assets/install-server-modal-Dpy89p4g.js +1 -0
- package/build/assets/kebab-menu-item-content-D8hSNGmm.js +1 -0
- package/build/assets/{key-Cn5za3rg.js → key-BmVyxs-2.js} +1 -1
- package/build/assets/{launch-C1ieiOGe.js → launch-IrTDEFCs.js} +1 -1
- package/build/assets/list-filter-DsEK7NFC.js +1 -0
- package/build/assets/{list-todo-Cuu-STFc.js → list-todo-apgLVjMw.js} +1 -1
- package/build/assets/llm-not-configured-banner-CIFABh3K.js +27 -0
- package/build/assets/llm-settings-B9juXhIa.js +1 -0
- package/build/assets/llm-settings-De1d5dfr.js +1 -0
- package/build/assets/llm-subscription-service-BpJ0ouQo.js +1 -0
- package/build/assets/loader-circle-CC1au6hc.js +1 -0
- package/build/assets/{loading-spinner-0L3ZTToZ.js → loading-spinner-BY9N3pOe.js} +1 -1
- package/build/assets/manage-backends-modal-BrPV3oB-.js +1 -0
- package/build/assets/manifest-80fb1c29.js +1 -0
- package/build/assets/{manifest-subpage-layout-BGhiUQbA.js → manifest-subpage-layout-CAOYzrYp.js} +1 -1
- package/build/assets/{map-provider-B9LTm23I.js → map-provider-Cu3Zgumb.js} +1 -1
- package/build/assets/markdown-renderer-BzTlxI8x.js +8 -0
- package/build/assets/{mcp-CKbR4Vft.js → mcp-BTs_SXfZ.js} +1 -1
- package/build/assets/{mcp-marketplace-utils-C13fFccR.js → mcp-marketplace-utils-AIBzzHTO.js} +1 -1
- package/build/assets/{mcp-page-Bm4K2NQq.js → mcp-page-BEBYqH_K.js} +2 -2
- package/build/assets/messages-DKV9cRc2.js +41 -0
- package/build/assets/{modal-body-CMOc2tLl.js → modal-body-BxZjsju9.js} +1 -1
- package/build/assets/{modal-classes-BAb4Y_BG.js → modal-classes-C8eycCwG.js} +1 -1
- package/build/assets/{modal-close-button-CkJ0Ktjj.js → modal-close-button-DDzdRvCs.js} +1 -1
- package/build/assets/{mouse-pointer-click-CsgRs_-r.js → mouse-pointer-click-Co2uyaPA.js} +1 -1
- package/build/assets/onboarding-DV_OXoeP.js +1 -0
- package/build/assets/onboarding-modal-rkyBYkeQ.js +1 -0
- package/build/assets/{organization-service.api-C8XpQ0pM.js → organization-service.api-DrYNkEN_.js} +1 -1
- package/build/assets/{pencil-Clh1Wjvh.js → pencil-47jAZH_V.js} +1 -1
- package/build/assets/pin-By41Vl5J.js +1 -0
- package/build/assets/{planner-tab-DQvDU3ap.js → planner-tab-C9uZmhme.js} +1 -1
- package/build/assets/{plug-BuQhHSSG.js → plug-CG5HFcNG.js} +1 -1
- package/build/assets/plugins-management-service-BMJgC3Ga.js +1 -0
- package/build/assets/plus-C7Slq-0I.js +1 -0
- package/build/assets/profiles-service.api-ChoKrL0l.js +1 -0
- package/build/assets/providers-BhMcY5nv.js +1 -0
- package/build/assets/proxy-9Fe1v5na.js +1 -0
- package/build/assets/{puzzle-A9pGxxai.js → puzzle-JM_QaRm0.js} +1 -1
- package/build/assets/recommended-automations-launcher-6ABrI9Cy.js +1 -0
- package/build/assets/{refresh-cw-Bh69DyYO.js → refresh-cw-3q3Frrii.js} +1 -1
- package/build/assets/root-Dc8YmC9F.js +2 -0
- package/build/assets/root-VDaypvK4.css +1 -0
- package/build/assets/root-layout-CXkhSPYh.js +2 -0
- package/build/assets/schema-field-D-y9-LDb.js +1 -0
- package/build/assets/{sdk-section-page-HTffvm7Q.js → sdk-section-page-BlFiizlG.js} +1 -1
- package/build/assets/{secret-form-HTUbYw5o.js → secret-form-BB7the8W.js} +1 -1
- package/build/assets/secrets-service-ByZVENbp.js +1 -0
- package/build/assets/{secrets-settings-BizaTEr1.js → secrets-settings-B_GpxKW2.js} +1 -1
- package/build/assets/{settings-BlmrkwRi.js → settings-C0EWuBtA.js} +1 -1
- package/build/assets/settings-CKqk8ZnH.js +1 -0
- package/build/assets/{settings-dropdown-input-tM0A0ipy.js → settings-dropdown-input-BcwylHs2.js} +1 -1
- package/build/assets/{settings-index-CKq0b0Vg.js → settings-index-5w5UW2K3.js} +1 -1
- package/build/assets/{settings-input-C03KUoSC.js → settings-input-Db-1g8Ql.js} +1 -1
- package/build/assets/{settings-list-classes-BJ0g8rWj.js → settings-list-classes-BzeSZbF2.js} +1 -1
- package/build/assets/{settings-modal-AzEF1QPP.js → settings-modal-DfJ3tcJQ.js} +1 -1
- package/build/assets/settings-service.api-DJ1r62Zr.js +1 -0
- package/build/assets/{settings-switch-CQE0EGC-.js → settings-switch-CS-dJDmA.js} +1 -1
- package/build/assets/{settings-utils-ClYOkbbI.js → settings-utils-UYpEdPuD.js} +1 -1
- package/build/assets/shared-conversation-CA5ISEDy.js +1 -0
- package/build/assets/{shield-check-CFDViW82.js → shield-check-D2aCRd16.js} +1 -1
- package/build/assets/{sidebar-layout-D3hE08wK.js → sidebar-layout-D6fS8-Gl.js} +1 -1
- package/build/assets/{sidebar-mobile-menu-toggle-BOtyJHwE.js → sidebar-mobile-menu-toggle-C_fb0Jki.js} +1 -1
- package/build/assets/sidebar-nav-link-DQQcMf1A.js +1 -0
- package/build/assets/{sidebar-onboarding-checklist-storage-3qYflszY.js → sidebar-onboarding-checklist-storage-BBkeI6Bp.js} +1 -1
- package/build/assets/sidebar-store-DGqHkVLw.js +1 -0
- package/build/assets/{skill-card-pill-row-CFxjoqxn.js → skill-card-pill-row-B27-xyig.js} +1 -1
- package/build/assets/skill-enablement-DXeaImBz.js +1 -0
- package/build/assets/skill-filter-w__3UCEE.js +2 -0
- package/build/assets/{skill-icon-badge-CPQJ6A-I.js → skill-icon-badge-RQkq8wvl.js} +1 -1
- package/build/assets/skill-scope-B42H-XOc.js +1 -0
- package/build/assets/skills-plugins-tgF8EiXC.js +1 -0
- package/build/assets/skills-settings-BgJ9PaOe.js +1 -0
- package/build/assets/{styled-tooltip-Dl06rkpY.js → styled-tooltip-C4jf5Fv9.js} +1 -1
- package/build/assets/{task-list-tab-04GNQuii.js → task-list-tab-C5zcaktH.js} +1 -1
- package/build/assets/{terminal-Cj0iHIW7.js → terminal-CNElN42a.js} +2 -2
- package/build/assets/{toggle-switch-Fd_QGz0r.js → toggle-switch-ChOLXv2n.js} +1 -1
- package/build/assets/{trash-2-Dl8_RGz0.js → trash-2-D7K26eDO.js} +1 -1
- package/build/assets/{trash-_RMt7Ayc.js → trash-D-HYiVYM.js} +1 -1
- package/build/assets/{triangle-alert-SM-q4NU_.js → triangle-alert-CtdXWHUI.js} +1 -1
- package/build/assets/{typography-SgFy466J.js → typography-v1KN0tzi.js} +1 -1
- package/build/assets/usage-tab-CVDffLPt.js +1 -0
- package/build/assets/use-acp-credential-form-XIQmpX6M.js +1 -0
- package/build/assets/{use-activate-agent-profile-B2NS8nA5.js → use-activate-agent-profile-BLfmvDiG.js} +1 -1
- package/build/assets/use-agent-profiles-Bd9Bvvp1.js +1 -0
- package/build/assets/{use-automation-health-BxXdzZMP.js → use-automation-health-E6NZi9rb.js} +1 -1
- package/build/assets/{use-automations-zYb0dUny.js → use-automations-xijQKIl9.js} +1 -1
- package/build/assets/{use-can-manage-org-profiles-BWMahtUh.js → use-can-manage-org-profiles-CrJP5262.js} +1 -1
- package/build/assets/use-canvas-extensions-Bi693ujJ.js +1 -0
- package/build/assets/{use-cloud-current-user-id-CPHMDG-C.js → use-cloud-current-user-id-CDfAHpPX.js} +1 -1
- package/build/assets/use-config-A9QovgXO.js +1 -0
- package/build/assets/{use-create-conversation-DwN5vv2f.js → use-create-conversation-Dx3l7mFZ.js} +1 -1
- package/build/assets/use-create-secret-B9cUFWRG.js +1 -0
- package/build/assets/{use-get-secrets-BT4ihRwj.js → use-get-secrets-K3jmk-LH.js} +1 -1
- package/build/assets/use-is-authed-nTBcM7dE.js +1 -0
- package/build/assets/use-llm-configured-BV9nZ1_j.js +1 -0
- package/build/assets/use-llm-profiles-BO-P4Oyo.js +1 -0
- package/build/assets/use-manifest-capabilities-Cw_flwEz.js +1 -0
- package/build/assets/use-onboarding-completion-D8U7k4Qb.js +1 -0
- package/build/assets/use-pinned-home-route-CckOZrmb.js +1 -0
- package/build/assets/use-plugins-marketplace-7i94Zu3Z.js +1 -0
- package/build/assets/use-save-agent-profile-BUjSsDXK.js +1 -0
- package/build/assets/{use-save-settings-CUZW6yXP.js → use-save-settings-DYqkKv7T.js} +1 -1
- package/build/assets/{use-settings-C5VhGpqd.js → use-settings-DSXLbvBl.js} +1 -1
- package/build/assets/{use-settings-nav-items-DHaUu1Dg.js → use-settings-nav-items-CwRw-CmX.js} +1 -1
- package/build/assets/use-tracking-D53y3TH9.js +3 -0
- package/build/assets/{use-user-conversation-DT0_QCnL.js → use-user-conversation-B9Gebw_g.js} +1 -1
- package/build/assets/{useInfiniteQuery-CgeUQPfs.js → useInfiniteQuery-C926xzY4.js} +1 -1
- package/build/assets/{useMutation-DFnzkf6f.js → useMutation-B-qc391N.js} +1 -1
- package/build/assets/{useQueries-BhbrGEf1.js → useQueries-DlbhlH9I.js} +1 -1
- package/build/assets/{useQuery-BXWbZBZl.js → useQuery-BSTgq1rl.js} +1 -1
- package/build/assets/utils-CN5ZfZy1.js +1 -0
- package/build/assets/{vendor~conversation-panel~conversation-CTvDDiXg.js → vendor~conversation-panel~conversation-C8Fn4XOf.js} +1 -1
- package/build/assets/{vendor~entry.client-BFE7Llz9.js → vendor~entry.client-CoCfUXUF.js} +1 -1
- package/build/assets/{vendor~entry.client-BaKt_PIp.js → vendor~entry.client-DA2izTjq.js} +1 -1
- package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-ZixYGy6E.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-DqZDXfg2.js} +1 -1
- package/build/assets/{vendor~index-home~home~conversation-panel~conversation-BTyukeM-.js → vendor~index-home~home~conversation-panel~conversation-hWywRBaR.js} +1 -1
- package/build/assets/{vendor~root-layout-BlUaZ18v.js → vendor~root-layout-C9Ju9DQg.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation-BYAWJwQX.js → vendor~root-layout~conversation-panel~conversation-BMbMgaGu.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-CHaLEBVR.js → vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-BWir3rJs.js} +1 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation-j5MFqfSy.js +1 -0
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-cDuKr-WD.js +1 -0
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz-MAyNb.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iyia17eu-Chf7vmKB.js} +1 -1
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-Dtu7BpYk.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~nj1hli3r-DP9wmsjo.js} +2 -2
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-DonTKfQD.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-CUmIwQCN.js} +117 -13
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-BgxDvUcf.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-C7HiY4Ae.js} +42 -3
- package/build/assets/{verification-settings-Bj6bo097.js → verification-settings-gw_q6vkL.js} +1 -1
- package/build/assets/{wrench-hi7Q13dF.js → wrench-CUEI1krB.js} +1 -1
- package/build/assets/{x-DkgltWa0.js → x-DJdhbdmt.js} +1 -1
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +32 -16
- package/build/locales/ca/openhands.json +32 -16
- package/build/locales/de/openhands.json +32 -16
- package/build/locales/en/openhands.json +32 -16
- package/build/locales/es/openhands.json +32 -16
- package/build/locales/fr/openhands.json +32 -16
- package/build/locales/it/openhands.json +32 -16
- package/build/locales/ja/openhands.json +32 -16
- package/build/locales/ko-KR/openhands.json +32 -16
- package/build/locales/no/openhands.json +32 -16
- package/build/locales/pt/openhands.json +32 -16
- package/build/locales/tr/openhands.json +32 -16
- package/build/locales/uk/openhands.json +32 -16
- package/build/locales/zh-CN/openhands.json +32 -16
- package/build/locales/zh-TW/openhands.json +32 -16
- package/config/defaults.json +9 -5
- package/dist/api/agent-profiles-service/profile-field-support.d.ts +26 -0
- 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.js +118 -116
- package/dist/api/agent-server-adapter.js.map +1 -1
- package/dist/api/agent-server-compatibility.cjs +1 -1
- package/dist/api/agent-server-compatibility.cjs.map +1 -1
- package/dist/api/agent-server-compatibility.d.ts +21 -0
- package/dist/api/agent-server-compatibility.js +52 -38
- package/dist/api/agent-server-compatibility.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 +26 -0
- package/dist/api/agent-server-config.js +18 -5
- package/dist/api/agent-server-config.js.map +1 -1
- package/dist/api/canvas-extensions-service.cjs +1 -0
- package/dist/api/canvas-extensions-service.d.ts +22 -0
- package/dist/api/canvas-extensions-service.js +4 -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.d.ts +6 -0
- package/dist/api/cloud/conversation-service.api.js +14 -6
- package/dist/api/cloud/conversation-service.api.js.map +1 -1
- package/dist/api/conversation-file-upload.api.cjs +1 -1
- package/dist/api/conversation-file-upload.api.js +10 -10
- 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 +11 -0
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +129 -118
- package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
- package/dist/api/event-service/event-service.api.cjs +1 -1
- package/dist/api/event-service/event-service.api.js +12 -12
- package/dist/api/git-service/agent-server-git-service.api.cjs +1 -1
- package/dist/api/git-service/agent-server-git-service.api.js +8 -8
- package/dist/api/runtime-service/agent-server-runtime-service.cjs +1 -1
- package/dist/api/runtime-service/agent-server-runtime-service.js +8 -8
- package/dist/api/settings-service/settings-service.api.cjs +1 -1
- package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
- package/dist/api/settings-service/settings-service.api.d.ts +3 -2
- package/dist/api/settings-service/settings-service.api.js +2 -1
- package/dist/api/settings-service/settings-service.api.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/event-group.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/event-group.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/event-group.js +40 -36
- package/dist/components/conversation-events/chat/event-message-components/event-group.js.map +1 -1
- package/dist/components/features/automations/automation-card.cjs +1 -1
- package/dist/components/features/automations/automation-card.cjs.map +1 -1
- package/dist/components/features/automations/automation-card.js +114 -104
- package/dist/components/features/automations/automation-card.js.map +1 -1
- package/dist/components/features/automations/detail/run-phase.cjs +2 -0
- package/dist/components/features/automations/detail/run-phase.cjs.map +1 -0
- package/dist/components/features/automations/detail/run-phase.d.ts +89 -0
- package/dist/components/features/automations/detail/run-phase.js +72 -0
- package/dist/components/features/automations/detail/run-phase.js.map +1 -0
- 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.js +5 -11
- package/dist/components/features/backends/backend-form-modal.js.map +1 -1
- package/dist/components/features/canvas-extensions/add-canvas-extension-modal.d.ts +6 -0
- package/dist/components/features/canvas-extensions/canvas-extension-card.d.ts +9 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.cjs +2 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.cjs.map +1 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.d.ts +23 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.js +19 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.js.map +1 -0
- 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 +171 -168
- package/dist/components/features/chat/chat-interface.js.map +1 -1
- package/dist/components/features/chat/chat-markdown-path-code.cjs +3 -0
- package/dist/components/features/chat/chat-markdown-path-code.cjs.map +1 -0
- package/dist/components/features/chat/chat-markdown-path-code.d.ts +27 -0
- package/dist/components/features/chat/chat-markdown-path-code.js +72 -0
- package/dist/components/features/chat/chat-markdown-path-code.js.map +1 -0
- package/dist/components/features/chat/path-component.cjs +1 -1
- package/dist/components/features/chat/path-component.cjs.map +1 -1
- package/dist/components/features/chat/path-component.d.ts +8 -2
- package/dist/components/features/chat/path-component.js +33 -21
- package/dist/components/features/chat/path-component.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js +38 -43
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.d.ts +8 -5
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js +22 -16
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js.map +1 -1
- package/dist/components/features/chat/user-message-body.cjs +1 -1
- package/dist/components/features/chat/user-message-body.cjs.map +1 -1
- package/dist/components/features/chat/user-message-body.d.ts +4 -0
- package/dist/components/features/chat/user-message-body.js +30 -24
- package/dist/components/features/chat/user-message-body.js.map +1 -1
- package/dist/components/features/conversation/conversation-overview-skills-panel.cjs +1 -1
- package/dist/components/features/conversation/conversation-overview-skills-panel.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-overview-skills-panel.js +63 -81
- package/dist/components/features/conversation/conversation-overview-skills-panel.js.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js +50 -50
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.d.ts +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.js +3 -3
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.js.map +1 -1
- package/dist/components/features/conversation-panel/skills-modal.cjs +1 -1
- package/dist/components/features/conversation-panel/skills-modal.cjs.map +1 -1
- package/dist/components/features/conversation-panel/skills-modal.js +29 -28
- package/dist/components/features/conversation-panel/skills-modal.js.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs +1 -1
- package/dist/components/features/files-tab/file-content-viewer.js +5 -5
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs +1 -1
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js +51 -29
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js.map +1 -1
- package/dist/components/features/onboarding/onboarding-host.d.ts +3 -4
- package/dist/components/features/onboarding/steps/setup-llm-step.d.ts +5 -9
- package/dist/components/features/settings/acp-auth-status-banner.d.ts +23 -6
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.js +1 -0
- package/dist/components/features/settings/llm-profiles/provider-connection-modal.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/provider-connection-modal.js +3 -0
- package/dist/components/features/settings/sdk-settings/field-help.cjs +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.cjs.map +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.d.ts +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.js +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.js.map +1 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs +1 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.js +6 -6
- package/dist/components/features/settings/sdk-settings/sdk-section-page.js.map +1 -1
- package/dist/components/features/sidebar/sidebar-nav-link.cjs +1 -1
- package/dist/components/features/sidebar/sidebar-nav-link.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar-nav-link.d.ts +10 -1
- package/dist/components/features/sidebar/sidebar-nav-link.js +54 -36
- package/dist/components/features/sidebar/sidebar-nav-link.js.map +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.cjs +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.js +143 -120
- package/dist/components/features/sidebar/sidebar-rail-body.js.map +1 -1
- package/dist/components/features/sidebar/sidebar.cjs +1 -1
- package/dist/components/features/sidebar/sidebar.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar.js +1 -1
- package/dist/components/features/sidebar/sidebar.js.map +1 -1
- package/dist/components/features/skills/build-skill-pills.cjs +1 -1
- package/dist/components/features/skills/build-skill-pills.cjs.map +1 -1
- package/dist/components/features/skills/build-skill-pills.js +60 -52
- package/dist/components/features/skills/build-skill-pills.js.map +1 -1
- package/dist/components/features/skills/extensions-navigation.cjs +1 -1
- package/dist/components/features/skills/extensions-navigation.cjs.map +1 -1
- package/dist/components/features/skills/extensions-navigation.js +54 -43
- package/dist/components/features/skills/extensions-navigation.js.map +1 -1
- package/dist/components/features/skills/skill-filter.cjs +1 -1
- package/dist/components/features/skills/skill-filter.cjs.map +1 -1
- package/dist/components/features/skills/skill-filter.d.ts +8 -3
- package/dist/components/features/skills/skill-filter.js +69 -52
- package/dist/components/features/skills/skill-filter.js.map +1 -1
- package/dist/components/shared/modals/settings/settings-form.cjs +1 -1
- package/dist/components/shared/modals/settings/settings-form.js +8 -8
- package/dist/config/defaults.cjs +1 -1
- package/dist/config/defaults.cjs.map +1 -1
- package/dist/config/defaults.js +9 -5
- package/dist/config/defaults.js.map +1 -1
- package/dist/contexts/conversation-websocket-context.cjs +3 -3
- package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
- package/dist/contexts/conversation-websocket-context.js +5 -5
- package/dist/extensions/canvas-extension-module-loader.d.ts +11 -0
- package/dist/hooks/mutation/use-manage-canvas-extensions.d.ts +12 -0
- package/dist/hooks/query/concurrency-limiter.cjs +2 -0
- package/dist/hooks/query/concurrency-limiter.cjs.map +1 -0
- package/dist/hooks/query/concurrency-limiter.d.ts +22 -0
- package/dist/hooks/query/concurrency-limiter.js +29 -0
- package/dist/hooks/query/concurrency-limiter.js.map +1 -0
- package/dist/hooks/query/query-keys.cjs.map +1 -1
- package/dist/hooks/query/query-keys.d.ts +4 -0
- package/dist/hooks/query/query-keys.js.map +1 -1
- package/dist/hooks/query/use-active-conversation.cjs +1 -1
- package/dist/hooks/query/use-active-conversation.js +4 -4
- package/dist/hooks/query/use-automations.cjs.map +1 -1
- package/dist/hooks/query/use-automations.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.d.ts +1 -1
- package/dist/hooks/query/use-backends-health.js +50 -64
- package/dist/hooks/query/use-backends-health.js.map +1 -1
- package/dist/hooks/query/use-canvas-extensions.cjs +1 -0
- package/dist/hooks/query/use-canvas-extensions.d.ts +5 -0
- package/dist/hooks/query/use-canvas-extensions.js +3 -0
- package/dist/hooks/query/use-commit-changes.cjs +1 -1
- package/dist/hooks/query/use-commit-changes.js +4 -4
- package/dist/hooks/query/use-latest-automation-runs.cjs +1 -1
- package/dist/hooks/query/use-latest-automation-runs.js +1 -0
- package/dist/hooks/query/use-paginated-conversations.cjs +1 -1
- package/dist/hooks/query/use-paginated-conversations.cjs.map +1 -1
- package/dist/hooks/query/use-paginated-conversations.js +19 -16
- package/dist/hooks/query/use-paginated-conversations.js.map +1 -1
- package/dist/hooks/query/use-search-providers.cjs +1 -1
- package/dist/hooks/query/use-search-providers.cjs.map +1 -1
- package/dist/hooks/query/use-search-providers.js +17 -10
- package/dist/hooks/query/use-search-providers.js.map +1 -1
- package/dist/hooks/query/use-unified-get-git-changes.cjs +1 -1
- package/dist/hooks/query/use-unified-get-git-changes.js +4 -4
- package/dist/hooks/query/use-unified-git-commits.cjs +1 -1
- package/dist/hooks/query/use-unified-git-commits.js +4 -4
- package/dist/hooks/query/use-unified-git-diff.cjs +1 -1
- package/dist/hooks/query/use-unified-git-diff.js +4 -4
- package/dist/hooks/query/use-unified-vscode-url.cjs +1 -1
- package/dist/hooks/query/use-unified-vscode-url.cjs.map +1 -1
- package/dist/hooks/query/use-unified-vscode-url.d.ts +1 -0
- package/dist/hooks/query/use-unified-vscode-url.js +40 -26
- package/dist/hooks/query/use-unified-vscode-url.js.map +1 -1
- package/dist/hooks/query/use-workspace-file-content.cjs +1 -1
- package/dist/hooks/query/use-workspace-file-content.js +5 -5
- package/dist/hooks/query/use-workspace-files.cjs +1 -1
- package/dist/hooks/query/use-workspace-files.js +6 -6
- package/dist/hooks/use-acp-credential-form.d.ts +6 -0
- package/dist/hooks/use-conversation-overview-git-diff-stats.cjs +1 -1
- package/dist/hooks/use-conversation-overview-git-diff-stats.js +4 -4
- package/dist/hooks/use-pinned-home-route.cjs +2 -0
- package/dist/hooks/use-pinned-home-route.cjs.map +1 -0
- package/dist/hooks/use-pinned-home-route.d.ts +33 -0
- package/dist/hooks/use-pinned-home-route.js +34 -0
- package/dist/hooks/use-pinned-home-route.js.map +1 -0
- package/dist/hooks/use-skill-enablement.cjs +2 -0
- package/dist/hooks/use-skill-enablement.cjs.map +1 -0
- package/dist/hooks/use-skill-enablement.d.ts +14 -0
- package/dist/hooks/use-skill-enablement.js +80 -0
- package/dist/hooks/use-skill-enablement.js.map +1 -0
- package/dist/i18n/declaration.cjs +1 -1
- package/dist/i18n/declaration.cjs.map +1 -1
- package/dist/i18n/declaration.d.ts +29 -13
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +3 -3
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +538 -266
- package/dist/i18n/translation.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +15 -14
- package/dist/lib/index.cjs +1 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +1 -0
- package/dist/locales/ar/openhands.json +32 -16
- package/dist/locales/ca/openhands.json +32 -16
- package/dist/locales/de/openhands.json +32 -16
- package/dist/locales/en/openhands.json +32 -16
- package/dist/locales/es/openhands.json +32 -16
- package/dist/locales/fr/openhands.json +32 -16
- package/dist/locales/it/openhands.json +32 -16
- package/dist/locales/ja/openhands.json +32 -16
- package/dist/locales/ko-KR/openhands.json +32 -16
- package/dist/locales/no/openhands.json +32 -16
- package/dist/locales/pt/openhands.json +32 -16
- package/dist/locales/tr/openhands.json +32 -16
- package/dist/locales/uk/openhands.json +32 -16
- package/dist/locales/zh-CN/openhands.json +32 -16
- package/dist/locales/zh-TW/openhands.json +32 -16
- package/dist/manifests/automation-interface.cjs +1 -1
- package/dist/manifests/automation-interface.cjs.map +1 -1
- package/dist/manifests/automation-interface.d.ts +6 -0
- package/dist/manifests/automation-interface.js +11 -8
- package/dist/manifests/automation-interface.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs +45 -4
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.js +1 -1
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs +30 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js +65 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js +21 -9
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js +2 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs +2 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js +40 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js +74 -72
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.cjs +42 -3
- package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.js +22 -3
- package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.js +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js +8 -7
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/index.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/index.js +2 -2
- package/dist/node_modules/lucide-react/dist/esm/icons/blocks.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/blocks.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/blocks.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/blocks.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js.map +1 -0
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +3 -3
- package/dist/package.js.map +1 -1
- package/dist/routes/agent-settings.d.ts +10 -0
- package/dist/routes/app-settings.cjs +1 -1
- package/dist/routes/app-settings.cjs.map +1 -1
- package/dist/routes/app-settings.js +7 -7
- package/dist/routes/files-tab.cjs +1 -1
- package/dist/routes/files-tab.cjs.map +1 -1
- package/dist/routes/files-tab.js +14 -14
- package/dist/routes/files-tab.js.map +1 -1
- package/dist/routes/llm-settings.cjs +1 -1
- package/dist/routes/llm-settings.cjs.map +1 -1
- package/dist/routes/llm-settings.js +122 -114
- package/dist/routes/llm-settings.js.map +1 -1
- package/dist/services/canvas-ui.cjs +1 -1
- package/dist/services/canvas-ui.cjs.map +1 -1
- package/dist/services/canvas-ui.d.ts +5 -0
- package/dist/services/canvas-ui.js +24 -10
- package/dist/services/canvas-ui.js.map +1 -1
- package/dist/services/settings.cjs +1 -1
- package/dist/services/settings.cjs.map +1 -1
- package/dist/services/settings.js +3 -2
- package/dist/services/settings.js.map +1 -1
- package/dist/types/automation.cjs.map +1 -1
- package/dist/types/automation.d.ts +20 -0
- package/dist/types/automation.js.map +1 -1
- package/dist/types/canvas-extension.cjs +2 -0
- package/dist/types/canvas-extension.cjs.map +1 -0
- package/dist/types/canvas-extension.d.ts +77 -0
- package/dist/types/canvas-extension.js +6 -0
- package/dist/types/canvas-extension.js.map +1 -0
- package/dist/types/settings.d.ts +7 -0
- package/dist/ui/help-link.cjs +1 -1
- package/dist/ui/help-link.cjs.map +1 -1
- package/dist/ui/help-link.d.ts +6 -1
- package/dist/ui/help-link.js +32 -18
- package/dist/ui/help-link.js.map +1 -1
- package/dist/utils/acp-auth-display.d.ts +35 -0
- package/dist/utils/cache-utils.cjs +1 -1
- package/dist/utils/cache-utils.js +5 -5
- package/dist/utils/format-model-name.cjs +1 -1
- package/dist/utils/format-model-name.cjs.map +1 -1
- package/dist/utils/format-model-name.d.ts +7 -3
- package/dist/utils/format-model-name.js +6 -11
- package/dist/utils/format-model-name.js.map +1 -1
- package/dist/utils/format-relative-time.cjs +1 -1
- package/dist/utils/format-relative-time.cjs.map +1 -1
- package/dist/utils/format-relative-time.d.ts +7 -0
- package/dist/utils/format-relative-time.js +7 -2
- package/dist/utils/format-relative-time.js.map +1 -1
- package/dist/utils/path-utils.cjs +1 -1
- package/dist/utils/path-utils.cjs.map +1 -1
- package/dist/utils/path-utils.d.ts +15 -3
- package/dist/utils/path-utils.js +29 -3
- package/dist/utils/path-utils.js.map +1 -1
- package/dist/utils/skill-enablement.cjs +2 -0
- package/dist/utils/skill-enablement.cjs.map +1 -0
- package/dist/utils/skill-enablement.d.ts +51 -0
- package/dist/utils/skill-enablement.js +31 -0
- package/dist/utils/skill-enablement.js.map +1 -0
- package/dist/utils/vscode-origin.cjs +2 -0
- package/dist/utils/vscode-origin.cjs.map +1 -0
- package/dist/utils/vscode-origin.d.ts +55 -0
- package/dist/utils/vscode-origin.js +27 -0
- package/dist/utils/vscode-origin.js.map +1 -0
- package/dist/utils/workspace-mode.d.ts +4 -0
- package/package.json +3 -3
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/check-translation-completeness.cjs +1 -0
- package/scripts/dev-extra-backend.mjs +28 -9
- package/scripts/dev-safe.mjs +81 -8
- package/scripts/dev-static.mjs +35 -37
- package/scripts/dev-with-automation.mjs +82 -1
- package/scripts/ingress.mjs +27 -1
- package/scripts/static-server.mjs +74 -1
- package/tools/canvas_ui_tool.py +19 -0
- package/build/assets/active-backend-context-DKFSMbn3.js +0 -2
- package/build/assets/agent-server-conversation-service.api-DozDKIW_.js +0 -86
- package/build/assets/agent-settings-351vXWc9.js +0 -2
- package/build/assets/agent-settings-Ce7BDZ6I.js +0 -1
- package/build/assets/alert-banner-Kyy1YWZU.js +0 -1
- package/build/assets/api-key-entry-screen-INIxqAMs.js +0 -1
- package/build/assets/automation-detail-DXDhUwPq.js +0 -3
- package/build/assets/automation-setup-route-FRr05f_g.js +0 -1
- package/build/assets/automations-list-CERuQWE6.js +0 -1
- package/build/assets/backend-form-modal-DK78-jn1.js +0 -1
- package/build/assets/browser-11etCQ04.js +0 -7
- package/build/assets/check-Cf2YoT90.js +0 -1
- package/build/assets/chevron-down-C3OQ-ehx.js +0 -1
- package/build/assets/chevron-right-CN1uUiJ1.js +0 -1
- package/build/assets/circle-check-g5yeGMd-.js +0 -1
- package/build/assets/command-menu-BZQ8S3Ke.js +0 -1
- package/build/assets/conversation-CchMzpGl.js +0 -1
- package/build/assets/conversation-Dpzftz57.js +0 -93
- package/build/assets/conversation-panel-CchMzpGl.js +0 -1
- package/build/assets/conversation-state-store-a9d2fxRc.js +0 -1
- package/build/assets/empty-state-CvaVahVr.js +0 -1
- package/build/assets/extensions-hub-CFduxBnk.js +0 -1
- package/build/assets/extensions-navigation-BeC224yX.js +0 -1
- package/build/assets/files-tab-CL3J9b3p.js +0 -1
- package/build/assets/format-model-name-BNPKVsIq.js +0 -1
- package/build/assets/get-git-path-DlAJa_i6.js +0 -1
- package/build/assets/git-repo-dropdown-DGMEhz7d.js +0 -1
- package/build/assets/home-BCGlNJCA.js +0 -1
- package/build/assets/home-DB1pRqTC.js +0 -1
- package/build/assets/home-automation-run-tooltip-CooFQRIG.js +0 -1
- package/build/assets/home-store-Dl1dPE58.js +0 -1
- package/build/assets/index-home-DB1pRqTC.js +0 -1
- package/build/assets/info-uYSVzX86.js +0 -1
- package/build/assets/install-server-modal-BbJdhzet.js +0 -1
- package/build/assets/kebab-menu-item-content-BYokkRHi.js +0 -1
- package/build/assets/list-filter-OFkpRrmi.js +0 -1
- package/build/assets/llm-not-configured-banner-BqqYnJ1t.js +0 -27
- package/build/assets/llm-settings-CnDbbmVW.js +0 -1
- package/build/assets/llm-settings-S8Yjg__1.js +0 -1
- package/build/assets/llm-subscription-service-BpPfzW4x.js +0 -1
- package/build/assets/loader-circle-nvrwthvj.js +0 -1
- package/build/assets/manage-backends-modal-BCUPswyl.js +0 -1
- package/build/assets/manifest-58597dde.js +0 -1
- package/build/assets/markdown-renderer-Cb2sBWtV.js +0 -8
- package/build/assets/messages-BTN5thLe.js +0 -40
- package/build/assets/onboarding-Cx_kaiD1.js +0 -1
- package/build/assets/onboarding-modal-vMwn7ihv.js +0 -1
- package/build/assets/plugins-management-service-BjYeF0b0.js +0 -1
- package/build/assets/plus-CEKne-Yp.js +0 -1
- package/build/assets/profiles-service.api-QB-T_u-g.js +0 -1
- package/build/assets/providers-FfSZ5TXP.js +0 -1
- package/build/assets/proxy-tcFL2yTQ.js +0 -1
- package/build/assets/recommended-automations-launcher-Bw8uC4V6.js +0 -1
- package/build/assets/root-BLeQfBEq.css +0 -1
- package/build/assets/root-ZKKYPR1Z.js +0 -2
- package/build/assets/root-layout-luJoE9IG.js +0 -2
- package/build/assets/schema-field-Csw5fhtN.js +0 -1
- package/build/assets/secrets-service-BTor9uAU.js +0 -1
- package/build/assets/settings-DcNPxz0v.js +0 -1
- package/build/assets/settings-service.api-B2agVfjL.js +0 -1
- package/build/assets/shared-conversation-B55pCyBG.js +0 -1
- package/build/assets/sidebar-nav-link-CPzhyHQg.js +0 -1
- package/build/assets/sidebar-store-DtpU7zaI.js +0 -1
- package/build/assets/skill-filter-CWZ5kjcg.js +0 -2
- package/build/assets/skill-scope-CV1dkAbW.js +0 -1
- package/build/assets/skills-plugins-DGHULTq6.js +0 -1
- package/build/assets/skills-settings-CM1lFv3e.js +0 -1
- package/build/assets/usage-tab-BcfWV6db.js +0 -1
- package/build/assets/use-acp-credential-form-BsSW5NHG.js +0 -1
- package/build/assets/use-agent-profiles-DWBPC0Si.js +0 -1
- package/build/assets/use-config-Bft35DOK.js +0 -1
- package/build/assets/use-create-secret-BSxJMxHp.js +0 -1
- package/build/assets/use-is-authed-CFGkY3-Z.js +0 -1
- package/build/assets/use-llm-configured-BI6obxsc.js +0 -1
- package/build/assets/use-llm-profiles-djGAhTWL.js +0 -1
- package/build/assets/use-manifest-capabilities-3z0-1G59.js +0 -1
- package/build/assets/use-onboarding-completion-BXpyUSsJ.js +0 -1
- package/build/assets/use-plugins-marketplace-DI4_pK56.js +0 -1
- package/build/assets/use-save-agent-profile-DdBSTdpN.js +0 -1
- package/build/assets/use-tracking-D5t9otIF.js +0 -3
- package/build/assets/utils-DaCIEEQP.js +0 -1
- package/build/assets/vendor~index-home~home~conversation-panel~conversation~alert-banner-B3qC_oj8.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-B2OLKL7N.js +0 -1
- package/dist/components/features/tips/random-tip.d.ts +0 -2
- package/dist/utils/tips.d.ts +0 -7
- package/dist/utils/workspace-relative-path.cjs +0 -2
- package/dist/utils/workspace-relative-path.cjs.map +0 -1
- package/dist/utils/workspace-relative-path.d.ts +0 -10
- package/dist/utils/workspace-relative-path.js +0 -22
- package/dist/utils/workspace-relative-path.js.map +0 -1
- /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew3u153i-rfV8mQ9m.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-rfV8mQ9m.js} +0 -0
- /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~i58xkef6-cHFhpUBq.js} +0 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether *this browser origin* can serve the editor, and whether a given
|
|
3
|
+
* editor URL is one it will actually route.
|
|
4
|
+
*
|
|
5
|
+
* Editor availability is not a property of the agent-server process alone. The
|
|
6
|
+
* agent-server answers `/api/vscode/status` for whatever conversation you ask
|
|
7
|
+
* about, and builds `/api/vscode/url` from the `base_url` the caller sends —
|
|
8
|
+
* which is always `window.location.origin`. So a server can truthfully report
|
|
9
|
+
* an editor that the page's own origin has no route to. Two supported layouts
|
|
10
|
+
* hit that:
|
|
11
|
+
*
|
|
12
|
+
* - **Public mode** (`docker/entrypoint.sh`, `--auth-required`): a second
|
|
13
|
+
* static server on its own port, sharing the same agent-server but
|
|
14
|
+
* deliberately without the editor route, because the editor's connection
|
|
15
|
+
* token is the session API key (OpenHands/software-agent-sdk#4317) and that
|
|
16
|
+
* origin exists to test the *unauthenticated* case.
|
|
17
|
+
* - **Extra backends** (`scripts/dev-extra-backend.mjs`): a second
|
|
18
|
+
* agent-server registered from a browser whose origin belongs to another
|
|
19
|
+
* stack. That origin's editor route, if any, points at the *bundled*
|
|
20
|
+
* stack's editor — a different container's workspace.
|
|
21
|
+
*
|
|
22
|
+
* In both cases a control gated only on the server probe renders and then
|
|
23
|
+
* resolves to the canvas SPA or, worse, someone else's workspace. So the
|
|
24
|
+
* frontend has to intersect the server's capability with the origin's route
|
|
25
|
+
* table, and this module is the origin half of that.
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* The path prefix this origin serves the editor under, or `null` if it serves
|
|
29
|
+
* no editor at all.
|
|
30
|
+
*
|
|
31
|
+
* Two sources, in order — mirroring `getRawRuntimeServicesInfo` in
|
|
32
|
+
* `agent-server-adapter.ts`:
|
|
33
|
+
* 1. `VITE_VSCODE_BASE_PATH` — baked in at build time by the dev launchers
|
|
34
|
+
* that proxy the editor (`npm run dev`, dev:static).
|
|
35
|
+
* 2. `window.__AGENT_CANVAS_VSCODE_BASE_PATH__` — injected into index.html at
|
|
36
|
+
* serve time by `scripts/static-server.mjs --vscode-base-path <path>`,
|
|
37
|
+
* which refuses to start unless a matching `--route` exists. That is the
|
|
38
|
+
* path used by static builds (the Docker image, the published binary),
|
|
39
|
+
* where the env var is empty in the prebuilt bundle.
|
|
40
|
+
*
|
|
41
|
+
* Absent from both means "this origin does not serve the editor" and the
|
|
42
|
+
* control is hidden. That is the pre-existing behavior for every local backend,
|
|
43
|
+
* so a deployment this cannot detect is no worse off than before.
|
|
44
|
+
*/
|
|
45
|
+
export declare function getOriginVSCodeBasePath(): string | null;
|
|
46
|
+
/**
|
|
47
|
+
* Whether `url` is an editor URL this origin will actually route.
|
|
48
|
+
*
|
|
49
|
+
* The agent-server appends its own `vscode_base_path` to the origin we send it,
|
|
50
|
+
* so the returned URL carries the prefix of the server that answered — not
|
|
51
|
+
* necessarily the prefix this origin routes. An extra backend that configures
|
|
52
|
+
* no prefix yields `<origin>/?tkn=…`, which is the canvas root: same origin,
|
|
53
|
+
* wrong destination. Comparing paths is what separates the two.
|
|
54
|
+
*/
|
|
55
|
+
export declare function isVSCodeUrlServedByOrigin(url: string | null | undefined, basePath: string | null): boolean;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region src/utils/vscode-origin.ts
|
|
2
|
+
var e = "__AGENT_CANVAS_VSCODE_BASE_PATH__";
|
|
3
|
+
function t() {
|
|
4
|
+
if (typeof window < "u") {
|
|
5
|
+
let t = window[e];
|
|
6
|
+
if (typeof t == "string" && t.trim()) return n(t.trim());
|
|
7
|
+
}
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
function n(e) {
|
|
11
|
+
let t = e.startsWith("/") ? e : `/${e}`;
|
|
12
|
+
return t.length > 1 ? t.replace(/\/+$/, "") : t;
|
|
13
|
+
}
|
|
14
|
+
function r(e, t) {
|
|
15
|
+
if (!e || !t) return !1;
|
|
16
|
+
let n;
|
|
17
|
+
try {
|
|
18
|
+
n = new URL(e, typeof window < "u" ? window.location.href : void 0);
|
|
19
|
+
} catch {
|
|
20
|
+
return !1;
|
|
21
|
+
}
|
|
22
|
+
return typeof window < "u" && n.origin !== window.location.origin ? !1 : n.pathname === t || n.pathname.startsWith(`${t}/`);
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { t as getOriginVSCodeBasePath, r as isVSCodeUrlServedByOrigin };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=vscode-origin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscode-origin.js","names":[],"sources":["../../src/utils/vscode-origin.ts"],"sourcesContent":["/**\n * Whether *this browser origin* can serve the editor, and whether a given\n * editor URL is one it will actually route.\n *\n * Editor availability is not a property of the agent-server process alone. The\n * agent-server answers `/api/vscode/status` for whatever conversation you ask\n * about, and builds `/api/vscode/url` from the `base_url` the caller sends —\n * which is always `window.location.origin`. So a server can truthfully report\n * an editor that the page's own origin has no route to. Two supported layouts\n * hit that:\n *\n * - **Public mode** (`docker/entrypoint.sh`, `--auth-required`): a second\n * static server on its own port, sharing the same agent-server but\n * deliberately without the editor route, because the editor's connection\n * token is the session API key (OpenHands/software-agent-sdk#4317) and that\n * origin exists to test the *unauthenticated* case.\n * - **Extra backends** (`scripts/dev-extra-backend.mjs`): a second\n * agent-server registered from a browser whose origin belongs to another\n * stack. That origin's editor route, if any, points at the *bundled*\n * stack's editor — a different container's workspace.\n *\n * In both cases a control gated only on the server probe renders and then\n * resolves to the canvas SPA or, worse, someone else's workspace. So the\n * frontend has to intersect the server's capability with the origin's route\n * table, and this module is the origin half of that.\n */\n\nconst VSCODE_BASE_PATH_WINDOW_KEY = \"__AGENT_CANVAS_VSCODE_BASE_PATH__\";\n\n/**\n * The path prefix this origin serves the editor under, or `null` if it serves\n * no editor at all.\n *\n * Two sources, in order — mirroring `getRawRuntimeServicesInfo` in\n * `agent-server-adapter.ts`:\n * 1. `VITE_VSCODE_BASE_PATH` — baked in at build time by the dev launchers\n * that proxy the editor (`npm run dev`, dev:static).\n * 2. `window.__AGENT_CANVAS_VSCODE_BASE_PATH__` — injected into index.html at\n * serve time by `scripts/static-server.mjs --vscode-base-path <path>`,\n * which refuses to start unless a matching `--route` exists. That is the\n * path used by static builds (the Docker image, the published binary),\n * where the env var is empty in the prebuilt bundle.\n *\n * Absent from both means \"this origin does not serve the editor\" and the\n * control is hidden. That is the pre-existing behavior for every local backend,\n * so a deployment this cannot detect is no worse off than before.\n */\nexport function getOriginVSCodeBasePath(): string | null {\n const envRaw = import.meta.env.VITE_VSCODE_BASE_PATH?.trim();\n if (envRaw) return normalizePrefix(envRaw);\n\n if (typeof window !== \"undefined\") {\n const injected = (window as unknown as Record<string, unknown>)[\n VSCODE_BASE_PATH_WINDOW_KEY\n ];\n if (typeof injected === \"string\" && injected.trim()) {\n return normalizePrefix(injected.trim());\n }\n }\n\n return null;\n}\n\nfunction normalizePrefix(value: string): string {\n const withLeadingSlash = value.startsWith(\"/\") ? value : `/${value}`;\n return withLeadingSlash.length > 1\n ? withLeadingSlash.replace(/\\/+$/, \"\")\n : withLeadingSlash;\n}\n\n/**\n * Whether `url` is an editor URL this origin will actually route.\n *\n * The agent-server appends its own `vscode_base_path` to the origin we send it,\n * so the returned URL carries the prefix of the server that answered — not\n * necessarily the prefix this origin routes. An extra backend that configures\n * no prefix yields `<origin>/?tkn=…`, which is the canvas root: same origin,\n * wrong destination. Comparing paths is what separates the two.\n */\nexport function isVSCodeUrlServedByOrigin(\n url: string | null | undefined,\n basePath: string | null,\n): boolean {\n if (!url || !basePath) return false;\n\n let parsed: URL;\n try {\n parsed = new URL(\n url,\n typeof window !== \"undefined\" ? window.location.href : undefined,\n );\n } catch {\n return false;\n }\n\n // A cross-origin URL is somebody else's problem to route, not ours to vouch\n // for. The local path always builds on `window.location.origin`, so this only\n // fires on a value we did not construct.\n if (\n typeof window !== \"undefined\" &&\n parsed.origin !== window.location.origin\n ) {\n return false;\n }\n\n return (\n parsed.pathname === basePath || parsed.pathname.startsWith(`${basePath}/`)\n );\n}\n"],"mappings":";AA2BA,IAAM,IAA8B;AAoBpC,SAAgB,IAAyC;CAIvD,IAAI,OAAO,SAAW,KAAa;EACjC,IAAM,IAAY,OAChB;EAEF,IAAI,OAAO,KAAa,YAAY,EAAS,KAAK,GAChD,OAAO,EAAgB,EAAS,KAAK,CAAC;CAE1C;CAEA,OAAO;AACT;AAEA,SAAS,EAAgB,GAAuB;CAC9C,IAAM,IAAmB,EAAM,WAAW,GAAG,IAAI,IAAQ,IAAI;CAC7D,OAAO,EAAiB,SAAS,IAC7B,EAAiB,QAAQ,QAAQ,EAAE,IACnC;AACN;AAWA,SAAgB,EACd,GACA,GACS;CACT,IAAI,CAAC,KAAO,CAAC,GAAU,OAAO;CAE9B,IAAI;CACJ,IAAI;EACF,IAAS,IAAI,IACX,GACA,OAAO,SAAW,MAAc,OAAO,SAAS,OAAO,KAAA,CACzD;CACF,QAAQ;EACN,OAAO;CACT;CAYA,OANE,OAAO,SAAW,OAClB,EAAO,WAAW,OAAO,SAAS,SAE3B,KAIP,EAAO,aAAa,KAAY,EAAO,SAAS,WAAW,GAAG,EAAS,EAAE;AAE7E"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { BackendKind } from "#/api/backend-registry/types";
|
|
2
2
|
import type { WorkspaceMode } from "#/api/conversation-metadata-store";
|
|
3
3
|
import { I18nKey } from "#/i18n/declaration";
|
|
4
|
+
export declare const DEFAULT_WORKSPACE_MODE: WorkspaceMode;
|
|
5
|
+
export declare const LAST_LOCAL_WORKSPACE_MODE_STORAGE_KEY = "openhands-last-local-workspace-mode";
|
|
6
|
+
export declare function readStoredLocalWorkspaceMode(): WorkspaceMode;
|
|
7
|
+
export declare function writeStoredLocalWorkspaceMode(mode: WorkspaceMode): void;
|
|
4
8
|
export declare function getWorkspaceModeI18nKey(mode: WorkspaceMode, backendKind: BackendKind): I18nKey;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openhands/agent-canvas",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.16.0",
|
|
4
4
|
"description": "Agent Canvas UI for OpenHands - run AI coding agents with a visual interface",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"@heroui/react": "2.8.10",
|
|
24
24
|
"@microlink/react-json-view": "1.31.25",
|
|
25
25
|
"@monaco-editor/react": "4.7.0",
|
|
26
|
-
"@openhands/extensions": "0.
|
|
27
|
-
"@openhands/typescript-client": "1.
|
|
26
|
+
"@openhands/extensions": "0.19.0",
|
|
27
|
+
"@openhands/typescript-client": "1.39.0",
|
|
28
28
|
"@react-router/node": "7.18.2",
|
|
29
29
|
"@react-router/serve": "7.18.2",
|
|
30
30
|
"@tailwindcss/vite": "4.3.3",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
*
|
|
20
20
|
* Usage:
|
|
21
21
|
* node scripts/check-sdk-version-sync.mjs
|
|
22
|
-
* EXPECTED_SDK_VERSION=1.
|
|
22
|
+
* EXPECTED_SDK_VERSION=1.44.0 node scripts/check-sdk-version-sync.mjs
|
|
23
23
|
* node scripts/check-sdk-version-sync.mjs --check-pypi
|
|
24
24
|
*
|
|
25
25
|
* Environment variables:
|
|
@@ -78,7 +78,7 @@ Triggering from other repos:
|
|
|
78
78
|
-H "Authorization: token \$GITHUB_TOKEN" \\
|
|
79
79
|
-H "Accept: application/vnd.github.v3+json" \\
|
|
80
80
|
https://api.github.com/repos/OpenHands/OpenHands/dispatches \\
|
|
81
|
-
-d '{"event_type": "sdk-version-check", "client_payload": {"version": "1.
|
|
81
|
+
-d '{"event_type": "sdk-version-check", "client_payload": {"version": "1.44.0"}}'
|
|
82
82
|
`);
|
|
83
83
|
process.exit(0);
|
|
84
84
|
}
|
|
@@ -260,9 +260,9 @@ async function fetchPyPIDependencies(packageName, version) {
|
|
|
260
260
|
* Parse PyPI requires_dist array and extract SDK package versions
|
|
261
261
|
*
|
|
262
262
|
* PyPI returns dependencies in PEP 508 format like:
|
|
263
|
-
* "openhands-sdk>=1.
|
|
264
|
-
* "openhands-tools==1.
|
|
265
|
-
* "openhands-workspace (>=1.
|
|
263
|
+
* "openhands-sdk>=1.44.0,<2.0.0"
|
|
264
|
+
* "openhands-tools==1.44.0"
|
|
265
|
+
* "openhands-workspace (>=1.44.0)"
|
|
266
266
|
*/
|
|
267
267
|
function parseSdkVersionsFromRequiresDist(requiresDist) {
|
|
268
268
|
const versions = {};
|
|
@@ -276,7 +276,7 @@ function parseSdkVersionsFromRequiresDist(requiresDist) {
|
|
|
276
276
|
}
|
|
277
277
|
|
|
278
278
|
// Extract the version number - look for patterns like:
|
|
279
|
-
// ">=1.
|
|
279
|
+
// ">=1.44.0", "==1.44.0", "(>=1.44.0)", "~=1.44.0"
|
|
280
280
|
// After the package name and before any comma or closing paren
|
|
281
281
|
const versionPattern = /[><=~!]+\s*([0-9]+(?:\.[0-9]+)*)/;
|
|
282
282
|
const match = dep.match(versionPattern);
|
|
@@ -60,6 +60,7 @@ const IDENTICAL_VALUE_ALLOWLIST = new Set([
|
|
|
60
60
|
'SETTINGS$MCP_SERVER_TYPE_SSE',
|
|
61
61
|
'SETTINGS$MCP_SERVER_TYPE_STDIO',
|
|
62
62
|
'SETTINGS$NAV_LLM',
|
|
63
|
+
'SETTINGS$OPENHANDS_API_KEY_HELP_LINK',
|
|
63
64
|
'SETTINGS$SKILLS_PILLS_MORE',
|
|
64
65
|
'SETTINGS$SKILLS_VERSION',
|
|
65
66
|
'SETTINGS$SLACK',
|
|
@@ -43,7 +43,10 @@ function parsePort(value, fallback) {
|
|
|
43
43
|
* @param {string} cwd
|
|
44
44
|
* @param {Record<string, string | undefined>} env
|
|
45
45
|
*/
|
|
46
|
-
export function buildExtraBackendConfig(
|
|
46
|
+
export function buildExtraBackendConfig(
|
|
47
|
+
cwd = process.cwd(),
|
|
48
|
+
env = process.env,
|
|
49
|
+
) {
|
|
47
50
|
const base = buildSafeDevConfig(cwd, env);
|
|
48
51
|
|
|
49
52
|
const backendPort = parsePort(
|
|
@@ -70,7 +73,7 @@ function isEnoentError(error) {
|
|
|
70
73
|
typeof error === "object" &&
|
|
71
74
|
"code" in error &&
|
|
72
75
|
error.code === "ENOENT") ||
|
|
73
|
-
|
|
76
|
+
/ENOENT/.test(String(error)),
|
|
74
77
|
);
|
|
75
78
|
}
|
|
76
79
|
|
|
@@ -94,10 +97,14 @@ async function waitForServer(url, timeoutMs = DEFAULT_WAIT_TIMEOUT_MS) {
|
|
|
94
97
|
}
|
|
95
98
|
|
|
96
99
|
function spawnProcess(command, args, options = {}) {
|
|
97
|
-
const child = spawn(
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
100
|
+
const child = spawn(
|
|
101
|
+
command,
|
|
102
|
+
args,
|
|
103
|
+
getProcessTreeSpawnOptions({
|
|
104
|
+
stdio: "inherit",
|
|
105
|
+
...options,
|
|
106
|
+
}),
|
|
107
|
+
);
|
|
101
108
|
|
|
102
109
|
child.once("error", (error) => {
|
|
103
110
|
if (isEnoentError(error) && command === "uvx") {
|
|
@@ -164,6 +171,14 @@ async function main() {
|
|
|
164
171
|
{
|
|
165
172
|
cwd: config.cwd,
|
|
166
173
|
env: {
|
|
174
|
+
// Deliberately not opting into the editor path prefix. This server is
|
|
175
|
+
// reached by registering it as an extra backend from a browser whose
|
|
176
|
+
// origin belongs to some *other* stack, so a prefix on that origin
|
|
177
|
+
// either does not resolve or — worse — resolves to the bundled
|
|
178
|
+
// stack's editor, silently handing back a different container's
|
|
179
|
+
// workspace. No single global prefix can disambiguate the two, so this
|
|
180
|
+
// launcher stays out of prefix-mode; the editor button is unavailable
|
|
181
|
+
// for conversations on an extra backend.
|
|
167
182
|
...process.env,
|
|
168
183
|
...buildAgentServerEnv(config),
|
|
169
184
|
},
|
|
@@ -190,6 +205,12 @@ async function main() {
|
|
|
190
205
|
|
|
191
206
|
process.on("SIGINT", () => shutdown("SIGINT"));
|
|
192
207
|
process.on("SIGTERM", () => shutdown("SIGTERM"));
|
|
208
|
+
// The agent-server is spawned detached, so a SIGHUP that kills this launcher
|
|
209
|
+
// (terminal or multiplexer death) would otherwise leave it running and holding
|
|
210
|
+
// its port. Forward SIGTERM rather than SIGHUP: uvicorn only handles
|
|
211
|
+
// SIGINT/SIGTERM, so a forwarded SIGHUP would terminate the agent-server by
|
|
212
|
+
// default action instead of shutting it down gracefully.
|
|
213
|
+
process.on("SIGHUP", () => shutdown("SIGTERM"));
|
|
193
214
|
|
|
194
215
|
const backendErrored = new Promise((_, reject) => {
|
|
195
216
|
backend.once("error", (error) => reject(error));
|
|
@@ -221,9 +242,7 @@ async function main() {
|
|
|
221
242
|
|
|
222
243
|
backend.once("exit", (code) => {
|
|
223
244
|
if (!shuttingDown) {
|
|
224
|
-
console.error(
|
|
225
|
-
`agent-server exited unexpectedly with code ${code ?? 0}`,
|
|
226
|
-
);
|
|
245
|
+
console.error(`agent-server exited unexpectedly with code ${code ?? 0}`);
|
|
227
246
|
shutdown();
|
|
228
247
|
process.exitCode = code ?? 1;
|
|
229
248
|
} else {
|
package/scripts/dev-safe.mjs
CHANGED
|
@@ -37,6 +37,11 @@ const SHARED_DEFAULTS = JSON.parse(
|
|
|
37
37
|
);
|
|
38
38
|
|
|
39
39
|
const DEFAULT_BACKEND_PORT = SHARED_DEFAULTS.ports.agentServer;
|
|
40
|
+
// Path prefix the bundled editor is served under. The same value has to reach
|
|
41
|
+
// agent-server (as OH_VSCODE_BASE_PATH, so openvscode-server is launched with
|
|
42
|
+
// --server-base-path and advertises the prefix) and the ingress route table,
|
|
43
|
+
// or the advertised URL and the route that serves it disagree.
|
|
44
|
+
export const VSCODE_BASE_PATH = SHARED_DEFAULTS.paths.vscodeBasePath;
|
|
40
45
|
const DEFAULT_VITE_PORT = 3001;
|
|
41
46
|
const DEFAULT_WAIT_TIMEOUT_MS = 30_000;
|
|
42
47
|
const DEFAULT_AGENT_SERVER_PACKAGE = SHARED_DEFAULTS.packages.agentServer;
|
|
@@ -396,6 +401,16 @@ export function validateFrontendDependencies(
|
|
|
396
401
|
}
|
|
397
402
|
}
|
|
398
403
|
|
|
404
|
+
/**
|
|
405
|
+
* Modules the agent-server imports at startup (`--import-modules`). They are
|
|
406
|
+
* resolved from `tools/`, which `buildAgentServerEnv` exposes through
|
|
407
|
+
* OH_EXTRA_PYTHON_PATH. Importing `canvas_ui_tool` eagerly registers the SDK's
|
|
408
|
+
* builtin FinishTool so automation presets (openhands-automation >= 1.9.0) can
|
|
409
|
+
* resolve it on the remote conversations they dispatch — see the note at the
|
|
410
|
+
* bottom of tools/canvas_ui_tool.py.
|
|
411
|
+
*/
|
|
412
|
+
export const AGENT_SERVER_IMPORT_MODULES = "canvas_ui_tool";
|
|
413
|
+
|
|
399
414
|
/**
|
|
400
415
|
* Build the uvx command and arguments for running agent-server.
|
|
401
416
|
*
|
|
@@ -406,7 +421,7 @@ export function validateFrontendDependencies(
|
|
|
406
421
|
* edits are picked up without a manual reinstall. The agent-server itself
|
|
407
422
|
* is rebuilt from local source on each invocation (--reinstall).
|
|
408
423
|
* - OH_AGENT_SERVER_GIT_REF: Git commit SHA or branch name
|
|
409
|
-
* - OH_AGENT_SERVER_VERSION: Specific PyPI version (e.g., "1.
|
|
424
|
+
* - OH_AGENT_SERVER_VERSION: Specific PyPI version (e.g., "1.44.0")
|
|
410
425
|
*
|
|
411
426
|
* If none are set, defaults to the released version specified by
|
|
412
427
|
* DEFAULT_AGENT_SERVER_VERSION. Set OH_AGENT_SERVER_GIT_REF to use a
|
|
@@ -511,6 +526,10 @@ export function buildAgentServerCommand(env = process.env) {
|
|
|
511
526
|
source = `PyPI (${DEFAULT_AGENT_SERVER_VERSION}, default)`;
|
|
512
527
|
}
|
|
513
528
|
|
|
529
|
+
// Everything after the executable name is an agent-server CLI argument.
|
|
530
|
+
// Import the registration module before any conversation is created.
|
|
531
|
+
uvxArgs.push("--import-modules", AGENT_SERVER_IMPORT_MODULES);
|
|
532
|
+
|
|
514
533
|
return {
|
|
515
534
|
command: "uvx",
|
|
516
535
|
args: uvxArgs,
|
|
@@ -599,6 +618,7 @@ export async function buildSafeDevConfigAsync(
|
|
|
599
618
|
* @property {string} cwd
|
|
600
619
|
* @property {number} backendPort
|
|
601
620
|
* @property {number} vscodePort
|
|
621
|
+
* @property {string} vscodeBasePath
|
|
602
622
|
* @property {string} stateDir
|
|
603
623
|
* @property {string} tmuxTmpDir
|
|
604
624
|
* @property {string} conversationsPath
|
|
@@ -657,6 +677,7 @@ function buildConfigFromPorts(ports, cwd, env) {
|
|
|
657
677
|
cwd,
|
|
658
678
|
backendPort,
|
|
659
679
|
vscodePort,
|
|
680
|
+
vscodeBasePath: VSCODE_BASE_PATH,
|
|
660
681
|
stateDir,
|
|
661
682
|
// tmux socket directory. Defaults to <stateDir>/tmux (under
|
|
662
683
|
// ~/.openhands/agent-canvas), matching where the rest of dev state lives
|
|
@@ -688,13 +709,13 @@ function buildConfigFromPorts(ports, cwd, env) {
|
|
|
688
709
|
}
|
|
689
710
|
|
|
690
711
|
/**
|
|
691
|
-
*
|
|
712
|
+
* Telemetry-related env vars for the agent-server process.
|
|
692
713
|
*
|
|
693
|
-
*
|
|
694
|
-
*
|
|
714
|
+
* Split out from `buildAgentServerEnv` so callers that assemble their own
|
|
715
|
+
* agent-server environment can reuse the same mapping.
|
|
695
716
|
*
|
|
696
|
-
* @param {
|
|
697
|
-
* @returns {Record<string, string>}
|
|
717
|
+
* @param {Record<string, string | undefined>} [env] - Source environment.
|
|
718
|
+
* @returns {Record<string, string>} Telemetry env vars for agent-server
|
|
698
719
|
*/
|
|
699
720
|
export function buildAgentServerTelemetryEnv(env = process.env) {
|
|
700
721
|
const telemetryDisabled =
|
|
@@ -739,7 +760,35 @@ export function buildAgentServerTelemetryEnv(env = process.env) {
|
|
|
739
760
|
return result;
|
|
740
761
|
}
|
|
741
762
|
|
|
742
|
-
|
|
763
|
+
/**
|
|
764
|
+
* Build the environment variables object for spawning the agent-server process.
|
|
765
|
+
*
|
|
766
|
+
* This is exported so downstream consumers (e.g., automation service) can use
|
|
767
|
+
* the same env vars without duplicating the mapping logic.
|
|
768
|
+
*
|
|
769
|
+
* `vscodeBasePath` is an explicit opt-in rather than a field read off `config`,
|
|
770
|
+
* and that is deliberate. Setting it changes the URL `/api/vscode/url`
|
|
771
|
+
* advertises: agent-server appends the prefix to the browser origin the
|
|
772
|
+
* frontend sends, so the editor is only reachable if the same origin also
|
|
773
|
+
* routes that prefix to the editor port. A launcher that sets it without
|
|
774
|
+
* registering the route advertises `<origin>/vscode/…`, which serves the
|
|
775
|
+
* canvas SPA shell instead of the editor.
|
|
776
|
+
*
|
|
777
|
+
* Requiring the caller to name it makes the pairing greppable: every call site
|
|
778
|
+
* that passes `vscodeBasePath` must also register a matching route, and
|
|
779
|
+
* `__tests__/scripts/vscode-base-path-opt-in.test.ts` asserts that no launcher
|
|
780
|
+
* opts in without one.
|
|
781
|
+
*
|
|
782
|
+
* @param {ReturnType<typeof buildSafeDevConfig>} config - Config from buildSafeDevConfig
|
|
783
|
+
* @param {{vscodeBasePath?: string | null, env?: Record<string, string | undefined>}} [options]
|
|
784
|
+
* @param {string | null} [options.vscodeBasePath] - Opt into prefix-mode by
|
|
785
|
+
* passing the path prefix the caller also routes to `config.vscodePort`.
|
|
786
|
+
* @param {Record<string, string | undefined>} [options.env] - Source
|
|
787
|
+
* environment for the telemetry mapping (defaults to `process.env`).
|
|
788
|
+
* @returns {Record<string, string>} Environment variables for agent-server
|
|
789
|
+
*/
|
|
790
|
+
export function buildAgentServerEnv(config, options = {}) {
|
|
791
|
+
const { vscodeBasePath = null, env = process.env } = options;
|
|
743
792
|
return {
|
|
744
793
|
...buildAgentServerTelemetryEnv(env),
|
|
745
794
|
// Force Python to use UTF-8 for all file I/O and streams.
|
|
@@ -759,6 +808,13 @@ export function buildAgentServerEnv(config, env = process.env) {
|
|
|
759
808
|
OH_CONVERSATIONS_PATH: config.conversationsPath,
|
|
760
809
|
OH_BASH_EVENTS_DIR: config.bashEventsDir,
|
|
761
810
|
OH_VSCODE_PORT: String(config.vscodePort),
|
|
811
|
+
// Serve the editor under a path prefix on the canvas origin rather than on
|
|
812
|
+
// its own published port. agent-server passes this to openvscode-server as
|
|
813
|
+
// --server-base-path and includes it in the URL from /api/vscode/url, which
|
|
814
|
+
// matches the ingress route the caller registers for the same prefix.
|
|
815
|
+
//
|
|
816
|
+
// Omitted unless the caller opts in — see the note on this function.
|
|
817
|
+
...(vscodeBasePath ? { OH_VSCODE_BASE_PATH: vscodeBasePath } : {}),
|
|
762
818
|
OH_SECRET_KEY: config.secretKey,
|
|
763
819
|
// Use OH_SESSION_API_KEYS_0 for agent-server V1 config format
|
|
764
820
|
OH_SESSION_API_KEYS_0: config.sessionApiKey,
|
|
@@ -954,7 +1010,12 @@ async function main() {
|
|
|
954
1010
|
cwd: config.cwd,
|
|
955
1011
|
env: {
|
|
956
1012
|
...process.env,
|
|
957
|
-
|
|
1013
|
+
// Opt into prefix-mode: the Vite dev server proxies the same prefix to
|
|
1014
|
+
// `config.vscodePort` (see VITE_VSCODE_TARGET below), so the advertised
|
|
1015
|
+
// URL resolves on the frontend origin the browser is actually on.
|
|
1016
|
+
...buildAgentServerEnv(config, {
|
|
1017
|
+
vscodeBasePath: config.vscodeBasePath,
|
|
1018
|
+
}),
|
|
958
1019
|
},
|
|
959
1020
|
},
|
|
960
1021
|
);
|
|
@@ -986,6 +1047,12 @@ async function main() {
|
|
|
986
1047
|
|
|
987
1048
|
process.on("SIGINT", () => shutdown("SIGINT"));
|
|
988
1049
|
process.on("SIGTERM", () => shutdown("SIGTERM"));
|
|
1050
|
+
// Services are spawned detached, so a SIGHUP that kills this launcher (terminal
|
|
1051
|
+
// or multiplexer death) would otherwise leave the whole tree running. Forward
|
|
1052
|
+
// SIGTERM rather than SIGHUP: uvicorn only handles SIGINT/SIGTERM, so a
|
|
1053
|
+
// forwarded SIGHUP would terminate the agent-server by default action instead
|
|
1054
|
+
// of shutting it down gracefully.
|
|
1055
|
+
process.on("SIGHUP", () => shutdown("SIGTERM"));
|
|
989
1056
|
|
|
990
1057
|
const backendErrored = new Promise((_, reject) => {
|
|
991
1058
|
backend.once("error", (error) => reject(error));
|
|
@@ -1023,6 +1090,12 @@ async function main() {
|
|
|
1023
1090
|
VITE_WORKING_DIR: config.workingDir,
|
|
1024
1091
|
// Pass session API key so frontend can authenticate with agent-server
|
|
1025
1092
|
VITE_SESSION_API_KEY: config.sessionApiKey,
|
|
1093
|
+
// This mode has no static server or ingress in front of Vite, so Vite's
|
|
1094
|
+
// own proxy is the only thing that can serve the editor prefix on the
|
|
1095
|
+
// frontend origin. The editor is a separate process on a port of its
|
|
1096
|
+
// own, so it needs its own proxy target rather than VITE_BACKEND_HOST.
|
|
1097
|
+
VITE_VSCODE_BASE_PATH: config.vscodeBasePath,
|
|
1098
|
+
VITE_VSCODE_TARGET: `http://127.0.0.1:${config.vscodePort}`,
|
|
1026
1099
|
// dev:minimal deliberately does NOT supply runtime-services info (the
|
|
1027
1100
|
// frontend here talks straight to the agent-server over
|
|
1028
1101
|
// VITE_BACKEND_BASE_URL — there is no ingress or static-server in front
|
package/scripts/dev-static.mjs
CHANGED
|
@@ -63,6 +63,11 @@ import {
|
|
|
63
63
|
buildAutomationTelemetryEnv,
|
|
64
64
|
buildAutomationRuntimeServicesInfo,
|
|
65
65
|
buildConfig,
|
|
66
|
+
buildRouteArgs,
|
|
67
|
+
getAgentServerBaseUrl,
|
|
68
|
+
getLocalServiceRoutes,
|
|
69
|
+
getNoReferrerPrefixArgs,
|
|
70
|
+
getVSCodeAdvertiseArgs,
|
|
66
71
|
} from "./dev-with-automation.mjs";
|
|
67
72
|
|
|
68
73
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
@@ -285,42 +290,25 @@ async function waitForService(name, url, timeoutMs = 30000) {
|
|
|
285
290
|
// dev-with-automation; the only difference is the frontend service.)
|
|
286
291
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
287
292
|
|
|
288
|
-
//
|
|
289
|
-
//
|
|
290
|
-
//
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
const AUTOMATION_ROUTE_PREFIX = "/api/automation";
|
|
300
|
-
const AGENT_SERVER_ROUTE_PREFIXES = [
|
|
301
|
-
"/api",
|
|
302
|
-
"/sockets",
|
|
303
|
-
"/server_info",
|
|
304
|
-
"/health",
|
|
305
|
-
"/ready",
|
|
306
|
-
"/alive",
|
|
307
|
-
"/docs",
|
|
308
|
-
"/redoc",
|
|
309
|
-
"/openapi.json",
|
|
310
|
-
];
|
|
311
|
-
|
|
312
|
-
// The static server and the ingress proxy front the same two local backends,
|
|
313
|
-
// so they share one route table.
|
|
293
|
+
// The static server and the ingress proxy front the same local backends, so
|
|
294
|
+
// they share one route table — dev-with-automation's, rather than a second
|
|
295
|
+
// copy here. The copy this replaces claimed to stay identical to that table
|
|
296
|
+
// but nothing enforced it, and it had already drifted: the editor prefix was
|
|
297
|
+
// missing, so `/vscode` fell through to the SPA fallback and answered editor
|
|
298
|
+
// requests with the canvas shell.
|
|
299
|
+
//
|
|
300
|
+
// This mode always launches both local backends (it never runs frontend-only),
|
|
301
|
+
// so it asks for their routes unconditionally. Every target is IPv4 loopback:
|
|
302
|
+
// the backends bind to `0.0.0.0`, which only accepts IPv4, but localhost can
|
|
303
|
+
// resolve to ::1 first (notably on Windows).
|
|
314
304
|
function buildLocalServiceRouteArgs(config) {
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
]),
|
|
323
|
-
];
|
|
305
|
+
return buildRouteArgs(
|
|
306
|
+
getLocalServiceRoutes({
|
|
307
|
+
...config,
|
|
308
|
+
launchAgentServer: true,
|
|
309
|
+
launchAutomation: true,
|
|
310
|
+
}),
|
|
311
|
+
);
|
|
324
312
|
}
|
|
325
313
|
|
|
326
314
|
function startAgentServer(config) {
|
|
@@ -341,7 +329,12 @@ function startAgentServer(config) {
|
|
|
341
329
|
});
|
|
342
330
|
|
|
343
331
|
const agentServerEnv = {
|
|
344
|
-
|
|
332
|
+
// Opt into prefix-mode: both the static server and the ingress below build
|
|
333
|
+
// their route tables from `getLocalServiceRoutes`, which registers this
|
|
334
|
+
// same prefix against `config.vscodePort`.
|
|
335
|
+
...buildAgentServerEnv(safeConfig, {
|
|
336
|
+
vscodeBasePath: config.vscodeBasePath,
|
|
337
|
+
}),
|
|
345
338
|
...buildAgentServerAutomationEnv(config),
|
|
346
339
|
};
|
|
347
340
|
|
|
@@ -444,6 +437,11 @@ function startStaticServer(config) {
|
|
|
444
437
|
"--runtime-services-info",
|
|
445
438
|
runtimeServicesInfo,
|
|
446
439
|
...buildLocalServiceRouteArgs(config),
|
|
440
|
+
// Only the static server injects into the document, so only it can tell
|
|
441
|
+
// the frontend this origin serves the editor. The ingress below routes
|
|
442
|
+
// the same prefix but proxies the HTML through untouched.
|
|
443
|
+
...getVSCodeAdvertiseArgs(config),
|
|
444
|
+
...getNoReferrerPrefixArgs(config),
|
|
447
445
|
],
|
|
448
446
|
{
|
|
449
447
|
cwd: config.canvasPath,
|
|
@@ -473,6 +471,7 @@ function startIngress(config) {
|
|
|
473
471
|
"--runtime-services-info",
|
|
474
472
|
runtimeServicesInfo,
|
|
475
473
|
...buildLocalServiceRouteArgs(config),
|
|
474
|
+
...getNoReferrerPrefixArgs(config),
|
|
476
475
|
"--default",
|
|
477
476
|
`http://localhost:${config.vitePort}`,
|
|
478
477
|
],
|
|
@@ -645,7 +644,6 @@ export {
|
|
|
645
644
|
buildAutomationBackendEnv,
|
|
646
645
|
buildFrontend,
|
|
647
646
|
buildLocalServiceRouteArgs,
|
|
648
|
-
getAgentServerBaseUrl,
|
|
649
647
|
startStaticServer,
|
|
650
648
|
};
|
|
651
649
|
|