@openhands/agent-canvas 1.16.0 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/README.windows.md +2 -2
- package/build/assets/{acp-providers-CX3Lh9gj.js → acp-providers-DcY_mKYa.js} +1 -1
- package/build/assets/active-backend-context-BnH4-L8h.js +2 -0
- package/build/assets/{agent-context-settings-DSZlXrLj.js → agent-context-settings-D3peZkjX.js} +1 -1
- package/build/assets/agent-profiles-service.api-DkeZaqIl.js +1 -0
- package/build/assets/agent-profiles-settings-7yMWYjGF.js +1 -0
- package/build/assets/agent-server-client-options-EHB23gyx.js +1 -0
- package/build/assets/agent-server-config-C_x8Otd9.js +1 -0
- package/build/assets/agent-server-conversation-service.api-jiCopc2E.js +88 -0
- package/build/assets/agent-settings-BF8hM6wb.js +2 -0
- package/build/assets/agent-settings-YPutBAeR.js +1 -0
- package/build/assets/alert-banner-eYyqvHL3.js +1 -0
- package/build/assets/{api-error-message-B-XdSk3b.js → api-error-message-BXo0lCI5.js} +1 -1
- package/build/assets/api-key-entry-screen-CCBvBD8u.js +1 -0
- package/build/assets/app-settings-BtYDs-Be.js +1 -0
- package/build/assets/automation-detail-BxXhb_m2.js +3 -0
- package/build/assets/{automation-export-D3a3of4G.js → automation-export-BJsfi7n2.js} +1 -1
- package/build/assets/automation-git-sync-B7o_Nbl-.js +1 -0
- package/build/assets/automation-setup-route-qaJ6lLCf.js +3 -0
- package/build/assets/{automation-templates-BRppNh99.js → automation-templates-Bb98r-kx.js} +1 -1
- package/build/assets/automations-list-DEPVNud3.js +1 -0
- package/build/assets/{back-nav-button-Cjl_hoxq.js → back-nav-button-B2yBiVMB.js} +1 -1
- package/build/assets/backend-form-modal-DxisQV_6.js +1 -0
- package/build/assets/backend-synced-settings-badge-DLEp6cq7.js +1 -0
- package/build/assets/badge-ehL-kgeO.js +1 -0
- package/build/assets/{base-modal-D_L0oEbG.js → base-modal-C1a0TsSx.js} +1 -1
- package/build/assets/bot-ByolqPEr.js +1 -0
- package/build/assets/{brand-button-BAfk4wGP.js → brand-button-CUMfjb99.js} +1 -1
- package/build/assets/browser-SE24Tk8g.js +46 -0
- package/build/assets/browser-tab-HjJxHA0V.js +1 -0
- package/build/assets/canvas-extension-page-BsUGBb1T.js +1 -0
- package/build/assets/canvas-extensions-C9Tm6s_E.js +1 -0
- package/build/assets/{canvas-extensions-runtime-2_x5Ezmi.js → canvas-extensions-runtime-B8kxM4rO.js} +1 -1
- package/build/assets/{chat-send-button-MUQqCZCS.js → chat-send-button-CGvc2wpE.js} +1 -1
- package/build/assets/check-Bo8s5Ylg.js +1 -0
- package/build/assets/chevron-down-Cr6Fn_wS.js +1 -0
- package/build/assets/chevron-right-CfdfRn-8.js +1 -0
- package/build/assets/circle-check-5pH3qCji.js +1 -0
- package/build/assets/circle-plus-check-toggle-BDX_ctNs.js +1 -0
- package/build/assets/{cloud-funnel-analytics-CztBCCPp.js → cloud-funnel-analytics-D5uJ_4JE.js} +1 -1
- package/build/assets/{cog-D-MPQW6G.js → cog-CAEugqtV.js} +1 -1
- package/build/assets/command-menu-CQxs4mtX.js +1 -0
- package/build/assets/commits-tab-D0xgjipP.js +1 -0
- package/build/assets/{condenser-settings-DmEOje-7.js → condenser-settings-D63NJRBT.js} +1 -1
- package/build/assets/confirmation-modal-78sd9Vny.js +1 -0
- package/build/assets/{context-menu-list-item-I86vKcmM.js → context-menu-list-item-Cm7-7Y-7.js} +1 -1
- package/build/assets/conversation-B_nweu5p.js +93 -0
- package/build/assets/conversation-edjzrv5w.js +1 -0
- package/build/assets/conversation-panel-edjzrv5w.js +1 -0
- package/build/assets/conversation-state-store-9D_3P7q4.js +1 -0
- package/build/assets/conversation-store-DC-JlJuq.js +6 -0
- package/build/assets/{conversation-tab-empty-state-FIbh_lc8.js → conversation-tab-empty-state-B3dpJXX0.js} +1 -1
- package/build/assets/copy-to-clipboard-button-B1ljgNxO.js +1 -0
- package/build/assets/device-verify-D5QRIS_x.js +1 -0
- package/build/assets/{dropdown-classes-Bc1djN0-.js → dropdown-classes-BGvOvW2_.js} +1 -1
- package/build/assets/edit-automation-modal-D_JWSmxT.js +1 -0
- package/build/assets/empty-state-FK_s1B60.js +1 -0
- package/build/assets/{entry.client-CqyPPjOq.js → entry.client-BMafTpjO.js} +2 -2
- package/build/assets/enum-filter-dropdown-UNaom12H.js +1 -0
- package/build/assets/environment-switch-overlay-COibRUA-.js +1 -0
- package/build/assets/error-state-Cf8LRuuY.js +1 -0
- package/build/assets/extensions-hub-C_6ahIua.js +1 -0
- package/build/assets/extensions-navigation-C5GfpzFe.js +1 -0
- package/build/assets/external-link-Bd7Tga-1.js +1 -0
- package/build/assets/files-tab-D5PPIWI1.js +1 -0
- package/build/assets/{form-control-classes-Bkh5FGrD.js → form-control-classes-Dbq-7YP_.js} +1 -1
- package/build/assets/format-model-name-Dfh9Udrx.js +1 -0
- package/build/assets/get-git-path-jU2zjqIB.js +1 -0
- package/build/assets/git-repo-dropdown-BoDDWXfX.js +1 -0
- package/build/assets/git-repo-dropdown-uxlFw2gn.js +1 -0
- package/build/assets/highlighted-source-view-C7pAXrT0.js +1 -0
- package/build/assets/home-BM5_Wz_R.js +1 -0
- package/build/assets/home-Ivfm7KC4.js +1 -0
- package/build/assets/home-automation-run-tooltip-B1N2uO9p.js +1 -0
- package/build/assets/home-store-DCbei3DX.js +1 -0
- package/build/assets/hooks-service-Dnmhqc0Z.js +1 -0
- package/build/assets/index-home-td9BN2T3.js +1 -0
- package/build/assets/info-BcajzHn1.js +1 -0
- package/build/assets/install-server-modal-B81I-5OE.js +1 -0
- package/build/assets/kebab-menu-item-content-SCJBwZnp.js +1 -0
- package/build/assets/{key-BmVyxs-2.js → key-O84CMFHb.js} +1 -1
- package/build/assets/launch-ZLxI4opd.js +1 -0
- package/build/assets/list-filter-B8PQk3RA.js +1 -0
- package/build/assets/{list-todo-apgLVjMw.js → list-todo-Caa8E1X_.js} +1 -1
- package/build/assets/llm-not-configured-banner-Dh_ajcM8.js +27 -0
- package/build/assets/llm-settings-CODhjQzy.js +1 -0
- package/build/assets/llm-settings-CZaXYgtw.js +1 -0
- package/build/assets/llm-subscription-service-CgIDc38n.js +1 -0
- package/build/assets/loader-circle-BxJgk73D.js +1 -0
- package/build/assets/{loading-spinner-BY9N3pOe.js → loading-spinner-BeLV0IXf.js} +1 -1
- package/build/assets/manage-backends-modal-cMXqCb-B.js +1 -0
- package/build/assets/manifest-bfeccb98.js +1 -0
- package/build/assets/manifest-subpage-layout-CVZgVKoY.js +1 -0
- package/build/assets/{map-provider-Cu3Zgumb.js → map-provider-iRs80q_6.js} +1 -1
- package/build/assets/markdown-renderer-DyFl9-mL.js +8 -0
- package/build/assets/mcp-CraxoXQv.js +1 -0
- package/build/assets/{mcp-marketplace-utils-AIBzzHTO.js → mcp-marketplace-utils-C7PYr293.js} +1 -1
- package/build/assets/mcp-page-CteH_K0N.js +9 -0
- package/build/assets/messages-Bk1xhbU2.js +41 -0
- package/build/assets/{modal-body-BxZjsju9.js → modal-body-C24WsdFb.js} +1 -1
- package/build/assets/{modal-classes-C8eycCwG.js → modal-classes-B0b9eiL8.js} +1 -1
- package/build/assets/modal-close-button-DfqfB2Nj.js +1 -0
- package/build/assets/{mouse-pointer-click-Co2uyaPA.js → mouse-pointer-click-BXlRN92t.js} +1 -1
- package/build/assets/onboarding-DXFBRqEy.js +1 -0
- package/build/assets/onboarding-modal-BT3Gx_sZ.js +1 -0
- package/build/assets/organization-service.api-B5CvmnYQ.js +1 -0
- package/build/assets/pencil-q-ihqDYv.js +1 -0
- package/build/assets/pin-BdroVQdN.js +1 -0
- package/build/assets/planner-tab-CstoOlAB.js +1 -0
- package/build/assets/plug-7ACOEbMs.js +1 -0
- package/build/assets/plugins-management-service-5rqVPEGN.js +1 -0
- package/build/assets/plus-C2e21TFC.js +1 -0
- package/build/assets/profiles-service.api-D1XKMgr0.js +1 -0
- package/build/assets/providers-XmZ9HM4Q.js +1 -0
- package/build/assets/proxy-XP6U1Dhv.js +1 -0
- package/build/assets/{puzzle-JM_QaRm0.js → puzzle-LJYnuxKe.js} +1 -1
- package/build/assets/react-BX7IV650.js +1 -0
- package/build/assets/recommended-automations-launcher-DEHRKIAg.js +1 -0
- package/build/assets/refresh-cw-BtdC3T8P.js +1 -0
- package/build/assets/root-CM6IZHlg.css +1 -0
- package/build/assets/root-DdFkodKW.js +2 -0
- package/build/assets/root-layout-DUquNZTU.js +2 -0
- package/build/assets/schema-field-Y3F8JvXd.js +1 -0
- package/build/assets/scroll-fade-state-Dt_fx2kf.js +1 -0
- package/build/assets/sdk-section-page-CNZTLwH9.js +1 -0
- package/build/assets/secret-form-9-BoGA40.js +1 -0
- package/build/assets/secrets-service-BOIsfD9j.js +1 -0
- package/build/assets/secrets-settings-CBJgFr42.js +1 -0
- package/build/assets/settings-D4hdToD4.js +1 -0
- package/build/assets/settings-dropdown-input-DBvsZ7-Q.js +1 -0
- package/build/assets/settings-index-DeQphyBK.js +1 -0
- package/build/assets/settings-input-dVuzapBA.js +1 -0
- package/build/assets/{settings-list-classes-BzeSZbF2.js → settings-list-classes-DhAPuXm6.js} +1 -1
- package/build/assets/settings-modal-tHiJ8iYV.js +1 -0
- package/build/assets/settings-nav-GAQjW1a-.js +16 -0
- package/build/assets/settings-service.api-C1vZH9Vh.js +1 -0
- package/build/assets/settings-switch-DDd1cQ8t.js +1 -0
- package/build/assets/{settings-utils-UYpEdPuD.js → settings-utils-BTaaRhLZ.js} +1 -1
- package/build/assets/shared-conversation-Cyg7m7ns.js +1 -0
- package/build/assets/shield-check-C3Rl0NF8.js +1 -0
- package/build/assets/{sidebar-layout-D6fS8-Gl.js → sidebar-layout-DH0E-5KW.js} +1 -1
- package/build/assets/sidebar-mobile-menu-toggle-CQ4iky__.js +1 -0
- package/build/assets/{sidebar-nav-link-DQQcMf1A.js → sidebar-nav-link-oLQiKUBu.js} +1 -1
- package/build/assets/{sidebar-onboarding-checklist-storage-BBkeI6Bp.js → sidebar-onboarding-checklist-storage-TfvNNnnr.js} +1 -1
- package/build/assets/sidebar-store-DAZVH-DR.js +1 -0
- package/build/assets/skill-card-pill-row-DfjIfj0K.js +1 -0
- package/build/assets/{skill-filter-w__3UCEE.js → skill-filter-DsNLmn76.js} +2 -2
- package/build/assets/{skill-icon-badge-RQkq8wvl.js → skill-icon-badge-0MK_68Nc.js} +1 -1
- package/build/assets/skill-scope-BE-H9TSZ.js +1 -0
- package/build/assets/skills-plugins-vzSdxSk_.js +1 -0
- package/build/assets/skills-settings-BiPOH9H9.js +1 -0
- package/build/assets/styled-tooltip-CejG0rqv.js +1 -0
- package/build/assets/task-list-tab-OkZSqnTp.js +1 -0
- package/build/assets/{terminal-CNElN42a.js → terminal-Dph60VFZ.js} +2 -2
- package/build/assets/toggle-switch-B2uXaAUS.js +1 -0
- package/build/assets/trash-2-Bb40zQzs.js +1 -0
- package/build/assets/trash-Ckh7yCaB.js +1 -0
- package/build/assets/triangle-alert-DEdu-b_L.js +1 -0
- package/build/assets/{typography-v1KN0tzi.js → typography-DgcLGdHk.js} +1 -1
- package/build/assets/usage-tab-MCmNRAnR.js +1 -0
- package/build/assets/use-acp-credential-form-ychoGqjC.js +1 -0
- package/build/assets/use-activate-agent-profile-8L8Xdghy.js +1 -0
- package/build/assets/use-agent-profiles-Bi8hSkze.js +1 -0
- package/build/assets/{use-automation-health-E6NZi9rb.js → use-automation-health-U99vvHxx.js} +1 -1
- package/build/assets/use-automation-permissions-Buus0R6h.js +1 -0
- package/build/assets/{use-automations-xijQKIl9.js → use-automations-Bq5hVuv0.js} +1 -1
- package/build/assets/{use-can-manage-org-profiles-CrJP5262.js → use-can-manage-org-profiles-MzIeEV8F.js} +1 -1
- package/build/assets/use-canvas-extensions-Ca9KoVEm.js +1 -0
- package/build/assets/{use-cloud-current-user-id-CDfAHpPX.js → use-cloud-current-user-id-B4ZLUZSa.js} +1 -1
- package/build/assets/use-config-l5tkDHyD.js +1 -0
- package/build/assets/use-create-conversation-i_PdFdIs.js +1 -0
- package/build/assets/use-create-secret-CjWq0J4O.js +1 -0
- package/build/assets/use-free-models-gCsJ5BV0.js +1 -0
- package/build/assets/{use-get-secrets-K3jmk-LH.js → use-get-secrets-CMTuWEp_.js} +1 -1
- package/build/assets/use-is-authed-A2Yinlt0.js +1 -0
- package/build/assets/{use-launch-skill-in-chat-BYjYihBP.js → use-launch-skill-in-chat-QbXDhiHr.js} +1 -1
- package/build/assets/use-llm-configured-Dl4zg8ht.js +1 -0
- package/build/assets/use-llm-profiles-SWsuFmFu.js +1 -0
- package/build/assets/use-manifest-capabilities-CdqYfUAC.js +1 -0
- package/build/assets/use-onboarding-completion-Xl63ZvzQ.js +1 -0
- package/build/assets/use-pinned-home-route-BXDIUaxQ.js +1 -0
- package/build/assets/use-plugins-marketplace-BIIaPiaB.js +1 -0
- package/build/assets/use-save-agent-profile-D-ZHHE94.js +1 -0
- package/build/assets/{use-save-settings-DYqkKv7T.js → use-save-settings-Dapkf4cC.js} +1 -1
- package/build/assets/use-settings-C2KKQKVC.js +1 -0
- package/build/assets/use-settings-nav-items-TOc0Rsfd.js +1 -0
- package/build/assets/use-tracking-j4uo9VEW.js +3 -0
- package/build/assets/{use-user-conversation-B9Gebw_g.js → use-user-conversation-5UFqMoO4.js} +1 -1
- package/build/assets/{useInfiniteQuery-C926xzY4.js → useInfiniteQuery-CtSRG7uW.js} +1 -1
- package/build/assets/{useMutation-B-qc391N.js → useMutation-Cszf8mKy.js} +1 -1
- package/build/assets/useQueries-pUohFMSP.js +1 -0
- package/build/assets/useQuery-DAAacS7O.js +1 -0
- package/build/assets/useTranslation-CCgUjPJF.js +1 -0
- package/build/assets/utils-BgLSZdyy.js +1 -0
- package/build/assets/{vendor~conversation-panel~conversation-C8Fn4XOf.js → vendor~conversation-panel~conversation-C22sJuWZ.js} +1 -1
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~b0x1wrp2-Z0lly3FE.js +2 -0
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-BXXGJNDU.js +185 -0
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-40UR63Gt.js +1 -0
- package/build/assets/{vendor~index-home~home~conversation-panel~conversation-hWywRBaR.js → vendor~index-home~home~conversation-panel~conversation-UTl7gUo9.js} +1 -1
- package/build/assets/vendor~root-layout-CcdIqs-C.js +1 -0
- package/build/assets/{vendor~root-layout~conversation-panel~conversation-BMbMgaGu.js → vendor~root-layout~conversation-panel~conversation-C3EBV3kp.js} +1 -1
- package/build/assets/vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-BCe0JJVy.js +1 -0
- package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation-j5MFqfSy.js → vendor~root-layout~index-home~home~conversation-panel~conversation-BGGbPcYh.js} +1 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-CxhwKuAd.js +1 -0
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~nj1hli3r-DP9wmsjo.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~inibp4qe-CnsDDzeE.js} +1 -1
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-CUmIwQCN.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-3eJ4ExtV.js} +12 -6
- package/build/assets/{verification-settings-gw_q6vkL.js → verification-settings-DdBpaVPz.js} +1 -1
- package/build/assets/{wrench-CUEI1krB.js → wrench-B8Wg_nbp.js} +1 -1
- package/build/assets/x-CX8lVGwm.js +1 -0
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +79 -22
- package/build/locales/ca/openhands.json +79 -22
- package/build/locales/de/openhands.json +79 -22
- package/build/locales/en/openhands.json +79 -22
- package/build/locales/es/openhands.json +79 -22
- package/build/locales/fr/openhands.json +79 -22
- package/build/locales/it/openhands.json +79 -22
- package/build/locales/ja/openhands.json +79 -22
- package/build/locales/ko-KR/openhands.json +79 -22
- package/build/locales/no/openhands.json +79 -22
- package/build/locales/pt/openhands.json +79 -22
- package/build/locales/tr/openhands.json +79 -22
- package/build/locales/uk/openhands.json +79 -22
- package/build/locales/zh-CN/openhands.json +79 -22
- package/build/locales/zh-TW/openhands.json +79 -22
- package/config/defaults.json +3 -3
- package/dist/api/agent-server-adapter.cjs +3 -3
- package/dist/api/agent-server-adapter.cjs.map +1 -1
- package/dist/api/agent-server-adapter.d.ts +72 -12
- package/dist/api/agent-server-adapter.js +234 -132
- package/dist/api/agent-server-adapter.js.map +1 -1
- package/dist/api/agent-server-config.cjs +1 -1
- package/dist/api/agent-server-config.cjs.map +1 -1
- package/dist/api/agent-server-config.d.ts +6 -0
- package/dist/api/agent-server-config.js +6 -3
- package/dist/api/agent-server-config.js.map +1 -1
- package/dist/api/automation-service/automation-service.api.cjs +1 -1
- package/dist/api/automation-service/automation-service.api.cjs.map +1 -1
- package/dist/api/automation-service/automation-service.api.d.ts +2 -2
- package/dist/api/automation-service/automation-service.api.js +7 -7
- package/dist/api/automation-service/automation-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 +9 -1
- package/dist/api/cloud/organization-service.api.js.map +1 -1
- package/dist/api/cloud/provider-connections-service.api.cjs +2 -0
- package/dist/api/cloud/provider-connections-service.api.cjs.map +1 -0
- package/dist/api/cloud/provider-connections-service.api.d.ts +5 -0
- package/dist/api/cloud/provider-connections-service.api.js +50 -0
- package/dist/api/cloud/provider-connections-service.api.js.map +1 -0
- package/dist/api/cloud/skills-service.api.cjs +1 -1
- package/dist/api/cloud/skills-service.api.cjs.map +1 -1
- package/dist/api/cloud/skills-service.api.d.ts +10 -0
- package/dist/api/cloud/skills-service.api.js +11 -1
- package/dist/api/cloud/skills-service.api.js.map +1 -1
- package/dist/api/config-service/config-service.api.cjs +1 -1
- package/dist/api/config-service/config-service.api.cjs.map +1 -1
- package/dist/api/config-service/config-service.api.js +6 -2
- package/dist/api/config-service/config-service.api.js.map +1 -1
- package/dist/api/config-service/config-service.types.d.ts +13 -0
- package/dist/api/conversation-metadata-store.cjs +1 -1
- package/dist/api/conversation-metadata-store.cjs.map +1 -1
- package/dist/api/conversation-metadata-store.d.ts +24 -0
- package/dist/api/conversation-metadata-store.js +10 -2
- package/dist/api/conversation-metadata-store.js.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.d.ts +20 -0
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +126 -77
- package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
- package/dist/api/hooks-service.cjs +2 -0
- package/dist/api/hooks-service.cjs.map +1 -0
- package/dist/api/hooks-service.d.ts +13 -0
- package/dist/api/hooks-service.js +20 -0
- package/dist/api/hooks-service.js.map +1 -0
- package/dist/api/provider-connections-service/provider-connections-service.api.cjs +1 -1
- package/dist/api/provider-connections-service/provider-connections-service.api.cjs.map +1 -1
- package/dist/api/provider-connections-service/provider-connections-service.api.js +25 -16
- package/dist/api/provider-connections-service/provider-connections-service.api.js.map +1 -1
- 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 +2 -0
- package/dist/api/settings-service/settings-service.api.js +18 -10
- package/dist/api/settings-service/settings-service.api.js.map +1 -1
- package/dist/api/skills-service.cjs +1 -1
- package/dist/api/skills-service.cjs.map +1 -1
- package/dist/api/skills-service.d.ts +7 -0
- package/dist/api/skills-service.js +11 -8
- package/dist/api/skills-service.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/critic-result-display.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/critic-result-display.js +5 -5
- package/dist/components/conversation-events/chat/event-message-components/finish-event-message.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/finish-event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/finish-event-message.js +2 -1
- package/dist/components/conversation-events/chat/event-message-components/finish-event-message.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.d.ts +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.js +28 -28
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/thought-event-message.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/thought-event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/thought-event-message.js +2 -1
- package/dist/components/conversation-events/chat/event-message-components/thought-event-message.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.d.ts +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js +37 -37
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message.cjs +2 -2
- package/dist/components/conversation-events/chat/event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message.js +79 -70
- package/dist/components/conversation-events/chat/event-message.js.map +1 -1
- package/dist/components/conversation-events/chat/messages.cjs +1 -1
- package/dist/components/conversation-events/chat/messages.cjs.map +1 -1
- package/dist/components/conversation-events/chat/messages.js +28 -27
- package/dist/components/conversation-events/chat/messages.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 +104 -97
- package/dist/components/features/automations/automation-card.js.map +1 -1
- package/dist/components/features/automations/automation-list-row.cjs +1 -1
- package/dist/components/features/automations/automation-list-row.cjs.map +1 -1
- package/dist/components/features/automations/automation-list-row.js +89 -77
- package/dist/components/features/automations/automation-list-row.js.map +1 -1
- package/dist/components/features/automations/build-automation-menu-items.cjs +1 -1
- package/dist/components/features/automations/build-automation-menu-items.cjs.map +1 -1
- package/dist/components/features/automations/build-automation-menu-items.d.ts +3 -1
- package/dist/components/features/automations/build-automation-menu-items.js +12 -11
- package/dist/components/features/automations/build-automation-menu-items.js.map +1 -1
- package/dist/components/features/automations/detail/configuration-section.d.ts +7 -1
- package/dist/components/features/automations/detail/detail-header.d.ts +10 -5
- package/dist/components/features/automations/detail/run-status-badge.cjs +1 -1
- package/dist/components/features/automations/detail/run-status-badge.cjs.map +1 -1
- package/dist/components/features/automations/detail/run-status-badge.d.ts +2 -2
- package/dist/components/features/automations/detail/run-status-badge.js +82 -53
- package/dist/components/features/automations/detail/run-status-badge.js.map +1 -1
- package/dist/components/features/automations/kebab-menu.cjs +1 -1
- package/dist/components/features/automations/kebab-menu.cjs.map +1 -1
- package/dist/components/features/automations/kebab-menu.js +9 -5
- package/dist/components/features/automations/kebab-menu.js.map +1 -1
- package/dist/components/features/automations/recommended-automations-launcher.cjs +1 -1
- package/dist/components/features/automations/recommended-automations-launcher.cjs.map +1 -1
- package/dist/components/features/automations/recommended-automations-launcher.js +12 -12
- package/dist/components/features/automations/recommended-automations-launcher.js.map +1 -1
- package/dist/components/features/automations/recommended-automations-section.cjs +1 -1
- package/dist/components/features/automations/recommended-automations-section.js +9 -9
- 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 +123 -112
- package/dist/components/features/backends/backend-selector.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 +29 -29
- 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.js +4 -4
- 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 +137 -137
- package/dist/components/features/chat/chat-interface.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 +88 -79
- package/dist/components/features/chat/chat-message.js.map +1 -1
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.cjs +1 -1
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.cjs.map +1 -1
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.js +62 -61
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.js.map +1 -1
- package/dist/components/features/chat/components/context-window-meter.cjs +1 -1
- package/dist/components/features/chat/components/context-window-meter.js +4 -4
- package/dist/components/features/chat/confirmation-mode-enabled.cjs +1 -1
- package/dist/components/features/chat/confirmation-mode-enabled.js +4 -4
- package/dist/components/features/chat/generic-event-message.cjs +1 -1
- package/dist/components/features/chat/generic-event-message.cjs.map +1 -1
- package/dist/components/features/chat/generic-event-message.d.ts +2 -1
- package/dist/components/features/chat/generic-event-message.js +41 -22
- package/dist/components/features/chat/generic-event-message.js.map +1 -1
- package/dist/components/features/chat/interactive-chat-box.cjs +1 -1
- package/dist/components/features/chat/interactive-chat-box.cjs.map +1 -1
- package/dist/components/features/chat/interactive-chat-box.js +20 -19
- package/dist/components/features/chat/interactive-chat-box.js.map +1 -1
- package/dist/components/features/chat/model-messages.cjs +1 -1
- package/dist/components/features/chat/model-messages.cjs.map +1 -1
- package/dist/components/features/chat/model-messages.js +27 -26
- package/dist/components/features/chat/model-messages.js.map +1 -1
- package/dist/components/features/conversation/conversation-overview-git-section.cjs +1 -1
- package/dist/components/features/conversation/conversation-overview-git-section.js +4 -4
- package/dist/components/features/conversation/conversation-overview-skills-panel.cjs +1 -1
- package/dist/components/features/conversation/conversation-overview-skills-panel.js +4 -4
- 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 +77 -78
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js +88 -88
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js.map +1 -1
- package/dist/components/features/conversation-panel/advanced-conversation-options-modal.cjs +2 -0
- package/dist/components/features/conversation-panel/advanced-conversation-options-modal.cjs.map +1 -0
- package/dist/components/features/conversation-panel/advanced-conversation-options-modal.d.ts +21 -0
- package/dist/components/features/conversation-panel/advanced-conversation-options-modal.js +239 -0
- package/dist/components/features/conversation-panel/advanced-conversation-options-modal.js.map +1 -0
- package/dist/components/features/conversation-panel/budget-display.cjs +1 -1
- package/dist/components/features/conversation-panel/budget-display.cjs.map +1 -1
- package/dist/components/features/conversation-panel/budget-display.d.ts +1 -2
- package/dist/components/features/conversation-panel/budget-display.js +12 -19
- package/dist/components/features/conversation-panel/budget-display.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-active-tag-filters.cjs +2 -0
- package/dist/components/features/conversation-panel/conversation-active-tag-filters.cjs.map +1 -0
- package/dist/components/features/conversation-panel/conversation-active-tag-filters.d.ts +28 -0
- package/dist/components/features/conversation-panel/conversation-active-tag-filters.js +69 -0
- package/dist/components/features/conversation-panel/conversation-active-tag-filters.js.map +1 -0
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js +19 -18
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.js +91 -80
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.js +45 -44
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.js +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.d.ts +7 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.js +87 -81
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.js +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.js +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-layouts-menu.cjs +2 -0
- package/dist/components/features/conversation-panel/conversation-layouts-menu.cjs.map +1 -0
- package/dist/components/features/conversation-panel/conversation-layouts-menu.d.ts +29 -0
- package/dist/components/features/conversation-panel/conversation-layouts-menu.js +177 -0
- package/dist/components/features/conversation-panel/conversation-layouts-menu.js.map +1 -0
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.d.ts +37 -0
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js +85 -45
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.js +296 -290
- package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
- package/dist/components/features/conversation-panel/edit-conversation-tags-modal.cjs +2 -0
- package/dist/components/features/conversation-panel/edit-conversation-tags-modal.cjs.map +1 -0
- package/dist/components/features/conversation-panel/edit-conversation-tags-modal.d.ts +22 -0
- package/dist/components/features/conversation-panel/edit-conversation-tags-modal.js +153 -0
- package/dist/components/features/conversation-panel/edit-conversation-tags-modal.js.map +1 -0
- package/dist/components/features/conversation-panel/hide-older-conversations-row.cjs +2 -0
- package/dist/components/features/conversation-panel/hide-older-conversations-row.cjs.map +1 -0
- package/dist/components/features/conversation-panel/hide-older-conversations-row.d.ts +6 -0
- package/dist/components/features/conversation-panel/hide-older-conversations-row.js +65 -0
- package/dist/components/features/conversation-panel/hide-older-conversations-row.js.map +1 -0
- package/dist/components/features/conversation-panel/menu-row.cjs +1 -1
- package/dist/components/features/conversation-panel/menu-row.cjs.map +1 -1
- package/dist/components/features/conversation-panel/menu-row.d.ts +11 -1
- package/dist/components/features/conversation-panel/menu-row.js +27 -16
- package/dist/components/features/conversation-panel/menu-row.js.map +1 -1
- package/dist/components/features/home/featured-automations/automation-health-indicator.cjs +1 -1
- package/dist/components/features/home/featured-automations/automation-health-indicator.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/automation-health-indicator.js +1 -1
- package/dist/components/features/home/featured-automations/automation-health-indicator.js.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.d.ts +4 -3
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js +22 -25
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.d.ts +1 -1
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js +15 -15
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-health.cjs +1 -1
- package/dist/components/features/home/featured-automations/automation-run-health.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/automation-run-health.d.ts +5 -3
- package/dist/components/features/home/featured-automations/automation-run-health.js +30 -23
- package/dist/components/features/home/featured-automations/automation-run-health.js.map +1 -1
- package/dist/components/features/home/featured-automations/build-home-automation-menu-items.d.ts +1 -2
- package/dist/components/features/home/featured-automations/build-pinned-automation-menu-items.d.ts +0 -1
- package/dist/components/features/home/featured-automations/home-automation-activity.d.ts +3 -2
- 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.d.ts +1 -1
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js +42 -42
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js.map +1 -1
- package/dist/components/features/images/image-lightbox.cjs +2 -0
- package/dist/components/features/images/image-lightbox.cjs.map +1 -0
- package/dist/components/features/images/image-lightbox.d.ts +11 -0
- package/dist/components/features/images/image-lightbox.js +37 -0
- package/dist/components/features/images/image-lightbox.js.map +1 -0
- package/dist/components/features/images/image-preview.cjs +1 -1
- package/dist/components/features/images/image-preview.cjs.map +1 -1
- package/dist/components/features/images/image-preview.d.ts +2 -1
- package/dist/components/features/images/image-preview.js +33 -13
- package/dist/components/features/images/image-preview.js.map +1 -1
- package/dist/components/features/manifest/manifest-form-field.d.ts +3 -1
- package/dist/components/features/manifest/manifest-review-step.d.ts +3 -1
- package/dist/components/features/onboarding/steps/setup-llm-step.d.ts +3 -4
- package/dist/components/features/settings/cloud-settings-link.cjs +1 -1
- package/dist/components/features/settings/cloud-settings-link.cjs.map +1 -1
- package/dist/components/features/settings/cloud-settings-link.d.ts +3 -1
- package/dist/components/features/settings/cloud-settings-link.js +22 -19
- package/dist/components/features/settings/cloud-settings-link.js.map +1 -1
- package/dist/components/features/settings/integrations-settings-link.cjs +1 -1
- package/dist/components/features/settings/integrations-settings-link.cjs.map +1 -1
- package/dist/components/features/settings/integrations-settings-link.d.ts +3 -1
- package/dist/components/features/settings/integrations-settings-link.js +20 -17
- package/dist/components/features/settings/integrations-settings-link.js.map +1 -1
- 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 +3 -2
- package/dist/components/features/settings/llm-profiles/profile-row.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/profile-row.js +1 -1
- package/dist/components/features/settings/llm-profiles/profiles-body.d.ts +2 -2
- package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs +1 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs.map +1 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.d.ts +8 -7
- package/dist/components/features/settings/sdk-settings/sdk-section-page.js +172 -142
- package/dist/components/features/settings/sdk-settings/sdk-section-page.js.map +1 -1
- package/dist/components/features/settings/secrets-settings/secret-form.cjs +1 -1
- package/dist/components/features/settings/secrets-settings/secret-form.cjs.map +1 -1
- package/dist/components/features/settings/secrets-settings/secret-form.js +38 -25
- package/dist/components/features/settings/secrets-settings/secret-form.js.map +1 -1
- package/dist/components/features/settings/settings-dropdown-input.cjs +1 -1
- package/dist/components/features/settings/settings-dropdown-input.js +6 -6
- 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.d.ts +4 -1
- package/dist/components/features/sidebar/sidebar-rail-body.js +157 -139
- 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 +28 -26
- package/dist/components/features/sidebar/sidebar.js.map +1 -1
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.cjs +1 -1
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.js +3 -3
- 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 +3 -3
- package/dist/components/features/skills/extensions-navigation.js.map +1 -1
- package/dist/components/providers/agent-server-ui-providers.cjs +1 -1
- package/dist/components/providers/agent-server-ui-providers.cjs.map +1 -1
- package/dist/components/providers/agent-server-ui-providers.js +33 -29
- package/dist/components/providers/agent-server-ui-providers.js.map +1 -1
- package/dist/components/shared/buttons/remove-button.cjs +1 -1
- package/dist/components/shared/buttons/remove-button.cjs.map +1 -1
- package/dist/components/shared/buttons/remove-button.d.ts +2 -1
- package/dist/components/shared/buttons/remove-button.js +2 -1
- package/dist/components/shared/buttons/remove-button.js.map +1 -1
- package/dist/components/shared/buttons/styled-tooltip.cjs +1 -1
- package/dist/components/shared/buttons/styled-tooltip.cjs.map +1 -1
- package/dist/components/shared/buttons/styled-tooltip.d.ts +2 -1
- package/dist/components/shared/buttons/styled-tooltip.js +2 -1
- package/dist/components/shared/buttons/styled-tooltip.js.map +1 -1
- 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.d.ts +5 -1
- package/dist/components/shared/filters/enum-filter-dropdown.js +14 -14
- package/dist/components/shared/filters/enum-filter-dropdown.js.map +1 -1
- package/dist/components/shared/free-models-note.cjs +2 -0
- package/dist/components/shared/free-models-note.cjs.map +1 -0
- package/dist/components/shared/free-models-note.d.ts +3 -0
- package/dist/components/shared/free-models-note.js +20 -0
- package/dist/components/shared/free-models-note.js.map +1 -0
- package/dist/components/shared/modals/confirmation-modal.cjs +1 -1
- package/dist/components/shared/modals/confirmation-modal.cjs.map +1 -1
- package/dist/components/shared/modals/confirmation-modal.d.ts +2 -1
- package/dist/components/shared/modals/confirmation-modal.js +8 -8
- package/dist/components/shared/modals/confirmation-modal.js.map +1 -1
- package/dist/components/shared/modals/settings/model-selector.cjs +1 -1
- package/dist/components/shared/modals/settings/model-selector.cjs.map +1 -1
- package/dist/components/shared/modals/settings/model-selector.js +102 -112
- package/dist/components/shared/modals/settings/model-selector.js.map +1 -1
- package/dist/config/defaults.cjs +1 -1
- package/dist/config/defaults.cjs.map +1 -1
- package/dist/config/defaults.js +3 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/constants/acp-providers.cjs.map +1 -1
- package/dist/constants/acp-providers.d.ts +12 -0
- package/dist/constants/acp-providers.js.map +1 -1
- package/dist/constants/settings-nav.d.ts +8 -0
- 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.d.ts +5 -0
- package/dist/contexts/conversation-websocket-context.js +194 -198
- package/dist/contexts/conversation-websocket-context.js.map +1 -1
- package/dist/contexts/websocket-provider-wrapper.cjs +1 -1
- package/dist/contexts/websocket-provider-wrapper.cjs.map +1 -1
- package/dist/contexts/websocket-provider-wrapper.js +31 -15
- package/dist/contexts/websocket-provider-wrapper.js.map +1 -1
- package/dist/hooks/chat/record-model-switch-message.cjs +1 -1
- package/dist/hooks/chat/record-model-switch-message.cjs.map +1 -1
- package/dist/hooks/chat/record-model-switch-message.d.ts +31 -0
- package/dist/hooks/chat/record-model-switch-message.js +25 -12
- package/dist/hooks/chat/record-model-switch-message.js.map +1 -1
- package/dist/hooks/chat/use-plan-mode-interceptor.cjs +2 -0
- package/dist/hooks/chat/use-plan-mode-interceptor.cjs.map +1 -0
- package/dist/hooks/chat/use-plan-mode-interceptor.d.ts +16 -0
- package/dist/hooks/chat/use-plan-mode-interceptor.js +43 -0
- package/dist/hooks/chat/use-plan-mode-interceptor.js.map +1 -0
- package/dist/hooks/chat/use-slash-command.cjs +1 -1
- package/dist/hooks/chat/use-slash-command.cjs.map +1 -1
- package/dist/hooks/chat/use-slash-command.js +63 -62
- package/dist/hooks/chat/use-slash-command.js.map +1 -1
- package/dist/hooks/mutation/use-create-conversation.cjs +1 -1
- package/dist/hooks/mutation/use-create-conversation.cjs.map +1 -1
- package/dist/hooks/mutation/use-create-conversation.js +5 -1
- package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
- package/dist/hooks/mutation/use-read-conversation-file.cjs +1 -1
- package/dist/hooks/mutation/use-read-conversation-file.cjs.map +1 -1
- package/dist/hooks/mutation/use-read-conversation-file.js +11 -4
- package/dist/hooks/mutation/use-read-conversation-file.js.map +1 -1
- package/dist/hooks/mutation/use-save-settings.cjs +1 -1
- package/dist/hooks/mutation/use-save-settings.js +3 -3
- package/dist/hooks/mutation/use-switch-llm-profile.cjs +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile.cjs.map +1 -1
- package/dist/hooks/mutation/use-switch-llm-profile.js +13 -25
- package/dist/hooks/mutation/use-switch-llm-profile.js.map +1 -1
- package/dist/hooks/mutation/use-update-conversation-tags.cjs +2 -0
- package/dist/hooks/mutation/use-update-conversation-tags.cjs.map +1 -0
- package/dist/hooks/mutation/use-update-conversation-tags.d.ts +8 -0
- package/dist/hooks/mutation/use-update-conversation-tags.js +45 -0
- package/dist/hooks/mutation/use-update-conversation-tags.js.map +1 -0
- package/dist/hooks/query/query-keys.cjs +1 -1
- package/dist/hooks/query/query-keys.cjs.map +1 -1
- package/dist/hooks/query/query-keys.d.ts +6 -0
- package/dist/hooks/query/query-keys.js +2 -2
- package/dist/hooks/query/query-keys.js.map +1 -1
- package/dist/hooks/query/use-automation-sdk-version.cjs +1 -1
- package/dist/hooks/query/use-automation-sdk-version.cjs.map +1 -1
- package/dist/hooks/query/use-automation-sdk-version.d.ts +0 -1
- package/dist/hooks/query/use-automation-sdk-version.js +30 -55
- package/dist/hooks/query/use-automation-sdk-version.js.map +1 -1
- package/dist/hooks/query/use-conversation-skills.cjs +1 -1
- package/dist/hooks/query/use-conversation-skills.cjs.map +1 -1
- package/dist/hooks/query/use-conversation-skills.d.ts +14 -5
- package/dist/hooks/query/use-conversation-skills.js +20 -4
- package/dist/hooks/query/use-conversation-skills.js.map +1 -1
- package/dist/hooks/query/use-free-models.cjs +2 -0
- package/dist/hooks/query/use-free-models.cjs.map +1 -0
- package/dist/hooks/query/use-free-models.d.ts +23 -0
- package/dist/hooks/query/use-free-models.js +67 -0
- package/dist/hooks/query/use-free-models.js.map +1 -0
- package/dist/hooks/query/use-local-git-info.cjs.map +1 -1
- package/dist/hooks/query/use-local-git-info.js.map +1 -1
- package/dist/hooks/query/use-provider-connections.cjs +1 -1
- package/dist/hooks/query/use-provider-connections.cjs.map +1 -1
- package/dist/hooks/query/use-provider-connections.d.ts +6 -3
- package/dist/hooks/query/use-provider-connections.js +7 -3
- package/dist/hooks/query/use-provider-connections.js.map +1 -1
- package/dist/hooks/query/use-provider-models.cjs +1 -1
- package/dist/hooks/query/use-provider-models.cjs.map +1 -1
- package/dist/hooks/query/use-provider-models.js +34 -25
- package/dist/hooks/query/use-provider-models.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 +31 -19
- package/dist/hooks/query/use-search-providers.js.map +1 -1
- package/dist/hooks/query/use-sub-conversations.cjs +1 -1
- package/dist/hooks/query/use-sub-conversations.cjs.map +1 -1
- package/dist/hooks/query/use-sub-conversations.js +16 -16
- package/dist/hooks/query/use-sub-conversations.js.map +1 -1
- package/dist/hooks/use-acp-model-context.cjs +1 -1
- package/dist/hooks/use-acp-model-context.js +3 -3
- package/dist/hooks/use-agent-state.cjs +1 -1
- package/dist/hooks/use-agent-state.cjs.map +1 -1
- package/dist/hooks/use-agent-state.d.ts +17 -1
- package/dist/hooks/use-agent-state.js +19 -9
- package/dist/hooks/use-agent-state.js.map +1 -1
- package/dist/hooks/use-automation-permissions.cjs +2 -0
- package/dist/hooks/use-automation-permissions.cjs.map +1 -0
- package/dist/hooks/use-automation-permissions.d.ts +43 -0
- package/dist/hooks/use-automation-permissions.js +52 -0
- package/dist/hooks/use-automation-permissions.js.map +1 -0
- package/dist/hooks/use-chat-input-model-state.cjs +1 -1
- package/dist/hooks/use-chat-input-model-state.js +3 -3
- package/dist/hooks/use-handle-plan-click.cjs +1 -1
- package/dist/hooks/use-handle-plan-click.cjs.map +1 -1
- package/dist/hooks/use-handle-plan-click.d.ts +3 -1
- package/dist/hooks/use-handle-plan-click.js +85 -26
- package/dist/hooks/use-handle-plan-click.js.map +1 -1
- package/dist/hooks/use-home-automation-actions.cjs +1 -1
- package/dist/hooks/use-home-automation-actions.cjs.map +1 -1
- package/dist/hooks/use-home-automation-actions.d.ts +1 -2
- package/dist/hooks/use-home-automation-actions.js +1 -1
- package/dist/hooks/use-home-automation-actions.js.map +1 -1
- package/dist/hooks/use-llm-configured.cjs +1 -1
- package/dist/hooks/use-llm-configured.js +3 -3
- package/dist/hooks/use-manifest-preflight.d.ts +1 -1
- package/dist/hooks/use-unified-websocket-status.cjs +1 -1
- package/dist/hooks/use-unified-websocket-status.cjs.map +1 -1
- package/dist/hooks/use-unified-websocket-status.d.ts +7 -0
- package/dist/hooks/use-unified-websocket-status.js +5 -1
- package/dist/hooks/use-unified-websocket-status.js.map +1 -1
- package/dist/i18n/declaration.cjs +1 -1
- package/dist/i18n/declaration.cjs.map +1 -1
- package/dist/i18n/declaration.d.ts +71 -14
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +2 -2
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +1281 -312
- package/dist/i18n/translation.js.map +1 -1
- package/dist/locales/ar/openhands.json +79 -22
- package/dist/locales/ca/openhands.json +79 -22
- package/dist/locales/de/openhands.json +79 -22
- package/dist/locales/en/openhands.json +79 -22
- package/dist/locales/es/openhands.json +79 -22
- package/dist/locales/fr/openhands.json +79 -22
- package/dist/locales/it/openhands.json +79 -22
- package/dist/locales/ja/openhands.json +79 -22
- package/dist/locales/ko-KR/openhands.json +79 -22
- package/dist/locales/no/openhands.json +79 -22
- package/dist/locales/pt/openhands.json +79 -22
- package/dist/locales/tr/openhands.json +79 -22
- package/dist/locales/uk/openhands.json +79 -22
- package/dist/locales/zh-CN/openhands.json +79 -22
- package/dist/locales/zh-TW/openhands.json +79 -22
- package/dist/manifests/automation-insights.cjs.map +1 -1
- package/dist/manifests/automation-insights.d.ts +10 -2
- package/dist/manifests/automation-insights.js.map +1 -1
- package/dist/manifests/automation-setup.cjs +1 -1
- package/dist/manifests/automation-setup.cjs.map +1 -1
- package/dist/manifests/automation-setup.d.ts +9 -16
- package/dist/manifests/automation-setup.js +17 -7
- package/dist/manifests/automation-setup.js.map +1 -1
- package/dist/manifests/manifest-actions.d.ts +1 -1
- package/dist/manifests/manifest-capabilities.d.ts +3 -1
- package/dist/manifests/manifest-local-validation.cjs +2 -0
- package/dist/manifests/manifest-local-validation.cjs.map +1 -0
- package/dist/manifests/manifest-local-validation.d.ts +15 -11
- package/dist/manifests/manifest-local-validation.js +8 -0
- package/dist/manifests/manifest-local-validation.js.map +1 -0
- package/dist/manifests/manifest-template.cjs +2 -0
- package/dist/manifests/manifest-template.cjs.map +1 -0
- package/dist/manifests/manifest-template.d.ts +4 -4
- package/dist/manifests/manifest-template.js +12 -0
- package/dist/manifests/manifest-template.js.map +1 -0
- package/dist/manifests/manifest-validation.cjs +1 -1
- package/dist/manifests/manifest-validation.cjs.map +1 -1
- package/dist/manifests/manifest-validation.js +106 -28
- package/dist/manifests/manifest-validation.js.map +1 -1
- package/dist/manifests/types.cjs.map +1 -1
- package/dist/manifests/types.d.ts +39 -4
- package/dist/manifests/types.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.cjs +8 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.js +221 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.js.map +1 -0
- 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 +1 -1
- 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 +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js.map +1 -1
- 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 +22 -20
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/interface.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/interface.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/interface.js +2 -1
- package/dist/node_modules/@openhands/extensions/automations/interface.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js +24 -5
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js.map +1 -1
- package/dist/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs +1 -1
- package/dist/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.js +21 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shrink.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shrink.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shrink.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shrink.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.js +43 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tags.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tags.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tags.js +22 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tags.js.map +1 -0
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +4 -4
- package/dist/package.js.map +1 -1
- package/dist/routes/agent-settings.d.ts +2 -0
- package/dist/routes/app-settings.cjs +1 -1
- package/dist/routes/app-settings.cjs.map +1 -1
- package/dist/routes/app-settings.js +53 -48
- package/dist/routes/app-settings.js.map +1 -1
- package/dist/routes/llm-settings.cjs +1 -1
- package/dist/routes/llm-settings.cjs.map +1 -1
- package/dist/routes/llm-settings.d.ts +3 -1
- package/dist/routes/llm-settings.js +120 -127
- package/dist/routes/llm-settings.js.map +1 -1
- package/dist/routes/planner-tab.cjs +1 -1
- package/dist/routes/planner-tab.cjs.map +1 -1
- package/dist/routes/planner-tab.js +44 -28
- package/dist/routes/planner-tab.js.map +1 -1
- package/dist/services/telemetry.cjs +1 -1
- package/dist/services/telemetry.cjs.map +1 -1
- package/dist/services/telemetry.d.ts +5 -0
- package/dist/services/telemetry.js +122 -115
- package/dist/services/telemetry.js.map +1 -1
- package/dist/stores/conversation-panel-preferences-store.cjs +1 -1
- package/dist/stores/conversation-panel-preferences-store.cjs.map +1 -1
- package/dist/stores/conversation-panel-preferences-store.d.ts +32 -5
- package/dist/stores/conversation-panel-preferences-store.js +29 -12
- package/dist/stores/conversation-panel-preferences-store.js.map +1 -1
- package/dist/stores/conversation-state-store.cjs +1 -1
- package/dist/stores/conversation-state-store.cjs.map +1 -1
- package/dist/stores/conversation-state-store.d.ts +9 -3
- package/dist/stores/conversation-state-store.js +6 -3
- package/dist/stores/conversation-state-store.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 +2 -0
- package/dist/stores/conversation-store.js +3 -0
- package/dist/stores/conversation-store.js.map +1 -1
- package/dist/stores/free-models-store.cjs +2 -0
- package/dist/stores/free-models-store.cjs.map +1 -0
- package/dist/stores/free-models-store.d.ts +30 -0
- package/dist/stores/free-models-store.js +22 -0
- package/dist/stores/free-models-store.js.map +1 -0
- package/dist/stores/model-store.cjs +1 -1
- package/dist/stores/model-store.cjs.map +1 -1
- package/dist/stores/model-store.d.ts +7 -0
- package/dist/stores/model-store.js +4 -0
- package/dist/stores/model-store.js.map +1 -1
- package/dist/types/automation.cjs.map +1 -1
- package/dist/types/automation.d.ts +46 -1
- package/dist/types/automation.js.map +1 -1
- package/dist/ui/context-menu.d.ts +1 -1
- package/dist/ui/toggle-switch.cjs +1 -1
- package/dist/ui/toggle-switch.cjs.map +1 -1
- package/dist/ui/toggle-switch.d.ts +4 -1
- package/dist/ui/toggle-switch.js +4 -3
- package/dist/ui/toggle-switch.js.map +1 -1
- package/dist/utils/automation-catalog.cjs +1 -1
- package/dist/utils/automation-catalog.cjs.map +1 -1
- package/dist/utils/automation-catalog.d.ts +12 -1
- package/dist/utils/automation-catalog.js +42 -12
- package/dist/utils/automation-catalog.js.map +1 -1
- package/dist/utils/automation-run-display.cjs +2 -0
- package/dist/utils/automation-run-display.cjs.map +1 -0
- package/dist/utils/automation-run-display.d.ts +20 -0
- package/dist/utils/automation-run-display.js +85 -0
- package/dist/utils/automation-run-display.js.map +1 -0
- package/dist/utils/automation-schedule.cjs +1 -1
- package/dist/utils/automation-schedule.cjs.map +1 -1
- package/dist/utils/automation-schedule.d.ts +16 -0
- package/dist/utils/automation-schedule.js +2 -0
- package/dist/utils/automation-schedule.js.map +1 -1
- package/dist/utils/constants.cjs +1 -1
- package/dist/utils/constants.cjs.map +1 -1
- package/dist/utils/constants.d.ts +4 -0
- package/dist/utils/constants.js +23 -3
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/format-event-timestamp.cjs +2 -0
- package/dist/utils/format-event-timestamp.cjs.map +1 -0
- package/dist/utils/format-event-timestamp.d.ts +1 -0
- package/dist/utils/format-event-timestamp.js +13 -0
- package/dist/utils/format-event-timestamp.js.map +1 -0
- 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 +27 -6
- package/dist/utils/format-model-name.js +14 -6
- package/dist/utils/format-model-name.js.map +1 -1
- package/dist/utils/git-diff-stats.cjs +2 -2
- package/dist/utils/git-diff-stats.cjs.map +1 -1
- package/dist/utils/git-diff-stats.d.ts +4 -0
- package/dist/utils/git-diff-stats.js +12 -2
- package/dist/utils/git-diff-stats.js.map +1 -1
- package/dist/utils/plan-file.cjs +4 -0
- package/dist/utils/plan-file.cjs.map +1 -0
- package/dist/utils/plan-file.d.ts +18 -0
- package/dist/utils/plan-file.js +58 -0
- package/dist/utils/plan-file.js.map +1 -0
- package/dist/utils/recommended-automation-rail.cjs +1 -1
- package/dist/utils/recommended-automation-rail.cjs.map +1 -1
- package/dist/utils/recommended-automation-rail.js +1 -0
- package/dist/utils/recommended-automation-rail.js.map +1 -1
- package/dist/utils/scroll-fade-state.cjs +1 -1
- package/dist/utils/scroll-fade-state.cjs.map +1 -1
- package/dist/utils/scroll-fade-state.d.ts +6 -0
- package/dist/utils/scroll-fade-state.js +8 -1
- package/dist/utils/scroll-fade-state.js.map +1 -1
- package/dist/utils/sdk-settings-schema.cjs +1 -1
- package/dist/utils/sdk-settings-schema.cjs.map +1 -1
- package/dist/utils/sdk-settings-schema.d.ts +1 -0
- package/dist/utils/sdk-settings-schema.js +25 -22
- package/dist/utils/sdk-settings-schema.js.map +1 -1
- package/dist/utils/utils.cjs +1 -1
- package/dist/utils/utils.cjs.map +1 -1
- package/dist/utils/utils.js +11 -11
- package/dist/utils/utils.js.map +1 -1
- package/package.json +4 -4
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/dev-safe.mjs +1 -1
- package/scripts/dev-with-automation.mjs +1 -1
- package/scripts/static-server.mjs +33 -1
- package/build/assets/active-backend-context-CrHTlgvN.js +0 -2
- package/build/assets/agent-profiles-settings-Dzgb7G9z.js +0 -1
- package/build/assets/agent-server-conversation-service.api-tnqNjbpE.js +0 -86
- package/build/assets/agent-settings-DLtsqaOs.js +0 -2
- package/build/assets/agent-settings-fFvR-XC2.js +0 -1
- package/build/assets/alert-banner-HP6mX-Vr.js +0 -1
- package/build/assets/api-key-entry-screen-qTzrmJcr.js +0 -1
- package/build/assets/app-settings-dbnneVaV.js +0 -1
- package/build/assets/automation-detail-BmwlCUAB.js +0 -3
- package/build/assets/automation-git-sync-CprN5DcU.js +0 -1
- package/build/assets/automation-setup-route-C40kXjMY.js +0 -1
- package/build/assets/automations-list-DuNcRawl.js +0 -1
- package/build/assets/backend-form-modal-lhGwzXFI.js +0 -1
- package/build/assets/backend-synced-settings-badge-DPkz30BE.js +0 -1
- package/build/assets/badge-BU3S0VtE.js +0 -1
- package/build/assets/bot-dMYHVfYM.js +0 -1
- package/build/assets/browser-DSAo0tz1.js +0 -46
- package/build/assets/browser-tab-C9vy56R5.js +0 -1
- package/build/assets/canvas-extension-page-dx1gFrfW.js +0 -1
- package/build/assets/canvas-extensions-8A-XhpgP.js +0 -1
- package/build/assets/check-CS0vmpQQ.js +0 -1
- package/build/assets/chevron-down-e1QBpjVy.js +0 -1
- package/build/assets/chevron-right-ZG4R5G4Q.js +0 -1
- package/build/assets/circle-check-DzWLNsbE.js +0 -1
- package/build/assets/circle-plus-check-toggle-BO_kFZt3.js +0 -1
- package/build/assets/command-menu--UIlGL72.js +0 -1
- package/build/assets/commits-tab-AnZwLvh-.js +0 -1
- package/build/assets/confirmation-modal-Dv1ktp8K.js +0 -1
- package/build/assets/conversation-BbGrAO4Z.js +0 -93
- package/build/assets/conversation-mYT6NAoj.js +0 -1
- package/build/assets/conversation-panel-mYT6NAoj.js +0 -1
- package/build/assets/conversation-state-store-B0ImPLHO.js +0 -1
- package/build/assets/conversation-store-Ca3ghXap.js +0 -6
- package/build/assets/copy-to-clipboard-button-Ca8iSkkA.js +0 -1
- package/build/assets/device-verify-Bhn2e_Ye.js +0 -1
- package/build/assets/edit-automation-modal-DadGbJ2u.js +0 -1
- package/build/assets/empty-state-BoGVDecT.js +0 -1
- package/build/assets/enum-filter-dropdown-Bgca129f.js +0 -1
- package/build/assets/environment-switch-overlay-BmBRT7gv.js +0 -1
- package/build/assets/error-state-Body8Ngd.js +0 -1
- package/build/assets/extensions-hub-CcDqq_vR.js +0 -1
- package/build/assets/extensions-navigation-Cr4yzYk4.js +0 -1
- package/build/assets/external-link-DKUlnCQV.js +0 -1
- package/build/assets/files-tab-D4o2VyE_.js +0 -1
- package/build/assets/format-model-name-CasAP3nd.js +0 -1
- package/build/assets/get-git-path-ChKDVHZp.js +0 -1
- package/build/assets/git-repo-dropdown-4ROKl2cB.js +0 -1
- package/build/assets/git-repo-dropdown-BkqzkMmM.js +0 -1
- package/build/assets/highlighted-source-view-BFRxGT_Q.js +0 -1
- package/build/assets/home-ChpSuepX.js +0 -1
- package/build/assets/home-DIsB440S.js +0 -1
- package/build/assets/home-automation-run-tooltip-BVNDWjAH.js +0 -1
- package/build/assets/home-store-CY9Ej0ux.js +0 -1
- package/build/assets/index-home-BdlrFIif.js +0 -1
- package/build/assets/info-B6RQawoW.js +0 -1
- package/build/assets/install-server-modal-Dpy89p4g.js +0 -1
- package/build/assets/kebab-menu-item-content-D8hSNGmm.js +0 -1
- package/build/assets/launch-IrTDEFCs.js +0 -1
- package/build/assets/list-filter-DsEK7NFC.js +0 -1
- package/build/assets/llm-not-configured-banner-CIFABh3K.js +0 -27
- package/build/assets/llm-settings-B9juXhIa.js +0 -1
- package/build/assets/llm-settings-De1d5dfr.js +0 -1
- package/build/assets/llm-subscription-service-BpJ0ouQo.js +0 -1
- package/build/assets/loader-circle-CC1au6hc.js +0 -1
- package/build/assets/manage-backends-modal-BrPV3oB-.js +0 -1
- package/build/assets/manifest-80fb1c29.js +0 -1
- package/build/assets/manifest-subpage-layout-CAOYzrYp.js +0 -1
- package/build/assets/markdown-renderer-BzTlxI8x.js +0 -8
- package/build/assets/mcp-BTs_SXfZ.js +0 -1
- package/build/assets/mcp-page-BEBYqH_K.js +0 -9
- package/build/assets/messages-DKV9cRc2.js +0 -41
- package/build/assets/modal-close-button-DDzdRvCs.js +0 -1
- package/build/assets/onboarding-DV_OXoeP.js +0 -1
- package/build/assets/onboarding-modal-rkyBYkeQ.js +0 -1
- package/build/assets/organization-service.api-DrYNkEN_.js +0 -1
- package/build/assets/pencil-47jAZH_V.js +0 -1
- package/build/assets/pin-By41Vl5J.js +0 -1
- package/build/assets/planner-tab-C9uZmhme.js +0 -1
- package/build/assets/plug-CG5HFcNG.js +0 -1
- package/build/assets/plugins-management-service-BMJgC3Ga.js +0 -1
- package/build/assets/plus-C7Slq-0I.js +0 -1
- package/build/assets/profiles-service.api-ChoKrL0l.js +0 -1
- package/build/assets/providers-BhMcY5nv.js +0 -1
- package/build/assets/proxy-9Fe1v5na.js +0 -1
- package/build/assets/recommended-automations-launcher-6ABrI9Cy.js +0 -1
- package/build/assets/refresh-cw-3q3Frrii.js +0 -1
- package/build/assets/root-Dc8YmC9F.js +0 -2
- package/build/assets/root-VDaypvK4.css +0 -1
- package/build/assets/root-layout-CXkhSPYh.js +0 -2
- package/build/assets/schema-field-D-y9-LDb.js +0 -1
- package/build/assets/scroll-fade-state-Dw-i4SGq.js +0 -1
- package/build/assets/sdk-section-page-BlFiizlG.js +0 -1
- package/build/assets/secret-form-BB7the8W.js +0 -1
- package/build/assets/secrets-service-ByZVENbp.js +0 -1
- package/build/assets/secrets-settings-B_GpxKW2.js +0 -1
- package/build/assets/settings-C0EWuBtA.js +0 -1
- package/build/assets/settings-dropdown-input-BcwylHs2.js +0 -1
- package/build/assets/settings-index-5w5UW2K3.js +0 -1
- package/build/assets/settings-input-Db-1g8Ql.js +0 -1
- package/build/assets/settings-modal-DfJ3tcJQ.js +0 -1
- package/build/assets/settings-service.api-DJ1r62Zr.js +0 -1
- package/build/assets/settings-switch-CS-dJDmA.js +0 -1
- package/build/assets/shared-conversation-CA5ISEDy.js +0 -1
- package/build/assets/shield-check-D2aCRd16.js +0 -1
- package/build/assets/sidebar-mobile-menu-toggle-C_fb0Jki.js +0 -1
- package/build/assets/sidebar-store-DGqHkVLw.js +0 -1
- package/build/assets/skill-card-pill-row-B27-xyig.js +0 -1
- package/build/assets/skill-scope-B42H-XOc.js +0 -1
- package/build/assets/skills-plugins-tgF8EiXC.js +0 -1
- package/build/assets/skills-settings-BgJ9PaOe.js +0 -1
- package/build/assets/styled-tooltip-C4jf5Fv9.js +0 -1
- package/build/assets/task-list-tab-C5zcaktH.js +0 -1
- package/build/assets/toggle-switch-ChOLXv2n.js +0 -1
- package/build/assets/trash-2-D7K26eDO.js +0 -1
- package/build/assets/trash-D-HYiVYM.js +0 -1
- package/build/assets/triangle-alert-CtdXWHUI.js +0 -1
- package/build/assets/usage-tab-CVDffLPt.js +0 -1
- package/build/assets/use-acp-credential-form-XIQmpX6M.js +0 -1
- package/build/assets/use-activate-agent-profile-BLfmvDiG.js +0 -1
- package/build/assets/use-agent-profiles-Bd9Bvvp1.js +0 -1
- package/build/assets/use-canvas-extensions-Bi693ujJ.js +0 -1
- package/build/assets/use-config-A9QovgXO.js +0 -1
- package/build/assets/use-create-conversation-Dx3l7mFZ.js +0 -1
- package/build/assets/use-create-secret-B9cUFWRG.js +0 -1
- package/build/assets/use-has-permission-B3C8rQmR.js +0 -1
- package/build/assets/use-is-authed-nTBcM7dE.js +0 -1
- package/build/assets/use-llm-configured-BV9nZ1_j.js +0 -1
- package/build/assets/use-llm-profiles-BO-P4Oyo.js +0 -1
- package/build/assets/use-manifest-capabilities-Cw_flwEz.js +0 -1
- package/build/assets/use-onboarding-completion-D8U7k4Qb.js +0 -1
- package/build/assets/use-pinned-home-route-CckOZrmb.js +0 -1
- package/build/assets/use-plugins-marketplace-7i94Zu3Z.js +0 -1
- package/build/assets/use-save-agent-profile-BUjSsDXK.js +0 -1
- package/build/assets/use-settings-DSXLbvBl.js +0 -1
- package/build/assets/use-settings-nav-items-CwRw-CmX.js +0 -16
- package/build/assets/use-tracking-D53y3TH9.js +0 -3
- package/build/assets/useQueries-DlbhlH9I.js +0 -1
- package/build/assets/useQuery-BSTgq1rl.js +0 -1
- package/build/assets/utils-CN5ZfZy1.js +0 -1
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-DqZDXfg2.js +0 -186
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-rfV8mQ9m.js +0 -1
- package/build/assets/vendor~root-layout-C9Ju9DQg.js +0 -1
- package/build/assets/vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-BWir3rJs.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-cDuKr-WD.js +0 -1
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iyia17eu-Chf7vmKB.js +0 -1
- package/build/assets/x-DJdhbdmt.js +0 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs +0 -2
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs.map +0 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.d.ts +0 -35
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js +0 -247
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js.map +0 -1
- package/dist/hooks/query/use-skills.cjs +0 -2
- package/dist/hooks/query/use-skills.cjs.map +0 -1
- package/dist/hooks/query/use-skills.d.ts +0 -7
- package/dist/hooks/query/use-skills.js +0 -13
- package/dist/hooks/query/use-skills.js.map +0 -1
- package/dist/hooks/use-has-permission.cjs +0 -2
- package/dist/hooks/use-has-permission.cjs.map +0 -1
- package/dist/hooks/use-has-permission.d.ts +0 -1
- package/dist/hooks/use-has-permission.js +0 -8
- package/dist/hooks/use-has-permission.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs +0 -2
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.js +0 -14
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.js.map +0 -1
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { I18nKey as e } from "../i18n/declaration.js";
|
|
2
|
+
import { AutomationRunStatus as t } from "../types/automation.js";
|
|
3
|
+
//#region src/utils/automation-run-display.ts
|
|
4
|
+
var n = [
|
|
5
|
+
"success",
|
|
6
|
+
"partial_success",
|
|
7
|
+
"blocked",
|
|
8
|
+
"failed",
|
|
9
|
+
"unknown"
|
|
10
|
+
];
|
|
11
|
+
function r(e) {
|
|
12
|
+
return typeof e == "object" && !!e && !Array.isArray(e);
|
|
13
|
+
}
|
|
14
|
+
function i(e) {
|
|
15
|
+
return typeof e == "string" && n.includes(e);
|
|
16
|
+
}
|
|
17
|
+
function a(e) {
|
|
18
|
+
return typeof e == "string" && e.trim() || null;
|
|
19
|
+
}
|
|
20
|
+
var o = new Set(["status", "outcome_summary"]);
|
|
21
|
+
function s(e) {
|
|
22
|
+
return e.run_metadata?.finish_tool_response ?? null;
|
|
23
|
+
}
|
|
24
|
+
function c(e) {
|
|
25
|
+
let t = a(e);
|
|
26
|
+
if (t) return t;
|
|
27
|
+
if (typeof e == "number" || typeof e == "boolean") return String(e);
|
|
28
|
+
if (e == null) return null;
|
|
29
|
+
try {
|
|
30
|
+
return JSON.stringify(e, null, 2);
|
|
31
|
+
} catch {
|
|
32
|
+
return String(e);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function l(e) {
|
|
36
|
+
if (e == null) return null;
|
|
37
|
+
if (!r(e)) return e;
|
|
38
|
+
let t = Object.entries(e).filter(([e]) => !o.has(e));
|
|
39
|
+
return t.length > 0 ? Object.fromEntries(t) : "status" in e && !i(e.status) ? { status: e.status } : null;
|
|
40
|
+
}
|
|
41
|
+
function u(e) {
|
|
42
|
+
let t = s(e);
|
|
43
|
+
if (!r(t)) return null;
|
|
44
|
+
let n = a(t.outcome_summary);
|
|
45
|
+
return typeof t.status != "string" && !n ? null : {
|
|
46
|
+
status: i(t.status) ? t.status : "unknown",
|
|
47
|
+
outcomeSummary: n
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function d(e) {
|
|
51
|
+
let n = s(e), r = l(n), i = c(r), o = u(e), d = a(e.error_detail);
|
|
52
|
+
return e.status === t.COMPLETED ? {
|
|
53
|
+
badgeStatus: o?.status ?? (n === null ? "success" : "unknown"),
|
|
54
|
+
summary: o?.outcomeSummary ?? null,
|
|
55
|
+
taskOutcome: o,
|
|
56
|
+
customTaskMetadata: r,
|
|
57
|
+
customTaskMetadataText: i
|
|
58
|
+
} : {
|
|
59
|
+
badgeStatus: e.status,
|
|
60
|
+
summary: d,
|
|
61
|
+
taskOutcome: o,
|
|
62
|
+
customTaskMetadata: r,
|
|
63
|
+
customTaskMetadataText: i
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function f(n) {
|
|
67
|
+
switch (n) {
|
|
68
|
+
case t.COMPLETED:
|
|
69
|
+
case "success": return e.AUTOMATIONS$DETAIL$SUCCESSFUL;
|
|
70
|
+
case t.FAILED:
|
|
71
|
+
case "failed": return e.AUTOMATIONS$DETAIL$FAILED;
|
|
72
|
+
case t.PENDING: return e.AUTOMATIONS$DETAIL$PENDING;
|
|
73
|
+
case t.RUNNING: return e.AUTOMATIONS$DETAIL$RUNNING;
|
|
74
|
+
case t.CANCELLED: return e.AUTOMATIONS$DETAIL$CANCELLED;
|
|
75
|
+
case t.SKIPPED: return e.AUTOMATIONS$DETAIL$SKIPPED;
|
|
76
|
+
case "blocked": return e.AUTOMATIONS$DETAIL$BLOCKED;
|
|
77
|
+
case "partial_success": return e.AUTOMATIONS$DETAIL$PARTIAL;
|
|
78
|
+
case "unknown": return e.AUTOMATIONS$DETAIL$NEEDS_REVIEW;
|
|
79
|
+
default: return e.FEATURED_AUTOMATIONS$STATUS_UNKNOWN;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//#endregion
|
|
83
|
+
export { f as getAutomationRunBadgeLabelKey, d as getAutomationRunDisplay };
|
|
84
|
+
|
|
85
|
+
//# sourceMappingURL=automation-run-display.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation-run-display.js","names":[],"sources":["../../src/utils/automation-run-display.ts"],"sourcesContent":["import { I18nKey } from \"#/i18n/declaration\";\nimport {\n AutomationRunStatus,\n type AutomationRun,\n type AutomationTaskOutcomeStatus,\n} from \"#/types/automation\";\n\nexport type AutomationRunBadgeStatus =\n | AutomationRunStatus\n | AutomationTaskOutcomeStatus;\n\nexport interface AutomationRunTaskOutcome {\n status: AutomationTaskOutcomeStatus;\n outcomeSummary: string | null;\n}\n\nexport interface AutomationRunDisplay {\n badgeStatus: AutomationRunBadgeStatus;\n summary: string | null;\n taskOutcome: AutomationRunTaskOutcome | null;\n customTaskMetadata: unknown | null;\n customTaskMetadataText: string | null;\n}\n\nconst TASK_OUTCOME_STATUSES: readonly AutomationTaskOutcomeStatus[] = [\n \"success\",\n \"partial_success\",\n \"blocked\",\n \"failed\",\n \"unknown\",\n];\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function isTaskOutcomeStatus(\n value: unknown,\n): value is AutomationTaskOutcomeStatus {\n return (\n typeof value === \"string\" &&\n TASK_OUTCOME_STATUSES.includes(value as AutomationTaskOutcomeStatus)\n );\n}\n\nfunction trimString(value: unknown): string | null {\n if (typeof value !== \"string\") return null;\n return value.trim() || null;\n}\n\nconst DEFAULT_FINISH_TOOL_RESPONSE_KEYS = new Set([\n \"status\",\n \"outcome_summary\",\n]);\n\nexport function getAutomationRunFinishToolResponse(\n run: AutomationRun,\n): unknown | null {\n const response = run.run_metadata?.finish_tool_response;\n return response === undefined || response === null ? null : response;\n}\n\nexport function formatAutomationRunTaskMetadata(\n metadata: unknown,\n): string | null {\n const trimmed = trimString(metadata);\n if (trimmed) return trimmed;\n if (typeof metadata === \"number\" || typeof metadata === \"boolean\") {\n return String(metadata);\n }\n if (metadata === null || metadata === undefined) return null;\n\n try {\n return JSON.stringify(metadata, null, 2);\n } catch {\n return String(metadata);\n }\n}\n\nfunction getCustomFinishToolMetadata(response: unknown): unknown | null {\n if (response === null || response === undefined) return null;\n if (!isRecord(response)) return response;\n\n const customEntries = Object.entries(response).filter(\n ([key]) => !DEFAULT_FINISH_TOOL_RESPONSE_KEYS.has(key),\n );\n if (customEntries.length > 0) return Object.fromEntries(customEntries);\n\n if (\"status\" in response && !isTaskOutcomeStatus(response.status)) {\n return { status: response.status };\n }\n\n return null;\n}\n\nexport function getAutomationRunTaskOutcome(\n run: AutomationRun,\n): AutomationRunTaskOutcome | null {\n const response = getAutomationRunFinishToolResponse(run);\n if (!isRecord(response)) return null;\n\n const outcomeSummary = trimString(response.outcome_summary);\n const hasStatus = typeof response.status === \"string\";\n if (!hasStatus && !outcomeSummary) return null;\n\n return {\n status: isTaskOutcomeStatus(response.status) ? response.status : \"unknown\",\n outcomeSummary,\n };\n}\n\nexport function getAutomationRunDisplay(\n run: AutomationRun,\n): AutomationRunDisplay {\n const finishToolResponse = getAutomationRunFinishToolResponse(run);\n const customTaskMetadata = getCustomFinishToolMetadata(finishToolResponse);\n const customTaskMetadataText =\n formatAutomationRunTaskMetadata(customTaskMetadata);\n const taskOutcome = getAutomationRunTaskOutcome(run);\n const systemSummary = trimString(run.error_detail);\n\n if (run.status === AutomationRunStatus.COMPLETED) {\n return {\n badgeStatus:\n taskOutcome?.status ??\n (finishToolResponse !== null ? \"unknown\" : \"success\"),\n summary: taskOutcome?.outcomeSummary ?? null,\n taskOutcome,\n customTaskMetadata,\n customTaskMetadataText,\n };\n }\n\n return {\n badgeStatus: run.status,\n summary: systemSummary,\n taskOutcome,\n customTaskMetadata,\n customTaskMetadataText,\n };\n}\n\nexport function getAutomationRunBadgeLabelKey(\n status: AutomationRunBadgeStatus | string,\n): I18nKey {\n switch (status) {\n case AutomationRunStatus.COMPLETED:\n case \"success\":\n return I18nKey.AUTOMATIONS$DETAIL$SUCCESSFUL;\n case AutomationRunStatus.FAILED:\n case \"failed\":\n return I18nKey.AUTOMATIONS$DETAIL$FAILED;\n case AutomationRunStatus.PENDING:\n return I18nKey.AUTOMATIONS$DETAIL$PENDING;\n case AutomationRunStatus.RUNNING:\n return I18nKey.AUTOMATIONS$DETAIL$RUNNING;\n case AutomationRunStatus.CANCELLED:\n return I18nKey.AUTOMATIONS$DETAIL$CANCELLED;\n case AutomationRunStatus.SKIPPED:\n return I18nKey.AUTOMATIONS$DETAIL$SKIPPED;\n case \"blocked\":\n return I18nKey.AUTOMATIONS$DETAIL$BLOCKED;\n case \"partial_success\":\n return I18nKey.AUTOMATIONS$DETAIL$PARTIAL;\n case \"unknown\":\n return I18nKey.AUTOMATIONS$DETAIL$NEEDS_REVIEW;\n default:\n return I18nKey.FEATURED_AUTOMATIONS$STATUS_UNKNOWN;\n }\n}\n"],"mappings":";;;AAwBA,IAAM,IAAgE;CACpE;CACA;CACA;CACA;CACA;AACF;AAEA,SAAS,EAAS,GAAkD;CAClE,OAAO,OAAO,KAAU,cAAY,KAAkB,CAAC,MAAM,QAAQ,CAAK;AAC5E;AAEA,SAAgB,EACd,GACsC;CACtC,OACE,OAAO,KAAU,YACjB,EAAsB,SAAS,CAAoC;AAEvE;AAEA,SAAS,EAAW,GAA+B;CAEjD,OADI,OAAO,KAAU,YACd,EAAM,KAAK,KADoB;AAExC;AAEA,IAAM,IAAoC,IAAI,IAAI,CAChD,UACA,iBACF,CAAC;AAED,SAAgB,EACd,GACgB;CAEhB,OADiB,EAAI,cAAc,wBACkB;AACvD;AAEA,SAAgB,EACd,GACe;CACf,IAAM,IAAU,EAAW,CAAQ;CACnC,IAAI,GAAS,OAAO;CACpB,IAAI,OAAO,KAAa,YAAY,OAAO,KAAa,WACtD,OAAO,OAAO,CAAQ;CAExB,IAAI,KAAa,MAAgC,OAAO;CAExD,IAAI;EACF,OAAO,KAAK,UAAU,GAAU,MAAM,CAAC;CACzC,QAAQ;EACN,OAAO,OAAO,CAAQ;CACxB;AACF;AAEA,SAAS,EAA4B,GAAmC;CACtE,IAAI,KAAa,MAAgC,OAAO;CACxD,IAAI,CAAC,EAAS,CAAQ,GAAG,OAAO;CAEhC,IAAM,IAAgB,OAAO,QAAQ,CAAQ,EAAE,QAC5C,CAAC,OAAS,CAAC,EAAkC,IAAI,CAAG,CACvD;CAOA,OANI,EAAc,SAAS,IAAU,OAAO,YAAY,CAAa,IAEjE,YAAY,KAAY,CAAC,EAAoB,EAAS,MAAM,IACvD,EAAE,QAAQ,EAAS,OAAO,IAG5B;AACT;AAEA,SAAgB,EACd,GACiC;CACjC,IAAM,IAAW,EAAmC,CAAG;CACvD,IAAI,CAAC,EAAS,CAAQ,GAAG,OAAO;CAEhC,IAAM,IAAiB,EAAW,EAAS,eAAe;CAI1D,OAHkB,OAAO,EAAS,UAAW,YAC3B,CAAC,IAAuB,OAEnC;EACL,QAAQ,EAAoB,EAAS,MAAM,IAAI,EAAS,SAAS;EACjE;CACF;AACF;AAEA,SAAgB,EACd,GACsB;CACtB,IAAM,IAAqB,EAAmC,CAAG,GAC3D,IAAqB,EAA4B,CAAkB,GACnE,IACJ,EAAgC,CAAkB,GAC9C,IAAc,EAA4B,CAAG,GAC7C,IAAgB,EAAW,EAAI,YAAY;CAcjD,OAZI,EAAI,WAAW,EAAoB,YAC9B;EACL,aACE,GAAa,WACZ,MAAuB,OAAmB,YAAZ;EACjC,SAAS,GAAa,kBAAkB;EACxC;EACA;EACA;CACF,IAGK;EACL,aAAa,EAAI;EACjB,SAAS;EACT;EACA;EACA;CACF;AACF;AAEA,SAAgB,EACd,GACS;CACT,QAAQ,GAAR;EACE,KAAK,EAAoB;EACzB,KAAK,WACH,OAAO,EAAQ;EACjB,KAAK,EAAoB;EACzB,KAAK,UACH,OAAO,EAAQ;EACjB,KAAK,EAAoB,SACvB,OAAO,EAAQ;EACjB,KAAK,EAAoB,SACvB,OAAO,EAAQ;EACjB,KAAK,EAAoB,WACvB,OAAO,EAAQ;EACjB,KAAK,EAAoB,SACvB,OAAO,EAAQ;EACjB,KAAK,WACH,OAAO,EAAQ;EACjB,KAAK,mBACH,OAAO,EAAQ;EACjB,KAAK,WACH,OAAO,EAAQ;EACjB,SACE,OAAO,EAAQ;CACnB;AACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require("../_virtual/_rolldown/runtime.cjs");function e(e){return e?Array.isArray(e)?e.join(`, `):e:`—`}exports.formatEventOn=e;
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");function e(e){return e?Array.isArray(e)?e.join(`, `):e:`—`}var t=`JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC`,n=`SUN|MON|TUE|WED|THU|FRI|SAT`;RegExp(`^(?:${t})(?:-(?:${t}))?(?:/\\d+)?$`,`i`),RegExp(`^(?:(?:${n}|\\d+)(?:-(?:${n}|\\d+))?(?:/\\d+)?(?:#\\d+)?|\\?)$`,`i`),exports.formatEventOn=e;
|
|
2
2
|
//# sourceMappingURL=automation-schedule.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automation-schedule.cjs","names":[],"sources":["../../src/utils/automation-schedule.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"automation-schedule.cjs","names":[],"sources":["../../src/utils/automation-schedule.ts"],"sourcesContent":["import { I18nKey } from \"#/i18n/declaration\";\n\nexport type SchedulePresetKind = \"daily\" | \"weekdays\" | \"weekly\";\n\nexport interface PresetSchedule {\n kind: SchedulePresetKind;\n hour: number;\n minute: number;\n weekday?: number;\n}\n\nexport interface CustomSchedule {\n kind: \"custom\";\n raw: string;\n hour?: number;\n minute?: number;\n}\n\nexport type ParsedSchedule = PresetSchedule | CustomSchedule;\n\nconst SINGLE_INT = /^(\\d+)$/;\n\nfunction parseSingleInt(\n field: string,\n min: number,\n max: number,\n): number | null {\n const match = field.match(SINGLE_INT);\n if (!match) return null;\n const value = Number(match[1]);\n if (Number.isNaN(value) || value < min || value > max) return null;\n return value;\n}\n\nexport function parseCronSchedule(\n cron: string | undefined | null,\n): ParsedSchedule {\n const raw = (cron ?? \"\").trim();\n if (!raw) return { kind: \"custom\", raw: \"\" };\n\n const fields = raw.split(/\\s+/);\n if (fields.length !== 5) return { kind: \"custom\", raw };\n\n const [minuteField, hourField, domField, monthField, dowField] = fields;\n\n const minute = parseSingleInt(minuteField, 0, 59);\n const hour = parseSingleInt(hourField, 0, 23);\n\n if (minute === null || hour === null) {\n return { kind: \"custom\", raw };\n }\n if (domField !== \"*\" || monthField !== \"*\") {\n return { kind: \"custom\", raw, hour, minute };\n }\n\n if (dowField === \"*\" || dowField === \"0-6\") {\n return { kind: \"daily\", hour, minute };\n }\n if (dowField === \"1-5\") {\n return { kind: \"weekdays\", hour, minute };\n }\n const weekday = parseSingleInt(dowField, 0, 6);\n if (weekday !== null) {\n return { kind: \"weekly\", hour, minute, weekday };\n }\n return { kind: \"custom\", raw, hour, minute };\n}\n\nexport function buildCronSchedule(input: PresetSchedule): string {\n const { kind, hour, minute, weekday } = input;\n switch (kind) {\n case \"daily\":\n return `${minute} ${hour} * * *`;\n case \"weekdays\":\n return `${minute} ${hour} * * 1-5`;\n case \"weekly\":\n return `${minute} ${hour} * * ${weekday ?? 1}`;\n default: {\n const _exhaustive: never = kind;\n return _exhaustive;\n }\n }\n}\n\nexport function formatTimeOfDay(hour: number, minute: number): string {\n const hh = String(hour).padStart(2, \"0\");\n const mm = String(minute).padStart(2, \"0\");\n return `${hh}:${mm}`;\n}\n\nexport function parseTimeOfDay(\n value: string,\n): { hour: number; minute: number } | null {\n const match = value.match(/^(\\d{1,2}):(\\d{2})$/);\n if (!match) return null;\n const hour = Number(match[1]);\n const minute = Number(match[2]);\n if (\n Number.isNaN(hour) ||\n Number.isNaN(minute) ||\n hour < 0 ||\n hour > 23 ||\n minute < 0 ||\n minute > 59\n ) {\n return null;\n }\n return { hour, minute };\n}\n\nexport function formatEventOn(on: string | string[] | undefined): string {\n if (!on) return \"—\";\n if (Array.isArray(on)) return on.join(\", \");\n return on;\n}\n\n/** Example expression shown when the cron field is empty. */\nexport const CRON_EXPRESSION_EXAMPLE = \"*/10 * * * *\";\n\n// The service validates with croniter, so this must accept everything croniter\n// does: five fields, optionally plus seconds and then year, or an alias.\nconst CRON_ALIASES = new Set([\n \"@yearly\",\n \"@annually\",\n \"@monthly\",\n \"@weekly\",\n \"@daily\",\n \"@midnight\",\n \"@hourly\",\n]);\n\nconst CRON_MIN_FIELDS = 5;\nconst CRON_MAX_FIELDS = 7;\n\n// Seconds and year are appended after these, so the positions always hold.\nconst CRON_FIELD_BOUNDS: readonly (readonly [number, number])[] = [\n [0, 59], // minute\n [0, 23], // hour\n [1, 31], // day of month\n [1, 12], // month\n [0, 7], // day of week — croniter spells Sunday 0 and 7\n];\n\nconst DAY_OF_MONTH_INDEX = 2;\nconst MONTH_INDEX = 3;\n\n// Indexed from 1. February is 29: the 29th does fire, in leap years.\nconst MAX_DAYS_IN_MONTH = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nconst MONTH_NAMES = \"JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC\";\nconst DAY_NAMES = \"SUN|MON|TUE|WED|THU|FRI|SAT\";\n\n// croniter does not bound the step: `*/90` is accepted.\nconst NUMERIC_TERM = /^(\\*|\\d+(?:-\\d+)?)(?:\\/(\\d+))?$/;\n\n/** Vocabulary beyond plain numbers, matched but not expanded. */\nconst EXTRA_TERM_PATTERNS: readonly (RegExp | null)[] = [\n null, // minute\n null, // hour\n /^(?:\\?|L|\\d+W)$/i, // `?`, `L`, `15W`\n new RegExp(`^(?:${MONTH_NAMES})(?:-(?:${MONTH_NAMES}))?(?:/\\\\d+)?$`, \"i\"),\n // `SUN`, `MON-FRI#2`, `5#3`, `?` — but no `L`, which croniter rejects here.\n new RegExp(\n `^(?:(?:${DAY_NAMES}|\\\\d+)(?:-(?:${DAY_NAMES}|\\\\d+))?(?:/\\\\d+)?(?:#\\\\d+)?|\\\\?)$`,\n \"i\",\n ),\n];\n\ntype CronFieldParse =\n | { kind: \"invalid\" }\n /** Well-formed, but not expanded, so it constrains nothing. */\n | { kind: \"unmodelled\" }\n | { kind: \"values\"; values: number[] };\n\nfunction parseCronField(\n field: string,\n [min, max]: readonly [number, number],\n extraPattern: RegExp | null,\n): CronFieldParse {\n const values = new Set<number>();\n\n for (const term of field.split(\",\")) {\n const match = term.match(NUMERIC_TERM);\n if (!match) {\n if (extraPattern?.test(term)) return { kind: \"unmodelled\" };\n return { kind: \"invalid\" };\n }\n\n const [, rangePart, stepPart] = match;\n const step = stepPart === undefined ? 1 : Number(stepPart);\n if (step < 1) return { kind: \"invalid\" };\n\n if (rangePart === \"*\") {\n for (let value = min; value <= max; value += step) values.add(value);\n continue;\n }\n\n const [startPart, endPart] = rangePart.split(\"-\");\n const start = parseSingleInt(startPart, min, max);\n if (start === null) return { kind: \"invalid\" };\n if (endPart === undefined) {\n values.add(start);\n continue;\n }\n const end = parseSingleInt(endPart, min, max);\n if (end === null) return { kind: \"invalid\" };\n // croniter wraps a reversed range like `5-1`; that wrap is not modelled.\n if (end < start) return { kind: \"unmodelled\" };\n for (let value = start; value <= end; value += step) values.add(value);\n }\n\n return { kind: \"values\", values: [...values] };\n}\n\nexport type CronScheduleValidation =\n | { schedule: string }\n | { errorKey: I18nKey };\n\n/**\n * Validate a raw cron expression from the edit form — `parseCronSchedule` only\n * classifies against the presets, reporting arbitrary text as `custom`.\n *\n * One-sided by design: rejects only what croniter certainly rejects, and defers\n * on anything it does not model.\n */\nexport function validateCronSchedule(raw: string): CronScheduleValidation {\n const schedule = raw.trim();\n if (!schedule) return { errorKey: I18nKey.AUTOMATIONS$ERROR_CRON_INVALID };\n\n if (schedule.startsWith(\"@\")) {\n return CRON_ALIASES.has(schedule.toLowerCase())\n ? { schedule }\n : { errorKey: I18nKey.AUTOMATIONS$ERROR_CRON_INVALID };\n }\n\n const fields = schedule.split(/\\s+/);\n if (fields.length < CRON_MIN_FIELDS || fields.length > CRON_MAX_FIELDS) {\n return { errorKey: I18nKey.AUTOMATIONS$ERROR_CRON_INVALID };\n }\n\n const parsed = CRON_FIELD_BOUNDS.map((bounds, index) =>\n parseCronField(fields[index], bounds, EXTRA_TERM_PATTERNS[index]),\n );\n if (parsed.some((field) => field.kind === \"invalid\")) {\n return { errorKey: I18nKey.AUTOMATIONS$ERROR_CRON_INVALID };\n }\n\n // croniter parses `0 0 31 2 *` and then finds no fire time for it.\n const days = parsed[DAY_OF_MONTH_INDEX];\n const months = parsed[MONTH_INDEX];\n if (\n days.kind === \"values\" &&\n months.kind === \"values\" &&\n !months.values.some((month) =>\n days.values.some((day) => day <= MAX_DAYS_IN_MONTH[month]),\n )\n ) {\n return { errorKey: I18nKey.AUTOMATIONS$ERROR_CRON_UNREACHABLE };\n }\n\n return { schedule };\n}\n"],"mappings":"6CA8GA,SAAgB,EAAc,EAA2C,CAGvE,OAFK,EACD,MAAM,QAAQ,CAAE,EAAU,EAAG,KAAK,IAAI,EACnC,EAFS,GAGlB,CAmCA,IAAM,EAAc,kDACd,EAAY,8BAUZ,OAAO,OAAO,EAAY,UAAU,EAAY,gBAAiB,GAAG,EAEpE,OACF,UAAU,EAAU,eAAe,EAAU,oCAC7C,GACF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { I18nKey } from "#/i18n/declaration";
|
|
1
2
|
export type SchedulePresetKind = "daily" | "weekdays" | "weekly";
|
|
2
3
|
export interface PresetSchedule {
|
|
3
4
|
kind: SchedulePresetKind;
|
|
@@ -20,3 +21,18 @@ export declare function parseTimeOfDay(value: string): {
|
|
|
20
21
|
minute: number;
|
|
21
22
|
} | null;
|
|
22
23
|
export declare function formatEventOn(on: string | string[] | undefined): string;
|
|
24
|
+
/** Example expression shown when the cron field is empty. */
|
|
25
|
+
export declare const CRON_EXPRESSION_EXAMPLE = "*/10 * * * *";
|
|
26
|
+
export type CronScheduleValidation = {
|
|
27
|
+
schedule: string;
|
|
28
|
+
} | {
|
|
29
|
+
errorKey: I18nKey;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Validate a raw cron expression from the edit form — `parseCronSchedule` only
|
|
33
|
+
* classifies against the presets, reporting arbitrary text as `custom`.
|
|
34
|
+
*
|
|
35
|
+
* One-sided by design: rejects only what croniter certainly rejects, and defers
|
|
36
|
+
* on anything it does not model.
|
|
37
|
+
*/
|
|
38
|
+
export declare function validateCronSchedule(raw: string): CronScheduleValidation;
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
function e(e) {
|
|
3
3
|
return e ? Array.isArray(e) ? e.join(", ") : e : "—";
|
|
4
4
|
}
|
|
5
|
+
var t = "JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC", n = "SUN|MON|TUE|WED|THU|FRI|SAT";
|
|
6
|
+
RegExp(`^(?:${t})(?:-(?:${t}))?(?:/\\d+)?$`, "i"), RegExp(`^(?:(?:${n}|\\d+)(?:-(?:${n}|\\d+))?(?:/\\d+)?(?:#\\d+)?|\\?)$`, "i");
|
|
5
7
|
//#endregion
|
|
6
8
|
export { e as formatEventOn };
|
|
7
9
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automation-schedule.js","names":[],"sources":["../../src/utils/automation-schedule.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"automation-schedule.js","names":[],"sources":["../../src/utils/automation-schedule.ts"],"sourcesContent":["import { I18nKey } from \"#/i18n/declaration\";\n\nexport type SchedulePresetKind = \"daily\" | \"weekdays\" | \"weekly\";\n\nexport interface PresetSchedule {\n kind: SchedulePresetKind;\n hour: number;\n minute: number;\n weekday?: number;\n}\n\nexport interface CustomSchedule {\n kind: \"custom\";\n raw: string;\n hour?: number;\n minute?: number;\n}\n\nexport type ParsedSchedule = PresetSchedule | CustomSchedule;\n\nconst SINGLE_INT = /^(\\d+)$/;\n\nfunction parseSingleInt(\n field: string,\n min: number,\n max: number,\n): number | null {\n const match = field.match(SINGLE_INT);\n if (!match) return null;\n const value = Number(match[1]);\n if (Number.isNaN(value) || value < min || value > max) return null;\n return value;\n}\n\nexport function parseCronSchedule(\n cron: string | undefined | null,\n): ParsedSchedule {\n const raw = (cron ?? \"\").trim();\n if (!raw) return { kind: \"custom\", raw: \"\" };\n\n const fields = raw.split(/\\s+/);\n if (fields.length !== 5) return { kind: \"custom\", raw };\n\n const [minuteField, hourField, domField, monthField, dowField] = fields;\n\n const minute = parseSingleInt(minuteField, 0, 59);\n const hour = parseSingleInt(hourField, 0, 23);\n\n if (minute === null || hour === null) {\n return { kind: \"custom\", raw };\n }\n if (domField !== \"*\" || monthField !== \"*\") {\n return { kind: \"custom\", raw, hour, minute };\n }\n\n if (dowField === \"*\" || dowField === \"0-6\") {\n return { kind: \"daily\", hour, minute };\n }\n if (dowField === \"1-5\") {\n return { kind: \"weekdays\", hour, minute };\n }\n const weekday = parseSingleInt(dowField, 0, 6);\n if (weekday !== null) {\n return { kind: \"weekly\", hour, minute, weekday };\n }\n return { kind: \"custom\", raw, hour, minute };\n}\n\nexport function buildCronSchedule(input: PresetSchedule): string {\n const { kind, hour, minute, weekday } = input;\n switch (kind) {\n case \"daily\":\n return `${minute} ${hour} * * *`;\n case \"weekdays\":\n return `${minute} ${hour} * * 1-5`;\n case \"weekly\":\n return `${minute} ${hour} * * ${weekday ?? 1}`;\n default: {\n const _exhaustive: never = kind;\n return _exhaustive;\n }\n }\n}\n\nexport function formatTimeOfDay(hour: number, minute: number): string {\n const hh = String(hour).padStart(2, \"0\");\n const mm = String(minute).padStart(2, \"0\");\n return `${hh}:${mm}`;\n}\n\nexport function parseTimeOfDay(\n value: string,\n): { hour: number; minute: number } | null {\n const match = value.match(/^(\\d{1,2}):(\\d{2})$/);\n if (!match) return null;\n const hour = Number(match[1]);\n const minute = Number(match[2]);\n if (\n Number.isNaN(hour) ||\n Number.isNaN(minute) ||\n hour < 0 ||\n hour > 23 ||\n minute < 0 ||\n minute > 59\n ) {\n return null;\n }\n return { hour, minute };\n}\n\nexport function formatEventOn(on: string | string[] | undefined): string {\n if (!on) return \"—\";\n if (Array.isArray(on)) return on.join(\", \");\n return on;\n}\n\n/** Example expression shown when the cron field is empty. */\nexport const CRON_EXPRESSION_EXAMPLE = \"*/10 * * * *\";\n\n// The service validates with croniter, so this must accept everything croniter\n// does: five fields, optionally plus seconds and then year, or an alias.\nconst CRON_ALIASES = new Set([\n \"@yearly\",\n \"@annually\",\n \"@monthly\",\n \"@weekly\",\n \"@daily\",\n \"@midnight\",\n \"@hourly\",\n]);\n\nconst CRON_MIN_FIELDS = 5;\nconst CRON_MAX_FIELDS = 7;\n\n// Seconds and year are appended after these, so the positions always hold.\nconst CRON_FIELD_BOUNDS: readonly (readonly [number, number])[] = [\n [0, 59], // minute\n [0, 23], // hour\n [1, 31], // day of month\n [1, 12], // month\n [0, 7], // day of week — croniter spells Sunday 0 and 7\n];\n\nconst DAY_OF_MONTH_INDEX = 2;\nconst MONTH_INDEX = 3;\n\n// Indexed from 1. February is 29: the 29th does fire, in leap years.\nconst MAX_DAYS_IN_MONTH = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nconst MONTH_NAMES = \"JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC\";\nconst DAY_NAMES = \"SUN|MON|TUE|WED|THU|FRI|SAT\";\n\n// croniter does not bound the step: `*/90` is accepted.\nconst NUMERIC_TERM = /^(\\*|\\d+(?:-\\d+)?)(?:\\/(\\d+))?$/;\n\n/** Vocabulary beyond plain numbers, matched but not expanded. */\nconst EXTRA_TERM_PATTERNS: readonly (RegExp | null)[] = [\n null, // minute\n null, // hour\n /^(?:\\?|L|\\d+W)$/i, // `?`, `L`, `15W`\n new RegExp(`^(?:${MONTH_NAMES})(?:-(?:${MONTH_NAMES}))?(?:/\\\\d+)?$`, \"i\"),\n // `SUN`, `MON-FRI#2`, `5#3`, `?` — but no `L`, which croniter rejects here.\n new RegExp(\n `^(?:(?:${DAY_NAMES}|\\\\d+)(?:-(?:${DAY_NAMES}|\\\\d+))?(?:/\\\\d+)?(?:#\\\\d+)?|\\\\?)$`,\n \"i\",\n ),\n];\n\ntype CronFieldParse =\n | { kind: \"invalid\" }\n /** Well-formed, but not expanded, so it constrains nothing. */\n | { kind: \"unmodelled\" }\n | { kind: \"values\"; values: number[] };\n\nfunction parseCronField(\n field: string,\n [min, max]: readonly [number, number],\n extraPattern: RegExp | null,\n): CronFieldParse {\n const values = new Set<number>();\n\n for (const term of field.split(\",\")) {\n const match = term.match(NUMERIC_TERM);\n if (!match) {\n if (extraPattern?.test(term)) return { kind: \"unmodelled\" };\n return { kind: \"invalid\" };\n }\n\n const [, rangePart, stepPart] = match;\n const step = stepPart === undefined ? 1 : Number(stepPart);\n if (step < 1) return { kind: \"invalid\" };\n\n if (rangePart === \"*\") {\n for (let value = min; value <= max; value += step) values.add(value);\n continue;\n }\n\n const [startPart, endPart] = rangePart.split(\"-\");\n const start = parseSingleInt(startPart, min, max);\n if (start === null) return { kind: \"invalid\" };\n if (endPart === undefined) {\n values.add(start);\n continue;\n }\n const end = parseSingleInt(endPart, min, max);\n if (end === null) return { kind: \"invalid\" };\n // croniter wraps a reversed range like `5-1`; that wrap is not modelled.\n if (end < start) return { kind: \"unmodelled\" };\n for (let value = start; value <= end; value += step) values.add(value);\n }\n\n return { kind: \"values\", values: [...values] };\n}\n\nexport type CronScheduleValidation =\n | { schedule: string }\n | { errorKey: I18nKey };\n\n/**\n * Validate a raw cron expression from the edit form — `parseCronSchedule` only\n * classifies against the presets, reporting arbitrary text as `custom`.\n *\n * One-sided by design: rejects only what croniter certainly rejects, and defers\n * on anything it does not model.\n */\nexport function validateCronSchedule(raw: string): CronScheduleValidation {\n const schedule = raw.trim();\n if (!schedule) return { errorKey: I18nKey.AUTOMATIONS$ERROR_CRON_INVALID };\n\n if (schedule.startsWith(\"@\")) {\n return CRON_ALIASES.has(schedule.toLowerCase())\n ? { schedule }\n : { errorKey: I18nKey.AUTOMATIONS$ERROR_CRON_INVALID };\n }\n\n const fields = schedule.split(/\\s+/);\n if (fields.length < CRON_MIN_FIELDS || fields.length > CRON_MAX_FIELDS) {\n return { errorKey: I18nKey.AUTOMATIONS$ERROR_CRON_INVALID };\n }\n\n const parsed = CRON_FIELD_BOUNDS.map((bounds, index) =>\n parseCronField(fields[index], bounds, EXTRA_TERM_PATTERNS[index]),\n );\n if (parsed.some((field) => field.kind === \"invalid\")) {\n return { errorKey: I18nKey.AUTOMATIONS$ERROR_CRON_INVALID };\n }\n\n // croniter parses `0 0 31 2 *` and then finds no fire time for it.\n const days = parsed[DAY_OF_MONTH_INDEX];\n const months = parsed[MONTH_INDEX];\n if (\n days.kind === \"values\" &&\n months.kind === \"values\" &&\n !months.values.some((month) =>\n days.values.some((day) => day <= MAX_DAYS_IN_MONTH[month]),\n )\n ) {\n return { errorKey: I18nKey.AUTOMATIONS$ERROR_CRON_UNREACHABLE };\n }\n\n return { schedule };\n}\n"],"mappings":";AA8GA,SAAgB,EAAc,GAA2C;CAGvE,OAFK,IACD,MAAM,QAAQ,CAAE,IAAU,EAAG,KAAK,IAAI,IACnC,IAFS;AAGlB;AAmCA,IAAM,IAAc,mDACd,IAAY;AAUZ,OAAO,OAAO,EAAY,UAAU,EAAY,iBAAiB,GAAG,GAEpE,OACF,UAAU,EAAU,eAAe,EAAU,qCAC7C,GACF"}
|
package/dist/utils/constants.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require("../_virtual/_rolldown/runtime.cjs");var e={base00:`transparent`,base01:`var(--cool-grey-900)`,base02:`var(--cool-grey-700)`,base03:`var(--cool-grey-600)`,base04:`var(--cool-grey-500)`,base05:`var(--cool-grey-200)`,base06:`var(--cool-grey-100)`,base07:`#ffffff`,base08:`#ff5370`,base09:`#f78c6c`,base0A:`#ffcb6b`,base0B:`#c3e88d`,base0C:`#89ddff`,base0D:`#82aaff`,base0E:`#c792ea`,base0F:`#ff5370`},t={PRODUCTION:`https://app.all-hands.dev`},n={LABEL_CLASSNAME:`text-[11px] font-medium leading-4 tracking-[0.11px]`},r={HEIGHT_THRESHOLD:100},i=1.5,a=`/btw`,o=`/model`,s=`/goal`,c=[{skill:{name:`new`,type:`agentskills`,source:null,content:`Creates a new conversation using the same runtime`,triggers:[`/new`]},command:`/new`},{skill:{name:`btw`,type:`agentskills`,source:null,content:`Ask the agent a side question without derailing the main task`,triggers:[a]},command:a},{skill:{name:`model`,type:`agentskills`,source:null,content:`List saved LLM profiles, or switch the conversation LLM profile with /model <name>`,triggers:[o]},command:o},{skill:{name:`goal`,type:`agentskills`,source:null,content:`Drive the agent toward an objective until a judge says it's done — /goal <objective> or /goal --max <n> <objective>`,triggers:[s]},command:s}],l=[`The following information has been included`,`It may or may not be relevant`,`Skill location:`,`(Use this path to resolve`];exports.BTW_COMMAND=a,exports.BUILT_IN_COMMANDS=
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");var e={base00:`transparent`,base01:`var(--cool-grey-900)`,base02:`var(--cool-grey-700)`,base03:`var(--cool-grey-600)`,base04:`var(--cool-grey-500)`,base05:`var(--cool-grey-200)`,base06:`var(--cool-grey-100)`,base07:`#ffffff`,base08:`#ff5370`,base09:`#f78c6c`,base0A:`#ffcb6b`,base0B:`#c3e88d`,base0C:`#89ddff`,base0D:`#82aaff`,base0E:`#c792ea`,base0F:`#ff5370`},t={PRODUCTION:`https://app.all-hands.dev`},n={LABEL_CLASSNAME:`text-[11px] font-medium leading-4 tracking-[0.11px]`},r={HEIGHT_THRESHOLD:100},i=1.5,a=`/btw`,o=`/model`,s=`/goal`,c=`/plan`,l=`/code`,u=[{skill:{name:`new`,type:`agentskills`,source:null,content:`Creates a new conversation using the same runtime`,triggers:[`/new`]},command:`/new`},{skill:{name:`btw`,type:`agentskills`,source:null,content:`Ask the agent a side question without derailing the main task`,triggers:[a]},command:a},{skill:{name:`model`,type:`agentskills`,source:null,content:`List saved LLM profiles, or switch the conversation LLM profile with /model <name>`,triggers:[o]},command:o},{skill:{name:`goal`,type:`agentskills`,source:null,content:`Drive the agent toward an objective until a judge says it's done — /goal <objective> or /goal --max <n> <objective>`,triggers:[s]},command:s},{skill:{name:`plan`,type:`agentskills`,source:null,content:`Switch the conversation into Plan mode, or start planning immediately with /plan <task>`,triggers:[c]},command:c},{skill:{name:`code`,type:`agentskills`,source:null,content:`Switch the conversation back to Code mode, or resume immediately with /code <task>`,triggers:[l]},command:l}],d=[`The following information has been included`,`It may or may not be relevant`,`Skill location:`,`(Use this path to resolve`];exports.BTW_COMMAND=a,exports.BUILT_IN_COMMANDS=u,exports.CHAT_INPUT=r,exports.CODE_COMMAND=l,exports.EPS=i,exports.GOAL_COMMAND=s,exports.JSON_VIEW_THEME=e,exports.METADATA_PREFIXES=d,exports.MODEL_COMMAND=o,exports.PLAN_COMMAND=c,exports.PRODUCT_URL=t,exports.SETTINGS_FORM=n;
|
|
2
2
|
//# sourceMappingURL=constants.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs","names":[],"sources":["../../src/utils/constants.ts"],"sourcesContent":["import { SlashCommandItem } from \"#/hooks/chat/use-slash-command\";\n\nexport const JSON_VIEW_THEME = {\n base00: \"transparent\", // background\n base01: \"var(--cool-grey-900)\", // lighter background\n base02: \"var(--cool-grey-700)\", // selection background\n base03: \"var(--cool-grey-600)\", // comments, invisibles\n base04: \"var(--cool-grey-500)\", // dark foreground\n base05: \"var(--cool-grey-200)\", // default foreground\n base06: \"var(--cool-grey-100)\", // light foreground\n base07: \"#ffffff\", // light background\n base08: \"#ff5370\", // variables, red\n base09: \"#f78c6c\", // integers, orange\n base0A: \"#ffcb6b\", // booleans, yellow\n base0B: \"#c3e88d\", // strings, green\n base0C: \"#89ddff\", // support, cyan\n base0D: \"#82aaff\", // functions, blue\n base0E: \"#c792ea\", // keywords, purple\n base0F: \"#ff5370\", // deprecated, red\n};\n\nexport const PRODUCT_URL = {\n PRODUCTION: \"https://app.all-hands.dev\",\n};\n\nexport const SETTINGS_FORM = {\n LABEL_CLASSNAME: \"text-[11px] font-medium leading-4 tracking-[0.11px]\",\n};\n\n// Chat input constants\nexport const CHAT_INPUT = {\n HEIGHT_THRESHOLD: 100, // Height in pixels when suggestions should be hidden\n};\n\n// UI tolerance constants\nexport const EPS = 1.5; // px tolerance for \"near min\" height comparisons\n\n/** The /btw slash command — asks a side question via the ask_agent endpoint. */\nexport const BTW_COMMAND = \"/btw\";\n\n/** The /model slash command — lists or switches the conversation's LLM profile. */\nexport const MODEL_COMMAND = \"/model\";\n\n/** The /goal slash command — drives the agent toward an objective, judging completion each round. */\nexport const GOAL_COMMAND = \"/goal\";\n\n/** Built-in slash commands surfaced in the menu for V1 conversations. */\nexport const BUILT_IN_COMMANDS: SlashCommandItem[] = [\n {\n skill: {\n name: \"new\",\n type: \"agentskills\",\n source: null,\n content: \"Creates a new conversation using the same runtime\",\n triggers: [\"/new\"],\n },\n command: \"/new\",\n },\n {\n skill: {\n name: \"btw\",\n type: \"agentskills\",\n source: null,\n content: \"Ask the agent a side question without derailing the main task\",\n triggers: [BTW_COMMAND],\n },\n command: BTW_COMMAND,\n },\n {\n skill: {\n name: \"model\",\n type: \"agentskills\",\n source: null,\n content:\n \"List saved LLM profiles, or switch the conversation LLM profile with /model <name>\",\n triggers: [MODEL_COMMAND],\n },\n command: MODEL_COMMAND,\n },\n {\n skill: {\n name: \"goal\",\n type: \"agentskills\",\n source: null,\n content:\n \"Drive the agent toward an objective until a judge says it's done — /goal <objective> or /goal --max <n> <objective>\",\n triggers: [GOAL_COMMAND],\n },\n command: GOAL_COMMAND,\n },\n];\n\n// Skill content metadata prefixes\nexport const METADATA_PREFIXES: readonly string[] = [\n \"The following information has been included\",\n \"It may or may not be relevant\",\n \"Skill location:\",\n \"(Use this path to resolve\",\n];\n"],"mappings":"6CAEA,IAAa,EAAkB,CAC7B,OAAQ,cACR,OAAQ,uBACR,OAAQ,uBACR,OAAQ,uBACR,OAAQ,uBACR,OAAQ,uBACR,OAAQ,uBACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,SACV,EAEa,EAAc,CACzB,WAAY,2BACd,EAEa,EAAgB,CAC3B,gBAAiB,qDACnB,EAGa,EAAa,CACxB,iBAAkB,GACpB,EAGa,EAAM,IAGN,EAAc,OAGd,EAAgB,SAGhB,EAAe,QAGf,EAAwC,CACnD,CACE,MAAO,CACL,KAAM,MACN,KAAM,cACN,OAAQ,KACR,QAAS,oDACT,SAAU,CAAC,MAAM,CACnB,EACA,QAAS,MACX,EACA,CACE,MAAO,CACL,KAAM,MACN,KAAM,cACN,OAAQ,KACR,QAAS,gEACT,SAAU,CAAC,CAAW,CACxB,EACA,QAAS,CACX,EACA,CACE,MAAO,CACL,KAAM,QACN,KAAM,cACN,OAAQ,KACR,QACE,qFACF,SAAU,CAAC,CAAa,CAC1B,EACA,QAAS,CACX,EACA,CACE,MAAO,CACL,KAAM,OACN,KAAM,cACN,OAAQ,KACR,QACE,sHACF,SAAU,CAAC,CAAY,CACzB,EACA,QAAS,CACX,CACF,EAGa,EAAuC,CAClD,8CACA,gCACA,kBACA,2BACF"}
|
|
1
|
+
{"version":3,"file":"constants.cjs","names":[],"sources":["../../src/utils/constants.ts"],"sourcesContent":["import { SlashCommandItem } from \"#/hooks/chat/use-slash-command\";\n\nexport const JSON_VIEW_THEME = {\n base00: \"transparent\", // background\n base01: \"var(--cool-grey-900)\", // lighter background\n base02: \"var(--cool-grey-700)\", // selection background\n base03: \"var(--cool-grey-600)\", // comments, invisibles\n base04: \"var(--cool-grey-500)\", // dark foreground\n base05: \"var(--cool-grey-200)\", // default foreground\n base06: \"var(--cool-grey-100)\", // light foreground\n base07: \"#ffffff\", // light background\n base08: \"#ff5370\", // variables, red\n base09: \"#f78c6c\", // integers, orange\n base0A: \"#ffcb6b\", // booleans, yellow\n base0B: \"#c3e88d\", // strings, green\n base0C: \"#89ddff\", // support, cyan\n base0D: \"#82aaff\", // functions, blue\n base0E: \"#c792ea\", // keywords, purple\n base0F: \"#ff5370\", // deprecated, red\n};\n\nexport const PRODUCT_URL = {\n PRODUCTION: \"https://app.all-hands.dev\",\n};\n\nexport const SETTINGS_FORM = {\n LABEL_CLASSNAME: \"text-[11px] font-medium leading-4 tracking-[0.11px]\",\n};\n\n// Chat input constants\nexport const CHAT_INPUT = {\n HEIGHT_THRESHOLD: 100, // Height in pixels when suggestions should be hidden\n};\n\n// UI tolerance constants\nexport const EPS = 1.5; // px tolerance for \"near min\" height comparisons\n\n/** The /btw slash command — asks a side question via the ask_agent endpoint. */\nexport const BTW_COMMAND = \"/btw\";\n\n/** The /model slash command — lists or switches the conversation's LLM profile. */\nexport const MODEL_COMMAND = \"/model\";\n\n/** The /goal slash command — drives the agent toward an objective, judging completion each round. */\nexport const GOAL_COMMAND = \"/goal\";\n\n/** The /plan slash command — switches the conversation into Plan mode. */\nexport const PLAN_COMMAND = \"/plan\";\n\n/** The /code slash command — switches the conversation back to Code mode. */\nexport const CODE_COMMAND = \"/code\";\n\n/** Built-in slash commands surfaced in the menu for V1 conversations. */\nexport const BUILT_IN_COMMANDS: SlashCommandItem[] = [\n {\n skill: {\n name: \"new\",\n type: \"agentskills\",\n source: null,\n content: \"Creates a new conversation using the same runtime\",\n triggers: [\"/new\"],\n },\n command: \"/new\",\n },\n {\n skill: {\n name: \"btw\",\n type: \"agentskills\",\n source: null,\n content: \"Ask the agent a side question without derailing the main task\",\n triggers: [BTW_COMMAND],\n },\n command: BTW_COMMAND,\n },\n {\n skill: {\n name: \"model\",\n type: \"agentskills\",\n source: null,\n content:\n \"List saved LLM profiles, or switch the conversation LLM profile with /model <name>\",\n triggers: [MODEL_COMMAND],\n },\n command: MODEL_COMMAND,\n },\n {\n skill: {\n name: \"goal\",\n type: \"agentskills\",\n source: null,\n content:\n \"Drive the agent toward an objective until a judge says it's done — /goal <objective> or /goal --max <n> <objective>\",\n triggers: [GOAL_COMMAND],\n },\n command: GOAL_COMMAND,\n },\n {\n skill: {\n name: \"plan\",\n type: \"agentskills\",\n source: null,\n content:\n \"Switch the conversation into Plan mode, or start planning immediately with /plan <task>\",\n triggers: [PLAN_COMMAND],\n },\n command: PLAN_COMMAND,\n },\n {\n skill: {\n name: \"code\",\n type: \"agentskills\",\n source: null,\n content:\n \"Switch the conversation back to Code mode, or resume immediately with /code <task>\",\n triggers: [CODE_COMMAND],\n },\n command: CODE_COMMAND,\n },\n];\n\n// Skill content metadata prefixes\nexport const METADATA_PREFIXES: readonly string[] = [\n \"The following information has been included\",\n \"It may or may not be relevant\",\n \"Skill location:\",\n \"(Use this path to resolve\",\n];\n"],"mappings":"6CAEA,IAAa,EAAkB,CAC7B,OAAQ,cACR,OAAQ,uBACR,OAAQ,uBACR,OAAQ,uBACR,OAAQ,uBACR,OAAQ,uBACR,OAAQ,uBACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,SACV,EAEa,EAAc,CACzB,WAAY,2BACd,EAEa,EAAgB,CAC3B,gBAAiB,qDACnB,EAGa,EAAa,CACxB,iBAAkB,GACpB,EAGa,EAAM,IAGN,EAAc,OAGd,EAAgB,SAGhB,EAAe,QAGf,EAAe,QAGf,EAAe,QAGf,EAAwC,CACnD,CACE,MAAO,CACL,KAAM,MACN,KAAM,cACN,OAAQ,KACR,QAAS,oDACT,SAAU,CAAC,MAAM,CACnB,EACA,QAAS,MACX,EACA,CACE,MAAO,CACL,KAAM,MACN,KAAM,cACN,OAAQ,KACR,QAAS,gEACT,SAAU,CAAC,CAAW,CACxB,EACA,QAAS,CACX,EACA,CACE,MAAO,CACL,KAAM,QACN,KAAM,cACN,OAAQ,KACR,QACE,qFACF,SAAU,CAAC,CAAa,CAC1B,EACA,QAAS,CACX,EACA,CACE,MAAO,CACL,KAAM,OACN,KAAM,cACN,OAAQ,KACR,QACE,sHACF,SAAU,CAAC,CAAY,CACzB,EACA,QAAS,CACX,EACA,CACE,MAAO,CACL,KAAM,OACN,KAAM,cACN,OAAQ,KACR,QACE,0FACF,SAAU,CAAC,CAAY,CACzB,EACA,QAAS,CACX,EACA,CACE,MAAO,CACL,KAAM,OACN,KAAM,cACN,OAAQ,KACR,QACE,qFACF,SAAU,CAAC,CAAY,CACzB,EACA,QAAS,CACX,CACF,EAGa,EAAuC,CAClD,8CACA,gCACA,kBACA,2BACF"}
|
|
@@ -33,6 +33,10 @@ export declare const BTW_COMMAND = "/btw";
|
|
|
33
33
|
export declare const MODEL_COMMAND = "/model";
|
|
34
34
|
/** The /goal slash command — drives the agent toward an objective, judging completion each round. */
|
|
35
35
|
export declare const GOAL_COMMAND = "/goal";
|
|
36
|
+
/** The /plan slash command — switches the conversation into Plan mode. */
|
|
37
|
+
export declare const PLAN_COMMAND = "/plan";
|
|
38
|
+
/** The /code slash command — switches the conversation back to Code mode. */
|
|
39
|
+
export declare const CODE_COMMAND = "/code";
|
|
36
40
|
/** Built-in slash commands surfaced in the menu for V1 conversations. */
|
|
37
41
|
export declare const BUILT_IN_COMMANDS: SlashCommandItem[];
|
|
38
42
|
export declare const METADATA_PREFIXES: readonly string[];
|
package/dist/utils/constants.js
CHANGED
|
@@ -16,7 +16,7 @@ var e = {
|
|
|
16
16
|
base0D: "#82aaff",
|
|
17
17
|
base0E: "#c792ea",
|
|
18
18
|
base0F: "#ff5370"
|
|
19
|
-
}, t = { PRODUCTION: "https://app.all-hands.dev" }, n = { LABEL_CLASSNAME: "text-[11px] font-medium leading-4 tracking-[0.11px]" }, r = { HEIGHT_THRESHOLD: 100 }, i = 1.5, a = "/btw", o = "/model", s = "/goal", c = [
|
|
19
|
+
}, t = { PRODUCTION: "https://app.all-hands.dev" }, n = { LABEL_CLASSNAME: "text-[11px] font-medium leading-4 tracking-[0.11px]" }, r = { HEIGHT_THRESHOLD: 100 }, i = 1.5, a = "/btw", o = "/model", s = "/goal", c = "/plan", l = "/code", u = [
|
|
20
20
|
{
|
|
21
21
|
skill: {
|
|
22
22
|
name: "new",
|
|
@@ -56,14 +56,34 @@ var e = {
|
|
|
56
56
|
triggers: [s]
|
|
57
57
|
},
|
|
58
58
|
command: s
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
skill: {
|
|
62
|
+
name: "plan",
|
|
63
|
+
type: "agentskills",
|
|
64
|
+
source: null,
|
|
65
|
+
content: "Switch the conversation into Plan mode, or start planning immediately with /plan <task>",
|
|
66
|
+
triggers: [c]
|
|
67
|
+
},
|
|
68
|
+
command: c
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
skill: {
|
|
72
|
+
name: "code",
|
|
73
|
+
type: "agentskills",
|
|
74
|
+
source: null,
|
|
75
|
+
content: "Switch the conversation back to Code mode, or resume immediately with /code <task>",
|
|
76
|
+
triggers: [l]
|
|
77
|
+
},
|
|
78
|
+
command: l
|
|
59
79
|
}
|
|
60
|
-
],
|
|
80
|
+
], d = [
|
|
61
81
|
"The following information has been included",
|
|
62
82
|
"It may or may not be relevant",
|
|
63
83
|
"Skill location:",
|
|
64
84
|
"(Use this path to resolve"
|
|
65
85
|
];
|
|
66
86
|
//#endregion
|
|
67
|
-
export { a as BTW_COMMAND,
|
|
87
|
+
export { a as BTW_COMMAND, u as BUILT_IN_COMMANDS, r as CHAT_INPUT, l as CODE_COMMAND, i as EPS, s as GOAL_COMMAND, e as JSON_VIEW_THEME, d as METADATA_PREFIXES, o as MODEL_COMMAND, c as PLAN_COMMAND, t as PRODUCT_URL, n as SETTINGS_FORM };
|
|
68
88
|
|
|
69
89
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":[],"sources":["../../src/utils/constants.ts"],"sourcesContent":["import { SlashCommandItem } from \"#/hooks/chat/use-slash-command\";\n\nexport const JSON_VIEW_THEME = {\n base00: \"transparent\", // background\n base01: \"var(--cool-grey-900)\", // lighter background\n base02: \"var(--cool-grey-700)\", // selection background\n base03: \"var(--cool-grey-600)\", // comments, invisibles\n base04: \"var(--cool-grey-500)\", // dark foreground\n base05: \"var(--cool-grey-200)\", // default foreground\n base06: \"var(--cool-grey-100)\", // light foreground\n base07: \"#ffffff\", // light background\n base08: \"#ff5370\", // variables, red\n base09: \"#f78c6c\", // integers, orange\n base0A: \"#ffcb6b\", // booleans, yellow\n base0B: \"#c3e88d\", // strings, green\n base0C: \"#89ddff\", // support, cyan\n base0D: \"#82aaff\", // functions, blue\n base0E: \"#c792ea\", // keywords, purple\n base0F: \"#ff5370\", // deprecated, red\n};\n\nexport const PRODUCT_URL = {\n PRODUCTION: \"https://app.all-hands.dev\",\n};\n\nexport const SETTINGS_FORM = {\n LABEL_CLASSNAME: \"text-[11px] font-medium leading-4 tracking-[0.11px]\",\n};\n\n// Chat input constants\nexport const CHAT_INPUT = {\n HEIGHT_THRESHOLD: 100, // Height in pixels when suggestions should be hidden\n};\n\n// UI tolerance constants\nexport const EPS = 1.5; // px tolerance for \"near min\" height comparisons\n\n/** The /btw slash command — asks a side question via the ask_agent endpoint. */\nexport const BTW_COMMAND = \"/btw\";\n\n/** The /model slash command — lists or switches the conversation's LLM profile. */\nexport const MODEL_COMMAND = \"/model\";\n\n/** The /goal slash command — drives the agent toward an objective, judging completion each round. */\nexport const GOAL_COMMAND = \"/goal\";\n\n/** Built-in slash commands surfaced in the menu for V1 conversations. */\nexport const BUILT_IN_COMMANDS: SlashCommandItem[] = [\n {\n skill: {\n name: \"new\",\n type: \"agentskills\",\n source: null,\n content: \"Creates a new conversation using the same runtime\",\n triggers: [\"/new\"],\n },\n command: \"/new\",\n },\n {\n skill: {\n name: \"btw\",\n type: \"agentskills\",\n source: null,\n content: \"Ask the agent a side question without derailing the main task\",\n triggers: [BTW_COMMAND],\n },\n command: BTW_COMMAND,\n },\n {\n skill: {\n name: \"model\",\n type: \"agentskills\",\n source: null,\n content:\n \"List saved LLM profiles, or switch the conversation LLM profile with /model <name>\",\n triggers: [MODEL_COMMAND],\n },\n command: MODEL_COMMAND,\n },\n {\n skill: {\n name: \"goal\",\n type: \"agentskills\",\n source: null,\n content:\n \"Drive the agent toward an objective until a judge says it's done — /goal <objective> or /goal --max <n> <objective>\",\n triggers: [GOAL_COMMAND],\n },\n command: GOAL_COMMAND,\n },\n];\n\n// Skill content metadata prefixes\nexport const METADATA_PREFIXES: readonly string[] = [\n \"The following information has been included\",\n \"It may or may not be relevant\",\n \"Skill location:\",\n \"(Use this path to resolve\",\n];\n"],"mappings":";AAEA,IAAa,IAAkB;CAC7B,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;AACV,GAEa,IAAc,EACzB,YAAY,4BACd,GAEa,IAAgB,EAC3B,iBAAiB,sDACnB,GAGa,IAAa,EACxB,kBAAkB,IACpB,GAGa,IAAM,KAGN,IAAc,QAGd,IAAgB,UAGhB,IAAe,SAGf,IAAwC;CACnD;EACE,OAAO;GACL,MAAM;GACN,MAAM;GACN,QAAQ;GACR,SAAS;GACT,UAAU,CAAC,MAAM;EACnB;EACA,SAAS;CACX;CACA;EACE,OAAO;GACL,MAAM;GACN,MAAM;GACN,QAAQ;GACR,SAAS;GACT,UAAU,CAAC,CAAW;EACxB;EACA,SAAS;CACX;CACA;EACE,OAAO;GACL,MAAM;GACN,MAAM;GACN,QAAQ;GACR,SACE;GACF,UAAU,CAAC,CAAa;EAC1B;EACA,SAAS;CACX;CACA;EACE,OAAO;GACL,MAAM;GACN,MAAM;GACN,QAAQ;GACR,SACE;GACF,UAAU,CAAC,CAAY;EACzB;EACA,SAAS;CACX;AACF,GAGa,IAAuC;CAClD;CACA;CACA;CACA;AACF"}
|
|
1
|
+
{"version":3,"file":"constants.js","names":[],"sources":["../../src/utils/constants.ts"],"sourcesContent":["import { SlashCommandItem } from \"#/hooks/chat/use-slash-command\";\n\nexport const JSON_VIEW_THEME = {\n base00: \"transparent\", // background\n base01: \"var(--cool-grey-900)\", // lighter background\n base02: \"var(--cool-grey-700)\", // selection background\n base03: \"var(--cool-grey-600)\", // comments, invisibles\n base04: \"var(--cool-grey-500)\", // dark foreground\n base05: \"var(--cool-grey-200)\", // default foreground\n base06: \"var(--cool-grey-100)\", // light foreground\n base07: \"#ffffff\", // light background\n base08: \"#ff5370\", // variables, red\n base09: \"#f78c6c\", // integers, orange\n base0A: \"#ffcb6b\", // booleans, yellow\n base0B: \"#c3e88d\", // strings, green\n base0C: \"#89ddff\", // support, cyan\n base0D: \"#82aaff\", // functions, blue\n base0E: \"#c792ea\", // keywords, purple\n base0F: \"#ff5370\", // deprecated, red\n};\n\nexport const PRODUCT_URL = {\n PRODUCTION: \"https://app.all-hands.dev\",\n};\n\nexport const SETTINGS_FORM = {\n LABEL_CLASSNAME: \"text-[11px] font-medium leading-4 tracking-[0.11px]\",\n};\n\n// Chat input constants\nexport const CHAT_INPUT = {\n HEIGHT_THRESHOLD: 100, // Height in pixels when suggestions should be hidden\n};\n\n// UI tolerance constants\nexport const EPS = 1.5; // px tolerance for \"near min\" height comparisons\n\n/** The /btw slash command — asks a side question via the ask_agent endpoint. */\nexport const BTW_COMMAND = \"/btw\";\n\n/** The /model slash command — lists or switches the conversation's LLM profile. */\nexport const MODEL_COMMAND = \"/model\";\n\n/** The /goal slash command — drives the agent toward an objective, judging completion each round. */\nexport const GOAL_COMMAND = \"/goal\";\n\n/** The /plan slash command — switches the conversation into Plan mode. */\nexport const PLAN_COMMAND = \"/plan\";\n\n/** The /code slash command — switches the conversation back to Code mode. */\nexport const CODE_COMMAND = \"/code\";\n\n/** Built-in slash commands surfaced in the menu for V1 conversations. */\nexport const BUILT_IN_COMMANDS: SlashCommandItem[] = [\n {\n skill: {\n name: \"new\",\n type: \"agentskills\",\n source: null,\n content: \"Creates a new conversation using the same runtime\",\n triggers: [\"/new\"],\n },\n command: \"/new\",\n },\n {\n skill: {\n name: \"btw\",\n type: \"agentskills\",\n source: null,\n content: \"Ask the agent a side question without derailing the main task\",\n triggers: [BTW_COMMAND],\n },\n command: BTW_COMMAND,\n },\n {\n skill: {\n name: \"model\",\n type: \"agentskills\",\n source: null,\n content:\n \"List saved LLM profiles, or switch the conversation LLM profile with /model <name>\",\n triggers: [MODEL_COMMAND],\n },\n command: MODEL_COMMAND,\n },\n {\n skill: {\n name: \"goal\",\n type: \"agentskills\",\n source: null,\n content:\n \"Drive the agent toward an objective until a judge says it's done — /goal <objective> or /goal --max <n> <objective>\",\n triggers: [GOAL_COMMAND],\n },\n command: GOAL_COMMAND,\n },\n {\n skill: {\n name: \"plan\",\n type: \"agentskills\",\n source: null,\n content:\n \"Switch the conversation into Plan mode, or start planning immediately with /plan <task>\",\n triggers: [PLAN_COMMAND],\n },\n command: PLAN_COMMAND,\n },\n {\n skill: {\n name: \"code\",\n type: \"agentskills\",\n source: null,\n content:\n \"Switch the conversation back to Code mode, or resume immediately with /code <task>\",\n triggers: [CODE_COMMAND],\n },\n command: CODE_COMMAND,\n },\n];\n\n// Skill content metadata prefixes\nexport const METADATA_PREFIXES: readonly string[] = [\n \"The following information has been included\",\n \"It may or may not be relevant\",\n \"Skill location:\",\n \"(Use this path to resolve\",\n];\n"],"mappings":";AAEA,IAAa,IAAkB;CAC7B,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;AACV,GAEa,IAAc,EACzB,YAAY,4BACd,GAEa,IAAgB,EAC3B,iBAAiB,sDACnB,GAGa,IAAa,EACxB,kBAAkB,IACpB,GAGa,IAAM,KAGN,IAAc,QAGd,IAAgB,UAGhB,IAAe,SAGf,IAAe,SAGf,IAAe,SAGf,IAAwC;CACnD;EACE,OAAO;GACL,MAAM;GACN,MAAM;GACN,QAAQ;GACR,SAAS;GACT,UAAU,CAAC,MAAM;EACnB;EACA,SAAS;CACX;CACA;EACE,OAAO;GACL,MAAM;GACN,MAAM;GACN,QAAQ;GACR,SAAS;GACT,UAAU,CAAC,CAAW;EACxB;EACA,SAAS;CACX;CACA;EACE,OAAO;GACL,MAAM;GACN,MAAM;GACN,QAAQ;GACR,SACE;GACF,UAAU,CAAC,CAAa;EAC1B;EACA,SAAS;CACX;CACA;EACE,OAAO;GACL,MAAM;GACN,MAAM;GACN,QAAQ;GACR,SACE;GACF,UAAU,CAAC,CAAY;EACzB;EACA,SAAS;CACX;CACA;EACE,OAAO;GACL,MAAM;GACN,MAAM;GACN,QAAQ;GACR,SACE;GACF,UAAU,CAAC,CAAY;EACzB;EACA,SAAS;CACX;CACA;EACE,OAAO;GACL,MAAM;GACN,MAAM;GACN,QAAQ;GACR,SACE;GACF,UAAU,CAAC,CAAY;EACzB;EACA,SAAS;CACX;AACF,GAGa,IAAuC;CAClD;CACA;CACA;CACA;AACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");function e(e,t){if(!e)return null;let n=/(?:Z|[+-]\d{2}:?\d{2})$/i.test(e)?e:`${e}Z`,r=new Date(n);return Number.isNaN(r.getTime())?null:r.toLocaleString(t,{dateStyle:`medium`,timeStyle:`short`})}exports.formatEventTimestamp=e;
|
|
2
|
+
//# sourceMappingURL=format-event-timestamp.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-event-timestamp.cjs","names":[],"sources":["../../src/utils/format-event-timestamp.ts"],"sourcesContent":["export function formatEventTimestamp(\n timestamp?: string,\n locale?: string,\n): string | null {\n if (!timestamp) return null;\n\n // Agent-server events carry datetime.now().isoformat(), which has no offset.\n // Left alone the browser reads that wall-clock as its own local time, so an\n // event recorded in a UTC sandbox renders hours off for anyone outside UTC.\n const utc = /(?:Z|[+-]\\d{2}:?\\d{2})$/i.test(timestamp)\n ? timestamp\n : `${timestamp}Z`;\n const date = new Date(utc);\n if (Number.isNaN(date.getTime())) return null;\n\n return date.toLocaleString(locale, {\n dateStyle: \"medium\",\n timeStyle: \"short\",\n });\n}\n"],"mappings":"6CAAA,SAAgB,EACd,EACA,EACe,CACf,GAAI,CAAC,EAAW,OAAO,KAKvB,IAAM,EAAM,2BAA2B,KAAK,CAAS,EACjD,EACA,GAAG,EAAU,GACX,EAAO,IAAI,KAAK,CAAG,EAGzB,OAFI,OAAO,MAAM,EAAK,QAAQ,CAAC,EAAU,KAElC,EAAK,eAAe,EAAQ,CACjC,UAAW,SACX,UAAW,OACb,CAAC,CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function formatEventTimestamp(timestamp?: string, locale?: string): string | null;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/utils/format-event-timestamp.ts
|
|
2
|
+
function e(e, t) {
|
|
3
|
+
if (!e) return null;
|
|
4
|
+
let n = /(?:Z|[+-]\d{2}:?\d{2})$/i.test(e) ? e : `${e}Z`, r = new Date(n);
|
|
5
|
+
return Number.isNaN(r.getTime()) ? null : r.toLocaleString(t, {
|
|
6
|
+
dateStyle: "medium",
|
|
7
|
+
timeStyle: "short"
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { e as formatEventTimestamp };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=format-event-timestamp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-event-timestamp.js","names":[],"sources":["../../src/utils/format-event-timestamp.ts"],"sourcesContent":["export function formatEventTimestamp(\n timestamp?: string,\n locale?: string,\n): string | null {\n if (!timestamp) return null;\n\n // Agent-server events carry datetime.now().isoformat(), which has no offset.\n // Left alone the browser reads that wall-clock as its own local time, so an\n // event recorded in a UTC sandbox renders hours off for anyone outside UTC.\n const utc = /(?:Z|[+-]\\d{2}:?\\d{2})$/i.test(timestamp)\n ? timestamp\n : `${timestamp}Z`;\n const date = new Date(utc);\n if (Number.isNaN(date.getTime())) return null;\n\n return date.toLocaleString(locale, {\n dateStyle: \"medium\",\n timeStyle: \"short\",\n });\n}\n"],"mappings":";AAAA,SAAgB,EACd,GACA,GACe;CACf,IAAI,CAAC,GAAW,OAAO;CAKvB,IAAM,IAAM,2BAA2B,KAAK,CAAS,IACjD,IACA,GAAG,EAAU,IACX,IAAO,IAAI,KAAK,CAAG;CAGzB,OAFI,OAAO,MAAM,EAAK,QAAQ,CAAC,IAAU,OAElC,EAAK,eAAe,GAAQ;EACjC,WAAW;EACX,WAAW;CACb,CAAC;AACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require("../_virtual/_rolldown/runtime.cjs");var e=`Free`,t={"openhands/deepseek-v4-flash":`OpenHands DeepSeek V4 Flash
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");var e=`Free`,t=` (free)`,n={"openhands/deepseek-v4-flash":`OpenHands DeepSeek V4 Flash`},r=new Set,i=e=>!!e?.startsWith(`openhands/`),a=(e,t=r)=>!!(e&&t.has(e));function o(e,n){return n?`${e}${t}`:e}function s(e,t=r){return e?o(e,a(e,t)):null}function c(e,t=r){if(!e)return null;let n=a(e,t);return o(e.split(`/`).pop()||e,n)}function l(e,t=r){return e?o(e in n?n[e]:e,a(e,t)):null}exports.FREE_MODEL_BADGE_LABEL=e,exports.formatModelNameForDisplay=s,exports.formatModelPillLabel=l,exports.formatNativeModelName=c,exports.isFreeOpenHandsModel=a,exports.isOpenHandsProviderModel=i;
|
|
2
2
|
//# sourceMappingURL=format-model-name.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-model-name.cjs","names":[],"sources":["../../src/utils/format-model-name.ts"],"sourcesContent":["export const FREE_MODEL_BADGE_LABEL = \"Free\";\n\nexport const FREE_OPENHANDS_MODELS = {\n \"openhands/deepseek-v4-flash\": \"OpenHands DeepSeek V4 Flash
|
|
1
|
+
{"version":3,"file":"format-model-name.cjs","names":[],"sources":["../../src/utils/format-model-name.ts"],"sourcesContent":["export const FREE_MODEL_BADGE_LABEL = \"Free\";\n\n/** Suffix appended to a display name for a DB-flagged free OpenHands model. */\nexport const FREE_MODEL_SUFFIX = \" (free)\";\n\n/**\n * Static pretty-print labels for OpenHands models known at build time. Free\n * status still comes only from the backend-provided `freeModels` set.\n */\nexport const FREE_OPENHANDS_MODELS = {\n \"openhands/deepseek-v4-flash\": \"OpenHands DeepSeek V4 Flash\",\n} as const;\n\nexport const FREE_OPENHANDS_MODEL_IDS = Object.keys(FREE_OPENHANDS_MODELS);\n\n/**\n * Set of free ``provider/model`` ids. The frontend no longer hardcodes which\n * OpenHands models are free — the set is sourced from the backend model list\n * (DB-driven), the same channel that carries `verified`. See\n * {@link useFreeModels}. Callers that lack the set treat every model as paid.\n */\nexport type FreeModelSet = ReadonlySet<string>;\n\nconst EMPTY_FREE_MODELS: FreeModelSet = new Set<string>();\n\n/**\n * Whether a model id routes through the OpenHands provider (the `openhands/`\n * prefix). On cloud the OpenHands provider is backed by a server-minted LLM\n * key rather than a user-supplied one, so callers use this to hide the inline\n * API key / base URL inputs and strip those fields from the save payload.\n */\nexport const isOpenHandsProviderModel = (\n model: string | null | undefined,\n): boolean => Boolean(model?.startsWith(\"openhands/\"));\n\nexport const isFreeOpenHandsModel = (\n model: string | null | undefined,\n freeModels: FreeModelSet = EMPTY_FREE_MODELS,\n): boolean => Boolean(model && freeModels.has(model));\n\nfunction appendFreeSuffix(display: string, isFree: boolean): string {\n return isFree ? `${display}${FREE_MODEL_SUFFIX}` : display;\n}\n\nexport function formatModelNameForDisplay(\n model: string | null | undefined,\n freeModels: FreeModelSet = EMPTY_FREE_MODELS,\n): string | null {\n if (!model) return null;\n return appendFreeSuffix(model, isFreeOpenHandsModel(model, freeModels));\n}\n\nexport function formatProviderModelNameForDisplay(\n provider: string | null | undefined,\n model: string | null | undefined,\n freeModels: FreeModelSet = EMPTY_FREE_MODELS,\n): string | null {\n if (!model) return null;\n const fullModel = provider ? `${provider}/${model}` : model;\n return appendFreeSuffix(model, isFreeOpenHandsModel(fullModel, freeModels));\n}\n\n/**\n * Format a native (OpenHands-kind) routing model string for display, stripping\n * the provider route prefix (e.g. ``\"anthropic/claude-sonnet-4-5-20250929\"`` →\n * ``\"claude-sonnet-4-5-20250929\"``, ``\"litellm_proxy/openai/gpt-4o\"`` →\n * ``\"gpt-4o\"``) so a conversation chip shows a meaningful model name rather than\n * the full routing path.\n *\n * Returns ``null`` for an empty/nullish input, and falls back to the original\n * string when stripping the prefix would leave nothing (e.g. a trailing slash)\n * — never an empty string, which would collapse the chip text.\n *\n * A DB-flagged free model (matched against ``freeModels`` on its full id) keeps\n * the free suffix so the chip still signals it is free.\n *\n * Display-only: unlike {@link deriveProfileNameFromModel} this does not sanitize\n * to an identifier, so it keeps the real model id intact for the chip.\n */\nexport function formatNativeModelName(\n model: string | null | undefined,\n freeModels: FreeModelSet = EMPTY_FREE_MODELS,\n): string | null {\n if (!model) return null;\n const isFree = isFreeOpenHandsModel(model, freeModels);\n const lastSegment = model.split(\"/\").pop();\n return appendFreeSuffix(lastSegment || model, isFree);\n}\n\n/**\n * Display label used by the LLM-profile picker sub-line. Looks up the model in\n * the static label table for a prettier name, but appends `(free)` only when the\n * backend-provided `freeModels` set marks the concrete model free.\n */\nexport function formatModelPillLabel(\n model: string | null | undefined,\n freeModels: FreeModelSet = EMPTY_FREE_MODELS,\n): string | null {\n if (!model) return null;\n const display =\n model in FREE_OPENHANDS_MODELS\n ? FREE_OPENHANDS_MODELS[model as keyof typeof FREE_OPENHANDS_MODELS]\n : model;\n return appendFreeSuffix(display, isFreeOpenHandsModel(model, freeModels));\n}\n"],"mappings":"6CAAA,IAAa,EAAyB,OAGzB,EAAoB,UAMpB,EAAwB,CACnC,8BAA+B,6BACjC,EAYM,EAAkC,IAAI,IAQ/B,EACX,GACY,EAAQ,GAAO,WAAW,YAAY,EAEvC,GACX,EACA,EAA2B,IACf,GAAQ,GAAS,EAAW,IAAI,CAAK,GAEnD,SAAS,EAAiB,EAAiB,EAAyB,CAClE,OAAO,EAAS,GAAG,IAAU,IAAsB,CACrD,CAEA,SAAgB,EACd,EACA,EAA2B,EACZ,CAEf,OADK,EACE,EAAiB,EAAO,EAAqB,EAAO,CAAU,CAAC,EADnD,IAErB,CA6BA,SAAgB,EACd,EACA,EAA2B,EACZ,CACf,GAAI,CAAC,EAAO,OAAO,KACnB,IAAM,EAAS,EAAqB,EAAO,CAAU,EAErD,OAAO,EADa,EAAM,MAAM,GAAG,EAAE,IACb,GAAe,EAAO,CAAM,CACtD,CAOA,SAAgB,EACd,EACA,EAA2B,EACZ,CAMf,OALK,EAKE,EAHL,KAAS,EACL,EAAsB,GACtB,EAC2B,EAAqB,EAAO,CAAU,CAAC,EALrD,IAMrB"}
|
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
export declare const FREE_MODEL_BADGE_LABEL = "Free";
|
|
2
|
+
/** Suffix appended to a display name for a DB-flagged free OpenHands model. */
|
|
3
|
+
export declare const FREE_MODEL_SUFFIX = " (free)";
|
|
4
|
+
/**
|
|
5
|
+
* Static pretty-print labels for OpenHands models known at build time. Free
|
|
6
|
+
* status still comes only from the backend-provided `freeModels` set.
|
|
7
|
+
*/
|
|
2
8
|
export declare const FREE_OPENHANDS_MODELS: {
|
|
3
|
-
readonly "openhands/deepseek-v4-flash": "OpenHands DeepSeek V4 Flash
|
|
9
|
+
readonly "openhands/deepseek-v4-flash": "OpenHands DeepSeek V4 Flash";
|
|
4
10
|
};
|
|
5
11
|
export declare const FREE_OPENHANDS_MODEL_IDS: string[];
|
|
12
|
+
/**
|
|
13
|
+
* Set of free ``provider/model`` ids. The frontend no longer hardcodes which
|
|
14
|
+
* OpenHands models are free — the set is sourced from the backend model list
|
|
15
|
+
* (DB-driven), the same channel that carries `verified`. See
|
|
16
|
+
* {@link useFreeModels}. Callers that lack the set treat every model as paid.
|
|
17
|
+
*/
|
|
18
|
+
export type FreeModelSet = ReadonlySet<string>;
|
|
6
19
|
/**
|
|
7
20
|
* Whether a model id routes through the OpenHands provider (the `openhands/`
|
|
8
21
|
* prefix). On cloud the OpenHands provider is backed by a server-minted LLM
|
|
@@ -10,10 +23,9 @@ export declare const FREE_OPENHANDS_MODEL_IDS: string[];
|
|
|
10
23
|
* API key / base URL inputs and strip those fields from the save payload.
|
|
11
24
|
*/
|
|
12
25
|
export declare const isOpenHandsProviderModel: (model: string | null | undefined) => boolean;
|
|
13
|
-
export declare const
|
|
14
|
-
export declare
|
|
15
|
-
export declare function
|
|
16
|
-
export declare function formatProviderModelNameForDisplay(provider: string | null | undefined, model: string | null | undefined): string | null;
|
|
26
|
+
export declare const isFreeOpenHandsModel: (model: string | null | undefined, freeModels?: FreeModelSet) => boolean;
|
|
27
|
+
export declare function formatModelNameForDisplay(model: string | null | undefined, freeModels?: FreeModelSet): string | null;
|
|
28
|
+
export declare function formatProviderModelNameForDisplay(provider: string | null | undefined, model: string | null | undefined, freeModels?: FreeModelSet): string | null;
|
|
17
29
|
/**
|
|
18
30
|
* Format a native (OpenHands-kind) routing model string for display, stripping
|
|
19
31
|
* the provider route prefix (e.g. ``"anthropic/claude-sonnet-4-5-20250929"`` →
|
|
@@ -25,7 +37,16 @@ export declare function formatProviderModelNameForDisplay(provider: string | nul
|
|
|
25
37
|
* string when stripping the prefix would leave nothing (e.g. a trailing slash)
|
|
26
38
|
* — never an empty string, which would collapse the chip text.
|
|
27
39
|
*
|
|
40
|
+
* A DB-flagged free model (matched against ``freeModels`` on its full id) keeps
|
|
41
|
+
* the free suffix so the chip still signals it is free.
|
|
42
|
+
*
|
|
28
43
|
* Display-only: unlike {@link deriveProfileNameFromModel} this does not sanitize
|
|
29
44
|
* to an identifier, so it keeps the real model id intact for the chip.
|
|
30
45
|
*/
|
|
31
|
-
export declare function formatNativeModelName(model: string | null | undefined): string | null;
|
|
46
|
+
export declare function formatNativeModelName(model: string | null | undefined, freeModels?: FreeModelSet): string | null;
|
|
47
|
+
/**
|
|
48
|
+
* Display label used by the LLM-profile picker sub-line. Looks up the model in
|
|
49
|
+
* the static label table for a prettier name, but appends `(free)` only when the
|
|
50
|
+
* backend-provided `freeModels` set marks the concrete model free.
|
|
51
|
+
*/
|
|
52
|
+
export declare function formatModelPillLabel(model: string | null | undefined, freeModels?: FreeModelSet): string | null;
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
//#region src/utils/format-model-name.ts
|
|
2
|
-
var e = "Free", t = { "openhands/deepseek-v4-flash": "OpenHands DeepSeek V4 Flash
|
|
3
|
-
function o(e) {
|
|
4
|
-
return
|
|
2
|
+
var e = "Free", t = " (free)", n = { "openhands/deepseek-v4-flash": "OpenHands DeepSeek V4 Flash" }, r = /* @__PURE__ */ new Set(), i = (e) => !!e?.startsWith("openhands/"), a = (e, t = r) => !!(e && t.has(e));
|
|
3
|
+
function o(e, n) {
|
|
4
|
+
return n ? `${e}${t}` : e;
|
|
5
5
|
}
|
|
6
|
-
function s(e) {
|
|
7
|
-
return e ? a(e
|
|
6
|
+
function s(e, t = r) {
|
|
7
|
+
return e ? o(e, a(e, t)) : null;
|
|
8
|
+
}
|
|
9
|
+
function c(e, t = r) {
|
|
10
|
+
if (!e) return null;
|
|
11
|
+
let n = a(e, t);
|
|
12
|
+
return o(e.split("/").pop() || e, n);
|
|
13
|
+
}
|
|
14
|
+
function l(e, t = r) {
|
|
15
|
+
return e ? o(e in n ? n[e] : e, a(e, t)) : null;
|
|
8
16
|
}
|
|
9
17
|
//#endregion
|
|
10
|
-
export { e as FREE_MODEL_BADGE_LABEL,
|
|
18
|
+
export { e as FREE_MODEL_BADGE_LABEL, s as formatModelNameForDisplay, l as formatModelPillLabel, c as formatNativeModelName, a as isFreeOpenHandsModel, i as isOpenHandsProviderModel };
|
|
11
19
|
|
|
12
20
|
//# sourceMappingURL=format-model-name.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-model-name.js","names":[],"sources":["../../src/utils/format-model-name.ts"],"sourcesContent":["export const FREE_MODEL_BADGE_LABEL = \"Free\";\n\nexport const FREE_OPENHANDS_MODELS = {\n \"openhands/deepseek-v4-flash\": \"OpenHands DeepSeek V4 Flash
|
|
1
|
+
{"version":3,"file":"format-model-name.js","names":[],"sources":["../../src/utils/format-model-name.ts"],"sourcesContent":["export const FREE_MODEL_BADGE_LABEL = \"Free\";\n\n/** Suffix appended to a display name for a DB-flagged free OpenHands model. */\nexport const FREE_MODEL_SUFFIX = \" (free)\";\n\n/**\n * Static pretty-print labels for OpenHands models known at build time. Free\n * status still comes only from the backend-provided `freeModels` set.\n */\nexport const FREE_OPENHANDS_MODELS = {\n \"openhands/deepseek-v4-flash\": \"OpenHands DeepSeek V4 Flash\",\n} as const;\n\nexport const FREE_OPENHANDS_MODEL_IDS = Object.keys(FREE_OPENHANDS_MODELS);\n\n/**\n * Set of free ``provider/model`` ids. The frontend no longer hardcodes which\n * OpenHands models are free — the set is sourced from the backend model list\n * (DB-driven), the same channel that carries `verified`. See\n * {@link useFreeModels}. Callers that lack the set treat every model as paid.\n */\nexport type FreeModelSet = ReadonlySet<string>;\n\nconst EMPTY_FREE_MODELS: FreeModelSet = new Set<string>();\n\n/**\n * Whether a model id routes through the OpenHands provider (the `openhands/`\n * prefix). On cloud the OpenHands provider is backed by a server-minted LLM\n * key rather than a user-supplied one, so callers use this to hide the inline\n * API key / base URL inputs and strip those fields from the save payload.\n */\nexport const isOpenHandsProviderModel = (\n model: string | null | undefined,\n): boolean => Boolean(model?.startsWith(\"openhands/\"));\n\nexport const isFreeOpenHandsModel = (\n model: string | null | undefined,\n freeModels: FreeModelSet = EMPTY_FREE_MODELS,\n): boolean => Boolean(model && freeModels.has(model));\n\nfunction appendFreeSuffix(display: string, isFree: boolean): string {\n return isFree ? `${display}${FREE_MODEL_SUFFIX}` : display;\n}\n\nexport function formatModelNameForDisplay(\n model: string | null | undefined,\n freeModels: FreeModelSet = EMPTY_FREE_MODELS,\n): string | null {\n if (!model) return null;\n return appendFreeSuffix(model, isFreeOpenHandsModel(model, freeModels));\n}\n\nexport function formatProviderModelNameForDisplay(\n provider: string | null | undefined,\n model: string | null | undefined,\n freeModels: FreeModelSet = EMPTY_FREE_MODELS,\n): string | null {\n if (!model) return null;\n const fullModel = provider ? `${provider}/${model}` : model;\n return appendFreeSuffix(model, isFreeOpenHandsModel(fullModel, freeModels));\n}\n\n/**\n * Format a native (OpenHands-kind) routing model string for display, stripping\n * the provider route prefix (e.g. ``\"anthropic/claude-sonnet-4-5-20250929\"`` →\n * ``\"claude-sonnet-4-5-20250929\"``, ``\"litellm_proxy/openai/gpt-4o\"`` →\n * ``\"gpt-4o\"``) so a conversation chip shows a meaningful model name rather than\n * the full routing path.\n *\n * Returns ``null`` for an empty/nullish input, and falls back to the original\n * string when stripping the prefix would leave nothing (e.g. a trailing slash)\n * — never an empty string, which would collapse the chip text.\n *\n * A DB-flagged free model (matched against ``freeModels`` on its full id) keeps\n * the free suffix so the chip still signals it is free.\n *\n * Display-only: unlike {@link deriveProfileNameFromModel} this does not sanitize\n * to an identifier, so it keeps the real model id intact for the chip.\n */\nexport function formatNativeModelName(\n model: string | null | undefined,\n freeModels: FreeModelSet = EMPTY_FREE_MODELS,\n): string | null {\n if (!model) return null;\n const isFree = isFreeOpenHandsModel(model, freeModels);\n const lastSegment = model.split(\"/\").pop();\n return appendFreeSuffix(lastSegment || model, isFree);\n}\n\n/**\n * Display label used by the LLM-profile picker sub-line. Looks up the model in\n * the static label table for a prettier name, but appends `(free)` only when the\n * backend-provided `freeModels` set marks the concrete model free.\n */\nexport function formatModelPillLabel(\n model: string | null | undefined,\n freeModels: FreeModelSet = EMPTY_FREE_MODELS,\n): string | null {\n if (!model) return null;\n const display =\n model in FREE_OPENHANDS_MODELS\n ? FREE_OPENHANDS_MODELS[model as keyof typeof FREE_OPENHANDS_MODELS]\n : model;\n return appendFreeSuffix(display, isFreeOpenHandsModel(model, freeModels));\n}\n"],"mappings":";AAAA,IAAa,IAAyB,QAGzB,IAAoB,WAMpB,IAAwB,EACnC,+BAA+B,8BACjC,GAYM,oBAAkC,IAAI,IAAY,GAQ3C,KACX,MACY,EAAQ,GAAO,WAAW,YAAY,GAEvC,KACX,GACA,IAA2B,MACf,GAAQ,KAAS,EAAW,IAAI,CAAK;AAEnD,SAAS,EAAiB,GAAiB,GAAyB;CAClE,OAAO,IAAS,GAAG,IAAU,MAAsB;AACrD;AAEA,SAAgB,EACd,GACA,IAA2B,GACZ;CAEf,OADK,IACE,EAAiB,GAAO,EAAqB,GAAO,CAAU,CAAC,IADnD;AAErB;AA6BA,SAAgB,EACd,GACA,IAA2B,GACZ;CACf,IAAI,CAAC,GAAO,OAAO;CACnB,IAAM,IAAS,EAAqB,GAAO,CAAU;CAErD,OAAO,EADa,EAAM,MAAM,GAAG,EAAE,IACb,KAAe,GAAO,CAAM;AACtD;AAOA,SAAgB,EACd,GACA,IAA2B,GACZ;CAMf,OALK,IAKE,EAHL,KAAS,IACL,EAAsB,KACtB,GAC2B,EAAqB,GAAO,CAAU,CAAC,IALrD;AAMrB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require("../_virtual/_rolldown/runtime.cjs");function e(e){let t=0,n=0;for(let
|
|
2
|
-
`))
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");function e(e){let t=0,n=0,r=!1;for(let i of e.split(`
|
|
2
|
+
`)){if(i.startsWith(`diff --git`)||i.startsWith(`index `)){r=!1;continue}if(i.startsWith(`@@`)){r=!0;continue}!r&&(i.startsWith(`---`)||i.startsWith(`+++`))||r&&(i.startsWith(`+`)?t+=1:i.startsWith(`-`)&&(n+=1))}return{additions:t,deletions:n}}function t(e,t){let n=e.length===0?[]:e.split(`
|
|
3
3
|
`),r=t.length===0?[]:t.split(`
|
|
4
4
|
`);if(n.length===0)return{additions:r.length,deletions:0};if(r.length===0)return{additions:0,deletions:n.length};let i=0,a=0,o=0,s=0;for(;o<n.length||s<r.length;){let e=n[o],t=r[s];if(o<n.length&&s<r.length&&e===t){o+=1,s+=1;continue}if(s<r.length&&(o>=n.length||!n.slice(o).includes(t))){i+=1,s+=1;continue}o<n.length&&(a+=1,o+=1)}return{additions:i,deletions:a}}function n(n){return typeof n.diff==`string`&&n.diff.length>0?e(n.diff):t(n.original??``,n.modified??``)}function r(e){return e.reduce((e,t)=>({additions:e.additions+t.additions,deletions:e.deletions+t.deletions}),{additions:0,deletions:0})}exports.countGitChangeDiffStats=n,exports.sumGitDiffLineStats=r;
|
|
5
5
|
//# sourceMappingURL=git-diff-stats.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-diff-stats.cjs","names":[],"sources":["../../src/utils/git-diff-stats.ts"],"sourcesContent":["import type { GitChangeDiff } from \"#/api/open-hands.types\";\n\nexport interface GitDiffLineStats {\n additions: number;\n deletions: number;\n}\n\
|
|
1
|
+
{"version":3,"file":"git-diff-stats.cjs","names":[],"sources":["../../src/utils/git-diff-stats.ts"],"sourcesContent":["import type { GitChangeDiff } from \"#/api/open-hands.types\";\n\nexport interface GitDiffLineStats {\n additions: number;\n deletions: number;\n}\n\nexport function countUnifiedDiffStats(diff: string): {\n additions: number;\n deletions: number;\n} {\n let additions = 0;\n let deletions = 0;\n let inHunk = false;\n\n for (const line of diff.split(\"\\n\")) {\n if (line.startsWith(\"diff --git\") || line.startsWith(\"index \")) {\n inHunk = false;\n continue;\n }\n\n if (line.startsWith(\"@@\")) {\n inHunk = true;\n continue;\n }\n\n if (!inHunk) {\n if (line.startsWith(\"---\") || line.startsWith(\"+++\")) {\n continue;\n }\n }\n\n if (inHunk) {\n if (line.startsWith(\"+\")) {\n additions += 1;\n } else if (line.startsWith(\"-\")) {\n deletions += 1;\n }\n }\n }\n\n return { additions, deletions };\n}\n\nfunction countTextDiffStats(\n original: string,\n modified: string,\n): GitDiffLineStats {\n const originalLines = original.length === 0 ? [] : original.split(\"\\n\");\n const modifiedLines = modified.length === 0 ? [] : modified.split(\"\\n\");\n\n if (originalLines.length === 0) {\n return { additions: modifiedLines.length, deletions: 0 };\n }\n\n if (modifiedLines.length === 0) {\n return { additions: 0, deletions: originalLines.length };\n }\n\n let additions = 0;\n let deletions = 0;\n let originalIndex = 0;\n let modifiedIndex = 0;\n\n while (\n originalIndex < originalLines.length ||\n modifiedIndex < modifiedLines.length\n ) {\n const originalLine = originalLines[originalIndex];\n const modifiedLine = modifiedLines[modifiedIndex];\n\n if (\n originalIndex < originalLines.length &&\n modifiedIndex < modifiedLines.length &&\n originalLine === modifiedLine\n ) {\n originalIndex += 1;\n modifiedIndex += 1;\n continue;\n }\n\n if (\n modifiedIndex < modifiedLines.length &&\n (originalIndex >= originalLines.length ||\n !originalLines.slice(originalIndex).includes(modifiedLine))\n ) {\n additions += 1;\n modifiedIndex += 1;\n continue;\n }\n\n if (originalIndex < originalLines.length) {\n deletions += 1;\n originalIndex += 1;\n }\n }\n\n return { additions, deletions };\n}\n\nexport function countGitChangeDiffStats(\n diff: GitChangeDiff & { diff?: string },\n): GitDiffLineStats {\n if (typeof diff.diff === \"string\" && diff.diff.length > 0) {\n return countUnifiedDiffStats(diff.diff);\n }\n\n return countTextDiffStats(diff.original ?? \"\", diff.modified ?? \"\");\n}\n\nexport function sumGitDiffLineStats(\n stats: GitDiffLineStats[],\n): GitDiffLineStats {\n return stats.reduce(\n (totals, stat) => ({\n additions: totals.additions + stat.additions,\n deletions: totals.deletions + stat.deletions,\n }),\n { additions: 0, deletions: 0 },\n );\n}\n"],"mappings":"6CAOA,SAAgB,EAAsB,EAGpC,CACA,IAAI,EAAY,EACZ,EAAY,EACZ,EAAS,GAEb,IAAK,IAAM,KAAQ,EAAK,MAAM;CAAI,EAAG,CACnC,GAAI,EAAK,WAAW,YAAY,GAAK,EAAK,WAAW,QAAQ,EAAG,CAC9D,EAAS,GACT,QACF,CAEA,GAAI,EAAK,WAAW,IAAI,EAAG,CACzB,EAAS,GACT,QACF,CAEI,CAAC,IACC,EAAK,WAAW,KAAK,GAAK,EAAK,WAAW,KAAK,IAKjD,IACE,EAAK,WAAW,GAAG,EACrB,GAAa,EACJ,EAAK,WAAW,GAAG,IAC5B,GAAa,GAGnB,CAEA,MAAO,CAAE,YAAW,WAAU,CAChC,CAEA,SAAS,EACP,EACA,EACkB,CAClB,IAAM,EAAgB,EAAS,SAAW,EAAI,CAAC,EAAI,EAAS,MAAM;CAAI,EAChE,EAAgB,EAAS,SAAW,EAAI,CAAC,EAAI,EAAS,MAAM;CAAI,EAEtE,GAAI,EAAc,SAAW,EAC3B,MAAO,CAAE,UAAW,EAAc,OAAQ,UAAW,CAAE,EAGzD,GAAI,EAAc,SAAW,EAC3B,MAAO,CAAE,UAAW,EAAG,UAAW,EAAc,MAAO,EAGzD,IAAI,EAAY,EACZ,EAAY,EACZ,EAAgB,EAChB,EAAgB,EAEpB,KACE,EAAgB,EAAc,QAC9B,EAAgB,EAAc,QAC9B,CACA,IAAM,EAAe,EAAc,GAC7B,EAAe,EAAc,GAEnC,GACE,EAAgB,EAAc,QAC9B,EAAgB,EAAc,QAC9B,IAAiB,EACjB,CACA,GAAiB,EACjB,GAAiB,EACjB,QACF,CAEA,GACE,EAAgB,EAAc,SAC7B,GAAiB,EAAc,QAC9B,CAAC,EAAc,MAAM,CAAa,EAAE,SAAS,CAAY,GAC3D,CACA,GAAa,EACb,GAAiB,EACjB,QACF,CAEI,EAAgB,EAAc,SAChC,GAAa,EACb,GAAiB,EAErB,CAEA,MAAO,CAAE,YAAW,WAAU,CAChC,CAEA,SAAgB,EACd,EACkB,CAKlB,OAJI,OAAO,EAAK,MAAS,UAAY,EAAK,KAAK,OAAS,EAC/C,EAAsB,EAAK,IAAI,EAGjC,EAAmB,EAAK,UAAY,GAAI,EAAK,UAAY,EAAE,CACpE,CAEA,SAAgB,EACd,EACkB,CAClB,OAAO,EAAM,QACV,EAAQ,KAAU,CACjB,UAAW,EAAO,UAAY,EAAK,UACnC,UAAW,EAAO,UAAY,EAAK,SACrC,GACA,CAAE,UAAW,EAAG,UAAW,CAAE,CAC/B,CACF"}
|
|
@@ -3,6 +3,10 @@ export interface GitDiffLineStats {
|
|
|
3
3
|
additions: number;
|
|
4
4
|
deletions: number;
|
|
5
5
|
}
|
|
6
|
+
export declare function countUnifiedDiffStats(diff: string): {
|
|
7
|
+
additions: number;
|
|
8
|
+
deletions: number;
|
|
9
|
+
};
|
|
6
10
|
export declare function countGitChangeDiffStats(diff: GitChangeDiff & {
|
|
7
11
|
diff?: string;
|
|
8
12
|
}): GitDiffLineStats;
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
//#region src/utils/git-diff-stats.ts
|
|
2
2
|
function e(e) {
|
|
3
|
-
let t = 0, n = 0;
|
|
4
|
-
for (let
|
|
3
|
+
let t = 0, n = 0, r = !1;
|
|
4
|
+
for (let i of e.split("\n")) {
|
|
5
|
+
if (i.startsWith("diff --git") || i.startsWith("index ")) {
|
|
6
|
+
r = !1;
|
|
7
|
+
continue;
|
|
8
|
+
}
|
|
9
|
+
if (i.startsWith("@@")) {
|
|
10
|
+
r = !0;
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
!r && (i.startsWith("---") || i.startsWith("+++")) || r && (i.startsWith("+") ? t += 1 : i.startsWith("-") && (n += 1));
|
|
14
|
+
}
|
|
5
15
|
return {
|
|
6
16
|
additions: t,
|
|
7
17
|
deletions: n
|