@openhands/agent-canvas 1.18.0 → 1.20.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.
Files changed (420) hide show
  1. package/README.md +1 -1
  2. package/README.windows.md +2 -2
  3. package/build/assets/acp-providers-DOKcGeaV.js +1 -0
  4. package/build/assets/active-backend-context-BETEdaJl.js +2 -0
  5. package/build/assets/{agent-context-settings-D3peZkjX.js → agent-context-settings-Dir0loAn.js} +1 -1
  6. package/build/assets/{agent-profiles-service.api-DkeZaqIl.js → agent-profiles-service.api-CiMVQAIT.js} +1 -1
  7. package/build/assets/{agent-profiles-settings-7yMWYjGF.js → agent-profiles-settings-CT5owzRT.js} +1 -1
  8. package/build/assets/agent-server-conversation-service.api-BtOlitCD.js +88 -0
  9. package/build/assets/agent-settings-BnzyTgCb.js +2 -0
  10. package/build/assets/agent-settings-CeXj3xK-.js +1 -0
  11. package/build/assets/{alert-banner-eYyqvHL3.js → alert-banner-Ccx1Du6n.js} +1 -1
  12. package/build/assets/{api-key-entry-screen-CCBvBD8u.js → api-key-entry-screen-DXIuzBjY.js} +1 -1
  13. package/build/assets/{app-settings-BtYDs-Be.js → app-settings-DkIJVTKL.js} +1 -1
  14. package/build/assets/automation-detail-CF2SweVs.js +3 -0
  15. package/build/assets/automation-disabled-reason-QFtMrdOr.js +1 -0
  16. package/build/assets/{automation-export-BJsfi7n2.js → automation-export-CkvehhPF.js} +1 -1
  17. package/build/assets/{automation-git-sync-B7o_Nbl-.js → automation-git-sync-di4tBAyZ.js} +1 -1
  18. package/build/assets/automation-setup-route-FERj7WEe.js +3 -0
  19. package/build/assets/{automation-templates-Bb98r-kx.js → automation-templates-DlaCRvD-.js} +1 -1
  20. package/build/assets/automations-list-yK7ETmYP.js +1 -0
  21. package/build/assets/{back-nav-button-B2yBiVMB.js → back-nav-button-oDvIxpQ5.js} +1 -1
  22. package/build/assets/backend-form-modal-DzYf_arO.js +1 -0
  23. package/build/assets/{backend-synced-settings-badge-DLEp6cq7.js → backend-synced-settings-badge-DXDDHWX4.js} +1 -1
  24. package/build/assets/{badge-ehL-kgeO.js → badge-CDHZEVeN.js} +1 -1
  25. package/build/assets/{base-modal-C1a0TsSx.js → base-modal-CZq4kB_H.js} +1 -1
  26. package/build/assets/{brand-button-CUMfjb99.js → brand-button-CGUwj6zK.js} +1 -1
  27. package/build/assets/{browser-SE24Tk8g.js → browser-kY6jN61T.js} +2 -2
  28. package/build/assets/{browser-tab-HjJxHA0V.js → browser-tab-DFyZXsnB.js} +1 -1
  29. package/build/assets/{canvas-extension-page-BsUGBb1T.js → canvas-extension-page-DsGq1DtT.js} +1 -1
  30. package/build/assets/{canvas-extensions-C9Tm6s_E.js → canvas-extensions-Cb2Z0Hdc.js} +1 -1
  31. package/build/assets/{canvas-extensions-runtime-B8kxM4rO.js → canvas-extensions-runtime-DS6eT4nK.js} +1 -1
  32. package/build/assets/{chat-send-button-CGvc2wpE.js → chat-send-button-B6aVaD9V.js} +1 -1
  33. package/build/assets/{circle-plus-check-toggle-BDX_ctNs.js → circle-plus-check-toggle-ZOXpJ3I2.js} +1 -1
  34. package/build/assets/{cloud-funnel-analytics-D5uJ_4JE.js → cloud-funnel-analytics-BH_zxjiO.js} +1 -1
  35. package/build/assets/{cog-CAEugqtV.js → cog-DVZT1f0s.js} +1 -1
  36. package/build/assets/{command-menu-CQxs4mtX.js → command-menu-ImeHQ6c2.js} +1 -1
  37. package/build/assets/{commits-tab-D0xgjipP.js → commits-tab-B5SUF66c.js} +1 -1
  38. package/build/assets/{condenser-settings-D63NJRBT.js → condenser-settings-BlGOXEXM.js} +1 -1
  39. package/build/assets/{confirmation-modal-78sd9Vny.js → confirmation-modal-oN1EId79.js} +1 -1
  40. package/build/assets/{context-menu-list-item-Cm7-7Y-7.js → context-menu-list-item-DIm5xQg6.js} +1 -1
  41. package/build/assets/{conversation-B_nweu5p.js → conversation-9a53tdbO.js} +4 -4
  42. package/build/assets/conversation-XRsI28ZM.js +1 -0
  43. package/build/assets/conversation-panel-XRsI28ZM.js +1 -0
  44. package/build/assets/{conversation-state-store-9D_3P7q4.js → conversation-state-store-Br-eE-gg.js} +1 -1
  45. package/build/assets/{conversation-tab-empty-state-B3dpJXX0.js → conversation-tab-empty-state-BT1GrnKP.js} +1 -1
  46. package/build/assets/{copy-to-clipboard-button-B1ljgNxO.js → copy-to-clipboard-button-CvTHqY13.js} +1 -1
  47. package/build/assets/{device-verify-D5QRIS_x.js → device-verify-DX0xdNjo.js} +1 -1
  48. package/build/assets/{dropdown-classes-BGvOvW2_.js → dropdown-classes-DyyMaaXl.js} +1 -1
  49. package/build/assets/edit-automation-modal-bfD-5NIc.js +1 -0
  50. package/build/assets/empty-state-B5advKVW.js +1 -0
  51. package/build/assets/{entry.client-BMafTpjO.js → entry.client-D_2gnSyB.js} +2 -2
  52. package/build/assets/{enum-filter-dropdown-UNaom12H.js → enum-filter-dropdown-VAJp5mqh.js} +1 -1
  53. package/build/assets/{environment-switch-overlay-COibRUA-.js → environment-switch-overlay-C7x_yhEs.js} +1 -1
  54. package/build/assets/{error-state-Cf8LRuuY.js → error-state-BgYl7YeB.js} +1 -1
  55. package/build/assets/{extensions-hub-C_6ahIua.js → extensions-hub-DjhOed1I.js} +1 -1
  56. package/build/assets/{extensions-navigation-C5GfpzFe.js → extensions-navigation-Di-J2KUR.js} +1 -1
  57. package/build/assets/{files-tab-D5PPIWI1.js → files-tab-BNDp3e_x.js} +1 -1
  58. package/build/assets/{form-control-classes-Dbq-7YP_.js → form-control-classes-BVI_szaj.js} +1 -1
  59. package/build/assets/{get-git-path-jU2zjqIB.js → get-git-path-DOe6PM_a.js} +1 -1
  60. package/build/assets/git-repo-dropdown-1fZGYtYm.js +1 -0
  61. package/build/assets/{git-repo-dropdown-uxlFw2gn.js → git-repo-dropdown-DNlinQ7r.js} +1 -1
  62. package/build/assets/{highlighted-source-view-C7pAXrT0.js → highlighted-source-view-DPerL6tF.js} +1 -1
  63. package/build/assets/home-4lyLzYjG.js +1 -0
  64. package/build/assets/home-BGaB0EeK.js +1 -0
  65. package/build/assets/home-automation-run-tooltip-v5n7zXR0.js +1 -0
  66. package/build/assets/{home-store-DCbei3DX.js → home-store-roz1x6D5.js} +1 -1
  67. package/build/assets/{hooks-service-Dnmhqc0Z.js → hooks-service-tzRqtAlm.js} +1 -1
  68. package/build/assets/index-home-6Y_Y7kOo.js +1 -0
  69. package/build/assets/{install-server-modal-B81I-5OE.js → install-server-modal-DkMCfj0J.js} +1 -1
  70. package/build/assets/{key-O84CMFHb.js → key-DpfBWQbk.js} +1 -1
  71. package/build/assets/{launch-ZLxI4opd.js → launch-TrnYlJe6.js} +1 -1
  72. package/build/assets/link-external-B4gx3EeM.js +1 -0
  73. package/build/assets/llm-not-configured-banner-BdjItKQR.js +27 -0
  74. package/build/assets/{llm-settings-CODhjQzy.js → llm-settings-CUgt39uu.js} +1 -1
  75. package/build/assets/llm-settings-DEfw-fUJ.js +1 -0
  76. package/build/assets/{llm-subscription-service-CgIDc38n.js → llm-subscription-service-LGYVzyAc.js} +1 -1
  77. package/build/assets/{loading-spinner-BeLV0IXf.js → loading-spinner-BJc2J0Dw.js} +1 -1
  78. package/build/assets/{manage-backends-modal-cMXqCb-B.js → manage-backends-modal-CIjk0B2H.js} +1 -1
  79. package/build/assets/manifest-23d79467.js +1 -0
  80. package/build/assets/{manifest-subpage-layout-CVZgVKoY.js → manifest-subpage-layout-DGYRoP_8.js} +1 -1
  81. package/build/assets/{markdown-renderer-DyFl9-mL.js → markdown-renderer-DRpwRlNm.js} +1 -1
  82. package/build/assets/mcp-CoUOIGBF.js +1 -0
  83. package/build/assets/mcp-installed-servers-BW51n6PC.js +1 -0
  84. package/build/assets/mcp-marketplace-utils-BwEnDYqm.js +1 -0
  85. package/build/assets/mcp-page-hZ4aJjj_.js +9 -0
  86. package/build/assets/{messages-Bk1xhbU2.js → messages-WUb9Yh-p.js} +4 -4
  87. package/build/assets/{modal-body-C24WsdFb.js → modal-body-B_95ci1c.js} +1 -1
  88. package/build/assets/{modal-classes-B0b9eiL8.js → modal-classes-BPcBCWVj.js} +1 -1
  89. package/build/assets/{modal-close-button-DfqfB2Nj.js → modal-close-button-Cq3dma5u.js} +1 -1
  90. package/build/assets/onboarding-Cc4Av7bi.js +1 -0
  91. package/build/assets/{onboarding-modal-BT3Gx_sZ.js → onboarding-modal-DCFD4Dsa.js} +1 -1
  92. package/build/assets/{organization-service.api-B5CvmnYQ.js → organization-service.api-zhHpQU0t.js} +1 -1
  93. package/build/assets/parse-git-remote-url-BG8pcKL8.js +1 -0
  94. package/build/assets/{planner-tab-CstoOlAB.js → planner-tab-yISBVUKu.js} +1 -1
  95. package/build/assets/{plugins-management-service-5rqVPEGN.js → plugins-management-service-2oP6_tWr.js} +1 -1
  96. package/build/assets/{profiles-service.api-D1XKMgr0.js → profiles-service.api-B5thiTI3.js} +1 -1
  97. package/build/assets/{providers-XmZ9HM4Q.js → providers-Co9PsD0s.js} +1 -1
  98. package/build/assets/{proxy-XP6U1Dhv.js → proxy-BCCQUna8.js} +1 -1
  99. package/build/assets/recommended-automations-launcher-D1Do753p.js +1 -0
  100. package/build/assets/root-D1y82Lhg.js +2 -0
  101. package/build/assets/{root-layout-DUquNZTU.js → root-layout-cQTYEG2w.js} +2 -2
  102. package/build/assets/root-sEWn3ha1.css +1 -0
  103. package/build/assets/{schema-field-Y3F8JvXd.js → schema-field-DSi0d7a8.js} +1 -1
  104. package/build/assets/{sdk-section-page-CNZTLwH9.js → sdk-section-page-DCoI2dtd.js} +1 -1
  105. package/build/assets/{secret-form-9-BoGA40.js → secret-form-BDvzojzN.js} +1 -1
  106. package/build/assets/{secrets-service-BOIsfD9j.js → secrets-service-C3CNNEpY.js} +1 -1
  107. package/build/assets/{secrets-settings-CBJgFr42.js → secrets-settings-BKqfYQt5.js} +1 -1
  108. package/build/assets/{settings-D4hdToD4.js → settings-C8ZLONyx.js} +1 -1
  109. package/build/assets/{settings-dropdown-input-DBvsZ7-Q.js → settings-dropdown-input-Df_HXRk4.js} +1 -1
  110. package/build/assets/{settings-index-DeQphyBK.js → settings-index-BWvlGHg3.js} +1 -1
  111. package/build/assets/{settings-input-dVuzapBA.js → settings-input-B3i5U9GL.js} +1 -1
  112. package/build/assets/{settings-list-classes-DhAPuXm6.js → settings-list-classes-DbqcSiVW.js} +1 -1
  113. package/build/assets/{settings-modal-tHiJ8iYV.js → settings-modal-DHKJSBPL.js} +1 -1
  114. package/build/assets/{settings-nav-GAQjW1a-.js → settings-nav-BThjwLWD.js} +1 -1
  115. package/build/assets/{settings-service.api-C1vZH9Vh.js → settings-service.api-CYBTLGOd.js} +1 -1
  116. package/build/assets/{settings-switch-DDd1cQ8t.js → settings-switch-CI93Iozg.js} +1 -1
  117. package/build/assets/{shared-conversation-Cyg7m7ns.js → shared-conversation-C7OILS-U.js} +1 -1
  118. package/build/assets/{sidebar-layout-DH0E-5KW.js → sidebar-layout-Csb6Geq0.js} +1 -1
  119. package/build/assets/{sidebar-mobile-menu-toggle-CQ4iky__.js → sidebar-mobile-menu-toggle-B2xwXm4s.js} +1 -1
  120. package/build/assets/{sidebar-nav-link-oLQiKUBu.js → sidebar-nav-link-Xv7QEMVS.js} +1 -1
  121. package/build/assets/{sidebar-onboarding-checklist-storage-TfvNNnnr.js → sidebar-onboarding-checklist-storage-_zxMqHS0.js} +1 -1
  122. package/build/assets/{skill-card-pill-row-DfjIfj0K.js → skill-card-pill-row-CxOFySng.js} +1 -1
  123. package/build/assets/{skill-enablement-DXeaImBz.js → skill-enablement-BBKya60C.js} +1 -1
  124. package/build/assets/{skill-filter-DsNLmn76.js → skill-filter-BvtbD--b.js} +1 -1
  125. package/build/assets/{skill-icon-badge-0MK_68Nc.js → skill-icon-badge-CVxE42yg.js} +1 -1
  126. package/build/assets/{skill-scope-BE-H9TSZ.js → skill-scope-C0NxJnpT.js} +1 -1
  127. package/build/assets/{skills-plugins-vzSdxSk_.js → skills-plugins-BGjX4jve.js} +1 -1
  128. package/build/assets/{skills-settings-BiPOH9H9.js → skills-settings-d3ZwIjSP.js} +1 -1
  129. package/build/assets/{styled-tooltip-CejG0rqv.js → styled-tooltip-CknPQH4Y.js} +1 -1
  130. package/build/assets/{task-list-tab-OkZSqnTp.js → task-list-tab-CQisRcPh.js} +1 -1
  131. package/build/assets/{terminal-Dph60VFZ.js → terminal-Bs50gJPC.js} +1 -1
  132. package/build/assets/{toggle-switch-B2uXaAUS.js → toggle-switch-D3TBxlsc.js} +1 -1
  133. package/build/assets/trash-D1QMHInX.js +1 -0
  134. package/build/assets/{typography-DgcLGdHk.js → typography-BdAApXGl.js} +1 -1
  135. package/build/assets/{usage-tab-MCmNRAnR.js → usage-tab-ClVHAFJy.js} +1 -1
  136. package/build/assets/{use-acp-credential-form-ychoGqjC.js → use-acp-credential-form-GfqcTJl5.js} +1 -1
  137. package/build/assets/{use-activate-agent-profile-8L8Xdghy.js → use-activate-agent-profile-DO6SNPkK.js} +1 -1
  138. package/build/assets/{use-agent-profiles-Bi8hSkze.js → use-agent-profiles-YsBlt3tT.js} +1 -1
  139. package/build/assets/{use-automation-health-U99vvHxx.js → use-automation-health-CbQ9n-k7.js} +1 -1
  140. package/build/assets/{use-automation-permissions-Buus0R6h.js → use-automation-permissions-gFy-2VD0.js} +1 -1
  141. package/build/assets/{use-automations-Bq5hVuv0.js → use-automations-7_XBXHQK.js} +1 -1
  142. package/build/assets/{use-can-manage-org-profiles-MzIeEV8F.js → use-can-manage-org-profiles-Dt4YkPO7.js} +1 -1
  143. package/build/assets/{use-canvas-extensions-Ca9KoVEm.js → use-canvas-extensions-BhYQrtMK.js} +1 -1
  144. package/build/assets/{use-cloud-current-user-id-B4ZLUZSa.js → use-cloud-current-user-id-Dqw6qQUg.js} +1 -1
  145. package/build/assets/{use-config-l5tkDHyD.js → use-config-BJ_FJCjV.js} +1 -1
  146. package/build/assets/use-create-conversation-D15Px574.js +1 -0
  147. package/build/assets/use-create-secret-D_qPU88t.js +1 -0
  148. package/build/assets/{use-free-models-gCsJ5BV0.js → use-free-models-FAk2nngq.js} +1 -1
  149. package/build/assets/{use-get-secrets-CMTuWEp_.js → use-get-secrets-Pbo9jh2A.js} +1 -1
  150. package/build/assets/{use-llm-configured-Dl4zg8ht.js → use-llm-configured-DF9BYmIe.js} +1 -1
  151. package/build/assets/{use-llm-profiles-SWsuFmFu.js → use-llm-profiles-U4u1gzuk.js} +1 -1
  152. package/build/assets/use-manifest-capabilities-D81_YdAF.js +1 -0
  153. package/build/assets/{use-onboarding-completion-Xl63ZvzQ.js → use-onboarding-completion-C4W-m2Jk.js} +1 -1
  154. package/build/assets/{use-pinned-home-route-BXDIUaxQ.js → use-pinned-home-route-DByWTojw.js} +1 -1
  155. package/build/assets/{use-plugins-marketplace-BIIaPiaB.js → use-plugins-marketplace-CTRoukH0.js} +1 -1
  156. package/build/assets/{use-save-agent-profile-D-ZHHE94.js → use-save-agent-profile-xpHBxMZM.js} +1 -1
  157. package/build/assets/{use-save-settings-Dapkf4cC.js → use-save-settings-CmX41wlf.js} +1 -1
  158. package/build/assets/{use-settings-C2KKQKVC.js → use-settings-D69cw06D.js} +1 -1
  159. package/build/assets/{use-settings-nav-items-TOc0Rsfd.js → use-settings-nav-items-CVz0SnDr.js} +1 -1
  160. package/build/assets/use-tracking-BAFpgpgq.js +3 -0
  161. package/build/assets/{use-user-conversation-5UFqMoO4.js → use-user-conversation-BBDXUbOc.js} +1 -1
  162. package/build/assets/utils-CbjwNcR-.js +1 -0
  163. package/build/assets/{vendor~browser-hbU4u2Ag.js → vendor~browser-BZ-zIfb6.js} +1 -1
  164. package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~b0x1wrp2-DvZtOcoT.js +2 -0
  165. package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-CxhwKuAd.js → vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-BIjRfQ4u.js} +1 -1
  166. package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~inibp4qe-BBfdJIV9.js +48 -0
  167. package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-3eJ4ExtV.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-fgzdgvrL.js} +3579 -165
  168. package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-C7HiY4Ae.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-BqdU447s.js} +794 -227
  169. package/build/assets/{verification-settings-DdBpaVPz.js → verification-settings-BXspn27q.js} +1 -1
  170. package/build/index.html +4 -4
  171. package/build/locales/ar/openhands.json +18 -1
  172. package/build/locales/ca/openhands.json +18 -1
  173. package/build/locales/de/openhands.json +18 -1
  174. package/build/locales/en/openhands.json +18 -1
  175. package/build/locales/es/openhands.json +18 -1
  176. package/build/locales/fr/openhands.json +18 -1
  177. package/build/locales/it/openhands.json +18 -1
  178. package/build/locales/ja/openhands.json +18 -1
  179. package/build/locales/ko-KR/openhands.json +18 -1
  180. package/build/locales/no/openhands.json +18 -1
  181. package/build/locales/pt/openhands.json +18 -1
  182. package/build/locales/tr/openhands.json +18 -1
  183. package/build/locales/uk/openhands.json +18 -1
  184. package/build/locales/zh-CN/openhands.json +18 -1
  185. package/build/locales/zh-TW/openhands.json +18 -1
  186. package/config/defaults.json +3 -3
  187. package/dist/api/agent-profiles-service/profile-field-support.d.ts +2 -0
  188. package/dist/components/conversation-events/chat/event-content-helpers/get-skill-ready-content.cjs +3 -3
  189. package/dist/components/conversation-events/chat/event-content-helpers/get-skill-ready-content.cjs.map +1 -1
  190. package/dist/components/conversation-events/chat/event-content-helpers/get-skill-ready-content.js +12 -16
  191. package/dist/components/conversation-events/chat/event-content-helpers/get-skill-ready-content.js.map +1 -1
  192. package/dist/components/features/automations/agent-profile-selector.d.ts +7 -0
  193. package/dist/components/features/automations/detail/disabled-reason-banner.d.ts +16 -0
  194. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs +1 -1
  195. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs.map +1 -1
  196. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js +38 -29
  197. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js.map +1 -1
  198. package/dist/components/features/settings/agent-profiles/profile-scope-list.d.ts +20 -0
  199. package/dist/config/defaults.cjs +1 -1
  200. package/dist/config/defaults.cjs.map +1 -1
  201. package/dist/config/defaults.js +3 -3
  202. package/dist/config/defaults.js.map +1 -1
  203. package/dist/constants/acp-providers.cjs +1 -1
  204. package/dist/constants/acp-providers.cjs.map +1 -1
  205. package/dist/constants/acp-providers.d.ts +0 -5
  206. package/dist/constants/acp-providers.js +20 -16
  207. package/dist/constants/acp-providers.js.map +1 -1
  208. package/dist/constants/profile-scope.d.ts +21 -0
  209. package/dist/hooks/mutation/use-create-conversation.cjs +1 -1
  210. package/dist/hooks/mutation/use-create-conversation.cjs.map +1 -1
  211. package/dist/hooks/mutation/use-create-conversation.js +30 -19
  212. package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
  213. package/dist/hooks/mutation/use-switch-acp-model.cjs +1 -1
  214. package/dist/hooks/mutation/use-switch-acp-model.cjs.map +1 -1
  215. package/dist/hooks/mutation/use-switch-acp-model.js +11 -12
  216. package/dist/hooks/mutation/use-switch-acp-model.js.map +1 -1
  217. package/dist/hooks/query/query-keys.cjs +1 -1
  218. package/dist/hooks/query/query-keys.cjs.map +1 -1
  219. package/dist/hooks/query/query-keys.d.ts +1 -0
  220. package/dist/hooks/query/query-keys.js +10 -1
  221. package/dist/hooks/query/query-keys.js.map +1 -1
  222. package/dist/hooks/query/use-active-acp-profile-detail.cjs +1 -1
  223. package/dist/hooks/query/use-active-acp-profile-detail.cjs.map +1 -1
  224. package/dist/hooks/query/use-active-acp-profile-detail.d.ts +0 -9
  225. package/dist/hooks/query/use-active-acp-profile-detail.js +4 -13
  226. package/dist/hooks/query/use-active-acp-profile-detail.js.map +1 -1
  227. package/dist/hooks/query/use-automation-sdk-version.cjs +1 -1
  228. package/dist/hooks/query/use-automation-sdk-version.cjs.map +1 -1
  229. package/dist/hooks/query/use-automation-sdk-version.js +3 -1
  230. package/dist/hooks/query/use-automation-sdk-version.js.map +1 -1
  231. package/dist/hooks/use-drag-resize.cjs +1 -1
  232. package/dist/hooks/use-drag-resize.cjs.map +1 -1
  233. package/dist/hooks/use-drag-resize.js +8 -9
  234. package/dist/hooks/use-drag-resize.js.map +1 -1
  235. package/dist/i18n/declaration.cjs +1 -1
  236. package/dist/i18n/declaration.cjs.map +1 -1
  237. package/dist/i18n/declaration.d.ts +18 -1
  238. package/dist/i18n/declaration.js +1 -1
  239. package/dist/i18n/declaration.js.map +1 -1
  240. package/dist/i18n/translation.cjs +3 -3
  241. package/dist/i18n/translation.cjs.map +1 -1
  242. package/dist/i18n/translation.js +289 -0
  243. package/dist/i18n/translation.js.map +1 -1
  244. package/dist/locales/ar/openhands.json +18 -1
  245. package/dist/locales/ca/openhands.json +18 -1
  246. package/dist/locales/de/openhands.json +18 -1
  247. package/dist/locales/en/openhands.json +18 -1
  248. package/dist/locales/es/openhands.json +18 -1
  249. package/dist/locales/fr/openhands.json +18 -1
  250. package/dist/locales/it/openhands.json +18 -1
  251. package/dist/locales/ja/openhands.json +18 -1
  252. package/dist/locales/ko-KR/openhands.json +18 -1
  253. package/dist/locales/no/openhands.json +18 -1
  254. package/dist/locales/pt/openhands.json +18 -1
  255. package/dist/locales/tr/openhands.json +18 -1
  256. package/dist/locales/uk/openhands.json +18 -1
  257. package/dist/locales/zh-CN/openhands.json +18 -1
  258. package/dist/locales/zh-TW/openhands.json +18 -1
  259. package/dist/manifests/automation-setup.cjs.map +1 -1
  260. package/dist/manifests/automation-setup.js.map +1 -1
  261. package/dist/manifests/manifest-local-validation.cjs.map +1 -1
  262. package/dist/manifests/manifest-local-validation.js.map +1 -1
  263. package/dist/manifests/manifest-validation.cjs +1 -1
  264. package/dist/manifests/manifest-validation.cjs.map +1 -1
  265. package/dist/manifests/manifest-validation.js +2 -2
  266. package/dist/manifests/manifest-validation.js.map +1 -1
  267. package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs +3670 -247
  268. package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs.map +1 -1
  269. package/dist/node_modules/@openhands/extensions/automations/bundle-index.js +26 -3
  270. package/dist/node_modules/@openhands/extensions/automations/bundle-index.js.map +1 -1
  271. package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs +1 -1
  272. package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs.map +1 -1
  273. package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js +4 -1
  274. package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js.map +1 -1
  275. package/dist/node_modules/@openhands/extensions/automations/catalog/github-delivery-watchdog/manifest.cjs +2 -0
  276. package/dist/node_modules/@openhands/extensions/automations/catalog/github-delivery-watchdog/manifest.cjs.map +1 -0
  277. package/dist/node_modules/@openhands/extensions/automations/catalog/github-delivery-watchdog/manifest.js +79 -0
  278. package/dist/node_modules/@openhands/extensions/automations/catalog/github-delivery-watchdog/manifest.js.map +1 -0
  279. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs +1 -11
  280. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs.map +1 -1
  281. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js +25 -11
  282. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js.map +1 -1
  283. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-triage/manifest.cjs +2 -0
  284. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-triage/manifest.cjs.map +1 -0
  285. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-triage/manifest.js +72 -0
  286. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-triage/manifest.js.map +1 -0
  287. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs +1 -10
  288. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs.map +1 -1
  289. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js +24 -11
  290. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js.map +1 -1
  291. package/dist/node_modules/@openhands/extensions/automations/catalog/gitlab-issue-to-mr/manifest.cjs +12 -0
  292. package/dist/node_modules/@openhands/extensions/automations/catalog/gitlab-issue-to-mr/manifest.cjs.map +1 -0
  293. package/dist/node_modules/@openhands/extensions/automations/catalog/gitlab-issue-to-mr/manifest.js +115 -0
  294. package/dist/node_modules/@openhands/extensions/automations/catalog/gitlab-issue-to-mr/manifest.js.map +1 -0
  295. package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs +1 -1
  296. package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs.map +1 -1
  297. package/dist/node_modules/@openhands/extensions/automations/catalog-index.js +20 -14
  298. package/dist/node_modules/@openhands/extensions/automations/catalog-index.js.map +1 -1
  299. package/dist/node_modules/@openhands/extensions/integrations/catalog/reportportal.cjs +2 -0
  300. package/dist/node_modules/@openhands/extensions/integrations/catalog/reportportal.cjs.map +1 -0
  301. package/dist/node_modules/@openhands/extensions/integrations/catalog/reportportal.js +73 -0
  302. package/dist/node_modules/@openhands/extensions/integrations/catalog/reportportal.js.map +1 -0
  303. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs +1 -1
  304. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs.map +1 -1
  305. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js +9 -7
  306. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js.map +1 -1
  307. package/dist/node_modules/@openhands/extensions/skills/index.cjs +794 -227
  308. package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
  309. package/dist/node_modules/@openhands/extensions/skills/index.js +46 -6
  310. package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
  311. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.cjs +1 -1
  312. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.cjs.map +1 -1
  313. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.js +15 -8
  314. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.js.map +1 -1
  315. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.cjs +1 -1
  316. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.cjs.map +1 -1
  317. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.js +11 -13
  318. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.js.map +1 -1
  319. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.cjs +1 -1
  320. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.cjs.map +1 -1
  321. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.js +6 -0
  322. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.js.map +1 -1
  323. package/dist/node_modules/@openhands/typescript-client/dist/client/file-client.cjs +1 -1
  324. package/dist/node_modules/@openhands/typescript-client/dist/client/file-client.cjs.map +1 -1
  325. package/dist/node_modules/@openhands/typescript-client/dist/client/file-client.js +9 -12
  326. package/dist/node_modules/@openhands/typescript-client/dist/client/file-client.js.map +1 -1
  327. package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.cjs +1 -1
  328. package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.cjs.map +1 -1
  329. package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.js +9 -10
  330. package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.js.map +1 -1
  331. package/dist/node_modules/@openhands/typescript-client/dist/client/runtime-transport.cjs +2 -0
  332. package/dist/node_modules/@openhands/typescript-client/dist/client/runtime-transport.cjs.map +1 -0
  333. package/dist/node_modules/@openhands/typescript-client/dist/client/runtime-transport.js +41 -0
  334. package/dist/node_modules/@openhands/typescript-client/dist/client/runtime-transport.js.map +1 -0
  335. package/dist/node_modules/@openhands/typescript-client/dist/client/settings-client.cjs +1 -1
  336. package/dist/node_modules/@openhands/typescript-client/dist/client/settings-client.cjs.map +1 -1
  337. package/dist/node_modules/@openhands/typescript-client/dist/client/settings-client.js +2 -2
  338. package/dist/node_modules/@openhands/typescript-client/dist/client/settings-client.js.map +1 -1
  339. package/dist/node_modules/@openhands/typescript-client/dist/client/vscode-client.cjs +1 -1
  340. package/dist/node_modules/@openhands/typescript-client/dist/client/vscode-client.cjs.map +1 -1
  341. package/dist/node_modules/@openhands/typescript-client/dist/client/vscode-client.js +3 -6
  342. package/dist/node_modules/@openhands/typescript-client/dist/client/vscode-client.js.map +1 -1
  343. package/dist/node_modules/@openhands/typescript-client/dist/clients.cjs +1 -1
  344. package/dist/node_modules/@openhands/typescript-client/dist/clients.js +1 -2
  345. package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation-manager.cjs +1 -1
  346. package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation-manager.js +0 -1
  347. package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.cjs +1 -1
  348. package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.cjs.map +1 -1
  349. package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.js +199 -61
  350. package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.js.map +1 -1
  351. package/dist/node_modules/@openhands/typescript-client/dist/workspace/remote-workspace.cjs +1 -1
  352. package/dist/node_modules/@openhands/typescript-client/dist/workspace/remote-workspace.cjs.map +1 -1
  353. package/dist/node_modules/@openhands/typescript-client/dist/workspace/remote-workspace.js +9 -8
  354. package/dist/node_modules/@openhands/typescript-client/dist/workspace/remote-workspace.js.map +1 -1
  355. package/dist/package.cjs +1 -1
  356. package/dist/package.cjs.map +1 -1
  357. package/dist/package.js +3 -3
  358. package/dist/package.js.map +1 -1
  359. package/dist/routes/agent-settings.d.ts +11 -0
  360. package/dist/types/automation.cjs.map +1 -1
  361. package/dist/types/automation.d.ts +26 -2
  362. package/dist/types/automation.js.map +1 -1
  363. package/dist/utils/automation-disabled-reason.cjs +2 -0
  364. package/dist/utils/automation-disabled-reason.cjs.map +1 -0
  365. package/dist/utils/automation-disabled-reason.d.ts +32 -0
  366. package/dist/utils/automation-disabled-reason.js +19 -0
  367. package/dist/utils/automation-disabled-reason.js.map +1 -0
  368. package/dist/utils/parse-git-remote-url.cjs +1 -1
  369. package/dist/utils/parse-git-remote-url.cjs.map +1 -1
  370. package/dist/utils/parse-git-remote-url.d.ts +5 -1
  371. package/dist/utils/parse-git-remote-url.js +20 -13
  372. package/dist/utils/parse-git-remote-url.js.map +1 -1
  373. package/package.json +3 -3
  374. package/scripts/check-sdk-version-sync.mjs +79 -8
  375. package/scripts/dev-safe.mjs +14 -1
  376. package/scripts/docker-build.mjs +3 -0
  377. package/scripts/static-server.mjs +24 -7
  378. package/build/assets/acp-providers-DcY_mKYa.js +0 -1
  379. package/build/assets/active-backend-context-BnH4-L8h.js +0 -2
  380. package/build/assets/agent-server-conversation-service.api-jiCopc2E.js +0 -88
  381. package/build/assets/agent-settings-BF8hM6wb.js +0 -2
  382. package/build/assets/agent-settings-YPutBAeR.js +0 -1
  383. package/build/assets/automation-detail-BxXhb_m2.js +0 -3
  384. package/build/assets/automation-setup-route-qaJ6lLCf.js +0 -3
  385. package/build/assets/automations-list-DEPVNud3.js +0 -1
  386. package/build/assets/backend-form-modal-DxisQV_6.js +0 -1
  387. package/build/assets/conversation-edjzrv5w.js +0 -1
  388. package/build/assets/conversation-panel-edjzrv5w.js +0 -1
  389. package/build/assets/edit-automation-modal-D_JWSmxT.js +0 -1
  390. package/build/assets/empty-state-FK_s1B60.js +0 -1
  391. package/build/assets/git-repo-dropdown-BoDDWXfX.js +0 -1
  392. package/build/assets/home-BM5_Wz_R.js +0 -1
  393. package/build/assets/home-Ivfm7KC4.js +0 -1
  394. package/build/assets/home-automation-run-tooltip-B1N2uO9p.js +0 -1
  395. package/build/assets/index-home-td9BN2T3.js +0 -1
  396. package/build/assets/kebab-menu-item-content-SCJBwZnp.js +0 -1
  397. package/build/assets/link-external-BNZzCM1I.js +0 -1
  398. package/build/assets/llm-not-configured-banner-Dh_ajcM8.js +0 -27
  399. package/build/assets/llm-settings-CZaXYgtw.js +0 -1
  400. package/build/assets/manifest-bfeccb98.js +0 -1
  401. package/build/assets/mcp-CraxoXQv.js +0 -1
  402. package/build/assets/mcp-marketplace-utils-C7PYr293.js +0 -1
  403. package/build/assets/mcp-page-CteH_K0N.js +0 -9
  404. package/build/assets/onboarding-DXFBRqEy.js +0 -1
  405. package/build/assets/parse-git-remote-url-DpDM9bK6.js +0 -1
  406. package/build/assets/recommended-automations-launcher-DEHRKIAg.js +0 -1
  407. package/build/assets/root-CM6IZHlg.css +0 -1
  408. package/build/assets/root-DdFkodKW.js +0 -2
  409. package/build/assets/trash-Ckh7yCaB.js +0 -1
  410. package/build/assets/use-create-conversation-i_PdFdIs.js +0 -1
  411. package/build/assets/use-create-secret-CjWq0J4O.js +0 -1
  412. package/build/assets/use-manifest-capabilities-CdqYfUAC.js +0 -1
  413. package/build/assets/use-tracking-j4uo9VEW.js +0 -3
  414. package/build/assets/utils-BgLSZdyy.js +0 -1
  415. package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~b0x1wrp2-Z0lly3FE.js +0 -2
  416. package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~inibp4qe-CnsDDzeE.js +0 -48
  417. package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.cjs +0 -2
  418. package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.cjs.map +0 -1
  419. package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.js +0 -21
  420. package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.js.map +0 -1
