@openhands/agent-canvas 1.14.0 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1855) hide show
  1. package/README.md +15 -1
  2. package/README.windows.md +2 -2
  3. package/build/assets/acp-providers-CX3Lh9gj.js +1 -0
  4. package/build/assets/active-backend-context-CrHTlgvN.js +2 -0
  5. package/build/assets/agent-context-settings-DSZlXrLj.js +1 -0
  6. package/build/assets/agent-profiles-settings-Dzgb7G9z.js +1 -0
  7. package/build/assets/agent-server-conversation-service.api-tnqNjbpE.js +86 -0
  8. package/build/assets/agent-settings-DLtsqaOs.js +2 -0
  9. package/build/assets/agent-settings-fFvR-XC2.js +1 -0
  10. package/build/assets/alert-banner-HP6mX-Vr.js +1 -0
  11. package/build/assets/api-error-message-B-XdSk3b.js +1 -0
  12. package/build/assets/api-key-entry-screen-qTzrmJcr.js +1 -0
  13. package/build/assets/app-settings-dbnneVaV.js +1 -0
  14. package/build/assets/automation-detail-BmwlCUAB.js +3 -0
  15. package/build/assets/automation-export-D3a3of4G.js +2 -0
  16. package/build/assets/automation-git-sync-CprN5DcU.js +1 -0
  17. package/build/assets/automation-setup-route-C40kXjMY.js +1 -0
  18. package/build/assets/automation-templates-BRppNh99.js +1 -0
  19. package/build/assets/automations-list-DuNcRawl.js +1 -0
  20. package/build/assets/back-nav-button-Cjl_hoxq.js +1 -0
  21. package/build/assets/backend-form-modal-lhGwzXFI.js +1 -0
  22. package/build/assets/backend-synced-settings-badge-DPkz30BE.js +1 -0
  23. package/build/assets/badge-BU3S0VtE.js +1 -0
  24. package/build/assets/base-modal-D_L0oEbG.js +1 -0
  25. package/build/assets/bot-dMYHVfYM.js +1 -0
  26. package/build/assets/brand-button-BAfk4wGP.js +1 -0
  27. package/build/assets/browser-DSAo0tz1.js +46 -0
  28. package/build/assets/browser-tab-C9vy56R5.js +1 -0
  29. package/build/assets/canvas-extension-page-dx1gFrfW.js +1 -0
  30. package/build/assets/canvas-extensions-8A-XhpgP.js +1 -0
  31. package/build/assets/canvas-extensions-runtime-2_x5Ezmi.js +1 -0
  32. package/build/assets/chat-send-button-MUQqCZCS.js +1 -0
  33. package/build/assets/check-CS0vmpQQ.js +1 -0
  34. package/build/assets/chevron-down-e1QBpjVy.js +1 -0
  35. package/build/assets/chevron-right-ZG4R5G4Q.js +1 -0
  36. package/build/assets/circle-check-DzWLNsbE.js +1 -0
  37. package/build/assets/circle-plus-check-toggle-BO_kFZt3.js +1 -0
  38. package/build/assets/cloud-funnel-analytics-CztBCCPp.js +1 -0
  39. package/build/assets/cog-D-MPQW6G.js +1 -0
  40. package/build/assets/command-menu--UIlGL72.js +1 -0
  41. package/build/assets/commits-tab-AnZwLvh-.js +1 -0
  42. package/build/assets/condenser-settings-DmEOje-7.js +1 -0
  43. package/build/assets/confirmation-modal-Dv1ktp8K.js +1 -0
  44. package/build/assets/context-menu-list-item-I86vKcmM.js +1 -0
  45. package/build/assets/conversation-BbGrAO4Z.js +93 -0
  46. package/build/assets/conversation-mYT6NAoj.js +1 -0
  47. package/build/assets/conversation-panel-mYT6NAoj.js +1 -0
  48. package/build/assets/conversation-state-store-B0ImPLHO.js +1 -0
  49. package/build/assets/conversation-store-Ca3ghXap.js +6 -0
  50. package/build/assets/conversation-tab-empty-state-FIbh_lc8.js +1 -0
  51. package/build/assets/copy-to-clipboard-button-Ca8iSkkA.js +1 -0
  52. package/build/assets/device-verify-Bhn2e_Ye.js +1 -0
  53. package/build/assets/dropdown-classes-Bc1djN0-.js +1 -0
  54. package/build/assets/edit-automation-modal-DadGbJ2u.js +1 -0
  55. package/build/assets/empty-state-BoGVDecT.js +1 -0
  56. package/build/assets/entry.client-CqyPPjOq.js +2 -0
  57. package/build/assets/enum-filter-dropdown-Bgca129f.js +1 -0
  58. package/build/assets/environment-switch-overlay-BmBRT7gv.js +1 -0
  59. package/build/assets/error-state-Body8Ngd.js +1 -0
  60. package/build/assets/extension-module-card-classes-DpeaYhYo.js +1 -0
  61. package/build/assets/extensions-hub-CcDqq_vR.js +1 -0
  62. package/build/assets/extensions-navigation-Cr4yzYk4.js +1 -0
  63. package/build/assets/external-link-DKUlnCQV.js +1 -0
  64. package/build/assets/files-tab-D4o2VyE_.js +1 -0
  65. package/build/assets/form-control-classes-Bkh5FGrD.js +1 -0
  66. package/build/assets/format-model-name-CasAP3nd.js +1 -0
  67. package/build/assets/get-git-path-ChKDVHZp.js +1 -0
  68. package/build/assets/git-repo-dropdown-4ROKl2cB.js +1 -0
  69. package/build/assets/git-repo-dropdown-BkqzkMmM.js +1 -0
  70. package/build/assets/highlighted-source-view-BFRxGT_Q.js +1 -0
  71. package/build/assets/home-ChpSuepX.js +1 -0
  72. package/build/assets/home-DIsB440S.js +1 -0
  73. package/build/assets/home-automation-run-tooltip-BVNDWjAH.js +1 -0
  74. package/build/assets/home-store-CY9Ej0ux.js +1 -0
  75. package/build/assets/index-home-BdlrFIif.js +1 -0
  76. package/build/assets/info-B6RQawoW.js +1 -0
  77. package/build/assets/install-server-modal-Dpy89p4g.js +1 -0
  78. package/build/assets/kebab-menu-item-content-D8hSNGmm.js +1 -0
  79. package/build/assets/key-BmVyxs-2.js +1 -0
  80. package/build/assets/launch-IrTDEFCs.js +1 -0
  81. package/build/assets/list-filter-DsEK7NFC.js +1 -0
  82. package/build/assets/list-todo-apgLVjMw.js +1 -0
  83. package/build/assets/llm-not-configured-banner-CIFABh3K.js +27 -0
  84. package/build/assets/llm-settings-B9juXhIa.js +1 -0
  85. package/build/assets/llm-settings-De1d5dfr.js +1 -0
  86. package/build/assets/llm-subscription-service-BpJ0ouQo.js +1 -0
  87. package/build/assets/loader-circle-CC1au6hc.js +1 -0
  88. package/build/assets/loading-spinner-BY9N3pOe.js +1 -0
  89. package/build/assets/manage-backends-modal-BrPV3oB-.js +1 -0
  90. package/build/assets/manifest-80fb1c29.js +1 -0
  91. package/build/assets/manifest-subpage-layout-CAOYzrYp.js +1 -0
  92. package/build/assets/map-provider-Cu3Zgumb.js +1 -0
  93. package/build/assets/markdown-renderer-BzTlxI8x.js +8 -0
  94. package/build/assets/mcp-BTs_SXfZ.js +1 -0
  95. package/build/assets/mcp-marketplace-utils-AIBzzHTO.js +1 -0
  96. package/build/assets/mcp-page-BEBYqH_K.js +9 -0
  97. package/build/assets/messages-DKV9cRc2.js +41 -0
  98. package/build/assets/modal-body-BxZjsju9.js +1 -0
  99. package/build/assets/modal-classes-C8eycCwG.js +1 -0
  100. package/build/assets/modal-close-button-DDzdRvCs.js +1 -0
  101. package/build/assets/mouse-pointer-click-Co2uyaPA.js +1 -0
  102. package/build/assets/onboarding-DV_OXoeP.js +1 -0
  103. package/build/assets/onboarding-modal-rkyBYkeQ.js +1 -0
  104. package/build/assets/organization-service.api-DrYNkEN_.js +1 -0
  105. package/build/assets/parse-git-remote-url-DpDM9bK6.js +1 -0
  106. package/build/assets/pencil-47jAZH_V.js +1 -0
  107. package/build/assets/pin-By41Vl5J.js +1 -0
  108. package/build/assets/planner-tab-C9uZmhme.js +1 -0
  109. package/build/assets/plug-CG5HFcNG.js +1 -0
  110. package/build/assets/plugins-management-service-BMJgC3Ga.js +1 -0
  111. package/build/assets/plus-C7Slq-0I.js +1 -0
  112. package/build/assets/profiles-service.api-ChoKrL0l.js +1 -0
  113. package/build/assets/providers-BhMcY5nv.js +1 -0
  114. package/build/assets/proxy-9Fe1v5na.js +1 -0
  115. package/build/assets/puzzle-JM_QaRm0.js +1 -0
  116. package/build/assets/recommended-automations-launcher-6ABrI9Cy.js +1 -0
  117. package/build/assets/refresh-cw-3q3Frrii.js +1 -0
  118. package/build/assets/root-Dc8YmC9F.js +2 -0
  119. package/build/assets/root-VDaypvK4.css +1 -0
  120. package/build/assets/root-layout-CXkhSPYh.js +2 -0
  121. package/build/assets/schema-field-D-y9-LDb.js +1 -0
  122. package/build/assets/scroll-fade-state-Dw-i4SGq.js +1 -0
  123. package/build/assets/sdk-section-page-BlFiizlG.js +1 -0
  124. package/build/assets/secret-form-BB7the8W.js +1 -0
  125. package/build/assets/secrets-service-ByZVENbp.js +1 -0
  126. package/build/assets/secrets-settings-B_GpxKW2.js +1 -0
  127. package/build/assets/server-process-C9RKzd1x.js +1 -0
  128. package/build/assets/settings-C0EWuBtA.js +1 -0
  129. package/build/assets/settings-CKqk8ZnH.js +1 -0
  130. package/build/assets/settings-dropdown-input-BcwylHs2.js +1 -0
  131. package/build/assets/settings-index-5w5UW2K3.js +1 -0
  132. package/build/assets/settings-input-Db-1g8Ql.js +1 -0
  133. package/build/assets/settings-list-classes-BzeSZbF2.js +1 -0
  134. package/build/assets/settings-modal-DfJ3tcJQ.js +1 -0
  135. package/build/assets/settings-service.api-DJ1r62Zr.js +1 -0
  136. package/build/assets/settings-switch-CS-dJDmA.js +1 -0
  137. package/build/assets/settings-utils-UYpEdPuD.js +1 -0
  138. package/build/assets/shared-conversation-CA5ISEDy.js +1 -0
  139. package/build/assets/shield-check-D2aCRd16.js +1 -0
  140. package/build/assets/sidebar-layout-D6fS8-Gl.js +1 -0
  141. package/build/assets/sidebar-mobile-menu-toggle-C_fb0Jki.js +1 -0
  142. package/build/assets/sidebar-nav-link-DQQcMf1A.js +1 -0
  143. package/build/assets/sidebar-onboarding-checklist-storage-BBkeI6Bp.js +1 -0
  144. package/build/assets/sidebar-store-DGqHkVLw.js +1 -0
  145. package/build/assets/skill-card-pill-row-B27-xyig.js +1 -0
  146. package/build/assets/skill-enablement-DXeaImBz.js +1 -0
  147. package/build/assets/skill-filter-w__3UCEE.js +2 -0
  148. package/build/assets/skill-icon-badge-RQkq8wvl.js +1 -0
  149. package/build/assets/skill-scope-B42H-XOc.js +1 -0
  150. package/build/assets/skills-plugins-tgF8EiXC.js +1 -0
  151. package/build/assets/skills-settings-BgJ9PaOe.js +1 -0
  152. package/build/assets/styled-tooltip-C4jf5Fv9.js +1 -0
  153. package/build/assets/task-list-tab-C5zcaktH.js +1 -0
  154. package/build/assets/terminal-CNElN42a.js +3 -0
  155. package/build/assets/toggle-switch-ChOLXv2n.js +1 -0
  156. package/build/assets/trash-2-D7K26eDO.js +1 -0
  157. package/build/assets/trash-D-HYiVYM.js +1 -0
  158. package/build/assets/triangle-alert-CtdXWHUI.js +1 -0
  159. package/build/assets/typography-v1KN0tzi.js +1 -0
  160. package/build/assets/usage-tab-CVDffLPt.js +1 -0
  161. package/build/assets/use-acp-credential-form-XIQmpX6M.js +1 -0
  162. package/build/assets/use-activate-agent-profile-BLfmvDiG.js +1 -0
  163. package/build/assets/use-agent-profiles-Bd9Bvvp1.js +1 -0
  164. package/build/assets/use-automation-health-E6NZi9rb.js +1 -0
  165. package/build/assets/use-automations-xijQKIl9.js +1 -0
  166. package/build/assets/use-can-manage-org-profiles-CrJP5262.js +1 -0
  167. package/build/assets/use-canvas-extensions-Bi693ujJ.js +1 -0
  168. package/build/assets/use-cloud-current-user-id-CDfAHpPX.js +1 -0
  169. package/build/assets/use-config-A9QovgXO.js +1 -0
  170. package/build/assets/use-create-conversation-Dx3l7mFZ.js +1 -0
  171. package/build/assets/use-create-secret-B9cUFWRG.js +1 -0
  172. package/build/assets/use-get-secrets-K3jmk-LH.js +1 -0
  173. package/build/assets/use-has-permission-B3C8rQmR.js +1 -0
  174. package/build/assets/use-is-authed-nTBcM7dE.js +1 -0
  175. package/build/assets/use-launch-skill-in-chat-BYjYihBP.js +1 -0
  176. package/build/assets/use-llm-configured-BV9nZ1_j.js +1 -0
  177. package/build/assets/use-llm-profiles-BO-P4Oyo.js +1 -0
  178. package/build/assets/use-manifest-capabilities-Cw_flwEz.js +1 -0
  179. package/build/assets/use-onboarding-completion-D8U7k4Qb.js +1 -0
  180. package/build/assets/use-pinned-home-route-CckOZrmb.js +1 -0
  181. package/build/assets/use-plugins-marketplace-7i94Zu3Z.js +1 -0
  182. package/build/assets/use-save-agent-profile-BUjSsDXK.js +1 -0
  183. package/build/assets/use-save-settings-DYqkKv7T.js +1 -0
  184. package/build/assets/use-settings-DSXLbvBl.js +1 -0
  185. package/build/assets/use-settings-nav-items-CwRw-CmX.js +16 -0
  186. package/build/assets/use-tracking-D53y3TH9.js +3 -0
  187. package/build/assets/use-user-conversation-B9Gebw_g.js +1 -0
  188. package/build/assets/useInfiniteQuery-C926xzY4.js +1 -0
  189. package/build/assets/useMutation-B-qc391N.js +1 -0
  190. package/build/assets/useQueries-DlbhlH9I.js +1 -0
  191. package/build/assets/useQuery-BSTgq1rl.js +1 -0
  192. package/build/assets/utils-CN5ZfZy1.js +1 -0
  193. package/build/assets/vendor~browser-hbU4u2Ag.js +47 -0
  194. package/build/assets/vendor~commits-tab-BaO2Ce3e.js +11 -0
  195. package/build/assets/vendor~conversation-panel~conversation-C8Fn4XOf.js +1 -0
  196. package/build/assets/vendor~entry.client-CoCfUXUF.js +1 -0
  197. package/build/assets/vendor~entry.client-DA2izTjq.js +9 -0
  198. package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-DqZDXfg2.js +186 -0
  199. package/build/assets/vendor~index-home~home~conversation-panel~conversation-hWywRBaR.js +13 -0
  200. package/build/assets/vendor~root-layout-C9Ju9DQg.js +1 -0
  201. package/build/assets/vendor~root-layout~conversation-panel~conversation-BMbMgaGu.js +1 -0
  202. package/build/assets/vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-BWir3rJs.js +1 -0
  203. package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation-j5MFqfSy.js +1 -0
  204. package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-cDuKr-WD.js +1 -0
  205. package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-DXqM7vqB.js +1 -0
  206. package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iyia17eu-Chf7vmKB.js +1 -0
  207. package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~nj1hli3r-DP9wmsjo.js +48 -0
  208. package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-CUmIwQCN.js +5053 -0
  209. package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-C7HiY4Ae.js +8459 -0
  210. package/build/assets/verification-settings-gw_q6vkL.js +1 -0
  211. package/build/assets/wrench-CUEI1krB.js +1 -0
  212. package/build/assets/x-DJdhbdmt.js +1 -0
  213. package/build/index.html +4 -4
  214. package/build/locales/ar/openhands.json +156 -59
  215. package/build/locales/ca/openhands.json +156 -59
  216. package/build/locales/de/openhands.json +156 -59
  217. package/build/locales/en/openhands.json +156 -59
  218. package/build/locales/es/openhands.json +156 -59
  219. package/build/locales/fr/openhands.json +156 -59
  220. package/build/locales/it/openhands.json +156 -59
  221. package/build/locales/ja/openhands.json +156 -59
  222. package/build/locales/ko-KR/openhands.json +156 -59
  223. package/build/locales/no/openhands.json +156 -59
  224. package/build/locales/pt/openhands.json +156 -59
  225. package/build/locales/tr/openhands.json +156 -59
  226. package/build/locales/uk/openhands.json +156 -59
  227. package/build/locales/zh-CN/openhands.json +156 -59
  228. package/build/locales/zh-TW/openhands.json +156 -59
  229. package/config/defaults.json +9 -5
  230. package/dist/api/agent-profiles-service/profile-field-support.d.ts +26 -0
  231. package/dist/api/agent-server-adapter.cjs +3 -3
  232. package/dist/api/agent-server-adapter.cjs.map +1 -1
  233. package/dist/api/agent-server-adapter.d.ts +10 -1
  234. package/dist/api/agent-server-adapter.js +139 -132
  235. package/dist/api/agent-server-adapter.js.map +1 -1
  236. package/dist/api/agent-server-compatibility.cjs +1 -1
  237. package/dist/api/agent-server-compatibility.cjs.map +1 -1
  238. package/dist/api/agent-server-compatibility.d.ts +21 -0
  239. package/dist/api/agent-server-compatibility.js +52 -38
  240. package/dist/api/agent-server-compatibility.js.map +1 -1
  241. package/dist/api/agent-server-config.cjs +1 -1
  242. package/dist/api/agent-server-config.cjs.map +1 -1
  243. package/dist/api/agent-server-config.d.ts +26 -0
  244. package/dist/api/agent-server-config.js +18 -5
  245. package/dist/api/agent-server-config.js.map +1 -1
  246. package/dist/api/automation-service/automation-service.api.cjs +1 -1
  247. package/dist/api/automation-service/automation-service.api.cjs.map +1 -1
  248. package/dist/api/automation-service/automation-service.api.d.ts +13 -2
  249. package/dist/api/automation-service/automation-service.api.js +99 -84
  250. package/dist/api/automation-service/automation-service.api.js.map +1 -1
  251. package/dist/api/backend-registry/url-selection.cjs +1 -1
  252. package/dist/api/backend-registry/url-selection.cjs.map +1 -1
  253. package/dist/api/backend-registry/url-selection.d.ts +2 -1
  254. package/dist/api/backend-registry/url-selection.js +2 -2
  255. package/dist/api/backend-registry/url-selection.js.map +1 -1
  256. package/dist/api/canvas-extensions-service.cjs +1 -0
  257. package/dist/api/canvas-extensions-service.d.ts +22 -0
  258. package/dist/api/canvas-extensions-service.js +4 -0
  259. package/dist/api/cloud/conversation-service.api.cjs +1 -1
  260. package/dist/api/cloud/conversation-service.api.cjs.map +1 -1
  261. package/dist/api/cloud/conversation-service.api.d.ts +6 -0
  262. package/dist/api/cloud/conversation-service.api.js +14 -6
  263. package/dist/api/cloud/conversation-service.api.js.map +1 -1
  264. package/dist/api/conversation-file-upload.api.cjs +1 -1
  265. package/dist/api/conversation-file-upload.api.js +10 -10
  266. package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
  267. package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
  268. package/dist/api/conversation-service/agent-server-conversation-service.api.d.ts +11 -0
  269. package/dist/api/conversation-service/agent-server-conversation-service.api.js +138 -122
  270. package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
  271. package/dist/api/event-service/event-service.api.cjs +1 -1
  272. package/dist/api/event-service/event-service.api.js +12 -12
  273. package/dist/api/git-provider-items-service.cjs +2 -0
  274. package/dist/api/git-provider-items-service.cjs.map +1 -0
  275. package/dist/api/git-provider-items-service.d.ts +25 -0
  276. package/dist/api/git-provider-items-service.js +127 -0
  277. package/dist/api/git-provider-items-service.js.map +1 -0
  278. package/dist/api/git-service/agent-server-git-service.api.cjs +1 -1
  279. package/dist/api/git-service/agent-server-git-service.api.js +8 -8
  280. package/dist/api/mcp-health/probe-mcp-server-health.cjs +1 -1
  281. package/dist/api/mcp-health/probe-mcp-server-health.js +31 -31
  282. package/dist/api/open-hands.types.d.ts +0 -19
  283. package/dist/api/profiles-service/profiles-service.api.cjs.map +1 -1
  284. package/dist/api/profiles-service/profiles-service.api.d.ts +16 -2
  285. package/dist/api/profiles-service/profiles-service.api.js.map +1 -1
  286. package/dist/api/provider-connections-service/provider-connections-service.api.cjs +2 -0
  287. package/dist/api/provider-connections-service/provider-connections-service.api.cjs.map +1 -0
  288. package/dist/api/provider-connections-service/provider-connections-service.api.d.ts +34 -0
  289. package/dist/api/provider-connections-service/provider-connections-service.api.js +50 -0
  290. package/dist/api/provider-connections-service/provider-connections-service.api.js.map +1 -0
  291. package/dist/api/runtime-service/agent-server-runtime-service.cjs +1 -1
  292. package/dist/api/runtime-service/agent-server-runtime-service.js +8 -8
  293. package/dist/api/settings-service/settings-service.api.cjs +1 -1
  294. package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
  295. package/dist/api/settings-service/settings-service.api.d.ts +3 -2
  296. package/dist/api/settings-service/settings-service.api.js +2 -1
  297. package/dist/api/settings-service/settings-service.api.js.map +1 -1
  298. package/dist/components/conversation-events/chat/event-content-helpers/create-skill-ready-event.cjs +1 -1
  299. package/dist/components/conversation-events/chat/event-content-helpers/create-skill-ready-event.cjs.map +1 -1
  300. package/dist/components/conversation-events/chat/event-content-helpers/create-skill-ready-event.js +1 -1
  301. package/dist/components/conversation-events/chat/event-content-helpers/create-skill-ready-event.js.map +1 -1
  302. package/dist/components/conversation-events/chat/event-message-components/event-group.cjs +1 -1
  303. package/dist/components/conversation-events/chat/event-message-components/event-group.cjs.map +1 -1
  304. package/dist/components/conversation-events/chat/event-message-components/event-group.js +40 -36
  305. package/dist/components/conversation-events/chat/event-message-components/event-group.js.map +1 -1
  306. package/dist/components/conversation-events/chat/event-message.cjs +1 -1
  307. package/dist/components/conversation-events/chat/event-message.cjs.map +1 -1
  308. package/dist/components/conversation-events/chat/event-message.js +1 -1
  309. package/dist/components/conversation-events/chat/event-message.js.map +1 -1
  310. package/dist/components/conversation-events/chat/messages.cjs.map +1 -1
  311. package/dist/components/conversation-events/chat/messages.js.map +1 -1
  312. package/dist/components/features/automations/add-automation-menu.d.ts +7 -0
  313. package/dist/components/features/automations/add-automation-modal.cjs +2 -0
  314. package/dist/components/features/automations/add-automation-modal.cjs.map +1 -0
  315. package/dist/components/features/automations/add-automation-modal.js +42 -0
  316. package/dist/components/features/automations/add-automation-modal.js.map +1 -0
  317. package/dist/components/features/automations/automation-action-button-classes.cjs +2 -0
  318. package/dist/components/features/automations/automation-action-button-classes.cjs.map +1 -0
  319. package/dist/components/features/automations/automation-action-button-classes.d.ts +0 -2
  320. package/dist/components/features/automations/automation-action-button-classes.js +8 -0
  321. package/dist/components/features/automations/automation-action-button-classes.js.map +1 -0
  322. package/dist/components/features/automations/automation-card-skeleton.cjs +2 -0
  323. package/dist/components/features/automations/automation-card-skeleton.cjs.map +1 -0
  324. package/dist/components/features/automations/automation-card-skeleton.js +33 -0
  325. package/dist/components/features/automations/automation-card-skeleton.js.map +1 -0
  326. package/dist/components/features/automations/automation-card.cjs +2 -0
  327. package/dist/components/features/automations/automation-card.cjs.map +1 -0
  328. package/dist/components/features/automations/automation-card.d.ts +1 -1
  329. package/dist/components/features/automations/automation-card.js +170 -0
  330. package/dist/components/features/automations/automation-card.js.map +1 -0
  331. package/dist/components/features/automations/automation-group.cjs +2 -0
  332. package/dist/components/features/automations/automation-group.cjs.map +1 -0
  333. package/dist/components/features/automations/automation-group.js +54 -0
  334. package/dist/components/features/automations/automation-group.js.map +1 -0
  335. package/dist/components/features/automations/automation-list-row.cjs +2 -0
  336. package/dist/components/features/automations/automation-list-row.cjs.map +1 -0
  337. package/dist/components/features/automations/automation-list-row.js +152 -0
  338. package/dist/components/features/automations/automation-list-row.js.map +1 -0
  339. package/dist/components/features/automations/automation-run-insights.cjs +2 -0
  340. package/dist/components/features/automations/automation-run-insights.cjs.map +1 -0
  341. package/dist/components/features/automations/automation-run-insights.js +46 -0
  342. package/dist/components/features/automations/automation-run-insights.js.map +1 -0
  343. package/dist/components/features/automations/automation-view-mode.cjs +2 -0
  344. package/dist/components/features/automations/automation-view-mode.cjs.map +1 -0
  345. package/dist/components/features/automations/automation-view-mode.d.ts +5 -1
  346. package/dist/components/features/automations/automation-view-mode.js +6 -0
  347. package/dist/components/features/automations/automation-view-mode.js.map +1 -0
  348. package/dist/components/features/automations/backend-not-configured.cjs +2 -0
  349. package/dist/components/features/automations/backend-not-configured.cjs.map +1 -0
  350. package/dist/components/features/automations/backend-not-configured.js +34 -0
  351. package/dist/components/features/automations/backend-not-configured.js.map +1 -0
  352. package/dist/components/features/automations/build-automation-menu-items.cjs +2 -0
  353. package/dist/components/features/automations/build-automation-menu-items.cjs.map +1 -0
  354. package/dist/components/features/automations/build-automation-menu-items.js +53 -0
  355. package/dist/components/features/automations/build-automation-menu-items.js.map +1 -0
  356. package/dist/components/features/automations/build-automation-pills.cjs +2 -0
  357. package/dist/components/features/automations/build-automation-pills.cjs.map +1 -0
  358. package/dist/components/features/automations/build-automation-pills.js +71 -0
  359. package/dist/components/features/automations/build-automation-pills.js.map +1 -0
  360. package/dist/components/features/automations/create-instructions.cjs +2 -0
  361. package/dist/components/features/automations/create-instructions.cjs.map +1 -0
  362. package/dist/components/features/automations/create-instructions.js +102 -0
  363. package/dist/components/features/automations/create-instructions.js.map +1 -0
  364. package/dist/components/features/automations/dashboard/automations-dashboard-controls.d.ts +4 -3
  365. package/dist/components/features/automations/detail/run-phase.cjs +2 -0
  366. package/dist/components/features/automations/detail/run-phase.cjs.map +1 -0
  367. package/dist/components/features/automations/detail/run-phase.d.ts +89 -0
  368. package/dist/components/features/automations/detail/run-phase.js +72 -0
  369. package/dist/components/features/automations/detail/run-phase.js.map +1 -0
  370. package/dist/components/features/automations/detail/run-status-badge.cjs +2 -0
  371. package/dist/components/features/automations/detail/run-status-badge.cjs.map +1 -0
  372. package/dist/components/features/automations/detail/run-status-badge.js +102 -0
  373. package/dist/components/features/automations/detail/run-status-badge.js.map +1 -0
  374. package/dist/components/features/automations/empty-state.cjs +2 -0
  375. package/dist/components/features/automations/empty-state.cjs.map +1 -0
  376. package/dist/components/features/automations/empty-state.js +35 -0
  377. package/dist/components/features/automations/empty-state.js.map +1 -0
  378. package/dist/components/features/automations/error-state.cjs +2 -0
  379. package/dist/components/features/automations/error-state.cjs.map +1 -0
  380. package/dist/components/features/automations/error-state.js +28 -0
  381. package/dist/components/features/automations/error-state.js.map +1 -0
  382. package/dist/components/features/automations/import-automation-modal.d.ts +2 -1
  383. package/dist/components/features/automations/kebab-menu-item-content.cjs +2 -0
  384. package/dist/components/features/automations/kebab-menu-item-content.cjs.map +1 -0
  385. package/dist/components/features/automations/kebab-menu-item-content.js +21 -0
  386. package/dist/components/features/automations/kebab-menu-item-content.js.map +1 -0
  387. package/dist/components/features/automations/kebab-menu.cjs +2 -0
  388. package/dist/components/features/automations/kebab-menu.cjs.map +1 -0
  389. package/dist/components/features/automations/kebab-menu.d.ts +2 -1
  390. package/dist/components/features/automations/kebab-menu.js +76 -0
  391. package/dist/components/features/automations/kebab-menu.js.map +1 -0
  392. package/dist/components/features/automations/recommended-automations-launcher.cjs +2 -0
  393. package/dist/components/features/automations/recommended-automations-launcher.cjs.map +1 -0
  394. package/dist/components/features/automations/recommended-automations-launcher.d.ts +7 -1
  395. package/dist/components/features/automations/recommended-automations-launcher.js +134 -0
  396. package/dist/components/features/automations/recommended-automations-launcher.js.map +1 -0
  397. package/dist/components/features/automations/recommended-automations-rail.cjs +2 -0
  398. package/dist/components/features/automations/recommended-automations-rail.cjs.map +1 -0
  399. package/dist/components/features/automations/recommended-automations-rail.d.ts +9 -0
  400. package/dist/components/features/automations/recommended-automations-rail.js +127 -0
  401. package/dist/components/features/automations/recommended-automations-rail.js.map +1 -0
  402. package/dist/components/features/automations/recommended-automations-section.cjs +2 -0
  403. package/dist/components/features/automations/recommended-automations-section.cjs.map +1 -0
  404. package/dist/components/features/automations/recommended-automations-section.d.ts +2 -2
  405. package/dist/components/features/automations/recommended-automations-section.js +198 -0
  406. package/dist/components/features/automations/recommended-automations-section.js.map +1 -0
  407. package/dist/components/features/automations/responder-deployment-modal.cjs +2 -0
  408. package/dist/components/features/automations/responder-deployment-modal.cjs.map +1 -0
  409. package/dist/components/features/automations/responder-deployment-modal.js +75 -0
  410. package/dist/components/features/automations/responder-deployment-modal.js.map +1 -0
  411. package/dist/components/features/automations/status-badge.cjs +2 -0
  412. package/dist/components/features/automations/status-badge.cjs.map +1 -0
  413. package/dist/components/features/automations/status-badge.js +12 -0
  414. package/dist/components/features/automations/status-badge.js.map +1 -0
  415. package/dist/components/features/automations/to-latest-run-state.cjs +2 -0
  416. package/dist/components/features/automations/to-latest-run-state.cjs.map +1 -0
  417. package/dist/components/features/automations/to-latest-run-state.d.ts +6 -0
  418. package/dist/components/features/automations/to-latest-run-state.js +21 -0
  419. package/dist/components/features/automations/to-latest-run-state.js.map +1 -0
  420. package/dist/components/features/backends/backend-form-modal.cjs +1 -1
  421. package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
  422. package/dist/components/features/backends/backend-form-modal.js +15 -21
  423. package/dist/components/features/backends/backend-form-modal.js.map +1 -1
  424. package/dist/components/features/backends/manage-backends-modal.cjs +1 -1
  425. package/dist/components/features/backends/manage-backends-modal.js +5 -5
  426. package/dist/components/features/canvas-extensions/add-canvas-extension-modal.d.ts +6 -0
  427. package/dist/components/features/canvas-extensions/canvas-extension-card.d.ts +9 -0
  428. package/dist/components/features/canvas-extensions/canvas-extensions-runtime.cjs +2 -0
  429. package/dist/components/features/canvas-extensions/canvas-extensions-runtime.cjs.map +1 -0
  430. package/dist/components/features/canvas-extensions/canvas-extensions-runtime.d.ts +23 -0
  431. package/dist/components/features/canvas-extensions/canvas-extensions-runtime.js +19 -0
  432. package/dist/components/features/canvas-extensions/canvas-extensions-runtime.js.map +1 -0
  433. package/dist/components/features/chat/chat-interface.cjs +2 -2
  434. package/dist/components/features/chat/chat-interface.cjs.map +1 -1
  435. package/dist/components/features/chat/chat-interface.js +138 -133
  436. package/dist/components/features/chat/chat-interface.js.map +1 -1
  437. package/dist/components/features/chat/chat-markdown-path-code.cjs +3 -0
  438. package/dist/components/features/chat/chat-markdown-path-code.cjs.map +1 -0
  439. package/dist/components/features/chat/chat-markdown-path-code.d.ts +27 -0
  440. package/dist/components/features/chat/chat-markdown-path-code.js +72 -0
  441. package/dist/components/features/chat/chat-markdown-path-code.js.map +1 -0
  442. package/dist/components/features/chat/path-component.cjs +1 -1
  443. package/dist/components/features/chat/path-component.cjs.map +1 -1
  444. package/dist/components/features/chat/path-component.d.ts +8 -2
  445. package/dist/components/features/chat/path-component.js +33 -21
  446. package/dist/components/features/chat/path-component.js.map +1 -1
  447. package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs +1 -1
  448. package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.cjs.map +1 -1
  449. package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js +38 -43
  450. package/dist/components/features/chat/tool-visualizers/file-editor/file-editor.js.map +1 -1
  451. package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs +1 -1
  452. package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.cjs.map +1 -1
  453. package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.d.ts +8 -5
  454. package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js +22 -16
  455. package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.js.map +1 -1
  456. package/dist/components/features/chat/user-message-body.cjs +1 -1
  457. package/dist/components/features/chat/user-message-body.cjs.map +1 -1
  458. package/dist/components/features/chat/user-message-body.d.ts +4 -0
  459. package/dist/components/features/chat/user-message-body.js +30 -24
  460. package/dist/components/features/chat/user-message-body.js.map +1 -1
  461. package/dist/components/features/command-menu/command-menu-items.d.ts +10 -4
  462. package/dist/components/features/conversation/conversation-git-actions-menu.cjs +2 -0
  463. package/dist/components/features/conversation/conversation-git-actions-menu.cjs.map +1 -0
  464. package/dist/components/features/conversation/conversation-git-actions-menu.d.ts +15 -0
  465. package/dist/components/features/conversation/conversation-git-actions-menu.js +123 -0
  466. package/dist/components/features/conversation/conversation-git-actions-menu.js.map +1 -0
  467. package/dist/components/features/conversation/conversation-git-actions-toggle.cjs +2 -0
  468. package/dist/components/features/conversation/conversation-git-actions-toggle.cjs.map +1 -0
  469. package/dist/components/features/conversation/conversation-git-actions-toggle.d.ts +10 -0
  470. package/dist/components/features/conversation/conversation-git-actions-toggle.js +60 -0
  471. package/dist/components/features/conversation/conversation-git-actions-toggle.js.map +1 -0
  472. package/dist/components/features/conversation/conversation-main/chat-interface-wrapper.cjs +1 -1
  473. package/dist/components/features/conversation/conversation-main/chat-interface-wrapper.cjs.map +1 -1
  474. package/dist/components/features/conversation/conversation-main/chat-interface-wrapper.js +46 -10
  475. package/dist/components/features/conversation/conversation-main/chat-interface-wrapper.js.map +1 -1
  476. package/dist/components/features/conversation/conversation-main/conversation-main.cjs +1 -1
  477. package/dist/components/features/conversation/conversation-main/conversation-main.cjs.map +1 -1
  478. package/dist/components/features/conversation/conversation-main/conversation-main.js +49 -43
  479. package/dist/components/features/conversation/conversation-main/conversation-main.js.map +1 -1
  480. package/dist/components/features/conversation/conversation-name-with-status.cjs +1 -1
  481. package/dist/components/features/conversation/conversation-name-with-status.cjs.map +1 -1
  482. package/dist/components/features/conversation/conversation-name-with-status.js +49 -40
  483. package/dist/components/features/conversation/conversation-name-with-status.js.map +1 -1
  484. package/dist/components/features/conversation/conversation-name.cjs +1 -1
  485. package/dist/components/features/conversation/conversation-name.js +4 -4
  486. package/dist/components/features/conversation/conversation-overview-automations-panel.cjs +2 -0
  487. package/dist/components/features/conversation/conversation-overview-automations-panel.cjs.map +1 -0
  488. package/dist/components/features/conversation/conversation-overview-automations-panel.d.ts +6 -0
  489. package/dist/components/features/conversation/conversation-overview-automations-panel.js +48 -0
  490. package/dist/components/features/conversation/conversation-overview-automations-panel.js.map +1 -0
  491. package/dist/components/features/conversation/conversation-overview-context-menu.cjs +2 -0
  492. package/dist/components/features/conversation/conversation-overview-context-menu.cjs.map +1 -0
  493. package/dist/components/features/conversation/conversation-overview-context-menu.d.ts +10 -0
  494. package/dist/components/features/conversation/conversation-overview-context-menu.js +221 -0
  495. package/dist/components/features/conversation/conversation-overview-context-menu.js.map +1 -0
  496. package/dist/components/features/conversation/conversation-overview-diffs-row.cjs +2 -0
  497. package/dist/components/features/conversation/conversation-overview-diffs-row.cjs.map +1 -0
  498. package/dist/components/features/conversation/conversation-overview-diffs-row.d.ts +2 -0
  499. package/dist/components/features/conversation/conversation-overview-diffs-row.js +88 -0
  500. package/dist/components/features/conversation/conversation-overview-diffs-row.js.map +1 -0
  501. package/dist/components/features/conversation/conversation-overview-drawer-content.cjs +2 -0
  502. package/dist/components/features/conversation/conversation-overview-drawer-content.cjs.map +1 -0
  503. package/dist/components/features/conversation/conversation-overview-drawer-content.d.ts +6 -0
  504. package/dist/components/features/conversation/conversation-overview-drawer-content.js +138 -0
  505. package/dist/components/features/conversation/conversation-overview-drawer-content.js.map +1 -0
  506. package/dist/components/features/conversation/conversation-overview-drawer-context.cjs +2 -0
  507. package/dist/components/features/conversation/conversation-overview-drawer-context.cjs.map +1 -0
  508. package/dist/components/features/conversation/conversation-overview-drawer-context.d.ts +17 -0
  509. package/dist/components/features/conversation/conversation-overview-drawer-context.js +43 -0
  510. package/dist/components/features/conversation/conversation-overview-drawer-context.js.map +1 -0
  511. package/dist/components/features/conversation/conversation-overview-drawer.cjs +2 -0
  512. package/dist/components/features/conversation/conversation-overview-drawer.cjs.map +1 -0
  513. package/dist/components/features/conversation/conversation-overview-drawer.constants.cjs +2 -0
  514. package/dist/components/features/conversation/conversation-overview-drawer.constants.cjs.map +1 -0
  515. package/dist/components/features/conversation/conversation-overview-drawer.constants.d.ts +6 -0
  516. package/dist/components/features/conversation/conversation-overview-drawer.constants.js +6 -0
  517. package/dist/components/features/conversation/conversation-overview-drawer.constants.js.map +1 -0
  518. package/dist/components/features/conversation/conversation-overview-drawer.d.ts +7 -0
  519. package/dist/components/features/conversation/conversation-overview-drawer.js +45 -0
  520. package/dist/components/features/conversation/conversation-overview-drawer.js.map +1 -0
  521. package/dist/components/features/conversation/conversation-overview-drawer.types.cjs +2 -0
  522. package/dist/components/features/conversation/conversation-overview-drawer.types.cjs.map +1 -0
  523. package/dist/components/features/conversation/conversation-overview-drawer.types.d.ts +12 -0
  524. package/dist/components/features/conversation/conversation-overview-drawer.types.js +13 -0
  525. package/dist/components/features/conversation/conversation-overview-drawer.types.js.map +1 -0
  526. package/dist/components/features/conversation/conversation-overview-git-items-panel.cjs +2 -0
  527. package/dist/components/features/conversation/conversation-overview-git-items-panel.cjs.map +1 -0
  528. package/dist/components/features/conversation/conversation-overview-git-items-panel.d.ts +7 -0
  529. package/dist/components/features/conversation/conversation-overview-git-items-panel.js +81 -0
  530. package/dist/components/features/conversation/conversation-overview-git-items-panel.js.map +1 -0
  531. package/dist/components/features/conversation/conversation-overview-git-section.cjs +2 -0
  532. package/dist/components/features/conversation/conversation-overview-git-section.cjs.map +1 -0
  533. package/dist/components/features/conversation/conversation-overview-git-section.d.ts +6 -0
  534. package/dist/components/features/conversation/conversation-overview-git-section.js +143 -0
  535. package/dist/components/features/conversation/conversation-overview-git-section.js.map +1 -0
  536. package/dist/components/features/conversation/conversation-overview-mcp-panel.cjs +2 -0
  537. package/dist/components/features/conversation/conversation-overview-mcp-panel.cjs.map +1 -0
  538. package/dist/components/features/conversation/conversation-overview-mcp-panel.d.ts +6 -0
  539. package/dist/components/features/conversation/conversation-overview-mcp-panel.js +108 -0
  540. package/dist/components/features/conversation/conversation-overview-mcp-panel.js.map +1 -0
  541. package/dist/components/features/conversation/conversation-overview-panel.cjs +2 -0
  542. package/dist/components/features/conversation/conversation-overview-panel.cjs.map +1 -0
  543. package/dist/components/features/conversation/conversation-overview-panel.constants.cjs +2 -0
  544. package/dist/components/features/conversation/conversation-overview-panel.constants.cjs.map +1 -0
  545. package/dist/components/features/conversation/conversation-overview-panel.constants.d.ts +24 -0
  546. package/dist/components/features/conversation/conversation-overview-panel.constants.js +12 -0
  547. package/dist/components/features/conversation/conversation-overview-panel.constants.js.map +1 -0
  548. package/dist/components/features/conversation/conversation-overview-panel.d.ts +2 -0
  549. package/dist/components/features/conversation/conversation-overview-panel.js +102 -0
  550. package/dist/components/features/conversation/conversation-overview-panel.js.map +1 -0
  551. package/dist/components/features/conversation/conversation-overview-project-scope-toggle.cjs +2 -0
  552. package/dist/components/features/conversation/conversation-overview-project-scope-toggle.cjs.map +1 -0
  553. package/dist/components/features/conversation/conversation-overview-project-scope-toggle.d.ts +8 -0
  554. package/dist/components/features/conversation/conversation-overview-project-scope-toggle.js +29 -0
  555. package/dist/components/features/conversation/conversation-overview-project-scope-toggle.js.map +1 -0
  556. package/dist/components/features/conversation/conversation-overview-secrets-panel.cjs +2 -0
  557. package/dist/components/features/conversation/conversation-overview-secrets-panel.cjs.map +1 -0
  558. package/dist/components/features/conversation/conversation-overview-secrets-panel.d.ts +6 -0
  559. package/dist/components/features/conversation/conversation-overview-secrets-panel.js +89 -0
  560. package/dist/components/features/conversation/conversation-overview-secrets-panel.js.map +1 -0
  561. package/dist/components/features/conversation/conversation-overview-sections.cjs +2 -0
  562. package/dist/components/features/conversation/conversation-overview-sections.cjs.map +1 -0
  563. package/dist/components/features/conversation/conversation-overview-sections.d.ts +43 -0
  564. package/dist/components/features/conversation/conversation-overview-sections.js +27 -0
  565. package/dist/components/features/conversation/conversation-overview-sections.js.map +1 -0
  566. package/dist/components/features/conversation/conversation-overview-skills-panel.cjs +2 -0
  567. package/dist/components/features/conversation/conversation-overview-skills-panel.cjs.map +1 -0
  568. package/dist/components/features/conversation/conversation-overview-skills-panel.d.ts +6 -0
  569. package/dist/components/features/conversation/conversation-overview-skills-panel.js +120 -0
  570. package/dist/components/features/conversation/conversation-overview-skills-panel.js.map +1 -0
  571. package/dist/components/features/conversation/conversation-overview-toggle.cjs +2 -0
  572. package/dist/components/features/conversation/conversation-overview-toggle.cjs.map +1 -0
  573. package/dist/components/features/conversation/conversation-overview-toggle.d.ts +11 -0
  574. package/dist/components/features/conversation/conversation-overview-toggle.js +99 -0
  575. package/dist/components/features/conversation/conversation-overview-toggle.js.map +1 -0
  576. package/dist/components/features/conversation/conversation-secondary-drawer.classes.cjs +2 -0
  577. package/dist/components/features/conversation/conversation-secondary-drawer.classes.cjs.map +1 -0
  578. package/dist/components/features/conversation/conversation-secondary-drawer.classes.d.ts +4 -0
  579. package/dist/components/features/conversation/conversation-secondary-drawer.classes.js +7 -0
  580. package/dist/components/features/conversation/conversation-secondary-drawer.classes.js.map +1 -0
  581. package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.cjs +1 -1
  582. package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.cjs.map +1 -1
  583. package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.js +10 -9
  584. package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.js.map +1 -1
  585. package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs +1 -1
  586. package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs.map +1 -1
  587. package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js +68 -62
  588. package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js.map +1 -1
  589. package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs +1 -1
  590. package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs.map +1 -1
  591. package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js +89 -79
  592. package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js.map +1 -1
  593. package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.cjs +1 -1
  594. package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.cjs.map +1 -1
  595. package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.d.ts +1 -1
  596. package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.js +3 -3
  597. package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.js.map +1 -1
  598. package/dist/components/features/conversation/right-panel-toggle.cjs +1 -1
  599. package/dist/components/features/conversation/right-panel-toggle.cjs.map +1 -1
  600. package/dist/components/features/conversation/right-panel-toggle.d.ts +3 -2
  601. package/dist/components/features/conversation/right-panel-toggle.js +34 -33
  602. package/dist/components/features/conversation/right-panel-toggle.js.map +1 -1
  603. package/dist/components/features/conversation-panel/conversation-panel-list-helpers.cjs +1 -1
  604. package/dist/components/features/conversation-panel/conversation-panel-list-helpers.cjs.map +1 -1
  605. package/dist/components/features/conversation-panel/conversation-panel-list-helpers.d.ts +2 -1
  606. package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js +14 -7
  607. package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js.map +1 -1
  608. package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
  609. package/dist/components/features/conversation-panel/conversation-panel.cjs.map +1 -1
  610. package/dist/components/features/conversation-panel/conversation-panel.js +252 -225
  611. package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
  612. package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs +1 -1
  613. package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs.map +1 -1
  614. package/dist/components/features/conversation-panel/local-new-conversation-menu.js +4 -4
  615. package/dist/components/features/conversation-panel/local-new-conversation-menu.js.map +1 -1
  616. package/dist/components/features/conversation-panel/skills-modal.cjs +1 -1
  617. package/dist/components/features/conversation-panel/skills-modal.cjs.map +1 -1
  618. package/dist/components/features/conversation-panel/skills-modal.js +29 -28
  619. package/dist/components/features/conversation-panel/skills-modal.js.map +1 -1
  620. package/dist/components/features/diff-viewer/accordion-panel.cjs +2 -0
  621. package/dist/components/features/diff-viewer/accordion-panel.cjs.map +1 -0
  622. package/dist/components/features/diff-viewer/accordion-panel.d.ts +13 -0
  623. package/dist/components/features/diff-viewer/accordion-panel.js +41 -0
  624. package/dist/components/features/diff-viewer/accordion-panel.js.map +1 -0
  625. package/dist/components/features/diff-viewer/commit-list.cjs +1 -1
  626. package/dist/components/features/diff-viewer/commit-list.cjs.map +1 -1
  627. package/dist/components/features/diff-viewer/commit-list.d.ts +5 -1
  628. package/dist/components/features/diff-viewer/commit-list.js +30 -16
  629. package/dist/components/features/diff-viewer/commit-list.js.map +1 -1
  630. package/dist/components/features/diff-viewer/commit-row.cjs +1 -1
  631. package/dist/components/features/diff-viewer/commit-row.cjs.map +1 -1
  632. package/dist/components/features/diff-viewer/commit-row.d.ts +1 -2
  633. package/dist/components/features/diff-viewer/commit-row.js +38 -34
  634. package/dist/components/features/diff-viewer/commit-row.js.map +1 -1
  635. package/dist/components/features/diff-viewer/diff-change-list.cjs +2 -0
  636. package/dist/components/features/diff-viewer/diff-change-list.cjs.map +1 -0
  637. package/dist/components/features/diff-viewer/diff-change-list.d.ts +18 -0
  638. package/dist/components/features/diff-viewer/diff-change-list.js +22 -0
  639. package/dist/components/features/diff-viewer/diff-change-list.js.map +1 -0
  640. package/dist/components/features/diff-viewer/editor-container.cjs +1 -1
  641. package/dist/components/features/diff-viewer/editor-container.cjs.map +1 -1
  642. package/dist/components/features/diff-viewer/editor-container.d.ts +2 -1
  643. package/dist/components/features/diff-viewer/editor-container.js +8 -7
  644. package/dist/components/features/diff-viewer/editor-container.js.map +1 -1
  645. package/dist/components/features/diff-viewer/file-diff-viewer.cjs +1 -1
  646. package/dist/components/features/diff-viewer/file-diff-viewer.cjs.map +1 -1
  647. package/dist/components/features/diff-viewer/file-diff-viewer.d.ts +10 -1
  648. package/dist/components/features/diff-viewer/file-diff-viewer.js +138 -112
  649. package/dist/components/features/diff-viewer/file-diff-viewer.js.map +1 -1
  650. package/dist/components/features/diff-viewer/uncommitted-changes-row.cjs +2 -0
  651. package/dist/components/features/diff-viewer/uncommitted-changes-row.cjs.map +1 -0
  652. package/dist/components/features/diff-viewer/uncommitted-changes-row.d.ts +12 -0
  653. package/dist/components/features/diff-viewer/uncommitted-changes-row.js +51 -0
  654. package/dist/components/features/diff-viewer/uncommitted-changes-row.js.map +1 -0
  655. package/dist/components/features/files-tab/file-content-viewer.cjs +1 -1
  656. package/dist/components/features/files-tab/file-content-viewer.cjs.map +1 -1
  657. package/dist/components/features/files-tab/file-content-viewer.js +5 -6
  658. package/dist/components/features/files-tab/file-content-viewer.js.map +1 -1
  659. package/dist/components/features/files-tab/file-quick-row.cjs +1 -1
  660. package/dist/components/features/files-tab/file-quick-row.cjs.map +1 -1
  661. package/dist/components/features/files-tab/file-quick-row.d.ts +9 -7
  662. package/dist/components/features/files-tab/file-quick-row.js +63 -34
  663. package/dist/components/features/files-tab/file-quick-row.js.map +1 -1
  664. package/dist/components/features/files-tab/files-tab-tree.constants.cjs +2 -0
  665. package/dist/components/features/files-tab/files-tab-tree.constants.cjs.map +1 -0
  666. package/dist/components/features/files-tab/files-tab-tree.constants.d.ts +7 -0
  667. package/dist/components/features/files-tab/files-tab-tree.constants.js +6 -0
  668. package/dist/components/features/files-tab/files-tab-tree.constants.js.map +1 -0
  669. package/dist/components/features/files-tab/segmented-toggle.cjs +1 -1
  670. package/dist/components/features/files-tab/segmented-toggle.cjs.map +1 -1
  671. package/dist/components/features/files-tab/segmented-toggle.d.ts +5 -3
  672. package/dist/components/features/files-tab/segmented-toggle.js +10 -13
  673. package/dist/components/features/files-tab/segmented-toggle.js.map +1 -1
  674. package/dist/components/features/files-tab/tree-node.cjs +1 -1
  675. package/dist/components/features/files-tab/tree-node.cjs.map +1 -1
  676. package/dist/components/features/files-tab/tree-node.js +34 -32
  677. package/dist/components/features/files-tab/tree-node.js.map +1 -1
  678. package/dist/components/features/files-tab/workspace-path.cjs +2 -0
  679. package/dist/components/features/files-tab/workspace-path.cjs.map +1 -0
  680. package/dist/components/features/files-tab/workspace-path.d.ts +6 -0
  681. package/dist/components/features/files-tab/workspace-path.js +41 -0
  682. package/dist/components/features/files-tab/workspace-path.js.map +1 -0
  683. package/dist/components/features/home/featured-automations/automation-health-indicator.cjs +2 -0
  684. package/dist/components/features/home/featured-automations/automation-health-indicator.cjs.map +1 -0
  685. package/dist/components/features/home/featured-automations/automation-health-indicator.js +22 -0
  686. package/dist/components/features/home/featured-automations/automation-health-indicator.js.map +1 -0
  687. package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs +2 -0
  688. package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs.map +1 -0
  689. package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js +45 -0
  690. package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js.map +1 -0
  691. package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs +2 -0
  692. package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs.map +1 -0
  693. package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js +108 -0
  694. package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js.map +1 -0
  695. package/dist/components/features/home/featured-automations/automation-run-health.cjs +2 -0
  696. package/dist/components/features/home/featured-automations/automation-run-health.cjs.map +1 -0
  697. package/dist/components/features/home/featured-automations/automation-run-health.js +75 -0
  698. package/dist/components/features/home/featured-automations/automation-run-health.js.map +1 -0
  699. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs +2 -0
  700. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs.map +1 -0
  701. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js +96 -0
  702. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js.map +1 -0
  703. package/dist/components/features/home/featured-automations/pinned-automation-card.d.ts +3 -3
  704. package/dist/components/features/home/git-repo-dropdown/use-url-search.cjs +1 -1
  705. package/dist/components/features/home/git-repo-dropdown/use-url-search.cjs.map +1 -1
  706. package/dist/components/features/home/git-repo-dropdown/use-url-search.js +1 -1
  707. package/dist/components/features/home/git-repo-dropdown/use-url-search.js.map +1 -1
  708. package/dist/components/features/home/workspace-dropdown/folder-browser-modal.cjs +1 -1
  709. package/dist/components/features/home/workspace-dropdown/folder-browser-modal.js +6 -6
  710. package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.cjs +1 -1
  711. package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.js +6 -6
  712. package/dist/components/features/manifest/manifest-form-field.d.ts +4 -3
  713. package/dist/components/features/manifest/manifest-icons.cjs +2 -0
  714. package/dist/components/features/manifest/manifest-icons.cjs.map +1 -0
  715. package/dist/components/features/manifest/manifest-icons.d.ts +1 -0
  716. package/dist/components/features/manifest/manifest-icons.js +21 -0
  717. package/dist/components/features/manifest/manifest-icons.js.map +1 -0
  718. package/dist/components/features/manifest/manifest-repository-list.d.ts +25 -0
  719. package/dist/components/features/markdown/markdown-table-scroll.cjs +1 -1
  720. package/dist/components/features/markdown/markdown-table-scroll.cjs.map +1 -1
  721. package/dist/components/features/markdown/markdown-table-scroll.d.ts +2 -6
  722. package/dist/components/features/markdown/markdown-table-scroll.js +15 -21
  723. package/dist/components/features/markdown/markdown-table-scroll.js.map +1 -1
  724. package/dist/components/features/mcp-logo-badge.cjs +1 -1
  725. package/dist/components/features/mcp-logo-badge.cjs.map +1 -1
  726. package/dist/components/features/mcp-logo-badge.d.ts +1 -1
  727. package/dist/components/features/mcp-logo-badge.js +1 -0
  728. package/dist/components/features/mcp-logo-badge.js.map +1 -1
  729. package/dist/components/features/mcp-page/custom-server-editor.cjs +1 -1
  730. package/dist/components/features/mcp-page/custom-server-editor.js +16 -16
  731. package/dist/components/features/mcp-page/index.cjs +1 -1
  732. package/dist/components/features/mcp-page/index.js +2 -2
  733. package/dist/components/features/mcp-page/install-server-modal.cjs +1 -1
  734. package/dist/components/features/mcp-page/install-server-modal.cjs.map +1 -1
  735. package/dist/components/features/mcp-page/install-server-modal.js +25 -25
  736. package/dist/components/features/mcp-page/install-server-modal.js.map +1 -1
  737. package/dist/components/features/mcp-page/installed-server-card.cjs +1 -1
  738. package/dist/components/features/mcp-page/installed-server-card.js +5 -5
  739. package/dist/components/features/mcp-page/marketplace-card.cjs +1 -1
  740. package/dist/components/features/mcp-page/marketplace-card.js +4 -4
  741. package/dist/components/features/mcp-page/marketplace-section.cjs +1 -1
  742. package/dist/components/features/mcp-page/marketplace-section.js +3 -3
  743. package/dist/components/features/mcp-page/mcp-logo-stack-badge.cjs +2 -0
  744. package/dist/components/features/mcp-page/mcp-logo-stack-badge.cjs.map +1 -0
  745. package/dist/components/features/mcp-page/mcp-logo-stack-badge.js +60 -0
  746. package/dist/components/features/mcp-page/mcp-logo-stack-badge.js.map +1 -0
  747. package/dist/components/features/mcp-page/mcp-server-health.cjs +1 -1
  748. package/dist/components/features/mcp-page/mcp-server-health.js +18 -18
  749. package/dist/components/features/onboarding/onboarding-host.d.ts +3 -4
  750. package/dist/components/features/onboarding/steps/setup-llm-step.d.ts +5 -9
  751. package/dist/components/features/onboarding/use-onboarding-completion.cjs +2 -0
  752. package/dist/components/features/onboarding/use-onboarding-completion.cjs.map +1 -0
  753. package/dist/components/features/onboarding/use-onboarding-completion.js +32 -0
  754. package/dist/components/features/onboarding/use-onboarding-completion.js.map +1 -0
  755. package/dist/components/features/settings/acp-auth-status-banner.d.ts +23 -6
  756. package/dist/components/features/settings/app-settings/getting-started-checklist-switch.cjs +2 -0
  757. package/dist/components/features/settings/app-settings/getting-started-checklist-switch.cjs.map +1 -0
  758. package/dist/components/features/settings/app-settings/getting-started-checklist-switch.d.ts +1 -0
  759. package/dist/components/features/settings/app-settings/getting-started-checklist-switch.js +22 -0
  760. package/dist/components/features/settings/app-settings/getting-started-checklist-switch.js.map +1 -0
  761. package/dist/components/features/settings/brand-button.cjs +1 -1
  762. package/dist/components/features/settings/brand-button.cjs.map +1 -1
  763. package/dist/components/features/settings/brand-button.d.ts +2 -0
  764. package/dist/components/features/settings/brand-button.js +4 -2
  765. package/dist/components/features/settings/brand-button.js.map +1 -1
  766. package/dist/components/features/settings/llm-profiles/delete-provider-connection-modal.cjs +1 -0
  767. package/dist/components/features/settings/llm-profiles/delete-provider-connection-modal.d.ts +7 -0
  768. package/dist/components/features/settings/llm-profiles/delete-provider-connection-modal.js +7 -0
  769. package/dist/components/features/settings/llm-profiles/llm-profiles-manager.cjs +1 -1
  770. package/dist/components/features/settings/llm-profiles/llm-profiles-manager.js +3 -0
  771. package/dist/components/features/settings/llm-profiles/llm-settings-local-view.cjs +1 -1
  772. package/dist/components/features/settings/llm-profiles/llm-settings-local-view.js +2 -0
  773. package/dist/components/features/settings/llm-profiles/profiles-body.d.ts +20 -1
  774. package/dist/components/features/settings/llm-profiles/provider-connection-modal.cjs +1 -0
  775. package/dist/components/features/settings/llm-profiles/provider-connection-modal.d.ts +19 -0
  776. package/dist/components/features/settings/llm-profiles/provider-connection-modal.js +13 -0
  777. package/dist/components/features/settings/llm-profiles/provider-connection-row.cjs +1 -0
  778. package/dist/components/features/settings/llm-profiles/provider-connection-row.d.ts +10 -0
  779. package/dist/components/features/settings/llm-profiles/provider-connection-row.js +6 -0
  780. package/dist/components/features/settings/llm-profiles/provider-connections-manager.cjs +1 -0
  781. package/dist/components/features/settings/llm-profiles/provider-connections-manager.d.ts +15 -0
  782. package/dist/components/features/settings/llm-profiles/provider-connections-manager.js +8 -0
  783. package/dist/components/features/settings/sdk-settings/field-help.cjs +1 -1
  784. package/dist/components/features/settings/sdk-settings/field-help.cjs.map +1 -1
  785. package/dist/components/features/settings/sdk-settings/field-help.d.ts +1 -1
  786. package/dist/components/features/settings/sdk-settings/field-help.js +1 -1
  787. package/dist/components/features/settings/sdk-settings/field-help.js.map +1 -1
  788. package/dist/components/features/settings/sdk-settings/schema-field.cjs +1 -1
  789. package/dist/components/features/settings/sdk-settings/schema-field.js +6 -6
  790. package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs +1 -1
  791. package/dist/components/features/settings/sdk-settings/sdk-section-page.js +9 -9
  792. package/dist/components/features/settings/secrets-settings/secret-form.cjs +1 -1
  793. package/dist/components/features/settings/secrets-settings/secret-form.js +7 -7
  794. package/dist/components/features/settings/settings-input.cjs +1 -1
  795. package/dist/components/features/settings/settings-input.cjs.map +1 -1
  796. package/dist/components/features/settings/settings-input.d.ts +6 -0
  797. package/dist/components/features/settings/settings-input.js +14 -13
  798. package/dist/components/features/settings/settings-input.js.map +1 -1
  799. package/dist/components/features/sidebar/sidebar-nav-link.cjs +1 -1
  800. package/dist/components/features/sidebar/sidebar-nav-link.cjs.map +1 -1
  801. package/dist/components/features/sidebar/sidebar-nav-link.d.ts +10 -1
  802. package/dist/components/features/sidebar/sidebar-nav-link.js +54 -36
  803. package/dist/components/features/sidebar/sidebar-nav-link.js.map +1 -1
  804. package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-icon.cjs +2 -0
  805. package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-icon.cjs.map +1 -0
  806. package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-icon.d.ts +7 -0
  807. package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-icon.js +102 -0
  808. package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-icon.js.map +1 -0
  809. package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-preview.cjs +2 -0
  810. package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-preview.cjs.map +1 -0
  811. package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-preview.d.ts +8 -0
  812. package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-preview.js +66 -0
  813. package/dist/components/features/sidebar/sidebar-onboarding-checklist-item-preview.js.map +1 -0
  814. package/dist/components/features/sidebar/sidebar-onboarding-checklist-llm-complete.cjs +2 -0
  815. package/dist/components/features/sidebar/sidebar-onboarding-checklist-llm-complete.cjs.map +1 -0
  816. package/dist/components/features/sidebar/sidebar-onboarding-checklist-llm-complete.d.ts +3 -0
  817. package/dist/components/features/sidebar/sidebar-onboarding-checklist-llm-complete.js +15 -0
  818. package/dist/components/features/sidebar/sidebar-onboarding-checklist-llm-complete.js.map +1 -0
  819. package/dist/components/features/sidebar/sidebar-onboarding-checklist-storage.cjs +2 -0
  820. package/dist/components/features/sidebar/sidebar-onboarding-checklist-storage.cjs.map +1 -0
  821. package/dist/components/features/sidebar/sidebar-onboarding-checklist-storage.d.ts +10 -0
  822. package/dist/components/features/sidebar/sidebar-onboarding-checklist-storage.js +39 -0
  823. package/dist/components/features/sidebar/sidebar-onboarding-checklist-storage.js.map +1 -0
  824. package/dist/components/features/sidebar/sidebar-onboarding-checklist.cjs +2 -0
  825. package/dist/components/features/sidebar/sidebar-onboarding-checklist.cjs.map +1 -0
  826. package/dist/components/features/sidebar/sidebar-onboarding-checklist.constants.cjs +2 -0
  827. package/dist/components/features/sidebar/sidebar-onboarding-checklist.constants.cjs.map +1 -0
  828. package/dist/components/features/sidebar/sidebar-onboarding-checklist.constants.d.ts +26 -0
  829. package/dist/components/features/sidebar/sidebar-onboarding-checklist.constants.js +78 -0
  830. package/dist/components/features/sidebar/sidebar-onboarding-checklist.constants.js.map +1 -0
  831. package/dist/components/features/sidebar/sidebar-onboarding-checklist.d.ts +5 -0
  832. package/dist/components/features/sidebar/sidebar-onboarding-checklist.js +127 -0
  833. package/dist/components/features/sidebar/sidebar-onboarding-checklist.js.map +1 -0
  834. package/dist/components/features/sidebar/sidebar-rail-body.cjs +1 -1
  835. package/dist/components/features/sidebar/sidebar-rail-body.cjs.map +1 -1
  836. package/dist/components/features/sidebar/sidebar-rail-body.js +137 -110
  837. package/dist/components/features/sidebar/sidebar-rail-body.js.map +1 -1
  838. package/dist/components/features/sidebar/sidebar.cjs +1 -1
  839. package/dist/components/features/sidebar/sidebar.cjs.map +1 -1
  840. package/dist/components/features/sidebar/sidebar.js +1 -1
  841. package/dist/components/features/sidebar/sidebar.js.map +1 -1
  842. package/dist/components/features/sidebar/use-sidebar-onboarding-checklist-dismissed.cjs +2 -0
  843. package/dist/components/features/sidebar/use-sidebar-onboarding-checklist-dismissed.cjs.map +1 -0
  844. package/dist/components/features/sidebar/use-sidebar-onboarding-checklist-dismissed.d.ts +1 -0
  845. package/dist/components/features/sidebar/use-sidebar-onboarding-checklist-dismissed.js +10 -0
  846. package/dist/components/features/sidebar/use-sidebar-onboarding-checklist-dismissed.js.map +1 -0
  847. package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.cjs +2 -0
  848. package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.cjs.map +1 -0
  849. package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.d.ts +15 -0
  850. package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.js +75 -0
  851. package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.js.map +1 -0
  852. package/dist/components/features/skills/add-skill-modal.cjs +2 -0
  853. package/dist/components/features/skills/add-skill-modal.cjs.map +1 -0
  854. package/dist/components/features/skills/add-skill-modal.js +164 -0
  855. package/dist/components/features/skills/add-skill-modal.js.map +1 -0
  856. package/dist/components/features/skills/build-skill-pills.cjs +2 -0
  857. package/dist/components/features/skills/build-skill-pills.cjs.map +1 -0
  858. package/dist/components/features/skills/build-skill-pills.js +96 -0
  859. package/dist/components/features/skills/build-skill-pills.js.map +1 -0
  860. package/dist/components/features/skills/extensions-navigation.cjs +1 -1
  861. package/dist/components/features/skills/extensions-navigation.cjs.map +1 -1
  862. package/dist/components/features/skills/extensions-navigation.js +54 -43
  863. package/dist/components/features/skills/extensions-navigation.js.map +1 -1
  864. package/dist/components/features/skills/get-skill-card-description.cjs +2 -0
  865. package/dist/components/features/skills/get-skill-card-description.cjs.map +1 -0
  866. package/dist/components/features/skills/get-skill-card-description.js +34 -0
  867. package/dist/components/features/skills/get-skill-card-description.js.map +1 -0
  868. package/dist/components/features/skills/get-skill-chat-launch-message.cjs +2 -0
  869. package/dist/components/features/skills/get-skill-chat-launch-message.cjs.map +1 -0
  870. package/dist/components/features/skills/get-skill-chat-launch-message.js +9 -0
  871. package/dist/components/features/skills/get-skill-chat-launch-message.js.map +1 -0
  872. package/dist/components/features/skills/is-copyable-skill-source.cjs +2 -0
  873. package/dist/components/features/skills/is-copyable-skill-source.cjs.map +1 -0
  874. package/dist/components/features/skills/is-copyable-skill-source.js +9 -0
  875. package/dist/components/features/skills/is-copyable-skill-source.js.map +1 -0
  876. package/dist/components/features/skills/skill-card-pill-row.cjs +2 -0
  877. package/dist/components/features/skills/skill-card-pill-row.cjs.map +1 -0
  878. package/dist/components/features/skills/skill-card-pill-row.d.ts +1 -1
  879. package/dist/components/features/skills/skill-card-pill-row.js +137 -0
  880. package/dist/components/features/skills/skill-card-pill-row.js.map +1 -0
  881. package/dist/components/features/skills/skill-card.cjs +2 -0
  882. package/dist/components/features/skills/skill-card.cjs.map +1 -0
  883. package/dist/components/features/skills/skill-card.js +93 -0
  884. package/dist/components/features/skills/skill-card.js.map +1 -0
  885. package/dist/components/features/skills/skill-detail-modal.cjs +3 -0
  886. package/dist/components/features/skills/skill-detail-modal.cjs.map +1 -0
  887. package/dist/components/features/skills/skill-detail-modal.js +150 -0
  888. package/dist/components/features/skills/skill-detail-modal.js.map +1 -0
  889. package/dist/components/features/skills/skill-facet-rail.cjs +2 -0
  890. package/dist/components/features/skills/skill-facet-rail.cjs.map +1 -0
  891. package/dist/components/features/skills/skill-facet-rail.js +42 -0
  892. package/dist/components/features/skills/skill-facet-rail.js.map +1 -0
  893. package/dist/components/features/skills/skill-facet-row.cjs +2 -0
  894. package/dist/components/features/skills/skill-facet-row.cjs.map +1 -0
  895. package/dist/components/features/skills/skill-facet-row.js +44 -0
  896. package/dist/components/features/skills/skill-facet-row.js.map +1 -0
  897. package/dist/components/features/skills/skill-filter.cjs +2 -0
  898. package/dist/components/features/skills/skill-filter.cjs.map +1 -0
  899. package/dist/components/features/skills/skill-filter.d.ts +8 -3
  900. package/dist/components/features/skills/skill-filter.js +183 -0
  901. package/dist/components/features/skills/skill-filter.js.map +1 -0
  902. package/dist/components/features/skills/skill-filters-modal.cjs +2 -0
  903. package/dist/components/features/skills/skill-filters-modal.cjs.map +1 -0
  904. package/dist/components/features/skills/skill-filters-modal.js +53 -0
  905. package/dist/components/features/skills/skill-filters-modal.js.map +1 -0
  906. package/dist/components/features/skills/skill-icon-badge.cjs +2 -0
  907. package/dist/components/features/skills/skill-icon-badge.cjs.map +1 -0
  908. package/dist/components/features/skills/skill-icon-badge.js +17 -0
  909. package/dist/components/features/skills/skill-icon-badge.js.map +1 -0
  910. package/dist/components/features/skills/skill-type-badge.cjs +2 -0
  911. package/dist/components/features/skills/skill-type-badge.cjs.map +1 -0
  912. package/dist/components/features/skills/skill-type-badge.js +21 -0
  913. package/dist/components/features/skills/skill-type-badge.js.map +1 -0
  914. package/dist/components/features/skills/skills-toolbar.cjs +2 -0
  915. package/dist/components/features/skills/skills-toolbar.cjs.map +1 -0
  916. package/dist/components/features/skills/skills-toolbar.js +63 -0
  917. package/dist/components/features/skills/skills-toolbar.js.map +1 -0
  918. package/dist/components/shared/buttons/circle-plus-check-toggle.cjs +1 -1
  919. package/dist/components/shared/buttons/circle-plus-check-toggle.cjs.map +1 -1
  920. package/dist/components/shared/buttons/circle-plus-check-toggle.js +19 -6
  921. package/dist/components/shared/buttons/circle-plus-check-toggle.js.map +1 -1
  922. package/dist/components/shared/filters/enum-filter-dropdown.cjs +1 -1
  923. package/dist/components/shared/filters/enum-filter-dropdown.cjs.map +1 -1
  924. package/dist/components/shared/filters/enum-filter-dropdown.d.ts +4 -1
  925. package/dist/components/shared/filters/enum-filter-dropdown.js +14 -14
  926. package/dist/components/shared/filters/enum-filter-dropdown.js.map +1 -1
  927. package/dist/components/shared/modals/settings/settings-form.cjs +1 -1
  928. package/dist/components/shared/modals/settings/settings-form.js +6 -6
  929. package/dist/components/ui/resize-handle.cjs +1 -1
  930. package/dist/components/ui/resize-handle.cjs.map +1 -1
  931. package/dist/components/ui/resize-handle.d.ts +2 -1
  932. package/dist/components/ui/resize-handle.js +6 -5
  933. package/dist/components/ui/resize-handle.js.map +1 -1
  934. package/dist/config/defaults.cjs +1 -1
  935. package/dist/config/defaults.cjs.map +1 -1
  936. package/dist/config/defaults.js +9 -5
  937. package/dist/config/defaults.js.map +1 -1
  938. package/dist/constants/skills-docs.cjs +2 -0
  939. package/dist/constants/skills-docs.cjs.map +1 -0
  940. package/dist/constants/skills-docs.js +6 -0
  941. package/dist/constants/skills-docs.js.map +1 -0
  942. package/dist/contexts/conversation-websocket-context.cjs +3 -3
  943. package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
  944. package/dist/contexts/conversation-websocket-context.js +174 -149
  945. package/dist/contexts/conversation-websocket-context.js.map +1 -1
  946. package/dist/extensions/canvas-extension-module-loader.d.ts +11 -0
  947. package/dist/fixtures/home-automations-demo.cjs +2 -0
  948. package/dist/fixtures/home-automations-demo.cjs.map +1 -0
  949. package/dist/fixtures/home-automations-demo.d.ts +1 -3
  950. package/dist/fixtures/home-automations-demo.js +384 -0
  951. package/dist/fixtures/home-automations-demo.js.map +1 -0
  952. package/dist/hooks/chat/use-slash-command.cjs +1 -1
  953. package/dist/hooks/chat/use-slash-command.cjs.map +1 -1
  954. package/dist/hooks/chat/use-slash-command.d.ts +1 -2
  955. package/dist/hooks/chat/use-slash-command.js +1 -0
  956. package/dist/hooks/chat/use-slash-command.js.map +1 -1
  957. package/dist/hooks/mutation/use-create-conversation.cjs +1 -1
  958. package/dist/hooks/mutation/use-create-conversation.cjs.map +1 -1
  959. package/dist/hooks/mutation/use-create-conversation.js +27 -30
  960. package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
  961. package/dist/hooks/mutation/use-create-provider-connection.cjs +1 -0
  962. package/dist/hooks/mutation/use-create-provider-connection.d.ts +2 -0
  963. package/dist/hooks/mutation/use-create-provider-connection.js +1 -0
  964. package/dist/hooks/mutation/use-delete-mcp-server.cjs +1 -1
  965. package/dist/hooks/mutation/use-delete-mcp-server.js +3 -3
  966. package/dist/hooks/mutation/use-delete-provider-connection.cjs +1 -0
  967. package/dist/hooks/mutation/use-delete-provider-connection.d.ts +1 -0
  968. package/dist/hooks/mutation/use-delete-provider-connection.js +1 -0
  969. package/dist/hooks/mutation/use-manage-canvas-extensions.d.ts +12 -0
  970. package/dist/hooks/mutation/use-switch-acp-model.cjs +1 -1
  971. package/dist/hooks/mutation/use-switch-acp-model.cjs.map +1 -1
  972. package/dist/hooks/mutation/use-switch-acp-model.d.ts +5 -3
  973. package/dist/hooks/mutation/use-switch-acp-model.js +9 -13
  974. package/dist/hooks/mutation/use-switch-acp-model.js.map +1 -1
  975. package/dist/hooks/mutation/use-update-mcp-server.cjs +1 -1
  976. package/dist/hooks/mutation/use-update-mcp-server.js +6 -6
  977. package/dist/hooks/mutation/use-update-provider-connection.cjs +1 -0
  978. package/dist/hooks/mutation/use-update-provider-connection.d.ts +7 -0
  979. package/dist/hooks/mutation/use-update-provider-connection.js +1 -0
  980. package/dist/hooks/query/concurrency-limiter.cjs +2 -0
  981. package/dist/hooks/query/concurrency-limiter.cjs.map +1 -0
  982. package/dist/hooks/query/concurrency-limiter.d.ts +22 -0
  983. package/dist/hooks/query/concurrency-limiter.js +29 -0
  984. package/dist/hooks/query/concurrency-limiter.js.map +1 -0
  985. package/dist/hooks/query/query-keys.cjs +1 -1
  986. package/dist/hooks/query/query-keys.cjs.map +1 -1
  987. package/dist/hooks/query/query-keys.d.ts +7 -0
  988. package/dist/hooks/query/query-keys.js +4 -4
  989. package/dist/hooks/query/query-keys.js.map +1 -1
  990. package/dist/hooks/query/use-active-conversation.cjs +1 -1
  991. package/dist/hooks/query/use-active-conversation.js +4 -4
  992. package/dist/hooks/query/use-automation-detail.cjs +1 -0
  993. package/dist/hooks/query/use-automation-detail.js +2 -0
  994. package/dist/hooks/query/use-automation-health.cjs +2 -0
  995. package/dist/hooks/query/use-automation-health.cjs.map +1 -0
  996. package/dist/hooks/query/use-automation-health.js +22 -0
  997. package/dist/hooks/query/use-automation-health.js.map +1 -0
  998. package/dist/hooks/query/use-automations.cjs +2 -0
  999. package/dist/hooks/query/use-automations.cjs.map +1 -0
  1000. package/dist/hooks/query/use-automations.js +28 -0
  1001. package/dist/hooks/query/use-automations.js.map +1 -0
  1002. package/dist/hooks/query/use-backends-health.cjs +1 -1
  1003. package/dist/hooks/query/use-backends-health.cjs.map +1 -1
  1004. package/dist/hooks/query/use-backends-health.d.ts +1 -1
  1005. package/dist/hooks/query/use-backends-health.js +50 -64
  1006. package/dist/hooks/query/use-backends-health.js.map +1 -1
  1007. package/dist/hooks/query/use-canvas-extensions.cjs +1 -0
  1008. package/dist/hooks/query/use-canvas-extensions.d.ts +5 -0
  1009. package/dist/hooks/query/use-canvas-extensions.js +3 -0
  1010. package/dist/hooks/query/use-conversation-history.cjs +1 -1
  1011. package/dist/hooks/query/use-conversation-history.cjs.map +1 -1
  1012. package/dist/hooks/query/use-conversation-history.js +3 -1
  1013. package/dist/hooks/query/use-conversation-history.js.map +1 -1
  1014. package/dist/hooks/query/use-conversation-metrics.cjs +1 -1
  1015. package/dist/hooks/query/use-conversation-metrics.js +3 -3
  1016. package/dist/hooks/query/use-latest-automation-runs.cjs +1 -0
  1017. package/dist/hooks/query/use-latest-automation-runs.d.ts +2 -0
  1018. package/dist/hooks/query/use-latest-automation-runs.js +4 -0
  1019. package/dist/hooks/query/use-llm-profiles.d.ts +1 -1
  1020. package/dist/hooks/query/use-paginated-conversations.cjs +1 -1
  1021. package/dist/hooks/query/use-paginated-conversations.cjs.map +1 -1
  1022. package/dist/hooks/query/use-paginated-conversations.js +19 -16
  1023. package/dist/hooks/query/use-paginated-conversations.js.map +1 -1
  1024. package/dist/hooks/query/use-provider-connections.cjs +2 -0
  1025. package/dist/hooks/query/use-provider-connections.cjs.map +1 -0
  1026. package/dist/hooks/query/use-provider-connections.d.ts +8 -0
  1027. package/dist/hooks/query/use-provider-connections.js +19 -0
  1028. package/dist/hooks/query/use-provider-connections.js.map +1 -0
  1029. package/dist/hooks/query/use-repository-git-items.cjs +2 -0
  1030. package/dist/hooks/query/use-repository-git-items.cjs.map +1 -0
  1031. package/dist/hooks/query/use-repository-git-items.d.ts +3 -0
  1032. package/dist/hooks/query/use-repository-git-items.js +33 -0
  1033. package/dist/hooks/query/use-repository-git-items.js.map +1 -0
  1034. package/dist/hooks/query/use-search-providers.cjs +1 -1
  1035. package/dist/hooks/query/use-search-providers.cjs.map +1 -1
  1036. package/dist/hooks/query/use-search-providers.js +17 -10
  1037. package/dist/hooks/query/use-search-providers.js.map +1 -1
  1038. package/dist/hooks/query/use-unified-vscode-url.cjs +1 -1
  1039. package/dist/hooks/query/use-unified-vscode-url.cjs.map +1 -1
  1040. package/dist/hooks/query/use-unified-vscode-url.d.ts +1 -0
  1041. package/dist/hooks/query/use-unified-vscode-url.js +40 -26
  1042. package/dist/hooks/query/use-unified-vscode-url.js.map +1 -1
  1043. package/dist/hooks/query/use-workspace-file-content.cjs +1 -1
  1044. package/dist/hooks/query/use-workspace-file-content.js +5 -5
  1045. package/dist/hooks/use-acp-credential-form.d.ts +6 -0
  1046. package/dist/hooks/use-bash-command-runner.cjs +1 -1
  1047. package/dist/hooks/use-bash-command-runner.cjs.map +1 -1
  1048. package/dist/hooks/use-bash-command-runner.js +45 -42
  1049. package/dist/hooks/use-bash-command-runner.js.map +1 -1
  1050. package/dist/hooks/use-conversation-overview-column-space.cjs +2 -0
  1051. package/dist/hooks/use-conversation-overview-column-space.cjs.map +1 -0
  1052. package/dist/hooks/use-conversation-overview-column-space.d.ts +2 -0
  1053. package/dist/hooks/use-conversation-overview-column-space.js +25 -0
  1054. package/dist/hooks/use-conversation-overview-column-space.js.map +1 -0
  1055. package/dist/hooks/use-conversation-overview-git-diff-stats.cjs +2 -0
  1056. package/dist/hooks/use-conversation-overview-git-diff-stats.cjs.map +1 -0
  1057. package/dist/hooks/use-conversation-overview-git-diff-stats.d.ts +7 -0
  1058. package/dist/hooks/use-conversation-overview-git-diff-stats.js +37 -0
  1059. package/dist/hooks/use-conversation-overview-git-diff-stats.js.map +1 -0
  1060. package/dist/hooks/use-conversation-overview-panel-peek.cjs +2 -0
  1061. package/dist/hooks/use-conversation-overview-panel-peek.cjs.map +1 -0
  1062. package/dist/hooks/use-conversation-overview-panel-peek.d.ts +9 -0
  1063. package/dist/hooks/use-conversation-overview-panel-peek.js +32 -0
  1064. package/dist/hooks/use-conversation-overview-panel-peek.js.map +1 -0
  1065. package/dist/hooks/use-conversation-overview-stats.cjs +2 -0
  1066. package/dist/hooks/use-conversation-overview-stats.cjs.map +1 -0
  1067. package/dist/hooks/use-conversation-overview-stats.d.ts +4 -0
  1068. package/dist/hooks/use-conversation-overview-stats.js +15 -0
  1069. package/dist/hooks/use-conversation-overview-stats.js.map +1 -0
  1070. package/dist/hooks/use-conversation-primary-repository.cjs +2 -0
  1071. package/dist/hooks/use-conversation-primary-repository.cjs.map +1 -0
  1072. package/dist/hooks/use-conversation-primary-repository.d.ts +11 -0
  1073. package/dist/hooks/use-conversation-primary-repository.js +17 -0
  1074. package/dist/hooks/use-conversation-primary-repository.js.map +1 -0
  1075. package/dist/hooks/use-drag-scroll.cjs +2 -0
  1076. package/dist/hooks/use-drag-scroll.cjs.map +1 -0
  1077. package/dist/hooks/use-drag-scroll.d.ts +12 -0
  1078. package/dist/hooks/use-drag-scroll.js +41 -0
  1079. package/dist/hooks/use-drag-scroll.js.map +1 -0
  1080. package/dist/hooks/use-has-permission.cjs +2 -0
  1081. package/dist/hooks/use-has-permission.cjs.map +1 -0
  1082. package/dist/hooks/use-has-permission.js +8 -0
  1083. package/dist/hooks/use-has-permission.js.map +1 -0
  1084. package/dist/hooks/use-home-automation-actions.cjs +2 -0
  1085. package/dist/hooks/use-home-automation-actions.cjs.map +1 -0
  1086. package/dist/hooks/use-home-automation-actions.js +15 -0
  1087. package/dist/hooks/use-home-automation-actions.js.map +1 -0
  1088. package/dist/hooks/use-launch-skill-in-chat.cjs +2 -0
  1089. package/dist/hooks/use-launch-skill-in-chat.cjs.map +1 -0
  1090. package/dist/hooks/use-launch-skill-in-chat.js +16 -0
  1091. package/dist/hooks/use-launch-skill-in-chat.js.map +1 -0
  1092. package/dist/hooks/use-mcp-server-health.cjs +1 -1
  1093. package/dist/hooks/use-mcp-server-health.js +3 -3
  1094. package/dist/hooks/use-pinned-home-route.cjs +2 -0
  1095. package/dist/hooks/use-pinned-home-route.cjs.map +1 -0
  1096. package/dist/hooks/use-pinned-home-route.d.ts +33 -0
  1097. package/dist/hooks/use-pinned-home-route.js +34 -0
  1098. package/dist/hooks/use-pinned-home-route.js.map +1 -0
  1099. package/dist/hooks/use-resizable-drawer-width.cjs +2 -0
  1100. package/dist/hooks/use-resizable-drawer-width.cjs.map +1 -0
  1101. package/dist/hooks/use-resizable-drawer-width.d.ts +22 -0
  1102. package/dist/hooks/use-resizable-drawer-width.js +46 -0
  1103. package/dist/hooks/use-resizable-drawer-width.js.map +1 -0
  1104. package/dist/hooks/use-responder-url-secret.cjs +2 -0
  1105. package/dist/hooks/use-responder-url-secret.cjs.map +1 -0
  1106. package/dist/hooks/use-responder-url-secret.js +51 -0
  1107. package/dist/hooks/use-responder-url-secret.js.map +1 -0
  1108. package/dist/hooks/use-select-conversation-tab.cjs +1 -1
  1109. package/dist/hooks/use-select-conversation-tab.cjs.map +1 -1
  1110. package/dist/hooks/use-select-conversation-tab.d.ts +2 -0
  1111. package/dist/hooks/use-select-conversation-tab.js +15 -7
  1112. package/dist/hooks/use-select-conversation-tab.js.map +1 -1
  1113. package/dist/hooks/use-skill-enablement.cjs +2 -0
  1114. package/dist/hooks/use-skill-enablement.cjs.map +1 -0
  1115. package/dist/hooks/use-skill-enablement.d.ts +14 -0
  1116. package/dist/hooks/use-skill-enablement.js +80 -0
  1117. package/dist/hooks/use-skill-enablement.js.map +1 -0
  1118. package/dist/hooks/use-tracking.cjs +1 -1
  1119. package/dist/hooks/use-tracking.cjs.map +1 -1
  1120. package/dist/hooks/use-tracking.d.ts +17 -0
  1121. package/dist/hooks/use-tracking.js +10 -0
  1122. package/dist/hooks/use-tracking.js.map +1 -1
  1123. package/dist/hooks/use-websocket.cjs +1 -1
  1124. package/dist/hooks/use-websocket.cjs.map +1 -1
  1125. package/dist/hooks/use-websocket.d.ts +1 -2
  1126. package/dist/hooks/use-websocket.js +58 -51
  1127. package/dist/hooks/use-websocket.js.map +1 -1
  1128. package/dist/i18n/declaration.cjs +1 -1
  1129. package/dist/i18n/declaration.cjs.map +1 -1
  1130. package/dist/i18n/declaration.d.ts +153 -56
  1131. package/dist/i18n/declaration.js +1 -1
  1132. package/dist/i18n/declaration.js.map +1 -1
  1133. package/dist/i18n/translation.cjs +3 -3
  1134. package/dist/i18n/translation.cjs.map +1 -1
  1135. package/dist/i18n/translation.js +2629 -980
  1136. package/dist/i18n/translation.js.map +1 -1
  1137. package/dist/icons/check-circle.cjs +2 -0
  1138. package/dist/icons/check-circle.cjs.map +1 -0
  1139. package/dist/icons/check-circle.js +20 -0
  1140. package/dist/icons/check-circle.js.map +1 -0
  1141. package/dist/icons/chevron-down.cjs +2 -0
  1142. package/dist/icons/chevron-down.cjs.map +1 -0
  1143. package/dist/icons/chevron-down.js +20 -0
  1144. package/dist/icons/chevron-down.js.map +1 -0
  1145. package/dist/icons/clock.cjs +2 -0
  1146. package/dist/icons/clock.cjs.map +1 -0
  1147. package/dist/icons/clock.js +20 -0
  1148. package/dist/icons/clock.js.map +1 -0
  1149. package/dist/icons/exclamation-circle.cjs +2 -0
  1150. package/dist/icons/exclamation-circle.cjs.map +1 -0
  1151. package/dist/icons/exclamation-circle.js +20 -0
  1152. package/dist/icons/exclamation-circle.js.map +1 -0
  1153. package/dist/icons/kebab-vertical.cjs +2 -0
  1154. package/dist/icons/kebab-vertical.cjs.map +1 -0
  1155. package/dist/icons/kebab-vertical.js +14 -0
  1156. package/dist/icons/kebab-vertical.js.map +1 -0
  1157. package/dist/icons/key.cjs +2 -0
  1158. package/dist/icons/key.cjs.map +1 -0
  1159. package/dist/icons/key.js +21 -0
  1160. package/dist/icons/key.js.map +1 -0
  1161. package/dist/icons/message-square-share.cjs +2 -0
  1162. package/dist/icons/message-square-share.cjs.map +1 -0
  1163. package/dist/icons/message-square-share.js +22 -0
  1164. package/dist/icons/message-square-share.js.map +1 -0
  1165. package/dist/icons/play.cjs +2 -0
  1166. package/dist/icons/play.cjs.map +1 -0
  1167. package/dist/icons/play.js +19 -0
  1168. package/dist/icons/play.js.map +1 -0
  1169. package/dist/icons/power.cjs +2 -0
  1170. package/dist/icons/power.cjs.map +1 -0
  1171. package/dist/icons/power.js +20 -0
  1172. package/dist/icons/power.js.map +1 -0
  1173. package/dist/icons/sparkle.cjs +2 -0
  1174. package/dist/icons/sparkle.cjs.map +1 -0
  1175. package/dist/icons/sparkle.js +20 -0
  1176. package/dist/icons/sparkle.js.map +1 -0
  1177. package/dist/icons/trash.cjs +2 -0
  1178. package/dist/icons/trash.cjs.map +1 -0
  1179. package/dist/icons/trash.js +20 -0
  1180. package/dist/icons/trash.js.map +1 -0
  1181. package/dist/icons/x-circle.cjs +2 -0
  1182. package/dist/icons/x-circle.cjs.map +1 -0
  1183. package/dist/icons/x-circle.js +20 -0
  1184. package/dist/icons/x-circle.js.map +1 -0
  1185. package/dist/index.cjs +1 -1
  1186. package/dist/index.js +15 -14
  1187. package/dist/lib/index.cjs +1 -1
  1188. package/dist/lib/index.d.ts +1 -0
  1189. package/dist/lib/index.js +1 -0
  1190. package/dist/locales/ar/openhands.json +156 -59
  1191. package/dist/locales/ca/openhands.json +156 -59
  1192. package/dist/locales/de/openhands.json +156 -59
  1193. package/dist/locales/en/openhands.json +156 -59
  1194. package/dist/locales/es/openhands.json +156 -59
  1195. package/dist/locales/fr/openhands.json +156 -59
  1196. package/dist/locales/it/openhands.json +156 -59
  1197. package/dist/locales/ja/openhands.json +156 -59
  1198. package/dist/locales/ko-KR/openhands.json +156 -59
  1199. package/dist/locales/no/openhands.json +156 -59
  1200. package/dist/locales/pt/openhands.json +156 -59
  1201. package/dist/locales/tr/openhands.json +156 -59
  1202. package/dist/locales/uk/openhands.json +156 -59
  1203. package/dist/locales/zh-CN/openhands.json +156 -59
  1204. package/dist/locales/zh-TW/openhands.json +156 -59
  1205. package/dist/manifests/automation-insights.cjs +2 -0
  1206. package/dist/manifests/automation-insights.cjs.map +1 -0
  1207. package/dist/manifests/automation-insights.d.ts +2 -0
  1208. package/dist/manifests/automation-insights.js +9 -0
  1209. package/dist/manifests/automation-insights.js.map +1 -0
  1210. package/dist/manifests/automation-interface.cjs +1 -1
  1211. package/dist/manifests/automation-interface.cjs.map +1 -1
  1212. package/dist/manifests/automation-interface.d.ts +53 -31
  1213. package/dist/manifests/automation-interface.js +56 -59
  1214. package/dist/manifests/automation-interface.js.map +1 -1
  1215. package/dist/manifests/automation-setup.cjs +1 -1
  1216. package/dist/manifests/automation-setup.cjs.map +1 -1
  1217. package/dist/manifests/automation-setup.d.ts +37 -3
  1218. package/dist/manifests/automation-setup.js +16 -2
  1219. package/dist/manifests/automation-setup.js.map +1 -1
  1220. package/dist/manifests/interface-validation.cjs +1 -1
  1221. package/dist/manifests/interface-validation.cjs.map +1 -1
  1222. package/dist/manifests/interface-validation.js +56 -52
  1223. package/dist/manifests/interface-validation.js.map +1 -1
  1224. package/dist/manifests/manifest-actions.d.ts +5 -0
  1225. package/dist/manifests/manifest-bundle.d.ts +30 -0
  1226. package/dist/manifests/manifest-local-validation.d.ts +10 -1
  1227. package/dist/manifests/manifest-sources.cjs +1 -1
  1228. package/dist/manifests/manifest-sources.cjs.map +1 -1
  1229. package/dist/manifests/manifest-sources.js +3 -3
  1230. package/dist/manifests/manifest-sources.js.map +1 -1
  1231. package/dist/manifests/manifest-template.d.ts +14 -0
  1232. package/dist/manifests/manifest-validation.cjs +1 -1
  1233. package/dist/manifests/manifest-validation.cjs.map +1 -1
  1234. package/dist/manifests/manifest-validation.js +78 -45
  1235. package/dist/manifests/manifest-validation.js.map +1 -1
  1236. package/dist/manifests/types.cjs +1 -1
  1237. package/dist/manifests/types.cjs.map +1 -1
  1238. package/dist/manifests/types.d.ts +64 -3
  1239. package/dist/manifests/types.js +7 -6
  1240. package/dist/manifests/types.js.map +1 -1
  1241. package/dist/node_modules/@heroui/popover/dist/chunk-NW7HJLND.cjs +1 -1
  1242. package/dist/node_modules/@heroui/popover/dist/chunk-NW7HJLND.js +10 -10
  1243. package/dist/node_modules/@heroui/ripple/dist/chunk-UIQI3AYJ.cjs +1 -1
  1244. package/dist/node_modules/@heroui/ripple/dist/chunk-UIQI3AYJ.js +8 -8
  1245. package/dist/node_modules/@heroui/tooltip/dist/chunk-AUA5GDXN.cjs +1 -1
  1246. package/dist/node_modules/@heroui/tooltip/dist/chunk-AUA5GDXN.js +9 -9
  1247. package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs +4884 -0
  1248. package/dist/node_modules/@openhands/extensions/automations/bundle-index.cjs.map +1 -0
  1249. package/dist/node_modules/@openhands/extensions/automations/bundle-index.js +11 -0
  1250. package/dist/node_modules/@openhands/extensions/automations/bundle-index.js.map +1 -0
  1251. package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs +13 -0
  1252. package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.cjs.map +1 -0
  1253. package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js +92 -0
  1254. package/dist/node_modules/@openhands/extensions/automations/catalog/github-agents-md-maintainer/manifest.js.map +1 -0
  1255. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs +12 -0
  1256. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs.map +1 -0
  1257. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js +103 -0
  1258. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js.map +1 -0
  1259. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs +9 -7
  1260. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs.map +1 -1
  1261. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js +37 -13
  1262. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js.map +1 -1
  1263. package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.cjs +2 -2
  1264. package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.cjs.map +1 -1
  1265. package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.js +34 -34
  1266. package/dist/node_modules/@openhands/extensions/automations/catalog/github-repo-monitor/manifest.js.map +1 -1
  1267. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.cjs +9 -0
  1268. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.cjs.map +1 -0
  1269. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.js +21 -0
  1270. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-bitbucket-pr/manifest.js.map +1 -0
  1271. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.cjs +9 -0
  1272. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.cjs.map +1 -0
  1273. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.js +21 -0
  1274. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-gitlab-mr/manifest.js.map +1 -0
  1275. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-pr/manifest.cjs +3 -3
  1276. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-pr/manifest.cjs.map +1 -1
  1277. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-pr/manifest.js +2 -2
  1278. package/dist/node_modules/@openhands/extensions/automations/catalog/jira-issue-to-pr/manifest.js.map +1 -1
  1279. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.cjs +9 -0
  1280. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.cjs.map +1 -0
  1281. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.js +21 -0
  1282. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-bitbucket-pr/manifest.js.map +1 -0
  1283. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.cjs +9 -0
  1284. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.cjs.map +1 -0
  1285. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.js +21 -0
  1286. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-github-pr/manifest.js.map +1 -0
  1287. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.cjs +9 -0
  1288. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.cjs.map +1 -0
  1289. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.js +21 -0
  1290. package/dist/node_modules/@openhands/extensions/automations/catalog/linear-issue-to-gitlab-mr/manifest.js.map +1 -0
  1291. package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs +14 -0
  1292. package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.cjs.map +1 -0
  1293. package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js +77 -0
  1294. package/dist/node_modules/@openhands/extensions/automations/catalog/news-digest/manifest.js.map +1 -0
  1295. package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs +30 -0
  1296. package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs.map +1 -0
  1297. package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js +65 -0
  1298. package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js.map +1 -0
  1299. package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs +1 -1
  1300. package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs.map +1 -1
  1301. package/dist/node_modules/@openhands/extensions/automations/catalog-index.js +28 -10
  1302. package/dist/node_modules/@openhands/extensions/automations/catalog-index.js.map +1 -1
  1303. package/dist/node_modules/@openhands/extensions/automations/index.cjs +1 -1
  1304. package/dist/node_modules/@openhands/extensions/automations/index.cjs.map +1 -1
  1305. package/dist/node_modules/@openhands/extensions/automations/index.js +18 -13
  1306. package/dist/node_modules/@openhands/extensions/automations/index.js.map +1 -1
  1307. package/dist/node_modules/@openhands/extensions/automations/interface.cjs +1 -1
  1308. package/dist/node_modules/@openhands/extensions/automations/interface.cjs.map +1 -1
  1309. package/dist/node_modules/@openhands/extensions/automations/interface.js +6 -2
  1310. package/dist/node_modules/@openhands/extensions/automations/interface.js.map +1 -1
  1311. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs +1 -1
  1312. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs.map +1 -1
  1313. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js +2 -2
  1314. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js.map +1 -1
  1315. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs +2 -0
  1316. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs.map +1 -0
  1317. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js +40 -0
  1318. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js.map +1 -0
  1319. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs +1 -1
  1320. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs.map +1 -1
  1321. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js +1 -1
  1322. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js.map +1 -1
  1323. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.cjs +1 -1
  1324. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.cjs.map +1 -1
  1325. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js +36 -3
  1326. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js.map +1 -1
  1327. package/dist/node_modules/@openhands/extensions/integrations/catalog/sonarqube.cjs +2 -0
  1328. package/dist/node_modules/@openhands/extensions/integrations/catalog/sonarqube.cjs.map +1 -0
  1329. package/dist/node_modules/@openhands/extensions/integrations/catalog/sonarqube.js +75 -0
  1330. package/dist/node_modules/@openhands/extensions/integrations/catalog/sonarqube.js.map +1 -0
  1331. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs +1 -1
  1332. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs.map +1 -1
  1333. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js +75 -71
  1334. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js.map +1 -1
  1335. package/dist/node_modules/@openhands/extensions/skills/index.cjs +1043 -49
  1336. package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
  1337. package/dist/node_modules/@openhands/extensions/skills/index.js +78 -17
  1338. package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
  1339. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.cjs +1 -1
  1340. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.js +1 -1
  1341. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs +1 -1
  1342. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs.map +1 -1
  1343. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js +8 -7
  1344. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js.map +1 -1
  1345. package/dist/node_modules/@openhands/typescript-client/dist/index.cjs +1 -1
  1346. package/dist/node_modules/@openhands/typescript-client/dist/index.js +2 -2
  1347. package/dist/node_modules/lucide-react/dist/esm/icons/activity.cjs +2 -0
  1348. package/dist/node_modules/lucide-react/dist/esm/icons/activity.cjs.map +1 -0
  1349. package/dist/node_modules/lucide-react/dist/esm/icons/activity.js +9 -0
  1350. package/dist/node_modules/lucide-react/dist/esm/icons/activity.js.map +1 -0
  1351. package/dist/node_modules/lucide-react/dist/esm/icons/blocks.cjs +2 -0
  1352. package/dist/node_modules/lucide-react/dist/esm/icons/blocks.cjs.map +1 -0
  1353. package/dist/node_modules/lucide-react/dist/esm/icons/blocks.js +16 -0
  1354. package/dist/node_modules/lucide-react/dist/esm/icons/blocks.js.map +1 -0
  1355. package/dist/node_modules/lucide-react/dist/esm/icons/book-open.cjs +2 -0
  1356. package/dist/node_modules/lucide-react/dist/esm/icons/book-open.cjs.map +1 -0
  1357. package/dist/node_modules/lucide-react/dist/esm/icons/book-open.js +12 -0
  1358. package/dist/node_modules/lucide-react/dist/esm/icons/book-open.js.map +1 -0
  1359. package/dist/node_modules/lucide-react/dist/esm/icons/download.cjs +2 -0
  1360. package/dist/node_modules/lucide-react/dist/esm/icons/download.cjs.map +1 -0
  1361. package/dist/node_modules/lucide-react/dist/esm/icons/download.js +19 -0
  1362. package/dist/node_modules/lucide-react/dist/esm/icons/download.js.map +1 -0
  1363. package/dist/node_modules/lucide-react/dist/esm/icons/file-text.cjs +2 -0
  1364. package/dist/node_modules/lucide-react/dist/esm/icons/file-text.cjs.map +1 -0
  1365. package/dist/node_modules/lucide-react/dist/esm/icons/file-text.js +27 -0
  1366. package/dist/node_modules/lucide-react/dist/esm/icons/file-text.js.map +1 -0
  1367. package/dist/node_modules/lucide-react/dist/esm/icons/git-commit-horizontal.cjs +2 -0
  1368. package/dist/node_modules/lucide-react/dist/esm/icons/git-commit-horizontal.cjs.map +1 -0
  1369. package/dist/node_modules/lucide-react/dist/esm/icons/git-commit-horizontal.js +27 -0
  1370. package/dist/node_modules/lucide-react/dist/esm/icons/git-commit-horizontal.js.map +1 -0
  1371. package/dist/node_modules/lucide-react/dist/esm/icons/laptop.cjs +2 -0
  1372. package/dist/node_modules/lucide-react/dist/esm/icons/laptop.cjs.map +1 -0
  1373. package/dist/node_modules/lucide-react/dist/esm/icons/laptop.js +12 -0
  1374. package/dist/node_modules/lucide-react/dist/esm/icons/laptop.js.map +1 -0
  1375. package/dist/node_modules/lucide-react/dist/esm/icons/layout-dashboard.cjs +2 -0
  1376. package/dist/node_modules/lucide-react/dist/esm/icons/layout-dashboard.cjs.map +1 -0
  1377. package/dist/node_modules/lucide-react/dist/esm/icons/layout-dashboard.js +39 -0
  1378. package/dist/node_modules/lucide-react/dist/esm/icons/layout-dashboard.js.map +1 -0
  1379. package/dist/node_modules/lucide-react/dist/esm/icons/library.cjs +2 -0
  1380. package/dist/node_modules/lucide-react/dist/esm/icons/library.cjs.map +1 -0
  1381. package/dist/node_modules/lucide-react/dist/esm/icons/library.js +23 -0
  1382. package/dist/node_modules/lucide-react/dist/esm/icons/library.js.map +1 -0
  1383. package/dist/node_modules/lucide-react/dist/esm/icons/package.cjs +2 -0
  1384. package/dist/node_modules/lucide-react/dist/esm/icons/package.cjs.map +1 -0
  1385. package/dist/node_modules/lucide-react/dist/esm/icons/package.js +23 -0
  1386. package/dist/node_modules/lucide-react/dist/esm/icons/package.js.map +1 -0
  1387. package/dist/node_modules/lucide-react/dist/esm/icons/palette.cjs +2 -0
  1388. package/dist/node_modules/lucide-react/dist/esm/icons/palette.cjs.map +1 -0
  1389. package/dist/node_modules/lucide-react/dist/esm/icons/palette.js +39 -0
  1390. package/dist/node_modules/lucide-react/dist/esm/icons/palette.js.map +1 -0
  1391. package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.cjs +2 -0
  1392. package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.cjs.map +1 -0
  1393. package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js +23 -0
  1394. package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js.map +1 -0
  1395. package/dist/node_modules/lucide-react/dist/esm/icons/pen-line.cjs +2 -0
  1396. package/dist/node_modules/lucide-react/dist/esm/icons/pen-line.cjs.map +1 -0
  1397. package/dist/node_modules/lucide-react/dist/esm/icons/pen-line.js +12 -0
  1398. package/dist/node_modules/lucide-react/dist/esm/icons/pen-line.js.map +1 -0
  1399. package/dist/node_modules/lucide-react/dist/esm/icons/shield-check.cjs +2 -0
  1400. package/dist/node_modules/lucide-react/dist/esm/icons/shield-check.cjs.map +1 -0
  1401. package/dist/node_modules/lucide-react/dist/esm/icons/shield-check.js +12 -0
  1402. package/dist/node_modules/lucide-react/dist/esm/icons/shield-check.js.map +1 -0
  1403. package/dist/node_modules/lucide-react/dist/esm/icons/sparkles.cjs +2 -0
  1404. package/dist/node_modules/lucide-react/dist/esm/icons/sparkles.cjs.map +1 -0
  1405. package/dist/node_modules/lucide-react/dist/esm/icons/sparkles.js +25 -0
  1406. package/dist/node_modules/lucide-react/dist/esm/icons/sparkles.js.map +1 -0
  1407. package/dist/node_modules/lucide-react/dist/esm/icons/timer.cjs +2 -0
  1408. package/dist/node_modules/lucide-react/dist/esm/icons/timer.cjs.map +1 -0
  1409. package/dist/node_modules/lucide-react/dist/esm/icons/timer.js +27 -0
  1410. package/dist/node_modules/lucide-react/dist/esm/icons/timer.js.map +1 -0
  1411. package/dist/package.cjs +1 -1
  1412. package/dist/package.cjs.map +1 -1
  1413. package/dist/package.js +3 -3
  1414. package/dist/package.js.map +1 -1
  1415. package/dist/routes/agent-settings.d.ts +10 -0
  1416. package/dist/routes/app-settings.cjs +1 -1
  1417. package/dist/routes/app-settings.cjs.map +1 -1
  1418. package/dist/routes/app-settings.js +88 -86
  1419. package/dist/routes/app-settings.js.map +1 -1
  1420. package/dist/routes/commits-tab.cjs +1 -1
  1421. package/dist/routes/commits-tab.cjs.map +1 -1
  1422. package/dist/routes/commits-tab.js +27 -21
  1423. package/dist/routes/commits-tab.js.map +1 -1
  1424. package/dist/routes/conversation.cjs +1 -1
  1425. package/dist/routes/conversation.cjs.map +1 -1
  1426. package/dist/routes/conversation.js +56 -55
  1427. package/dist/routes/conversation.js.map +1 -1
  1428. package/dist/routes/files-tab.cjs +1 -1
  1429. package/dist/routes/files-tab.cjs.map +1 -1
  1430. package/dist/routes/files-tab.d.ts +4 -0
  1431. package/dist/routes/files-tab.js +119 -149
  1432. package/dist/routes/files-tab.js.map +1 -1
  1433. package/dist/routes/llm-settings.cjs +1 -1
  1434. package/dist/routes/llm-settings.cjs.map +1 -1
  1435. package/dist/routes/llm-settings.d.ts +9 -1
  1436. package/dist/routes/llm-settings.js +141 -103
  1437. package/dist/routes/llm-settings.js.map +1 -1
  1438. package/dist/routes/mcp.cjs +1 -1
  1439. package/dist/routes/mcp.cjs.map +1 -1
  1440. package/dist/routes/mcp.js +20 -20
  1441. package/dist/routes/secrets-settings.cjs +1 -1
  1442. package/dist/routes/secrets-settings.js +15 -15
  1443. package/dist/services/canvas-ui.cjs +1 -1
  1444. package/dist/services/canvas-ui.cjs.map +1 -1
  1445. package/dist/services/canvas-ui.d.ts +5 -0
  1446. package/dist/services/canvas-ui.js +24 -10
  1447. package/dist/services/canvas-ui.js.map +1 -1
  1448. package/dist/services/settings.cjs +1 -1
  1449. package/dist/services/settings.cjs.map +1 -1
  1450. package/dist/services/settings.js +3 -2
  1451. package/dist/services/settings.js.map +1 -1
  1452. package/dist/stores/conversation-store.cjs +1 -1
  1453. package/dist/stores/conversation-store.cjs.map +1 -1
  1454. package/dist/stores/conversation-store.d.ts +8 -1
  1455. package/dist/stores/conversation-store.js +9 -0
  1456. package/dist/stores/conversation-store.js.map +1 -1
  1457. package/dist/stores/files-tab-store.cjs +1 -1
  1458. package/dist/stores/files-tab-store.cjs.map +1 -1
  1459. package/dist/stores/files-tab-store.d.ts +13 -0
  1460. package/dist/stores/files-tab-store.js +49 -5
  1461. package/dist/stores/files-tab-store.js.map +1 -1
  1462. package/dist/stores/use-event-store.cjs +1 -1
  1463. package/dist/stores/use-event-store.cjs.map +1 -1
  1464. package/dist/stores/use-event-store.js +11 -11
  1465. package/dist/stores/use-event-store.js.map +1 -1
  1466. package/dist/types/agent-server/core/events/message-event.d.ts +2 -2
  1467. package/dist/types/automation.cjs +2 -0
  1468. package/dist/types/automation.cjs.map +1 -0
  1469. package/dist/types/automation.d.ts +20 -0
  1470. package/dist/types/automation.js +8 -0
  1471. package/dist/types/automation.js.map +1 -0
  1472. package/dist/types/canvas-extension.cjs +2 -0
  1473. package/dist/types/canvas-extension.cjs.map +1 -0
  1474. package/dist/types/canvas-extension.d.ts +77 -0
  1475. package/dist/types/canvas-extension.js +6 -0
  1476. package/dist/types/canvas-extension.js.map +1 -0
  1477. package/dist/types/settings.d.ts +7 -0
  1478. package/dist/ui/help-link.cjs +1 -1
  1479. package/dist/ui/help-link.cjs.map +1 -1
  1480. package/dist/ui/help-link.d.ts +6 -1
  1481. package/dist/ui/help-link.js +32 -18
  1482. package/dist/ui/help-link.js.map +1 -1
  1483. package/dist/utils/acp-auth-display.d.ts +35 -0
  1484. package/dist/utils/automation-catalog.cjs +1 -1
  1485. package/dist/utils/automation-catalog.cjs.map +1 -1
  1486. package/dist/utils/automation-catalog.d.ts +12 -0
  1487. package/dist/utils/automation-catalog.js +20 -1
  1488. package/dist/utils/automation-catalog.js.map +1 -1
  1489. package/dist/utils/automation-schedule.cjs +2 -0
  1490. package/dist/utils/automation-schedule.cjs.map +1 -0
  1491. package/dist/utils/automation-schedule.js +8 -0
  1492. package/dist/utils/automation-schedule.js.map +1 -0
  1493. package/dist/utils/automation-stack-section.cjs +2 -0
  1494. package/dist/utils/automation-stack-section.cjs.map +1 -0
  1495. package/dist/utils/automation-stack-section.d.ts +2 -0
  1496. package/dist/utils/automation-stack-section.js +6 -0
  1497. package/dist/utils/automation-stack-section.js.map +1 -0
  1498. package/dist/utils/cache-utils.cjs +1 -1
  1499. package/dist/utils/cache-utils.js +5 -5
  1500. package/dist/utils/constants.cjs +1 -1
  1501. package/dist/utils/constants.cjs.map +1 -1
  1502. package/dist/utils/constants.js +4 -0
  1503. package/dist/utils/constants.js.map +1 -1
  1504. package/dist/utils/conversation-local-storage.cjs +1 -1
  1505. package/dist/utils/conversation-local-storage.cjs.map +1 -1
  1506. package/dist/utils/conversation-local-storage.d.ts +17 -4
  1507. package/dist/utils/conversation-local-storage.js +111 -63
  1508. package/dist/utils/conversation-local-storage.js.map +1 -1
  1509. package/dist/utils/conversation-metrics.cjs +1 -1
  1510. package/dist/utils/conversation-metrics.cjs.map +1 -1
  1511. package/dist/utils/conversation-metrics.d.ts +3 -2
  1512. package/dist/utils/conversation-metrics.js +16 -14
  1513. package/dist/utils/conversation-metrics.js.map +1 -1
  1514. package/dist/utils/conversation-overview-project-scope.cjs +2 -0
  1515. package/dist/utils/conversation-overview-project-scope.cjs.map +1 -0
  1516. package/dist/utils/conversation-overview-project-scope.d.ts +16 -0
  1517. package/dist/utils/conversation-overview-project-scope.js +22 -0
  1518. package/dist/utils/conversation-overview-project-scope.js.map +1 -0
  1519. package/dist/utils/extension-module-card-classes.cjs +1 -1
  1520. package/dist/utils/extension-module-card-classes.cjs.map +1 -1
  1521. package/dist/utils/extension-module-card-classes.d.ts +1 -1
  1522. package/dist/utils/extension-module-card-classes.js +2 -2
  1523. package/dist/utils/extension-module-card-classes.js.map +1 -1
  1524. package/dist/utils/format-model-name.cjs +1 -1
  1525. package/dist/utils/format-model-name.cjs.map +1 -1
  1526. package/dist/utils/format-model-name.d.ts +7 -3
  1527. package/dist/utils/format-model-name.js +6 -11
  1528. package/dist/utils/format-model-name.js.map +1 -1
  1529. package/dist/utils/format-relative-time.cjs +2 -0
  1530. package/dist/utils/format-relative-time.cjs.map +1 -0
  1531. package/dist/utils/format-relative-time.d.ts +7 -0
  1532. package/dist/utils/format-relative-time.js +22 -0
  1533. package/dist/utils/format-relative-time.js.map +1 -0
  1534. package/dist/utils/git-diff-stats.cjs +5 -0
  1535. package/dist/utils/git-diff-stats.cjs.map +1 -0
  1536. package/dist/utils/git-diff-stats.d.ts +9 -0
  1537. package/dist/utils/git-diff-stats.js +53 -0
  1538. package/dist/utils/git-diff-stats.js.map +1 -0
  1539. package/dist/utils/handle-event-for-ui.cjs +1 -1
  1540. package/dist/utils/handle-event-for-ui.cjs.map +1 -1
  1541. package/dist/utils/handle-event-for-ui.js +13 -11
  1542. package/dist/utils/handle-event-for-ui.js.map +1 -1
  1543. package/dist/utils/mcp-credential-validation.cjs +1 -1
  1544. package/dist/utils/mcp-credential-validation.js +3 -3
  1545. package/dist/utils/mcp-marketplace-utils.cjs +1 -1
  1546. package/dist/utils/mcp-marketplace-utils.cjs.map +1 -1
  1547. package/dist/utils/mcp-marketplace-utils.js +22 -9
  1548. package/dist/utils/mcp-marketplace-utils.js.map +1 -1
  1549. package/dist/utils/parse-git-remote-url.cjs +1 -1
  1550. package/dist/utils/parse-git-remote-url.cjs.map +1 -1
  1551. package/dist/utils/parse-git-remote-url.js +6 -7
  1552. package/dist/utils/parse-git-remote-url.js.map +1 -1
  1553. package/dist/utils/path-utils.cjs +1 -1
  1554. package/dist/utils/path-utils.cjs.map +1 -1
  1555. package/dist/utils/path-utils.d.ts +15 -3
  1556. package/dist/utils/path-utils.js +29 -3
  1557. package/dist/utils/path-utils.js.map +1 -1
  1558. package/dist/utils/recommended-automation-rail.cjs +2 -0
  1559. package/dist/utils/recommended-automation-rail.cjs.map +1 -0
  1560. package/dist/utils/recommended-automation-rail.d.ts +22 -0
  1561. package/dist/utils/recommended-automation-rail.js +44 -0
  1562. package/dist/utils/recommended-automation-rail.js.map +1 -0
  1563. package/dist/utils/responder-deployment.cjs +2 -0
  1564. package/dist/utils/responder-deployment.cjs.map +1 -0
  1565. package/dist/utils/responder-deployment.js +42 -0
  1566. package/dist/utils/responder-deployment.js.map +1 -0
  1567. package/dist/utils/scroll-fade-state.cjs +2 -0
  1568. package/dist/utils/scroll-fade-state.cjs.map +1 -0
  1569. package/dist/utils/scroll-fade-state.d.ts +6 -0
  1570. package/dist/utils/scroll-fade-state.js +13 -0
  1571. package/dist/utils/scroll-fade-state.js.map +1 -0
  1572. package/dist/utils/skill-category.cjs +2 -0
  1573. package/dist/utils/skill-category.cjs.map +1 -0
  1574. package/dist/utils/skill-category.js +51 -0
  1575. package/dist/utils/skill-category.js.map +1 -0
  1576. package/dist/utils/skill-enablement.cjs +2 -0
  1577. package/dist/utils/skill-enablement.cjs.map +1 -0
  1578. package/dist/utils/skill-enablement.d.ts +51 -0
  1579. package/dist/utils/skill-enablement.js +31 -0
  1580. package/dist/utils/skill-enablement.js.map +1 -0
  1581. package/dist/utils/skill-scope.cjs +1 -1
  1582. package/dist/utils/skill-scope.cjs.map +1 -1
  1583. package/dist/utils/skill-scope.js +1 -1
  1584. package/dist/utils/skill-scope.js.map +1 -1
  1585. package/dist/utils/streaming-delta-batcher.cjs +2 -0
  1586. package/dist/utils/streaming-delta-batcher.cjs.map +1 -0
  1587. package/dist/utils/streaming-delta-batcher.d.ts +21 -0
  1588. package/dist/utils/streaming-delta-batcher.js +31 -0
  1589. package/dist/utils/streaming-delta-batcher.js.map +1 -0
  1590. package/dist/utils/tar-gzip.d.ts +26 -0
  1591. package/dist/utils/utils.cjs +1 -1
  1592. package/dist/utils/utils.cjs.map +1 -1
  1593. package/dist/utils/utils.d.ts +1 -41
  1594. package/dist/utils/utils.js +27 -6
  1595. package/dist/utils/utils.js.map +1 -1
  1596. package/dist/utils/vscode-origin.cjs +2 -0
  1597. package/dist/utils/vscode-origin.cjs.map +1 -0
  1598. package/dist/utils/vscode-origin.d.ts +55 -0
  1599. package/dist/utils/vscode-origin.js +27 -0
  1600. package/dist/utils/vscode-origin.js.map +1 -0
  1601. package/dist/utils/websocket-handshake.cjs +2 -0
  1602. package/dist/utils/websocket-handshake.cjs.map +1 -0
  1603. package/dist/utils/websocket-handshake.d.ts +11 -0
  1604. package/dist/utils/websocket-handshake.js +12 -0
  1605. package/dist/utils/websocket-handshake.js.map +1 -0
  1606. package/dist/utils/workspace-mode.d.ts +4 -0
  1607. package/package.json +3 -3
  1608. package/scripts/check-sdk-version-sync.mjs +6 -6
  1609. package/scripts/check-translation-completeness.cjs +5 -0
  1610. package/scripts/dev-extra-backend.mjs +28 -9
  1611. package/scripts/dev-safe.mjs +81 -8
  1612. package/scripts/dev-static.mjs +48 -44
  1613. package/scripts/dev-with-automation.mjs +95 -6
  1614. package/scripts/ingress.mjs +27 -1
  1615. package/scripts/seed-automation-ux-data.mjs +810 -0
  1616. package/scripts/static-server.mjs +74 -1
  1617. package/tools/canvas_ui_tool.py +19 -0
  1618. package/build/assets/acp-providers-CYy8qA2z.js +0 -1
  1619. package/build/assets/active-backend-context-BZDG15C0.js +0 -2
  1620. package/build/assets/agent-context-settings-DGWBBbcp.js +0 -1
  1621. package/build/assets/agent-profiles-settings-DrkGdf4_.js +0 -1
  1622. package/build/assets/agent-server-conversation-service.api-DK56YPTs.js +0 -86
  1623. package/build/assets/agent-settings-DfcSgkLD.js +0 -2
  1624. package/build/assets/agent-settings-Lrc5-twS.js +0 -1
  1625. package/build/assets/alert-banner-BgDHhL7b.js +0 -1
  1626. package/build/assets/api-error-message-BEIE_yD1.js +0 -1
  1627. package/build/assets/api-key-entry-screen-DaZnOlVo.js +0 -1
  1628. package/build/assets/app-settings-BG5NAUbC.js +0 -1
  1629. package/build/assets/automation-detail-D4Hs831Z.js +0 -3
  1630. package/build/assets/automation-export-n0X6FB0C.js +0 -2
  1631. package/build/assets/automation-git-sync-CDrm8WV7.js +0 -1
  1632. package/build/assets/automation-setup-route-CZCl4ONs.js +0 -1
  1633. package/build/assets/automation-templates-DFF96AdL.js +0 -1
  1634. package/build/assets/automations-list-Bl-oGOrV.js +0 -1
  1635. package/build/assets/back-nav-button-H_ThtDA0.js +0 -1
  1636. package/build/assets/backend-form-modal-CbCemvHt.js +0 -1
  1637. package/build/assets/backend-not-configured-DP8KLNq_.js +0 -1
  1638. package/build/assets/backend-synced-settings-badge-BBASWqsb.js +0 -1
  1639. package/build/assets/badge-B-51h-SW.js +0 -1
  1640. package/build/assets/base-modal-BbjycA8X.js +0 -1
  1641. package/build/assets/bot-CGPCg03p.js +0 -1
  1642. package/build/assets/brand-button-Blxv5nww.js +0 -1
  1643. package/build/assets/browser-CuW0nWvh.js +0 -7
  1644. package/build/assets/browser-tab-D5G0ORwt.js +0 -1
  1645. package/build/assets/chat-send-button-BD2tii1r.js +0 -1
  1646. package/build/assets/check-DSuS-lyr.js +0 -1
  1647. package/build/assets/chevron-down-CgGcmtE2.js +0 -1
  1648. package/build/assets/circle-check-CG5-NPw7.js +0 -1
  1649. package/build/assets/circle-plus-check-toggle-ASbpB8vN.js +0 -1
  1650. package/build/assets/cloud-funnel-analytics-GlCUG0gk.js +0 -1
  1651. package/build/assets/cog-CZiR80uT.js +0 -1
  1652. package/build/assets/combobox-caret-DvpEsh2O.js +0 -1
  1653. package/build/assets/command-menu-DwUQzjYP.js +0 -1
  1654. package/build/assets/condenser-settings-BptcoiLA.js +0 -1
  1655. package/build/assets/confirmation-modal-CiEwxZAA.js +0 -1
  1656. package/build/assets/context-menu-list-item-CdcamfM1.js +0 -1
  1657. package/build/assets/conversation-DREHj4nT.js +0 -1
  1658. package/build/assets/conversation-DotRfiDz.js +0 -90
  1659. package/build/assets/conversation-panel-DREHj4nT.js +0 -1
  1660. package/build/assets/conversation-state-store-DMLtlHbE.js +0 -1
  1661. package/build/assets/conversation-store-Blc5xysY.js +0 -6
  1662. package/build/assets/conversation-tab-empty-state-D-puECpY.js +0 -1
  1663. package/build/assets/copy-to-clipboard-button-BGxcUbgy.js +0 -1
  1664. package/build/assets/device-verify-CZJfWaJf.js +0 -1
  1665. package/build/assets/dropdown-classes-tLhpwtxS.js +0 -1
  1666. package/build/assets/entry.client-D8GnI6GZ.js +0 -2
  1667. package/build/assets/enum-filter-dropdown-Fk8k60nk.js +0 -1
  1668. package/build/assets/environment-switch-overlay-DeztVYuL.js +0 -1
  1669. package/build/assets/extension-module-card-classes-Bo43vY5V.js +0 -1
  1670. package/build/assets/extensions-hub-Cd6GCYzq.js +0 -1
  1671. package/build/assets/extensions-navigation-C4sgZg-y.js +0 -1
  1672. package/build/assets/external-link-C0UpBgsE.js +0 -1
  1673. package/build/assets/file-text-C6WYtNdV.js +0 -1
  1674. package/build/assets/files-tab-BW_qzyAm.js +0 -1
  1675. package/build/assets/form-control-classes-CGXBLcn1.js +0 -1
  1676. package/build/assets/format-model-name-BNPKVsIq.js +0 -1
  1677. package/build/assets/format-relative-time-ZhQD4rsl.js +0 -1
  1678. package/build/assets/git-provider-icon-CaQ1yLPi.js +0 -1
  1679. package/build/assets/git-repo-dropdown-CgXR6M_E.js +0 -1
  1680. package/build/assets/git-repo-dropdown-D2Uei3CO.js +0 -1
  1681. package/build/assets/highlighted-source-view-C_YOp8Fo.js +0 -1
  1682. package/build/assets/home-DNzzJcMP.js +0 -1
  1683. package/build/assets/home-aCos-5vc.js +0 -1
  1684. package/build/assets/home-store-DgzViC3f.js +0 -1
  1685. package/build/assets/index-home-DNzzJcMP.js +0 -1
  1686. package/build/assets/info-CLoC1LRo.js +0 -1
  1687. package/build/assets/install-server-modal-D7zIqNKz.js +0 -1
  1688. package/build/assets/kebab-menu-item-content-DERMdnDv.js +0 -1
  1689. package/build/assets/launch-5PjKeLak.js +0 -1
  1690. package/build/assets/list-todo-BF049YaY.js +0 -1
  1691. package/build/assets/llm-not-configured-banner-BK9z5eS0.js +0 -27
  1692. package/build/assets/llm-settings-BLAMK2tR.js +0 -1
  1693. package/build/assets/llm-settings-BWsbarGM.js +0 -1
  1694. package/build/assets/llm-subscription-service-SfnEV9Uc.js +0 -1
  1695. package/build/assets/loader-circle-D7IagAyF.js +0 -1
  1696. package/build/assets/loading-spinner-DBgXgra0.js +0 -1
  1697. package/build/assets/manage-backends-modal-BTqNPhzc.js +0 -1
  1698. package/build/assets/manifest-abebca3c.js +0 -1
  1699. package/build/assets/manifest-subpage-layout-Rn-glaxV.js +0 -1
  1700. package/build/assets/map-provider-BK4HnqYz.js +0 -1
  1701. package/build/assets/markdown-renderer-Cp6DlHQN.js +0 -8
  1702. package/build/assets/mcp-BC-Ixn4T.js +0 -9
  1703. package/build/assets/mcp-marketplace-utils-BJWJgbB6.js +0 -1
  1704. package/build/assets/messages-CzFKrzPG.js +0 -40
  1705. package/build/assets/modal-body-BdKfD3Hl.js +0 -1
  1706. package/build/assets/modal-classes-D5_b5vMi.js +0 -1
  1707. package/build/assets/modal-close-button-objukxk_.js +0 -1
  1708. package/build/assets/mouse-pointer-click-C_gXyLyD.js +0 -1
  1709. package/build/assets/npm-CHVHV1MC.js +0 -1
  1710. package/build/assets/onboarding-Diw0V51A.js +0 -1
  1711. package/build/assets/onboarding-modal-Da4yHzsA.js +0 -1
  1712. package/build/assets/organization-service.api-BztSy69u.js +0 -1
  1713. package/build/assets/parse-git-remote-url-BkXN9jzl.js +0 -1
  1714. package/build/assets/pencil-49avMHlD.js +0 -1
  1715. package/build/assets/planner-tab-CJiSpNax.js +0 -1
  1716. package/build/assets/plugins-management-service-lHdNKWNU.js +0 -1
  1717. package/build/assets/plus-C0BagBpV.js +0 -1
  1718. package/build/assets/profiles-service.api-BLr7FXec.js +0 -1
  1719. package/build/assets/providers-CWXnb7S3.js +0 -1
  1720. package/build/assets/proxy-DYDXxtje.js +0 -1
  1721. package/build/assets/puzzle-Bt2B1rzf.js +0 -1
  1722. package/build/assets/recommended-automations-launcher-CcFMfJRR.js +0 -1
  1723. package/build/assets/refresh-cw-nmcesifB.js +0 -1
  1724. package/build/assets/root-CT4t7apy.css +0 -1
  1725. package/build/assets/root-DnRgLKpU.js +0 -2
  1726. package/build/assets/root-layout-2L9tr-BN.js +0 -2
  1727. package/build/assets/schema-field-C59lVZTA.js +0 -1
  1728. package/build/assets/sdk-section-page-BbBEQQjq.js +0 -1
  1729. package/build/assets/search-CYSDBczG.js +0 -1
  1730. package/build/assets/secrets-service-BtsgYSlj.js +0 -1
  1731. package/build/assets/secrets-settings-DJ0OKa4_.js +0 -1
  1732. package/build/assets/segmented-toggle-DiVfTZuN.js +0 -1
  1733. package/build/assets/settings-CDqL_Uqh.js +0 -1
  1734. package/build/assets/settings-DcNPxz0v.js +0 -1
  1735. package/build/assets/settings-dropdown-input-Ba1UN5Du.js +0 -1
  1736. package/build/assets/settings-index-Cz2cKt2K.js +0 -1
  1737. package/build/assets/settings-input-CWUEHHvS.js +0 -1
  1738. package/build/assets/settings-list-classes-DdcLXDGn.js +0 -1
  1739. package/build/assets/settings-modal-nEEK1Kh1.js +0 -1
  1740. package/build/assets/settings-service.api-3yAUFcaP.js +0 -1
  1741. package/build/assets/settings-switch-Dk9hChx1.js +0 -1
  1742. package/build/assets/settings-utils-CxjtCSB3.js +0 -1
  1743. package/build/assets/shared-conversation-DbAcrx3s.js +0 -1
  1744. package/build/assets/shield-check-CiOTXxV2.js +0 -1
  1745. package/build/assets/sidebar-layout-lrfPooIB.js +0 -1
  1746. package/build/assets/sidebar-mobile-menu-toggle-KERXfNu1.js +0 -1
  1747. package/build/assets/sidebar-nav-link-B8lFD6Cb.js +0 -1
  1748. package/build/assets/sidebar-store-u6pUpxJ7.js +0 -1
  1749. package/build/assets/skill-card-pill-row-dGIUzr_b.js +0 -1
  1750. package/build/assets/skill-icon-badge-kkOWZ89w.js +0 -1
  1751. package/build/assets/skill-scope-DWN1PBPH.js +0 -1
  1752. package/build/assets/skills-plugins-DFjH2Nq6.js +0 -1
  1753. package/build/assets/skills-settings-DIHpl3ol.js +0 -2
  1754. package/build/assets/sparkles-ntyMLnbj.js +0 -1
  1755. package/build/assets/styled-tooltip-B6JXcsmL.js +0 -1
  1756. package/build/assets/task-list-tab-aEJzEcHD.js +0 -1
  1757. package/build/assets/terminal-Dch7Ty5K.js +0 -3
  1758. package/build/assets/toggle-switch-B2MLKsgt.js +0 -1
  1759. package/build/assets/trash-2-yZnDM4Ji.js +0 -1
  1760. package/build/assets/typography-DB5HoCk0.js +0 -1
  1761. package/build/assets/usage-tab-DrEtBmBT.js +0 -1
  1762. package/build/assets/use-acp-credential-form-c8KXAa8A.js +0 -1
  1763. package/build/assets/use-activate-agent-profile-B0p34N3q.js +0 -1
  1764. package/build/assets/use-agent-profiles-CPIc6wLH.js +0 -1
  1765. package/build/assets/use-can-manage-org-profiles-Dz_8Eqkv.js +0 -1
  1766. package/build/assets/use-cloud-current-user-id-DvUVqCle.js +0 -1
  1767. package/build/assets/use-config-C3PO4TBw.js +0 -1
  1768. package/build/assets/use-create-conversation-DVrA_uLD.js +0 -1
  1769. package/build/assets/use-create-secret-DbBIpaCR.js +0 -1
  1770. package/build/assets/use-get-secrets-6PBitf54.js +0 -1
  1771. package/build/assets/use-has-permission-CQ31Cl8j.js +0 -1
  1772. package/build/assets/use-is-authed-2UrDIziV.js +0 -1
  1773. package/build/assets/use-is-creating-conversation-BvYpmb3v.js +0 -1
  1774. package/build/assets/use-launch-skill-in-chat-COnDpxCQ.js +0 -1
  1775. package/build/assets/use-llm-profiles-diZS4FiN.js +0 -1
  1776. package/build/assets/use-manifest-capabilities-HIWCtIUm.js +0 -1
  1777. package/build/assets/use-onboarding-completion-Bs8PcXik.js +0 -1
  1778. package/build/assets/use-plugins-marketplace-BCuNLFsr.js +0 -1
  1779. package/build/assets/use-save-agent-profile-BaMNSpBV.js +0 -1
  1780. package/build/assets/use-save-settings-BahvC2Gw.js +0 -1
  1781. package/build/assets/use-settings-C6ZxpBDX.js +0 -1
  1782. package/build/assets/use-settings-nav-items-Bqn69Ggw.js +0 -16
  1783. package/build/assets/use-tracking-Bhu7gk2y.js +0 -3
  1784. package/build/assets/use-user-conversation-BkNXpXrd.js +0 -1
  1785. package/build/assets/useInfiniteQuery-c_OmS3lK.js +0 -1
  1786. package/build/assets/useMutation-6ZsQCqAn.js +0 -1
  1787. package/build/assets/useQueries-xDrGlTO_.js +0 -1
  1788. package/build/assets/useQuery-Bs5NFz2s.js +0 -1
  1789. package/build/assets/utils-DUD5ScdA.js +0 -1
  1790. package/build/assets/vendor~browser-B-fae1JU.js +0 -47
  1791. package/build/assets/vendor~entry.client-BFE7Llz9.js +0 -1
  1792. package/build/assets/vendor~entry.client-BaKt_PIp.js +0 -9
  1793. package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js +0 -186
  1794. package/build/assets/vendor~files-tab-B6POTS66.js +0 -11
  1795. package/build/assets/vendor~index-home~home~conversation-panel~conversation-53Q_U6uP.js +0 -13
  1796. package/build/assets/vendor~index-home~home~conversation-panel~conversation~alert-banner-B3qC_oj8.js +0 -1
  1797. package/build/assets/vendor~root-layout-DeQACFVA.js +0 -1
  1798. package/build/assets/vendor~root-layout~conversation-panel~conversation-bv7ooVgH.js +0 -1
  1799. package/build/assets/vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-e8pX05xf.js +0 -1
  1800. package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-BvS6PCK2.js +0 -1
  1801. package/build/assets/vendor~root-layout~index-home~home~mcp~automations-list~automation-templates~automation-set~bxsimjx0-D7IDevqN.js +0 -1
  1802. package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-DOPLJMH9.js +0 -48
  1803. package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js +0 -1
  1804. package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-BOVIFA_g.js +0 -73
  1805. package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-C0JXQb_q.js +0 -7465
  1806. package/build/assets/verification-settings-COueVXmM.js +0 -1
  1807. package/build/assets/wrench-C95ujnYo.js +0 -1
  1808. package/build/assets/x-86ZCfxKY.js +0 -1
  1809. package/build/assets/zap-DRa-r-Tf.js +0 -1
  1810. package/dist/components/features/diff-viewer/empty-changes-message.cjs +0 -2
  1811. package/dist/components/features/diff-viewer/empty-changes-message.cjs.map +0 -1
  1812. package/dist/components/features/diff-viewer/empty-changes-message.js +0 -17
  1813. package/dist/components/features/diff-viewer/empty-changes-message.js.map +0 -1
  1814. package/dist/components/features/tips/random-tip.cjs +0 -2
  1815. package/dist/components/features/tips/random-tip.cjs.map +0 -1
  1816. package/dist/components/features/tips/random-tip.d.ts +0 -2
  1817. package/dist/components/features/tips/random-tip.js +0 -41
  1818. package/dist/components/features/tips/random-tip.js.map +0 -1
  1819. package/dist/hooks/query/use-has-git-commits.cjs +0 -2
  1820. package/dist/hooks/query/use-has-git-commits.cjs.map +0 -1
  1821. package/dist/hooks/query/use-has-git-commits.d.ts +0 -25
  1822. package/dist/hooks/query/use-has-git-commits.js +0 -31
  1823. package/dist/hooks/query/use-has-git-commits.js.map +0 -1
  1824. package/dist/hooks/use-has-attached-source.cjs +0 -2
  1825. package/dist/hooks/use-has-attached-source.cjs.map +0 -1
  1826. package/dist/hooks/use-has-attached-source.d.ts +0 -18
  1827. package/dist/hooks/use-has-attached-source.js +0 -14
  1828. package/dist/hooks/use-has-attached-source.js.map +0 -1
  1829. package/dist/icons/chveron-up.cjs +0 -2
  1830. package/dist/icons/chveron-up.cjs.map +0 -1
  1831. package/dist/icons/chveron-up.js +0 -21
  1832. package/dist/icons/chveron-up.js.map +0 -1
  1833. package/dist/routes/changes-tab.cjs +0 -2
  1834. package/dist/routes/changes-tab.cjs.map +0 -1
  1835. package/dist/routes/changes-tab.d.ts +0 -3
  1836. package/dist/routes/changes-tab.js +0 -64
  1837. package/dist/routes/changes-tab.js.map +0 -1
  1838. package/dist/utils/file-priority.cjs +0 -2
  1839. package/dist/utils/file-priority.cjs.map +0 -1
  1840. package/dist/utils/file-priority.d.ts +0 -27
  1841. package/dist/utils/file-priority.js +0 -61
  1842. package/dist/utils/file-priority.js.map +0 -1
  1843. package/dist/utils/table-row-classes.d.ts +0 -9
  1844. package/dist/utils/tips.cjs +0 -2
  1845. package/dist/utils/tips.cjs.map +0 -1
  1846. package/dist/utils/tips.d.ts +0 -7
  1847. package/dist/utils/tips.js +0 -45
  1848. package/dist/utils/tips.js.map +0 -1
  1849. package/dist/utils/workspace-relative-path.cjs +0 -2
  1850. package/dist/utils/workspace-relative-path.cjs.map +0 -1
  1851. package/dist/utils/workspace-relative-path.d.ts +0 -10
  1852. package/dist/utils/workspace-relative-path.js +0 -22
  1853. package/dist/utils/workspace-relative-path.js.map +0 -1
  1854. /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dcc51rps-rfV8mQ9m.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-rfV8mQ9m.js} +0 -0
  1855. /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~i58xkef6-cHFhpUBq.js} +0 -0
