@openhands/agent-canvas 1.15.0 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -1
- package/README.windows.md +2 -2
- package/build/assets/{acp-providers-BKvmTf82.js → acp-providers-DrjNsPOH.js} +1 -1
- package/build/assets/active-backend-context-rZiLJRUc.js +2 -0
- package/build/assets/{agent-context-settings-D3PjSTU1.js → agent-context-settings-CJUrcBut.js} +1 -1
- package/build/assets/agent-profiles-service.api-Biieml2L.js +1 -0
- package/build/assets/agent-profiles-settings-x6RvPsq7.js +1 -0
- package/build/assets/agent-server-client-options-BikiNwTa.js +1 -0
- package/build/assets/agent-server-conversation-service.api-DYFsNHKf.js +88 -0
- package/build/assets/agent-settings-BJyovpJ_.js +1 -0
- package/build/assets/agent-settings-CpY3zObk.js +2 -0
- package/build/assets/alert-banner-vARz1idS.js +1 -0
- package/build/assets/{api-error-message-BJyfWp6p.js → api-error-message-Ve79qDcN.js} +1 -1
- package/build/assets/api-key-entry-screen-CsMuBhoP.js +1 -0
- package/build/assets/{app-settings-CbHqzQus.js → app-settings-BaJ7nfHt.js} +1 -1
- package/build/assets/automation-detail-CVoGDrKq.js +3 -0
- package/build/assets/{automation-export-BRopEHMu.js → automation-export-DxY47m3T.js} +1 -1
- package/build/assets/automation-git-sync-CRMP9Bbm.js +1 -0
- package/build/assets/automation-setup-route-072beLz1.js +3 -0
- package/build/assets/{automation-templates-C_0FZgLG.js → automation-templates-4C4PM8K7.js} +1 -1
- package/build/assets/automations-list-xuqTSQL4.js +1 -0
- package/build/assets/{back-nav-button-Dm9tIjVf.js → back-nav-button-B8tH0BEp.js} +1 -1
- package/build/assets/backend-form-modal-0aJmWdsa.js +1 -0
- package/build/assets/{backend-synced-settings-badge-3fOwg6Bd.js → backend-synced-settings-badge-B7rKWBir.js} +1 -1
- package/build/assets/{badge-D4SqUCsR.js → badge-CcGx2TaV.js} +1 -1
- package/build/assets/{base-modal-C7_BDl_U.js → base-modal-DTULovNc.js} +1 -1
- package/build/assets/bot-CLMxGFaq.js +1 -0
- package/build/assets/{brand-button-Dxv6PDeN.js → brand-button-DxPO4Lf8.js} +1 -1
- package/build/assets/browser-C-_qBasq.js +46 -0
- package/build/assets/{browser-tab-BAl4ckJE.js → browser-tab-DZanIw5m.js} +1 -1
- package/build/assets/canvas-extension-page-o_cWgE9B.js +1 -0
- package/build/assets/canvas-extensions-DSgNlCha.js +1 -0
- package/build/assets/canvas-extensions-runtime-DdnkgJXV.js +1 -0
- package/build/assets/{chat-send-button-DWwR2cgI.js → chat-send-button-B3SFSIg5.js} +1 -1
- package/build/assets/check-fDEfgSzj.js +1 -0
- package/build/assets/chevron-down-CFrWHqu8.js +1 -0
- package/build/assets/chevron-right-C5roOrJu.js +1 -0
- package/build/assets/circle-check-ClTzJTdb.js +1 -0
- package/build/assets/{circle-plus-check-toggle-CBh_qomE.js → circle-plus-check-toggle-Fr-h-mbL.js} +1 -1
- package/build/assets/{cloud-funnel-analytics-287iIERo.js → cloud-funnel-analytics-BQanUEEC.js} +1 -1
- package/build/assets/{cog-C4rrw-ZK.js → cog-VBlRo6iw.js} +1 -1
- package/build/assets/command-menu-BT3Ia5Ru.js +1 -0
- package/build/assets/commits-tab-2jhtaohl.js +1 -0
- package/build/assets/{condenser-settings-BcNmYR4s.js → condenser-settings-eVKFMvap.js} +1 -1
- package/build/assets/confirmation-modal-gIFHeZt6.js +1 -0
- package/build/assets/{context-menu-list-item-lVYETtY5.js → context-menu-list-item-DDROe12Z.js} +1 -1
- package/build/assets/conversation-BnjJSFf5.js +93 -0
- package/build/assets/conversation-DZ578rOX.js +1 -0
- package/build/assets/conversation-panel-DZ578rOX.js +1 -0
- package/build/assets/conversation-state-store-D1_G_9I-.js +1 -0
- package/build/assets/{conversation-store-Ca3ghXap.js → conversation-store-DVVfkCsk.js} +1 -1
- package/build/assets/{conversation-tab-empty-state-HJtkmHZj.js → conversation-tab-empty-state-DKlzAz5c.js} +1 -1
- package/build/assets/{copy-to-clipboard-button-Cjkswvnj.js → copy-to-clipboard-button-B3w0X7WH.js} +1 -1
- package/build/assets/{device-verify-EZhHhBT7.js → device-verify-BfkCzyFB.js} +1 -1
- package/build/assets/{dropdown-classes-DJe-E6MC.js → dropdown-classes-B9kJVDIk.js} +1 -1
- package/build/assets/edit-automation-modal-BwhJ39JT.js +1 -0
- package/build/assets/empty-state-RZz0OfnY.js +1 -0
- package/build/assets/{entry.client-C7Bi2tkU.js → entry.client-Ds8LVp-E.js} +2 -2
- package/build/assets/enum-filter-dropdown-C4pW0ORd.js +1 -0
- package/build/assets/{environment-switch-overlay-CEKrFiMw.js → environment-switch-overlay-P2ZAuzov.js} +1 -1
- package/build/assets/{error-state-BALXiBNy.js → error-state-B_5cgNPJ.js} +1 -1
- package/build/assets/extensions-hub-DsaUr4ca.js +1 -0
- package/build/assets/extensions-navigation-CRMZd-FE.js +1 -0
- package/build/assets/external-link-DQtv7eTh.js +1 -0
- package/build/assets/files-tab-CCgAcVdc.js +1 -0
- package/build/assets/{form-control-classes-CGw40z5h.js → form-control-classes-B-z85REi.js} +1 -1
- package/build/assets/format-model-name-CasAP3nd.js +1 -0
- package/build/assets/get-git-path-EHrSDxTM.js +1 -0
- package/build/assets/git-repo-dropdown-D2WEQ97X.js +1 -0
- package/build/assets/{git-repo-dropdown-ai8qaNkD.js → git-repo-dropdown-DVeCUUXG.js} +1 -1
- package/build/assets/{highlighted-source-view-C3sxykQi.js → highlighted-source-view-DjHO3SdW.js} +1 -1
- package/build/assets/home-BorS_vdS.js +1 -0
- package/build/assets/home-aIMbHw5M.js +1 -0
- package/build/assets/home-automation-run-tooltip-CpHNFiFl.js +1 -0
- package/build/assets/home-store-DyXz0w6d.js +1 -0
- package/build/assets/hooks-service-C6dpRtZM.js +1 -0
- package/build/assets/index-home-zKFuKK2B.js +1 -0
- package/build/assets/info-CTIdjttz.js +1 -0
- package/build/assets/install-server-modal-DUiZMc8u.js +1 -0
- package/build/assets/kebab-menu-item-content-mm04SBD3.js +1 -0
- package/build/assets/{key-Cn5za3rg.js → key-CfXbJa8w.js} +1 -1
- package/build/assets/{launch-C1ieiOGe.js → launch-BSIf9KEg.js} +1 -1
- package/build/assets/list-filter-CNpqTWVY.js +1 -0
- package/build/assets/{list-todo-Cuu-STFc.js → list-todo-ByXMdY4W.js} +1 -1
- package/build/assets/llm-not-configured-banner-z_QRSeV0.js +27 -0
- package/build/assets/llm-settings-B-5AHMiX.js +1 -0
- package/build/assets/llm-settings-B3SjHDmA.js +1 -0
- package/build/assets/llm-subscription-service-aDNBQ7Gq.js +1 -0
- package/build/assets/loader-circle-Dex47vVW.js +1 -0
- package/build/assets/{loading-spinner-0L3ZTToZ.js → loading-spinner-DfHI77BA.js} +1 -1
- package/build/assets/manage-backends-modal-q1NdFisr.js +1 -0
- package/build/assets/manifest-8920b615.js +1 -0
- package/build/assets/{manifest-subpage-layout-BGhiUQbA.js → manifest-subpage-layout-BQQy5ipR.js} +1 -1
- package/build/assets/{map-provider-B9LTm23I.js → map-provider-DXvssjw9.js} +1 -1
- package/build/assets/markdown-renderer-rivLvYh-.js +8 -0
- package/build/assets/{mcp-CKbR4Vft.js → mcp-CEXDhQWn.js} +1 -1
- package/build/assets/{mcp-marketplace-utils-C13fFccR.js → mcp-marketplace-utils-Cn_NIMWM.js} +1 -1
- package/build/assets/mcp-page-LGYIICMG.js +9 -0
- package/build/assets/messages-DUSeANAh.js +41 -0
- package/build/assets/{modal-body-CMOc2tLl.js → modal-body-DJw4xBki.js} +1 -1
- package/build/assets/{modal-classes-BAb4Y_BG.js → modal-classes-Dg0ngBPO.js} +1 -1
- package/build/assets/{modal-close-button-CkJ0Ktjj.js → modal-close-button-B9j4nasm.js} +1 -1
- package/build/assets/{mouse-pointer-click-CsgRs_-r.js → mouse-pointer-click-DEhsSUpu.js} +1 -1
- package/build/assets/onboarding-BjFebfs5.js +1 -0
- package/build/assets/onboarding-modal-DDTjOpyd.js +1 -0
- package/build/assets/organization-service.api-Cyg1Tn03.js +1 -0
- package/build/assets/pencil-D5c47kyN.js +1 -0
- package/build/assets/pin-C7vMagvf.js +1 -0
- package/build/assets/planner-tab-D8f2Y3rn.js +1 -0
- package/build/assets/plug-CeaqeF6u.js +1 -0
- package/build/assets/plugins-management-service-Bh_pBuf-.js +1 -0
- package/build/assets/plus-B3wvU06-.js +1 -0
- package/build/assets/profiles-service.api-BbOK0EkF.js +1 -0
- package/build/assets/providers-2gIIkz2N.js +1 -0
- package/build/assets/proxy-CBgMd2zf.js +1 -0
- package/build/assets/{puzzle-A9pGxxai.js → puzzle-DdAqbUrb.js} +1 -1
- package/build/assets/recommended-automations-launcher-YLAQTp4s.js +1 -0
- package/build/assets/refresh-cw-DEQdPCpH.js +1 -0
- package/build/assets/root-Bye_XmEL.js +2 -0
- package/build/assets/root-Cnwwzgo0.css +1 -0
- package/build/assets/root-layout-CSAwxBGM.js +2 -0
- package/build/assets/schema-field-CK0xYNbO.js +1 -0
- package/build/assets/scroll-fade-state-Dt_fx2kf.js +1 -0
- package/build/assets/sdk-section-page-Da73Rs_o.js +1 -0
- package/build/assets/secret-form-CB2VwYYg.js +1 -0
- package/build/assets/secrets-service-Cr8g8xuv.js +1 -0
- package/build/assets/{secrets-settings-BizaTEr1.js → secrets-settings-Bh0udeKv.js} +1 -1
- package/build/assets/settings-CKqk8ZnH.js +1 -0
- package/build/assets/settings-DmyIgRxO.js +1 -0
- package/build/assets/{settings-dropdown-input-tM0A0ipy.js → settings-dropdown-input-DVpyD87C.js} +1 -1
- package/build/assets/settings-index-BSJUFmjE.js +1 -0
- package/build/assets/{settings-input-C03KUoSC.js → settings-input-C0dd8Utu.js} +1 -1
- package/build/assets/{settings-list-classes-BJ0g8rWj.js → settings-list-classes-Ds4jPBHK.js} +1 -1
- package/build/assets/{settings-modal-AzEF1QPP.js → settings-modal-yStgEh2o.js} +1 -1
- package/build/assets/settings-service.api-9_xdv_mh.js +1 -0
- package/build/assets/{settings-switch-CQE0EGC-.js → settings-switch-B78Khmyz.js} +1 -1
- package/build/assets/{settings-utils-ClYOkbbI.js → settings-utils-8GIIgOQL.js} +1 -1
- package/build/assets/shared-conversation-DM96X4KV.js +1 -0
- package/build/assets/shield-check-DO7wa_eu.js +1 -0
- package/build/assets/{sidebar-layout-D3hE08wK.js → sidebar-layout-EPfWxk11.js} +1 -1
- package/build/assets/sidebar-mobile-menu-toggle-D5GR5xT9.js +1 -0
- package/build/assets/sidebar-nav-link-_t4_Ef-9.js +1 -0
- package/build/assets/{sidebar-onboarding-checklist-storage-3qYflszY.js → sidebar-onboarding-checklist-storage-DbDX-Wvj.js} +1 -1
- package/build/assets/sidebar-store-CSDFK0W5.js +1 -0
- package/build/assets/{skill-card-pill-row-CFxjoqxn.js → skill-card-pill-row-989y15jV.js} +1 -1
- package/build/assets/skill-enablement-DXeaImBz.js +1 -0
- package/build/assets/skill-filter-BBeZ4JEP.js +2 -0
- package/build/assets/{skill-icon-badge-CPQJ6A-I.js → skill-icon-badge-BDhQ-tQ0.js} +1 -1
- package/build/assets/skill-scope-Dz3kPH3P.js +1 -0
- package/build/assets/skills-plugins-e3CYGdUJ.js +1 -0
- package/build/assets/skills-settings-3e-FuHw_.js +1 -0
- package/build/assets/styled-tooltip-Pd22BIvr.js +1 -0
- package/build/assets/{task-list-tab-04GNQuii.js → task-list-tab-3Jg8ywch.js} +1 -1
- package/build/assets/{terminal-Cj0iHIW7.js → terminal-onXx0_Qz.js} +1 -1
- package/build/assets/toggle-switch-lwQtxDcm.js +1 -0
- package/build/assets/trash-2-ZhKuTLiz.js +1 -0
- package/build/assets/trash-B6OIe4yX.js +1 -0
- package/build/assets/triangle-alert-BajLPpQg.js +1 -0
- package/build/assets/{typography-SgFy466J.js → typography-HLLg_FAn.js} +1 -1
- package/build/assets/usage-tab-Cm-9j3UK.js +1 -0
- package/build/assets/use-acp-credential-form-BARcvjYE.js +1 -0
- package/build/assets/use-activate-agent-profile-BLKML6vQ.js +1 -0
- package/build/assets/use-agent-profiles-1P91KSXz.js +1 -0
- package/build/assets/{use-automation-health-BxXdzZMP.js → use-automation-health-BZkQNEA8.js} +1 -1
- package/build/assets/use-automation-permissions-B_RpvL-s.js +1 -0
- package/build/assets/{use-automations-zYb0dUny.js → use-automations-Cg0PDIZr.js} +1 -1
- package/build/assets/{use-can-manage-org-profiles-BWMahtUh.js → use-can-manage-org-profiles-BbN6KfDr.js} +1 -1
- package/build/assets/use-canvas-extensions-CFUpHat6.js +1 -0
- package/build/assets/{use-cloud-current-user-id-CPHMDG-C.js → use-cloud-current-user-id-Dk0rjr63.js} +1 -1
- package/build/assets/use-config-DpafU_QP.js +1 -0
- package/build/assets/use-create-conversation-1YgmAHt-.js +1 -0
- package/build/assets/use-create-secret-D8p9ybQj.js +1 -0
- package/build/assets/{use-get-secrets-BT4ihRwj.js → use-get-secrets-CQ4b0qK8.js} +1 -1
- package/build/assets/use-is-authed-BRPjCRKM.js +1 -0
- package/build/assets/{use-launch-skill-in-chat-BYjYihBP.js → use-launch-skill-in-chat-DeYa1tFM.js} +1 -1
- package/build/assets/use-llm-configured-DGm8FiRR.js +1 -0
- package/build/assets/use-llm-profiles-BTTtpW4z.js +1 -0
- package/build/assets/use-manifest-capabilities-AOWGcu0j.js +1 -0
- package/build/assets/use-onboarding-completion-CoINurkm.js +1 -0
- package/build/assets/use-pinned-home-route-D6krwXjy.js +1 -0
- package/build/assets/use-plugins-marketplace-mLsIDhBv.js +1 -0
- package/build/assets/use-save-agent-profile-CxyO9YG-.js +1 -0
- package/build/assets/{use-save-settings-CUZW6yXP.js → use-save-settings-3U5K9-8x.js} +1 -1
- package/build/assets/use-settings-Dn00UISA.js +1 -0
- package/build/assets/use-settings-nav-items-vrjxTqcu.js +16 -0
- package/build/assets/use-tracking-B9prBsrq.js +3 -0
- package/build/assets/{use-user-conversation-DT0_QCnL.js → use-user-conversation-ZWlXtbZb.js} +1 -1
- package/build/assets/{useInfiniteQuery-CgeUQPfs.js → useInfiniteQuery-BzrRqjLg.js} +1 -1
- package/build/assets/{useMutation-DFnzkf6f.js → useMutation-CJuK90oc.js} +1 -1
- package/build/assets/{useQueries-BhbrGEf1.js → useQueries-CykmpT-a.js} +1 -1
- package/build/assets/{useQuery-BXWbZBZl.js → useQuery-S6j94er1.js} +1 -1
- package/build/assets/utils-BOco8mxR.js +1 -0
- package/build/assets/{vendor~conversation-panel~conversation-CTvDDiXg.js → vendor~conversation-panel~conversation-4eJ0tml3.js} +1 -1
- package/build/assets/{vendor~entry.client-BFE7Llz9.js → vendor~entry.client-CoCfUXUF.js} +1 -1
- package/build/assets/{vendor~entry.client-BaKt_PIp.js → vendor~entry.client-DA2izTjq.js} +1 -1
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~b0x1wrp2-Z0lly3FE.js +2 -0
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-BfkNGovw.js +185 -0
- package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew3u153i-rfV8mQ9m.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-DnDoaYNi.js} +1 -1
- package/build/assets/{vendor~index-home~home~conversation-panel~conversation-BTyukeM-.js → vendor~index-home~home~conversation-panel~conversation-CSFLzmTN.js} +1 -1
- package/build/assets/vendor~root-layout-n8XCEXG8.js +1 -0
- package/build/assets/{vendor~root-layout~conversation-panel~conversation-BYAWJwQX.js → vendor~root-layout~conversation-panel~conversation-3Idg1_U3.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-CHaLEBVR.js → vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-DkPlXWl9.js} +1 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation-DgQ564nC.js +1 -0
- 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~hjcjabwg-Dtu7BpYk.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~inibp4qe-CnsDDzeE.js} +2 -2
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iyia17eu-CV850oio.js +1 -0
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-DonTKfQD.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-BPjI-atc.js} +125 -15
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-BgxDvUcf.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-C7HiY4Ae.js} +42 -3
- package/build/assets/{verification-settings-Bj6bo097.js → verification-settings-u2POabjH.js} +1 -1
- package/build/assets/{wrench-hi7Q13dF.js → wrench-CkgI4rxA.js} +1 -1
- package/build/assets/x-By6qCmtY.js +1 -0
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +94 -25
- package/build/locales/ca/openhands.json +94 -25
- package/build/locales/de/openhands.json +94 -25
- package/build/locales/en/openhands.json +94 -25
- package/build/locales/es/openhands.json +94 -25
- package/build/locales/fr/openhands.json +94 -25
- package/build/locales/it/openhands.json +94 -25
- package/build/locales/ja/openhands.json +94 -25
- package/build/locales/ko-KR/openhands.json +94 -25
- package/build/locales/no/openhands.json +94 -25
- package/build/locales/pt/openhands.json +94 -25
- package/build/locales/tr/openhands.json +94 -25
- package/build/locales/uk/openhands.json +94 -25
- package/build/locales/zh-CN/openhands.json +94 -25
- package/build/locales/zh-TW/openhands.json +94 -25
- package/config/defaults.json +9 -5
- package/dist/api/agent-profiles-service/profile-field-support.d.ts +26 -0
- package/dist/api/agent-server-adapter.cjs +3 -3
- package/dist/api/agent-server-adapter.cjs.map +1 -1
- package/dist/api/agent-server-adapter.d.ts +72 -12
- package/dist/api/agent-server-adapter.js +249 -145
- package/dist/api/agent-server-adapter.js.map +1 -1
- package/dist/api/agent-server-compatibility.cjs +1 -1
- package/dist/api/agent-server-compatibility.cjs.map +1 -1
- package/dist/api/agent-server-compatibility.d.ts +21 -0
- package/dist/api/agent-server-compatibility.js +52 -38
- package/dist/api/agent-server-compatibility.js.map +1 -1
- package/dist/api/agent-server-config.cjs +1 -1
- package/dist/api/agent-server-config.cjs.map +1 -1
- package/dist/api/agent-server-config.d.ts +32 -0
- package/dist/api/agent-server-config.js +21 -5
- 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/canvas-extensions-service.cjs +1 -0
- package/dist/api/canvas-extensions-service.d.ts +22 -0
- package/dist/api/canvas-extensions-service.js +4 -0
- package/dist/api/cloud/conversation-service.api.cjs +1 -1
- package/dist/api/cloud/conversation-service.api.cjs.map +1 -1
- package/dist/api/cloud/conversation-service.api.d.ts +6 -0
- package/dist/api/cloud/conversation-service.api.js +14 -6
- package/dist/api/cloud/conversation-service.api.js.map +1 -1
- package/dist/api/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/conversation-file-upload.api.cjs +1 -1
- package/dist/api/conversation-file-upload.api.js +10 -10
- 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 +31 -0
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +188 -128
- package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
- package/dist/api/event-service/event-service.api.cjs +1 -1
- package/dist/api/event-service/event-service.api.js +12 -12
- package/dist/api/git-service/agent-server-git-service.api.cjs +1 -1
- package/dist/api/git-service/agent-server-git-service.api.js +8 -8
- package/dist/api/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/runtime-service/agent-server-runtime-service.cjs +1 -1
- package/dist/api/runtime-service/agent-server-runtime-service.js +8 -8
- package/dist/api/settings-service/settings-service.api.cjs +1 -1
- package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
- package/dist/api/settings-service/settings-service.api.d.ts +5 -2
- package/dist/api/settings-service/settings-service.api.js +20 -11
- 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/event-group.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/event-group.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/event-group.js +40 -36
- package/dist/components/conversation-events/chat/event-message-components/event-group.js.map +1 -1
- package/dist/components/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 +118 -102
- 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 +88 -77
- package/dist/components/features/automations/automation-list-row.js.map +1 -1
- package/dist/components/features/automations/detail/detail-header.d.ts +3 -1
- package/dist/components/features/automations/detail/run-phase.cjs +2 -0
- package/dist/components/features/automations/detail/run-phase.cjs.map +1 -0
- package/dist/components/features/automations/detail/run-phase.d.ts +89 -0
- package/dist/components/features/automations/detail/run-phase.js +72 -0
- package/dist/components/features/automations/detail/run-phase.js.map +1 -0
- package/dist/components/features/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-form-modal.cjs +1 -1
- package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
- package/dist/components/features/backends/backend-form-modal.js +5 -11
- package/dist/components/features/backends/backend-form-modal.js.map +1 -1
- package/dist/components/features/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 +133 -122
- 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/canvas-extensions/add-canvas-extension-modal.d.ts +6 -0
- package/dist/components/features/canvas-extensions/canvas-extension-card.d.ts +9 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.cjs +2 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.cjs.map +1 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.d.ts +23 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.js +19 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.js.map +1 -0
- package/dist/components/features/chat/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 +107 -104
- package/dist/components/features/chat/chat-interface.js.map +1 -1
- package/dist/components/features/chat/chat-markdown-path-code.cjs +3 -0
- package/dist/components/features/chat/chat-markdown-path-code.cjs.map +1 -0
- package/dist/components/features/chat/chat-markdown-path-code.d.ts +27 -0
- package/dist/components/features/chat/chat-markdown-path-code.js +72 -0
- package/dist/components/features/chat/chat-markdown-path-code.js.map +1 -0
- package/dist/components/features/chat/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/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/path-component.cjs +1 -1
- package/dist/components/features/chat/path-component.cjs.map +1 -1
- package/dist/components/features/chat/path-component.d.ts +8 -2
- package/dist/components/features/chat/path-component.js +33 -21
- package/dist/components/features/chat/path-component.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js +38 -43
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.d.ts +8 -5
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js +22 -16
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js.map +1 -1
- package/dist/components/features/chat/user-message-body.cjs +1 -1
- package/dist/components/features/chat/user-message-body.cjs.map +1 -1
- package/dist/components/features/chat/user-message-body.d.ts +4 -0
- package/dist/components/features/chat/user-message-body.js +30 -24
- package/dist/components/features/chat/user-message-body.js.map +1 -1
- package/dist/components/features/conversation/conversation-overview-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.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-overview-skills-panel.js +63 -81
- package/dist/components/features/conversation/conversation-overview-skills-panel.js.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-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 +96 -96
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.d.ts +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.js +3 -3
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.js.map +1 -1
- package/dist/components/features/conversation-panel/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/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-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/conversation-panel/skills-modal.cjs +1 -1
- package/dist/components/features/conversation-panel/skills-modal.cjs.map +1 -1
- package/dist/components/features/conversation-panel/skills-modal.js +29 -28
- package/dist/components/features/conversation-panel/skills-modal.js.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs +1 -1
- package/dist/components/features/files-tab/file-content-viewer.js +5 -5
- package/dist/components/features/home/featured-automations/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/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 +59 -37
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.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/onboarding-host.d.ts +3 -4
- package/dist/components/features/onboarding/steps/setup-llm-step.d.ts +5 -9
- package/dist/components/features/settings/acp-auth-status-banner.d.ts +23 -6
- package/dist/components/features/settings/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.js +5 -3
- 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 +2 -1
- package/dist/components/features/settings/llm-profiles/profiles-body.d.ts +2 -2
- package/dist/components/features/settings/llm-profiles/provider-connection-modal.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/provider-connection-modal.js +3 -0
- package/dist/components/features/settings/sdk-settings/field-help.cjs +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.cjs.map +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.d.ts +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.js +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.js.map +1 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs +1 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.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-nav-link.cjs +1 -1
- package/dist/components/features/sidebar/sidebar-nav-link.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar-nav-link.d.ts +10 -1
- package/dist/components/features/sidebar/sidebar-nav-link.js +54 -36
- package/dist/components/features/sidebar/sidebar-nav-link.js.map +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.cjs +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.d.ts +3 -1
- package/dist/components/features/sidebar/sidebar-rail-body.js +98 -58
- 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 +44 -43
- 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/build-skill-pills.cjs +1 -1
- package/dist/components/features/skills/build-skill-pills.cjs.map +1 -1
- package/dist/components/features/skills/build-skill-pills.js +60 -52
- package/dist/components/features/skills/build-skill-pills.js.map +1 -1
- package/dist/components/features/skills/extensions-navigation.cjs +1 -1
- package/dist/components/features/skills/extensions-navigation.cjs.map +1 -1
- package/dist/components/features/skills/extensions-navigation.js +54 -43
- package/dist/components/features/skills/extensions-navigation.js.map +1 -1
- package/dist/components/features/skills/skill-filter.cjs +1 -1
- package/dist/components/features/skills/skill-filter.cjs.map +1 -1
- package/dist/components/features/skills/skill-filter.d.ts +8 -3
- package/dist/components/features/skills/skill-filter.js +69 -52
- package/dist/components/features/skills/skill-filter.js.map +1 -1
- package/dist/components/shared/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/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.js +27 -27
- package/dist/components/shared/modals/settings/settings-form.cjs +1 -1
- package/dist/components/shared/modals/settings/settings-form.js +8 -8
- package/dist/config/defaults.cjs +1 -1
- package/dist/config/defaults.cjs.map +1 -1
- package/dist/config/defaults.js +9 -5
- package/dist/config/defaults.js.map +1 -1
- package/dist/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/extensions/canvas-extension-module-loader.d.ts +11 -0
- 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/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-manage-canvas-extensions.d.ts +12 -0
- 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/concurrency-limiter.cjs +2 -0
- package/dist/hooks/query/concurrency-limiter.cjs.map +1 -0
- package/dist/hooks/query/concurrency-limiter.d.ts +22 -0
- package/dist/hooks/query/concurrency-limiter.js +29 -0
- package/dist/hooks/query/concurrency-limiter.js.map +1 -0
- package/dist/hooks/query/query-keys.cjs +1 -1
- package/dist/hooks/query/query-keys.cjs.map +1 -1
- package/dist/hooks/query/query-keys.d.ts +10 -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-active-conversation.cjs +1 -1
- package/dist/hooks/query/use-active-conversation.js +4 -4
- 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-automations.cjs.map +1 -1
- package/dist/hooks/query/use-automations.js.map +1 -1
- package/dist/hooks/query/use-backends-health.cjs +1 -1
- package/dist/hooks/query/use-backends-health.cjs.map +1 -1
- package/dist/hooks/query/use-backends-health.d.ts +1 -1
- package/dist/hooks/query/use-backends-health.js +50 -64
- package/dist/hooks/query/use-backends-health.js.map +1 -1
- package/dist/hooks/query/use-canvas-extensions.cjs +1 -0
- package/dist/hooks/query/use-canvas-extensions.d.ts +5 -0
- package/dist/hooks/query/use-canvas-extensions.js +3 -0
- package/dist/hooks/query/use-commit-changes.cjs +1 -1
- package/dist/hooks/query/use-commit-changes.js +4 -4
- package/dist/hooks/query/use-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-latest-automation-runs.cjs +1 -1
- package/dist/hooks/query/use-latest-automation-runs.js +1 -0
- package/dist/hooks/query/use-paginated-conversations.cjs +1 -1
- package/dist/hooks/query/use-paginated-conversations.cjs.map +1 -1
- package/dist/hooks/query/use-paginated-conversations.js +19 -16
- package/dist/hooks/query/use-paginated-conversations.js.map +1 -1
- package/dist/hooks/query/use-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-search-providers.cjs +1 -1
- package/dist/hooks/query/use-search-providers.cjs.map +1 -1
- package/dist/hooks/query/use-search-providers.js +17 -10
- package/dist/hooks/query/use-search-providers.js.map +1 -1
- package/dist/hooks/query/use-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/query/use-unified-get-git-changes.cjs +1 -1
- package/dist/hooks/query/use-unified-get-git-changes.js +4 -4
- package/dist/hooks/query/use-unified-git-commits.cjs +1 -1
- package/dist/hooks/query/use-unified-git-commits.js +4 -4
- package/dist/hooks/query/use-unified-git-diff.cjs +1 -1
- package/dist/hooks/query/use-unified-git-diff.js +4 -4
- package/dist/hooks/query/use-unified-vscode-url.cjs +1 -1
- package/dist/hooks/query/use-unified-vscode-url.cjs.map +1 -1
- package/dist/hooks/query/use-unified-vscode-url.d.ts +1 -0
- package/dist/hooks/query/use-unified-vscode-url.js +40 -26
- package/dist/hooks/query/use-unified-vscode-url.js.map +1 -1
- package/dist/hooks/query/use-workspace-file-content.cjs +1 -1
- package/dist/hooks/query/use-workspace-file-content.js +5 -5
- package/dist/hooks/query/use-workspace-files.cjs +1 -1
- package/dist/hooks/query/use-workspace-files.js +6 -6
- package/dist/hooks/use-acp-credential-form.d.ts +6 -0
- package/dist/hooks/use-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-conversation-overview-git-diff-stats.cjs +1 -1
- package/dist/hooks/use-conversation-overview-git-diff-stats.js +4 -4
- 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.js +1 -0
- 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-pinned-home-route.cjs +2 -0
- package/dist/hooks/use-pinned-home-route.cjs.map +1 -0
- package/dist/hooks/use-pinned-home-route.d.ts +33 -0
- package/dist/hooks/use-pinned-home-route.js +34 -0
- package/dist/hooks/use-pinned-home-route.js.map +1 -0
- package/dist/hooks/use-skill-enablement.cjs +2 -0
- package/dist/hooks/use-skill-enablement.cjs.map +1 -0
- package/dist/hooks/use-skill-enablement.d.ts +14 -0
- package/dist/hooks/use-skill-enablement.js +80 -0
- package/dist/hooks/use-skill-enablement.js.map +1 -0
- package/dist/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 +83 -14
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +3 -3
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +1575 -402
- package/dist/i18n/translation.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +15 -14
- package/dist/lib/index.cjs +1 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +1 -0
- package/dist/locales/ar/openhands.json +94 -25
- package/dist/locales/ca/openhands.json +94 -25
- package/dist/locales/de/openhands.json +94 -25
- package/dist/locales/en/openhands.json +94 -25
- package/dist/locales/es/openhands.json +94 -25
- package/dist/locales/fr/openhands.json +94 -25
- package/dist/locales/it/openhands.json +94 -25
- package/dist/locales/ja/openhands.json +94 -25
- package/dist/locales/ko-KR/openhands.json +94 -25
- package/dist/locales/no/openhands.json +94 -25
- package/dist/locales/pt/openhands.json +94 -25
- package/dist/locales/tr/openhands.json +94 -25
- package/dist/locales/uk/openhands.json +94 -25
- package/dist/locales/zh-CN/openhands.json +94 -25
- package/dist/locales/zh-TW/openhands.json +94 -25
- 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-interface.cjs +1 -1
- package/dist/manifests/automation-interface.cjs.map +1 -1
- package/dist/manifests/automation-interface.d.ts +6 -0
- package/dist/manifests/automation-interface.js +11 -8
- package/dist/manifests/automation-interface.js.map +1 -1
- package/dist/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/bundle-index.cjs +45 -4
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.js +1 -1
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/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-agents-md-maintainer/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs +2 -2
- 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 +6 -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 +2 -2
- 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 +6 -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/github-repo-monitor/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs +30 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js +65 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js +28 -14
- 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/datadog.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js +2 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs +2 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js +59 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js +74 -72
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.cjs +42 -3
- package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.js +22 -3
- package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.js +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js +8 -7
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/index.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/index.js +2 -2
- package/dist/node_modules/@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/blocks.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/blocks.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/blocks.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/blocks.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/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/panels-top-left.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js.map +1 -0
- package/dist/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 +5 -5
- package/dist/package.js.map +1 -1
- package/dist/routes/agent-settings.d.ts +12 -0
- package/dist/routes/app-settings.cjs +1 -1
- package/dist/routes/app-settings.cjs.map +1 -1
- package/dist/routes/app-settings.js +11 -11
- package/dist/routes/files-tab.cjs +1 -1
- package/dist/routes/files-tab.cjs.map +1 -1
- package/dist/routes/files-tab.js +14 -14
- package/dist/routes/files-tab.js.map +1 -1
- package/dist/routes/llm-settings.cjs +1 -1
- package/dist/routes/llm-settings.cjs.map +1 -1
- package/dist/routes/llm-settings.d.ts +3 -1
- package/dist/routes/llm-settings.js +100 -91
- 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/canvas-ui.cjs +1 -1
- package/dist/services/canvas-ui.cjs.map +1 -1
- package/dist/services/canvas-ui.d.ts +5 -0
- package/dist/services/canvas-ui.js +24 -10
- package/dist/services/canvas-ui.js.map +1 -1
- package/dist/services/settings.cjs +1 -1
- package/dist/services/settings.cjs.map +1 -1
- package/dist/services/settings.js +3 -2
- package/dist/services/settings.js.map +1 -1
- package/dist/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/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 +66 -1
- package/dist/types/automation.js.map +1 -1
- package/dist/types/canvas-extension.cjs +2 -0
- package/dist/types/canvas-extension.cjs.map +1 -0
- package/dist/types/canvas-extension.d.ts +77 -0
- package/dist/types/canvas-extension.js +6 -0
- package/dist/types/canvas-extension.js.map +1 -0
- package/dist/types/settings.d.ts +7 -0
- package/dist/ui/context-menu.d.ts +1 -1
- package/dist/ui/help-link.cjs +1 -1
- package/dist/ui/help-link.cjs.map +1 -1
- package/dist/ui/help-link.d.ts +6 -1
- package/dist/ui/help-link.js +32 -18
- package/dist/ui/help-link.js.map +1 -1
- package/dist/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/acp-auth-display.d.ts +35 -0
- 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/cache-utils.cjs +1 -1
- package/dist/utils/cache-utils.js +5 -5
- 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 +7 -3
- package/dist/utils/format-model-name.js +6 -11
- package/dist/utils/format-model-name.js.map +1 -1
- package/dist/utils/format-relative-time.cjs +1 -1
- package/dist/utils/format-relative-time.cjs.map +1 -1
- package/dist/utils/format-relative-time.d.ts +7 -0
- package/dist/utils/format-relative-time.js +7 -2
- package/dist/utils/format-relative-time.js.map +1 -1
- package/dist/utils/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/path-utils.cjs +1 -1
- package/dist/utils/path-utils.cjs.map +1 -1
- package/dist/utils/path-utils.d.ts +15 -3
- package/dist/utils/path-utils.js +29 -3
- package/dist/utils/path-utils.js.map +1 -1
- package/dist/utils/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/skill-enablement.cjs +2 -0
- package/dist/utils/skill-enablement.cjs.map +1 -0
- package/dist/utils/skill-enablement.d.ts +51 -0
- package/dist/utils/skill-enablement.js +31 -0
- package/dist/utils/skill-enablement.js.map +1 -0
- package/dist/utils/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/dist/utils/vscode-origin.cjs +2 -0
- package/dist/utils/vscode-origin.cjs.map +1 -0
- package/dist/utils/vscode-origin.d.ts +55 -0
- package/dist/utils/vscode-origin.js +27 -0
- package/dist/utils/vscode-origin.js.map +1 -0
- package/dist/utils/workspace-mode.d.ts +4 -0
- package/package.json +5 -5
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/check-translation-completeness.cjs +1 -0
- package/scripts/dev-extra-backend.mjs +28 -9
- package/scripts/dev-safe.mjs +81 -8
- package/scripts/dev-static.mjs +35 -37
- package/scripts/dev-with-automation.mjs +83 -2
- package/scripts/ingress.mjs +27 -1
- package/scripts/static-server.mjs +107 -2
- package/tools/canvas_ui_tool.py +19 -0
- package/build/assets/active-backend-context-DKFSMbn3.js +0 -2
- package/build/assets/agent-profiles-settings-D4cY5U2T.js +0 -1
- package/build/assets/agent-server-conversation-service.api-DozDKIW_.js +0 -86
- package/build/assets/agent-settings-351vXWc9.js +0 -2
- package/build/assets/agent-settings-Ce7BDZ6I.js +0 -1
- package/build/assets/alert-banner-Kyy1YWZU.js +0 -1
- package/build/assets/api-key-entry-screen-INIxqAMs.js +0 -1
- package/build/assets/automation-detail-DXDhUwPq.js +0 -3
- package/build/assets/automation-git-sync-CzyS4cn1.js +0 -1
- package/build/assets/automation-setup-route-FRr05f_g.js +0 -1
- package/build/assets/automations-list-CERuQWE6.js +0 -1
- package/build/assets/backend-form-modal-DK78-jn1.js +0 -1
- package/build/assets/bot-C-0Wu7vQ.js +0 -1
- package/build/assets/browser-11etCQ04.js +0 -7
- package/build/assets/check-Cf2YoT90.js +0 -1
- package/build/assets/chevron-down-C3OQ-ehx.js +0 -1
- package/build/assets/chevron-right-CN1uUiJ1.js +0 -1
- package/build/assets/circle-check-g5yeGMd-.js +0 -1
- package/build/assets/command-menu-BZQ8S3Ke.js +0 -1
- package/build/assets/commits-tab-DZtJgaDM.js +0 -1
- package/build/assets/confirmation-modal-Bk4JRcCM.js +0 -1
- package/build/assets/conversation-CchMzpGl.js +0 -1
- package/build/assets/conversation-Dpzftz57.js +0 -93
- package/build/assets/conversation-panel-CchMzpGl.js +0 -1
- package/build/assets/conversation-state-store-a9d2fxRc.js +0 -1
- package/build/assets/edit-automation-modal-D-urtv8n.js +0 -1
- package/build/assets/empty-state-CvaVahVr.js +0 -1
- package/build/assets/enum-filter-dropdown-DliX_Lo0.js +0 -1
- package/build/assets/extensions-hub-CFduxBnk.js +0 -1
- package/build/assets/extensions-navigation-BeC224yX.js +0 -1
- package/build/assets/external-link-DFpYunfj.js +0 -1
- package/build/assets/files-tab-CL3J9b3p.js +0 -1
- package/build/assets/format-model-name-BNPKVsIq.js +0 -1
- package/build/assets/get-git-path-DlAJa_i6.js +0 -1
- package/build/assets/git-repo-dropdown-DGMEhz7d.js +0 -1
- package/build/assets/home-BCGlNJCA.js +0 -1
- package/build/assets/home-DB1pRqTC.js +0 -1
- package/build/assets/home-automation-run-tooltip-CooFQRIG.js +0 -1
- package/build/assets/home-store-Dl1dPE58.js +0 -1
- package/build/assets/index-home-DB1pRqTC.js +0 -1
- package/build/assets/info-uYSVzX86.js +0 -1
- package/build/assets/install-server-modal-BbJdhzet.js +0 -1
- package/build/assets/kebab-menu-item-content-BYokkRHi.js +0 -1
- package/build/assets/list-filter-OFkpRrmi.js +0 -1
- package/build/assets/llm-not-configured-banner-BqqYnJ1t.js +0 -27
- package/build/assets/llm-settings-CnDbbmVW.js +0 -1
- package/build/assets/llm-settings-S8Yjg__1.js +0 -1
- package/build/assets/llm-subscription-service-BpPfzW4x.js +0 -1
- package/build/assets/loader-circle-nvrwthvj.js +0 -1
- package/build/assets/manage-backends-modal-BCUPswyl.js +0 -1
- package/build/assets/manifest-58597dde.js +0 -1
- package/build/assets/markdown-renderer-Cb2sBWtV.js +0 -8
- package/build/assets/mcp-page-Bm4K2NQq.js +0 -9
- package/build/assets/messages-BTN5thLe.js +0 -40
- package/build/assets/onboarding-Cx_kaiD1.js +0 -1
- package/build/assets/onboarding-modal-vMwn7ihv.js +0 -1
- package/build/assets/organization-service.api-C8XpQ0pM.js +0 -1
- package/build/assets/pencil-Clh1Wjvh.js +0 -1
- package/build/assets/planner-tab-DQvDU3ap.js +0 -1
- package/build/assets/plug-BuQhHSSG.js +0 -1
- package/build/assets/plugins-management-service-BjYeF0b0.js +0 -1
- package/build/assets/plus-CEKne-Yp.js +0 -1
- package/build/assets/profiles-service.api-QB-T_u-g.js +0 -1
- package/build/assets/providers-FfSZ5TXP.js +0 -1
- package/build/assets/proxy-tcFL2yTQ.js +0 -1
- package/build/assets/recommended-automations-launcher-Bw8uC4V6.js +0 -1
- package/build/assets/refresh-cw-Bh69DyYO.js +0 -1
- package/build/assets/root-BLeQfBEq.css +0 -1
- package/build/assets/root-ZKKYPR1Z.js +0 -2
- package/build/assets/root-layout-luJoE9IG.js +0 -2
- package/build/assets/schema-field-Csw5fhtN.js +0 -1
- package/build/assets/scroll-fade-state-Dw-i4SGq.js +0 -1
- package/build/assets/sdk-section-page-HTffvm7Q.js +0 -1
- package/build/assets/secret-form-HTUbYw5o.js +0 -1
- package/build/assets/secrets-service-BTor9uAU.js +0 -1
- package/build/assets/settings-BlmrkwRi.js +0 -1
- package/build/assets/settings-DcNPxz0v.js +0 -1
- package/build/assets/settings-index-CKq0b0Vg.js +0 -1
- package/build/assets/settings-service.api-B2agVfjL.js +0 -1
- package/build/assets/shared-conversation-B55pCyBG.js +0 -1
- package/build/assets/shield-check-CFDViW82.js +0 -1
- package/build/assets/sidebar-mobile-menu-toggle-BOtyJHwE.js +0 -1
- package/build/assets/sidebar-nav-link-CPzhyHQg.js +0 -1
- package/build/assets/sidebar-store-DtpU7zaI.js +0 -1
- package/build/assets/skill-filter-CWZ5kjcg.js +0 -2
- package/build/assets/skill-scope-CV1dkAbW.js +0 -1
- package/build/assets/skills-plugins-DGHULTq6.js +0 -1
- package/build/assets/skills-settings-CM1lFv3e.js +0 -1
- package/build/assets/styled-tooltip-Dl06rkpY.js +0 -1
- package/build/assets/toggle-switch-Fd_QGz0r.js +0 -1
- package/build/assets/trash-2-Dl8_RGz0.js +0 -1
- package/build/assets/trash-_RMt7Ayc.js +0 -1
- package/build/assets/triangle-alert-SM-q4NU_.js +0 -1
- package/build/assets/usage-tab-BcfWV6db.js +0 -1
- package/build/assets/use-acp-credential-form-BsSW5NHG.js +0 -1
- package/build/assets/use-activate-agent-profile-B2NS8nA5.js +0 -1
- package/build/assets/use-agent-profiles-DWBPC0Si.js +0 -1
- package/build/assets/use-config-Bft35DOK.js +0 -1
- package/build/assets/use-create-conversation-DwN5vv2f.js +0 -1
- package/build/assets/use-create-secret-BSxJMxHp.js +0 -1
- package/build/assets/use-has-permission-B3C8rQmR.js +0 -1
- package/build/assets/use-is-authed-CFGkY3-Z.js +0 -1
- package/build/assets/use-llm-configured-BI6obxsc.js +0 -1
- package/build/assets/use-llm-profiles-djGAhTWL.js +0 -1
- package/build/assets/use-manifest-capabilities-3z0-1G59.js +0 -1
- package/build/assets/use-onboarding-completion-BXpyUSsJ.js +0 -1
- package/build/assets/use-plugins-marketplace-DI4_pK56.js +0 -1
- package/build/assets/use-save-agent-profile-DdBSTdpN.js +0 -1
- package/build/assets/use-settings-C5VhGpqd.js +0 -1
- package/build/assets/use-settings-nav-items-DHaUu1Dg.js +0 -16
- package/build/assets/use-tracking-D5t9otIF.js +0 -3
- package/build/assets/utils-DaCIEEQP.js +0 -1
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-ZixYGy6E.js +0 -186
- package/build/assets/vendor~index-home~home~conversation-panel~conversation~alert-banner-B3qC_oj8.js +0 -1
- package/build/assets/vendor~root-layout-BlUaZ18v.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-B2OLKL7N.js +0 -1
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz-MAyNb.js +0 -1
- package/build/assets/x-DkgltWa0.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/components/features/tips/random-tip.d.ts +0 -2
- 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
- package/dist/utils/tips.d.ts +0 -7
- package/dist/utils/workspace-relative-path.cjs +0 -2
- package/dist/utils/workspace-relative-path.cjs.map +0 -1
- package/dist/utils/workspace-relative-path.d.ts +0 -10
- package/dist/utils/workspace-relative-path.js +0 -22
- package/dist/utils/workspace-relative-path.js.map +0 -1
- /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~i58xkef6-cHFhpUBq.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automation-catalog.cjs","names":[],"sources":["../../src/utils/automation-catalog.ts"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"file":"automation-catalog.cjs","names":[],"sources":["../../src/utils/automation-catalog.ts"],"sourcesContent":["import {\n AUTOMATION_CATALOG,\n type RecommendedAutomation,\n} from \"@openhands/extensions/automations\";\nimport {\n SKILLS_CATALOG,\n type SkillCatalogEntry,\n} from \"@openhands/extensions/skills\";\nimport type { LucideIcon } from \"lucide-react\";\nimport { MANIFEST_ICON_BY_SLUG } from \"#/components/features/manifest/manifest-icons\";\nimport { interpolateValues } from \"#/manifests/manifest-template\";\nimport type { Automation } from \"#/types/automation\";\n\n/**\n * Reading a published automation catalog entry.\n *\n * The catalog states each thing once and leaves the rest to be derived, so an\n * entry no longer carries its own launch command or a flat list of required\n * integration ids. This module is the single place that performs those\n * derivations, so the components consuming the catalog stay unaware of how it\n * is shaped.\n */\n\nconst SKILL_BY_NAME = new Map<string, SkillCatalogEntry>(\n SKILLS_CATALOG.map((skill) => [skill.name, skill]),\n);\n\n/**\n * The glyph a card shows in place of its integration logos, or null when it\n * has none to show and the logos speak for it.\n *\n * An entry naming the service it talks to is recognised by that service's\n * logo; one whose identity is the work itself declares a slug instead. The\n * lookup is a guard as much as a mapping — the catalog is published elsewhere,\n * so a slug this host has no artwork for falls back rather than rendering\n * nothing.\n */\nexport function getAutomationIcon(\n automation: RecommendedAutomation,\n): LucideIcon | null {\n const slug = automation.icon;\n if (!slug) return null;\n return (\n (MANIFEST_ICON_BY_SLUG as Record<string, LucideIcon | undefined>)[slug] ??\n null\n );\n}\n\n/** Every integration the entry declares, in declaration order. */\nexport function getIntegrationIds(automation: RecommendedAutomation): string[] {\n return Object.keys(automation.requires.integrations);\n}\n\n/**\n * The integrations that gate this automation. One marked `required: false` can\n * be connected later, during setup, so it is still worth showing on the card\n * but must never stand between the user and a launch.\n */\nexport function getRequiredIntegrationIds(\n automation: RecommendedAutomation,\n): string[] {\n return Object.entries(automation.requires.integrations)\n .filter(([, requirement]) => requirement.required !== false)\n .map(([id]) => id);\n}\n\n/**\n * The command that invokes this automation's skill, or null when that skill is\n * invoked by description instead.\n *\n * The command is declared once, in the owning skill's own `triggers`; the\n * catalog names that skill only where it differs from the entry id.\n */\nexport function findAutomationCommand(\n automation: Pick<RecommendedAutomation, \"id\" | \"skill\">,\n): string | null {\n const skill = SKILL_BY_NAME.get(automation.skill ?? automation.id);\n return skill?.triggers[0] ?? null;\n}\n\n/**\n * What launching an automation card hands to the agent.\n *\n * The resolved command is passed through as-is: API routing (host, auth) is\n * discovered by the agent at runtime from `<RUNTIME_SERVICES>` in the system\n * prompt, and the skills themselves carry the instructions for reading that\n * block. An automation whose skill declares no command has the request spelled\n * out instead. Both are instructions to the agent rather than user-facing UI\n * copy, so they are intentionally in English and not localized.\n */\nexport function getAutomationLaunchPrompt(\n automation: RecommendedAutomation,\n): string {\n return (\n findAutomationCommand(automation) ??\n `Set up the ${automation.name} automation`\n );\n}\n\nconst CATALOG_ENTRY_BY_ID = new Map<string, RecommendedAutomation>(\n AUTOMATION_CATALOG.map((entry) => [entry.id, entry]),\n);\n\n/** Rejects markup the same way the catalog schema's copy rule does. */\nconst MARKUP_PATTERN = /<[A-Za-z/!]/;\n\n/** Every `{{` an impact phrase opens must be the count placeholder. */\nconst FOREIGN_PLACEHOLDER_PATTERN = /\\{\\{(?!count\\}\\})/;\n\nconst COUNT_PLACEHOLDER = \"{{count}}\";\n\ninterface AutomationImpactCopy {\n one: string;\n other: string;\n}\n\nfunction isImpactPhrase(value: unknown): value is string {\n return (\n typeof value === \"string\" &&\n value.length > 0 &&\n !MARKUP_PATTERN.test(value) &&\n !FOREIGN_PLACEHOLDER_PATTERN.test(value)\n );\n}\n\n/**\n * The entry's `impact` value statement, or null when it declares none this\n * host can honor. The catalog is published elsewhere, so the field is read\n * off the raw entry and validated here rather than trusted from the package\n * types — which also keeps this module compiling against a pinned package\n * that predates the field. A basis other than `completed-runs` is a counter\n * this host does not know how to compute, so it renders nothing rather than\n * a number the phrase was not written for.\n */\nfunction readImpactCopy(\n entry: RecommendedAutomation,\n): AutomationImpactCopy | null {\n const { impact } = entry as unknown as Record<string, unknown>;\n if (typeof impact !== \"object\" || impact === null) return null;\n const { basis, one, other } = impact as Record<string, unknown>;\n if (basis !== \"completed-runs\") return null;\n if (!isImpactPhrase(one) || !isImpactPhrase(other)) return null;\n if (!other.includes(COUNT_PLACEHOLDER)) return null;\n return { one, other };\n}\n\n/**\n * The catalog entry an installed automation was created from, via the\n * `template` provenance its setup stored — the only join back to the catalog.\n * Null for automations without provenance: imports, agent-built ones, and\n * entries whose setup publishes no version.\n */\nfunction getAutomationTemplateEntry(\n automation: Automation,\n): RecommendedAutomation | null {\n const metadata = automation.preset_metadata;\n if (typeof metadata !== \"object\" || metadata === null) return null;\n const { template } = metadata as Record<string, unknown>;\n if (typeof template !== \"object\" || template === null) return null;\n const { id } = template as Record<string, unknown>;\n if (typeof id !== \"string\" || id.length === 0) return null;\n return CATALOG_ENTRY_BY_ID.get(id) ?? null;\n}\n\n/**\n * The value statement an automation card shows for its completed runs, or\n * null when there is nothing defensible to say: no template provenance, no\n * honored `impact` declaration, an unknown count (older service with more\n * history than the sample), or a count of zero — absence, never a zero-value\n * claim. Provenance persists across prompt edits, so a reworked automation\n * keeps its template's phrase; the phrases are run-shaped, which keeps them\n * true for as long as the automation runs at all.\n */\nexport function resolveAutomationImpactStatement(\n automation: Automation,\n completedTotal: number | null,\n): string | null {\n if (completedTotal === null || completedTotal < 1) return null;\n const entry = getAutomationTemplateEntry(automation);\n if (!entry) return null;\n const copy = readImpactCopy(entry);\n if (!copy) return null;\n const phrase = completedTotal === 1 ? copy.one : copy.other;\n return interpolateValues(phrase, { count: completedTotal.toLocaleString() });\n}\n"],"mappings":"gTAuBA,IAAM,EAAgB,IAAI,IACxB,EAAA,QAAe,IAAK,GAAU,CAAC,EAAM,KAAM,CAAK,CAAC,CACnD,EAYA,SAAgB,EACd,EACmB,CACnB,IAAM,EAAO,EAAW,KAExB,OADK,EAEF,EAAA,sBAAiE,IAClE,KAHgB,IAKpB,CAGA,SAAgB,EAAkB,EAA6C,CAC7E,OAAO,OAAO,KAAK,EAAW,SAAS,YAAY,CACrD,CAOA,SAAgB,EACd,EACU,CACV,OAAO,OAAO,QAAQ,EAAW,SAAS,YAAY,EACnD,QAAQ,EAAG,KAAiB,EAAY,WAAa,EAAK,EAC1D,KAAK,CAAC,KAAQ,CAAE,CACrB,CASA,SAAgB,EACd,EACe,CAEf,OADc,EAAc,IAAI,EAAW,OAAS,EAAW,EACxD,GAAO,SAAS,IAAM,IAC/B,CAYA,SAAgB,EACd,EACQ,CACR,OACE,EAAsB,CAAU,GAChC,cAAc,EAAW,KAAK,YAElC,CAEA,IAAM,EAAsB,IAAI,IAC9B,EAAA,QAAmB,IAAK,GAAU,CAAC,EAAM,GAAI,CAAK,CAAC,CACrD,EAGM,EAAiB,cAGjB,EAA8B,oBAE9B,EAAoB,YAO1B,SAAS,EAAe,EAAiC,CACvD,OACE,OAAO,GAAU,UACjB,EAAM,OAAS,GACf,CAAC,EAAe,KAAK,CAAK,GAC1B,CAAC,EAA4B,KAAK,CAAK,CAE3C,CAWA,SAAS,EACP,EAC6B,CAC7B,GAAM,CAAE,UAAW,EACnB,GAAI,OAAO,GAAW,WAAY,EAAiB,OAAO,KAC1D,GAAM,CAAE,QAAO,MAAK,SAAU,EAI9B,OAHI,IAAU,kBACV,CAAC,EAAe,CAAG,GAAK,CAAC,EAAe,CAAK,GAC7C,CAAC,EAAM,SAAS,CAAiB,EAAU,KACxC,CAAE,MAAK,OAAM,CACtB,CAQA,SAAS,EACP,EAC8B,CAC9B,IAAM,EAAW,EAAW,gBAC5B,GAAI,OAAO,GAAa,WAAY,EAAmB,OAAO,KAC9D,GAAM,CAAE,YAAa,EACrB,GAAI,OAAO,GAAa,WAAY,EAAmB,OAAO,KAC9D,GAAM,CAAE,MAAO,EAEf,OADI,OAAO,GAAO,UAAY,EAAG,SAAW,EAAU,KAC/C,EAAoB,IAAI,CAAE,GAAK,IACxC,CAWA,SAAgB,EACd,EACA,EACe,CACf,GAAI,IAAmB,MAAQ,EAAiB,EAAG,OAAO,KAC1D,IAAM,EAAQ,EAA2B,CAAU,EACnD,GAAI,CAAC,EAAO,OAAO,KACnB,IAAM,EAAO,EAAe,CAAK,EAGjC,OAFK,EAEE,EAAA,kBADQ,IAAmB,EAAI,EAAK,IAAM,EAAK,MACrB,CAAE,MAAO,EAAe,eAAe,CAAE,CAAC,EAFzD,IAGpB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type RecommendedAutomation } from "@openhands/extensions/automations";
|
|
2
2
|
import type { LucideIcon } from "lucide-react";
|
|
3
|
+
import type { Automation } from "#/types/automation";
|
|
3
4
|
/**
|
|
4
5
|
* The glyph a card shows in place of its integration logos, or null when it
|
|
5
6
|
* has none to show and the logos speak for it.
|
|
@@ -38,3 +39,13 @@ export declare function findAutomationCommand(automation: Pick<RecommendedAutoma
|
|
|
38
39
|
* copy, so they are intentionally in English and not localized.
|
|
39
40
|
*/
|
|
40
41
|
export declare function getAutomationLaunchPrompt(automation: RecommendedAutomation): string;
|
|
42
|
+
/**
|
|
43
|
+
* The value statement an automation card shows for its completed runs, or
|
|
44
|
+
* null when there is nothing defensible to say: no template provenance, no
|
|
45
|
+
* honored `impact` declaration, an unknown count (older service with more
|
|
46
|
+
* history than the sample), or a count of zero — absence, never a zero-value
|
|
47
|
+
* claim. Provenance persists across prompt edits, so a reworked automation
|
|
48
|
+
* keeps its template's phrase; the phrases are run-shaped, which keeps them
|
|
49
|
+
* true for as long as the automation runs at all.
|
|
50
|
+
*/
|
|
51
|
+
export declare function resolveAutomationImpactStatement(automation: Automation, completedTotal: number | null): string | null;
|
|
@@ -1,24 +1,54 @@
|
|
|
1
1
|
import e from "../node_modules/@openhands/extensions/skills/index.js";
|
|
2
|
-
import
|
|
2
|
+
import t from "../node_modules/@openhands/extensions/automations/index.js";
|
|
3
|
+
import { MANIFEST_ICON_BY_SLUG as n } from "../components/features/manifest/manifest-icons.js";
|
|
4
|
+
import { interpolateValues as r } from "../manifests/manifest-template.js";
|
|
3
5
|
//#region src/utils/automation-catalog.ts
|
|
4
|
-
var
|
|
5
|
-
function
|
|
6
|
-
let
|
|
7
|
-
return
|
|
6
|
+
var i = new Map(e.map((e) => [e.name, e]));
|
|
7
|
+
function a(e) {
|
|
8
|
+
let t = e.icon;
|
|
9
|
+
return t ? n[t] ?? null : null;
|
|
8
10
|
}
|
|
9
|
-
function
|
|
11
|
+
function o(e) {
|
|
10
12
|
return Object.keys(e.requires.integrations);
|
|
11
13
|
}
|
|
12
|
-
function
|
|
14
|
+
function s(e) {
|
|
13
15
|
return Object.entries(e.requires.integrations).filter(([, e]) => e.required !== !1).map(([e]) => e);
|
|
14
16
|
}
|
|
15
|
-
function
|
|
16
|
-
return
|
|
17
|
+
function c(e) {
|
|
18
|
+
return i.get(e.skill ?? e.id)?.triggers[0] ?? null;
|
|
17
19
|
}
|
|
18
|
-
function
|
|
19
|
-
return
|
|
20
|
+
function l(e) {
|
|
21
|
+
return c(e) ?? `Set up the ${e.name} automation`;
|
|
22
|
+
}
|
|
23
|
+
var u = new Map(t.map((e) => [e.id, e])), d = /<[A-Za-z/!]/, f = /\{\{(?!count\}\})/, p = "{{count}}";
|
|
24
|
+
function m(e) {
|
|
25
|
+
return typeof e == "string" && e.length > 0 && !d.test(e) && !f.test(e);
|
|
26
|
+
}
|
|
27
|
+
function h(e) {
|
|
28
|
+
let { impact: t } = e;
|
|
29
|
+
if (typeof t != "object" || !t) return null;
|
|
30
|
+
let { basis: n, one: r, other: i } = t;
|
|
31
|
+
return n !== "completed-runs" || !m(r) || !m(i) || !i.includes(p) ? null : {
|
|
32
|
+
one: r,
|
|
33
|
+
other: i
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function g(e) {
|
|
37
|
+
let t = e.preset_metadata;
|
|
38
|
+
if (typeof t != "object" || !t) return null;
|
|
39
|
+
let { template: n } = t;
|
|
40
|
+
if (typeof n != "object" || !n) return null;
|
|
41
|
+
let { id: r } = n;
|
|
42
|
+
return typeof r != "string" || r.length === 0 ? null : u.get(r) ?? null;
|
|
43
|
+
}
|
|
44
|
+
function _(e, t) {
|
|
45
|
+
if (t === null || t < 1) return null;
|
|
46
|
+
let n = g(e);
|
|
47
|
+
if (!n) return null;
|
|
48
|
+
let i = h(n);
|
|
49
|
+
return i ? r(t === 1 ? i.one : i.other, { count: t.toLocaleString() }) : null;
|
|
20
50
|
}
|
|
21
51
|
//#endregion
|
|
22
|
-
export {
|
|
52
|
+
export { a as getAutomationIcon, l as getAutomationLaunchPrompt, o as getIntegrationIds, s as getRequiredIntegrationIds, _ as resolveAutomationImpactStatement };
|
|
23
53
|
|
|
24
54
|
//# sourceMappingURL=automation-catalog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automation-catalog.js","names":[],"sources":["../../src/utils/automation-catalog.ts"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"file":"automation-catalog.js","names":[],"sources":["../../src/utils/automation-catalog.ts"],"sourcesContent":["import {\n AUTOMATION_CATALOG,\n type RecommendedAutomation,\n} from \"@openhands/extensions/automations\";\nimport {\n SKILLS_CATALOG,\n type SkillCatalogEntry,\n} from \"@openhands/extensions/skills\";\nimport type { LucideIcon } from \"lucide-react\";\nimport { MANIFEST_ICON_BY_SLUG } from \"#/components/features/manifest/manifest-icons\";\nimport { interpolateValues } from \"#/manifests/manifest-template\";\nimport type { Automation } from \"#/types/automation\";\n\n/**\n * Reading a published automation catalog entry.\n *\n * The catalog states each thing once and leaves the rest to be derived, so an\n * entry no longer carries its own launch command or a flat list of required\n * integration ids. This module is the single place that performs those\n * derivations, so the components consuming the catalog stay unaware of how it\n * is shaped.\n */\n\nconst SKILL_BY_NAME = new Map<string, SkillCatalogEntry>(\n SKILLS_CATALOG.map((skill) => [skill.name, skill]),\n);\n\n/**\n * The glyph a card shows in place of its integration logos, or null when it\n * has none to show and the logos speak for it.\n *\n * An entry naming the service it talks to is recognised by that service's\n * logo; one whose identity is the work itself declares a slug instead. The\n * lookup is a guard as much as a mapping — the catalog is published elsewhere,\n * so a slug this host has no artwork for falls back rather than rendering\n * nothing.\n */\nexport function getAutomationIcon(\n automation: RecommendedAutomation,\n): LucideIcon | null {\n const slug = automation.icon;\n if (!slug) return null;\n return (\n (MANIFEST_ICON_BY_SLUG as Record<string, LucideIcon | undefined>)[slug] ??\n null\n );\n}\n\n/** Every integration the entry declares, in declaration order. */\nexport function getIntegrationIds(automation: RecommendedAutomation): string[] {\n return Object.keys(automation.requires.integrations);\n}\n\n/**\n * The integrations that gate this automation. One marked `required: false` can\n * be connected later, during setup, so it is still worth showing on the card\n * but must never stand between the user and a launch.\n */\nexport function getRequiredIntegrationIds(\n automation: RecommendedAutomation,\n): string[] {\n return Object.entries(automation.requires.integrations)\n .filter(([, requirement]) => requirement.required !== false)\n .map(([id]) => id);\n}\n\n/**\n * The command that invokes this automation's skill, or null when that skill is\n * invoked by description instead.\n *\n * The command is declared once, in the owning skill's own `triggers`; the\n * catalog names that skill only where it differs from the entry id.\n */\nexport function findAutomationCommand(\n automation: Pick<RecommendedAutomation, \"id\" | \"skill\">,\n): string | null {\n const skill = SKILL_BY_NAME.get(automation.skill ?? automation.id);\n return skill?.triggers[0] ?? null;\n}\n\n/**\n * What launching an automation card hands to the agent.\n *\n * The resolved command is passed through as-is: API routing (host, auth) is\n * discovered by the agent at runtime from `<RUNTIME_SERVICES>` in the system\n * prompt, and the skills themselves carry the instructions for reading that\n * block. An automation whose skill declares no command has the request spelled\n * out instead. Both are instructions to the agent rather than user-facing UI\n * copy, so they are intentionally in English and not localized.\n */\nexport function getAutomationLaunchPrompt(\n automation: RecommendedAutomation,\n): string {\n return (\n findAutomationCommand(automation) ??\n `Set up the ${automation.name} automation`\n );\n}\n\nconst CATALOG_ENTRY_BY_ID = new Map<string, RecommendedAutomation>(\n AUTOMATION_CATALOG.map((entry) => [entry.id, entry]),\n);\n\n/** Rejects markup the same way the catalog schema's copy rule does. */\nconst MARKUP_PATTERN = /<[A-Za-z/!]/;\n\n/** Every `{{` an impact phrase opens must be the count placeholder. */\nconst FOREIGN_PLACEHOLDER_PATTERN = /\\{\\{(?!count\\}\\})/;\n\nconst COUNT_PLACEHOLDER = \"{{count}}\";\n\ninterface AutomationImpactCopy {\n one: string;\n other: string;\n}\n\nfunction isImpactPhrase(value: unknown): value is string {\n return (\n typeof value === \"string\" &&\n value.length > 0 &&\n !MARKUP_PATTERN.test(value) &&\n !FOREIGN_PLACEHOLDER_PATTERN.test(value)\n );\n}\n\n/**\n * The entry's `impact` value statement, or null when it declares none this\n * host can honor. The catalog is published elsewhere, so the field is read\n * off the raw entry and validated here rather than trusted from the package\n * types — which also keeps this module compiling against a pinned package\n * that predates the field. A basis other than `completed-runs` is a counter\n * this host does not know how to compute, so it renders nothing rather than\n * a number the phrase was not written for.\n */\nfunction readImpactCopy(\n entry: RecommendedAutomation,\n): AutomationImpactCopy | null {\n const { impact } = entry as unknown as Record<string, unknown>;\n if (typeof impact !== \"object\" || impact === null) return null;\n const { basis, one, other } = impact as Record<string, unknown>;\n if (basis !== \"completed-runs\") return null;\n if (!isImpactPhrase(one) || !isImpactPhrase(other)) return null;\n if (!other.includes(COUNT_PLACEHOLDER)) return null;\n return { one, other };\n}\n\n/**\n * The catalog entry an installed automation was created from, via the\n * `template` provenance its setup stored — the only join back to the catalog.\n * Null for automations without provenance: imports, agent-built ones, and\n * entries whose setup publishes no version.\n */\nfunction getAutomationTemplateEntry(\n automation: Automation,\n): RecommendedAutomation | null {\n const metadata = automation.preset_metadata;\n if (typeof metadata !== \"object\" || metadata === null) return null;\n const { template } = metadata as Record<string, unknown>;\n if (typeof template !== \"object\" || template === null) return null;\n const { id } = template as Record<string, unknown>;\n if (typeof id !== \"string\" || id.length === 0) return null;\n return CATALOG_ENTRY_BY_ID.get(id) ?? null;\n}\n\n/**\n * The value statement an automation card shows for its completed runs, or\n * null when there is nothing defensible to say: no template provenance, no\n * honored `impact` declaration, an unknown count (older service with more\n * history than the sample), or a count of zero — absence, never a zero-value\n * claim. Provenance persists across prompt edits, so a reworked automation\n * keeps its template's phrase; the phrases are run-shaped, which keeps them\n * true for as long as the automation runs at all.\n */\nexport function resolveAutomationImpactStatement(\n automation: Automation,\n completedTotal: number | null,\n): string | null {\n if (completedTotal === null || completedTotal < 1) return null;\n const entry = getAutomationTemplateEntry(automation);\n if (!entry) return null;\n const copy = readImpactCopy(entry);\n if (!copy) return null;\n const phrase = completedTotal === 1 ? copy.one : copy.other;\n return interpolateValues(phrase, { count: completedTotal.toLocaleString() });\n}\n"],"mappings":";;;;;AAuBA,IAAM,IAAgB,IAAI,IACxB,EAAe,KAAK,MAAU,CAAC,EAAM,MAAM,CAAK,CAAC,CACnD;AAYA,SAAgB,EACd,GACmB;CACnB,IAAM,IAAO,EAAW;CAExB,OADK,IAEF,EAAiE,MAClE,OAHgB;AAKpB;AAGA,SAAgB,EAAkB,GAA6C;CAC7E,OAAO,OAAO,KAAK,EAAW,SAAS,YAAY;AACrD;AAOA,SAAgB,EACd,GACU;CACV,OAAO,OAAO,QAAQ,EAAW,SAAS,YAAY,EACnD,QAAQ,GAAG,OAAiB,EAAY,aAAa,EAAK,EAC1D,KAAK,CAAC,OAAQ,CAAE;AACrB;AASA,SAAgB,EACd,GACe;CAEf,OADc,EAAc,IAAI,EAAW,SAAS,EAAW,EACxD,GAAO,SAAS,MAAM;AAC/B;AAYA,SAAgB,EACd,GACQ;CACR,OACE,EAAsB,CAAU,KAChC,cAAc,EAAW,KAAK;AAElC;AAEA,IAAM,IAAsB,IAAI,IAC9B,EAAmB,KAAK,MAAU,CAAC,EAAM,IAAI,CAAK,CAAC,CACrD,GAGM,IAAiB,eAGjB,IAA8B,qBAE9B,IAAoB;AAO1B,SAAS,EAAe,GAAiC;CACvD,OACE,OAAO,KAAU,YACjB,EAAM,SAAS,KACf,CAAC,EAAe,KAAK,CAAK,KAC1B,CAAC,EAA4B,KAAK,CAAK;AAE3C;AAWA,SAAS,EACP,GAC6B;CAC7B,IAAM,EAAE,cAAW;CACnB,IAAI,OAAO,KAAW,aAAY,GAAiB,OAAO;CAC1D,IAAM,EAAE,UAAO,QAAK,aAAU;CAI9B,OAHI,MAAU,oBACV,CAAC,EAAe,CAAG,KAAK,CAAC,EAAe,CAAK,KAC7C,CAAC,EAAM,SAAS,CAAiB,IAAU,OACxC;EAAE;EAAK;CAAM;AACtB;AAQA,SAAS,EACP,GAC8B;CAC9B,IAAM,IAAW,EAAW;CAC5B,IAAI,OAAO,KAAa,aAAY,GAAmB,OAAO;CAC9D,IAAM,EAAE,gBAAa;CACrB,IAAI,OAAO,KAAa,aAAY,GAAmB,OAAO;CAC9D,IAAM,EAAE,UAAO;CAEf,OADI,OAAO,KAAO,YAAY,EAAG,WAAW,IAAU,OAC/C,EAAoB,IAAI,CAAE,KAAK;AACxC;AAWA,SAAgB,EACd,GACA,GACe;CACf,IAAI,MAAmB,QAAQ,IAAiB,GAAG,OAAO;CAC1D,IAAM,IAAQ,EAA2B,CAAU;CACnD,IAAI,CAAC,GAAO,OAAO;CACnB,IAAM,IAAO,EAAe,CAAK;CAGjC,OAFK,IAEE,EADQ,MAAmB,IAAI,EAAK,MAAM,EAAK,OACrB,EAAE,OAAO,EAAe,eAAe,EAAE,CAAC,IAFzD;AAGpB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");const e=require("../i18n/declaration.cjs"),t=require("../types/automation.cjs");var n=[`success`,`partial_success`,`blocked`,`failed`,`unknown`];function r(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function i(e){return typeof e==`string`&&n.includes(e)}function a(e){return typeof e==`string`&&e.trim()||null}var o=new Set([`status`,`outcome_summary`]);function s(e){return e.run_metadata?.finish_tool_response??null}function c(e){let t=a(e);if(t)return t;if(typeof e==`number`||typeof e==`boolean`)return String(e);if(e==null)return null;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function l(e){if(e==null)return null;if(!r(e))return e;let t=Object.entries(e).filter(([e])=>!o.has(e));return t.length>0?Object.fromEntries(t):`status`in e&&!i(e.status)?{status:e.status}:null}function u(e){let t=s(e);if(!r(t))return null;let n=a(t.outcome_summary);return typeof t.status!=`string`&&!n?null:{status:i(t.status)?t.status:`unknown`,outcomeSummary:n}}function d(e){let n=s(e),r=l(n),i=c(r),o=u(e),d=a(e.error_detail);return e.status===t.AutomationRunStatus.COMPLETED?{badgeStatus:o?.status??(n===null?`success`:`unknown`),summary:o?.outcomeSummary??null,taskOutcome:o,customTaskMetadata:r,customTaskMetadataText:i}:{badgeStatus:e.status,summary:d,taskOutcome:o,customTaskMetadata:r,customTaskMetadataText:i}}function f(n){switch(n){case t.AutomationRunStatus.COMPLETED:case`success`:return e.I18nKey.AUTOMATIONS$DETAIL$SUCCESSFUL;case t.AutomationRunStatus.FAILED:case`failed`:return e.I18nKey.AUTOMATIONS$DETAIL$FAILED;case t.AutomationRunStatus.PENDING:return e.I18nKey.AUTOMATIONS$DETAIL$PENDING;case t.AutomationRunStatus.RUNNING:return e.I18nKey.AUTOMATIONS$DETAIL$RUNNING;case t.AutomationRunStatus.CANCELLED:return e.I18nKey.AUTOMATIONS$DETAIL$CANCELLED;case t.AutomationRunStatus.SKIPPED:return e.I18nKey.AUTOMATIONS$DETAIL$SKIPPED;case`blocked`:return e.I18nKey.AUTOMATIONS$DETAIL$BLOCKED;case`partial_success`:return e.I18nKey.AUTOMATIONS$DETAIL$PARTIAL;case`unknown`:return e.I18nKey.AUTOMATIONS$DETAIL$NEEDS_REVIEW;default:return e.I18nKey.FEATURED_AUTOMATIONS$STATUS_UNKNOWN}}exports.getAutomationRunBadgeLabelKey=f,exports.getAutomationRunDisplay=d;
|
|
2
|
+
//# sourceMappingURL=automation-run-display.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation-run-display.cjs","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":"6HAwBA,IAAM,EAAgE,CACpE,UACA,kBACA,UACA,SACA,SACF,EAEA,SAAS,EAAS,EAAkD,CAClE,OAAO,OAAO,GAAU,YAAY,GAAkB,CAAC,MAAM,QAAQ,CAAK,CAC5E,CAEA,SAAgB,EACd,EACsC,CACtC,OACE,OAAO,GAAU,UACjB,EAAsB,SAAS,CAAoC,CAEvE,CAEA,SAAS,EAAW,EAA+B,CAEjD,OADI,OAAO,GAAU,UACd,EAAM,KAAK,GADoB,IAExC,CAEA,IAAM,EAAoC,IAAI,IAAI,CAChD,SACA,iBACF,CAAC,EAED,SAAgB,EACd,EACgB,CAEhB,OADiB,EAAI,cAAc,sBACkB,IACvD,CAEA,SAAgB,EACd,EACe,CACf,IAAM,EAAU,EAAW,CAAQ,EACnC,GAAI,EAAS,OAAO,EACpB,GAAI,OAAO,GAAa,UAAY,OAAO,GAAa,UACtD,OAAO,OAAO,CAAQ,EAExB,GAAI,GAAa,KAAgC,OAAO,KAExD,GAAI,CACF,OAAO,KAAK,UAAU,EAAU,KAAM,CAAC,CACzC,MAAQ,CACN,OAAO,OAAO,CAAQ,CACxB,CACF,CAEA,SAAS,EAA4B,EAAmC,CACtE,GAAI,GAAa,KAAgC,OAAO,KACxD,GAAI,CAAC,EAAS,CAAQ,EAAG,OAAO,EAEhC,IAAM,EAAgB,OAAO,QAAQ,CAAQ,EAAE,QAC5C,CAAC,KAAS,CAAC,EAAkC,IAAI,CAAG,CACvD,EAOA,OANI,EAAc,OAAS,EAAU,OAAO,YAAY,CAAa,EAEjE,WAAY,GAAY,CAAC,EAAoB,EAAS,MAAM,EACvD,CAAE,OAAQ,EAAS,MAAO,EAG5B,IACT,CAEA,SAAgB,EACd,EACiC,CACjC,IAAM,EAAW,EAAmC,CAAG,EACvD,GAAI,CAAC,EAAS,CAAQ,EAAG,OAAO,KAEhC,IAAM,EAAiB,EAAW,EAAS,eAAe,EAI1D,OAHkB,OAAO,EAAS,QAAW,UAC3B,CAAC,EAAuB,KAEnC,CACL,OAAQ,EAAoB,EAAS,MAAM,EAAI,EAAS,OAAS,UACjE,gBACF,CACF,CAEA,SAAgB,EACd,EACsB,CACtB,IAAM,EAAqB,EAAmC,CAAG,EAC3D,EAAqB,EAA4B,CAAkB,EACnE,EACJ,EAAgC,CAAkB,EAC9C,EAAc,EAA4B,CAAG,EAC7C,EAAgB,EAAW,EAAI,YAAY,EAcjD,OAZI,EAAI,SAAW,EAAA,oBAAoB,UAC9B,CACL,YACE,GAAa,SACZ,IAAuB,KAAmB,UAAZ,WACjC,QAAS,GAAa,gBAAkB,KACxC,cACA,qBACA,wBACF,EAGK,CACL,YAAa,EAAI,OACjB,QAAS,EACT,cACA,qBACA,wBACF,CACF,CAEA,SAAgB,EACd,EACS,CACT,OAAQ,EAAR,CACE,KAAK,EAAA,oBAAoB,UACzB,IAAK,UACH,OAAO,EAAA,QAAQ,8BACjB,KAAK,EAAA,oBAAoB,OACzB,IAAK,SACH,OAAO,EAAA,QAAQ,0BACjB,KAAK,EAAA,oBAAoB,QACvB,OAAO,EAAA,QAAQ,2BACjB,KAAK,EAAA,oBAAoB,QACvB,OAAO,EAAA,QAAQ,2BACjB,KAAK,EAAA,oBAAoB,UACvB,OAAO,EAAA,QAAQ,6BACjB,KAAK,EAAA,oBAAoB,QACvB,OAAO,EAAA,QAAQ,2BACjB,IAAK,UACH,OAAO,EAAA,QAAQ,2BACjB,IAAK,kBACH,OAAO,EAAA,QAAQ,2BACjB,IAAK,UACH,OAAO,EAAA,QAAQ,gCACjB,QACE,OAAO,EAAA,QAAQ,mCACnB,CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { I18nKey } from "#/i18n/declaration";
|
|
2
|
+
import { AutomationRunStatus, type AutomationRun, type AutomationTaskOutcomeStatus } from "#/types/automation";
|
|
3
|
+
export type AutomationRunBadgeStatus = AutomationRunStatus | AutomationTaskOutcomeStatus;
|
|
4
|
+
export interface AutomationRunTaskOutcome {
|
|
5
|
+
status: AutomationTaskOutcomeStatus;
|
|
6
|
+
outcomeSummary: string | null;
|
|
7
|
+
}
|
|
8
|
+
export interface AutomationRunDisplay {
|
|
9
|
+
badgeStatus: AutomationRunBadgeStatus;
|
|
10
|
+
summary: string | null;
|
|
11
|
+
taskOutcome: AutomationRunTaskOutcome | null;
|
|
12
|
+
customTaskMetadata: unknown | null;
|
|
13
|
+
customTaskMetadataText: string | null;
|
|
14
|
+
}
|
|
15
|
+
export declare function isTaskOutcomeStatus(value: unknown): value is AutomationTaskOutcomeStatus;
|
|
16
|
+
export declare function getAutomationRunFinishToolResponse(run: AutomationRun): unknown | null;
|
|
17
|
+
export declare function formatAutomationRunTaskMetadata(metadata: unknown): string | null;
|
|
18
|
+
export declare function getAutomationRunTaskOutcome(run: AutomationRun): AutomationRunTaskOutcome | null;
|
|
19
|
+
export declare function getAutomationRunDisplay(run: AutomationRun): AutomationRunDisplay;
|
|
20
|
+
export declare function getAutomationRunBadgeLabelKey(status: AutomationRunBadgeStatus | string): I18nKey;
|
|
@@ -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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require("../_virtual/_rolldown/runtime.cjs");const e=require("
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");const e=require("./path-utils.cjs"),t=require("../stores/model-store.cjs");var n=(n,r,i)=>{let{action:a}=n;if((a.kind===`StrReplaceEditorAction`||a.kind===`FileEditorAction`||a.kind===`ExecuteBashAction`)&&i.invalidateQueries({queryKey:[`file_changes`,r]},{cancelRefetch:!1}),(a.kind===`StrReplaceEditorAction`||a.kind===`FileEditorAction`)&&a.path){let t=e.stripWorkspacePrefix(a.path);i.invalidateQueries({queryKey:[`file_diff`,r,t]})}n.tool_name===`SwitchLLMTool`&&(i.invalidateQueries({queryKey:[`user`,`conversation`,r]}),t.useModelStore.getState().clearActiveProfile(r))};exports.handleActionEventCacheInvalidation=n;
|
|
2
2
|
//# sourceMappingURL=cache-utils.cjs.map
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { stripWorkspacePrefix as e } from "./path-utils.js";
|
|
2
|
+
import { useModelStore as t } from "../stores/model-store.js";
|
|
3
3
|
//#region src/utils/cache-utils.ts
|
|
4
4
|
var n = (n, r, i) => {
|
|
5
5
|
let { action: a } = n;
|
|
6
6
|
if ((a.kind === "StrReplaceEditorAction" || a.kind === "FileEditorAction" || a.kind === "ExecuteBashAction") && i.invalidateQueries({ queryKey: ["file_changes", r] }, { cancelRefetch: !1 }), (a.kind === "StrReplaceEditorAction" || a.kind === "FileEditorAction") && a.path) {
|
|
7
|
-
let
|
|
7
|
+
let t = e(a.path);
|
|
8
8
|
i.invalidateQueries({ queryKey: [
|
|
9
9
|
"file_diff",
|
|
10
10
|
r,
|
|
11
|
-
|
|
11
|
+
t
|
|
12
12
|
] });
|
|
13
13
|
}
|
|
14
14
|
n.tool_name === "SwitchLLMTool" && (i.invalidateQueries({ queryKey: [
|
|
15
15
|
"user",
|
|
16
16
|
"conversation",
|
|
17
17
|
r
|
|
18
|
-
] }),
|
|
18
|
+
] }), t.getState().clearActiveProfile(r));
|
|
19
19
|
};
|
|
20
20
|
//#endregion
|
|
21
21
|
export { n as handleActionEventCacheInvalidation };
|
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
|