@@ -1,16 +1,16 @@
1
1
  var e = {
2
2
  id: "github-pr-reviewer",
3
- version: "1.0.0",
3
+ version: "1.1.1",
4
4
  name: "GitHub code review",
5
5
  category: "Code review",
6
- description: "Watch for a configurable label on GitHub pull requests, inspect full PR and repository context, and post an AI review comment once per label event.",
6
+ description: "Review labeled pull-request heads, publish readable findings, and record exact-head test and review decisions.",
7
7
  requires: {
8
- integrations: { github: { message: "Used to read pull requests and post review comments." } },
9
- features: ["customTarball"]
8
+ integrations: {},
9
+ features: ["customTarball", "agentProfiles"]
10
10
  },
11
11
  popularityRank: 100,
12
12
  estimatedSetupMinutes: 4,
13
- exampleImplementation: "Trigger: cron polling for open GitHub PRs with a configured label such as openhands-review\nRequired secret: GITHUB_PERSONAL_ACCESS_TOKEN, with permission to write pull request reviews\n\n1. Read the repositories, trigger label, review tone, and polling schedule from setup.\n2. Poll each repository independently, with its own state, so PR numbers never collide.\n3. List open PRs and find the latest matching GitHub labeled issue event for each labeled PR.\n4. Deduplicate on the label event ID so every label application queues exactly one review.\n5. Extract the PR head commit into a directory of its own and start an OpenHands conversation with that directory as its workspace, so the agent reviews the exact commit without cloning anything.\n6. Post an acknowledgement with the conversation link, then confirm on GitHub that the review was published for that head SHA, falling back to posting the agent's text as a comment.\n7. Remove the checkout once the conversation has stopped, so nothing accumulates between runs.",
13
+ exampleImplementation: "A scheduled scanner selects every labeled PR head and submits an idempotent subject turn. The profile-backed agent clones that exact head in its runtime, reuses the established review workflow, runs appropriate tests, publishes a readable native review, and records exact-head review and test statuses.",
14
14
  impact: {
15
15
  basis: "completed-runs",
16
16
  one: "1 PR review sweep completed",
@@ -76,21 +76,34 @@ var e = {
76
76
  label: "Friendly"
77
77
  }
78
78
  ]
79
+ },
80
+ githubTokenSecret: {
81
+ type: "text",
82
+ label: "GitHub token secret",
83
+ help: "Name of a saved Agent Server secret. Include it in the selected profile so the delegated agent can use GitHub.",
84
+ default: "GITHUB_PERSONAL_ACCESS_TOKEN",
85
+ required: !0
79
86
  }