@@ -1,4 +1,4 @@
1
- require("../../../../_virtual/_rolldown/runtime.cjs");var e=[{name:`add-javadoc`,description:`Add comprehensive JavaDoc documentation to Java classes and methods. Use when documenting Java code, adding API documentation, or improving code documentation.`,triggers:[`javadoc`,`java documentation`,`document java`],content:`Add comprehensive JavaDoc documentation to all public classes and methods.
1
+ require("../../../../_virtual/_rolldown/runtime.cjs");var e=[`automations`,`environment`,`code-hosting`,`agent-authoring`,`code-quality`,`integrations`,`writing`,`design`,`other`],t=[{name:`add-javadoc`,description:`Add comprehensive JavaDoc documentation to Java classes and methods. Use when documenting Java code, adding API documentation, or improving code documentation.`,triggers:[`javadoc`,`java documentation`,`document java`],content:`Add comprehensive JavaDoc documentation to all public classes and methods.
2
2
 
3
3
  ## Class-Level Documentation
4
4
 
@@ -21,7 +21,7 @@ For each public method:
21
21
  - Document preconditions and postconditions when relevant
22
22
  - Include code examples with \`{@code ...}\` for complex methods
23
23
 
24
- See [references/example.md](references/example.md) for before/after examples.`,category:`code-quality`,license:`MIT`,compatibility:`Requires Java source files`},{name:`add-skill`,description:'Add an external skill from a GitHub repository to the current workspace. Use when users want to import, install, or add a skill from a GitHub URL (e.g., `/add-skill https://github.com/OpenHands/extensions/tree/main/skills/codereview` or "add the codereview skill from https://github.com/OpenHands/extensions/"). Handles fetching the skill files and placing them in .agents/skills/.',triggers:[],content:`# Add Skill
24
+ See [references/example.md](references/example.md) for before/after examples.`,category:`code-quality`,license:`MIT`,compatibility:`Requires Java source files`},{name:`add-skill`,description:'Import an existing skill from a GitHub repository URL into the current workspace. Use only when the user provides or references a GitHub URL/repo to fetch from (e.g., `/add-skill https://github.com/OpenHands/extensions/tree/main/skills/codereview` or "add the codereview skill from https://github.com/OpenHands/extensions/"). Handles fetching the skill files and placing them in .agents/skills/. This does not author new skills — to create a new skill from scratch (no source URL), use the skill-creator skill instead.',triggers:[],content:`# Add Skill
25
25
 
26
26
  Import skills from GitHub repositories into the current workspace.
27
27
 
@@ -64,7 +64,7 @@ Response: "✅ Added \`codereview\` to your workspace. The skill is now availabl
64
64
 
65
65
  - Creates \`.agents/skills/\` directory if it doesn't exist
66
66
  - Uses \`GITHUB_TOKEN\` for authentication (required for private repos)
67
- - Warns before overwriting existing skills with the same name`,category:`agent-authoring`},{name:`agent-canvas-environment`,description:`Work effectively inside a local Agent Canvas environment, including local agent-server auth, frontend/backend port discovery, safe workspace hygiene, and delegating work to a new local conversation through POST /api/conversations.`,triggers:[`agent canvas`,`agent-canvas`,`local conversation`,`delegate local conversation`,`session api key`,`X-Session-API-Key`,`localhost:8001`],content:`# Agent Canvas Environment
67
+ - Warns before overwriting existing skills with the same name`,category:`agent-authoring`,defaultEnabled:!0},{name:`agent-canvas-environment`,description:`Work effectively inside a local Agent Canvas environment, including local agent-server auth, frontend/backend port discovery, safe workspace hygiene, and delegating work to a new local conversation through POST /api/conversations.`,triggers:[`agent canvas`,`agent-canvas`,`local conversation`,`delegate local conversation`,`session api key`,`X-Session-API-Key`,`localhost:8001`],content:`# Agent Canvas Environment
68
68
 
69
69
  Use this skill when running inside or alongside a local Agent Canvas stack, especially when the user asks to inspect the local backend, create or monitor local conversations, or delegate work to another local conversation.
70
70
 
@@ -252,7 +252,7 @@ Include:
252
252
  - checks/tests to run
253
253
  - expected final report format
254
254
 
255
- Do not rely on the new conversation knowing anything from the current thread.`,category:`agent-authoring`},{name:`agent-creator`,description:`Create file-based sub-agents as Markdown files following the OpenHands SDK format. Guides the user through a structured interview to collect requirements, then generates a ready-to-deploy agent file. Use this skill when the user wants to create, design, or build a new sub-agent, even if they don't use the /agent-creator command.`,triggers:[`/agent-creator`],content:`# Agent Creator
255
+ Do not rely on the new conversation knowing anything from the current thread.`,category:`agent-authoring`,defaultEnabled:!0},{name:`agent-creator`,description:`Create file-based sub-agents as Markdown files following the OpenHands SDK format. Guides the user through a structured interview to collect requirements, then generates a ready-to-deploy agent file. Use this skill when the user wants to create, design, or build a new sub-agent, even if they don't use the /agent-creator command.`,triggers:[`/agent-creator`],content:`# Agent Creator
256
256
 
257
257
  You are an experienced AI Product Manager and Requirements Engineer specializing in
258
258
  OpenHands file-based agents. Your goal is to guide the user through a structured
@@ -452,7 +452,7 @@ the entire file unless explicitly asked.`,category:`agent-authoring`},{name:`age
452
452
  - If you've only explored a portion of the codebase, clearly note this limitation in the repository structure documentation
453
453
  - If you don't know the essential commands for working with the repository, such as lint or typecheck, ask the user and suggest adding them to AGENTS.md for future reference (with permission)
454
454
 
455
- When you receive this message, please review and summarize your recent actions and observations, then present a list of valuable information that should be saved in AGENTS.md to the user.`,category:`agent-authoring`},{name:`agent-sdk-builder`,description:`Guided workflow for building custom AI agents using the OpenHands Software Agent SDK. Use when you want to create a new agent through an interactive interview process that gathers requirements and generates implementation plans.`,triggers:[`/agent-builder`],content:`# Agent Builder and Interviewer Role
455
+ When you receive this message, please review and summarize your recent actions and observations, then present a list of valuable information that should be saved in AGENTS.md to the user.`,category:`agent-authoring`,defaultEnabled:!0},{name:`agent-sdk-builder`,description:`Guided workflow for building custom AI agents using the OpenHands Software Agent SDK. Use when you want to create a new agent through an interactive interview process that gathers requirements and generates implementation plans.`,triggers:[`/agent-builder`],content:`# Agent Builder and Interviewer Role
456
456
 
457
457
  You are an expert requirements gatherer and agent builder. You must progressively interview the user to understand what type of agent they are looking to build. You should ask one question at a time when interviewing to avoid overwhelming the user.
458
458
 
@@ -478,7 +478,7 @@ After the plan is generated, please ask the user if they are ready to generate t
478
478
 
479
479
  Additional guidelines:
480
480
  - Users can configure their LLM API Key using an environment variable named "LLM_API_KEY"
481
- - Unless otherwise specified, default to this model: openhands/claude-sonnet-4-5-20250929. This is configurable through the LLM_BASE_MODEL environment variable.`,category:`agent-authoring`},{name:`azure-devops`,description:`Interact with Azure DevOps repositories, pull requests, and APIs using the AZURE_DEVOPS_TOKEN environment variable. Use when working with code hosted on Azure DevOps or managing Azure DevOps resources.`,triggers:[`azure_devops`,`azure`],content:`You have access to an environment variable, \`AZURE_DEVOPS_TOKEN\`, which allows you to interact with
481
+ - Unless otherwise specified, default to this model: openhands/claude-sonnet-4-5-20250929. This is configurable through the LLM_BASE_MODEL environment variable.`,category:`agent-authoring`,defaultEnabled:!0},{name:`azure-devops`,description:`Interact with Azure DevOps repositories, pull requests, and APIs using the AZURE_DEVOPS_TOKEN environment variable. Use when working with code hosted on Azure DevOps or managing Azure DevOps resources.`,triggers:[`azure_devops`,`azure`],content:`You have access to an environment variable, \`AZURE_DEVOPS_TOKEN\`, which allows you to interact with
482
482
  the Azure DevOps API.
483
483
 
484
484
  <IMPORTANT>
@@ -825,7 +825,7 @@ COMMUNICATION STYLE:
825
825
  - Suggest concrete, actionable improvements
826
826
  - Prioritize issues that affect real users over theoretical concerns
827
827
 
828
- REMEMBER: DO NOT MODIFY THE CODE. PROVIDE CRITICAL BUT CONSTRUCTIVE FEEDBACK ONLY.`,category:`code-quality`},{name:`code-simplifier`,description:`Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Analyzes recently modified code across three dimensions - code reuse, code quality, and efficiency - and provides actionable improvement suggestions. This skill should be used when the user asks to "simplify code", "refine code", "clean up code", "improve code quality", or requests a simplification review of recent changes.`,triggers:[`/simplify`],content:`# Code Simplifier
828
+ REMEMBER: DO NOT MODIFY THE CODE. PROVIDE CRITICAL BUT CONSTRUCTIVE FEEDBACK ONLY.`,category:`code-quality`,defaultEnabled:!0},{name:`code-simplifier`,description:`Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Analyzes recently modified code across three dimensions - code reuse, code quality, and efficiency - and provides actionable improvement suggestions. This skill should be used when the user asks to "simplify code", "refine code", "clean up code", "improve code quality", or requests a simplification review of recent changes.`,triggers:[`/simplify`],content:`# Code Simplifier
829
829
 
830
830
  Analyze recently modified code and suggest refinements that improve clarity, consistency, and maintainability - without changing what the code does. The review covers three complementary aspects:
831
831
 
@@ -1207,7 +1207,7 @@ To verify Docker is working correctly, run the hello-world container:
1207
1207
  sudo docker run hello-world
1208
1208
  \`\`\`
1209
1209
 
1210
- PowerShell equivalent after Docker Desktop is running: \`docker run hello-world\`.`,category:`environment`},{name:`evidence-based-citations`,description:`Back factual claims and field values with official, verifiable sources. Use when the user asks to fill fields, answer questions, or make claims that must be supported by an exact quote and an official link.`,triggers:[`evidence-based`,`cite source`,`cite sources`,`official source`,`official link`,`official links`,`official docs`,`official documentation`,`verifiable source`],content:`The user wants every field value or factual claim you produce in the current response to be backed by an official, verifiable source. Apply this skill to the response that triggered it; do not assume it stays active for the rest of the conversation unless the user clearly asks for it to.
1210
+ PowerShell equivalent after Docker Desktop is running: \`docker run hello-world\`.`,category:`environment`,defaultEnabled:!0},{name:`evidence-based-citations`,description:`Back factual claims and field values with official, verifiable sources. Use when the user asks to fill fields, answer questions, or make claims that must be supported by an exact quote and an official link.`,triggers:[`evidence-based`,`cite source`,`cite sources`,`official source`,`official link`,`official links`,`official docs`,`official documentation`,`verifiable source`],content:`The user wants every field value or factual claim you produce in the current response to be backed by an official, verifiable source. Apply this skill to the response that triggered it; do not assume it stays active for the rest of the conversation unless the user clearly asks for it to.
1211
1211
 
1212
1212
  ## Output format
1213
1213
 
@@ -1385,7 +1385,7 @@ gh run list --repo <OWNER>/<REPO> --branch <BRANCH> --limit 5
1385
1385
 
1386
1386
  # Rerun failed jobs
1387
1387
  gh run rerun <RUN_ID> --repo <OWNER>/<REPO> --failed
1388
- \`\`\``,category:`code-hosting`},{name:`github-actions`,description:`Create, debug, and test GitHub Actions workflows and custom actions. Use when building CI/CD pipelines, automating workflows, or troubleshooting GitHub Actions.`,triggers:[`github actions`,`github workflow`,`actions workflow`,`gh actions`,`.github/workflows`],content:`# GitHub Actions Guide
1388
+ \`\`\``,category:`code-hosting`,defaultEnabled:!0},{name:`github-actions`,description:`Create, debug, and test GitHub Actions workflows and custom actions. Use when building CI/CD pipelines, automating workflows, or troubleshooting GitHub Actions.`,triggers:[`github actions`,`github workflow`,`actions workflow`,`gh actions`,`.github/workflows`],content:`# GitHub Actions Guide
1389
1389
 
1390
1390
  ## Critical Rules
1391
1391
 
@@ -1417,7 +1417,627 @@ See [README.md](README.md) for the full debugging workflow, \`gh\` commands, and
1417
1417
  1. **Secrets unavailable in fork PRs** - \`pull_request\` has no secrets for forks; \`pull_request_target\` does but **never check out or execute fork PR code inside it** (RCE with write permissions)
1418
1418
  2. **Pin action versions** - Use \`@v4\` or SHA, not \`@main\` (prevents breaking changes)
1419
1419
  3. **Explicit permissions** - Set \`permissions:\` block for GITHUB_TOKEN operations
1420
- 4. **Artifacts for job-to-job data** - Files don't persist between jobs without \`upload-artifact\`/\`download-artifact\``,category:`code-hosting`},{name:`github-pr-review`,description:`Post PR review comments using the GitHub API with inline comments, suggestions, and priority labels.`,triggers:[`/github-pr-review`],content:`# GitHub PR Review
1420
+ 4. **Artifacts for job-to-job data** - Files don't persist between jobs without \`upload-artifact\`/\`download-artifact\``,category:`code-hosting`},{name:`github-agents-md-maintainer`,description:`Create an automation that keeps AGENTS.md current in one or more GitHub repositories. On a schedule - weekly by default - it clones the default branch, starts an OpenHands conversation that reads the repository and creates or updates AGENTS.md, and opens a pull request with the result.`,triggers:[`/agents-md:setup`],content:`# AGENTS.md Maintainer Automation
1421
+
1422
+ Create a cron automation that keeps each configured repository's \`AGENTS.md\` -
1423
+ the file an agent reads first when it starts work there - matching what the
1424
+ repository actually is. It is created when missing, updated when the repository
1425
+ has moved on, and left alone when it is still accurate.
1426
+
1427
+ The automation script is deterministic: scheduling, the once-per-week claim, the
1428
+ clone, the branch, the commit, the push, the pull request, and the clone's
1429
+ removal are all handled in Python. The LLM is invoked only to read the
1430
+ repository and write the file.
1431
+
1432
+ A week is one unit of work per repository, so a cron that fires more often than
1433
+ intended, a retried run, or a restarted service cannot open the same pull
1434
+ request twice. **A repository whose previous pull request from this automation
1435
+ is still open is skipped**, because a second one would edit the same file and
1436
+ reviewing it would tell you nothing the first did not.
1437
+
1438
+ ---
1439
+
1440
+ ## Prerequisites
1441
+
1442
+ ### Required secret
1443
+
1444
+ Verify that the following secret is set in **OpenHands Settings -> Secrets**:
1445
+
1446
+ | Secret name | Token type | Minimum permissions |
1447
+ |---|---|---|
1448
+ | \`GITHUB_PERSONAL_ACCESS_TOKEN\` | Classic PAT | \`repo\` |
1449
+ | \`GITHUB_PERSONAL_ACCESS_TOKEN\` | Fine-grained PAT | Contents: **Read and write**, Metadata: Read, Pull requests: **Read and write** |
1450
+
1451
+ Contents write is required because the branch is pushed, and pull request write
1452
+ because the pull request is opened. No issue permission is needed: this
1453
+ automation never comments on an issue.
1454
+
1455
+ Check with:
1456
+ \`\`\`bash
1457
+ curl -s https://api.github.com/user \\
1458
+ -H "Authorization: Bearer $GITHUB_PERSONAL_ACCESS_TOKEN" \\
1459
+ | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('login') or d.get('message'))"
1460
+ \`\`\`
1461
+
1462
+ If the token is missing or invalid, inform the user and stop.
1463
+
1464
+ ---
1465
+
1466
+ ## Setup Workflow
1467
+
1468
+ Follow these steps in order.
1469
+
1470
+ ### Step 1 - Verify \`GITHUB_PERSONAL_ACCESS_TOKEN\`
1471
+
1472
+ Run the \`curl\` check above.
1473
+
1474
+ - If absent: *"GITHUB_PERSONAL_ACCESS_TOKEN is not set. Please add it in
1475
+ OpenHands Settings -> Secrets."* Stop.
1476
+ - If the API returns \`{"message": "Bad credentials"}\`: tell the user the token is
1477
+ invalid and ask them to update it. Stop.
1478
+
1479
+ ### Step 2 - Collect repositories
1480
+
1481
+ Ask: *"Which GitHub repositories should have their AGENTS.md maintained?
1482
+ (Format: \`owner/repo\`, e.g. \`myorg/backend\`. List several separated by commas.)"*
1483
+
1484
+ Validate access to **each** repository, and confirm the token can push:
1485
+ \`\`\`bash
1486
+ curl -s "https://api.github.com/repos/{owner}/{repo}" \\
1487
+ -H "Authorization: Bearer $GITHUB_PERSONAL_ACCESS_TOKEN" \\
1488
+ | python3 -c "
1489
+ import json, sys
1490
+ d = json.load(sys.stdin)
1491
+ if 'message' in d:
1492
+ print('ERROR:', d['message'])
1493
+ else:
1494
+ print(f\\"Accessible. Default branch: {d.get('default_branch')}. Push: {d.get('permissions',{}).get('push')}\\")
1495
+ "
1496
+ \`\`\`
1497
+
1498
+ Record every accepted repository into \`REPOS = ["{owner}/{repo}", ...]\`. Each
1499
+ repository keeps its own state and its own weekly claim, so one falling behind
1500
+ never blocks another.
1501
+
1502
+ ### Step 3 - Collect the schedule
1503
+
1504
+ Ask: *"How often should AGENTS.md be checked?
1505
+ (Press Enter for the default: every Monday at 09:00 UTC, \`0 9 * * 1\`.)"*
1506
+
1507
+ Default: \`0 9 * * 1\`. Record as \`CRON_SCHEDULE\`, and the timezone as
1508
+ \`CRON_TIMEZONE\` (default \`UTC\`).
1509
+
1510
+ A schedule more frequent than weekly is allowed but rarely useful: the work is
1511
+ keyed by ISO week, so extra runs inside the same week do nothing but poll.
1512
+
1513
+ ### Step 4 - Collect the pull request mode
1514
+
1515
+ Ask: *"Should the pull requests be opened as drafts?
1516
+ 1. Draft (default) - opened as a draft, ready for a human to mark ready
1517
+ 2. Ready for review - opened as a normal pull request
1518
+ (Press Enter for Draft)"*
1519
+
1520
+ Map the choice to \`DRAFT_PULL_REQUEST\` (\`True\` or \`False\`).
1521
+
1522
+ ### Step 5 - Collect the branch prefix
1523
+
1524
+ Ask: *"What branch prefix should the automation use?
1525
+ (Press Enter for the default: \`openhands/agents-md\`, which produces
1526
+ \`openhands/agents-md-2026-W34\`.)"*
1527
+
1528
+ Record as \`BRANCH_PREFIX\`. The prefix is also how the automation recognises its
1529
+ own open pull requests, so changing it later makes it stop seeing the older ones.
1530
+
1531
+ ### Step 6 - Confirm the secret scope
1532
+
1533
+ The agent is handed \`GITHUB_PERSONAL_ACCESS_TOKEN\`, because it pushes its branch
1534
+ and opens the pull request itself. Ask: *"Beyond the GitHub token, does reading
1535
+ this repository need a secret of its own? (Press Enter for none.)"*
1536
+
1537
+ Record the answers appended to the default, as
1538
+ \`AGENT_SECRET_NAMES = ["GITHUB_PERSONAL_ACCESS_TOKEN", "NAME", ...]\`. Keep it an
1539
+ allow-list: the conversation reads a whole repository, so the rest of the
1540
+ deployment's secrets should stay out of its reach.
1541
+
1542
+ ### Step 7 - Generate the automation script
1543
+
1544
+ Read \`scripts/main.py\` from this skill's directory. Apply exactly four constant
1545
+ substitutions near the top of the file:
1546
+
1547
+ > The script also reads a \`config.json\` shipped beside it, if there is one, over
1548
+ > these constants. That is how the catalog entry
1549
+ > (\`automations/catalog/github-agents-md-maintainer/\`) configures an unmodified
1550
+ > copy, since a declarative host cannot rewrite Python. This setup path
1551
+ > substitutes the constants and ships no \`config.json\`, so the two never collide.
1552
+
1553
+ | Placeholder | Replace with |
1554
+ |---|---|
1555
+ | \`REPOS = ["owner/repo"]\` | \`REPOS = ["{owner_repo}", ...]\` - one entry per repository from Step 2 |
1556
+ | \`BRANCH_PREFIX = "openhands/agents-md"\` | \`BRANCH_PREFIX = "{branch_prefix}"\` |
1557
+ | \`DRAFT_PULL_REQUEST = True\` | \`DRAFT_PULL_REQUEST = {True or False}\` |
1558
+ | \`AGENT_SECRET_NAMES: list[str] = ["GITHUB_PERSONAL_ACCESS_TOKEN"]\` | the list from Step 6 |
1559
+
1560
+ Use a safe string writer such as \`json.dumps(value)\` when inserting user-provided
1561
+ repository names or prefixes into Python string literals.
1562
+
1563
+ Write the customized script to a temporary build directory and validate it:
1564
+ \`\`\`bash
1565
+ mkdir -p /tmp/agents-md-build
1566
+ # write the customized main.py to /tmp/agents-md-build/main.py
1567
+ python3 -m py_compile /tmp/agents-md-build/main.py && echo "Syntax OK"
1568
+ \`\`\`
1569
+
1570
+ ### Step 8 - Package and upload
1571
+
1572
+ Determine the Automation backend URL and auth from the \`<RUNTIME_SERVICES>\`
1573
+ block in your system context:
1574
+ - **OPENHANDS_HOST**: the Automation backend \`url_from_agent\`
1575
+ - **Auth**: \`X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY\`
1576
+
1577
+ \`\`\`bash
1578
+ tar -czf /tmp/agents-md.tar.gz -C /tmp/agents-md-build .
1579
+
1580
+ TARBALL_PATH=$(curl -s -X POST \\
1581
+ "\${OPENHANDS_HOST}/api/automation/v1/uploads?name=github-agents-md-maintainer" \\
1582
+ -H "X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY" \\
1583
+ -H "Content-Type: application/gzip" \\
1584
+ --data-binary @/tmp/agents-md.tar.gz \\
1585
+ | python3 -c "import json,sys; print(json.load(sys.stdin)['tarball_path'])")
1586
+
1587
+ echo "Uploaded: $TARBALL_PATH"
1588
+ \`\`\`
1589
+
1590
+ ### Step 9 - Register the automation
1591
+
1592
+ \`\`\`bash
1593
+ curl -s -X POST "\${OPENHANDS_HOST}/api/automation/v1" \\
1594
+ -H "X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY" \\
1595
+ -H "Content-Type: application/json" \\
1596
+ -d "{
1597
+ \\"name\\": \\"AGENTS.md Maintainer: {repo_summary}\\",
1598
+ \\"trigger\\": {\\"type\\": \\"cron\\", \\"schedule\\": \\"{cron_schedule}\\", \\"timezone\\": \\"{cron_timezone}\\"},
1599
+ \\"tarball_path\\": \\"$TARBALL_PATH\\",
1600
+ \\"entrypoint\\": \\"python3 main.py\\",
1601
+ \\"timeout\\": 900
1602
+ }" | python3 -m json.tool
1603
+ \`\`\`
1604
+
1605
+ Record the returned \`id\`.
1606
+
1607
+ ### Step 10 - Confirm
1608
+
1609
+ Tell the user:
1610
+
1611
+ > ✅ **AGENTS.md Maintainer** is running!
1612
+ >
1613
+ > - Automation ID: \`{id}\`
1614
+ > - Repositories: \`{owner}/{repo}\`, ... (one line each)
1615
+ > - Schedule: \`{cron_schedule}\` ({cron_timezone})
1616
+ > - Branch prefix: \`{branch_prefix}\`
1617
+ > - Pull requests: \`{draft or ready for review}\`
1618
+ > - State file per repository:
1619
+ > \`~/.openhands/workspaces/automation-state/github_agents_md_{id}_{owner}__{repo}.json\`
1620
+ >
1621
+ > Each week it reads the repository and proposes an AGENTS.md change, or reports
1622
+ > that none is needed. While one of its pull requests is still open, it stays
1623
+ > quiet - merge or close it to get the next one.
1624
+
1625
+ ---
1626
+
1627
+ ## Runtime Behaviour (per run)
1628
+
1629
+ Each cron run executes \`main.py\`, which loads \`config.json\` if the catalog
1630
+ shipped one, checks that \`git\` is available, resolves and validates
1631
+ \`GITHUB_PERSONAL_ACCESS_TOKEN\` once, then processes every repository in \`REPOS\`
1632
+ independently. One repository failing does not stop the others; the run fails
1633
+ only if every repository fails.
1634
+
1635
+ For each repository:
1636
+
1637
+ 1. Loads that repository's state and reads its default branch.
1638
+ 2. Computes the current ISO week, e.g. \`2026-W34\`, and stops here if that week
1639
+ is already recorded - which is what makes extra runs inside a week harmless.
1640
+ 3. Lists open pull requests whose head branch starts with the branch prefix. If
1641
+ any exist, records the skip and moves on.
1642
+ 4. Asks GitHub whether \`AGENTS.md\` exists on the default branch, which decides
1643
+ whether the run is a create or an update, and the pull request's title.
1644
+ 5. Claims the week in state **before** the slow work, so an overlapping run
1645
+ cannot start it twice.
1646
+ 6. Picks the first free branch name (\`{prefix}-{period}\`, else a numbered
1647
+ variant), clones the default branch shallow and single-branch into
1648
+ \`{WORKSPACE_BASE}/agents-md/{owner}__{repo}/{period}\`, and creates the branch.
1649
+ 7. Starts an OpenHands conversation with that clone as its working directory,
1650
+ and only the secrets named in \`AGENT_SECRET_NAMES\` attached.
1651
+ 8. When the conversation reaches \`idle\`, \`finished\`, \`error\`, or \`stuck\`:
1652
+ - Adopts the pull request the agent opened, if GitHub says one exists.
1653
+ - Records the failure and opens nothing if the conversation errored.
1654
+ - Records \`no-changes\` and opens nothing if there are no commits - the
1655
+ expected outcome when \`AGENTS.md\` is already accurate.
1656
+ - Otherwise commits what was left, pushes, and opens the pull request itself.
1657
+ - Retries a failed push or pull request on the next two runs before giving up.
1658
+ 9. Removes the clone once the conversation is confirmed stopped.
1659
+
1660
+ ---
1661
+
1662
+ ## Additional Resources
1663
+
1664
+ - **\`references/state-schema.md\`** - State JSON schema and the task lifecycle.
1665
+ - **\`scripts/main.py\`** - The complete automation script.
1666
+
1667
+ ---
1668
+
1669
+ ## Troubleshooting
1670
+
1671
+ | Symptom | Likely cause | Fix |
1672
+ |---|---|---|
1673
+ | Nothing happens for a repository | A pull request from this automation is still open | Merge or close it; the next run proposes the following one |
1674
+ | Nothing happens after a manual dispatch | The current ISO week is already recorded in state | Wait for the next week, or clear that week's entry from the state document |
1675
+ | "The token cannot push to ..." | Token lacks Contents: write | Issue a token with write access, or drop the repository from \`REPOS\` |
1676
+ | \`git is not available in the automation runtime\` | The runtime image has no git | Use a runtime image that ships git |
1677
+ | Pull request says nothing changed | The agent judged AGENTS.md accurate but still committed | Read its summary in the pull request body; tighten the prompt if it keeps making cosmetic edits |
1678
+ | Every run reports \`no-changes\` | AGENTS.md is accurate, or the agent cannot read the repository | Open the conversation from the run log and check what it saw |
1679
+ | Clones remain under \`agents-md/\` | Their conversations had not stopped yet | They are removed by a later run once the conversation is terminal |`,category:`automations`},{name:`github-issue-to-pr`,description:`Create an automation that implements GitHub issues when a configurable trigger label is applied. Polls one or more repositories deterministically, clones the default branch, starts one OpenHands conversation per label event, then commits, pushes, and opens the pull request itself.`,triggers:[`/issue-to-pr:setup`],content:`# GitHub Issue to PR Automation
1680
+
1681
+ Create a cron automation that watches one or more GitHub repositories for issues
1682
+ with a trigger label, starts an OpenHands conversation once per label event with
1683
+ the repository's default branch already checked out, and opens a pull request
1684
+ with whatever the agent produced.
1685
+
1686
+ The automation script is deterministic: issue discovery, label-event tracking,
1687
+ state persistence, the clone, the branch, the commit, the push, the pull request,
1688
+ the issue comments, and the clone's removal are all handled in Python. The LLM is
1689
+ invoked only to write the code.
1690
+
1691
+ The agent is told **which** issue to implement, not what it says. It fetches the
1692
+ description, the discussion, and whatever they link to itself, so nothing in the
1693
+ prompt goes stale between dispatch and the moment the agent reads it.
1694
+
1695
+ That needs read access, so the conversation is handed exactly one secret,
1696
+ \`GITHUB_PERSONAL_ACCESS_TOKEN\`, and no MCP servers. \`AGENT_SECRET_NAMES\` stays an
1697
+ allow-list: the rest of the deployment's secret store is not reachable from a
1698
+ conversation whose instructions came from an issue.
1699
+
1700
+ The agent also finishes the job: it commits, pushes its branch, and opens the
1701
+ pull request, so the pull request appears when the agent stops rather than on the
1702
+ next poll. The script does not trust that it happened - when the conversation
1703
+ ends it asks GitHub whether the pull request exists, and opens it itself when it
1704
+ does not. \`origin\` still carries no credential, so every GitHub command the agent
1705
+ runs has to name \`GITHUB_PERSONAL_ACCESS_TOKEN\`; the SDK only puts a secret in the
1706
+ environment of a command that mentions it, and masks it in the output.
1707
+
1708
+ ---
1709
+
1710
+ ## Prerequisites
1711
+
1712
+ ### Required secret
1713
+
1714
+ Verify that the following secret is set in **OpenHands Settings -> Secrets**:
1715
+
1716
+ | Secret name | Token type | Minimum permissions |
1717
+ |---|---|---|
1718
+ | \`GITHUB_PERSONAL_ACCESS_TOKEN\` | Classic PAT | \`repo\`, plus \`workflow\` |
1719
+ | \`GITHUB_PERSONAL_ACCESS_TOKEN\` | Fine-grained PAT | Contents: **Read and write**, Metadata: Read, Issues: **Read and write**, Pull requests: **Read and write**, Workflows: **Read and write** |
1720
+
1721
+ The workflow scope is not optional in practice. An issue asking for a CI change
1722
+ is a normal issue, and GitHub rejects the whole push when a token without it
1723
+ touches \`.github/workflows/\`: *"refusing to allow a Personal Access Token to
1724
+ create or update workflow ... without \`workflow\` scope"*. The branch is rejected
1725
+ in full, so the pull request never opens.
1726
+
1727
+ Contents write access is required because the script pushes the branch, and pull
1728
+ request write because it opens the pull request. A read-only token will poll
1729
+ happily and then fail at the point of pushing.
1730
+
1731
+ When several repositories are monitored, the token must cover all of them.
1732
+
1733
+ Check with:
1734
+ \`\`\`bash
1735
+ curl -s https://api.github.com/user \\
1736
+ -H "Authorization: Bearer $GITHUB_PERSONAL_ACCESS_TOKEN" \\
1737
+ | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('login') or d.get('message'))"
1738
+ \`\`\`
1739
+
1740
+ If the token is missing or invalid, inform the user and stop.
1741
+
1742
+ ---
1743
+
1744
+ ## Setup Workflow
1745
+
1746
+ Follow these steps in order.
1747
+
1748
+ ### Step 1 - Verify \`GITHUB_PERSONAL_ACCESS_TOKEN\`
1749
+
1750
+ Run the \`curl\` check above.
1751
+
1752
+ - If absent: *"GITHUB_PERSONAL_ACCESS_TOKEN is not set. Please add it in
1753
+ OpenHands Settings -> Secrets."* Stop.
1754
+ - If the API returns \`{"message": "Bad credentials"}\`: tell the user the token is
1755
+ invalid and ask them to update it. Stop.
1756
+
1757
+ ### Step 2 - Collect repositories
1758
+
1759
+ Ask: *"Which GitHub repositories should be watched?
1760
+ (Format: \`owner/repo\`, e.g. \`myorg/backend\`. List several separated by commas to
1761
+ serve them all from one automation.)"*
1762
+
1763
+ Validate access to **each** repository, and confirm the token can push:
1764
+ \`\`\`bash
1765
+ curl -s "https://api.github.com/repos/{owner}/{repo}" \\
1766
+ -H "Authorization: Bearer $GITHUB_PERSONAL_ACCESS_TOKEN" \\
1767
+ | python3 -c "
1768
+ import json, sys
1769
+ d = json.load(sys.stdin)
1770
+ if 'message' in d:
1771
+ print('ERROR:', d['message'])
1772
+ else:
1773
+ perms = d.get('permissions', {})
1774
+ print(f\\"Accessible. Default branch: {d.get('default_branch')}. Push: {perms.get('push')}\\")
1775
+ "
1776
+ \`\`\`
1777
+
1778
+ Record every accepted repository into \`REPOS = ["{owner}/{repo}", ...]\`. If one
1779
+ repository fails the check, say which and ask whether to continue without it. If
1780
+ \`Push: False\`, say that the automation cannot open pull requests there and ask
1781
+ for a token with write access.
1782
+
1783
+ Each repository is polled independently and keeps its own state, so issue numbers
1784
+ never collide between them. The trigger label, branch prefix, and schedule are
1785
+ shared; a repository needing different settings wants its own automation.
1786
+
1787
+ ### Step 3 - Collect trigger label
1788
+
1789
+ Ask: *"Which issue label should trigger an implementation?
1790
+ (Press Enter for the default: \`openhands\`.)"*
1791
+
1792
+ Record the answer as \`TRIGGER_LABEL\`. If the label does not exist yet, tell the
1793
+ user that GitHub will still record the event once the label is created and
1794
+ applied to an issue.
1795
+
1796
+ The automation works an issue when it sees the latest matching \`labeled\` event
1797
+ for that label. To ask for another attempt later, remove and re-apply the label -
1798
+ that opens a second branch and a second pull request rather than overwriting the
1799
+ first.
1800
+
1801
+ ### Step 4 - Collect the pull request mode
1802
+
1803
+ Ask: *"Should the pull requests be opened as drafts?
1804
+ 1. Draft (default) - opened as a draft, ready for a human to mark ready
1805
+ 2. Ready for review - opened as a normal pull request
1806
+ (Press Enter for Draft)"*
1807
+
1808
+ Map the choice to \`DRAFT_PULL_REQUEST\` (\`True\` or \`False\`).
1809
+
1810
+ ### Step 5 - Collect the branch prefix
1811
+
1812
+ Ask: *"What branch prefix should the automation use?
1813
+ (Press Enter for the default: \`openhands/issue\`, which produces
1814
+ \`openhands/issue-42\`.)"*
1815
+
1816
+ Record as \`BRANCH_PREFIX\`. Keep it free of spaces and of characters git rejects
1817
+ in a ref name.
1818
+
1819
+ ### Step 6 - Collect cron schedule
1820
+
1821
+ Ask: *"How often should the automation poll for labelled issues?
1822
+ (Press Enter for the default: every 5 minutes.
1823
+ Use a cron expression for a different interval, e.g. \`0 * * * *\` = hourly)"*
1824
+
1825
+ Default: \`*/5 * * * *\`.
1826
+
1827
+ Record as \`CRON_SCHEDULE\`.
1828
+
1829
+ ### Step 7 - Confirm the secret scope
1830
+
1831
+ The agent is handed \`GITHUB_PERSONAL_ACCESS_TOKEN\`, because it reads the issue and
1832
+ its discussion itself. Ask: *"Beyond the GitHub token, does the repository's build
1833
+ need a secret of its own - a package registry token, for example? (Press Enter for
1834
+ none.)"*
1835
+
1836
+ Record the answers appended to the default, as
1837
+ \`AGENT_SECRET_NAMES = ["GITHUB_PERSONAL_ACCESS_TOKEN", "NAME", ...]\`.
1838
+
1839
+ Keep it an allow-list. Forwarding the whole secret store would put every
1840
+ credential in the deployment behind a prompt written by whoever opened the issue.
1841
+ If the repositories are public and you would rather the conversation held no
1842
+ credential at all, set the list to \`[]\` - the agent can still read a public issue
1843
+ unauthenticated, and private repositories then stop working.
1844
+
1845
+ ### Step 8 - Generate the automation script
1846
+
1847
+ Read \`scripts/main.py\` from this skill's directory. Apply exactly five constant
1848
+ substitutions near the top of the file:
1849
+
1850
+ > The script also reads a \`config.json\` shipped beside it, if there is one, over
1851
+ > these constants. That is how the catalog entry
1852
+ > (\`automations/catalog/github-issue-to-pr/\`) configures an unmodified copy,
1853
+ > since a declarative host cannot rewrite Python. This setup path substitutes the
1854
+ > constants and ships no \`config.json\`, so the two never collide.
1855
+
1856
+ | Placeholder | Replace with |
1857
+ |---|---|
1858
+ | \`REPOS = ["owner/repo"]\` | \`REPOS = ["{owner_repo}", ...]\` - one entry per repository collected in Step 2 |
1859
+ | \`TRIGGER_LABEL = "openhands"\` | \`TRIGGER_LABEL = "{trigger_label}"\` |
1860
+ | \`BRANCH_PREFIX = "openhands/issue"\` | \`BRANCH_PREFIX = "{branch_prefix}"\` |
1861
+ | \`DRAFT_PULL_REQUEST = True\` | \`DRAFT_PULL_REQUEST = {True or False}\` |
1862
+ | \`AGENT_SECRET_NAMES: list[str] = []\` | \`AGENT_SECRET_NAMES: list[str] = ["{name}", ...]\` |
1863
+
1864
+ Leave \`MAX_NEW_PER_RUN\` and \`DEFAULT_OPENHANDS_URL\` alone unless the user asks
1865
+ for a different cap or a non-default OpenHands URL.
1866
+
1867
+ A repository may be given as \`owner/repo\`, as a clone URL, or as an SSH remote;
1868
+ the script normalizes each one at startup and names the value it could not read
1869
+ rather than blaming the token.
1870
+
1871
+ Use a safe string writer such as \`json.dumps(value)\` when inserting user-provided
1872
+ repository names, labels, or prefixes into Python string literals.
1873
+ \`json.dumps(list_of_repos)\` produces the whole \`REPOS\` list safely in one step.
1874
+
1875
+ Write the customized script to a temporary build directory:
1876
+ \`\`\`bash
1877
+ mkdir -p /tmp/issue-to-pr-build
1878
+ # write the customized main.py to /tmp/issue-to-pr-build/main.py
1879
+ \`\`\`
1880
+
1881
+ Validate syntax before packaging:
1882
+ \`\`\`bash
1883
+ python3 -m py_compile /tmp/issue-to-pr-build/main.py && echo "Syntax OK"
1884
+ \`\`\`
1885
+
1886
+ Fix any syntax errors before proceeding.
1887
+
1888
+ ### Step 9 - Package and upload
1889
+
1890
+ Determine the Automation backend URL and auth from the \`<RUNTIME_SERVICES>\`
1891
+ block in your system context:
1892
+ - **OPENHANDS_HOST**: the Automation backend \`url_from_agent\`
1893
+ - **Auth**: \`X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY\`
1894
+
1895
+ \`\`\`bash
1896
+ tar -czf /tmp/issue-to-pr.tar.gz -C /tmp/issue-to-pr-build .
1897
+
1898
+ TARBALL_PATH=$(curl -s -X POST \\
1899
+ "\${OPENHANDS_HOST}/api/automation/v1/uploads?name=github-issue-to-pr" \\
1900
+ -H "X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY" \\
1901
+ -H "Content-Type: application/gzip" \\
1902
+ --data-binary @/tmp/issue-to-pr.tar.gz \\
1903
+ | python3 -c "import json,sys; print(json.load(sys.stdin)['tarball_path'])")
1904
+
1905
+ echo "Uploaded: $TARBALL_PATH"
1906
+ \`\`\`
1907
+
1908
+ ### Step 10 - Register the automation
1909
+
1910
+ \`\`\`bash
1911
+ curl -s -X POST "\${OPENHANDS_HOST}/api/automation/v1" \\
1912
+ -H "X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY" \\
1913
+ -H "Content-Type: application/json" \\
1914
+ -d "{
1915
+ \\"name\\": \\"GitHub Issue to PR: {repo_summary} label {trigger_label}\\",
1916
+ \\"trigger\\": {\\"type\\": \\"cron\\", \\"schedule\\": \\"{cron_schedule}\\"},
1917
+ \\"tarball_path\\": \\"$TARBALL_PATH\\",
1918
+ \\"entrypoint\\": \\"python3 main.py\\",
1919
+ \\"timeout\\": 900
1920
+ }" | python3 -m json.tool
1921
+ \`\`\`
1922
+
1923
+ Use the single repository as \`{repo_summary}\` when there is one, and something
1924
+ like \`3 repos\` when there are several. A poll clones a repository per queued
1925
+ issue and pushes finished branches, so the timeout allows for that; a run never
1926
+ waits for an agent to finish, only for it to be started.
1927
+
1928
+ Record the returned \`id\`.
1929
+
1930
+ ### Step 11 - Confirm
1931
+
1932
+ Tell the user:
1933
+
1934
+ > ✅ **GitHub Issue to PR** is running!
1935
+ >
1936
+ > - Automation ID: \`{id}\`
1937
+ > - Repositories: \`{owner}/{repo}\`, ... (one line each)
1938
+ > - Trigger label: \`{trigger_label}\`
1939
+ > - Branch prefix: \`{branch_prefix}\`
1940
+ > - Pull requests: \`{draft or ready for review}\`
1941
+ > - Polling schedule: \`{cron_schedule}\`
1942
+ > - State file per repository:
1943
+ > \`~/.openhands/workspaces/automation-state/github_issue_to_pr_{id}_{owner}__{repo}.json\`
1944
+ >
1945
+ > Apply the \`{trigger_label}\` label to an issue to queue an implementation. Each
1946
+ > label event is processed once. To ask for another attempt, remove and re-apply
1947
+ > the label - that opens a second branch and pull request.
1948
+ >
1949
+ > The agent runs without GitHub credentials; the automation pushes the branch and
1950
+ > opens the pull request once the agent has stopped.
1951
+
1952
+ ---
1953
+
1954
+ ## Runtime Behaviour (per poll)
1955
+
1956
+ Each cron run executes \`main.py\`, which loads \`config.json\` if the catalog
1957
+ shipped one, checks that \`git\` is available, resolves and validates
1958
+ \`GITHUB_PERSONAL_ACCESS_TOKEN\` once, then processes every repository in \`REPOS\`
1959
+ independently. One repository failing does not stop the
1960
+ others; the run fails only if every repository fails.
1961
+
1962
+ For each repository:
1963
+
1964
+ 1. Loads that repository's state (see \`references/state-schema.md\`) and reads its
1965
+ default branch.
1966
+ 2. Lists open issues carrying \`TRIGGER_LABEL\`, newest-updated first. Pull
1967
+ requests are dropped, so labelling a PR never queues an implementation.
1968
+ 3. For each labelled issue, up to \`MAX_NEW_PER_RUN\` new ones per run:
1969
+ - Refetches the issue so a label removed since the listing does not start work.
1970
+ - Finds the latest matching GitHub \`labeled\` event, and skips it if that event
1971
+ has already been tracked.
1972
+ - Picks the first free branch name, \`{BRANCH_PREFIX}-{number}\` or a numbered
1973
+ variant of it.
1974
+ - Clones the default branch, shallow and single-branch, into
1975
+ \`{WORKSPACE_BASE}/issue-to-pr/{owner}__{repo}/issue-{number}-{event_id}\`,
1976
+ sets the commit identity, and creates the branch. \`origin\` keeps its plain
1977
+ HTTPS URL, so the workspace holds no credential.
1978
+ - Starts an OpenHands conversation **whose working directory is that clone**,
1979
+ with the issue title, body, labels, and discussion in the prompt, and only
1980
+ the secrets named in \`AGENT_SECRET_NAMES\` attached.
1981
+ - Comments on the issue with the branch, the label event, and the conversation
1982
+ link.
1983
+ - Records the task with \`status: "active"\`.
1984
+ - If the clone or the conversation cannot be created, the clone is removed and
1985
+ nothing is recorded, so the next poll retries the label event.
1986
+ 4. For each active task:
1987
+ - Abandons a conversation that has not reached a terminal status within two
1988
+ hours, comments on the issue, and reclaims its clone.
1989
+ - When the conversation reaches \`idle\`, \`finished\`, \`error\`, or \`stuck\`:
1990
+ - Adopts the pull request the agent opened, if GitHub says one exists for
1991
+ the branch, and comments its link on the issue. Everything below is the
1992
+ path taken when it does not.
1993
+ - Skips the pull request if the issue was closed meanwhile.
1994
+ - Reports the problem on the issue if the conversation ended in \`error\` or
1995
+ \`stuck\`.
1996
+ - Commits whatever the agent left uncommitted, on top of any commits it made
1997
+ itself.
1998
+ - Posts the agent's answer on the issue, and opens no pull request, when
1999
+ there are no commits at all - that is how an agent reports an issue too
2000
+ ambiguous to implement.
2001
+ - Otherwise pushes the branch, opens the pull request (draft by default,
2002
+ titled \`[#42] <issue title>\`, with the agent's summary and \`Closes #42\` in
2003
+ the body), and comments the link on the issue.
2004
+ - A push or pull request that fails is retried on the next two polls before
2005
+ the task is reported as failed, so a transient GitHub error does not throw
2006
+ the work away.
2007
+ 5. Removes the clone of every finished task, but only after confirming the
2008
+ conversation has stopped - deleting it under a running agent would remove its
2009
+ working directory. When that cannot be confirmed the directory is left alone
2010
+ and the next poll tries again.
2011
+ 6. Saves that repository's state atomically.
2012
+
2013
+ The completion callback fires once for the whole run.
2014
+
2015
+ ---
2016
+
2017
+ ## Additional Resources
2018
+
2019
+ - **\`references/state-schema.md\`** - State JSON schema, field definitions, and the
2020
+ task lifecycle.
2021
+ - **\`scripts/main.py\`** - The complete automation script. Customize the five
2022
+ constants at the top before packaging.
2023
+
2024
+ ---
2025
+
2026
+ ## Troubleshooting
2027
+
2028
+ | Symptom | Likely cause | Fix |
2029
+ |---|---|---|
2030
+ | Nothing is ever queued | Trigger label not present, or applied to a pull request rather than an issue | Apply the configured label to an issue |
2031
+ | "Bad credentials" in run logs | Token expired | Rotate and update \`GITHUB_PERSONAL_ACCESS_TOKEN\` |
2032
+ | "The token cannot push to ..." | Token lacks Contents: write on that repository | Issue a token with write access, or drop the repository from \`REPOS\` |
2033
+ | Push rejected: "refusing to allow a Personal Access Token to create or update workflow" | The change touches \`.github/workflows/\` and the token has no \`workflow\` scope | Add the scope to the token; the next poll retries the same branch and opens the pull request |
2034
+ | 404 on repo access | Repo name wrong or no access | Re-check the entry in \`REPOS\` and the token's permissions |
2035
+ | \`git is not available in the automation runtime\` | The runtime image has no git | Use a runtime image that ships git; the script clones, commits, and pushes with it |
2036
+ | Issue commented "did not change any code" | The agent judged the issue too ambiguous, or made no edits | Read its answer in the comment, add the missing detail to the issue, then re-apply the label |
2037
+ | Same issue not picked up again after new comments | Its label event was already processed | Remove and re-apply the trigger label |
2038
+ | Agent reports it cannot push or open a PR | By design - it has no credentials | No action; the automation pushes and opens the pull request after the agent stops |
2039
+ | A backlog of labelled issues starts slowly | \`MAX_NEW_PER_RUN\` caps how many conversations one poll starts | Wait for the next polls, or raise the cap in the script |
2040
+ | Clones remain under \`issue-to-pr/\` | Their conversations had not stopped yet | They are removed by a later poll once the conversation is terminal |`,category:`automations`},{name:`github-pr-review`,description:`Post PR review comments using the GitHub API with inline comments, suggestions, and priority labels.`,triggers:[`/github-pr-review`],content:`# GitHub PR Review
1421
2041
 
1422
2042
  Post structured code review feedback using the GitHub API with inline comments on specific lines.
1423
2043
  Windows PowerShell equivalents for JSON file creation, temp paths, line lookup, and fallback \`curl\` are in \`references/windows.md\`.
@@ -1596,16 +2216,23 @@ curl -X POST \\
1596
2216
  5. Do NOT post comments for code that is acceptable — only comment when action is needed
1597
2217
  6. Use suggestion syntax for concrete code changes, but only after verifying the resulting code matches your description (see "How Suggestions Actually Work")
1598
2218
  7. Keep the review body brief (details go in inline comments)
1599
- 8. If no issues: post a short approval message with no inline comments`,category:`code-hosting`},{name:`github-pr-reviewer`,description:`Create an automation that reviews GitHub pull requests when a configurable trigger label is applied. Polls GitHub deterministically, starts one OpenHands review conversation per label event, inspects full repository and PR context, and posts the final review comment back to GitHub.`,triggers:[`/pr-reviewer:setup`],content:`# GitHub PR Reviewer Automation
2219
+ 8. If no issues: post a short approval message with no inline comments`,category:`code-hosting`},{name:`github-pr-reviewer`,description:`Create an automation that reviews GitHub pull requests when a configurable trigger label is applied. Polls one or more repositories deterministically, starts one OpenHands review conversation per label event with the pull request's head commit already checked out, and publishes the review to GitHub.`,triggers:[`/pr-reviewer:setup`],content:`# GitHub PR Reviewer Automation
1600
2220
 
1601
- Create a cron automation that watches a GitHub repository for pull requests
1602
- with a review trigger label, starts an OpenHands review conversation once per
1603
- label event, and posts the AI review as a GitHub comment.
2221
+ Create a cron automation that watches one or more GitHub repositories for pull
2222
+ requests with a review trigger label, starts an OpenHands review conversation
2223
+ once per label event, and publishes the AI review to GitHub.
1604
2224
  Windows PowerShell equivalents for the setup, packaging, upload, and API-check shell snippets are in \`references/windows.md\`.
1605
2225
 
1606
2226
  The automation script is deterministic: PR discovery, label-event tracking,
1607
- state persistence, stale-result suppression, and GitHub comment posting are
1608
- handled in Python. The LLM is invoked only for the review itself.
2227
+ state persistence, stale-result suppression, the repository checkout, and its
2228
+ removal are all handled in Python. The LLM is invoked only for the review
2229
+ itself.
2230
+
2231
+ The script prepares each review's workspace before the agent starts: the pull
2232
+ request's head commit is downloaded as a tarball and extracted to a directory of
2233
+ its own, which becomes the conversation's working directory. The agent is told
2234
+ not to clone, fetch, check out, or delete anything, and the script removes the
2235
+ checkout once the conversation has stopped. Nothing accumulates between runs.
1609
2236
 
1610
2237
  ---
1611
2238
 
@@ -1618,7 +2245,13 @@ Verify that the following secret is set in **OpenHands Settings -> Secrets**:
1618
2245
  | Secret name | Token type | Minimum permissions |
1619
2246
  |---|---|---|
1620
2247
  | \`GITHUB_PERSONAL_ACCESS_TOKEN\` | Classic PAT | \`repo\` for private repos or \`public_repo\` for public repos |
1621
- | \`GITHUB_PERSONAL_ACCESS_TOKEN\` | Fine-grained PAT | Contents: Read, Metadata: Read, Pull requests: Read, Issues: Read and Write |
2248
+ | \`GITHUB_PERSONAL_ACCESS_TOKEN\` | Fine-grained PAT | Contents: Read, Metadata: Read, Pull requests: **Read and Write**, Issues: Read and Write |
2249
+
2250
+ Pull-request **write** access is required because the agent publishes a pull
2251
+ request review, not just an issue comment. A token with only Pull requests: Read
2252
+ will poll happily and then fail at the point of publishing.
2253
+
2254
+ When several repositories are monitored, the token must cover all of them.
1622
2255
 
1623
2256
  Check with:
1624
2257
  \`\`\`bash
@@ -1644,12 +2277,13 @@ Run the \`curl\` check above.
1644
2277
  - If the API returns \`{"message": "Bad credentials"}\`: tell the user the
1645
2278
  token is invalid and ask them to update it. Stop.
1646
2279
 
1647
- ### Step 2 - Collect repository
2280
+ ### Step 2 - Collect repositories
1648
2281
 
1649
- Ask: *"Which GitHub repository should be monitored?
1650
- (Format: \`owner/repo\`, e.g. \`myorg/backend\`)"*
2282
+ Ask: *"Which GitHub repositories should be monitored?
2283
+ (Format: \`owner/repo\`, e.g. \`myorg/backend\`. List several separated by commas to
2284
+ review them all from one automation.)"*
1651
2285
 
1652
- Validate access:
2286
+ Validate access to **each** repository:
1653
2287
  \`\`\`bash
1654
2288
  curl -s "https://api.github.com/repos/{owner}/{repo}" \\
1655
2289
  -H "Authorization: Bearer $GITHUB_PERSONAL_ACCESS_TOKEN" \\
@@ -1663,7 +2297,13 @@ else:
1663
2297
  "
1664
2298
  \`\`\`
1665
2299
 
1666
- Record \`REPO = "{owner}/{repo}"\`.
2300
+ Record every accepted repository into \`REPOS = ["{owner}/{repo}", ...]\`. If one
2301
+ repository fails the check, say which and ask whether to continue without it.
2302
+
2303
+ Each repository is polled independently and keeps its own state, so pull-request
2304
+ numbers never collide between them. The trigger label, tone, and schedule are
2305
+ shared by all of them; a repository needing different settings wants its own
2306
+ automation.
1667
2307
 
1668
2308
  ### Step 3 - Collect trigger label
1669
2309
 
@@ -1706,19 +2346,27 @@ Record as \`CRON_SCHEDULE\`.
1706
2346
 
1707
2347
  ### Step 6 - Generate the automation script
1708
2348
 
1709
- Read \`scripts/main.py\` from this skill's directory. Apply exactly five constant
2349
+ Read \`scripts/main.py\` from this skill's directory. Apply exactly six constant
1710
2350
  substitutions near the top of the file:
1711
2351
 
2352
+ > The script also reads a \`config.json\` shipped beside it, if there is one, over
2353
+ > these constants. That is how the catalog entry
2354
+ > (\`automations/catalog/github-pr-reviewer/\`) configures an unmodified copy,
2355
+ > since a declarative host cannot rewrite Python. This setup path substitutes the
2356
+ > constants and ships no \`config.json\`, so the two never collide.
2357
+
1712
2358
  | Placeholder | Replace with |
1713
2359
  |---|---|
1714
- | \`REPO = "owner/repo"\` | \`REPO = "{owner_repo}"\` |
2360
+ | \`REPOS = ["owner/repo"]\` | \`REPOS = ["{owner_repo}", ...]\` - one entry per repository collected in Step 2 |
1715
2361
  | \`TRIGGER_LABEL = "openhands-review"\` | \`TRIGGER_LABEL = "{trigger_label}"\` |
1716
2362
  | \`REVIEW_TONE = "thorough"\` | \`REVIEW_TONE = "{review_tone}"\` |
1717
2363
  | \`REVIEW_STYLE_INSTRUCTIONS = ""\` | \`REVIEW_STYLE_INSTRUCTIONS = "{style_instructions}"\` |
2364
+ | \`REPO_REVIEW_GUIDE_PATH = ".agents/skills/custom-codereview-guide.md"\` | leave unchanged to auto-load a repo review guide at this path, or set to \`""\` to disable |
1718
2365
  | \`DEFAULT_OPENHANDS_URL = "http://localhost:8000"\` | leave unchanged unless the user has a preference |
1719
2366
 
1720
2367
  Use a safe string writer such as \`json.dumps(value)\` when inserting user-provided
1721
2368
  repository names, labels, or style instructions into Python string literals.
2369
+ \`json.dumps(list_of_repos)\` produces the whole \`REPOS\` list safely in one step.
1722
2370
 
1723
2371
  Write the customized script to a temporary build directory:
1724
2372
  \`\`\`bash
@@ -1760,14 +2408,19 @@ curl -s -X POST "\${OPENHANDS_HOST}/api/automation/v1" \\
1760
2408
  -H "X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY" \\
1761
2409
  -H "Content-Type: application/json" \\
1762
2410
  -d "{
1763
- \\"name\\": \\"GitHub PR Reviewer: {owner}/{repo} label {trigger_label}\\",
2411
+ \\"name\\": \\"GitHub PR Reviewer: {repo_summary} label {trigger_label}\\",
1764
2412
  \\"trigger\\": {\\"type\\": \\"cron\\", \\"schedule\\": \\"{cron_schedule}\\"},
1765
2413
  \\"tarball_path\\": \\"$TARBALL_PATH\\",
1766
2414
  \\"entrypoint\\": \\"python3 main.py\\",
1767
- \\"timeout\\": 300
2415
+ \\"timeout\\": 600
1768
2416
  }" | python3 -m json.tool
1769
2417
  \`\`\`
1770
2418
 
2419
+ Use the single repository as \`{repo_summary}\` when there is one, and something
2420
+ like \`3 repos\` when there are several. A poll now downloads a tarball per queued
2421
+ review, so the timeout allows for that; a run never waits for a review to
2422
+ finish, only for it to be started.
2423
+
1771
2424
  Record the returned \`id\`.
1772
2425
 
1773
2426
  ### Step 9 - Confirm
@@ -1777,44 +2430,67 @@ Tell the user:
1777
2430
  > ✅ **GitHub PR Reviewer** is running!
1778
2431
  >
1779
2432
  > - Automation ID: \`{id}\`
1780
- > - Repository: \`{owner}/{repo}\`
2433
+ > - Repositories: \`{owner}/{repo}\`, ... (one line each)
1781
2434
  > - Trigger label: \`{trigger_label}\`
1782
2435
  > - Review tone: \`{tone}\`
1783
2436
  > - Polling schedule: \`{cron_schedule}\`
1784
- > - State file: \`~/.openhands/workspaces/automation-state/github_pr_reviewer_label_event_{id}.json\`
2437
+ > - State file per repository:
2438
+ > \`~/.openhands/workspaces/automation-state/github_pr_reviewer_label_event_{id}_{owner}__{repo}.json\`
1785
2439
  >
1786
2440
  > Apply the \`{trigger_label}\` label to a pull request to queue a review. Each
1787
2441
  > label event is processed once. To request another review, remove and re-apply
1788
2442
  > the label.
2443
+ >
2444
+ > The review is published as a pull request review on the head commit, with
2445
+ > inline comments where a finding maps to a changed line.
1789
2446
 
1790
2447
  ---
1791
2448
 
1792
2449
  ## Runtime Behaviour (per poll)
1793
2450
 
1794
- Each cron run executes \`main.py\`, which:
2451
+ Each cron run executes \`main.py\`, which resolves and validates
2452
+ \`GITHUB_PERSONAL_ACCESS_TOKEN\` once, then processes every repository in \`REPOS\`
2453
+ independently. One repository failing does not stop the others; the run fails
2454
+ only if every repository fails.
2455
+
2456
+ For each repository:
1795
2457
 
1796
- 1. Loads state from the JSON file (see \`references/state-schema.md\`).
1797
- 2. Resolves and validates \`GITHUB_PERSONAL_ACCESS_TOKEN\` and repository access.
2458
+ 1. Loads that repository's state (see \`references/state-schema.md\`).
2459
+ 2. Verifies repository access.
1798
2460
  3. Lists open PRs, newest-updated first.
1799
2461
  4. For each open PR carrying \`TRIGGER_LABEL\`:
1800
2462
  - Refetches current PR metadata to avoid acting on stale list data.
1801
2463
  - Finds the latest matching GitHub \`labeled\` issue event.
1802
2464
  - Skips the event if it has already been tracked.
1803
- - Starts an OpenHands conversation with a review prompt that includes PR
1804
- metadata, the exact head SHA, label event details, and instructions to
1805
- clone the repo, inspect PR discussion, review comments, changed files,
1806
- diff, and surrounding code.
2465
+ - Downloads the PR's head commit as a tarball and extracts it to
2466
+ \`{WORKSPACE_BASE}/repositories/{owner}__{repo}/pr-{number}-{sha12}\`. The
2467
+ archive is checked as it is unpacked: a single root, no absolute or \`..\`
2468
+ paths, and symlinks skipped rather than materialised.
2469
+ - Starts an OpenHands conversation **whose working directory is that
2470
+ checkout**, with a review prompt carrying PR metadata, the exact head SHA,
2471
+ and label event details.
1807
2472
  - Posts an acknowledgement comment with the label event, head SHA, and
1808
2473
  conversation link.
1809
- - Records the label-event review in state with \`status: "active"\`.
2474
+ - Records the review in state with \`status: "active"\` and the checkout path.
2475
+ - If the checkout or the conversation cannot be created, the checkout is
2476
+ removed and nothing is recorded, so the next poll retries the label event.
1810
2477
  5. For each active review conversation:
1811
2478
  - Marks it closed without posting if the PR has closed or merged.
1812
2479
  - Suppresses stale results if the PR head SHA changed after the review was
1813
2480
  queued.
1814
2481
  - When the conversation reaches \`idle\`, \`finished\`, \`error\`, or \`stuck\`,
1815
- posts the agent's final response as a GitHub comment and marks the review
1816
- closed.
1817
- 6. Saves state atomically and fires the completion callback.
2482
+ asks GitHub whether a review by the token's own user exists for that head
2483
+ SHA. If it does, the review is complete. If it does not, the agent's final
2484
+ response is posted as a comment so the work is not lost.
2485
+ - Abandons a conversation that has not reached a terminal status within two
2486
+ hours, so its checkout can be reclaimed.
2487
+ 6. Removes the checkout of every finished review, but only after confirming the
2488
+ conversation has stopped - deleting it under a running agent would remove its
2489
+ working directory. When that cannot be confirmed the directory is left alone
2490
+ and the next poll tries again.
2491
+ 7. Saves that repository's state atomically.
2492
+
2493
+ The completion callback fires once for the whole run.
1818
2494
 
1819
2495
  ---
1820
2496
 
@@ -1824,6 +2500,9 @@ Each cron run executes \`main.py\`, which:
1824
2500
  review lifecycle diagram.
1825
2501
  - **\`scripts/main.py\`** - The complete automation script. Customize the five
1826
2502
  constants at the top before packaging.
2503
+ - **\`tests/test_main.py\`** - Unit tests for the checkout, its removal, and state
2504
+ handling. Run them from the skill root with \`python -m pytest tests/\` after
2505
+ editing the script.
1827
2506
 
1828
2507
  ---
1829
2508
 
@@ -1833,10 +2512,14 @@ Each cron run executes \`main.py\`, which:
1833
2512
  |---|---|---|
1834
2513
  | Bot never queues reviews | Trigger label not present or no matching \`labeled\` event | Apply the configured label to the PR |
1835
2514
  | "Bad credentials" in run logs | Token expired | Rotate and update \`GITHUB_PERSONAL_ACCESS_TOKEN\` |
1836
- | 404 on repo access | Repo name wrong or no access | Re-check \`owner/repo\` and token permissions |
2515
+ | 404 on repo access | Repo name wrong or no access | Re-check the entry in \`REPOS\` and the token's permissions |
2516
+ | One repository is skipped, others work | That repository failed its access check | Read the \`=== owner/repo ===\` block in the run log |
1837
2517
  | Same PR not reviewed after new commits | Label event was already processed | Remove and re-apply the trigger label |
1838
2518
  | Review result never posts | Conversation still running or stuck | Open the conversation link from the acknowledgement comment |
1839
- | Stale review suppressed | PR head SHA changed while the agent was reviewing | Re-apply the trigger label after the latest commit |`,category:`automations`},{name:`github-repo-monitor`,description:`This skill should be used when the user asks to "monitor a GitHub repository", "watch GitHub for issues or PRs", "respond to @OpenHands mentions on GitHub", "set up an OpenHands GitHub integration", "trigger OpenHands from a GitHub comment", or "poll a GitHub repo for a trigger phrase". Guides the user through creating a cron automation that polls a single repository and starts an OpenHands conversation whenever a configurable trigger phrase is detected in an issue or PR comment.`,triggers:[`/github-monitor:poll`],content:`# GitHub Repository Monitor
2519
+ | Stale review suppressed | PR head SHA changed while the agent was reviewing | Re-apply the trigger label after the latest commit |
2520
+ | Review arrives as a plain comment, not a review | Publishing failed, so the script posted the text as a fallback | Check that the token has Pull requests: Read and Write |
2521
+ | Agent reports it cannot clone the repo | Prompt asked it not to; the workspace is already the checkout | No action - the code is at the head SHA in its working directory |
2522
+ | Checkouts remain under \`repositories/\` | Their conversations had not stopped yet | They are removed by a later poll once the conversation is terminal |`,category:`automations`},{name:`github-repo-monitor`,description:`This skill should be used when the user asks to "monitor a GitHub repository", "watch GitHub for issues or PRs", "respond to @OpenHands mentions on GitHub", "set up an OpenHands GitHub integration", "trigger OpenHands from a GitHub comment", or "poll a GitHub repo for a trigger phrase". Guides the user through creating a cron automation that polls a single repository and starts an OpenHands conversation whenever a configurable trigger phrase is detected in an issue or PR comment.`,triggers:[`/github-monitor:poll`],content:`# GitHub Repository Monitor
1840
2523
 
1841
2524
  Create a cron automation that polls a single GitHub repository on a
1842
2525
  configurable schedule (default: every minute).
@@ -3382,7 +4065,278 @@ Tell the user:
3382
4065
  > - Automation ID: \`{id}\`
3383
4066
  > - Teams: \`{team list}\`
3384
4067
  > - Mode: \`{auto-apply or suggest}\`
3385
- > - Trigger: \`{trigger description}\``,category:`automations`},{name:`notion`,description:`Create, search, and update Notion pages/databases using the Notion API. Use for documenting work, generating runbooks, and automating knowledge base updates.`,triggers:[`notion`],content:`# Notion
4068
+ > - Trigger: \`{trigger description}\``,category:`automations`},{name:`news-digest`,description:`Create an automation that reads a list of public RSS and Atom feeds on a schedule - daily by default - keeps what is new and matches the configured topics, and has an agent write a short digest of it. It needs no credentials: the feeds are public URLs and the conversation is started with no secrets and no MCP servers.`,triggers:[`/news-digest:setup`],content:`# Daily News Digest Automation
4069
+
4070
+ Create a cron automation that turns a list of feeds into something worth
4071
+ reading: a few hundred words a day on what happened in the topics you care
4072
+ about, with a link under each item.
4073
+
4074
+ **It connects to nothing.** There is no token to issue, no account to link, no
4075
+ OAuth screen. That makes it the automation to run first - it exercises the
4076
+ schedule, the conversation, the model and the run log end to end while nothing
4077
+ of yours is at stake, and it is useful in its own right afterwards.
4078
+
4079
+ The script is deterministic: the schedule, the once-a-day claim, fetching,
4080
+ parsing, the freshness window, and remembering what has already been covered
4081
+ are all Python. The LLM is invoked only for the part that
4082
+ is judgement - reading the shortlist and writing something that is not just the
4083
+ headlines pasted back. **When nothing new matches, no conversation is started
4084
+ at all**, so a quiet day costs no tokens.
4085
+
4086
+ ---
4087
+
4088
+ ## Prerequisites
4089
+
4090
+ None. That is the point.
4091
+
4092
+ The runtime needs outbound HTTPS to the feed hosts, which it already has if it
4093
+ can reach the model. Nothing is read from **Settings -> Secrets**, and nothing
4094
+ needs to be added there.
4095
+
4096
+ ---
4097
+
4098
+ ## Setup Workflow
4099
+
4100
+ Follow these steps in order.
4101
+
4102
+ ### Step 1 - Collect the feeds
4103
+
4104
+ Ask: *"Which feeds should the digest read? (One RSS or Atom URL per line. Press
4105
+ Enter for a general technology set.)"*
4106
+
4107
+ Default:
4108
+
4109
+ \`\`\`
4110
+ https://news.ycombinator.com/rss
4111
+ https://feeds.arstechnica.com/arstechnica/index
4112
+ https://www.theverge.com/rss/index.xml
4113
+ \`\`\`
4114
+
4115
+ Check each one before accepting it, because a URL that returns a web page
4116
+ rather than a feed is the most common setup mistake:
4117
+
4118
+ \`\`\`bash
4119
+ curl -sSL --max-time 20 -A "OpenHands-News-Digest/1.0" "{feed_url}" \\
4120
+ | python3 -c "
4121
+ import sys
4122
+ from xml.etree import ElementTree
4123
+ try:
4124
+ root = ElementTree.fromstring(sys.stdin.buffer.read())
4125
+ except ElementTree.ParseError as exc:
4126
+ print('ERROR: not valid XML:', exc); raise SystemExit
4127
+ name = root.tag.rsplit('}', 1)[-1]
4128
+ items = [e for e in root.iter() if e.tag.rsplit('}', 1)[-1] in ('item', 'entry')]
4129
+ print(f'OK: <{name}> with {len(items)} entries' if name.lower() in ('rss', 'feed', 'rdf')
4130
+ else f'ERROR: root element is <{name}>, which is not a feed')
4131
+ "
4132
+ \`\`\`
4133
+
4134
+ Record every accepted URL into \`FEEDS = ["...", ...]\`. A feed that fails at
4135
+ runtime is reported and skipped, so one bad URL does not cost you the digest -
4136
+ but it is better to find out now.
4137
+
4138
+ ### Step 2 - Collect the topics
4139
+
4140
+ Ask: *"What should the digest be about? (One topic per line, or comma
4141
+ separated. Press Enter for \`artificial intelligence, open source, developer
4142
+ tools\`. Leave it blank to summarise everything the feeds carry.)"*
4143
+
4144
+ Record as \`TOPICS\`. Two things are worth telling the user:
4145
+
4146
+ - The agent decides which stories are about them, reading each headline and
4147
+ excerpt. So write topics the way you would explain your interests to a
4148
+ colleague - \`artificial intelligence\` works even though almost every headline
4149
+ says \`AI\`, and a story about a company releasing its model weights counts as
4150
+ \`open source\` without using the phrase.
4151
+ - An empty list means "cover whatever is most significant". That is right for a
4152
+ handful of narrow feeds and vaguer for a firehose.
4153
+
4154
+ ### Step 3 - Collect the schedule
4155
+
4156
+ Ask: *"When should the digest be written? (Press Enter for the default: every
4157
+ day at 08:00 UTC, \`0 8 * * *\`.)"*
4158
+
4159
+ Default: \`0 8 * * *\`. Record as \`CRON_SCHEDULE\`, and the timezone as
4160
+ \`CRON_TIMEZONE\` (default \`UTC\`).
4161
+
4162
+ A schedule more frequent than daily is allowed and is not wasteful: work is
4163
+ keyed by UTC date, so extra runs stop at a state read once the day is done, and
4164
+ before that they cost one HTTP request per feed and no tokens. It is a
4165
+ reasonable way to say "write the digest as soon as there is anything to write".
4166
+
4167
+ ### Step 4 - Confirm the secret scope
4168
+
4169
+ Do **not** ask which secrets to forward. \`AGENT_SECRET_NAMES\` is empty and
4170
+ should stay empty: the conversation summarises text fetched from the open web,
4171
+ which is written by strangers, and a credential handed to it would make every
4172
+ feed on the list an instruction channel into the deployment's secret store.
4173
+
4174
+ If the user asks for a digest posted to Slack, Notion or a repository, that is a
4175
+ different automation - it needs that integration connected, and it should be
4176
+ built from the skill for it rather than by widening this one.
4177
+
4178
+ ### Step 5 - Generate the automation script
4179
+
4180
+ Read \`scripts/main.py\` from this skill's directory. Apply exactly two constant
4181
+ substitutions near the top of the file:
4182
+
4183
+ > The script also reads a \`config.json\` shipped beside it, if there is one, over
4184
+ > these constants. That is how the catalog entry
4185
+ > (\`automations/catalog/news-digest/\`) configures an unmodified copy, since a
4186
+ > declarative host cannot rewrite Python. This setup path substitutes the
4187
+ > constants and ships no \`config.json\`, so the two never collide.
4188
+
4189
+ | Placeholder | Replace with |
4190
+ |---|---|
4191
+ | \`FEEDS = [...]\` | the list from Step 1 |
4192
+ | \`TOPICS = [...]\` | the list from Step 2, or \`[]\` for no filter |
4193
+
4194
+ \`LOOKBACK_HOURS\` (48) and \`MAX_ITEMS\` (50) are left alone unless the user asks.
4195
+ The lookback is deliberately wider than the schedule so a failed or missed run
4196
+ is recovered by the next one; the seen-list is what stops the overlap from
4197
+ repeating anything.
4198
+
4199
+ Use a safe string writer such as \`json.dumps(value)\` when inserting
4200
+ user-provided URLs or topics into Python string literals.
4201
+
4202
+ Write the customized script to a temporary build directory and validate it:
4203
+
4204
+ \`\`\`bash
4205
+ mkdir -p /tmp/news-digest-build
4206
+ # write the customized main.py to /tmp/news-digest-build/main.py
4207
+ python3 -m py_compile /tmp/news-digest-build/main.py && echo "Syntax OK"
4208
+ \`\`\`
4209
+
4210
+ ### Step 6 - Package and upload
4211
+
4212
+ Determine the Automation backend URL and auth from the \`<RUNTIME_SERVICES>\`
4213
+ block in your system context:
4214
+ - **OPENHANDS_HOST**: the Automation backend \`url_from_agent\`
4215
+ - **Auth**: \`X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY\`
4216
+
4217
+ \`\`\`bash
4218
+ tar -czf /tmp/news-digest.tar.gz -C /tmp/news-digest-build .
4219
+
4220
+ TARBALL_PATH=$(curl -s -X POST \\
4221
+ "\${OPENHANDS_HOST}/api/automation/v1/uploads?name=news-digest" \\
4222
+ -H "X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY" \\
4223
+ -H "Content-Type: application/gzip" \\
4224
+ --data-binary @/tmp/news-digest.tar.gz \\
4225
+ | python3 -c "import json,sys; print(json.load(sys.stdin)['tarball_path'])")
4226
+
4227
+ echo "Uploaded: $TARBALL_PATH"
4228
+ \`\`\`
4229
+
4230
+ ### Step 7 - Register the automation
4231
+
4232
+ \`\`\`bash
4233
+ curl -s -X POST "\${OPENHANDS_HOST}/api/automation/v1" \\
4234
+ -H "X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY" \\
4235
+ -H "Content-Type: application/json" \\
4236
+ -d "{
4237
+ \\"name\\": \\"Daily news digest\\",
4238
+ \\"trigger\\": {\\"type\\": \\"cron\\", \\"schedule\\": \\"{cron_schedule}\\", \\"timezone\\": \\"{cron_timezone}\\"},
4239
+ \\"tarball_path\\": \\"$TARBALL_PATH\\",
4240
+ \\"entrypoint\\": \\"python3 main.py\\",
4241
+ \\"timeout\\": 900
4242
+ }" | python3 -m json.tool
4243
+ \`\`\`
4244
+
4245
+ Record the returned \`id\`.
4246
+
4247
+ ### Step 8 - Confirm
4248
+
4249
+ Tell the user:
4250
+
4251
+ > ✅ **Daily news digest** is running!
4252
+ >
4253
+ > - Automation ID: \`{id}\`
4254
+ > - Feeds: \`{url}\`, ... (one line each)
4255
+ > - Topics: \`{topics}\` (or: no filter - everything the feeds carry)
4256
+ > - Schedule: \`{cron_schedule}\` ({cron_timezone})
4257
+ > - Credentials used: **none**
4258
+ > - State file: \`~/.openhands/workspaces/automation-state/news_digest_{id}.json\`
4259
+ >
4260
+ > Each day it reads the feeds and writes the digest into the run's conversation
4261
+ > and the run log. A day with nothing new produces nothing and costs nothing -
4262
+ > the day stays open, so a later run picks up news published after this one.
4263
+
4264
+ Then offer to dispatch it once so they can read today's digest immediately:
4265
+
4266
+ \`\`\`bash
4267
+ curl -s -X POST "\${OPENHANDS_HOST}/api/automation/v1/{id}/dispatch" \\
4268
+ -H "X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY"
4269
+ \`\`\`
4270
+
4271
+ ---
4272
+
4273
+ ## Runtime Behaviour (per run)
4274
+
4275
+ Each cron run executes \`main.py\`, which loads \`config.json\` if the catalog
4276
+ shipped one and then:
4277
+
4278
+ 1. Loads state (the automation service's KV store, or a local JSON file when
4279
+ the store is unavailable).
4280
+ 2. Computes today's UTC date and **stops immediately if it is already
4281
+ recorded** - no feed is fetched, so an extra run inside a finished day costs
4282
+ one state read.
4283
+ 3. Otherwise fetches every feed with a 20-second timeout and a 4 MB cap, and
4284
+ parses RSS 2.0, RSS 1.0/RDF and Atom by local element name. A feed that
4285
+ fails, is not XML, or is XML that is not a feed is recorded and skipped. The
4286
+ run fails only if *every* feed fails.
4287
+ 4. Selects the stories: not already covered, and published within
4288
+ \`LOOKBACK_HOURS\` (undated stories are treated as current rather than
4289
+ dropped). The newest \`MAX_ITEMS\` survive. Subject is deliberately not a
4290
+ filter here.
4291
+ 5. If none survive, records the check, says which stage emptied it, and
4292
+ **leaves the day unclaimed** so a later run can try again. No conversation,
4293
+ no tokens.
4294
+ 6. Otherwise claims the day in state *before* the slow work, so an overlapping
4295
+ run cannot write the digest twice, then starts an OpenHands conversation
4296
+ with the stories **and the topics** in its prompt, an empty secrets payload
4297
+ and no MCP servers, working in \`{WORKSPACE_BASE}/news-digest/{date}\`. The
4298
+ agent decides which stories are relevant before it writes anything.
4299
+ 7. When the conversation reaches \`idle\`, \`finished\`, \`error\` or \`stuck\`:
4300
+ - reads \`digest.md\` from the working directory, falling back to the agent's
4301
+ final message;
4302
+ - prints the digest into the run log and keeps its opening in state;
4303
+ - records the stories as covered **only now**, so a run that failed leaves
4304
+ them for the next one;
4305
+ - removes the working directory once the conversation is confirmed stopped.
4306
+ 8. Prunes the task history to the last 14 days and the seen-list to 1000
4307
+ fingerprints, both so the state document stays inside the KV store's 64 KB
4308
+ value limit.
4309
+
4310
+ ### How a story is recognised again
4311
+
4312
+ Two fingerprints per story: one over the feed's own identifier (\`guid\`/\`id\`),
4313
+ one over its link with the host lowercased, the fragment removed and campaign
4314
+ parameters stripped. A story counts as already covered if **either** matches.
4315
+ Both are needed - a feed whose links carry a per-fetch campaign tag is only
4316
+ recognisable by its identifier, and two publishers syndicating the same article
4317
+ agree on nothing *but* the link.
4318
+
4319
+ ---
4320
+
4321
+ ## Additional Resources
4322
+
4323
+ - **\`references/state-schema.md\`** - State JSON schema and the task lifecycle.
4324
+ - **\`scripts/main.py\`** - The complete automation script.
4325
+
4326
+ ---
4327
+
4328
+ ## Troubleshooting
4329
+
4330
+ | Symptom | Likely cause | Fix |
4331
+ |---|---|---|
4332
+ | Every run says "Nothing new to digest" | Nothing was published, or it was all covered already | The run log now names which of the two it was; the digest covers what the topics miss only if the feeds carry it at all |
4333
+ | The digest ignores a topic you care about | The feeds do not carry stories about it | Add a feed that does; the agent can only choose from what was fetched |
4334
+ | A feed reports "not a feed" | The URL serves a web page, not the feed | Find the real feed URL - it is usually linked from the page as \`application/rss+xml\` |
4335
+ | A feed reports an HTTP 403 | The host blocks unknown readers | Use a different feed for that source; this automation sends no credentials by design |
4336
+ | The digest is thin and full of "Headlines" | Those feeds carry titles only | Expected for Hacker News and similar; add a feed that publishes summaries, such as Ars Technica |
4337
+ | Nothing happens after a manual dispatch | Today is already recorded in state | Read the previous run's log for the digest, or clear today's entry from the state document |
4338
+ | A day was missed entirely | The run failed, or the service was down | The next run covers it: the lookback window is 48 hours and failed runs deliberately remember nothing |
4339
+ | Digest repeats a story | Two feeds identify the same article differently, and neither the guid nor the canonical link matched | Expected occasionally; the prompt asks the agent to merge duplicate coverage it can see |`,category:`automations`},{name:`notion`,description:`Create, search, and update Notion pages/databases using the Notion API. Use for documenting work, generating runbooks, and automating knowledge base updates.`,triggers:[`notion`],content:`# Notion
3386
4340
 
3387
4341
  Windows PowerShell equivalents for the repeated Notion REST \`curl\`, environment-variable, and JSON-body snippets are in \`references/windows.md\`.
3388
4342
 
@@ -3942,7 +4896,7 @@ This skill is aligned against the current OpenHands API docs and implementation:
3942
4896
  - \`OpenHands/docs/openhands/usage/api/v1.mdx\`
3943
4897
  - \`OpenHands/OpenHands/openhands/app_server/v1_router.py\`
3944
4898
  - \`OpenHands/OpenHands/openhands/app_server/app_conversation/app_conversation_router.py\`
3945
- - \`OpenHands/OpenHands/openhands/app_server/app_conversation/app_conversation_models.py\``,category:`agent-authoring`},{name:`openhands-automation`,description:`This skill should be used when the user asks to "create an automation", "schedule a task", "set up a cron job", "webhook integration", "event-triggered automation", or mentions automations, scheduled tasks, cron scheduling, or webhook events in OpenHands Cloud.`,triggers:[`automation`,`automations`,`scheduled task`,`cron job`,`cron schedule`,`webhook`,`webhooks`,`event trigger`,`github event`,`pull request automation`,`issue automation`,`/automation:create`],content:`# OpenHands Automations
4899
+ - \`OpenHands/OpenHands/openhands/app_server/app_conversation/app_conversation_models.py\``,category:`agent-authoring`,defaultEnabled:!0},{name:`openhands-automation`,description:`This skill should be used when the user asks to "create an automation", "schedule a task", "set up a cron job", "webhook integration", "event-triggered automation", or mentions automations, scheduled tasks, cron scheduling, or webhook events in OpenHands Cloud.`,triggers:[`automation`,`automations`,`scheduled task`,`cron job`,`cron schedule`,`webhook`,`webhooks`,`event trigger`,`github event`,`pull request automation`,`issue automation`,`/automation:create`],content:`# OpenHands Automations
3946
4900
 
3947
4901
  Create and manage automations that run inside an OpenHands agent server — triggered by cron schedules or webhook events (GitHub, custom services).
3948
4902
  Windows PowerShell equivalents for the automation API \`curl\` examples and shell-variable conventions are in \`references/windows.md\`.
@@ -4812,7 +5766,7 @@ See \`references/security.md\` — also covers narrowing triggers and sender-lev
4812
5766
  - **\`references/custom-automation.md\`** — Detailed guide for custom automations: tarball uploads, code structure (SDK and no-LLM), state persistence via the KV store, environment variables, validation rules, and complete examples. Consult this whenever you need to evaluate or recommend the custom path (including for deterministic / cost-sensitive tasks per rule 0). Only *implement* a custom automation after the user agrees to that path.
4813
5767
  - **\`references/ab-testing.md\`** — A/B testing for plugin automations: defining variants with weights, experiment configuration, variant selection logic, observability via conversation tags, and complete examples. Consult this when a user wants to compare plugin versions or configurations.
4814
5768
  - **\`references/security.md\`** — Trust boundaries: untrusted content vs. verified sender, least-privilege secrets, trigger scoping, sender authorization, pre-deploy verification. Consult whenever an automation handles external input or forwards secrets to a spawned conversation.
4815
- - **\`references/security.md\`** — Trust boundaries for automations: untrusted event content vs. verified sender, least-privilege secret scoping for spawned conversations, narrowing triggers, sender-level authorization, and verifying a script actually runs before deploying it. Consult this whenever an automation handles external/untrusted input (GitHub issues/PRs, Slack messages, any public-facing webhook) or forwards secrets to a spawned conversation.`,category:`automations`},{name:`openhands-sdk`,description:`Reference skill for the OpenHands Software Agent SDK - the Python framework for building AI agents that write software. Use when you need to build agents with the SDK, create custom tools, configure LLMs, manage conversations, delegate to sub-agents, or deploy agents locally or remotely.`,triggers:[`openhands-sdk`,`openhands sdk`,`software-agent-sdk`,`agent-sdk`,`/sdk`],content:`# OpenHands Software Agent SDK
5769
+ - **\`references/security.md\`** — Trust boundaries for automations: untrusted event content vs. verified sender, least-privilege secret scoping for spawned conversations, narrowing triggers, sender-level authorization, and verifying a script actually runs before deploying it. Consult this whenever an automation handles external/untrusted input (GitHub issues/PRs, Slack messages, any public-facing webhook) or forwards secrets to a spawned conversation.`,category:`automations`,defaultEnabled:!0},{name:`openhands-sdk`,description:`Reference skill for the OpenHands Software Agent SDK - the Python framework for building AI agents that write software. Use when you need to build agents with the SDK, create custom tools, configure LLMs, manage conversations, delegate to sub-agents, or deploy agents locally or remotely.`,triggers:[`openhands-sdk`,`openhands sdk`,`software-agent-sdk`,`agent-sdk`,`/sdk`],content:`# OpenHands Software Agent SDK
4816
5770
 
4817
5771
  All SDK documentation lives at <https://docs.openhands.dev/sdk>.
4818
5772
 
@@ -4995,6 +5949,9 @@ Source: [\`examples/\`](https://github.com/OpenHands/software-agent-sdk/tree/mai
4995
5949
  - [\`53_client_defined_tools.py\`](https://github.com/OpenHands/software-agent-sdk/blob/main/examples/01_standalone_sdk/53_client_defined_tools.py)
4996
5950
  - [\`54_goal_completion_loop.py\`](https://github.com/OpenHands/software-agent-sdk/blob/main/examples/01_standalone_sdk/54_goal_completion_loop.py)
4997
5951
  - [\`55_persistent_memory.py\`](https://github.com/OpenHands/software-agent-sdk/blob/main/examples/01_standalone_sdk/55_persistent_memory.py)
5952
+ - [\`56_structured_output.py\`](https://github.com/OpenHands/software-agent-sdk/blob/main/examples/01_standalone_sdk/56_structured_output.py)
5953
+ - [\`57_prompt_hooks\`](https://github.com/OpenHands/software-agent-sdk/tree/main/examples/01_standalone_sdk/57_prompt_hooks)
5954
+ - [\`58_ask_oracle_tool\`](https://github.com/OpenHands/software-agent-sdk/tree/main/examples/01_standalone_sdk/58_ask_oracle_tool)
4998
5955
 
4999
5956
  ### [\`02_remote_agent_server/\`](https://github.com/OpenHands/software-agent-sdk/tree/main/examples/02_remote_agent_server)
5000
5957
 
@@ -5035,7 +5992,7 @@ Source: [\`examples/\`](https://github.com/OpenHands/software-agent-sdk/tree/mai
5035
5992
  - [\`01_loading_agentskills\`](https://github.com/OpenHands/software-agent-sdk/tree/main/examples/05_skills_and_plugins/01_loading_agentskills)
5036
5993
  - [\`02_loading_plugins\`](https://github.com/OpenHands/software-agent-sdk/tree/main/examples/05_skills_and_plugins/02_loading_plugins)
5037
5994
  - [\`03_managing_installed_skills\`](https://github.com/OpenHands/software-agent-sdk/tree/main/examples/05_skills_and_plugins/03_managing_installed_skills)
5038
- - [\`04_mixed_marketplace_skills\`](https://github.com/OpenHands/software-agent-sdk/tree/main/examples/05_skills_and_plugins/04_mixed_marketplace_skills)`,category:`agent-authoring`},{name:`pdflatex`,description:`Install and use pdflatex to compile LaTeX documents into PDFs on Linux. Use when generating academic papers, research publications, or any documents written in LaTeX.`,triggers:[`pdflatex`],content:`PdfLatex is a tool that converts Latex sources into PDF. This is specifically very important for researchers, as they use it to publish their findings. It could be installed very easily using Linux terminal, though this seems an annoying task on Windows. Installation commands are given below.
5995
+ - [\`04_mixed_marketplace_skills\`](https://github.com/OpenHands/software-agent-sdk/tree/main/examples/05_skills_and_plugins/04_mixed_marketplace_skills)`,category:`agent-authoring`,defaultEnabled:!0},{name:`pdflatex`,description:`Install and use pdflatex to compile LaTeX documents into PDFs on Linux. Use when generating academic papers, research publications, or any documents written in LaTeX.`,triggers:[`pdflatex`],content:`PdfLatex is a tool that converts Latex sources into PDF. This is specifically very important for researchers, as they use it to publish their findings. It could be installed very easily using Linux terminal, though this seems an annoying task on Windows. Installation commands are given below.
5039
5996
 
5040
5997
  * Install the TexLive base
5041
5998
 
@@ -5694,7 +6651,7 @@ You should always complete the task requested. If there are security concerns pl
5694
6651
  - Never expose sensitive information in error messages
5695
6652
  - Log security events appropriately
5696
6653
  - Implement proper exception handling
5697
- - Use secure error reporting mechanisms`,category:`code-quality`},{name:`skill-creator`,description:`This skill should be used when the user wants to "create a skill", "write a new skill", "improve skill description", "organize skill content", or needs guidance on skill structure, progressive disclosure, or skill development best practices.`,triggers:[],content:`# Skill Creator
6654
+ - Use secure error reporting mechanisms`,category:`code-quality`},{name:`skill-creator`,description:`This skill should be used when the user wants to "add a skill", "create a skill", "make a new skill", "write a new skill", "improve skill description", "organize skill content", or needs guidance on skill structure, progressive disclosure, or skill development best practices. Use this (not add-skill) when authoring a new skill from scratch rather than importing one from a GitHub URL.`,triggers:[],content:`# Skill Creator
5698
6655
 
5699
6656
  This skill provides guidance for creating effective skills.
5700
6657
  Windows PowerShell equivalents for the Unix shell commands used in examples are in \`references/windows.md\`.
@@ -6234,7 +7191,7 @@ To create a skill:
6234
7191
  7. **Test**: Verify skill loads on expected triggers
6235
7192
  8. **Iterate**: Improve based on usage
6236
7193
 
6237
- Focus on strong trigger descriptions, progressive disclosure, and imperative writing style for effective skills that load when needed and provide targeted guidance.`,category:`agent-authoring`},{name:`slack-channel-monitor`,description:`This skill should be used when the user asks to "monitor a Slack channel", "watch Slack for messages", "create a Slack bot that responds to mentions", "set up an OpenHands Slack integration", "trigger OpenHands from Slack", "respond to @openhands in Slack", or "poll Slack channels for a trigger phrase". Guides the user through creating a cron automation that watches up to 10 Slack channels and starts an OpenHands conversation whenever a configurable trigger phrase is detected.`,triggers:[`/slack-monitor:poll`],content:`# Slack Channel Monitor
7194
+ Focus on strong trigger descriptions, progressive disclosure, and imperative writing style for effective skills that load when needed and provide targeted guidance.`,category:`agent-authoring`,defaultEnabled:!0},{name:`slack-channel-monitor`,description:`This skill should be used when the user asks to "monitor a Slack channel", "watch Slack for messages", "create a Slack bot that responds to mentions", "set up an OpenHands Slack integration", "trigger OpenHands from Slack", "respond to @openhands in Slack", or "poll Slack channels for a trigger phrase". Guides the user through creating a cron automation that watches up to 10 Slack channels and starts an OpenHands conversation whenever a configurable trigger phrase is detected.`,triggers:[`/slack-monitor:poll`],content:`# Slack Channel Monitor
6238
7195
 
6239
7196
  Create a cron automation that polls up to 10 Slack channels every minute.
6240
7197
  Windows PowerShell equivalents for the setup, packaging, upload, and API-check shell snippets are in \`references/windows.md\`.
@@ -7169,7 +8126,44 @@ After a preferred theme is selected:
7169
8126
  4. Maintain the theme's visual identity across all slides
7170
8127
 
7171
8128
  ## Create your Own Theme
7172
- To handle cases where none of the existing themes work for an artifact, create a custom theme. Based on provided inputs, generate a new theme similar to the ones above. Give the theme a similar name describing what the font/color combinations represent. Use any basic description provided to choose appropriate colors/fonts. After generating the theme, show it for review and verification. Following that, apply the theme as described above.`,category:`design`,license:`Complete terms in LICENSE.txt`},{name:`upstream-fork-sync`,description:`This skill should be used when the user asks to "keep a fork in sync", "rebase local changes on upstream", "sync my fork nightly", "long-lived fork", or "automate upstream rebases". Guides the user through creating a cron automation that fetches upstream changes, rebases local customizations on top, verifies the software works, and replaces the running version when the rebase is clean.`,triggers:[`/upstream-fork-sync:setup`],content:`# Upstream Fork Sync Automation
8129
+ To handle cases where none of the existing themes work for an artifact, create a custom theme. Based on provided inputs, generate a new theme similar to the ones above. Give the theme a similar name describing what the font/color combinations represent. Use any basic description provided to choose appropriate colors/fonts. After generating the theme, show it for review and verification. Following that, apply the theme as described above.`,category:`design`,license:`Complete terms in LICENSE.txt`},{name:`ticket-to-code-change`,description:`Set up a ticket-to-code-change automation using Jira or Linear as the issue tracker and GitHub, GitLab, or Bitbucket as the source-control provider. Watches for implementation-ready tickets, starts an OpenHands conversation to implement and test the request, opens a pull or merge request, and links the result back to the ticket.`,triggers:[`/ticket-to-code-change:setup`],content:`# Ticket to code change
8130
+
8131
+ Create an automation that turns implementation-ready tickets into tested pull
8132
+ requests or merge requests.
8133
+
8134
+ ## Information to collect
8135
+
8136
+ Ask the user for:
8137
+
8138
+ 1. The issue tracker: Jira Cloud or Linear.
8139
+ 2. The source-control provider: GitHub, GitLab, or Bitbucket Cloud.
8140
+ 3. The project or team to watch and the label or workflow state that means
8141
+ "implementation ready".
8142
+ 4. How a ticket identifies its target repository and base branch.
8143
+ 5. The polling schedule or issue event to use.
8144
+ 6. The ticket state to set when work starts and when the change request opens.
8145
+ 7. Whether linked dependencies must be completed before dispatch.
8146
+
8147
+ ## Setup workflow
8148
+
8149
+ 1. Verify that both required integrations are connected and can read the
8150
+ selected project and repository.
8151
+ 2. Prefer an issue event trigger when the deployment can receive events;
8152
+ otherwise use cron polling with durable issue-ID deduplication.
8153
+ 3. Limit each run to a small configurable number of new tickets. On initial
8154
+ deployment, establish a baseline instead of dispatching the entire backlog.
8155
+ 4. Build a prompt that includes the full ticket, acceptance criteria,
8156
+ dependency status, repository, base branch, and provider-specific request
8157
+ terminology. Require the agent to run the repository's tests before opening
8158
+ the pull request or merge request.
8159
+ 5. Create the automation through the Automation backend described in
8160
+ \`<RUNTIME_SERVICES>\`. Use its prompt-preset endpoint and authenticate with
8161
+ the runtime-provided automation API key.
8162
+ 6. Configure the automation to post the OpenHands conversation URL immediately
8163
+ and the resulting pull-request or merge-request URL back to the ticket.
8164
+
8165
+ Do not dispatch tickets with unresolved dependencies or without an unambiguous
8166
+ target repository; comment on the ticket with the missing information instead.`,category:`automations`},{name:`upstream-fork-sync`,description:`This skill should be used when the user asks to "keep a fork in sync", "rebase local changes on upstream", "sync my fork nightly", "long-lived fork", or "automate upstream rebases". Guides the user through creating a cron automation that fetches upstream changes, rebases local customizations on top, verifies the software works, and replaces the running version when the rebase is clean.`,triggers:[`/upstream-fork-sync:setup`],content:`# Upstream Fork Sync Automation
7173
8167
 
7174
8168
  Create a cron automation that keeps a long-lived fork current with its
7175
8169
  upstream source. On every run it fetches the latest upstream changes,
@@ -7462,5 +8456,5 @@ vercel logs <deployment-url>
7462
8456
 
7463
8457
  # Pull environment variables locally
7464
8458
  vercel env pull
7465
- \`\`\``,category:`integrations`}];exports.default=e;
8459
+ \`\`\``,category:`integrations`}],n=[`add-skill`,`agent-canvas-environment`,`agent-memory`,`agent-sdk-builder`,`code-review`,`docker`,`github`,`openhands-api`,`openhands-automation`,`openhands-sdk`,`skill-creator`];exports.DEFAULT_ENABLED_SKILL_NAMES=n,exports.SKILL_CATEGORY_IDS=e,exports.default=t;
7466
8460
  //# sourceMappingURL=index.cjs.map