@openhands/agent-canvas 1.0.0-rc.7 → 1.0.0-rc.9

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 (269) hide show
  1. package/README.md +1 -3
  2. package/README.windows.md +2 -2
  3. package/build/assets/{QueryClientProvider-2bFjjuvv.js → QueryClientProvider-XcSjsfpb.js} +1 -1
  4. package/build/assets/{Trans-D1xHkKyr.js → Trans-sy4l4TyQ.js} +1 -1
  5. package/build/assets/{acp-providers-Djbp2WMV.js → acp-providers-Dzb4nxxB.js} +1 -1
  6. package/build/assets/{active-backend-context-BiVlte2V.js → active-backend-context-B2OSC-qe.js} +1 -1
  7. package/build/assets/add-backend-modal-lG8XDYjr.js +1 -0
  8. package/build/assets/{agent-server-adapter-BD6kvwWb.js → agent-server-adapter-BPpZcLOE.js} +3 -3
  9. package/build/assets/agent-server-client-options-wXLeJYeM.js +1 -0
  10. package/build/assets/{agent-server-conversation-service.api-8AC86rC5.js → agent-server-conversation-service.api-C4Fc9Jnp.js} +1 -1
  11. package/build/assets/{agent-settings-DycVwGfd.js → agent-settings-Blipgztd.js} +1 -1
  12. package/build/assets/{alert-banner-BUqPui_3.js → alert-banner-Bsvys-hT.js} +1 -1
  13. package/build/assets/{analytics-consent-form-modal-D0KeG5vZ.js → analytics-consent-form-modal-Cujm1lCj.js} +1 -1
  14. package/build/assets/{api-key-entry-screen-BnvQM0v5.js → api-key-entry-screen-BarZU9nr.js} +1 -1
  15. package/build/assets/{app-settings-FRYUtG-Z.js → app-settings-CofRfixq.js} +1 -1
  16. package/build/assets/{automation-detail-DiIq3Vsh.js → automation-detail-BV4Cn0O8.js} +1 -1
  17. package/build/assets/{automations-list-DQn7k1Ix.js → automations-list-BaJ61q7P.js} +1 -1
  18. package/build/assets/{back-nav-button-B8eULM4t.js → back-nav-button-D20Avel_.js} +1 -1
  19. package/build/assets/{backend-form-modal-DY3My0us.js → backend-form-modal-B3BCZDPq.js} +1 -1
  20. package/build/assets/{backend-synced-settings-badge-BW2WPX-c.js → backend-synced-settings-badge-Da0G6Lwv.js} +1 -1
  21. package/build/assets/{base-modal-B_MCb3rx.js → base-modal-DvuGYyu1.js} +1 -1
  22. package/build/assets/{brand-button-B6g_UvEG.js → brand-button-9SOzmqPP.js} +1 -1
  23. package/build/assets/{browser-tab-DVHx54yn.js → browser-tab-bveyJhG9.js} +1 -1
  24. package/build/assets/{chat-send-button-Ce9rK8Vd.js → chat-send-button-DzRpAQr4.js} +1 -1
  25. package/build/assets/{checkmark-BQIxLn5W.js → checkmark--JWAesua.js} +1 -1
  26. package/build/assets/{circle-plus-check-toggle-DRwQ4Z7K.js → circle-plus-check-toggle-AO9DWyDX.js} +1 -1
  27. package/build/assets/{close-HybccyBS.js → close--W-tHn1h.js} +1 -1
  28. package/build/assets/{code-tag-DZCEX2zo.js → code-tag-chmctf4w.js} +1 -1
  29. package/build/assets/{combobox-caret-kEa3kTvf.js → combobox-caret-C9BNHfSu.js} +1 -1
  30. package/build/assets/{condenser-settings-BlbT8YRd.js → condenser-settings-Bo07FAEi.js} +1 -1
  31. package/build/assets/{confirmation-modal-CG_Fgrny.js → confirmation-modal-Cq3eqvqH.js} +1 -1
  32. package/build/assets/{context-menu-list-item-CvJv3-kq.js → context-menu-list-item-BQU0jZPq.js} +1 -1
  33. package/build/assets/conversation-DDdRyW4z.js +19 -0
  34. package/build/assets/conversation-panel-Dww2uJOd.js +1 -0
  35. package/build/assets/conversation-rGQV1Eym.js +1 -0
  36. package/build/assets/{conversation-service.api-CngSQhPh.js → conversation-service.api-ByRiRU1e.js} +1 -1
  37. package/build/assets/{conversation-tab-empty-state-B5eOSEGv.js → conversation-tab-empty-state-C8tztloo.js} +1 -1
  38. package/build/assets/{copy-D6CyDz2n.js → copy-CdKN5rtJ.js} +1 -1
  39. package/build/assets/{declaration-BDfM67Kl.js → declaration-D9ucT0fq.js} +1 -1
  40. package/build/assets/{device-verify-CAevP6_3.js → device-verify-YuGXnpRk.js} +1 -1
  41. package/build/assets/{dropdown-classes-CL8egwz_.js → dropdown-classes-CVp0kVdt.js} +1 -1
  42. package/build/assets/{edit-automation-modal-CwLfhSMN.js → edit-automation-modal-CpA_JKLY.js} +1 -1
  43. package/build/assets/{ellipsis-button-Db-AwbLv.js → ellipsis-button-k7HLwYth.js} +1 -1
  44. package/build/assets/{entry.client-BKDpKmdB.js → entry.client-DUpefbBp.js} +2 -2
  45. package/build/assets/{enum-filter-dropdown-DnYXhc1E.js → enum-filter-dropdown-COqUq3mB.js} +1 -1
  46. package/build/assets/{environment-switch-overlay-BgYKFdf6.js → environment-switch-overlay-wB5LxfYZ.js} +1 -1
  47. package/build/assets/{extensions-hub-CgisT2wb.js → extensions-hub-BYCLWP3d.js} +1 -1
  48. package/build/assets/{extensions-navigation-nurGkQe5.js → extensions-navigation-3FLKfb6g.js} +1 -1
  49. package/build/assets/{files-tab-DIyAYvp0.js → files-tab-CBUPwSV1.js} +1 -1
  50. package/build/assets/{files-tab-store-RScGdwu8.js → files-tab-store-DSKUhziI.js} +1 -1
  51. package/build/assets/{folder-IChmji2Y.js → folder-DPTBlxWb.js} +1 -1
  52. package/build/assets/home-BDCL0Psk.js +1 -0
  53. package/build/assets/{install-server-modal-C8fylTet.js → install-server-modal-CWZhBKwH.js} +1 -1
  54. package/build/assets/{launch-BNiqgTvz.js → launch-CMZknx1e.js} +1 -1
  55. package/build/assets/{lesson-plan-BdmMvboE.js → lesson-plan-y520IDs6.js} +1 -1
  56. package/build/assets/{lightbulb-DzViGAuw.js → lightbulb-S616sGEL.js} +1 -1
  57. package/build/assets/{link-external-Dwv3oQAx.js → link-external-ooNztGLp.js} +1 -1
  58. package/build/assets/{llm-client-P9f2gKeW.js → llm-client-D6EtdLBs.js} +1 -1
  59. package/build/assets/llm-not-configured-banner-CJyURBCm.js +27 -0
  60. package/build/assets/llm-settings-BW6yW2Go.js +1 -0
  61. package/build/assets/{llm-settings-B92l1Z2N.js → llm-settings-CiY22Wzi.js} +1 -1
  62. package/build/assets/{loading-spinner-Dtm7y-w5.js → loading-spinner-D7bOU6I7.js} +1 -1
  63. package/build/assets/{manage-backends-modal-qpq2M_oN.js → manage-backends-modal-v5POMal5.js} +1 -1
  64. package/build/assets/manifest-eccb7f46.js +1 -0
  65. package/build/assets/{markdown-renderer-Dt0RXhUJ.js → markdown-renderer-z446oW0Z.js} +1 -1
  66. package/build/assets/{mcp-BKdD21xY.js → mcp-DgPFZ_Dv.js} +1 -1
  67. package/build/assets/{messages-Ch8Rd1cx.js → messages-Dq6AQ8mp.js} +1 -1
  68. package/build/assets/{modal-backdrop-DmDLoot0.js → modal-backdrop-_VbcKk5K.js} +1 -1
  69. package/build/assets/{modal-body-BWjhfiSa.js → modal-body-Cd-PtMHr.js} +1 -1
  70. package/build/assets/{modal-classes-DbJbhQCW.js → modal-classes-CNm4ovfm.js} +1 -1
  71. package/build/assets/{modal-close-button-DXN6uYvt.js → modal-close-button-Dbo0NAMt.js} +1 -1
  72. package/build/assets/{model-selector-BMn4D5v6.js → model-selector-CdZs21EZ.js} +1 -1
  73. package/build/assets/{navigation-context-BrRCrWhm.js → navigation-context-BpAOh_t5.js} +1 -1
  74. package/build/assets/{navigation-link-qUrH_I5_.js → navigation-link-Dci7Nuyf.js} +1 -1
  75. package/build/assets/{onboarding-B50IeNyy.js → onboarding-Cdwu8QIy.js} +1 -1
  76. package/build/assets/{openhands-logo-DnfHAq7Y.js → openhands-logo-Dzm-d_V_.js} +1 -1
  77. package/build/assets/{option-service.api-lzN_3s9w.js → option-service.api-CdYnKVsu.js} +1 -1
  78. package/build/assets/{organization-service.api-CNmSPGj4.js → organization-service.api-CzMvXIQT.js} +1 -1
  79. package/build/assets/{path-utils-CKgIQZAY.js → path-utils-DKu3CNkH.js} +1 -1
  80. package/build/assets/{plan-components-D9fU4FFh.js → plan-components-CutRBi0G.js} +1 -1
  81. package/build/assets/{planner-tab-B7kpsTT8.js → planner-tab-YkOp7QXt.js} +1 -1
  82. package/build/assets/{profiles-client-BNvHck-I.js → profiles-client-BjUo3q05.js} +1 -1
  83. package/build/assets/{providers-189W9TJO.js → providers-CbpQft-X.js} +1 -1
  84. package/build/assets/{proxy--Uy1iGsW.js → proxy-Bx3NeKeo.js} +1 -1
  85. package/build/assets/{query-client-config-B9ZI-1_w.js → query-client-config-Ca3tW1AH.js} +1 -1
  86. package/build/assets/{recommended-automations-launcher-C_RcP2yb.js → recommended-automations-launcher-WxaZcjRD.js} +1 -1
  87. package/build/assets/{root-Bz22PITD.js → root-CiNoOVrb.js} +2 -2
  88. package/build/assets/{root-layout-B8swq9fS.js → root-layout-DUw-s9LS.js} +2 -2
  89. package/build/assets/{runtime-waiting-state-DPjfE32a.js → runtime-waiting-state-8i0Z3A_i.js} +1 -1
  90. package/build/assets/{sdk-section-page-ozvrzW4r.js → sdk-section-page-DPBwwLle.js} +1 -1
  91. package/build/assets/{sdk-settings-schema-Ck6f2ON9.js → sdk-settings-schema-Big50zDH.js} +1 -1
  92. package/build/assets/{search-aDWSdSb7.js → search-C_l_XW4e.js} +1 -1
  93. package/build/assets/{secrets-service-D6Gcymcs.js → secrets-service-Skzza9sx.js} +1 -1
  94. package/build/assets/{secrets-settings-Bga0bwB1.js → secrets-settings-DmpsTC9V.js} +1 -1
  95. package/build/assets/{settings-DHAhcPm2.js → settings-ChsRtIJQ.js} +1 -1
  96. package/build/assets/{settings-dropdown-input-N0FtDFkk.js → settings-dropdown-input-BP-arqjU.js} +1 -1
  97. package/build/assets/{settings-gear-D8ao16bi.js → settings-gear-f-zWpxfI.js} +1 -1
  98. package/build/assets/{settings-index-CJvQH5ls.js → settings-index-BLfmrKRl.js} +1 -1
  99. package/build/assets/{settings-input-CyWJBrqC.js → settings-input-BM8ANxDb.js} +1 -1
  100. package/build/assets/{settings-list-classes-CYRnRf8r.js → settings-list-classes-B9uo5WES.js} +1 -1
  101. package/build/assets/{settings-modal-BeAlR7Be.js → settings-modal-Cth7Zb-I.js} +1 -1
  102. package/build/assets/{settings-section-header-context-1fN7Xkb3.js → settings-section-header-context-Cid25HM2.js} +1 -1
  103. package/build/assets/{settings-service.api-CFt5HmXD.js → settings-service.api-CcpckquT.js} +1 -1
  104. package/build/assets/{settings-switch-D3aEIphL.js → settings-switch-xa6q4M6j.js} +1 -1
  105. package/build/assets/{shared-conversation-CtRf6CQN.js → shared-conversation-Y0C8zqdr.js} +1 -1
  106. package/build/assets/{sidebar-mobile-menu-toggle-DkYaKR6Q.js → sidebar-mobile-menu-toggle-BvcBXvLY.js} +1 -1
  107. package/build/assets/{sidebar-nav-link-CzeuB4So.js → sidebar-nav-link-BekRAssb.js} +1 -1
  108. package/build/assets/{skill-card-pill-row-CvLCLqqD.js → skill-card-pill-row-DeodrwPG.js} +1 -1
  109. package/build/assets/{skills-jKeJCunm.js → skills-BE5HJuGM.js} +1 -1
  110. package/build/assets/{skills-client-Ui_9FvXp.js → skills-client-CgraS-wA.js} +1 -1
  111. package/build/assets/{skills-plugins-juwPhlEE.js → skills-plugins-rIza_fUf.js} +1 -1
  112. package/build/assets/{skills-settings-BW09n_Px.js → skills-settings-Dvl7gpEx.js} +1 -1
  113. package/build/assets/{styled-tooltip-B3wz8m5E.js → styled-tooltip-X61SEwqk.js} +1 -1
  114. package/build/assets/{suspense-BpkWt-39.js → suspense-Bqb0V0q1.js} +1 -1
  115. package/build/assets/{switch-skeleton-Cl_Nh2kt.js → switch-skeleton-BbIWemkK.js} +1 -1
  116. package/build/assets/{task-list-tab-DKnHShLG.js → task-list-tab-BFnyHGsn.js} +1 -1
  117. package/build/assets/{telemetry-DR_3fMN0.js → telemetry-CAWBJ_rB.js} +1 -1
  118. package/build/assets/{terminal-BFi5FOMc.js → terminal-B92mACR5.js} +1 -1
  119. package/build/assets/{terminal-CZH2h1J3.js → terminal-BFypysgZ.js} +1 -1
  120. package/build/assets/{toggle-switch-BzaEofjj.js → toggle-switch-CL_wRiGs.js} +1 -1
  121. package/build/assets/{typography-BFj4IzMj.js → typography-BLSEGjph.js} +1 -1
  122. package/build/assets/{u-check-circle-Cs2GOrZ7.js → u-check-circle-dG_VJqx5.js} +1 -1
  123. package/build/assets/{u-check-circle-half-DGgLKVV1.js → u-check-circle-half-D-5ZPRnd.js} +1 -1
  124. package/build/assets/{u-circuit-DniZPNAV.js → u-circuit-BXoisXOA.js} +1 -1
  125. package/build/assets/{u-edit-BvTiDr33.js → u-edit-DIgADxLH.js} +1 -1
  126. package/build/assets/{use-acp-credential-form-8yHKY_py.js → use-acp-credential-form-Dj7Jkhgp.js} +1 -1
  127. package/build/assets/{use-active-conversation-CLzls6XV.js → use-active-conversation-BkohEtaN.js} +1 -1
  128. package/build/assets/{use-agent-settings-schema-BCXxH2N-.js → use-agent-settings-schema-Lf_lBAky.js} +1 -1
  129. package/build/assets/{use-agent-state-BocVPR5S.js → use-agent-state-DITv5qV7.js} +1 -1
  130. package/build/assets/{use-cloud-current-user-id-BjDwnldw.js → use-cloud-current-user-id-CSm3kgqy.js} +1 -1
  131. package/build/assets/use-config-DVU9HaPf.js +1 -0
  132. package/build/assets/{use-create-conversation-CIkPp9u9.js → use-create-conversation-CJUAOf1q.js} +1 -1
  133. package/build/assets/{use-create-secret-Bwy6457V.js → use-create-secret-LObNBU3M.js} +1 -1
  134. package/build/assets/{use-handle-plan-click-CjNwpDeO.js → use-handle-plan-click-BdcdMWbv.js} +1 -1
  135. package/build/assets/use-is-authed-B8eLO-Xq.js +1 -0
  136. package/build/assets/{use-launch-skill-in-chat-QmcJQxUY.js → use-launch-skill-in-chat-BTgXIu3N.js} +1 -1
  137. package/build/assets/{use-llm-profiles-CZD1ALup.js → use-llm-profiles-BBTR-OsK.js} +1 -1
  138. package/build/assets/use-runtime-is-ready-BOQpqCvp.js +1 -0
  139. package/build/assets/{use-save-settings-BjYPOrtF.js → use-save-settings-7_MLft-Y.js} +1 -1
  140. package/build/assets/{use-settings-YTDcMvj1.js → use-settings-CNsxccvQ.js} +1 -1
  141. package/build/assets/{use-settings-nav-items-DMit9adK.js → use-settings-nav-items-ykMjd_NG.js} +1 -1
  142. package/build/assets/{use-skills-fh_U4ZGe.js → use-skills-_unimM2d.js} +1 -1
  143. package/build/assets/{use-tracking-DJ3Z7ha1.js → use-tracking-C9P88zSo.js} +1 -1
  144. package/build/assets/{use-user-conversation-Ct93yaXj.js → use-user-conversation-2jZZ-MLA.js} +1 -1
  145. package/build/assets/{useMutation-B1gQr_yr.js → useMutation-Dm84WAKR.js} +1 -1
  146. package/build/assets/{useQuery-CbqdITLM.js → useQuery-DGRSm7IT.js} +1 -1
  147. package/build/assets/{useTranslation-C-T8J2U-.js → useTranslation-CL6FTf1b.js} +1 -1
  148. package/build/assets/{utils-CXRkUr73.js → utils-eXk6yerZ.js} +1 -1
  149. package/build/assets/{vendor~conversation-panel~conversation-CkFCLbQW.js → vendor~conversation-panel~conversation-D98u43rl.js} +1 -1
  150. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-C1BmvJX4.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-Dqpi2xyZ.js} +1 -1
  151. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~bok0tgtf-RuHTcYaf.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~bok0tgtf-7eqKdLSQ.js} +1 -1
  152. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~bok0tgtf-B04AZhMW.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~bok0tgtf-BP3MGAAY.js} +1 -1
  153. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ceijy54y-D7ZsdcLa.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ceijy54y-Dkd2wxJA.js} +1 -1
  154. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~mcp~settings~settings-index~~m3acswdn-CGm-Jxp5.js → vendor~root-layout~home~conversation-panel~conversation~launch~mcp~settings~settings-index~~m3acswdn-DQE89epK.js} +1 -1
  155. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~mcp~automati~dou5smdo-DH07jaIY.js → vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~mcp~automati~dou5smdo-DavKsAvB.js} +186 -40
  156. package/build/assets/{vendor~root-layout~home~mcp~automations-list-COlx7Is6.js → vendor~root-layout~home~mcp~automations-list-D40jgugf.js} +1 -1
  157. package/build/assets/{vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~o7tv66sg-DuiHR4ce.js → vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~o7tv66sg-BIm99UaF.js} +1 -1
  158. package/build/assets/{vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~o7tv66sg-4yr76Evz.js → vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~o7tv66sg-xCM3k6Rd.js} +1 -1
  159. package/build/assets/{verification-settings-CeIuPtF2.js → verification-settings-EUkt_CkZ.js} +1 -1
  160. package/build/assets/{x-mark-BMhi11Sg.js → x-mark-C42svtnu.js} +1 -1
  161. package/build/index.html +4 -4
  162. package/build/locales/ar/openhands.json +45 -40
  163. package/build/locales/ca/openhands.json +41 -36
  164. package/build/locales/de/openhands.json +42 -37
  165. package/build/locales/en/openhands.json +6 -1
  166. package/build/locales/es/openhands.json +44 -39
  167. package/build/locales/fr/openhands.json +44 -39
  168. package/build/locales/it/openhands.json +44 -39
  169. package/build/locales/ja/openhands.json +44 -39
  170. package/build/locales/ko-KR/openhands.json +44 -39
  171. package/build/locales/no/openhands.json +44 -39
  172. package/build/locales/pt/openhands.json +44 -39
  173. package/build/locales/tr/openhands.json +43 -38
  174. package/build/locales/uk/openhands.json +44 -39
  175. package/build/locales/zh-CN/openhands.json +44 -39
  176. package/build/locales/zh-TW/openhands.json +44 -39
  177. package/config/defaults.json +4 -4
  178. package/dist/components/features/backends/backend-form-modal.cjs +1 -1
  179. package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
  180. package/dist/components/features/backends/backend-form-modal.js +1 -1
  181. package/dist/components/features/backends/backend-form-modal.js.map +1 -1
  182. package/dist/components/features/chat/chat-interface.cjs +1 -1
  183. package/dist/components/features/chat/chat-interface.cjs.map +1 -1
  184. package/dist/components/features/chat/chat-interface.js +1 -1
  185. package/dist/components/features/chat/chat-interface.js.map +1 -1
  186. package/dist/components/features/chat/git-control-bar.cjs +1 -1
  187. package/dist/components/features/chat/git-control-bar.cjs.map +1 -1
  188. package/dist/components/features/chat/git-control-bar.js +1 -1
  189. package/dist/components/features/chat/git-control-bar.js.map +1 -1
  190. package/dist/components/features/chat/open-repository-modal.cjs +1 -1
  191. package/dist/components/features/chat/open-repository-modal.cjs.map +1 -1
  192. package/dist/components/features/chat/open-repository-modal.js +0 -3
  193. package/dist/components/features/chat/open-repository-modal.js.map +1 -1
  194. package/dist/components/features/chat/pending-user-messages.cjs +1 -1
  195. package/dist/components/features/chat/pending-user-messages.cjs.map +1 -1
  196. package/dist/components/features/chat/pending-user-messages.js +31 -28
  197. package/dist/components/features/chat/pending-user-messages.js.map +1 -1
  198. package/dist/components/features/home/git-branch-dropdown/git-branch-dropdown.cjs +1 -1
  199. package/dist/components/features/home/git-branch-dropdown/git-branch-dropdown.cjs.map +1 -1
  200. package/dist/components/features/home/git-branch-dropdown/git-branch-dropdown.js +79 -77
  201. package/dist/components/features/home/git-branch-dropdown/git-branch-dropdown.js.map +1 -1
  202. package/dist/components/features/home/git-provider-dropdown/git-provider-dropdown.cjs +1 -1
  203. package/dist/components/features/home/git-provider-dropdown/git-provider-dropdown.cjs.map +1 -1
  204. package/dist/components/features/home/git-provider-dropdown/git-provider-dropdown.js +67 -65
  205. package/dist/components/features/home/git-provider-dropdown/git-provider-dropdown.js.map +1 -1
  206. package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.cjs +1 -1
  207. package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.cjs.map +1 -1
  208. package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.js +2 -2
  209. package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.js.map +1 -1
  210. package/dist/components/features/settings/settings-navigation.cjs +1 -1
  211. package/dist/components/features/settings/settings-navigation.cjs.map +1 -1
  212. package/dist/components/features/settings/settings-navigation.js +1 -1
  213. package/dist/components/features/settings/settings-navigation.js.map +1 -1
  214. package/dist/components/features/sidebar/sidebar.cjs +1 -1
  215. package/dist/components/features/sidebar/sidebar.cjs.map +1 -1
  216. package/dist/components/features/sidebar/sidebar.js +3 -2
  217. package/dist/components/features/sidebar/sidebar.js.map +1 -1
  218. package/dist/i18n/declaration.cjs +1 -1
  219. package/dist/i18n/declaration.cjs.map +1 -1
  220. package/dist/i18n/declaration.d.ts +6 -1
  221. package/dist/i18n/declaration.js +1 -1
  222. package/dist/i18n/declaration.js.map +1 -1
  223. package/dist/i18n/translation.cjs +3 -3
  224. package/dist/i18n/translation.cjs.map +1 -1
  225. package/dist/i18n/translation.js +612 -527
  226. package/dist/i18n/translation.js.map +1 -1
  227. package/dist/locales/ar/openhands.json +45 -40
  228. package/dist/locales/ca/openhands.json +41 -36
  229. package/dist/locales/de/openhands.json +42 -37
  230. package/dist/locales/en/openhands.json +6 -1
  231. package/dist/locales/es/openhands.json +44 -39
  232. package/dist/locales/fr/openhands.json +44 -39
  233. package/dist/locales/it/openhands.json +44 -39
  234. package/dist/locales/ja/openhands.json +44 -39
  235. package/dist/locales/ko-KR/openhands.json +44 -39
  236. package/dist/locales/no/openhands.json +44 -39
  237. package/dist/locales/pt/openhands.json +44 -39
  238. package/dist/locales/tr/openhands.json +43 -38
  239. package/dist/locales/uk/openhands.json +44 -39
  240. package/dist/locales/zh-CN/openhands.json +44 -39
  241. package/dist/locales/zh-TW/openhands.json +44 -39
  242. package/dist/node_modules/@openhands/extensions/skills/index.cjs +186 -40
  243. package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
  244. package/dist/node_modules/@openhands/extensions/skills/index.js +2 -2
  245. package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
  246. package/dist/package.cjs +1 -1
  247. package/dist/package.cjs.map +1 -1
  248. package/dist/package.js +2 -2
  249. package/dist/package.js.map +1 -1
  250. package/dist/utils/websocket-url.cjs +1 -1
  251. package/dist/utils/websocket-url.cjs.map +1 -1
  252. package/dist/utils/websocket-url.js +2 -2
  253. package/dist/utils/websocket-url.js.map +1 -1
  254. package/package.json +2 -2
  255. package/scripts/check-sdk-version-sync.mjs +6 -6
  256. package/scripts/check-translation-completeness.cjs +149 -59
  257. package/scripts/dev-safe.mjs +1 -1
  258. package/build/assets/add-backend-modal-CSfOPrnr.js +0 -1
  259. package/build/assets/agent-server-client-options-B-C8JaTb.js +0 -1
  260. package/build/assets/conversation-B7ztPdyS.js +0 -1
  261. package/build/assets/conversation-DZYd8QiZ.js +0 -19
  262. package/build/assets/conversation-panel-CklMXcs6.js +0 -1
  263. package/build/assets/home-iVOrSOWL.js +0 -1
  264. package/build/assets/llm-not-configured-banner-BQgVTo0O.js +0 -27
  265. package/build/assets/llm-settings-ICWFhhjM.js +0 -1
  266. package/build/assets/manifest-d230d4a5.js +0 -1
  267. package/build/assets/use-config-C4DX1-nF.js +0 -1
  268. package/build/assets/use-is-authed-7P3xSsit.js +0 -1
  269. package/build/assets/use-runtime-is-ready-B7sbw-q5.js +0 -1