80
87
  }
81
88
  },
82
89
  bundle: {
83
- version: "1.0.0",
84
- entrypoint: "python3 main.py",
85
- timeout: 600,
86
- files: { "main.py": "skills/github-pr-reviewer/scripts/main.py" },
90
+ version: "1.1.1",
91
+ entrypoint: "python3 worker.py",
92
+ timeout: 300,
93
+ files: {
94
+ "main.py": "skills/github-pr-reviewer/scripts/main.py",
95
+ "agent_conversation.py": "skills/github/scripts/agent_conversation.py",
96
+ "github_client.py": "skills/github/scripts/github_client.py",
97
+ "worker.py": "skills/github-pr-reviewer/scripts/worker.py"
98
+ },
87
99
  config: {
88
100
  repos: "{{form.repositories}}",
89
101
  trigger_label: "{{form.triggerLabel}}",
90
- review_tone: "{{form.reviewTone}}"
102
+ review_tone: "{{form.reviewTone}}",
103
+ github_token_secret: "{{form.githubTokenSecret}}"
91
104
  }
92
105
  },
93
- message: "This deployment cannot run the scheduled review automation directly. Set it up in this conversation instead: confirm the repository to review, the trigger label, the review tone, and the polling schedule, then create the automation."
106
+ message: "Configure the repositories, review label, tone, credential name, agent profile, and schedule."
94
107
  }
95
108
  };
