@openhands/agent-canvas 1.14.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -1
- package/README.windows.md +2 -2
- package/build/assets/acp-providers-CX3Lh9gj.js +1 -0
- package/build/assets/active-backend-context-CrHTlgvN.js +2 -0
- package/build/assets/agent-context-settings-DSZlXrLj.js +1 -0
- package/build/assets/agent-profiles-settings-Dzgb7G9z.js +1 -0
- package/build/assets/agent-server-conversation-service.api-tnqNjbpE.js +86 -0
- package/build/assets/agent-settings-DLtsqaOs.js +2 -0
- package/build/assets/agent-settings-fFvR-XC2.js +1 -0
- package/build/assets/alert-banner-HP6mX-Vr.js +1 -0
- package/build/assets/api-error-message-B-XdSk3b.js +1 -0
- package/build/assets/api-key-entry-screen-qTzrmJcr.js +1 -0
- package/build/assets/app-settings-dbnneVaV.js +1 -0
- package/build/assets/automation-detail-BmwlCUAB.js +3 -0
- package/build/assets/automation-export-D3a3of4G.js +2 -0
- package/build/assets/automation-git-sync-CprN5DcU.js +1 -0
- package/build/assets/automation-setup-route-C40kXjMY.js +1 -0
- package/build/assets/automation-templates-BRppNh99.js +1 -0
- package/build/assets/automations-list-DuNcRawl.js +1 -0
- package/build/assets/back-nav-button-Cjl_hoxq.js +1 -0
- package/build/assets/backend-form-modal-lhGwzXFI.js +1 -0
- package/build/assets/backend-synced-settings-badge-DPkz30BE.js +1 -0
- package/build/assets/badge-BU3S0VtE.js +1 -0
- package/build/assets/base-modal-D_L0oEbG.js +1 -0
- package/build/assets/bot-dMYHVfYM.js +1 -0
- package/build/assets/brand-button-BAfk4wGP.js +1 -0
- package/build/assets/browser-DSAo0tz1.js +46 -0
- package/build/assets/browser-tab-C9vy56R5.js +1 -0
- package/build/assets/canvas-extension-page-dx1gFrfW.js +1 -0
- package/build/assets/canvas-extensions-8A-XhpgP.js +1 -0
- package/build/assets/canvas-extensions-runtime-2_x5Ezmi.js +1 -0
- package/build/assets/chat-send-button-MUQqCZCS.js +1 -0
- package/build/assets/check-CS0vmpQQ.js +1 -0
- package/build/assets/chevron-down-e1QBpjVy.js +1 -0
- package/build/assets/chevron-right-ZG4R5G4Q.js +1 -0
- package/build/assets/circle-check-DzWLNsbE.js +1 -0
- package/build/assets/circle-plus-check-toggle-BO_kFZt3.js +1 -0
- package/build/assets/cloud-funnel-analytics-CztBCCPp.js +1 -0
- package/build/assets/cog-D-MPQW6G.js +1 -0
- package/build/assets/command-menu--UIlGL72.js +1 -0
- package/build/assets/commits-tab-AnZwLvh-.js +1 -0
- package/build/assets/condenser-settings-DmEOje-7.js +1 -0
- package/build/assets/confirmation-modal-Dv1ktp8K.js +1 -0
- package/build/assets/context-menu-list-item-I86vKcmM.js +1 -0
- package/build/assets/conversation-BbGrAO4Z.js +93 -0
- package/build/assets/conversation-mYT6NAoj.js +1 -0
- package/build/assets/conversation-panel-mYT6NAoj.js +1 -0
- package/build/assets/conversation-state-store-B0ImPLHO.js +1 -0
- package/build/assets/conversation-store-Ca3ghXap.js +6 -0
- package/build/assets/conversation-tab-empty-state-FIbh_lc8.js +1 -0
- package/build/assets/copy-to-clipboard-button-Ca8iSkkA.js +1 -0
- package/build/assets/device-verify-Bhn2e_Ye.js +1 -0
- package/build/assets/dropdown-classes-Bc1djN0-.js +1 -0
- package/build/assets/edit-automation-modal-DadGbJ2u.js +1 -0
- package/build/assets/empty-state-BoGVDecT.js +1 -0
- package/build/assets/entry.client-CqyPPjOq.js +2 -0
- package/build/assets/enum-filter-dropdown-Bgca129f.js +1 -0
- package/build/assets/environment-switch-overlay-BmBRT7gv.js +1 -0
- package/build/assets/error-state-Body8Ngd.js +1 -0
- package/build/assets/extension-module-card-classes-DpeaYhYo.js +1 -0
- package/build/assets/extensions-hub-CcDqq_vR.js +1 -0
- package/build/assets/extensions-navigation-Cr4yzYk4.js +1 -0
- package/build/assets/external-link-DKUlnCQV.js +1 -0
- package/build/assets/files-tab-D4o2VyE_.js +1 -0
- package/build/assets/form-control-classes-Bkh5FGrD.js +1 -0
- package/build/assets/format-model-name-CasAP3nd.js +1 -0
- package/build/assets/get-git-path-ChKDVHZp.js +1 -0
- package/build/assets/git-repo-dropdown-4ROKl2cB.js +1 -0
- package/build/assets/git-repo-dropdown-BkqzkMmM.js +1 -0
- package/build/assets/highlighted-source-view-BFRxGT_Q.js +1 -0
- package/build/assets/home-ChpSuepX.js +1 -0
- package/build/assets/home-DIsB440S.js +1 -0
- package/build/assets/home-automation-run-tooltip-BVNDWjAH.js +1 -0
- package/build/assets/home-store-CY9Ej0ux.js +1 -0
- package/build/assets/index-home-BdlrFIif.js +1 -0
- package/build/assets/info-B6RQawoW.js +1 -0
- package/build/assets/install-server-modal-Dpy89p4g.js +1 -0
- package/build/assets/kebab-menu-item-content-D8hSNGmm.js +1 -0
- package/build/assets/key-BmVyxs-2.js +1 -0
- package/build/assets/launch-IrTDEFCs.js +1 -0
- package/build/assets/list-filter-DsEK7NFC.js +1 -0
- package/build/assets/list-todo-apgLVjMw.js +1 -0
- package/build/assets/llm-not-configured-banner-CIFABh3K.js +27 -0
- package/build/assets/llm-settings-B9juXhIa.js +1 -0
- package/build/assets/llm-settings-De1d5dfr.js +1 -0
- package/build/assets/llm-subscription-service-BpJ0ouQo.js +1 -0
- package/build/assets/loader-circle-CC1au6hc.js +1 -0
- package/build/assets/loading-spinner-BY9N3pOe.js +1 -0
- package/build/assets/manage-backends-modal-BrPV3oB-.js +1 -0
- package/build/assets/manifest-80fb1c29.js +1 -0
- package/build/assets/manifest-subpage-layout-CAOYzrYp.js +1 -0
- package/build/assets/map-provider-Cu3Zgumb.js +1 -0
- package/build/assets/markdown-renderer-BzTlxI8x.js +8 -0
- package/build/assets/mcp-BTs_SXfZ.js +1 -0
- package/build/assets/mcp-marketplace-utils-AIBzzHTO.js +1 -0
- package/build/assets/mcp-page-BEBYqH_K.js +9 -0
- package/build/assets/messages-DKV9cRc2.js +41 -0
- package/build/assets/modal-body-BxZjsju9.js +1 -0
- package/build/assets/modal-classes-C8eycCwG.js +1 -0
- package/build/assets/modal-close-button-DDzdRvCs.js +1 -0
- package/build/assets/mouse-pointer-click-Co2uyaPA.js +1 -0
- package/build/assets/onboarding-DV_OXoeP.js +1 -0
- package/build/assets/onboarding-modal-rkyBYkeQ.js +1 -0
- package/build/assets/organization-service.api-DrYNkEN_.js +1 -0
- package/build/assets/parse-git-remote-url-DpDM9bK6.js +1 -0
- package/build/assets/pencil-47jAZH_V.js +1 -0
- package/build/assets/pin-By41Vl5J.js +1 -0
- package/build/assets/planner-tab-C9uZmhme.js +1 -0
- package/build/assets/plug-CG5HFcNG.js +1 -0
- package/build/assets/plugins-management-service-BMJgC3Ga.js +1 -0
- package/build/assets/plus-C7Slq-0I.js +1 -0
- package/build/assets/profiles-service.api-ChoKrL0l.js +1 -0
- package/build/assets/providers-BhMcY5nv.js +1 -0
- package/build/assets/proxy-9Fe1v5na.js +1 -0
- package/build/assets/puzzle-JM_QaRm0.js +1 -0
- package/build/assets/recommended-automations-launcher-6ABrI9Cy.js +1 -0
- package/build/assets/refresh-cw-3q3Frrii.js +1 -0
- package/build/assets/root-Dc8YmC9F.js +2 -0
- package/build/assets/root-VDaypvK4.css +1 -0
- package/build/assets/root-layout-CXkhSPYh.js +2 -0
- package/build/assets/schema-field-D-y9-LDb.js +1 -0
- package/build/assets/scroll-fade-state-Dw-i4SGq.js +1 -0
- package/build/assets/sdk-section-page-BlFiizlG.js +1 -0
- package/build/assets/secret-form-BB7the8W.js +1 -0
- package/build/assets/secrets-service-ByZVENbp.js +1 -0
- package/build/assets/secrets-settings-B_GpxKW2.js +1 -0
- package/build/assets/server-process-C9RKzd1x.js +1 -0
- package/build/assets/settings-C0EWuBtA.js +1 -0
- package/build/assets/settings-CKqk8ZnH.js +1 -0
- package/build/assets/settings-dropdown-input-BcwylHs2.js +1 -0
- package/build/assets/settings-index-5w5UW2K3.js +1 -0
- package/build/assets/settings-input-Db-1g8Ql.js +1 -0
- package/build/assets/settings-list-classes-BzeSZbF2.js +1 -0
- package/build/assets/settings-modal-DfJ3tcJQ.js +1 -0
- package/build/assets/settings-service.api-DJ1r62Zr.js +1 -0
- package/build/assets/settings-switch-CS-dJDmA.js +1 -0
- package/build/assets/settings-utils-UYpEdPuD.js +1 -0
- package/build/assets/shared-conversation-CA5ISEDy.js +1 -0
- package/build/assets/shield-check-D2aCRd16.js +1 -0
- package/build/assets/sidebar-layout-D6fS8-Gl.js +1 -0
- package/build/assets/sidebar-mobile-menu-toggle-C_fb0Jki.js +1 -0
- package/build/assets/sidebar-nav-link-DQQcMf1A.js +1 -0
- package/build/assets/sidebar-onboarding-checklist-storage-BBkeI6Bp.js +1 -0
- package/build/assets/sidebar-store-DGqHkVLw.js +1 -0
- package/build/assets/skill-card-pill-row-B27-xyig.js +1 -0
- package/build/assets/skill-enablement-DXeaImBz.js +1 -0
- package/build/assets/skill-filter-w__3UCEE.js +2 -0
- package/build/assets/skill-icon-badge-RQkq8wvl.js +1 -0
- package/build/assets/skill-scope-B42H-XOc.js +1 -0
- package/build/assets/skills-plugins-tgF8EiXC.js +1 -0
- package/build/assets/skills-settings-BgJ9PaOe.js +1 -0
- package/build/assets/styled-tooltip-C4jf5Fv9.js +1 -0
- package/build/assets/task-list-tab-C5zcaktH.js +1 -0
- package/build/assets/terminal-CNElN42a.js +3 -0
- package/build/assets/toggle-switch-ChOLXv2n.js +1 -0
- package/build/assets/trash-2-D7K26eDO.js +1 -0
- package/build/assets/trash-D-HYiVYM.js +1 -0
- package/build/assets/triangle-alert-CtdXWHUI.js +1 -0
- package/build/assets/typography-v1KN0tzi.js +1 -0
- package/build/assets/usage-tab-CVDffLPt.js +1 -0
- package/build/assets/use-acp-credential-form-XIQmpX6M.js +1 -0
- package/build/assets/use-activate-agent-profile-BLfmvDiG.js +1 -0
- package/build/assets/use-agent-profiles-Bd9Bvvp1.js +1 -0
- package/build/assets/use-automation-health-E6NZi9rb.js +1 -0
- package/build/assets/use-automations-xijQKIl9.js +1 -0
- package/build/assets/use-can-manage-org-profiles-CrJP5262.js +1 -0
- package/build/assets/use-canvas-extensions-Bi693ujJ.js +1 -0
- package/build/assets/use-cloud-current-user-id-CDfAHpPX.js +1 -0
- package/build/assets/use-config-A9QovgXO.js +1 -0
- package/build/assets/use-create-conversation-Dx3l7mFZ.js +1 -0
- package/build/assets/use-create-secret-B9cUFWRG.js +1 -0
- package/build/assets/use-get-secrets-K3jmk-LH.js +1 -0
- package/build/assets/use-has-permission-B3C8rQmR.js +1 -0
- package/build/assets/use-is-authed-nTBcM7dE.js +1 -0
- package/build/assets/use-launch-skill-in-chat-BYjYihBP.js +1 -0
- package/build/assets/use-llm-configured-BV9nZ1_j.js +1 -0
- package/build/assets/use-llm-profiles-BO-P4Oyo.js +1 -0
- package/build/assets/use-manifest-capabilities-Cw_flwEz.js +1 -0
- package/build/assets/use-onboarding-completion-D8U7k4Qb.js +1 -0
- package/build/assets/use-pinned-home-route-CckOZrmb.js +1 -0
- package/build/assets/use-plugins-marketplace-7i94Zu3Z.js +1 -0
- package/build/assets/use-save-agent-profile-BUjSsDXK.js +1 -0
- package/build/assets/use-save-settings-DYqkKv7T.js +1 -0
- package/build/assets/use-settings-DSXLbvBl.js +1 -0
- package/build/assets/use-settings-nav-items-CwRw-CmX.js +16 -0
- package/build/assets/use-tracking-D53y3TH9.js +3 -0
- package/build/assets/use-user-conversation-B9Gebw_g.js +1 -0
- package/build/assets/useInfiniteQuery-C926xzY4.js +1 -0
- package/build/assets/useMutation-B-qc391N.js +1 -0
- package/build/assets/useQueries-DlbhlH9I.js +1 -0
- package/build/assets/useQuery-BSTgq1rl.js +1 -0
- package/build/assets/utils-CN5ZfZy1.js +1 -0
- package/build/assets/vendor~browser-hbU4u2Ag.js +47 -0
- package/build/assets/vendor~commits-tab-BaO2Ce3e.js +11 -0
- package/build/assets/vendor~conversation-panel~conversation-C8Fn4XOf.js +1 -0
- package/build/assets/vendor~entry.client-CoCfUXUF.js +1 -0
- package/build/assets/vendor~entry.client-DA2izTjq.js +9 -0
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-DqZDXfg2.js +186 -0
- package/build/assets/vendor~index-home~home~conversation-panel~conversation-hWywRBaR.js +13 -0
- package/build/assets/vendor~root-layout-C9Ju9DQg.js +1 -0
- package/build/assets/vendor~root-layout~conversation-panel~conversation-BMbMgaGu.js +1 -0
- package/build/assets/vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-BWir3rJs.js +1 -0
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation-j5MFqfSy.js +1 -0
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-cDuKr-WD.js +1 -0
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-DXqM7vqB.js +1 -0
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iyia17eu-Chf7vmKB.js +1 -0
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~nj1hli3r-DP9wmsjo.js +48 -0
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-CUmIwQCN.js +5053 -0
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-C7HiY4Ae.js +8459 -0
- package/build/assets/verification-settings-gw_q6vkL.js +1 -0
- package/build/assets/wrench-CUEI1krB.js +1 -0
- package/build/assets/x-DJdhbdmt.js +1 -0
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +156 -59
- package/build/locales/ca/openhands.json +156 -59
- package/build/locales/de/openhands.json +156 -59
- package/build/locales/en/openhands.json +156 -59
- package/build/locales/es/openhands.json +156 -59
- package/build/locales/fr/openhands.json +156 -59
- package/build/locales/it/openhands.json +156 -59
- package/build/locales/ja/openhands.json +156 -59
- package/build/locales/ko-KR/openhands.json +156 -59
- package/build/locales/no/openhands.json +156 -59
- package/build/locales/pt/openhands.json +156 -59
- package/build/locales/tr/openhands.json +156 -59
- package/build/locales/uk/openhands.json +156 -59
- package/build/locales/zh-CN/openhands.json +156 -59
- package/build/locales/zh-TW/openhands.json +156 -59
- 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 +10 -1
- package/dist/api/agent-server-adapter.js +139 -132
- package/dist/api/agent-server-adapter.js.map +1 -1
- package/dist/api/agent-server-compatibility.cjs +1 -1
- package/dist/api/agent-server-compatibility.cjs.map +1 -1
- package/dist/api/agent-server-compatibility.d.ts +21 -0
- package/dist/api/agent-server-compatibility.js +52 -38
- package/dist/api/agent-server-compatibility.js.map +1 -1
- package/dist/api/agent-server-config.cjs +1 -1
- package/dist/api/agent-server-config.cjs.map +1 -1
- package/dist/api/agent-server-config.d.ts +26 -0
- package/dist/api/agent-server-config.js +18 -5
- package/dist/api/agent-server-config.js.map +1 -1
- package/dist/api/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 +13 -2
- package/dist/api/automation-service/automation-service.api.js +99 -84
- package/dist/api/automation-service/automation-service.api.js.map +1 -1
- package/dist/api/backend-registry/url-selection.cjs +1 -1
- package/dist/api/backend-registry/url-selection.cjs.map +1 -1
- package/dist/api/backend-registry/url-selection.d.ts +2 -1
- package/dist/api/backend-registry/url-selection.js +2 -2
- package/dist/api/backend-registry/url-selection.js.map +1 -1
- package/dist/api/canvas-extensions-service.cjs +1 -0
- package/dist/api/canvas-extensions-service.d.ts +22 -0
- package/dist/api/canvas-extensions-service.js +4 -0
- package/dist/api/cloud/conversation-service.api.cjs +1 -1
- package/dist/api/cloud/conversation-service.api.cjs.map +1 -1
- package/dist/api/cloud/conversation-service.api.d.ts +6 -0
- package/dist/api/cloud/conversation-service.api.js +14 -6
- package/dist/api/cloud/conversation-service.api.js.map +1 -1
- package/dist/api/conversation-file-upload.api.cjs +1 -1
- package/dist/api/conversation-file-upload.api.js +10 -10
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.d.ts +11 -0
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +138 -122
- 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-provider-items-service.cjs +2 -0
- package/dist/api/git-provider-items-service.cjs.map +1 -0
- package/dist/api/git-provider-items-service.d.ts +25 -0
- package/dist/api/git-provider-items-service.js +127 -0
- package/dist/api/git-provider-items-service.js.map +1 -0
- 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/mcp-health/probe-mcp-server-health.cjs +1 -1
- package/dist/api/mcp-health/probe-mcp-server-health.js +31 -31
- package/dist/api/open-hands.types.d.ts +0 -19
- package/dist/api/profiles-service/profiles-service.api.cjs.map +1 -1
- package/dist/api/profiles-service/profiles-service.api.d.ts +16 -2
- package/dist/api/profiles-service/profiles-service.api.js.map +1 -1
- package/dist/api/provider-connections-service/provider-connections-service.api.cjs +2 -0
- package/dist/api/provider-connections-service/provider-connections-service.api.cjs.map +1 -0
- package/dist/api/provider-connections-service/provider-connections-service.api.d.ts +34 -0
- package/dist/api/provider-connections-service/provider-connections-service.api.js +50 -0
- package/dist/api/provider-connections-service/provider-connections-service.api.js.map +1 -0
- package/dist/api/runtime-service/agent-server-runtime-service.cjs +1 -1
- package/dist/api/runtime-service/agent-server-runtime-service.js +8 -8
- package/dist/api/settings-service/settings-service.api.cjs +1 -1
- package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
- package/dist/api/settings-service/settings-service.api.d.ts +3 -2
- package/dist/api/settings-service/settings-service.api.js +2 -1
- package/dist/api/settings-service/settings-service.api.js.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/create-skill-ready-event.cjs +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/create-skill-ready-event.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/create-skill-ready-event.js +1 -1
- package/dist/components/conversation-events/chat/event-content-helpers/create-skill-ready-event.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/event-group.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/event-group.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/event-group.js +40 -36
- package/dist/components/conversation-events/chat/event-message-components/event-group.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message.js +1 -1
- package/dist/components/conversation-events/chat/event-message.js.map +1 -1
- package/dist/components/conversation-events/chat/messages.cjs.map +1 -1
- package/dist/components/conversation-events/chat/messages.js.map +1 -1
- package/dist/components/features/automations/add-automation-menu.d.ts +7 -0
- package/dist/components/features/automations/add-automation-modal.cjs +2 -0
- package/dist/components/features/automations/add-automation-modal.cjs.map +1 -0
- package/dist/components/features/automations/add-automation-modal.js +42 -0
- package/dist/components/features/automations/add-automation-modal.js.map +1 -0
- package/dist/components/features/automations/automation-action-button-classes.cjs +2 -0
- package/dist/components/features/automations/automation-action-button-classes.cjs.map +1 -0
- package/dist/components/features/automations/automation-action-button-classes.d.ts +0 -2
- package/dist/components/features/automations/automation-action-button-classes.js +8 -0
- package/dist/components/features/automations/automation-action-button-classes.js.map +1 -0
- package/dist/components/features/automations/automation-card-skeleton.cjs +2 -0
- package/dist/components/features/automations/automation-card-skeleton.cjs.map +1 -0
- package/dist/components/features/automations/automation-card-skeleton.js +33 -0
- package/dist/components/features/automations/automation-card-skeleton.js.map +1 -0
- package/dist/components/features/automations/automation-card.cjs +2 -0
- package/dist/components/features/automations/automation-card.cjs.map +1 -0
- package/dist/components/features/automations/automation-card.d.ts +1 -1
- package/dist/components/features/automations/automation-card.js +170 -0
- package/dist/components/features/automations/automation-card.js.map +1 -0
- package/dist/components/features/automations/automation-group.cjs +2 -0
- package/dist/components/features/automations/automation-group.cjs.map +1 -0
- package/dist/components/features/automations/automation-group.js +54 -0
- package/dist/components/features/automations/automation-group.js.map +1 -0
- package/dist/components/features/automations/automation-list-row.cjs +2 -0
- package/dist/components/features/automations/automation-list-row.cjs.map +1 -0
- package/dist/components/features/automations/automation-list-row.js +152 -0
- package/dist/components/features/automations/automation-list-row.js.map +1 -0
- package/dist/components/features/automations/automation-run-insights.cjs +2 -0
- package/dist/components/features/automations/automation-run-insights.cjs.map +1 -0
- package/dist/components/features/automations/automation-run-insights.js +46 -0
- package/dist/components/features/automations/automation-run-insights.js.map +1 -0
- package/dist/components/features/automations/automation-view-mode.cjs +2 -0
- package/dist/components/features/automations/automation-view-mode.cjs.map +1 -0
- package/dist/components/features/automations/automation-view-mode.d.ts +5 -1
- package/dist/components/features/automations/automation-view-mode.js +6 -0
- package/dist/components/features/automations/automation-view-mode.js.map +1 -0
- package/dist/components/features/automations/backend-not-configured.cjs +2 -0
- package/dist/components/features/automations/backend-not-configured.cjs.map +1 -0
- package/dist/components/features/automations/backend-not-configured.js +34 -0
- package/dist/components/features/automations/backend-not-configured.js.map +1 -0
- package/dist/components/features/automations/build-automation-menu-items.cjs +2 -0
- package/dist/components/features/automations/build-automation-menu-items.cjs.map +1 -0
- package/dist/components/features/automations/build-automation-menu-items.js +53 -0
- package/dist/components/features/automations/build-automation-menu-items.js.map +1 -0
- package/dist/components/features/automations/build-automation-pills.cjs +2 -0
- package/dist/components/features/automations/build-automation-pills.cjs.map +1 -0
- package/dist/components/features/automations/build-automation-pills.js +71 -0
- package/dist/components/features/automations/build-automation-pills.js.map +1 -0
- package/dist/components/features/automations/create-instructions.cjs +2 -0
- package/dist/components/features/automations/create-instructions.cjs.map +1 -0
- package/dist/components/features/automations/create-instructions.js +102 -0
- package/dist/components/features/automations/create-instructions.js.map +1 -0
- package/dist/components/features/automations/dashboard/automations-dashboard-controls.d.ts +4 -3
- 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 +2 -0
- package/dist/components/features/automations/detail/run-status-badge.cjs.map +1 -0
- package/dist/components/features/automations/detail/run-status-badge.js +102 -0
- package/dist/components/features/automations/detail/run-status-badge.js.map +1 -0
- package/dist/components/features/automations/empty-state.cjs +2 -0
- package/dist/components/features/automations/empty-state.cjs.map +1 -0
- package/dist/components/features/automations/empty-state.js +35 -0
- package/dist/components/features/automations/empty-state.js.map +1 -0
- package/dist/components/features/automations/error-state.cjs +2 -0
- package/dist/components/features/automations/error-state.cjs.map +1 -0
- package/dist/components/features/automations/error-state.js +28 -0
- package/dist/components/features/automations/error-state.js.map +1 -0
- package/dist/components/features/automations/import-automation-modal.d.ts +2 -1
- package/dist/components/features/automations/kebab-menu-item-content.cjs +2 -0
- package/dist/components/features/automations/kebab-menu-item-content.cjs.map +1 -0
- package/dist/components/features/automations/kebab-menu-item-content.js +21 -0
- package/dist/components/features/automations/kebab-menu-item-content.js.map +1 -0
- package/dist/components/features/automations/kebab-menu.cjs +2 -0
- package/dist/components/features/automations/kebab-menu.cjs.map +1 -0
- package/dist/components/features/automations/kebab-menu.d.ts +2 -1
- package/dist/components/features/automations/kebab-menu.js +76 -0
- package/dist/components/features/automations/kebab-menu.js.map +1 -0
- package/dist/components/features/automations/recommended-automations-launcher.cjs +2 -0
- package/dist/components/features/automations/recommended-automations-launcher.cjs.map +1 -0
- package/dist/components/features/automations/recommended-automations-launcher.d.ts +7 -1
- package/dist/components/features/automations/recommended-automations-launcher.js +134 -0
- package/dist/components/features/automations/recommended-automations-launcher.js.map +1 -0
- package/dist/components/features/automations/recommended-automations-rail.cjs +2 -0
- package/dist/components/features/automations/recommended-automations-rail.cjs.map +1 -0
- package/dist/components/features/automations/recommended-automations-rail.d.ts +9 -0
- package/dist/components/features/automations/recommended-automations-rail.js +127 -0
- package/dist/components/features/automations/recommended-automations-rail.js.map +1 -0
- package/dist/components/features/automations/recommended-automations-section.cjs +2 -0
- package/dist/components/features/automations/recommended-automations-section.cjs.map +1 -0
- package/dist/components/features/automations/recommended-automations-section.d.ts +2 -2
- package/dist/components/features/automations/recommended-automations-section.js +198 -0
- package/dist/components/features/automations/recommended-automations-section.js.map +1 -0
- package/dist/components/features/automations/responder-deployment-modal.cjs +2 -0
- package/dist/components/features/automations/responder-deployment-modal.cjs.map +1 -0
- package/dist/components/features/automations/responder-deployment-modal.js +75 -0
- package/dist/components/features/automations/responder-deployment-modal.js.map +1 -0
- package/dist/components/features/automations/status-badge.cjs +2 -0
- package/dist/components/features/automations/status-badge.cjs.map +1 -0
- package/dist/components/features/automations/status-badge.js +12 -0
- package/dist/components/features/automations/status-badge.js.map +1 -0
- package/dist/components/features/automations/to-latest-run-state.cjs +2 -0
- package/dist/components/features/automations/to-latest-run-state.cjs.map +1 -0
- package/dist/components/features/automations/to-latest-run-state.d.ts +6 -0
- package/dist/components/features/automations/to-latest-run-state.js +21 -0
- package/dist/components/features/automations/to-latest-run-state.js.map +1 -0
- package/dist/components/features/backends/backend-form-modal.cjs +1 -1
- package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
- package/dist/components/features/backends/backend-form-modal.js +15 -21
- package/dist/components/features/backends/backend-form-modal.js.map +1 -1
- package/dist/components/features/backends/manage-backends-modal.cjs +1 -1
- package/dist/components/features/backends/manage-backends-modal.js +5 -5
- package/dist/components/features/canvas-extensions/add-canvas-extension-modal.d.ts +6 -0
- package/dist/components/features/canvas-extensions/canvas-extension-card.d.ts +9 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.cjs +2 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.cjs.map +1 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.d.ts +23 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.js +19 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.js.map +1 -0
- package/dist/components/features/chat/chat-interface.cjs +2 -2
- package/dist/components/features/chat/chat-interface.cjs.map +1 -1
- package/dist/components/features/chat/chat-interface.js +138 -133
- package/dist/components/features/chat/chat-interface.js.map +1 -1
- package/dist/components/features/chat/chat-markdown-path-code.cjs +3 -0
- package/dist/components/features/chat/chat-markdown-path-code.cjs.map +1 -0
- package/dist/components/features/chat/chat-markdown-path-code.d.ts +27 -0
- package/dist/components/features/chat/chat-markdown-path-code.js +72 -0
- package/dist/components/features/chat/chat-markdown-path-code.js.map +1 -0
- package/dist/components/features/chat/path-component.cjs +1 -1
- package/dist/components/features/chat/path-component.cjs.map +1 -1
- package/dist/components/features/chat/path-component.d.ts +8 -2
- package/dist/components/features/chat/path-component.js +33 -21
- package/dist/components/features/chat/path-component.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js +38 -43
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.d.ts +8 -5
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js +22 -16
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js.map +1 -1
- package/dist/components/features/chat/user-message-body.cjs +1 -1
- package/dist/components/features/chat/user-message-body.cjs.map +1 -1
- package/dist/components/features/chat/user-message-body.d.ts +4 -0
- package/dist/components/features/chat/user-message-body.js +30 -24
- package/dist/components/features/chat/user-message-body.js.map +1 -1
- package/dist/components/features/command-menu/command-menu-items.d.ts +10 -4
- package/dist/components/features/conversation/conversation-git-actions-menu.cjs +2 -0
- package/dist/components/features/conversation/conversation-git-actions-menu.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-git-actions-menu.d.ts +15 -0
- package/dist/components/features/conversation/conversation-git-actions-menu.js +123 -0
- package/dist/components/features/conversation/conversation-git-actions-menu.js.map +1 -0
- package/dist/components/features/conversation/conversation-git-actions-toggle.cjs +2 -0
- package/dist/components/features/conversation/conversation-git-actions-toggle.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-git-actions-toggle.d.ts +10 -0
- package/dist/components/features/conversation/conversation-git-actions-toggle.js +60 -0
- package/dist/components/features/conversation/conversation-git-actions-toggle.js.map +1 -0
- package/dist/components/features/conversation/conversation-main/chat-interface-wrapper.cjs +1 -1
- package/dist/components/features/conversation/conversation-main/chat-interface-wrapper.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-main/chat-interface-wrapper.js +46 -10
- package/dist/components/features/conversation/conversation-main/chat-interface-wrapper.js.map +1 -1
- package/dist/components/features/conversation/conversation-main/conversation-main.cjs +1 -1
- package/dist/components/features/conversation/conversation-main/conversation-main.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-main/conversation-main.js +49 -43
- package/dist/components/features/conversation/conversation-main/conversation-main.js.map +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.cjs +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.js +49 -40
- package/dist/components/features/conversation/conversation-name-with-status.js.map +1 -1
- package/dist/components/features/conversation/conversation-name.cjs +1 -1
- package/dist/components/features/conversation/conversation-name.js +4 -4
- package/dist/components/features/conversation/conversation-overview-automations-panel.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-automations-panel.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-automations-panel.d.ts +6 -0
- package/dist/components/features/conversation/conversation-overview-automations-panel.js +48 -0
- package/dist/components/features/conversation/conversation-overview-automations-panel.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-context-menu.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-context-menu.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-context-menu.d.ts +10 -0
- package/dist/components/features/conversation/conversation-overview-context-menu.js +221 -0
- package/dist/components/features/conversation/conversation-overview-context-menu.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-diffs-row.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-diffs-row.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-diffs-row.d.ts +2 -0
- package/dist/components/features/conversation/conversation-overview-diffs-row.js +88 -0
- package/dist/components/features/conversation/conversation-overview-diffs-row.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer-content.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-drawer-content.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer-content.d.ts +6 -0
- package/dist/components/features/conversation/conversation-overview-drawer-content.js +138 -0
- package/dist/components/features/conversation/conversation-overview-drawer-content.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer-context.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-drawer-context.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer-context.d.ts +17 -0
- package/dist/components/features/conversation/conversation-overview-drawer-context.js +43 -0
- package/dist/components/features/conversation/conversation-overview-drawer-context.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-drawer.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer.constants.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-drawer.constants.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer.constants.d.ts +6 -0
- package/dist/components/features/conversation/conversation-overview-drawer.constants.js +6 -0
- package/dist/components/features/conversation/conversation-overview-drawer.constants.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer.d.ts +7 -0
- package/dist/components/features/conversation/conversation-overview-drawer.js +45 -0
- package/dist/components/features/conversation/conversation-overview-drawer.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer.types.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-drawer.types.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-drawer.types.d.ts +12 -0
- package/dist/components/features/conversation/conversation-overview-drawer.types.js +13 -0
- package/dist/components/features/conversation/conversation-overview-drawer.types.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-git-items-panel.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-git-items-panel.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-git-items-panel.d.ts +7 -0
- package/dist/components/features/conversation/conversation-overview-git-items-panel.js +81 -0
- package/dist/components/features/conversation/conversation-overview-git-items-panel.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-git-section.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-git-section.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-git-section.d.ts +6 -0
- package/dist/components/features/conversation/conversation-overview-git-section.js +143 -0
- package/dist/components/features/conversation/conversation-overview-git-section.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-mcp-panel.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-mcp-panel.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-mcp-panel.d.ts +6 -0
- package/dist/components/features/conversation/conversation-overview-mcp-panel.js +108 -0
- package/dist/components/features/conversation/conversation-overview-mcp-panel.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-panel.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-panel.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-panel.constants.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-panel.constants.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-panel.constants.d.ts +24 -0
- package/dist/components/features/conversation/conversation-overview-panel.constants.js +12 -0
- package/dist/components/features/conversation/conversation-overview-panel.constants.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-panel.d.ts +2 -0
- package/dist/components/features/conversation/conversation-overview-panel.js +102 -0
- package/dist/components/features/conversation/conversation-overview-panel.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-project-scope-toggle.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-project-scope-toggle.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-project-scope-toggle.d.ts +8 -0
- package/dist/components/features/conversation/conversation-overview-project-scope-toggle.js +29 -0
- package/dist/components/features/conversation/conversation-overview-project-scope-toggle.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-secrets-panel.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-secrets-panel.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-secrets-panel.d.ts +6 -0
- package/dist/components/features/conversation/conversation-overview-secrets-panel.js +89 -0
- package/dist/components/features/conversation/conversation-overview-secrets-panel.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-sections.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-sections.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-sections.d.ts +43 -0
- package/dist/components/features/conversation/conversation-overview-sections.js +27 -0
- package/dist/components/features/conversation/conversation-overview-sections.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-skills-panel.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-skills-panel.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-skills-panel.d.ts +6 -0
- package/dist/components/features/conversation/conversation-overview-skills-panel.js +120 -0
- package/dist/components/features/conversation/conversation-overview-skills-panel.js.map +1 -0
- package/dist/components/features/conversation/conversation-overview-toggle.cjs +2 -0
- package/dist/components/features/conversation/conversation-overview-toggle.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-overview-toggle.d.ts +11 -0
- package/dist/components/features/conversation/conversation-overview-toggle.js +99 -0
- package/dist/components/features/conversation/conversation-overview-toggle.js.map +1 -0
- package/dist/components/features/conversation/conversation-secondary-drawer.classes.cjs +2 -0
- package/dist/components/features/conversation/conversation-secondary-drawer.classes.cjs.map +1 -0
- package/dist/components/features/conversation/conversation-secondary-drawer.classes.d.ts +4 -0
- package/dist/components/features/conversation/conversation-secondary-drawer.classes.js +7 -0
- package/dist/components/features/conversation/conversation-secondary-drawer.classes.js.map +1 -0
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.js +10 -9
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.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 +68 -62
- 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 +89 -79
- 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/right-panel-toggle.cjs +1 -1
- package/dist/components/features/conversation/right-panel-toggle.cjs.map +1 -1
- package/dist/components/features/conversation/right-panel-toggle.d.ts +3 -2
- package/dist/components/features/conversation/right-panel-toggle.js +34 -33
- package/dist/components/features/conversation/right-panel-toggle.js.map +1 -1
- 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 +2 -1
- package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js +14 -7
- 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 +252 -225
- package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs.map +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.js +4 -4
- package/dist/components/features/conversation-panel/local-new-conversation-menu.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/diff-viewer/accordion-panel.cjs +2 -0
- package/dist/components/features/diff-viewer/accordion-panel.cjs.map +1 -0
- package/dist/components/features/diff-viewer/accordion-panel.d.ts +13 -0
- package/dist/components/features/diff-viewer/accordion-panel.js +41 -0
- package/dist/components/features/diff-viewer/accordion-panel.js.map +1 -0
- package/dist/components/features/diff-viewer/commit-list.cjs +1 -1
- package/dist/components/features/diff-viewer/commit-list.cjs.map +1 -1
- package/dist/components/features/diff-viewer/commit-list.d.ts +5 -1
- package/dist/components/features/diff-viewer/commit-list.js +30 -16
- package/dist/components/features/diff-viewer/commit-list.js.map +1 -1
- package/dist/components/features/diff-viewer/commit-row.cjs +1 -1
- package/dist/components/features/diff-viewer/commit-row.cjs.map +1 -1
- package/dist/components/features/diff-viewer/commit-row.d.ts +1 -2
- package/dist/components/features/diff-viewer/commit-row.js +38 -34
- package/dist/components/features/diff-viewer/commit-row.js.map +1 -1
- package/dist/components/features/diff-viewer/diff-change-list.cjs +2 -0
- package/dist/components/features/diff-viewer/diff-change-list.cjs.map +1 -0
- package/dist/components/features/diff-viewer/diff-change-list.d.ts +18 -0
- package/dist/components/features/diff-viewer/diff-change-list.js +22 -0
- package/dist/components/features/diff-viewer/diff-change-list.js.map +1 -0
- package/dist/components/features/diff-viewer/editor-container.cjs +1 -1
- package/dist/components/features/diff-viewer/editor-container.cjs.map +1 -1
- package/dist/components/features/diff-viewer/editor-container.d.ts +2 -1
- package/dist/components/features/diff-viewer/editor-container.js +8 -7
- package/dist/components/features/diff-viewer/editor-container.js.map +1 -1
- package/dist/components/features/diff-viewer/file-diff-viewer.cjs +1 -1
- package/dist/components/features/diff-viewer/file-diff-viewer.cjs.map +1 -1
- package/dist/components/features/diff-viewer/file-diff-viewer.d.ts +10 -1
- package/dist/components/features/diff-viewer/file-diff-viewer.js +138 -112
- package/dist/components/features/diff-viewer/file-diff-viewer.js.map +1 -1
- package/dist/components/features/diff-viewer/uncommitted-changes-row.cjs +2 -0
- package/dist/components/features/diff-viewer/uncommitted-changes-row.cjs.map +1 -0
- package/dist/components/features/diff-viewer/uncommitted-changes-row.d.ts +12 -0
- package/dist/components/features/diff-viewer/uncommitted-changes-row.js +51 -0
- package/dist/components/features/diff-viewer/uncommitted-changes-row.js.map +1 -0
- package/dist/components/features/files-tab/file-content-viewer.cjs +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.js +5 -6
- package/dist/components/features/files-tab/file-content-viewer.js.map +1 -1
- package/dist/components/features/files-tab/file-quick-row.cjs +1 -1
- package/dist/components/features/files-tab/file-quick-row.cjs.map +1 -1
- package/dist/components/features/files-tab/file-quick-row.d.ts +9 -7
- package/dist/components/features/files-tab/file-quick-row.js +63 -34
- package/dist/components/features/files-tab/file-quick-row.js.map +1 -1
- package/dist/components/features/files-tab/files-tab-tree.constants.cjs +2 -0
- package/dist/components/features/files-tab/files-tab-tree.constants.cjs.map +1 -0
- package/dist/components/features/files-tab/files-tab-tree.constants.d.ts +7 -0
- package/dist/components/features/files-tab/files-tab-tree.constants.js +6 -0
- package/dist/components/features/files-tab/files-tab-tree.constants.js.map +1 -0
- package/dist/components/features/files-tab/segmented-toggle.cjs +1 -1
- package/dist/components/features/files-tab/segmented-toggle.cjs.map +1 -1
- package/dist/components/features/files-tab/segmented-toggle.d.ts +5 -3
- package/dist/components/features/files-tab/segmented-toggle.js +10 -13
- package/dist/components/features/files-tab/segmented-toggle.js.map +1 -1
- package/dist/components/features/files-tab/tree-node.cjs +1 -1
- package/dist/components/features/files-tab/tree-node.cjs.map +1 -1
- package/dist/components/features/files-tab/tree-node.js +34 -32
- package/dist/components/features/files-tab/tree-node.js.map +1 -1
- package/dist/components/features/files-tab/workspace-path.cjs +2 -0
- package/dist/components/features/files-tab/workspace-path.cjs.map +1 -0
- package/dist/components/features/files-tab/workspace-path.d.ts +6 -0
- package/dist/components/features/files-tab/workspace-path.js +41 -0
- package/dist/components/features/files-tab/workspace-path.js.map +1 -0
- package/dist/components/features/home/featured-automations/automation-health-indicator.cjs +2 -0
- package/dist/components/features/home/featured-automations/automation-health-indicator.cjs.map +1 -0
- package/dist/components/features/home/featured-automations/automation-health-indicator.js +22 -0
- package/dist/components/features/home/featured-automations/automation-health-indicator.js.map +1 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs +2 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs.map +1 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js +45 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js.map +1 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs +2 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs.map +1 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js +108 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js.map +1 -0
- package/dist/components/features/home/featured-automations/automation-run-health.cjs +2 -0
- package/dist/components/features/home/featured-automations/automation-run-health.cjs.map +1 -0
- package/dist/components/features/home/featured-automations/automation-run-health.js +75 -0
- package/dist/components/features/home/featured-automations/automation-run-health.js.map +1 -0
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs +2 -0
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs.map +1 -0
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js +96 -0
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js.map +1 -0
- package/dist/components/features/home/featured-automations/pinned-automation-card.d.ts +3 -3
- package/dist/components/features/home/git-repo-dropdown/use-url-search.cjs +1 -1
- package/dist/components/features/home/git-repo-dropdown/use-url-search.cjs.map +1 -1
- package/dist/components/features/home/git-repo-dropdown/use-url-search.js +1 -1
- package/dist/components/features/home/git-repo-dropdown/use-url-search.js.map +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.cjs +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.js +6 -6
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.cjs +1 -1
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.js +6 -6
- package/dist/components/features/manifest/manifest-form-field.d.ts +4 -3
- package/dist/components/features/manifest/manifest-icons.cjs +2 -0
- package/dist/components/features/manifest/manifest-icons.cjs.map +1 -0
- package/dist/components/features/manifest/manifest-icons.d.ts +1 -0
- package/dist/components/features/manifest/manifest-icons.js +21 -0
- package/dist/components/features/manifest/manifest-icons.js.map +1 -0
- package/dist/components/features/manifest/manifest-repository-list.d.ts +25 -0
- package/dist/components/features/markdown/markdown-table-scroll.cjs +1 -1
- package/dist/components/features/markdown/markdown-table-scroll.cjs.map +1 -1
- package/dist/components/features/markdown/markdown-table-scroll.d.ts +2 -6
- package/dist/components/features/markdown/markdown-table-scroll.js +15 -21
- package/dist/components/features/markdown/markdown-table-scroll.js.map +1 -1
- package/dist/components/features/mcp-logo-badge.cjs +1 -1
- package/dist/components/features/mcp-logo-badge.cjs.map +1 -1
- package/dist/components/features/mcp-logo-badge.d.ts +1 -1
- package/dist/components/features/mcp-logo-badge.js +1 -0
- package/dist/components/features/mcp-logo-badge.js.map +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.cjs +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.js +16 -16
- package/dist/components/features/mcp-page/index.cjs +1 -1
- package/dist/components/features/mcp-page/index.js +2 -2
- package/dist/components/features/mcp-page/install-server-modal.cjs +1 -1
- package/dist/components/features/mcp-page/install-server-modal.cjs.map +1 -1
- package/dist/components/features/mcp-page/install-server-modal.js +25 -25
- package/dist/components/features/mcp-page/install-server-modal.js.map +1 -1
- package/dist/components/features/mcp-page/installed-server-card.cjs +1 -1
- package/dist/components/features/mcp-page/installed-server-card.js +5 -5
- package/dist/components/features/mcp-page/marketplace-card.cjs +1 -1
- package/dist/components/features/mcp-page/marketplace-card.js +4 -4
- package/dist/components/features/mcp-page/marketplace-section.cjs +1 -1
- package/dist/components/features/mcp-page/marketplace-section.js +3 -3
- package/dist/components/features/mcp-page/mcp-logo-stack-badge.cjs +2 -0
- package/dist/components/features/mcp-page/mcp-logo-stack-badge.cjs.map +1 -0
- package/dist/components/features/mcp-page/mcp-logo-stack-badge.js +60 -0
- package/dist/components/features/mcp-page/mcp-logo-stack-badge.js.map +1 -0
- package/dist/components/features/mcp-page/mcp-server-health.cjs +1 -1
- package/dist/components/features/mcp-page/mcp-server-health.js +18 -18
- 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/onboarding/use-onboarding-completion.cjs +2 -0
- package/dist/components/features/onboarding/use-onboarding-completion.cjs.map +1 -0
- package/dist/components/features/onboarding/use-onboarding-completion.js +32 -0
- package/dist/components/features/onboarding/use-onboarding-completion.js.map +1 -0
- package/dist/components/features/settings/acp-auth-status-banner.d.ts +23 -6
- package/dist/components/features/settings/app-settings/getting-started-checklist-switch.cjs +2 -0
- package/dist/components/features/settings/app-settings/getting-started-checklist-switch.cjs.map +1 -0
- package/dist/components/features/settings/app-settings/getting-started-checklist-switch.d.ts +1 -0
- package/dist/components/features/settings/app-settings/getting-started-checklist-switch.js +22 -0
- package/dist/components/features/settings/app-settings/getting-started-checklist-switch.js.map +1 -0
- package/dist/components/features/settings/brand-button.cjs +1 -1
- package/dist/components/features/settings/brand-button.cjs.map +1 -1
- package/dist/components/features/settings/brand-button.d.ts +2 -0
- package/dist/components/features/settings/brand-button.js +4 -2
- package/dist/components/features/settings/brand-button.js.map +1 -1
- package/dist/components/features/settings/llm-profiles/delete-provider-connection-modal.cjs +1 -0
- package/dist/components/features/settings/llm-profiles/delete-provider-connection-modal.d.ts +7 -0
- package/dist/components/features/settings/llm-profiles/delete-provider-connection-modal.js +7 -0
- package/dist/components/features/settings/llm-profiles/llm-profiles-manager.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/llm-profiles-manager.js +3 -0
- 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 -0
- package/dist/components/features/settings/llm-profiles/profiles-body.d.ts +20 -1
- package/dist/components/features/settings/llm-profiles/provider-connection-modal.cjs +1 -0
- package/dist/components/features/settings/llm-profiles/provider-connection-modal.d.ts +19 -0
- package/dist/components/features/settings/llm-profiles/provider-connection-modal.js +13 -0
- package/dist/components/features/settings/llm-profiles/provider-connection-row.cjs +1 -0
- package/dist/components/features/settings/llm-profiles/provider-connection-row.d.ts +10 -0
- package/dist/components/features/settings/llm-profiles/provider-connection-row.js +6 -0
- package/dist/components/features/settings/llm-profiles/provider-connections-manager.cjs +1 -0
- package/dist/components/features/settings/llm-profiles/provider-connections-manager.d.ts +15 -0
- package/dist/components/features/settings/llm-profiles/provider-connections-manager.js +8 -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/schema-field.cjs +1 -1
- package/dist/components/features/settings/sdk-settings/schema-field.js +6 -6
- package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs +1 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.js +9 -9
- package/dist/components/features/settings/secrets-settings/secret-form.cjs +1 -1
- package/dist/components/features/settings/secrets-settings/secret-form.js +7 -7
- package/dist/components/features/settings/settings-input.cjs +1 -1
- package/dist/components/features/settings/settings-input.cjs.map +1 -1
- package/dist/components/features/settings/settings-input.d.ts +6 -0
- package/dist/components/features/settings/settings-input.js +14 -13
- package/dist/components/features/settings/settings-input.js.map +1 -1
- package/dist/components/features/sidebar/sidebar-nav-link.cjs +1 -1
- package/dist/components/features/sidebar/sidebar-nav-link.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar-nav-link.d.ts +10 -1
- package/dist/components/features/sidebar/sidebar-nav-link.js +54 -36
- package/dist/components/features/sidebar/sidebar-nav-link.js.map +1 -1
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-icon.cjs +2 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-icon.cjs.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-icon.d.ts +7 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-icon.js +102 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-icon.js.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-preview.cjs +2 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-preview.cjs.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-preview.d.ts +8 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-preview.js +66 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-preview.js.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-llm-complete.cjs +2 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-llm-complete.cjs.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-llm-complete.d.ts +3 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-llm-complete.js +15 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-llm-complete.js.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-storage.cjs +2 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-storage.cjs.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-storage.d.ts +10 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-storage.js +39 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist-storage.js.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.cjs +2 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.cjs.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.constants.cjs +2 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.constants.cjs.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.constants.d.ts +26 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.constants.js +78 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.constants.js.map +1 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.d.ts +5 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.js +127 -0
- package/dist/components/features/sidebar/sidebar-onboarding-checklist.js.map +1 -0
- package/dist/components/features/sidebar/sidebar-rail-body.cjs +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.js +137 -110
- package/dist/components/features/sidebar/sidebar-rail-body.js.map +1 -1
- package/dist/components/features/sidebar/sidebar.cjs +1 -1
- package/dist/components/features/sidebar/sidebar.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar.js +1 -1
- package/dist/components/features/sidebar/sidebar.js.map +1 -1
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist-dismissed.cjs +2 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist-dismissed.cjs.map +1 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist-dismissed.d.ts +1 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist-dismissed.js +10 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist-dismissed.js.map +1 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.cjs +2 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.cjs.map +1 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.d.ts +15 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.js +75 -0
- package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.js.map +1 -0
- package/dist/components/features/skills/add-skill-modal.cjs +2 -0
- package/dist/components/features/skills/add-skill-modal.cjs.map +1 -0
- package/dist/components/features/skills/add-skill-modal.js +164 -0
- package/dist/components/features/skills/add-skill-modal.js.map +1 -0
- package/dist/components/features/skills/build-skill-pills.cjs +2 -0
- package/dist/components/features/skills/build-skill-pills.cjs.map +1 -0
- package/dist/components/features/skills/build-skill-pills.js +96 -0
- package/dist/components/features/skills/build-skill-pills.js.map +1 -0
- package/dist/components/features/skills/extensions-navigation.cjs +1 -1
- package/dist/components/features/skills/extensions-navigation.cjs.map +1 -1
- package/dist/components/features/skills/extensions-navigation.js +54 -43
- package/dist/components/features/skills/extensions-navigation.js.map +1 -1
- package/dist/components/features/skills/get-skill-card-description.cjs +2 -0
- package/dist/components/features/skills/get-skill-card-description.cjs.map +1 -0
- package/dist/components/features/skills/get-skill-card-description.js +34 -0
- package/dist/components/features/skills/get-skill-card-description.js.map +1 -0
- package/dist/components/features/skills/get-skill-chat-launch-message.cjs +2 -0
- package/dist/components/features/skills/get-skill-chat-launch-message.cjs.map +1 -0
- package/dist/components/features/skills/get-skill-chat-launch-message.js +9 -0
- package/dist/components/features/skills/get-skill-chat-launch-message.js.map +1 -0
- package/dist/components/features/skills/is-copyable-skill-source.cjs +2 -0
- package/dist/components/features/skills/is-copyable-skill-source.cjs.map +1 -0
- package/dist/components/features/skills/is-copyable-skill-source.js +9 -0
- package/dist/components/features/skills/is-copyable-skill-source.js.map +1 -0
- package/dist/components/features/skills/skill-card-pill-row.cjs +2 -0
- package/dist/components/features/skills/skill-card-pill-row.cjs.map +1 -0
- package/dist/components/features/skills/skill-card-pill-row.d.ts +1 -1
- package/dist/components/features/skills/skill-card-pill-row.js +137 -0
- package/dist/components/features/skills/skill-card-pill-row.js.map +1 -0
- package/dist/components/features/skills/skill-card.cjs +2 -0
- package/dist/components/features/skills/skill-card.cjs.map +1 -0
- package/dist/components/features/skills/skill-card.js +93 -0
- package/dist/components/features/skills/skill-card.js.map +1 -0
- package/dist/components/features/skills/skill-detail-modal.cjs +3 -0
- package/dist/components/features/skills/skill-detail-modal.cjs.map +1 -0
- package/dist/components/features/skills/skill-detail-modal.js +150 -0
- package/dist/components/features/skills/skill-detail-modal.js.map +1 -0
- package/dist/components/features/skills/skill-facet-rail.cjs +2 -0
- package/dist/components/features/skills/skill-facet-rail.cjs.map +1 -0
- package/dist/components/features/skills/skill-facet-rail.js +42 -0
- package/dist/components/features/skills/skill-facet-rail.js.map +1 -0
- package/dist/components/features/skills/skill-facet-row.cjs +2 -0
- package/dist/components/features/skills/skill-facet-row.cjs.map +1 -0
- package/dist/components/features/skills/skill-facet-row.js +44 -0
- package/dist/components/features/skills/skill-facet-row.js.map +1 -0
- package/dist/components/features/skills/skill-filter.cjs +2 -0
- package/dist/components/features/skills/skill-filter.cjs.map +1 -0
- package/dist/components/features/skills/skill-filter.d.ts +8 -3
- package/dist/components/features/skills/skill-filter.js +183 -0
- package/dist/components/features/skills/skill-filter.js.map +1 -0
- package/dist/components/features/skills/skill-filters-modal.cjs +2 -0
- package/dist/components/features/skills/skill-filters-modal.cjs.map +1 -0
- package/dist/components/features/skills/skill-filters-modal.js +53 -0
- package/dist/components/features/skills/skill-filters-modal.js.map +1 -0
- package/dist/components/features/skills/skill-icon-badge.cjs +2 -0
- package/dist/components/features/skills/skill-icon-badge.cjs.map +1 -0
- package/dist/components/features/skills/skill-icon-badge.js +17 -0
- package/dist/components/features/skills/skill-icon-badge.js.map +1 -0
- package/dist/components/features/skills/skill-type-badge.cjs +2 -0
- package/dist/components/features/skills/skill-type-badge.cjs.map +1 -0
- package/dist/components/features/skills/skill-type-badge.js +21 -0
- package/dist/components/features/skills/skill-type-badge.js.map +1 -0
- package/dist/components/features/skills/skills-toolbar.cjs +2 -0
- package/dist/components/features/skills/skills-toolbar.cjs.map +1 -0
- package/dist/components/features/skills/skills-toolbar.js +63 -0
- package/dist/components/features/skills/skills-toolbar.js.map +1 -0
- package/dist/components/shared/buttons/circle-plus-check-toggle.cjs +1 -1
- package/dist/components/shared/buttons/circle-plus-check-toggle.cjs.map +1 -1
- package/dist/components/shared/buttons/circle-plus-check-toggle.js +19 -6
- package/dist/components/shared/buttons/circle-plus-check-toggle.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 +4 -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/settings/settings-form.cjs +1 -1
- package/dist/components/shared/modals/settings/settings-form.js +6 -6
- package/dist/components/ui/resize-handle.cjs +1 -1
- package/dist/components/ui/resize-handle.cjs.map +1 -1
- package/dist/components/ui/resize-handle.d.ts +2 -1
- package/dist/components/ui/resize-handle.js +6 -5
- package/dist/components/ui/resize-handle.js.map +1 -1
- 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/skills-docs.cjs +2 -0
- package/dist/constants/skills-docs.cjs.map +1 -0
- package/dist/constants/skills-docs.js +6 -0
- package/dist/constants/skills-docs.js.map +1 -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.js +174 -149
- package/dist/contexts/conversation-websocket-context.js.map +1 -1
- package/dist/extensions/canvas-extension-module-loader.d.ts +11 -0
- package/dist/fixtures/home-automations-demo.cjs +2 -0
- package/dist/fixtures/home-automations-demo.cjs.map +1 -0
- package/dist/fixtures/home-automations-demo.d.ts +1 -3
- package/dist/fixtures/home-automations-demo.js +384 -0
- package/dist/fixtures/home-automations-demo.js.map +1 -0
- package/dist/hooks/chat/use-slash-command.cjs +1 -1
- package/dist/hooks/chat/use-slash-command.cjs.map +1 -1
- package/dist/hooks/chat/use-slash-command.d.ts +1 -2
- package/dist/hooks/chat/use-slash-command.js +1 -0
- package/dist/hooks/chat/use-slash-command.js.map +1 -1
- package/dist/hooks/mutation/use-create-conversation.cjs +1 -1
- package/dist/hooks/mutation/use-create-conversation.cjs.map +1 -1
- package/dist/hooks/mutation/use-create-conversation.js +27 -30
- package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
- package/dist/hooks/mutation/use-create-provider-connection.cjs +1 -0
- package/dist/hooks/mutation/use-create-provider-connection.d.ts +2 -0
- package/dist/hooks/mutation/use-create-provider-connection.js +1 -0
- package/dist/hooks/mutation/use-delete-mcp-server.cjs +1 -1
- package/dist/hooks/mutation/use-delete-mcp-server.js +3 -3
- package/dist/hooks/mutation/use-delete-provider-connection.cjs +1 -0
- package/dist/hooks/mutation/use-delete-provider-connection.d.ts +1 -0
- package/dist/hooks/mutation/use-delete-provider-connection.js +1 -0
- package/dist/hooks/mutation/use-manage-canvas-extensions.d.ts +12 -0
- package/dist/hooks/mutation/use-switch-acp-model.cjs +1 -1
- package/dist/hooks/mutation/use-switch-acp-model.cjs.map +1 -1
- package/dist/hooks/mutation/use-switch-acp-model.d.ts +5 -3
- package/dist/hooks/mutation/use-switch-acp-model.js +9 -13
- package/dist/hooks/mutation/use-switch-acp-model.js.map +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.cjs +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.js +6 -6
- package/dist/hooks/mutation/use-update-provider-connection.cjs +1 -0
- package/dist/hooks/mutation/use-update-provider-connection.d.ts +7 -0
- package/dist/hooks/mutation/use-update-provider-connection.js +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 +7 -0
- package/dist/hooks/query/query-keys.js +4 -4
- 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-detail.cjs +1 -0
- package/dist/hooks/query/use-automation-detail.js +2 -0
- package/dist/hooks/query/use-automation-health.cjs +2 -0
- package/dist/hooks/query/use-automation-health.cjs.map +1 -0
- package/dist/hooks/query/use-automation-health.js +22 -0
- package/dist/hooks/query/use-automation-health.js.map +1 -0
- package/dist/hooks/query/use-automations.cjs +2 -0
- package/dist/hooks/query/use-automations.cjs.map +1 -0
- package/dist/hooks/query/use-automations.js +28 -0
- package/dist/hooks/query/use-automations.js.map +1 -0
- 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-conversation-history.cjs +1 -1
- package/dist/hooks/query/use-conversation-history.cjs.map +1 -1
- package/dist/hooks/query/use-conversation-history.js +3 -1
- package/dist/hooks/query/use-conversation-history.js.map +1 -1
- package/dist/hooks/query/use-conversation-metrics.cjs +1 -1
- package/dist/hooks/query/use-conversation-metrics.js +3 -3
- package/dist/hooks/query/use-latest-automation-runs.cjs +1 -0
- package/dist/hooks/query/use-latest-automation-runs.d.ts +2 -0
- package/dist/hooks/query/use-latest-automation-runs.js +4 -0
- package/dist/hooks/query/use-llm-profiles.d.ts +1 -1
- package/dist/hooks/query/use-paginated-conversations.cjs +1 -1
- package/dist/hooks/query/use-paginated-conversations.cjs.map +1 -1
- package/dist/hooks/query/use-paginated-conversations.js +19 -16
- package/dist/hooks/query/use-paginated-conversations.js.map +1 -1
- package/dist/hooks/query/use-provider-connections.cjs +2 -0
- package/dist/hooks/query/use-provider-connections.cjs.map +1 -0
- package/dist/hooks/query/use-provider-connections.d.ts +8 -0
- package/dist/hooks/query/use-provider-connections.js +19 -0
- package/dist/hooks/query/use-provider-connections.js.map +1 -0
- package/dist/hooks/query/use-repository-git-items.cjs +2 -0
- package/dist/hooks/query/use-repository-git-items.cjs.map +1 -0
- package/dist/hooks/query/use-repository-git-items.d.ts +3 -0
- package/dist/hooks/query/use-repository-git-items.js +33 -0
- package/dist/hooks/query/use-repository-git-items.js.map +1 -0
- package/dist/hooks/query/use-search-providers.cjs +1 -1
- package/dist/hooks/query/use-search-providers.cjs.map +1 -1
- package/dist/hooks/query/use-search-providers.js +17 -10
- package/dist/hooks/query/use-search-providers.js.map +1 -1
- package/dist/hooks/query/use-unified-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/use-acp-credential-form.d.ts +6 -0
- package/dist/hooks/use-bash-command-runner.cjs +1 -1
- package/dist/hooks/use-bash-command-runner.cjs.map +1 -1
- package/dist/hooks/use-bash-command-runner.js +45 -42
- package/dist/hooks/use-bash-command-runner.js.map +1 -1
- package/dist/hooks/use-conversation-overview-column-space.cjs +2 -0
- package/dist/hooks/use-conversation-overview-column-space.cjs.map +1 -0
- package/dist/hooks/use-conversation-overview-column-space.d.ts +2 -0
- package/dist/hooks/use-conversation-overview-column-space.js +25 -0
- package/dist/hooks/use-conversation-overview-column-space.js.map +1 -0
- package/dist/hooks/use-conversation-overview-git-diff-stats.cjs +2 -0
- package/dist/hooks/use-conversation-overview-git-diff-stats.cjs.map +1 -0
- package/dist/hooks/use-conversation-overview-git-diff-stats.d.ts +7 -0
- package/dist/hooks/use-conversation-overview-git-diff-stats.js +37 -0
- package/dist/hooks/use-conversation-overview-git-diff-stats.js.map +1 -0
- package/dist/hooks/use-conversation-overview-panel-peek.cjs +2 -0
- package/dist/hooks/use-conversation-overview-panel-peek.cjs.map +1 -0
- package/dist/hooks/use-conversation-overview-panel-peek.d.ts +9 -0
- package/dist/hooks/use-conversation-overview-panel-peek.js +32 -0
- package/dist/hooks/use-conversation-overview-panel-peek.js.map +1 -0
- package/dist/hooks/use-conversation-overview-stats.cjs +2 -0
- package/dist/hooks/use-conversation-overview-stats.cjs.map +1 -0
- package/dist/hooks/use-conversation-overview-stats.d.ts +4 -0
- package/dist/hooks/use-conversation-overview-stats.js +15 -0
- package/dist/hooks/use-conversation-overview-stats.js.map +1 -0
- package/dist/hooks/use-conversation-primary-repository.cjs +2 -0
- package/dist/hooks/use-conversation-primary-repository.cjs.map +1 -0
- package/dist/hooks/use-conversation-primary-repository.d.ts +11 -0
- package/dist/hooks/use-conversation-primary-repository.js +17 -0
- package/dist/hooks/use-conversation-primary-repository.js.map +1 -0
- package/dist/hooks/use-drag-scroll.cjs +2 -0
- package/dist/hooks/use-drag-scroll.cjs.map +1 -0
- package/dist/hooks/use-drag-scroll.d.ts +12 -0
- package/dist/hooks/use-drag-scroll.js +41 -0
- package/dist/hooks/use-drag-scroll.js.map +1 -0
- package/dist/hooks/use-has-permission.cjs +2 -0
- package/dist/hooks/use-has-permission.cjs.map +1 -0
- package/dist/hooks/use-has-permission.js +8 -0
- package/dist/hooks/use-has-permission.js.map +1 -0
- package/dist/hooks/use-home-automation-actions.cjs +2 -0
- package/dist/hooks/use-home-automation-actions.cjs.map +1 -0
- package/dist/hooks/use-home-automation-actions.js +15 -0
- package/dist/hooks/use-home-automation-actions.js.map +1 -0
- package/dist/hooks/use-launch-skill-in-chat.cjs +2 -0
- package/dist/hooks/use-launch-skill-in-chat.cjs.map +1 -0
- package/dist/hooks/use-launch-skill-in-chat.js +16 -0
- package/dist/hooks/use-launch-skill-in-chat.js.map +1 -0
- package/dist/hooks/use-mcp-server-health.cjs +1 -1
- package/dist/hooks/use-mcp-server-health.js +3 -3
- 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-resizable-drawer-width.cjs +2 -0
- package/dist/hooks/use-resizable-drawer-width.cjs.map +1 -0
- package/dist/hooks/use-resizable-drawer-width.d.ts +22 -0
- package/dist/hooks/use-resizable-drawer-width.js +46 -0
- package/dist/hooks/use-resizable-drawer-width.js.map +1 -0
- package/dist/hooks/use-responder-url-secret.cjs +2 -0
- package/dist/hooks/use-responder-url-secret.cjs.map +1 -0
- package/dist/hooks/use-responder-url-secret.js +51 -0
- package/dist/hooks/use-responder-url-secret.js.map +1 -0
- package/dist/hooks/use-select-conversation-tab.cjs +1 -1
- package/dist/hooks/use-select-conversation-tab.cjs.map +1 -1
- package/dist/hooks/use-select-conversation-tab.d.ts +2 -0
- package/dist/hooks/use-select-conversation-tab.js +15 -7
- package/dist/hooks/use-select-conversation-tab.js.map +1 -1
- 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-tracking.cjs +1 -1
- package/dist/hooks/use-tracking.cjs.map +1 -1
- package/dist/hooks/use-tracking.d.ts +17 -0
- package/dist/hooks/use-tracking.js +10 -0
- package/dist/hooks/use-tracking.js.map +1 -1
- package/dist/hooks/use-websocket.cjs +1 -1
- package/dist/hooks/use-websocket.cjs.map +1 -1
- package/dist/hooks/use-websocket.d.ts +1 -2
- package/dist/hooks/use-websocket.js +58 -51
- package/dist/hooks/use-websocket.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 +153 -56
- 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 +2629 -980
- package/dist/i18n/translation.js.map +1 -1
- package/dist/icons/check-circle.cjs +2 -0
- package/dist/icons/check-circle.cjs.map +1 -0
- package/dist/icons/check-circle.js +20 -0
- package/dist/icons/check-circle.js.map +1 -0
- package/dist/icons/chevron-down.cjs +2 -0
- package/dist/icons/chevron-down.cjs.map +1 -0
- package/dist/icons/chevron-down.js +20 -0
- package/dist/icons/chevron-down.js.map +1 -0
- package/dist/icons/clock.cjs +2 -0
- package/dist/icons/clock.cjs.map +1 -0
- package/dist/icons/clock.js +20 -0
- package/dist/icons/clock.js.map +1 -0
- package/dist/icons/exclamation-circle.cjs +2 -0
- package/dist/icons/exclamation-circle.cjs.map +1 -0
- package/dist/icons/exclamation-circle.js +20 -0
- package/dist/icons/exclamation-circle.js.map +1 -0
- package/dist/icons/kebab-vertical.cjs +2 -0
- package/dist/icons/kebab-vertical.cjs.map +1 -0
- package/dist/icons/kebab-vertical.js +14 -0
- package/dist/icons/kebab-vertical.js.map +1 -0
- package/dist/icons/key.cjs +2 -0
- package/dist/icons/key.cjs.map +1 -0
- package/dist/icons/key.js +21 -0
- package/dist/icons/key.js.map +1 -0
- package/dist/icons/message-square-share.cjs +2 -0
- package/dist/icons/message-square-share.cjs.map +1 -0
- package/dist/icons/message-square-share.js +22 -0
- package/dist/icons/message-square-share.js.map +1 -0
- package/dist/icons/play.cjs +2 -0
- package/dist/icons/play.cjs.map +1 -0
- package/dist/icons/play.js +19 -0
- package/dist/icons/play.js.map +1 -0
- package/dist/icons/power.cjs +2 -0
- package/dist/icons/power.cjs.map +1 -0
- package/dist/icons/power.js +20 -0
- package/dist/icons/power.js.map +1 -0
- package/dist/icons/sparkle.cjs +2 -0
- package/dist/icons/sparkle.cjs.map +1 -0
- package/dist/icons/sparkle.js +20 -0
- package/dist/icons/sparkle.js.map +1 -0
- package/dist/icons/trash.cjs +2 -0
- package/dist/icons/trash.cjs.map +1 -0
- package/dist/icons/trash.js +20 -0
- package/dist/icons/trash.js.map +1 -0
- package/dist/icons/x-circle.cjs +2 -0
- package/dist/icons/x-circle.cjs.map +1 -0
- package/dist/icons/x-circle.js +20 -0
- package/dist/icons/x-circle.js.map +1 -0
- 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 +156 -59
- package/dist/locales/ca/openhands.json +156 -59
- package/dist/locales/de/openhands.json +156 -59
- package/dist/locales/en/openhands.json +156 -59
- package/dist/locales/es/openhands.json +156 -59
- package/dist/locales/fr/openhands.json +156 -59
- package/dist/locales/it/openhands.json +156 -59
- package/dist/locales/ja/openhands.json +156 -59
- package/dist/locales/ko-KR/openhands.json +156 -59
- package/dist/locales/no/openhands.json +156 -59
- package/dist/locales/pt/openhands.json +156 -59
- package/dist/locales/tr/openhands.json +156 -59
- package/dist/locales/uk/openhands.json +156 -59
- package/dist/locales/zh-CN/openhands.json +156 -59
- package/dist/locales/zh-TW/openhands.json +156 -59
- package/dist/manifests/automation-insights.cjs +2 -0
- package/dist/manifests/automation-insights.cjs.map +1 -0
- package/dist/manifests/automation-insights.d.ts +2 -0
- package/dist/manifests/automation-insights.js +9 -0
- package/dist/manifests/automation-insights.js.map +1 -0
- package/dist/manifests/automation-interface.cjs +1 -1
- package/dist/manifests/automation-interface.cjs.map +1 -1
- package/dist/manifests/automation-interface.d.ts +53 -31
- package/dist/manifests/automation-interface.js +56 -59
- 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 +37 -3
- package/dist/manifests/automation-setup.js +16 -2
- package/dist/manifests/automation-setup.js.map +1 -1
- package/dist/manifests/interface-validation.cjs +1 -1
- package/dist/manifests/interface-validation.cjs.map +1 -1
- package/dist/manifests/interface-validation.js +56 -52
- package/dist/manifests/interface-validation.js.map +1 -1
- package/dist/manifests/manifest-actions.d.ts +5 -0
- package/dist/manifests/manifest-bundle.d.ts +30 -0
- package/dist/manifests/manifest-local-validation.d.ts +10 -1
- package/dist/manifests/manifest-sources.cjs +1 -1
- package/dist/manifests/manifest-sources.cjs.map +1 -1
- package/dist/manifests/manifest-sources.js +3 -3
- package/dist/manifests/manifest-sources.js.map +1 -1
- package/dist/manifests/manifest-template.d.ts +14 -0
- package/dist/manifests/manifest-validation.cjs +1 -1
- package/dist/manifests/manifest-validation.cjs.map +1 -1
- package/dist/manifests/manifest-validation.js +78 -45
- package/dist/manifests/manifest-validation.js.map +1 -1
- package/dist/manifests/types.cjs +1 -1
- package/dist/manifests/types.cjs.map +1 -1
- package/dist/manifests/types.d.ts +64 -3
- package/dist/manifests/types.js +7 -6
- package/dist/manifests/types.js.map +1 -1
- package/dist/node_modules/@heroui/popover/dist/chunk-NW7HJLND.cjs +1 -1
- package/dist/node_modules/@heroui/popover/dist/chunk-NW7HJLND.js +10 -10
- package/dist/node_modules/@heroui/ripple/dist/chunk-UIQI3AYJ.cjs +1 -1
- package/dist/node_modules/@heroui/ripple/dist/chunk-UIQI3AYJ.js +8 -8
- package/dist/node_modules/@heroui/tooltip/dist/chunk-AUA5GDXN.cjs +1 -1
- package/dist/node_modules/@heroui/tooltip/dist/chunk-AUA5GDXN.js +9 -9
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs +4884 -0
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.js +11 -0
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs +13 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js +92 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs +12 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js +103 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs +9 -7
- 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 +37 -13
- 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 +2 -2
- 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 +34 -34
- 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/jira-issue-to-pr/manifest.cjs +3 -3
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-pr/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-pr/manifest.js +2 -2
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-pr/manifest.js.map +1 -1
- 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 +14 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js +77 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js.map +1 -0
- 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 -10
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/index.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/index.js +18 -13
- package/dist/node_modules/@openhands/extensions/automations/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 +6 -2
- 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 +40 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js +36 -3
- package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sonarqube.cjs +2 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sonarqube.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sonarqube.js +75 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/sonarqube.js.map +1 -0
- 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 +75 -71
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.cjs +1043 -49
- package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.js +78 -17
- package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.js +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js +8 -7
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/index.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/index.js +2 -2
- package/dist/node_modules/lucide-react/dist/esm/icons/activity.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/activity.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/activity.js +9 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/activity.js.map +1 -0
- 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/book-open.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/book-open.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/book-open.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/book-open.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/download.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/download.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/download.js +19 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/download.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/file-text.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/file-text.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/file-text.js +27 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/file-text.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/git-commit-horizontal.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/git-commit-horizontal.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/git-commit-horizontal.js +27 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/git-commit-horizontal.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/laptop.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/laptop.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/laptop.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/laptop.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/layout-dashboard.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/layout-dashboard.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/layout-dashboard.js +39 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/layout-dashboard.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/library.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/library.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/library.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/library.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/package.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/package.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/package.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/package.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/palette.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/palette.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/palette.js +39 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/palette.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/pen-line.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/pen-line.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/pen-line.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/pen-line.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shield-check.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shield-check.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shield-check.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/shield-check.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sparkles.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sparkles.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sparkles.js +25 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sparkles.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/timer.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/timer.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/timer.js +27 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/timer.js.map +1 -0
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +3 -3
- package/dist/package.js.map +1 -1
- package/dist/routes/agent-settings.d.ts +10 -0
- package/dist/routes/app-settings.cjs +1 -1
- package/dist/routes/app-settings.cjs.map +1 -1
- package/dist/routes/app-settings.js +88 -86
- package/dist/routes/app-settings.js.map +1 -1
- package/dist/routes/commits-tab.cjs +1 -1
- package/dist/routes/commits-tab.cjs.map +1 -1
- package/dist/routes/commits-tab.js +27 -21
- package/dist/routes/commits-tab.js.map +1 -1
- package/dist/routes/conversation.cjs +1 -1
- package/dist/routes/conversation.cjs.map +1 -1
- package/dist/routes/conversation.js +56 -55
- package/dist/routes/conversation.js.map +1 -1
- package/dist/routes/files-tab.cjs +1 -1
- package/dist/routes/files-tab.cjs.map +1 -1
- package/dist/routes/files-tab.d.ts +4 -0
- package/dist/routes/files-tab.js +119 -149
- 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 +9 -1
- package/dist/routes/llm-settings.js +141 -103
- package/dist/routes/llm-settings.js.map +1 -1
- package/dist/routes/mcp.cjs +1 -1
- package/dist/routes/mcp.cjs.map +1 -1
- package/dist/routes/mcp.js +20 -20
- package/dist/routes/secrets-settings.cjs +1 -1
- package/dist/routes/secrets-settings.js +15 -15
- 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/stores/conversation-store.cjs +1 -1
- package/dist/stores/conversation-store.cjs.map +1 -1
- package/dist/stores/conversation-store.d.ts +8 -1
- package/dist/stores/conversation-store.js +9 -0
- package/dist/stores/conversation-store.js.map +1 -1
- package/dist/stores/files-tab-store.cjs +1 -1
- package/dist/stores/files-tab-store.cjs.map +1 -1
- package/dist/stores/files-tab-store.d.ts +13 -0
- package/dist/stores/files-tab-store.js +49 -5
- package/dist/stores/files-tab-store.js.map +1 -1
- package/dist/stores/use-event-store.cjs +1 -1
- package/dist/stores/use-event-store.cjs.map +1 -1
- package/dist/stores/use-event-store.js +11 -11
- package/dist/stores/use-event-store.js.map +1 -1
- package/dist/types/agent-server/core/events/message-event.d.ts +2 -2
- package/dist/types/automation.cjs +2 -0
- package/dist/types/automation.cjs.map +1 -0
- package/dist/types/automation.d.ts +20 -0
- package/dist/types/automation.js +8 -0
- package/dist/types/automation.js.map +1 -0
- package/dist/types/canvas-extension.cjs +2 -0
- package/dist/types/canvas-extension.cjs.map +1 -0
- package/dist/types/canvas-extension.d.ts +77 -0
- package/dist/types/canvas-extension.js +6 -0
- package/dist/types/canvas-extension.js.map +1 -0
- package/dist/types/settings.d.ts +7 -0
- package/dist/ui/help-link.cjs +1 -1
- package/dist/ui/help-link.cjs.map +1 -1
- package/dist/ui/help-link.d.ts +6 -1
- package/dist/ui/help-link.js +32 -18
- package/dist/ui/help-link.js.map +1 -1
- package/dist/utils/acp-auth-display.d.ts +35 -0
- package/dist/utils/automation-catalog.cjs +1 -1
- package/dist/utils/automation-catalog.cjs.map +1 -1
- package/dist/utils/automation-catalog.d.ts +12 -0
- package/dist/utils/automation-catalog.js +20 -1
- package/dist/utils/automation-catalog.js.map +1 -1
- package/dist/utils/automation-schedule.cjs +2 -0
- package/dist/utils/automation-schedule.cjs.map +1 -0
- package/dist/utils/automation-schedule.js +8 -0
- package/dist/utils/automation-schedule.js.map +1 -0
- package/dist/utils/automation-stack-section.cjs +2 -0
- package/dist/utils/automation-stack-section.cjs.map +1 -0
- package/dist/utils/automation-stack-section.d.ts +2 -0
- package/dist/utils/automation-stack-section.js +6 -0
- package/dist/utils/automation-stack-section.js.map +1 -0
- 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.js +4 -0
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/conversation-local-storage.cjs +1 -1
- package/dist/utils/conversation-local-storage.cjs.map +1 -1
- package/dist/utils/conversation-local-storage.d.ts +17 -4
- package/dist/utils/conversation-local-storage.js +111 -63
- package/dist/utils/conversation-local-storage.js.map +1 -1
- package/dist/utils/conversation-metrics.cjs +1 -1
- package/dist/utils/conversation-metrics.cjs.map +1 -1
- package/dist/utils/conversation-metrics.d.ts +3 -2
- package/dist/utils/conversation-metrics.js +16 -14
- package/dist/utils/conversation-metrics.js.map +1 -1
- package/dist/utils/conversation-overview-project-scope.cjs +2 -0
- package/dist/utils/conversation-overview-project-scope.cjs.map +1 -0
- package/dist/utils/conversation-overview-project-scope.d.ts +16 -0
- package/dist/utils/conversation-overview-project-scope.js +22 -0
- package/dist/utils/conversation-overview-project-scope.js.map +1 -0
- package/dist/utils/extension-module-card-classes.cjs +1 -1
- package/dist/utils/extension-module-card-classes.cjs.map +1 -1
- package/dist/utils/extension-module-card-classes.d.ts +1 -1
- package/dist/utils/extension-module-card-classes.js +2 -2
- package/dist/utils/extension-module-card-classes.js.map +1 -1
- 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 +2 -0
- package/dist/utils/format-relative-time.cjs.map +1 -0
- package/dist/utils/format-relative-time.d.ts +7 -0
- package/dist/utils/format-relative-time.js +22 -0
- package/dist/utils/format-relative-time.js.map +1 -0
- package/dist/utils/git-diff-stats.cjs +5 -0
- package/dist/utils/git-diff-stats.cjs.map +1 -0
- package/dist/utils/git-diff-stats.d.ts +9 -0
- package/dist/utils/git-diff-stats.js +53 -0
- package/dist/utils/git-diff-stats.js.map +1 -0
- package/dist/utils/handle-event-for-ui.cjs +1 -1
- package/dist/utils/handle-event-for-ui.cjs.map +1 -1
- package/dist/utils/handle-event-for-ui.js +13 -11
- package/dist/utils/handle-event-for-ui.js.map +1 -1
- package/dist/utils/mcp-credential-validation.cjs +1 -1
- package/dist/utils/mcp-credential-validation.js +3 -3
- package/dist/utils/mcp-marketplace-utils.cjs +1 -1
- package/dist/utils/mcp-marketplace-utils.cjs.map +1 -1
- package/dist/utils/mcp-marketplace-utils.js +22 -9
- package/dist/utils/mcp-marketplace-utils.js.map +1 -1
- package/dist/utils/parse-git-remote-url.cjs +1 -1
- package/dist/utils/parse-git-remote-url.cjs.map +1 -1
- package/dist/utils/parse-git-remote-url.js +6 -7
- package/dist/utils/parse-git-remote-url.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/recommended-automation-rail.cjs +2 -0
- package/dist/utils/recommended-automation-rail.cjs.map +1 -0
- package/dist/utils/recommended-automation-rail.d.ts +22 -0
- package/dist/utils/recommended-automation-rail.js +44 -0
- package/dist/utils/recommended-automation-rail.js.map +1 -0
- package/dist/utils/responder-deployment.cjs +2 -0
- package/dist/utils/responder-deployment.cjs.map +1 -0
- package/dist/utils/responder-deployment.js +42 -0
- package/dist/utils/responder-deployment.js.map +1 -0
- package/dist/utils/scroll-fade-state.cjs +2 -0
- package/dist/utils/scroll-fade-state.cjs.map +1 -0
- package/dist/utils/scroll-fade-state.d.ts +6 -0
- package/dist/utils/scroll-fade-state.js +13 -0
- package/dist/utils/scroll-fade-state.js.map +1 -0
- package/dist/utils/skill-category.cjs +2 -0
- package/dist/utils/skill-category.cjs.map +1 -0
- package/dist/utils/skill-category.js +51 -0
- package/dist/utils/skill-category.js.map +1 -0
- 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/skill-scope.cjs +1 -1
- package/dist/utils/skill-scope.cjs.map +1 -1
- package/dist/utils/skill-scope.js +1 -1
- package/dist/utils/skill-scope.js.map +1 -1
- package/dist/utils/streaming-delta-batcher.cjs +2 -0
- package/dist/utils/streaming-delta-batcher.cjs.map +1 -0
- package/dist/utils/streaming-delta-batcher.d.ts +21 -0
- package/dist/utils/streaming-delta-batcher.js +31 -0
- package/dist/utils/streaming-delta-batcher.js.map +1 -0
- package/dist/utils/tar-gzip.d.ts +26 -0
- package/dist/utils/utils.cjs +1 -1
- package/dist/utils/utils.cjs.map +1 -1
- package/dist/utils/utils.d.ts +1 -41
- package/dist/utils/utils.js +27 -6
- 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/websocket-handshake.cjs +2 -0
- package/dist/utils/websocket-handshake.cjs.map +1 -0
- package/dist/utils/websocket-handshake.d.ts +11 -0
- package/dist/utils/websocket-handshake.js +12 -0
- package/dist/utils/websocket-handshake.js.map +1 -0
- package/dist/utils/workspace-mode.d.ts +4 -0
- package/package.json +3 -3
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/check-translation-completeness.cjs +5 -0
- package/scripts/dev-extra-backend.mjs +28 -9
- package/scripts/dev-safe.mjs +81 -8
- package/scripts/dev-static.mjs +48 -44
- package/scripts/dev-with-automation.mjs +95 -6
- package/scripts/ingress.mjs +27 -1
- package/scripts/seed-automation-ux-data.mjs +810 -0
- package/scripts/static-server.mjs +74 -1
- package/tools/canvas_ui_tool.py +19 -0
- package/build/assets/acp-providers-CYy8qA2z.js +0 -1
- package/build/assets/active-backend-context-BZDG15C0.js +0 -2
- package/build/assets/agent-context-settings-DGWBBbcp.js +0 -1
- package/build/assets/agent-profiles-settings-DrkGdf4_.js +0 -1
- package/build/assets/agent-server-conversation-service.api-DK56YPTs.js +0 -86
- package/build/assets/agent-settings-DfcSgkLD.js +0 -2
- package/build/assets/agent-settings-Lrc5-twS.js +0 -1
- package/build/assets/alert-banner-BgDHhL7b.js +0 -1
- package/build/assets/api-error-message-BEIE_yD1.js +0 -1
- package/build/assets/api-key-entry-screen-DaZnOlVo.js +0 -1
- package/build/assets/app-settings-BG5NAUbC.js +0 -1
- package/build/assets/automation-detail-D4Hs831Z.js +0 -3
- package/build/assets/automation-export-n0X6FB0C.js +0 -2
- package/build/assets/automation-git-sync-CDrm8WV7.js +0 -1
- package/build/assets/automation-setup-route-CZCl4ONs.js +0 -1
- package/build/assets/automation-templates-DFF96AdL.js +0 -1
- package/build/assets/automations-list-Bl-oGOrV.js +0 -1
- package/build/assets/back-nav-button-H_ThtDA0.js +0 -1
- package/build/assets/backend-form-modal-CbCemvHt.js +0 -1
- package/build/assets/backend-not-configured-DP8KLNq_.js +0 -1
- package/build/assets/backend-synced-settings-badge-BBASWqsb.js +0 -1
- package/build/assets/badge-B-51h-SW.js +0 -1
- package/build/assets/base-modal-BbjycA8X.js +0 -1
- package/build/assets/bot-CGPCg03p.js +0 -1
- package/build/assets/brand-button-Blxv5nww.js +0 -1
- package/build/assets/browser-CuW0nWvh.js +0 -7
- package/build/assets/browser-tab-D5G0ORwt.js +0 -1
- package/build/assets/chat-send-button-BD2tii1r.js +0 -1
- package/build/assets/check-DSuS-lyr.js +0 -1
- package/build/assets/chevron-down-CgGcmtE2.js +0 -1
- package/build/assets/circle-check-CG5-NPw7.js +0 -1
- package/build/assets/circle-plus-check-toggle-ASbpB8vN.js +0 -1
- package/build/assets/cloud-funnel-analytics-GlCUG0gk.js +0 -1
- package/build/assets/cog-CZiR80uT.js +0 -1
- package/build/assets/combobox-caret-DvpEsh2O.js +0 -1
- package/build/assets/command-menu-DwUQzjYP.js +0 -1
- package/build/assets/condenser-settings-BptcoiLA.js +0 -1
- package/build/assets/confirmation-modal-CiEwxZAA.js +0 -1
- package/build/assets/context-menu-list-item-CdcamfM1.js +0 -1
- package/build/assets/conversation-DREHj4nT.js +0 -1
- package/build/assets/conversation-DotRfiDz.js +0 -90
- package/build/assets/conversation-panel-DREHj4nT.js +0 -1
- package/build/assets/conversation-state-store-DMLtlHbE.js +0 -1
- package/build/assets/conversation-store-Blc5xysY.js +0 -6
- package/build/assets/conversation-tab-empty-state-D-puECpY.js +0 -1
- package/build/assets/copy-to-clipboard-button-BGxcUbgy.js +0 -1
- package/build/assets/device-verify-CZJfWaJf.js +0 -1
- package/build/assets/dropdown-classes-tLhpwtxS.js +0 -1
- package/build/assets/entry.client-D8GnI6GZ.js +0 -2
- package/build/assets/enum-filter-dropdown-Fk8k60nk.js +0 -1
- package/build/assets/environment-switch-overlay-DeztVYuL.js +0 -1
- package/build/assets/extension-module-card-classes-Bo43vY5V.js +0 -1
- package/build/assets/extensions-hub-Cd6GCYzq.js +0 -1
- package/build/assets/extensions-navigation-C4sgZg-y.js +0 -1
- package/build/assets/external-link-C0UpBgsE.js +0 -1
- package/build/assets/file-text-C6WYtNdV.js +0 -1
- package/build/assets/files-tab-BW_qzyAm.js +0 -1
- package/build/assets/form-control-classes-CGXBLcn1.js +0 -1
- package/build/assets/format-model-name-BNPKVsIq.js +0 -1
- package/build/assets/format-relative-time-ZhQD4rsl.js +0 -1
- package/build/assets/git-provider-icon-CaQ1yLPi.js +0 -1
- package/build/assets/git-repo-dropdown-CgXR6M_E.js +0 -1
- package/build/assets/git-repo-dropdown-D2Uei3CO.js +0 -1
- package/build/assets/highlighted-source-view-C_YOp8Fo.js +0 -1
- package/build/assets/home-DNzzJcMP.js +0 -1
- package/build/assets/home-aCos-5vc.js +0 -1
- package/build/assets/home-store-DgzViC3f.js +0 -1
- package/build/assets/index-home-DNzzJcMP.js +0 -1
- package/build/assets/info-CLoC1LRo.js +0 -1
- package/build/assets/install-server-modal-D7zIqNKz.js +0 -1
- package/build/assets/kebab-menu-item-content-DERMdnDv.js +0 -1
- package/build/assets/launch-5PjKeLak.js +0 -1
- package/build/assets/list-todo-BF049YaY.js +0 -1
- package/build/assets/llm-not-configured-banner-BK9z5eS0.js +0 -27
- package/build/assets/llm-settings-BLAMK2tR.js +0 -1
- package/build/assets/llm-settings-BWsbarGM.js +0 -1
- package/build/assets/llm-subscription-service-SfnEV9Uc.js +0 -1
- package/build/assets/loader-circle-D7IagAyF.js +0 -1
- package/build/assets/loading-spinner-DBgXgra0.js +0 -1
- package/build/assets/manage-backends-modal-BTqNPhzc.js +0 -1
- package/build/assets/manifest-abebca3c.js +0 -1
- package/build/assets/manifest-subpage-layout-Rn-glaxV.js +0 -1
- package/build/assets/map-provider-BK4HnqYz.js +0 -1
- package/build/assets/markdown-renderer-Cp6DlHQN.js +0 -8
- package/build/assets/mcp-BC-Ixn4T.js +0 -9
- package/build/assets/mcp-marketplace-utils-BJWJgbB6.js +0 -1
- package/build/assets/messages-CzFKrzPG.js +0 -40
- package/build/assets/modal-body-BdKfD3Hl.js +0 -1
- package/build/assets/modal-classes-D5_b5vMi.js +0 -1
- package/build/assets/modal-close-button-objukxk_.js +0 -1
- package/build/assets/mouse-pointer-click-C_gXyLyD.js +0 -1
- package/build/assets/npm-CHVHV1MC.js +0 -1
- package/build/assets/onboarding-Diw0V51A.js +0 -1
- package/build/assets/onboarding-modal-Da4yHzsA.js +0 -1
- package/build/assets/organization-service.api-BztSy69u.js +0 -1
- package/build/assets/parse-git-remote-url-BkXN9jzl.js +0 -1
- package/build/assets/pencil-49avMHlD.js +0 -1
- package/build/assets/planner-tab-CJiSpNax.js +0 -1
- package/build/assets/plugins-management-service-lHdNKWNU.js +0 -1
- package/build/assets/plus-C0BagBpV.js +0 -1
- package/build/assets/profiles-service.api-BLr7FXec.js +0 -1
- package/build/assets/providers-CWXnb7S3.js +0 -1
- package/build/assets/proxy-DYDXxtje.js +0 -1
- package/build/assets/puzzle-Bt2B1rzf.js +0 -1
- package/build/assets/recommended-automations-launcher-CcFMfJRR.js +0 -1
- package/build/assets/refresh-cw-nmcesifB.js +0 -1
- package/build/assets/root-CT4t7apy.css +0 -1
- package/build/assets/root-DnRgLKpU.js +0 -2
- package/build/assets/root-layout-2L9tr-BN.js +0 -2
- package/build/assets/schema-field-C59lVZTA.js +0 -1
- package/build/assets/sdk-section-page-BbBEQQjq.js +0 -1
- package/build/assets/search-CYSDBczG.js +0 -1
- package/build/assets/secrets-service-BtsgYSlj.js +0 -1
- package/build/assets/secrets-settings-DJ0OKa4_.js +0 -1
- package/build/assets/segmented-toggle-DiVfTZuN.js +0 -1
- package/build/assets/settings-CDqL_Uqh.js +0 -1
- package/build/assets/settings-DcNPxz0v.js +0 -1
- package/build/assets/settings-dropdown-input-Ba1UN5Du.js +0 -1
- package/build/assets/settings-index-Cz2cKt2K.js +0 -1
- package/build/assets/settings-input-CWUEHHvS.js +0 -1
- package/build/assets/settings-list-classes-DdcLXDGn.js +0 -1
- package/build/assets/settings-modal-nEEK1Kh1.js +0 -1
- package/build/assets/settings-service.api-3yAUFcaP.js +0 -1
- package/build/assets/settings-switch-Dk9hChx1.js +0 -1
- package/build/assets/settings-utils-CxjtCSB3.js +0 -1
- package/build/assets/shared-conversation-DbAcrx3s.js +0 -1
- package/build/assets/shield-check-CiOTXxV2.js +0 -1
- package/build/assets/sidebar-layout-lrfPooIB.js +0 -1
- package/build/assets/sidebar-mobile-menu-toggle-KERXfNu1.js +0 -1
- package/build/assets/sidebar-nav-link-B8lFD6Cb.js +0 -1
- package/build/assets/sidebar-store-u6pUpxJ7.js +0 -1
- package/build/assets/skill-card-pill-row-dGIUzr_b.js +0 -1
- package/build/assets/skill-icon-badge-kkOWZ89w.js +0 -1
- package/build/assets/skill-scope-DWN1PBPH.js +0 -1
- package/build/assets/skills-plugins-DFjH2Nq6.js +0 -1
- package/build/assets/skills-settings-DIHpl3ol.js +0 -2
- package/build/assets/sparkles-ntyMLnbj.js +0 -1
- package/build/assets/styled-tooltip-B6JXcsmL.js +0 -1
- package/build/assets/task-list-tab-aEJzEcHD.js +0 -1
- package/build/assets/terminal-Dch7Ty5K.js +0 -3
- package/build/assets/toggle-switch-B2MLKsgt.js +0 -1
- package/build/assets/trash-2-yZnDM4Ji.js +0 -1
- package/build/assets/typography-DB5HoCk0.js +0 -1
- package/build/assets/usage-tab-DrEtBmBT.js +0 -1
- package/build/assets/use-acp-credential-form-c8KXAa8A.js +0 -1
- package/build/assets/use-activate-agent-profile-B0p34N3q.js +0 -1
- package/build/assets/use-agent-profiles-CPIc6wLH.js +0 -1
- package/build/assets/use-can-manage-org-profiles-Dz_8Eqkv.js +0 -1
- package/build/assets/use-cloud-current-user-id-DvUVqCle.js +0 -1
- package/build/assets/use-config-C3PO4TBw.js +0 -1
- package/build/assets/use-create-conversation-DVrA_uLD.js +0 -1
- package/build/assets/use-create-secret-DbBIpaCR.js +0 -1
- package/build/assets/use-get-secrets-6PBitf54.js +0 -1
- package/build/assets/use-has-permission-CQ31Cl8j.js +0 -1
- package/build/assets/use-is-authed-2UrDIziV.js +0 -1
- package/build/assets/use-is-creating-conversation-BvYpmb3v.js +0 -1
- package/build/assets/use-launch-skill-in-chat-COnDpxCQ.js +0 -1
- package/build/assets/use-llm-profiles-diZS4FiN.js +0 -1
- package/build/assets/use-manifest-capabilities-HIWCtIUm.js +0 -1
- package/build/assets/use-onboarding-completion-Bs8PcXik.js +0 -1
- package/build/assets/use-plugins-marketplace-BCuNLFsr.js +0 -1
- package/build/assets/use-save-agent-profile-BaMNSpBV.js +0 -1
- package/build/assets/use-save-settings-BahvC2Gw.js +0 -1
- package/build/assets/use-settings-C6ZxpBDX.js +0 -1
- package/build/assets/use-settings-nav-items-Bqn69Ggw.js +0 -16
- package/build/assets/use-tracking-Bhu7gk2y.js +0 -3
- package/build/assets/use-user-conversation-BkNXpXrd.js +0 -1
- package/build/assets/useInfiniteQuery-c_OmS3lK.js +0 -1
- package/build/assets/useMutation-6ZsQCqAn.js +0 -1
- package/build/assets/useQueries-xDrGlTO_.js +0 -1
- package/build/assets/useQuery-Bs5NFz2s.js +0 -1
- package/build/assets/utils-DUD5ScdA.js +0 -1
- package/build/assets/vendor~browser-B-fae1JU.js +0 -47
- package/build/assets/vendor~entry.client-BFE7Llz9.js +0 -1
- package/build/assets/vendor~entry.client-BaKt_PIp.js +0 -9
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js +0 -186
- package/build/assets/vendor~files-tab-B6POTS66.js +0 -11
- package/build/assets/vendor~index-home~home~conversation-panel~conversation-53Q_U6uP.js +0 -13
- package/build/assets/vendor~index-home~home~conversation-panel~conversation~alert-banner-B3qC_oj8.js +0 -1
- package/build/assets/vendor~root-layout-DeQACFVA.js +0 -1
- package/build/assets/vendor~root-layout~conversation-panel~conversation-bv7ooVgH.js +0 -1
- package/build/assets/vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-e8pX05xf.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-BvS6PCK2.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~mcp~automations-list~automation-templates~automation-set~bxsimjx0-D7IDevqN.js +0 -1
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-DOPLJMH9.js +0 -48
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js +0 -1
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-BOVIFA_g.js +0 -73
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-C0JXQb_q.js +0 -7465
- package/build/assets/verification-settings-COueVXmM.js +0 -1
- package/build/assets/wrench-C95ujnYo.js +0 -1
- package/build/assets/x-86ZCfxKY.js +0 -1
- package/build/assets/zap-DRa-r-Tf.js +0 -1
- package/dist/components/features/diff-viewer/empty-changes-message.cjs +0 -2
- package/dist/components/features/diff-viewer/empty-changes-message.cjs.map +0 -1
- package/dist/components/features/diff-viewer/empty-changes-message.js +0 -17
- package/dist/components/features/diff-viewer/empty-changes-message.js.map +0 -1
- package/dist/components/features/tips/random-tip.cjs +0 -2
- package/dist/components/features/tips/random-tip.cjs.map +0 -1
- package/dist/components/features/tips/random-tip.d.ts +0 -2
- package/dist/components/features/tips/random-tip.js +0 -41
- package/dist/components/features/tips/random-tip.js.map +0 -1
- package/dist/hooks/query/use-has-git-commits.cjs +0 -2
- package/dist/hooks/query/use-has-git-commits.cjs.map +0 -1
- package/dist/hooks/query/use-has-git-commits.d.ts +0 -25
- package/dist/hooks/query/use-has-git-commits.js +0 -31
- package/dist/hooks/query/use-has-git-commits.js.map +0 -1
- package/dist/hooks/use-has-attached-source.cjs +0 -2
- package/dist/hooks/use-has-attached-source.cjs.map +0 -1
- package/dist/hooks/use-has-attached-source.d.ts +0 -18
- package/dist/hooks/use-has-attached-source.js +0 -14
- package/dist/hooks/use-has-attached-source.js.map +0 -1
- package/dist/icons/chveron-up.cjs +0 -2
- package/dist/icons/chveron-up.cjs.map +0 -1
- package/dist/icons/chveron-up.js +0 -21
- package/dist/icons/chveron-up.js.map +0 -1
- package/dist/routes/changes-tab.cjs +0 -2
- package/dist/routes/changes-tab.cjs.map +0 -1
- package/dist/routes/changes-tab.d.ts +0 -3
- package/dist/routes/changes-tab.js +0 -64
- package/dist/routes/changes-tab.js.map +0 -1
- package/dist/utils/file-priority.cjs +0 -2
- package/dist/utils/file-priority.cjs.map +0 -1
- package/dist/utils/file-priority.d.ts +0 -27
- package/dist/utils/file-priority.js +0 -61
- package/dist/utils/file-priority.js.map +0 -1
- package/dist/utils/table-row-classes.d.ts +0 -9
- package/dist/utils/tips.cjs +0 -2
- package/dist/utils/tips.cjs.map +0 -1
- package/dist/utils/tips.d.ts +0 -7
- package/dist/utils/tips.js +0 -45
- package/dist/utils/tips.js.map +0 -1
- 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~dcc51rps-rfV8mQ9m.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-rfV8mQ9m.js} +0 -0
- /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~i58xkef6-cHFhpUBq.js} +0 -0
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import { SETUP_PLACEHOLDER_NAMESPACES as e } from "./types.js";
|
|
2
2
|
//#region src/manifests/manifest-validation.ts
|
|
3
|
-
var t = /^[a-z0-9]+(-[a-z0-9]+)*$/, n = /^[a-z][A-Za-z0-9]*$/, r = /<[A-Za-z/!]/, i = RegExp(`\\{\\{(?!(?:${e.join("|")})\\.[A-Za-z0-9_.]+\\}\\})`),
|
|
3
|
+
var t = /^[a-z0-9]+(-[a-z0-9]+)*$/, n = /^[a-z][A-Za-z0-9]*$/, r = /<[A-Za-z/!]/, i = /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(?:\+[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*)?$/, a = /^[A-Za-z0-9 ._/-]+$/, o = /^[A-Za-z0-9._-]+(\/[A-Za-z0-9._-]+)*$/, s = /^(skills|automations)\/[A-Za-z0-9._-]+(\/[A-Za-z0-9._-]+)*$/, c = RegExp(`\\{\\{(?!(?:${e.join("|")})\\.[A-Za-z0-9_.]+\\}\\})`), l = ["direct", "assisted"], u = [
|
|
4
4
|
"text",
|
|
5
5
|
"textarea",
|
|
6
6
|
"select",
|
|
7
7
|
"cron",
|
|
8
8
|
"timezone",
|
|
9
9
|
"repo-picker"
|
|
10
|
-
],
|
|
10
|
+
], d = [
|
|
11
11
|
"github",
|
|
12
12
|
"gitlab",
|
|
13
13
|
"bitbucket"
|
|
14
|
-
],
|
|
15
|
-
function
|
|
14
|
+
], f = ["cron", "event"], p = ["safeExpressionLiteral"], m = 2e3;
|
|
15
|
+
function h(e) {
|
|
16
16
|
return typeof e == "object" && !!e && !Array.isArray(e);
|
|
17
17
|
}
|
|
18
|
-
function
|
|
18
|
+
function g(e, t) {
|
|
19
19
|
return typeof e == "string" && t.includes(e);
|
|
20
20
|
}
|
|
21
|
-
function
|
|
21
|
+
function _(e, t) {
|
|
22
22
|
return typeof e == "number" && Number.isInteger(e) && e >= t;
|
|
23
23
|
}
|
|
24
|
-
var
|
|
24
|
+
var v = class {
|
|
25
25
|
errors = [];
|
|
26
26
|
fail(e, t) {
|
|
27
27
|
return this.errors.push(`${e}: ${t}`), !1;
|
|
@@ -30,7 +30,7 @@ var m = class {
|
|
|
30
30
|
return typeof e != "string" || e.length === 0 ? this.fail(t, "must be a non-empty string") : r.test(e) ? this.fail(t, "must not contain markup") : !0;
|
|
31
31
|
}
|
|
32
32
|
placeholders(e, t) {
|
|
33
|
-
return
|
|
33
|
+
return c.test(e) ? this.fail(t, "uses an unknown placeholder namespace") : !0;
|
|
34
34
|
}
|
|
35
35
|
templateCopy(e, t) {
|
|
36
36
|
return this.copy(e, t) && this.placeholders(e, t);
|
|
@@ -42,93 +42,126 @@ var m = class {
|
|
|
42
42
|
return t in e ? this.fail(`${n}.${t}`, r) : !0;
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
|
-
function
|
|
46
|
-
|
|
45
|
+
function y(e, t) {
|
|
46
|
+
return typeof e == "string" && t.test(e) && !e.split("/").some((e) => e === "." || e === "..");
|
|
47
|
+
}
|
|
48
|
+
function b(e) {
|
|
49
|
+
if (typeof e != "string" || !a.test(e)) return !1;
|
|
50
|
+
let t = e.split(" ").filter((e) => e.length > 0);
|
|
51
|
+
return t.length > 0 && t.every((e) => !e.startsWith("/") && !e.split("/").some((e) => e === ".."));
|
|
52
|
+
}
|
|
53
|
+
function x(e, t) {
|
|
54
|
+
if (!h(t)) {
|
|
47
55
|
e.fail("requires", "must be an object");
|
|
48
56
|
return;
|
|
49
57
|
}
|
|
50
58
|
let { integrations: n, features: r } = t;
|
|
51
|
-
|
|
59
|
+
h(n) ? Object.entries(n).forEach(([t, n]) => {
|
|
52
60
|
let r = `requires.integrations.${t}`;
|
|
53
|
-
if (!
|
|
61
|
+
if (!h(n)) {
|
|
54
62
|
e.fail(r, "must be an object");
|
|
55
63
|
return;
|
|
56
64
|
}
|
|
57
65
|
e.copy(n.message, `${r}.message`), "required" in n && n.required !== !1 && e.fail(`${r}.required`, "may only be false");
|
|
58
66
|
let i = ["message", "required"];
|
|
59
67
|
Object.keys(n).filter((e) => !i.includes(e)).forEach((t) => e.fail(`${r}.${t}`, "is not allowed"));
|
|
60
|
-
}), r !== void 0 && (!Array.isArray(r) || r.length === 0 ? e.fail("requires.features", "must be a non-empty array") : r.forEach((t, n) => {
|
|
68
|
+
}) : e.fail("requires.integrations", "must be an object"), r !== void 0 && (!Array.isArray(r) || r.length === 0 ? e.fail("requires.features", "must be a non-empty array") : r.forEach((t, n) => {
|
|
61
69
|
(typeof t != "string" || t.length === 0) && e.fail(`requires.features[${n}]`, "must be a non-empty string");
|
|
62
70
|
}));
|
|
63
71
|
}
|
|
64
|
-
function
|
|
65
|
-
if (!
|
|
72
|
+
function S(e, t, n) {
|
|
73
|
+
if (!h(t) || Object.keys(t).length === 0) {
|
|
66
74
|
e.fail(n, "must be a non-empty object");
|
|
67
75
|
return;
|
|
68
76
|
}
|
|
69
77
|
let { minLength: r, maxLength: i, format: a } = t;
|
|
70
|
-
r !== void 0 && !
|
|
78
|
+
r !== void 0 && !_(r, 0) && e.fail(`${n}.minLength`, "must be a non-negative integer"), i !== void 0 && !_(i, 1) && e.fail(`${n}.maxLength`, "must be a positive integer"), a !== void 0 && !g(a, p) && e.fail(`${n}.format`, "is not a supported format");
|
|
71
79
|
}
|
|
72
|
-
function
|
|
73
|
-
if (!
|
|
80
|
+
function C(e, t, n) {
|
|
81
|
+
if (!h(t)) {
|
|
74
82
|
e.fail(n, "must be an object");
|
|
75
83
|
return;
|
|
76
84
|
}
|
|
77
|
-
let { type: r, label: i, help: a, placeholder:
|
|
78
|
-
|
|
85
|
+
let { type: r, label: i, help: a, placeholder: o, required: s, provider: c, options: l } = t;
|
|
86
|
+
g(r, u) || e.fail(`${n}.type`, "is not a supported field type"), e.copy(i, `${n}.label`), e.copy(a, `${n}.help`), o !== void 0 && e.copy(o, `${n}.placeholder`), t.default !== void 0 && typeof t.default != "string" && e.fail(`${n}.default`, "must be a string"), typeof s != "boolean" && e.fail(`${n}.required`, "must be a boolean"), c !== void 0 && !g(c, d) && e.fail(`${n}.provider`, "is not a supported provider"), r === "repo-picker" && c === void 0 && e.fail(`${n}.provider`, "is required for a repository field"), t.multiple !== void 0 && (t.multiple !== !0 || r !== "repo-picker") && e.fail(`${n}.multiple`, "may only be true, and only on a repository field"), l !== void 0 && (r === "select" ? !Array.isArray(l) || l.length === 0 ? e.fail(`${n}.options`, "must be a non-empty array") : l.forEach((t, r) => {
|
|
79
87
|
let i = `${n}.options[${r}]`;
|
|
80
|
-
if (!
|
|
88
|
+
if (!h(t)) {
|
|
81
89
|
e.fail(i, "must be an object");
|
|
82
90
|
return;
|
|
83
91
|
}
|
|
84
92
|
(typeof t.value != "string" || t.value.length === 0) && e.fail(`${i}.value`, "must be a non-empty string"), e.copy(t.label, `${i}.label`);
|
|
85
|
-
}) : e.fail(`${n}.options`, "is only allowed on a select field")), t.constraints !== void 0 &&
|
|
93
|
+
}) : e.fail(`${n}.options`, "is only allowed on a select field")), t.constraints !== void 0 && S(e, t.constraints, `${n}.constraints`);
|
|
86
94
|
}
|
|
87
|
-
function
|
|
88
|
-
return !
|
|
95
|
+
function w(e, t, r) {
|
|
96
|
+
return !h(t) || Object.keys(t).length === 0 ? (e.fail(r, "must be a non-empty object"), []) : Object.entries(t).map(([t, i]) => (n.test(t) || e.fail(`${r}.${t}`, "is not a valid field name"), C(e, i, `${r}.${t}`), t));
|
|
89
97
|
}
|
|
90
|
-
function
|
|
91
|
-
if (!
|
|
98
|
+
function T(e, t) {
|
|
99
|
+
if (!h(t)) return e.fail("setup.form", "must be an object"), [];
|
|
92
100
|
t.note !== void 0 && e.copy(t.note, "setup.form.note");
|
|
93
|
-
let n =
|
|
94
|
-
t.triggers !== void 0 && (!
|
|
95
|
-
if (!
|
|
101
|
+
let n = w(e, t.args, "setup.form.args"), r = [];
|
|
102
|
+
t.triggers !== void 0 && (!h(t.triggers) || Object.keys(t.triggers).length === 0 ? e.fail("setup.form.triggers", "must be a non-empty object") : Object.entries(t.triggers).forEach(([t, i]) => {
|
|
103
|
+
if (!g(t, f)) {
|
|
96
104
|
e.fail(`setup.form.triggers.${t}`, "is not a trigger kind");
|
|
97
105
|
return;
|
|
98
106
|
}
|
|
99
|
-
r.push(t), n.push(...
|
|
107
|
+
r.push(t), n.push(...w(e, i, `setup.form.triggers.${t}`));
|
|
100
108
|
}));
|
|
101
109
|
let i = n.filter((e, t) => n.indexOf(e) !== t);
|
|
102
110
|
return Array.from(new Set(i)).forEach((t) => e.fail(`setup.form.${t}`, "is declared more than once")), r;
|
|
103
111
|
}
|
|
104
|
-
function
|
|
105
|
-
return
|
|
112
|
+
function E(e) {
|
|
113
|
+
return h(e) ? [e.args, ...Object.values(h(e.triggers) ? e.triggers : {})].some((e) => h(e) && Object.values(e).some((e) => h(e) && e.type === "repo-picker")) : !1;
|
|
106
114
|
}
|
|
107
|
-
function
|
|
108
|
-
e.templateCopy(t, "setup.message") && t.length >
|
|
115
|
+
function D(e, t) {
|
|
116
|
+
e.templateCopy(t, "setup.message") && t.length > m && e.fail("setup.message", `must be at most ${m} characters`);
|
|
109
117
|
}
|
|
110
|
-
function
|
|
111
|
-
if (!
|
|
118
|
+
function O(e, t) {
|
|
119
|
+
if (!h(t)) {
|
|
120
|
+
e.fail("setup.bundle", "must be an object");
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
(typeof t.version != "string" || !i.test(t.version)) && e.fail("setup.bundle.version", "must be a semantic version"), b(t.entrypoint) || e.fail("setup.bundle.entrypoint", "must be a plain command that stays inside the archive"), t.setupScript !== void 0 && !y(t.setupScript, o) && e.fail("setup.bundle.setupScript", "must be a relative path"), t.timeout !== void 0 && !_(t.timeout, 1) && e.fail("setup.bundle.timeout", "must be a positive integer"), !h(t.files) || Object.keys(t.files).length === 0 ? e.fail("setup.bundle.files", "must be a non-empty object") : (Object.entries(t.files).forEach(([t, n]) => {
|
|
124
|
+
y(t, o) || e.fail(`setup.bundle.files.${t}`, "is not a packed path"), t === "config.json" && e.fail(`setup.bundle.files.${t}`, "is the name the rendered config is packed under"), y(n, s) || e.fail(`setup.bundle.files.${t}`, "must name a file under skills/ or automations/");
|
|
125
|
+
}), typeof t.setupScript == "string" && !(t.setupScript in t.files) && e.fail("setup.bundle.setupScript", "must name a packed file")), !h(t.config) || Object.keys(t.config).length === 0 ? e.fail("setup.bundle.config", "must be a non-empty object") : k(e, t.config, "setup.bundle.config");
|
|
126
|
+
}
|
|
127
|
+
function k(e, t, n) {
|
|
128
|
+
if (typeof t == "string") {
|
|
129
|
+
e.templateValue(t, n);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (Array.isArray(t)) {
|
|
133
|
+
t.forEach((t, r) => k(e, t, `${n}[${r}]`));
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (h(t)) {
|
|
137
|
+
Object.entries(t).forEach(([t, r]) => k(e, r, `${n}.${t}`));
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
t !== null && typeof t != "number" && typeof t != "boolean" && e.fail(n, "must be a string, number, boolean, null, array or object");
|
|
141
|
+
}
|
|
142
|
+
function A(e, t, n) {
|
|
143
|
+
if (!g(t.mode, l)) {
|
|
112
144
|
e.fail("setup.mode", "is not a supported mode");
|
|
113
145
|
return;
|
|
114
146
|
}
|
|
115
147
|
if (t.mode === "direct") {
|
|
116
|
-
|
|
148
|
+
let r = t.prompt !== void 0, i = t.bundle !== void 0;
|
|
149
|
+
r === i ? e.fail("setup", "must declare exactly one of prompt or bundle for direct setup") : i ? O(e, t.bundle) : e.templateValue(t.prompt, "setup.prompt"), t.message !== void 0 && D(e, t.message), n.length !== 1 && e.fail("setup.form.triggers", "must declare exactly one trigger kind"), n.includes("event") && !E(t.form) && e.fail("setup.form", "must declare a repository field for an event trigger"), t.filter !== void 0 && (n.includes("event") ? e.templateValue(t.filter, "setup.filter") : e.fail("setup.filter", "is only allowed for an event trigger"));
|
|
117
150
|
return;
|
|
118
151
|
}
|
|
119
|
-
|
|
152
|
+
D(e, t.message), e.absent(t, "prompt", "setup", "is only allowed for direct setup"), e.absent(t, "bundle", "setup", "is only allowed for direct setup"), e.absent(t, "filter", "setup", "is only allowed for direct setup");
|
|
120
153
|
}
|
|
121
|
-
function
|
|
122
|
-
return
|
|
154
|
+
function j(e) {
|
|
155
|
+
return h(e) && e.setup !== void 0;
|
|
123
156
|
}
|
|
124
|
-
function
|
|
125
|
-
let n = new
|
|
126
|
-
if (!
|
|
157
|
+
function M(e) {
|
|
158
|
+
let n = new v();
|
|
159
|
+
if (!h(e)) return {
|
|
127
160
|
valid: !1,
|
|
128
161
|
errors: ["manifest: must be an object"]
|
|
129
162
|
};
|
|
130
163
|
let { setup: r } = e;
|
|
131
|
-
return
|
|
164
|
+
return h(r) ? r.version === "1.0" ? ((typeof e.id != "string" || !t.test(e.id)) && n.fail("id", "must be a lowercase slug"), n.copy(e.name, "name"), n.copy(e.description, "description"), e.version !== void 0 && (typeof e.version != "string" || !i.test(e.version)) && n.fail("version", "must be a semantic version"), e.skill !== void 0 && (typeof e.skill != "string" || !t.test(e.skill)) && n.fail("skill", "must be a lowercase slug"), x(n, e.requires), A(n, r, T(n, r.form)), {
|
|
132
165
|
valid: n.errors.length === 0,
|
|
133
166
|
errors: n.errors
|
|
134
167
|
}) : {
|
|
@@ -140,6 +173,6 @@ function w(e) {
|
|
|
140
173
|
};
|
|
141
174
|
}
|
|
142
175
|
//#endregion
|
|
143
|
-
export {
|
|
176
|
+
export { j as hasSetupBlock, M as validateSetupEntry };
|
|
144
177
|
|
|
145
178
|
//# sourceMappingURL=manifest-validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-validation.js","names":[],"sources":["../../src/manifests/manifest-validation.ts"],"sourcesContent":["/**\n * Admission policy for extension-authored catalog manifests.\n *\n * A manifest is data authored in a different repository that instructs this host\n * to render copy and compose a request. The host therefore decides what a\n * manifest is *permitted* to do rather than trusting the file — validation here\n * is a trust boundary, not a convenience check, and it deliberately does not\n * defer to a schema shipped alongside the manifests it would be validating.\n *\n * Beyond mirroring the published schema, this adds the invariants the host's own\n * derivation depends on: a single trigger kind to read, a repository field for\n * an event trigger's source, and field names unique across the form. Without\n * them the derived request body would be silently wrong rather than rejected.\n *\n * A manifest that fails any check is rejected outright. It never renders a\n * partial UI, because everything downstream treats its content as instructions.\n */\n\nimport { SETUP_PLACEHOLDER_NAMESPACES, SETUP_VERSION } from \"./types\";\n\nconst ENTRY_ID_PATTERN = /^[a-z0-9]+(-[a-z0-9]+)*$/;\nconst FIELD_NAME_PATTERN = /^[a-z][A-Za-z0-9]*$/;\n/** Copy must never be able to inject markup into the host. */\nconst MARKUP_PATTERN = /<[A-Za-z/!]/;\n/** Every `{{` must open a known namespace and close immediately. */\nconst UNKNOWN_PLACEHOLDER_PATTERN = new RegExp(\n `\\\\{\\\\{(?!(?:${SETUP_PLACEHOLDER_NAMESPACES.join(\"|\")})\\\\.[A-Za-z0-9_.]+\\\\}\\\\})`,\n);\n\nconst SETUP_MODES = [\"direct\", \"assisted\"] as const;\nconst FIELD_TYPES = [\n \"text\",\n \"textarea\",\n \"select\",\n \"cron\",\n \"timezone\",\n \"repo-picker\",\n] as const;\nconst GIT_PROVIDERS = [\"github\", \"gitlab\", \"bitbucket\"] as const;\nconst TRIGGER_KINDS = [\"cron\", \"event\"] as const;\nconst CONSTRAINT_FORMATS = [\"safeExpressionLiteral\"] as const;\n\n/** Setup context only, so this can never become a channel for runtime instructions. */\nconst MAX_MESSAGE_LENGTH = 2000;\n\nexport interface SetupValidationResult {\n valid: boolean;\n errors: string[];\n}\n\ntype Rec = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is Rec {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isOneOf<T extends readonly string[]>(\n value: unknown,\n allowed: T,\n): value is T[number] {\n return (\n typeof value === \"string\" && (allowed as readonly string[]).includes(value)\n );\n}\n\nfunction isInteger(value: unknown, minimum: number): boolean {\n return (\n typeof value === \"number\" && Number.isInteger(value) && value >= minimum\n );\n}\n\nclass SetupChecker {\n readonly errors: string[] = [];\n\n fail(path: string, reason: string): false {\n this.errors.push(`${path}: ${reason}`);\n return false;\n }\n\n /** Literal user-visible copy. Carries no markup. */\n copy(value: unknown, path: string): boolean {\n if (typeof value !== \"string\" || value.length === 0) {\n return this.fail(path, \"must be a non-empty string\");\n }\n if (MARKUP_PATTERN.test(value)) {\n return this.fail(path, \"must not contain markup\");\n }\n return true;\n }\n\n placeholders(value: string, path: string): boolean {\n if (UNKNOWN_PLACEHOLDER_PATTERN.test(value)) {\n return this.fail(path, \"uses an unknown placeholder namespace\");\n }\n return true;\n }\n\n /** Copy that may embed `{{namespace.key}}` placeholders. */\n templateCopy(value: unknown, path: string): boolean {\n return this.copy(value, path) && this.placeholders(value as string, path);\n }\n\n /**\n * A request-body string that may embed placeholders. Never rendered, so\n * expression syntax such as a JMESPath filter is allowed through.\n */\n templateValue(value: unknown, path: string): boolean {\n if (typeof value !== \"string\" || value.length === 0) {\n return this.fail(path, \"must be a non-empty string\");\n }\n return this.placeholders(value, path);\n }\n\n absent(container: Rec, key: string, path: string, reason: string): boolean {\n if (key in container) return this.fail(`${path}.${key}`, reason);\n return true;\n }\n}\n\nfunction checkRequires(check: SetupChecker, requires: unknown): void {\n if (!isRecord(requires)) {\n check.fail(\"requires\", \"must be an object\");\n return;\n }\n\n const { integrations, features } = requires;\n if (!isRecord(integrations) || Object.keys(integrations).length === 0) {\n check.fail(\"requires.integrations\", \"must be a non-empty object\");\n } else {\n Object.entries(integrations).forEach(([id, requirement]) => {\n const path = `requires.integrations.${id}`;\n if (!isRecord(requirement)) {\n check.fail(path, \"must be an object\");\n return;\n }\n check.copy(requirement.message, `${path}.message`);\n if (\"required\" in requirement && requirement.required !== false) {\n check.fail(`${path}.required`, \"may only be false\");\n }\n const allowed = [\"message\", \"required\"];\n Object.keys(requirement)\n .filter((key) => !allowed.includes(key))\n .forEach((key) => check.fail(`${path}.${key}`, \"is not allowed\"));\n });\n }\n\n if (features !== undefined) {\n if (!Array.isArray(features) || features.length === 0) {\n check.fail(\"requires.features\", \"must be a non-empty array\");\n } else {\n features.forEach((feature, index) => {\n if (typeof feature !== \"string\" || feature.length === 0) {\n check.fail(\n `requires.features[${index}]`,\n \"must be a non-empty string\",\n );\n }\n });\n }\n }\n}\n\nfunction checkConstraints(\n check: SetupChecker,\n constraints: unknown,\n path: string,\n): void {\n if (!isRecord(constraints) || Object.keys(constraints).length === 0) {\n check.fail(path, \"must be a non-empty object\");\n return;\n }\n\n const { minLength, maxLength, format } = constraints;\n if (minLength !== undefined && !isInteger(minLength, 0)) {\n check.fail(`${path}.minLength`, \"must be a non-negative integer\");\n }\n if (maxLength !== undefined && !isInteger(maxLength, 1)) {\n check.fail(`${path}.maxLength`, \"must be a positive integer\");\n }\n if (format !== undefined && !isOneOf(format, CONSTRAINT_FORMATS)) {\n check.fail(`${path}.format`, \"is not a supported format\");\n }\n}\n\nfunction checkField(check: SetupChecker, field: unknown, path: string): void {\n if (!isRecord(field)) {\n check.fail(path, \"must be an object\");\n return;\n }\n\n const { type, label, help, placeholder, required, provider, options } = field;\n\n if (!isOneOf(type, FIELD_TYPES)) {\n check.fail(`${path}.type`, \"is not a supported field type\");\n }\n check.copy(label, `${path}.label`);\n check.copy(help, `${path}.help`);\n if (placeholder !== undefined) check.copy(placeholder, `${path}.placeholder`);\n if (field.default !== undefined && typeof field.default !== \"string\") {\n check.fail(`${path}.default`, \"must be a string\");\n }\n if (typeof required !== \"boolean\") {\n check.fail(`${path}.required`, \"must be a boolean\");\n }\n if (provider !== undefined && !isOneOf(provider, GIT_PROVIDERS)) {\n check.fail(`${path}.provider`, \"is not a supported provider\");\n }\n if (type === \"repo-picker\" && provider === undefined) {\n check.fail(`${path}.provider`, \"is required for a repository field\");\n }\n\n if (options !== undefined) {\n if (type !== \"select\") {\n check.fail(`${path}.options`, \"is only allowed on a select field\");\n } else if (!Array.isArray(options) || options.length === 0) {\n check.fail(`${path}.options`, \"must be a non-empty array\");\n } else {\n options.forEach((option, index) => {\n const optionPath = `${path}.options[${index}]`;\n if (!isRecord(option)) {\n check.fail(optionPath, \"must be an object\");\n return;\n }\n if (typeof option.value !== \"string\" || option.value.length === 0) {\n check.fail(`${optionPath}.value`, \"must be a non-empty string\");\n }\n check.copy(option.label, `${optionPath}.label`);\n });\n }\n }\n\n if (field.constraints !== undefined) {\n checkConstraints(check, field.constraints, `${path}.constraints`);\n }\n}\n\n/** Returns the declared field names, so the caller can check them for collisions. */\nfunction checkFields(\n check: SetupChecker,\n fields: unknown,\n path: string,\n): string[] {\n if (!isRecord(fields) || Object.keys(fields).length === 0) {\n check.fail(path, \"must be a non-empty object\");\n return [];\n }\n\n return Object.entries(fields).map(([name, field]) => {\n if (!FIELD_NAME_PATTERN.test(name)) {\n check.fail(`${path}.${name}`, \"is not a valid field name\");\n }\n checkField(check, field, `${path}.${name}`);\n return name;\n });\n}\n\n/** Returns the trigger kinds declared, in order. */\nfunction checkForm(check: SetupChecker, form: unknown): string[] {\n if (!isRecord(form)) {\n check.fail(\"setup.form\", \"must be an object\");\n return [];\n }\n\n if (form.note !== undefined) check.copy(form.note, \"setup.form.note\");\n\n const names = checkFields(check, form.args, \"setup.form.args\");\n const kinds: string[] = [];\n\n if (form.triggers !== undefined) {\n if (!isRecord(form.triggers) || Object.keys(form.triggers).length === 0) {\n check.fail(\"setup.form.triggers\", \"must be a non-empty object\");\n } else {\n Object.entries(form.triggers).forEach(([kind, fields]) => {\n if (!isOneOf(kind, TRIGGER_KINDS)) {\n check.fail(`setup.form.triggers.${kind}`, \"is not a trigger kind\");\n return;\n }\n kinds.push(kind);\n names.push(\n ...checkFields(check, fields, `setup.form.triggers.${kind}`),\n );\n });\n }\n }\n\n // The host merges both halves into one value map, so a repeated name would\n // silently shadow a field and misaddress every error reported against it.\n const duplicates = names.filter(\n (name, index) => names.indexOf(name) !== index,\n );\n Array.from(new Set(duplicates)).forEach((name) =>\n check.fail(`setup.form.${name}`, \"is declared more than once\"),\n );\n\n return kinds;\n}\n\nfunction hasRepoPicker(form: unknown): boolean {\n if (!isRecord(form)) return false;\n const groups = [\n form.args,\n ...Object.values(isRecord(form.triggers) ? form.triggers : {}),\n ];\n return groups.some(\n (group) =>\n isRecord(group) &&\n Object.values(group).some(\n (field) => isRecord(field) && field.type === \"repo-picker\",\n ),\n );\n}\n\nfunction checkMessage(check: SetupChecker, message: unknown): void {\n if (check.templateCopy(message, \"setup.message\")) {\n if ((message as string).length > MAX_MESSAGE_LENGTH) {\n check.fail(\n \"setup.message\",\n `must be at most ${MAX_MESSAGE_LENGTH} characters`,\n );\n }\n }\n}\n\nfunction checkMode(check: SetupChecker, setup: Rec, kinds: string[]): void {\n if (!isOneOf(setup.mode, SETUP_MODES)) {\n check.fail(\"setup.mode\", \"is not a supported mode\");\n return;\n }\n\n if (setup.mode === \"direct\") {\n check.templateValue(setup.prompt, \"setup.prompt\");\n // A direct entry may carry a fallback-conversation seed for deployments\n // that cannot run the direct path, held to the same rules as an assisted\n // message.\n if (setup.message !== undefined) checkMessage(check, setup.message);\n\n // The derivation reads a single trigger kind, and an event trigger takes\n // its source from the repository field's provider.\n if (kinds.length !== 1) {\n check.fail(\n \"setup.form.triggers\",\n \"must declare exactly one trigger kind\",\n );\n }\n if (kinds.includes(\"event\") && !hasRepoPicker(setup.form)) {\n check.fail(\n \"setup.form\",\n \"must declare a repository field for an event trigger\",\n );\n }\n if (setup.filter !== undefined) {\n if (!kinds.includes(\"event\")) {\n check.fail(\"setup.filter\", \"is only allowed for an event trigger\");\n } else {\n check.templateValue(setup.filter, \"setup.filter\");\n }\n }\n return;\n }\n\n checkMessage(check, setup.message);\n check.absent(setup, \"prompt\", \"setup\", \"is only allowed for direct setup\");\n check.absent(setup, \"filter\", \"setup\", \"is only allowed for direct setup\");\n}\n\n/** Whether a catalog entry ships a setup experience at all. It is optional. */\nexport function hasSetupBlock(candidate: unknown): boolean {\n return isRecord(candidate) && candidate.setup !== undefined;\n}\n\n/**\n * Decide whether this host will act on a catalog manifest.\n *\n * The version is checked first and fails closed: a format this host does not\n * recognise is refused rather than interpreted with today's rules.\n */\nexport function validateSetupEntry(candidate: unknown): SetupValidationResult {\n const check = new SetupChecker();\n\n if (!isRecord(candidate)) {\n return { valid: false, errors: [\"manifest: must be an object\"] };\n }\n\n const { setup } = candidate;\n if (!isRecord(setup)) {\n return { valid: false, errors: [\"setup: must be an object\"] };\n }\n if (setup.version !== SETUP_VERSION) {\n return {\n valid: false,\n errors: [`setup.version: must be \"${SETUP_VERSION}\"`],\n };\n }\n\n if (\n typeof candidate.id !== \"string\" ||\n !ENTRY_ID_PATTERN.test(candidate.id)\n ) {\n check.fail(\"id\", \"must be a lowercase slug\");\n }\n check.copy(candidate.name, \"name\");\n check.copy(candidate.description, \"description\");\n if (\n candidate.skill !== undefined &&\n (typeof candidate.skill !== \"string\" ||\n !ENTRY_ID_PATTERN.test(candidate.skill))\n ) {\n check.fail(\"skill\", \"must be a lowercase slug\");\n }\n\n checkRequires(check, candidate.requires);\n const kinds = checkForm(check, setup.form);\n checkMode(check, setup, kinds);\n\n return { valid: check.errors.length === 0, errors: check.errors };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manifest-validation.js","names":[],"sources":["../../src/manifests/manifest-validation.ts"],"sourcesContent":["/**\n * Admission policy for extension-authored catalog manifests.\n *\n * A manifest is data authored in a different repository that instructs this host\n * to render copy and compose a request. The host therefore decides what a\n * manifest is *permitted* to do rather than trusting the file — validation here\n * is a trust boundary, not a convenience check, and it deliberately does not\n * defer to a schema shipped alongside the manifests it would be validating.\n *\n * Beyond mirroring the published schema, this adds the invariants the host's own\n * derivation depends on: a single trigger kind to read, a repository field for\n * an event trigger's source, and field names unique across the form. Without\n * them the derived request body would be silently wrong rather than rejected.\n *\n * A manifest that fails any check is rejected outright. It never renders a\n * partial UI, because everything downstream treats its content as instructions.\n */\n\nimport {\n BUNDLE_CONFIG_FILENAME,\n SETUP_PLACEHOLDER_NAMESPACES,\n SETUP_VERSION,\n} from \"./types\";\n\nconst ENTRY_ID_PATTERN = /^[a-z0-9]+(-[a-z0-9]+)*$/;\nconst FIELD_NAME_PATTERN = /^[a-z][A-Za-z0-9]*$/;\n/** Copy must never be able to inject markup into the host. */\nconst MARKUP_PATTERN = /<[A-Za-z/!]/;\n/**\n * A template version, declared as `version` by a prompt entry and as\n * `setup.bundle.version` by a bundle one. Sent to the service as template\n * provenance, so it is checked at admission. Full semver, as the spec at\n * semver.org states it: a catalog entry published with a pre-release or build\n * suffix is still a version this host may forward, and refusing one would drop\n * the entry from the registry outright.\n */\nconst TEMPLATE_VERSION_PATTERN =\n /^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(?:\\+[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*)?$/;\n// The characters a command of plain words and paths is made of. No shell\n// metacharacters, which the service rejects anyway and a bundle has no reason\n// to need; where those words may point is `isPlainCommand`'s to say.\nconst BUNDLE_COMMAND_PATTERN = /^[A-Za-z0-9 ._/-]+$/;\nconst BUNDLE_PATH_PATTERN = /^[A-Za-z0-9._-]+(\\/[A-Za-z0-9._-]+)*$/;\nconst BUNDLE_SOURCE_PATTERN =\n /^(skills|automations)\\/[A-Za-z0-9._-]+(\\/[A-Za-z0-9._-]+)*$/;\n/** Every `{{` must open a known namespace and close immediately. */\nconst UNKNOWN_PLACEHOLDER_PATTERN = new RegExp(\n `\\\\{\\\\{(?!(?:${SETUP_PLACEHOLDER_NAMESPACES.join(\"|\")})\\\\.[A-Za-z0-9_.]+\\\\}\\\\})`,\n);\n\nconst SETUP_MODES = [\"direct\", \"assisted\"] as const;\nconst FIELD_TYPES = [\n \"text\",\n \"textarea\",\n \"select\",\n \"cron\",\n \"timezone\",\n \"repo-picker\",\n] as const;\nconst GIT_PROVIDERS = [\"github\", \"gitlab\", \"bitbucket\"] as const;\nconst TRIGGER_KINDS = [\"cron\", \"event\"] as const;\nconst CONSTRAINT_FORMATS = [\"safeExpressionLiteral\"] as const;\n\n/** Setup context only, so this can never become a channel for runtime instructions. */\nconst MAX_MESSAGE_LENGTH = 2000;\n\nexport interface SetupValidationResult {\n valid: boolean;\n errors: string[];\n}\n\ntype Rec = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is Rec {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isOneOf<T extends readonly string[]>(\n value: unknown,\n allowed: T,\n): value is T[number] {\n return (\n typeof value === \"string\" && (allowed as readonly string[]).includes(value)\n );\n}\n\nfunction isInteger(value: unknown, minimum: number): boolean {\n return (\n typeof value === \"number\" && Number.isInteger(value) && value >= minimum\n );\n}\n\nclass SetupChecker {\n readonly errors: string[] = [];\n\n fail(path: string, reason: string): false {\n this.errors.push(`${path}: ${reason}`);\n return false;\n }\n\n /** Literal user-visible copy. Carries no markup. */\n copy(value: unknown, path: string): boolean {\n if (typeof value !== \"string\" || value.length === 0) {\n return this.fail(path, \"must be a non-empty string\");\n }\n if (MARKUP_PATTERN.test(value)) {\n return this.fail(path, \"must not contain markup\");\n }\n return true;\n }\n\n placeholders(value: string, path: string): boolean {\n if (UNKNOWN_PLACEHOLDER_PATTERN.test(value)) {\n return this.fail(path, \"uses an unknown placeholder namespace\");\n }\n return true;\n }\n\n /** Copy that may embed `{{namespace.key}}` placeholders. */\n templateCopy(value: unknown, path: string): boolean {\n return this.copy(value, path) && this.placeholders(value as string, path);\n }\n\n /**\n * A request-body string that may embed placeholders. Never rendered, so\n * expression syntax such as a JMESPath filter is allowed through.\n */\n templateValue(value: unknown, path: string): boolean {\n if (typeof value !== \"string\" || value.length === 0) {\n return this.fail(path, \"must be a non-empty string\");\n }\n return this.placeholders(value, path);\n }\n\n absent(container: Rec, key: string, path: string, reason: string): boolean {\n if (key in container) return this.fail(`${path}.${key}`, reason);\n return true;\n }\n}\n\n/**\n * A relative path that stays inside the archive it names.\n *\n * The character class alone is not enough: `.` and `..` are made of allowed\n * characters, so a segment check is what actually keeps a packed file from\n * climbing out of the directory it is extracted into.\n */\nfunction isRelativePath(value: unknown, pattern: RegExp): value is string {\n return (\n typeof value === \"string\" &&\n pattern.test(value) &&\n !value.split(\"/\").some((segment) => segment === \".\" || segment === \"..\")\n );\n}\n\n/**\n * A command whose every word stays inside the archive it is run in.\n *\n * The character class is not what keeps it there: `/` and `.` are allowed\n * characters, so `/bin/sh setup.sh` and `python3 ../../etc/x.py` are made of\n * them and each names something outside the extracted directory. The segment\n * rule packed paths are held to is what refuses those, and requiring a word at\n * all is what refuses an entrypoint of nothing but spaces.\n */\nfunction isPlainCommand(value: unknown): value is string {\n if (typeof value !== \"string\" || !BUNDLE_COMMAND_PATTERN.test(value)) {\n return false;\n }\n const words = value.split(\" \").filter((word) => word.length > 0);\n return (\n words.length > 0 &&\n words.every(\n (word) =>\n !word.startsWith(\"/\") &&\n !word.split(\"/\").some((segment) => segment === \"..\"),\n )\n );\n}\n\nfunction checkRequires(check: SetupChecker, requires: unknown): void {\n if (!isRecord(requires)) {\n check.fail(\"requires\", \"must be an object\");\n return;\n }\n\n const { integrations, features } = requires;\n // Empty is meaningful rather than malformed: an automation that needs no\n // credential connects to nothing, and the key stays required so that saying\n // so is a deliberate statement instead of an omission.\n if (!isRecord(integrations)) {\n check.fail(\"requires.integrations\", \"must be an object\");\n } else {\n Object.entries(integrations).forEach(([id, requirement]) => {\n const path = `requires.integrations.${id}`;\n if (!isRecord(requirement)) {\n check.fail(path, \"must be an object\");\n return;\n }\n check.copy(requirement.message, `${path}.message`);\n if (\"required\" in requirement && requirement.required !== false) {\n check.fail(`${path}.required`, \"may only be false\");\n }\n const allowed = [\"message\", \"required\"];\n Object.keys(requirement)\n .filter((key) => !allowed.includes(key))\n .forEach((key) => check.fail(`${path}.${key}`, \"is not allowed\"));\n });\n }\n\n if (features !== undefined) {\n if (!Array.isArray(features) || features.length === 0) {\n check.fail(\"requires.features\", \"must be a non-empty array\");\n } else {\n features.forEach((feature, index) => {\n if (typeof feature !== \"string\" || feature.length === 0) {\n check.fail(\n `requires.features[${index}]`,\n \"must be a non-empty string\",\n );\n }\n });\n }\n }\n}\n\nfunction checkConstraints(\n check: SetupChecker,\n constraints: unknown,\n path: string,\n): void {\n if (!isRecord(constraints) || Object.keys(constraints).length === 0) {\n check.fail(path, \"must be a non-empty object\");\n return;\n }\n\n const { minLength, maxLength, format } = constraints;\n if (minLength !== undefined && !isInteger(minLength, 0)) {\n check.fail(`${path}.minLength`, \"must be a non-negative integer\");\n }\n if (maxLength !== undefined && !isInteger(maxLength, 1)) {\n check.fail(`${path}.maxLength`, \"must be a positive integer\");\n }\n if (format !== undefined && !isOneOf(format, CONSTRAINT_FORMATS)) {\n check.fail(`${path}.format`, \"is not a supported format\");\n }\n}\n\nfunction checkField(check: SetupChecker, field: unknown, path: string): void {\n if (!isRecord(field)) {\n check.fail(path, \"must be an object\");\n return;\n }\n\n const { type, label, help, placeholder, required, provider, options } = field;\n\n if (!isOneOf(type, FIELD_TYPES)) {\n check.fail(`${path}.type`, \"is not a supported field type\");\n }\n check.copy(label, `${path}.label`);\n check.copy(help, `${path}.help`);\n if (placeholder !== undefined) check.copy(placeholder, `${path}.placeholder`);\n if (field.default !== undefined && typeof field.default !== \"string\") {\n check.fail(`${path}.default`, \"must be a string\");\n }\n if (typeof required !== \"boolean\") {\n check.fail(`${path}.required`, \"must be a boolean\");\n }\n if (provider !== undefined && !isOneOf(provider, GIT_PROVIDERS)) {\n check.fail(`${path}.provider`, \"is not a supported provider\");\n }\n if (type === \"repo-picker\" && provider === undefined) {\n check.fail(`${path}.provider`, \"is required for a repository field\");\n }\n // The host branches on this key to decide whether a field's value is a list,\n // so a field declaring it anywhere else would be seeded with a list and\n // rendered as a string.\n if (\n field.multiple !== undefined &&\n (field.multiple !== true || type !== \"repo-picker\")\n ) {\n check.fail(\n `${path}.multiple`,\n \"may only be true, and only on a repository field\",\n );\n }\n\n if (options !== undefined) {\n if (type !== \"select\") {\n check.fail(`${path}.options`, \"is only allowed on a select field\");\n } else if (!Array.isArray(options) || options.length === 0) {\n check.fail(`${path}.options`, \"must be a non-empty array\");\n } else {\n options.forEach((option, index) => {\n const optionPath = `${path}.options[${index}]`;\n if (!isRecord(option)) {\n check.fail(optionPath, \"must be an object\");\n return;\n }\n if (typeof option.value !== \"string\" || option.value.length === 0) {\n check.fail(`${optionPath}.value`, \"must be a non-empty string\");\n }\n check.copy(option.label, `${optionPath}.label`);\n });\n }\n }\n\n if (field.constraints !== undefined) {\n checkConstraints(check, field.constraints, `${path}.constraints`);\n }\n}\n\n/** Returns the declared field names, so the caller can check them for collisions. */\nfunction checkFields(\n check: SetupChecker,\n fields: unknown,\n path: string,\n): string[] {\n if (!isRecord(fields) || Object.keys(fields).length === 0) {\n check.fail(path, \"must be a non-empty object\");\n return [];\n }\n\n return Object.entries(fields).map(([name, field]) => {\n if (!FIELD_NAME_PATTERN.test(name)) {\n check.fail(`${path}.${name}`, \"is not a valid field name\");\n }\n checkField(check, field, `${path}.${name}`);\n return name;\n });\n}\n\n/** Returns the trigger kinds declared, in order. */\nfunction checkForm(check: SetupChecker, form: unknown): string[] {\n if (!isRecord(form)) {\n check.fail(\"setup.form\", \"must be an object\");\n return [];\n }\n\n if (form.note !== undefined) check.copy(form.note, \"setup.form.note\");\n\n const names = checkFields(check, form.args, \"setup.form.args\");\n const kinds: string[] = [];\n\n if (form.triggers !== undefined) {\n if (!isRecord(form.triggers) || Object.keys(form.triggers).length === 0) {\n check.fail(\"setup.form.triggers\", \"must be a non-empty object\");\n } else {\n Object.entries(form.triggers).forEach(([kind, fields]) => {\n if (!isOneOf(kind, TRIGGER_KINDS)) {\n check.fail(`setup.form.triggers.${kind}`, \"is not a trigger kind\");\n return;\n }\n kinds.push(kind);\n names.push(\n ...checkFields(check, fields, `setup.form.triggers.${kind}`),\n );\n });\n }\n }\n\n // The host merges both halves into one value map, so a repeated name would\n // silently shadow a field and misaddress every error reported against it.\n const duplicates = names.filter(\n (name, index) => names.indexOf(name) !== index,\n );\n Array.from(new Set(duplicates)).forEach((name) =>\n check.fail(`setup.form.${name}`, \"is declared more than once\"),\n );\n\n return kinds;\n}\n\nfunction hasRepoPicker(form: unknown): boolean {\n if (!isRecord(form)) return false;\n const groups = [\n form.args,\n ...Object.values(isRecord(form.triggers) ? form.triggers : {}),\n ];\n return groups.some(\n (group) =>\n isRecord(group) &&\n Object.values(group).some(\n (field) => isRecord(field) && field.type === \"repo-picker\",\n ),\n );\n}\n\nfunction checkMessage(check: SetupChecker, message: unknown): void {\n if (check.templateCopy(message, \"setup.message\")) {\n if ((message as string).length > MAX_MESSAGE_LENGTH) {\n check.fail(\n \"setup.message\",\n `must be at most ${MAX_MESSAGE_LENGTH} characters`,\n );\n }\n }\n}\n\n/**\n * The script tarball a direct entry may ship.\n *\n * The strings here are commands and paths this host acts on, so they are held\n * to a closed character set rather than the placeholder rules copy uses: an\n * entrypoint with a shell metacharacter, or a packed path that escapes the\n * archive, is refused here rather than by the service.\n */\nfunction checkBundle(check: SetupChecker, bundle: unknown): void {\n if (!isRecord(bundle)) {\n check.fail(\"setup.bundle\", \"must be an object\");\n return;\n }\n\n if (\n typeof bundle.version !== \"string\" ||\n !TEMPLATE_VERSION_PATTERN.test(bundle.version)\n ) {\n check.fail(\"setup.bundle.version\", \"must be a semantic version\");\n }\n if (!isPlainCommand(bundle.entrypoint)) {\n check.fail(\n \"setup.bundle.entrypoint\",\n \"must be a plain command that stays inside the archive\",\n );\n }\n if (\n bundle.setupScript !== undefined &&\n !isRelativePath(bundle.setupScript, BUNDLE_PATH_PATTERN)\n ) {\n check.fail(\"setup.bundle.setupScript\", \"must be a relative path\");\n }\n if (bundle.timeout !== undefined && !isInteger(bundle.timeout, 1)) {\n check.fail(\"setup.bundle.timeout\", \"must be a positive integer\");\n }\n\n if (!isRecord(bundle.files) || Object.keys(bundle.files).length === 0) {\n check.fail(\"setup.bundle.files\", \"must be a non-empty object\");\n } else {\n Object.entries(bundle.files).forEach(([packedPath, source]) => {\n if (!isRelativePath(packedPath, BUNDLE_PATH_PATTERN)) {\n check.fail(`setup.bundle.files.${packedPath}`, \"is not a packed path\");\n }\n // The rendered config is packed under this name too, and a tar carrying\n // the name twice leaves which one the script reads to whichever\n // extractor unpacks it.\n if (packedPath === BUNDLE_CONFIG_FILENAME) {\n check.fail(\n `setup.bundle.files.${packedPath}`,\n \"is the name the rendered config is packed under\",\n );\n }\n if (!isRelativePath(source, BUNDLE_SOURCE_PATTERN)) {\n check.fail(\n `setup.bundle.files.${packedPath}`,\n \"must name a file under skills/ or automations/\",\n );\n }\n });\n\n // A setup script the archive does not carry is a create request the\n // service accepts and the first run fails on, and it is also the only\n // thing packed executable - naming an unpacked file makes that rule\n // unreachable.\n if (\n typeof bundle.setupScript === \"string\" &&\n !(bundle.setupScript in bundle.files)\n ) {\n check.fail(\"setup.bundle.setupScript\", \"must name a packed file\");\n }\n }\n\n if (!isRecord(bundle.config) || Object.keys(bundle.config).length === 0) {\n check.fail(\"setup.bundle.config\", \"must be a non-empty object\");\n } else {\n checkBundleConfig(check, bundle.config, \"setup.bundle.config\");\n }\n}\n\n/** Every string leaf of the config is a payload value: placeholders, no markup rule. */\nfunction checkBundleConfig(\n check: SetupChecker,\n node: unknown,\n path: string,\n): void {\n if (typeof node === \"string\") {\n check.templateValue(node, path);\n return;\n }\n if (Array.isArray(node)) {\n node.forEach((item, index) =>\n checkBundleConfig(check, item, `${path}[${index}]`),\n );\n return;\n }\n if (isRecord(node)) {\n Object.entries(node).forEach(([key, value]) =>\n checkBundleConfig(check, value, `${path}.${key}`),\n );\n return;\n }\n if (node !== null && typeof node !== \"number\" && typeof node !== \"boolean\") {\n check.fail(\n path,\n \"must be a string, number, boolean, null, array or object\",\n );\n }\n}\n\nfunction checkMode(check: SetupChecker, setup: Rec, kinds: string[]): void {\n if (!isOneOf(setup.mode, SETUP_MODES)) {\n check.fail(\"setup.mode\", \"is not a supported mode\");\n return;\n }\n\n if (setup.mode === \"direct\") {\n // A direct entry produces one of two things: a prompt, or a script bundle\n // the host packs and uploads. Both would be ambiguous, neither is nothing\n // to create.\n const hasPrompt = setup.prompt !== undefined;\n const hasBundle = setup.bundle !== undefined;\n if (hasPrompt === hasBundle) {\n check.fail(\n \"setup\",\n \"must declare exactly one of prompt or bundle for direct setup\",\n );\n } else if (hasBundle) {\n checkBundle(check, setup.bundle);\n } else {\n check.templateValue(setup.prompt, \"setup.prompt\");\n }\n // A direct entry may carry a fallback-conversation seed for deployments\n // that cannot run the direct path, held to the same rules as an assisted\n // message.\n if (setup.message !== undefined) checkMessage(check, setup.message);\n\n // The derivation reads a single trigger kind, and an event trigger takes\n // its source from the repository field's provider.\n if (kinds.length !== 1) {\n check.fail(\n \"setup.form.triggers\",\n \"must declare exactly one trigger kind\",\n );\n }\n if (kinds.includes(\"event\") && !hasRepoPicker(setup.form)) {\n check.fail(\n \"setup.form\",\n \"must declare a repository field for an event trigger\",\n );\n }\n if (setup.filter !== undefined) {\n if (!kinds.includes(\"event\")) {\n check.fail(\"setup.filter\", \"is only allowed for an event trigger\");\n } else {\n check.templateValue(setup.filter, \"setup.filter\");\n }\n }\n return;\n }\n\n checkMessage(check, setup.message);\n check.absent(setup, \"prompt\", \"setup\", \"is only allowed for direct setup\");\n check.absent(setup, \"bundle\", \"setup\", \"is only allowed for direct setup\");\n check.absent(setup, \"filter\", \"setup\", \"is only allowed for direct setup\");\n}\n\n/** Whether a catalog entry ships a setup experience at all. It is optional. */\nexport function hasSetupBlock(candidate: unknown): boolean {\n return isRecord(candidate) && candidate.setup !== undefined;\n}\n\n/**\n * Decide whether this host will act on a catalog manifest.\n *\n * The version is checked first and fails closed: a format this host does not\n * recognise is refused rather than interpreted with today's rules.\n */\nexport function validateSetupEntry(candidate: unknown): SetupValidationResult {\n const check = new SetupChecker();\n\n if (!isRecord(candidate)) {\n return { valid: false, errors: [\"manifest: must be an object\"] };\n }\n\n const { setup } = candidate;\n if (!isRecord(setup)) {\n return { valid: false, errors: [\"setup: must be an object\"] };\n }\n if (setup.version !== SETUP_VERSION) {\n return {\n valid: false,\n errors: [`setup.version: must be \"${SETUP_VERSION}\"`],\n };\n }\n\n if (\n typeof candidate.id !== \"string\" ||\n !ENTRY_ID_PATTERN.test(candidate.id)\n ) {\n check.fail(\"id\", \"must be a lowercase slug\");\n }\n check.copy(candidate.name, \"name\");\n check.copy(candidate.description, \"description\");\n if (\n candidate.version !== undefined &&\n (typeof candidate.version !== \"string\" ||\n !TEMPLATE_VERSION_PATTERN.test(candidate.version))\n ) {\n check.fail(\"version\", \"must be a semantic version\");\n }\n if (\n candidate.skill !== undefined &&\n (typeof candidate.skill !== \"string\" ||\n !ENTRY_ID_PATTERN.test(candidate.skill))\n ) {\n check.fail(\"skill\", \"must be a lowercase slug\");\n }\n\n checkRequires(check, candidate.requires);\n const kinds = checkForm(check, setup.form);\n checkMode(check, setup, kinds);\n\n return { valid: check.errors.length === 0, errors: check.errors };\n}\n"],"mappings":"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"}
|
package/dist/manifests/types.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require("../_virtual/_rolldown/runtime.cjs");var e=[`form`,`automation`],t=[`list`,`templates`],
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");var e=[`form`,`automation`],t=`config.json`,n=[`list`,`templates`],r=[`layout-dashboard`,`sparkles`,`library`,`bot`,`circle-alert`,`activity`,`timer`],i=[`automations`,`needs-attention`,`total-runs`,`average-duration`],a={automations:[`active`],"needs-attention":[],"total-runs":[],"average-duration":[]},o={status:[`all`,`active`,`failing`,`disabled`],trigger:[`all`,`schedule`,`event`]},s=Object.keys(o),c=[`last-run`,`runs`,`name`];exports.BUNDLE_CONFIG_FILENAME=t,exports.DASHBOARD_FILTER_IDS=s,exports.DASHBOARD_FILTER_VALUES=o,exports.DASHBOARD_SORT_VALUES=c,exports.INTERFACE_ICON_SLUGS=r,exports.INTERFACE_SUB_PAGE_IDS=n,exports.OVERVIEW_METRICS=i,exports.OVERVIEW_TILE_PLACEHOLDERS=a,exports.SETUP_PLACEHOLDER_NAMESPACES=e;
|
|
2
2
|
//# sourceMappingURL=types.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs","names":[],"sources":["../../src/manifests/types.ts"],"sourcesContent":["/**\n * Host-owned shape of an extension-authored setup experience.\n *\n * A catalog entry is declarative data published by `@openhands/extensions`. Its\n * optional `setup` block says what to ask a user for; everything derivable from\n * that — the request to send, the route, the review screen, the analytics — is\n * this host's to generate, so none of it appears here.\n *\n * The names mirror `@openhands/extensions/automations`' own declarations, so an\n * entry from the published package assigns without an adapter.\n */\n\nexport const SETUP_VERSION = \"1.0\";\n\nexport type SetupMode = \"direct\" | \"assisted\";\n\nexport type SetupFieldType =\n | \"text\"\n | \"textarea\"\n | \"select\"\n | \"cron\"\n | \"timezone\"\n | \"repo-picker\";\n\nexport type SetupGitProvider = \"github\" | \"gitlab\" | \"bitbucket\";\n\nexport type SetupTriggerKind = \"cron\" | \"event\";\n\n/** Placeholder namespaces a setup block may reference inside `{{...}}`. */\nexport const SETUP_PLACEHOLDER_NAMESPACES = [\"form\", \"automation\"] as const;\n\nexport interface SetupFieldOption {\n value: string;\n label: string;\n}\n\nexport interface SetupFieldConstraints {\n minLength?: number;\n maxLength?: number;\n /**\n * A host-implemented check named from a closed set. Entries supply no regex\n * of their own, so they cannot hand the host a pathological pattern.\n */\n format?: \"safeExpressionLiteral\";\n}\n\nexport interface SetupFormField {\n type: SetupFieldType;\n label: string;\n help: string;\n placeholder?: string;\n default?: string;\n required: boolean;\n provider?: SetupGitProvider;\n options?: SetupFieldOption[];\n constraints?: SetupFieldConstraints;\n}\n\n/** Keyed by field name, which is what `{{form.<name>}}` resolves against. */\nexport type SetupFormFields = Record<string, SetupFormField>;\n\nexport interface SetupForm {\n note?: string;\n /** Inputs that decide when the automation runs, keyed by trigger kind. */\n triggers?: Partial<Record<SetupTriggerKind, SetupFormFields>>;\n /** Every other input: the arguments to the automation itself. */\n args: SetupFormFields;\n}\n\nexport interface SetupBlock {\n version: typeof SETUP_VERSION;\n mode: SetupMode;\n form: SetupForm;\n /** direct only. What the automation is told to do. */\n prompt?: string;\n /** direct only, event trigger only. Which delivered events belong to it. */\n filter?: string;\n /**\n * Setup context for the conversation that finishes setup. Required for\n * assisted mode. Optional for direct mode, where it seeds the fallback\n * conversation offered when the deployment cannot run the direct path.\n */\n message?: string;\n}\n\nexport interface SetupIntegrationRequirement {\n /** Why this entry needs the integration. */\n message: string;\n /** Defaults to true. `false` lets setup continue while it is unconnected. */\n required?: false;\n}\n\nexport interface SetupPrerequisites {\n /** Keyed by integration catalog id. */\n integrations: Record<string, SetupIntegrationRequirement>;\n /** Deployment capabilities this entry cannot run without. */\n features?: string[];\n}\n\n/**\n * The part of a catalog entry this host reads. An admitted entry always has a\n * `setup` block; entries without one are simply not setup entries.\n */\nexport interface SetupEntry {\n id: string;\n name: string;\n description: string;\n requires: SetupPrerequisites;\n /** The skill that owns the launch command. Defaults to `id`. */\n skill?: string;\n setup: SetupBlock;\n}\n\nexport type SetupPayloadValue =\n | string\n | number\n | boolean\n | null\n | SetupPayloadValue[]\n | { [key: string]: SetupPayloadValue };\n\nexport interface SetupRequestBody {\n [key: string]: SetupPayloadValue;\n}\n\n/** Form values are collected as strings; the payload mapping shapes them. */\nexport type SetupFormValues = Record<string, string>;\n\n/** `GET /v1/capabilities` — what this deployment supports. */\nexport interface DeploymentCapabilities {\n ready: boolean;\n /** Absolute timeout ceiling enforced by this deployment's automation API. */\n maxAutomationTimeoutSeconds?: number;\n triggerKinds: string[];\n eventSources: string[];\n eventTypes: string[];\n triggers: {\n cron?: { minIntervalSeconds: number; timezones: string[] };\n event?: { filterLanguage: string; filterFunctions: string[] };\n };\n features: string[];\n}\n\n/** A single problem with a draft, addressed to the field that caused it. */\nexport interface DraftValidationError {\n /** Dotted path into the draft. Null when the problem spans the whole draft. */\n field: string | null;\n code: string;\n message: string;\n}\n\n/** `POST /v1/validate` — an invalid draft is still a 200. */\nexport interface ValidateDraftResponse {\n valid: boolean;\n errors: DraftValidationError[];\n sampleEventMatched?: boolean | null;\n}\n\n/**\n * Host-owned shape of the production Automation interface manifest, published\n * by `@openhands/extensions/automations` as `AUTOMATION_INTERFACE`.\n *\n * The catalog states what varies per automation; this states the domain-level\n * facts of the interface itself. As with setup entries, the published data is\n * validated at admission rather than trusted, and a package that predates the\n * manifest simply leaves the host on its own defaults.\n */\n\nexport const INTERFACE_VERSION = \"1.0\";\n\n/** The closed set of runtime-model properties a client may offer for setting. */\nexport type AutomationAttributeName =\n | \"name\"\n | \"prompt\"\n | \"model\"\n | \"timeout\"\n | \"schedule\";\n\nexport type InterfaceAttributeType =\n | \"text\"\n | \"textarea\"\n | \"number\"\n | \"llm-profile\"\n | \"schedule\";\n\n/** How one settable attribute of an existing Automation is offered. */\nexport interface InterfaceAttribute {\n type: InterfaceAttributeType;\n label: string;\n help?: string;\n required: boolean;\n /** Only a `number` attribute carries constraints. */\n constraints?: { min?: number; max?: number };\n}\n\nexport interface InterfaceRoutes {\n list: string;\n /** Carries the `:automationId` segment the host substitutes. */\n setup: string;\n /** Carries the `:automationId` segment the host substitutes. */\n detail: string;\n /** The templates sub-page. Static: there is no parameter to substitute. */\n templates?: string;\n}\n\n/**\n * Service-relative paths the host calls. The base path, methods, headers, and\n * auth remain the host's. `{id}` marks where the automation id is substituted.\n */\nexport interface InterfaceEndpoints {\n list: string;\n detail: string;\n dispatch: string;\n runs: string;\n tarball: string;\n health: string;\n capabilities: string;\n validate: string;\n createPrompt: string;\n createPlugin: string;\n}\n\nexport type InterfaceEndpointName = keyof InterfaceEndpoints;\n\nexport interface InterfaceImportExport {\n fileKind: string;\n fileVersion: number;\n filenameSuffix: string;\n importDefaults: {\n /** Provider inferred for short owner/repo repository URLs on import. */\n repoProvider: SetupGitProvider;\n /** Event source of the placeholder trigger that keeps an import inert. */\n placeholderEventSource: string;\n };\n}\n\n/**\n * The sub-page surface: navigation, overview tiles, filters, sort, and run\n * insights for the list page, and a templates page. Every value below names\n * something this host implements from a closed set — a metric it computes, a\n * predicate it applies, a comparator it runs, an icon it ships — and the\n * manifest picks and captions it, never defines it. The host carries no\n * definitions of its own for this surface, so a manifest without it simply\n * leaves the sub-pages unrendered.\n */\n\nexport const INTERFACE_SUB_PAGE_IDS = [\"list\", \"templates\"] as const;\n\nexport type InterfaceSubPageId = (typeof INTERFACE_SUB_PAGE_IDS)[number];\n\n/** Icon names this host maps to artwork. A manifest cannot supply its own. */\nexport const INTERFACE_ICON_SLUGS = [\n \"layout-dashboard\",\n \"sparkles\",\n \"bot\",\n \"circle-alert\",\n \"activity\",\n \"timer\",\n] as const;\n\nexport type InterfaceIconSlug = (typeof INTERFACE_ICON_SLUGS)[number];\n\nexport interface InterfaceSubPageNavItem {\n /** The `pages` entry this item navigates to; its route comes from `routes`. */\n page: InterfaceSubPageId;\n label: string;\n icon: InterfaceIconSlug;\n}\n\n/** Values this host computes over the loaded automations and their runs. */\nexport const OVERVIEW_METRICS = [\n \"automations\",\n \"needs-attention\",\n \"total-runs\",\n \"average-duration\",\n] as const;\n\nexport type OverviewMetric = (typeof OVERVIEW_METRICS)[number];\n\n/**\n * Placeholder names a tile's `detail`/`zeroDetail` copy may reference inside\n * `{{...}}`, per metric. Plain substitution, like setup copy.\n */\nexport const OVERVIEW_TILE_PLACEHOLDERS: Record<\n OverviewMetric,\n readonly string[]\n> = {\n automations: [\"active\"],\n \"needs-attention\": [],\n \"total-runs\": [],\n \"average-duration\": [],\n};\n\nexport interface InterfaceOverviewTile {\n metric: OverviewMetric;\n label: string;\n /** Caption under the value. */\n detail: string;\n /** Replaces `detail` while the metric's value is zero. */\n zeroDetail?: string;\n icon: InterfaceIconSlug;\n}\n\nexport interface InterfaceOverview {\n /** Names the tiles section for assistive technology. */\n label: string;\n tiles: InterfaceOverviewTile[];\n}\n\n/** Filter values name predicates this host implements, per filter id. */\nexport const DASHBOARD_FILTER_VALUES = {\n status: [\"all\", \"active\", \"failing\", \"disabled\"],\n trigger: [\"all\", \"schedule\", \"event\"],\n} as const;\n\nexport type DashboardFilterId = keyof typeof DASHBOARD_FILTER_VALUES;\n\nexport const DASHBOARD_FILTER_IDS = Object.keys(\n DASHBOARD_FILTER_VALUES,\n) as readonly DashboardFilterId[];\n\nexport type DashboardStatusValue =\n (typeof DASHBOARD_FILTER_VALUES.status)[number];\n\nexport type DashboardTriggerValue =\n (typeof DASHBOARD_FILTER_VALUES.trigger)[number];\n\nexport interface InterfaceStatusFilter {\n id: \"status\";\n /** The control's accessible name. */\n label: string;\n options: { value: DashboardStatusValue; label: string }[];\n}\n\nexport interface InterfaceTriggerFilter {\n id: \"trigger\";\n /** The control's accessible name. */\n label: string;\n options: { value: DashboardTriggerValue; label: string }[];\n}\n\nexport type InterfaceDashboardFilter =\n | InterfaceStatusFilter\n | InterfaceTriggerFilter;\n\n/** Sort values name comparators this host implements. */\nexport const DASHBOARD_SORT_VALUES = [\"last-run\", \"runs\", \"name\"] as const;\n\nexport type DashboardSortValue = (typeof DASHBOARD_SORT_VALUES)[number];\n\nexport interface InterfaceDashboardSort {\n /** The control's accessible name. */\n label: string;\n options: { value: DashboardSortValue; label: string }[];\n /** One of the declared option values. */\n default: DashboardSortValue;\n}\n\n/**\n * Copy for the per-automation run insights on cards and rows. The states,\n * precedence, sampling, and value formatting are this host's; the manifest\n * names them.\n */\nexport interface InterfaceListInsights {\n health: {\n healthy: string;\n failing: string;\n running: string;\n disabled: string;\n neverRun: string;\n checking: string;\n };\n lastRun: { label: string; never: string; justNow: string };\n stats: { runs: string; recentSuccess: string; averageDuration: string };\n}\n\n/**\n * The templates sub-page identity. Its body — the catalog cards and their\n * launch behavior — is this host's existing catalog surface.\n */\nexport interface InterfaceTemplatesPage {\n title: string;\n description: string;\n}\n\nexport interface InterfaceManifest {\n version: typeof INTERFACE_VERSION;\n routes: InterfaceRoutes;\n navigation: {\n sidebar: { label: string };\n commandMenu: { title: string; description: string; keywords: string };\n /** The ordered sub-page navigation of the interface. */\n subPages?: InterfaceSubPageNavItem[];\n };\n pages: {\n list: {\n title: string;\n subtitle: string;\n overview?: InterfaceOverview;\n /** The filter dropdowns of the list page, in render order. */\n filters?: InterfaceDashboardFilter[];\n sort?: InterfaceDashboardSort;\n insights?: InterfaceListInsights;\n };\n detail: { backLabel: string };\n edit: { title: string };\n templates?: InterfaceTemplatesPage;\n };\n docsUrl: string;\n /**\n * The input surface of an existing Automation, keyed by the runtime-model\n * property the host sends. Rendering it as an edit dialog is this host's\n * choice, not stated here.\n */\n attributes: Partial<Record<AutomationAttributeName, InterfaceAttribute>>;\n importExport: InterfaceImportExport;\n endpoints: InterfaceEndpoints;\n featuredAutomationIds: string[];\n responderIntegrationIds: string[];\n}\n"],"mappings":"6CA6BA,IAAa,EAA+B,CAAC,OAAQ,YAAY,EAyNpD,EAAyB,CAAC,OAAQ,WAAW,EAK7C,EAAuB,CAClC,mBACA,WACA,MACA,eACA,WACA,OACF,EAYa,EAAmB,CAC9B,cACA,kBACA,aACA,kBACF,EAQa,EAGT,CACF,YAAa,CAAC,QAAQ,EACtB,kBAAmB,CAAC,EACpB,aAAc,CAAC,EACf,mBAAoB,CAAC,CACvB,EAmBa,EAA0B,CACrC,OAAQ,CAAC,MAAO,SAAU,UAAW,UAAU,EAC/C,QAAS,CAAC,MAAO,WAAY,OAAO,CACtC,EAIa,EAAuB,OAAO,KACzC,CACF,EA2Ba,EAAwB,CAAC,WAAY,OAAQ,MAAM"}
|
|
1
|
+
{"version":3,"file":"types.cjs","names":[],"sources":["../../src/manifests/types.ts"],"sourcesContent":["/**\n * Host-owned shape of an extension-authored setup experience.\n *\n * A catalog entry is declarative data published by `@openhands/extensions`. Its\n * optional `setup` block says what to ask a user for; everything derivable from\n * that — the request to send, the route, the review screen, the analytics — is\n * this host's to generate, so none of it appears here.\n *\n * The names mirror `@openhands/extensions/automations`' own declarations, so an\n * entry from the published package assigns without an adapter.\n */\n\nexport const SETUP_VERSION = \"1.0\";\n\nexport type SetupMode = \"direct\" | \"assisted\";\n\nexport type SetupFieldType =\n | \"text\"\n | \"textarea\"\n | \"select\"\n | \"cron\"\n | \"timezone\"\n | \"repo-picker\";\n\nexport type SetupGitProvider = \"github\" | \"gitlab\" | \"bitbucket\";\n\nexport type SetupTriggerKind = \"cron\" | \"event\";\n\n/** Placeholder namespaces a setup block may reference inside `{{...}}`. */\nexport const SETUP_PLACEHOLDER_NAMESPACES = [\"form\", \"automation\"] as const;\n\nexport interface SetupFieldOption {\n value: string;\n label: string;\n}\n\nexport interface SetupFieldConstraints {\n minLength?: number;\n maxLength?: number;\n /**\n * A host-implemented check named from a closed set. Entries supply no regex\n * of their own, so they cannot hand the host a pathological pattern.\n */\n format?: \"safeExpressionLiteral\";\n}\n\nexport interface SetupFormField {\n type: SetupFieldType;\n label: string;\n help: string;\n placeholder?: string;\n default?: string;\n required: boolean;\n provider?: SetupGitProvider;\n /**\n * repo-picker only. The field collects several repositories rather than one,\n * and its value is a list. A placeholder that is the whole value resolves to\n * that list, so a payload can state one and get an array.\n */\n multiple?: true;\n options?: SetupFieldOption[];\n constraints?: SetupFieldConstraints;\n}\n\n/** Keyed by field name, which is what `{{form.<name>}}` resolves against. */\nexport type SetupFormFields = Record<string, SetupFormField>;\n\nexport interface SetupForm {\n note?: string;\n /** Inputs that decide when the automation runs, keyed by trigger kind. */\n triggers?: Partial<Record<SetupTriggerKind, SetupFormFields>>;\n /** Every other input: the arguments to the automation itself. */\n args: SetupFormFields;\n}\n\n/** A config.json leaf: templated string, number, boolean, null, or a nesting. */\nexport type SetupBundleConfigValue =\n | string\n | number\n | boolean\n | null\n | SetupBundleConfigValue[]\n | { [key: string]: SetupBundleConfigValue };\n\n/**\n * The name the rendered configuration is packed under, which is therefore a\n * name a bundle's own files may not claim. Stated here rather than beside the\n * packing, so admission can refuse the collision without importing it.\n */\nexport const BUNDLE_CONFIG_FILENAME = \"config.json\";\n\n/**\n * The script tarball a direct entry may ship instead of a prompt, for an\n * automation that is deterministic machinery rather than judgement.\n *\n * `files` maps a path inside the archive to the repository path the extensions\n * package read it from; the contents themselves come from that package's\n * `getAutomationBundleFiles`, because this host has the package and not the\n * repository.\n */\nexport interface SetupBundle {\n /** Provenance recorded on the created automation, alongside the entry id. */\n version: string;\n /** The command the service runs inside the extracted tarball. */\n entrypoint: string;\n /** Script run once before the entrypoint. Absent when nothing to install. */\n setupScript?: string;\n /** Seconds a run may take, when the service default is not enough. */\n timeout?: number;\n files: Record<string, string>;\n /** Rendered from the form and packed as config.json. */\n config: Record<string, SetupBundleConfigValue>;\n}\n\nexport interface SetupBlock {\n version: typeof SETUP_VERSION;\n mode: SetupMode;\n form: SetupForm;\n /** direct only. What the automation is told to do. */\n prompt?: string;\n /** direct only, and the alternative to `prompt`. Exactly one is present. */\n bundle?: SetupBundle;\n /** direct only, event trigger only. Which delivered events belong to it. */\n filter?: string;\n /**\n * Setup context for the conversation that finishes setup. Required for\n * assisted mode. Optional for direct mode, where it seeds the fallback\n * conversation offered when the deployment cannot run the direct path.\n */\n message?: string;\n}\n\nexport interface SetupIntegrationRequirement {\n /** Why this entry needs the integration. */\n message: string;\n /** Defaults to true. `false` lets setup continue while it is unconnected. */\n required?: false;\n}\n\nexport interface SetupPrerequisites {\n /** Keyed by integration catalog id. */\n integrations: Record<string, SetupIntegrationRequirement>;\n /** Deployment capabilities this entry cannot run without. */\n features?: string[];\n}\n\n/**\n * The part of a catalog entry this host reads. An admitted entry always has a\n * `setup` block; entries without one are simply not setup entries.\n */\nexport interface SetupEntry {\n id: string;\n name: string;\n description: string;\n /**\n * Version of the template this entry publishes, sent with the create request\n * as provenance. A bundle declares its own at `setup.bundle.version`; a\n * prompt entry declares it here. Absent means the entry sends none, so the\n * service records no template for what it creates.\n */\n version?: string;\n requires: SetupPrerequisites;\n /** The skill that owns the launch command. Defaults to `id`. */\n skill?: string;\n setup: SetupBlock;\n}\n\nexport type SetupPayloadValue =\n | string\n | number\n | boolean\n | null\n | SetupPayloadValue[]\n | { [key: string]: SetupPayloadValue };\n\nexport interface SetupRequestBody {\n [key: string]: SetupPayloadValue;\n}\n\n/**\n * Form values as collected; the payload mapping shapes them.\n *\n * A field collecting several values holds a list. Everything else holds a\n * string, including fields whose value is a number to the service - the\n * payload mapping is where a value stops being what was typed.\n */\nexport type SetupFormValue = string | string[];\nexport type SetupFormValues = Record<string, SetupFormValue>;\n\n/** `GET /v1/capabilities` — what this deployment supports. */\nexport interface DeploymentCapabilities {\n ready: boolean;\n /** Absolute timeout ceiling enforced by this deployment's automation API. */\n maxAutomationTimeoutSeconds?: number;\n triggerKinds: string[];\n eventSources: string[];\n eventTypes: string[];\n triggers: {\n cron?: { minIntervalSeconds: number; timezones: string[] };\n event?: { filterLanguage: string; filterFunctions: string[] };\n };\n features: string[];\n}\n\n/** A single problem with a draft, addressed to the field that caused it. */\nexport interface DraftValidationError {\n /** Dotted path into the draft. Null when the problem spans the whole draft. */\n field: string | null;\n code: string;\n message: string;\n}\n\n/** `POST /v1/validate` — an invalid draft is still a 200. */\nexport interface ValidateDraftResponse {\n valid: boolean;\n errors: DraftValidationError[];\n sampleEventMatched?: boolean | null;\n}\n\n/**\n * Host-owned shape of the production Automation interface manifest, published\n * by `@openhands/extensions/automations` as `AUTOMATION_INTERFACE`.\n *\n * The catalog states what varies per automation; this states the domain-level\n * facts of the interface itself. As with setup entries, the published data is\n * validated at admission rather than trusted, and a package that predates the\n * manifest simply leaves the host on its own defaults.\n */\n\nexport const INTERFACE_VERSION = \"1.0\";\n\n/** The closed set of runtime-model properties a client may offer for setting. */\nexport type AutomationAttributeName =\n | \"name\"\n | \"prompt\"\n | \"model\"\n | \"timeout\"\n | \"schedule\";\n\nexport type InterfaceAttributeType =\n | \"text\"\n | \"textarea\"\n | \"number\"\n | \"llm-profile\"\n | \"schedule\";\n\n/** How one settable attribute of an existing Automation is offered. */\nexport interface InterfaceAttribute {\n type: InterfaceAttributeType;\n label: string;\n help?: string;\n required: boolean;\n /** Only a `number` attribute carries constraints. */\n constraints?: { min?: number; max?: number };\n}\n\nexport interface InterfaceRoutes {\n list: string;\n /** Carries the `:automationId` segment the host substitutes. */\n setup: string;\n /** Carries the `:automationId` segment the host substitutes. */\n detail: string;\n /** The templates sub-page. Static: there is no parameter to substitute. */\n templates?: string;\n}\n\n/**\n * Service-relative paths the host calls. The base path, methods, headers, and\n * auth remain the host's. `{id}` marks where the automation id is substituted.\n */\nexport interface InterfaceEndpoints {\n list: string;\n detail: string;\n dispatch: string;\n runs: string;\n tarball: string;\n health: string;\n capabilities: string;\n validate: string;\n createPrompt: string;\n createPlugin: string;\n /**\n * The raw create endpoint, which a bundle entry is created through, and\n * where its tarball is uploaded first. Optional: a manifest published before\n * bundles existed declares neither, and is still admitted.\n */\n createBundle?: string;\n uploads?: string;\n}\n\nexport type InterfaceEndpointName = keyof InterfaceEndpoints;\n\nexport interface InterfaceImportExport {\n fileKind: string;\n fileVersion: number;\n filenameSuffix: string;\n importDefaults: {\n /** Provider inferred for short owner/repo repository URLs on import. */\n repoProvider: SetupGitProvider;\n /** Event source of the placeholder trigger that keeps an import inert. */\n placeholderEventSource: string;\n };\n}\n\n/**\n * The sub-page surface: navigation, overview tiles, filters, sort, and run\n * insights for the list page, and a templates page. Every value below names\n * something this host implements from a closed set — a metric it computes, a\n * predicate it applies, a comparator it runs, an icon it ships — and the\n * manifest picks and captions it, never defines it. The host carries no\n * definitions of its own for this surface, so a manifest without it simply\n * leaves the sub-pages unrendered.\n */\n\nexport const INTERFACE_SUB_PAGE_IDS = [\"list\", \"templates\"] as const;\n\nexport type InterfaceSubPageId = (typeof INTERFACE_SUB_PAGE_IDS)[number];\n\n/** Icon names this host maps to artwork. A manifest cannot supply its own. */\nexport const INTERFACE_ICON_SLUGS = [\n \"layout-dashboard\",\n \"sparkles\",\n \"library\",\n \"bot\",\n \"circle-alert\",\n \"activity\",\n \"timer\",\n] as const;\n\nexport type InterfaceIconSlug = (typeof INTERFACE_ICON_SLUGS)[number];\n\nexport interface InterfaceSubPageNavItem {\n /** The `pages` entry this item navigates to; its route comes from `routes`. */\n page: InterfaceSubPageId;\n label: string;\n icon: InterfaceIconSlug;\n}\n\n/** Values this host computes over the loaded automations and their runs. */\nexport const OVERVIEW_METRICS = [\n \"automations\",\n \"needs-attention\",\n \"total-runs\",\n \"average-duration\",\n] as const;\n\nexport type OverviewMetric = (typeof OVERVIEW_METRICS)[number];\n\n/**\n * Placeholder names a tile's `detail`/`zeroDetail` copy may reference inside\n * `{{...}}`, per metric. Plain substitution, like setup copy.\n */\nexport const OVERVIEW_TILE_PLACEHOLDERS: Record<\n OverviewMetric,\n readonly string[]\n> = {\n automations: [\"active\"],\n \"needs-attention\": [],\n \"total-runs\": [],\n \"average-duration\": [],\n};\n\nexport interface InterfaceOverviewTile {\n metric: OverviewMetric;\n label: string;\n /** Caption under the value. */\n detail: string;\n /** Replaces `detail` while the metric's value is zero. */\n zeroDetail?: string;\n icon: InterfaceIconSlug;\n}\n\nexport interface InterfaceOverview {\n /** Names the tiles section for assistive technology. */\n label: string;\n tiles: InterfaceOverviewTile[];\n}\n\n/** Filter values name predicates this host implements, per filter id. */\nexport const DASHBOARD_FILTER_VALUES = {\n status: [\"all\", \"active\", \"failing\", \"disabled\"],\n trigger: [\"all\", \"schedule\", \"event\"],\n} as const;\n\nexport type DashboardFilterId = keyof typeof DASHBOARD_FILTER_VALUES;\n\nexport const DASHBOARD_FILTER_IDS = Object.keys(\n DASHBOARD_FILTER_VALUES,\n) as readonly DashboardFilterId[];\n\nexport type DashboardStatusValue =\n (typeof DASHBOARD_FILTER_VALUES.status)[number];\n\nexport type DashboardTriggerValue =\n (typeof DASHBOARD_FILTER_VALUES.trigger)[number];\n\nexport interface InterfaceStatusFilter {\n id: \"status\";\n /** The control's accessible name. */\n label: string;\n options: { value: DashboardStatusValue; label: string }[];\n}\n\nexport interface InterfaceTriggerFilter {\n id: \"trigger\";\n /** The control's accessible name. */\n label: string;\n options: { value: DashboardTriggerValue; label: string }[];\n}\n\nexport type InterfaceDashboardFilter =\n | InterfaceStatusFilter\n | InterfaceTriggerFilter;\n\n/** Sort values name comparators this host implements. */\nexport const DASHBOARD_SORT_VALUES = [\"last-run\", \"runs\", \"name\"] as const;\n\nexport type DashboardSortValue = (typeof DASHBOARD_SORT_VALUES)[number];\n\nexport interface InterfaceDashboardSort {\n /** The control's accessible name. */\n label: string;\n options: { value: DashboardSortValue; label: string }[];\n /** One of the declared option values. */\n default: DashboardSortValue;\n}\n\n/**\n * Copy for the per-automation run insights on cards and rows. The states,\n * precedence, sampling, and value formatting are this host's; the manifest\n * names them.\n */\nexport interface InterfaceListInsights {\n health: {\n healthy: string;\n failing: string;\n running: string;\n disabled: string;\n neverRun: string;\n checking: string;\n };\n lastRun: { label: string; never: string; justNow: string };\n stats: { runs: string; recentSuccess: string; averageDuration: string };\n}\n\n/**\n * The templates sub-page identity. Its body — the catalog cards and their\n * launch behavior — is this host's existing catalog surface.\n */\nexport interface InterfaceTemplatesPage {\n title: string;\n description: string;\n}\n\nexport interface InterfaceManifest {\n version: typeof INTERFACE_VERSION;\n routes: InterfaceRoutes;\n navigation: {\n sidebar: { label: string };\n commandMenu: { title: string; description: string; keywords: string };\n /** The ordered sub-page navigation of the interface. */\n subPages?: InterfaceSubPageNavItem[];\n };\n pages: {\n list: {\n title: string;\n subtitle: string;\n overview?: InterfaceOverview;\n /** The filter dropdowns of the list page, in render order. */\n filters?: InterfaceDashboardFilter[];\n sort?: InterfaceDashboardSort;\n insights?: InterfaceListInsights;\n };\n detail: { backLabel: string };\n edit: { title: string };\n templates?: InterfaceTemplatesPage;\n };\n docsUrl: string;\n /**\n * The input surface of an existing Automation, keyed by the runtime-model\n * property the host sends. Rendering it as an edit dialog is this host's\n * choice, not stated here.\n */\n attributes: Partial<Record<AutomationAttributeName, InterfaceAttribute>>;\n importExport: InterfaceImportExport;\n endpoints: InterfaceEndpoints;\n featuredAutomationIds: string[];\n responderIntegrationIds: string[];\n}\n"],"mappings":"6CA6BA,IAAa,EAA+B,CAAC,OAAQ,YAAY,EA4DpD,EAAyB,cAiOzB,EAAyB,CAAC,OAAQ,WAAW,EAK7C,EAAuB,CAClC,mBACA,WACA,UACA,MACA,eACA,WACA,OACF,EAYa,EAAmB,CAC9B,cACA,kBACA,aACA,kBACF,EAQa,EAGT,CACF,YAAa,CAAC,QAAQ,EACtB,kBAAmB,CAAC,EACpB,aAAc,CAAC,EACf,mBAAoB,CAAC,CACvB,EAmBa,EAA0B,CACrC,OAAQ,CAAC,MAAO,SAAU,UAAW,UAAU,EAC/C,QAAS,CAAC,MAAO,WAAY,OAAO,CACtC,EAIa,EAAuB,OAAO,KACzC,CACF,EA2Ba,EAAwB,CAAC,WAAY,OAAQ,MAAM"}
|
|
@@ -37,6 +37,12 @@ export interface SetupFormField {
|
|
|
37
37
|
default?: string;
|
|
38
38
|
required: boolean;
|
|
39
39
|
provider?: SetupGitProvider;
|
|
40
|
+
/**
|
|
41
|
+
* repo-picker only. The field collects several repositories rather than one,
|
|
42
|
+
* and its value is a list. A placeholder that is the whole value resolves to
|
|
43
|
+
* that list, so a payload can state one and get an array.
|
|
44
|
+
*/
|
|
45
|
+
multiple?: true;
|
|
40
46
|
options?: SetupFieldOption[];
|
|
41
47
|
constraints?: SetupFieldConstraints;
|
|
42
48
|
}
|
|
@@ -49,12 +55,46 @@ export interface SetupForm {
|
|
|
49
55
|
/** Every other input: the arguments to the automation itself. */
|
|
50
56
|
args: SetupFormFields;
|
|
51
57
|
}
|
|
58
|
+
/** A config.json leaf: templated string, number, boolean, null, or a nesting. */
|
|
59
|
+
export type SetupBundleConfigValue = string | number | boolean | null | SetupBundleConfigValue[] | {
|
|
60
|
+
[key: string]: SetupBundleConfigValue;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* The name the rendered configuration is packed under, which is therefore a
|
|
64
|
+
* name a bundle's own files may not claim. Stated here rather than beside the
|
|
65
|
+
* packing, so admission can refuse the collision without importing it.
|
|
66
|
+
*/
|
|
67
|
+
export declare const BUNDLE_CONFIG_FILENAME = "config.json";
|
|
68
|
+
/**
|
|
69
|
+
* The script tarball a direct entry may ship instead of a prompt, for an
|
|
70
|
+
* automation that is deterministic machinery rather than judgement.
|
|
71
|
+
*
|
|
72
|
+
* `files` maps a path inside the archive to the repository path the extensions
|
|
73
|
+
* package read it from; the contents themselves come from that package's
|
|
74
|
+
* `getAutomationBundleFiles`, because this host has the package and not the
|
|
75
|
+
* repository.
|
|
76
|
+
*/
|
|
77
|
+
export interface SetupBundle {
|
|
78
|
+
/** Provenance recorded on the created automation, alongside the entry id. */
|
|
79
|
+
version: string;
|
|
80
|
+
/** The command the service runs inside the extracted tarball. */
|
|
81
|
+
entrypoint: string;
|
|
82
|
+
/** Script run once before the entrypoint. Absent when nothing to install. */
|
|
83
|
+
setupScript?: string;
|
|
84
|
+
/** Seconds a run may take, when the service default is not enough. */
|
|
85
|
+
timeout?: number;
|
|
86
|
+
files: Record<string, string>;
|
|
87
|
+
/** Rendered from the form and packed as config.json. */
|
|
88
|
+
config: Record<string, SetupBundleConfigValue>;
|
|
89
|
+
}
|
|
52
90
|
export interface SetupBlock {
|
|
53
91
|
version: typeof SETUP_VERSION;
|
|
54
92
|
mode: SetupMode;
|
|
55
93
|
form: SetupForm;
|
|
56
94
|
/** direct only. What the automation is told to do. */
|
|
57
95
|
prompt?: string;
|
|
96
|
+
/** direct only, and the alternative to `prompt`. Exactly one is present. */
|
|
97
|
+
bundle?: SetupBundle;
|
|
58
98
|
/** direct only, event trigger only. Which delivered events belong to it. */
|
|
59
99
|
filter?: string;
|
|
60
100
|
/**
|
|
@@ -84,6 +124,13 @@ export interface SetupEntry {
|
|
|
84
124
|
id: string;
|
|
85
125
|
name: string;
|
|
86
126
|
description: string;
|
|
127
|
+
/**
|
|
128
|
+
* Version of the template this entry publishes, sent with the create request
|
|
129
|
+
* as provenance. A bundle declares its own at `setup.bundle.version`; a
|
|
130
|
+
* prompt entry declares it here. Absent means the entry sends none, so the
|
|
131
|
+
* service records no template for what it creates.
|
|
132
|
+
*/
|
|
133
|
+
version?: string;
|
|
87
134
|
requires: SetupPrerequisites;
|
|
88
135
|
/** The skill that owns the launch command. Defaults to `id`. */
|
|
89
136
|
skill?: string;
|
|
@@ -95,8 +142,15 @@ export type SetupPayloadValue = string | number | boolean | null | SetupPayloadV
|
|
|
95
142
|
export interface SetupRequestBody {
|
|
96
143
|
[key: string]: SetupPayloadValue;
|
|
97
144
|
}
|
|
98
|
-
/**
|
|
99
|
-
|
|
145
|
+
/**
|
|
146
|
+
* Form values as collected; the payload mapping shapes them.
|
|
147
|
+
*
|
|
148
|
+
* A field collecting several values holds a list. Everything else holds a
|
|
149
|
+
* string, including fields whose value is a number to the service - the
|
|
150
|
+
* payload mapping is where a value stops being what was typed.
|
|
151
|
+
*/
|
|
152
|
+
export type SetupFormValue = string | string[];
|
|
153
|
+
export type SetupFormValues = Record<string, SetupFormValue>;
|
|
100
154
|
/** `GET /v1/capabilities` — what this deployment supports. */
|
|
101
155
|
export interface DeploymentCapabilities {
|
|
102
156
|
ready: boolean;
|
|
@@ -179,6 +233,13 @@ export interface InterfaceEndpoints {
|
|
|
179
233
|
validate: string;
|
|
180
234
|
createPrompt: string;
|
|
181
235
|
createPlugin: string;
|
|
236
|
+
/**
|
|
237
|
+
* The raw create endpoint, which a bundle entry is created through, and
|
|
238
|
+
* where its tarball is uploaded first. Optional: a manifest published before
|
|
239
|
+
* bundles existed declares neither, and is still admitted.
|
|
240
|
+
*/
|
|
241
|
+
createBundle?: string;
|
|
242
|
+
uploads?: string;
|
|
182
243
|
}
|
|
183
244
|
export type InterfaceEndpointName = keyof InterfaceEndpoints;
|
|
184
245
|
export interface InterfaceImportExport {
|
|
@@ -204,7 +265,7 @@ export interface InterfaceImportExport {
|
|
|
204
265
|
export declare const INTERFACE_SUB_PAGE_IDS: readonly ["list", "templates"];
|
|
205
266
|
export type InterfaceSubPageId = (typeof INTERFACE_SUB_PAGE_IDS)[number];
|
|
206
267
|
/** Icon names this host maps to artwork. A manifest cannot supply its own. */
|
|
207
|
-
export declare const INTERFACE_ICON_SLUGS: readonly ["layout-dashboard", "sparkles", "bot", "circle-alert", "activity", "timer"];
|
|
268
|
+
export declare const INTERFACE_ICON_SLUGS: readonly ["layout-dashboard", "sparkles", "library", "bot", "circle-alert", "activity", "timer"];
|
|
208
269
|
export type InterfaceIconSlug = (typeof INTERFACE_ICON_SLUGS)[number];
|
|
209
270
|
export interface InterfaceSubPageNavItem {
|
|
210
271
|
/** The `pages` entry this item navigates to; its route comes from `routes`. */
|
package/dist/manifests/types.js
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
//#region src/manifests/types.ts
|
|
2
|
-
var e = ["form", "automation"], t = ["list", "templates"],
|
|
2
|
+
var e = ["form", "automation"], t = "config.json", n = ["list", "templates"], r = [
|
|
3
3
|
"layout-dashboard",
|
|
4
4
|
"sparkles",
|
|
5
|
+
"library",
|
|
5
6
|
"bot",
|
|
6
7
|
"circle-alert",
|
|
7
8
|
"activity",
|
|
8
9
|
"timer"
|
|
9
|
-
],
|
|
10
|
+
], i = [
|
|
10
11
|
"automations",
|
|
11
12
|
"needs-attention",
|
|
12
13
|
"total-runs",
|
|
13
14
|
"average-duration"
|
|
14
|
-
],
|
|
15
|
+
], a = {
|
|
15
16
|
automations: ["active"],
|
|
16
17
|
"needs-attention": [],
|
|
17
18
|
"total-runs": [],
|
|
18
19
|
"average-duration": []
|
|
19
|
-
},
|
|
20
|
+
}, o = {
|
|
20
21
|
status: [
|
|
21
22
|
"all",
|
|
22
23
|
"active",
|
|
@@ -28,12 +29,12 @@ var e = ["form", "automation"], t = ["list", "templates"], n = [
|
|
|
28
29
|
"schedule",
|
|
29
30
|
"event"
|
|
30
31
|
]
|
|
31
|
-
},
|
|
32
|
+
}, s = Object.keys(o), c = [
|
|
32
33
|
"last-run",
|
|
33
34
|
"runs",
|
|
34
35
|
"name"
|
|
35
36
|
];
|
|
36
37
|
//#endregion
|
|
37
|
-
export {
|
|
38
|
+
export { t as BUNDLE_CONFIG_FILENAME, s as DASHBOARD_FILTER_IDS, o as DASHBOARD_FILTER_VALUES, c as DASHBOARD_SORT_VALUES, r as INTERFACE_ICON_SLUGS, n as INTERFACE_SUB_PAGE_IDS, i as OVERVIEW_METRICS, a as OVERVIEW_TILE_PLACEHOLDERS, e as SETUP_PLACEHOLDER_NAMESPACES };
|
|
38
39
|
|
|
39
40
|
//# sourceMappingURL=types.js.map
|