@@ -1290,82 +1290,225 @@ curl -X POST \\
1290
1290
  7. Keep the review body brief (details go in inline comments)
1291
1291
  8. If no issues: post a short approval message with no inline comments`},{name:`github-pr-reviewer`,description:`Create an automation that reviews GitHub pull requests when they are opened or updated. Inspects the diff, changed files, tests, and existing discussion via GitHub MCP, then posts a concise review highlighting risks, security issues, missing tests, and next steps.`,triggers:[`/pr-reviewer:setup`],content:`# GitHub PR Reviewer Automation
1292
1292
 
1293
- Set up a cron or event-triggered automation that reviews GitHub pull requests.
1293
+ Create a cron automation that polls a GitHub repository, reviews each open
1294
+ pull request exactly once, and posts the AI review as a GitHub comment.
1295
+
1296
+ The automation script is fully deterministic: PR discovery, state tracking,
1297
+ and deduplication are handled in Python. The LLM is only invoked to write
1298
+ the review text for PRs not yet seen, never for orchestration.
1294
1299
 
1295
1300
  ---
1296
1301
 
1297
1302
  ## Prerequisites
1298
1303
 
1299
- ### Required integration
1304
+ ### Required secret
1300
1305
 
1301
- - **GitHub MCP** must be installed in Settings → MCP.
1306
+ Verify that the following secret is set in **OpenHands Settings → Secrets**:
1302
1307
 
