@openhands/agent-canvas 1.0.0-beta.6 → 1.0.0-beta.8
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 +24 -7
- package/README.windows.md +27 -0
- package/bin/agent-canvas.mjs +26 -3
- package/build/assets/{QueryClientProvider-CkGuhXg-.js → QueryClientProvider-Cnr-Yl3j.js} +1 -1
- package/build/assets/{Trans-Cvm_-SMi.js → Trans-4jmk54WC.js} +1 -1
- package/build/assets/acp-providers-BAX8OU5C.js +1 -0
- package/build/assets/{acp-route-guard-B2yoBZ_4.js → acp-route-guard-HPk6TV-L.js} +1 -1
- package/build/assets/active-backend-context-BSPE-W72.js +1 -0
- package/build/assets/add-backend-modal-mXKmfMI2.js +1 -0
- package/build/assets/agent-server-client-options-9agOSarV.js +1 -0
- package/build/assets/agent-server-compatibility-B7QStIcH.js +1 -0
- package/build/assets/agent-server-conversation-service.api-B9TUYJon.js +5 -0
- package/build/assets/{agent-settings-CnGSCmK8.js → agent-settings-g3F623RJ.js} +1 -1
- package/build/assets/{alert-banner-DtzAX654.js → alert-banner-DFnn_lC6.js} +1 -1
- package/build/assets/{analytics-consent-form-modal-CHZ3I37v.js → analytics-consent-form-modal-BQCNeNVt.js} +1 -1
- package/build/assets/api-key-entry-screen-myuWMqzW.js +1 -0
- package/build/assets/{app-settings-Db9ITeJH.js → app-settings-CCcX8ZEH.js} +1 -1
- package/build/assets/automation-detail-BDHLHSJd.js +1 -0
- package/build/assets/automations-list-CiNtQhq_.js +1 -0
- package/build/assets/back-nav-button-7dQJ2k3O.js +1 -0
- package/build/assets/backend-form-modal-D3bDMO3C.js +1 -0
- package/build/assets/{backend-synced-settings-badge-Dc6c7GT4.js → backend-synced-settings-badge-BkW5evM0.js} +1 -1
- package/build/assets/base-modal-C2oy2EBG.js +1 -0
- package/build/assets/brand-button-DJ_S16rO.js +1 -0
- package/build/assets/{browser-D810xUYt.js → browser-CGM-k-sH.js} +2 -2
- package/build/assets/browser-store-DAsixKdU.js +1 -0
- package/build/assets/{browser-tab-B-aIqXRl.js → browser-tab-dvSPdvkm.js} +1 -1
- package/build/assets/{checkmark-DL7acQA7.js → checkmark-Dus0b6jt.js} +1 -1
- package/build/assets/{chevron-left-small-CVWf8TI6.js → chevron-left-small-_uvG7RVM.js} +1 -1
- package/build/assets/{circle-plus-check-toggle-P7ZZToV4.js → circle-plus-check-toggle-DKS8MAVV.js} +1 -1
- package/build/assets/{close-B5LROHR3.js → close-BU5iTc66.js} +1 -1
- package/build/assets/code-tag-BzyqOtPD.js +1 -0
- package/build/assets/combobox-caret-BJC7XJsz.js +1 -0
- package/build/assets/{command-store-DFN_17p1.js → command-store-CE1weJy8.js} +1 -1
- package/build/assets/{condenser-settings-wnEKhBof.js → condenser-settings-DCTulgLO.js} +1 -1
- package/build/assets/{confirmation-modal-Dau3w_sa.js → confirmation-modal-B5Ca6qFE.js} +1 -1
- package/build/assets/context-menu-list-item-7tAcm2c3.js +1 -0
- package/build/assets/conversation-BKhikfYl.js +1 -0
- package/build/assets/conversation-DTn8jN8L.js +19 -0
- package/build/assets/conversation-panel-DfHR42mG.js +1 -0
- package/build/assets/conversation-service.api-B6CkzaKD.js +1 -0
- package/build/assets/conversation-state-store-D-w0uurj.js +1 -0
- package/build/assets/conversation-store-CC-isCnP.js +1 -0
- package/build/assets/{conversation-tab-empty-state-DyssnnWa.js → conversation-tab-empty-state-CStQLPVW.js} +1 -1
- package/build/assets/conversation-websocket-context-DShEuLjh.js +3 -0
- package/build/assets/{copy-DYgmUdIw.js → copy-Chg-sFu3.js} +1 -1
- package/build/assets/{custom-toast-handlers-C-SZFmto.js → custom-toast-handlers-ufGJ6_Rc.js} +1 -1
- package/build/assets/declaration-CR6HMp29.js +1 -0
- package/build/assets/{device-verify-DqDlphsG.js → device-verify-C6mj28zv.js} +1 -1
- package/build/assets/dist-DNeWJ2bh.js +1 -0
- package/build/assets/dropdown-classes-BsVmxlNG.js +1 -0
- package/build/assets/edit-automation-modal-DamwL0s0.js +1 -0
- package/build/assets/ellipsis-button-Vh5MvRZa.js +1 -0
- package/build/assets/entry.client-Cn71WM8q.js +2 -0
- package/build/assets/enum-filter-dropdown-5JeF2RLb.js +1 -0
- package/build/assets/{environment-switch-overlay-XL8yCGP6.js → environment-switch-overlay-Tf_BIfeR.js} +1 -1
- package/build/assets/extensions-hub-CUEmfvGy.js +1 -0
- package/build/assets/{extensions-navigation-BYR8Giqq.js → extensions-navigation-VQ-3umJ7.js} +1 -1
- package/build/assets/file-BTY6Gyy9.js +1 -0
- package/build/assets/files-tab-C47fQEeL.js +1 -0
- package/build/assets/files-tab-store-m0ARqX_E.js +1 -0
- package/build/assets/{folder-ZZJVGgd7.js → folder-D1T2W1cj.js} +1 -1
- package/build/assets/git-control-bar-branch-button-BT0aWH-o.js +27 -0
- package/build/assets/git-provider-icon-Pi-Cxpgv.js +1 -0
- package/build/assets/globe-Bzj_0oXT.js +1 -0
- package/build/assets/home-C3k6sFvB.js +1 -0
- package/build/assets/{i18n-CTohRuoO.js → i18n-DET2iOyh.js} +1 -1
- package/build/assets/install-server-modal-6fuq-TU6.js +1 -0
- package/build/assets/launch-DGghLfGx.js +1 -0
- package/build/assets/{lesson-plan-dH5Bj0pN.js → lesson-plan-duSsqWVs.js} +1 -1
- package/build/assets/link-external-DGxVm4Ps.js +1 -0
- package/build/assets/{llm-client-DaH1TuyR.js → llm-client-BqyLKgUN.js} +1 -1
- package/build/assets/llm-settings-BKraGtOu.js +1 -0
- package/build/assets/llm-settings-DRQTgOF1.js +1 -0
- package/build/assets/{loading-spinner-BPtYORNK.js → loading-spinner-5GT9q1xy.js} +1 -1
- package/build/assets/manage-backends-modal-CRMwyU0t.js +1 -0
- package/build/assets/manage-workspaces-modal-BYmGD1W7.js +1 -0
- package/build/assets/manifest-99b06a11.js +1 -0
- package/build/assets/{markdown-renderer-DMzf2i4x.js → markdown-renderer-B3IAVfv4.js} +1 -1
- package/build/assets/mcp-CfDRAmPn.js +9 -0
- package/build/assets/messages-Ba1vaw6t.js +36 -0
- package/build/assets/{modal-backdrop-BAbgYsqB.js → modal-backdrop-RfNCrSpK.js} +1 -1
- package/build/assets/{modal-body-BI6Ru2Qr.js → modal-body-aoa2fx5W.js} +1 -1
- package/build/assets/modal-classes-6YqcqA6y.js +1 -0
- package/build/assets/{modal-close-button-t1Gh3qmL.js → modal-close-button-CtWOUMmw.js} +1 -1
- package/build/assets/{model-selector-SM9IUz-q.js → model-selector-DcztJSxT.js} +1 -1
- package/build/assets/{navigation-context-D0YWpT8d.js → navigation-context-BdKYH32C.js} +1 -1
- package/build/assets/{navigation-link-Cn7KP3c5.js → navigation-link-U4vY9i_C.js} +1 -1
- package/build/assets/{openhands-logo-CnrF6LKb.js → openhands-logo-CCo0wJZX.js} +1 -1
- package/build/assets/{option-service.api-KvY_mZMY.js → option-service.api-CGNANEcT.js} +1 -1
- package/build/assets/{organization-service.api-DzYTHTYC.js → organization-service.api-BeuMC9QL.js} +1 -1
- package/build/assets/{path-utils-C3bQf6lJ.js → path-utils-z12iCrQO.js} +1 -1
- package/build/assets/{plan-components-atxXCF0R.js → plan-components-CRDMQzsS.js} +1 -1
- package/build/assets/{planner-tab-BlrCpv-7.js → planner-tab-Dte6Vzza.js} +1 -1
- package/build/assets/{profiles-client-D6IkTJof.js → profiles-client-BrqNmaDV.js} +1 -1
- package/build/assets/{providers-Bx6EfrzZ.js → providers-eUyo6pgr.js} +1 -1
- package/build/assets/proxy-BqDMnUY-.js +1 -0
- package/build/assets/{query-client-config-B7u9asM0.js → query-client-config-CRnGSujB.js} +1 -1
- package/build/assets/{recommended-automations-launcher-CgV8FyPK.js → recommended-automations-launcher-D5ADbXao.js} +3 -3
- package/build/assets/{root-dNntxffj.js → root-BmhaEJJ8.js} +2 -2
- package/build/assets/root-Z2VHU4R3.css +1 -0
- package/build/assets/root-layout-CNggm0d8.js +2 -0
- package/build/assets/{sdk-section-page-DOIKvwSL.js → sdk-section-page-CRCRY3PG.js} +1 -1
- package/build/assets/{sdk-settings-schema-DsUf9wu1.js → sdk-settings-schema-CLmJ9sho.js} +1 -1
- package/build/assets/{search-27Owlc3A.js → search-SuJctqNJ.js} +1 -1
- package/build/assets/secrets-service-B9AFn9OE.js +1 -0
- package/build/assets/secrets-settings-0UrKMS60.js +1 -0
- package/build/assets/{server-client-DyAQ3NZ_.js → server-client-DYv_GHPl.js} +1 -1
- package/build/assets/{settings-BYkVX7vW.js → settings-6t6LGW04.js} +1 -1
- package/build/assets/{settings-dropdown-input-BJYvGdg-.js → settings-dropdown-input-BtoovFre.js} +1 -1
- package/build/assets/{settings-gear-C77PgE_O.js → settings-gear-Dd8K2_8B.js} +1 -1
- package/build/assets/settings-index-CR6Ou73o.js +1 -0
- package/build/assets/{settings-input-Bn7F5C75.js → settings-input-CehsXnb3.js} +1 -1
- package/build/assets/settings-list-classes-E3v_f6QG.js +1 -0
- package/build/assets/settings-modal-T_Yk1Zfo.js +1 -0
- package/build/assets/{settings-section-header-context-BgZe5YkE.js → settings-section-header-context-DewwJ0-F.js} +1 -1
- package/build/assets/settings-service.api-DwtyDeGh.js +1 -0
- package/build/assets/{settings-switch-BeIKrWms.js → settings-switch-BiBuS3xa.js} +1 -1
- package/build/assets/{settings-utils-B6Nl07io.js → settings-utils-DY04tWG1.js} +1 -1
- package/build/assets/{shared-conversation-AMyqXvpk.js → shared-conversation-BzccsVej.js} +1 -1
- package/build/assets/sidebar-mobile-menu-toggle-DGlRg6jG.js +1 -0
- package/build/assets/{sidebar-nav-link-BGjiJq-4.js → sidebar-nav-link-dgVb8Fpy.js} +1 -1
- package/build/assets/{sidebar-store-Uy3v0AOV.js → sidebar-store-DnQAJAE5.js} +1 -1
- package/build/assets/{skill-card-pill-row-DF1axQCG.js → skill-card-pill-row-BW9qvhoK.js} +1 -1
- package/build/assets/{skills-ChIKZPK4.js → skills-0GRKX5Xj.js} +1 -1
- package/build/assets/{skills-plugins-CcI_19lM.js → skills-plugins-DctDrZ8Y.js} +1 -1
- package/build/assets/skills-settings-rvxImDj_.js +2 -0
- package/build/assets/{styled-tooltip-CBzrri6o.js → styled-tooltip-hdfMXPQC.js} +1 -1
- package/build/assets/{switch-skeleton-DnC9wLp7.js → switch-skeleton-DSKqSx2A.js} +1 -1
- package/build/assets/{task-list-tab-DUJn1sgz.js → task-list-tab-DT6_zfUs.js} +1 -1
- package/build/assets/{terminal-RmuaSdhJ.js → terminal-CPYWdo4j.js} +1 -1
- package/build/assets/{terminal-DgQk1Ay6.js → terminal-KldRPIRT.js} +2 -2
- package/build/assets/{toggle-switch-Pvyp2RAN.js → toggle-switch-T2v6sJ6l.js} +1 -1
- package/build/assets/{typography-gpuWmrQO.js → typography-BDgnT7Yp.js} +1 -1
- package/build/assets/{u-check-circle-IUIfACQQ.js → u-check-circle-DOauqQKb.js} +1 -1
- package/build/assets/{u-check-circle-half-C1YxB6py.js → u-check-circle-half-steSK_JB.js} +1 -1
- package/build/assets/{u-circuit-BmVikJHu.js → u-circuit-x3ExjBbU.js} +1 -1
- package/build/assets/{u-edit-CFvXHqZk.js → u-edit-BbrptMCa.js} +1 -1
- package/build/assets/{use-active-conversation-BEFNwnFk.js → use-active-conversation-sPgfSkql.js} +1 -1
- package/build/assets/use-agent-settings-schema-B66kGIi_.js +1 -0
- package/build/assets/{use-agent-state-Bkrd1FZq.js → use-agent-state-Dp3pD1h3.js} +1 -1
- package/build/assets/{use-cloud-current-user-id-CvkXFnTT.js → use-cloud-current-user-id-ClKFPjFz.js} +1 -1
- package/build/assets/{use-config-Co1O8-Ey.js → use-config-C9pvb0Sm.js} +1 -1
- package/build/assets/{use-create-conversation-CEgXpkfH.js → use-create-conversation-B-lwTnfE.js} +1 -1
- package/build/assets/{use-event-store-BT_gV3ut.js → use-event-store-BomO7ywK.js} +1 -1
- package/build/assets/{use-get-secrets-DuhdIA59.js → use-get-secrets-oyC7PFRz.js} +1 -1
- package/build/assets/{use-handle-plan-click-Ckkm5eIY.js → use-handle-plan-click-DP6Rs-YP.js} +1 -1
- package/build/assets/use-is-authed-dw2026rR.js +1 -0
- package/build/assets/{use-is-creating-conversation-BZ5hB_Bg.js → use-is-creating-conversation-DX2qSlfL.js} +1 -1
- package/build/assets/{use-launch-skill-in-chat-fNN_xGZG.js → use-launch-skill-in-chat-sQNEOLGD.js} +1 -1
- package/build/assets/use-llm-profiles-Bh5JqZUZ.js +1 -0
- package/build/assets/use-runtime-is-ready-BakOUVU-.js +1 -0
- package/build/assets/{use-save-settings-VUrj_QNG.js → use-save-settings-uXXkqvD7.js} +1 -1
- package/build/assets/use-settings-DeO7nvpM.js +1 -0
- package/build/assets/{use-settings-nav-items-1ZvovKSr.js → use-settings-nav-items-BGMFn25b.js} +1 -1
- package/build/assets/{use-skills-DAMLFjKU.js → use-skills-DWIK3l3a.js} +1 -1
- package/build/assets/{use-task-list-CLJbuJgM.js → use-task-list-CsT10CBb.js} +1 -1
- package/build/assets/{use-unified-vscode-url-DdSRw-6P.js → use-unified-vscode-url-DXPtB317.js} +1 -1
- package/build/assets/use-user-conversation-DJen4YIP.js +1 -0
- package/build/assets/{useMutation-DqrumCWD.js → useMutation-GSSKKebK.js} +1 -1
- package/build/assets/{useTranslation-DCOdSSMl.js → useTranslation-B6voJV4y.js} +1 -1
- package/build/assets/utils-DCVfKFRt.js +1 -0
- package/build/assets/{vendor~browser-BNjNhjFU.js → vendor~browser-BrOJLj3y.js} +1 -1
- package/build/assets/vendor~conversation-panel~conversation-C9o-K1hW.js +1 -0
- package/build/assets/vendor~conversation-panel~conversation~index-RXYdJYxU.js +1 -0
- package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~jfc6hidu-VnmIZrq3.js → vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~jfc6hidu-DJS-rJdI.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DpAdkv8m.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-6ByzelMS.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-B92czPCF.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BED5W_c4.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-By5W2oHN.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CCbqAFiI.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BbFOrAjI.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CG96FCly.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-smY2r837.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-E4d6IEfI.js} +1 -1
- package/build/assets/{vendor~home~mcp~automations-list-Cs-TO3fK.js → vendor~home~mcp~automations-list-CZSK-lT2.js} +1 -1
- package/build/assets/{vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-Z3nsiNNq.js → vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-CjJdFLoM.js} +1 -1
- package/build/assets/{vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-DbfELDJu.js → vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-m8dOii0J.js} +2 -2
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation-DjAjXS5J.js → vendor~root-layout~home~conversation-panel~conversation-B5WNMnt4.js} +1 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~i4kjfqhl-CbAhtEMv.js +1 -0
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-6Rm8U_Sr.js +9 -0
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-BkQGKpye.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-tTR8C6m0.js} +1 -1
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~k776hupu-Bbs7UJ5U.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~k776hupu-BJbu9kpL.js} +2 -2
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~dp08i1qy-DTwbEEcX.js → vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~dp08i1qy-D8soyAAx.js} +1 -1
- package/build/assets/{vendor~root~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-s~f2l2lr17-CDXvdvb2.js → vendor~root~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-s~f2l2lr17-DYXOLEck.js} +1 -1
- package/build/assets/{verification-settings-CsbvQcYS.js → verification-settings-C_zHuDx9.js} +1 -1
- package/build/assets/{vscode-tab-DjNArCgY.js → vscode-tab-DH9x7xXS.js} +1 -1
- package/build/assets/{waiting-for-runtime-message-CntjExbU.js → waiting-for-runtime-message-CdK3btDZ.js} +1 -1
- package/build/assets/{x-mark-CrpjscNc.js → x-mark-BrkSPIiT.js} +1 -1
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +20 -2
- package/build/locales/ca/openhands.json +20 -2
- package/build/locales/de/openhands.json +20 -2
- package/build/locales/en/openhands.json +20 -2
- package/build/locales/es/openhands.json +20 -2
- package/build/locales/fr/openhands.json +20 -2
- package/build/locales/it/openhands.json +20 -2
- package/build/locales/ja/openhands.json +20 -2
- package/build/locales/ko-KR/openhands.json +20 -2
- package/build/locales/no/openhands.json +20 -2
- package/build/locales/pt/openhands.json +20 -2
- package/build/locales/tr/openhands.json +20 -2
- package/build/locales/uk/openhands.json +20 -2
- package/build/locales/zh-CN/openhands.json +20 -2
- package/build/locales/zh-TW/openhands.json +20 -2
- package/dist/api/acp-service/acp-service.api.d.ts +18 -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 +54 -55
- package/dist/api/agent-server-adapter.js.map +1 -1
- package/dist/api/agent-server-client-options.cjs +1 -1
- package/dist/api/agent-server-client-options.cjs.map +1 -1
- package/dist/api/agent-server-client-options.d.ts +4 -0
- package/dist/api/agent-server-client-options.js +18 -12
- package/dist/api/agent-server-client-options.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 +1 -1
- package/dist/api/agent-server-compatibility.js +30 -25
- 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 +15 -48
- package/dist/api/agent-server-config.js +25 -69
- package/dist/api/agent-server-config.js.map +1 -1
- package/dist/api/backend-registry/active-store.cjs +1 -1
- package/dist/api/backend-registry/active-store.cjs.map +1 -1
- package/dist/api/backend-registry/active-store.d.ts +11 -5
- package/dist/api/backend-registry/active-store.js +36 -27
- package/dist/api/backend-registry/active-store.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 +3 -9
- 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 +9 -16
- package/dist/api/backend-registry/default-backend.js +5 -4
- 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 +67 -34
- package/dist/api/backend-registry/storage.js.map +1 -1
- package/dist/api/cloud/conversation-service.api.cjs.map +1 -1
- package/dist/api/cloud/conversation-service.api.d.ts +8 -13
- package/dist/api/cloud/conversation-service.api.js.map +1 -1
- package/dist/api/cloud/organization-service.api.cjs.map +1 -1
- package/dist/api/cloud/organization-service.api.d.ts +1 -2
- 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 +6 -6
- package/dist/api/cloud/proxy.js +33 -24
- package/dist/api/cloud/proxy.js.map +1 -1
- package/dist/api/cloud/sandbox-service.api.cjs.map +1 -1
- package/dist/api/cloud/sandbox-service.api.d.ts +3 -3
- package/dist/api/cloud/sandbox-service.api.js.map +1 -1
- package/dist/api/cloud/secrets-service.api.cjs.map +1 -1
- package/dist/api/cloud/secrets-service.api.d.ts +3 -4
- package/dist/api/cloud/secrets-service.api.js.map +1 -1
- package/dist/api/cloud/settings-service.api.cjs +1 -1
- package/dist/api/cloud/settings-service.api.cjs.map +1 -1
- package/dist/api/cloud/settings-service.api.js +5 -1
- package/dist/api/cloud/settings-service.api.js.map +1 -1
- package/dist/api/cloud/skills-service.api.cjs.map +1 -1
- package/dist/api/cloud/skills-service.api.d.ts +5 -5
- package/dist/api/cloud/skills-service.api.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.js +115 -108
- package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
- 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 +3 -5
- package/dist/api/device-flow-client.js +55 -66
- package/dist/api/device-flow-client.js.map +1 -1
- package/dist/api/event-service/event-service.api.cjs +1 -1
- package/dist/api/event-service/event-service.api.cjs.map +1 -1
- package/dist/api/event-service/event-service.api.d.ts +3 -3
- package/dist/api/event-service/event-service.api.js +17 -17
- package/dist/api/event-service/event-service.api.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.js +11 -11
- package/dist/api/runtime-service/agent-server-runtime-service.cjs +1 -1
- package/dist/api/runtime-service/agent-server-runtime-service.js +6 -6
- package/dist/components/conversation-events/chat/event-content-helpers/get-action-content.cjs +2 -2
- package/dist/components/conversation-events/chat/event-content-helpers/get-action-content.js +10 -10
- package/dist/components/conversation-events/chat/event-content-helpers/get-observation-result.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/get-observation-result.d.ts +5 -5
- package/dist/components/conversation-events/chat/event-content-helpers/get-observation-result.js.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.cjs +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.js +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.js.map +1 -1
- package/dist/components/features/automations/automation-action-button-classes.d.ts +2 -2
- 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 +1 -0
- package/dist/components/features/backends/backend-form-modal.js +203 -140
- package/dist/components/features/backends/backend-form-modal.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 +117 -105
- package/dist/components/features/backends/backend-selector.js.map +1 -1
- package/dist/components/features/backends/backend-status-dot.cjs +1 -1
- package/dist/components/features/backends/backend-status-dot.cjs.map +1 -1
- package/dist/components/features/backends/backend-status-dot.d.ts +1 -1
- package/dist/components/features/backends/backend-status-dot.js +1 -1
- package/dist/components/features/backends/backend-status-dot.js.map +1 -1
- package/dist/components/features/backends/manage-backends-modal.cjs +1 -1
- package/dist/components/features/backends/manage-backends-modal.cjs.map +1 -1
- package/dist/components/features/backends/manage-backends-modal.js +81 -70
- package/dist/components/features/backends/manage-backends-modal.js.map +1 -1
- package/dist/components/features/chat/change-agent-button.cjs +1 -1
- package/dist/components/features/chat/change-agent-button.cjs.map +1 -1
- package/dist/components/features/chat/change-agent-button.js +59 -57
- package/dist/components/features/chat/change-agent-button.js.map +1 -1
- package/dist/components/features/chat/change-agent-context-menu.cjs +1 -1
- package/dist/components/features/chat/change-agent-context-menu.cjs.map +1 -1
- package/dist/components/features/chat/change-agent-context-menu.d.ts +3 -1
- package/dist/components/features/chat/change-agent-context-menu.js +30 -25
- package/dist/components/features/chat/change-agent-context-menu.js.map +1 -1
- package/dist/components/features/chat/chat-add-file-button.cjs +1 -1
- package/dist/components/features/chat/chat-add-file-button.cjs.map +1 -1
- package/dist/components/features/chat/chat-add-file-button.js +39 -38
- package/dist/components/features/chat/chat-add-file-button.js.map +1 -1
- package/dist/components/features/chat/chat-message.cjs +1 -1
- package/dist/components/features/chat/chat-message.cjs.map +1 -1
- package/dist/components/features/chat/chat-message.d.ts +2 -1
- package/dist/components/features/chat/chat-message.js +185 -57
- package/dist/components/features/chat/chat-message.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.js +113 -113
- package/dist/components/features/chat/components/chat-input-actions.js.map +1 -1
- package/dist/components/features/chat/components/chat-input-model.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-model.cjs.map +1 -1
- package/dist/components/features/chat/components/chat-input-model.js +52 -51
- package/dist/components/features/chat/components/chat-input-model.js.map +1 -1
- package/dist/components/features/chat/components/slash-command-menu.cjs +2 -2
- package/dist/components/features/chat/components/slash-command-menu.cjs.map +1 -1
- package/dist/components/features/chat/components/slash-command-menu.js +38 -34
- package/dist/components/features/chat/components/slash-command-menu.js.map +1 -1
- package/dist/components/features/chat/git-control-bar-pr-button.cjs +1 -1
- package/dist/components/features/chat/git-control-bar-pr-button.cjs.map +1 -1
- package/dist/components/features/chat/git-control-bar-pr-button.js +16 -15
- package/dist/components/features/chat/git-control-bar-pr-button.js.map +1 -1
- package/dist/components/features/chat/git-control-bar-pull-button.cjs +1 -1
- package/dist/components/features/chat/git-control-bar-pull-button.cjs.map +1 -1
- package/dist/components/features/chat/git-control-bar-pull-button.js +16 -15
- package/dist/components/features/chat/git-control-bar-pull-button.js.map +1 -1
- package/dist/components/features/chat/git-control-bar-push-button.cjs +1 -1
- package/dist/components/features/chat/git-control-bar-push-button.cjs.map +1 -1
- package/dist/components/features/chat/git-control-bar-push-button.js +16 -15
- package/dist/components/features/chat/git-control-bar-push-button.js.map +1 -1
- package/dist/components/features/chat/git-control-bar.cjs +1 -1
- package/dist/components/features/chat/git-control-bar.cjs.map +1 -1
- package/dist/components/features/chat/git-control-bar.js +63 -62
- package/dist/components/features/chat/git-control-bar.js.map +1 -1
- package/dist/components/features/chat/pending-user-messages.cjs +1 -1
- package/dist/components/features/chat/pending-user-messages.cjs.map +1 -1
- package/dist/components/features/chat/pending-user-messages.js +27 -23
- package/dist/components/features/chat/pending-user-messages.js.map +1 -1
- package/dist/components/features/chat/switch-profile-button.cjs +1 -1
- package/dist/components/features/chat/switch-profile-button.cjs.map +1 -1
- package/dist/components/features/chat/switch-profile-button.js +26 -25
- package/dist/components/features/chat/switch-profile-button.js.map +1 -1
- package/dist/components/features/chat/switch-profile-context-menu.cjs +1 -1
- package/dist/components/features/chat/switch-profile-context-menu.cjs.map +1 -1
- package/dist/components/features/chat/switch-profile-context-menu.js +77 -67
- package/dist/components/features/chat/switch-profile-context-menu.js.map +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.cjs +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.cjs.map +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.d.ts +2 -1
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.js +3 -2
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.js.map +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text.cjs +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text.cjs.map +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text.d.ts +2 -1
- package/dist/components/features/context-menu/context-menu-icon-text.js +20 -10
- package/dist/components/features/context-menu/context-menu-icon-text.js.map +1 -1
- package/dist/components/features/context-menu/context-menu-list-item.cjs +1 -1
- package/dist/components/features/context-menu/context-menu-list-item.cjs.map +1 -1
- package/dist/components/features/context-menu/context-menu-list-item.js +10 -9
- package/dist/components/features/context-menu/context-menu-list-item.js.map +1 -1
- package/dist/components/features/controls/agent-status.cjs +1 -1
- package/dist/components/features/controls/agent-status.js +12 -12
- package/dist/components/features/controls/git-tools-submenu.cjs +1 -1
- package/dist/components/features/controls/git-tools-submenu.cjs.map +1 -1
- package/dist/components/features/controls/git-tools-submenu.js +1 -1
- package/dist/components/features/controls/git-tools-submenu.js.map +1 -1
- package/dist/components/features/controls/macros-submenu.cjs +1 -1
- package/dist/components/features/controls/macros-submenu.cjs.map +1 -1
- package/dist/components/features/controls/macros-submenu.js +1 -1
- package/dist/components/features/controls/macros-submenu.js.map +1 -1
- package/dist/components/features/controls/server-status-context-menu-icon-text.cjs +1 -1
- package/dist/components/features/controls/server-status-context-menu-icon-text.cjs.map +1 -1
- package/dist/components/features/controls/server-status-context-menu-icon-text.js +14 -15
- package/dist/components/features/controls/server-status-context-menu-icon-text.js.map +1 -1
- package/dist/components/features/controls/server-status-context-menu.cjs +1 -1
- package/dist/components/features/controls/server-status-context-menu.js +4 -4
- package/dist/components/features/controls/server-status.cjs +1 -1
- package/dist/components/features/controls/server-status.js +7 -7
- package/dist/components/features/controls/tools-context-menu-icon-text.cjs +1 -1
- package/dist/components/features/controls/tools-context-menu-icon-text.cjs.map +1 -1
- package/dist/components/features/controls/tools-context-menu-icon-text.js +16 -16
- package/dist/components/features/controls/tools-context-menu-icon-text.js.map +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu-icon-text.cjs +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu-icon-text.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu-icon-text.js +11 -11
- package/dist/components/features/conversation/conversation-name-context-menu-icon-text.js.map +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.cjs +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.js +11 -11
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js +60 -47
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.js +86 -82
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js +4 -4
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.js +9 -9
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js +93 -93
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.js +177 -177
- package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
- package/dist/components/features/conversation-panel/ellipsis-button.cjs +1 -1
- package/dist/components/features/conversation-panel/ellipsis-button.cjs.map +1 -1
- package/dist/components/features/conversation-panel/ellipsis-button.js +13 -13
- package/dist/components/features/conversation-panel/ellipsis-button.js.map +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.js +57 -53
- package/dist/components/features/conversation-panel/local-new-conversation-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/new-conversation-dropdown-styles.cjs +1 -1
- package/dist/components/features/conversation-panel/new-conversation-dropdown-styles.cjs.map +1 -1
- package/dist/components/features/conversation-panel/new-conversation-dropdown-styles.js +3 -2
- package/dist/components/features/conversation-panel/new-conversation-dropdown-styles.js.map +1 -1
- package/dist/components/features/conversation-panel/start-task-card/start-task-status-badge.cjs +1 -1
- package/dist/components/features/conversation-panel/start-task-card/start-task-status-badge.cjs.map +1 -1
- package/dist/components/features/conversation-panel/start-task-card/start-task-status-badge.js +11 -8
- package/dist/components/features/conversation-panel/start-task-card/start-task-status-badge.js.map +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/tab-content.cjs.map +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/tab-content.d.ts +2 -5
- package/dist/components/features/conversation-panel/system-message-modal/tab-content.js.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.js +45 -42
- package/dist/components/features/files-tab/file-content-viewer.js.map +1 -1
- package/dist/components/features/home/llm-not-configured-banner.d.ts +11 -0
- package/dist/components/features/home/shared/dropdown-item.cjs +1 -1
- package/dist/components/features/home/shared/dropdown-item.cjs.map +1 -1
- package/dist/components/features/home/shared/dropdown-item.js +20 -16
- package/dist/components/features/home/shared/dropdown-item.js.map +1 -1
- package/dist/components/features/home/shared/generic-dropdown-menu.cjs +1 -1
- package/dist/components/features/home/shared/generic-dropdown-menu.cjs.map +1 -1
- package/dist/components/features/home/shared/generic-dropdown-menu.js +23 -22
- package/dist/components/features/home/shared/generic-dropdown-menu.js.map +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.cjs +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.cjs.map +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.js +103 -102
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.js.map +1 -1
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.cjs +1 -1
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.cjs.map +1 -1
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.js +68 -67
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.js.map +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.cjs +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.cjs.map +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.js +62 -60
- package/dist/components/features/mcp-page/custom-server-editor.js.map +1 -1
- package/dist/components/features/mcp-page/index.cjs +1 -1
- package/dist/components/features/mcp-page/index.d.ts +1 -0
- package/dist/components/features/mcp-page/index.js +1 -0
- package/dist/components/features/mcp-page/install-server-modal.cjs +1 -1
- package/dist/components/features/mcp-page/install-server-modal.cjs.map +1 -1
- package/dist/components/features/mcp-page/install-server-modal.js +141 -121
- package/dist/components/features/mcp-page/install-server-modal.js.map +1 -1
- package/dist/components/features/mcp-page/save-as-secret-toggle.cjs +2 -0
- package/dist/components/features/mcp-page/save-as-secret-toggle.cjs.map +1 -0
- package/dist/components/features/mcp-page/save-as-secret-toggle.d.ts +7 -0
- package/dist/components/features/mcp-page/save-as-secret-toggle.js +50 -0
- package/dist/components/features/mcp-page/save-as-secret-toggle.js.map +1 -0
- package/dist/components/features/onboarding/onboarding-modal.d.ts +2 -2
- package/dist/components/features/onboarding/steps/check-backend-step.d.ts +1 -1
- package/dist/components/features/onboarding/steps/choose-agent-step.d.ts +2 -1
- package/dist/components/features/onboarding/steps/setup-acp-secrets-step.d.ts +19 -10
- 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.d.ts +5 -0
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.js +2 -0
- package/dist/components/features/settings/llm-profiles/profile-actions-menu.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/profile-actions-menu.js +1 -0
- 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 +1 -1
- package/dist/components/features/skills/extensions-navigation.js.map +1 -1
- package/dist/components/shared/buttons/back-nav-button.cjs +2 -0
- package/dist/components/shared/buttons/back-nav-button.cjs.map +1 -0
- package/dist/components/shared/buttons/back-nav-button.d.ts +17 -0
- package/dist/components/shared/buttons/back-nav-button.js +33 -0
- package/dist/components/shared/buttons/back-nav-button.js.map +1 -0
- package/dist/components/shared/buttons/conversation-confirmation-buttons.cjs +1 -1
- package/dist/components/shared/buttons/conversation-confirmation-buttons.js +5 -5
- package/dist/components/shared/filters/enum-filter-dropdown.cjs +1 -1
- package/dist/components/shared/filters/enum-filter-dropdown.cjs.map +1 -1
- package/dist/components/shared/filters/enum-filter-dropdown.js +32 -31
- package/dist/components/shared/filters/enum-filter-dropdown.js.map +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.cjs +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.cjs.map +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.js +14 -13
- package/dist/components/shared/modals/confirmation-modals/base-modal.js.map +1 -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 +17 -16
- package/dist/components/shared/modals/settings/settings-modal.js.map +1 -1
- package/dist/components/shared/text-shimmer.cjs +2 -0
- package/dist/components/shared/text-shimmer.cjs.map +1 -0
- package/dist/components/shared/text-shimmer.d.ts +11 -0
- package/dist/components/shared/text-shimmer.js +43 -0
- package/dist/components/shared/text-shimmer.js.map +1 -0
- package/dist/constants/acp-providers.cjs +1 -1
- package/dist/constants/acp-providers.cjs.map +1 -1
- package/dist/constants/acp-providers.d.ts +16 -3
- package/dist/constants/acp-providers.js +0 -1
- package/dist/constants/acp-providers.js.map +1 -1
- package/dist/contexts/active-backend-context.cjs +1 -1
- package/dist/contexts/active-backend-context.cjs.map +1 -1
- package/dist/contexts/active-backend-context.js +32 -32
- package/dist/contexts/active-backend-context.js.map +1 -1
- package/dist/hooks/chat/use-chat-input-logic.cjs +1 -1
- package/dist/hooks/chat/use-chat-input-logic.cjs.map +1 -1
- package/dist/hooks/chat/use-chat-input-logic.js +13 -6
- package/dist/hooks/chat/use-chat-input-logic.js.map +1 -1
- package/dist/hooks/mutation/use-save-fields-as-secrets.cjs +2 -0
- package/dist/hooks/mutation/use-save-fields-as-secrets.cjs.map +1 -0
- package/dist/hooks/mutation/use-save-fields-as-secrets.d.ts +9 -0
- package/dist/hooks/mutation/use-save-fields-as-secrets.js +24 -0
- package/dist/hooks/mutation/use-save-fields-as-secrets.js.map +1 -0
- package/dist/hooks/mutation/use-unified-start-conversation.cjs +1 -1
- package/dist/hooks/mutation/use-unified-start-conversation.js +8 -8
- package/dist/hooks/mutation/use-unified-stop-conversation.cjs +1 -1
- package/dist/hooks/mutation/use-unified-stop-conversation.js +15 -15
- package/dist/hooks/query/use-acp-auth-status.d.ts +36 -0
- package/dist/hooks/query/use-agent-settings-schema.cjs +1 -1
- package/dist/hooks/query/use-agent-settings-schema.cjs.map +1 -1
- package/dist/hooks/query/use-agent-settings-schema.js +26 -16
- package/dist/hooks/query/use-agent-settings-schema.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 +2 -0
- package/dist/hooks/query/use-backends-health.js +31 -21
- package/dist/hooks/query/use-backends-health.js.map +1 -1
- 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 +15 -14
- package/dist/hooks/query/use-paginated-conversations.js.map +1 -1
- package/dist/hooks/query/use-settings.cjs +1 -1
- package/dist/hooks/query/use-settings.cjs.map +1 -1
- package/dist/hooks/query/use-settings.js +65 -52
- package/dist/hooks/query/use-settings.js.map +1 -1
- package/dist/hooks/query/use-user-conversation.cjs +1 -1
- package/dist/hooks/query/use-user-conversation.cjs.map +1 -1
- package/dist/hooks/query/use-user-conversation.js +20 -11
- package/dist/hooks/query/use-user-conversation.js.map +1 -1
- package/dist/hooks/use-agent-state.cjs +1 -1
- package/dist/hooks/use-agent-state.js +13 -13
- package/dist/hooks/use-conversation-name-context-menu.cjs +1 -1
- package/dist/hooks/use-conversation-name-context-menu.js +10 -10
- package/dist/hooks/use-conversation-name-context-menu.js.map +1 -1
- package/dist/hooks/use-llm-configured.d.ts +25 -0
- package/dist/hooks/use-runtime-is-ready.cjs +1 -1
- package/dist/hooks/use-runtime-is-ready.js +5 -5
- package/dist/i18n/declaration.cjs +1 -1
- package/dist/i18n/declaration.cjs.map +1 -1
- package/dist/i18n/declaration.d.ts +19 -1
- 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 +321 -15
- package/dist/i18n/translation.js.map +1 -1
- package/dist/icons/stop-circle.cjs +1 -1
- package/dist/icons/stop-circle.cjs.map +1 -1
- package/dist/icons/stop-circle.js +7 -10
- package/dist/icons/stop-circle.js.map +1 -1
- package/dist/locales/ar/openhands.json +20 -2
- package/dist/locales/ca/openhands.json +20 -2
- package/dist/locales/de/openhands.json +20 -2
- package/dist/locales/en/openhands.json +20 -2
- package/dist/locales/es/openhands.json +20 -2
- package/dist/locales/fr/openhands.json +20 -2
- package/dist/locales/it/openhands.json +20 -2
- package/dist/locales/ja/openhands.json +20 -2
- package/dist/locales/ko-KR/openhands.json +20 -2
- package/dist/locales/no/openhands.json +20 -2
- package/dist/locales/pt/openhands.json +20 -2
- package/dist/locales/tr/openhands.json +20 -2
- package/dist/locales/uk/openhands.json +20 -2
- package/dist/locales/zh-CN/openhands.json +20 -2
- package/dist/locales/zh-TW/openhands.json +20 -2
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.cjs +2 -0
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.cjs.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js +15 -0
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js.map +1 -0
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +1 -1
- package/dist/package.js.map +1 -1
- package/dist/routes/conversation.cjs +1 -1
- package/dist/routes/conversation.cjs.map +1 -1
- package/dist/routes/conversation.js +1 -1
- package/dist/routes/conversation.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 +55 -54
- package/dist/routes/llm-settings.js.map +1 -1
- package/dist/routes/secrets-settings.cjs +1 -1
- package/dist/routes/secrets-settings.cjs.map +1 -1
- package/dist/routes/secrets-settings.js +19 -27
- package/dist/routes/secrets-settings.js.map +1 -1
- package/dist/stores/conversation-store.cjs +1 -1
- package/dist/stores/conversation-store.cjs.map +1 -1
- package/dist/stores/conversation-store.d.ts +4 -0
- package/dist/stores/conversation-store.js +6 -0
- package/dist/stores/conversation-store.js.map +1 -1
- package/dist/types/agent-server/core/events/acp-tool-call-event.d.ts +6 -4
- package/dist/types/agent-server/core/events/system-event.d.ts +5 -0
- package/dist/types/automation.d.ts +15 -0
- package/dist/types/settings.d.ts +3 -1
- package/dist/ui/combobox-caret.cjs +1 -1
- package/dist/ui/combobox-caret.cjs.map +1 -1
- package/dist/ui/combobox-caret.d.ts +1 -1
- package/dist/ui/combobox-caret.js +9 -8
- package/dist/ui/combobox-caret.js.map +1 -1
- package/dist/ui/context-menu.cjs +1 -1
- package/dist/ui/context-menu.cjs.map +1 -1
- package/dist/ui/context-menu.js +9 -8
- package/dist/ui/context-menu.js.map +1 -1
- package/dist/ui/dropdown/dropdown-menu.cjs +1 -1
- package/dist/ui/dropdown/dropdown-menu.cjs.map +1 -1
- package/dist/ui/dropdown/dropdown-menu.js +21 -17
- package/dist/ui/dropdown/dropdown-menu.js.map +1 -1
- package/dist/ui/dropdown/dropdown.cjs +1 -1
- package/dist/ui/dropdown/dropdown.cjs.map +1 -1
- package/dist/ui/dropdown/dropdown.js +2 -2
- package/dist/ui/dropdown/dropdown.js.map +1 -1
- package/dist/utils/automation-schedule.d.ts +1 -0
- package/dist/utils/dropdown-classes.cjs +2 -0
- package/dist/utils/dropdown-classes.cjs.map +1 -0
- package/dist/utils/dropdown-classes.d.ts +32 -0
- package/dist/utils/dropdown-classes.js +8 -0
- package/dist/utils/dropdown-classes.js.map +1 -0
- package/dist/utils/form-control-classes.cjs +1 -1
- package/dist/utils/form-control-classes.cjs.map +1 -1
- package/dist/utils/form-control-classes.d.ts +18 -2
- package/dist/utils/form-control-classes.js +4 -3
- package/dist/utils/form-control-classes.js.map +1 -1
- package/dist/utils/git-control-bar-classes.cjs +2 -0
- package/dist/utils/git-control-bar-classes.cjs.map +1 -0
- package/dist/utils/git-control-bar-classes.d.ts +4 -0
- package/dist/utils/git-control-bar-classes.js +14 -0
- package/dist/utils/git-control-bar-classes.js.map +1 -0
- package/dist/utils/handle-event-for-ui.cjs.map +1 -1
- package/dist/utils/handle-event-for-ui.d.ts +6 -3
- package/dist/utils/handle-event-for-ui.js.map +1 -1
- package/dist/utils/mobile-top-bar-icon-button-classes.cjs +1 -1
- package/dist/utils/mobile-top-bar-icon-button-classes.cjs.map +1 -1
- package/dist/utils/mobile-top-bar-icon-button-classes.js +3 -3
- package/dist/utils/mobile-top-bar-icon-button-classes.js.map +1 -1
- package/dist/utils/modal-classes.cjs +2 -0
- package/dist/utils/modal-classes.cjs.map +1 -0
- package/dist/utils/modal-classes.d.ts +8 -0
- package/dist/utils/modal-classes.js +7 -0
- package/dist/utils/modal-classes.js.map +1 -0
- package/dist/utils/openhands-llm.cjs +2 -0
- package/dist/utils/openhands-llm.cjs.map +1 -0
- package/dist/utils/openhands-llm.d.ts +2 -0
- package/dist/utils/openhands-llm.js +9 -0
- package/dist/utils/openhands-llm.js.map +1 -0
- package/dist/utils/redact-custom-secrets.cjs +2 -0
- package/dist/utils/redact-custom-secrets.cjs.map +1 -0
- package/dist/utils/redact-custom-secrets.d.ts +6 -0
- package/dist/utils/redact-custom-secrets.js +10 -0
- package/dist/utils/redact-custom-secrets.js.map +1 -0
- package/dist/utils/status.cjs +1 -1
- package/dist/utils/status.cjs.map +1 -1
- package/dist/utils/status.d.ts +2 -1
- package/dist/utils/status.js +9 -8
- package/dist/utils/status.js.map +1 -1
- package/dist/utils/system-message-adapter.cjs +1 -1
- package/dist/utils/system-message-adapter.cjs.map +1 -1
- package/dist/utils/system-message-adapter.js +10 -7
- package/dist/utils/system-message-adapter.js.map +1 -1
- package/dist/utils/utils.cjs +1 -1
- package/dist/utils/utils.cjs.map +1 -1
- package/dist/utils/utils.d.ts +2 -1
- package/dist/utils/utils.js +21 -20
- package/dist/utils/utils.js.map +1 -1
- package/package.json +1 -1
- package/scripts/dev-safe.mjs +3 -1
- package/scripts/dev-static.mjs +2 -2
- package/scripts/dev-with-automation.mjs +283 -108
- package/scripts/static-build.mjs +20 -19
- package/scripts/static-server.mjs +65 -6
- package/build/assets/acp-providers-CbiRekh9.js +0 -1
- package/build/assets/active-backend-context-cCM1vYYZ.js +0 -1
- package/build/assets/add-backend-modal-DIUQzMPa.js +0 -1
- package/build/assets/agent-server-client-options-Bc5ZorQZ.js +0 -1
- package/build/assets/agent-server-compatibility-BlkUsrX2.js +0 -1
- package/build/assets/agent-server-conversation-service.api-C2V5SlHu.js +0 -5
- package/build/assets/api-key-entry-screen-B2gynaCp.js +0 -1
- package/build/assets/automation-detail-DJvbVSYK.js +0 -1
- package/build/assets/automations-list-6FDbI5dc.js +0 -1
- package/build/assets/backend-form-modal-Dnk33xA_.js +0 -1
- package/build/assets/base-modal-_dYTw1ri.js +0 -1
- package/build/assets/brand-button-Br7f0kZJ.js +0 -1
- package/build/assets/browser-store-Couc4S5D.js +0 -1
- package/build/assets/clock-BRjCgHTc.js +0 -1
- package/build/assets/combobox-caret-to1O8irE.js +0 -1
- package/build/assets/context-menu-list-item-CWNFpuiC.js +0 -1
- package/build/assets/conversation-DVrKU0oz.js +0 -19
- package/build/assets/conversation-Dlys-D5A.js +0 -1
- package/build/assets/conversation-panel-iF09WjZ4.js +0 -1
- package/build/assets/conversation-service.api-CCfztilW.js +0 -1
- package/build/assets/conversation-state-store-u5jepov0.js +0 -1
- package/build/assets/conversation-store-Z5iMCRpc.js +0 -1
- package/build/assets/conversation-websocket-context-DhJhqUna.js +0 -3
- package/build/assets/declaration-BNMqORFE.js +0 -1
- package/build/assets/dist-BxBP7tFD.js +0 -1
- package/build/assets/edit-automation-modal-BGzR3nfZ.js +0 -1
- package/build/assets/ellipsis-button-ZyLMPURn.js +0 -1
- package/build/assets/entry.client-1VMHpktY.js +0 -2
- package/build/assets/enum-filter-dropdown-CEgCdu4A.js +0 -1
- package/build/assets/extensions-hub-C651jsVh.js +0 -1
- package/build/assets/files-tab-R5z0lLdY.js +0 -1
- package/build/assets/files-tab-store-CDyVTXNT.js +0 -1
- package/build/assets/git-control-bar-branch-button-COdRAYHb.js +0 -27
- package/build/assets/git-provider-icon-BzLbc0yC.js +0 -1
- package/build/assets/home-e-egNUXZ.js +0 -1
- package/build/assets/install-server-modal-DHlbgqVH.js +0 -1
- package/build/assets/launch-CshDse3e.js +0 -1
- package/build/assets/link-external-D2POYx4c.js +0 -1
- package/build/assets/llm-settings-Bql-vydt.js +0 -1
- package/build/assets/llm-settings-C_tal6Ds.js +0 -1
- package/build/assets/manage-backends-modal-l7RkKfwX.js +0 -1
- package/build/assets/manage-workspaces-modal-DhKF_8z3.js +0 -1
- package/build/assets/manifest-3bf30d69.js +0 -1
- package/build/assets/mcp-ByeBfdfU.js +0 -9
- package/build/assets/messages-D0rWot7s.js +0 -36
- package/build/assets/proxy-CxydCnis.js +0 -1
- package/build/assets/root-DHeCXo9N.css +0 -1
- package/build/assets/root-layout-Czo9Ma6Q.js +0 -2
- package/build/assets/secrets-service-BsnKFc2x.js +0 -1
- package/build/assets/secrets-settings-Bz_UohPJ.js +0 -1
- package/build/assets/settings-client-C73C7IgV.js +0 -1
- package/build/assets/settings-index-Dz0BmdJD.js +0 -1
- package/build/assets/settings-list-classes-Bf80tWtc.js +0 -1
- package/build/assets/settings-modal-Brzgh5Yw.js +0 -1
- package/build/assets/settings-service.api-CZ3uWx4v.js +0 -1
- package/build/assets/sidebar-mobile-menu-toggle-Do_aA9Zm.js +0 -1
- package/build/assets/skills-settings-DlA5hlXw.js +0 -2
- package/build/assets/status-hp6M6E7E.js +0 -1
- package/build/assets/use-agent-settings-schema-33Un7UF2.js +0 -1
- package/build/assets/use-is-authed-BggE5wPj.js +0 -1
- package/build/assets/use-llm-profiles-DDOol3gK.js +0 -1
- package/build/assets/use-runtime-is-ready-B7EF4BKU.js +0 -1
- package/build/assets/use-settings-DQIZmIov.js +0 -1
- package/build/assets/use-user-conversation-C6hrMMtn.js +0 -1
- package/build/assets/utils-i18rdUj2.js +0 -1
- package/build/assets/vendor~conversation-panel~conversation-a9SyrrhV.js +0 -1
- package/build/assets/vendor~conversation-panel~conversation~index-C23ZXO4R.js +0 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~i4kjfqhl-BebWhFNT.js +0 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-DzIXV3Ui.js +0 -9
- /package/build/assets/{automation-IdgZq6ZK.js → automation-XDPAjiZi.js} +0 -0
- /package/build/assets/{color-themes-DSaoIL6A.js → color-themes-B9pm9c-R.js} +0 -0
- /package/build/assets/{common-DR1t-EeP.js → common-DqjLSBOt.js} +0 -0
- /package/build/assets/{conversation-local-storage-UYl-SX-r.js → conversation-local-storage-YmOVXxxW.js} +0 -0
- /package/build/assets/{dist-C6t0EXL7.js → dist-C3NfioQC.js} +0 -0
- /package/build/assets/{environment-switch-store-C4ulFJKp.js → environment-switch-store-CiurvTtK.js} +0 -0
- /package/build/assets/{health-store-BDC2rM-X.js → health-store-B5f0S2FY.js} +0 -0
- /package/build/assets/{map-provider-COBVzZYo.js → map-provider-BJ_8KZKU.js} +0 -0
- /package/build/assets/{middleware-BC9EwbB9.js → middleware-CfatjPYZ.js} +0 -0
- /package/build/assets/{objectWithoutPropertiesLoose-Du6eBn-V.js → objectWithoutPropertiesLoose-DSQKyRhw.js} +0 -0
- /package/build/assets/{react-Do0CT17Y.js → react-Dy05vyj5.js} +0 -0
- /package/build/assets/{sdk-settings-field-metadata-CBPmeqYa.js → sdk-settings-field-metadata-DQiaIBie.js} +0 -0
- /package/build/assets/{settings-D_H-qsRm.js → settings-DGY6n4J2.js} +0 -0
- /package/build/assets/{settings-like-page-layout-classes-I0BDBEoq.js → settings-like-page-layout-classes-D7YjdTd0.js} +0 -0
- /package/build/assets/{use-breakpoint-DbJ6FkQ-.js → use-breakpoint-DF_RiQ6s.js} +0 -0
- /package/build/assets/{use-click-outside-element-DffgWWoZ.js → use-click-outside-element-DhxCUyWl.js} +0 -0
- /package/build/assets/{v4-CNn21NXa.js → v4-khGvL7i2.js} +0 -0
- /package/build/assets/{vendor~browser-DDiZgqD3.js → vendor~browser-DisFGEp9.js} +0 -0
- /package/build/assets/{vendor~browser-tab-BgwV1mxF.js → vendor~browser-tab-BxhTtM9_.js} +0 -0
- /package/build/assets/{vendor~conversation-panel~conversation~alert-banner-DbvX3OcM.js → vendor~conversation-panel~conversation~alert-banner-w-I2sY6c.js} +0 -0
- /package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~zm51vy4j-iOsylxCS.js → vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~zm51vy4j-BClAMeFe.js} +0 -0
- /package/build/assets/{vendor~files-tab-BGKayPiK.js → vendor~files-tab-BtkpAiMX.js} +0 -0
- /package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BW6261Sb.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CyZ-3lDQ.js} +0 -0
- /package/build/assets/{vendor~home~mcp~automations-list-DoPfwaXj.js → vendor~home~mcp~automations-list-BgV86Sti.js} +0 -0
- /package/build/assets/{vendor~launch-vdeRTWFu.js → vendor~launch-BXgl67Re.js} +0 -0
- /package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~ninslayh-D9P8e98a.js → vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~ninslayh-CLlsvdNP.js} +0 -0
- /package/build/assets/{vendor~terminal-DUrOWGFE.js → vendor~terminal-DZaJIY8A.js} +0 -0
|
@@ -135,6 +135,8 @@ function parseArgs() {
|
|
|
135
135
|
staticDir: null,
|
|
136
136
|
skipBuild: false,
|
|
137
137
|
public: false,
|
|
138
|
+
frontendOnly: false,
|
|
139
|
+
backendOnly: false,
|
|
138
140
|
};
|
|
139
141
|
|
|
140
142
|
for (let i = 0; i < args.length; i++) {
|
|
@@ -168,6 +170,12 @@ function parseArgs() {
|
|
|
168
170
|
case "--public":
|
|
169
171
|
config.public = true;
|
|
170
172
|
break;
|
|
173
|
+
case "--frontend-only":
|
|
174
|
+
config.frontendOnly = true;
|
|
175
|
+
break;
|
|
176
|
+
case "--backend-only":
|
|
177
|
+
config.backendOnly = true;
|
|
178
|
+
break;
|
|
171
179
|
case "-h":
|
|
172
180
|
case "--help":
|
|
173
181
|
showHelp();
|
|
@@ -196,6 +204,8 @@ OPTIONS:
|
|
|
196
204
|
--static-dir <dir> Static build directory (default: build/)
|
|
197
205
|
--skip-build Reuse build/ when the launcher builds static assets
|
|
198
206
|
--dynamic Force Vite dev server when a wrapper defaults static
|
|
207
|
+
--frontend-only Start only the frontend behind ingress
|
|
208
|
+
--backend-only Start only agent-server + automation behind ingress
|
|
199
209
|
-v, --verbose Show detailed output
|
|
200
210
|
-h, --help Show this help
|
|
201
211
|
|
|
@@ -285,8 +295,23 @@ async function buildConfig(args, env = process.env) {
|
|
|
285
295
|
env.OH_AUTOMATION_REPO = args.automationRepo;
|
|
286
296
|
}
|
|
287
297
|
|
|
298
|
+
const frontendOnly = Boolean(args.frontendOnly);
|
|
299
|
+
const backendOnly = Boolean(args.backendOnly);
|
|
300
|
+
if (frontendOnly && backendOnly) {
|
|
301
|
+
throw new Error(
|
|
302
|
+
"--frontend-only and --backend-only cannot be used together",
|
|
303
|
+
);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
const launchFrontend = !backendOnly;
|
|
307
|
+
const launchAgentServer = !frontendOnly;
|
|
308
|
+
const launchAutomation = !frontendOnly;
|
|
288
309
|
const isPublic = args.public;
|
|
289
310
|
|
|
311
|
+
if (isPublic && frontendOnly) {
|
|
312
|
+
throw new Error("--public cannot be used with --frontend-only");
|
|
313
|
+
}
|
|
314
|
+
|
|
290
315
|
// In public mode, LOCAL_BACKEND_API_KEY is required — without it the
|
|
291
316
|
// auth screen has nothing to validate against.
|
|
292
317
|
if (isPublic && !env.LOCAL_BACKEND_API_KEY) {
|
|
@@ -308,14 +333,20 @@ async function buildConfig(args, env = process.env) {
|
|
|
308
333
|
parseInt(env.OH_CANVAS_SAFE_AUTOMATION_PORT, 10) || DEFAULT_AUTOMATION_PORT;
|
|
309
334
|
const preferredVitePort = parseInt(env.OH_CANVAS_SAFE_VITE_PORT, 10) || 3001;
|
|
310
335
|
|
|
311
|
-
// Fail fast if any preferred port is already in use.
|
|
336
|
+
// Fail fast if any preferred port for a service in this mode is already in use.
|
|
337
|
+
const requiredPorts = [{ name: "ingress", port: preferredIngressPort }];
|
|
338
|
+
if (launchAgentServer) {
|
|
339
|
+
requiredPorts.push({ name: "agent-server", port: preferredBackendPort });
|
|
340
|
+
}
|
|
341
|
+
if (launchAutomation) {
|
|
342
|
+
requiredPorts.push({ name: "automation", port: preferredAutomationPort });
|
|
343
|
+
}
|
|
344
|
+
if (launchFrontend) {
|
|
345
|
+
requiredPorts.push({ name: "frontend", port: preferredVitePort });
|
|
346
|
+
}
|
|
347
|
+
|
|
312
348
|
logStep("ports", "Checking ports...");
|
|
313
|
-
await assertPortsFree(
|
|
314
|
-
{ name: "ingress", port: preferredIngressPort },
|
|
315
|
-
{ name: "agent-server", port: preferredBackendPort },
|
|
316
|
-
{ name: "automation", port: preferredAutomationPort },
|
|
317
|
-
{ name: "vite", port: preferredVitePort },
|
|
318
|
-
]);
|
|
349
|
+
await assertPortsFree(requiredPorts);
|
|
319
350
|
|
|
320
351
|
const vscodePort = preferredBackendPort + 1000;
|
|
321
352
|
|
|
@@ -363,6 +394,13 @@ async function buildConfig(args, env = process.env) {
|
|
|
363
394
|
|
|
364
395
|
// Data directories (same as dev-safe.mjs)
|
|
365
396
|
stateDir,
|
|
397
|
+
// Only bake the host-side workspace path when this launcher also starts
|
|
398
|
+
// the agent-server that can read it. In frontend-only mode the backend may
|
|
399
|
+
// be a tunnel/remote service, so leave VITE_WORKING_DIR unset unless the
|
|
400
|
+
// user explicitly supplied a backend-relative value.
|
|
401
|
+
viteWorkingDir: launchAgentServer
|
|
402
|
+
? safeConfig.workingDir
|
|
403
|
+
: env.VITE_WORKING_DIR,
|
|
366
404
|
|
|
367
405
|
// Auth — single key for both backends
|
|
368
406
|
sessionApiKey,
|
|
@@ -370,6 +408,12 @@ async function buildConfig(args, env = process.env) {
|
|
|
370
408
|
// Public mode — the session key should NOT be baked into the frontend
|
|
371
409
|
isPublic,
|
|
372
410
|
|
|
411
|
+
frontendOnly,
|
|
412
|
+
backendOnly,
|
|
413
|
+
launchFrontend,
|
|
414
|
+
launchAgentServer,
|
|
415
|
+
launchAutomation,
|
|
416
|
+
|
|
373
417
|
verbose: args.verbose,
|
|
374
418
|
};
|
|
375
419
|
}
|
|
@@ -387,20 +431,28 @@ function commandExists(cmd) {
|
|
|
387
431
|
return result.status === 0;
|
|
388
432
|
}
|
|
389
433
|
|
|
390
|
-
function checkPrerequisites({
|
|
434
|
+
function checkPrerequisites({
|
|
435
|
+
checkUvx = true,
|
|
436
|
+
checkNpm = true,
|
|
437
|
+
checkFrontendDependencies = true,
|
|
438
|
+
} = {}) {
|
|
391
439
|
logStep("1/2", "Checking prerequisites...");
|
|
392
440
|
|
|
393
|
-
if (
|
|
394
|
-
|
|
395
|
-
|
|
441
|
+
if (checkUvx) {
|
|
442
|
+
if (!commandExists("uvx")) {
|
|
443
|
+
console.error(formatMissingUvxGuidance(projectRoot));
|
|
444
|
+
process.exit(1);
|
|
445
|
+
}
|
|
446
|
+
logSuccess("uvx found");
|
|
396
447
|
}
|
|
397
|
-
logSuccess("uvx found");
|
|
398
448
|
|
|
399
|
-
if (
|
|
400
|
-
|
|
401
|
-
|
|
449
|
+
if (checkNpm) {
|
|
450
|
+
if (!commandExists("npm")) {
|
|
451
|
+
logError("npm is required but not found");
|
|
452
|
+
process.exit(1);
|
|
453
|
+
}
|
|
454
|
+
logSuccess("npm found");
|
|
402
455
|
}
|
|
403
|
-
logSuccess("npm found");
|
|
404
456
|
|
|
405
457
|
if (checkFrontendDependencies) {
|
|
406
458
|
try {
|
|
@@ -416,12 +468,28 @@ function checkPrerequisites({ checkFrontendDependencies = true } = {}) {
|
|
|
416
468
|
function ensureDirectories(config) {
|
|
417
469
|
const dirs = [
|
|
418
470
|
config.stateDir,
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
join(config.stateDir, "
|
|
422
|
-
join(config.stateDir, "storage"),
|
|
471
|
+
// Both agent-server and automation use storage; create it unconditionally
|
|
472
|
+
// whenever either backend service runs (i.e. not frontend-only).
|
|
473
|
+
...(!config.frontendOnly ? [join(config.stateDir, "storage")] : []),
|
|
423
474
|
];
|
|
424
475
|
|
|
476
|
+
if (config.launchAgentServer) {
|
|
477
|
+
dirs.push(
|
|
478
|
+
join(config.stateDir, "dev_conversations"),
|
|
479
|
+
join(config.stateDir, "workspaces"),
|
|
480
|
+
join(config.stateDir, "bash_events"),
|
|
481
|
+
);
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
if (config.launchAutomation) {
|
|
485
|
+
dirs.push(
|
|
486
|
+
// Automation DB directory — matches docker/entrypoint.sh mkdir -p behaviour.
|
|
487
|
+
dirname(
|
|
488
|
+
join(dirname(config.stateDir), SHARED_DEFAULTS.paths.automationDb),
|
|
489
|
+
),
|
|
490
|
+
);
|
|
491
|
+
}
|
|
492
|
+
|
|
425
493
|
for (const dir of dirs) {
|
|
426
494
|
mkdirSync(dir, { recursive: true });
|
|
427
495
|
}
|
|
@@ -519,6 +587,82 @@ async function waitForService(name, url, timeoutMs = 30000) {
|
|
|
519
587
|
// Service Starters
|
|
520
588
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
521
589
|
|
|
590
|
+
const AUTOMATION_ROUTE_PREFIX = "/api/automation";
|
|
591
|
+
const AGENT_SERVER_ROUTE_PREFIXES = [
|
|
592
|
+
"/api",
|
|
593
|
+
"/sockets",
|
|
594
|
+
"/server_info",
|
|
595
|
+
"/health",
|
|
596
|
+
"/ready",
|
|
597
|
+
"/alive",
|
|
598
|
+
"/docs",
|
|
599
|
+
"/redoc",
|
|
600
|
+
"/openapi.json",
|
|
601
|
+
];
|
|
602
|
+
|
|
603
|
+
function getLocalServiceRoutes(config) {
|
|
604
|
+
const routes = [];
|
|
605
|
+
|
|
606
|
+
if (config.launchAutomation) {
|
|
607
|
+
routes.push([
|
|
608
|
+
AUTOMATION_ROUTE_PREFIX,
|
|
609
|
+
`http://localhost:${config.autoBackendPort}`,
|
|
610
|
+
]);
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
if (config.launchAgentServer) {
|
|
614
|
+
for (const prefix of AGENT_SERVER_ROUTE_PREFIXES) {
|
|
615
|
+
routes.push([prefix, `http://localhost:${config.agentServerPort}`]);
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
return routes;
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
function buildRouteArgs(routes) {
|
|
623
|
+
return routes.flatMap(([prefix, url]) => ["--route", `${prefix}=${url}`]);
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
/**
|
|
627
|
+
* Build --reject-prefix args for the static server.
|
|
628
|
+
* In frontend-only mode, API paths that have no backend should return 503
|
|
629
|
+
* instead of being SPA-fallbacked to index.html.
|
|
630
|
+
*/
|
|
631
|
+
function getRejectPrefixes(config) {
|
|
632
|
+
const prefixes = [];
|
|
633
|
+
if (!config.launchAutomation) {
|
|
634
|
+
prefixes.push(AUTOMATION_ROUTE_PREFIX);
|
|
635
|
+
}
|
|
636
|
+
if (!config.launchAgentServer) {
|
|
637
|
+
for (const prefix of AGENT_SERVER_ROUTE_PREFIXES) {
|
|
638
|
+
prefixes.push(prefix);
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
return prefixes;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
function buildRejectPrefixArgs(prefixes) {
|
|
645
|
+
return prefixes.flatMap((prefix) => ["--reject-prefix", prefix]);
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
function getFrontendBackend(config) {
|
|
649
|
+
return config.launchFrontend ? `http://localhost:${config.vitePort}` : null;
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
function buildViteBackendEnv(config, env = process.env) {
|
|
653
|
+
const backendBaseUrl = config.launchAgentServer
|
|
654
|
+
? `http://127.0.0.1:${config.ingressPort}`
|
|
655
|
+
: (env.VITE_BACKEND_BASE_URL ?? "http://127.0.0.1:8000");
|
|
656
|
+
const backendHost = config.launchAgentServer
|
|
657
|
+
? `127.0.0.1:${config.ingressPort}`
|
|
658
|
+
: (env.VITE_BACKEND_HOST ?? new URL(backendBaseUrl).host);
|
|
659
|
+
|
|
660
|
+
return {
|
|
661
|
+
VITE_BACKEND_HOST: backendHost,
|
|
662
|
+
VITE_BACKEND_BASE_URL: backendBaseUrl,
|
|
663
|
+
};
|
|
664
|
+
}
|
|
665
|
+
|
|
522
666
|
function buildAgentServerAutomationEnv(config) {
|
|
523
667
|
return {
|
|
524
668
|
// Make the session API key available to terminal commands spawned by the
|
|
@@ -627,7 +771,8 @@ function startAutomationBackend(config) {
|
|
|
627
771
|
}
|
|
628
772
|
: {}),
|
|
629
773
|
AUTOMATION_AGENT_SERVER_API_KEY: config.sessionApiKey,
|
|
630
|
-
|
|
774
|
+
// ~/.openhands/automation/automations.db — matches docker/entrypoint.sh.
|
|
775
|
+
AUTOMATION_DB_URL: `sqlite+aiosqlite:///${join(dirname(config.stateDir), SHARED_DEFAULTS.paths.automationDb)}`,
|
|
631
776
|
// The automation backend uses this as its publicly-reachable base
|
|
632
777
|
// URL: it's appended to callback URLs and injected into each
|
|
633
778
|
// sandbox as `AUTOMATION_API_URL` (consumed by setup.sh for
|
|
@@ -699,6 +844,7 @@ function startIngress(config) {
|
|
|
699
844
|
logService("ingress", `Starting on port ${config.ingressPort}...`, c.yellow);
|
|
700
845
|
|
|
701
846
|
const ingressScript = join(projectRoot, "scripts", "ingress.mjs");
|
|
847
|
+
const frontendBackend = getFrontendBackend(config);
|
|
702
848
|
|
|
703
849
|
spawnService(
|
|
704
850
|
"ingress",
|
|
@@ -707,28 +853,8 @@ function startIngress(config) {
|
|
|
707
853
|
ingressScript,
|
|
708
854
|
"--port",
|
|
709
855
|
config.ingressPort.toString(),
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
"--route",
|
|
713
|
-
`/api=http://localhost:${config.agentServerPort}`,
|
|
714
|
-
"--route",
|
|
715
|
-
`/sockets=http://localhost:${config.agentServerPort}`,
|
|
716
|
-
"--route",
|
|
717
|
-
`/server_info=http://localhost:${config.agentServerPort}`,
|
|
718
|
-
"--route",
|
|
719
|
-
`/health=http://localhost:${config.agentServerPort}`,
|
|
720
|
-
"--route",
|
|
721
|
-
`/ready=http://localhost:${config.agentServerPort}`,
|
|
722
|
-
"--route",
|
|
723
|
-
`/alive=http://localhost:${config.agentServerPort}`,
|
|
724
|
-
"--route",
|
|
725
|
-
`/docs=http://localhost:${config.agentServerPort}`,
|
|
726
|
-
"--route",
|
|
727
|
-
`/redoc=http://localhost:${config.agentServerPort}`,
|
|
728
|
-
"--route",
|
|
729
|
-
`/openapi.json=http://localhost:${config.agentServerPort}`,
|
|
730
|
-
"--default",
|
|
731
|
-
`http://localhost:${config.vitePort}`,
|
|
856
|
+
...buildRouteArgs(getLocalServiceRoutes(config)),
|
|
857
|
+
...(frontendBackend ? ["--default", frontendBackend] : []),
|
|
732
858
|
],
|
|
733
859
|
{
|
|
734
860
|
cwd: projectRoot,
|
|
@@ -749,12 +875,14 @@ export function buildAutomationRuntimeServicesInfo(config) {
|
|
|
749
875
|
agentHostAlias: config.agentHostAlias ?? "localhost",
|
|
750
876
|
agentServerPort: config.agentServerPort,
|
|
751
877
|
ingressPort: config.ingressPort,
|
|
752
|
-
frontendPort: config.vitePort,
|
|
878
|
+
frontendPort: config.launchFrontend ? config.vitePort : undefined,
|
|
753
879
|
// The same port hosts Vite in dynamic mode and a static-file server
|
|
754
880
|
// in static mode. The launcher records this on the config so the
|
|
755
881
|
// description shown to the agent matches reality.
|
|
756
882
|
frontendKind: config.frontendKind ?? "vite",
|
|
757
|
-
automation:
|
|
883
|
+
automation: config.launchAutomation
|
|
884
|
+
? { port: config.autoBackendPort }
|
|
885
|
+
: undefined,
|
|
758
886
|
});
|
|
759
887
|
}
|
|
760
888
|
|
|
@@ -762,27 +890,33 @@ function startVite(config) {
|
|
|
762
890
|
logService("vite", `Starting on port ${config.vitePort}...`, c.magenta);
|
|
763
891
|
|
|
764
892
|
const frontendCommand = buildNpmScriptCommand("dev:frontend");
|
|
765
|
-
const runtimeServicesInfo =
|
|
893
|
+
const runtimeServicesInfo = config.launchAgentServer
|
|
894
|
+
? buildAutomationRuntimeServicesInfo(config)
|
|
895
|
+
: null;
|
|
766
896
|
|
|
767
897
|
const viteEnv = {
|
|
768
|
-
//
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
VITE_WORKING_DIR:
|
|
772
|
-
config.viteWorkingDir ?? join(config.stateDir, "workspaces"),
|
|
898
|
+
// Full-stack mode points Vite at this launcher's ingress. Frontend-only
|
|
899
|
+
// mode uses the separately running backend ingress instead.
|
|
900
|
+
...buildViteBackendEnv(config),
|
|
773
901
|
VITE_FRONTEND_PORT: config.vitePort.toString(),
|
|
902
|
+
};
|
|
903
|
+
if (config.viteWorkingDir) {
|
|
904
|
+
viteEnv.VITE_WORKING_DIR = config.viteWorkingDir;
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
if (runtimeServicesInfo) {
|
|
774
908
|
// Inform the frontend (and downstream, the agent's system prompt) about
|
|
775
909
|
// which services are available in this dev stack.
|
|
776
|
-
VITE_RUNTIME_SERVICES_INFO
|
|
777
|
-
}
|
|
910
|
+
viteEnv.VITE_RUNTIME_SERVICES_INFO = JSON.stringify(runtimeServicesInfo);
|
|
911
|
+
}
|
|
778
912
|
|
|
779
913
|
// In local mode, bake the session key into the frontend so the user
|
|
780
914
|
// never has to paste it. In public mode, omit the key and set
|
|
781
915
|
// VITE_AUTH_REQUIRED so the frontend shows the API key entry screen
|
|
782
916
|
// immediately (no network round-trip needed).
|
|
783
|
-
if (config.isPublic) {
|
|
917
|
+
if (config.launchAgentServer && config.isPublic) {
|
|
784
918
|
viteEnv.VITE_AUTH_REQUIRED = "true";
|
|
785
|
-
} else {
|
|
919
|
+
} else if (config.launchAgentServer) {
|
|
786
920
|
viteEnv.VITE_SESSION_API_KEY = config.sessionApiKey;
|
|
787
921
|
}
|
|
788
922
|
|
|
@@ -891,12 +1025,32 @@ async function seedAutomationSecret(config, options = {}) {
|
|
|
891
1025
|
}
|
|
892
1026
|
|
|
893
1027
|
function printBanner(config) {
|
|
1028
|
+
const stackName = config.frontendOnly
|
|
1029
|
+
? "Agent Canvas Frontend Stack"
|
|
1030
|
+
: config.backendOnly
|
|
1031
|
+
? "Agent Canvas Backend Stack"
|
|
1032
|
+
: "Agent Canvas + Automation Stack";
|
|
1033
|
+
|
|
1034
|
+
// padEnd counts invisible ANSI escape bytes as visible characters, so we
|
|
1035
|
+
// compute the visible length separately and pad with spaces accordingly.
|
|
1036
|
+
const ansiRe = /\x1b\[[0-9;]*m/g;
|
|
1037
|
+
const ansiPadEnd = (str, targetVisible) => {
|
|
1038
|
+
const visible = str.replace(ansiRe, "").length;
|
|
1039
|
+
return str + " ".repeat(Math.max(0, targetVisible - visible));
|
|
1040
|
+
};
|
|
1041
|
+
// The box has 62-char inner width; each content line needs 63 visible chars
|
|
1042
|
+
// before the trailing border (1 leading ║ + 62 inner).
|
|
1043
|
+
const BOX_INNER = 63;
|
|
1044
|
+
|
|
894
1045
|
console.log("");
|
|
895
1046
|
console.log(
|
|
896
1047
|
`${c.green}${c.bold}╔══════════════════════════════════════════════════════════════╗${c.reset}`,
|
|
897
1048
|
);
|
|
898
1049
|
console.log(
|
|
899
|
-
|
|
1050
|
+
ansiPadEnd(
|
|
1051
|
+
`${c.green}${c.bold}║${c.reset} ${c.bold}${stackName}${c.reset}`,
|
|
1052
|
+
BOX_INNER,
|
|
1053
|
+
) + `${c.green}${c.bold}║${c.reset}`,
|
|
900
1054
|
);
|
|
901
1055
|
console.log(
|
|
902
1056
|
`${c.green}${c.bold}╠══════════════════════════════════════════════════════════════╣${c.reset}`,
|
|
@@ -905,15 +1059,27 @@ function printBanner(config) {
|
|
|
905
1059
|
`${c.green}${c.bold}║${c.reset} ${c.green}${c.bold}║${c.reset}`,
|
|
906
1060
|
);
|
|
907
1061
|
console.log(
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
);
|
|
912
|
-
console.log(
|
|
913
|
-
`${c.green}${c.bold}║${c.reset} API Docs: ${c.cyan}http://localhost:${config.ingressPort}/api/automation/docs${c.reset}`.padEnd(
|
|
914
|
-
75,
|
|
1062
|
+
ansiPadEnd(
|
|
1063
|
+
`${c.green}${c.bold}║${c.reset} Ingress: ${c.cyan}http://localhost:${config.ingressPort}/${c.reset}`,
|
|
1064
|
+
BOX_INNER,
|
|
915
1065
|
) + `${c.green}${c.bold}║${c.reset}`,
|
|
916
1066
|
);
|
|
1067
|
+
if (config.launchFrontend) {
|
|
1068
|
+
console.log(
|
|
1069
|
+
ansiPadEnd(
|
|
1070
|
+
`${c.green}${c.bold}║${c.reset} Main UI: ${c.cyan}http://localhost:${config.ingressPort}/${c.reset}`,
|
|
1071
|
+
BOX_INNER,
|
|
1072
|
+
) + `${c.green}${c.bold}║${c.reset}`,
|
|
1073
|
+
);
|
|
1074
|
+
}
|
|
1075
|
+
if (config.launchAutomation) {
|
|
1076
|
+
console.log(
|
|
1077
|
+
ansiPadEnd(
|
|
1078
|
+
`${c.green}${c.bold}║${c.reset} API Docs: ${c.cyan}http://localhost:${config.ingressPort}/api/automation/docs${c.reset}`,
|
|
1079
|
+
BOX_INNER,
|
|
1080
|
+
) + `${c.green}${c.bold}║${c.reset}`,
|
|
1081
|
+
);
|
|
1082
|
+
}
|
|
917
1083
|
console.log(
|
|
918
1084
|
`${c.green}${c.bold}║${c.reset} ${c.green}${c.bold}║${c.reset}`,
|
|
919
1085
|
);
|
|
@@ -971,7 +1137,7 @@ async function main(options = {}) {
|
|
|
971
1137
|
const staticDir =
|
|
972
1138
|
staticDirOverride ?? args.staticDir ?? join(projectRoot, "build");
|
|
973
1139
|
|
|
974
|
-
const modeLabel = useStaticMode ? "(Static)" : "";
|
|
1140
|
+
const modeLabel = useStaticMode && !args.backendOnly ? "(Static)" : "";
|
|
975
1141
|
const titleWithMode = modeLabel ? `${bannerTitle} ${modeLabel}` : bannerTitle;
|
|
976
1142
|
|
|
977
1143
|
console.log("");
|
|
@@ -980,15 +1146,22 @@ async function main(options = {}) {
|
|
|
980
1146
|
|
|
981
1147
|
// Setup phase
|
|
982
1148
|
checkPrerequisites({
|
|
1149
|
+
checkUvx: !args.frontendOnly,
|
|
1150
|
+
// Static-mode + backend-only has no frontend to build, so npm is not
|
|
1151
|
+
// required — unless the caller provides a custom buildStaticFrontend hook.
|
|
1152
|
+
checkNpm:
|
|
1153
|
+
(!useStaticMode && !args.backendOnly) ||
|
|
1154
|
+
typeof buildStaticFrontend === "function",
|
|
983
1155
|
checkFrontendDependencies:
|
|
984
|
-
!useStaticMode
|
|
1156
|
+
(!useStaticMode && !args.backendOnly) ||
|
|
1157
|
+
typeof buildStaticFrontend === "function",
|
|
985
1158
|
});
|
|
986
1159
|
|
|
987
1160
|
// Fail fast on an obviously bad OH_AGENT_SERVER_LOCAL_PATH so we don't waste
|
|
988
1161
|
// time allocating ports / generating keys / launching uvx with a path that
|
|
989
1162
|
// would only produce a cryptic build error. Mirrors dev-safe.mjs and
|
|
990
1163
|
// dev-extra-backend.mjs.
|
|
991
|
-
if (process.env.OH_AGENT_SERVER_LOCAL_PATH) {
|
|
1164
|
+
if (!args.frontendOnly && process.env.OH_AGENT_SERVER_LOCAL_PATH) {
|
|
992
1165
|
try {
|
|
993
1166
|
validateLocalAgentServerPath(process.env.OH_AGENT_SERVER_LOCAL_PATH);
|
|
994
1167
|
} catch (error) {
|
|
@@ -1020,12 +1193,16 @@ async function main(options = {}) {
|
|
|
1020
1193
|
extraPrereqs(config);
|
|
1021
1194
|
}
|
|
1022
1195
|
|
|
1023
|
-
if (
|
|
1196
|
+
if (
|
|
1197
|
+
config.launchFrontend &&
|
|
1198
|
+
useStaticMode &&
|
|
1199
|
+
typeof buildStaticFrontend === "function"
|
|
1200
|
+
) {
|
|
1024
1201
|
buildStaticFrontend(config, args);
|
|
1025
1202
|
}
|
|
1026
1203
|
|
|
1027
1204
|
// In static mode, verify build exists after any launcher-managed build.
|
|
1028
|
-
if (useStaticMode && !existsSync(staticDir)) {
|
|
1205
|
+
if (config.launchFrontend && useStaticMode && !existsSync(staticDir)) {
|
|
1029
1206
|
logError(`Static directory not found: ${staticDir}`);
|
|
1030
1207
|
logError(`Run 'npm run build' first to create the static files.`);
|
|
1031
1208
|
process.exit(1);
|
|
@@ -1034,23 +1211,27 @@ async function main(options = {}) {
|
|
|
1034
1211
|
// Start services phase
|
|
1035
1212
|
logStep("2/2", "Starting services...");
|
|
1036
1213
|
|
|
1037
|
-
|
|
1038
|
-
const agentServerStarter = startAgentServerOverride ?? startAgentServer;
|
|
1039
|
-
agentServerStarter(config);
|
|
1214
|
+
let agentServerReady = false;
|
|
1040
1215
|
|
|
1041
|
-
//
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1216
|
+
// 1. Start agent-server first (automation depends on it)
|
|
1217
|
+
if (config.launchAgentServer) {
|
|
1218
|
+
const agentServerStarter = startAgentServerOverride ?? startAgentServer;
|
|
1219
|
+
agentServerStarter(config);
|
|
1220
|
+
|
|
1221
|
+
// Wait for agent-server to be ready (60s timeout for slow systems)
|
|
1222
|
+
agentServerReady = await waitForService(
|
|
1223
|
+
"agent-server",
|
|
1224
|
+
`http://localhost:${config.agentServerPort}/server_info`,
|
|
1225
|
+
60000, // 60 second timeout for initial startup
|
|
1226
|
+
);
|
|
1227
|
+
}
|
|
1047
1228
|
|
|
1048
1229
|
// 2. Seed automation API key into agent-server secrets
|
|
1049
1230
|
// This makes the key available to agents during conversations
|
|
1050
1231
|
// Note: seedAutomationSecret has its own retry logic if server is still warming up
|
|
1051
|
-
if (agentServerReady) {
|
|
1232
|
+
if (config.launchAutomation && agentServerReady) {
|
|
1052
1233
|
await seedAutomationSecret(config);
|
|
1053
|
-
} else {
|
|
1234
|
+
} else if (config.launchAutomation) {
|
|
1054
1235
|
logService(
|
|
1055
1236
|
"secrets",
|
|
1056
1237
|
"Skipping secret seeding - agent-server not ready",
|
|
@@ -1059,19 +1240,23 @@ async function main(options = {}) {
|
|
|
1059
1240
|
}
|
|
1060
1241
|
|
|
1061
1242
|
// 3. Start automation backend
|
|
1062
|
-
|
|
1243
|
+
if (config.launchAutomation) {
|
|
1244
|
+
startAutomationBackend(config);
|
|
1245
|
+
}
|
|
1063
1246
|
|
|
1064
1247
|
// 4. Start frontend server (Vite dev server OR static server)
|
|
1065
|
-
if (
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1248
|
+
if (config.launchFrontend) {
|
|
1249
|
+
if (useStaticMode) {
|
|
1250
|
+
startStaticFrontend(config, staticDir);
|
|
1251
|
+
} else {
|
|
1252
|
+
startVite(config);
|
|
1253
|
+
}
|
|
1069
1254
|
}
|
|
1070
1255
|
|
|
1071
1256
|
// 5. Wait for services to be ready
|
|
1072
1257
|
await delay(2000);
|
|
1073
1258
|
|
|
1074
|
-
// 6. Start ingress proxy (routes traffic to
|
|
1259
|
+
// 6. Start ingress proxy (routes traffic only to running services)
|
|
1075
1260
|
startIngress(config);
|
|
1076
1261
|
|
|
1077
1262
|
// Wait for ingress to start
|
|
@@ -1099,31 +1284,17 @@ function startStaticFrontend(config, staticDir) {
|
|
|
1099
1284
|
// In local mode, inject the API key so the pre-built frontend can
|
|
1100
1285
|
// authenticate transparently. In public mode, pass --auth-required
|
|
1101
1286
|
// so the frontend shows the API key entry screen instead.
|
|
1102
|
-
...(!config.isPublic && config.sessionApiKey
|
|
1287
|
+
...(config.launchAgentServer && !config.isPublic && config.sessionApiKey
|
|
1103
1288
|
? ["--session-api-key", config.sessionApiKey]
|
|
1104
1289
|
: []),
|
|
1105
|
-
...(config.
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
"--route",
|
|
1114
|
-
`/server_info=http://localhost:${config.agentServerPort}`,
|
|
1115
|
-
"--route",
|
|
1116
|
-
`/health=http://localhost:${config.agentServerPort}`,
|
|
1117
|
-
"--route",
|
|
1118
|
-
`/ready=http://localhost:${config.agentServerPort}`,
|
|
1119
|
-
"--route",
|
|
1120
|
-
`/alive=http://localhost:${config.agentServerPort}`,
|
|
1121
|
-
"--route",
|
|
1122
|
-
`/docs=http://localhost:${config.agentServerPort}`,
|
|
1123
|
-
"--route",
|
|
1124
|
-
`/redoc=http://localhost:${config.agentServerPort}`,
|
|
1125
|
-
"--route",
|
|
1126
|
-
`/openapi.json=http://localhost:${config.agentServerPort}`,
|
|
1290
|
+
...(config.launchAgentServer && config.isPublic
|
|
1291
|
+
? ["--auth-required"]
|
|
1292
|
+
: []),
|
|
1293
|
+
// Proxy routes only to services that this launch mode started.
|
|
1294
|
+
...buildRouteArgs(getLocalServiceRoutes(config)),
|
|
1295
|
+
// Reject known API prefixes that have no backend — returns 503
|
|
1296
|
+
// instead of SPA-fallbacking to index.html.
|
|
1297
|
+
...buildRejectPrefixArgs(getRejectPrefixes(config)),
|
|
1127
1298
|
],
|
|
1128
1299
|
{
|
|
1129
1300
|
cwd: config.canvasPath,
|
|
@@ -1140,6 +1311,10 @@ export {
|
|
|
1140
1311
|
buildAgentServerAutomationEnv,
|
|
1141
1312
|
buildAutomationCommand,
|
|
1142
1313
|
buildConfig,
|
|
1314
|
+
buildRouteArgs,
|
|
1315
|
+
buildViteBackendEnv,
|
|
1316
|
+
getFrontendBackend,
|
|
1317
|
+
getLocalServiceRoutes,
|
|
1143
1318
|
main,
|
|
1144
1319
|
registerShutdownHook,
|
|
1145
1320
|
spawnService,
|
package/scripts/static-build.mjs
CHANGED
|
@@ -40,28 +40,29 @@ export function buildFrontend(config, args = {}) {
|
|
|
40
40
|
);
|
|
41
41
|
|
|
42
42
|
const cmd = buildNpmScriptCommand("build:app");
|
|
43
|
+
const buildEnv = {
|
|
44
|
+
...process.env,
|
|
45
|
+
// Bake the session API key — used by the frontend for both agent-server
|
|
46
|
+
// and automation auth via the `X-Session-API-Key` header.
|
|
47
|
+
VITE_SESSION_API_KEY: config.sessionApiKey,
|
|
48
|
+
// Bake a description of the runtime services in this dev stack so the
|
|
49
|
+
// frontend can populate the agent's <RUNTIME_SERVICES> system-prompt
|
|
50
|
+
// block when creating a conversation.
|
|
51
|
+
VITE_RUNTIME_SERVICES_INFO: JSON.stringify(
|
|
52
|
+
buildAutomationRuntimeServicesInfo(config),
|
|
53
|
+
),
|
|
54
|
+
// Intentionally do NOT set VITE_BACKEND_BASE_URL: leaving it unset makes
|
|
55
|
+
// the runtime fall back to window.location.origin, which keeps the build
|
|
56
|
+
// portable across localhost, LAN hosts, and tunnels such as ngrok.
|
|
57
|
+
};
|
|
58
|
+
if (config.viteWorkingDir) {
|
|
59
|
+
buildEnv.VITE_WORKING_DIR = config.viteWorkingDir;
|
|
60
|
+
}
|
|
61
|
+
|
|
43
62
|
const result = spawnSync(cmd.command, cmd.args, {
|
|
44
63
|
cwd: config.canvasPath,
|
|
45
64
|
stdio: "inherit",
|
|
46
|
-
env:
|
|
47
|
-
...process.env,
|
|
48
|
-
// Bake the same default workspace path that the dynamic launcher passes
|
|
49
|
-
// to Vite.
|
|
50
|
-
VITE_WORKING_DIR:
|
|
51
|
-
config.viteWorkingDir ?? join(config.stateDir, "workspaces"),
|
|
52
|
-
// Bake the session API key — used by the frontend for both agent-server
|
|
53
|
-
// and automation auth via the `X-Session-API-Key` header.
|
|
54
|
-
VITE_SESSION_API_KEY: config.sessionApiKey,
|
|
55
|
-
// Bake a description of the runtime services in this dev stack so the
|
|
56
|
-
// frontend can populate the agent's <RUNTIME_SERVICES> system-prompt
|
|
57
|
-
// block when creating a conversation.
|
|
58
|
-
VITE_RUNTIME_SERVICES_INFO: JSON.stringify(
|
|
59
|
-
buildAutomationRuntimeServicesInfo(config),
|
|
60
|
-
),
|
|
61
|
-
// Intentionally do NOT set VITE_BACKEND_BASE_URL: leaving it unset makes
|
|
62
|
-
// the runtime fall back to window.location.origin, which keeps the build
|
|
63
|
-
// portable across localhost, LAN hosts, and tunnels such as ngrok.
|
|
64
|
-
},
|
|
65
|
+
env: buildEnv,
|
|
65
66
|
});
|
|
66
67
|
|
|
67
68
|
if (result.status !== 0) {
|