@openhands/agent-canvas 1.15.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -1
- package/README.windows.md +2 -2
- package/build/assets/{acp-providers-BKvmTf82.js → acp-providers-CX3Lh9gj.js} +1 -1
- package/build/assets/active-backend-context-CrHTlgvN.js +2 -0
- package/build/assets/{agent-context-settings-D3PjSTU1.js → agent-context-settings-DSZlXrLj.js} +1 -1
- package/build/assets/{agent-profiles-settings-D4cY5U2T.js → agent-profiles-settings-Dzgb7G9z.js} +1 -1
- package/build/assets/agent-server-conversation-service.api-tnqNjbpE.js +86 -0
- package/build/assets/agent-settings-DLtsqaOs.js +2 -0
- package/build/assets/agent-settings-fFvR-XC2.js +1 -0
- package/build/assets/alert-banner-HP6mX-Vr.js +1 -0
- package/build/assets/{api-error-message-BJyfWp6p.js → api-error-message-B-XdSk3b.js} +1 -1
- package/build/assets/api-key-entry-screen-qTzrmJcr.js +1 -0
- package/build/assets/{app-settings-CbHqzQus.js → app-settings-dbnneVaV.js} +1 -1
- package/build/assets/automation-detail-BmwlCUAB.js +3 -0
- package/build/assets/{automation-export-BRopEHMu.js → automation-export-D3a3of4G.js} +1 -1
- package/build/assets/{automation-git-sync-CzyS4cn1.js → automation-git-sync-CprN5DcU.js} +1 -1
- package/build/assets/automation-setup-route-C40kXjMY.js +1 -0
- package/build/assets/{automation-templates-C_0FZgLG.js → automation-templates-BRppNh99.js} +1 -1
- package/build/assets/automations-list-DuNcRawl.js +1 -0
- package/build/assets/{back-nav-button-Dm9tIjVf.js → back-nav-button-Cjl_hoxq.js} +1 -1
- package/build/assets/backend-form-modal-lhGwzXFI.js +1 -0
- package/build/assets/{backend-synced-settings-badge-3fOwg6Bd.js → backend-synced-settings-badge-DPkz30BE.js} +1 -1
- package/build/assets/{badge-D4SqUCsR.js → badge-BU3S0VtE.js} +1 -1
- package/build/assets/{base-modal-C7_BDl_U.js → base-modal-D_L0oEbG.js} +1 -1
- package/build/assets/{bot-C-0Wu7vQ.js → bot-dMYHVfYM.js} +1 -1
- package/build/assets/{brand-button-Dxv6PDeN.js → brand-button-BAfk4wGP.js} +1 -1
- package/build/assets/browser-DSAo0tz1.js +46 -0
- package/build/assets/{browser-tab-BAl4ckJE.js → browser-tab-C9vy56R5.js} +1 -1
- package/build/assets/canvas-extension-page-dx1gFrfW.js +1 -0
- package/build/assets/canvas-extensions-8A-XhpgP.js +1 -0
- package/build/assets/canvas-extensions-runtime-2_x5Ezmi.js +1 -0
- package/build/assets/{chat-send-button-DWwR2cgI.js → chat-send-button-MUQqCZCS.js} +1 -1
- package/build/assets/check-CS0vmpQQ.js +1 -0
- package/build/assets/chevron-down-e1QBpjVy.js +1 -0
- package/build/assets/chevron-right-ZG4R5G4Q.js +1 -0
- package/build/assets/circle-check-DzWLNsbE.js +1 -0
- package/build/assets/{circle-plus-check-toggle-CBh_qomE.js → circle-plus-check-toggle-BO_kFZt3.js} +1 -1
- package/build/assets/{cloud-funnel-analytics-287iIERo.js → cloud-funnel-analytics-CztBCCPp.js} +1 -1
- package/build/assets/{cog-C4rrw-ZK.js → cog-D-MPQW6G.js} +1 -1
- package/build/assets/command-menu--UIlGL72.js +1 -0
- package/build/assets/{commits-tab-DZtJgaDM.js → commits-tab-AnZwLvh-.js} +1 -1
- package/build/assets/{condenser-settings-BcNmYR4s.js → condenser-settings-DmEOje-7.js} +1 -1
- package/build/assets/{confirmation-modal-Bk4JRcCM.js → confirmation-modal-Dv1ktp8K.js} +1 -1
- package/build/assets/{context-menu-list-item-lVYETtY5.js → context-menu-list-item-I86vKcmM.js} +1 -1
- package/build/assets/conversation-BbGrAO4Z.js +93 -0
- package/build/assets/conversation-mYT6NAoj.js +1 -0
- package/build/assets/conversation-panel-mYT6NAoj.js +1 -0
- package/build/assets/conversation-state-store-B0ImPLHO.js +1 -0
- package/build/assets/{conversation-tab-empty-state-HJtkmHZj.js → conversation-tab-empty-state-FIbh_lc8.js} +1 -1
- package/build/assets/{copy-to-clipboard-button-Cjkswvnj.js → copy-to-clipboard-button-Ca8iSkkA.js} +1 -1
- package/build/assets/{device-verify-EZhHhBT7.js → device-verify-Bhn2e_Ye.js} +1 -1
- package/build/assets/{dropdown-classes-DJe-E6MC.js → dropdown-classes-Bc1djN0-.js} +1 -1
- package/build/assets/{edit-automation-modal-D-urtv8n.js → edit-automation-modal-DadGbJ2u.js} +1 -1
- package/build/assets/empty-state-BoGVDecT.js +1 -0
- package/build/assets/{entry.client-C7Bi2tkU.js → entry.client-CqyPPjOq.js} +2 -2
- package/build/assets/{enum-filter-dropdown-DliX_Lo0.js → enum-filter-dropdown-Bgca129f.js} +1 -1
- package/build/assets/{environment-switch-overlay-CEKrFiMw.js → environment-switch-overlay-BmBRT7gv.js} +1 -1
- package/build/assets/{error-state-BALXiBNy.js → error-state-Body8Ngd.js} +1 -1
- package/build/assets/extensions-hub-CcDqq_vR.js +1 -0
- package/build/assets/extensions-navigation-Cr4yzYk4.js +1 -0
- package/build/assets/{external-link-DFpYunfj.js → external-link-DKUlnCQV.js} +1 -1
- package/build/assets/files-tab-D4o2VyE_.js +1 -0
- package/build/assets/{form-control-classes-CGw40z5h.js → form-control-classes-Bkh5FGrD.js} +1 -1
- package/build/assets/format-model-name-CasAP3nd.js +1 -0
- package/build/assets/get-git-path-ChKDVHZp.js +1 -0
- package/build/assets/{git-repo-dropdown-ai8qaNkD.js → git-repo-dropdown-4ROKl2cB.js} +1 -1
- package/build/assets/git-repo-dropdown-BkqzkMmM.js +1 -0
- package/build/assets/{highlighted-source-view-C3sxykQi.js → highlighted-source-view-BFRxGT_Q.js} +1 -1
- package/build/assets/home-ChpSuepX.js +1 -0
- package/build/assets/home-DIsB440S.js +1 -0
- package/build/assets/home-automation-run-tooltip-BVNDWjAH.js +1 -0
- package/build/assets/home-store-CY9Ej0ux.js +1 -0
- package/build/assets/index-home-BdlrFIif.js +1 -0
- package/build/assets/info-B6RQawoW.js +1 -0
- package/build/assets/install-server-modal-Dpy89p4g.js +1 -0
- package/build/assets/kebab-menu-item-content-D8hSNGmm.js +1 -0
- package/build/assets/{key-Cn5za3rg.js → key-BmVyxs-2.js} +1 -1
- package/build/assets/{launch-C1ieiOGe.js → launch-IrTDEFCs.js} +1 -1
- package/build/assets/list-filter-DsEK7NFC.js +1 -0
- package/build/assets/{list-todo-Cuu-STFc.js → list-todo-apgLVjMw.js} +1 -1
- package/build/assets/llm-not-configured-banner-CIFABh3K.js +27 -0
- package/build/assets/llm-settings-B9juXhIa.js +1 -0
- package/build/assets/llm-settings-De1d5dfr.js +1 -0
- package/build/assets/llm-subscription-service-BpJ0ouQo.js +1 -0
- package/build/assets/loader-circle-CC1au6hc.js +1 -0
- package/build/assets/{loading-spinner-0L3ZTToZ.js → loading-spinner-BY9N3pOe.js} +1 -1
- package/build/assets/manage-backends-modal-BrPV3oB-.js +1 -0
- package/build/assets/manifest-80fb1c29.js +1 -0
- package/build/assets/{manifest-subpage-layout-BGhiUQbA.js → manifest-subpage-layout-CAOYzrYp.js} +1 -1
- package/build/assets/{map-provider-B9LTm23I.js → map-provider-Cu3Zgumb.js} +1 -1
- package/build/assets/markdown-renderer-BzTlxI8x.js +8 -0
- package/build/assets/{mcp-CKbR4Vft.js → mcp-BTs_SXfZ.js} +1 -1
- package/build/assets/{mcp-marketplace-utils-C13fFccR.js → mcp-marketplace-utils-AIBzzHTO.js} +1 -1
- package/build/assets/{mcp-page-Bm4K2NQq.js → mcp-page-BEBYqH_K.js} +2 -2
- package/build/assets/messages-DKV9cRc2.js +41 -0
- package/build/assets/{modal-body-CMOc2tLl.js → modal-body-BxZjsju9.js} +1 -1
- package/build/assets/{modal-classes-BAb4Y_BG.js → modal-classes-C8eycCwG.js} +1 -1
- package/build/assets/{modal-close-button-CkJ0Ktjj.js → modal-close-button-DDzdRvCs.js} +1 -1
- package/build/assets/{mouse-pointer-click-CsgRs_-r.js → mouse-pointer-click-Co2uyaPA.js} +1 -1
- package/build/assets/onboarding-DV_OXoeP.js +1 -0
- package/build/assets/onboarding-modal-rkyBYkeQ.js +1 -0
- package/build/assets/{organization-service.api-C8XpQ0pM.js → organization-service.api-DrYNkEN_.js} +1 -1
- package/build/assets/{pencil-Clh1Wjvh.js → pencil-47jAZH_V.js} +1 -1
- package/build/assets/pin-By41Vl5J.js +1 -0
- package/build/assets/{planner-tab-DQvDU3ap.js → planner-tab-C9uZmhme.js} +1 -1
- package/build/assets/{plug-BuQhHSSG.js → plug-CG5HFcNG.js} +1 -1
- package/build/assets/plugins-management-service-BMJgC3Ga.js +1 -0
- package/build/assets/plus-C7Slq-0I.js +1 -0
- package/build/assets/profiles-service.api-ChoKrL0l.js +1 -0
- package/build/assets/providers-BhMcY5nv.js +1 -0
- package/build/assets/proxy-9Fe1v5na.js +1 -0
- package/build/assets/{puzzle-A9pGxxai.js → puzzle-JM_QaRm0.js} +1 -1
- package/build/assets/recommended-automations-launcher-6ABrI9Cy.js +1 -0
- package/build/assets/{refresh-cw-Bh69DyYO.js → refresh-cw-3q3Frrii.js} +1 -1
- package/build/assets/root-Dc8YmC9F.js +2 -0
- package/build/assets/root-VDaypvK4.css +1 -0
- package/build/assets/root-layout-CXkhSPYh.js +2 -0
- package/build/assets/schema-field-D-y9-LDb.js +1 -0
- package/build/assets/{sdk-section-page-HTffvm7Q.js → sdk-section-page-BlFiizlG.js} +1 -1
- package/build/assets/{secret-form-HTUbYw5o.js → secret-form-BB7the8W.js} +1 -1
- package/build/assets/secrets-service-ByZVENbp.js +1 -0
- package/build/assets/{secrets-settings-BizaTEr1.js → secrets-settings-B_GpxKW2.js} +1 -1
- package/build/assets/{settings-BlmrkwRi.js → settings-C0EWuBtA.js} +1 -1
- package/build/assets/settings-CKqk8ZnH.js +1 -0
- package/build/assets/{settings-dropdown-input-tM0A0ipy.js → settings-dropdown-input-BcwylHs2.js} +1 -1
- package/build/assets/{settings-index-CKq0b0Vg.js → settings-index-5w5UW2K3.js} +1 -1
- package/build/assets/{settings-input-C03KUoSC.js → settings-input-Db-1g8Ql.js} +1 -1
- package/build/assets/{settings-list-classes-BJ0g8rWj.js → settings-list-classes-BzeSZbF2.js} +1 -1
- package/build/assets/{settings-modal-AzEF1QPP.js → settings-modal-DfJ3tcJQ.js} +1 -1
- package/build/assets/settings-service.api-DJ1r62Zr.js +1 -0
- package/build/assets/{settings-switch-CQE0EGC-.js → settings-switch-CS-dJDmA.js} +1 -1
- package/build/assets/{settings-utils-ClYOkbbI.js → settings-utils-UYpEdPuD.js} +1 -1
- package/build/assets/shared-conversation-CA5ISEDy.js +1 -0
- package/build/assets/{shield-check-CFDViW82.js → shield-check-D2aCRd16.js} +1 -1
- package/build/assets/{sidebar-layout-D3hE08wK.js → sidebar-layout-D6fS8-Gl.js} +1 -1
- package/build/assets/{sidebar-mobile-menu-toggle-BOtyJHwE.js → sidebar-mobile-menu-toggle-C_fb0Jki.js} +1 -1
- package/build/assets/sidebar-nav-link-DQQcMf1A.js +1 -0
- package/build/assets/{sidebar-onboarding-checklist-storage-3qYflszY.js → sidebar-onboarding-checklist-storage-BBkeI6Bp.js} +1 -1
- package/build/assets/sidebar-store-DGqHkVLw.js +1 -0
- package/build/assets/{skill-card-pill-row-CFxjoqxn.js → skill-card-pill-row-B27-xyig.js} +1 -1
- package/build/assets/skill-enablement-DXeaImBz.js +1 -0
- package/build/assets/skill-filter-w__3UCEE.js +2 -0
- package/build/assets/{skill-icon-badge-CPQJ6A-I.js → skill-icon-badge-RQkq8wvl.js} +1 -1
- package/build/assets/skill-scope-B42H-XOc.js +1 -0
- package/build/assets/skills-plugins-tgF8EiXC.js +1 -0
- package/build/assets/skills-settings-BgJ9PaOe.js +1 -0
- package/build/assets/{styled-tooltip-Dl06rkpY.js → styled-tooltip-C4jf5Fv9.js} +1 -1
- package/build/assets/{task-list-tab-04GNQuii.js → task-list-tab-C5zcaktH.js} +1 -1
- package/build/assets/{terminal-Cj0iHIW7.js → terminal-CNElN42a.js} +2 -2
- package/build/assets/{toggle-switch-Fd_QGz0r.js → toggle-switch-ChOLXv2n.js} +1 -1
- package/build/assets/{trash-2-Dl8_RGz0.js → trash-2-D7K26eDO.js} +1 -1
- package/build/assets/{trash-_RMt7Ayc.js → trash-D-HYiVYM.js} +1 -1
- package/build/assets/{triangle-alert-SM-q4NU_.js → triangle-alert-CtdXWHUI.js} +1 -1
- package/build/assets/{typography-SgFy466J.js → typography-v1KN0tzi.js} +1 -1
- package/build/assets/usage-tab-CVDffLPt.js +1 -0
- package/build/assets/use-acp-credential-form-XIQmpX6M.js +1 -0
- package/build/assets/{use-activate-agent-profile-B2NS8nA5.js → use-activate-agent-profile-BLfmvDiG.js} +1 -1
- package/build/assets/use-agent-profiles-Bd9Bvvp1.js +1 -0
- package/build/assets/{use-automation-health-BxXdzZMP.js → use-automation-health-E6NZi9rb.js} +1 -1
- package/build/assets/{use-automations-zYb0dUny.js → use-automations-xijQKIl9.js} +1 -1
- package/build/assets/{use-can-manage-org-profiles-BWMahtUh.js → use-can-manage-org-profiles-CrJP5262.js} +1 -1
- package/build/assets/use-canvas-extensions-Bi693ujJ.js +1 -0
- package/build/assets/{use-cloud-current-user-id-CPHMDG-C.js → use-cloud-current-user-id-CDfAHpPX.js} +1 -1
- package/build/assets/use-config-A9QovgXO.js +1 -0
- package/build/assets/{use-create-conversation-DwN5vv2f.js → use-create-conversation-Dx3l7mFZ.js} +1 -1
- package/build/assets/use-create-secret-B9cUFWRG.js +1 -0
- package/build/assets/{use-get-secrets-BT4ihRwj.js → use-get-secrets-K3jmk-LH.js} +1 -1
- package/build/assets/use-is-authed-nTBcM7dE.js +1 -0
- package/build/assets/use-llm-configured-BV9nZ1_j.js +1 -0
- package/build/assets/use-llm-profiles-BO-P4Oyo.js +1 -0
- package/build/assets/use-manifest-capabilities-Cw_flwEz.js +1 -0
- package/build/assets/use-onboarding-completion-D8U7k4Qb.js +1 -0
- package/build/assets/use-pinned-home-route-CckOZrmb.js +1 -0
- package/build/assets/use-plugins-marketplace-7i94Zu3Z.js +1 -0
- package/build/assets/use-save-agent-profile-BUjSsDXK.js +1 -0
- package/build/assets/{use-save-settings-CUZW6yXP.js → use-save-settings-DYqkKv7T.js} +1 -1
- package/build/assets/{use-settings-C5VhGpqd.js → use-settings-DSXLbvBl.js} +1 -1
- package/build/assets/{use-settings-nav-items-DHaUu1Dg.js → use-settings-nav-items-CwRw-CmX.js} +1 -1
- package/build/assets/use-tracking-D53y3TH9.js +3 -0
- package/build/assets/{use-user-conversation-DT0_QCnL.js → use-user-conversation-B9Gebw_g.js} +1 -1
- package/build/assets/{useInfiniteQuery-CgeUQPfs.js → useInfiniteQuery-C926xzY4.js} +1 -1
- package/build/assets/{useMutation-DFnzkf6f.js → useMutation-B-qc391N.js} +1 -1
- package/build/assets/{useQueries-BhbrGEf1.js → useQueries-DlbhlH9I.js} +1 -1
- package/build/assets/{useQuery-BXWbZBZl.js → useQuery-BSTgq1rl.js} +1 -1
- package/build/assets/utils-CN5ZfZy1.js +1 -0
- package/build/assets/{vendor~conversation-panel~conversation-CTvDDiXg.js → vendor~conversation-panel~conversation-C8Fn4XOf.js} +1 -1
- package/build/assets/{vendor~entry.client-BFE7Llz9.js → vendor~entry.client-CoCfUXUF.js} +1 -1
- package/build/assets/{vendor~entry.client-BaKt_PIp.js → vendor~entry.client-DA2izTjq.js} +1 -1
- package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-ZixYGy6E.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-DqZDXfg2.js} +1 -1
- package/build/assets/{vendor~index-home~home~conversation-panel~conversation-BTyukeM-.js → vendor~index-home~home~conversation-panel~conversation-hWywRBaR.js} +1 -1
- package/build/assets/{vendor~root-layout-BlUaZ18v.js → vendor~root-layout-C9Ju9DQg.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation-BYAWJwQX.js → vendor~root-layout~conversation-panel~conversation-BMbMgaGu.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-CHaLEBVR.js → vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-BWir3rJs.js} +1 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation-j5MFqfSy.js +1 -0
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-cDuKr-WD.js +1 -0
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz-MAyNb.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iyia17eu-Chf7vmKB.js} +1 -1
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-Dtu7BpYk.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~nj1hli3r-DP9wmsjo.js} +2 -2
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-DonTKfQD.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-CUmIwQCN.js} +117 -13
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-BgxDvUcf.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-C7HiY4Ae.js} +42 -3
- package/build/assets/{verification-settings-Bj6bo097.js → verification-settings-gw_q6vkL.js} +1 -1
- package/build/assets/{wrench-hi7Q13dF.js → wrench-CUEI1krB.js} +1 -1
- package/build/assets/{x-DkgltWa0.js → x-DJdhbdmt.js} +1 -1
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +32 -16
- package/build/locales/ca/openhands.json +32 -16
- package/build/locales/de/openhands.json +32 -16
- package/build/locales/en/openhands.json +32 -16
- package/build/locales/es/openhands.json +32 -16
- package/build/locales/fr/openhands.json +32 -16
- package/build/locales/it/openhands.json +32 -16
- package/build/locales/ja/openhands.json +32 -16
- package/build/locales/ko-KR/openhands.json +32 -16
- package/build/locales/no/openhands.json +32 -16
- package/build/locales/pt/openhands.json +32 -16
- package/build/locales/tr/openhands.json +32 -16
- package/build/locales/uk/openhands.json +32 -16
- package/build/locales/zh-CN/openhands.json +32 -16
- package/build/locales/zh-TW/openhands.json +32 -16
- package/config/defaults.json +9 -5
- package/dist/api/agent-profiles-service/profile-field-support.d.ts +26 -0
- package/dist/api/agent-server-adapter.cjs +3 -3
- package/dist/api/agent-server-adapter.cjs.map +1 -1
- package/dist/api/agent-server-adapter.js +118 -116
- package/dist/api/agent-server-adapter.js.map +1 -1
- package/dist/api/agent-server-compatibility.cjs +1 -1
- package/dist/api/agent-server-compatibility.cjs.map +1 -1
- package/dist/api/agent-server-compatibility.d.ts +21 -0
- package/dist/api/agent-server-compatibility.js +52 -38
- package/dist/api/agent-server-compatibility.js.map +1 -1
- package/dist/api/agent-server-config.cjs +1 -1
- package/dist/api/agent-server-config.cjs.map +1 -1
- package/dist/api/agent-server-config.d.ts +26 -0
- package/dist/api/agent-server-config.js +18 -5
- package/dist/api/agent-server-config.js.map +1 -1
- package/dist/api/canvas-extensions-service.cjs +1 -0
- package/dist/api/canvas-extensions-service.d.ts +22 -0
- package/dist/api/canvas-extensions-service.js +4 -0
- package/dist/api/cloud/conversation-service.api.cjs +1 -1
- package/dist/api/cloud/conversation-service.api.cjs.map +1 -1
- package/dist/api/cloud/conversation-service.api.d.ts +6 -0
- package/dist/api/cloud/conversation-service.api.js +14 -6
- package/dist/api/cloud/conversation-service.api.js.map +1 -1
- package/dist/api/conversation-file-upload.api.cjs +1 -1
- package/dist/api/conversation-file-upload.api.js +10 -10
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.d.ts +11 -0
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +129 -118
- package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
- package/dist/api/event-service/event-service.api.cjs +1 -1
- package/dist/api/event-service/event-service.api.js +12 -12
- package/dist/api/git-service/agent-server-git-service.api.cjs +1 -1
- package/dist/api/git-service/agent-server-git-service.api.js +8 -8
- package/dist/api/runtime-service/agent-server-runtime-service.cjs +1 -1
- package/dist/api/runtime-service/agent-server-runtime-service.js +8 -8
- package/dist/api/settings-service/settings-service.api.cjs +1 -1
- package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
- package/dist/api/settings-service/settings-service.api.d.ts +3 -2
- package/dist/api/settings-service/settings-service.api.js +2 -1
- package/dist/api/settings-service/settings-service.api.js.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/event-group.cjs +1 -1
- package/dist/components/conversation-events/chat/event-message-components/event-group.cjs.map +1 -1
- package/dist/components/conversation-events/chat/event-message-components/event-group.js +40 -36
- package/dist/components/conversation-events/chat/event-message-components/event-group.js.map +1 -1
- package/dist/components/features/automations/automation-card.cjs +1 -1
- package/dist/components/features/automations/automation-card.cjs.map +1 -1
- package/dist/components/features/automations/automation-card.js +114 -104
- package/dist/components/features/automations/automation-card.js.map +1 -1
- package/dist/components/features/automations/detail/run-phase.cjs +2 -0
- package/dist/components/features/automations/detail/run-phase.cjs.map +1 -0
- package/dist/components/features/automations/detail/run-phase.d.ts +89 -0
- package/dist/components/features/automations/detail/run-phase.js +72 -0
- package/dist/components/features/automations/detail/run-phase.js.map +1 -0
- package/dist/components/features/backends/backend-form-modal.cjs +1 -1
- package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
- package/dist/components/features/backends/backend-form-modal.js +5 -11
- package/dist/components/features/backends/backend-form-modal.js.map +1 -1
- package/dist/components/features/canvas-extensions/add-canvas-extension-modal.d.ts +6 -0
- package/dist/components/features/canvas-extensions/canvas-extension-card.d.ts +9 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.cjs +2 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.cjs.map +1 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.d.ts +23 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.js +19 -0
- package/dist/components/features/canvas-extensions/canvas-extensions-runtime.js.map +1 -0
- package/dist/components/features/chat/chat-interface.cjs +2 -2
- package/dist/components/features/chat/chat-interface.cjs.map +1 -1
- package/dist/components/features/chat/chat-interface.js +171 -168
- package/dist/components/features/chat/chat-interface.js.map +1 -1
- package/dist/components/features/chat/chat-markdown-path-code.cjs +3 -0
- package/dist/components/features/chat/chat-markdown-path-code.cjs.map +1 -0
- package/dist/components/features/chat/chat-markdown-path-code.d.ts +27 -0
- package/dist/components/features/chat/chat-markdown-path-code.js +72 -0
- package/dist/components/features/chat/chat-markdown-path-code.js.map +1 -0
- package/dist/components/features/chat/path-component.cjs +1 -1
- package/dist/components/features/chat/path-component.cjs.map +1 -1
- package/dist/components/features/chat/path-component.d.ts +8 -2
- package/dist/components/features/chat/path-component.js +33 -21
- package/dist/components/features/chat/path-component.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js +38 -43
- package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs.map +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.d.ts +8 -5
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js +22 -16
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js.map +1 -1
- package/dist/components/features/chat/user-message-body.cjs +1 -1
- package/dist/components/features/chat/user-message-body.cjs.map +1 -1
- package/dist/components/features/chat/user-message-body.d.ts +4 -0
- package/dist/components/features/chat/user-message-body.js +30 -24
- package/dist/components/features/chat/user-message-body.js.map +1 -1
- package/dist/components/features/conversation/conversation-overview-skills-panel.cjs +1 -1
- package/dist/components/features/conversation/conversation-overview-skills-panel.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-overview-skills-panel.js +63 -81
- package/dist/components/features/conversation/conversation-overview-skills-panel.js.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js +50 -50
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.cjs +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.cjs.map +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.d.ts +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.js +3 -3
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.js.map +1 -1
- package/dist/components/features/conversation-panel/skills-modal.cjs +1 -1
- package/dist/components/features/conversation-panel/skills-modal.cjs.map +1 -1
- package/dist/components/features/conversation-panel/skills-modal.js +29 -28
- package/dist/components/features/conversation-panel/skills-modal.js.map +1 -1
- package/dist/components/features/files-tab/file-content-viewer.cjs +1 -1
- package/dist/components/features/files-tab/file-content-viewer.js +5 -5
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs +1 -1
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs.map +1 -1
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js +51 -29
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js.map +1 -1
- package/dist/components/features/onboarding/onboarding-host.d.ts +3 -4
- package/dist/components/features/onboarding/steps/setup-llm-step.d.ts +5 -9
- package/dist/components/features/settings/acp-auth-status-banner.d.ts +23 -6
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.js +1 -0
- package/dist/components/features/settings/llm-profiles/provider-connection-modal.cjs +1 -1
- package/dist/components/features/settings/llm-profiles/provider-connection-modal.js +3 -0
- package/dist/components/features/settings/sdk-settings/field-help.cjs +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.cjs.map +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.d.ts +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.js +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.js.map +1 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs +1 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.js +6 -6
- package/dist/components/features/settings/sdk-settings/sdk-section-page.js.map +1 -1
- package/dist/components/features/sidebar/sidebar-nav-link.cjs +1 -1
- package/dist/components/features/sidebar/sidebar-nav-link.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar-nav-link.d.ts +10 -1
- package/dist/components/features/sidebar/sidebar-nav-link.js +54 -36
- package/dist/components/features/sidebar/sidebar-nav-link.js.map +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.cjs +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.js +143 -120
- package/dist/components/features/sidebar/sidebar-rail-body.js.map +1 -1
- package/dist/components/features/sidebar/sidebar.cjs +1 -1
- package/dist/components/features/sidebar/sidebar.cjs.map +1 -1
- package/dist/components/features/sidebar/sidebar.js +1 -1
- package/dist/components/features/sidebar/sidebar.js.map +1 -1
- package/dist/components/features/skills/build-skill-pills.cjs +1 -1
- package/dist/components/features/skills/build-skill-pills.cjs.map +1 -1
- package/dist/components/features/skills/build-skill-pills.js +60 -52
- package/dist/components/features/skills/build-skill-pills.js.map +1 -1
- package/dist/components/features/skills/extensions-navigation.cjs +1 -1
- package/dist/components/features/skills/extensions-navigation.cjs.map +1 -1
- package/dist/components/features/skills/extensions-navigation.js +54 -43
- package/dist/components/features/skills/extensions-navigation.js.map +1 -1
- package/dist/components/features/skills/skill-filter.cjs +1 -1
- package/dist/components/features/skills/skill-filter.cjs.map +1 -1
- package/dist/components/features/skills/skill-filter.d.ts +8 -3
- package/dist/components/features/skills/skill-filter.js +69 -52
- package/dist/components/features/skills/skill-filter.js.map +1 -1
- package/dist/components/shared/modals/settings/settings-form.cjs +1 -1
- package/dist/components/shared/modals/settings/settings-form.js +8 -8
- package/dist/config/defaults.cjs +1 -1
- package/dist/config/defaults.cjs.map +1 -1
- package/dist/config/defaults.js +9 -5
- package/dist/config/defaults.js.map +1 -1
- package/dist/contexts/conversation-websocket-context.cjs +3 -3
- package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
- package/dist/contexts/conversation-websocket-context.js +5 -5
- package/dist/extensions/canvas-extension-module-loader.d.ts +11 -0
- package/dist/hooks/mutation/use-manage-canvas-extensions.d.ts +12 -0
- package/dist/hooks/query/concurrency-limiter.cjs +2 -0
- package/dist/hooks/query/concurrency-limiter.cjs.map +1 -0
- package/dist/hooks/query/concurrency-limiter.d.ts +22 -0
- package/dist/hooks/query/concurrency-limiter.js +29 -0
- package/dist/hooks/query/concurrency-limiter.js.map +1 -0
- package/dist/hooks/query/query-keys.cjs.map +1 -1
- package/dist/hooks/query/query-keys.d.ts +4 -0
- package/dist/hooks/query/query-keys.js.map +1 -1
- package/dist/hooks/query/use-active-conversation.cjs +1 -1
- package/dist/hooks/query/use-active-conversation.js +4 -4
- package/dist/hooks/query/use-automations.cjs.map +1 -1
- package/dist/hooks/query/use-automations.js.map +1 -1
- package/dist/hooks/query/use-backends-health.cjs +1 -1
- package/dist/hooks/query/use-backends-health.cjs.map +1 -1
- package/dist/hooks/query/use-backends-health.d.ts +1 -1
- package/dist/hooks/query/use-backends-health.js +50 -64
- package/dist/hooks/query/use-backends-health.js.map +1 -1
- package/dist/hooks/query/use-canvas-extensions.cjs +1 -0
- package/dist/hooks/query/use-canvas-extensions.d.ts +5 -0
- package/dist/hooks/query/use-canvas-extensions.js +3 -0
- package/dist/hooks/query/use-commit-changes.cjs +1 -1
- package/dist/hooks/query/use-commit-changes.js +4 -4
- package/dist/hooks/query/use-latest-automation-runs.cjs +1 -1
- package/dist/hooks/query/use-latest-automation-runs.js +1 -0
- package/dist/hooks/query/use-paginated-conversations.cjs +1 -1
- package/dist/hooks/query/use-paginated-conversations.cjs.map +1 -1
- package/dist/hooks/query/use-paginated-conversations.js +19 -16
- package/dist/hooks/query/use-paginated-conversations.js.map +1 -1
- package/dist/hooks/query/use-search-providers.cjs +1 -1
- package/dist/hooks/query/use-search-providers.cjs.map +1 -1
- package/dist/hooks/query/use-search-providers.js +17 -10
- package/dist/hooks/query/use-search-providers.js.map +1 -1
- package/dist/hooks/query/use-unified-get-git-changes.cjs +1 -1
- package/dist/hooks/query/use-unified-get-git-changes.js +4 -4
- package/dist/hooks/query/use-unified-git-commits.cjs +1 -1
- package/dist/hooks/query/use-unified-git-commits.js +4 -4
- package/dist/hooks/query/use-unified-git-diff.cjs +1 -1
- package/dist/hooks/query/use-unified-git-diff.js +4 -4
- package/dist/hooks/query/use-unified-vscode-url.cjs +1 -1
- package/dist/hooks/query/use-unified-vscode-url.cjs.map +1 -1
- package/dist/hooks/query/use-unified-vscode-url.d.ts +1 -0
- package/dist/hooks/query/use-unified-vscode-url.js +40 -26
- package/dist/hooks/query/use-unified-vscode-url.js.map +1 -1
- package/dist/hooks/query/use-workspace-file-content.cjs +1 -1
- package/dist/hooks/query/use-workspace-file-content.js +5 -5
- package/dist/hooks/query/use-workspace-files.cjs +1 -1
- package/dist/hooks/query/use-workspace-files.js +6 -6
- package/dist/hooks/use-acp-credential-form.d.ts +6 -0
- package/dist/hooks/use-conversation-overview-git-diff-stats.cjs +1 -1
- package/dist/hooks/use-conversation-overview-git-diff-stats.js +4 -4
- package/dist/hooks/use-pinned-home-route.cjs +2 -0
- package/dist/hooks/use-pinned-home-route.cjs.map +1 -0
- package/dist/hooks/use-pinned-home-route.d.ts +33 -0
- package/dist/hooks/use-pinned-home-route.js +34 -0
- package/dist/hooks/use-pinned-home-route.js.map +1 -0
- package/dist/hooks/use-skill-enablement.cjs +2 -0
- package/dist/hooks/use-skill-enablement.cjs.map +1 -0
- package/dist/hooks/use-skill-enablement.d.ts +14 -0
- package/dist/hooks/use-skill-enablement.js +80 -0
- package/dist/hooks/use-skill-enablement.js.map +1 -0
- package/dist/i18n/declaration.cjs +1 -1
- package/dist/i18n/declaration.cjs.map +1 -1
- package/dist/i18n/declaration.d.ts +29 -13
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +3 -3
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +538 -266
- package/dist/i18n/translation.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +15 -14
- package/dist/lib/index.cjs +1 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +1 -0
- package/dist/locales/ar/openhands.json +32 -16
- package/dist/locales/ca/openhands.json +32 -16
- package/dist/locales/de/openhands.json +32 -16
- package/dist/locales/en/openhands.json +32 -16
- package/dist/locales/es/openhands.json +32 -16
- package/dist/locales/fr/openhands.json +32 -16
- package/dist/locales/it/openhands.json +32 -16
- package/dist/locales/ja/openhands.json +32 -16
- package/dist/locales/ko-KR/openhands.json +32 -16
- package/dist/locales/no/openhands.json +32 -16
- package/dist/locales/pt/openhands.json +32 -16
- package/dist/locales/tr/openhands.json +32 -16
- package/dist/locales/uk/openhands.json +32 -16
- package/dist/locales/zh-CN/openhands.json +32 -16
- package/dist/locales/zh-TW/openhands.json +32 -16
- package/dist/manifests/automation-interface.cjs +1 -1
- package/dist/manifests/automation-interface.cjs.map +1 -1
- package/dist/manifests/automation-interface.d.ts +6 -0
- package/dist/manifests/automation-interface.js +11 -8
- package/dist/manifests/automation-interface.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs +45 -4
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.js +1 -1
- package/dist/node_modules/@openhands/extensions/automations/bundle-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.js +21 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js +5 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs +30 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js +65 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js +21 -9
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js +2 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs +2 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js +40 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js +74 -72
- package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.cjs +42 -3
- package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.js +22 -3
- package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.js +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js +8 -7
- package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/index.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/index.js +2 -2
- package/dist/node_modules/lucide-react/dist/esm/icons/blocks.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/blocks.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/blocks.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/blocks.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.cjs +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js.map +1 -0
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +3 -3
- package/dist/package.js.map +1 -1
- package/dist/routes/agent-settings.d.ts +10 -0
- package/dist/routes/app-settings.cjs +1 -1
- package/dist/routes/app-settings.cjs.map +1 -1
- package/dist/routes/app-settings.js +7 -7
- package/dist/routes/files-tab.cjs +1 -1
- package/dist/routes/files-tab.cjs.map +1 -1
- package/dist/routes/files-tab.js +14 -14
- package/dist/routes/files-tab.js.map +1 -1
- package/dist/routes/llm-settings.cjs +1 -1
- package/dist/routes/llm-settings.cjs.map +1 -1
- package/dist/routes/llm-settings.js +122 -114
- package/dist/routes/llm-settings.js.map +1 -1
- package/dist/services/canvas-ui.cjs +1 -1
- package/dist/services/canvas-ui.cjs.map +1 -1
- package/dist/services/canvas-ui.d.ts +5 -0
- package/dist/services/canvas-ui.js +24 -10
- package/dist/services/canvas-ui.js.map +1 -1
- package/dist/services/settings.cjs +1 -1
- package/dist/services/settings.cjs.map +1 -1
- package/dist/services/settings.js +3 -2
- package/dist/services/settings.js.map +1 -1
- package/dist/types/automation.cjs.map +1 -1
- package/dist/types/automation.d.ts +20 -0
- package/dist/types/automation.js.map +1 -1
- package/dist/types/canvas-extension.cjs +2 -0
- package/dist/types/canvas-extension.cjs.map +1 -0
- package/dist/types/canvas-extension.d.ts +77 -0
- package/dist/types/canvas-extension.js +6 -0
- package/dist/types/canvas-extension.js.map +1 -0
- package/dist/types/settings.d.ts +7 -0
- package/dist/ui/help-link.cjs +1 -1
- package/dist/ui/help-link.cjs.map +1 -1
- package/dist/ui/help-link.d.ts +6 -1
- package/dist/ui/help-link.js +32 -18
- package/dist/ui/help-link.js.map +1 -1
- package/dist/utils/acp-auth-display.d.ts +35 -0
- package/dist/utils/cache-utils.cjs +1 -1
- package/dist/utils/cache-utils.js +5 -5
- package/dist/utils/format-model-name.cjs +1 -1
- package/dist/utils/format-model-name.cjs.map +1 -1
- package/dist/utils/format-model-name.d.ts +7 -3
- package/dist/utils/format-model-name.js +6 -11
- package/dist/utils/format-model-name.js.map +1 -1
- package/dist/utils/format-relative-time.cjs +1 -1
- package/dist/utils/format-relative-time.cjs.map +1 -1
- package/dist/utils/format-relative-time.d.ts +7 -0
- package/dist/utils/format-relative-time.js +7 -2
- package/dist/utils/format-relative-time.js.map +1 -1
- package/dist/utils/path-utils.cjs +1 -1
- package/dist/utils/path-utils.cjs.map +1 -1
- package/dist/utils/path-utils.d.ts +15 -3
- package/dist/utils/path-utils.js +29 -3
- package/dist/utils/path-utils.js.map +1 -1
- package/dist/utils/skill-enablement.cjs +2 -0
- package/dist/utils/skill-enablement.cjs.map +1 -0
- package/dist/utils/skill-enablement.d.ts +51 -0
- package/dist/utils/skill-enablement.js +31 -0
- package/dist/utils/skill-enablement.js.map +1 -0
- package/dist/utils/vscode-origin.cjs +2 -0
- package/dist/utils/vscode-origin.cjs.map +1 -0
- package/dist/utils/vscode-origin.d.ts +55 -0
- package/dist/utils/vscode-origin.js +27 -0
- package/dist/utils/vscode-origin.js.map +1 -0
- package/dist/utils/workspace-mode.d.ts +4 -0
- package/package.json +3 -3
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/check-translation-completeness.cjs +1 -0
- package/scripts/dev-extra-backend.mjs +28 -9
- package/scripts/dev-safe.mjs +81 -8
- package/scripts/dev-static.mjs +35 -37
- package/scripts/dev-with-automation.mjs +82 -1
- package/scripts/ingress.mjs +27 -1
- package/scripts/static-server.mjs +74 -1
- package/tools/canvas_ui_tool.py +19 -0
- package/build/assets/active-backend-context-DKFSMbn3.js +0 -2
- package/build/assets/agent-server-conversation-service.api-DozDKIW_.js +0 -86
- package/build/assets/agent-settings-351vXWc9.js +0 -2
- package/build/assets/agent-settings-Ce7BDZ6I.js +0 -1
- package/build/assets/alert-banner-Kyy1YWZU.js +0 -1
- package/build/assets/api-key-entry-screen-INIxqAMs.js +0 -1
- package/build/assets/automation-detail-DXDhUwPq.js +0 -3
- package/build/assets/automation-setup-route-FRr05f_g.js +0 -1
- package/build/assets/automations-list-CERuQWE6.js +0 -1
- package/build/assets/backend-form-modal-DK78-jn1.js +0 -1
- package/build/assets/browser-11etCQ04.js +0 -7
- package/build/assets/check-Cf2YoT90.js +0 -1
- package/build/assets/chevron-down-C3OQ-ehx.js +0 -1
- package/build/assets/chevron-right-CN1uUiJ1.js +0 -1
- package/build/assets/circle-check-g5yeGMd-.js +0 -1
- package/build/assets/command-menu-BZQ8S3Ke.js +0 -1
- package/build/assets/conversation-CchMzpGl.js +0 -1
- package/build/assets/conversation-Dpzftz57.js +0 -93
- package/build/assets/conversation-panel-CchMzpGl.js +0 -1
- package/build/assets/conversation-state-store-a9d2fxRc.js +0 -1
- package/build/assets/empty-state-CvaVahVr.js +0 -1
- package/build/assets/extensions-hub-CFduxBnk.js +0 -1
- package/build/assets/extensions-navigation-BeC224yX.js +0 -1
- package/build/assets/files-tab-CL3J9b3p.js +0 -1
- package/build/assets/format-model-name-BNPKVsIq.js +0 -1
- package/build/assets/get-git-path-DlAJa_i6.js +0 -1
- package/build/assets/git-repo-dropdown-DGMEhz7d.js +0 -1
- package/build/assets/home-BCGlNJCA.js +0 -1
- package/build/assets/home-DB1pRqTC.js +0 -1
- package/build/assets/home-automation-run-tooltip-CooFQRIG.js +0 -1
- package/build/assets/home-store-Dl1dPE58.js +0 -1
- package/build/assets/index-home-DB1pRqTC.js +0 -1
- package/build/assets/info-uYSVzX86.js +0 -1
- package/build/assets/install-server-modal-BbJdhzet.js +0 -1
- package/build/assets/kebab-menu-item-content-BYokkRHi.js +0 -1
- package/build/assets/list-filter-OFkpRrmi.js +0 -1
- package/build/assets/llm-not-configured-banner-BqqYnJ1t.js +0 -27
- package/build/assets/llm-settings-CnDbbmVW.js +0 -1
- package/build/assets/llm-settings-S8Yjg__1.js +0 -1
- package/build/assets/llm-subscription-service-BpPfzW4x.js +0 -1
- package/build/assets/loader-circle-nvrwthvj.js +0 -1
- package/build/assets/manage-backends-modal-BCUPswyl.js +0 -1
- package/build/assets/manifest-58597dde.js +0 -1
- package/build/assets/markdown-renderer-Cb2sBWtV.js +0 -8
- package/build/assets/messages-BTN5thLe.js +0 -40
- package/build/assets/onboarding-Cx_kaiD1.js +0 -1
- package/build/assets/onboarding-modal-vMwn7ihv.js +0 -1
- package/build/assets/plugins-management-service-BjYeF0b0.js +0 -1
- package/build/assets/plus-CEKne-Yp.js +0 -1
- package/build/assets/profiles-service.api-QB-T_u-g.js +0 -1
- package/build/assets/providers-FfSZ5TXP.js +0 -1
- package/build/assets/proxy-tcFL2yTQ.js +0 -1
- package/build/assets/recommended-automations-launcher-Bw8uC4V6.js +0 -1
- package/build/assets/root-BLeQfBEq.css +0 -1
- package/build/assets/root-ZKKYPR1Z.js +0 -2
- package/build/assets/root-layout-luJoE9IG.js +0 -2
- package/build/assets/schema-field-Csw5fhtN.js +0 -1
- package/build/assets/secrets-service-BTor9uAU.js +0 -1
- package/build/assets/settings-DcNPxz0v.js +0 -1
- package/build/assets/settings-service.api-B2agVfjL.js +0 -1
- package/build/assets/shared-conversation-B55pCyBG.js +0 -1
- package/build/assets/sidebar-nav-link-CPzhyHQg.js +0 -1
- package/build/assets/sidebar-store-DtpU7zaI.js +0 -1
- package/build/assets/skill-filter-CWZ5kjcg.js +0 -2
- package/build/assets/skill-scope-CV1dkAbW.js +0 -1
- package/build/assets/skills-plugins-DGHULTq6.js +0 -1
- package/build/assets/skills-settings-CM1lFv3e.js +0 -1
- package/build/assets/usage-tab-BcfWV6db.js +0 -1
- package/build/assets/use-acp-credential-form-BsSW5NHG.js +0 -1
- package/build/assets/use-agent-profiles-DWBPC0Si.js +0 -1
- package/build/assets/use-config-Bft35DOK.js +0 -1
- package/build/assets/use-create-secret-BSxJMxHp.js +0 -1
- package/build/assets/use-is-authed-CFGkY3-Z.js +0 -1
- package/build/assets/use-llm-configured-BI6obxsc.js +0 -1
- package/build/assets/use-llm-profiles-djGAhTWL.js +0 -1
- package/build/assets/use-manifest-capabilities-3z0-1G59.js +0 -1
- package/build/assets/use-onboarding-completion-BXpyUSsJ.js +0 -1
- package/build/assets/use-plugins-marketplace-DI4_pK56.js +0 -1
- package/build/assets/use-save-agent-profile-DdBSTdpN.js +0 -1
- package/build/assets/use-tracking-D5t9otIF.js +0 -3
- package/build/assets/utils-DaCIEEQP.js +0 -1
- package/build/assets/vendor~index-home~home~conversation-panel~conversation~alert-banner-B3qC_oj8.js +0 -1
- package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-B2OLKL7N.js +0 -1
- package/dist/components/features/tips/random-tip.d.ts +0 -2
- package/dist/utils/tips.d.ts +0 -7
- package/dist/utils/workspace-relative-path.cjs +0 -2
- package/dist/utils/workspace-relative-path.cjs.map +0 -1
- package/dist/utils/workspace-relative-path.d.ts +0 -10
- package/dist/utils/workspace-relative-path.js +0 -22
- package/dist/utils/workspace-relative-path.js.map +0 -1
- /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew3u153i-rfV8mQ9m.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-rfV8mQ9m.js} +0 -0
- /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~i58xkef6-cHFhpUBq.js} +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require("../../../../../../_virtual/_rolldown/runtime.cjs");var e={id:`linear-issue-to-gitlab-mr`,name:`Linear issue to GitLab MR`,category:`Project management`,description:`Watch Linear for implementation-ready issues, start an agent to make the requested code change, and open a GitLab merge request.`,requires:{integrations:{linear:{message:`Reads implementation-ready issues and posts progress back to Linear.`},gitlab:{message:`Clones the target repository, pushes a branch, and opens the merge request.`}},features:[`conversationDispatch`]},popularityRank:88,estimatedSetupMinutes:6,skill:`ticket-to-code-change`,exampleImplementation:`Trigger: Linear issue marked implementation-ready
|
|
2
|
+
Required integrations: Linear, GitLab
|
|
3
|
+
|
|
4
|
+
1. Watch the selected Linear team or project for issues carrying a configurable implementation-ready label or state.
|
|
5
|
+
2. Deduplicate issue IDs so each transition dispatches once.
|
|
6
|
+
3. Read the issue, linked dependencies, acceptance criteria, and target repository.
|
|
7
|
+
4. Start an independent OpenHands conversation that clones the GitLab repository, creates an issue-keyed branch, implements and tests the change, and opens a merge request.
|
|
8
|
+
5. Post the conversation and merge request links back to the Linear issue and update its status according to the team's workflow.`};exports.default=e;
|
|
9
|
+
//# sourceMappingURL=manifest.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.cjs","names":[],"sources":["../../../../../../../node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.json"],"sourcesContent":["{\n \"id\": \"linear-issue-to-gitlab-mr\",\n \"name\": \"Linear issue to GitLab MR\",\n \"category\": \"Project management\",\n \"description\": \"Watch Linear for implementation-ready issues, start an agent to make the requested code change, and open a GitLab merge request.\",\n \"requires\": {\n \"integrations\": {\n \"linear\": {\n \"message\": \"Reads implementation-ready issues and posts progress back to Linear.\"\n },\n \"gitlab\": {\n \"message\": \"Clones the target repository, pushes a branch, and opens the merge request.\"\n }\n },\n \"features\": [\n \"conversationDispatch\"\n ]\n },\n \"popularityRank\": 88,\n \"estimatedSetupMinutes\": 6,\n \"skill\": \"ticket-to-code-change\",\n \"exampleImplementation\": \"Trigger: Linear issue marked implementation-ready\\nRequired integrations: Linear, GitLab\\n\\n1. Watch the selected Linear team or project for issues carrying a configurable implementation-ready label or state.\\n2. Deduplicate issue IDs so each transition dispatches once.\\n3. Read the issue, linked dependencies, acceptance criteria, and target repository.\\n4. Start an independent OpenHands conversation that clones the GitLab repository, creates an issue-keyed branch, implements and tests the change, and opens a merge request.\\n5. Post the conversation and merge request links back to the Linear issue and update its status according to the team's workflow.\"\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
var e = {
|
|
2
|
+
id: "linear-issue-to-gitlab-mr",
|
|
3
|
+
name: "Linear issue to GitLab MR",
|
|
4
|
+
category: "Project management",
|
|
5
|
+
description: "Watch Linear for implementation-ready issues, start an agent to make the requested code change, and open a GitLab merge request.",
|
|
6
|
+
requires: {
|
|
7
|
+
integrations: {
|
|
8
|
+
linear: { message: "Reads implementation-ready issues and posts progress back to Linear." },
|
|
9
|
+
gitlab: { message: "Clones the target repository, pushes a branch, and opens the merge request." }
|
|
10
|
+
},
|
|
11
|
+
features: ["conversationDispatch"]
|
|
12
|
+
},
|
|
13
|
+
popularityRank: 88,
|
|
14
|
+
estimatedSetupMinutes: 6,
|
|
15
|
+
skill: "ticket-to-code-change",
|
|
16
|
+
exampleImplementation: "Trigger: Linear issue marked implementation-ready\nRequired integrations: Linear, GitLab\n\n1. Watch the selected Linear team or project for issues carrying a configurable implementation-ready label or state.\n2. Deduplicate issue IDs so each transition dispatches once.\n3. Read the issue, linked dependencies, acceptance criteria, and target repository.\n4. Start an independent OpenHands conversation that clones the GitLab repository, creates an issue-keyed branch, implements and tests the change, and opens a merge request.\n5. Post the conversation and merge request links back to the Linear issue and update its status according to the team's workflow."
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { e as default };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","names":[],"sources":["../../../../../../../node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.json"],"sourcesContent":["{\n \"id\": \"linear-issue-to-gitlab-mr\",\n \"name\": \"Linear issue to GitLab MR\",\n \"category\": \"Project management\",\n \"description\": \"Watch Linear for implementation-ready issues, start an agent to make the requested code change, and open a GitLab merge request.\",\n \"requires\": {\n \"integrations\": {\n \"linear\": {\n \"message\": \"Reads implementation-ready issues and posts progress back to Linear.\"\n },\n \"gitlab\": {\n \"message\": \"Clones the target repository, pushes a branch, and opens the merge request.\"\n }\n },\n \"features\": [\n \"conversationDispatch\"\n ]\n },\n \"popularityRank\": 88,\n \"estimatedSetupMinutes\": 6,\n \"skill\": \"ticket-to-code-change\",\n \"exampleImplementation\": \"Trigger: Linear issue marked implementation-ready\\nRequired integrations: Linear, GitLab\\n\\n1. Watch the selected Linear team or project for issues carrying a configurable implementation-ready label or state.\\n2. Deduplicate issue IDs so each transition dispatches once.\\n3. Read the issue, linked dependencies, acceptance criteria, and target repository.\\n4. Start an independent OpenHands conversation that clones the GitLab repository, creates an issue-keyed branch, implements and tests the change, and opens a merge request.\\n5. Post the conversation and merge request links back to the Linear issue and update its status according to the team's workflow.\"\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs
CHANGED
|
@@ -8,7 +8,7 @@ Required secret: none. The feeds are public URLs and the conversation is started
|
|
|
8
8
|
5. Start no conversation at all when nothing new was published, and leave the day open for a later run. A quiet day costs no tokens.
|
|
9
9
|
6. Otherwise start an OpenHands conversation with the newest stories and the topics in the prompt, and let it decide which are relevant, group them, merge duplicate coverage, and write the digest.
|
|
10
10
|
7. Deliver it three ways that need no credentials: it stays in the conversation, it is printed into the run log, and its opening is kept in state.
|
|
11
|
-
8. Remember the reported stories only once a digest exists, so a failed run is recovered by the next one rather than lost.`,setup:{version:`1.0`,mode:`direct`,form:{triggers:{cron:{schedule:{type:`cron`,label:`Digest time`,help:`When the digest is written. Work is keyed by UTC date, so a schedule more frequent than daily only polls until there is something new.`,default:`0 8 * * *`,required:!0},timezone:{type:`timezone`,label:`Timezone`,help:`Timezone the schedule is interpreted in.`,default:`UTC`,required:!0}}},args:{feeds:{type:`textarea`,label:`Feeds`,help:`One RSS or Atom feed URL per line. They must be public: this automation signs in to nothing, so a feed behind a login will simply fail and be skipped.`,default:`https://news.ycombinator.com/rss
|
|
11
|
+
8. Remember the reported stories only once a digest exists, so a failed run is recovered by the next one rather than lost.`,impact:{basis:`completed-runs`,one:`1 feed check completed`,other:`{{count}} feed checks completed`},setup:{version:`1.0`,mode:`direct`,form:{triggers:{cron:{schedule:{type:`cron`,label:`Digest time`,help:`When the digest is written. Work is keyed by UTC date, so a schedule more frequent than daily only polls until there is something new.`,default:`0 8 * * *`,required:!0},timezone:{type:`timezone`,label:`Timezone`,help:`Timezone the schedule is interpreted in.`,default:`UTC`,required:!0}}},args:{feeds:{type:`textarea`,label:`Feeds`,help:`One RSS or Atom feed URL per line. They must be public: this automation signs in to nothing, so a feed behind a login will simply fail and be skipped.`,default:`https://news.ycombinator.com/rss
|
|
12
12
|
https://feeds.arstechnica.com/arstechnica/index
|
|
13
13
|
https://www.theverge.com/rss/index.xml`,required:!0,constraints:{minLength:8,maxLength:4e3}},topics:{type:`textarea`,label:`Topics of interest`,help:`One topic per line, or separated by commas. The agent reads every new story and decides which ones are about these, so write them the way you would explain your interests to a colleague rather than as search terms. Leave this empty to cover whatever is most significant.`,default:`artificial intelligence, open source, developer tools`,required:!1,constraints:{maxLength:2e3}}}},bundle:{version:`1.0.0`,entrypoint:`python3 main.py`,timeout:900,files:{"main.py":`skills/news-digest/scripts/main.py`},config:{feeds:`{{form.feeds}}`,topics:`{{form.topics}}`}},message:`This deployment cannot run the scheduled news digest directly. Set it up in this conversation instead: confirm the feeds to read, the topics to watch for, and the schedule, then create the automation.`}};exports.default=e;
|
|
14
14
|
//# sourceMappingURL=manifest.cjs.map
|
package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.cjs","names":[],"sources":["../../../../../../../node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.json"],"sourcesContent":["{\n \"id\": \"news-digest\",\n \"name\": \"Daily news digest\",\n \"category\": \"Research\",\n \"icon\": \"activity\",\n \"description\": \"Read a list of public RSS and Atom feeds on a schedule, hand an agent everything new, and have it pick out what matters for your topics and write a short digest. Connects to nothing and needs no credentials.\",\n \"requires\": {\n \"integrations\": {},\n \"features\": [\n \"customTarball\"\n ]\n },\n \"popularityRank\": 78,\n \"estimatedSetupMinutes\": 2,\n \"exampleImplementation\": \"Trigger: cron, daily by default (0 8 * * *)\\nRequired secret: none. The feeds are public URLs and the conversation is started with an empty secret allow-list and no MCP servers.\\n\\n1. Read the feed list, the topics, and the schedule from setup.\\n2. Key one unit of work to the UTC date, so a cron that fires more often, a retried run, or a restarted service cannot write the same digest twice.\\n3. Fetch every feed over plain HTTPS and parse RSS 2.0, RSS 1.0/RDF and Atom by local element name. A feed that is down, moved, or no longer a feed is reported and skipped; the run fails only when every feed fails.\\n4. Drop stories already covered by an earlier digest and stories older than the lookback window. Do not judge what a story is about: that has no right answer and is the agent's call.\\n5. Start no conversation at all when nothing new was published, and leave the day open for a later run. A quiet day costs no tokens.\\n6. Otherwise start an OpenHands conversation with the newest stories and the topics in the prompt, and let it decide which are relevant, group them, merge duplicate coverage, and write the digest.\\n7. Deliver it three ways that need no credentials: it stays in the conversation, it is printed into the run log, and its opening is kept in state.\\n8. Remember the reported stories only once a digest exists, so a failed run is recovered by the next one rather than lost.\",\n \"setup\": {\n \"version\": \"1.0\",\n \"mode\": \"direct\",\n \"form\": {\n \"triggers\": {\n \"cron\": {\n \"schedule\": {\n \"type\": \"cron\",\n \"label\": \"Digest time\",\n \"help\": \"When the digest is written. Work is keyed by UTC date, so a schedule more frequent than daily only polls until there is something new.\",\n \"default\": \"0 8 * * *\",\n \"required\": true\n },\n \"timezone\": {\n \"type\": \"timezone\",\n \"label\": \"Timezone\",\n \"help\": \"Timezone the schedule is interpreted in.\",\n \"default\": \"UTC\",\n \"required\": true\n }\n }\n },\n \"args\": {\n \"feeds\": {\n \"type\": \"textarea\",\n \"label\": \"Feeds\",\n \"help\": \"One RSS or Atom feed URL per line. They must be public: this automation signs in to nothing, so a feed behind a login will simply fail and be skipped.\",\n \"default\": \"https://news.ycombinator.com/rss\\nhttps://feeds.arstechnica.com/arstechnica/index\\nhttps://www.theverge.com/rss/index.xml\",\n \"required\": true,\n \"constraints\": {\n \"minLength\": 8,\n \"maxLength\": 4000\n }\n },\n \"topics\": {\n \"type\": \"textarea\",\n \"label\": \"Topics of interest\",\n \"help\": \"One topic per line, or separated by commas. The agent reads every new story and decides which ones are about these, so write them the way you would explain your interests to a colleague rather than as search terms. Leave this empty to cover whatever is most significant.\",\n \"default\": \"artificial intelligence, open source, developer tools\",\n \"required\": false,\n \"constraints\": {\n \"maxLength\": 2000\n }\n }\n }\n },\n \"bundle\": {\n \"version\": \"1.0.0\",\n \"entrypoint\": \"python3 main.py\",\n \"timeout\": 900,\n \"files\": {\n \"main.py\": \"skills/news-digest/scripts/main.py\"\n },\n \"config\": {\n \"feeds\": \"{{form.feeds}}\",\n \"topics\": \"{{form.topics}}\"\n }\n },\n \"message\": \"This deployment cannot run the scheduled news digest directly. Set it up in this conversation instead: confirm the feeds to read, the topics to watch for, and the schedule, then create the automation.\"\n }\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
1
|
+
{"version":3,"file":"manifest.cjs","names":[],"sources":["../../../../../../../node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.json"],"sourcesContent":["{\n \"id\": \"news-digest\",\n \"name\": \"Daily news digest\",\n \"category\": \"Research\",\n \"icon\": \"activity\",\n \"description\": \"Read a list of public RSS and Atom feeds on a schedule, hand an agent everything new, and have it pick out what matters for your topics and write a short digest. Connects to nothing and needs no credentials.\",\n \"requires\": {\n \"integrations\": {},\n \"features\": [\n \"customTarball\"\n ]\n },\n \"popularityRank\": 78,\n \"estimatedSetupMinutes\": 2,\n \"exampleImplementation\": \"Trigger: cron, daily by default (0 8 * * *)\\nRequired secret: none. The feeds are public URLs and the conversation is started with an empty secret allow-list and no MCP servers.\\n\\n1. Read the feed list, the topics, and the schedule from setup.\\n2. Key one unit of work to the UTC date, so a cron that fires more often, a retried run, or a restarted service cannot write the same digest twice.\\n3. Fetch every feed over plain HTTPS and parse RSS 2.0, RSS 1.0/RDF and Atom by local element name. A feed that is down, moved, or no longer a feed is reported and skipped; the run fails only when every feed fails.\\n4. Drop stories already covered by an earlier digest and stories older than the lookback window. Do not judge what a story is about: that has no right answer and is the agent's call.\\n5. Start no conversation at all when nothing new was published, and leave the day open for a later run. A quiet day costs no tokens.\\n6. Otherwise start an OpenHands conversation with the newest stories and the topics in the prompt, and let it decide which are relevant, group them, merge duplicate coverage, and write the digest.\\n7. Deliver it three ways that need no credentials: it stays in the conversation, it is printed into the run log, and its opening is kept in state.\\n8. Remember the reported stories only once a digest exists, so a failed run is recovered by the next one rather than lost.\",\n \"impact\": {\n \"basis\": \"completed-runs\",\n \"one\": \"1 feed check completed\",\n \"other\": \"{{count}} feed checks completed\"\n },\n \"setup\": {\n \"version\": \"1.0\",\n \"mode\": \"direct\",\n \"form\": {\n \"triggers\": {\n \"cron\": {\n \"schedule\": {\n \"type\": \"cron\",\n \"label\": \"Digest time\",\n \"help\": \"When the digest is written. Work is keyed by UTC date, so a schedule more frequent than daily only polls until there is something new.\",\n \"default\": \"0 8 * * *\",\n \"required\": true\n },\n \"timezone\": {\n \"type\": \"timezone\",\n \"label\": \"Timezone\",\n \"help\": \"Timezone the schedule is interpreted in.\",\n \"default\": \"UTC\",\n \"required\": true\n }\n }\n },\n \"args\": {\n \"feeds\": {\n \"type\": \"textarea\",\n \"label\": \"Feeds\",\n \"help\": \"One RSS or Atom feed URL per line. They must be public: this automation signs in to nothing, so a feed behind a login will simply fail and be skipped.\",\n \"default\": \"https://news.ycombinator.com/rss\\nhttps://feeds.arstechnica.com/arstechnica/index\\nhttps://www.theverge.com/rss/index.xml\",\n \"required\": true,\n \"constraints\": {\n \"minLength\": 8,\n \"maxLength\": 4000\n }\n },\n \"topics\": {\n \"type\": \"textarea\",\n \"label\": \"Topics of interest\",\n \"help\": \"One topic per line, or separated by commas. The agent reads every new story and decides which ones are about these, so write them the way you would explain your interests to a colleague rather than as search terms. Leave this empty to cover whatever is most significant.\",\n \"default\": \"artificial intelligence, open source, developer tools\",\n \"required\": false,\n \"constraints\": {\n \"maxLength\": 2000\n }\n }\n }\n },\n \"bundle\": {\n \"version\": \"1.0.0\",\n \"entrypoint\": \"python3 main.py\",\n \"timeout\": 900,\n \"files\": {\n \"main.py\": \"skills/news-digest/scripts/main.py\"\n },\n \"config\": {\n \"feeds\": \"{{form.feeds}}\",\n \"topics\": \"{{form.topics}}\"\n }\n },\n \"message\": \"This deployment cannot run the scheduled news digest directly. Set it up in this conversation instead: confirm the feeds to read, the topics to watch for, and the schedule, then create the automation.\"\n }\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -11,6 +11,11 @@ var e = {
|
|
|
11
11
|
popularityRank: 78,
|
|
12
12
|
estimatedSetupMinutes: 2,
|
|
13
13
|
exampleImplementation: "Trigger: cron, daily by default (0 8 * * *)\nRequired secret: none. The feeds are public URLs and the conversation is started with an empty secret allow-list and no MCP servers.\n\n1. Read the feed list, the topics, and the schedule from setup.\n2. Key one unit of work to the UTC date, so a cron that fires more often, a retried run, or a restarted service cannot write the same digest twice.\n3. Fetch every feed over plain HTTPS and parse RSS 2.0, RSS 1.0/RDF and Atom by local element name. A feed that is down, moved, or no longer a feed is reported and skipped; the run fails only when every feed fails.\n4. Drop stories already covered by an earlier digest and stories older than the lookback window. Do not judge what a story is about: that has no right answer and is the agent's call.\n5. Start no conversation at all when nothing new was published, and leave the day open for a later run. A quiet day costs no tokens.\n6. Otherwise start an OpenHands conversation with the newest stories and the topics in the prompt, and let it decide which are relevant, group them, merge duplicate coverage, and write the digest.\n7. Deliver it three ways that need no credentials: it stays in the conversation, it is printed into the run log, and its opening is kept in state.\n8. Remember the reported stories only once a digest exists, so a failed run is recovered by the next one rather than lost.",
|
|
14
|
+
impact: {
|
|
15
|
+
basis: "completed-runs",
|
|
16
|
+
one: "1 feed check completed",
|
|
17
|
+
other: "{{count}} feed checks completed"
|
|
18
|
+
},
|
|
14
19
|
setup: {
|
|
15
20
|
version: "1.0",
|
|
16
21
|
mode: "direct",
|
package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","names":[],"sources":["../../../../../../../node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.json"],"sourcesContent":["{\n \"id\": \"news-digest\",\n \"name\": \"Daily news digest\",\n \"category\": \"Research\",\n \"icon\": \"activity\",\n \"description\": \"Read a list of public RSS and Atom feeds on a schedule, hand an agent everything new, and have it pick out what matters for your topics and write a short digest. Connects to nothing and needs no credentials.\",\n \"requires\": {\n \"integrations\": {},\n \"features\": [\n \"customTarball\"\n ]\n },\n \"popularityRank\": 78,\n \"estimatedSetupMinutes\": 2,\n \"exampleImplementation\": \"Trigger: cron, daily by default (0 8 * * *)\\nRequired secret: none. The feeds are public URLs and the conversation is started with an empty secret allow-list and no MCP servers.\\n\\n1. Read the feed list, the topics, and the schedule from setup.\\n2. Key one unit of work to the UTC date, so a cron that fires more often, a retried run, or a restarted service cannot write the same digest twice.\\n3. Fetch every feed over plain HTTPS and parse RSS 2.0, RSS 1.0/RDF and Atom by local element name. A feed that is down, moved, or no longer a feed is reported and skipped; the run fails only when every feed fails.\\n4. Drop stories already covered by an earlier digest and stories older than the lookback window. Do not judge what a story is about: that has no right answer and is the agent's call.\\n5. Start no conversation at all when nothing new was published, and leave the day open for a later run. A quiet day costs no tokens.\\n6. Otherwise start an OpenHands conversation with the newest stories and the topics in the prompt, and let it decide which are relevant, group them, merge duplicate coverage, and write the digest.\\n7. Deliver it three ways that need no credentials: it stays in the conversation, it is printed into the run log, and its opening is kept in state.\\n8. Remember the reported stories only once a digest exists, so a failed run is recovered by the next one rather than lost.\",\n \"setup\": {\n \"version\": \"1.0\",\n \"mode\": \"direct\",\n \"form\": {\n \"triggers\": {\n \"cron\": {\n \"schedule\": {\n \"type\": \"cron\",\n \"label\": \"Digest time\",\n \"help\": \"When the digest is written. Work is keyed by UTC date, so a schedule more frequent than daily only polls until there is something new.\",\n \"default\": \"0 8 * * *\",\n \"required\": true\n },\n \"timezone\": {\n \"type\": \"timezone\",\n \"label\": \"Timezone\",\n \"help\": \"Timezone the schedule is interpreted in.\",\n \"default\": \"UTC\",\n \"required\": true\n }\n }\n },\n \"args\": {\n \"feeds\": {\n \"type\": \"textarea\",\n \"label\": \"Feeds\",\n \"help\": \"One RSS or Atom feed URL per line. They must be public: this automation signs in to nothing, so a feed behind a login will simply fail and be skipped.\",\n \"default\": \"https://news.ycombinator.com/rss\\nhttps://feeds.arstechnica.com/arstechnica/index\\nhttps://www.theverge.com/rss/index.xml\",\n \"required\": true,\n \"constraints\": {\n \"minLength\": 8,\n \"maxLength\": 4000\n }\n },\n \"topics\": {\n \"type\": \"textarea\",\n \"label\": \"Topics of interest\",\n \"help\": \"One topic per line, or separated by commas. The agent reads every new story and decides which ones are about these, so write them the way you would explain your interests to a colleague rather than as search terms. Leave this empty to cover whatever is most significant.\",\n \"default\": \"artificial intelligence, open source, developer tools\",\n \"required\": false,\n \"constraints\": {\n \"maxLength\": 2000\n }\n }\n }\n },\n \"bundle\": {\n \"version\": \"1.0.0\",\n \"entrypoint\": \"python3 main.py\",\n \"timeout\": 900,\n \"files\": {\n \"main.py\": \"skills/news-digest/scripts/main.py\"\n },\n \"config\": {\n \"feeds\": \"{{form.feeds}}\",\n \"topics\": \"{{form.topics}}\"\n }\n },\n \"message\": \"This deployment cannot run the scheduled news digest directly. Set it up in this conversation instead: confirm the feeds to read, the topics to watch for, and the schedule, then create the automation.\"\n }\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
1
|
+
{"version":3,"file":"manifest.js","names":[],"sources":["../../../../../../../node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.json"],"sourcesContent":["{\n \"id\": \"news-digest\",\n \"name\": \"Daily news digest\",\n \"category\": \"Research\",\n \"icon\": \"activity\",\n \"description\": \"Read a list of public RSS and Atom feeds on a schedule, hand an agent everything new, and have it pick out what matters for your topics and write a short digest. Connects to nothing and needs no credentials.\",\n \"requires\": {\n \"integrations\": {},\n \"features\": [\n \"customTarball\"\n ]\n },\n \"popularityRank\": 78,\n \"estimatedSetupMinutes\": 2,\n \"exampleImplementation\": \"Trigger: cron, daily by default (0 8 * * *)\\nRequired secret: none. The feeds are public URLs and the conversation is started with an empty secret allow-list and no MCP servers.\\n\\n1. Read the feed list, the topics, and the schedule from setup.\\n2. Key one unit of work to the UTC date, so a cron that fires more often, a retried run, or a restarted service cannot write the same digest twice.\\n3. Fetch every feed over plain HTTPS and parse RSS 2.0, RSS 1.0/RDF and Atom by local element name. A feed that is down, moved, or no longer a feed is reported and skipped; the run fails only when every feed fails.\\n4. Drop stories already covered by an earlier digest and stories older than the lookback window. Do not judge what a story is about: that has no right answer and is the agent's call.\\n5. Start no conversation at all when nothing new was published, and leave the day open for a later run. A quiet day costs no tokens.\\n6. Otherwise start an OpenHands conversation with the newest stories and the topics in the prompt, and let it decide which are relevant, group them, merge duplicate coverage, and write the digest.\\n7. Deliver it three ways that need no credentials: it stays in the conversation, it is printed into the run log, and its opening is kept in state.\\n8. Remember the reported stories only once a digest exists, so a failed run is recovered by the next one rather than lost.\",\n \"impact\": {\n \"basis\": \"completed-runs\",\n \"one\": \"1 feed check completed\",\n \"other\": \"{{count}} feed checks completed\"\n },\n \"setup\": {\n \"version\": \"1.0\",\n \"mode\": \"direct\",\n \"form\": {\n \"triggers\": {\n \"cron\": {\n \"schedule\": {\n \"type\": \"cron\",\n \"label\": \"Digest time\",\n \"help\": \"When the digest is written. Work is keyed by UTC date, so a schedule more frequent than daily only polls until there is something new.\",\n \"default\": \"0 8 * * *\",\n \"required\": true\n },\n \"timezone\": {\n \"type\": \"timezone\",\n \"label\": \"Timezone\",\n \"help\": \"Timezone the schedule is interpreted in.\",\n \"default\": \"UTC\",\n \"required\": true\n }\n }\n },\n \"args\": {\n \"feeds\": {\n \"type\": \"textarea\",\n \"label\": \"Feeds\",\n \"help\": \"One RSS or Atom feed URL per line. They must be public: this automation signs in to nothing, so a feed behind a login will simply fail and be skipped.\",\n \"default\": \"https://news.ycombinator.com/rss\\nhttps://feeds.arstechnica.com/arstechnica/index\\nhttps://www.theverge.com/rss/index.xml\",\n \"required\": true,\n \"constraints\": {\n \"minLength\": 8,\n \"maxLength\": 4000\n }\n },\n \"topics\": {\n \"type\": \"textarea\",\n \"label\": \"Topics of interest\",\n \"help\": \"One topic per line, or separated by commas. The agent reads every new story and decides which ones are about these, so write them the way you would explain your interests to a colleague rather than as search terms. Leave this empty to cover whatever is most significant.\",\n \"default\": \"artificial intelligence, open source, developer tools\",\n \"required\": false,\n \"constraints\": {\n \"maxLength\": 2000\n }\n }\n }\n },\n \"bundle\": {\n \"version\": \"1.0.0\",\n \"entrypoint\": \"python3 main.py\",\n \"timeout\": 900,\n \"files\": {\n \"main.py\": \"skills/news-digest/scripts/main.py\"\n },\n \"config\": {\n \"feeds\": \"{{form.feeds}}\",\n \"topics\": \"{{form.topics}}\"\n }\n },\n \"message\": \"This deployment cannot run the scheduled news digest directly. Set it up in this conversation instead: confirm the feeds to read, the topics to watch for, and the schedule, then create the automation.\"\n }\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require("../../../../../../_virtual/_rolldown/runtime.cjs");var e={id:`qa-changes`,name:`QA Changes Agent`,category:`Code review`,description:`When a pull request is opened for review, run the QA changes methodology — set up the environment, exercise the changed behavior as a real user would, and post the outcome by editing the PR description with a QA Agent section.`,requires:{integrations:{github:{message:`Used to read the pull request, check the author's commit history, and edit the PR description.`}},features:[`repoClone`,`presetPrompt`,`webhookDelivery`]},popularityRank:85,estimatedSetupMinutes:5,skill:`qa-changes`,exampleImplementation:`Trigger: GitHub pull_request.opened and pull_request.ready_for_review events
|
|
2
|
+
Required secret: GITHUB_TOKEN
|
|
3
|
+
|
|
4
|
+
1. Receive a GitHub pull_request event (opened or ready_for_review).
|
|
5
|
+
2. Filter: the PR must not be a draft (draft == false), the PR description must not already contain a QA Agent section, and the PR author must have more than 3 commits already in main.
|
|
6
|
+
3. Start an OpenHands conversation that clones the repo, checks out the PR head, and runs the /qa-changes methodology: understand the change, set up the environment, exercise the changed behavior as a real user would.
|
|
7
|
+
4. Instead of posting a review comment, edit the PR description to append a horizontal rule followed by a QA Agent section containing the structured QA report.`,setup:{version:`1.0`,mode:`direct`,form:{triggers:{event:{on:{type:`select`,label:`Trigger on`,help:`Which GitHub pull request event starts a QA run. Opened fires when a non-draft PR is created; Ready for review fires when a draft PR is marked ready.`,default:`pull_request.opened`,required:!0,options:[{value:`pull_request.opened`,label:`Pull request opened`},{value:`pull_request.ready_for_review`,label:`Pull request ready for review`}]}}},args:{repository:{type:`repo-picker`,label:`Repository`,help:`The repository whose pull requests will be QA'd.`,provider:`github`,required:!0},ref:{type:`text`,label:`Base branch`,help:`Branch checked out when the agent runs QA.`,default:`main`,required:!0,constraints:{minLength:1,maxLength:255}}}},prompt:`A pull request was opened or marked ready for review in {{form.repository}}. Before doing any QA work, run these gate checks and stop immediately (making no changes) if any fails:
|
|
8
|
+
|
|
9
|
+
1. The PR must not be a draft — it must be open for review. If the PR is a draft, stop.
|
|
10
|
+
2. The PR author (the human who opened it) must have more than 3 commits already merged into the {{form.ref}} branch. Use the GitHub API to count the author's commits in {{form.ref}}. If the count is 3 or fewer, stop without making any changes.
|
|
11
|
+
3. The PR description must not already contain a section named QA Agent (i.e., a header like ## QA Agent or ### QA Agent). If that section already exists, stop without making any changes or starting a conversation.
|
|
12
|
+
|
|
13
|
+
If all gate checks pass, proceed with the QA validation using the /qa-changes skill methodology:
|
|
14
|
+
|
|
15
|
+
- Phase 1: Understand the change. Read the PR diff, title, and description. Identify the goal of the PR. Classify every changed file. Form a hypothesis about what the PR should achieve.
|
|
16
|
+
- Phase 2: Set up the environment. Read the repo's bootstrap instructions, install dependencies, and build if needed. Note CI status but do not re-run tests.
|
|
17
|
+
- Phase 3: Exercise the changed behavior. Actually run the software the way a real user would — start servers, run CLI commands, make HTTP requests, open browsers. Do NOT run the test suite, linters, or code analysis. For bug fixes, reproduce the bug before and after the fix. Show before/after evidence.
|
|
18
|
+
- Phase 4: Report results.
|
|
19
|
+
|
|
20
|
+
IMPORTANT — how to post your report:
|
|
21
|
+
Do NOT post a new comment, review, or inline review comment. Instead, EDIT the PR description (the pull request body) to append your QA report at the very end, after a horizontal rule (---), under a new section titled QA Agent. Use the GitHub API (PATCH /repos/{owner}/{repo}/pulls/{pr_number} with a body field) to update the PR description. Append the following structure to the existing PR body:
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## QA Agent
|
|
26
|
+
|
|
27
|
+
{Your full QA report following the /qa-changes skill report format: verdict, summary, Does this PR achieve its stated goal? section, status table, collapsible evidence in details blocks, and issues found.}
|
|
28
|
+
|
|
29
|
+
Do not make any other changes to the PR description — only append the QA Agent section at the end. Do not post any comments or reviews.`,filter:`!pull_request.draft && !icontains(pull_request.body, 'QA Agent') && glob(repository.full_name, '{{form.repository}}')`,message:`This deployment cannot run the webhook-driven QA automation directly. Set it up in this conversation instead: confirm the repository to QA, the base branch, and the PR event to trigger on, then create the automation.`}};exports.default=e;
|
|
30
|
+
//# sourceMappingURL=manifest.cjs.map
|
package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.cjs","names":[],"sources":["../../../../../../../node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.json"],"sourcesContent":["{\n \"id\": \"qa-changes\",\n \"name\": \"QA Changes Agent\",\n \"category\": \"Code review\",\n \"description\": \"When a pull request is opened for review, run the QA changes methodology — set up the environment, exercise the changed behavior as a real user would, and post the outcome by editing the PR description with a QA Agent section.\",\n \"requires\": {\n \"integrations\": {\n \"github\": {\n \"message\": \"Used to read the pull request, check the author's commit history, and edit the PR description.\"\n }\n },\n \"features\": [\n \"repoClone\",\n \"presetPrompt\",\n \"webhookDelivery\"\n ]\n },\n \"popularityRank\": 85,\n \"estimatedSetupMinutes\": 5,\n \"skill\": \"qa-changes\",\n \"exampleImplementation\": \"Trigger: GitHub pull_request.opened and pull_request.ready_for_review events\\nRequired secret: GITHUB_TOKEN\\n\\n1. Receive a GitHub pull_request event (opened or ready_for_review).\\n2. Filter: the PR must not be a draft (draft == false), the PR description must not already contain a QA Agent section, and the PR author must have more than 3 commits already in main.\\n3. Start an OpenHands conversation that clones the repo, checks out the PR head, and runs the /qa-changes methodology: understand the change, set up the environment, exercise the changed behavior as a real user would.\\n4. Instead of posting a review comment, edit the PR description to append a horizontal rule followed by a QA Agent section containing the structured QA report.\",\n \"setup\": {\n \"version\": \"1.0\",\n \"mode\": \"direct\",\n \"form\": {\n \"triggers\": {\n \"event\": {\n \"on\": {\n \"type\": \"select\",\n \"label\": \"Trigger on\",\n \"help\": \"Which GitHub pull request event starts a QA run. Opened fires when a non-draft PR is created; Ready for review fires when a draft PR is marked ready.\",\n \"default\": \"pull_request.opened\",\n \"required\": true,\n \"options\": [\n {\n \"value\": \"pull_request.opened\",\n \"label\": \"Pull request opened\"\n },\n {\n \"value\": \"pull_request.ready_for_review\",\n \"label\": \"Pull request ready for review\"\n }\n ]\n }\n }\n },\n \"args\": {\n \"repository\": {\n \"type\": \"repo-picker\",\n \"label\": \"Repository\",\n \"help\": \"The repository whose pull requests will be QA'd.\",\n \"provider\": \"github\",\n \"required\": true\n },\n \"ref\": {\n \"type\": \"text\",\n \"label\": \"Base branch\",\n \"help\": \"Branch checked out when the agent runs QA.\",\n \"default\": \"main\",\n \"required\": true,\n \"constraints\": {\n \"minLength\": 1,\n \"maxLength\": 255\n }\n }\n }\n },\n \"prompt\": \"A pull request was opened or marked ready for review in {{form.repository}}. Before doing any QA work, run these gate checks and stop immediately (making no changes) if any fails:\\n\\n1. The PR must not be a draft — it must be open for review. If the PR is a draft, stop.\\n2. The PR author (the human who opened it) must have more than 3 commits already merged into the {{form.ref}} branch. Use the GitHub API to count the author's commits in {{form.ref}}. If the count is 3 or fewer, stop without making any changes.\\n3. The PR description must not already contain a section named QA Agent (i.e., a header like ## QA Agent or ### QA Agent). If that section already exists, stop without making any changes or starting a conversation.\\n\\nIf all gate checks pass, proceed with the QA validation using the /qa-changes skill methodology:\\n\\n- Phase 1: Understand the change. Read the PR diff, title, and description. Identify the goal of the PR. Classify every changed file. Form a hypothesis about what the PR should achieve.\\n- Phase 2: Set up the environment. Read the repo's bootstrap instructions, install dependencies, and build if needed. Note CI status but do not re-run tests.\\n- Phase 3: Exercise the changed behavior. Actually run the software the way a real user would — start servers, run CLI commands, make HTTP requests, open browsers. Do NOT run the test suite, linters, or code analysis. For bug fixes, reproduce the bug before and after the fix. Show before/after evidence.\\n- Phase 4: Report results.\\n\\nIMPORTANT — how to post your report:\\nDo NOT post a new comment, review, or inline review comment. Instead, EDIT the PR description (the pull request body) to append your QA report at the very end, after a horizontal rule (---), under a new section titled QA Agent. Use the GitHub API (PATCH /repos/{owner}/{repo}/pulls/{pr_number} with a body field) to update the PR description. Append the following structure to the existing PR body:\\n\\n---\\n\\n## QA Agent\\n\\n{Your full QA report following the /qa-changes skill report format: verdict, summary, Does this PR achieve its stated goal? section, status table, collapsible evidence in details blocks, and issues found.}\\n\\nDo not make any other changes to the PR description — only append the QA Agent section at the end. Do not post any comments or reviews.\",\n \"filter\": \"!pull_request.draft && !icontains(pull_request.body, 'QA Agent') && glob(repository.full_name, '{{form.repository}}')\",\n \"message\": \"This deployment cannot run the webhook-driven QA automation directly. Set it up in this conversation instead: confirm the repository to QA, the base branch, and the PR event to trigger on, then create the automation.\"\n }\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
var e = {
|
|
2
|
+
id: "qa-changes",
|
|
3
|
+
name: "QA Changes Agent",
|
|
4
|
+
category: "Code review",
|
|
5
|
+
description: "When a pull request is opened for review, run the QA changes methodology — set up the environment, exercise the changed behavior as a real user would, and post the outcome by editing the PR description with a QA Agent section.",
|
|
6
|
+
requires: {
|
|
7
|
+
integrations: { github: { message: "Used to read the pull request, check the author's commit history, and edit the PR description." } },
|
|
8
|
+
features: [
|
|
9
|
+
"repoClone",
|
|
10
|
+
"presetPrompt",
|
|
11
|
+
"webhookDelivery"
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
popularityRank: 85,
|
|
15
|
+
estimatedSetupMinutes: 5,
|
|
16
|
+
skill: "qa-changes",
|
|
17
|
+
exampleImplementation: "Trigger: GitHub pull_request.opened and pull_request.ready_for_review events\nRequired secret: GITHUB_TOKEN\n\n1. Receive a GitHub pull_request event (opened or ready_for_review).\n2. Filter: the PR must not be a draft (draft == false), the PR description must not already contain a QA Agent section, and the PR author must have more than 3 commits already in main.\n3. Start an OpenHands conversation that clones the repo, checks out the PR head, and runs the /qa-changes methodology: understand the change, set up the environment, exercise the changed behavior as a real user would.\n4. Instead of posting a review comment, edit the PR description to append a horizontal rule followed by a QA Agent section containing the structured QA report.",
|
|
18
|
+
setup: {
|
|
19
|
+
version: "1.0",
|
|
20
|
+
mode: "direct",
|
|
21
|
+
form: {
|
|
22
|
+
triggers: { event: { on: {
|
|
23
|
+
type: "select",
|
|
24
|
+
label: "Trigger on",
|
|
25
|
+
help: "Which GitHub pull request event starts a QA run. Opened fires when a non-draft PR is created; Ready for review fires when a draft PR is marked ready.",
|
|
26
|
+
default: "pull_request.opened",
|
|
27
|
+
required: !0,
|
|
28
|
+
options: [{
|
|
29
|
+
value: "pull_request.opened",
|
|
30
|
+
label: "Pull request opened"
|
|
31
|
+
}, {
|
|
32
|
+
value: "pull_request.ready_for_review",
|
|
33
|
+
label: "Pull request ready for review"
|
|
34
|
+
}]
|
|
35
|
+
} } },
|
|
36
|
+
args: {
|
|
37
|
+
repository: {
|
|
38
|
+
type: "repo-picker",
|
|
39
|
+
label: "Repository",
|
|
40
|
+
help: "The repository whose pull requests will be QA'd.",
|
|
41
|
+
provider: "github",
|
|
42
|
+
required: !0
|
|
43
|
+
},
|
|
44
|
+
ref: {
|
|
45
|
+
type: "text",
|
|
46
|
+
label: "Base branch",
|
|
47
|
+
help: "Branch checked out when the agent runs QA.",
|
|
48
|
+
default: "main",
|
|
49
|
+
required: !0,
|
|
50
|
+
constraints: {
|
|
51
|
+
minLength: 1,
|
|
52
|
+
maxLength: 255
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
prompt: "A pull request was opened or marked ready for review in {{form.repository}}. Before doing any QA work, run these gate checks and stop immediately (making no changes) if any fails:\n\n1. The PR must not be a draft — it must be open for review. If the PR is a draft, stop.\n2. The PR author (the human who opened it) must have more than 3 commits already merged into the {{form.ref}} branch. Use the GitHub API to count the author's commits in {{form.ref}}. If the count is 3 or fewer, stop without making any changes.\n3. The PR description must not already contain a section named QA Agent (i.e., a header like ## QA Agent or ### QA Agent). If that section already exists, stop without making any changes or starting a conversation.\n\nIf all gate checks pass, proceed with the QA validation using the /qa-changes skill methodology:\n\n- Phase 1: Understand the change. Read the PR diff, title, and description. Identify the goal of the PR. Classify every changed file. Form a hypothesis about what the PR should achieve.\n- Phase 2: Set up the environment. Read the repo's bootstrap instructions, install dependencies, and build if needed. Note CI status but do not re-run tests.\n- Phase 3: Exercise the changed behavior. Actually run the software the way a real user would — start servers, run CLI commands, make HTTP requests, open browsers. Do NOT run the test suite, linters, or code analysis. For bug fixes, reproduce the bug before and after the fix. Show before/after evidence.\n- Phase 4: Report results.\n\nIMPORTANT — how to post your report:\nDo NOT post a new comment, review, or inline review comment. Instead, EDIT the PR description (the pull request body) to append your QA report at the very end, after a horizontal rule (---), under a new section titled QA Agent. Use the GitHub API (PATCH /repos/{owner}/{repo}/pulls/{pr_number} with a body field) to update the PR description. Append the following structure to the existing PR body:\n\n---\n\n## QA Agent\n\n{Your full QA report following the /qa-changes skill report format: verdict, summary, Does this PR achieve its stated goal? section, status table, collapsible evidence in details blocks, and issues found.}\n\nDo not make any other changes to the PR description — only append the QA Agent section at the end. Do not post any comments or reviews.",
|
|
58
|
+
filter: "!pull_request.draft && !icontains(pull_request.body, 'QA Agent') && glob(repository.full_name, '{{form.repository}}')",
|
|
59
|
+
message: "This deployment cannot run the webhook-driven QA automation directly. Set it up in this conversation instead: confirm the repository to QA, the base branch, and the PR event to trigger on, then create the automation."
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
//#endregion
|
|
63
|
+
export { e as default };
|
|
64
|
+
|
|
65
|
+
//# sourceMappingURL=manifest.js.map
|
package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","names":[],"sources":["../../../../../../../node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.json"],"sourcesContent":["{\n \"id\": \"qa-changes\",\n \"name\": \"QA Changes Agent\",\n \"category\": \"Code review\",\n \"description\": \"When a pull request is opened for review, run the QA changes methodology — set up the environment, exercise the changed behavior as a real user would, and post the outcome by editing the PR description with a QA Agent section.\",\n \"requires\": {\n \"integrations\": {\n \"github\": {\n \"message\": \"Used to read the pull request, check the author's commit history, and edit the PR description.\"\n }\n },\n \"features\": [\n \"repoClone\",\n \"presetPrompt\",\n \"webhookDelivery\"\n ]\n },\n \"popularityRank\": 85,\n \"estimatedSetupMinutes\": 5,\n \"skill\": \"qa-changes\",\n \"exampleImplementation\": \"Trigger: GitHub pull_request.opened and pull_request.ready_for_review events\\nRequired secret: GITHUB_TOKEN\\n\\n1. Receive a GitHub pull_request event (opened or ready_for_review).\\n2. Filter: the PR must not be a draft (draft == false), the PR description must not already contain a QA Agent section, and the PR author must have more than 3 commits already in main.\\n3. Start an OpenHands conversation that clones the repo, checks out the PR head, and runs the /qa-changes methodology: understand the change, set up the environment, exercise the changed behavior as a real user would.\\n4. Instead of posting a review comment, edit the PR description to append a horizontal rule followed by a QA Agent section containing the structured QA report.\",\n \"setup\": {\n \"version\": \"1.0\",\n \"mode\": \"direct\",\n \"form\": {\n \"triggers\": {\n \"event\": {\n \"on\": {\n \"type\": \"select\",\n \"label\": \"Trigger on\",\n \"help\": \"Which GitHub pull request event starts a QA run. Opened fires when a non-draft PR is created; Ready for review fires when a draft PR is marked ready.\",\n \"default\": \"pull_request.opened\",\n \"required\": true,\n \"options\": [\n {\n \"value\": \"pull_request.opened\",\n \"label\": \"Pull request opened\"\n },\n {\n \"value\": \"pull_request.ready_for_review\",\n \"label\": \"Pull request ready for review\"\n }\n ]\n }\n }\n },\n \"args\": {\n \"repository\": {\n \"type\": \"repo-picker\",\n \"label\": \"Repository\",\n \"help\": \"The repository whose pull requests will be QA'd.\",\n \"provider\": \"github\",\n \"required\": true\n },\n \"ref\": {\n \"type\": \"text\",\n \"label\": \"Base branch\",\n \"help\": \"Branch checked out when the agent runs QA.\",\n \"default\": \"main\",\n \"required\": true,\n \"constraints\": {\n \"minLength\": 1,\n \"maxLength\": 255\n }\n }\n }\n },\n \"prompt\": \"A pull request was opened or marked ready for review in {{form.repository}}. Before doing any QA work, run these gate checks and stop immediately (making no changes) if any fails:\\n\\n1. The PR must not be a draft — it must be open for review. If the PR is a draft, stop.\\n2. The PR author (the human who opened it) must have more than 3 commits already merged into the {{form.ref}} branch. Use the GitHub API to count the author's commits in {{form.ref}}. If the count is 3 or fewer, stop without making any changes.\\n3. The PR description must not already contain a section named QA Agent (i.e., a header like ## QA Agent or ### QA Agent). If that section already exists, stop without making any changes or starting a conversation.\\n\\nIf all gate checks pass, proceed with the QA validation using the /qa-changes skill methodology:\\n\\n- Phase 1: Understand the change. Read the PR diff, title, and description. Identify the goal of the PR. Classify every changed file. Form a hypothesis about what the PR should achieve.\\n- Phase 2: Set up the environment. Read the repo's bootstrap instructions, install dependencies, and build if needed. Note CI status but do not re-run tests.\\n- Phase 3: Exercise the changed behavior. Actually run the software the way a real user would — start servers, run CLI commands, make HTTP requests, open browsers. Do NOT run the test suite, linters, or code analysis. For bug fixes, reproduce the bug before and after the fix. Show before/after evidence.\\n- Phase 4: Report results.\\n\\nIMPORTANT — how to post your report:\\nDo NOT post a new comment, review, or inline review comment. Instead, EDIT the PR description (the pull request body) to append your QA report at the very end, after a horizontal rule (---), under a new section titled QA Agent. Use the GitHub API (PATCH /repos/{owner}/{repo}/pulls/{pr_number} with a body field) to update the PR description. Append the following structure to the existing PR body:\\n\\n---\\n\\n## QA Agent\\n\\n{Your full QA report following the /qa-changes skill report format: verdict, summary, Does this PR achieve its stated goal? section, status table, collapsible evidence in details blocks, and issues found.}\\n\\nDo not make any other changes to the PR description — only append the QA Agent section at the end. Do not post any comments or reviews.\",\n \"filter\": \"!pull_request.draft && !icontains(pull_request.body, 'QA Agent') && glob(repository.full_name, '{{form.repository}}')\",\n \"message\": \"This deployment cannot run the webhook-driven QA automation directly. Set it up in this conversation instead: confirm the repository to QA, the base branch, and the PR event to trigger on, then create the automation.\"\n }\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require("../../../../_virtual/_rolldown/runtime.cjs");const e=require("./catalog/github-pr-reviewer/manifest.cjs"),t=require("./catalog/github-repo-monitor/manifest.cjs"),n=require("./catalog/github-issue-to-pr/manifest.cjs"),r=require("./catalog/slack-standup-digest/manifest.cjs"),i=require("./catalog/slack-channel-monitor/manifest.cjs"),a=require("./catalog/linear-triage-assistant/manifest.cjs"),o=require("./catalog/
|
|
1
|
+
require("../../../../_virtual/_rolldown/runtime.cjs");const e=require("./catalog/github-pr-reviewer/manifest.cjs"),t=require("./catalog/github-repo-monitor/manifest.cjs"),n=require("./catalog/github-issue-to-pr/manifest.cjs"),r=require("./catalog/slack-standup-digest/manifest.cjs"),i=require("./catalog/slack-channel-monitor/manifest.cjs"),a=require("./catalog/linear-triage-assistant/manifest.cjs"),o=require("./catalog/linear-issue-to-github-pr/manifest.cjs"),s=require("./catalog/linear-issue-to-gitlab-mr/manifest.cjs"),c=require("./catalog/linear-issue-to-bitbucket-pr/manifest.cjs"),l=require("./catalog/jira-issue-to-pr/manifest.cjs"),u=require("./catalog/qa-changes/manifest.cjs"),d=require("./catalog/jira-issue-to-gitlab-mr/manifest.cjs"),f=require("./catalog/research-brief-writer/manifest.cjs"),p=require("./catalog/jira-issue-to-bitbucket-pr/manifest.cjs"),m=require("./catalog/github-agents-md-maintainer/manifest.cjs"),h=require("./catalog/upstream-fork-sync/manifest.cjs"),g=require("./catalog/incident-retrospective-drafter/manifest.cjs"),_=require("./catalog/news-digest/manifest.cjs");var v=[e.default,t.default,n.default,r.default,i.default,a.default,o.default,s.default,c.default,l.default,u.default,d.default,f.default,p.default,m.default,h.default,g.default,_.default];exports.AUTOMATION_CATALOG_ENTRIES=v;
|
|
2
2
|
//# sourceMappingURL=catalog-index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-index.cjs","names":["entry0","entry1","entry2","entry3","entry4","entry5","entry6","entry7","entry8","entry9","entry10","entry11"],"sources":["../../../../../node_modules/@openhands/extensions/automations/catalog-index.js"],"sourcesContent":["// This file is auto-generated by scripts/build-automation-catalog.mjs.\n// Do not edit it manually. To update it after changing automations/catalog/*/manifest.json,\n// run: npm run build:automations\n\nimport entry0 from \"./catalog/github-pr-reviewer/manifest.json\" with { type: \"json\" };\nimport entry1 from \"./catalog/github-repo-monitor/manifest.json\" with { type: \"json\" };\nimport entry2 from \"./catalog/github-issue-to-pr/manifest.json\" with { type: \"json\" };\nimport entry3 from \"./catalog/slack-standup-digest/manifest.json\" with { type: \"json\" };\nimport entry4 from \"./catalog/slack-channel-monitor/manifest.json\" with { type: \"json\" };\nimport entry5 from \"./catalog/linear-triage-assistant/manifest.json\" with { type: \"json\" };\nimport entry6 from \"./catalog/
|
|
1
|
+
{"version":3,"file":"catalog-index.cjs","names":["entry0","entry1","entry2","entry3","entry4","entry5","entry6","entry7","entry8","entry9","entry10","entry11","entry12","entry13","entry14","entry15","entry16","entry17"],"sources":["../../../../../node_modules/@openhands/extensions/automations/catalog-index.js"],"sourcesContent":["// This file is auto-generated by scripts/build-automation-catalog.mjs.\n// Do not edit it manually. To update it after changing automations/catalog/*/manifest.json,\n// run: npm run build:automations\n\nimport entry0 from \"./catalog/github-pr-reviewer/manifest.json\" with { type: \"json\" };\nimport entry1 from \"./catalog/github-repo-monitor/manifest.json\" with { type: \"json\" };\nimport entry2 from \"./catalog/github-issue-to-pr/manifest.json\" with { type: \"json\" };\nimport entry3 from \"./catalog/slack-standup-digest/manifest.json\" with { type: \"json\" };\nimport entry4 from \"./catalog/slack-channel-monitor/manifest.json\" with { type: \"json\" };\nimport entry5 from \"./catalog/linear-triage-assistant/manifest.json\" with { type: \"json\" };\nimport entry6 from \"./catalog/linear-issue-to-github-pr/manifest.json\" with { type: \"json\" };\nimport entry7 from \"./catalog/linear-issue-to-gitlab-mr/manifest.json\" with { type: \"json\" };\nimport entry8 from \"./catalog/linear-issue-to-bitbucket-pr/manifest.json\" with { type: \"json\" };\nimport entry9 from \"./catalog/jira-issue-to-pr/manifest.json\" with { type: \"json\" };\nimport entry10 from \"./catalog/qa-changes/manifest.json\" with { type: \"json\" };\nimport entry11 from \"./catalog/jira-issue-to-gitlab-mr/manifest.json\" with { type: \"json\" };\nimport entry12 from \"./catalog/research-brief-writer/manifest.json\" with { type: \"json\" };\nimport entry13 from \"./catalog/jira-issue-to-bitbucket-pr/manifest.json\" with { type: \"json\" };\nimport entry14 from \"./catalog/github-agents-md-maintainer/manifest.json\" with { type: \"json\" };\nimport entry15 from \"./catalog/upstream-fork-sync/manifest.json\" with { type: \"json\" };\nimport entry16 from \"./catalog/incident-retrospective-drafter/manifest.json\" with { type: \"json\" };\nimport entry17 from \"./catalog/news-digest/manifest.json\" with { type: \"json\" };\n\nexport const AUTOMATION_CATALOG_ENTRIES = [\n entry0,\n entry1,\n entry2,\n entry3,\n entry4,\n entry5,\n entry6,\n entry7,\n entry8,\n entry9,\n entry10,\n entry11,\n entry12,\n entry13,\n entry14,\n entry15,\n entry16,\n entry17,\n];\n"],"x_google_ignoreList":[0],"mappings":"ilCAuBA,IAAa,EAA6B,CACxCA,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,OACF"}
|
|
@@ -4,14 +4,20 @@ import n from "./catalog/github-issue-to-pr/manifest.js";
|
|
|
4
4
|
import r from "./catalog/slack-standup-digest/manifest.js";
|
|
5
5
|
import i from "./catalog/slack-channel-monitor/manifest.js";
|
|
6
6
|
import a from "./catalog/linear-triage-assistant/manifest.js";
|
|
7
|
-
import o from "./catalog/
|
|
8
|
-
import s from "./catalog/
|
|
9
|
-
import c from "./catalog/
|
|
10
|
-
import l from "./catalog/
|
|
11
|
-
import u from "./catalog/
|
|
12
|
-
import d from "./catalog/
|
|
7
|
+
import o from "./catalog/linear-issue-to-github-pr/manifest.js";
|
|
8
|
+
import s from "./catalog/linear-issue-to-gitlab-mr/manifest.js";
|
|
9
|
+
import c from "./catalog/linear-issue-to-bitbucket-pr/manifest.js";
|
|
10
|
+
import l from "./catalog/jira-issue-to-pr/manifest.js";
|
|
11
|
+
import u from "./catalog/qa-changes/manifest.js";
|
|
12
|
+
import d from "./catalog/jira-issue-to-gitlab-mr/manifest.js";
|
|
13
|
+
import f from "./catalog/research-brief-writer/manifest.js";
|
|
14
|
+
import p from "./catalog/jira-issue-to-bitbucket-pr/manifest.js";
|
|
15
|
+
import m from "./catalog/github-agents-md-maintainer/manifest.js";
|
|
16
|
+
import h from "./catalog/upstream-fork-sync/manifest.js";
|
|
17
|
+
import g from "./catalog/incident-retrospective-drafter/manifest.js";
|
|
18
|
+
import _ from "./catalog/news-digest/manifest.js";
|
|
13
19
|
//#region node_modules/@openhands/extensions/automations/catalog-index.js
|
|
14
|
-
var
|
|
20
|
+
var v = [
|
|
15
21
|
e,
|
|
16
22
|
t,
|
|
17
23
|
n,
|
|
@@ -23,9 +29,15 @@ var f = [
|
|
|
23
29
|
c,
|
|
24
30
|
l,
|
|
25
31
|
u,
|
|
26
|
-
d
|
|
32
|
+
d,
|
|
33
|
+
f,
|
|
34
|
+
p,
|
|
35
|
+
m,
|
|
36
|
+
h,
|
|
37
|
+
g,
|
|
38
|
+
_
|
|
27
39
|
];
|
|
28
40
|
//#endregion
|
|
29
|
-
export {
|
|
41
|
+
export { v as AUTOMATION_CATALOG_ENTRIES };
|
|
30
42
|
|
|
31
43
|
//# sourceMappingURL=catalog-index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-index.js","names":["entry0","entry1","entry2","entry3","entry4","entry5","entry6","entry7","entry8","entry9","entry10","entry11"],"sources":["../../../../../node_modules/@openhands/extensions/automations/catalog-index.js"],"sourcesContent":["// This file is auto-generated by scripts/build-automation-catalog.mjs.\n// Do not edit it manually. To update it after changing automations/catalog/*/manifest.json,\n// run: npm run build:automations\n\nimport entry0 from \"./catalog/github-pr-reviewer/manifest.json\" with { type: \"json\" };\nimport entry1 from \"./catalog/github-repo-monitor/manifest.json\" with { type: \"json\" };\nimport entry2 from \"./catalog/github-issue-to-pr/manifest.json\" with { type: \"json\" };\nimport entry3 from \"./catalog/slack-standup-digest/manifest.json\" with { type: \"json\" };\nimport entry4 from \"./catalog/slack-channel-monitor/manifest.json\" with { type: \"json\" };\nimport entry5 from \"./catalog/linear-triage-assistant/manifest.json\" with { type: \"json\" };\nimport entry6 from \"./catalog/
|
|
1
|
+
{"version":3,"file":"catalog-index.js","names":["entry0","entry1","entry2","entry3","entry4","entry5","entry6","entry7","entry8","entry9","entry10","entry11","entry12","entry13","entry14","entry15","entry16","entry17"],"sources":["../../../../../node_modules/@openhands/extensions/automations/catalog-index.js"],"sourcesContent":["// This file is auto-generated by scripts/build-automation-catalog.mjs.\n// Do not edit it manually. To update it after changing automations/catalog/*/manifest.json,\n// run: npm run build:automations\n\nimport entry0 from \"./catalog/github-pr-reviewer/manifest.json\" with { type: \"json\" };\nimport entry1 from \"./catalog/github-repo-monitor/manifest.json\" with { type: \"json\" };\nimport entry2 from \"./catalog/github-issue-to-pr/manifest.json\" with { type: \"json\" };\nimport entry3 from \"./catalog/slack-standup-digest/manifest.json\" with { type: \"json\" };\nimport entry4 from \"./catalog/slack-channel-monitor/manifest.json\" with { type: \"json\" };\nimport entry5 from \"./catalog/linear-triage-assistant/manifest.json\" with { type: \"json\" };\nimport entry6 from \"./catalog/linear-issue-to-github-pr/manifest.json\" with { type: \"json\" };\nimport entry7 from \"./catalog/linear-issue-to-gitlab-mr/manifest.json\" with { type: \"json\" };\nimport entry8 from \"./catalog/linear-issue-to-bitbucket-pr/manifest.json\" with { type: \"json\" };\nimport entry9 from \"./catalog/jira-issue-to-pr/manifest.json\" with { type: \"json\" };\nimport entry10 from \"./catalog/qa-changes/manifest.json\" with { type: \"json\" };\nimport entry11 from \"./catalog/jira-issue-to-gitlab-mr/manifest.json\" with { type: \"json\" };\nimport entry12 from \"./catalog/research-brief-writer/manifest.json\" with { type: \"json\" };\nimport entry13 from \"./catalog/jira-issue-to-bitbucket-pr/manifest.json\" with { type: \"json\" };\nimport entry14 from \"./catalog/github-agents-md-maintainer/manifest.json\" with { type: \"json\" };\nimport entry15 from \"./catalog/upstream-fork-sync/manifest.json\" with { type: \"json\" };\nimport entry16 from \"./catalog/incident-retrospective-drafter/manifest.json\" with { type: \"json\" };\nimport entry17 from \"./catalog/news-digest/manifest.json\" with { type: \"json\" };\n\nexport const AUTOMATION_CATALOG_ENTRIES = [\n entry0,\n entry1,\n entry2,\n entry3,\n entry4,\n entry5,\n entry6,\n entry7,\n entry8,\n entry9,\n entry10,\n entry11,\n entry12,\n entry13,\n entry14,\n entry15,\n entry16,\n entry17,\n];\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;;;;AAuBA,IAAa,IAA6B;CACxCA;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;AACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require("../../../../../_virtual/_rolldown/runtime.cjs");var e={id:`datadog`,name:`Datadog`,description:`Logs, metrics, monitors, incidents, and observability workflows.`,categories:[`Observability`,`Operations`],appUrl:`https://www.datadoghq.com`,docsUrl:`https://docs.datadoghq.com/mcp_server/setup/`,notes:`Uses Datadog's official hosted MCP server. The MCP endpoint host is site-specific: use https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (e.g. mcp.us5.datadoghq.com for US5). The default URL below targets US1 and can be edited in the install dialog.`,popularityRank:35,installHint:`The Datadog MCP URL is site-specific. Edit the URL to https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (for example https://mcp.us5.datadoghq.com/v1/mcp for US5, https://mcp.eu.datadoghq.com/v1/mcp for EU). Find your site at Organization Settings → Site in Datadog.`,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://app.datadoghq.com/oauth2/v1/authorize`,tokenUrl:`https://api.datadoghq.com/oauth2/v1/token`,scopes:[`dashboards_read`,`monitors_read`]}},transport:{kind:`shttp`,url:`https://mcp.datadoghq.com/v1/mcp`}},{id:`api`,provider:`mcp`,auth:{strategy:`none`},transport:{kind:`shttp`,url:`https://mcp.datadoghq.com/v1/mcp`,urlEditable:!0,headerFields:[{key:`
|
|
1
|
+
require("../../../../../_virtual/_rolldown/runtime.cjs");var e={id:`datadog`,name:`Datadog`,description:`Logs, metrics, monitors, incidents, and observability workflows.`,categories:[`Observability`,`Operations`],appUrl:`https://www.datadoghq.com`,docsUrl:`https://docs.datadoghq.com/mcp_server/setup/`,notes:`Uses Datadog's official hosted MCP server. The MCP endpoint host is site-specific: use https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (e.g. mcp.us5.datadoghq.com for US5). The default URL below targets US1 and can be edited in the install dialog.`,popularityRank:35,installHint:`The Datadog MCP URL is site-specific. Edit the URL to https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (for example https://mcp.us5.datadoghq.com/v1/mcp for US5, https://mcp.eu.datadoghq.com/v1/mcp for EU). Find your site at Organization Settings → Site in Datadog.`,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://app.datadoghq.com/oauth2/v1/authorize`,tokenUrl:`https://api.datadoghq.com/oauth2/v1/token`,scopes:[`dashboards_read`,`monitors_read`]}},transport:{kind:`shttp`,url:`https://mcp.datadoghq.com/v1/mcp`}},{id:`api`,provider:`mcp`,auth:{strategy:`none`},transport:{kind:`shttp`,url:`https://mcp.datadoghq.com/v1/mcp`,urlEditable:!0,headerFields:[{key:`DD-API-KEY`,label:`Datadog API key`,type:`password`,required:!0,placeholder:`xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,helperText:`Created in Datadog under Organization Settings → API Keys. Used to authenticate to the Datadog MCP server. See the [setup docs](https://docs.datadoghq.com/mcp_server/setup/?tab=other#authentication).`},{key:`DD-APPLICATION-KEY`,label:`Datadog Application key`,type:`password`,required:!0,placeholder:`xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,helperText:`Created in Datadog under Organization Settings → Application Keys. Grants the MCP server access to your Datadog data. See the [setup docs](https://docs.datadoghq.com/mcp_server/setup/?tab=other#authentication).`}]}}]};exports.default=e;
|
|
2
2
|
//# sourceMappingURL=datadog.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datadog.cjs","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/datadog.json"],"sourcesContent":["{\n \"id\": \"datadog\",\n \"name\": \"Datadog\",\n \"description\": \"Logs, metrics, monitors, incidents, and observability workflows.\",\n \"categories\": [\n \"Observability\",\n \"Operations\"\n ],\n \"appUrl\": \"https://www.datadoghq.com\",\n \"docsUrl\": \"https://docs.datadoghq.com/mcp_server/setup/\",\n \"notes\": \"Uses Datadog's official hosted MCP server. The MCP endpoint host is site-specific: use https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (e.g. mcp.us5.datadoghq.com for US5). The default URL below targets US1 and can be edited in the install dialog.\",\n \"popularityRank\": 35,\n \"installHint\": \"The Datadog MCP URL is site-specific. Edit the URL to https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (for example https://mcp.us5.datadoghq.com/v1/mcp for US5, https://mcp.eu.datadoghq.com/v1/mcp for EU). Find your site at Organization Settings → Site in Datadog.\",\n \"connectionOptions\": [\n {\n \"id\": \"oauth\",\n \"provider\": \"mcp\",\n \"auth\": {\n \"strategy\": \"oauth2\",\n \"oauth\": {\n \"authorizationUrl\": \"https://app.datadoghq.com/oauth2/v1/authorize\",\n \"tokenUrl\": \"https://api.datadoghq.com/oauth2/v1/token\",\n \"scopes\": [\n \"dashboards_read\",\n \"monitors_read\"\n ]\n }\n },\n \"transport\": {\n \"kind\": \"shttp\",\n \"url\": \"https://mcp.datadoghq.com/v1/mcp\"\n }\n },\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"auth\": {\n \"strategy\": \"none\"\n },\n \"transport\": {\n \"kind\": \"shttp\",\n \"url\": \"https://mcp.datadoghq.com/v1/mcp\",\n \"urlEditable\": true,\n \"headerFields\": [\n {\n \"key\": \"
|
|
1
|
+
{"version":3,"file":"datadog.cjs","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/datadog.json"],"sourcesContent":["{\n \"id\": \"datadog\",\n \"name\": \"Datadog\",\n \"description\": \"Logs, metrics, monitors, incidents, and observability workflows.\",\n \"categories\": [\n \"Observability\",\n \"Operations\"\n ],\n \"appUrl\": \"https://www.datadoghq.com\",\n \"docsUrl\": \"https://docs.datadoghq.com/mcp_server/setup/\",\n \"notes\": \"Uses Datadog's official hosted MCP server. The MCP endpoint host is site-specific: use https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (e.g. mcp.us5.datadoghq.com for US5). The default URL below targets US1 and can be edited in the install dialog.\",\n \"popularityRank\": 35,\n \"installHint\": \"The Datadog MCP URL is site-specific. Edit the URL to https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (for example https://mcp.us5.datadoghq.com/v1/mcp for US5, https://mcp.eu.datadoghq.com/v1/mcp for EU). Find your site at Organization Settings → Site in Datadog.\",\n \"connectionOptions\": [\n {\n \"id\": \"oauth\",\n \"provider\": \"mcp\",\n \"auth\": {\n \"strategy\": \"oauth2\",\n \"oauth\": {\n \"authorizationUrl\": \"https://app.datadoghq.com/oauth2/v1/authorize\",\n \"tokenUrl\": \"https://api.datadoghq.com/oauth2/v1/token\",\n \"scopes\": [\n \"dashboards_read\",\n \"monitors_read\"\n ]\n }\n },\n \"transport\": {\n \"kind\": \"shttp\",\n \"url\": \"https://mcp.datadoghq.com/v1/mcp\"\n }\n },\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"auth\": {\n \"strategy\": \"none\"\n },\n \"transport\": {\n \"kind\": \"shttp\",\n \"url\": \"https://mcp.datadoghq.com/v1/mcp\",\n \"urlEditable\": true,\n \"headerFields\": [\n {\n \"key\": \"DD-API-KEY\",\n \"label\": \"Datadog API key\",\n \"type\": \"password\",\n \"required\": true,\n \"placeholder\": \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n \"helperText\": \"Created in Datadog under Organization Settings → API Keys. Used to authenticate to the Datadog MCP server. See the [setup docs](https://docs.datadoghq.com/mcp_server/setup/?tab=other#authentication).\"\n },\n {\n \"key\": \"DD-APPLICATION-KEY\",\n \"label\": \"Datadog Application key\",\n \"type\": \"password\",\n \"required\": true,\n \"placeholder\": \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n \"helperText\": \"Created in Datadog under Organization Settings → Application Keys. Grants the MCP server access to your Datadog data. See the [setup docs](https://docs.datadoghq.com/mcp_server/setup/?tab=other#authentication).\"\n }\n ]\n }\n }\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -32,14 +32,14 @@ var e = {
|
|
|
32
32
|
url: "https://mcp.datadoghq.com/v1/mcp",
|
|
33
33
|
urlEditable: !0,
|
|
34
34
|
headerFields: [{
|
|
35
|
-
key: "
|
|
35
|
+
key: "DD-API-KEY",
|
|
36
36
|
label: "Datadog API key",
|
|
37
37
|
type: "password",
|
|
38
38
|
required: !0,
|
|
39
39
|
placeholder: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
|
40
40
|
helperText: "Created in Datadog under Organization Settings → API Keys. Used to authenticate to the Datadog MCP server. See the [setup docs](https://docs.datadoghq.com/mcp_server/setup/?tab=other#authentication)."
|
|
41
41
|
}, {
|
|
42
|
-
key: "
|
|
42
|
+
key: "DD-APPLICATION-KEY",
|
|
43
43
|
label: "Datadog Application key",
|
|
44
44
|
type: "password",
|
|
45
45
|
required: !0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datadog.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/datadog.json"],"sourcesContent":["{\n \"id\": \"datadog\",\n \"name\": \"Datadog\",\n \"description\": \"Logs, metrics, monitors, incidents, and observability workflows.\",\n \"categories\": [\n \"Observability\",\n \"Operations\"\n ],\n \"appUrl\": \"https://www.datadoghq.com\",\n \"docsUrl\": \"https://docs.datadoghq.com/mcp_server/setup/\",\n \"notes\": \"Uses Datadog's official hosted MCP server. The MCP endpoint host is site-specific: use https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (e.g. mcp.us5.datadoghq.com for US5). The default URL below targets US1 and can be edited in the install dialog.\",\n \"popularityRank\": 35,\n \"installHint\": \"The Datadog MCP URL is site-specific. Edit the URL to https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (for example https://mcp.us5.datadoghq.com/v1/mcp for US5, https://mcp.eu.datadoghq.com/v1/mcp for EU). Find your site at Organization Settings → Site in Datadog.\",\n \"connectionOptions\": [\n {\n \"id\": \"oauth\",\n \"provider\": \"mcp\",\n \"auth\": {\n \"strategy\": \"oauth2\",\n \"oauth\": {\n \"authorizationUrl\": \"https://app.datadoghq.com/oauth2/v1/authorize\",\n \"tokenUrl\": \"https://api.datadoghq.com/oauth2/v1/token\",\n \"scopes\": [\n \"dashboards_read\",\n \"monitors_read\"\n ]\n }\n },\n \"transport\": {\n \"kind\": \"shttp\",\n \"url\": \"https://mcp.datadoghq.com/v1/mcp\"\n }\n },\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"auth\": {\n \"strategy\": \"none\"\n },\n \"transport\": {\n \"kind\": \"shttp\",\n \"url\": \"https://mcp.datadoghq.com/v1/mcp\",\n \"urlEditable\": true,\n \"headerFields\": [\n {\n \"key\": \"
|
|
1
|
+
{"version":3,"file":"datadog.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/datadog.json"],"sourcesContent":["{\n \"id\": \"datadog\",\n \"name\": \"Datadog\",\n \"description\": \"Logs, metrics, monitors, incidents, and observability workflows.\",\n \"categories\": [\n \"Observability\",\n \"Operations\"\n ],\n \"appUrl\": \"https://www.datadoghq.com\",\n \"docsUrl\": \"https://docs.datadoghq.com/mcp_server/setup/\",\n \"notes\": \"Uses Datadog's official hosted MCP server. The MCP endpoint host is site-specific: use https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (e.g. mcp.us5.datadoghq.com for US5). The default URL below targets US1 and can be edited in the install dialog.\",\n \"popularityRank\": 35,\n \"installHint\": \"The Datadog MCP URL is site-specific. Edit the URL to https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (for example https://mcp.us5.datadoghq.com/v1/mcp for US5, https://mcp.eu.datadoghq.com/v1/mcp for EU). Find your site at Organization Settings → Site in Datadog.\",\n \"connectionOptions\": [\n {\n \"id\": \"oauth\",\n \"provider\": \"mcp\",\n \"auth\": {\n \"strategy\": \"oauth2\",\n \"oauth\": {\n \"authorizationUrl\": \"https://app.datadoghq.com/oauth2/v1/authorize\",\n \"tokenUrl\": \"https://api.datadoghq.com/oauth2/v1/token\",\n \"scopes\": [\n \"dashboards_read\",\n \"monitors_read\"\n ]\n }\n },\n \"transport\": {\n \"kind\": \"shttp\",\n \"url\": \"https://mcp.datadoghq.com/v1/mcp\"\n }\n },\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"auth\": {\n \"strategy\": \"none\"\n },\n \"transport\": {\n \"kind\": \"shttp\",\n \"url\": \"https://mcp.datadoghq.com/v1/mcp\",\n \"urlEditable\": true,\n \"headerFields\": [\n {\n \"key\": \"DD-API-KEY\",\n \"label\": \"Datadog API key\",\n \"type\": \"password\",\n \"required\": true,\n \"placeholder\": \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n \"helperText\": \"Created in Datadog under Organization Settings → API Keys. Used to authenticate to the Datadog MCP server. See the [setup docs](https://docs.datadoghq.com/mcp_server/setup/?tab=other#authentication).\"\n },\n {\n \"key\": \"DD-APPLICATION-KEY\",\n \"label\": \"Datadog Application key\",\n \"type\": \"password\",\n \"required\": true,\n \"placeholder\": \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n \"helperText\": \"Created in Datadog under Organization Settings → Application Keys. Grants the MCP server access to your Datadog data. See the [setup docs](https://docs.datadoghq.com/mcp_server/setup/?tab=other#authentication).\"\n }\n ]\n }\n }\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
require("../../../../../_virtual/_rolldown/runtime.cjs");var e={id:`gitlab`,name:`GitLab`,description:`Repositories, issues, merge requests, and CI/CD workflows through the GitLab API.`,categories:[`Engineering`,`Source control`],appUrl:`https://gitlab.com`,docsUrl:`https://docs.gitlab.com/api/`,notes:`Supports GitLab.com projects through a personal access token.`,popularityRank:60,connectionOptions:[{id:`api`,provider:`http`,auth:{strategy:`api_key`,apiKeyHeaderName:`PRIVATE-TOKEN`,credentialLabel:`Personal access token`,credentialPlaceholder:`glpat-...`,credentialHelp:`Create a token in [GitLab access token settings](https://gitlab.com/-/user_settings/personal_access_tokens) with the api scope.`,credentialSecretName:`GITLAB_TOKEN`,saveCredentialAsSecretByDefault:!0},http:{apiBaseUrl:`https://gitlab.com/api/v4`,openApiUrl:`https://gitlab.com/gitlab-org/gitlab/-/raw/master/doc/api/openapi/openapi_v2.yaml`}}],iconBg:`var(--oh-surface)`,logoUrl:`https://cdn.simpleicons.org/gitlab/FC6D26`,keywords:[`git`,`merge request`,`repo`,`issues`,`code`]};exports.default=e;
|
|
2
|
+
//# sourceMappingURL=gitlab.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitlab.cjs","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/gitlab.json"],"sourcesContent":["{\n \"id\": \"gitlab\",\n \"name\": \"GitLab\",\n \"description\": \"Repositories, issues, merge requests, and CI/CD workflows through the GitLab API.\",\n \"categories\": [\n \"Engineering\",\n \"Source control\"\n ],\n \"appUrl\": \"https://gitlab.com\",\n \"docsUrl\": \"https://docs.gitlab.com/api/\",\n \"notes\": \"Supports GitLab.com projects through a personal access token.\",\n \"popularityRank\": 60,\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"http\",\n \"auth\": {\n \"strategy\": \"api_key\",\n \"apiKeyHeaderName\": \"PRIVATE-TOKEN\",\n \"credentialLabel\": \"Personal access token\",\n \"credentialPlaceholder\": \"glpat-...\",\n \"credentialHelp\": \"Create a token in [GitLab access token settings](https://gitlab.com/-/user_settings/personal_access_tokens) with the api scope.\",\n \"credentialSecretName\": \"GITLAB_TOKEN\",\n \"saveCredentialAsSecretByDefault\": true\n },\n \"http\": {\n \"apiBaseUrl\": \"https://gitlab.com/api/v4\",\n \"openApiUrl\": \"https://gitlab.com/gitlab-org/gitlab/-/raw/master/doc/api/openapi/openapi_v2.yaml\"\n }\n }\n ],\n \"iconBg\": \"var(--oh-surface)\",\n \"logoUrl\": \"https://cdn.simpleicons.org/gitlab/FC6D26\",\n \"keywords\": [\n \"git\",\n \"merge request\",\n \"repo\",\n \"issues\",\n \"code\"\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
var e = {
|
|
2
|
+
id: "gitlab",
|
|
3
|
+
name: "GitLab",
|
|
4
|
+
description: "Repositories, issues, merge requests, and CI/CD workflows through the GitLab API.",
|
|
5
|
+
categories: ["Engineering", "Source control"],
|
|
6
|
+
appUrl: "https://gitlab.com",
|
|
7
|
+
docsUrl: "https://docs.gitlab.com/api/",
|
|
8
|
+
notes: "Supports GitLab.com projects through a personal access token.",
|
|
9
|
+
popularityRank: 60,
|
|
10
|
+
connectionOptions: [{
|
|
11
|
+
id: "api",
|
|
12
|
+
provider: "http",
|
|
13
|
+
auth: {
|
|
14
|
+
strategy: "api_key",
|
|
15
|
+
apiKeyHeaderName: "PRIVATE-TOKEN",
|
|
16
|
+
credentialLabel: "Personal access token",
|
|
17
|
+
credentialPlaceholder: "glpat-...",
|
|
18
|
+
credentialHelp: "Create a token in [GitLab access token settings](https://gitlab.com/-/user_settings/personal_access_tokens) with the api scope.",
|
|
19
|
+
credentialSecretName: "GITLAB_TOKEN",
|
|
20
|
+
saveCredentialAsSecretByDefault: !0
|
|
21
|
+
},
|
|
22
|
+
http: {
|
|
23
|
+
apiBaseUrl: "https://gitlab.com/api/v4",
|
|
24
|
+
openApiUrl: "https://gitlab.com/gitlab-org/gitlab/-/raw/master/doc/api/openapi/openapi_v2.yaml"
|
|
25
|
+
}
|
|
26
|
+
}],
|
|
27
|
+
iconBg: "var(--oh-surface)",
|
|
28
|
+
logoUrl: "https://cdn.simpleicons.org/gitlab/FC6D26",
|
|
29
|
+
keywords: [
|
|
30
|
+
"git",
|
|
31
|
+
"merge request",
|
|
32
|
+
"repo",
|
|
33
|
+
"issues",
|
|
34
|
+
"code"
|
|
35
|
+
]
|
|
36
|
+
};
|
|
37
|
+
//#endregion
|
|
38
|
+
export { e as default };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=gitlab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitlab.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/gitlab.json"],"sourcesContent":["{\n \"id\": \"gitlab\",\n \"name\": \"GitLab\",\n \"description\": \"Repositories, issues, merge requests, and CI/CD workflows through the GitLab API.\",\n \"categories\": [\n \"Engineering\",\n \"Source control\"\n ],\n \"appUrl\": \"https://gitlab.com\",\n \"docsUrl\": \"https://docs.gitlab.com/api/\",\n \"notes\": \"Supports GitLab.com projects through a personal access token.\",\n \"popularityRank\": 60,\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"http\",\n \"auth\": {\n \"strategy\": \"api_key\",\n \"apiKeyHeaderName\": \"PRIVATE-TOKEN\",\n \"credentialLabel\": \"Personal access token\",\n \"credentialPlaceholder\": \"glpat-...\",\n \"credentialHelp\": \"Create a token in [GitLab access token settings](https://gitlab.com/-/user_settings/personal_access_tokens) with the api scope.\",\n \"credentialSecretName\": \"GITLAB_TOKEN\",\n \"saveCredentialAsSecretByDefault\": true\n },\n \"http\": {\n \"apiBaseUrl\": \"https://gitlab.com/api/v4\",\n \"openApiUrl\": \"https://gitlab.com/gitlab-org/gitlab/-/raw/master/doc/api/openapi/openapi_v2.yaml\"\n }\n }\n ],\n \"iconBg\": \"var(--oh-surface)\",\n \"logoUrl\": \"https://cdn.simpleicons.org/gitlab/FC6D26\",\n \"keywords\": [\n \"git\",\n \"merge request\",\n \"repo\",\n \"issues\",\n \"code\"\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require("../../../../../_virtual/_rolldown/runtime.cjs");var e={id:`notion`,name:`Notion`,description:`Read and edit Notion pages, databases, and blocks via Notion's MCP server.`,categories:[`Knowledge base`,`Documentation`],appUrl:`https://www.notion.so`,docsUrl:`https://developers.notion.com/docs/mcp`,popularityRank:82,connectionOptions:[{id:`oauth`,provider:`http`,connectionModel:{principalType:`user`,credentialScope:`resource`,resourceType:`workspace`,resourceCardinality:`one`,selectionMode:`automatic`,identityMapping:{source:`oauth_token_response`,externalPrincipalIdPath:`owner.user.id`,externalResourceIdPath:`workspace_id`,resourceNamePath:`workspace_name`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://api.notion.com/v1/oauth/authorize`,tokenUrl:`https://api.notion.com/v1/oauth/token`,scopes:[]}},http:{apiBaseUrl:`https://api.notion.com`,openApiUrl:`https://developers.notion.com/openapi.json`}},{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`notion`,command:`npx`,args:[`-y`,`@notionhq/notion-mcp-server`],envFields:[{key:`
|
|
1
|
+
require("../../../../../_virtual/_rolldown/runtime.cjs");var e={id:`notion`,name:`Notion`,description:`Read and edit Notion pages, databases, and blocks via Notion's MCP server.`,categories:[`Knowledge base`,`Documentation`],appUrl:`https://www.notion.so`,docsUrl:`https://developers.notion.com/docs/mcp`,popularityRank:82,connectionOptions:[{id:`oauth`,provider:`http`,connectionModel:{principalType:`user`,credentialScope:`resource`,resourceType:`workspace`,resourceCardinality:`one`,selectionMode:`automatic`,identityMapping:{source:`oauth_token_response`,externalPrincipalIdPath:`owner.user.id`,externalResourceIdPath:`workspace_id`,resourceNamePath:`workspace_name`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://api.notion.com/v1/oauth/authorize`,tokenUrl:`https://api.notion.com/v1/oauth/token`,scopes:[]}},http:{apiBaseUrl:`https://api.notion.com`,openApiUrl:`https://developers.notion.com/openapi.json`}},{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`notion`,command:`npx`,args:[`-y`,`@notionhq/notion-mcp-server`],envFields:[{key:`NOTION_TOKEN`,label:`Internal integration token`,type:`password`,placeholder:`ntn_...`,required:!0,helperText:`Internal integration token from your Notion integrations page.`,helperLink:`https://www.notion.so/profile/integrations`}]},auth:{strategy:`api_key`}}],iconBg:`#FFFFFF`,logoUrl:`https://cdn.simpleicons.org/notion/000000`,iconColor:`#000000`,keywords:[`docs`,`notes`,`wiki`,`knowledge base`]};exports.default=e;
|
|
2
2
|
//# sourceMappingURL=notion.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notion.cjs","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/notion.json"],"sourcesContent":["{\n \"id\": \"notion\",\n \"name\": \"Notion\",\n \"description\": \"Read and edit Notion pages, databases, and blocks via Notion's MCP server.\",\n \"categories\": [\n \"Knowledge base\",\n \"Documentation\"\n ],\n \"appUrl\": \"https://www.notion.so\",\n \"docsUrl\": \"https://developers.notion.com/docs/mcp\",\n \"popularityRank\": 82,\n \"connectionOptions\": [\n {\n \"id\": \"oauth\",\n \"provider\": \"http\",\n \"connectionModel\": {\n \"principalType\": \"user\",\n \"credentialScope\": \"resource\",\n \"resourceType\": \"workspace\",\n \"resourceCardinality\": \"one\",\n \"selectionMode\": \"automatic\",\n \"identityMapping\": {\n \"source\": \"oauth_token_response\",\n \"externalPrincipalIdPath\": \"owner.user.id\",\n \"externalResourceIdPath\": \"workspace_id\",\n \"resourceNamePath\": \"workspace_name\"\n }\n },\n \"auth\": {\n \"strategy\": \"oauth2\",\n \"oauth\": {\n \"authorizationUrl\": \"https://api.notion.com/v1/oauth/authorize\",\n \"tokenUrl\": \"https://api.notion.com/v1/oauth/token\",\n \"scopes\": []\n }\n },\n \"http\": {\n \"apiBaseUrl\": \"https://api.notion.com\",\n \"openApiUrl\": \"https://developers.notion.com/openapi.json\"\n }\n },\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"notion\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"@notionhq/notion-mcp-server\"\n ],\n \"envFields\": [\n {\n \"key\": \"
|
|
1
|
+
{"version":3,"file":"notion.cjs","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/notion.json"],"sourcesContent":["{\n \"id\": \"notion\",\n \"name\": \"Notion\",\n \"description\": \"Read and edit Notion pages, databases, and blocks via Notion's MCP server.\",\n \"categories\": [\n \"Knowledge base\",\n \"Documentation\"\n ],\n \"appUrl\": \"https://www.notion.so\",\n \"docsUrl\": \"https://developers.notion.com/docs/mcp\",\n \"popularityRank\": 82,\n \"connectionOptions\": [\n {\n \"id\": \"oauth\",\n \"provider\": \"http\",\n \"connectionModel\": {\n \"principalType\": \"user\",\n \"credentialScope\": \"resource\",\n \"resourceType\": \"workspace\",\n \"resourceCardinality\": \"one\",\n \"selectionMode\": \"automatic\",\n \"identityMapping\": {\n \"source\": \"oauth_token_response\",\n \"externalPrincipalIdPath\": \"owner.user.id\",\n \"externalResourceIdPath\": \"workspace_id\",\n \"resourceNamePath\": \"workspace_name\"\n }\n },\n \"auth\": {\n \"strategy\": \"oauth2\",\n \"oauth\": {\n \"authorizationUrl\": \"https://api.notion.com/v1/oauth/authorize\",\n \"tokenUrl\": \"https://api.notion.com/v1/oauth/token\",\n \"scopes\": []\n }\n },\n \"http\": {\n \"apiBaseUrl\": \"https://api.notion.com\",\n \"openApiUrl\": \"https://developers.notion.com/openapi.json\"\n }\n },\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"notion\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"@notionhq/notion-mcp-server\"\n ],\n \"envFields\": [\n {\n \"key\": \"NOTION_TOKEN\",\n \"label\": \"Internal integration token\",\n \"type\": \"password\",\n \"placeholder\": \"ntn_...\",\n \"required\": true,\n \"helperText\": \"Internal integration token from your Notion integrations page.\",\n \"helperLink\": \"https://www.notion.so/profile/integrations\"\n }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ],\n \"iconBg\": \"#FFFFFF\",\n \"logoUrl\": \"https://cdn.simpleicons.org/notion/000000\",\n \"iconColor\": \"#000000\",\n \"keywords\": [\n \"docs\",\n \"notes\",\n \"wiki\",\n \"knowledge base\"\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notion.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/notion.json"],"sourcesContent":["{\n \"id\": \"notion\",\n \"name\": \"Notion\",\n \"description\": \"Read and edit Notion pages, databases, and blocks via Notion's MCP server.\",\n \"categories\": [\n \"Knowledge base\",\n \"Documentation\"\n ],\n \"appUrl\": \"https://www.notion.so\",\n \"docsUrl\": \"https://developers.notion.com/docs/mcp\",\n \"popularityRank\": 82,\n \"connectionOptions\": [\n {\n \"id\": \"oauth\",\n \"provider\": \"http\",\n \"connectionModel\": {\n \"principalType\": \"user\",\n \"credentialScope\": \"resource\",\n \"resourceType\": \"workspace\",\n \"resourceCardinality\": \"one\",\n \"selectionMode\": \"automatic\",\n \"identityMapping\": {\n \"source\": \"oauth_token_response\",\n \"externalPrincipalIdPath\": \"owner.user.id\",\n \"externalResourceIdPath\": \"workspace_id\",\n \"resourceNamePath\": \"workspace_name\"\n }\n },\n \"auth\": {\n \"strategy\": \"oauth2\",\n \"oauth\": {\n \"authorizationUrl\": \"https://api.notion.com/v1/oauth/authorize\",\n \"tokenUrl\": \"https://api.notion.com/v1/oauth/token\",\n \"scopes\": []\n }\n },\n \"http\": {\n \"apiBaseUrl\": \"https://api.notion.com\",\n \"openApiUrl\": \"https://developers.notion.com/openapi.json\"\n }\n },\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"notion\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"@notionhq/notion-mcp-server\"\n ],\n \"envFields\": [\n {\n \"key\": \"
|
|
1
|
+
{"version":3,"file":"notion.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/notion.json"],"sourcesContent":["{\n \"id\": \"notion\",\n \"name\": \"Notion\",\n \"description\": \"Read and edit Notion pages, databases, and blocks via Notion's MCP server.\",\n \"categories\": [\n \"Knowledge base\",\n \"Documentation\"\n ],\n \"appUrl\": \"https://www.notion.so\",\n \"docsUrl\": \"https://developers.notion.com/docs/mcp\",\n \"popularityRank\": 82,\n \"connectionOptions\": [\n {\n \"id\": \"oauth\",\n \"provider\": \"http\",\n \"connectionModel\": {\n \"principalType\": \"user\",\n \"credentialScope\": \"resource\",\n \"resourceType\": \"workspace\",\n \"resourceCardinality\": \"one\",\n \"selectionMode\": \"automatic\",\n \"identityMapping\": {\n \"source\": \"oauth_token_response\",\n \"externalPrincipalIdPath\": \"owner.user.id\",\n \"externalResourceIdPath\": \"workspace_id\",\n \"resourceNamePath\": \"workspace_name\"\n }\n },\n \"auth\": {\n \"strategy\": \"oauth2\",\n \"oauth\": {\n \"authorizationUrl\": \"https://api.notion.com/v1/oauth/authorize\",\n \"tokenUrl\": \"https://api.notion.com/v1/oauth/token\",\n \"scopes\": []\n }\n },\n \"http\": {\n \"apiBaseUrl\": \"https://api.notion.com\",\n \"openApiUrl\": \"https://developers.notion.com/openapi.json\"\n }\n },\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"notion\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"@notionhq/notion-mcp-server\"\n ],\n \"envFields\": [\n {\n \"key\": \"NOTION_TOKEN\",\n \"label\": \"Internal integration token\",\n \"type\": \"password\",\n \"placeholder\": \"ntn_...\",\n \"required\": true,\n \"helperText\": \"Internal integration token from your Notion integrations page.\",\n \"helperLink\": \"https://www.notion.so/profile/integrations\"\n }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ],\n \"iconBg\": \"#FFFFFF\",\n \"logoUrl\": \"https://cdn.simpleicons.org/notion/000000\",\n \"iconColor\": \"#000000\",\n \"keywords\": [\n \"docs\",\n \"notes\",\n \"wiki\",\n \"knowledge base\"\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|