96
109
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","names":[],"sources":["../../../../../../../node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.json"],"sourcesContent":["{\n \"id\": \"github-pr-reviewer\",\n \"version\": \"1.0.0\",\n \"name\": \"GitHub code review\",\n \"category\": \"Code review\",\n \"description\": \"Watch for a configurable label on GitHub pull requests, inspect full PR and repository context, and post an AI review comment once per label event.\",\n \"requires\": {\n \"integrations\": {\n \"github\": {\n \"message\": \"Used to read pull requests and post review comments.\"\n }\n },\n \"features\": [\n \"customTarball\"\n ]\n },\n \"popularityRank\": 100,\n \"estimatedSetupMinutes\": 4,\n \"exampleImplementation\": \"Trigger: cron polling for open GitHub PRs with a configured label such as openhands-review\\nRequired secret: GITHUB_PERSONAL_ACCESS_TOKEN, with permission to write pull request reviews\\n\\n1. Read the repositories, trigger label, review tone, and polling schedule from setup.\\n2. Poll each repository independently, with its own state, so PR numbers never collide.\\n3. List open PRs and find the latest matching GitHub labeled issue event for each labeled PR.\\n4. Deduplicate on the label event ID so every label application queues exactly one review.\\n5. Extract the PR head commit into a directory of its own and start an OpenHands conversation with that directory as its workspace, so the agent reviews the exact commit without cloning anything.\\n6. Post an acknowledgement with the conversation link, then confirm on GitHub that the review was published for that head SHA, falling back to posting the agent's text as a comment.\\n7. Remove the checkout once the conversation has stopped, so nothing accumulates between runs.\",\n \"impact\": {\n \"basis\": \"completed-runs\",\n \"one\": \"1 PR review sweep completed\",\n \"other\": \"{{count}} PR review sweeps completed\"\n },\n \"setup\": {\n \"version\": \"1.0\",\n \"mode\": \"direct\",\n \"form\": {\n \"triggers\": {\n \"cron\": {\n \"schedule\": {\n \"type\": \"cron\",\n \"label\": \"Check frequency\",\n \"help\": \"How often to look for newly labelled pull requests.\",\n \"default\": \"*/15 * * * *\",\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 \"repositories\": {\n \"type\": \"repo-picker\",\n \"label\": \"Repositories\",\n \"help\": \"The repositories whose pull requests will be reviewed. Each is polled independently and keeps its own state, so pull request numbers never collide between them.\",\n \"provider\": \"github\",\n \"multiple\": true,\n \"required\": true\n },\n \"triggerLabel\": {\n \"type\": \"text\",\n \"label\": \"Trigger label\",\n \"help\": \"Only pull requests carrying this label are reviewed.\",\n \"default\": \"openhands-review\",\n \"required\": true,\n \"constraints\": {\n \"minLength\": 1,\n \"maxLength\": 50\n }\n },\n \"reviewTone\": {\n \"type\": \"select\",\n \"label\": \"Review tone\",\n \"help\": \"How detailed the review comments should be.\",\n \"default\": \"concise\",\n \"required\": true,\n \"options\": [\n {\n \"value\": \"concise\",\n \"label\": \"Concise\"\n },\n {\n \"value\": \"thorough\",\n \"label\": \"Thorough\"\n },\n {\n \"value\": \"friendly\",\n \"label\": \"Friendly\"\n }\n ]\n }\n }\n },\n \"bundle\": {\n \"version\": \"1.0.0\",\n \"entrypoint\": \"python3 main.py\",\n \"timeout\": 600,\n \"files\": {\n \"main.py\": \"skills/github-pr-reviewer/scripts/main.py\"\n },\n \"config\": {\n \"repos\": \"{{form.repositories}}\",\n \"trigger_label\": \"{{form.triggerLabel}}\",\n \"review_tone\": \"{{form.reviewTone}}\"\n }\n },\n \"message\": \"This deployment cannot run the scheduled review automation directly. Set it up in this conversation instead: confirm the repository to review, the trigger label, the review tone, and the polling 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/github-pr-reviewer/manifest.json"],"sourcesContent":["{\n \"id\": \"github-pr-reviewer\",\n \"version\": \"1.1.1\",\n \"name\": \"GitHub code review\",\n \"category\": \"Code review\",\n \"description\": \"Review labeled pull-request heads, publish readable findings, and record exact-head test and review decisions.\",\n \"requires\": {\n \"integrations\": {},\n \"features\": [\n \"customTarball\",\n \"agentProfiles\"\n ]\n },\n \"popularityRank\": 100,\n \"estimatedSetupMinutes\": 4,\n \"exampleImplementation\": \"A scheduled scanner selects every labeled PR head and submits an idempotent subject turn. The profile-backed agent clones that exact head in its runtime, reuses the established review workflow, runs appropriate tests, publishes a readable native review, and records exact-head review and test statuses.\",\n \"impact\": {\n \"basis\": \"completed-runs\",\n \"one\": \"1 PR review sweep completed\",\n \"other\": \"{{count}} PR review sweeps completed\"\n },\n \"setup\": {\n \"version\": \"1.0\",\n \"mode\": \"direct\",\n \"form\": {\n \"triggers\": {\n \"cron\": {\n \"schedule\": {\n \"type\": \"cron\",\n \"label\": \"Check frequency\",\n \"help\": \"How often to look for newly labelled pull requests.\",\n \"default\": \"*/15 * * * *\",\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 \"repositories\": {\n \"type\": \"repo-picker\",\n \"label\": \"Repositories\",\n \"help\": \"The repositories whose pull requests will be reviewed. Each is polled independently and keeps its own state, so pull request numbers never collide between them.\",\n \"provider\": \"github\",\n \"multiple\": true,\n \"required\": true\n },\n \"triggerLabel\": {\n \"type\": \"text\",\n \"label\": \"Trigger label\",\n \"help\": \"Only pull requests carrying this label are reviewed.\",\n \"default\": \"openhands-review\",\n \"required\": true,\n \"constraints\": {\n \"minLength\": 1,\n \"maxLength\": 50\n }\n },\n \"reviewTone\": {\n \"type\": \"select\",\n \"label\": \"Review tone\",\n \"help\": \"How detailed the review comments should be.\",\n \"default\": \"concise\",\n \"required\": true,\n \"options\": [\n {\n \"value\": \"concise\",\n \"label\": \"Concise\"\n },\n {\n \"value\": \"thorough\",\n \"label\": \"Thorough\"\n },\n {\n \"value\": \"friendly\",\n \"label\": \"Friendly\"\n }\n ]\n },\n \"githubTokenSecret\": {\n \"type\": \"text\",\n \"label\": \"GitHub token secret\",\n \"help\": \"Name of a saved Agent Server secret. Include it in the selected profile so the delegated agent can use GitHub.\",\n \"default\": \"GITHUB_PERSONAL_ACCESS_TOKEN\",\n \"required\": true\n }\n }\n },\n \"bundle\": {\n \"version\": \"1.1.1\",\n \"entrypoint\": \"python3 worker.py\",\n \"timeout\": 300,\n \"files\": {\n \"main.py\": \"skills/github-pr-reviewer/scripts/main.py\",\n \"agent_conversation.py\": \"skills/github/scripts/agent_conversation.py\",\n \"github_client.py\": \"skills/github/scripts/github_client.py\",\n \"worker.py\": \"skills/github-pr-reviewer/scripts/worker.py\"\n },\n \"config\": {\n \"repos\": \"{{form.repositories}}\",\n \"trigger_label\": \"{{form.triggerLabel}}\",\n \"review_tone\": \"{{form.reviewTone}}\",\n \"github_token_secret\": \"{{form.githubTokenSecret}}\"\n }\n },\n \"message\": \"Configure the repositories, review label, tone, credential name, agent profile, and schedule.\"\n }\n}\n"],"x_google_ignoreList":[0],"mappings":""}
@@ -0,0 +1,12 @@
1
+ require("../../../../../../_virtual/_rolldown/runtime.cjs");var e={id:`gitlab-issue-to-mr`,name:`GitLab issue to MR`,category:`Software development`,description:`Watch for a configurable label on GitLab issues, implement the issue in a clone of the default branch, and open a merge request for each label event.`,requires:{integrations:{gitlab:{message:`Used to read labelled issues, push the branch, and open the merge request.`}},features:[`customTarball`]},popularityRank:88,estimatedSetupMinutes:4,exampleImplementation:`Trigger: cron polling for open GitLab issues with a configured label such as openhands
2
+ Required secret: GITLAB_TOKEN, a personal or project access token with the api scope and at least the Developer role
3
+
4
+ 1. Read the projects, trigger label, branch prefix, merge request mode, GitLab API URL, and polling schedule from setup.
5
+ 2. Poll each project independently, with its own state, so issue IIDs never collide.
6
+ 3. List open labelled issues and find the latest matching GitLab label resource event for each.
7
+ 4. Deduplicate on the label event ID so every label application queues exactly one attempt.
8
+ 5. Clone the default branch into a directory of its own, create the working branch, and start an OpenHands conversation with that directory as its workspace. The clone carries no credential and the agent is handed no secrets, because the prompt is built from an issue body that anyone can write.
9
+ 6. Comment on the issue with the branch and the conversation link.
10
+ 7. Once the conversation has stopped, commit whatever the agent left, push the branch, open a merge request titled after the issue and prefixed with Draft:, and comment the link on the issue. An agent that made no changes gets its answer posted instead.
11
+ 8. Remove the clone once the conversation has stopped, so nothing accumulates between runs.`,impact:{basis:`completed-runs`,one:`1 issue sweep completed`,other:`{{count}} issue sweeps completed`},setup:{version:`1.0`,mode:`direct`,form:{triggers:{cron:{schedule:{type:`cron`,label:`Check frequency`,help:`How often to look for newly labelled issues.`,default:`*/15 * * * *`,required:!0},timezone:{type:`timezone`,label:`Timezone`,help:`Timezone the schedule is interpreted in.`,default:`UTC`,required:!0}}},args:{projects:{type:`repo-picker`,label:`Projects`,help:`The GitLab projects whose labelled issues are implemented. Each is polled independently and keeps its own state, so issue numbers never collide between them.`,provider:`gitlab`,multiple:!0,required:!0},triggerLabel:{type:`text`,label:`Trigger label`,help:`Only issues carrying this label are worked on.`,default:`openhands`,required:!0,constraints:{minLength:1,maxLength:50}},branchPrefix:{type:`text`,label:`Branch prefix`,help:`Branches are named after this prefix and the issue number, such as openhands/issue-42.`,default:`openhands/issue`,required:!0,constraints:{minLength:1,maxLength:50}},mergeRequestMode:{type:`select`,label:`Merge request mode`,help:`Whether the merge request is opened as a draft or ready for review. GitLab marks a draft by prefixing its title with Draft:.`,default:`draft`,required:!0,options:[{value:`draft`,label:`Draft`},{value:`ready`,label:`Ready for review`}]},gitlabApiUrl:{type:`text`,label:`GitLab API URL`,help:`The API root of the GitLab instance. Change it for a self-managed instance, such as https://gitlab.example.com/api/v4.`,default:`https://gitlab.com/api/v4`,required:!0,constraints:{minLength:1,maxLength:200}}}},bundle:{version:`1.0.0`,entrypoint:`python3 main.py`,timeout:900,files:{"main.py":`skills/gitlab-issue-to-mr/scripts/main.py`},config:{projects:`{{form.projects}}`,trigger_label:`{{form.triggerLabel}}`,branch_prefix:`{{form.branchPrefix}}`,merge_request_mode:`{{form.mergeRequestMode}}`,gitlab_api_url:`{{form.gitlabApiUrl}}`}},message:`This deployment cannot run the scheduled issue-to-MR automation directly. Set it up in this conversation instead: confirm the GitLab projects to watch, the trigger label, the branch prefix, whether merge requests open as drafts, the GitLab API URL, and the polling schedule, then create the automation.`}};exports.default=e;
12
+ //# sourceMappingURL=manifest.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.cjs","names":[],"sources":["../../../../../../../node_modules/@openhands/extensions/automations/catalog/gitlab-issue-to-mr/manifest.json"],"sourcesContent":["{\n \"id\": \"gitlab-issue-to-mr\",\n \"name\": \"GitLab issue to MR\",\n \"category\": \"Software development\",\n \"description\": \"Watch for a configurable label on GitLab issues, implement the issue in a clone of the default branch, and open a merge request for each label event.\",\n \"requires\": {\n \"integrations\": {\n \"gitlab\": {\n \"message\": \"Used to read labelled issues, push the branch, and open the merge request.\"\n }\n },\n \"features\": [\n \"customTarball\"\n ]\n },\n \"popularityRank\": 88,\n \"estimatedSetupMinutes\": 4,\n \"exampleImplementation\": \"Trigger: cron polling for open GitLab issues with a configured label such as openhands\\nRequired secret: GITLAB_TOKEN, a personal or project access token with the api scope and at least the Developer role\\n\\n1. Read the projects, trigger label, branch prefix, merge request mode, GitLab API URL, and polling schedule from setup.\\n2. Poll each project independently, with its own state, so issue IIDs never collide.\\n3. List open labelled issues and find the latest matching GitLab label resource event for each.\\n4. Deduplicate on the label event ID so every label application queues exactly one attempt.\\n5. Clone the default branch into a directory of its own, create the working branch, and start an OpenHands conversation with that directory as its workspace. The clone carries no credential and the agent is handed no secrets, because the prompt is built from an issue body that anyone can write.\\n6. Comment on the issue with the branch and the conversation link.\\n7. Once the conversation has stopped, commit whatever the agent left, push the branch, open a merge request titled after the issue and prefixed with Draft:, and comment the link on the issue. An agent that made no changes gets its answer posted instead.\\n8. Remove the clone once the conversation has stopped, so nothing accumulates between runs.\",\n \"impact\": {\n \"basis\": \"completed-runs\",\n \"one\": \"1 issue sweep completed\",\n \"other\": \"{{count}} issue sweeps completed\"\n },\n \"setup\": {\n \"version\": \"1.0\",\n \"mode\": \"direct\",\n \"form\": {\n \"triggers\": {\n \"cron\": {\n \"schedule\": {\n \"type\": \"cron\",\n \"label\": \"Check frequency\",\n \"help\": \"How often to look for newly labelled issues.\",\n \"default\": \"*/15 * * * *\",\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 \"projects\": {\n \"type\": \"repo-picker\",\n \"label\": \"Projects\",\n \"help\": \"The GitLab projects whose labelled issues are implemented. Each is polled independently and keeps its own state, so issue numbers never collide between them.\",\n \"provider\": \"gitlab\",\n \"multiple\": true,\n \"required\": true\n },\n \"triggerLabel\": {\n \"type\": \"text\",\n \"label\": \"Trigger label\",\n \"help\": \"Only issues carrying this label are worked on.\",\n \"default\": \"openhands\",\n \"required\": true,\n \"constraints\": {\n \"minLength\": 1,\n \"maxLength\": 50\n }\n },\n \"branchPrefix\": {\n \"type\": \"text\",\n \"label\": \"Branch prefix\",\n \"help\": \"Branches are named after this prefix and the issue number, such as openhands/issue-42.\",\n \"default\": \"openhands/issue\",\n \"required\": true,\n \"constraints\": {\n \"minLength\": 1,\n \"maxLength\": 50\n }\n },\n \"mergeRequestMode\": {\n \"type\": \"select\",\n \"label\": \"Merge request mode\",\n \"help\": \"Whether the merge request is opened as a draft or ready for review. GitLab marks a draft by prefixing its title with Draft:.\",\n \"default\": \"draft\",\n \"required\": true,\n \"options\": [\n {\n \"value\": \"draft\",\n \"label\": \"Draft\"\n },\n {\n \"value\": \"ready\",\n \"label\": \"Ready for review\"\n }\n ]\n },\n \"gitlabApiUrl\": {\n \"type\": \"text\",\n \"label\": \"GitLab API URL\",\n \"help\": \"The API root of the GitLab instance. Change it for a self-managed instance, such as https://gitlab.example.com/api/v4.\",\n \"default\": \"https://gitlab.com/api/v4\",\n \"required\": true,\n \"constraints\": {\n \"minLength\": 1,\n \"maxLength\": 200\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/gitlab-issue-to-mr/scripts/main.py\"\n },\n \"config\": {\n \"projects\": \"{{form.projects}}\",\n \"trigger_label\": \"{{form.triggerLabel}}\",\n \"branch_prefix\": \"{{form.branchPrefix}}\",\n \"merge_request_mode\": \"{{form.mergeRequestMode}}\",\n \"gitlab_api_url\": \"{{form.gitlabApiUrl}}\"\n }\n },\n \"message\": \"This deployment cannot run the scheduled issue-to-MR automation directly. Set it up in this conversation instead: confirm the GitLab projects to watch, the trigger label, the branch prefix, whether merge requests open as drafts, the GitLab API URL, and the polling schedule, then create the automation.\"\n }\n}\n"],"x_google_ignoreList":[0],"mappings":""}
@@ -0,0 +1,115 @@
1
+ var e = {
2
+ id: "gitlab-issue-to-mr",
3
+ name: "GitLab issue to MR",
4
+ category: "Software development",
5
+ description: "Watch for a configurable label on GitLab issues, implement the issue in a clone of the default branch, and open a merge request for each label event.",
6
+ requires: {
7
+ integrations: { gitlab: { message: "Used to read labelled issues, push the branch, and open the merge request." } },
8
+ features: ["customTarball"]
9
+ },
10
+ popularityRank: 88,
11
+ estimatedSetupMinutes: 4,
12
+ exampleImplementation: "Trigger: cron polling for open GitLab issues with a configured label such as openhands\nRequired secret: GITLAB_TOKEN, a personal or project access token with the api scope and at least the Developer role\n\n1. Read the projects, trigger label, branch prefix, merge request mode, GitLab API URL, and polling schedule from setup.\n2. Poll each project independently, with its own state, so issue IIDs never collide.\n3. List open labelled issues and find the latest matching GitLab label resource event for each.\n4. Deduplicate on the label event ID so every label application queues exactly one attempt.\n5. Clone the default branch into a directory of its own, create the working branch, and start an OpenHands conversation with that directory as its workspace. The clone carries no credential and the agent is handed no secrets, because the prompt is built from an issue body that anyone can write.\n6. Comment on the issue with the branch and the conversation link.\n7. Once the conversation has stopped, commit whatever the agent left, push the branch, open a merge request titled after the issue and prefixed with Draft:, and comment the link on the issue. An agent that made no changes gets its answer posted instead.\n8. Remove the clone once the conversation has stopped, so nothing accumulates between runs.",
13
+ impact: {
14
+ basis: "completed-runs",
15
+ one: "1 issue sweep completed",
16
+ other: "{{count}} issue sweeps completed"
17
+ },
18
+ setup: {
19
+ version: "1.0",
20
+ mode: "direct",
21
+ form: {
22
+ triggers: { cron: {
23
+ schedule: {
24
+ type: "cron",
25
+ label: "Check frequency",
26
+ help: "How often to look for newly labelled issues.",
27
+ default: "*/15 * * * *",
28
+ required: !0
29
+ },
30
+ timezone: {
31
+ type: "timezone",
32
+ label: "Timezone",
33
+ help: "Timezone the schedule is interpreted in.",
34
+ default: "UTC",
35
+ required: !0
36
+ }
37
+ } },
38
+ args: {
39
+ projects: {
40
+ type: "repo-picker",
41
+ label: "Projects",
42
+ help: "The GitLab projects whose labelled issues are implemented. Each is polled independently and keeps its own state, so issue numbers never collide between them.",
43
+ provider: "gitlab",
44
+ multiple: !0,
45
+ required: !0
46
+ },
47
+ triggerLabel: {
48
+ type: "text",
49
+ label: "Trigger label",
50
+ help: "Only issues carrying this label are worked on.",
51
+ default: "openhands",
52
+ required: !0,
53
+ constraints: {
54
+ minLength: 1,
55
+ maxLength: 50
56
+ }
57
+ },
58
+ branchPrefix: {
59
+ type: "text",
60
+ label: "Branch prefix",
61
+ help: "Branches are named after this prefix and the issue number, such as openhands/issue-42.",
62
+ default: "openhands/issue",
63
+ required: !0,
64
+ constraints: {
65
+ minLength: 1,
66
+ maxLength: 50
67
+ }
68
+ },
69
+ mergeRequestMode: {
70
+ type: "select",
71
+ label: "Merge request mode",
72
+ help: "Whether the merge request is opened as a draft or ready for review. GitLab marks a draft by prefixing its title with Draft:.",
73
+ default: "draft",
74
+ required: !0,
75
+ options: [{
76
+ value: "draft",
77
+ label: "Draft"
78
+ }, {
79
+ value: "ready",
80
+ label: "Ready for review"
81
+ }]
82
+ },
83
+ gitlabApiUrl: {
84
+ type: "text",
85
+ label: "GitLab API URL",
86
+ help: "The API root of the GitLab instance. Change it for a self-managed instance, such as https://gitlab.example.com/api/v4.",
87
+ default: "https://gitlab.com/api/v4",
88
+ required: !0,
89
+ constraints: {
90
+ minLength: 1,
91
+ maxLength: 200
92
+ }
93
+ }
94
+ }
95
+ },
96
+ bundle: {
97
+ version: "1.0.0",
98
+ entrypoint: "python3 main.py",
99
+ timeout: 900,
100
+ files: { "main.py": "skills/gitlab-issue-to-mr/scripts/main.py" },
101
+ config: {
102
+ projects: "{{form.projects}}",
103
+ trigger_label: "{{form.triggerLabel}}",
104
+ branch_prefix: "{{form.branchPrefix}}",
105
+ merge_request_mode: "{{form.mergeRequestMode}}",
106
+ gitlab_api_url: "{{form.gitlabApiUrl}}"
107
+ }
108
+ },
109
+ message: "This deployment cannot run the scheduled issue-to-MR automation directly. Set it up in this conversation instead: confirm the GitLab projects to watch, the trigger label, the branch prefix, whether merge requests open as drafts, the GitLab API URL, and the polling schedule, then create the automation."
110
+ }
111
+ };
112
+ //#endregion
113
+ export { e as default };
114
+
115
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","names":[],"sources":["../../../../../../../node_modules/@openhands/extensions/automations/catalog/gitlab-issue-to-mr/manifest.json"],"sourcesContent":["{\n \"id\": \"gitlab-issue-to-mr\",\n \"name\": \"GitLab issue to MR\",\n \"category\": \"Software development\",\n \"description\": \"Watch for a configurable label on GitLab issues, implement the issue in a clone of the default branch, and open a merge request for each label event.\",\n \"requires\": {\n \"integrations\": {\n \"gitlab\": {\n \"message\": \"Used to read labelled issues, push the branch, and open the merge request.\"\n }\n },\n \"features\": [\n \"customTarball\"\n ]\n },\n \"popularityRank\": 88,\n \"estimatedSetupMinutes\": 4,\n \"exampleImplementation\": \"Trigger: cron polling for open GitLab issues with a configured label such as openhands\\nRequired secret: GITLAB_TOKEN, a personal or project access token with the api scope and at least the Developer role\\n\\n1. Read the projects, trigger label, branch prefix, merge request mode, GitLab API URL, and polling schedule from setup.\\n2. Poll each project independently, with its own state, so issue IIDs never collide.\\n3. List open labelled issues and find the latest matching GitLab label resource event for each.\\n4. Deduplicate on the label event ID so every label application queues exactly one attempt.\\n5. Clone the default branch into a directory of its own, create the working branch, and start an OpenHands conversation with that directory as its workspace. The clone carries no credential and the agent is handed no secrets, because the prompt is built from an issue body that anyone can write.\\n6. Comment on the issue with the branch and the conversation link.\\n7. Once the conversation has stopped, commit whatever the agent left, push the branch, open a merge request titled after the issue and prefixed with Draft:, and comment the link on the issue. An agent that made no changes gets its answer posted instead.\\n8. Remove the clone once the conversation has stopped, so nothing accumulates between runs.\",\n \"impact\": {\n \"basis\": \"completed-runs\",\n \"one\": \"1 issue sweep completed\",\n \"other\": \"{{count}} issue sweeps completed\"\n },\n \"setup\": {\n \"version\": \"1.0\",\n \"mode\": \"direct\",\n \"form\": {\n \"triggers\": {\n \"cron\": {\n \"schedule\": {\n \"type\": \"cron\",\n \"label\": \"Check frequency\",\n \"help\": \"How often to look for newly labelled issues.\",\n \"default\": \"*/15 * * * *\",\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 \"projects\": {\n \"type\": \"repo-picker\",\n \"label\": \"Projects\",\n \"help\": \"The GitLab projects whose labelled issues are implemented. Each is polled independently and keeps its own state, so issue numbers never collide between them.\",\n \"provider\": \"gitlab\",\n \"multiple\": true,\n \"required\": true\n },\n \"triggerLabel\": {\n \"type\": \"text\",\n \"label\": \"Trigger label\",\n \"help\": \"Only issues carrying this label are worked on.\",\n \"default\": \"openhands\",\n \"required\": true,\n \"constraints\": {\n \"minLength\": 1,\n \"maxLength\": 50\n }\n },\n \"branchPrefix\": {\n \"type\": \"text\",\n \"label\": \"Branch prefix\",\n \"help\": \"Branches are named after this prefix and the issue number, such as openhands/issue-42.\",\n \"default\": \"openhands/issue\",\n \"required\": true,\n \"constraints\": {\n \"minLength\": 1,\n \"maxLength\": 50\n }\n },\n \"mergeRequestMode\": {\n \"type\": \"select\",\n \"label\": \"Merge request mode\",\n \"help\": \"Whether the merge request is opened as a draft or ready for review. GitLab marks a draft by prefixing its title with Draft:.\",\n \"default\": \"draft\",\n \"required\": true,\n \"options\": [\n {\n \"value\": \"draft\",\n \"label\": \"Draft\"\n },\n {\n \"value\": \"ready\",\n \"label\": \"Ready for review\"\n }\n ]\n },\n \"gitlabApiUrl\": {\n \"type\": \"text\",\n \"label\": \"GitLab API URL\",\n \"help\": \"The API root of the GitLab instance. Change it for a self-managed instance, such as https://gitlab.example.com/api/v4.\",\n \"default\": \"https://gitlab.com/api/v4\",\n \"required\": true,\n \"constraints\": {\n \"minLength\": 1,\n \"maxLength\": 200\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/gitlab-issue-to-mr/scripts/main.py\"\n },\n \"config\": {\n \"projects\": \"{{form.projects}}\",\n \"trigger_label\": \"{{form.triggerLabel}}\",\n \"branch_prefix\": \"{{form.branchPrefix}}\",\n \"merge_request_mode\": \"{{form.mergeRequestMode}}\",\n \"gitlab_api_url\": \"{{form.gitlabApiUrl}}\"\n }\n },\n \"message\": \"This deployment cannot run the scheduled issue-to-MR automation directly. Set it up in this conversation instead: confirm the GitLab projects to watch, the trigger label, the branch prefix, whether merge requests open as drafts, the GitLab API URL, and the polling schedule, 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/custom-automation/manifest.cjs"),n=require("./catalog/github-repo-monitor/manifest.cjs"),r=require("./catalog/github-issue-to-pr/manifest.cjs"),i=require("./catalog/slack-standup-digest/manifest.cjs"),a=require("./catalog/slack-channel-monitor/manifest.cjs"),o=require("./catalog/linear-triage-assistant/manifest.cjs"),s=require("./catalog/linear-issue-to-github-pr/manifest.cjs"),c=require("./catalog/linear-issue-to-gitlab-mr/manifest.cjs"),l=require("./catalog/linear-issue-to-bitbucket-pr/manifest.cjs"),u=require("./catalog/jira-issue-to-pr/manifest.cjs"),d=require("./catalog/qa-changes/manifest.cjs"),f=require("./catalog/jira-issue-to-gitlab-mr/manifest.cjs"),p=require("./catalog/research-brief-writer/manifest.cjs"),m=require("./catalog/jira-issue-to-bitbucket-pr/manifest.cjs"),h=require("./catalog/github-agents-md-maintainer/manifest.cjs"),g=require("./catalog/upstream-fork-sync/manifest.cjs"),_=require("./catalog/incident-retrospective-drafter/manifest.cjs"),v=require("./catalog/news-digest/manifest.cjs");var y=[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,v.default];exports.AUTOMATION_CATALOG_ENTRIES=y;
1
+ require("../../../../_virtual/_rolldown/runtime.cjs");const e=require("./catalog/github-pr-reviewer/manifest.cjs"),t=require("./catalog/custom-automation/manifest.cjs"),n=require("./catalog/github-repo-monitor/manifest.cjs"),r=require("./catalog/github-issue-to-pr/manifest.cjs"),i=require("./catalog/slack-standup-digest/manifest.cjs"),a=require("./catalog/slack-channel-monitor/manifest.cjs"),o=require("./catalog/linear-triage-assistant/manifest.cjs"),s=require("./catalog/linear-issue-to-github-pr/manifest.cjs"),c=require("./catalog/gitlab-issue-to-mr/manifest.cjs"),l=require("./catalog/linear-issue-to-gitlab-mr/manifest.cjs"),u=require("./catalog/linear-issue-to-bitbucket-pr/manifest.cjs"),d=require("./catalog/jira-issue-to-pr/manifest.cjs"),f=require("./catalog/qa-changes/manifest.cjs"),p=require("./catalog/jira-issue-to-gitlab-mr/manifest.cjs"),m=require("./catalog/research-brief-writer/manifest.cjs"),h=require("./catalog/jira-issue-to-bitbucket-pr/manifest.cjs"),g=require("./catalog/github-agents-md-maintainer/manifest.cjs"),_=require("./catalog/github-delivery-watchdog/manifest.cjs"),v=require("./catalog/github-issue-triage/manifest.cjs"),y=require("./catalog/upstream-fork-sync/manifest.cjs"),b=require("./catalog/incident-retrospective-drafter/manifest.cjs"),x=require("./catalog/news-digest/manifest.cjs");var S=[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,v.default,y.default,b.default,x.default];exports.AUTOMATION_CATALOG_ENTRIES=S;
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","entry12","entry13","entry14","entry15","entry16","entry17","entry18"],"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/custom-automation/manifest.json\" with { type: \"json\" };\nimport entry2 from \"./catalog/github-repo-monitor/manifest.json\" with { type: \"json\" };\nimport entry3 from \"./catalog/github-issue-to-pr/manifest.json\" with { type: \"json\" };\nimport entry4 from \"./catalog/slack-standup-digest/manifest.json\" with { type: \"json\" };\nimport entry5 from \"./catalog/slack-channel-monitor/manifest.json\" with { type: \"json\" };\nimport entry6 from \"./catalog/linear-triage-assistant/manifest.json\" with { type: \"json\" };\nimport entry7 from \"./catalog/linear-issue-to-github-pr/manifest.json\" with { type: \"json\" };\nimport entry8 from \"./catalog/linear-issue-to-gitlab-mr/manifest.json\" with { type: \"json\" };\nimport entry9 from \"./catalog/linear-issue-to-bitbucket-pr/manifest.json\" with { type: \"json\" };\nimport entry10 from \"./catalog/jira-issue-to-pr/manifest.json\" with { type: \"json\" };\nimport entry11 from \"./catalog/qa-changes/manifest.json\" with { type: \"json\" };\nimport entry12 from \"./catalog/jira-issue-to-gitlab-mr/manifest.json\" with { type: \"json\" };\nimport entry13 from \"./catalog/research-brief-writer/manifest.json\" with { type: \"json\" };\nimport entry14 from \"./catalog/jira-issue-to-bitbucket-pr/manifest.json\" with { type: \"json\" };\nimport entry15 from \"./catalog/github-agents-md-maintainer/manifest.json\" with { type: \"json\" };\nimport entry16 from \"./catalog/upstream-fork-sync/manifest.json\" with { type: \"json\" };\nimport entry17 from \"./catalog/incident-retrospective-drafter/manifest.json\" with { type: \"json\" };\nimport entry18 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 entry18,\n];\n"],"x_google_ignoreList":[0],"mappings":"uoCAwBA,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,QACAC,EAAAA,OACF"}
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","entry18","entry19","entry20","entry21"],"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/custom-automation/manifest.json\" with { type: \"json\" };\nimport entry2 from \"./catalog/github-repo-monitor/manifest.json\" with { type: \"json\" };\nimport entry3 from \"./catalog/github-issue-to-pr/manifest.json\" with { type: \"json\" };\nimport entry4 from \"./catalog/slack-standup-digest/manifest.json\" with { type: \"json\" };\nimport entry5 from \"./catalog/slack-channel-monitor/manifest.json\" with { type: \"json\" };\nimport entry6 from \"./catalog/linear-triage-assistant/manifest.json\" with { type: \"json\" };\nimport entry7 from \"./catalog/linear-issue-to-github-pr/manifest.json\" with { type: \"json\" };\nimport entry8 from \"./catalog/gitlab-issue-to-mr/manifest.json\" with { type: \"json\" };\nimport entry9 from \"./catalog/linear-issue-to-gitlab-mr/manifest.json\" with { type: \"json\" };\nimport entry10 from \"./catalog/linear-issue-to-bitbucket-pr/manifest.json\" with { type: \"json\" };\nimport entry11 from \"./catalog/jira-issue-to-pr/manifest.json\" with { type: \"json\" };\nimport entry12 from \"./catalog/qa-changes/manifest.json\" with { type: \"json\" };\nimport entry13 from \"./catalog/jira-issue-to-gitlab-mr/manifest.json\" with { type: \"json\" };\nimport entry14 from \"./catalog/research-brief-writer/manifest.json\" with { type: \"json\" };\nimport entry15 from \"./catalog/jira-issue-to-bitbucket-pr/manifest.json\" with { type: \"json\" };\nimport entry16 from \"./catalog/github-agents-md-maintainer/manifest.json\" with { type: \"json\" };\nimport entry17 from \"./catalog/github-delivery-watchdog/manifest.json\" with { type: \"json\" };\nimport entry18 from \"./catalog/github-issue-triage/manifest.json\" with { type: \"json\" };\nimport entry19 from \"./catalog/upstream-fork-sync/manifest.json\" with { type: \"json\" };\nimport entry20 from \"./catalog/incident-retrospective-drafter/manifest.json\" with { type: \"json\" };\nimport entry21 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 entry18,\n entry19,\n entry20,\n entry21,\n];\n"],"x_google_ignoreList":[0],"mappings":"mzCA2BA,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,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,OACF"}
@@ -6,19 +6,22 @@ import i from "./catalog/slack-standup-digest/manifest.js";
6
6
  import a from "./catalog/slack-channel-monitor/manifest.js";
