@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 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{n as r}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dcc51rps-rfV8mQ9m.js";import{t as i}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js";import{_ as a,j as o}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js";import{t as s}from"./useQuery-Bs5NFz2s.js";import{Ft as c,Q as l,Y as u,ft as d,ht as f,n as p,st as m,tt as h,ut as g}from"./active-backend-context-BZDG15C0.js";import{E as _,t as v,z as y}from"./utils-DUD5ScdA.js";import{i as b,l as x,r as S}from"./messages-CzFKrzPG.js";import{a as C,c as ee,i as w,l as T,n as E,o as D,r as O,s as te,t as k}from"./vendor~files-tab-B6POTS66.js";import{t as A}from"./mouse-pointer-click-C_gXyLyD.js";import{r as j}from"./conversation-DotRfiDz.js";import{i as M}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-DOPLJMH9.js";import{t as N}from"./proxy-DYDXxtje.js";import{c as ne,f as re}from"./conversation-store-Blc5xysY.js";import{t as ie}from"./segmented-toggle-DiVfTZuN.js";import{S as ae,_ as oe,b as se}from"./agent-server-conversation-service.api-DK56YPTs.js";import{t as ce}from"./format-time-delta-BIR5Os7T.js";import{o as P}from"./home-store-DgzViC3f.js";import{r as le}from"./typography-DB5HoCk0.js";import{h as F}from"./llm-not-configured-banner-BK9z5eS0.js";import{J as I,S as ue,X as de,Y as L,g as R,q as fe,t as pe}from"./markdown-renderer-Cp6DlHQN.js";import{t as me}from"./link-external-BNZzCM1I.js";import{n as he,t as z}from"./highlighted-source-view-C_YOp8Fo.js";import{t as B}from"./conversation-tab-empty-state-D-puECpY.js";var V=e(t(),1),H=n();function ge(){let{t:e}=i(`openhands`);return(0,H.jsx)(B,{className:`h-full`,icon:(0,H.jsx)(A,{"aria-hidden":!0,strokeWidth:2,className:`size-full`}),children:e(y.FILES$NO_FILE_SELECTED)})}var _e=class{static async executeCommand(e,t,n,r,i=30){let a=m().backend;if(a.kind===`cloud`&&e){let o=await N({backend:a,method:`POST`,hostOverride:h(e),path:`/api/bash/execute_bash_command`,body:{command:n,...r?{cwd:r}:{},timeout:Math.floor(i)},authMode:`session-api-key`,sessionApiKey:t,timeoutSeconds:i+10});return{exit_code:o.exit_code??-1,stdout:o.stdout??``,stderr:o.stderr??``}}let o=await new M(l({conversationUrl:e,sessionApiKey:t})).executeCommand(n,r,i);return{exit_code:o.exit_code,stdout:o.stdout,stderr:o.stderr}}static async downloadFile(e,t,n){let r=m().backend;return r.kind===`cloud`&&e?(await N({backend:r,method:`GET`,hostOverride:h(e),path:`/api/file/download?path=${encodeURIComponent(n)}`,authMode:`session-api-key`,sessionApiKey:t,responseType:`blob`})).arrayBuffer():new a(l({conversationUrl:e,sessionApiKey:t})).downloadFile(n)}};function U(e,t){let n=t?.trim();if(n)return n;if(!e)return f;let r=e.split(`/`);return`${f}/${r[r.length-1]}`}var W=2e3,ve=[`.git`,`node_modules`,`.venv`,`venv`,`__pycache__`,`dist`,`build`,`.next`,`.cache`,`.pytest_cache`,`.mypy_cache`,`.turbo`,`.parcel-cache`,`target`];function ye(){return`find . \\( ${ve.map(e=>`-name '${e}' -prune`).join(` -o `)} \\) -o -type f -print 2>/dev/null | sort | head -n ${W}`}function be(e){return e.startsWith(`./`)?e.slice(2):e}function xe(e){let{data:t}=I(),n=j(),r=t?.id,i=t?.conversation_url,a=t?.session_api_key,o=t?.workspace?.working_dir?.trim(),c=s({queryKey:[`workspace-files`,r,i,a,o],queryFn:async()=>{let e=await _e.executeCommand(i,a,ye(),o,30);if(e.exit_code!==0)throw Error(e.stderr?.trim()||`Failed to list workspace files`);let t=e.stdout.split(/\r?\n/).map(e=>e.trim()).filter(Boolean).map(be);return Array.from(new Set(t)).slice(0,W)},enabled:e&&n&&!!r&&!!o,retry:!1,staleTime:1e3*30,gcTime:1e3*60*5,meta:{disableToast:!0}});return{data:c.data,isLoading:c.isLoading}}function Se(e){let{conversationId:t}=de(),{data:n}=I(),r=j(),i=n?.selected_repository,a=n?.workspace?.working_dir?.trim(),o=U(i,a),c=o.startsWith(`/`)?o:`/${o}`,l=s({queryKey:[`workspace-files-cloud`,t,c],queryFn:async()=>{let e=(await oe(t,c)).map(be).filter(Boolean);return Array.from(new Set(e)).slice(0,W)},enabled:e&&r&&!!t,retry:!1,staleTime:1e3*30,gcTime:1e3*60*5,meta:{disableToast:!0}});return{data:l.data,isLoading:l.isLoading}}function Ce(){let e=(0,V.useSyncExternalStore)(d,g,g).active.backend.kind===`cloud`,t=xe(!e),n=Se(e);return e?n:t}function we(){let{data:e}=I(),t=j(),n=e?.id,r=e?.conversation_url,i=e?.session_api_key,a=m().backend.kind===`local`,o=s({queryKey:[`workspace-session`,n,r,i],queryFn:async()=>({baseUrl:await new M(l({conversationUrl:r,sessionApiKey:i})).startWorkspaceSession(n)}),enabled:t&&!!n&&a,staleTime:1/0,gcTime:1/0,retry:!1});return{data:o.data??null,isLoading:o.isLoading,isError:o.isError,error:o.error??null}}function Te(e,t){let n=(t??``).replace(/^\/+/,``);return n?`${e}${n.split(`/`).map(e=>encodeURIComponent(e)).join(`/`)}`:e}var G=re(e=>({count:0,bump:()=>e(e=>({count:e.count+1}))}));function K(e,t){return e===null?null:`${e}${e.includes(`?`)?`&`:`?`}v=${t}`}var Ee=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`bmp`,`ico`,`svg`,`avif`]),De=new Set([`pdf`]);function Oe(e){let t=e.lastIndexOf(`.`);return t===-1?``:e.slice(t+1).toLowerCase()}function ke(e){switch(Oe(e)){case`html`:case`htm`:return`text/html`;case`css`:return`text/css`;case`js`:case`mjs`:case`cjs`:return`text/javascript`;case`json`:return`application/json`;case`md`:case`markdown`:return`text/markdown`;case`svg`:return`image/svg+xml`;case`png`:return`image/png`;case`jpg`:case`jpeg`:return`image/jpeg`;case`gif`:return`image/gif`;case`webp`:return`image/webp`;case`bmp`:return`image/bmp`;case`ico`:return`image/x-icon`;case`avif`:return`image/avif`;case`pdf`:return`application/pdf`;default:return`text/plain`}}function Ae(e){let t=Oe(e);return Ee.has(t)?`image`:De.has(t)?`pdf`:`text`}function je(e){let t=new Uint8Array(e,0,Math.min(e.byteLength,8e3));for(let e=0;e<t.length;e+=1)if(t[e]===0)return!0;return!1}function q(e){let t=new Uint8Array(e),n=32768,r=``;for(let e=0;e<t.length;e+=n)r+=String.fromCharCode.apply(null,t.subarray(e,e+n));return btoa(r)}function Me(e){let{data:t}=I(),n=j(),{data:r}=we(),i=G(e=>e.count),a=t?.id,o=t?.conversation_url,c=t?.session_api_key,l=t?.selected_repository,u=t?.workspace?.working_dir?.trim(),d=r?.baseUrl,f=m().backend.kind===`cloud`,p=U(l,u),h=p.startsWith(`/`)?p:`/${p}`,g=e?`${h}/${e}`:null;return s({queryKey:[`workspace-file-content`,a,o,c,f?`cloud`:d,e,g,i],queryFn:async()=>{if(!e)throw Error(`No path`);let t=Ae(e),n=ke(e);if(f){let r=await se(a,g);if(t===`text`){let t=new TextEncoder().encode(r);return je(t.buffer)?{path:e,kind:`binary`,text:null,staticUrl:`data:application/octet-stream;base64,${q(t.buffer)}`,mimeType:`application/octet-stream`}:{path:e,kind:`text`,text:r,staticUrl:`data:${n};charset=utf-8;base64,${q(t.buffer)}`,mimeType:n}}return{path:e,kind:t,text:null,staticUrl:`data:${n};base64,${q(new TextEncoder().encode(r).buffer)}`,mimeType:n}}if(!d)throw Error(`No workspace session`);let r=Te(d,e);if(t!==`text`)return{path:e,kind:t,text:null,staticUrl:r,mimeType:n};let i=await fetch(r,{credentials:`include`});if(!i.ok)throw Error(`Failed to read ${e}: ${i.status}`);let o=await i.arrayBuffer();return je(o)?{path:e,kind:`binary`,text:null,staticUrl:r,mimeType:`application/octet-stream`}:{path:e,kind:`text`,text:new TextDecoder(`utf-8`,{fatal:!1}).decode(o),staticUrl:r,mimeType:n}},enabled:n&&!!a&&!!e&&(f||!!d),retry:!1,staleTime:1e3*5,gcTime:1e3*60,meta:{disableToast:!0}})}function Ne(){let{data:e,isLoading:t}=I(),n=e?.id?ae(e.id):null;return{hasAttachedSource:!!e?.selected_repository||!!n?.selected_workspace,isLoading:t}}function Pe(e){let{data:t}=I(),n=j(),{backend:r}=p(),i=r.kind===`local`,a=t?.id,o=t?.conversation_url,c=t?.session_api_key,l=t?.workspace?.working_dir?.trim(),u=(e?.enabled??!0)&&i&&n&&!!a&&!!l,d=s({queryKey:[`has-git-commits`,a,o,c,l],queryFn:async()=>(await _e.executeCommand(o,c,`git rev-parse --verify HEAD`,l,10)).exit_code===0,enabled:u,retry:!1,staleTime:6e4,gcTime:5*6e4,meta:{disableToast:!0}});return{hasCommits:d.data??null,isLoading:d.isLoading}}var Fe=new Set([`FileEditorObservation`,`StrReplaceEditorObservation`,`PlanningFileEditorObservation`]),Ie=new Set([`view`]),Le=new Set([`ExecuteBashObservation`,`TerminalObservation`]);function Re(e){let t=e.observation;return!(!t||typeof t.kind!=`string`||!Fe.has(t.kind)||t.command&&Ie.has(t.command))}function ze(e){let t=e.observation;return!!t&&typeof t.kind==`string`&&Le.has(t.kind)}function Be(){let e=r(),t=ue(e=>e.events),n=G(e=>e.bump),i=(0,V.useRef)(new Set),a=(0,V.useRef)(new WeakSet);(0,V.useEffect)(()=>{let r=!1,o=!1;for(let e of t){let t=`id`in e?e.id:void 0;(t===void 0?a.current.has(e):i.current.has(t))||(t===void 0?a.current.add(e):i.current.add(t),Re(e)?r=!0:ze(e)&&(o=!0))}!r&&!o||(e.invalidateQueries({queryKey:[`file_changes`]}),e.invalidateQueries({queryKey:[`file_diff`]}),e.invalidateQueries({queryKey:[`git_commits`]}),r&&(e.invalidateQueries({queryKey:[`workspace-files`]}),e.invalidateQueries({queryKey:[`workspace-file-content`]}),n()))},[t,e,n])}function J(e){return e.startsWith(`/`)?e:`/${e}`}async function Y(e,t,n,r){let i=m().backend;if(i.kind===`cloud`&&e){let a=new URLSearchParams({...r,path:J(r.path)});return N({backend:i,method:`GET`,hostOverride:h(e),path:`${n}?${a.toString()}`,authMode:`session-api-key`,sessionApiKey:t??void 0})}return(await new M(l({conversationUrl:e,sessionApiKey:t})).client.get(n,{params:r})).data}function Ve(e){return u(e,404)||o(e)&&e.response?.status===404}var X=class{static async getGitChanges(e,t,n,r){let i=m().backend;if(i.kind===`cloud`&&e){let t=new URLSearchParams;t.set(`path`,J(r));let n=await N({backend:i,method:`GET`,path:`/api/v1/app-conversations/${e}/git/changes?${t.toString()}`});if(!Array.isArray(n))throw Error(`Invalid response from runtime - runtime may be unavailable`);return n.map(e=>({status:P(String(e.status)),path:e.path}))}let a=await new M(l({conversationUrl:t,sessionApiKey:n})).gitChanges(r);if(!Array.isArray(a))throw Error(`Invalid response from runtime - runtime may be unavailable`);return a.map(e=>({status:P(String(e.status)),path:e.path}))}static async getGitCommits(e,t,n,r=50){try{let i=await Y(e,t,`/api/git/commits`,{path:n,limit:String(r)});return{commits:(i?.commits??[]).map(e=>({sha:e.sha,shortSha:e.short_sha,subject:e.subject,author:e.author,timestamp:e.timestamp})),hasMore:!!i?.has_more}}catch(e){if(Ve(e))return null;throw e}}static async getCommitChanges(e,t,n,r){let i=await Y(e,t,`/api/git/commits/${encodeURIComponent(r)}/changes`,{path:n});if(!Array.isArray(i))throw Error(`Invalid response from runtime - runtime may be unavailable`);return i.map(e=>({status:P(String(e.status)),path:e.path}))}static async getGitChangeDiff(e,t,n,r,i){if(i){let e=await Y(t,n,`/api/git/diff`,{path:r,commit:i});return{modified:e?.modified??``,original:e?.original??``,...e?.diff?{diff:e.diff}:{}}}let a=m().backend;if(a.kind===`cloud`&&e){let t=new URLSearchParams;t.set(`path`,J(r));let n=await N({backend:a,method:`GET`,path:`/api/v1/app-conversations/${e}/git/diff?${t.toString()}`});return{modified:n?.modified??``,original:n?.original??``,...n?.diff?{diff:n.diff}:{}}}let o=await new M(l({conversationUrl:t,sessionApiKey:n})).gitDiff(r);return{modified:o.modified??``,original:o.original??``,...o.diff?{diff:o.diff}:{}}}},He=()=>{let{conversationId:e}=L(),{data:t}=I(),[n,r]=V.useState([]),i=V.useRef(null),a=j(),o=t?.conversation_url,c=t?.session_api_key,l=t?.selected_repository,u=t?.workspace?.working_dir?.trim(),d=V.useMemo(()=>U(l,u),[l,u]),f=s({queryKey:[`file_changes`,e,o,c,d],queryFn:async()=>{if(!e)throw Error(`No conversation ID`);return X.getGitChanges(e,o,c,d)},retry:!1,staleTime:1e3*60*5,gcTime:1e3*60*15,refetchOnMount:`always`,enabled:a&&!!e,meta:{disableToast:!0}});return V.useEffect(()=>{if(!f.isFetching&&f.isSuccess&&f.data){let e=f.data;if(e!==i.current)if(i.current=e,Array.isArray(e)){let t=new Set(e.map(e=>e.path)),i=new Set(n.map(e=>e.path)),a=e.filter(e=>!i.has(e.path)),o=n.filter(e=>t.has(e.path));r([...a,...o])}else r([e])}},[f.isFetching,f.isSuccess,f.data]),{data:n,isLoading:f.isLoading,isFetching:f.isFetching,isSuccess:f.isSuccess,isError:f.isError,error:f.error,refetch:f.refetch}},Ue=[`index.html`,`index.htm`,`readme.md`,`readme`,`main.html`,`app.html`,`index.js`,`index.ts`,`index.tsx`,`index.jsx`,`main.py`,`app.py`,`main.go`,`main.rs`,`main.java`,`main.c`,`main.cpp`,`package.json`,`pyproject.toml`,`cargo.toml`,`go.mod`,`pom.xml`,`dockerfile`,`makefile`],We=[`license`,`license.md`,`license.txt`,`changelog.md`,`agents.md`,`tsconfig.json`,`.env.sample`,`.env.example`];function Ge(e){let t=e.lastIndexOf(`/`);return(t===-1?e:e.slice(t+1)).toLowerCase()}function Ke(e){return e.split(`/`).filter(Boolean).length-1}function qe(e){let t=Ge(e),n=Ue.indexOf(t);if(n!==-1)return n;let r=We.indexOf(t);return r===-1?1e4:1e3+r}function Je(e){return[...e].sort((e,t)=>{let n=Ke(e)-Ke(t);if(n!==0)return n;let r=qe(e)-qe(t);return r===0?e.localeCompare(t):r})}function Ye({paths:e,selectedPath:t,onSelectFile:n,isTreeVisible:r,onToggleTree:a}){let{t:o}=i(`openhands`),s=(0,V.useMemo)(()=>Je(e),[e]);return(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b border-[var(--oh-border)] px-2 py-1.5 min-h-[34px]`,"data-testid":`file-quick-row`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:a,"data-testid":`file-quick-row-tree-toggle`,"aria-pressed":r,"aria-label":o(r?y.FILES$HIDE_FILE_TREE:y.FILES$SHOW_FILE_TREE),title:o(r?y.FILES$HIDE_FILE_TREE:y.FILES$SHOW_FILE_TREE),className:v(`shrink-0 inline-flex items-center justify-center w-6 h-6 rounded-md cursor-pointer`,`text-[var(--oh-text-tertiary)] hover:bg-tertiary`,r&&`bg-[var(--oh-surface-raised)]`),children:(0,H.jsx)(T,{className:`w-3 h-3`,"aria-hidden":!0,strokeWidth:2})}),s.length>0&&(0,H.jsx)(`div`,{className:`flex flex-nowrap items-center gap-1.5 overflow-hidden flex-1 min-w-0`,children:s.map(e=>{let r=t===e;return(0,H.jsx)(`button`,{type:`button`,onClick:()=>n(e),title:e,"data-testid":`file-quick-row-item-${e}`,className:v(`inline-flex items-center px-2 py-0.5 text-xs whitespace-nowrap rounded-md cursor-pointer`,r?`bg-[var(--oh-interactive-hover)] text-white`:`bg-[var(--oh-surface-raised)] text-[var(--oh-text-tertiary)] hover:bg-tertiary`),children:e},e)})})]})}var Xe=new Set([`html`,`htm`,`svg`]),Ze={pptx:`PowerPoint`,ppt:`PowerPoint`,docx:`Word`,doc:`Word`,xlsx:`Excel`,xls:`Excel`};function Qe(e){let t=e.lastIndexOf(`.`);return t===-1?``:e.slice(t+1).toLowerCase()}function Z({path:e}){let{t}=i(`openhands`),n=Ze[Qe(e)];return(0,H.jsx)(`div`,{className:`flex h-full w-full items-center justify-center text-sm text-[var(--oh-muted)]`,"data-testid":n?`file-content-viewer-unsupported-document`:`file-content-viewer-binary-fallback`,children:n?t(y.FILES$UNSUPPORTED_DOCUMENT,{type:n}):t(y.FILES$BINARY_FALLBACK)})}function $e({path:e,viewMode:t}){let{t:n}=i(`openhands`),r=Me(e),a=G(e=>e.count);if(r.isLoading)return(0,H.jsx)(`div`,{className:`flex h-full w-full items-center justify-center text-sm text-[var(--oh-muted)]`,children:n(y.FILES$LOADING_FILES)});if(r.isError||!r.data)return(0,H.jsx)(`div`,{className:`flex h-full w-full items-center justify-center text-sm text-[var(--oh-muted)]`,"data-testid":`file-content-viewer-error`,children:r.error?.message??n(y.FILES$LOAD_ERROR)});let{kind:o,text:s,staticUrl:c,mimeType:l}=r.data,u=K(c,a);return t===`plain`?o===`text`&&s!==null?(0,H.jsx)(z,{path:e,text:s,mimeType:l??void 0}):(0,H.jsx)(Z,{path:e}):o===`image`?(0,H.jsx)(`div`,{className:`flex h-full w-full items-center justify-center bg-[var(--oh-surface)] p-4`,"data-testid":`file-content-viewer-image`,children:(0,H.jsx)(`img`,{src:u,alt:e,className:`max-h-full max-w-full object-contain`})}):o===`pdf`?(0,H.jsx)(`iframe`,{title:e,src:u,sandbox:`allow-same-origin`,"data-testid":`file-content-viewer-iframe`,className:`h-full w-full bg-white`}):o===`binary`?(0,H.jsx)(Z,{path:e}):l===`text/html`||Xe.has(Qe(e))?(0,H.jsx)(`iframe`,{title:e,src:u,sandbox:`allow-same-origin`,"data-testid":`file-content-viewer-iframe`,className:`h-full w-full bg-white`}):o===`text`&&S(e)?(0,H.jsx)(`div`,{"data-testid":`file-content-viewer-markdown`,className:`h-full w-full overflow-auto bg-[var(--oh-surface)] text-white custom-scrollbar-always [--oh-scroll-fade-from:var(--oh-surface)]`,children:(0,H.jsx)(`div`,{className:`prose prose-sm prose-invert max-w-none p-6 [--tw-prose-body:#fff] [--tw-prose-bold:#fff] [--tw-prose-headings:#fff] [--tw-prose-lead:#fff] [--tw-prose-counters:#fff] [--tw-prose-quotes:#fff] [--tw-prose-quote-borders:var(--oh-border-subtle)] [--tw-prose-bullets:var(--oh-muted)] [--tw-prose-hr:var(--oh-border-subtle)] [--tw-prose-captions:var(--oh-muted)] [--tw-prose-kbd:#fff]`,children:(0,H.jsx)(pe,{content:s??``,includeStandard:!0,includeHeadings:!0})})}):o===`text`&&s!==null?(0,H.jsx)(z,{path:e,text:s,mimeType:l??void 0}):(0,H.jsx)(Z,{path:e})}var et=e=>(0,H.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 13 15`,fill:`none`,...e,children:(0,H.jsx)(`path`,{d:`M6.59467 0.21967C6.88756 -0.0732233 7.36244 -0.0732233 7.65533 0.21967L9.90533 2.46967C10.1982 2.76256 10.1982 3.23744 9.90533 3.53033L7.65533 5.78033C7.36244 6.07322 6.88756 6.07322 6.59467 5.78033C6.30178 5.48744 6.30178 5.01256 6.59467 4.71967L7.56434 3.75H6.375C3.71421 3.75 1.5 5.96421 1.5 8.625C1.5 11.2858 3.71421 13.5 6.375 13.5C9.03579 13.5 11.25 11.2858 11.25 8.625C11.25 8.21079 11.5858 7.875 12 7.875C12.4142 7.875 12.75 8.21079 12.75 8.625C12.75 12.1142 9.86421 15 6.375 15C2.88579 15 0 12.1142 0 8.625C0 5.13579 2.88579 2.25 6.375 2.25H7.56434L6.59467 1.28033C6.30178 0.987437 6.30178 0.512563 6.59467 0.21967Z`,fill:`currentColor`})}),tt=()=>{let{conversationId:e}=L(),{data:t}=I(),n=j(),r=t?.conversation_url,i=t?.session_api_key,a=t?.selected_repository,o=t?.workspace?.working_dir?.trim(),c=V.useMemo(()=>U(a,o),[a,o]),l=s({queryKey:[`git_commits`,e,r,i,c],queryFn:async()=>{if(!e)throw Error(`No conversation ID`);return X.getGitCommits(r,i,c,50)},retry:!1,staleTime:1e3*60*5,gcTime:1e3*60*15,refetchOnMount:`always`,enabled:n&&!!e,meta:{disableToast:!0}});return{commits:l.data?.commits??[],hasMore:l.data?.hasMore??!1,isUnsupported:l.data===null,isLoading:l.isLoading,isFetching:l.isFetching,isSuccess:l.isSuccess,isError:l.isError}},nt=e=>(0,H.jsx)(`svg`,{width:13,height:8,viewBox:`0 0 13 8`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,H.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M0.259766 6.17427L6.26425 0.715628L12.2688 6.17427L11.2597 7.28418L6.26425 2.74282L1.26878 7.28418L0.259766 6.17427Z`,fill:`currentColor`})}),rt=e=>{let{conversationId:t}=L(),{data:n}=I(),r=n?.conversation_url,i=n?.session_api_key,a=n?.selected_repository,o=n?.workspace?.working_dir?.trim(),c=V.useMemo(()=>`${U(a,o)}/${e.filePath}`,[a,e.filePath,o]),l=e.type===`D`;return s({queryKey:e.commit?[`commit_file_diff`,t,r,i,e.commit,c]:[`file_diff`,t,r,i,c],queryFn:async()=>{if(!t)throw Error(`No conversation ID`);return X.getGitChangeDiff(t,r,i,c,e.commit)},enabled:e.enabled&&(!l||!!e.commit),staleTime:e.commit?1/0:1e3*60*5,gcTime:1e3*60*15})};function it({className:e}){let{t}=i(`openhands`);return(0,H.jsx)(`div`,{className:`flex items-center justify-center`,children:(0,H.jsx)(`div`,{className:v(`animate-spin rounded-full border-4 border-transparent border-t-white`,e),role:`status`,"aria-label":t(y.HOME$LOADING)})})}function at({height:e,children:t}){return(0,H.jsx)(`div`,{"data-testid":`editor-container`,className:`w-full border-b border-[var(--oh-border)] overflow-hidden h-[var(--editor-height)]`,style:{"--editor-height":`${e}px`},children:t})}var ot=[{mode:`old`,icon:D},{mode:`diff`,icon:C},{mode:`new`,icon:k}],st={renderValidationDecorations:`off`,readOnly:!0,scrollBeyondLastLine:!1,minimap:{enabled:!1},automaticLayout:!0,scrollbar:{alwaysConsumeMouseWheel:!1}},ct={A:w,D:O,M:E,R:`Renamed`,U:`Untracked`},lt=e=>{e.editor.defineTheme(`custom-diff-theme`,{base:`vs-dark`,inherit:!0,rules:[{token:`comment`,foreground:`6a9955`},{token:`keyword`,foreground:`569cd6`},{token:`string`,foreground:`ce9178`},{token:`number`,foreground:`b5cea8`}],colors:{"diffEditor.insertedTextBackground":`#014b01AA`,"diffEditor.removedTextBackground":`#750000AA`,"diffEditor.insertedLineBackground":`#003f00AA`,"diffEditor.removedLineBackground":`#5a0000AA`,"diffEditor.border":`var(--oh-border-subtle)`,"editorUnnecessaryCode.border":`#00000000`,"editorUnnecessaryCode.opacity":`rgba(0, 0, 0, 0.467)`}})};function ut({path:e,type:t,commit:n}){let{t:r}=i(`openhands`),[a,o]=V.useState(!0),[s,c]=V.useState(400),[l,u]=V.useState(`diff`),d=V.useRef(null),f=V.useRef(null),p=t===`A`||t===`U`,m=t===`D`,h=V.useMemo(()=>{if(t===`R`){let t=e.split(/\s+/).slice(1);return t[t.length-1]}return e},[e,t]),{data:g,isLoading:_,isSuccess:x,isRefetching:S}=rt({filePath:h,type:t,enabled:!a,commit:n}),C=V.useCallback(()=>{if(!d.current)return;let e=d.current.getOriginalEditor(),t=d.current.getModifiedEditor();e&&t&&c(Math.max(e.getContentHeight(),t.getContentHeight())+20)},[]),w=V.useCallback(()=>{f.current&&c(f.current.getContentHeight()+20)},[]),T=e=>{d.current=e,C(),e.getOriginalEditor().onDidContentSizeChange(C),e.getModifiedEditor().onDidContentSizeChange(C)},E=e=>{f.current=e,w(),e.onDidContentSizeChange(w)},D=(t===`U`?ct.A:ct[t])||`?`,O=typeof D==`string`?(0,H.jsx)(le.Text,{children:D}):V.createElement(D,{className:`w-5 h-5`}),k=_||S,A=b(h),j=A===`markdown`,M=l===`old`?g?.original??``:g?.modified??``;return(0,H.jsxs)(`div`,{"data-testid":`file-diff-viewer-outer`,className:`w-full flex flex-col`,children:[(0,H.jsx)(`div`,{className:`flex justify-between items-center px-3 py-2.5 border-b border-[var(--oh-border)] hover:cursor-pointer`,onClick:()=>o(e=>!e),children:(0,H.jsxs)(`span`,{className:`text-sm w-full text-content flex items-center gap-2`,children:[k?(0,H.jsx)(it,{className:`w-4 h-4`}):O,(0,H.jsx)(`strong`,{className:`w-full truncate font-medium`,children:h}),!a&&!m&&(0,H.jsx)(`span`,{className:`flex items-center gap-0.5 shrink-0`,onClick:e=>e.stopPropagation(),children:ot.map(({mode:e,icon:t})=>(0,H.jsx)(`button`,{"data-testid":`view-mode-${e}`,type:`button`,"aria-pressed":l===e,onClick:()=>u(e),className:v(`p-1 rounded transition-colors cursor-pointer`,l===e?`bg-[var(--oh-interactive-hover)] text-white`:`text-[var(--oh-muted)] hover:bg-[var(--oh-interactive-hover)] hover:text-white`),children:(0,H.jsx)(t,{className:`w-4 h-4`})},e))}),(0,H.jsx)(`button`,{"data-testid":`collapse`,type:`button`,children:(0,H.jsx)(nt,{className:v(`w-4 h-4 transition-transform`,a&&`transform rotate-180`)})})]})}),!a&&m&&!n&&(0,H.jsx)(`div`,{"data-testid":`file-deleted-message`,className:`w-full border-b border-[var(--oh-border)] p-4 bg-base text-[var(--oh-text-dim)] text-sm`,children:r(y.DIFF_VIEWER$FILE_DELETED)}),!a&&(!m||!!n)&&x&&(l===`diff`?(0,H.jsx)(at,{height:s,children:(0,H.jsx)(ee,{"data-testid":`file-diff-viewer`,className:`w-full h-full`,language:A,original:p?``:g?.original??``,modified:m?``:g?.modified??``,theme:`custom-diff-theme`,onMount:T,beforeMount:lt,options:{...st,renderSideBySide:!p&&!m,hideUnchangedRegions:{enabled:!0}}})}):j?(0,H.jsx)(`div`,{className:`w-full border-b border-[var(--oh-border)] overflow-auto p-4 bg-base prose prose-invert max-w-none`,"data-testid":`markdown-preview`,children:(0,H.jsx)(pe,{content:M,includeStandard:!0,includeHeadings:!0})}):(0,H.jsx)(at,{height:s,children:(0,H.jsx)(te,{"data-testid":`file-single-viewer`,className:`w-full h-full`,language:A,value:M,theme:`custom-diff-theme`,beforeMount:lt,onMount:E,options:st})}))]})}function Q(){return(0,H.jsx)(E,{"aria-hidden":!0,className:`size-full`})}function dt(){let{t:e}=i(`openhands`);return(0,H.jsx)(B,{icon:(0,H.jsx)(Q,{}),children:e(y.DIFF_VIEWER$NO_CHANGES)})}var ft=[{key:y.TIPS$CUSTOMIZE_MICROAGENT,link:`https://docs.all-hands.dev/usage/prompting/microagents-repo`},{key:y.TIPS$SETUP_SCRIPT,link:`https://docs.all-hands.dev/usage/prompting/repository#setup-script`},{key:y.TIPS$VSCODE_INSTANCE},{key:y.TIPS$SAVE_WORK},{key:y.TIPS$SPECIFY_FILES,link:`https://docs.all-hands.dev/usage/prompting/prompting-best-practices`},{key:y.TIPS$HEADLESS_MODE,link:`https://docs.all-hands.dev/usage/how-to/headless-mode`},{key:y.TIPS$CLI_MODE,link:`https://docs.all-hands.dev/usage/how-to/cli-mode`},{key:y.TIPS$GITHUB_HOOK,link:`https://docs.all-hands.dev/usage/cloud/github-installation#working-on-github-issues-and-pull-requests-using-openhands`},{key:y.TIPS$BLOG_SIGNUP,link:`https://www.all-hands.dev/blog`},{key:y.TIPS$API_USAGE,link:`https://docs.all-hands.dev/api-reference/health-check`}];function pt(){return ft[Math.floor(Math.random()*ft.length)]}function mt(){let{t:e}=i(`openhands`),[t,n]=V.useState(pt());return V.useEffect(()=>{n(pt())},[]),(0,H.jsx)(`div`,{className:`w-full bg-tertiary p-4 text-left`,children:(0,H.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,H.jsx)(x,{className:`mt-0.5 h-4 w-4 shrink-0 fill-[var(--oh-muted)]`,"aria-hidden":!0}),(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsx)(`h4`,{className:`text-sm font-semibold text-[var(--oh-text-tertiary)]`,children:e(y.TIPS$PROTIP)}),(0,H.jsxs)(`p`,{className:`text-sm font-normal leading-5 text-[var(--oh-muted)]`,children:[e(t.key),t.link?(0,H.jsxs)(H.Fragment,{children:[` `,(0,H.jsx)(`a`,{href:t.link,target:`_blank`,rel:`noopener noreferrer`,className:`underline transition-colors hover:text-white`,children:e(y.TIPS$LEARN_MORE)})]}):null]})]})]})})}var $=/not a git repository/i,ht=new Set([y.DIFF_VIEWER$WAITING_FOR_RUNTIME,y.DIFF_VIEWER$LOADING]);function gt({messages:e}){let{t}=i(`openhands`);return e.length===1&&ht.has(e[0])?(0,H.jsx)(F,{testId:`changes-tab-status`,messageKey:e[0]}):(0,H.jsx)(B,{icon:(0,H.jsx)(Q,{}),children:e.map(e=>(0,H.jsx)(`span`,{className:`block`,children:t(e)},e))})}function _t(){let{data:e,isSuccess:t,isError:n,error:r,isLoading:i}=He(),[a,o]=V.useState(null),{curAgentState:s}=fe(),l=!_.includes(s),u=r&&$.test(c(r));return V.useEffect(()=>{if(!l)o([y.DIFF_VIEWER$WAITING_FOR_RUNTIME]);else if(r){let e=c(r);$.test(e)?o([y.DIFF_VIEWER$NOT_A_GIT_REPO,y.DIFF_VIEWER$ASK_OH]):o([e])}else o(i?[y.DIFF_VIEWER$LOADING]:null)},[l,u,i,r,o]),(0,H.jsx)(`main`,{className:`h-full w-full flex flex-col items-stretch`,children:!t||!e.length?(0,H.jsxs)(`div`,{className:`flex flex-col h-full w-full`,children:[(0,H.jsxs)(`div`,{className:`flex-1 flex items-center justify-center`,children:[a&&(0,H.jsx)(gt,{messages:a}),!a&&t&&e.length===0&&(0,H.jsx)(dt,{})]}),!n&&t&&e.length===0&&(0,H.jsx)(mt,{})]}):(0,H.jsx)(`div`,{className:`h-full overflow-y-auto flex flex-col items-stretch custom-scrollbar-always`,children:e.slice(0,100).map(e=>(0,H.jsx)(ut,{path:e.path,type:e.status},e.path))})})}var vt=(e,t)=>{let{conversationId:n}=L(),{data:r}=I(),i=j(),a=r?.conversation_url,o=r?.session_api_key,c=r?.selected_repository,l=r?.workspace?.working_dir?.trim(),u=V.useMemo(()=>U(c,l),[c,l]);return s({queryKey:[`commit_changes`,n,a,o,u,e],queryFn:async()=>{if(!n)throw Error(`No conversation ID`);return X.getCommitChanges(a,o,u,e)},staleTime:1/0,gcTime:1e3*60*15,retry:!1,enabled:t.enabled&&i&&!!n,meta:{disableToast:!0}})};function yt({commit:e,showAuthor:t,isExpanded:n,onToggle:r}){let{t:a}=i(`openhands`),{data:o,isLoading:s,isSuccess:c}=vt(e.sha,{enabled:n});return(0,H.jsxs)(`div`,{"data-testid":`commit-row`,className:`w-full flex flex-col`,children:[(0,H.jsxs)(`button`,{type:`button`,onClick:r,"aria-expanded":n,"data-testid":`commit-row-toggle`,className:`w-full flex items-center gap-2 px-3 py-2.5 border-b border-[var(--oh-border)] text-sm text-content text-left hover:cursor-pointer`,children:[(0,H.jsx)(`code`,{className:`font-mono text-xs text-[var(--oh-muted)] flex-shrink-0`,children:e.shortSha}),(0,H.jsx)(`strong`,{className:`flex-1 truncate font-medium`,children:e.subject}),t&&(0,H.jsx)(`span`,{className:`text-xs text-[var(--oh-muted)] truncate max-w-32 flex-shrink-0`,children:e.author}),(0,H.jsx)(`span`,{className:`text-xs text-[var(--oh-muted)] flex-shrink-0`,children:`${ce(e.timestamp)} ${a(y.CONVERSATION$AGO)}`}),(0,H.jsx)(nt,{className:v(`w-4 h-4 transition-transform flex-shrink-0`,!n&&`transform rotate-180`)})]}),n&&(0,H.jsxs)(`div`,{"data-testid":`commit-row-content`,className:`w-full flex flex-col pl-6`,children:[s&&(0,H.jsx)(`div`,{className:`p-3`,children:(0,H.jsx)(it,{className:`w-4 h-4`})}),c&&o?.map(t=>(0,H.jsx)(ut,{path:t.path,type:t.status,commit:e.sha},t.path))]})]})}function bt({commits:e,hasMore:t}){let{t:n}=i(`openhands`),[r,a]=V.useState(null),o=new Set(e.map(e=>e.author)).size>1;return(0,H.jsxs)(`section`,{"data-testid":`commit-list`,className:`w-full flex flex-col`,children:[e.map(e=>(0,H.jsx)(yt,{commit:e,showAuthor:o,isExpanded:r===e.sha,onToggle:()=>a(t=>t===e.sha?null:e.sha)},e.sha)),t&&(0,H.jsx)(`div`,{"data-testid":`commit-list-cap-notice`,className:`px-3 py-2.5 text-xs text-[var(--oh-muted)]`,children:n(y.DIFF_VIEWER$COMMITS_CAP,{count:e.length})})]})}function xt(){let{t:e}=i(`openhands`),{conversationId:t}=L(),{commits:n,hasMore:r,isUnsupported:a,isLoading:o,isSuccess:s}=tt(),{curAgentState:c}=fe(),l=!_.includes(c);return(0,H.jsx)(`main`,{className:`h-full w-full flex flex-col items-stretch`,children:s&&!a&&n.length>0?(0,H.jsx)(`div`,{className:`h-full overflow-y-auto flex flex-col items-stretch custom-scrollbar-always`,children:(0,H.jsx)(bt,{commits:n,hasMore:r},t)}):(0,H.jsxs)(`div`,{className:`flex-1 flex items-center justify-center`,children:[!l&&(0,H.jsx)(F,{testId:`commits-tab-status`,messageKey:y.DIFF_VIEWER$WAITING_FOR_RUNTIME}),l&&o&&(0,H.jsx)(F,{testId:`commits-tab-status`,messageKey:y.DIFF_VIEWER$LOADING}),l&&!o&&(0,H.jsx)(B,{icon:(0,H.jsx)(Q,{}),children:e(y.DIFF_VIEWER$NO_COMMITS)})]})})}function St(){let{t:e}=i(`openhands`);Be();let{hasAttachedSource:t,isLoading:n}=Ne(),{hasCommits:a}=Pe({enabled:t}),{conversationId:o}=de(),{state:s,setFilesTabDiffView:c,setFilesTabContentViewMode:l}=ne(o??``),u=(t||n)&&a!==!1,d=s.filesTabDiffView??u,f=s.filesTabContentViewMode,{isSuccess:p,isUnsupported:m}=tt(),h=p&&!m,[g,_]=(0,V.useState)(!1),v=d?`on`:`off`;g&&h&&(v=`commits`);let[b,x]=(0,V.useState)(!1),S=Ce(),C=(0,V.useMemo)(()=>S.data??[],[S.data]),ee=R(e=>e.selectedPath),w=R(e=>e.selectedConversationId),T=R(e=>e.setSelectedPath),E=w===o?ee:null,D=(0,V.useCallback)(e=>T(e,o),[o,T]),O=Me(E),te=G(e=>e.count),k=K(O.data?.staticUrl??null,te);(0,V.useEffect)(()=>{w!==o&&T(null,o)},[w,o,T]),(0,V.useEffect)(()=>{if(E||C.length===0)return;let[e]=Je(C);e&&T(e,o)},[C,E,o,T]);let A=r(),{refetch:j,isFetching:M}=He(),N=()=>{j(),A.invalidateQueries({queryKey:[`workspace-files`]}),A.invalidateQueries({queryKey:[`workspace-file-content`]}),A.invalidateQueries({queryKey:[`git_commits`]})};return(0,H.jsxs)(`main`,{className:`h-full w-full flex flex-col items-stretch`,"data-testid":`files-tab`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-3 px-3 py-1.5 border-b border-[var(--oh-border)]`,children:[(0,H.jsx)(ie,{ariaLabel:e(y.FILES$DIFF_VIEW),testId:`files-tab-diff-toggle`,value:v,options:[{value:`on`,label:e(y.FILES$DIFF_VIEW)},...h?[{value:`commits`,label:e(y.DIFF_VIEWER$COMMITS)}]:[],{value:`off`,label:e(y.COMMON$FILES)}],onChange:e=>{e===`commits`?_(!0):(_(!1),c(e===`on`))}}),v===`off`&&(0,H.jsx)(ie,{ariaLabel:e(y.FILES$RICH),testId:`files-tab-content-mode-toggle`,value:f,options:[{value:`rich`,label:e(y.FILES$RICH)},{value:`plain`,label:e(y.FILES$PLAIN)}],onChange:l}),(0,H.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[v===`off`&&k&&(0,H.jsx)(`a`,{href:k,target:`_blank`,rel:`noopener noreferrer`,"aria-label":e(y.FILES$OPEN_IN_NEW_WINDOW),title:e(y.FILES$OPEN_IN_NEW_WINDOW),"data-testid":`files-tab-open-in-new-window`,className:`flex items-center justify-center w-[26px] py-1 rounded-[7px] hover:bg-[var(--oh-interactive-hover)] cursor-pointer text-white`,children:(0,H.jsx)(me,{width:14,height:14})}),(0,H.jsx)(`button`,{type:`button`,onClick:N,disabled:M,"aria-label":e(y.FILES$REFRESH),title:e(y.FILES$REFRESH),"data-testid":`files-tab-refresh`,className:`flex items-center justify-center w-[26px] py-1 rounded-[7px] hover:enabled:bg-[var(--oh-interactive-hover)] cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed`,children:(0,H.jsx)(et,{width:12.75,height:15,color:`#ffffff`,className:M?`animate-spin`:``})})]})]}),v===`on`&&(0,H.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,H.jsx)(_t,{})}),v===`commits`&&(0,H.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,H.jsx)(xt,{})}),v===`off`&&(0,H.jsx)(`div`,{className:`flex flex-1 flex-col min-h-0`,children:S.isLoading?(0,H.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-sm text-[var(--oh-muted)]`,children:e(y.FILES$LOADING_FILES)}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(Ye,{paths:C,selectedPath:E,onSelectFile:D,isTreeVisible:b,onToggleTree:()=>x(e=>!e)}),(0,H.jsxs)(`div`,{className:`flex h-full min-h-0 flex-1`,children:[b&&(0,H.jsx)(`aside`,{className:`w-56 shrink-0 border-r border-[var(--oh-border)] overflow-y-auto custom-scrollbar-always`,"data-testid":`files-tab-tree`,children:(0,H.jsx)(he,{paths:C,selectedPath:E,onSelectFile:D})}),(0,H.jsx)(`section`,{className:`flex h-full min-h-0 min-w-0 flex-1 flex-col`,"data-testid":`files-tab-content`,children:E?(0,H.jsx)($e,{path:E,viewMode:f}):(0,H.jsx)(ge,{})})]})]})})]})}export{St as default};
@@ -1 +0,0 @@
1
- import{t as e}from"./utils-DUD5ScdA.js";var t=`h-9 min-h-9`,n=`rounded-lg`,r=`border border-[var(--oh-border)]`,i=`bg-base-secondary`,a=`duration-75`,o=`!duration-75`,s=`motion-reduce:transition-none`,c=e(`transition-[background-color,border-color,box-shadow,opacity]`,a,s),l=e(`!transition-[background-color,border-color,box-shadow,opacity]`,o,s),u=e(`transition-[transform] ease`,a,s),d=`hover:text-white hover:bg-white/10`,f=e(`inline-flex items-center gap-1 rounded-[100px] border border-transparent px-1.5`,`text-sm font-normal leading-5 text-[var(--oh-muted)] whitespace-nowrap min-w-0 cursor-pointer`,c,d),p=e(`flex items-center justify-center rounded-full text-[var(--oh-muted)] cursor-pointer`,c,d),m=`focus:border-white/40 focus:ring-1 focus:ring-white/20 focus:outline-none`,h=`focus-within:border-white/40 focus-within:ring-1 focus-within:ring-white/20`,g=`disabled:cursor-not-allowed disabled:opacity-60`,_=e(t,n,r,i,c,m,g,`w-full min-w-0 px-3 text-sm text-white placeholder:text-tertiary-alt`),v=e(_,`placeholder:italic`,l),y=e(n,r,i,c,m,g,`w-full min-w-0 px-3 py-2 text-sm text-white placeholder:text-tertiary-alt`),b=e(t,`relative flex min-w-0 items-center`,n,r,i,c,h),x=e(`min-w-0 flex-1 border-0 bg-transparent px-3 text-sm outline-none`,`placeholder:text-tertiary-alt`,`[&::-webkit-search-cancel-button]:hidden`),S=e(t,`inline-flex w-fit cursor-pointer items-center justify-center gap-2 px-3`,n,c,`text-sm font-normal disabled:cursor-not-allowed disabled:opacity-30`),C=`pl-12`;e(S,r,i,`shrink-0 text-white`);var w=e(`inline-flex items-center gap-2 self-start rounded-lg p-2`,`text-sm font-normal leading-5 text-[var(--oh-muted)] cursor-pointer`,c,`hover:bg-tertiary hover:text-white`);export{c as _,S as a,x as c,n as d,v as f,u as g,C as h,r as i,y as l,i as m,f as n,g as o,b as p,w as r,_ as s,p as t,d as u};
@@ -1 +0,0 @@
1
- var e=`Free`,t={"openhands/kimi-k3":`OpenHands Kimi K3 (free)`,"openhands/glm-5.2":`OpenHands GLM-5.2 (free)`,"openhands/deepseek-v4-flash":`OpenHands DeepSeek V4 Flash (free)`,"openhands/minimax-m2.7":`OpenHands MiniMax M2.7 (free)`},n=`Free OpenHands models: ${Object.keys(t).join(`, `)}. Other provider endpoints with similar model names may require separate billing.`,r=e=>!!(e&&e in t);function i(e){return e?r(e)?t[e]:e:null}function a(e){return e?r(e)?t[e]:e.split(`/`).pop()||e:null}export{r as a,a as i,n,i as r,e as t};
@@ -1 +0,0 @@
1
- import"./rolldown-runtime-Cyuzqnbw.js";import{St as e,yt as t}from"./vendor-styling-Ck5D_A2Q.js";import{t as n}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js";import{t as r,z as i}from"./utils-DUD5ScdA.js";import{t as a}from"./loader-circle-D7IagAyF.js";import{t as o}from"./styled-tooltip-B6JXcsmL.js";import{n as s}from"./use-has-permission-CQ31Cl8j.js";import{t as c}from"./automation-C_eCrGyP.js";e();var l=t(),u=e=>(0,l.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,l.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z`})}),d=e=>(0,l.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,l.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`m9.75 9.75 4.5 4.5m0-4.5-4.5 4.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z`})}),f={[c.COMPLETED]:{label:i.AUTOMATIONS$DETAIL$SUCCESSFUL,style:`border-[var(--oh-success)]/50 bg-[var(--oh-success)]/10 text-[var(--oh-success)]`,iconTone:`text-[var(--oh-success)]`},[c.FAILED]:{label:i.AUTOMATIONS$DETAIL$FAILED,style:`border-[var(--oh-danger)]/50 bg-[var(--oh-danger)]/10 text-danger`,iconTone:`text-danger`},[c.PENDING]:{label:i.AUTOMATIONS$DETAIL$PENDING,style:`border-[var(--oh-border)] bg-surface-raised text-muted`,iconTone:`text-muted`},[c.RUNNING]:{label:i.AUTOMATIONS$DETAIL$RUNNING,style:`border-[var(--oh-border)] bg-surface-raised text-muted`,iconTone:`text-muted`},[c.CANCELLED]:{label:i.AUTOMATIONS$DETAIL$CANCELLED,style:`border-[var(--oh-border)] bg-surface-raised text-muted`,iconTone:`text-muted`},[c.SKIPPED]:{label:i.AUTOMATIONS$DETAIL$SKIPPED,style:`border-[var(--oh-border)] bg-surface-raised text-muted`,iconTone:`text-muted`}};function p({status:e,compact:t=!1}){let n=t?`size-3`:`size-3.5`;switch(e){case c.COMPLETED:return(0,l.jsx)(u,{"data-testid":`run-status-icon-completed`,className:n});case c.FAILED:return(0,l.jsx)(d,{"data-testid":`run-status-icon-failed`,className:n});case c.RUNNING:return(0,l.jsx)(a,{"data-testid":`run-status-icon-running`,className:r(n,`animate-spin motion-reduce:animate-none`),"aria-hidden":`true`});default:return(0,l.jsx)(s,{"data-testid":`run-status-icon-pending`,className:n})}}function m({status:e,iconOnly:t=!1,showLabel:i=!1,compact:a=!1}){let{t:s}=n(`openhands`),u=f[e]??f[c.PENDING],d=s(u.label);return t?i?(0,l.jsxs)(`span`,{"data-testid":`run-status-badge-icon`,className:r(`inline-flex min-w-0 shrink-0 items-center gap-1.5 text-xs font-medium`,u.iconTone),children:[(0,l.jsx)(p,{status:e,compact:a}),(0,l.jsx)(`span`,{className:`truncate`,children:d})]}):(0,l.jsx)(o,{content:d,placement:`top`,children:(0,l.jsx)(`span`,{role:`img`,"aria-label":d,"data-testid":`run-status-badge-icon`,className:r(`inline-flex shrink-0 cursor-default items-center justify-center`,u.iconTone),children:(0,l.jsx)(p,{status:e,compact:a})})}):(0,l.jsxs)(`span`,{className:r(`inline-flex items-center rounded-full border font-medium`,a?`gap-1 px-1.5 py-0 text-[10px] leading-4`:`gap-1.5 px-2.5 py-1 text-xs`,u.style),children:[(0,l.jsx)(p,{status:e,compact:a}),d]})}function h(e,t){return new Date(e).toLocaleDateString(t,{year:`numeric`,month:`short`,day:`numeric`})}function g(e,t,n){let r=Date.now()-new Date(e).getTime(),a=Math.floor(r/6e4),o=Math.floor(r/36e5),s=Math.floor(r/864e5);return a<1?n(i.AUTOMATIONS$DETAIL$TIME_JUST_NOW):a<60?n(i.AUTOMATIONS$DETAIL$TIME_MINUTES_AGO,{count:a}):o<24?n(i.AUTOMATIONS$DETAIL$TIME_HOURS_AGO,{count:o}):s===1?n(i.AUTOMATIONS$DETAIL$TIME_YESTERDAY):s<7?n(i.AUTOMATIONS$DETAIL$TIME_DAYS_AGO,{count:s}):h(e,t)}export{u as i,g as n,m as r,h as t};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{n as r}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dcc51rps-rfV8mQ9m.js";import{t as i}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js";import{D as a,T as o}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js";import{t as s}from"./useMutation-6ZsQCqAn.js";import{At as c,dt as l,jt as u,n as d,pt as f}from"./active-backend-context-BZDG15C0.js";import{C as p,i as m,t as h,z as g}from"./utils-DUD5ScdA.js";import{a as _,o as v,t as y}from"./vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-BvS6PCK2.js";import{t as b}from"./use-tracking-Bhu7gk2y.js";import{n as x}from"./navigation-context-CQZwH_tC.js";import{t as S}from"./dist-Bl64nBZL.js";import{n as C}from"./conversation-store-Blc5xysY.js";import{t as w}from"./agent-server-conversation-service.api-DK56YPTs.js";import{d as T,u as E}from"./conversation-state-store-DMLtlHbE.js";var D=a(`folder-open`,[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]),O=a(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),k=n(),A=S(`shrink-0 self-stretch min-w-full bg-[var(--oh-border)]`,{variants:{orientation:{horizontal:`h-[1px]`},color:{light:`bg-[var(--oh-border)]`},size:{thin:`h-[1px]`},inset:{none:``,menu:``}},defaultVariants:{orientation:`horizontal`,color:`light`,size:`thin`,inset:`none`}});function j({orientation:e,color:t,size:n,inset:r,className:i,testId:a}){return r===`menu`?(0,k.jsx)(`div`,{"data-testid":a,role:`separator`,className:h(`relative min-w-full shrink-0 self-stretch`,`h-3`,i),children:(0,k.jsx)(`div`,{"aria-hidden":!0,className:`absolute top-1/2 -left-1 -right-1 h-px -translate-y-1/2 bg-[var(--oh-border)]`})}):(0,k.jsx)(`div`,{"data-testid":a,role:`separator`,className:h(A({orientation:e,color:t,size:n,inset:r}),i)})}var M=e(t(),1);function N(){let e=d();return M.useCallback(t=>l(e.backend)?t:f(t,e),[e])}var P=()=>{let e=r();return s({mutationFn:e=>w.deleteConversation(e.conversationId),onMutate:async t=>{await e.cancelQueries({queryKey:[`user`,`conversations`]});let n=e.getQueryData([`user`,`conversations`]);return e.setQueryData([`user`,`conversations`],e=>e?.filter(e=>e.conversation_id!==t.conversationId)),{previousConversations:n}},onSuccess:(e,t)=>{C(t.conversationId)},onError:(t,n,r)=>{r?.previousConversations&&e.setQueryData([`user`,`conversations`],r.previousConversations)},onSettled:()=>{e.invalidateQueries({queryKey:[`user`,`conversations`]}),e.invalidateQueries({queryKey:[`start-tasks`]})}})},F=()=>{let{t:e}=i(`openhands`),t=r(),{conversationId:n,navigate:a}=x();return s({mutationKey:[`stop-conversation`],mutationFn:async e=>T(e.conversationId),onMutate:async()=>{let n=o.loading(e(g.TOAST$STOPPING_CONVERSATION),c);return await t.cancelQueries({queryKey:[`user`,`conversations`]}),{previousConversations:t.getQueryData([`user`,`conversations`]),toastId:n}},onError:(n,r,i)=>{i?.toastId&&o.dismiss(i.toastId),u(e(g.TOAST$FAILED_TO_STOP_CONVERSATION)),i?.previousConversations&&t.setQueryData([`user`,`conversations`],i.previousConversations)},onSuccess:(r,i,s)=>{s?.toastId&&o.dismiss(s.toastId),o.success(e(g.TOAST$CONVERSATION_STOPPED),c),E(t,i.conversationId,{execution_status:p.PAUSED,sandbox_status:`PAUSED`}),n===i.conversationId&&a(`/conversations`)}})};function I(e){return e===`MISSING`||e===`ERROR`}var L=e=>(0,k.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,k.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M22.1595 5.22752L20.9895 4.95152L17.8275 8.09552L16.0365 6.27152L19.1205 3.03602L18.8505 1.84802C18.1988 1.62999 17.5172 1.51461 16.83 1.50602C16.0804 1.49449 15.3365 1.63746 14.6445 1.92602C13.9764 2.22843 13.3725 2.65616 12.8655 3.18602C12.3011 3.72063 11.8542 4.36683 11.553 5.08352C10.9732 6.50984 10.9732 8.10619 11.553 9.53252C8.42587 12.609 5.3391 15.7263 2.29351 18.8835C1.97851 19.296 1.82851 19.8105 1.86751 20.328C1.89825 20.8846 2.14856 21.4063 2.56351 21.7785C2.74951 21.981 2.97151 22.149 3.21901 22.2705C3.47401 22.383 3.74851 22.4475 4.02601 22.461C4.50001 22.452 4.95451 22.272 5.30701 21.9555C7.62901 19.77 12.078 15.2805 14.6055 12.6495C15.291 12.9405 16.0275 13.0905 16.7715 13.089C17.5204 13.0884 18.2616 12.9377 18.9513 12.6458C19.641 12.3539 20.2652 11.9267 20.787 11.3895C21.8588 10.2964 22.4575 8.82543 22.4535 7.29452C22.4708 6.59398 22.3715 5.89544 22.1595 5.22752ZM4.39951 20.892C4.34178 20.9433 4.27218 20.9794 4.19701 20.997C4.12306 21.0098 4.04746 21.0098 3.97351 20.997C3.89598 20.9852 3.82213 20.956 3.75751 20.9115C3.68817 20.8709 3.62955 20.8144 3.58651 20.7465C3.37651 20.532 3.18001 20.124 3.37651 19.8945C5.43151 17.709 9.66301 13.437 12.309 10.8255C12.459 11.0235 12.624 11.2125 12.801 11.3895C12.978 11.574 13.1685 11.745 13.371 11.901C10.812 14.526 6.63901 18.747 4.40101 20.892H4.39951ZM21.0765 7.29452C21.0795 8.44202 20.6325 9.54452 19.8285 10.3665C19.0262 11.1536 17.9472 11.5944 16.8233 11.5944C15.6994 11.5944 14.6203 11.1536 13.818 10.3665C13.23 9.75286 12.8283 8.98485 12.6597 8.15183C12.4911 7.31882 12.5624 6.45505 12.8655 5.66102C13.0673 5.12062 13.3802 4.62858 13.784 4.21671C14.1879 3.80485 14.6737 3.48233 15.21 3.27002C15.7192 3.05688 16.266 2.94774 16.818 2.94902H17.199L14.4735 5.75852V6.80252L17.316 9.63152H18.306L21.0765 6.90752V7.29452ZM4.86001 10.032H7.15651L8.21401 11.1075L9.23101 10.0965L8.23351 9.07952V9.01502L8.31901 6.54152L7.98901 5.88602L3.69901 3.06302L2.81251 3.16202L1.56601 4.43552L1.46701 5.33402L4.22401 9.71102L4.86001 10.0335V10.032ZM3.44251 4.58402L6.91351 6.87002L6.85501 8.55452H5.24101L3.00301 5.01152L3.44251 4.58402ZM14.1 15.024L15.111 14.0145L19.77 18.792C20.1624 19.2045 20.3813 19.752 20.3813 20.3213C20.3813 20.8906 20.1624 21.4381 19.77 21.8505C19.4749 22.1535 19.0955 22.3605 18.6811 22.4448C18.2667 22.5291 17.8365 22.4866 17.4465 22.323C17.1976 22.2126 16.9744 22.0517 16.791 21.8505L12.078 17.046L13.0965 16.029L17.7945 20.82C17.8577 20.8897 17.9363 20.9436 18.024 20.9775C18.1967 21.0476 18.3899 21.0476 18.5625 20.9775C18.6502 20.9436 18.7288 20.8897 18.792 20.82C18.8577 20.755 18.9088 20.6768 18.942 20.5905C18.9764 20.5025 18.9947 20.409 18.996 20.3145C18.9945 20.2202 18.9767 20.1268 18.9435 20.0385C18.9103 19.9523 18.8592 19.8741 18.7935 19.809L14.1 15.024Z`,fill:`currentColor`})}),R=e=>(0,k.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,k.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M12 13.0605L17.469 18.531L18.531 17.4705L13.0605 12L18.531 6.53099L17.4705 5.46899L12 10.9395L6.53099 5.46899L5.47049 6.53099L10.9395 12L5.47049 17.469L6.53099 18.531L12 13.0605Z`,fill:`currentColor`})}),z=e=>(0,k.jsx)(`svg`,{height:24,viewBox:`0 0 24 24`,width:24,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,k.jsx)(`path`,{fill:`currentColor`,d:`m22 18-5 4-8-3v3l-4.19-5.75 12.91 1.05v-10.96l4.28-.69zm-17.19-1.75v-7.29l12.91-2.62-7.12-4.34v2.84l-6.63 1.92-1.97 2.62v5.69z`})}),B=e=>(0,k.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,k.jsx)(`path`,{d:`M12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4ZM2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM7.79289 7.79289C8.18342 7.40237 8.81658 7.40237 9.20711 7.79289L12 10.5858L14.7929 7.79289C15.1834 7.40237 15.8166 7.40237 16.2071 7.79289C16.5976 8.18342 16.5976 8.81658 16.2071 9.20711L13.4142 12L16.2071 14.7929C16.5976 15.1834 16.5976 15.8166 16.2071 16.2071C15.8166 16.5976 15.1834 16.5976 14.7929 16.2071L12 13.4142L9.20711 16.2071C8.81658 16.5976 8.18342 16.5976 7.79289 16.2071C7.40237 15.8166 7.40237 15.1834 7.79289 14.7929L10.5858 12L7.79289 9.20711C7.40237 8.81658 7.40237 8.18342 7.79289 7.79289Z`,fill:`currentColor`})}),V=()=>{let{trackDownloadTrajectoryButtonClicked:e}=b(),{t}=i(`openhands`);return s({mutationKey:[`conversations`,`download`],mutationFn:async t=>{e(),m(await w.downloadConversation(t),`conversation_${t}.zip`)},onError:()=>{u(t(g.CONVERSATION$DOWNLOAD_ERROR))}})};function H({gitProvider:e,className:t}){return(0,k.jsxs)(k.Fragment,{children:[e===`github`&&(0,k.jsx)(_,{size:14,className:t}),e===`gitlab`&&(0,k.jsx)(v,{size:14,className:t}),e===`bitbucket`&&(0,k.jsx)(y,{size:14,className:t}),e===`bitbucket_data_center`&&(0,k.jsx)(y,{size:14,className:t}),e===`azure_devops`&&(0,k.jsx)(z,{className:h(t,`w-[14px] h-[14px]`)})]})}export{R as a,F as c,j as d,O as f,z as i,P as l,V as n,L as o,D as p,B as r,I as s,H as t,N as u};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{t as r}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js";import{t as i,z as a}from"./utils-DUD5ScdA.js";import{s as o}from"./form-control-classes-CGXBLcn1.js";import{t as s}from"./vendor~root-layout~index-home~home~conversation-panel~conversation~automation-setup-route-CjECvSl5.js";import{c,i as l,r as u,u as d}from"./dropdown-classes-tLhpwtxS.js";import{r as f,t as p}from"./combobox-caret-DvpEsh2O.js";import{a as m,c as h,i as g,n as _,r as v,t as y}from"./home-store-DgzViC3f.js";import{r as b}from"./typography-DB5HoCk0.js";var x=e(t(),1),S=n();function C({disabled:e,onClear:t,testId:n=`dropdown-clear`}){let{t:o}=r(`openhands`);return(0,S.jsx)(`button`,{onClick:e=>{e.stopPropagation(),t()},disabled:e,className:i(`p-1 text-[#fff]`,`cursor-pointer disabled:cursor-not-allowed disabled:opacity-60`),type:`button`,"aria-label":o(a.COMMON$CLEAR_SELECTION),"data-testid":n,children:(0,S.jsx)(`svg`,{className:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`,children:(0,S.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M6 18L18 6M6 6l12 12`})})})}function w({isOpen:e,disabled:t,getToggleButtonProps:n,iconClassName:o}){let{t:s}=r(`openhands`);return(0,S.jsx)(`button`,{...n({disabled:t,className:i(f,`text-current`,e&&`rotate-180`,t&&`cursor-not-allowed opacity-60`)}),type:`button`,"aria-label":s(a.COMMON$TOGGLE_MENU),children:(0,S.jsx)(p,{className:o})})}function T({item:e,index:t,isSelected:n,getItemProps:r,getDisplayText:a,getItemKey:o,isProviderDropdown:s=!1,renderIcon:l,itemClassName:f,ariaLabel:p}){return(0,S.jsx)(`li`,{...r({index:t,item:e,...p?{"aria-label":p}:{},className:i(s?`group px-2 py-0 cursor-pointer text-xs rounded-md mx-0 my-0 h-6 flex items-center`:`group px-2 py-2 cursor-pointer text-sm rounded-md mx-0 my-0.5`,`text-white focus:outline-none font-normal`,u,{"bg-[var(--oh-interactive-selected)] text-white":n,"hover:bg-[var(--oh-interactive-hover)]":!n},f)}),children:(0,S.jsxs)(`div`,{className:i(`flex items-center`,c),children:[l?(0,S.jsx)(`span`,{className:d,children:l(e)}):null,(0,S.jsx)(`span`,{className:`font-normal`,children:a(e)})]})},o(e))}function E({inputValue:e,searchMessage:t=`No items found`,emptyMessage:n=`No items available`,testId:r=`dropdown-empty`}){return(0,S.jsx)(`li`,{className:`px-3 py-2 text-[var(--oh-text-secondary)] text-sm rounded-lg mx-0.5 my-0.5`,"data-testid":r,children:e?t:n})}function D({isOpen:e,filteredItems:t,inputValue:n,highlightedIndex:r,selectedItem:a,getMenuProps:o,getItemProps:s,onScroll:c,menuRef:u,renderItem:d,renderItemPrefix:f,renderEmptyState:p,stickyTopItem:m,stickyFooterItem:h,testId:g,numberOfRecentItems:_=0,itemKey:v}){let y=!(t.length>0)&&!m&&!h;return e?(0,S.jsx)(`div`,{className:`relative`,children:(0,S.jsxs)(`div`,{className:i(`absolute z-10 w-full bg-tertiary border border-[var(--oh-border-input)] rounded-lg shadow-none`,`focus:outline-none mt-1 z-[9999]`,`max-h-60`),children:[(0,S.jsx)(`ul`,{...o({ref:u,className:i(`w-full overflow-auto p-1 custom-scrollbar-always`,l,m||h?`max-h-[calc(15rem-3rem)]`:`max-h-60`),onScroll:c,"data-testid":g}),children:y?p(n):(0,S.jsxs)(S.Fragment,{children:[m,t.map((e,t)=>{let n=v(e);return(0,S.jsxs)(x.Fragment,{children:[f?.(e,t),d(e,t,r,a,s),_>0&&t===_-1&&(0,S.jsx)(`li`,{role:`presentation`,"aria-hidden":`true`,className:`border-b border-[var(--oh-border-input)] bg-tertiary pb-1 mb-1 h-[1px]`})]},n)})]})}),h&&(0,S.jsx)(`div`,{className:`border-t border-[var(--oh-border-input)] bg-tertiary p-1 rounded-b-lg`,children:h})]})}):(0,S.jsx)(`div`,{className:`relative`,children:(0,S.jsx)(`ul`,{...o({ref:u,className:`hidden`,"data-testid":g})})})}function O({isError:e,message:t=`Failed to load data`,testId:n=`dropdown-error`}){return e?(0,S.jsx)(`div`,{className:`text-red-500 text-sm mt-1`,"data-testid":n,children:t}):null}function k(e,t){let[n,r]=(0,x.useState)([]),[i,a]=(0,x.useState)(!1);return(0,x.useEffect)(()=>{(async()=>{if(!t){r([]);return}if(e.startsWith(`https://`)){let n=e.match(/https:\/\/[^/]+\/([^/]+\/[^/]+)/);if(n){let e=n[1];a(!0);try{r((await m.searchGitRepositories(e,t,3)).items)}catch{r([])}finally{a(!1)}}}else r([])})()},[e,t]),{urlSearchResults:n,isUrlSearchLoading:i}}function ee(e,t,n,r,i,a,o){let{data:s,fetchNextPage:c,hasNextPage:l,isLoading:u,isFetchingNextPage:d,isError:f}=g({provider:e,enabled:!t}),{data:p,isLoading:m}=v(n,e,(0,x.useMemo)(()=>i===o,[o,i])),h=(0,x.useMemo)(()=>s?.pages?.flatMap(e=>e.items)||[],[s]),_=(0,x.useMemo)(()=>a&&[...h,...r,...p||[]].find(e=>e.id===a)||null,[h,r,p,a]),y=(0,x.useMemo)(()=>r.length>0?r:n&&p&&i!==_?.full_name?p:h,[r,n,p,h,_,i]);return(0,x.useEffect)(()=>{!t&&!u&&!d&&!m&&l&&!n&&r.length===0&&y.length>0&&y.length<10&&c()},[t,u,d,m,l,n,r.length,y.length,c]),{repositories:y,allRepositories:h,selectedRepository:_,fetchNextPage:c,hasNextPage:l,isLoading:u,isFetchingNextPage:d,isError:f,isSearchLoading:m}}function A({provider:e,value:t,repositoryName:n,placeholder:c,className:l,disabled:u=!1,onChange:d}){let{t:f}=r(`openhands`),{recentRepositories:p}=y(),[m,g]=(0,x.useState)(``),[v,A]=(0,x.useState)(null),j=_(m,300),M=(0,x.useRef)(null),N=(0,x.useMemo)(()=>{if(j.startsWith(`https://`)){let e=j.match(/https:\/\/[^/]+\/([^/]+\/[^/]+)/);return e?e[1]:j}return j},[j]),{urlSearchResults:P,isUrlSearchLoading:te}=k(m,e),{repositories:F,selectedRepository:I,fetchNextPage:L,hasNextPage:R,isLoading:z,isFetchingNextPage:B,isError:V,isSearchLoading:H}=ee(e,u,N,P,m,t,n),U=I??v,W=(0,x.useMemo)(()=>{let t=p.filter(t=>t.git_provider===e);if(!m?.trim())return t;let n=m.startsWith(`https://`)?N:m;return t.filter(e=>e.full_name.toLowerCase().includes(n.toLowerCase()))},[p,e,m,N]),G=(0,x.useCallback)(e=>{let t=new Set(W.map(e=>e.id)),n=e.filter(e=>!t.has(e.id));return[...W,...n]},[W]),K=(0,x.useMemo)(()=>{let e;if(P.length>0)e=F;else if(m===I?.full_name)e=F;else if(!m?.trim())e=F;else{let t=m.startsWith(`https://`)?N:m;e=F.filter(e=>e.full_name.toLowerCase().includes(t.toLowerCase()))}return G(e)},[F,m,I,P,N,G]),q=(0,x.useCallback)(e=>{A(e),d?.(e||void 0),e&&g(e.full_name)},[d]),J=(0,x.useCallback)(()=>{A(null),q(null),g(``)},[q]),Y=(0,x.useCallback)(e=>{let{scrollTop:t,scrollHeight:n,clientHeight:r}=e.currentTarget;t+r>=n-10&&R&&!B&&L()},[R,B,L]),{isOpen:X,getToggleButtonProps:Z,getMenuProps:ne,getInputProps:re,highlightedIndex:ie,getItemProps:Q,selectedItem:$}=s({items:K,itemToString:e=>e?.full_name||``,selectedItem:v,onSelectedItemChange:({selectedItem:e})=>{q(e)},inputValue:m,stateReducer:(e,t)=>t.type===s.stateChangeTypes.InputClick&&e.isOpen?{...t.changes,isOpen:!0}:t.changes});(0,x.useEffect)(()=>{I?A(I):t===null&&A(null)},[I,t]),(0,x.useEffect)(()=>{X||g(U?.full_name??``)},[U,X]);let ae=z||H||B||te,oe=(e,t,n,r,i)=>(0,S.jsx)(T,{item:e,index:t,isSelected:r?.id===e.id,getItemProps:i,getDisplayText:e=>e.full_name,getItemKey:e=>e.id},e.id),se=e=>(0,S.jsx)(E,{inputValue:e,searchMessage:f(a.HOME$NO_REPOSITORY_FOUND),emptyMessage:f(a.COMMON$NO_REPOSITORY),testId:`git-repo-dropdown-empty`}),ce=(0,x.useMemo)(()=>W.length===0?null:(0,S.jsx)(`div`,{children:(0,S.jsx)(b.Text,{className:`text-xs text-content-2 font-semibold leading-4 pl-2`,children:f(a.COMMON$MOST_RECENT)})}),[W,v,Q,f]);return(0,S.jsxs)(`div`,{className:i(`relative`,l),children:[(0,S.jsxs)(`div`,{className:`group relative text-[var(--oh-muted)] hover:text-white`,children:[(0,S.jsx)(`div`,{className:`absolute left-2 top-1/2 transform -translate-y-1/2 z-10`,children:ae?(0,S.jsx)(`div`,{className:`animate-spin h-4 w-4 border-2 border-transparent border-t-white rounded-full`}):(0,S.jsx)(h,{width:16,height:16})}),(0,S.jsx)(`input`,{...re({disabled:u,placeholder:c??f(a.COMMON$SEARCH_REPOSITORIES_PLACEHOLDER),className:i(o,`text-inherit shadow-none pl-7 pr-16 text-sm font-normal leading-5`,`placeholder:text-[var(--oh-muted)]`,`disabled:cursor-not-allowed disabled:opacity-60`),onChange:e=>{g(e.target.value)}}),"data-testid":`git-repo-dropdown`}),(0,S.jsxs)(`div`,{className:`absolute right-1 top-1/2 transform -translate-y-1/2 flex items-center`,children:[U&&(0,S.jsx)(C,{disabled:u,onClear:J}),(0,S.jsx)(w,{isOpen:X,disabled:u,getToggleButtonProps:Z})]})]}),(0,S.jsx)(D,{isOpen:X,filteredItems:K,inputValue:m,highlightedIndex:ie,selectedItem:$,getMenuProps:ne,getItemProps:Q,onScroll:Y,menuRef:M,renderItem:oe,renderEmptyState:se,stickyTopItem:ce,testId:`git-repo-dropdown-menu`,numberOfRecentItems:W.length,itemKey:e=>e.id}),(0,S.jsx)(O,{isError:V})]})}export{T as a,E as i,O as n,w as o,D as r,C as s,A as t};
@@ -1 +0,0 @@
1
- import"./git-repo-dropdown-CgXR6M_E.js";
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{t as r}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js";import{t as i,z as a}from"./utils-DUD5ScdA.js";import{ot as o,st as s}from"./vendor-markdown-j0kYzV48.js";import{t as c}from"./folder-C1ou4_DT.js";import{t as l}from"./syntax-highlighter-BGDg_7w9.js";var u=e(t(),1);function d(e){e.children.sort((e,t)=>e.isDirectory===t.isDirectory?e.name.localeCompare(t.name):e.isDirectory?-1:1);for(let t of e.children)t.isDirectory&&d(t)}function f(e,t,n,r,i){let a=t.get(e);a||(a=new Map,t.set(e,a));let o=a.get(n);if(o)return!i&&!o.isDirectory&&(o.isDirectory=!0),o;let s={name:n,path:r,isDirectory:!i,children:[]};return e.children.push(s),a.set(n,s),s}function p(e){let t={name:``,path:``,isDirectory:!0,children:[]},n=new Map;for(let r of e){let e=r.split(`/`).filter(Boolean);if(e.length>0){let r=t,i=``;for(let t=0;t<e.length;t+=1){let a=e[t];i=i?`${i}/${a}`:a;let o=t===e.length-1;r=f(r,n,a,i,o)}}}return d(t),t}var m=n();function h({node:e,depth:t,selectedPath:n,onSelectFile:r}){let[a,o]=(0,u.useState)(!1),s=8+t*12;if(e.isDirectory)return(0,m.jsxs)(`li`,{children:[(0,m.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),"aria-expanded":a,"data-testid":`file-tree-dir-${e.path}`,className:i(`flex w-full items-center gap-1.5 py-1 pr-2 text-left text-sm text-white`,`hover:bg-tertiary cursor-pointer`),style:{paddingLeft:`${s}px`},children:[(0,m.jsx)(`span`,{"aria-hidden":!0,className:i(`inline-block w-3 text-[10px] text-[var(--oh-muted)] transition-transform`,a?`rotate-90`:`rotate-0`),children:`▶`}),(0,m.jsx)(c,{className:`w-3.5 h-3.5 shrink-0`}),(0,m.jsx)(`span`,{className:`truncate`,children:e.name})]}),a&&e.children.length>0&&(0,m.jsx)(`ul`,{children:e.children.map(e=>(0,m.jsx)(h,{node:e,depth:t+1,selectedPath:n,onSelectFile:r},e.path))})]});let d=n===e.path;return(0,m.jsx)(`li`,{children:(0,m.jsxs)(`button`,{type:`button`,onClick:()=>r(e.path),"data-testid":`file-tree-file-${e.path}`,className:i(`flex w-full items-center gap-1.5 py-1 pr-2 text-left text-sm`,`hover:bg-tertiary cursor-pointer`,d?`bg-[var(--oh-interactive-hover)] text-white`:`text-[var(--oh-text-tertiary)]`),style:{paddingLeft:`${s+16}px`},children:[(0,m.jsx)(l,{className:`w-3.5 h-3.5 shrink-0`}),(0,m.jsx)(`span`,{className:`truncate`,children:e.name})]})})}function g({paths:e,selectedPath:t,onSelectFile:n}){let{t:i}=r(`openhands`),o=(0,u.useMemo)(()=>p(e),[e]);return o.children.length===0?(0,m.jsx)(`div`,{className:`px-3 py-4 text-sm text-[var(--oh-muted)]`,children:i(a.FILES$NO_FILES)}):(0,m.jsx)(`ul`,{className:`py-1 custom-scrollbar-always`,"data-testid":`file-tree-view`,children:o.children.map(e=>(0,m.jsx)(h,{node:e,depth:0,selectedPath:t,onSelectFile:n},e.path))})}var _={js:`javascript`,jsx:`jsx`,mjs:`javascript`,cjs:`javascript`,ts:`typescript`,tsx:`tsx`,py:`python`,pyi:`python`,pyw:`python`,html:`markup`,htm:`markup`,svg:`markup`,xml:`markup`,css:`css`,scss:`scss`,sass:`sass`,less:`less`,json:`json`,json5:`json5`,yaml:`yaml`,yml:`yaml`,toml:`toml`,ini:`ini`,cfg:`ini`,properties:`properties`,conf:`ini`,env:`bash`,md:`markdown`,markdown:`markdown`,mdx:`markdown`,sh:`bash`,bash:`bash`,zsh:`bash`,fish:`bash`,bat:`batch`,cmd:`batch`,ps1:`powershell`,ps:`powershell`,c:`c`,h:`c`,cpp:`cpp`,cc:`cpp`,cxx:`cpp`,hpp:`cpp`,hh:`cpp`,cs:`csharp`,java:`java`,kt:`kotlin`,kts:`kotlin`,scala:`scala`,rs:`rust`,go:`go`,rb:`ruby`,php:`php`,swift:`swift`,m:`objectivec`,mm:`objectivec`,hs:`haskell`,ex:`elixir`,exs:`elixir`,erl:`erlang`,fs:`fsharp`,fsx:`fsharp`,ml:`ocaml`,mli:`ocaml`,clj:`clojure`,cljs:`clojure`,cljc:`clojure`,lua:`lua`,pl:`perl`,pm:`perl`,r:`r`,jl:`julia`,dart:`dart`,groovy:`groovy`,gradle:`groovy`,tf:`hcl`,hcl:`hcl`,dockerfile:`docker`,sql:`sql`,graphql:`graphql`,gql:`graphql`,proto:`protobuf`,diff:`diff`,patch:`diff`,nix:`nix`,sol:`solidity`},v={dockerfile:`docker`,makefile:`makefile`,gnumakefile:`makefile`,".bashrc":`bash`,".zshrc":`bash`,".profile":`bash`,".env":`bash`,".gitignore":`bash`,".dockerignore":`bash`};function y(e){let t=Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`)),n=e.slice(t+1),r=n.lastIndexOf(`.`);return r<=0?``:n.slice(r+1).toLowerCase()}function b(e){let t=Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`));return e.slice(t+1).toLowerCase()}function x(e,t){let n=v[b(e)];if(n)return n;let r=y(e);if(r&&_[r])return _[r];if(t){if(t===`text/html`)return`markup`;if(t===`text/css`)return`css`;if(t===`application/json`)return`json`;if(t===`text/markdown`)return`markdown`;if(t===`application/javascript`||t===`text/javascript`)return`javascript`;if(t===`application/x-yaml`||t===`text/yaml`)return`yaml`}return null}function S({path:e,text:t,mimeType:n}){let r=x(e,n);return r?(0,m.jsx)(`div`,{"data-testid":`file-content-viewer-highlighted`,"data-language":r,className:`h-full w-full overflow-auto bg-[var(--oh-surface)] custom-scrollbar-always`,children:(0,m.jsx)(o,{language:r,style:s,showLineNumbers:!0,wrapLongLines:!1,customStyle:{margin:0,padding:`1rem`,background:`transparent`,fontSize:`0.75rem`,lineHeight:`1.25rem`,minHeight:`100%`},codeTagProps:{style:{background:`transparent`,fontFamily:`inherit`}},lineNumberStyle:{color:`var(--oh-border)`,minWidth:`2.5em`,paddingRight:`1em`,userSelect:`none`},children:t})}):(0,m.jsx)(`pre`,{"data-testid":`file-content-viewer-plain`,className:`h-full w-full overflow-auto whitespace-pre-wrap break-words bg-[var(--oh-surface)] p-4 text-xs leading-5 text-white custom-scrollbar-always`,children:t})}export{g as n,S as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./home-aCos-5vc.js";export{e as default};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,bt as n,i as r,yt as i}from"./vendor-styling-Ck5D_A2Q.js";import{F as a,U as o}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js";import{t as s}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js";import{D as c,T as l}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js";import{t as u}from"./useQueries-xDrGlTO_.js";import{t as d}from"./use-is-creating-conversation-BvYpmb3v.js";import{At as f,Mt as p,jt as m,n as h}from"./active-backend-context-BZDG15C0.js";import{t as g,z as _}from"./utils-DUD5ScdA.js";import{t as v}from"./chevron-down-CgGcmtE2.js";import{t as y}from"./external-link-C0UpBgsE.js";import{t as b}from"./file-text-C6WYtNdV.js";import{a as x,c as S,d as C,f as w,h as T,i as ee,l as E,m as D,n as O,o as k,p as A,r as j,s as M,t as N,u as P}from"./onboarding-Diw0V51A.js";import{t as F}from"./plus-C0BagBpV.js";import{t as I}from"./search-CYSDBczG.js";import{t as L}from"./x-86ZCfxKY.js";import{t as R}from"./zap-DRa-r-Tf.js";import{n as z}from"./use-tracking-Bhu7gk2y.js";import{t as B}from"./modal-backdrop-BSzNhM4r.js";import{n as V,r as H,t as te}from"./modal-body-BdKfD3Hl.js";import{r as ne}from"./base-modal-BbjycA8X.js";import{r as re}from"./modal-classes-D5_b5vMi.js";import{_ as ie,i as ae,m as oe,s as se}from"./form-control-classes-CGXBLcn1.js";import{t as ce}from"./brand-button-Blxv5nww.js";import{n as le}from"./navigation-context-CQZwH_tC.js";import{t as U}from"./navigation-link-Bxo3-4vo.js";import{t as ue}from"./vendor~root-layout~index-home~home~conversation-panel~conversation~automation-setup-route-CjECvSl5.js";import{t as de}from"./styled-tooltip-B6JXcsmL.js";import{i as fe,n as pe,o as me,u as he}from"./dropdown-classes-tLhpwtxS.js";import{t as ge}from"./conversation-store-Blc5xysY.js";import{t as _e}from"./modal-close-button-objukxk_.js";import{i as ve}from"./conversation-state-store-DMLtlHbE.js";import{t as ye}from"./use-click-outside-element-W6Os4Nlb.js";import{n as be}from"./use-create-conversation-DVrA_uLD.js";import{n as xe,t as Se}from"./context-menu-list-item-CdcamfM1.js";import{n as Ce}from"./use-can-manage-org-profiles-Dz_8Eqkv.js";import{t as we}from"./u-edit-DAkcF52u.js";import{c as Te,s as Ee,t as De}from"./home-store-DgzViC3f.js";import{t as Oe}from"./folder-C1ou4_DT.js";import{t as ke}from"./use-user-conversation-BkNXpXrd.js";import{r as Ae}from"./typography-DB5HoCk0.js";import{i as je,n as Me,t as Ne}from"./extension-module-card-classes-Bo43vY5V.js";import{n as Pe}from"./circle-plus-check-toggle-ASbpB8vN.js";import{t as Fe}from"./x-mark-BopmFoBq.js";import{B as Ie,H as Le,L as Re,U as ze,a as Be,c as Ve,i as He,k as Ue,l as We,n as Ge,o as Ke,r as qe,s as Je,t as Ye,z as Xe}from"./llm-not-configured-banner-BK9z5eS0.js";import{b as Ze}from"./markdown-renderer-Cp6DlHQN.js";import{t as Qe}from"./use-plugins-marketplace-BCuNLFsr.js";import{n as $e,r as et,t as tt}from"./use-has-permission-CQ31Cl8j.js";import{t as W}from"./automation-C_eCrGyP.js";import{a as nt,d as rt,f as it,i as at,l as ot,n as st,o as ct,r as lt,s as ut,t as dt}from"./kebab-menu-item-content-DERMdnDv.js";import{t as ft}from"./vendor~index-home~home~conversation-panel~conversation~alert-banner-B3qC_oj8.js";import{n as pt}from"./api-error-message-BEIE_yD1.js";import{n as mt,r as ht}from"./format-relative-time-ZhQD4rsl.js";import{a as gt,i as _t,o as vt,r as yt,s as bt,t as xt}from"./git-repo-dropdown-CgXR6M_E.js";import"./git-repo-dropdown-D2Uei3CO.js";var St=c(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),G=e(t(),1);async function Ct(e){let{imagesToEmbed:t}=ze(e.images,e.imagesMarkedUploadAsFile),n=await Promise.all(t.map(e=>Xe(e)));Ze.getState().enqueuePendingMessage({conversationId:e.conversationId,text:e.text,content:e.text,imageUrls:n,fileUrls:[]})}var K=i();function wt({plugin:e,isSelected:t,isDisabled:n=!1,onToggle:r}){return(0,K.jsxs)(`div`,{"data-testid":`plugin-picker-card-${e.name}`,className:g(`flex min-w-0 items-start justify-between gap-3 rounded-lg bg-tertiary p-4`),children:[(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`h3`,{"data-testid":`plugin-picker-name-${e.name}`,className:`truncate text-sm font-semibold text-white`,children:e.name}),(0,K.jsx)(`p`,{className:`mt-0.5 min-w-0 truncate text-xs text-tertiary-alt`,title:e.source,children:e.source}),e.description?(0,K.jsx)(`p`,{className:`mt-1 line-clamp-2 text-xs text-tertiary-light`,children:e.description}):null,e.repo_path||e.ref?(0,K.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:[e.repo_path?(0,K.jsx)(`span`,{className:je,children:e.repo_path}):null,e.ref?(0,K.jsxs)(`span`,{className:je,children:[`@`,e.ref]}):null]}):null]}),(0,K.jsx)(Pe,{testId:`plugin-picker-toggle-${e.name}`,isSelected:t,isDisabled:n,onToggle:r,enableLabelKey:_.BUTTON$ADD,disableLabelKey:_.COMMON$REMOVE,enableTooltipKey:_.BUTTON$ADD,disableTooltipKey:_.COMMON$REMOVE})]})}function q(e){return[e.source,e.ref??``,e.repo_path??``].join(`\0`)}function Tt(e){return{source:e.source,ref:e.ref??null,repo_path:e.repo_path??null}}function Et(e,t){let n=q(t);return e.some(e=>q(e)===n)}function Dt(e,t){let n=q(t);return e.some(e=>q(e)===n)?e.filter(e=>q(e)!==n):[...e,Tt(t)]}function Ot(e,t){let n=t.trim().toLowerCase();return n?[e.name,e.description,e.source,e.repo_path,e.ref].filter(e=>typeof e==`string`&&e.length>0).some(e=>e.toLowerCase().includes(n)):!0}function kt({selected:e,onChange:t,disabled:n=!1}){let{t:r}=s(`openhands`),{data:i,isLoading:a,isError:o}=Qe(),[c,l]=(0,G.useState)(``),u=(i??[]).filter(e=>Ot(e,c));return(0,K.jsxs)(`div`,{"data-testid":`plugin-picker`,className:`flex w-full flex-col gap-3`,children:[(0,K.jsxs)(`div`,{className:g(`relative flex min-w-0 items-center`,`rounded-lg border border-[var(--oh-border)] bg-base-secondary`,`transition-colors focus-within:border-white/40 focus-within:ring-1 focus-within:ring-white/20`),children:[(0,K.jsx)(I,{className:`ml-3 h-4 w-4 shrink-0 text-tertiary-alt`,"aria-hidden":!0}),(0,K.jsx)(`input`,{"data-testid":`plugin-picker-search-input`,type:`search`,value:c,onChange:e=>l(e.target.value),placeholder:r(_.PLUGINS$PICKER_SEARCH_PLACEHOLDER),"aria-label":r(_.PLUGINS$PICKER_SEARCH_PLACEHOLDER),className:g(`min-w-0 flex-1 border-0 bg-transparent outline-none`,`px-3 py-2 text-sm placeholder:text-tertiary-alt`,`[&::-webkit-search-cancel-button]:hidden`)}),c?(0,K.jsx)(`button`,{type:`button`,onClick:()=>l(``),"aria-label":r(_.MCP$SEARCH_CLEAR),className:`mr-2 cursor-pointer rounded p-1 text-tertiary-alt hover:text-white`,children:(0,K.jsx)(L,{className:`h-4 w-4`,"aria-hidden":!0})}):null]}),a?(0,K.jsx)(`p`,{"data-testid":`plugin-picker-loading`,className:`py-8 text-center text-sm text-tertiary-light`,children:r(_.PLUGINS$PICKER_LOADING)}):o?(0,K.jsx)(`p`,{"data-testid":`plugin-picker-error`,className:`py-8 text-center text-sm text-tertiary-light`,children:r(_.PLUGINS$PICKER_ERROR)}):u.length===0?(0,K.jsx)(`p`,{"data-testid":`plugin-picker-empty`,className:`py-8 text-center text-sm text-tertiary-light`,children:r(_.PLUGINS$PICKER_EMPTY)}):(0,K.jsx)(`div`,{className:Me,children:(0,K.jsx)(`div`,{className:Ne,children:u.map(r=>(0,K.jsx)(wt,{plugin:r,isSelected:Et(e,r),isDisabled:n,onToggle:()=>t(Dt(e,r))},`${r.source} ${r.ref??``} ${r.repo_path??``} ${r.name}`))})})]})}function At({selected:e,onChange:t,onClose:n}){let{t:r}=s(`openhands`);return(0,K.jsx)(B,{onClose:n,children:(0,K.jsxs)(`div`,{"data-testid":`plugin-picker-modal`,className:g(`relative flex max-h-[80vh] flex-col gap-4 rounded-xl border border-[var(--oh-border)] bg-base-secondary p-6`,H(`lg`),te),children:[(0,K.jsx)(_e,{onClose:n,testId:`plugin-picker-close`}),(0,K.jsxs)(`div`,{className:`pr-6`,children:[(0,K.jsx)(Ae.H2,{children:r(_.PLUGINS$PICKER_TITLE)}),(0,K.jsx)(Ae.Text,{className:`mt-1 block text-sm text-tertiary-light`,children:r(_.PLUGINS$PICKER_SUBTITLE)})]}),(0,K.jsx)(`div`,{className:`flex-1 overflow-y-auto custom-scrollbar`,children:(0,K.jsx)(kt,{selected:e,onChange:t})}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between border-t border-[var(--oh-border-subtle)] pt-4`,children:[(0,K.jsx)(Ae.Text,{className:`text-sm text-tertiary-light`,children:r(_.PLUGINS$PICKER_SELECTED_COUNT,{count:e.length})}),(0,K.jsx)(ce,{testId:`plugin-picker-done`,type:`button`,variant:`primary`,onClick:n,className:`px-4`,children:r(_.PLUGINS$PICKER_DONE)})]})]})})}function jt({count:e,onClick:t,disabled:n=!1}){let{t:r}=s(`openhands`);return(0,K.jsxs)(`button`,{type:`button`,"data-testid":`open-plugin-picker`,onClick:t,disabled:n,className:g(`flex flex-row items-center gap-2 rounded-full px-2.5 py-1 text-white`,ae,oe,ie,n?`cursor-not-allowed opacity-50`:`cursor-pointer hover:bg-surface-raised`),children:[(0,K.jsx)(`span`,{className:`flex h-4 w-4 shrink-0 items-center justify-center`,children:(0,K.jsx)(Ue,{width:16,height:16,className:`shrink-0`,"aria-hidden":!0})}),(0,K.jsx)(`span`,{className:`text-sm font-normal leading-5`,children:r(_.PLUGINS$PICKER_TRIGGER)}),e>0?(0,K.jsx)(`span`,{"data-testid":`plugin-picker-count`,className:`inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-white px-1 text-[11px] font-semibold leading-none text-black`,children:e}):null]})}var Mt=15e3;function Nt(e){let t=h(),n=u({queries:e.map(e=>({queryKey:[...it,e.id,{limit:12,offset:0},t.backend.id,t.orgId],queryFn:()=>z.getAutomationRuns(e.id,12,0),staleTime:60*1e3,retry:!1,refetchOnWindowFocus:!1,refetchInterval:e=>{let t=e.state.data?.runs[0];return t?.status===W.PENDING||t?.status===W.RUNNING?Mt:!1}}))}),r=new Map;return e.forEach((e,t)=>{let i=n[t],a=i?.data?.runs??[];r.set(e.id,{latestRun:a[0]??null,recentRuns:a,isLoading:i?.isPending??!0,isError:i?.isError??!1})}),r}var Pt=20,Ft=[W.COMPLETED,W.COMPLETED,W.FAILED,W.COMPLETED,W.CANCELLED,W.COMPLETED,W.COMPLETED,W.FAILED,W.COMPLETED,W.SKIPPED,W.COMPLETED];function It(){if(typeof window>`u`)return!1;if(window.localStorage.getItem(`oh:home-automations-demo`)===`1`)return!0;try{return new URLSearchParams(window.location.search).get(`demoAutomations`)===`1`}catch{return!1}}var Lt={"demo-conv-titled":`Fix flaky CI on main`,"demo-conv-untitled":`Summarize open pull requests`};function Rt(e){if(e in Lt)return Lt[e]}function zt(e){return new Date(Date.now()-e*36e5).toISOString()}function J(e,t,n){return{id:e,name:t,trigger:n,enabled:!0,created_at:zt(720),updated_at:zt(24),prompt:`demo`}}function Y(e,t,n={}){let r=n.startedHoursAgo??2,i=n.completedHoursAgo===void 0?1:n.completedHoursAgo;return{id:e,status:t,conversation_id:n.conversationId===void 0?null:n.conversationId,bash_command_id:null,error_detail:n.errorDetail===void 0?null:n.errorDetail,started_at:zt(r),completed_at:i===null?null:zt(i)}}function Bt(e){if(!e)return[];let t=[2,8,45,3,15,1,25,90,5,12,6];return[e,...Ft.slice(0,11).map((n,r)=>{let i=24+r*6,a=(t[r]??5)/60;return Y(`${e.id}-hist-${r}`,n,{startedHoursAgo:i,completedHoursAgo:i-a,conversationId:null,errorDetail:n===W.FAILED?`Prior failure`:null})})]}function Vt(e){return{...e,recentRuns:e.recentRuns??Bt(e.latestRun)}}var X=[{pin:!0,automation:J(`demo-pin-loading`,`Card: loading skeleton`,{type:`cron`,schedule:`0 * * * *`,schedule_human:`Every hour`}),runState:{latestRun:null,isLoading:!0,isError:!1}},{pin:!0,automation:J(`demo-pin-error`,`Card: status unavailable`,{type:`cron`,schedule:`0 9 * * *`,schedule_human:`Daily at 9am`}),runState:{latestRun:null,isLoading:!1,isError:!0}},{pin:!0,automation:J(`demo-pin-no-runs`,`Card: no runs yet`,{type:`event`,source:`github`,on:`pull_request.opened`}),runState:{latestRun:null,isLoading:!1,isError:!1}},{pin:!0,automation:J(`demo-pin-failed-detail`,`Card: failed with error detail`,{type:`cron`,schedule:`*/15 * * * *`,schedule_human:`Every 15 min`}),runState:{latestRun:Y(`run-failed-detail`,W.FAILED,{errorDetail:`Sandbox provisioning timed out after 120s while waiting for the runtime to become ready.`,startedHoursAgo:3,completedHoursAgo:2.5}),isLoading:!1,isError:!1}},{pin:!0,automation:J(`demo-pin-completed-title`,`Card: completed + conversation title`,{type:`event`,source:`github`,on:`push`}),runState:{latestRun:Y(`run-completed-title`,W.COMPLETED,{conversationId:`demo-conv-titled`,startedHoursAgo:5,completedHoursAgo:4}),isLoading:!1,isError:!1}},{pin:!0,automation:J(`demo-pin-completed-untitled`,`Card: completed + conversation title`,{type:`cron`,schedule:`0 0 * * 1`,schedule_human:`Mondays at midnight`}),runState:{latestRun:Y(`run-completed-untitled`,W.COMPLETED,{conversationId:`demo-conv-untitled`,startedHoursAgo:8,completedHoursAgo:7}),isLoading:!1,isError:!1}},{pin:!0,automation:J(`demo-pin-completed-no-conv`,`Card: completed, no conversation`,{type:`cron`,schedule:`0 12 * * *`,schedule_human:`Daily at noon`}),runState:{latestRun:Y(`run-completed-no-conv`,W.COMPLETED,{conversationId:null,startedHoursAgo:10,completedHoursAgo:9}),isLoading:!1,isError:!1}},{pin:!0,automation:J(`demo-pin-failed-no-conv`,`Card: failed, no conversation`,{type:`event`,source:`slack`,on:`message`}),runState:{latestRun:Y(`run-failed-no-conv`,W.FAILED,{conversationId:null,errorDetail:null,startedHoursAgo:12,completedHoursAgo:11}),isLoading:!1,isError:!1}},{pin:!0,automation:J(`demo-pin-pending`,`Card: pending (empty result panel)`,{type:`cron`,schedule:`0 */6 * * *`,schedule_human:`Every 6 hours`}),runState:{latestRun:Y(`run-pending`,W.PENDING,{conversationId:null,startedHoursAgo:.1,completedHoursAgo:null}),isLoading:!1,isError:!1}},{pin:!0,automation:J(`demo-pin-running`,`Card: running (empty result panel)`,{type:`event`,source:`github`,on:`issues.opened`}),runState:{latestRun:Y(`run-running`,W.RUNNING,{conversationId:null,startedHoursAgo:.25,completedHoursAgo:null}),isLoading:!1,isError:!1}},{automation:J(`demo-list-cancelled`,`List: cancelled run`,{type:`cron`,schedule:`30 2 * * *`,schedule_human:`Daily at 2:30am`}),runState:{latestRun:Y(`run-cancelled`,W.CANCELLED,{startedHoursAgo:14,completedHoursAgo:13}),isLoading:!1,isError:!1}},{automation:J(`demo-list-skipped`,`List: skipped run`,{type:`event`,source:`github`,on:`pull_request.synchronize`}),runState:{latestRun:Y(`run-skipped`,W.SKIPPED,{startedHoursAgo:16,completedHoursAgo:16}),isLoading:!1,isError:!1}},{automation:J(`demo-list-running-2`,`List: second in-flight run`,{type:`cron`,schedule:`*/5 * * * *`,schedule_human:`Every 5 min`}),runState:{latestRun:Y(`run-running-2`,W.RUNNING,{conversationId:null,startedHoursAgo:.5,completedHoursAgo:null}),isLoading:!1,isError:!1}},{automation:J(`demo-list-success-old`,`List: older success`,{type:`cron`,schedule:`0 8 * * 1-5`,schedule_human:`Weekdays at 8am`}),runState:{latestRun:Y(`run-success-old`,W.COMPLETED,{conversationId:`demo-conv-titled`,startedHoursAgo:48,completedHoursAgo:47}),isLoading:!1,isError:!1}},{automation:J(`demo-list-failed-old`,`List: older failure`,{type:`event`,source:`github`,on:`release.published`}),runState:{latestRun:Y(`run-failed-old`,W.FAILED,{errorDetail:`Model returned an empty completion.`,startedHoursAgo:72,completedHoursAgo:71}),isLoading:!1,isError:!1}},{automation:J(`demo-list-no-runs-2`,`List: never ran`,{type:`cron`,schedule:`0 0 1 * *`,schedule_human:`Monthly on the 1st`}),runState:{latestRun:null,isLoading:!1,isError:!1}},{automation:J(`demo-list-loading-2`,`List: loading status`,{type:`event`,source:`linear`,on:`Issue.create`}),runState:{latestRun:null,isLoading:!0,isError:!1}},{automation:J(`demo-list-error-2`,`List: fetch error`,{type:`cron`,schedule:`15 * * * *`,schedule_human:`Hourly at :15`}),runState:{latestRun:null,isLoading:!1,isError:!0}},{automation:J(`demo-list-pending-2`,`List: pending, long name that should truncate in the activity row when the viewport is narrow`,{type:`cron`,schedule:`0 3 * * 0`,schedule_human:`Sundays at 3am`}),runState:{latestRun:Y(`run-pending-2`,W.PENDING,{startedHoursAgo:.05,completedHoursAgo:null}),isLoading:!1,isError:!1}},{automation:J(`demo-list-completed-fallback`,`List: completed with conversation`,{type:`event`,source:`github`,on:`workflow_run.completed`}),runState:{latestRun:Y(`run-completed-fallback`,W.COMPLETED,{conversationId:`demo-conv-untitled`,startedHoursAgo:20,completedHoursAgo:19}),isLoading:!1,isError:!1}}];if(X.length!==Pt)throw Error(`home-automations-demo: expected ${Pt} specs, got ${X.length}`);var Z=X.filter(e=>e.pin).map(e=>e.automation.id),Ht=X.map(e=>e.automation),Ut=new Map(X.map(e=>[e.automation.id,Vt(e.runState)])),Wt={latestRun:null,recentRuns:[],isLoading:!0,isError:!1};function Gt(){let e=It(),{data:t,isLoading:n}=et(),r=t?.status===`ok`,{data:i,isError:a,isLoading:o}=ct({limit:50,offset:0,enabled:!e&&r}),s=e?Ht:i?.automations??[],c=s.filter(e=>e.enabled).slice(0,20),l=new Set(s.map(e=>e.id)),u=e?!0:i!=null&&s.length>=i.total,d=Nt(e?[]:c),f=e?Ut:d;return e?{isBackendHealthy:!0,isHealthLoading:!1,isError:!1,isAutomationsLoading:!1,enabledAutomations:c,knownAutomationIds:l,isAutomationListComplete:u,runStates:f}:{isBackendHealthy:r,isHealthLoading:n,isError:a,isAutomationsLoading:o,enabledAutomations:c,knownAutomationIds:l,isAutomationListComplete:u,runStates:f}}var Kt=`oh:home-pinned-automations`;function qt(e,t){return`${Kt}:${e}:${t??`-`}`}function Q(e){if(!Array.isArray(e))return[];let t=new Set,n=[];for(let r of e)typeof r!=`string`||!r||t.has(r)||(t.add(r),n.push(r));return n}function Jt(e,t){let n=new Set(e),r=[];for(let e of t)n.has(e)&&(r.push(e),n.delete(e));for(let t of e)n.has(t)&&r.push(t);return r}function Yt(e,t,n,r=`after`){if(t===n)return[...e];let i=e.indexOf(t),a=e.indexOf(n);if(i<0||a<0)return[...e];let o=[...e];o.splice(i,1);let s=o.indexOf(n),c=r===`before`?s:s+1;return o.splice(c,0,t),o}function Xt(){let e=It(),t=h(),[n,r]=ft(qt(t.backend.id,t.orgId),[]),[i,a]=(0,G.useState)(null),o=(0,G.useMemo)(()=>e?i?Jt(Z,i):[...Z]:Q(n),[e,i,n]),s=(0,G.useCallback)(e=>o.includes(e),[o]),c=(0,G.useCallback)(t=>{if(e){a(e=>{let n=e?Jt(Z,e):[...Z];return n.includes(t)?n:[...n,t]});return}r(e=>{let n=Q(e);return n.includes(t)?n:[...n,t]})},[e,r]),l=(0,G.useCallback)(t=>{if(e){a(e=>(e?Jt(Z,e):[...Z]).filter(e=>e!==t));return}r(e=>Q(e).filter(e=>e!==t))},[e,r]);return{pinnedIds:o,isPinned:s,pin:c,unpin:l,togglePin:(0,G.useCallback)(e=>{if(s(e)){l(e);return}c(e)},[s,c,l]),reorder:(0,G.useCallback)((t,n,i=`after`)=>{if(e){a(e=>Yt(e?Jt(Z,e):[...Z],t,n,i));return}r(e=>Yt(Q(e),t,n,i))},[e,r]),pruneMissing:(0,G.useCallback)(t=>{e||r(e=>{let n=Q(e),r=n.filter(e=>t.has(e));return r.length===n.length&&r.every((e,t)=>e===n[t])?n:r})},[e,r])}}function Zt({automationName:e,isOpen:t,onConfirm:n,onCancel:r}){let{t:i}=s(`openhands`);return t?(0,K.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center`,children:[(0,K.jsx)(`div`,{className:`absolute inset-0 bg-black/60`,onClick:r,onKeyDown:e=>{e.key===`Escape`&&r()},role:`presentation`}),(0,K.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":`turn-off-automation-title`,className:`relative w-full max-w-sm rounded-xl border border-[var(--oh-border)] bg-[var(--oh-surface)] p-6`,children:[(0,K.jsx)(`button`,{type:`button`,onClick:r,className:`absolute right-4 top-4 text-muted hover:text-foreground`,"aria-label":i(_.BUTTON$CLOSE),children:(0,K.jsx)(Fe,{className:`size-5`})}),(0,K.jsx)(`h2`,{id:`turn-off-automation-title`,className:re,children:i(_.AUTOMATIONS$TURN_OFF_CONFIRM_TITLE)}),(0,K.jsx)(`p`,{className:`mt-2 text-sm text-muted`,children:i(_.AUTOMATIONS$TURN_OFF_CONFIRM_MESSAGE,{name:e})}),(0,K.jsxs)(`div`,{className:`mt-6 flex justify-end gap-3`,children:[(0,K.jsx)(`button`,{type:`button`,onClick:r,className:`rounded-lg border border-[var(--oh-border)] px-4 py-2 text-sm text-white hover:bg-surface-raised`,children:i(_.AUTOMATIONS$CANCEL)}),(0,K.jsx)(`button`,{type:`button`,"data-testid":`turn-off-automation-confirm`,onClick:n,className:`rounded-lg bg-danger px-4 py-2 text-sm text-white hover:bg-danger/80`,children:i(_.AUTOMATIONS$TURN_OFF)})]})]})]}):null}function Qt(e){return e?.status===W.PENDING||e?.status===W.RUNNING}function $t(e,t){let{t:n}=s(`openhands`),{navigate:r}=le(),i=h(),a=tt(`manage_automations`),o=i.backend.kind===`local`,c=It(),l=ot(),u=rt(),d=ut(),[f,g]=(0,G.useState)(!1),[v,y]=(0,G.useState)(!1),b=l.isPending&&l.variables===e.id,x=d.isPending&&d.variables?.runId===t?.id,S=a&&Qt(t),C=(0,G.useCallback)(()=>{if(c){p(n(_.AUTOMATIONS$RUN_NOW_SUCCESS));return}l.mutate(e.id,{onSuccess:()=>{p(n(_.AUTOMATIONS$RUN_NOW_SUCCESS))},onError:e=>{m(pt(e,n(_.AUTOMATIONS$RUN_NOW_ERROR)))}})},[e.id,l,c,n]),w=(0,G.useCallback)(()=>{r?.(`/automations/${e.id}`)},[e.id,r]);return{canManage:a,canEdit:o,isRunPending:b,isCancelPending:x,canCancel:S,editOpen:f,setEditOpen:g,turnOffConfirmOpen:v,runNow:C,viewDetails:w,openEdit:(0,G.useCallback)(()=>{if(!o){w();return}g(!0)},[o,w]),requestTurnOff:(0,G.useCallback)(()=>{y(!0)},[]),confirmTurnOff:(0,G.useCallback)(()=>{y(!1),!c&&u.mutate({id:e.id,enabled:!1},{onError:e=>{m(pt(e,n(_.AUTOMATIONS$TURN_OFF_ERROR)))}})},[e.id,c,n,u]),cancelTurnOff:(0,G.useCallback)(()=>{y(!1)},[]),cancelRun:(0,G.useCallback)(()=>{if(!(!t||!Qt(t))){if(c){p(n(_.AUTOMATIONS$CANCEL_RUN_SUCCESS));return}d.mutate({automationId:e.id,runId:t.id},{onSuccess:()=>{p(n(_.AUTOMATIONS$CANCEL_RUN_SUCCESS))},onError:e=>{m(pt(e,n(_.AUTOMATIONS$CANCEL_RUN_ERROR)))}})}},[e.id,d,c,t,n])}}function en(e){if(e.isLoading||e.isError)return`unknown`;if(!e.latestRun)return`none`;switch(e.latestRun.status){case W.COMPLETED:return`success`;case W.FAILED:return`failed`;case W.PENDING:case W.RUNNING:return`in_progress`;default:return`unknown`}}function tn(e){switch(e){case`success`:return _.FEATURED_AUTOMATIONS$LAST_RUN_SUCCEEDED;case`failed`:return _.FEATURED_AUTOMATIONS$LAST_RUN_FAILED;case`in_progress`:return _.FEATURED_AUTOMATIONS$RUN_IN_PROGRESS;case`none`:return _.AUTOMATIONS$DETAIL$NO_RUNS;default:return _.FEATURED_AUTOMATIONS$STATUS_UNKNOWN}}var nn={github:`GitHub`,gitlab:`GitLab`,slack:`Slack`,linear:`Linear`,jira:`Jira`};function rn(e){let t=e.trim().toLowerCase();return t?nn[t]??t.replace(/\b\w/g,e=>e.toUpperCase()):e}function an(e){let{trigger:t}=e;return t.type===`event`&&t.on?nt(t.on):null}function on(e){let{trigger:t}=e;return t.type===`event`&&t.source?.trim()||null}function sn(e){let{trigger:t}=e;return t.type===`event`?null:t.schedule_human||t.schedule||t.type||null}function cn(e){let{trigger:t}=e;if(t.type===`event`){let t=on(e);return[an(e)??``,t?`(${rn(t)})`:``].filter(Boolean).join(` `)}return sn(e)??t.type}var ln=48;function un(e){let t=e.trim().replace(/\s+/g,` `);if(!t)return t;let n=t.match(/^.*?[.!?](?=\s|$)/)?.[0]??t;return n.length<=ln?n:`${n.slice(0,ln-1).trimEnd()}…`}function dn(e,t=un(e)){return e.trim().replace(/\s+/g,` `)!==t}function $(e){let t=e.completed_at??e.started_at;if(!t)return null;let n=new Date(t).getTime();return Number.isNaN(n)||n===0?null:t}var fn=1e3,pn=30*6e4;function mn(e,t=Date.now()){let n=e.started_at?new Date(e.started_at).getTime():NaN;if(Number.isNaN(n)||n<=0)return null;if(e.completed_at){let t=new Date(e.completed_at).getTime();return Number.isNaN(t)||t<n?null:t-n}return e.status===W.PENDING||e.status===W.RUNNING?Math.max(0,t-n):null}function hn(e){if(e==null||e<=0)return 11;let t=Math.log(Math.min(pn,Math.max(fn,e))/fn)/Math.log(pn/fn);return Math.round(6+t*9)}function gn(e){switch(e){case W.COMPLETED:return`bg-[var(--oh-status-success)]`;case W.FAILED:return`bg-[var(--oh-status-error)]`;case W.RUNNING:return`bg-[var(--oh-status-success)] animate-pulse motion-reduce:animate-none`;case W.PENDING:return`bg-[repeating-linear-gradient(-45deg,var(--oh-muted)_0_1.5px,var(--oh-border)_1.5px_3px)]`;case W.CANCELLED:return`bg-[var(--oh-muted)]`;default:return`bg-[var(--oh-border)]`}}function _n(e){switch(e){case W.COMPLETED:return _.AUTOMATIONS$DETAIL$SUCCESSFUL;case W.FAILED:return _.AUTOMATIONS$DETAIL$FAILED;case W.PENDING:return _.AUTOMATIONS$DETAIL$PENDING;case W.RUNNING:return _.AUTOMATIONS$DETAIL$RUNNING;case W.CANCELLED:return _.AUTOMATIONS$DETAIL$CANCELLED;case W.SKIPPED:return _.AUTOMATIONS$DETAIL$SKIPPED;default:return _.FEATURED_AUTOMATIONS$STATUS_UNKNOWN}}function vn(e){return e==null||e<=0?null:e<6e4?`${Math.max(1,Math.round(e/1e3))}s`:e<36e5?`${Math.round(e/6e4)}m`:`${(e/36e5).toFixed(1)}h`}function yn({label:e,children:t}){return(0,K.jsxs)(`div`,{className:`flex items-start gap-2 text-xs`,children:[(0,K.jsx)(`span`,{className:`w-16 shrink-0 text-[var(--oh-muted)]`,children:e}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 break-words text-white`,children:t})]})}function bn({run:e,nowMs:t}){let{t:n,i18n:r}=s(`openhands`),i=$(e),a=i?mt(i,r.language,n):null,o=vn(mn(e,t)),c=n(_n(e.status)),l=e.status===W.FAILED&&e.error_detail?.trim()||null;return(0,K.jsxs)(`div`,{className:`flex w-[220px] flex-col gap-2 p-3`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`span`,{"aria-hidden":`true`,className:g(`h-3 w-1.5 shrink-0 rounded-[1px]`,gn(e.status))}),(0,K.jsx)(`span`,{className:`text-sm font-medium text-white`,children:c})]}),(0,K.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[a?(0,K.jsx)(yn,{label:n(_.AUTOMATIONS$DETAIL$LAST_RUN),children:a}):null,o?(0,K.jsx)(yn,{label:n(_.FEATURED_AUTOMATIONS$RUN_DURATION),children:o}):null]}),l?(0,K.jsx)(`p`,{className:`line-clamp-3 text-xs text-[var(--oh-status-error)]`,children:l}):null]})}function xn({automationId:e,run:t,nowMs:n}){let{t:i}=s(`openhands`),a=mn(t,n),o=i(_n(t.status)),c=`/automations/${encodeURIComponent(e)}?run=${encodeURIComponent(t.id)}`;return(0,K.jsx)(r,{content:(0,K.jsx)(bn,{run:t,nowMs:n}),placement:`top`,closeDelay:80,delay:200,disableAnimation:!1,className:`rounded-xl border border-[var(--oh-border)] bg-base-secondary p-0 text-white shadow-xl`,children:(0,K.jsx)(U,{to:c,"aria-label":o,className:`group/spark-bar inline-flex h-full cursor-pointer items-end px-[2px] focus:outline-none focus-visible:ring-1 focus-visible:ring-[var(--oh-focus)]`,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,K.jsx)(`span`,{className:g(`w-1 shrink-0 origin-bottom rounded-[1px]`,`transition-transform duration-100 ease-out motion-reduce:transition-none`,`group-hover/spark-bar:scale-x-[1.4] group-hover/spark-bar:scale-y-[1.15]`,`group-focus-visible/spark-bar:scale-x-[1.4] group-focus-visible/spark-bar:scale-y-[1.15]`,gn(t.status)),style:{height:hn(a)}})})})}function Sn({automationId:e,runs:t,testId:n}){let{t:r}=s(`openhands`),i=t.some(e=>Qt(e)),[a,o]=(0,G.useState)(()=>Date.now());if((0,G.useEffect)(()=>{if(!i)return;let e=window.setInterval(()=>o(Date.now()),1e3);return()=>window.clearInterval(e)},[i]),t.length===0)return null;let c=[...t].reverse().slice(-12);return(0,K.jsx)(`span`,{"data-testid":n,"aria-label":r(_.FEATURED_AUTOMATIONS$RUN_ACTIVITY_LABEL,{count:c.length}),className:`inline-flex shrink-0 items-end`,style:{height:18},onMouseDown:e=>e.preventDefault(),children:c.map((t,n)=>(0,K.jsx)(xn,{automationId:e,run:t,nowMs:a},`${t.id}-${n}`))})}function Cn({automation:e,t,canManage:n,canEdit:r,isRunPending:i,isCancelPending:a,canCancel:o,testIdPrefix:s,pinTestId:c,isPinned:l,onRunNow:u,onCancelRun:d,onView:f,onEdit:p,onTurnOff:m,onTogglePin:h}){let g=[];return n&&g.push({kind:`item`,key:`run-now`,label:t(_.AUTOMATIONS$RUN_NOW),icon:(0,K.jsx)(lt,{className:`size-4`}),onClick:u,disabled:i||!e.enabled||o,testId:`${s}-run-${e.id}`}),n&&o&&g.push({kind:`item`,key:`cancel-run`,label:t(_.AUTOMATIONS$CANCEL_RUN),icon:(0,K.jsx)(St,{className:`size-3.5 fill-current`,"aria-hidden":!0}),onClick:d,disabled:a,testId:`${s}-cancel-${e.id}`}),g.push({kind:`item`,key:`view`,label:t(_.COMMON$VIEW),icon:(0,K.jsx)(b,{className:`size-4`,"aria-hidden":!0}),onClick:f,testId:`${s}-view-${e.id}`}),n&&r&&p&&g.push({kind:`item`,key:`edit`,label:t(_.AUTOMATIONS$EDIT),icon:(0,K.jsx)(we,{className:`size-4`}),onClick:p,testId:`${s}-edit-${e.id}`}),n&&g.push({kind:`item`,key:`turn-off`,label:t(_.AUTOMATIONS$TURN_OFF),icon:(0,K.jsx)(st,{className:`size-4`}),onClick:m,testId:`${s}-turn-off-${e.id}`}),g.push({kind:`separator`,key:`pin-separator`},{kind:`item`,key:`pin`,label:t(l?_.FEATURED_AUTOMATIONS$UNPIN:_.FEATURED_AUTOMATIONS$PIN),icon:(0,K.jsx)(A,{className:l?`size-3.5 fill-current`:`size-3.5`,"aria-hidden":`true`}),onClick:h,testId:c}),g}function wn({onUnpin:e,automation:t,...n}){return Cn({...n,automation:t,testIdPrefix:`pinned-automation`,pinTestId:`unpin-automation-${t.id}`,isPinned:!0,onTogglePin:e})}var Tn=e(n(),1);function En({testId:e,panelTestId:t,ariaLabel:n,items:r,triggerClassName:i}){let[a,o]=(0,G.useState)(!1),[s,c]=(0,G.useState)(0),l=(0,G.useRef)(null),u=(0,G.useRef)([]),[,d]=(0,G.useReducer)(e=>e+1,0),f=()=>{o(!1),queueMicrotask(()=>l.current?.focus())},p=ye(f,l),m=r.map((e,t)=>e.kind===`item`&&!e.disabled?t:-1).filter(e=>e>=0);(0,G.useLayoutEffect)(()=>{if(!a)return;d(),c(m[0]??0);let e=0,t=()=>{e||=window.requestAnimationFrame(()=>{e=0,d()})};return window.addEventListener(`resize`,t),window.addEventListener(`scroll`,t,!0),()=>{window.removeEventListener(`resize`,t),window.removeEventListener(`scroll`,t,!0),e&&window.cancelAnimationFrame(e)}},[a]),(0,G.useEffect)(()=>{a&&u.current[s]?.focus()},[s,a]);let h=(()=>{if(!a||!l.current)return;let e=l.current.getBoundingClientRect(),t=window.innerWidth,n=window.innerHeight,i=r.reduce((e,t)=>e+(t.kind===`separator`?9:36),10),o=p.current?.getBoundingClientRect().height??i;return{position:`fixed`,...e.bottom+4+o+8>n?{bottom:n-e.top+4}:{top:e.bottom+4},right:Math.max(8,t-e.right),zIndex:1e5}})(),g=typeof document<`u`?document.body:null,_=e=>{m.length!==0&&c(m[(m.indexOf(s)+e+m.length)%m.length]??m[0])};return(0,K.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,K.jsx)(Ce,{ref:l,testId:e,ariaLabel:n,className:i,onClick:e=>{e.preventDefault(),e.stopPropagation(),o(e=>!e)}}),a&&h&&g?(0,Tn.createPortal)((0,K.jsx)(xe,{ref:p,testId:t,theme:`popover`,position:`none`,alignment:`none`,spacing:`none`,style:h,className:`min-w-40`,onKeyDown:e=>{if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),f();return}if(e.key===`ArrowDown`){e.preventDefault(),_(1);return}e.key===`ArrowUp`&&(e.preventDefault(),_(-1))},children:r.map((e,t)=>e.kind===`separator`?(0,K.jsx)(w,{},e.key):(0,K.jsx)(`li`,{children:(0,K.jsx)(Se,{ref:e=>{u.current[t]=e},testId:e.testId,isDisabled:e.disabled,className:`group`,onClick:t=>{t.preventDefault(),t.stopPropagation(),!e.disabled&&(e.onClick(),f())},children:(0,K.jsx)(dt,{icon:e.icon,label:e.label})})},e.key))}),g):null]})}function Dn({automation:e,runState:t,onUnpin:n,onDragStart:i,onDragOver:a,onDrop:o,onDragEnd:c,isDropTarget:l,dropPosition:u,isDragging:d}){let{t:f,i18n:p}=s(`openhands`),{latestRun:m,recentRuns:h,isLoading:v,isError:b}=t,x=$t(e,m),S=m?.conversation_id??null,C=S?Rt(S):void 0,{data:w}=ke(C===void 0?S:null),T=C===void 0?w?.title??null:C,ee=m?$(m):null,E=m?.status===W.COMPLETED||m?.status===W.FAILED,D=e.trigger.type===`event`?R:$e,O=an(e),k=sn(e),A=on(e),j=m?.status===W.FAILED&&m.error_detail?.trim()||null,M=j?un(j):null,N=j!=null&&M!=null&&dn(j,M),P=(0,G.useRef)(null),F=wn({automation:e,t:f,canManage:x.canManage,canEdit:x.canEdit,isRunPending:x.isRunPending,isCancelPending:x.isCancelPending,canCancel:x.canCancel,onRunNow:x.runNow,onCancelRun:x.cancelRun,onView:x.viewDetails,onEdit:x.canEdit?x.openEdit:void 0,onTurnOff:x.requestTurnOff,onUnpin:()=>n(e.id)});return(0,K.jsxs)(`article`,{ref:P,role:`listitem`,"data-testid":`pinned-automation-card-${e.id}`,onDragOver:t=>{t.preventDefault();let{dataTransfer:n}=t;n.dropEffect=`move`;let r=t.currentTarget.getBoundingClientRect(),i=(t.clientX-r.left)/r.width,o=(t.clientY-r.top)/r.height,s=i<.3||i>.7?i<.5?`before`:`after`:o<.5?`before`:`after`;a(e.id,s)},onDrop:t=>{t.preventDefault(),o(e.id)},onDragEnd:c,className:g(`group relative flex flex-col rounded-xl border border-[var(--oh-border)] bg-[var(--oh-surface-raised)] p-4`,d&&`opacity-50`,l&&u===`before`&&`shadow-[inset_0_2px_0_0_var(--oh-focus)]`,l&&u===`after`&&`shadow-[inset_0_-2px_0_0_var(--oh-focus)]`),children:[(0,K.jsxs)(`div`,{draggable:!0,"data-testid":`pinned-automation-drag-${e.id}`,"aria-label":f(_.FEATURED_AUTOMATIONS$REORDER_HANDLE,{name:e.name}),className:`-mx-4 -mt-4 mb-0 flex cursor-grab items-start justify-between gap-3 rounded-t-xl px-4 pb-1 pt-4 active:cursor-grabbing`,onDragStart:t=>{if(t.target?.closest(`[data-no-drag]`)){t.preventDefault();return}let{dataTransfer:n}=t;n.effectAllowed=`move`,n.setData(`text/plain`,e.id),P.current&&n.setDragImage(P.current,24,24),i(e.id)},onDragEnd:c,children:[(0,K.jsx)(`span`,{role:`link`,tabIndex:0,title:f(_.FEATURED_AUTOMATIONS$VIEW_DETAILS),className:`min-w-0 flex-1 cursor-pointer truncate font-medium text-[var(--oh-foreground)] hover:underline focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--oh-focus)]`,onClick:()=>x.viewDetails(),onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),x.viewDetails())},children:e.name}),(0,K.jsx)(`div`,{"data-no-drag":!0,className:`shrink-0`,children:(0,K.jsx)(En,{testId:`pinned-automation-menu-${e.id}`,panelTestId:`pinned-automation-menu-panel-${e.id}`,ariaLabel:f(_.FEATURED_AUTOMATIONS$ROW_MENU_LABEL,{name:e.name}),triggerClassName:`opacity-70 group-hover:opacity-100`,items:F})})]}),(0,K.jsxs)(`div`,{className:`mt-2 flex items-center justify-between gap-3 text-xs text-[var(--oh-text-secondary)]`,children:[(0,K.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,K.jsx)(D,{className:`size-3 shrink-0`,"aria-hidden":`true`}),O?(0,K.jsx)(`span`,{className:`truncate`,children:O}):null,k?(0,K.jsx)(`span`,{className:`truncate`,children:k}):null,A?(0,K.jsx)(`span`,{className:g(je,`px-1.5 py-0 text-[var(--oh-text-secondary)]`),children:rn(A)}):null]}),h.length>0?(0,K.jsx)(Sn,{automationId:e.id,runs:h,testId:`pinned-automation-activity-${e.id}`}):null]}),(0,K.jsxs)(`div`,{className:`mt-3 flex min-h-9 items-center justify-between gap-2 overflow-hidden rounded-md border border-[var(--oh-border-subtle)] bg-[var(--oh-surface)] px-3 py-2 text-xs`,children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2 overflow-hidden`,children:[v?(0,K.jsx)(`div`,{className:`h-3.5 w-3/4 animate-pulse rounded bg-surface-raised motion-reduce:animate-none`,"aria-hidden":`true`}):null,!v&&b?(0,K.jsx)(`p`,{className:`truncate text-[var(--oh-text-secondary)]`,children:f(_.FEATURED_AUTOMATIONS$STATUS_UNAVAILABLE)}):null,!v&&!b&&!m?(0,K.jsx)(`p`,{className:`truncate text-[var(--oh-text-secondary)]`,children:f(_.AUTOMATIONS$DETAIL$NO_RUNS)}):null,m?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(ht,{status:m.status,iconOnly:!0,showLabel:m.status===W.PENDING||m.status===W.RUNNING&&!T}),M?N&&j?(0,K.jsx)(r,{content:(0,K.jsx)(`p`,{className:`max-w-xs whitespace-pre-wrap break-words p-2 text-xs`,children:j}),placement:`top`,closeDelay:100,disableAnimation:!1,className:`rounded-xl border border-[var(--oh-border)] bg-base-secondary p-0 text-white shadow-xl`,children:(0,K.jsx)(`span`,{className:`min-w-0 flex-1 cursor-default truncate text-[var(--oh-status-error)]`,children:M})}):(0,K.jsx)(`p`,{className:`min-w-0 flex-1 truncate text-[var(--oh-status-error)]`,children:M}):null,S&&T?(0,K.jsxs)(U,{to:`/conversations/${S}`,"aria-label":T,title:T,className:`group/conversation inline-flex min-w-0 items-center gap-1 text-[var(--oh-foreground)] hover:text-[var(--oh-text-secondary)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--oh-focus)]`,children:[(0,K.jsx)(`span`,{className:`truncate`,children:T}),(0,K.jsx)(y,{className:`size-3 shrink-0 opacity-0 transition-opacity group-hover/conversation:opacity-100 group-focus-visible/conversation:opacity-100`,"aria-hidden":`true`})]}):null,!S&&E?(0,K.jsx)(`p`,{className:`min-w-0 truncate text-[var(--oh-text-secondary)]`,children:f(_.AUTOMATIONS$DETAIL$NO_CONVERSATION)}):null]}):null]}),ee?(0,K.jsx)(`span`,{className:`shrink-0 text-[var(--oh-text-secondary)]`,children:mt(ee,p.language,f)}):null]}),x.editOpen?(0,K.jsx)(at,{automation:e,isOpen:x.editOpen,onClose:()=>x.setEditOpen(!1)}):null,(0,K.jsx)(Zt,{automationName:e.name,isOpen:x.turnOffConfirmOpen,onConfirm:x.confirmTurnOff,onCancel:x.cancelTurnOff})]})}function On(){let{t:e}=s(`openhands`),{pinnedIds:t,unpin:n,reorder:r,pruneMissing:i}=Xt(),{isBackendHealthy:a,isHealthLoading:o,isError:c,enabledAutomations:l,knownAutomationIds:u,isAutomationListComplete:d,runStates:f}=Gt(),[p,m]=(0,G.useState)(!1),[h,g]=(0,G.useState)(null),[v,y]=(0,G.useState)(null),[b,x]=(0,G.useState)(null);(0,G.useEffect)(()=>{!d||u.size===0||i(u)},[d,u,i]);let S=new Map(l.map(e=>[e.id,e])),C=t.map(e=>S.get(e)).filter(e=>!!e);if(o||!a||c||C.length===0)return null;let w=p||C.length<=6?C:C.slice(0,6),T=C.length>6;return(0,K.jsxs)(`section`,{"data-testid":`pinned-automations-dashboard`,"aria-label":e(_.FEATURED_AUTOMATIONS$PINNED_DASHBOARD_LABEL),className:`w-full`,children:[(0,K.jsx)(`h2`,{className:`mb-2 text-sm font-medium text-[var(--oh-foreground)]`,children:e(_.FEATURED_AUTOMATIONS$PINNED_TITLE)}),(0,K.jsx)(`div`,{role:`list`,className:`grid grid-cols-1 gap-3 sm:grid-cols-2`,children:w.map(e=>(0,K.jsx)(Dn,{automation:e,runState:f.get(e.id)??Wt,onUnpin:n,onDragStart:g,onDragOver:(e,t)=>{y(e),x(t)},onDrop:e=>{h&&b&&r(h,e,b),g(null),y(null),x(null)},onDragEnd:()=>{g(null),y(null),x(null)},isDropTarget:v===e.id,dropPosition:v===e.id?b:null,isDragging:h===e.id},e.id))}),T?(0,K.jsx)(`div`,{className:`mt-2 flex justify-start`,children:(0,K.jsx)(`button`,{type:`button`,"data-testid":`pinned-automations-view-more`,onClick:()=>m(e=>!e),className:`text-xs text-[var(--oh-text-secondary)] hover:text-[var(--oh-foreground)]`,children:e(p?_.COMMON$VIEW_LESS:_.COMMON$VIEW_MORE)})}):null]})}function kn({health:e}){return e===`success`?(0,K.jsx)(`svg`,{viewBox:`0 0 12 12`,className:`h-2.5 w-2.5 shrink-0 stroke-[var(--oh-status-success)]`,fill:`none`,strokeWidth:2.25,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:(0,K.jsx)(`path`,{d:`M2.5 6.5 5 9l4.5-5.5`})}):(0,K.jsx)(`span`,{"aria-hidden":`true`,className:g(`h-1.5 w-1.5 shrink-0 rounded-full`,e===`failed`&&`bg-[var(--oh-status-error)]`,e===`in_progress`&&`animate-pulse bg-[var(--oh-status-success)] motion-reduce:animate-none`,(e===`none`||e===`unknown`)&&`bg-[var(--oh-border)]`)})}function An(e,t,n,r){let{latestRun:i}=t,a=i?$(i):null;return{id:e.id,name:e.name,triggerSummary:cn(e),status:i?.status??null,whenLabel:a?mt(a,n,r):null,conversationId:i?.conversation_id??null}}function jn(e,t){let n=t.get(e),r=n?.latestRun?.status;if(r===W.PENDING||r===W.RUNNING)return 2**53-1;let i=n?.latestRun?$(n.latestRun):null;return i?new Date(i).getTime():0}function Mn(e,t,n,r,i){return[...e].map(e=>An(e,t.get(e.id)??i,n,r)).sort((e,n)=>jn(n.id,t)-jn(e.id,t))}function Nn(e){return e.conversationId?`/conversations/${e.conversationId}`:`/automations/${e.id}`}function Pn(e){return e.isError?_.FEATURED_AUTOMATIONS$STATUS_UNAVAILABLE:tn(en(e))}function Fn({label:e,children:t}){return(0,K.jsxs)(`div`,{className:`flex items-start gap-2 text-xs`,children:[(0,K.jsx)(`span`,{className:`w-20 shrink-0 text-[var(--oh-muted)]`,children:e}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 break-words text-[var(--oh-foreground)]`,children:t})]})}function In({automation:e,runState:t}){let{t:n,i18n:r}=s(`openhands`),{latestRun:i}=t,a=i?$(i):null,o=e.trigger.type===`event`?R:$e,c=en(t);return(0,K.jsxs)(`div`,{className:`flex w-[280px] flex-col gap-3 p-3`,children:[(0,K.jsx)(`span`,{className:`break-words text-sm font-medium text-white`,children:e.name}),(0,K.jsxs)(`dl`,{className:`flex flex-col gap-1.5`,children:[(0,K.jsx)(Fn,{label:n(_.AUTOMATIONS$DETAIL$TRIGGER),children:(0,K.jsxs)(`span`,{className:`inline-flex min-w-0 items-start gap-1.5`,children:[(0,K.jsx)(o,{className:`mt-0.5 size-3 shrink-0`,"aria-hidden":`true`}),(0,K.jsx)(`span`,{className:`break-all`,children:cn(e)})]})}),(0,K.jsx)(Fn,{label:n(_.COMMON$STATUS),children:(0,K.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1.5`,children:[(0,K.jsx)(kn,{health:c}),(0,K.jsx)(`span`,{children:n(Pn(t))})]})}),a?(0,K.jsx)(Fn,{label:n(_.AUTOMATIONS$DETAIL$LAST_RUN),children:mt(a,r.language,n)}):null,i?.status===W.FAILED&&i.error_detail?(0,K.jsx)(Fn,{label:n(_.STATUS$ERROR),children:(0,K.jsx)(`span`,{className:`line-clamp-3 text-[var(--oh-status-error)]`,children:i.error_detail})}):null]})]})}function Ln({item:e,automation:t,runState:n}){let{t:i}=s(`openhands`),{isPinned:a,togglePin:o}=Xt(),c=$t(t,n.latestRun),l=a(e.id),u=t.trigger.type===`event`?R:$e,d=an(t),f=sn(t),p=on(t),m=!!(d||f||p),h=m||!!e.whenLabel||!!e.status,v=en(n),y=Pn(n),b=Cn({automation:t,t:i,canManage:c.canManage,canEdit:c.canEdit,isRunPending:c.isRunPending,isCancelPending:c.isCancelPending,canCancel:c.canCancel,testIdPrefix:`running-automation`,pinTestId:`running-automation-pin-${e.id}`,isPinned:l,onRunNow:c.runNow,onCancelRun:c.cancelRun,onView:c.viewDetails,onEdit:c.canEdit?c.openEdit:void 0,onTurnOff:c.requestTurnOff,onTogglePin:()=>o(e.id)});return(0,K.jsxs)(`li`,{"data-testid":`running-automation-row-${e.id}`,className:`group relative flex items-stretch transition-colors hover:bg-[var(--oh-interactive-hover)] has-[:focus-visible]:bg-[var(--oh-interactive-hover)]`,children:[(0,K.jsx)(r,{content:(0,K.jsx)(In,{automation:t,runState:n}),placement:`top-start`,closeDelay:100,disableAnimation:!1,className:`rounded-xl border border-[var(--oh-border)] bg-base-secondary p-0 text-white shadow-xl`,children:(0,K.jsx)(U,{to:Nn(e),"aria-label":`${e.name} ${i(y)}`,className:`flex min-w-0 flex-1 items-center justify-between gap-3 px-3 py-2.5 focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--oh-focus)]`,children:(0,K.jsxs)(`div`,{className:`grid min-w-0 flex-1 grid-cols-[auto_minmax(0,1fr)] gap-x-2`,children:[(0,K.jsx)(`span`,{className:`inline-flex h-5 w-2.5 shrink-0 items-center justify-center`,children:(0,K.jsx)(kn,{health:v})}),(0,K.jsx)(`span`,{className:`truncate text-sm font-medium leading-5 text-[var(--oh-foreground)]`,children:e.name}),h?(0,K.jsxs)(`span`,{className:`col-start-2 mt-0.5 flex min-w-0 items-center gap-1.5 text-xs leading-4 text-[var(--oh-text-secondary)]`,children:[(0,K.jsx)(u,{className:`size-3 shrink-0`,"aria-hidden":`true`}),d?(0,K.jsx)(`span`,{className:`truncate`,children:d}):null,f?(0,K.jsx)(`span`,{className:`truncate`,children:f}):null,p?(0,K.jsx)(`span`,{className:g(je,`shrink-0 px-1.5 py-0 text-[var(--oh-text-secondary)]`),children:rn(p)}):null,e.whenLabel?(0,K.jsxs)(K.Fragment,{children:[m?(0,K.jsx)(`span`,{className:`shrink-0`,"aria-hidden":`true`,children:`·`}):null,(0,K.jsx)(`span`,{className:`truncate`,children:e.whenLabel})]}):null,e.status?(0,K.jsxs)(K.Fragment,{children:[m||e.whenLabel?(0,K.jsx)(`span`,{className:`shrink-0`,"aria-hidden":`true`,children:`·`}):null,(0,K.jsx)(ht,{status:e.status,compact:!0})]}):null]}):null,(0,K.jsx)(`span`,{className:`sr-only`,children:i(y)})]})})}),(0,K.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5 pr-1.5`,children:[(0,K.jsx)(Sn,{automationId:t.id,runs:n.recentRuns,testId:`running-automation-activity-${e.id}`}),(0,K.jsx)(En,{testId:`running-automation-menu-${e.id}`,panelTestId:`running-automation-menu-panel-${e.id}`,ariaLabel:i(_.FEATURED_AUTOMATIONS$ROW_MENU_LABEL,{name:e.name}),triggerClassName:`opacity-70 group-hover:opacity-100`,items:b})]}),c.editOpen?(0,K.jsx)(at,{automation:t,isOpen:c.editOpen,onClose:()=>c.setEditOpen(!1)}):null,(0,K.jsx)(Zt,{automationName:t.name,isOpen:c.turnOffConfirmOpen,onConfirm:c.confirmTurnOff,onCancel:c.cancelTurnOff})]})}function Rn(){let{t:e,i18n:t}=s(`openhands`),[n,r]=(0,G.useState)(!1),{isBackendHealthy:i,isHealthLoading:a,isError:o,isAutomationsLoading:c,enabledAutomations:l,runStates:u}=Gt(),d=t?.language??`en`,f=(0,G.useMemo)(()=>Mn(l,u,d,e,Wt),[l,u,d,e]),p=(0,G.useMemo)(()=>new Map(l.map(e=>[e.id,e])),[l]),m=n?20:10,h=f.slice(0,m),g=!n&&f.length>10,v=n&&f.length>=20;if(a||!i||o||c)return null;let y=f.length===0;return(0,K.jsxs)(`section`,{"aria-labelledby":`running-automations-heading`,"data-testid":`running-automations-list`,className:`mt-8 w-full`,children:[(0,K.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-2`,children:[(0,K.jsx)(`h2`,{id:`running-automations-heading`,className:`text-sm font-medium text-[var(--oh-foreground)]`,children:e(_.FEATURED_AUTOMATIONS$SECTION_TITLE)}),(0,K.jsx)(de,{content:e(_.FEATURED_AUTOMATIONS$MANAGE),placement:`bottom`,children:(0,K.jsxs)(U,{to:`/automations`,"data-testid":`home-automations-manage`,"aria-label":e(_.FEATURED_AUTOMATIONS$MANAGE),className:`inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 text-xs font-medium text-[var(--oh-text-secondary)] transition-colors hover:bg-[var(--oh-interactive-hover)] hover:text-[var(--oh-foreground)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--oh-focus)]`,children:[(0,K.jsx)(F,{className:`size-3`,"aria-hidden":`true`}),e(_.BUTTON$ADD)]})})]}),y?(0,K.jsx)(`p`,{"data-testid":`running-automations-empty-hint`,className:`rounded-xl border border-[var(--oh-border-subtle)] bg-[var(--oh-surface)] px-4 py-3 text-xs text-[var(--oh-text-secondary)]`,children:e(_.FEATURED_AUTOMATIONS$EMPTY_HINT)}):(0,K.jsx)(`ul`,{"aria-label":e(_.FEATURED_AUTOMATIONS$RECENT_GROUP_LABEL),className:`divide-y divide-[var(--oh-border-subtle)] overflow-hidden rounded-xl border border-[var(--oh-border-subtle)] bg-[var(--oh-surface)]`,children:h.map(e=>{let t=p.get(e.id);return t?(0,K.jsx)(Ln,{item:e,automation:t,runState:u.get(e.id)??Wt},e.id):null})}),g?(0,K.jsx)(`div`,{className:`mt-2 flex justify-start`,children:(0,K.jsx)(`button`,{type:`button`,"data-testid":`home-automations-view-more`,onClick:()=>r(!0),className:`rounded-md px-1.5 py-0.5 text-xs font-medium text-[var(--oh-text-secondary)] transition-colors hover:bg-[var(--oh-interactive-hover)] hover:text-[var(--oh-foreground)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--oh-focus)]`,children:e(_.COMMON$VIEW_MORE)})}):null,v?(0,K.jsx)(`div`,{className:`mt-2 flex justify-start`,children:(0,K.jsx)(U,{to:`/automations`,"data-testid":`home-automations-view-all`,className:`rounded-md px-1.5 py-0.5 text-xs font-medium text-[var(--oh-text-secondary)] transition-colors hover:bg-[var(--oh-interactive-hover)] hover:text-[var(--oh-foreground)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--oh-focus)]`,children:e(_.FEATURED_AUTOMATIONS$VIEW_ALL)})}):null]})}function zn(){let{t:e}=s(`openhands`);return(0,K.jsx)(`div`,{className:`flex w-full items-center justify-center py-2`,children:(0,K.jsx)(Ae.H1,{className:`w-full text-center leading-normal`,children:e(_.HOME$LETS_START_BUILDING)})})}function Bn({kind:e,onClick:t,disabled:n=!1,disabledTooltip:r}){let{t:i}=s(`openhands`),a=e===`local`,o=i(a?_.HOME$OPEN_WORKSPACE:_.COMMON$OPEN_REPOSITORY),c=(0,K.jsxs)(`button`,{type:`button`,"data-testid":a?`open-workspace-button`:`open-repository-button`,onClick:t,disabled:n,className:g(`flex flex-row items-center gap-2 rounded-full px-2.5 py-1 text-white`,ae,oe,ie,n?`cursor-not-allowed opacity-50`:`cursor-pointer hover:bg-surface-raised`),children:[(0,K.jsx)(`span`,{className:`flex h-4 w-4 shrink-0 items-center justify-center`,children:a?(0,K.jsx)(T,{"aria-hidden":!0,className:`h-4 w-4`,strokeWidth:2}):(0,K.jsx)(ve,{width:16,height:16,className:`shrink-0`})}),(0,K.jsx)(`span`,{className:`text-sm font-normal leading-5`,children:o})]});return r?(0,K.jsx)(de,{content:r,placement:`top`,children:(0,K.jsx)(`span`,{className:`inline-flex`,children:c})}):c}var Vn=`__ungrouped__`;function Hn({workspaces:e,parents:t=[],value:n,placeholder:r,className:i,disabled:a=!1,disabledTooltip:o,showManage:c,onChange:l,onAddClick:u,onManageClick:d}){let{t:f}=s(`openhands`),[p,m]=(0,G.useState)(n?.name??``),h=(0,G.useRef)(null),v=(0,G.useMemo)(()=>{let t=p.trim().toLowerCase();return t?e.filter(e=>e.name.toLowerCase().includes(t)||e.path.toLowerCase().includes(t)):e},[e,p]),y=(0,G.useCallback)(e=>e.parentPath??Vn,[]),b=(0,G.useMemo)(()=>{let e=new Map;return t.forEach(t=>e.set(t.path,t.name)),e},[t]),{groupedWorkspaces:x,isGrouped:S,headerByFirstIndex:C,groupLabelByIndex:w}=(0,G.useMemo)(()=>{let e=[],t=new Map;v.forEach(n=>{let r=y(n);t.has(r)||(t.set(r,[]),e.push(r)),t.get(r)?.push(n)}),e.sort((e,t)=>e===Vn?1:t===Vn?-1:0);let n=e.length>1,r=[],i=new Map,a=new Map;return e.forEach(e=>{let o=e===Vn?f(_.HOME$WORKSPACE_GROUP_OTHER):b.get(e)||e.split(`/`).filter(Boolean).pop()||e;n&&i.set(r.length,o),(t.get(e)??[]).forEach(e=>{a.set(r.length,o),r.push(e)})}),{groupedWorkspaces:r,isGrouped:n,headerByFirstIndex:i,groupLabelByIndex:a}},[v,y,b,f]),T=(0,G.useCallback)(e=>{l(e),e&&m(e.name)},[l]),ee=(0,G.useCallback)(()=>{T(null),m(``)},[T]),{isOpen:E,getToggleButtonProps:D,getMenuProps:O,getInputProps:k,highlightedIndex:A,getItemProps:j,selectedItem:M,closeMenu:N}=ue({items:x,itemToString:e=>e?.name??``,selectedItem:n,onSelectedItemChange:({selectedItem:e})=>{T(e??null)},inputValue:p,onIsOpenChange:({isOpen:e,selectedItem:t})=>{m(e?``:t?.name??``)},stateReducer:(e,t)=>t.type===ue.stateChangeTypes.InputClick&&e.isOpen?{...t.changes,isOpen:!0}:t.changes}),P=(e,t,n,r,i)=>(0,K.jsx)(gt,{item:e,index:t,isSelected:r?.id===e.id,getItemProps:i,getDisplayText:e=>e.name,getItemKey:e=>e.id,ariaLabel:S?`${w.get(t)??``}, ${e.name}`.trim():void 0},e.id),F=e=>(0,K.jsx)(_t,{inputValue:e,searchMessage:f(_.HOME$NO_WORKSPACES),emptyMessage:f(_.HOME$NO_WORKSPACES),testId:`workspace-dropdown-empty`}),I=(0,G.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]),L=(0,G.useCallback)(e=>{I(e),N(),u()},[N,u,I]),R=(0,G.useCallback)(e=>{I(e),N(),u()},[N,u,I]),z=(0,G.useCallback)(e=>{I(e),N(),d()},[N,d,I]),B=(0,G.useCallback)(e=>{I(e),N(),d()},[N,d,I]),V=(0,G.useMemo)(()=>(0,K.jsxs)(`div`,{className:fe,children:[(0,K.jsx)(`button`,{type:`button`,"data-testid":`add-workspaces-button`,className:g(pe,`cursor-pointer`),onMouseDown:I,onTouchStart:I,onTouchEnd:R,onClick:L,children:f(_.HOME$ADD_WORKSPACES)}),(c??e.length>0)&&(0,K.jsx)(`button`,{type:`button`,"data-testid":`manage-workspaces-button`,className:g(pe,`cursor-pointer`),onMouseDown:I,onTouchStart:I,onTouchEnd:B,onClick:z,children:f(_.HOME$MANAGE_WORKSPACES)})]}),[L,R,z,B,I,f,e.length,c]),H=(0,K.jsxs)(`div`,{className:g(`relative`,i),children:[(0,K.jsxs)(`div`,{className:`group relative text-[var(--oh-muted)] hover:text-white`,children:[(0,K.jsx)(`div`,{className:`absolute left-2 top-1/2 transform -translate-y-1/2 z-10`,children:(0,K.jsx)(Te,{width:16,height:16})}),(0,K.jsx)(`input`,{...k({disabled:a,placeholder:E&&n?n.name:r??f(_.HOME$WORKSPACE_PLACEHOLDER),className:g(se,`text-inherit shadow-none pl-7 pr-16 text-sm font-normal leading-5`,`placeholder:text-[var(--oh-muted)]`,`disabled:cursor-not-allowed disabled:opacity-60`),onChange:e=>{m(e.target.value)}}),"data-testid":`workspace-dropdown`}),(0,K.jsxs)(`div`,{className:`absolute right-1 top-1/2 transform -translate-y-1/2 flex items-center`,children:[n&&(0,K.jsx)(bt,{disabled:a,onClear:ee}),(0,K.jsx)(vt,{isOpen:E,disabled:a,getToggleButtonProps:D})]})]}),(0,K.jsx)(yt,{isOpen:E,filteredItems:x,inputValue:p,highlightedIndex:A,selectedItem:M,getMenuProps:O,getItemProps:j,menuRef:h,renderItem:P,renderItemPrefix:S?(e,t)=>{let n=C.get(t);return n?(0,K.jsx)(`li`,{role:`presentation`,"aria-hidden":`true`,"data-testid":`workspace-group-header`,className:`px-2 pt-2 pb-1 text-xs font-medium text-[var(--oh-muted)] select-none`,children:n}):null}:void 0,renderEmptyState:F,stickyFooterItem:V,testId:`workspace-dropdown-menu`,itemKey:e=>e.id})]});return o?(0,K.jsx)(de,{content:o,placement:`top`,children:(0,K.jsx)(`span`,{className:`block`,children:H})}):H}var Un=`oh:home-selected-workspace-path`;function Wn(){if(typeof window>`u`)return null;try{let e=window.sessionStorage.getItem(Un);return e&&e.length>0?e:null}catch{return null}}function Gn(e){if(!(typeof window>`u`))try{e?window.sessionStorage.setItem(Un,e):window.sessionStorage.removeItem(Un)}catch{}}function Kn({isLoadingSettings:e=!1,onConfirm:t}){let{t:n}=s(`openhands`),{navigate:r}=le(),{data:i,error:a}=M(),o=i?.workspaceParents??[],{mutate:c}=E(),{mutate:l}=P(),{mutate:u}=S(),{mutate:f}=C(),{workspaces:p,parents:m,isLoading:h,isError:g,error:v}=k(),y=x(a??v,n),[b,w]=G.useState(null),[T,D]=G.useState(!1),[O,A]=G.useState(!1),{mutate:N,isPending:F,isSuccess:I}=be(),L=d(),R=F||I||L,z=G.useCallback(e=>{w(e),Gn(e?.path??null)},[]);G.useEffect(()=>{let e=Wn();if(!e)return;let t=p.find(t=>t.path===e);if(t){w(e=>e?.path===t.path?e:t);return}!h&&!g&&!y&&(Gn(null),w(t=>t?.path===e?null:t))},[g,h,p,y]);let B=o.length>0||!!y,V=null;y?V=y:h?V=n(_.HOME$LOADING):g&&(V=n(_.HOME$WORKSPACE_SCAN_ERROR));let H=!!y||e||h&&p.length===0;return(0,K.jsxs)(`div`,{className:`flex flex-col`,children:[!t&&(0,K.jsxs)(`div`,{className:`flex items-center gap-[10px] pb-4`,children:[(0,K.jsx)(Oe,{width:24,height:24}),(0,K.jsx)(`span`,{className:`leading-5 font-bold text-base text-white`,children:n(_.HOME$WORKSPACES_TAB)})]}),(0,K.jsxs)(`div`,{className:`flex flex-col gap-[10px] pb-4`,children:[(0,K.jsx)(Hn,{workspaces:p,parents:m,value:b,placeholder:y?n(_.HOME$WORKSPACES_UNSUPPORTED_PLACEHOLDER):H?n(_.HOME$LOADING):void 0,disabled:H,disabledTooltip:y,showManage:p.length>0||o.length>0,onChange:z,onAddClick:()=>D(!0),onManageClick:()=>A(!0),className:`max-w-auto`},b?.path??`empty-workspace-selection`),B&&V&&(0,K.jsx)(`p`,{className:`px-1 text-xs text-[var(--oh-text-secondary)]`,"data-testid":`workspace-status-message`,children:V})]}),(0,K.jsx)(ce,{testId:`workspace-launch-button`,variant:`primary`,type:`button`,isDisabled:!b||!t&&R||e,onClick:()=>{if(b){if(t){t(b);return}N({workingDir:b.path,entryPoint:`home_workspace_form`},{onSuccess:e=>r(`/conversations/${e.conversation_id}`)})}},className:t?`w-full`:`w-auto absolute bottom-5 left-5 right-5`,children:n(t?_.BUTTON$CONFIRM:R?_.HOME$LOADING:_.BUTTON$LAUNCH)}),(0,K.jsx)(ee,{isOpen:T,onClose:()=>D(!1),onAdd:e=>{let t=e[e.length-1];c(e,{onSuccess:()=>{t&&z(t)}})},onAddParent:e=>u(e)}),(0,K.jsx)(j,{isOpen:O,workspaces:p,workspaceParents:o,onClose:()=>A(!1),onRemove:e=>{b?.path===e&&z(null),l(e)},onRemoveParent:e=>{b?.parentPath===e&&z(null),f(e)}})]})}function qn({isOpen:e,onClose:t,onConfirm:n}){let{t:r}=s(`openhands`),{isLoadingSettings:i}=Ee();return e?(0,K.jsx)(B,{onClose:t,children:(0,K.jsxs)(V,{width:`sm`,className:`relative items-start border border-[var(--oh-border)] !gap-4`,children:[(0,K.jsx)(_e,{onClose:t,testId:`close-open-workspace-dialog`}),(0,K.jsx)(`div`,{className:`w-full pr-6`,children:(0,K.jsx)(ne,{title:r(_.HOME$OPEN_WORKSPACE)})}),(0,K.jsx)(`div`,{className:`w-full`,"data-testid":`open-workspace-dialog-body`,children:(0,K.jsx)(Kn,{isLoadingSettings:i,onConfirm:e=>{n(e),t()}})})]})}):null}function Jn({onRepoSelection:e,isLoadingSettings:t=!1,onConfirm:n}){let{navigate:r}=le(),[i,a]=G.useState(null),[o,c]=G.useState(null),[l,u]=G.useState(null),{providers:f}=Ee(),{addRecentRepository:p,setLastSelectedProvider:m,getLastSelectedProvider:h}=De(),{mutate:g,isPending:v,isSuccess:y}=be(),b=d(),{t:x}=s(`openhands`);G.useEffect(()=>{if(f.length!==0){if(f.length===1&&!l){u(f[0]);return}if(f.length>1&&!l){let e=h();e&&f.includes(e)&&u(e)}}},[f,l,h]);let S=v||y||b,C=t=>{t!==l&&(u(t),m(t),a(null),c(null),e?.(null))},w=G.useCallback(e=>{c(e)},[]);return(0,K.jsxs)(`div`,{className:`flex flex-col`,children:[!n&&(0,K.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-[10px] pb-4`,children:[(0,K.jsx)(ve,{width:24,height:24}),(0,K.jsx)(`span`,{className:`leading-5 font-bold text-base text-white`,children:x(_.COMMON$OPEN_REPOSITORY)})]})}),(0,K.jsxs)(`div`,{className:`flex flex-col gap-[10px] pb-4`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`span`,{className:`text-sm text-white font-normal leading-[22px]`,children:x(_.HOME$SELECT_OR_INSERT_URL)}),f.length<=1?null:(0,K.jsx)(Be,{providers:f,value:l,className:`max-w-[500px]`,onChange:C,disabled:t})]}),(0,K.jsx)(xt,{provider:l||f[0],value:i?.id||null,repositoryName:i?.full_name||null,placeholder:`user/repo`,disabled:!l||t,onChange:t=>{t?(e?.(t),a(t)):(e?.(null),a(null),c(null))},className:`max-w-auto`}),(()=>{let e=i?.main_branch||null;return(0,K.jsx)(He,{repository:i?.full_name||null,provider:l||f[0],selectedBranch:o,onBranchSelect:w,defaultBranch:e,className:`max-w-full`,disabled:!i||t})})()]}),(0,K.jsx)(ce,{testId:`repo-launch-button`,variant:`primary`,type:`button`,isDisabled:!i||!o||!n&&S||f.length>1&&!l||t,onClick:()=>{if(!(!i||!o)){if(p(i),n){n({repository:i,branch:o,provider:l});return}g({repository:{name:i.full_name||``,gitProvider:i.git_provider||`github`,branch:o.name||`main`},entryPoint:`home_repo_form`},{onSuccess:e=>r(`/conversations/${e.conversation_id}`)})}},className:`w-full`,children:x(n?_.BUTTON$CONFIRM:S?_.HOME$LOADING:_.BUTTON$LAUNCH)})]})}function Yn({isOpen:e,onClose:t,onConfirm:n}){let{t:r}=s(`openhands`),{isLoadingSettings:i}=Ee();return e?(0,K.jsx)(B,{onClose:t,children:(0,K.jsxs)(V,{width:`sm`,className:`relative items-start border border-[var(--oh-border)] !gap-4`,children:[(0,K.jsx)(_e,{onClose:t,testId:`close-open-repository-dialog`}),(0,K.jsx)(`div`,{className:`w-full pr-6`,children:(0,K.jsx)(ne,{title:r(_.COMMON$OPEN_REPOSITORY)})}),(0,K.jsx)(`div`,{className:`w-full`,"data-testid":`open-repository-dialog-body`,children:(0,K.jsx)(Jn,{isLoadingSettings:i,onConfirm:e=>{n(e),t()}})})]})}):null}function Xn(e,t){return e===`new_worktree`?_.COMMON$WORKSPACE_MODE_NEW_WORKTREE:t===`cloud`?_.COMMON$WORKSPACE_MODE_CLOUD_REPO:_.COMMON$WORKSPACE_MODE_LOCAL_REPO}function Zn({mode:e}){return e===`new_worktree`?(0,K.jsx)(D,{className:`size-3`,strokeWidth:2,"aria-hidden":!0}):(0,K.jsx)(ve,{width:12,height:12,color:`white`,"aria-hidden":!0})}var Qn=[`local_repo`,`new_worktree`];function $n({value:e,backendKind:t,onChange:n,disabled:r=!1,testId:i=`workspace-mode-selector`}){let{t:a}=s(`openhands`),[o,c]=(0,G.useState)(!1),l=(0,G.useRef)(null),u=a(Xn(e,t));return(0,G.useEffect)(()=>{if(!o)return;let e=e=>{l.current&&!l.current.contains(e.target)&&c(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[o]),(0,G.useEffect)(()=>{if(!o)return;let e=e=>{e.key===`Escape`&&c(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[o]),(0,K.jsxs)(`div`,{ref:l,className:`relative inline-flex`,children:[(0,K.jsxs)(`button`,{type:`button`,"data-testid":i,"aria-haspopup":`menu`,"aria-expanded":o,"aria-label":u,disabled:r,onClick:()=>c(e=>!e),className:g(`group flex flex-row items-center justify-between gap-2 pl-2.5 pr-2 py-1 rounded-[100px] truncate relative`,`border border-[rgba(71,74,84,0.50)] bg-transparent text-white`,r?`cursor-not-allowed opacity-50`:`cursor-pointer hover:border-[var(--oh-border-subtle)]`),children:[(0,K.jsx)(`span`,{className:`flex size-3 shrink-0 items-center justify-center`,children:(0,K.jsx)(Zn,{mode:e})}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm font-normal leading-5`,children:u}),(0,K.jsx)(v,{className:`size-3 shrink-0 text-white`,"aria-hidden":!0})]}),o?(0,K.jsx)(`div`,{role:`menu`,"data-testid":`${i}-menu`,className:g(`absolute left-0 top-full z-50 mt-1 min-w-[180px] rounded-lg border border-[var(--oh-border)] bg-[var(--oh-surface)] p-1 shadow-lg`,fe),children:Qn.map(r=>{let o=a(Xn(r,t));return(0,K.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":r===e,"data-testid":`${i}-option-${r}`,onClick:()=>{n(r),c(!1)},className:me,children:[(0,K.jsx)(`span`,{className:he,children:(0,K.jsx)(Zn,{mode:r})}),(0,K.jsx)(`span`,{className:`truncate`,children:o})]},r)})}):null]})}function er({workspace:e,repository:t,branch:n,provider:r,workspaceMode:i,backendKind:a,onRepoClick:o,onWorkspaceModeChange:s}){let c=e?e.path.replace(/\/+$/,``).split(`/`).pop()||e.path:null;return(0,K.jsxs)(`div`,{className:`flex flex-row gap-2.5 items-center flex-wrap`,"data-testid":`home-git-control-bar-preview`,children:[(0,K.jsx)(qe,{selectedRepository:t?.full_name??null,gitProvider:r??null,workspaceName:c,onClick:o}),e?(0,K.jsx)($n,{value:i,backendKind:a,onChange:s}):null,n?(0,K.jsx)(Ge,{selectedBranch:n.name,selectedRepository:t?.full_name??null,gitProvider:r??null}):null]})}function tr(){let{t:e}=s(`openhands`),{backend:t}=h(),{navigate:n}=le(),r=t.kind===`local`,[i,a]=(0,G.useState)(!1),[o,c]=(0,G.useState)(null),[u,p]=(0,G.useState)(null),[g,v]=(0,G.useState)(null),[y,b]=(0,G.useState)(null),[S,C]=(0,G.useState)(`local_repo`),[w,T]=(0,G.useState)([]),[ee,E]=(0,G.useState)(!1),{mutateAsync:D,isPending:O}=be(),k=d(),A=O||k,{isConfigured:j,isLoading:N}=Je(),P=!N&&!j,{images:F,files:I,imagesMarkedUploadAsFile:L,clearAllFiles:R}=ge(),{handleUpload:z}=Ke(),{error:B}=M({enabled:r}),V=r?x(B,e):null,H=r?!!o:!!u&&!!g,te=Ve(null,t=>{let i=t.trim(),a=F.length>0||I.length>0;if(!i&&!a||A||P)return;let s={images:[...F],files:[...I]},c={query:a?void 0:i||void 0,entryPoint:`home_chat_launcher`};r&&o?c={...c,workingDir:o.path,workspaceMode:S}:!r&&u&&g&&(c={...c,repository:{name:u.full_name,gitProvider:u.git_provider,branch:g.name}}),w.length>0&&(c={...c,plugins:w});let d=l.loading(e(_.HOME$CREATING_CONVERSATION),f);(async()=>{try{let t=await D(c);l.dismiss(d);try{sessionStorage.removeItem(Le)}catch{}let o=t.conversation_id,u=o.startsWith(`task-`);if(a)if(!r||u){let e=t.task_id??(u?o.slice(5):null);if(!e){m(null);return}Ie(e,{content:i,images:s.images,files:s.files,imagesMarkedUploadAsFile:[...L]}),R(),await Ct({conversationId:o,text:i,images:s.images,imagesMarkedUploadAsFile:L}),n(`/conversations/${o}`);return}else try{await Re({conversationId:o,content:i,images:s.images,files:s.files,imagesMarkedUploadAsFile:L,t:e}),R()}catch(e){m(e instanceof Error?e.message:null);return}u&&i&&await Ct({conversationId:o,text:i,images:[],imagesMarkedUploadAsFile:[]}),n(`/conversations/${o}`)}catch(e){l.dismiss(d),m(e instanceof Error?e.message:null)}})()});return(0,K.jsxs)(`div`,{"data-testid":`home-chat-launcher`,className:`flex w-full flex-col items-center pt-[max(4rem,28vh)] pb-10`,children:[(0,K.jsxs)(`div`,{className:`flex w-full max-w-[800px] flex-col gap-4 md:px-4`,children:[(0,K.jsx)(`div`,{className:`flex w-full justify-center`,children:(0,K.jsx)(zn,{})}),(0,K.jsx)(`div`,{className:`w-full`,children:(0,K.jsx)(We,{onSubmit:te,onFilesPaste:z,disabled:A||P})}),(0,K.jsxs)(`div`,{className:`flex items-center justify-start gap-2`,children:[H?(0,K.jsx)(er,{workspace:o,repository:u,branch:g,provider:y,workspaceMode:S,backendKind:t.kind,onRepoClick:()=>a(!0),onWorkspaceModeChange:C}):(0,K.jsx)(Bn,{kind:r?`local`:`cloud`,onClick:()=>a(!0),disabled:A||!!V,disabledTooltip:V}),(0,K.jsx)(jt,{count:w.length,onClick:()=>E(!0),disabled:A})]}),(0,K.jsxs)(`div`,{className:`mt-8 flex w-full flex-col gap-8`,children:[(0,K.jsx)(On,{}),(0,K.jsx)(Rn,{})]})]}),r?(0,K.jsx)(qn,{isOpen:i,onClose:()=>a(!1),onConfirm:e=>{c(e),p(null),v(null),b(null),C(`local_repo`)}}):(0,K.jsx)(Yn,{isOpen:i,onClose:()=>a(!1),onConfirm:({repository:e,branch:t,provider:n})=>{p(e),v(t),b(n??e.git_provider),c(null),C(`local_repo`)}}),ee&&(0,K.jsx)(At,{selected:w,onChange:T,onClose:()=>E(!1)})]})}function nr(){let e=O(a().search);return(0,K.jsxs)(`div`,{"data-testid":`home-screen`,className:`custom-scrollbar-always h-full overflow-y-auto rounded-xl bg-transparent px-4 md:px-0 lg:px-[42px]`,children:[(0,K.jsx)(`div`,{className:`md:px-4 lg:px-0`,children:(0,K.jsx)(Ye,{})}),(0,K.jsx)(tr,{}),e?null:(0,K.jsx)(N,{})]})}var rr=o(nr);export{rr as t};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{t as r}from"./useInfiniteQuery-c_OmS3lK.js";import{t as i}from"./useQuery-Bs5NFz2s.js";import{Q as a,n as o,st as s}from"./active-backend-context-BZDG15C0.js";import{_ as c}from"./utils-DUD5ScdA.js";import{i as l}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-DOPLJMH9.js";import{t as u}from"./proxy-DYDXxtje.js";import{n as d}from"./use-settings-C6ZxpBDX.js";import{d as f,f as p,l as m}from"./conversation-store-Blc5xysY.js";import{t as h}from"./agent-server-conversation-service.api-DK56YPTs.js";import{t as g}from"./use-is-authed-2UrDIziV.js";var _=e(t()),v=n(),y=e=>(0,v.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,v.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M21 15V2.25L20.25 1.5H5.60999C5.26596 1.50381 4.92547 1.56987 4.60499 1.695C4.28194 1.83856 3.99081 2.0452 3.74868 2.30278C3.50656 2.56036 3.31831 2.8637 3.19499 3.195C3.07229 3.49004 3.00614 3.80552 2.99999 4.125V18.375C2.99638 18.7197 3.06272 19.0616 3.19499 19.38C3.46049 20.0205 3.96749 20.532 4.60499 20.805C4.92547 20.9301 5.26596 20.9962 5.60999 21H5.99999V19.5H5.60999C5.46032 19.5005 5.31218 19.4698 5.17499 19.41C4.90342 19.2974 4.68763 19.0816 4.57499 18.81C4.52706 18.6699 4.50174 18.5231 4.49999 18.375V17.625C4.50174 17.4769 4.52706 17.3301 4.57499 17.19C4.68763 16.9184 4.90342 16.7026 5.17499 16.59C5.31033 16.531 5.45634 16.5004 5.60399 16.5H19.5V19.5H13.5V21H20.25L21 20.25V15ZM5.99999 15V3H19.5V15H5.99999ZM7.49999 4.5H8.99999V6H7.49999V4.5ZM7.49999 7.5H8.99999V9H7.49999V7.5ZM8.99999 10.5H7.49999V12H8.99999V10.5ZM9.74999 20.235L7.91999 22.5H7.49999V18H12V22.5H11.58L9.74999 20.235Z`,fill:`currentColor`})}),b=e=>{if(!e)return[];let t=[];for(let n of Object.keys(e))n&&t.push(n);return t},x=()=>{let{data:e,isLoading:t}=d();return{providers:_.useMemo(()=>b(e?.provider_tokens_set),[e?.provider_tokens_set]),isLoadingSettings:t}};function S(e){switch(e){case`ADDED`:case`added`:return`A`;case`DELETED`:case`deleted`:return`D`;case`UPDATED`:case`modified`:return`M`;case`MOVED`:case`renamed`:return`R`;default:return`M`}}function C(){let e=s().backend;if(e.kind!==`cloud`)throw Error(`Cloud git call requires a cloud backend.`);return e}async function w(e){let t=C(),n=new URLSearchParams;n.set(`provider`,e.provider),n.set(`limit`,String(e.limit??100)),e.query&&n.set(`query`,e.query),e.pageId&&n.set(`page_id`,e.pageId),e.installationId&&n.set(`installation_id`,e.installationId);let r=await u({backend:t,method:`GET`,path:`/api/v1/git/repositories/search?${n.toString()}`});return{items:r?.items??[],next_page_id:r?.next_page_id??null}}async function T(e){let t=C(),n=new URLSearchParams;n.set(`provider`,e.provider),n.set(`limit`,String(e.limit??100)),e.pageId&&n.set(`page_id`,e.pageId);let r=await u({backend:t,method:`GET`,path:`/api/v1/git/installations/search?${n.toString()}`});return{items:r?.items??[],next_page_id:r?.next_page_id??null}}async function E(e){let t=C(),n=new URLSearchParams;n.set(`provider`,e.provider),n.set(`repository`,e.repository),n.set(`limit`,String(e.limit??30)),n.set(`query`,e.query??``),e.pageId&&n.set(`page_id`,e.pageId);let r=await u({backend:t,method:`GET`,path:`/api/v1/git/branches/search?${n.toString()}`});return{items:r?.items??[],next_page_id:r?.next_page_id??null}}var D=e=>e,O=()=>s().backend.kind===`cloud`,k=e=>!e||e===`undefined`||e===`null`,A={items:[],next_page_id:null},j={items:[],next_page_id:null},M={items:[],next_page_id:null},N=class{static async searchGitRepositories(e,t,n=100,r,i){return k(t)||!O()?A:w({provider:D(t),query:e||void 0,limit:n,pageId:r,installationId:i})}static async retrieveUserGitRepositories(e,t,n=30,r){return k(e)||!O()?A:w({provider:D(e),limit:n,pageId:t,installationId:r})}static async retrieveInstallationRepositories(e,t,n,r,i=30){if(k(e)||!O())return A;let a=n[t];return a?w({provider:D(e),installationId:a,limit:i,pageId:r}):A}static async getRepositoryBranches(e,t,n=``,r,i=30){return k(t)||!O()?j:E({provider:D(t),repository:e,query:n||void 0,pageId:r,limit:i})}static async searchRepositoryBranches(e,t,n,r,i=30){return k(t)||!O()?j:E({provider:D(t),repository:e,query:n,pageId:r,limit:i})}static async getUserInstallations(e,t,n=100){return k(e)||!O()?M:T({provider:D(e),pageId:t,limit:n})}static async getGitChanges(e){let t=await h.resolveConversationWorkingDir(e);return(await new l(a({workingDir:t})).gitChanges(t)).map(e=>({path:e.path,status:S(String(e.status))}))}static async getGitChangeDiff(e,t){let n=await new l(a()).gitDiff(t);return{modified:n.modified??``,original:n.original??``}}},P=e=>{let{data:t}=g(),{providers:n}=x(),r=o();return i({queryKey:[`installations`,e,r.backend.id,r.orgId],queryFn:()=>N.getUserInstallations(e),enabled:t&&!!e&&n.length>0&&c(e,r.backend.kind),staleTime:1e3*60*5,gcTime:1e3*60*15})};function F(e){let{provider:t,pageSize:n=30,enabled:i=!0}=e,{providers:a}=x(),{data:s}=P(t),l=s?.items,u=o(),d=t?c(t,u.backend.kind):!1,f=r({queryKey:[`repositories`,t,d,n,u.backend.id,u.orgId,...d?[l||[]]:[]],queryFn:async({pageParam:e})=>{if(!t)throw Error(`Provider is required`);if(d){if(!l)throw Error(`Missing installation list`);let r=e;return await N.retrieveInstallationRepositories(t,r.installationIndex,l,r.pageId??void 0,n)}let r=e;return await N.retrieveUserGitRepositories(t,r??void 0,n)},getNextPageParam:(e,t,n)=>{if(d&&l){let t=n;if(e.next_page_id)return{installationIndex:t.installationIndex,pageId:e.next_page_id};let r=t.installationIndex+1;return r<l.length?{installationIndex:r,pageId:null}:void 0}return e.next_page_id},initialPageParam:d?{installationIndex:0,pageId:null}:null,enabled:i&&(a||[]).length>0&&!!t&&(!d||Array.isArray(l)&&l.length>0),staleTime:1e3*60*5,gcTime:1e3*60*15,refetchOnWindowFocus:!1});return{data:f.data,isLoading:f.isLoading,isError:f.isError,hasNextPage:f.hasNextPage,isFetchingNextPage:f.isFetchingNextPage,fetchNextPage:f.fetchNextPage,onLoadMore:()=>{f.hasNextPage&&!f.isFetchingNextPage&&f.fetchNextPage()}}}function I(e,t,n,r=100){return i({queryKey:[`repositories`,`search`,e,t,r],queryFn:async()=>t?(await N.searchGitRepositories(e,t,r)).items:[],enabled:!!e&&!!t&&!n,staleTime:1e3*60*5,gcTime:1e3*60*15})}function L(e,t){let[n,r]=(0,_.useState)(e);return(0,_.useEffect)(()=>{let n=setTimeout(()=>r(e),t);return()=>clearTimeout(n)},[e,t]),n}var R={recentRepositories:[],lastSelectedProvider:null},z=p()(f((e,t)=>({...R,addRecentRepository:t=>e(e=>({recentRepositories:[t,...e.recentRepositories.filter(e=>e.id!==t.id)].slice(0,3)})),clearRecentRepositories:()=>e(()=>({recentRepositories:[]})),getRecentRepositories:()=>t().recentRepositories,setLastSelectedProvider:t=>e(()=>({lastSelectedProvider:t})),getLastSelectedProvider:()=>t().lastSelectedProvider}),{name:`home-store`,storage:m(()=>localStorage)}));export{N as a,y as c,F as i,L as n,S as o,I as r,x as s,z as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./home-aCos-5vc.js";export{e as default};
@@ -1 +0,0 @@
1
- import{D as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js";var t=e(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]);export{t};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{n as r}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dcc51rps-rfV8mQ9m.js";import{t as i}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js";import{m as a}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js";import{t as o}from"./useMutation-6ZsQCqAn.js";import{Ft as s,L as c,Mt as l,Q as u,jt as d,lt as f,n as ee,st as p}from"./active-backend-context-BZDG15C0.js";import{t as m,z as h}from"./utils-DUD5ScdA.js";import{t as g}from"./bot-CGPCg03p.js";import{c as _,i as v,l as y,m as b,p as te,r as x,t as S,u as C}from"./settings-service.api-3yAUFcaP.js";import{n as w}from"./use-settings-C6ZxpBDX.js";import{t as ne}from"./modal-backdrop-BSzNhM4r.js";import{n as re}from"./modal-classes-D5_b5vMi.js";import{t as ie}from"./brand-button-Blxv5nww.js";import{t as T}from"./styled-tooltip-B6JXcsmL.js";import{t as ae}from"./modal-close-button-objukxk_.js";import{t as E}from"./settings-input-CWUEHHvS.js";import{t as D}from"./secrets-service-BtsgYSlj.js";import{c as oe,i as se,s as O,t as k}from"./mcp-marketplace-utils-BJWJgbB6.js";import{t as A}from"./vendor~root-layout~index-home~home~mcp~automations-list~automation-templates~automation-set~bxsimjx0-D7IDevqN.js";var j=e(t()),M=n(),N=e=>(0,M.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,M.jsx)(`path`,{d:`M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z`,fill:`currentColor`})});function ce({fieldKey:e,checked:t,onToggle:n}){let{t:r}=i(`openhands`);return(0,M.jsxs)(`label`,{"data-testid":`mcp-install-save-secret-${e}`,className:m(`flex items-center gap-2 px-3 py-2 mt-0.5 rounded-lg border cursor-pointer transition-colors`,t?`border-green-500/35 bg-green-500/10`:`border-[var(--oh-border)] bg-transparent hover:bg-white/[0.03]`),children:[(0,M.jsx)(`input`,{className:`sr-only`,id:`mcp-save-secret-checkbox-${e}`,type:`checkbox`,checked:t,onChange:e=>n(e.target.checked)}),(0,M.jsx)(`span`,{"aria-hidden":`true`,className:m(`relative inline-flex h-[22px] w-[40px] shrink-0 items-center rounded-full border transition-colors duration-200`,t?`border-green-500 bg-green-500`:`border-[var(--oh-border)] bg-surface-raised`),children:(0,M.jsx)(`span`,{className:m(`inline-block size-4 rounded-full transition-transform duration-200`,t?`translate-x-[21px] bg-white`:`translate-x-[2px] bg-[var(--oh-muted)]`)})}),(0,M.jsx)(`span`,{className:`text-sm`,children:r(h.MCP$ALSO_SAVE_AS_SECRET)}),(0,M.jsx)(`code`,{className:m(`ml-auto text-[11px] font-mono tracking-tight border rounded px-1.5 py-0.5`,t?`text-green-500 border-green-500/35 bg-white/[0.04]`:`text-tertiary-alt border-[var(--oh-border)]`),children:e}),(0,M.jsx)(T,{content:r(h.MCP$SAVE_AS_SECRET_TOOLTIP),placement:`top`,children:(0,M.jsx)(`button`,{type:`button`,"aria-label":r(h.MCP$SAVE_AS_SECRET_TOOLTIP),className:`flex items-center justify-center size-[15px] shrink-0 rounded-full border border-[var(--oh-muted)] text-tertiary-alt text-[9px] font-bold cursor-help`,onClick:e=>e.preventDefault(),children:`?`})})]})}var P={xs:`h-4 w-4 rounded [&>svg]:h-2.5 [&>svg]:w-2.5`,sm:`h-5 w-5 rounded-md [&>svg]:h-3 [&>svg]:w-3`,md:`h-10 w-10 rounded-lg [&>svg]:h-5 [&>svg]:w-5`},F={slack:N};function le({entry:e,size:t=`md`,className:n,fallback:r,testId:i}){let a=e?F[e.id]:void 0;return(0,M.jsx)(`span`,{"aria-hidden":`true`,title:e?.name,"data-testid":i,className:m(`inline-flex shrink-0 items-center justify-center overflow-hidden`,`border border-white/10 shadow-[inset_0_1px_0_rgba(255,255,255,0.18)]`,P[t],n),style:{backgroundColor:e?.iconBg??`var(--oh-color-tertiary)`,color:e?.iconColor??`#FFFFFF`},children:a?(0,M.jsx)(a,{}):e?.logoUrl?(0,M.jsx)(`img`,{src:e.logoUrl,alt:`${e.name} logo`,className:`h-full w-full object-contain p-[22%]`,onError:e=>{let t=e.currentTarget;t.style.display=`none`}}):r??(0,M.jsx)(g,{className:`h-5 w-5`,strokeWidth:2.25})})}var ue=new Set([`invalid_auth`,`not_authed`,`account_inactive`,`token_revoked`,`token_expired`]),I=e=>e.is_error?e.text||`tool call failed`:null,de={github:{toolCall:{name:`get_me`,arguments:{}},interpret:I},linear:{toolCall:{name:`list_teams`,arguments:{}},interpret:I},slack:{toolCall:{name:`slack_list_channels`,arguments:{limit:1}},interpret:e=>{if(e.is_error)return e.text||`tool call failed`;try{let t=JSON.parse(e.text);if(t?.ok===!1&&ue.has(t.error))return String(t.error)}catch{}return null}}};function L(e){let t=k(e,O(A));return t?de[t.id]:void 0}var fe=4,pe=/token|key|secret|auth/i,me=[/\bgh[pousr]_[A-Za-z0-9]{16,}\b/g,/\bgithub_pat_[A-Za-z0-9_]{20,}\b/g,/\bxox[a-z](?:-[A-Za-z0-9]+)+/g,/\blin_api_[A-Za-z0-9]{10,}\b/g,/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{5,}\.[A-Za-z0-9_-]{5,}\b/g],he=/\bBearer\s+[A-Za-z0-9._~+/=-]{8,}/gi;function R(e,t){typeof t==`string`&&(t.length<fe||t!==`**********`&&e.add(t))}function z(e,t){for(let n of Object.values(t??{}))R(e,n)}function ge(e,t){if(t)try{let n=new URL(t);R(e,n.username),R(e,n.password),R(e,decodeURIComponent(n.username)),R(e,decodeURIComponent(n.password)),n.searchParams.forEach((t,n)=>{pe.test(n)&&R(e,t)})}catch{}}function _e(e,t){if(t)switch(t.strategy){case`api_key`:case`bearer`:R(e,t.value);break;case`basic`:R(e,t.username),R(e,t.password);break;case`header`:z(e,t.headers);break;case`oauth2`:R(e,t.authentication?.client_secret),z(e,t.state?.tokens);break;default:break}}function ve(e){let t=new Set;return z(t,e.env),z(t,e.headers),_e(t,e.auth),ge(t,e.url),[...t].sort((e,t)=>t.length-e.length)}function ye(e,...t){if(!e)return e;let n=e;for(let e of t)if(e)for(let t of ve(e))n=n.split(t).join(x);n=n.replace(he,`Bearer ${x}`);for(let e of me)n=n.replace(e,x);return n}var B=e=>!!e&&typeof e==`object`&&!Array.isArray(e),be=e=>{if(!B(e))return;let t=Object.entries(e).filter(e=>typeof e[1]==`string`);return t.length>0?Object.fromEntries(t):void 0},xe=e=>!!e&&Object.values(e).some(e=>e===`**********`);function Se(e,t){if(!B(e))return e;let n=B(t)?t:{},r={...e};for(let[t,i]of Object.entries(e))if(i===`**********`){let e=n[t];typeof e==`string`&&e!==`**********`&&(r[t]=e)}else B(i)&&(r[t]=Se(i,n[t]));return r}var Ce=(e,t)=>t[e.id];async function we(e){let t=(await S.fetchSettingsFromApi(`encrypted`)).agent_settings?.mcp_config;if(B(t))return Ce(e,t)}async function Te(e){let t=e.type===`stdio`&&xe(e.env),n=(e.type===`sse`||e.type===`shttp`)&&_(e.auth),r=(e.type===`sse`||e.type===`shttp`)&&xe(e.headers);if(!t&&!n&&!r)return e;try{let i=await we(e);if(!i)return e;if(t){let t=be(i.env)??{},n=Object.fromEntries(Object.entries(e.env??{}).map(([e,n])=>[e,n===`**********`&&typeof t[e]==`string`?t[e]:n]));return{...e,env:n}}let a={...e};if(n&&b(i.auth)&&(a.auth=Se(e.auth,i.auth)),r){let t=be(i.headers)??{};a.headers=Object.fromEntries(Object.entries(e.headers??{}).map(([e,n])=>[e,n===`**********`&&typeof t[e]==`string`?t[e]:n]))}return a}catch{return e}}var Ee=120;function De(e){return e.type===`stdio`?{type:`stdio`,command:e.command,...e.args?.length&&{args:e.args},...e.env&&Object.keys(e.env).length>0&&{env:e.env}}:{type:e.type===`sse`?`sse`:`http`,url:e.url,...e.headers&&Object.keys(e.headers).length>0&&{headers:e.headers},...e.auth?{auth:e.auth}:{}}}function Oe(e){return e.auth?.strategy===`oauth2`?Ee:e.timeout}async function ke(e){let t=L(e),n=await Te(e),r=De(n),i=Oe(e);return{request:{server:r,...e.name?{name:e.name}:{},...i===void 0?{}:{timeout:i},...t?{tool_call:t.toolCall}:{}},substituted:n}}function Ae(e,t){return e.ok?e.tool_result?{...e,tool_result:{...e.tool_result,text:ye(e.tool_result.text,...t)}}:e:{...e,error:ye(e.error,...t)}}function je(e,t,n){let r=Ae(e,n);if(r.ok&&t&&r.tool_result&&r.tools.includes(t.toolCall.name)){let e=t.interpret(r.tool_result);if(e)return{ok:!1,error:e,error_kind:`credentials`}}return r}function Me(){if(p().backend.kind===`local`){let{host:e,apiKey:t}=u();return{host:e,...t?{apiKey:t}:{}}}let e=f().find(e=>e.kind===`local`&&e.host);if(e)return{host:e.host.replace(/\/+$/,``),...e.apiKey?{apiKey:e.apiKey}:{}};throw Error(`OAuth authorization requires a reachable local backend.`)}function V(){let{host:e,apiKey:t}=Me();return new a({host:e,...t?{apiKey:t}:{},timeout:125e3})}function Ne(e){return e.status===`succeeded`?{ok:!0,tools:e.tools??[],...e.tool_result!==void 0&&{tool_result:e.tool_result},...e.oauth_state!==void 0&&{oauth_state:e.oauth_state}}:{ok:!1,error:e.error||`OAuth authorization did not complete`,error_kind:e.error_kind||`unknown`}}var Pe=e=>new Promise(t=>{window.setTimeout(t,e)}),H=class e{static async testServer(e){if(p().backend.kind===`cloud`)return{ok:!0,tools:[]};let t=L(e),{host:n,apiKey:r}=u(),i=new a({host:n,...r?{apiKey:r}:{}});try{let{request:n,substituted:r}=await ke(e);return je(await i.testServer(n),t,[r,e])}finally{i.close()}}static async startOAuth(t){let n=V();try{return await e.startOAuthWithClient(n,t)}finally{n.close()}}static async getOAuthStatus(t){let n=V();try{return await e.getOAuthStatusWithClient(n,t)}finally{n.close()}}static async submitOAuthCallback(t,n){let r=V();try{return await e.submitOAuthCallbackWithClient(r,t,n)}finally{r.close()}}static async authorizeOAuth(t){let n=L(t),r=e=>je(e,n,[t]),i=window.open(`about:blank`,`_blank`),a=V();try{let n=await e.startOAuthWithClient(a,t);if(!n.ok||!n.job_id||!n.authorization_url)return i?.close(),r({ok:!1,error:n.error||`Could not start OAuth authorization`,error_kind:n.error_kind||`unknown`});let o=await e.getOAuthStatusWithClient(a,n.job_id);for(let t=0;t<20;t+=1){if(o.status===`succeeded`||o.status===`failed`)return i?.close(),r(Ne(o));if(o.callback_ready)break;await Pe(250),o=await e.getOAuthStatusWithClient(a,n.job_id)}i&&(i.location.href=n.authorization_url);for(let t=0;t<Ee;t+=1)if(await Pe(1e3),o=await e.getOAuthStatusWithClient(a,n.job_id),o.status===`succeeded`||o.status===`failed`)return i?.close(),r(Ne(o));return{ok:!1,error:`OAuth authorization timed out`,error_kind:`timeout`}}finally{a.close()}}static async startOAuthWithClient(e,t){let{request:n}=await ke(t);return e.startOAuth(n)}static async getOAuthStatusWithClient(e,t){return await e.getOAuthStatus(t)}static async submitOAuthCallbackWithClient(e,t,n){return await e.submitOAuthCallback(t,{callback_url:n})}},U=e=>Object.keys(e??{}).sort();function W(e){return e.type===`stdio`?JSON.stringify({type:e.type,name:e.name??``,command:e.command??``,args:e.args??[],envKeys:U(e.env)}):JSON.stringify({type:e.type,name:e.name??``,url:e.url??``,headerKeys:U(e.headers),authStrategy:e.auth?.strategy??``,authHeaderName:e.auth?.strategy===`api_key`?e.auth.header_name??``:``,authHeaderKeys:e.auth?.strategy===`header`?U(e.auth.headers):[]})}var G={},K=new Set,Fe=1;function q(e){G=e,K.forEach(e=>e())}function Ie(){return G}function Le(e){return K.add(e),()=>{K.delete(e)}}function Re(e){let t=Fe;return Fe+=1,q({...G,[e]:{status:`checking`,checkId:t}}),t}function J(e,t,n){let r=G[e];r?.status!==`checking`||r.checkId!==t||q({...G,[e]:n})}function ze(e,t){q({...G,[e]:t})}function Be(e){if(!(e in G))return;let{[e]:t,...n}=G;q(n)}var Ve=/\b(401|403)\b|unauthorized|forbidden|invalid[ _-]?(token|credentials?|api[ _-]?key)/i;function He(e,t){return{status:`failed`,kind:`unknown`,error:ye(t instanceof Error?t.message:String(t),e),checkedAt:Date.now()}}function Y(e,t){let n=Date.now();if(!t.ok)return{status:`failed`,kind:(t.error_kind===`connection`||t.error_kind===`unknown`)&&Ve.test(t.error)?`credentials`:t.error_kind,error:t.error,checkedAt:n};let r=L(e);return{status:`healthy`,verification:r&&t.tools.includes(r.toolCall.name)&&t.tool_result&&!t.tool_result.is_error?`verified`:`connectivity-only`,toolCount:t.tools.length,checkedAt:n}}async function Ue(e){let t=W(e),n=Re(t),r;try{r=Y(e,await H.testServer(e))}catch(t){r=He(e,t)}J(t,n,r)}async function We(e){let t=W(e),n=Re(t);try{let r=await H.authorizeOAuth(e);return J(t,n,Y(e,r)),r}catch(r){return J(t,n,He(e,r)),null}}function X(e,t,n){let r=W(e);n.some(e=>W(e)===r)||ze(r,Y(e,t))}function Ge(){let e=r(),{data:t}=w();return o({mutationFn:async e=>{if(!t)throw Error(`MCP settings are still loading. Please try again.`);let n=v(t.mcp_config??y(t.agent_settings?.mcp_config),e.name,e.type);await S.createMcpServer(n,C(e))},onSuccess:()=>{e.invalidateQueries({queryKey:c.personal()})}})}function Ke(){return o({mutationFn:e=>H.testServer(e)})}function qe(e){return e.length<=3?e.join(`, `):`${e.slice(0,3).join(`, `)} … (+${e.length-3})`}function Je(){let{t:e}=i(`openhands`),t=r();return(0,j.useCallback)((n,r,i)=>{let a=n.filter(e=>i[e.key]&&(r[e.key]??``).trim());return a.length===0?Promise.resolve():Promise.allSettled(a.map(e=>D.createSecret(e.key,r[e.key].trim(),e.label))).then(n=>{let r=a.filter((e,t)=>n[t].status===`fulfilled`).map(e=>e.key),i=a.filter((e,t)=>n[t].status===`rejected`).map(e=>e.key);r.length>0&&(t.invalidateQueries({queryKey:[`secrets-search`]}),t.invalidateQueries({queryKey:[`secrets`]}),l(e(h.MCP$SECRETS_SAVED,{keys:qe(r)}))),i.length>0&&d(e(h.MCP$SECRETS_SAVE_FAILED,{keys:qe(i)}))})},[e,t])}function Z(e,t,n){switch(t){case`timeout`:return e(h.MCP$TEST_ERROR_TIMEOUT);case`connection`:return e(h.MCP$TEST_ERROR_CONNECTION);case`credentials`:return e(h.MCP$TEST_ERROR_CREDENTIALS,{error:n});default:return e(h.MCP$TEST_ERROR_UNKNOWN,{error:n})}}function Q(e){let t=/\[([^\]]+)\]\(([^)]+)\)/g,n=[],r=0;for(let i of e.matchAll(t))i.index>r&&n.push(e.slice(r,i.index)),n.push((0,M.jsx)(`a`,{href:/^https?:\/\//i.test(i[2])?i[2]:`#`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-white transition-colors`,children:i[1]},i.index)),r=i.index+i[0].length;return r<e.length&&n.push(e.slice(r)),n}function Ye(e){return e?.transport.kind!==`shttp`&&e?.transport.kind!==`sse`?!1:[`api_key`,`bearer`].includes(e.auth.strategy)}function Xe(e){return!!e&&e.auth.strategy===`oauth2`}function Ze(e){return e.transport.kind===`stdio`?e.auth.apiKeyOptional??!1:e.auth.apiKeyOptional??e.transport.apiKeyOptional??!1}function $(e){return e?.transport.kind!==`shttp`&&e?.transport.kind!==`sse`?[]:e.transport.headerFields??[]}function Qe(e){let t={},n={},r=se(e),i=r?.transport;if(i?.kind===`stdio`){for(let e of i.envFields??[])t[e.key]=``,n[e.key]=e.type===`password`;for(let e of i.argFields??[])t[e.key]=``}else if(i?.kind===`shttp`||i?.kind===`sse`){t.url=i.url;for(let e of $(r))t[e.key]=``,n[e.key]=e.type===`password`;Ye(r)&&(t.api_key=``,r?.auth.credentialSecretName&&(n.api_key=r.auth.saveCredentialAsSecretByDefault??!1))}return{values:t,errors:{},savedAsSecret:n}}function $e({entry:e,existingServers:t,onClose:n,onSuccess:r}){let{t:a}=i(`openhands`),{mutate:o,isPending:c}=Ge(),{mutate:u,isPending:d}=Ke(),f=Je(),{backend:p}=ee(),m=p.kind===`cloud`,[g,_]=j.useState(()=>Qe(e)),v=j.useRef(g);v.current=g;let[y,b]=j.useState(null),[x,S]=j.useState(!1),[C,w]=j.useState(!1),T=se(e),D=T?.transport,O=d||C||c||x,k=(e,t)=>{_(n=>({...n,values:{...n.values,[e]:t},errors:{...n.errors,[e]:null}})),b(null)},A=(e,t)=>{_(n=>({...n,savedAsSecret:{...n.savedAsSecret,[e]:t}}))},N=()=>{let e=T?.auth.credentialSecretName,t=v.current.values.api_key?.trim();return!e||!t||!v.current.savedAsSecret.api_key?Promise.resolve():f([{key:e,label:T.auth.credentialLabel??e,type:`password`,required:!0}],{[e]:t},{[e]:!0})},P=()=>D?.kind===`stdio`?f(D.envFields??[],v.current.values,v.current.savedAsSecret):D?.kind===`shttp`||D?.kind===`sse`?Promise.all([N(),f($(T),v.current.values,v.current.savedAsSecret)]).then(()=>void 0):Promise.resolve(),F=i=>{if(i.auth?.strategy===`oauth2`){w(!0),H.authorizeOAuth(i).then(c=>{if(!c.ok){b(Z(a,c.error_kind,c.error));return}let u=c.oauth_state?{...i,auth:{...i.auth,state:c.oauth_state}}:i;o(u,{onSuccess:()=>{m||X(u,c,t),l(a(h.MCP$INSTALL_SUCCESS)),S(!0),(async()=>{try{await P()}finally{r?.(e),n()}})()},onError:e=>{b(s(e)||a(h.ERROR$GENERIC))}})}).catch(e=>{b(s(e)||a(h.ERROR$GENERIC))}).finally(()=>w(!1));return}u(i,{onSuccess:c=>{if(!c.ok){b(Z(a,c.error_kind,c.error));return}let u=c.oauth_state&&i.auth?.strategy===`oauth2`?{...i,auth:{...i.auth,state:c.oauth_state}}:i;o(u,{onSuccess:()=>{m||X(u,c,t),l(a(h.MCP$INSTALL_SUCCESS)),S(!0),(async()=>{try{await P()}finally{r?.(e),n()}})()},onError:e=>{b(s(e)||a(h.ERROR$GENERIC))}})},onError:e=>{b(s(e)||a(h.ERROR$GENERIC))}})},ue=()=>{if(D?.kind!==`shttp`&&D?.kind!==`sse`||!T)return;let t=g.values.api_key?.trim()??``,n=D.urlEditable?g.values.url?.trim()??``:D.url,r=Xe(T),i=Ye(T),o=$(T),s={};if(!n)s.url=a(h.SETTINGS$MCP_ERROR_URL_REQUIRED);else try{let e=new URL(n);[`http:`,`https:`].includes(e.protocol)||(s.url=a(h.SETTINGS$MCP_ERROR_URL_INVALID_PROTOCOL))}catch{s.url=a(h.SETTINGS$MCP_ERROR_URL_INVALID)}for(let e of o)e.required&&!(g.values[e.key]??``).trim()&&(s[e.key]=a(h.MCP$ERROR_FIELD_REQUIRED));if(!r&&i&&!Ze(T)&&!t&&(s.api_key=a(h.MCP$ERROR_FIELD_REQUIRED)),Object.values(s).some(Boolean)){_(e=>({...e,errors:s}));return}let c=r?oe(T):void 0,l=Object.fromEntries(o.map(e=>[e.key,g.values[e.key]?.trim()??``]).filter(([,e])=>e)),u=Object.keys(l).length>0,d;r?d={strategy:`oauth2`,...c&&{authentication:c}}:i&&t?d=T.auth.strategy===`api_key`?{strategy:`api_key`,value:t,...T.auth.apiKeyHeaderName&&{header_name:T.auth.apiKeyHeaderName}}:{strategy:`bearer`,value:t}:u&&(d={strategy:`header`,headers:l}),F({id:``,type:D.kind,name:te(e.id),url:n,...d&&{auth:d},...u&&d?.strategy!==`header`&&{headers:l}})},I=()=>{if(D?.kind!==`stdio`)return;let e=D,t={};for(let n of e.envFields??[])n.required&&!(g.values[n.key]??``).trim()&&(t[n.key]=a(h.MCP$ERROR_FIELD_REQUIRED));for(let n of e.argFields??[])n.required&&!(g.values[n.key]??``).trim()&&(t[n.key]=a(h.MCP$ERROR_FIELD_REQUIRED));if(Object.values(t).some(Boolean)){_(e=>({...e,errors:t}));return}let n={};for(let t of e.envFields??[]){let e=g.values[t.key]?.trim();e&&(n[t.key]=e)}let r=[];for(let t of e.argFields??[]){let e=g.values[t.key]?.trim();if(e)for(let t of e.split(/\s+/))t&&r.push(t)}F({id:``,type:`stdio`,name:e.serverName,command:e.command,args:[...e.args,...r],...Object.keys(n).length>0&&{env:n}})};return(0,M.jsx)(ne,{onClose:n,"aria-label":e.name,children:(0,M.jsxs)(`form`,{"data-testid":`mcp-install-modal`,"data-marketplace-id":e.id,onSubmit:e=>(e.preventDefault(),b(null),D?.kind===`shttp`||D?.kind===`sse`?ue():I()),className:`relative bg-base-secondary p-6 rounded-xl flex flex-col gap-4 border border-[var(--oh-border)] w-[520px] max-w-[90vw] max-h-[85vh] overflow-y-auto custom-scrollbar`,children:[(0,M.jsx)(ae,{onClose:n,testId:`mcp-install-modal-close`,disabled:O}),(0,M.jsxs)(`div`,{className:`flex items-start gap-3 pr-6`,children:[(0,M.jsx)(le,{entry:e}),(0,M.jsxs)(`div`,{className:`flex flex-col flex-1`,children:[(0,M.jsx)(`h2`,{className:re,children:e.name}),(0,M.jsx)(`p`,{className:`text-xs text-tertiary-light`,children:e.description})]})]}),e.installHint&&(0,M.jsx)(`p`,{className:`text-xs text-tertiary-light`,children:e.installHint}),e.docsUrl&&(0,M.jsx)(`a`,{href:e.docsUrl,target:`_blank`,rel:`noreferrer`,className:`text-xs text-[var(--oh-muted)] hover:text-white hover:underline self-start transition-colors`,children:a(h.MCP$VIEW_DOCS)}),(0,M.jsx)(`div`,{className:`flex flex-col gap-3`,children:(()=>{if(D?.kind===`shttp`||D?.kind===`sse`){let e=Xe(T),t=Ye(T),n=T?Ze(T):!1,r=T?.auth.credentialSecretName,i=$(T);return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(E,{testId:`mcp-install-field-url`,name:`url`,type:`url`,label:a(h.SETTINGS$MCP_URL),value:g.values.url??D.url,onChange:e=>k(`url`,e),isDisabled:!D.urlEditable,className:`w-full`}),g.errors.url&&(0,M.jsx)(`p`,{className:`text-xs text-red-500`,children:g.errors.url}),i.map(e=>(0,M.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,M.jsx)(E,{testId:`mcp-install-field-${e.key}`,name:e.key,type:e.type===`password`?`password`:`text`,label:e.label,value:g.values[e.key]??``,onChange:t=>k(e.key,t),placeholder:e.placeholder,required:e.required,showOptionalTag:!e.required,className:`w-full`}),e.helperText&&(0,M.jsx)(`p`,{className:`text-xs text-tertiary-alt`,children:Q(e.helperText)}),g.errors[e.key]&&(0,M.jsx)(`p`,{className:`text-xs text-red-500`,children:g.errors[e.key]}),e.key in g.savedAsSecret&&(0,M.jsx)(ce,{fieldKey:e.key,checked:g.savedAsSecret[e.key]??!1,onToggle:t=>A(e.key,t)})]},e.key)),e?(0,M.jsxs)(`div`,{"data-testid":`mcp-install-oauth-info`,className:`flex flex-col gap-2 p-3 rounded-lg border border-[var(--oh-border)] bg-base-tertiary`,children:[(0,M.jsx)(`p`,{className:`text-sm text-secondary-light`,children:a(h.MCP$OAUTH_CONNECT_INFO)}),(0,M.jsx)(`p`,{className:`text-xs text-tertiary-alt`,children:a(h.MCP$OAUTH_CONNECT_HINT)})]}):t?(0,M.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,M.jsx)(E,{testId:`mcp-install-field-api_key`,name:`api_key`,type:`password`,label:T?.auth.credentialLabel??a(h.SETTINGS$MCP_API_KEY),value:g.values.api_key??``,onChange:e=>k(`api_key`,e),placeholder:T?.auth.credentialPlaceholder??a(h.SETTINGS$MCP_API_KEY_PLACEHOLDER),showOptionalTag:n,required:!n,className:`w-full`}),T?.auth.credentialHelp&&(0,M.jsx)(`p`,{className:`text-xs text-tertiary-alt`,children:Q(T.auth.credentialHelp)}),g.errors.api_key&&(0,M.jsx)(`p`,{className:`text-xs text-red-500`,children:g.errors.api_key}),r&&(0,M.jsx)(ce,{fieldKey:r,checked:g.savedAsSecret.api_key??!1,onToggle:e=>A(`api_key`,e)})]}):null]})}if(D?.kind!==`stdio`)return null;let e=D;return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(E,{testId:`mcp-install-field-command-readonly`,name:`command-readonly`,type:`text`,label:a(h.MCP$COMMAND_LABEL),value:`${e.command} ${e.args.join(` `)}`.trim(),onChange:()=>{},isDisabled:!0,className:`w-full`}),(e.envFields??[]).map(e=>(0,M.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,M.jsx)(E,{testId:`mcp-install-field-${e.key}`,name:e.key,type:e.type===`password`?`password`:`text`,label:e.label,value:g.values[e.key]??``,onChange:t=>k(e.key,t),placeholder:e.placeholder,required:e.required,showOptionalTag:!e.required,className:`w-full`}),e.helperText&&(0,M.jsx)(`p`,{className:`text-xs text-tertiary-alt`,children:Q(e.helperText)}),g.errors[e.key]&&(0,M.jsx)(`p`,{className:`text-xs text-red-500`,children:g.errors[e.key]}),e.key in g.savedAsSecret&&(0,M.jsx)(ce,{fieldKey:e.key,checked:g.savedAsSecret[e.key],onToggle:t=>A(e.key,t)})]},e.key)),(e.argFields??[]).map(e=>(0,M.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,M.jsx)(E,{testId:`mcp-install-field-${e.key}`,name:e.key,type:e.type===`password`?`password`:`text`,label:e.label,value:g.values[e.key]??``,onChange:t=>k(e.key,t),placeholder:e.placeholder,required:e.required,showOptionalTag:!e.required,className:`w-full`}),e.helperText&&(0,M.jsx)(`p`,{className:`text-xs text-tertiary-alt`,children:Q(e.helperText)}),g.errors[e.key]&&(0,M.jsx)(`p`,{className:`text-xs text-red-500`,children:g.errors[e.key]})]},e.key))]})})()}),y&&(0,M.jsx)(`p`,{"data-testid":`mcp-install-modal-error`,className:`text-sm text-red-500 whitespace-pre-wrap`,children:y}),(0,M.jsxs)(`div`,{className:`flex justify-end gap-2 mt-2`,children:[(0,M.jsx)(ie,{type:`button`,variant:`secondary`,onClick:n,testId:`mcp-install-cancel`,isDisabled:O,children:a(h.BUTTON$CANCEL)}),(0,M.jsx)(ie,{type:`submit`,variant:`primary`,isDisabled:O,testId:`mcp-install-submit`,children:a(d||C?h.MCP$VERIFYING:c||x?h.SETTINGS$SAVING:h.MCP$INSTALL_BUTTON)})]})]})})}export{Ue as a,Be as c,W as d,H as f,Ge as i,Ie as l,N as m,Z as n,We as o,le as p,Ke as r,X as s,$e as t,Le as u};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{n as r}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dcc51rps-rfV8mQ9m.js";import{t as i}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js";import{t as a}from"./useMutation-6ZsQCqAn.js";import{t as o}from"./useQuery-Bs5NFz2s.js";import{Mt as s,jt as c,n as l}from"./active-backend-context-BZDG15C0.js";import{t as u,z as d}from"./utils-DUD5ScdA.js";import{g as f,n as p,t as m,x as h}from"./use-tracking-Bhu7gk2y.js";import{r as g}from"./modal-classes-D5_b5vMi.js";import{f as _,l as v}from"./form-control-classes-CGXBLcn1.js";import{t as y}from"./brand-button-Blxv5nww.js";import{u as b}from"./dropdown-classes-tLhpwtxS.js";import{t as x}from"./settings-input-CWUEHHvS.js";import{t as S}from"./use-llm-profiles-diZS4FiN.js";import{t as C}from"./settings-dropdown-input-Ba1UN5Du.js";import{t as w}from"./x-mark-BopmFoBq.js";import{t as T}from"./automation-C_eCrGyP.js";import{n as E}from"./api-error-message-BEIE_yD1.js";import{t as D}from"./use-manifest-capabilities-HIWCtIUm.js";var O=e(t(),1),k=[`automation-detail`],A=[`automation-runs`];function j(e){let{id:t,enabled:n=!0}=e,r=l();return o({queryKey:[...k,t,r.backend.id,r.orgId],queryFn:()=>p.getAutomation(t),staleTime:300*1e3,enabled:!!t&&n})}function M(e){let{id:t,limit:n=20,offset:r=0,enabled:i=!0}=e,a=l();return o({queryKey:[...A,t,{limit:n,offset:r},a.backend.id,a.orgId],queryFn:()=>p.getAutomationRuns(t,n,r),staleTime:60*1e3,enabled:!!t&&i,refetchInterval:e=>{let t=e.state.data;return t&&t.runs.some(e=>e.status===T.PENDING||e.status===T.RUNNING)?3e3:!1}})}var N=[`automations`];function P(e={}){let{limit:t=50,offset:n=0,enabled:r=!0}=e,i=l();return o({queryKey:[...N,{limit:t,offset:n},i.backend.id,i.orgId],queryFn:()=>p.getAutomations(t,n),staleTime:0,enabled:r})}function F(){let e=r(),t=l(),{trackAutomationDisableButton:n}=m();return a({mutationFn:({id:e,enabled:t})=>p.toggleAutomation(e,t),onSuccess:(r,i)=>{e.invalidateQueries({queryKey:N}),e.invalidateQueries({queryKey:k}),i.enabled||n({backendKind:t.backend.kind})}})}function I(){let e=r(),t=l(),{trackAutomationImported:n}=m();return a({mutationFn:e=>p.createAutomation({...e,enabled:!1}),onSuccess:()=>{e.invalidateQueries({queryKey:N}),n({backendKind:t.backend.kind})}})}function L(){let e=r(),t=l(),{trackAutomationEdited:n}=m();return a({mutationFn:({id:e,body:t})=>p.updateAutomation(e,t),onSuccess:()=>{e.invalidateQueries({queryKey:N}),e.invalidateQueries({queryKey:k}),n({backendKind:t.backend.kind})}})}function R(){let e=r(),t=l(),{trackAutomationDeleted:n}=m();return a({mutationFn:e=>p.deleteAutomation(e),onSuccess:()=>{e.invalidateQueries({queryKey:N}),n({backendKind:t.backend.kind})}})}function z(){let e=r(),t=l(),{trackAutomationExecuted:n}=m();return a({mutationFn:e=>p.dispatchAutomation(e),onSuccess:(r,i)=>{e.invalidateQueries({queryKey:N}),e.invalidateQueries({queryKey:k}),e.invalidateQueries({queryKey:[...A,i]}),n({backendKind:t.backend.kind})}})}function B(){let e=r();return a({mutationFn:({runId:e})=>p.cancelAutomationRun(e),onSuccess:(t,{automationId:n})=>{e.invalidateQueries({queryKey:N}),e.invalidateQueries({queryKey:k}),e.invalidateQueries({queryKey:[...A,n]})}})}var V=/^(\d+)$/;function H(e,t,n){let r=e.match(V);if(!r)return null;let i=Number(r[1]);return Number.isNaN(i)||i<t||i>n?null:i}function U(e){let t=(e??``).trim();if(!t)return{kind:`custom`,raw:``};let n=t.split(/\s+/);if(n.length!==5)return{kind:`custom`,raw:t};let[r,i,a,o,s]=n,c=H(r,0,59),l=H(i,0,23);if(c===null||l===null)return{kind:`custom`,raw:t};if(a!==`*`||o!==`*`)return{kind:`custom`,raw:t,hour:l,minute:c};if(s===`*`||s===`0-6`)return{kind:`daily`,hour:l,minute:c};if(s===`1-5`)return{kind:`weekdays`,hour:l,minute:c};let u=H(s,0,6);return u===null?{kind:`custom`,raw:t,hour:l,minute:c}:{kind:`weekly`,hour:l,minute:c,weekday:u}}function W(e){let{kind:t,hour:n,minute:r,weekday:i}=e;switch(t){case`daily`:return`${r} ${n} * * *`;case`weekdays`:return`${r} ${n} * * 1-5`;case`weekly`:return`${r} ${n} * * ${i??1}`;default:return t}}function G(e,t){return`${String(e).padStart(2,`0`)}:${String(t).padStart(2,`0`)}`}function K(e){let t=e.match(/^(\d{1,2}):(\d{2})$/);if(!t)return null;let n=Number(t[1]),r=Number(t[2]);return Number.isNaN(n)||Number.isNaN(r)||n<0||n>23||r<0||r>59?null:{hour:n,minute:r}}function q(e){return e?Array.isArray(e)?e.join(`, `):e:`—`}function J(e,t){let n=e.trim();if(!n)return{value:null};let r=Number(n);return Number.isInteger(r)?r<=0?{errorKey:d.AUTOMATIONS$ERROR_TIMEOUT_POSITIVE}:t!==void 0&&r>t?{errorKey:d.AUTOMATIONS$ERROR_TIMEOUT_MAX_EXCEEDED}:{value:r}:{errorKey:d.AUTOMATIONS$ERROR_TIMEOUT_INVALID_NUMBER}}var Y=n(),X=`__active__`,Z=[d.AUTOMATIONS$WEEKDAY_SUN,d.AUTOMATIONS$WEEKDAY_MON,d.AUTOMATIONS$WEEKDAY_TUE,d.AUTOMATIONS$WEEKDAY_WED,d.AUTOMATIONS$WEEKDAY_THU,d.AUTOMATIONS$WEEKDAY_FRI,d.AUTOMATIONS$WEEKDAY_SAT];function ee(e){let t=e.timeout==null?``:String(e.timeout);if(e.trigger.type===`event`)return{name:e.name,prompt:e.prompt??``,model:e.model??``,frequency:`custom`,weekday:1,timeOfDay:``,isCustomSchedule:!0,rawSchedule:``,timeout:t};let n=U(e.trigger.schedule);return n.kind===`custom`?{name:e.name,prompt:e.prompt??``,model:e.model??``,frequency:`custom`,weekday:1,timeOfDay:n.hour!==void 0&&n.minute!==void 0?G(n.hour,n.minute):``,isCustomSchedule:!0,rawSchedule:n.raw,timeout:t}:{name:e.name,prompt:e.prompt??``,model:e.model??``,frequency:n.kind,weekday:n.kind===`weekly`?n.weekday??1:1,timeOfDay:G(n.hour,n.minute),isCustomSchedule:!1,rawSchedule:e.trigger.schedule??``,timeout:t}}function Q({automation:e,isOpen:t,onClose:n}){let{t:r}=i(`openhands`),a=L(),o=h().editTitle??r(d.AUTOMATIONS$EDIT_TITLE),l=f(`name`),p=f(`prompt`),m=f(`model`),b=f(`timeout`),T=f(`schedule`),{data:k}=D(),A=k?.maxAutomationTimeoutSeconds,j=A===void 0?void 0:Math.min(A,b.max??A),{data:M,isLoading:N}=S(),P=M?.profiles??[],F=[{key:X,label:r(d.COMMON$ACTIVE_PROFILE)},...P.map(e=>({key:e.name,label:e.name}))],I=(0,O.useMemo)(()=>ee(e),[e]),[R,z]=(0,O.useState)(I),[B,V]=(0,O.useState)(null),[H,U]=(0,O.useState)(null);if((0,O.useEffect)(()=>{t&&(z(I),V(null),U(null))},[t,I]),!t)return null;let G=[{key:`daily`,label:r(d.AUTOMATIONS$FREQUENCY_DAILY)},{key:`weekdays`,label:r(d.AUTOMATIONS$FREQUENCY_WEEKDAYS)},{key:`weekly`,label:r(d.AUTOMATIONS$FREQUENCY_WEEKLY)},...R.isCustomSchedule?[{key:`custom`,label:r(d.AUTOMATIONS$FREQUENCY_CUSTOM)}]:[]],Q=Z.map((e,t)=>({key:String(t),label:r(e)})),$=!R.isCustomSchedule||K(R.timeOfDay)!==null||R.timeOfDay===``;return(0,Y.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center`,children:[(0,Y.jsx)(`div`,{className:`absolute inset-0 bg-black/60`,onClick:n,onKeyDown:e=>{e.key===`Escape`&&n()},role:`presentation`}),(0,Y.jsxs)(`div`,{className:`relative w-full max-w-md rounded-xl border border-[var(--oh-border)] bg-[var(--oh-surface)] p-6`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:n,className:`absolute right-4 top-4 text-muted hover:text-foreground`,"aria-label":r(d.AUTOMATIONS$CANCEL),children:(0,Y.jsx)(w,{className:`size-5`})}),(0,Y.jsx)(`h2`,{className:g,children:o}),(0,Y.jsxs)(`form`,{onSubmit:t=>{t.preventDefault();let i=R.name.trim();if(!i){V(r(d.AUTOMATIONS$NAME_REQUIRED));return}V(null);let o=J(R.timeout,j);if(`errorKey`in o){U(r(o.errorKey,{max:j}));return}U(null);let l={};i!==e.name&&(l.name=i);let u=R.prompt.trim();u!==(e.prompt??``).trim()&&(l.prompt=u.length===0?null:u);let f=R.model.trim();if(f!==(e.model??``)&&(l.model=f===``?null:f),(o.value??null)!==(e.timeout??null)&&(l.timeout=o.value),!R.isCustomSchedule&&R.frequency!==`custom`){let t=K(R.timeOfDay);if(t){let n=W({kind:R.frequency,hour:t.hour,minute:t.minute,weekday:R.frequency===`weekly`?R.weekday:void 0});n!==e.trigger.schedule&&(l.trigger={...e.trigger,schedule:n})}}if(Object.keys(l).length===0){n();return}a.mutate({id:e.id,body:l},{onSuccess:()=>{s(r(d.AUTOMATIONS$EDIT_SUCCESS)),n()},onError:e=>{c(E(e,r(d.AUTOMATIONS$EDIT_ERROR)))}})},noValidate:!0,className:`mt-4 flex flex-col gap-4`,"aria-label":o,children:[l.present&&(0,Y.jsx)(x,{testId:`edit-automation-name`,name:`name`,type:`text`,label:l.label??r(d.AUTOMATIONS$NAME),value:R.name,onChange:e=>z(t=>({...t,name:e})),error:B??void 0,showRequiredTag:l.required}),p.present&&(0,Y.jsxs)(`label`,{className:`flex flex-col gap-2.5 w-full min-w-0`,children:[(0,Y.jsx)(`span`,{className:`text-sm`,children:p.label??r(d.AUTOMATIONS$PROMPT)}),(0,Y.jsx)(`textarea`,{"data-testid":`edit-automation-prompt`,name:`prompt`,value:R.prompt,onChange:e=>z(t=>({...t,prompt:e.target.value})),rows:4,className:u(v,`placeholder:italic`)}),(0,Y.jsx)(`span`,{className:`text-xs text-muted`,children:p.help??r(d.AUTOMATIONS$EDIT_PROMPT_HINT)})]}),m.present&&(N||P.length>0)&&(0,Y.jsx)(C,{testId:`edit-automation-model`,name:`model`,label:m.label??r(d.AUTOMATIONS$DETAIL$MODEL),items:F,selectedKey:R.model||X,isLoading:N,placeholder:r(d.COMMON$ACTIVE_PROFILE),onSelectionChange:e=>z(t=>({...t,model:e&&e!==X?String(e):``}))}),b.present&&(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2.5 w-full min-w-0`,children:[(0,Y.jsx)(x,{testId:`edit-automation-timeout`,name:`timeout`,type:`number`,label:b.label??r(d.AUTOMATIONS$TIMEOUT),value:R.timeout,onChange:e=>z(t=>({...t,timeout:e})),error:H??void 0,showOptionalTag:!0,min:b.min??1,max:j,step:1,placeholder:`600`}),(0,Y.jsx)(`span`,{"data-testid":`edit-automation-timeout-hint`,className:`text-xs text-muted`,children:b.help??r(d.AUTOMATIONS$TIMEOUT_HINT)})]}),e.trigger.type===`event`?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-lg bg-[var(--oh-surface-raised)] p-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-xs font-medium text-muted`,children:r(d.AUTOMATIONS$DETAIL$TRIGGER)}),(0,Y.jsx)(`span`,{className:`text-sm text-content`,children:r(d.AUTOMATIONS$DETAIL$TRIGGER_EVENT)})]}),e.trigger.source&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-xs font-medium text-muted`,children:r(d.AUTOMATIONS$DETAIL$EVENT_SOURCE)}),(0,Y.jsx)(`span`,{className:`text-sm text-content`,children:e.trigger.source})]}),e.trigger.on&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-xs font-medium text-muted`,children:r(d.AUTOMATIONS$DETAIL$EVENT_TYPE)}),(0,Y.jsx)(`code`,{className:`text-xs font-mono text-content`,children:q(e.trigger.on)})]}),e.trigger.filter&&(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Y.jsx)(`span`,{className:`text-xs font-medium text-muted`,children:r(d.AUTOMATIONS$DETAIL$EVENT_FILTER)}),(0,Y.jsx)(`code`,{className:`text-xs font-mono text-content break-all`,children:e.trigger.filter})]})]}):T.present?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(C,{testId:`edit-automation-frequency`,name:`frequency`,label:T.label??r(d.AUTOMATIONS$FREQUENCY),items:G,selectedKey:R.frequency,isDisabled:R.isCustomSchedule,onSelectionChange:e=>{!e||R.isCustomSchedule||z(t=>({...t,frequency:e}))}}),R.frequency===`weekly`&&!R.isCustomSchedule&&(0,Y.jsx)(C,{testId:`edit-automation-weekday`,name:`weekday`,label:r(d.AUTOMATIONS$WEEKDAY),items:Q,selectedKey:String(R.weekday),onSelectionChange:e=>{e!==null&&z(t=>({...t,weekday:Number(e)}))}}),(0,Y.jsxs)(`label`,{className:`flex flex-col gap-2.5 w-full min-w-0`,children:[(0,Y.jsx)(`span`,{className:`text-sm`,children:r(d.AUTOMATIONS$TIME_OF_DAY)}),(0,Y.jsx)(`input`,{"data-testid":`edit-automation-time`,name:`timeOfDay`,type:`time`,value:R.timeOfDay,onChange:e=>z(t=>({...t,timeOfDay:e.target.value})),disabled:R.isCustomSchedule&&!$,className:u(_,`disabled:bg-[var(--oh-surface-raised)]`)}),e.timezone&&(0,Y.jsxs)(`span`,{className:`text-xs text-muted`,children:[r(d.AUTOMATIONS$TIMEZONE),`: `,e.timezone]})]}),R.isCustomSchedule&&(0,Y.jsxs)(`p`,{className:`text-xs text-muted`,"data-testid":`custom-schedule-hint`,children:[r(d.AUTOMATIONS$CUSTOM_SCHEDULE_HINT),R.rawSchedule&&(0,Y.jsxs)(Y.Fragment,{children:[` `,(0,Y.jsx)(`code`,{className:`text-xs text-content`,children:R.rawSchedule})]})]})]}):null,(0,Y.jsxs)(`div`,{className:`mt-2 flex justify-end gap-3`,children:[(0,Y.jsx)(y,{testId:`edit-automation-cancel`,type:`button`,variant:`secondary`,onClick:n,isDisabled:a.isPending,children:r(d.AUTOMATIONS$CANCEL)}),(0,Y.jsx)(y,{testId:`edit-automation-save`,type:`submit`,variant:`primary`,isDisabled:a.isPending,"aria-busy":a.isPending,children:a.isPending?r(d.AUTOMATIONS$SAVING):r(d.AUTOMATIONS$SAVE)})]})]})]})]})}var $=e=>(0,Y.jsxs)(`svg`,{width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,Y.jsx)(`g`,{clipPath:`url(#clip0_8467_30872)`,children:(0,Y.jsx)(`path`,{d:`M6.26693 21.4874L6.25583 21.4951L6.24514 21.5033C5.95991 21.7227 5.5 21.5308 5.5 21.0996V2.89961C5.5 2.4684 5.95991 2.2765 6.24514 2.49592L6.25634 2.50452L6.26799 2.51249L19.518 11.5625L19.518 11.5625L19.5226 11.5656C19.8258 11.7677 19.8258 12.1815 19.5226 12.3836L19.5226 12.3835L19.5169 12.3874L6.26693 21.4874Z`,fill:`currentColor`,stroke:`currentColor`})}),(0,Y.jsx)(`defs`,{children:(0,Y.jsx)(`clipPath`,{id:`clip0_8467_30872`,children:(0,Y.jsx)(`rect`,{width:24,height:24,fill:`white`})})})]}),te=e=>(0,Y.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,...e,children:(0,Y.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M5.636 5.636a9 9 0 1012.728 0M12 3v9`})});function ne({icon:e,label:t}){return(0,Y.jsxs)(`span`,{className:`flex min-w-0 w-full items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:u(`[&_svg]:size-4`,b),"aria-hidden":!0,children:e}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:t})]})}export{q as a,R as c,F as d,A as f,Q as i,z as l,M as m,te as n,P as o,j as p,$ as r,B as s,ne as t,I as u};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{H as r,R as i,U as a}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js";import{t as o}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js";import{t as s,z as c}from"./utils-DUD5ScdA.js";import{t as l}from"./modal-backdrop-BSzNhM4r.js";import{r as u,t as d}from"./modal-body-BdKfD3Hl.js";import{t as f}from"./brand-button-Blxv5nww.js";import{t as p}from"./modal-close-button-objukxk_.js";import{t as m}from"./settings-input-CWUEHHvS.js";import{n as h}from"./use-create-conversation-DVrA_uLD.js";import{r as g}from"./typography-DB5HoCk0.js";import{n as _,t as v}from"./vendor~launch-CHwEQG6e.js";var y=e(t(),1),b=n();function x({pluginIndex:e,paramKey:t,paramValue:n,onParameterChange:r}){let i=`plugin-${e}-param-${t}`;return typeof n==`boolean`?(0,b.jsxs)(`label`,{htmlFor:i,className:`flex w-full cursor-pointer items-center gap-2.5`,children:[(0,b.jsx)(`input`,{id:i,"data-testid":i,type:`checkbox`,checked:n,onChange:n=>r(e,t,n.target.checked),className:`h-4 w-4 shrink-0 rounded`}),(0,b.jsx)(`span`,{className:`text-sm`,children:t})]}):typeof n==`number`?(0,b.jsx)(m,{testId:i,name:`plugin-${e}-param-${t}`,type:`number`,label:t,value:String(n),className:`w-full`,onChange:n=>r(e,t,n===``?0:parseFloat(n)||0)}):(0,b.jsx)(m,{testId:i,name:`plugin-${e}-param-${t}`,type:`text`,label:t,value:String(n??``),className:`w-full`,onChange:n=>r(e,t,n)})}function S({plugin:e,originalIndex:t,isExpanded:n,onToggle:r,getPluginDisplayName:i,onParameterChange:a}){let{t:s}=o(`openhands`);return e.parameters&&Object.keys(e.parameters).length>0?(0,b.jsxs)(`div`,{className:`rounded-lg border border-[var(--oh-border)] bg-tertiary`,children:[(0,b.jsxs)(`button`,{type:`button`,onClick:r,className:`flex w-full items-center justify-between px-4 py-3 text-left hover:bg-base-tertiary rounded-t-lg cursor-pointer`,"data-testid":`plugin-section-${t}`,children:[(0,b.jsx)(g.Text,{className:`text-base font-normal`,children:i(e)}),n?(0,b.jsx)(v,{className:`h-5 w-5 text-white`}):(0,b.jsx)(_,{className:`h-5 w-5 text-white`})]}),n&&(0,b.jsxs)(`div`,{className:`border-t border-[var(--oh-border-subtle)] px-4 pb-3`,children:[e.ref&&(0,b.jsxs)(`div`,{className:`mb-2 text-sm text-white`,children:[s(c.LAUNCH$PLUGIN_REF),` `,e.ref]}),e.repo_path&&(0,b.jsxs)(`div`,{className:`mb-2 text-sm text-white`,children:[s(c.LAUNCH$PLUGIN_PATH),` `,e.repo_path]}),(0,b.jsx)(`div`,{className:`flex flex-col gap-4`,children:Object.entries(e.parameters||{}).map(([e,n])=>(0,b.jsx)(x,{pluginIndex:t,paramKey:e,paramValue:n,onParameterChange:a},e))})]})]}):null}function C({plugins:e,message:t,isLoading:n=!1,onStartConversation:r,onClose:i}){let{t:a}=o(`openhands`),[m,h]=y.useState(e),[_,v]=y.useState(()=>{let t={};return e.forEach((e,n)=>{e.parameters&&Object.keys(e.parameters).length>0&&(t[n]=!0)}),t}),[x,C]=y.useState(!1),w=m.filter(e=>e.parameters&&Object.keys(e.parameters).length>0),T=m.filter(e=>!e.parameters||Object.keys(e.parameters).length===0),E=e=>{v(t=>({...t,[e]:!t[e]}))},D=(e,t,n)=>{h(r=>{let i=[...r],a={...i[e]};return a.parameters={...a.parameters,[t]:n},i[e]=a,i})},O=e=>{let{source:t,repo_path:n}=e;if(n){let e=n.split(`/`);return e[e.length-1]}if(t.startsWith(`github:`))return t.replace(`github:`,``);if(t.includes(`/`)){let e=t.split(`/`);return e[e.length-1].replace(`.git`,``)}return t},k=e=>{let{source:t}=e;return t.startsWith(`github:`)?t.replace(`github:`,``):t.includes(`github.com/`)&&t.split(`github.com/`)[1]?.replace(`.git`,``)||t},A=()=>{let e=m.map(e=>k(e));return[...new Set(e)]},j=()=>{r(m,t)},M=m.length===1?O(m[0]):a(c.LAUNCH$MODAL_TITLE_GENERIC);return(0,b.jsx)(l,{onClose:i,children:(0,b.jsxs)(`div`,{"data-testid":`plugin-launch-modal`,className:s(`relative bg-base-secondary p-6 rounded-xl flex flex-col gap-4 border border-[var(--oh-border)] max-h-[80vh]`,u(`md`),d),children:[(0,b.jsx)(p,{onClose:i,testId:`close-button`}),(0,b.jsxs)(g.H2,{className:`pr-6`,children:[a(c.LAUNCH$MODAL_TITLE),` `,M]}),t&&(0,b.jsx)(`p`,{className:`text-sm text-white`,children:t}),(0,b.jsxs)(`div`,{className:`flex-1 overflow-y-auto custom-scrollbar`,children:[w.length>0&&(0,b.jsx)(`div`,{className:`space-y-3`,children:m.map((e,t)=>(0,b.jsx)(S,{plugin:e,originalIndex:t,isExpanded:!!_[t],onToggle:()=>E(t),getPluginDisplayName:O,onParameterChange:D},`plugin-${t}`))}),T.length>0&&(0,b.jsxs)(`div`,{className:s(w.length>0&&`mt-4`),children:[(0,b.jsx)(g.H3,{className:`mb-2 text-white`,children:w.length>0?a(c.LAUNCH$ADDITIONAL_PLUGINS):a(c.LAUNCH$PLUGINS)}),(0,b.jsx)(`div`,{className:`space-y-2`,children:T.map((e,t)=>(0,b.jsxs)(`div`,{className:`rounded-md bg-tertiary px-3 py-2 text-sm`,children:[(0,b.jsx)(`div`,{className:`font-medium`,children:O(e)}),(0,b.jsxs)(`div`,{className:`text-xs text-white mt-1`,children:[k(e),e.repo_path&&(0,b.jsxs)(`span`,{className:`ml-1`,children:[`/ `,e.repo_path]}),e.ref&&(0,b.jsxs)(`span`,{className:`ml-2`,children:[`@ `,e.ref]})]})]},`simple-plugin-${t}`))})]})]}),(0,b.jsxs)(`div`,{className:`pt-4 border-t border-[var(--oh-border-subtle)]`,children:[(0,b.jsxs)(`div`,{className:`flex items-start gap-3 mb-4`,children:[(0,b.jsx)(`input`,{id:`trust-checkbox`,"data-testid":`trust-checkbox`,type:`checkbox`,checked:x,onChange:e=>C(e.target.checked),className:`mt-1 h-4 w-4 flex-shrink-0`}),(0,b.jsx)(`label`,{htmlFor:`trust-checkbox`,className:`text-sm text-white`,children:a(c.LAUNCH$TRUST_SKILL_CHECKBOX,{sources:A().join(`, `),interpolation:{escapeValue:!1}})})]}),(0,b.jsx)(`div`,{className:`flex w-full justify-end mt-8`,children:(0,b.jsx)(f,{testId:`start-conversation-button`,type:`button`,variant:`primary`,onClick:j,isDisabled:n||!x,className:`px-4`,children:a(n?c.LAUNCH$STARTING:c.LAUNCH$START_CONVERSATION)})})]})]})})}function w(e){if(e)return e.replace(/<[^>]*>/g,``).slice(0,500)||void 0}function T(e){let t=e.get(`plugins`);if(t)try{let n=atob(t),r=JSON.parse(n);if(!Array.isArray(r))return{plugins:[],error:`invalid_format`};let i=[];for(let e of r){if(typeof e!=`object`||!e||typeof e.source!=`string`)return{plugins:[],error:`invalid_format`};i.push({source:e.source,ref:e.ref??null,repo_path:e.repo_path??null,parameters:e.parameters??null})}return i.length===0?{plugins:[],error:`no_plugins`}:{plugins:i,message:w(e.get(`message`))}}catch{return{plugins:[],error:`invalid_format`}}let n=e.get(`plugin_source`);return n?{plugins:[{source:n,ref:e.get(`plugin_ref`)??null,repo_path:e.get(`plugin_repo_path`)??null,parameters:null}],message:w(e.get(`message`))}:{plugins:[],error:`no_plugins`}}function E({errorType:e,onGoHome:t,onTryAgain:n}){let{t:r}=o(`openhands`),i={no_plugins:r(c.LAUNCH$ERROR_NO_PLUGINS),invalid_format:r(c.LAUNCH$ERROR_INVALID_FORMAT),creation_failed:r(c.LAUNCH$ERROR_CREATION_FAILED)};return(0,b.jsx)(`div`,{className:`flex h-full items-center justify-center`,"data-testid":`launch-error`,children:(0,b.jsxs)(`div`,{className:`max-w-md rounded-lg bg-[var(--oh-surface)] p-6 text-center`,children:[(0,b.jsx)(`h2`,{className:`mb-4 text-xl font-medium text-red-400`,children:r(c.LAUNCH$ERROR_TITLE)}),(0,b.jsx)(`p`,{className:`mb-6 text-[var(--oh-text-tertiary)]`,children:i[e]}),(0,b.jsxs)(`div`,{className:`flex justify-center gap-3`,children:[(0,b.jsx)(`button`,{type:`button`,onClick:t,className:`rounded-md bg-tertiary px-4 py-2 text-sm text-[var(--oh-foreground)] hover:bg-[var(--oh-interactive-hover)]`,"data-testid":`go-home-button`,children:r(c.LAUNCH$GO_HOME)}),n&&(0,b.jsx)(`button`,{type:`button`,onClick:n,className:`rounded-md bg-blue-600 px-4 py-2 text-sm text-white hover:bg-blue-700`,"data-testid":`try-again-button`,children:r(c.LAUNCH$TRY_AGAIN)})]})]})})}var D=a(function(){let[e]=r(),t=i(),{t:n}=o(`openhands`),a=h(),[s,l]=y.useState(null),u=y.useMemo(()=>T(e),[e]),d=async(e,r)=>{l(null);try{t(`/conversations/${(await a.mutateAsync({plugins:e,query:r,entryPoint:`launch_deeplink`})).conversation_id}`)}catch{l(n(c.LAUNCH$ERROR_CREATION_UNKNOWN))}},f=()=>{t(`/conversations`)};return u.error?(0,b.jsx)(E,{errorType:u.error,onGoHome:f}):s?(0,b.jsx)(E,{errorType:`creation_failed`,onGoHome:f,onTryAgain:()=>{l(null),window.location.reload()}}):(0,b.jsx)(`div`,{className:`h-full`,"data-testid":`launch-route`,children:(0,b.jsx)(C,{plugins:u.plugins,message:u.message,isLoading:a.isPending,onStartConversation:d,onClose:f})})});export{D as default};
@@ -1 +0,0 @@
1
- import{D as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js";var t=e(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]);export{t};