1303
- ### Information to collect
1308
+ | Secret name | Token type | Minimum permissions |
1309
+ |---|---|---|
1310
+ | \`GITHUB_PERSONAL_ACCESS_TOKEN\` | Classic PAT | \`repo\` (private) or \`public_repo\` (public) |
1311
+ | \`GITHUB_PERSONAL_ACCESS_TOKEN\` | Fine-grained PAT | Pull requests: Read and Write |
1304
1312
 
1305
- Ask the user for:
1313
+ Check with:
1314
+ \`\`\`bash
1315
+ curl -s https://api.github.com/user \\
1316
+ -H "Authorization: Bearer $GITHUB_PERSONAL_ACCESS_TOKEN" \\
1317
+ | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('login') or d.get('message'))"
1318
+ \`\`\`
1306
1319
 
1307
- 1. **Repositories** which repos should be watched (e.g. \`myorg/backend\`, \`myorg/frontend\`)
1308
- 2. **Trigger type** — event-based (reacts to \`pull_request.opened\` / \`pull_request.synchronize\`) or cron-based polling
1309
- 3. **Review tone** — thorough, concise, or friendly
1310
- 4. **Auto-post or draft** — should reviews be posted as GitHub comments automatically, or saved as draft artifacts for human approval first?
1311
- 5. **Filters** — any label, branch, or author filters (e.g. skip drafts, only review PRs with \`needs-review\` label)
1320
+ If the token is missing or invalid, inform the user and stop.
1312
1321
 
1313
1322
  ---
1314
1323
 
1315
1324
  ## Setup Workflow
1316
1325
 
1317
- ### Step 1 Verify GitHub MCP access
1326
+ Follow these steps in order.
1327
+
1328
+ ### Step 1 — Verify GITHUB_PERSONAL_ACCESS_TOKEN
1329
+
1330
+ Run the \`curl\` check above.
1331
+
1332
+ - If absent: *"GITHUB_PERSONAL_ACCESS_TOKEN is not set. Please add it in
1333
+ OpenHands Settings → Secrets."* Stop.
1334
+ - If the API returns \`{"message": "Bad credentials"}\`: tell the user the
1335
+ token is invalid and ask them to update it. Stop.
1336
+
1337
+ ### Step 2 — Collect repository
1318
1338
 
1319
- Confirm the GitHub MCP integration is working:
1339
+ Ask: *"Which GitHub repository should be monitored?
1340
+ (Format: \`owner/repo\`, e.g. \`myorg/backend\`)"*
1341
+
1342
+ Validate access:
1343
+ \`\`\`bash
1344
+ curl -s "https://api.github.com/repos/{owner}/{repo}" \\
1345
+ -H "Authorization: Bearer $GITHUB_PERSONAL_ACCESS_TOKEN" \\
1346
+ | python3 -c "
1347
+ import json, sys
1348
+ d = json.load(sys.stdin)
1349
+ if 'message' in d:
1350
+ print('ERROR:', d['message'])
1351
+ else:
1352
+ print(f\\"Accessible. Private: {d.get('private')}. Permissions: {d.get('permissions')}\\")
1353
+ "
1320
1354
  \`\`\`
1321
- Use the GitHub MCP to list recent pull requests in one of the target repositories.
1355
+
1356
+ Record \`REPO = "{owner}/{repo}"\`.
1357
+
1358
+ ### Step 3 — Collect review tone
1359
+
1360
+ Ask: *"What review tone should the reviewer use?
1361
+ 1. Thorough (default) — comprehensive coverage of correctness, security, tests, style
1362
+ 2. Concise — high-signal only, skips minor style feedback
1363
+ 3. Friendly — constructive and encouraging
1364
+ (Press Enter for Thorough, or type your choice or any custom style description)"*
1365
+
1366
+ Map the choice to \`REVIEW_TONE\`:
1367
+
1368
+ | Answer | \`REVIEW_TONE\` | \`REVIEW_STYLE_INSTRUCTIONS\` |
1369
+ |--------|--------------|------------------------------|
1370
+ | 1 / Enter | \`"thorough"\` | \`""\` |
1371
+ | 2 | \`"concise"\` | \`""\` |
1372
+ | 3 | \`"friendly"\` | \`""\` |
1373
+ | Custom text (e.g. "hostile pirate") | \`"thorough"\` | the custom text verbatim |
1374
+
1375
+ ### Step 4 — Collect cron schedule
1376
+
1377
+ Ask: *"How often should the automation poll for new PRs?
1378
+ (Press Enter for the default: every 5 minutes.
1379
+ Use a cron expression for a different interval, e.g. \`0 * * * *\` = hourly)"*
1380
+
1381
+ Default: \`*/5 * * * *\`.
1382
+
1383
+ Record as \`CRON_SCHEDULE\`.
1384
+
1385
+ ### Step 5 — Generate the automation script
1386
+
1387
+ Read \`scripts/main.py\` from this skill's directory. Apply exactly four
1388
+ constant substitutions near the top of the file:
1389
+
1390
+ | Placeholder | Replace with |
1391
+ |---|---|
1392
+ | \`REPO = "owner/repo"\` | \`REPO = "{owner_repo}"\` |
1393
+ | \`REVIEW_TONE = "thorough"\` | \`REVIEW_TONE = "{review_tone}"\` |
1394
+ | \`REVIEW_STYLE_INSTRUCTIONS = ""\` | \`REVIEW_STYLE_INSTRUCTIONS = "{style_instructions}"\` |
1395
+ | \`DEFAULT_OPENHANDS_URL = "http://localhost:8000"\` | leave unchanged unless the user has a preference |
1396
+
1397
+ Write the customised script to a temporary build directory:
1398
+ \`\`\`bash
1399
+ mkdir -p /tmp/pr-reviewer-build
1400
+ # write the customised main.py to /tmp/pr-reviewer-build/main.py
1322
1401
  \`\`\`
1323
1402
 
1324
- If it fails, tell the user to install the GitHub MCP integration first.
1403
+ Validate syntax before packaging:
1404
+ \`\`\`bash
1405
+ python3 -m py_compile /tmp/pr-reviewer-build/main.py && echo "Syntax OK"
1406
+ \`\`\`
1325
1407
 
1326
- ### Step 2 Determine trigger type
1408
+ Fix any syntax errors before proceeding.
1327
1409
 
1328
- **Event-based (recommended if publicly reachable):**
1329
- Check \`<RUNTIME_SERVICES>\` for deployment reachability. If the deployment has a public URL, recommend an event trigger on \`pull_request.opened\` and \`pull_request.synchronize\`.
1410
+ ### Step 6 Package and upload
1330
1411
 
1331
- **Cron-based (local/private deployments):**
1332
- If the deployment is local, set up a cron schedule (e.g. every 5 minutes) that polls for recently updated PRs.
1412
+ Determine the Automation backend URL and auth from the \`<RUNTIME_SERVICES>\`
1413
+ block in your system context:
1414
+ - **OPENHANDS_HOST**: the Automation backend \`url_from_agent\`
1415
+ - **Auth**: \`X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY\`
1333
1416
 
1334
- ### Step 3 — Build the review prompt
1417
+ \`\`\`bash
1418
+ tar -czf /tmp/pr-reviewer.tar.gz -C /tmp/pr-reviewer-build .
1335
1419
 
1336
- Construct a prompt for the automation that includes:
1337
- - The user's chosen repositories
1338
- - Review focus areas (correctness, security, tests, maintainability)
1339
- - Review tone preference
1340
- - Whether to auto-post or draft
1420
+ TARBALL_PATH=$(curl -s -X POST \\
1421
+ "\${OPENHANDS_HOST}/api/automation/v1/uploads?name=github-pr-reviewer" \\
1422
+ -H "X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY" \\
1423
+ -H "Content-Type: application/gzip" \\
1424
+ --data-binary @/tmp/pr-reviewer.tar.gz \\
1425
+ | python3 -c "import json,sys; print(json.load(sys.stdin)['tarball_path'])")
1341
1426
 
1342
- ### Step 4 — Create the automation
1427
+ echo "Uploaded: $TARBALL_PATH"
1428
+ \`\`\`
1343
1429
 
1344
- Read the Automation backend URL and auth from \`<RUNTIME_SERVICES>\`:
1345
- - Use the **Automation backend** \`url_from_agent\` as \`OPENHANDS_HOST\`
1346
- - Auth: \`X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY\`
1430
+ ### Step 7 Register the automation
1347
1431
 
1348
- Use the **prompt preset** endpoint:
1349
1432
  \`\`\`bash
1350
- curl -s -X POST "\${OPENHANDS_HOST}/api/automation/v1/preset/prompt" \\
1433
+ curl -s -X POST "\${OPENHANDS_HOST}/api/automation/v1" \\
1351
1434
  -H "X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY" \\
1352
1435
  -H "Content-Type: application/json" \\
1353
- -d '{
1354
- "name": "GitHub PR Reviewer",
1355
- "prompt": "<constructed review prompt>",
1356
- "trigger": <trigger config from step 2>
1357
- }'
1436
+ -d "{
1437
+ \\"name\\": \\"GitHub PR Reviewer: {owner}/{repo}\\",
1438
+ \\"trigger\\": {\\"type\\": \\"cron\\", \\"schedule\\": \\"{cron_schedule}\\"},
1439
+ \\"tarball_path\\": \\"$TARBALL_PATH\\",
1440
+ \\"entrypoint\\": \\"python3 main.py\\",
1441
+ \\"timeout\\": 300
1442
+ }" | python3 -m json.tool
1358
1443
  \`\`\`
1359
1444
 
1360
- ### Step 5 — Confirm
1445
+ Record the returned \`id\`.
1446
+
1447
+ ### Step 8 — Confirm
1361
1448
 
1362
1449
  Tell the user:
1450
+
1363
1451
  > ✅ **GitHub PR Reviewer** is running!
1364
1452
  >
1365
1453
  > - Automation ID: \`{id}\`
1366
- > - Repositories: \`{repo list}\`
1367
- > - Trigger: \`{trigger description}\`
1368
- > - Review style: \`{tone}\`, \`{auto-post or draft}\``},{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
1454
+ > - Repository: \`{owner}/{repo}\`
1455
+ > - Review tone: \`{tone}\`
1456
+ > - Polling schedule: \`{cron_schedule}\`
1457
+ > - State file: \`~/.openhands/workspaces/automation-state/github_pr_reviewer_{id}.json\`
1458
+ >
1459
+ > The next cron run will discover all currently open PRs and queue reviews.
1460
+ > Each PR is reviewed exactly once; state is stored in the JSON file above.
1461
+ > To force a re-review of all PRs, delete the state file.
1462
+
1463
+ ---
1464
+
1465
+ ## Runtime Behaviour (per poll)
1466
+
1467
+ Each cron run executes \`main.py\`, which:
1468
+
1469
+ 1. **Loads state** from the JSON file (see \`references/state-schema.md\`).
1470
+ 2. **Resolves and validates \`GITHUB_PERSONAL_ACCESS_TOKEN\`** — aborts
1471
+ immediately if absent or invalid.
1472
+ 3. **Lists all open PRs** in the configured repository.
1473
+ 4. **For each PR not yet in state**:
1474
+ - Fetches the unified diff via the GitHub API.
1475
+ - Skips PRs whose diff exceeds \`MAX_DIFF_LINES_SKIP\` (default 5000 lines)
1476
+ and posts an explanatory comment.
1477
+ - Truncates diffs larger than \`MAX_DIFF_LINES\` (default 500 lines) and
1478
+ notes this in the prompt.
1479
+ - Creates an OpenHands conversation with the PR metadata, diff, and
1480
+ configured tone instructions as the initial message.
1481
+ - Posts an acknowledgement comment on the PR with a link to the conversation.
1482
+ - Records the PR in state with \`status: "active"\`.
1483
+ 5. **For each active conversation**:
1484
+ - Skips PRs that have been closed or merged (marks them closed silently).
1485
+ - Checks the conversation's \`execution_status\`.
1486
+ - When it reaches \`idle\`, \`finished\`, \`error\`, or \`stuck\`:
1487
+ posts the agent's final response as a GitHub comment and marks the
1488
+ conversation \`closed\`.
1489
+ 6. **Saves updated state** and fires the completion callback.
1490
+
1491
+ ---
1492
+
1493
+ ## Additional Resources
1494
+
1495
+ - **\`references/state-schema.md\`** — State JSON schema, field definitions,
1496
+ and conversation lifecycle diagram.
1497
+ - **\`scripts/main.py\`** — The complete automation script. Customise the
1498
+ four constants at the top before packaging.
1499
+
1500
+ ---
1501
+
1502
+ ## Troubleshooting
1503
+
1504
+ | Symptom | Likely cause | Fix |
1505
+ |---|---|---|
1506
+ | Bot never posts reviews | \`GITHUB_PERSONAL_ACCESS_TOKEN\` missing or wrong scopes | Verify token; check Step 1 |
1507
+ | "Bad credentials" in run logs | Token expired | Rotate and update the secret |
1508
+ | 404 on repo access | Repo name wrong or no access | Re-check \`owner/repo\` and token permissions |
1509
+ | Same PR reviewed twice | State file deleted or corrupted | Check that the state file path is stable across runs |
1510
+ | Review never posted | Conversation stuck in \`running\` | Open the conversation in the OpenHands UI |
1511
+ | PR skipped silently | Diff too large | Raise \`MAX_DIFF_LINES_SKIP\` in the script or split the PR |`},{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
1369
1512
 
1370
1513
  Create a cron automation that polls a single GitHub repository on a
1371
1514
  configurable schedule (default: every minute).
@@ -4217,6 +4360,7 @@ Source: [\`examples/\`](https://github.com/OpenHands/software-agent-sdk/tree/mai
4217
4360
  - [\`50_async_cancellation.py\`](https://github.com/OpenHands/software-agent-sdk/blob/main/examples/01_standalone_sdk/50_async_cancellation.py)
4218
4361
  - [\`51_agent_hooks\`](https://github.com/OpenHands/software-agent-sdk/tree/main/examples/01_standalone_sdk/51_agent_hooks)
4219
4362
  - [\`52_dynamic_workflow.py\`](https://github.com/OpenHands/software-agent-sdk/blob/main/examples/01_standalone_sdk/52_dynamic_workflow.py)
4363
+ - [\`53_client_defined_tools.py\`](https://github.com/OpenHands/software-agent-sdk/blob/main/examples/01_standalone_sdk/53_client_defined_tools.py)
4220
4364
 
4221
4365
  ### [\`02_remote_agent_server/\`](https://github.com/OpenHands/software-agent-sdk/tree/main/examples/02_remote_agent_server)
4222
4366
 
@@ -4233,6 +4377,8 @@ Source: [\`examples/\`](https://github.com/OpenHands/software-agent-sdk/tree/mai
4233
4377
  - [\`11_conversation_fork.py\`](https://github.com/OpenHands/software-agent-sdk/blob/main/examples/02_remote_agent_server/11_conversation_fork.py)
4234
4378
  - [\`12_settings_and_secrets_api.py\`](https://github.com/OpenHands/software-agent-sdk/blob/main/examples/02_remote_agent_server/12_settings_and_secrets_api.py)
4235
4379
  - [\`13_workspace_get_llm.py\`](https://github.com/OpenHands/software-agent-sdk/blob/main/examples/02_remote_agent_server/13_workspace_get_llm.py)
4380
+ - [\`14_client_defined_tools.py\`](https://github.com/OpenHands/software-agent-sdk/blob/main/examples/02_remote_agent_server/14_client_defined_tools.py)
4381
+ - [\`15_openai_compatible_gateway.py\`](https://github.com/OpenHands/software-agent-sdk/blob/main/examples/02_remote_agent_server/15_openai_compatible_gateway.py)
4236
4382
  - [\`hook_scripts\`](https://github.com/OpenHands/software-agent-sdk/tree/main/examples/02_remote_agent_server/hook_scripts)
4237
4383
  - [\`scripts\`](https://github.com/OpenHands/software-agent-sdk/tree/main/examples/02_remote_agent_server/scripts)
4238
4384