7
7
  import o from "./catalog/linear-triage-assistant/manifest.js";
8
8
  import s from "./catalog/linear-issue-to-github-pr/manifest.js";
9
- import c from "./catalog/linear-issue-to-gitlab-mr/manifest.js";
10
- import l from "./catalog/linear-issue-to-bitbucket-pr/manifest.js";
11
- import u from "./catalog/jira-issue-to-pr/manifest.js";
12
- import d from "./catalog/qa-changes/manifest.js";
13
- import f from "./catalog/jira-issue-to-gitlab-mr/manifest.js";
14
- import p from "./catalog/research-brief-writer/manifest.js";
15
- import m from "./catalog/jira-issue-to-bitbucket-pr/manifest.js";
16
- import h from "./catalog/github-agents-md-maintainer/manifest.js";
17
- import g from "./catalog/upstream-fork-sync/manifest.js";
18
- import _ from "./catalog/incident-retrospective-drafter/manifest.js";
19
- import v from "./catalog/news-digest/manifest.js";
9
+ import c from "./catalog/gitlab-issue-to-mr/manifest.js";
10
+ import l from "./catalog/linear-issue-to-gitlab-mr/manifest.js";
11
+ import u from "./catalog/linear-issue-to-bitbucket-pr/manifest.js";
12
+ import d from "./catalog/jira-issue-to-pr/manifest.js";
13
+ import f from "./catalog/qa-changes/manifest.js";
14
+ import p from "./catalog/jira-issue-to-gitlab-mr/manifest.js";
15
+ import m from "./catalog/research-brief-writer/manifest.js";
16
+ import h from "./catalog/jira-issue-to-bitbucket-pr/manifest.js";
17
+ import g from "./catalog/github-agents-md-maintainer/manifest.js";
18
+ import _ from "./catalog/github-delivery-watchdog/manifest.js";
19
+ import v from "./catalog/github-issue-triage/manifest.js";
20
+ import y from "./catalog/upstream-fork-sync/manifest.js";
21
+ import b from "./catalog/incident-retrospective-drafter/manifest.js";
22
+ import x from "./catalog/news-digest/manifest.js";
20
23
  //#region node_modules/@openhands/extensions/automations/catalog-index.js
21
- var y = [
24
+ var S = [
22
25
  e,
23
26
  t,
24
27
  n,
@@ -37,9 +40,12 @@ var y = [
37
40
  h,
38
41
  g,
39
42
  _,
40
- v
43
+ v,
44
+ y,
45
+ b,
46
+ x
41
47
  ];
42
48
  //#endregion
43
- export { y as AUTOMATION_CATALOG_ENTRIES };
49
+ export { S as AUTOMATION_CATALOG_ENTRIES };
44
50
 
45
51
  //# 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","entry12","entry13","entry14","entry15","entry16","entry17","entry18"],"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/custom-automation/manifest.json\" with { type: \"json\" };\nimport entry2 from \"./catalog/github-repo-monitor/manifest.json\" with { type: \"json\" };\nimport entry3 from \"./catalog/github-issue-to-pr/manifest.json\" with { type: \"json\" };\nimport entry4 from \"./catalog/slack-standup-digest/manifest.json\" with { type: \"json\" };\nimport entry5 from \"./catalog/slack-channel-monitor/manifest.json\" with { type: \"json\" };\nimport entry6 from \"./catalog/linear-triage-assistant/manifest.json\" with { type: \"json\" };\nimport entry7 from \"./catalog/linear-issue-to-github-pr/manifest.json\" with { type: \"json\" };\nimport entry8 from \"./catalog/linear-issue-to-gitlab-mr/manifest.json\" with { type: \"json\" };\nimport entry9 from \"./catalog/linear-issue-to-bitbucket-pr/manifest.json\" with { type: \"json\" };\nimport entry10 from \"./catalog/jira-issue-to-pr/manifest.json\" with { type: \"json\" };\nimport entry11 from \"./catalog/qa-changes/manifest.json\" with { type: \"json\" };\nimport entry12 from \"./catalog/jira-issue-to-gitlab-mr/manifest.json\" with { type: \"json\" };\nimport entry13 from \"./catalog/research-brief-writer/manifest.json\" with { type: \"json\" };\nimport entry14 from \"./catalog/jira-issue-to-bitbucket-pr/manifest.json\" with { type: \"json\" };\nimport entry15 from \"./catalog/github-agents-md-maintainer/manifest.json\" with { type: \"json\" };\nimport entry16 from \"./catalog/upstream-fork-sync/manifest.json\" with { type: \"json\" };\nimport entry17 from \"./catalog/incident-retrospective-drafter/manifest.json\" with { type: \"json\" };\nimport entry18 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 entry18,\n];\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;;;;;AAwBA,IAAa,IAA6B;CACxCA;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;AACF"}
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","entry18","entry19","entry20","entry21"],"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/custom-automation/manifest.json\" with { type: \"json\" };\nimport entry2 from \"./catalog/github-repo-monitor/manifest.json\" with { type: \"json\" };\nimport entry3 from \"./catalog/github-issue-to-pr/manifest.json\" with { type: \"json\" };\nimport entry4 from \"./catalog/slack-standup-digest/manifest.json\" with { type: \"json\" };\nimport entry5 from \"./catalog/slack-channel-monitor/manifest.json\" with { type: \"json\" };\nimport entry6 from \"./catalog/linear-triage-assistant/manifest.json\" with { type: \"json\" };\nimport entry7 from \"./catalog/linear-issue-to-github-pr/manifest.json\" with { type: \"json\" };\nimport entry8 from \"./catalog/gitlab-issue-to-mr/manifest.json\" with { type: \"json\" };\nimport entry9 from \"./catalog/linear-issue-to-gitlab-mr/manifest.json\" with { type: \"json\" };\nimport entry10 from \"./catalog/linear-issue-to-bitbucket-pr/manifest.json\" with { type: \"json\" };\nimport entry11 from \"./catalog/jira-issue-to-pr/manifest.json\" with { type: \"json\" };\nimport entry12 from \"./catalog/qa-changes/manifest.json\" with { type: \"json\" };\nimport entry13 from \"./catalog/jira-issue-to-gitlab-mr/manifest.json\" with { type: \"json\" };\nimport entry14 from \"./catalog/research-brief-writer/manifest.json\" with { type: \"json\" };\nimport entry15 from \"./catalog/jira-issue-to-bitbucket-pr/manifest.json\" with { type: \"json\" };\nimport entry16 from \"./catalog/github-agents-md-maintainer/manifest.json\" with { type: \"json\" };\nimport entry17 from \"./catalog/github-delivery-watchdog/manifest.json\" with { type: \"json\" };\nimport entry18 from \"./catalog/github-issue-triage/manifest.json\" with { type: \"json\" };\nimport entry19 from \"./catalog/upstream-fork-sync/manifest.json\" with { type: \"json\" };\nimport entry20 from \"./catalog/incident-retrospective-drafter/manifest.json\" with { type: \"json\" };\nimport entry21 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 entry18,\n entry19,\n entry20,\n entry21,\n];\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA2BA,IAAa,IAA6B;CACxCA;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;AACF"}
@@ -0,0 +1,2 @@
1
+ require("../../../../../_virtual/_rolldown/runtime.cjs");var e={id:`reportportal`,name:`ReportPortal`,description:`Query test launches, test items, history, and analysis from your ReportPortal test automation dashboard.`,categories:[`Engineering`,`Analytics`],appUrl:`https://reportportal.io`,docsUrl:`https://reportportal.io/docs/external-integrations/MCPServer/`,notes:`Uses ReportPortal's official MCP Server, run locally as a Docker container in the default stdio mode. ReportPortal is self-hosted, so there is no public MCP endpoint; the container connects to your own instance. Provide your ReportPortal host URL and an API token from your ReportPortal Profile page.`,installHint:`RP_HOST (the URL of your ReportPortal instance) and RP_API_TOKEN (from your ReportPortal Profile page) are required. RP_PROJECT (a default project name) is optional. Requires a container runtime such as Docker.`,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`reportportal`,command:`docker`,args:[`run`,`--init`,`--pull=always`,`-i`,`--rm`,`-e`,`RP_API_TOKEN`,`-e`,`RP_HOST`,`-e`,`RP_PROJECT`,`reportportal/mcp-server`],envFields:[{key:`RP_API_TOKEN`,label:`ReportPortal API token`,type:`password`,required:!0,helperText:`API token generated on your ReportPortal Profile page.`,helperLink:`https://reportportal.io/docs/external-integrations/MCPServer/`},{key:`RP_HOST`,label:`ReportPortal host URL`,type:`text`,required:!0,placeholder:`https://your-reportportal-instance.com`,helperText:`The base URL of your ReportPortal instance.`},{key:`RP_PROJECT`,label:`Default project name`,type:`text`,required:!1,placeholder:`my-project`,helperText:`Optional default ReportPortal project name to use for requests.`}]},auth:{strategy:`api_key`}}],iconBg:`#00B4D5`,keywords:[`test reporting`,`test automation`,`qa`,`launches`,`test analytics`,`quality gate`]};exports.default=e;
2
+ //# sourceMappingURL=reportportal.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reportportal.cjs","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/reportportal.json"],"sourcesContent":["{\n \"id\": \"reportportal\",\n \"name\": \"ReportPortal\",\n \"description\": \"Query test launches, test items, history, and analysis from your ReportPortal test automation dashboard.\",\n \"categories\": [\n \"Engineering\",\n \"Analytics\"\n ],\n \"appUrl\": \"https://reportportal.io\",\n \"docsUrl\": \"https://reportportal.io/docs/external-integrations/MCPServer/\",\n \"notes\": \"Uses ReportPortal's official MCP Server, run locally as a Docker container in the default stdio mode. ReportPortal is self-hosted, so there is no public MCP endpoint; the container connects to your own instance. Provide your ReportPortal host URL and an API token from your ReportPortal Profile page.\",\n \"installHint\": \"RP_HOST (the URL of your ReportPortal instance) and RP_API_TOKEN (from your ReportPortal Profile page) are required. RP_PROJECT (a default project name) is optional. Requires a container runtime such as Docker.\",\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"reportportal\",\n \"command\": \"docker\",\n \"args\": [\n \"run\",\n \"--init\",\n \"--pull=always\",\n \"-i\",\n \"--rm\",\n \"-e\",\n \"RP_API_TOKEN\",\n \"-e\",\n \"RP_HOST\",\n \"-e\",\n \"RP_PROJECT\",\n \"reportportal/mcp-server\"\n ],\n \"envFields\": [\n {\n \"key\": \"RP_API_TOKEN\",\n \"label\": \"ReportPortal API token\",\n \"type\": \"password\",\n \"required\": true,\n \"helperText\": \"API token generated on your ReportPortal Profile page.\",\n \"helperLink\": \"https://reportportal.io/docs/external-integrations/MCPServer/\"\n },\n {\n \"key\": \"RP_HOST\",\n \"label\": \"ReportPortal host URL\",\n \"type\": \"text\",\n \"required\": true,\n \"placeholder\": \"https://your-reportportal-instance.com\",\n \"helperText\": \"The base URL of your ReportPortal instance.\"\n },\n {\n \"key\": \"RP_PROJECT\",\n \"label\": \"Default project name\",\n \"type\": \"text\",\n \"required\": false,\n \"placeholder\": \"my-project\",\n \"helperText\": \"Optional default ReportPortal project name to use for requests.\"\n }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ],\n \"iconBg\": \"#00B4D5\",\n \"keywords\": [\n \"test reporting\",\n \"test automation\",\n \"qa\",\n \"launches\",\n \"test analytics\",\n \"quality gate\"\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
@@ -0,0 +1,73 @@
1
+ var e = {
2
+ id: "reportportal",
3
+ name: "ReportPortal",
4
+ description: "Query test launches, test items, history, and analysis from your ReportPortal test automation dashboard.",
5
+ categories: ["Engineering", "Analytics"],
6
+ appUrl: "https://reportportal.io",
7
+ docsUrl: "https://reportportal.io/docs/external-integrations/MCPServer/",
8
+ notes: "Uses ReportPortal's official MCP Server, run locally as a Docker container in the default stdio mode. ReportPortal is self-hosted, so there is no public MCP endpoint; the container connects to your own instance. Provide your ReportPortal host URL and an API token from your ReportPortal Profile page.",
9
+ installHint: "RP_HOST (the URL of your ReportPortal instance) and RP_API_TOKEN (from your ReportPortal Profile page) are required. RP_PROJECT (a default project name) is optional. Requires a container runtime such as Docker.",
10
+ connectionOptions: [{
11
+ id: "api",
12
+ provider: "mcp",
13
+ transport: {
14
+ kind: "stdio",
15
+ serverName: "reportportal",
16
+ command: "docker",
17
+ args: [
18
+ "run",
19
+ "--init",
20
+ "--pull=always",
21
+ "-i",
22
+ "--rm",
23
+ "-e",
24
+ "RP_API_TOKEN",
25
+ "-e",
26
+ "RP_HOST",
27
+ "-e",
28
+ "RP_PROJECT",
29
+ "reportportal/mcp-server"
30
+ ],
31
+ envFields: [
32
+ {
33
+ key: "RP_API_TOKEN",
34
+ label: "ReportPortal API token",
35
+ type: "password",
36
+ required: !0,
37
+ helperText: "API token generated on your ReportPortal Profile page.",
38
+ helperLink: "https://reportportal.io/docs/external-integrations/MCPServer/"
39
+ },
40
+ {
41
+ key: "RP_HOST",
42
+ label: "ReportPortal host URL",
43
+ type: "text",
44
+ required: !0,
45
+ placeholder: "https://your-reportportal-instance.com",
46
+ helperText: "The base URL of your ReportPortal instance."
47
+ },
48
+ {
49
+ key: "RP_PROJECT",
50
+ label: "Default project name",
51
+ type: "text",
52
+ required: !1,
53
+ placeholder: "my-project",
54
+ helperText: "Optional default ReportPortal project name to use for requests."
55
+ }
56
+ ]
57
+ },
58
+ auth: { strategy: "api_key" }
59
+ }],
60
+ iconBg: "#00B4D5",
61
+ keywords: [
62
+ "test reporting",
63
+ "test automation",
64
+ "qa",
65
+ "launches",
66
+ "test analytics",
67
+ "quality gate"
68
+ ]
69
+ };
70
+ //#endregion
71
+ export { e as default };
72
+
73
+ //# sourceMappingURL=reportportal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reportportal.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/reportportal.json"],"sourcesContent":["{\n \"id\": \"reportportal\",\n \"name\": \"ReportPortal\",\n \"description\": \"Query test launches, test items, history, and analysis from your ReportPortal test automation dashboard.\",\n \"categories\": [\n \"Engineering\",\n \"Analytics\"\n ],\n \"appUrl\": \"https://reportportal.io\",\n \"docsUrl\": \"https://reportportal.io/docs/external-integrations/MCPServer/\",\n \"notes\": \"Uses ReportPortal's official MCP Server, run locally as a Docker container in the default stdio mode. ReportPortal is self-hosted, so there is no public MCP endpoint; the container connects to your own instance. Provide your ReportPortal host URL and an API token from your ReportPortal Profile page.\",\n \"installHint\": \"RP_HOST (the URL of your ReportPortal instance) and RP_API_TOKEN (from your ReportPortal Profile page) are required. RP_PROJECT (a default project name) is optional. Requires a container runtime such as Docker.\",\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"reportportal\",\n \"command\": \"docker\",\n \"args\": [\n \"run\",\n \"--init\",\n \"--pull=always\",\n \"-i\",\n \"--rm\",\n \"-e\",\n \"RP_API_TOKEN\",\n \"-e\",\n \"RP_HOST\",\n \"-e\",\n \"RP_PROJECT\",\n \"reportportal/mcp-server\"\n ],\n \"envFields\": [\n {\n \"key\": \"RP_API_TOKEN\",\n \"label\": \"ReportPortal API token\",\n \"type\": \"password\",\n \"required\": true,\n \"helperText\": \"API token generated on your ReportPortal Profile page.\",\n \"helperLink\": \"https://reportportal.io/docs/external-integrations/MCPServer/\"\n },\n {\n \"key\": \"RP_HOST\",\n \"label\": \"ReportPortal host URL\",\n \"type\": \"text\",\n \"required\": true,\n \"placeholder\": \"https://your-reportportal-instance.com\",\n \"helperText\": \"The base URL of your ReportPortal instance.\"\n },\n {\n \"key\": \"RP_PROJECT\",\n \"label\": \"Default project name\",\n \"type\": \"text\",\n \"required\": false,\n \"placeholder\": \"my-project\",\n \"helperText\": \"Optional default ReportPortal project name to use for requests.\"\n }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ],\n \"iconBg\": \"#00B4D5\",\n \"keywords\": [\n \"test reporting\",\n \"test automation\",\n \"qa\",\n \"launches\",\n \"test analytics\",\n \"quality gate\"\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
@@ -1,2 +1,2 @@
1
- require("../../../../_virtual/_rolldown/runtime.cjs");const e=require("./catalog/github.cjs"),t=require("./catalog/slack.cjs"),n=require("./catalog/tavily.cjs"),r=require("./catalog/atlassian.cjs"),i=require("./catalog/linear.cjs"),a=require("./catalog/notion.cjs"),o=require("./catalog/vanta.cjs"),s=require("./catalog/gitlab.cjs"),c=require("./catalog/ordinal.cjs"),l=require("./catalog/elevenlabs.cjs"),u=require("./catalog/bitbucket.cjs"),d=require("./catalog/xero.cjs"),f=require("./catalog/quickbooks.cjs"),p=require("./catalog/sonarqube.cjs"),m=require("./catalog/okta.cjs"),h=require("./catalog/netlify.cjs"),g=require("./catalog/vercel.cjs"),_=require("./catalog/supabase.cjs"),v=require("./catalog/posthog.cjs"),y=require("./catalog/sentry.cjs"),b=require("./catalog/datadog.cjs"),x=require("./catalog/canva.cjs"),S=require("./catalog/miro.cjs"),C=require("./catalog/webflow.cjs"),w=require("./catalog/zoom.cjs"),T=require("./catalog/discord.cjs"),E=require("./catalog/stripe.cjs"),D=require("./catalog/intercom.cjs"),O=require("./catalog/hubspot.cjs"),k=require("./catalog/salesforce.cjs"),A=require("./catalog/sharepoint.cjs"),j=require("./catalog/onedrive.cjs"),M=require("./catalog/microsoft-teams.cjs"),N=require("./catalog/microsoft-outlook.cjs"),P=require("./catalog/box.cjs"),F=require("./catalog/airtable.cjs"),I=require("./catalog/monday.cjs"),L=require("./catalog/trello.cjs"),R=require("./catalog/asana.cjs"),z=require("./catalog/confluence.cjs"),B=require("./catalog/jira.cjs"),V=require("./catalog/google-calendar.cjs"),H=require("./catalog/gmail.cjs"),U=require("./catalog/google-sheets.cjs"),W=require("./catalog/google-drive.cjs"),G=require("./catalog/figma.cjs"),K=require("./catalog/google-docs.cjs"),q=require("./catalog/apify.cjs"),J=require("./catalog/atlassian-rovo.cjs"),Y=require("./catalog/brave-search.cjs"),X=require("./catalog/browser-mcp.cjs"),Z=require("./catalog/clickhouse.cjs"),Q=require("./catalog/cloudflare-bindings.cjs"),$=require("./catalog/cloudflare-browser-rendering.cjs"),ee=require("./catalog/cloudflare-builds.cjs"),te=require("./catalog/cloudflare-docs.cjs"),ne=require("./catalog/cloudflare-observability.cjs"),re=require("./catalog/deepwiki.cjs"),ie=require("./catalog/everything.cjs"),ae=require("./catalog/exa.cjs"),oe=require("./catalog/fetch.cjs"),se=require("./catalog/filesystem.cjs"),ce=require("./catalog/firecrawl.cjs"),le=require("./catalog/git.cjs"),ue=require("./catalog/huggingface.cjs"),de=require("./catalog/kagi.cjs"),fe=require("./catalog/memory.cjs"),pe=require("./catalog/mongodb.cjs"),me=require("./catalog/neon.cjs"),he=require("./catalog/obsidian.cjs"),ge=require("./catalog/paypal.cjs"),_e=require("./catalog/playwright.cjs"),ve=require("./catalog/redis.cjs"),ye=require("./catalog/resend.cjs"),be=require("./catalog/sequential-thinking.cjs"),xe=require("./catalog/superhuman-mail.cjs"),Se=require("./catalog/time.cjs");var Ce=[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,v.default,y.default,b.default,x.default,S.default,C.default,w.default,T.default,E.default,D.default,O.default,k.default,A.default,j.default,M.default,N.default,P.default,F.default,I.default,L.default,R.default,z.default,B.default,V.default,H.default,U.default,W.default,G.default,K.default,q.default,J.default,Y.default,X.default,Z.default,Q.default,$.default,ee.default,te.default,ne.default,re.default,ie.default,ae.default,oe.default,se.default,ce.default,le.default,ue.default,de.default,fe.default,pe.default,me.default,he.default,ge.default,_e.default,ve.default,ye.default,be.default,xe.default,Se.default];exports.INTEGRATION_CATALOG_ENTRIES=Ce;
1
+ require("../../../../_virtual/_rolldown/runtime.cjs");const e=require("./catalog/github.cjs"),t=require("./catalog/slack.cjs"),n=require("./catalog/tavily.cjs"),r=require("./catalog/atlassian.cjs"),i=require("./catalog/linear.cjs"),a=require("./catalog/notion.cjs"),o=require("./catalog/vanta.cjs"),s=require("./catalog/gitlab.cjs"),c=require("./catalog/ordinal.cjs"),l=require("./catalog/elevenlabs.cjs"),u=require("./catalog/bitbucket.cjs"),d=require("./catalog/xero.cjs"),f=require("./catalog/quickbooks.cjs"),p=require("./catalog/sonarqube.cjs"),m=require("./catalog/okta.cjs"),h=require("./catalog/netlify.cjs"),g=require("./catalog/vercel.cjs"),_=require("./catalog/supabase.cjs"),v=require("./catalog/posthog.cjs"),y=require("./catalog/sentry.cjs"),b=require("./catalog/datadog.cjs"),x=require("./catalog/canva.cjs"),S=require("./catalog/miro.cjs"),C=require("./catalog/webflow.cjs"),w=require("./catalog/zoom.cjs"),T=require("./catalog/discord.cjs"),E=require("./catalog/stripe.cjs"),D=require("./catalog/intercom.cjs"),O=require("./catalog/hubspot.cjs"),k=require("./catalog/salesforce.cjs"),A=require("./catalog/sharepoint.cjs"),j=require("./catalog/onedrive.cjs"),M=require("./catalog/microsoft-teams.cjs"),N=require("./catalog/microsoft-outlook.cjs"),P=require("./catalog/box.cjs"),F=require("./catalog/airtable.cjs"),I=require("./catalog/monday.cjs"),L=require("./catalog/trello.cjs"),R=require("./catalog/asana.cjs"),z=require("./catalog/confluence.cjs"),B=require("./catalog/jira.cjs"),V=require("./catalog/google-calendar.cjs"),H=require("./catalog/gmail.cjs"),U=require("./catalog/google-sheets.cjs"),W=require("./catalog/google-drive.cjs"),G=require("./catalog/figma.cjs"),K=require("./catalog/google-docs.cjs"),q=require("./catalog/apify.cjs"),J=require("./catalog/atlassian-rovo.cjs"),Y=require("./catalog/brave-search.cjs"),X=require("./catalog/browser-mcp.cjs"),Z=require("./catalog/clickhouse.cjs"),Q=require("./catalog/cloudflare-bindings.cjs"),$=require("./catalog/cloudflare-browser-rendering.cjs"),ee=require("./catalog/cloudflare-builds.cjs"),te=require("./catalog/cloudflare-docs.cjs"),ne=require("./catalog/cloudflare-observability.cjs"),re=require("./catalog/deepwiki.cjs"),ie=require("./catalog/everything.cjs"),ae=require("./catalog/exa.cjs"),oe=require("./catalog/fetch.cjs"),se=require("./catalog/filesystem.cjs"),ce=require("./catalog/firecrawl.cjs"),le=require("./catalog/git.cjs"),ue=require("./catalog/huggingface.cjs"),de=require("./catalog/kagi.cjs"),fe=require("./catalog/memory.cjs"),pe=require("./catalog/mongodb.cjs"),me=require("./catalog/neon.cjs"),he=require("./catalog/obsidian.cjs"),ge=require("./catalog/paypal.cjs"),_e=require("./catalog/playwright.cjs"),ve=require("./catalog/redis.cjs"),ye=require("./catalog/reportportal.cjs"),be=require("./catalog/resend.cjs"),xe=require("./catalog/sequential-thinking.cjs"),Se=require("./catalog/superhuman-mail.cjs"),Ce=require("./catalog/time.cjs");var we=[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,v.default,y.default,b.default,x.default,S.default,C.default,w.default,T.default,E.default,D.default,O.default,k.default,A.default,j.default,M.default,N.default,P.default,F.default,I.default,L.default,R.default,z.default,B.default,V.default,H.default,U.default,W.default,G.default,K.default,q.default,J.default,Y.default,X.default,Z.default,Q.default,$.default,ee.default,te.default,ne.default,re.default,ie.default,ae.default,oe.default,se.default,ce.default,le.default,ue.default,de.default,fe.default,pe.default,me.default,he.default,ge.default,_e.default,ve.default,ye.default,be.default,xe.default,Se.default,Ce.default];exports.INTEGRATION_CATALOG_ENTRIES=we;
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","entry12","entry13","entry14","entry15","entry16","entry17","entry18","entry19","entry20","entry21","entry22","entry23","entry24","entry25","entry26","entry27","entry28","entry29","entry30","entry31","entry32","entry33","entry34","entry35","entry36","entry37","entry38","entry39","entry40","entry41","entry42","entry43","entry44","entry45","entry46","entry47","entry48","entry49","entry50","entry51","entry52","entry53","entry54","entry55","entry56","entry57","entry58","entry59","entry60","entry61","entry62","entry63","entry64","entry65","entry66","entry67","entry68","entry69","entry70","entry71","entry72","entry73","entry74","entry75","entry76"],"sources":["../../../../../node_modules/@openhands/extensions/integrations/catalog-index.js"],"sourcesContent":["// This file is auto-generated by scripts/build-integration-catalog.mjs.\n// Do not edit it manually. To update it after changing integrations/catalog/*.json,\n// run: npm run build:integrations\n\nimport entry0 from \"./catalog/github.json\" with { type: \"json\" };\nimport entry1 from \"./catalog/slack.json\" with { type: \"json\" };\nimport entry2 from \"./catalog/tavily.json\" with { type: \"json\" };\nimport entry3 from \"./catalog/atlassian.json\" with { type: \"json\" };\nimport entry4 from \"./catalog/linear.json\" with { type: \"json\" };\nimport entry5 from \"./catalog/notion.json\" with { type: \"json\" };\nimport entry6 from \"./catalog/vanta.json\" with { type: \"json\" };\nimport entry7 from \"./catalog/gitlab.json\" with { type: \"json\" };\nimport entry8 from \"./catalog/ordinal.json\" with { type: \"json\" };\nimport entry9 from \"./catalog/elevenlabs.json\" with { type: \"json\" };\nimport entry10 from \"./catalog/bitbucket.json\" with { type: \"json\" };\nimport entry11 from \"./catalog/xero.json\" with { type: \"json\" };\nimport entry12 from \"./catalog/quickbooks.json\" with { type: \"json\" };\nimport entry13 from \"./catalog/sonarqube.json\" with { type: \"json\" };\nimport entry14 from \"./catalog/okta.json\" with { type: \"json\" };\nimport entry15 from \"./catalog/netlify.json\" with { type: \"json\" };\nimport entry16 from \"./catalog/vercel.json\" with { type: \"json\" };\nimport entry17 from \"./catalog/supabase.json\" with { type: \"json\" };\nimport entry18 from \"./catalog/posthog.json\" with { type: \"json\" };\nimport entry19 from \"./catalog/sentry.json\" with { type: \"json\" };\nimport entry20 from \"./catalog/datadog.json\" with { type: \"json\" };\nimport entry21 from \"./catalog/canva.json\" with { type: \"json\" };\nimport entry22 from \"./catalog/miro.json\" with { type: \"json\" };\nimport entry23 from \"./catalog/webflow.json\" with { type: \"json\" };\nimport entry24 from \"./catalog/zoom.json\" with { type: \"json\" };\nimport entry25 from \"./catalog/discord.json\" with { type: \"json\" };\nimport entry26 from \"./catalog/stripe.json\" with { type: \"json\" };\nimport entry27 from \"./catalog/intercom.json\" with { type: \"json\" };\nimport entry28 from \"./catalog/hubspot.json\" with { type: \"json\" };\nimport entry29 from \"./catalog/salesforce.json\" with { type: \"json\" };\nimport entry30 from \"./catalog/sharepoint.json\" with { type: \"json\" };\nimport entry31 from \"./catalog/onedrive.json\" with { type: \"json\" };\nimport entry32 from \"./catalog/microsoft-teams.json\" with { type: \"json\" };\nimport entry33 from \"./catalog/microsoft-outlook.json\" with { type: \"json\" };\nimport entry34 from \"./catalog/box.json\" with { type: \"json\" };\nimport entry35 from \"./catalog/airtable.json\" with { type: \"json\" };\nimport entry36 from \"./catalog/monday.json\" with { type: \"json\" };\nimport entry37 from \"./catalog/trello.json\" with { type: \"json\" };\nimport entry38 from \"./catalog/asana.json\" with { type: \"json\" };\nimport entry39 from \"./catalog/confluence.json\" with { type: \"json\" };\nimport entry40 from \"./catalog/jira.json\" with { type: \"json\" };\nimport entry41 from \"./catalog/google-calendar.json\" with { type: \"json\" };\nimport entry42 from \"./catalog/gmail.json\" with { type: \"json\" };\nimport entry43 from \"./catalog/google-sheets.json\" with { type: \"json\" };\nimport entry44 from \"./catalog/google-drive.json\" with { type: \"json\" };\nimport entry45 from \"./catalog/figma.json\" with { type: \"json\" };\nimport entry46 from \"./catalog/google-docs.json\" with { type: \"json\" };\nimport entry47 from \"./catalog/apify.json\" with { type: \"json\" };\nimport entry48 from \"./catalog/atlassian-rovo.json\" with { type: \"json\" };\nimport entry49 from \"./catalog/brave-search.json\" with { type: \"json\" };\nimport entry50 from \"./catalog/browser-mcp.json\" with { type: \"json\" };\nimport entry51 from \"./catalog/clickhouse.json\" with { type: \"json\" };\nimport entry52 from \"./catalog/cloudflare-bindings.json\" with { type: \"json\" };\nimport entry53 from \"./catalog/cloudflare-browser-rendering.json\" with { type: \"json\" };\nimport entry54 from \"./catalog/cloudflare-builds.json\" with { type: \"json\" };\nimport entry55 from \"./catalog/cloudflare-docs.json\" with { type: \"json\" };\nimport entry56 from \"./catalog/cloudflare-observability.json\" with { type: \"json\" };\nimport entry57 from \"./catalog/deepwiki.json\" with { type: \"json\" };\nimport entry58 from \"./catalog/everything.json\" with { type: \"json\" };\nimport entry59 from \"./catalog/exa.json\" with { type: \"json\" };\nimport entry60 from \"./catalog/fetch.json\" with { type: \"json\" };\nimport entry61 from \"./catalog/filesystem.json\" with { type: \"json\" };\nimport entry62 from \"./catalog/firecrawl.json\" with { type: \"json\" };\nimport entry63 from \"./catalog/git.json\" with { type: \"json\" };\nimport entry64 from \"./catalog/huggingface.json\" with { type: \"json\" };\nimport entry65 from \"./catalog/kagi.json\" with { type: \"json\" };\nimport entry66 from \"./catalog/memory.json\" with { type: \"json\" };\nimport entry67 from \"./catalog/mongodb.json\" with { type: \"json\" };\nimport entry68 from \"./catalog/neon.json\" with { type: \"json\" };\nimport entry69 from \"./catalog/obsidian.json\" with { type: \"json\" };\nimport entry70 from \"./catalog/paypal.json\" with { type: \"json\" };\nimport entry71 from \"./catalog/playwright.json\" with { type: \"json\" };\nimport entry72 from \"./catalog/redis.json\" with { type: \"json\" };\nimport entry73 from \"./catalog/resend.json\" with { type: \"json\" };\nimport entry74 from \"./catalog/sequential-thinking.json\" with { type: \"json\" };\nimport entry75 from \"./catalog/superhuman-mail.json\" with { type: \"json\" };\nimport entry76 from \"./catalog/time.json\" with { type: \"json\" };\n\nexport const INTEGRATION_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 entry18,\n entry19,\n entry20,\n entry21,\n entry22,\n entry23,\n entry24,\n entry25,\n entry26,\n entry27,\n entry28,\n entry29,\n entry30,\n entry31,\n entry32,\n entry33,\n entry34,\n entry35,\n entry36,\n entry37,\n entry38,\n entry39,\n entry40,\n entry41,\n entry42,\n entry43,\n entry44,\n entry45,\n entry46,\n entry47,\n entry48,\n entry49,\n entry50,\n entry51,\n entry52,\n entry53,\n entry54,\n entry55,\n entry56,\n entry57,\n entry58,\n entry59,\n entry60,\n entry61,\n entry62,\n entry63,\n entry64,\n entry65,\n entry66,\n entry67,\n entry68,\n entry69,\n entry70,\n entry71,\n entry72,\n entry73,\n entry74,\n entry75,\n entry76,\n];\n"],"x_google_ignoreList":[0],"mappings":"q1FAkFA,IAAa,GAA8B,CACzCA,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,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,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,QACAC,EAAAA,QACAC,EAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,OACF"}
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","entry18","entry19","entry20","entry21","entry22","entry23","entry24","entry25","entry26","entry27","entry28","entry29","entry30","entry31","entry32","entry33","entry34","entry35","entry36","entry37","entry38","entry39","entry40","entry41","entry42","entry43","entry44","entry45","entry46","entry47","entry48","entry49","entry50","entry51","entry52","entry53","entry54","entry55","entry56","entry57","entry58","entry59","entry60","entry61","entry62","entry63","entry64","entry65","entry66","entry67","entry68","entry69","entry70","entry71","entry72","entry73","entry74","entry75","entry76","entry77"],"sources":["../../../../../node_modules/@openhands/extensions/integrations/catalog-index.js"],"sourcesContent":["// This file is auto-generated by scripts/build-integration-catalog.mjs.\n// Do not edit it manually. To update it after changing integrations/catalog/*.json,\n// run: npm run build:integrations\n\nimport entry0 from \"./catalog/github.json\" with { type: \"json\" };\nimport entry1 from \"./catalog/slack.json\" with { type: \"json\" };\nimport entry2 from \"./catalog/tavily.json\" with { type: \"json\" };\nimport entry3 from \"./catalog/atlassian.json\" with { type: \"json\" };\nimport entry4 from \"./catalog/linear.json\" with { type: \"json\" };\nimport entry5 from \"./catalog/notion.json\" with { type: \"json\" };\nimport entry6 from \"./catalog/vanta.json\" with { type: \"json\" };\nimport entry7 from \"./catalog/gitlab.json\" with { type: \"json\" };\nimport entry8 from \"./catalog/ordinal.json\" with { type: \"json\" };\nimport entry9 from \"./catalog/elevenlabs.json\" with { type: \"json\" };\nimport entry10 from \"./catalog/bitbucket.json\" with { type: \"json\" };\nimport entry11 from \"./catalog/xero.json\" with { type: \"json\" };\nimport entry12 from \"./catalog/quickbooks.json\" with { type: \"json\" };\nimport entry13 from \"./catalog/sonarqube.json\" with { type: \"json\" };\nimport entry14 from \"./catalog/okta.json\" with { type: \"json\" };\nimport entry15 from \"./catalog/netlify.json\" with { type: \"json\" };\nimport entry16 from \"./catalog/vercel.json\" with { type: \"json\" };\nimport entry17 from \"./catalog/supabase.json\" with { type: \"json\" };\nimport entry18 from \"./catalog/posthog.json\" with { type: \"json\" };\nimport entry19 from \"./catalog/sentry.json\" with { type: \"json\" };\nimport entry20 from \"./catalog/datadog.json\" with { type: \"json\" };\nimport entry21 from \"./catalog/canva.json\" with { type: \"json\" };\nimport entry22 from \"./catalog/miro.json\" with { type: \"json\" };\nimport entry23 from \"./catalog/webflow.json\" with { type: \"json\" };\nimport entry24 from \"./catalog/zoom.json\" with { type: \"json\" };\nimport entry25 from \"./catalog/discord.json\" with { type: \"json\" };\nimport entry26 from \"./catalog/stripe.json\" with { type: \"json\" };\nimport entry27 from \"./catalog/intercom.json\" with { type: \"json\" };\nimport entry28 from \"./catalog/hubspot.json\" with { type: \"json\" };\nimport entry29 from \"./catalog/salesforce.json\" with { type: \"json\" };\nimport entry30 from \"./catalog/sharepoint.json\" with { type: \"json\" };\nimport entry31 from \"./catalog/onedrive.json\" with { type: \"json\" };\nimport entry32 from \"./catalog/microsoft-teams.json\" with { type: \"json\" };\nimport entry33 from \"./catalog/microsoft-outlook.json\" with { type: \"json\" };\nimport entry34 from \"./catalog/box.json\" with { type: \"json\" };\nimport entry35 from \"./catalog/airtable.json\" with { type: \"json\" };\nimport entry36 from \"./catalog/monday.json\" with { type: \"json\" };\nimport entry37 from \"./catalog/trello.json\" with { type: \"json\" };\nimport entry38 from \"./catalog/asana.json\" with { type: \"json\" };\nimport entry39 from \"./catalog/confluence.json\" with { type: \"json\" };\nimport entry40 from \"./catalog/jira.json\" with { type: \"json\" };\nimport entry41 from \"./catalog/google-calendar.json\" with { type: \"json\" };\nimport entry42 from \"./catalog/gmail.json\" with { type: \"json\" };\nimport entry43 from \"./catalog/google-sheets.json\" with { type: \"json\" };\nimport entry44 from \"./catalog/google-drive.json\" with { type: \"json\" };\nimport entry45 from \"./catalog/figma.json\" with { type: \"json\" };\nimport entry46 from \"./catalog/google-docs.json\" with { type: \"json\" };\nimport entry47 from \"./catalog/apify.json\" with { type: \"json\" };\nimport entry48 from \"./catalog/atlassian-rovo.json\" with { type: \"json\" };\nimport entry49 from \"./catalog/brave-search.json\" with { type: \"json\" };\nimport entry50 from \"./catalog/browser-mcp.json\" with { type: \"json\" };\nimport entry51 from \"./catalog/clickhouse.json\" with { type: \"json\" };\nimport entry52 from \"./catalog/cloudflare-bindings.json\" with { type: \"json\" };\nimport entry53 from \"./catalog/cloudflare-browser-rendering.json\" with { type: \"json\" };\nimport entry54 from \"./catalog/cloudflare-builds.json\" with { type: \"json\" };\nimport entry55 from \"./catalog/cloudflare-docs.json\" with { type: \"json\" };\nimport entry56 from \"./catalog/cloudflare-observability.json\" with { type: \"json\" };\nimport entry57 from \"./catalog/deepwiki.json\" with { type: \"json\" };\nimport entry58 from \"./catalog/everything.json\" with { type: \"json\" };\nimport entry59 from \"./catalog/exa.json\" with { type: \"json\" };\nimport entry60 from \"./catalog/fetch.json\" with { type: \"json\" };\nimport entry61 from \"./catalog/filesystem.json\" with { type: \"json\" };\nimport entry62 from \"./catalog/firecrawl.json\" with { type: \"json\" };\nimport entry63 from \"./catalog/git.json\" with { type: \"json\" };\nimport entry64 from \"./catalog/huggingface.json\" with { type: \"json\" };\nimport entry65 from \"./catalog/kagi.json\" with { type: \"json\" };\nimport entry66 from \"./catalog/memory.json\" with { type: \"json\" };\nimport entry67 from \"./catalog/mongodb.json\" with { type: \"json\" };\nimport entry68 from \"./catalog/neon.json\" with { type: \"json\" };\nimport entry69 from \"./catalog/obsidian.json\" with { type: \"json\" };\nimport entry70 from \"./catalog/paypal.json\" with { type: \"json\" };\nimport entry71 from \"./catalog/playwright.json\" with { type: \"json\" };\nimport entry72 from \"./catalog/redis.json\" with { type: \"json\" };\nimport entry73 from \"./catalog/reportportal.json\" with { type: \"json\" };\nimport entry74 from \"./catalog/resend.json\" with { type: \"json\" };\nimport entry75 from \"./catalog/sequential-thinking.json\" with { type: \"json\" };\nimport entry76 from \"./catalog/superhuman-mail.json\" with { type: \"json\" };\nimport entry77 from \"./catalog/time.json\" with { type: \"json\" };\n\nexport const INTEGRATION_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 entry18,\n entry19,\n entry20,\n entry21,\n entry22,\n entry23,\n entry24,\n entry25,\n entry26,\n entry27,\n entry28,\n entry29,\n entry30,\n entry31,\n entry32,\n entry33,\n entry34,\n entry35,\n entry36,\n entry37,\n entry38,\n entry39,\n entry40,\n entry41,\n entry42,\n entry43,\n entry44,\n entry45,\n entry46,\n entry47,\n entry48,\n entry49,\n entry50,\n entry51,\n entry52,\n entry53,\n entry54,\n entry55,\n entry56,\n entry57,\n entry58,\n entry59,\n entry60,\n entry61,\n entry62,\n entry63,\n entry64,\n entry65,\n entry66,\n entry67,\n entry68,\n entry69,\n entry70,\n entry71,\n entry72,\n entry73,\n entry74,\n entry75,\n entry76,\n entry77,\n];\n"],"x_google_ignoreList":[0],"mappings":"83FAmFA,IAAa,GAA8B,CACzCA,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,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,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,QACAC,EAAAA,QACAC,EAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,QACAC,GAAAA,OACF"}
@@ -71,12 +71,13 @@ import he from "./catalog/obsidian.js";
71
71
  import ge from "./catalog/paypal.js";
72
72
  import _e from "./catalog/playwright.js";
73
73
  import ve from "./catalog/redis.js";
74
- import ye from "./catalog/resend.js";
75
- import be from "./catalog/sequential-thinking.js";
76
- import xe from "./catalog/superhuman-mail.js";
77
- import Se from "./catalog/time.js";
74
+ import ye from "./catalog/reportportal.js";
75
+ import be from "./catalog/resend.js";
76
+ import xe from "./catalog/sequential-thinking.js";
77
+ import Se from "./catalog/superhuman-mail.js";
78
+ import Ce from "./catalog/time.js";
78
79
  //#region node_modules/@openhands/extensions/integrations/catalog-index.js
79
- var Ce = [
80
+ var we = [
80
81
  e,
81
82
  t,
82
83
  n,
@@ -153,9 +154,10 @@ var Ce = [
153
154
  ye,
154
155
  be,
155
156
  xe,
156
- Se
157
+ Se,
158
+ Ce
157
159
  ];
158
160
  //#endregion
159
- export { Ce as INTEGRATION_CATALOG_ENTRIES };
161
+ export { we as INTEGRATION_CATALOG_ENTRIES };
160
162
 
161
163
  //# sourceMappingURL=catalog-index.js.map