@openhands/agent-canvas 1.13.0 → 1.14.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 (437) hide show
  1. package/README.md +1 -1
  2. package/README.windows.md +2 -2
  3. package/build/assets/{acp-providers-D1PORKc0.js → acp-providers-CYy8qA2z.js} +1 -1
  4. package/build/assets/active-backend-context-BZDG15C0.js +2 -0
  5. package/build/assets/{agent-context-settings-DMrObcIS.js → agent-context-settings-DGWBBbcp.js} +1 -1
  6. package/build/assets/{agent-profiles-settings-DororXN5.js → agent-profiles-settings-DrkGdf4_.js} +1 -1
  7. package/build/assets/{agent-server-conversation-service.api-DWBe0rbX.js → agent-server-conversation-service.api-DK56YPTs.js} +7 -7
  8. package/build/assets/{agent-settings-BJVk92PU.js → agent-settings-DfcSgkLD.js} +2 -2
  9. package/build/assets/agent-settings-Lrc5-twS.js +1 -0
  10. package/build/assets/{alert-banner-CzZsm7ms.js → alert-banner-BgDHhL7b.js} +1 -1
  11. package/build/assets/api-error-message-BEIE_yD1.js +1 -0
  12. package/build/assets/{api-key-entry-screen-D8Fade_-.js → api-key-entry-screen-DaZnOlVo.js} +1 -1
  13. package/build/assets/{app-settings-CpyGB3AT.js → app-settings-BG5NAUbC.js} +1 -1
  14. package/build/assets/automation-detail-D4Hs831Z.js +3 -0
  15. package/build/assets/automation-export-n0X6FB0C.js +2 -0
  16. package/build/assets/automation-git-sync-CDrm8WV7.js +1 -0
  17. package/build/assets/automation-setup-route-CZCl4ONs.js +1 -0
  18. package/build/assets/{automation-templates-DgpCGOJV.js → automation-templates-DFF96AdL.js} +1 -1
  19. package/build/assets/automations-list-Bl-oGOrV.js +1 -0
  20. package/build/assets/{back-nav-button-HHEneWMw.js → back-nav-button-H_ThtDA0.js} +1 -1
  21. package/build/assets/{backend-form-modal-DiVrD4Cm.js → backend-form-modal-CbCemvHt.js} +1 -1
  22. package/build/assets/backend-not-configured-DP8KLNq_.js +1 -0
  23. package/build/assets/{backend-synced-settings-badge-7MIjpr8M.js → backend-synced-settings-badge-BBASWqsb.js} +1 -1
  24. package/build/assets/{badge-CpYmcVZV.js → badge-B-51h-SW.js} +1 -1
  25. package/build/assets/{base-modal-Fnh6Uln9.js → base-modal-BbjycA8X.js} +1 -1
  26. package/build/assets/{bot-BQZx8e2i.js → bot-CGPCg03p.js} +1 -1
  27. package/build/assets/{brand-button-swT1RyO0.js → brand-button-Blxv5nww.js} +1 -1
  28. package/build/assets/browser-CuW0nWvh.js +7 -0
  29. package/build/assets/{browser-tab-zAY12m_i.js → browser-tab-D5G0ORwt.js} +1 -1
  30. package/build/assets/{chat-send-button-DsJtivmL.js → chat-send-button-BD2tii1r.js} +1 -1
  31. package/build/assets/check-DSuS-lyr.js +1 -0
  32. package/build/assets/chevron-down-CgGcmtE2.js +1 -0
  33. package/build/assets/circle-check-CG5-NPw7.js +1 -0
  34. package/build/assets/{circle-plus-check-toggle-Cuzx55bo.js → circle-plus-check-toggle-ASbpB8vN.js} +1 -1
  35. package/build/assets/{cloud-funnel-analytics-86CwNdSh.js → cloud-funnel-analytics-GlCUG0gk.js} +1 -1
  36. package/build/assets/cog-CZiR80uT.js +1 -0
  37. package/build/assets/{combobox-caret-D0fRotFi.js → combobox-caret-DvpEsh2O.js} +1 -1
  38. package/build/assets/{command-menu-BXy03FBl.js → command-menu-DwUQzjYP.js} +1 -1
  39. package/build/assets/{condenser-settings-BmZa0ui_.js → condenser-settings-BptcoiLA.js} +1 -1
  40. package/build/assets/{confirmation-modal-BgoN6lbN.js → confirmation-modal-CiEwxZAA.js} +1 -1
  41. package/build/assets/{context-menu-list-item-Bq02tc-P.js → context-menu-list-item-CdcamfM1.js} +1 -1
  42. package/build/assets/conversation-DREHj4nT.js +1 -0
  43. package/build/assets/conversation-DotRfiDz.js +90 -0
  44. package/build/assets/conversation-panel-DREHj4nT.js +1 -0
  45. package/build/assets/conversation-state-store-DMLtlHbE.js +1 -0
  46. package/build/assets/{conversation-tab-empty-state-CMqo_0Bd.js → conversation-tab-empty-state-D-puECpY.js} +1 -1
  47. package/build/assets/{copy-to-clipboard-button-Cg1pF0xn.js → copy-to-clipboard-button-BGxcUbgy.js} +1 -1
  48. package/build/assets/{device-verify-BfQLgNyq.js → device-verify-CZJfWaJf.js} +1 -1
  49. package/build/assets/{dropdown-classes-BIqQr5mx.js → dropdown-classes-tLhpwtxS.js} +1 -1
  50. package/build/assets/{entry.client-CxFjRYqH.js → entry.client-D8GnI6GZ.js} +2 -2
  51. package/build/assets/{enum-filter-dropdown-C_yV4_bo.js → enum-filter-dropdown-Fk8k60nk.js} +1 -1
  52. package/build/assets/{environment-switch-overlay-Bi4qbh2g.js → environment-switch-overlay-DeztVYuL.js} +1 -1
  53. package/build/assets/{extensions-hub-BqUINAhp.js → extensions-hub-Cd6GCYzq.js} +1 -1
  54. package/build/assets/{extensions-navigation-lraj88Wk.js → extensions-navigation-C4sgZg-y.js} +1 -1
  55. package/build/assets/{external-link-CgtpA_a1.js → external-link-C0UpBgsE.js} +1 -1
  56. package/build/assets/{file-text-DEK4LSVw.js → file-text-C6WYtNdV.js} +1 -1
  57. package/build/assets/files-tab-BW_qzyAm.js +1 -0
  58. package/build/assets/{form-control-classes-7yFSQJq_.js → form-control-classes-CGXBLcn1.js} +1 -1
  59. package/build/assets/format-model-name-BNPKVsIq.js +1 -0
  60. package/build/assets/format-relative-time-ZhQD4rsl.js +1 -0
  61. package/build/assets/git-provider-icon-CaQ1yLPi.js +1 -0
  62. package/build/assets/{git-repo-dropdown-ByMzpNko.js → git-repo-dropdown-CgXR6M_E.js} +1 -1
  63. package/build/assets/git-repo-dropdown-D2Uei3CO.js +1 -0
  64. package/build/assets/{highlighted-source-view-C_sfncLZ.js → highlighted-source-view-C_YOp8Fo.js} +1 -1
  65. package/build/assets/home-DNzzJcMP.js +1 -0
  66. package/build/assets/home-aCos-5vc.js +1 -0
  67. package/build/assets/{home-store-CxqsY9Fi.js → home-store-DgzViC3f.js} +1 -1
  68. package/build/assets/index-home-DNzzJcMP.js +1 -0
  69. package/build/assets/info-CLoC1LRo.js +1 -0
  70. package/build/assets/install-server-modal-D7zIqNKz.js +1 -0
  71. package/build/assets/kebab-menu-item-content-DERMdnDv.js +1 -0
  72. package/build/assets/{launch-CkqiSCqi.js → launch-5PjKeLak.js} +1 -1
  73. package/build/assets/{list-todo-DNWlzfaM.js → list-todo-BF049YaY.js} +1 -1
  74. package/build/assets/llm-not-configured-banner-BK9z5eS0.js +27 -0
  75. package/build/assets/llm-settings-BLAMK2tR.js +1 -0
  76. package/build/assets/llm-settings-BWsbarGM.js +1 -0
  77. package/build/assets/{llm-subscription-service-BAdOl5Xx.js → llm-subscription-service-SfnEV9Uc.js} +1 -1
  78. package/build/assets/loader-circle-D7IagAyF.js +1 -0
  79. package/build/assets/{loading-spinner-xhnrGP4Y.js → loading-spinner-DBgXgra0.js} +1 -1
  80. package/build/assets/{manage-backends-modal-DhGk5mJt.js → manage-backends-modal-BTqNPhzc.js} +1 -1
  81. package/build/assets/manifest-abebca3c.js +1 -0
  82. package/build/assets/manifest-subpage-layout-Rn-glaxV.js +1 -0
  83. package/build/assets/{map-provider-Mx8mZuE-.js → map-provider-BK4HnqYz.js} +1 -1
  84. package/build/assets/markdown-renderer-Cp6DlHQN.js +8 -0
  85. package/build/assets/{mcp-DCkvl6K0.js → mcp-BC-Ixn4T.js} +2 -2
  86. package/build/assets/{mcp-marketplace-utils-DEbMXlQr.js → mcp-marketplace-utils-BJWJgbB6.js} +1 -1
  87. package/build/assets/{messages-DSXvyc21.js → messages-CzFKrzPG.js} +5 -5
  88. package/build/assets/{modal-body-gIe21fDv.js → modal-body-BdKfD3Hl.js} +1 -1
  89. package/build/assets/{modal-classes-D66dlgZ7.js → modal-classes-D5_b5vMi.js} +1 -1
  90. package/build/assets/{modal-close-button-B6iOGYpI.js → modal-close-button-objukxk_.js} +1 -1
  91. package/build/assets/{mouse-pointer-click-BYX1Pw5W.js → mouse-pointer-click-C_gXyLyD.js} +1 -1
  92. package/build/assets/{npm-DLckoeJc.js → npm-CHVHV1MC.js} +1 -1
  93. package/build/assets/{onboarding-D7WDG66N.js → onboarding-Diw0V51A.js} +1 -1
  94. package/build/assets/onboarding-modal-Da4yHzsA.js +1 -0
  95. package/build/assets/{organization-service.api-D-s9z18a.js → organization-service.api-BztSy69u.js} +1 -1
  96. package/build/assets/parse-git-remote-url-BkXN9jzl.js +1 -0
  97. package/build/assets/{pencil-BGOCPRyu.js → pencil-49avMHlD.js} +1 -1
  98. package/build/assets/{planner-tab-AKaXIIfg.js → planner-tab-CJiSpNax.js} +1 -1
  99. package/build/assets/{plugins-management-service-wtmY4QQw.js → plugins-management-service-lHdNKWNU.js} +1 -1
  100. package/build/assets/plus-C0BagBpV.js +1 -0
  101. package/build/assets/profiles-service.api-BLr7FXec.js +1 -0
  102. package/build/assets/providers-CWXnb7S3.js +1 -0
  103. package/build/assets/{proxy-9Z_WZggZ.js → proxy-DYDXxtje.js} +1 -1
  104. package/build/assets/{puzzle-BWLmN8z4.js → puzzle-Bt2B1rzf.js} +1 -1
  105. package/build/assets/recommended-automations-launcher-CcFMfJRR.js +1 -0
  106. package/build/assets/{refresh-cw-CXtFWpwv.js → refresh-cw-nmcesifB.js} +1 -1
  107. package/build/assets/root-CT4t7apy.css +1 -0
  108. package/build/assets/root-DnRgLKpU.js +2 -0
  109. package/build/assets/root-layout-2L9tr-BN.js +2 -0
  110. package/build/assets/{schema-field-OnM5Uob_.js → schema-field-C59lVZTA.js} +1 -1
  111. package/build/assets/{sdk-section-page-m5WQm2sy.js → sdk-section-page-BbBEQQjq.js} +1 -1
  112. package/build/assets/search-CYSDBczG.js +1 -0
  113. package/build/assets/secrets-service-BtsgYSlj.js +1 -0
  114. package/build/assets/secrets-settings-DJ0OKa4_.js +1 -0
  115. package/build/assets/{segmented-toggle-DCspm2U5.js → segmented-toggle-DiVfTZuN.js} +1 -1
  116. package/build/assets/{settings-BJQI_iBM.js → settings-CDqL_Uqh.js} +1 -1
  117. package/build/assets/{settings-CWFxymAf.js → settings-DcNPxz0v.js} +1 -1
  118. package/build/assets/{settings-dropdown-input-BI8V_Nov.js → settings-dropdown-input-Ba1UN5Du.js} +1 -1
  119. package/build/assets/{settings-index-BiTqJoH7.js → settings-index-Cz2cKt2K.js} +1 -1
  120. package/build/assets/{settings-input-Cz62hWVW.js → settings-input-CWUEHHvS.js} +1 -1
  121. package/build/assets/{settings-list-classes-z_3FW5H3.js → settings-list-classes-DdcLXDGn.js} +1 -1
  122. package/build/assets/{settings-modal-BIrIVn97.js → settings-modal-nEEK1Kh1.js} +1 -1
  123. package/build/assets/{settings-service.api--rJmnuLa.js → settings-service.api-3yAUFcaP.js} +1 -1
  124. package/build/assets/{settings-switch-BRsSI8Vs.js → settings-switch-Dk9hChx1.js} +1 -1
  125. package/build/assets/{settings-utils-Ba7vel6T.js → settings-utils-CxjtCSB3.js} +1 -1
  126. package/build/assets/{shared-conversation-CQK_PqHx.js → shared-conversation-DbAcrx3s.js} +1 -1
  127. package/build/assets/{shield-check-T3JsDJiM.js → shield-check-CiOTXxV2.js} +1 -1
  128. package/build/assets/{sidebar-layout-Bhi3hVcu.js → sidebar-layout-lrfPooIB.js} +1 -1
  129. package/build/assets/{sidebar-mobile-menu-toggle-YWJNRN4p.js → sidebar-mobile-menu-toggle-KERXfNu1.js} +1 -1
  130. package/build/assets/{sidebar-nav-link-BSUlY5Ml.js → sidebar-nav-link-B8lFD6Cb.js} +1 -1
  131. package/build/assets/{sidebar-store-Cl1cUv_F.js → sidebar-store-u6pUpxJ7.js} +1 -1
  132. package/build/assets/{skill-card-pill-row-BXz8L8Rn.js → skill-card-pill-row-dGIUzr_b.js} +1 -1
  133. package/build/assets/{skill-icon-badge-QgfKv31M.js → skill-icon-badge-kkOWZ89w.js} +1 -1
  134. package/build/assets/{skill-scope-Dc3JPW-8.js → skill-scope-DWN1PBPH.js} +1 -1
  135. package/build/assets/{skills-plugins-CpTV27n3.js → skills-plugins-DFjH2Nq6.js} +1 -1
  136. package/build/assets/{skills-settings-CSW__IW4.js → skills-settings-DIHpl3ol.js} +2 -2
  137. package/build/assets/{sparkles-TJ0mdECe.js → sparkles-ntyMLnbj.js} +1 -1
  138. package/build/assets/{styled-tooltip-BUMSbgrF.js → styled-tooltip-B6JXcsmL.js} +1 -1
  139. package/build/assets/{task-list-tab-mAHMOkUz.js → task-list-tab-aEJzEcHD.js} +1 -1
  140. package/build/assets/{terminal-BzxBaHx2.js → terminal-Dch7Ty5K.js} +1 -1
  141. package/build/assets/{toggle-switch-O5v1FgxW.js → toggle-switch-B2MLKsgt.js} +1 -1
  142. package/build/assets/{trash-2-C0xNVp9c.js → trash-2-yZnDM4Ji.js} +1 -1
  143. package/build/assets/{typography-NOKSk9_R.js → typography-DB5HoCk0.js} +1 -1
  144. package/build/assets/usage-tab-DrEtBmBT.js +1 -0
  145. package/build/assets/use-acp-credential-form-c8KXAa8A.js +1 -0
  146. package/build/assets/{use-activate-agent-profile-D9YRQPTF.js → use-activate-agent-profile-B0p34N3q.js} +1 -1
  147. package/build/assets/use-agent-profiles-CPIc6wLH.js +1 -0
  148. package/build/assets/{use-can-manage-org-profiles-Dxzq2AEd.js → use-can-manage-org-profiles-Dz_8Eqkv.js} +1 -1
  149. package/build/assets/{use-cloud-current-user-id-Co2eJk2A.js → use-cloud-current-user-id-DvUVqCle.js} +1 -1
  150. package/build/assets/use-config-C3PO4TBw.js +1 -0
  151. package/build/assets/{use-create-conversation-CoHTiCbI.js → use-create-conversation-DVrA_uLD.js} +1 -1
  152. package/build/assets/use-create-secret-DbBIpaCR.js +1 -0
  153. package/build/assets/use-get-secrets-6PBitf54.js +1 -0
  154. package/build/assets/use-has-permission-CQ31Cl8j.js +1 -0
  155. package/build/assets/use-is-authed-2UrDIziV.js +1 -0
  156. package/build/assets/use-is-creating-conversation-BvYpmb3v.js +1 -0
  157. package/build/assets/use-llm-profiles-diZS4FiN.js +1 -0
  158. package/build/assets/use-manifest-capabilities-HIWCtIUm.js +1 -0
  159. package/build/assets/{use-onboarding-completion-CCE8OQgV.js → use-onboarding-completion-Bs8PcXik.js} +1 -1
  160. package/build/assets/{use-plugins-marketplace-CEiak69h.js → use-plugins-marketplace-BCuNLFsr.js} +1 -1
  161. package/build/assets/use-save-agent-profile-BaMNSpBV.js +1 -0
  162. package/build/assets/{use-save-settings-DNmnbG6f.js → use-save-settings-BahvC2Gw.js} +1 -1
  163. package/build/assets/{use-settings-wCwPaSIv.js → use-settings-C6ZxpBDX.js} +1 -1
  164. package/build/assets/{use-settings-nav-items-BlFL7YhM.js → use-settings-nav-items-Bqn69Ggw.js} +2 -2
  165. package/build/assets/use-tracking-Bhu7gk2y.js +3 -0
  166. package/build/assets/{use-user-conversation-DVtfg0B_.js → use-user-conversation-BkNXpXrd.js} +1 -1
  167. package/build/assets/{useInfiniteQuery-p1xq35r2.js → useInfiniteQuery-c_OmS3lK.js} +1 -1
  168. package/build/assets/{useMutation-BFDQmgk9.js → useMutation-6ZsQCqAn.js} +1 -1
  169. package/build/assets/{useQueries-DF1NAAeC.js → useQueries-xDrGlTO_.js} +1 -1
  170. package/build/assets/{useQuery-DRv--6bK.js → useQuery-Bs5NFz2s.js} +1 -1
  171. package/build/assets/{utils-zxEjKE70.js → utils-DUD5ScdA.js} +1 -1
  172. package/build/assets/{vendor~entry.client-CgNUwtQL.js → vendor~entry.client-BFE7Llz9.js} +1 -1
  173. package/build/assets/{vendor~entry.client-zSIea5EO.js → vendor~entry.client-BaKt_PIp.js} +1 -1
  174. package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js} +1 -1
  175. package/build/assets/{vendor~files-tab-D9wR9yM2.js → vendor~files-tab-B6POTS66.js} +1 -1
  176. package/build/assets/{vendor~index-home~home~conversation-panel~conversation-Ipoe6hvY.js → vendor~index-home~home~conversation-panel~conversation-53Q_U6uP.js} +1 -1
  177. package/build/assets/{vendor~root-layout-C-IgVx6e.js → vendor~root-layout-DeQACFVA.js} +1 -1
  178. package/build/assets/{vendor~root-layout~conversation-panel~conversation-Dhd_I4H4.js → vendor~root-layout~conversation-panel~conversation-bv7ooVgH.js} +1 -1
  179. package/build/assets/{vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-Cc0f9kPP.js → vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-e8pX05xf.js} +1 -1
  180. package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-d7svw-BB.js → vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-BvS6PCK2.js} +1 -1
  181. package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-4WsUP-tz.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-DOPLJMH9.js} +1 -1
  182. package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-D5DWZVc7.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js} +1 -1
  183. package/build/assets/{verification-settings-B8UMQ7MG.js → verification-settings-COueVXmM.js} +1 -1
  184. package/build/assets/{wrench-DIka3hCq.js → wrench-C95ujnYo.js} +1 -1
  185. package/build/assets/x-86ZCfxKY.js +1 -0
  186. package/build/assets/{zap-DHddTPc0.js → zap-DRa-r-Tf.js} +1 -1
  187. package/build/index.html +4 -4
  188. package/build/locales/ar/openhands.json +60 -2
  189. package/build/locales/ca/openhands.json +60 -2
  190. package/build/locales/de/openhands.json +60 -2
  191. package/build/locales/en/openhands.json +60 -2
  192. package/build/locales/es/openhands.json +60 -2
  193. package/build/locales/fr/openhands.json +60 -2
  194. package/build/locales/it/openhands.json +60 -2
  195. package/build/locales/ja/openhands.json +60 -2
  196. package/build/locales/ko-KR/openhands.json +60 -2
  197. package/build/locales/no/openhands.json +60 -2
  198. package/build/locales/pt/openhands.json +60 -2
  199. package/build/locales/tr/openhands.json +60 -2
  200. package/build/locales/uk/openhands.json +60 -2
  201. package/build/locales/zh-CN/openhands.json +60 -2
  202. package/build/locales/zh-TW/openhands.json +60 -2
  203. package/config/defaults.json +1 -1
  204. package/dist/api/automation-service/automation-service.api.cjs +1 -1
  205. package/dist/api/automation-service/automation-service.api.cjs.map +1 -1
  206. package/dist/api/automation-service/automation-service.api.d.ts +10 -0
  207. package/dist/api/automation-service/automation-service.api.js +42 -0
  208. package/dist/api/automation-service/automation-service.api.js.map +1 -1
  209. package/dist/api/cloud/conversation-service.api.cjs +1 -1
  210. package/dist/api/cloud/conversation-service.api.cjs.map +1 -1
  211. package/dist/api/cloud/conversation-service.api.d.ts +9 -0
  212. package/dist/api/cloud/conversation-service.api.js +11 -1
  213. package/dist/api/cloud/conversation-service.api.js.map +1 -1
  214. package/dist/api/profiles-service/profiles-service.api.cjs +1 -1
  215. package/dist/api/profiles-service/profiles-service.api.cjs.map +1 -1
  216. package/dist/api/profiles-service/profiles-service.api.d.ts +15 -2
  217. package/dist/api/profiles-service/profiles-service.api.js +25 -2
  218. package/dist/api/profiles-service/profiles-service.api.js.map +1 -1
  219. package/dist/api/secrets-service.cjs +1 -1
  220. package/dist/api/secrets-service.cjs.map +1 -1
  221. package/dist/api/secrets-service.d.ts +5 -0
  222. package/dist/api/secrets-service.js +12 -6
  223. package/dist/api/secrets-service.js.map +1 -1
  224. package/dist/components/conversation-events/chat/event-message-components/index.d.ts +0 -1
  225. package/dist/components/features/automations/git-sync/git-sync-activity-row.d.ts +15 -0
  226. package/dist/components/features/automations/git-sync/git-sync-config-form.d.ts +13 -0
  227. package/dist/components/features/automations/git-sync/git-sync-error-banner.d.ts +6 -0
  228. package/dist/components/features/automations/git-sync/git-sync-not-local-state.d.ts +1 -0
  229. package/dist/components/features/automations/git-sync/git-sync-overview-section.d.ts +12 -0
  230. package/dist/components/features/automations/git-sync/git-sync-skeleton.d.ts +1 -0
  231. package/dist/components/features/automations/git-sync/git-sync-status-pill.d.ts +7 -0
  232. package/dist/components/features/automations/git-sync/git-sync-unsupported-state.d.ts +7 -0
  233. package/dist/components/features/automations/responder-deployment-modal.d.ts +2 -1
  234. package/dist/components/features/chat/chat-interface.cjs +2 -2
  235. package/dist/components/features/chat/chat-interface.cjs.map +1 -1
  236. package/dist/components/features/chat/chat-interface.js +177 -176
  237. package/dist/components/features/chat/chat-interface.js.map +1 -1
  238. package/dist/components/features/chat/error-message-banner.cjs +1 -1
  239. package/dist/components/features/chat/error-message-banner.cjs.map +1 -1
  240. package/dist/components/features/chat/error-message-banner.d.ts +3 -1
  241. package/dist/components/features/chat/error-message-banner.js +64 -58
  242. package/dist/components/features/chat/error-message-banner.js.map +1 -1
  243. package/dist/components/features/conversation-panel/compact-conversation-row.cjs +1 -1
  244. package/dist/components/features/conversation-panel/compact-conversation-row.js +6 -6
  245. package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
  246. package/dist/components/features/conversation-panel/conversation-panel.js +19 -19
  247. package/dist/components/features/onboarding/steps/setup-llm-step.d.ts +10 -7
  248. package/dist/components/shared/buttons/conversation-confirmation-buttons.cjs +1 -1
  249. package/dist/components/shared/buttons/conversation-confirmation-buttons.cjs.map +1 -1
  250. package/dist/components/shared/buttons/conversation-confirmation-buttons.js +1 -1
  251. package/dist/components/shared/buttons/conversation-confirmation-buttons.js.map +1 -1
  252. package/dist/config/defaults.cjs +1 -1
  253. package/dist/config/defaults.cjs.map +1 -1
  254. package/dist/config/defaults.js +1 -1
  255. package/dist/config/defaults.js.map +1 -1
  256. package/dist/contexts/conversation-websocket-context.cjs +2 -2
  257. package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
  258. package/dist/contexts/conversation-websocket-context.js +12 -12
  259. package/dist/contexts/conversation-websocket-context.js.map +1 -1
  260. package/dist/hooks/query/use-commit-changes.cjs +1 -1
  261. package/dist/hooks/query/use-commit-changes.js +4 -4
  262. package/dist/hooks/query/use-git-sync.d.ts +19 -0
  263. package/dist/hooks/query/use-task-polling.cjs +1 -1
  264. package/dist/hooks/query/use-task-polling.cjs.map +1 -1
  265. package/dist/hooks/query/use-task-polling.js +12 -10
  266. package/dist/hooks/query/use-task-polling.js.map +1 -1
  267. package/dist/hooks/query/use-unified-get-git-changes.cjs +1 -1
  268. package/dist/hooks/query/use-unified-get-git-changes.js +4 -4
  269. package/dist/hooks/query/use-unified-git-commits.cjs +1 -1
  270. package/dist/hooks/query/use-unified-git-commits.js +4 -4
  271. package/dist/hooks/query/use-unified-git-diff.cjs +1 -1
  272. package/dist/hooks/query/use-unified-git-diff.js +4 -4
  273. package/dist/hooks/query/use-workspace-files.cjs +1 -1
  274. package/dist/hooks/query/use-workspace-files.cjs.map +1 -1
  275. package/dist/hooks/query/use-workspace-files.d.ts +14 -4
  276. package/dist/hooks/query/use-workspace-files.js +45 -32
  277. package/dist/hooks/query/use-workspace-files.js.map +1 -1
  278. package/dist/hooks/use-responder-url-secret.d.ts +5 -0
  279. package/dist/hooks/use-tracking.cjs +1 -1
  280. package/dist/hooks/use-tracking.cjs.map +1 -1
  281. package/dist/hooks/use-tracking.d.ts +6 -0
  282. package/dist/hooks/use-tracking.js +6 -0
  283. package/dist/hooks/use-tracking.js.map +1 -1
  284. package/dist/i18n/declaration.cjs +1 -1
  285. package/dist/i18n/declaration.cjs.map +1 -1
  286. package/dist/i18n/declaration.d.ts +59 -1
  287. package/dist/i18n/declaration.js +1 -1
  288. package/dist/i18n/declaration.js.map +1 -1
  289. package/dist/i18n/translation.cjs +1 -1
  290. package/dist/i18n/translation.cjs.map +1 -1
  291. package/dist/i18n/translation.js +1001 -15
  292. package/dist/i18n/translation.js.map +1 -1
  293. package/dist/locales/ar/openhands.json +60 -2
  294. package/dist/locales/ca/openhands.json +60 -2
  295. package/dist/locales/de/openhands.json +60 -2
  296. package/dist/locales/en/openhands.json +60 -2
  297. package/dist/locales/es/openhands.json +60 -2
  298. package/dist/locales/fr/openhands.json +60 -2
  299. package/dist/locales/it/openhands.json +60 -2
  300. package/dist/locales/ja/openhands.json +60 -2
  301. package/dist/locales/ko-KR/openhands.json +60 -2
  302. package/dist/locales/no/openhands.json +60 -2
  303. package/dist/locales/pt/openhands.json +60 -2
  304. package/dist/locales/tr/openhands.json +60 -2
  305. package/dist/locales/uk/openhands.json +60 -2
  306. package/dist/locales/zh-CN/openhands.json +60 -2
  307. package/dist/locales/zh-TW/openhands.json +60 -2
  308. package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.cjs +2 -0
  309. package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.cjs.map +1 -0
  310. package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.js +27 -0
  311. package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.js.map +1 -0
  312. package/dist/package.cjs +1 -1
  313. package/dist/package.cjs.map +1 -1
  314. package/dist/package.js +1 -1
  315. package/dist/package.js.map +1 -1
  316. package/dist/routes/files-tab.cjs +1 -1
  317. package/dist/routes/files-tab.js +11 -11
  318. package/dist/routes/files-tab.js.map +1 -1
  319. package/dist/services/settings.cjs +1 -1
  320. package/dist/services/settings.cjs.map +1 -1
  321. package/dist/services/settings.js +2 -2
  322. package/dist/services/settings.js.map +1 -1
  323. package/dist/services/telemetry.cjs +1 -1
  324. package/dist/services/telemetry.cjs.map +1 -1
  325. package/dist/services/telemetry.js +47 -51
  326. package/dist/services/telemetry.js.map +1 -1
  327. package/dist/stores/error-message-store.cjs +1 -1
  328. package/dist/stores/error-message-store.cjs.map +1 -1
  329. package/dist/stores/error-message-store.d.ts +3 -1
  330. package/dist/stores/error-message-store.js +5 -3
  331. package/dist/stores/error-message-store.js.map +1 -1
  332. package/dist/types/git-sync.d.ts +51 -0
  333. package/dist/utils/error-handler.cjs +1 -1
  334. package/dist/utils/error-handler.cjs.map +1 -1
  335. package/dist/utils/error-handler.d.ts +3 -2
  336. package/dist/utils/error-handler.js +18 -5
  337. package/dist/utils/error-handler.js.map +1 -1
  338. package/dist/utils/format-model-name.cjs +1 -1
  339. package/dist/utils/format-model-name.cjs.map +1 -1
  340. package/dist/utils/format-model-name.d.ts +1 -0
  341. package/dist/utils/format-model-name.js +1 -0
  342. package/dist/utils/format-model-name.js.map +1 -1
  343. package/dist/utils/transcript-export/load-complete-events.cjs +1 -1
  344. package/dist/utils/transcript-export/load-complete-events.cjs.map +1 -1
  345. package/dist/utils/transcript-export/load-complete-events.js +24 -16
  346. package/dist/utils/transcript-export/load-complete-events.js.map +1 -1
  347. package/package.json +1 -1
  348. package/scripts/check-translation-completeness.cjs +3 -0
  349. package/scripts/dev-with-automation.mjs +98 -9
  350. package/build/assets/active-backend-context-IqOjobNK.js +0 -2
  351. package/build/assets/agent-settings-COfJsQ1d.js +0 -1
  352. package/build/assets/automation-detail-B-jQ39Mm.js +0 -3
  353. package/build/assets/automation-export-B1dywoqk.js +0 -2
  354. package/build/assets/automation-setup-route-C-bWUZBi.js +0 -1
  355. package/build/assets/automations-list-DnMxlxsL.js +0 -1
  356. package/build/assets/browser-B9AbV6kG.js +0 -7
  357. package/build/assets/check-WAFXrrs_.js +0 -1
  358. package/build/assets/chevron-down-CifNWzme.js +0 -1
  359. package/build/assets/circle-check-CtnimJa8.js +0 -1
  360. package/build/assets/conversation-BPo8SvLN.js +0 -1
  361. package/build/assets/conversation-CPCVsCUY.js +0 -90
  362. package/build/assets/conversation-panel-BPo8SvLN.js +0 -1
  363. package/build/assets/conversation-state-store-C5YpjMNy.js +0 -1
  364. package/build/assets/files-tab-DV0L-lFE.js +0 -1
  365. package/build/assets/format-model-name-BN_rx1Y3.js +0 -1
  366. package/build/assets/format-relative-time-DSErAuVr.js +0 -1
  367. package/build/assets/git-provider-icon-BvlLAche.js +0 -1
  368. package/build/assets/git-repo-dropdown-C6R7hgM8.js +0 -1
  369. package/build/assets/home-BOrlwLqG.js +0 -1
  370. package/build/assets/home-BvMNC6E-.js +0 -1
  371. package/build/assets/index-home-BvMNC6E-.js +0 -1
  372. package/build/assets/info-BRVcJAUg.js +0 -1
  373. package/build/assets/install-server-modal-Bl4G1zF4.js +0 -1
  374. package/build/assets/kebab-menu-item-content-BGoGFEAg.js +0 -1
  375. package/build/assets/llm-not-configured-banner-DLw_tu-G.js +0 -27
  376. package/build/assets/llm-settings-B-pkVCrt.js +0 -1
  377. package/build/assets/llm-settings-DSC0-IQ7.js +0 -1
  378. package/build/assets/loader-circle-B47W9XqT.js +0 -1
  379. package/build/assets/manifest-653b89aa.js +0 -1
  380. package/build/assets/manifest-subpage-layout-CKWvL2ig.js +0 -1
  381. package/build/assets/markdown-renderer-DUmk7pFc.js +0 -8
  382. package/build/assets/onboarding-modal-C_xVrFNv.js +0 -1
  383. package/build/assets/plus-zNEL8rcX.js +0 -1
  384. package/build/assets/profiles-service.api-DCMYxHMi.js +0 -1
  385. package/build/assets/providers-BjrtjX4L.js +0 -1
  386. package/build/assets/recommended-automations-launcher-CFlzhu1o.js +0 -1
  387. package/build/assets/root-CanxKlNV.css +0 -1
  388. package/build/assets/root-DkfG_UWR.js +0 -2
  389. package/build/assets/root-layout-D75LHYhh.js +0 -2
  390. package/build/assets/search-CycosyjN.js +0 -1
  391. package/build/assets/secrets-service-B26R61C1.js +0 -1
  392. package/build/assets/secrets-settings-CbLYCKOX.js +0 -1
  393. package/build/assets/usage-tab-tEmVN0KD.js +0 -1
  394. package/build/assets/use-acp-credential-form-BPNi0Zbm.js +0 -1
  395. package/build/assets/use-agent-profiles-Cb2zUW3l.js +0 -1
  396. package/build/assets/use-config-DKAMiI5R.js +0 -1
  397. package/build/assets/use-create-secret-2zBlCDsF.js +0 -1
  398. package/build/assets/use-is-authed-C52-ivnB.js +0 -1
  399. package/build/assets/use-is-creating-conversation-DdaAE6jV.js +0 -1
  400. package/build/assets/use-llm-profiles-C_BHue65.js +0 -1
  401. package/build/assets/use-manifest-capabilities-DPrQsaPP.js +0 -1
  402. package/build/assets/use-save-agent-profile-DK9idD6a.js +0 -1
  403. package/build/assets/use-tracking-CVwPmhlX.js +0 -3
  404. package/build/assets/x-BWKA2Ver.js +0 -1
  405. package/dist/api/cloud/suggestions-service.api.d.ts +0 -8
  406. package/dist/api/suggestions-service/suggestions-service.api.d.ts +0 -11
  407. package/dist/components/conversation-events/chat/event-message-components/observation-pair-event-message.d.ts +0 -7
  408. package/dist/components/conversation-events/index.d.ts +0 -1
  409. package/dist/components/features/automations/metadata-chip.d.ts +0 -6
  410. package/dist/components/features/chat/task-tracking/status-badge.d.ts +0 -5
  411. package/dist/components/features/chat/task-tracking/status-icon.d.ts +0 -5
  412. package/dist/components/features/chat/task-tracking/task-list-section.d.ts +0 -10
  413. package/dist/components/features/controls/tools.d.ts +0 -2
  414. package/dist/components/features/conversation-panel/new-conversation-button.d.ts +0 -23
  415. package/dist/components/features/home/home-header/guide-message.d.ts +0 -1
  416. package/dist/components/features/home/home-header/home-header.d.ts +0 -1
  417. package/dist/components/features/home/new-conversation/create-conversation-button.d.ts +0 -1
  418. package/dist/components/features/home/new-conversation/new-conversation.d.ts +0 -1
  419. package/dist/components/features/home/new-conversation.d.ts +0 -1
  420. package/dist/components/features/home/tasks/task-card.d.ts +0 -6
  421. package/dist/components/features/home/tasks/task-group.d.ts +0 -7
  422. package/dist/components/features/home/tasks/task-issue-number.d.ts +0 -6
  423. package/dist/components/features/home/tasks/task-item-title.d.ts +0 -1
  424. package/dist/components/features/home/tasks/task-suggestions-skeleton.d.ts +0 -1
  425. package/dist/components/features/home/tasks/task-suggestions.d.ts +0 -6
  426. package/dist/components/features/settings/agent-server-onboarding.d.ts +0 -10
  427. package/dist/components/features/settings/mcp-settings/mcp-server-list-item.d.ts +0 -6
  428. package/dist/components/features/settings/mcp-settings/mcp-server-list.d.ts +0 -8
  429. package/dist/hooks/query/use-suggested-tasks.d.ts +0 -1
  430. package/dist/hooks/use-should-show-user-features.d.ts +0 -1
  431. package/dist/ui/card-title.d.ts +0 -16
  432. package/dist/ui/card.d.ts +0 -14
  433. package/dist/utils/group-suggested-tasks.d.ts +0 -7
  434. /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dh9v73sa-rfV8mQ9m.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dcc51rps-rfV8mQ9m.js} +0 -0
  435. /package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~lq5hicxx-cHFhpUBq.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js} +0 -0
  436. /package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~9pstowjp-BOVIFA_g.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-BOVIFA_g.js} +0 -0
  437. /package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~ht43enc2-C0JXQb_q.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~jz4f6vo2-C0JXQb_q.js} +0 -0
@@ -0,0 +1,3 @@
1
+ import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{B as r,H 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{M as s,y as c}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js";import{t as l}from"./useQuery-Bs5NFz2s.js";import{J as u,Mt as d,Q as f,jt as p,n as m,st as h,tt as g}from"./active-backend-context-BZDG15C0.js";import{i as _,t as v,z as y}from"./utils-DUD5ScdA.js";import{t as b}from"./zap-DRa-r-Tf.js";import{t as x}from"./proxy-DYDXxtje.js";import{m as S,n as C,t as w}from"./use-tracking-Bhu7gk2y.js";import{t as T}from"./use-settings-C6ZxpBDX.js";import{r as E}from"./modal-classes-D5_b5vMi.js";import{t as D}from"./brand-button-Blxv5nww.js";import{n as O}from"./navigation-context-CQZwH_tC.js";import{n as ee}from"./use-create-conversation-DVrA_uLD.js";import{t as k}from"./u-edit-DAkcF52u.js";import{t as A}from"./terminal-BUpID2wS.js";import{t as j}from"./use-user-conversation-BkNXpXrd.js";import{t as M}from"./toggle-switch-B2MLKsgt.js";import{t as N}from"./x-mark-BopmFoBq.js";import{n as P,t as F}from"./link-external-BNZzCM1I.js";import{n as I,r as te,t as ne}from"./use-has-permission-CQ31Cl8j.js";import{t as L}from"./automation-C_eCrGyP.js";import{a as R,c as re,d as ie,i as ae,l as oe,m as z,n as B,p as se,r as V}from"./kebab-menu-item-content-DERMdnDv.js";import{n as H}from"./api-error-message-BEIE_yD1.js";import{i as ce,n as le,r as ue,t as de}from"./format-relative-time-ZhQD4rsl.js";import{a as fe,i as pe,o as me,r as he,s as ge,t as _e}from"./automation-export-n0X6FB0C.js";import{n as ve,r as ye,t as be}from"./backend-not-configured-DP8KLNq_.js";import{a as U,i as xe,n as W,r as G,t as Se}from"./cog-CZiR80uT.js";var K=e(t()),q=n(),J=e=>(0,q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,...e,children:(0,q.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3`})});function Ce({active:e}){let{t}=o(`openhands`);return(0,q.jsx)(`span`,{"data-testid":e?`active-status-badge-active`:`active-status-badge-inactive`,className:v(`inline-flex items-center rounded-full px-3 py-1 text-xs font-medium`,e?`bg-[var(--oh-success)]/15 text-[var(--oh-success)]`:`bg-surface-raised text-muted`),children:t(e?y.AUTOMATIONS$DETAIL$ACTIVE:y.AUTOMATIONS$DETAIL$INACTIVE)})}function we({automation:e,onToggle:t,onEdit:n,onDelete:r,onExport:i,onDownloadTarball:a,onRunNow:s,isRunningNow:c=!1}){let{t:l}=o(`openhands`),u=ne(`manage_automations`),d=[...n?[{label:l(y.AUTOMATIONS$EDIT),icon:(0,q.jsx)(k,{className:`size-4`}),onClick:n}]:[],{label:e.enabled?l(y.AUTOMATIONS$TURN_OFF):l(y.AUTOMATIONS$TURN_ON),icon:(0,q.jsx)(B,{className:`size-4`}),onClick:t},{label:l(y.AUTOMATIONS$EXPORT),icon:(0,q.jsx)(J,{className:`size-4`}),onClick:i},{label:l(y.AUTOMATIONS$DOWNLOAD_TARBALL),icon:(0,q.jsx)(J,{className:`size-4`}),onClick:a},{label:l(y.AUTOMATIONS$DELETE),icon:(0,q.jsx)(fe,{className:`size-4`}),onClick:r}];return(0,q.jsx)(`div`,{className:`flex flex-col gap-4`,children:(0,q.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(`h1`,{className:`text-xl font-medium text-content`,children:e.name}),(0,q.jsx)(Ce,{active:e.enabled})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[u&&s&&(0,q.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 rounded-md border border-[var(--oh-border)] px-3 py-1.5 text-sm font-medium text-content transition-colors hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60`,disabled:c||!e.enabled,onClick:s,children:[(0,q.jsx)(V,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),l(c?y.AUTOMATIONS$STARTING:y.AUTOMATIONS$RUN_NOW)]}),u&&(0,q.jsx)(M,{enabled:e.enabled,label:e.enabled?l(y.AUTOMATIONS$TURN_OFF):l(y.AUTOMATIONS$TURN_ON),onToggle:t}),u&&(0,q.jsx)(ge,{items:d})]})]})})}var Te=240,Ee=`max-h-60`;function De({prompt:e}){let{t}=o(`openhands`),[n,r]=K.useState(!1),[i,a]=K.useState(!1),s=K.useRef(null),c=i&&!n;return K.useLayoutEffect(()=>{let e=s.current;if(!e)return;let t=()=>{a(e.scrollHeight>Te)};t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[e]),(0,q.jsx)(G,{icon:(0,q.jsx)(A,{className:`size-4`}),title:t(y.AUTOMATIONS$DETAIL$PROMPT),children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,q.jsxs)(`div`,{className:`relative`,children:[(0,q.jsx)(`p`,{ref:s,className:v(`whitespace-pre-wrap text-sm leading-6 text-content`,c&&v(Ee,`overflow-hidden`)),"data-testid":`automation-prompt-content`,children:e}),c?(0,q.jsx)(`div`,{className:`pointer-events-none absolute inset-x-0 bottom-0 h-20 bg-gradient-to-t from-[var(--oh-surface)] to-transparent`,"aria-hidden":!0,"data-testid":`automation-prompt-fade`}):null]}),i?(0,q.jsx)(`button`,{type:`button`,className:`self-start cursor-pointer text-sm font-normal text-[var(--oh-muted)] hover:text-white`,onClick:()=>r(e=>!e),"data-testid":`automation-prompt-toggle`,children:t(n?y.COMMON$VIEW_LESS:y.COMMON$VIEW_MORE)}):null]})})}var Y=e=>(0,q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,q.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5`})}),Oe=e=>(0,q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,q.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0`})});function ke({branch:e}){return(0,q.jsx)(`span`,{className:`inline-flex items-center rounded-full border border-[var(--oh-border)] bg-surface-raised px-2.5 py-0.5 text-xs text-muted`,children:e})}var X=60;function Ae({filter:e}){let{t}=o(`openhands`),[n,r]=(0,K.useState)(!1),i=e.length>X;return(0,q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,q.jsx)(`span`,{className:`font-mono break-all`,children:i&&!n?`${e.slice(0,X)}…`:e}),i&&(0,q.jsx)(`button`,{type:`button`,onClick:()=>r(!n),"aria-expanded":n,className:`text-xs text-muted hover:text-content self-start`,children:t(n?y.SETTINGS$SKILLS_SHOW_LESS:y.SETTINGS$SKILLS_SHOW_MORE)})]})}function je({automation:e}){let{t}=o(`openhands`),n=e.trigger.type===`event`,r=e.trigger.schedule??``;e.trigger.schedule_human&&(r=e.timezone?`${e.trigger.schedule_human} (${e.timezone})`:e.trigger.schedule_human);let i=t(n?y.AUTOMATIONS$DETAIL$TRIGGER_EVENT:y.AUTOMATIONS$DETAIL$TRIGGER_SCHEDULE);return(0,q.jsx)(G,{icon:(0,q.jsx)(Se,{className:`size-4`}),title:t(y.AUTOMATIONS$DETAIL$CONFIGURATION),children:(0,q.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-4 gap-y-5`,children:[e.repository&&(0,q.jsx)(W,{icon:(0,q.jsx)(xe,{className:`size-3.5`}),label:t(y.AUTOMATIONS$DETAIL$REPOSITORIES),children:(0,q.jsxs)(`span`,{className:`flex items-center gap-1`,children:[e.repository,e.branch&&(0,q.jsx)(ke,{branch:e.branch})]})}),(0,q.jsx)(W,{icon:(0,q.jsx)(ce,{className:`size-3.5`}),label:t(y.AUTOMATIONS$DETAIL$TRIGGER),children:i}),!n&&(0,q.jsx)(W,{icon:(0,q.jsx)(Y,{className:`size-3.5`}),label:t(y.AUTOMATIONS$DETAIL$SCHEDULE),children:r}),n&&e.trigger.source&&(0,q.jsx)(W,{icon:(0,q.jsx)(b,{className:`size-3.5`,"aria-hidden":`true`}),label:t(y.AUTOMATIONS$DETAIL$EVENT_SOURCE),children:e.trigger.source}),n&&e.trigger.on&&(0,q.jsx)(W,{icon:(0,q.jsx)(F,{className:`size-3.5`}),label:t(y.AUTOMATIONS$DETAIL$EVENT_TYPE),children:R(e.trigger.on)}),n&&e.trigger.filter&&(0,q.jsx)(W,{icon:(0,q.jsx)(P,{className:`size-3.5`}),label:t(y.AUTOMATIONS$DETAIL$EVENT_FILTER),children:(0,q.jsx)(Ae,{filter:e.trigger.filter})}),(0,q.jsx)(W,{icon:(0,q.jsx)(me,{className:`size-3.5`}),label:t(y.AUTOMATIONS$DETAIL$MODEL),children:e.model??t(y.COMMON$ACTIVE_PROFILE)}),e.notification&&(0,q.jsx)(W,{icon:(0,q.jsx)(Oe,{className:`size-3.5`}),label:t(y.AUTOMATIONS$DETAIL$NOTIFICATION),children:e.notification})]})})}var Me=e=>(0,q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,q.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M14.25 6.087c0-.355.186-.676.401-.959.221-.29.349-.634.349-1.003 0-1.036-1.007-1.875-2.25-1.875s-2.25.84-2.25 1.875c0 .369.128.713.349 1.003.215.283.401.604.401.959v0a.64.64 0 0 1-.657.643 48.39 48.39 0 0 1-4.163-.3c.186 1.613.293 3.25.315 4.907a.656.656 0 0 1-.658.663v0c-.355 0-.676-.186-.959-.401a1.647 1.647 0 0 0-1.003-.349c-1.036 0-1.875 1.007-1.875 2.25s.84 2.25 1.875 2.25c.369 0 .713-.128 1.003-.349.283-.215.604-.401.959-.401v0c.31 0 .555.26.532.57a48.039 48.039 0 0 1-.642 5.056c1.518.19 3.058.309 4.616.354a.64.64 0 0 0 .657-.643v0c0-.355-.186-.676-.401-.959a1.647 1.647 0 0 1-.349-1.003c0-1.035 1.008-1.875 2.25-1.875 1.243 0 2.25.84 2.25 1.875 0 .369-.128.713-.349 1.003-.215.283-.4.604-.4.959v0c0 .333.277.599.61.58a48.1 48.1 0 0 0 5.427-.63 48.05 48.05 0 0 0 .582-4.717.532.532 0 0 0-.533-.57v0c-.355 0-.676.186-.959.401-.29.221-.634.349-1.003.349-1.035 0-1.875-1.007-1.875-2.25s.84-2.25 1.875-2.25c.37 0 .713.128 1.003.349.283.215.604.401.96.401v0a.656.656 0 0 0 .658-.663 48.422 48.422 0 0 0-.37-5.36c-1.886.342-3.81.574-5.766.689a.578.578 0 0 1-.61-.58v0Z`})});function Ne({name:e}){return(0,q.jsx)(`span`,{className:`inline-flex items-center rounded-full border border-[var(--oh-border)] bg-[var(--oh-surface-deep)] px-3.5 py-1.5 text-sm text-content`,children:e})}function Pe({plugins:e}){let{t}=o(`openhands`);return(0,q.jsx)(G,{icon:(0,q.jsx)(Me,{className:`size-4`}),title:t(y.AUTOMATIONS$DETAIL$PLUGINS),children:(0,q.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.map(e=>(0,q.jsx)(Ne,{name:e},e))})})}var Z=e=>(0,q.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,q.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182`})});function Fe({createdAt:e,lastRunAt:t}){let{t:n,i18n:r}=o(`openhands`),i=r.language;return(0,q.jsx)(G,{icon:(0,q.jsx)(Z,{className:`size-4`}),title:n(y.AUTOMATIONS$DETAIL$ACTIVITY),children:(0,q.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-4`,children:[(0,q.jsx)(W,{icon:(0,q.jsx)(Y,{className:`size-3.5`}),label:n(y.AUTOMATIONS$DETAIL$CREATED),children:de(e,i)}),(0,q.jsx)(W,{icon:(0,q.jsx)(I,{className:`size-3.5`}),label:n(y.AUTOMATIONS$DETAIL$LAST_RUN),children:t?le(t,i,n):n(y.AUTOMATIONS$DETAIL$TIME_NEVER)})]})})}var Ie=100,Le=[`run_id`,`automation_id`,`automation_name`,`trigger`,`start_time`,`end_time`,`duration_seconds`,`status`,`conversation_id`,`conversation_url`,`error`,`cost`];function Re(e,t){return`${e.name.trim().toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)||e.id}.activity-log.${t}`}function ze(e){return/[",\n\r]/.test(e)?`"${e.replace(/"/g,`""`)}"`:e}function Be(e){let t=[Le.join(`,`)];for(let n of e){let e=Le.map(e=>{let t=n[e];return t==null?``:ze(e===`trigger`?JSON.stringify(t):String(t))});t.push(e.join(`,`))}return`${t.join(`
2
+ `)}\n`}function Ve(e,t){if(!e)return null;let n=`/conversations/${e}`;return t?`${t.replace(/\/$/,``)}${n}`:n}function He(e,t,n){let r=e.started_at||null,i=e.completed_at,a=null;return r&&i&&(a=(new Date(i).getTime()-new Date(r).getTime())/1e3),{run_id:e.id,automation_id:t.id,automation_name:t.name,trigger:t.trigger,start_time:r,end_time:i,duration_seconds:a,status:e.status,conversation_id:e.conversation_id,conversation_url:Ve(e.conversation_id,n),error:e.error_detail,cost:e.cost??null}}async function Ue(e,t){let n=[],r=0,i=1/0;for(;r<i;){let a=await C.listAutomationRuns(e.id,{limit:Ie,offset:r});for(let r of a.runs)n.push(He(r,e,t));if(i=a.total,r+=a.runs.length,a.runs.length===0)break}return n}async function We(e){let{automation:t,format:n,conversationBaseUrl:r}=e,i=await Ue(t,r);if(n===`json`){_(new Blob([`${JSON.stringify({runs:i,total:i.length},null,2)}\n`],{type:`application/json`}),Re(t,`json`));return}_(new Blob([Be(i)],{type:`text/csv;charset=utf-8`}),Re(t,`csv`))}var Ge=20;function Ke(e){return e.kind===`BashOutput`}var qe=class e{static async listOutputs(t,n,r){let i=[],a;for(let o=0;o<Ge;o+=1){let o=await e.searchEvents(t,n,{kind__eq:`BashOutput`,command_id__eq:r,sort_order:`TIMESTAMP`,...a?{page_id:a}:{}});if(o.items.forEach(e=>{Ke(e)&&i.push(e)}),!o.next_page_id)break;a=o.next_page_id}return i}static async searchEvents(e,t,n){let r=h().backend;if(r.kind===`cloud`){if(!e)throw Error(`BashService.listOutputs requires a conversation URL on cloud backends`);let i=new URLSearchParams;return Object.entries(n).forEach(([e,t])=>{t!=null&&i.set(e,String(t))}),x({backend:r,method:`GET`,hostOverride:g(e),path:`/api/bash/bash_events/search?${i.toString()}`,authMode:`session-api-key`,sessionApiKey:t})}return new c(f({...e?{conversationUrl:e}:{},sessionApiKey:t})).searchEvents(n)}},Je=[`bash-command-logs`];function Ye(e){switch(e){case`MISSING`:return`missing`;case`PAUSED`:return`paused`;case`STARTING`:return`starting`;case`ERROR`:return`errored`;case`RUNNING`:case null:case void 0:default:return null}}function Xe(e){let t=s.isAxiosError(e)?e.response?.status:u(e)?e.status:void 0;if(t!==void 0)return t===404||t>=500?`unreachable`:null;if(s.isAxiosError(e)||e instanceof TypeError)return`unreachable`;if(e instanceof Error){let t=e.cause instanceof Error?e.cause.name:null;if(e.name===`AbortError`||e.name===`TimeoutError`||t===`AbortError`||t===`TimeoutError`)return`unreachable`}return null}function Ze(e){let{conversationId:t,bashCommandId:n,enabled:r=!0}=e,i=m(),a=j(r?t??null:null),o=a.data,s=o?.conversation_url??null,c=o?.session_api_key??null,u=i.backend.kind===`cloud`,d=a.isFetched,f=null,p=!1;u&&d&&(o?f=Ye(o.sandbox_status)??(o.conversation_url?null:`missing`):p=!0);let h=r&&!!n&&(u?!!s:!0)&&!f&&!p,g=l({queryKey:[...Je,n,s,c,i.backend.id,i.orgId],queryFn:()=>qe.listOutputs(s,c,n),enabled:h,staleTime:60*1e3,gcTime:300*1e3,retry:!1}),_=u?Xe(g.error):null,v=f??_;return{data:g.data,error:_?null:g.error,isFetching:g.isFetching,isPending:g.isPending,isResolvingConversation:u&&a.isPending,conversationMissing:p,sandboxIssue:v}}var Qe=4e3;function $e(e,t){return e.length<=t?e:`…(truncated)…\n${e.slice(e.length-t)}`}function et({automationName:e,automationPrompt:t,errorDetail:n,stderr:r,runId:i}){let a=r?.trim()||n?.trim()||``,o=a?$e(a,Qe):`No error output was captured for this run.`,s=e?.trim(),c=[`${s?`The scheduled automation "${s}" failed during a run.`:`A scheduled automation failed during a run.`} Please investigate the error and fix the root cause.`],l=t?.trim();return l&&c.push(``,`What the automation was set up to do:`,l),c.push(``,`Error output from the failed run (run ${i}):`,o,``,`Please diagnose why it failed and propose or implement a fix.`),c.join(`
3
+ `)}function tt({run:e,automation:t,stderr:n}){let{t:r}=o(`openhands`),{navigate:i}=O(),a=ee();return(0,q.jsx)(D,{testId:`debug-automation-button`,type:`button`,variant:`primary`,onClick:()=>{if(a.isPending)return;let r=et({automationName:t?.name,automationPrompt:t?.prompt,errorDetail:e.error_detail,stderr:n,runId:e.id});a.mutate({query:r},{onSuccess:e=>{i(`/conversations/${e.conversation_id}`)}})},isDisabled:a.isPending,"aria-busy":a.isPending,children:r(y.AUTOMATIONS$DETAIL$DEBUG_WITH_OPENHANDS)})}var nt={missing:y.AUTOMATIONS$DETAIL$LOGS_SANDBOX_MISSING,paused:y.AUTOMATIONS$DETAIL$LOGS_SANDBOX_PAUSED,starting:y.AUTOMATIONS$DETAIL$LOGS_SANDBOX_STARTING,errored:y.AUTOMATIONS$DETAIL$LOGS_SANDBOX_ERROR,unreachable:y.AUTOMATIONS$DETAIL$LOGS_SANDBOX_UNREACHABLE};function rt(e,t){return[...e].sort((e,t)=>{let n=e.timestamp.localeCompare(t.timestamp);return n===0?(e.order??0)-(t.order??0):n}).map(e=>e[t]??``).join(``)}function it({conversationId:e,bashCommandId:t,isOpen:n,onClose:r,run:i,automation:a}){let{t:s}=o(`openhands`),[c,l]=(0,K.useState)(`stdout`),{data:u,isFetching:d,isResolvingConversation:f,sandboxIssue:p,conversationMissing:m,error:h}=Ze({conversationId:e,bashCommandId:t,enabled:n});(0,K.useEffect)(()=>{n&&l(`stdout`)},[n,t]),(0,K.useEffect)(()=>{if(!n)return;let e=e=>{e.key===`Escape`&&r()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n,r]);let{stdout:g,stderr:_}=(0,K.useMemo)(()=>u?{stdout:rt(u,`stdout`),stderr:rt(u,`stderr`)}:{stdout:``,stderr:``},[u]);if(!n)return null;let b=f||d&&!u,x=!t,S=c===`stdout`?g:_,C=`border-b-2 px-3 py-2 text-sm font-normal transition-colors focus:outline-none`,w=`border-[var(--oh-primary)] text-white`,T=`border-transparent text-muted hover:text-content`;return(0,q.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4`,role:`dialog`,"aria-modal":`true`,"aria-label":s(y.AUTOMATIONS$DETAIL$LOGS_TITLE),children:[(0,q.jsx)(`div`,{className:`absolute inset-0 bg-black/60`,onClick:r,onKeyDown:e=>{e.key===`Escape`&&r()},role:`presentation`}),(0,q.jsxs)(`div`,{className:`relative flex max-h-[80vh] w-full max-w-3xl flex-col rounded-xl border border-[var(--oh-border)] bg-[var(--oh-surface)] p-6`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:r,className:`absolute right-4 top-4 text-muted hover:text-foreground`,"aria-label":s(y.AUTOMATIONS$CANCEL),children:(0,q.jsx)(N,{className:`size-5`})}),(0,q.jsx)(`h2`,{className:v(`pr-8`,E),children:s(y.AUTOMATIONS$DETAIL$LOGS_TITLE)}),(0,q.jsxs)(`div`,{role:`tablist`,"aria-label":s(y.AUTOMATIONS$DETAIL$LOGS_TITLE),className:`mt-4 flex gap-1 border-b border-[var(--oh-border)]`,children:[(0,q.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":c===`stdout`,"aria-controls":`run-logs-panel-stdout`,id:`run-logs-tab-stdout`,tabIndex:c===`stdout`?0:-1,onClick:()=>l(`stdout`),className:`${C} ${c===`stdout`?w:T}`,children:s(y.AUTOMATIONS$DETAIL$LOGS_TAB_OUTPUT)}),(0,q.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":c===`stderr`,"aria-controls":`run-logs-panel-stderr`,id:`run-logs-tab-stderr`,tabIndex:c===`stderr`?0:-1,onClick:()=>l(`stderr`),className:`${C} ${c===`stderr`?w:T}`,children:s(y.AUTOMATIONS$DETAIL$LOGS_TAB_ERROR)})]}),(0,q.jsxs)(`div`,{role:`tabpanel`,id:`run-logs-panel-${c}`,"aria-labelledby":`run-logs-tab-${c}`,className:`mt-3 min-h-[12rem] flex-1 overflow-auto rounded-lg border border-[var(--oh-border)] bg-black/40 p-4 font-mono text-xs`,children:[x&&(0,q.jsx)(`p`,{className:`text-muted italic`,children:s(y.AUTOMATIONS$DETAIL$LOGS_NO_COMMAND)}),!x&&m&&(0,q.jsx)(`p`,{className:`text-muted italic`,children:s(y.AUTOMATIONS$DETAIL$LOGS_CONVERSATION_MISSING)}),!x&&!m&&p&&(0,q.jsx)(`p`,{"data-testid":`run-logs-sandbox-issue-${p}`,className:`text-muted italic`,children:s(nt[p])}),!x&&!m&&!p&&b&&(0,q.jsx)(`p`,{className:`text-muted italic`,children:s(y.AUTOMATIONS$DETAIL$LOGS_LOADING)}),!x&&!m&&!p&&!b&&h&&!u&&(0,q.jsxs)(`p`,{className:`text-danger`,children:[s(y.AUTOMATIONS$DETAIL$LOGS_ERROR),`: `,String(h)]}),!b&&!p&&u&&(0,q.jsx)(`pre`,{"data-testid":`run-logs-output-${c}`,className:`whitespace-pre-wrap break-words ${c===`stderr`?`text-danger`:`text-content`}`,children:S.length>0?S:(0,q.jsx)(`span`,{className:`text-muted italic`,children:s(y.AUTOMATIONS$DETAIL$LOGS_EMPTY)})})]}),i?.status===L.FAILED&&(0,q.jsx)(`div`,{className:`mt-4 flex justify-end`,children:(0,q.jsx)(tt,{run:i,automation:a,stderr:_})})]})]})}function at(e,t){return new Date(e).toLocaleDateString(t,{weekday:`long`,year:`numeric`,month:`long`,day:`numeric`,hour:`numeric`,minute:`2-digit`})}function ot(e){if(!e)return!0;let t=new Date(e).getTime();return Number.isNaN(t)||t===0}function st(e){return`/conversations/${e}`}function ct(e){return typeof e!=`number`||!Number.isFinite(e)?null:`$${e.toFixed(4)}`}function lt({run:e,automation:t}){let{t:n,i18n:r}=o(`openhands`),i=!!e.conversation_id,a=!!e.bash_command_id,s=e.status===L.COMPLETED||e.status===L.FAILED,c=!i&&s,[l,u]=(0,K.useState)(!1),[d]=(0,K.useState)(()=>new Date().toISOString()),f=at(ot(e.started_at)?d:e.started_at,r.language),p=ct(e.cost),m=a?(0,q.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),e.preventDefault(),u(!0)},className:`rounded-md p-1 text-muted hover:bg-surface-raised hover:text-foreground focus:bg-surface-raised focus:outline-none`,"aria-label":n(y.AUTOMATIONS$DETAIL$LOGS_VIEW,{timestamp:f}),title:n(y.AUTOMATIONS$DETAIL$LOGS_VIEW_SHORT),children:(0,q.jsx)(A,{className:`size-4`})}):null,h=(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(`span`,{className:`text-sm text-content`,children:f}),c&&(0,q.jsx)(`span`,{className:`text-xs text-muted`,children:n(y.AUTOMATIONS$DETAIL$NO_CONVERSATION)})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[p&&(0,q.jsx)(`span`,{"data-testid":`run-cost`,title:n(y.AUTOMATIONS$DETAIL$RUN_COST),className:`text-xs tabular-nums text-muted`,children:p}),m,(0,q.jsx)(ue,{status:e.status})]})]});return(0,q.jsxs)(q.Fragment,{children:[i&&e.conversation_id?(0,q.jsx)(`a`,{href:st(e.conversation_id),className:`flex items-center justify-between px-5 py-3 transition-colors cursor-pointer hover:bg-surface-raised focus:bg-surface-raised focus:outline-none`,"aria-label":`View conversation for run at ${f}`,children:h}):(0,q.jsx)(`div`,{className:`flex items-center justify-between px-5 py-3 cursor-default`,children:h}),a&&(0,q.jsx)(it,{conversationId:e.conversation_id,bashCommandId:e.bash_command_id,isOpen:l,onClose:()=>u(!1),run:e,automation:t})]})}var Q=20,ut=100;function dt({automation:e,highlightedRunId:t=null}){let{t:n}=o(`openhands`),r=m(),{trackAutomationActivityLogExported:i}=w(),[a,s]=(0,K.useState)(Q),c=(0,K.useRef)(null),[l,u]=(0,K.useState)(!1),{data:d,isLoading:f}=z({id:e.id,limit:a,offset:0}),h=d?d.total>d.runs.length:!1,g=!f&&(d?.total??0)>0&&!l,_=async t=>{if(g){u(!0);try{await We({automation:e,format:t,conversationBaseUrl:window.location.origin}),i({backendKind:r.backend.kind,format:t})}catch(e){p(H(e,n(y.AUTOMATIONS$DETAIL$EXPORT_ACTIVITY_LOG_ERROR)))}finally{u(!1)}}};return(0,K.useEffect)(()=>{if(!(!t||!d?.runs.length)){if(d.runs.findIndex(e=>e.id===t)<0){h&&a<ut&&s(e=>e+Q);return}c.current?.scrollIntoView({behavior:`smooth`,block:`center`})}},[d?.runs,h,t,a]),(0,q.jsxs)(`div`,{"data-testid":`automation-activity-log`,className:`rounded-2xl border border-[var(--oh-border)] bg-[var(--oh-surface)]`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-[var(--oh-border)] px-5 py-3`,children:[(0,q.jsx)(`span`,{className:`size-4 text-muted`,children:(0,q.jsx)(Z,{className:`size-4`})}),(0,q.jsx)(`h3`,{className:`text-sm font-medium text-content`,children:n(y.AUTOMATIONS$DETAIL$ACTIVITY_LOG)}),(0,q.jsxs)(`div`,{className:`ml-auto flex items-center gap-3`,children:[(0,q.jsx)(`button`,{type:`button`,"data-testid":`activity-log-export-json`,disabled:!g,onClick:()=>void _(`json`),className:`text-sm text-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50`,children:n(y.AUTOMATIONS$DETAIL$EXPORT_JSON)}),(0,q.jsx)(`button`,{type:`button`,"data-testid":`activity-log-export-csv`,disabled:!g,onClick:()=>void _(`csv`),className:`text-sm text-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50`,children:n(y.AUTOMATIONS$DETAIL$EXPORT_CSV)})]})]}),f&&(0,q.jsx)(`div`,{className:`space-y-1 p-5`,children:Array.from({length:3}).map((e,t)=>(0,q.jsxs)(`div`,{className:`flex items-center justify-between py-3`,children:[(0,q.jsx)(`div`,{className:`h-5 w-64 animate-pulse rounded bg-surface-raised`}),(0,q.jsx)(`div`,{className:`h-6 w-24 animate-pulse rounded-full bg-surface-raised`})]},`skeleton-${t}`))}),!f&&d?.runs.length===0&&(0,q.jsx)(`p`,{className:`px-5 py-8 text-center text-sm text-muted`,children:n(y.AUTOMATIONS$DETAIL$NO_RUNS)}),!f&&d&&d.runs.length>0&&(0,q.jsxs)(`div`,{children:[d.runs.map((n,r)=>{let i=n.id===t;return(0,q.jsx)(`div`,{ref:i?c:void 0,"data-testid":i?`automation-run-highlight-${n.id}`:void 0,className:v(r>0?`border-t border-[var(--oh-border)]`:``,i&&`bg-[var(--oh-focus)]/10`),children:(0,q.jsx)(lt,{run:n,automation:e})},n.id)}),h&&(0,q.jsx)(`div`,{className:`border-t border-[var(--oh-border)] px-5 py-3`,children:(0,q.jsx)(`button`,{type:`button`,onClick:()=>s(e=>e+Q),className:`text-sm text-muted hover:text-foreground`,children:n(y.AUTOMATIONS$DETAIL$LOAD_MORE_RUNS)})})]})]})}function $({className:e}){return(0,q.jsx)(`div`,{className:v(`animate-pulse rounded bg-surface-raised`,e)})}function ft(){return(0,q.jsxs)(`div`,{className:`flex flex-col gap-4`,"data-testid":`detail-skeleton`,children:[(0,q.jsx)($,{className:`h-5 w-40`}),(0,q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)($,{className:`h-6 w-48`}),(0,q.jsx)($,{className:`h-6 w-16 rounded-full`})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)($,{className:`h-6 w-11 rounded-full`}),(0,q.jsx)($,{className:`h-8 w-8`})]})]}),(0,q.jsx)($,{className:`h-5 w-96`}),(0,q.jsx)($,{className:`h-36 w-full rounded-2xl`}),(0,q.jsx)($,{className:`h-72 w-full rounded-2xl`}),(0,q.jsx)($,{className:`h-32 w-full rounded-2xl`}),(0,q.jsx)($,{className:`h-40 w-full rounded-2xl`})]})}function pt(){let{t:e}=o(`openhands`);return(0,q.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-20`,children:[(0,q.jsx)(ye,{className:`size-12 text-muted`}),(0,q.jsx)(`p`,{className:`mt-4 text-sm font-medium text-content`,children:e(y.AUTOMATIONS$DETAIL$NOT_FOUND_TITLE)}),(0,q.jsx)(`p`,{className:`mt-2 text-sm text-muted`,children:e(y.AUTOMATIONS$DETAIL$NOT_FOUND_MESSAGE)}),(0,q.jsx)(`div`,{className:`mt-6`,children:(0,q.jsx)(U,{})})]})}var mt=a(function(){let{t:e}=o(`openhands`),{automationId:t}=r(),[n]=i(),a=n.get(`run`),{navigate:s}=O(),[c,l]=(0,K.useState)(!1),[u,f]=(0,K.useState)(!1),{data:h,isLoading:g,refetch:v}=te(),b=h?.status===`ok`,x=m(),E=(0,K.useRef)(x.backend.id).current!==x.backend.id,{data:D,isLoading:ee,isError:k,error:A,refetch:j}=se({id:t??``,enabled:b&&!E}),{trackPrebuiltAutomationEnabled:M,trackAutomationExported:N}=w(),P=ie(),F=re(),I=oe(),ne=k&&T(A)===404;if(g)return(0,q.jsx)(`div`,{className:`min-h-full`,children:(0,q.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,q.jsx)(ft,{})})});if(!b)return(0,q.jsx)(`div`,{className:`min-h-full`,children:(0,q.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,q.jsx)(be,{onRetry:v})})});if(ee)return(0,q.jsx)(`div`,{className:`min-h-full`,children:(0,q.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,q.jsx)(ft,{})})});if(ne)return(0,q.jsx)(`div`,{className:`min-h-full`,children:(0,q.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,q.jsx)(pt,{})})});if(k||!D)return(0,q.jsx)(`div`,{className:`min-h-full`,children:(0,q.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,q.jsx)(ve,{onRetry:()=>j()})})});let L=()=>{let e=!D.enabled;P.mutate({id:D.id,enabled:e}),e&&M({automationId:D.id,automationName:D.name})},R=()=>{F.mutate(D.id,{onSuccess:()=>{s?.(S())}})},z=()=>{I.mutate(D.id,{onSuccess:()=>{d(e(y.AUTOMATIONS$RUN_NOW_SUCCESS))},onError:t=>{p(H(t,e(y.AUTOMATIONS$RUN_NOW_ERROR)))}})},B=()=>{let e=`${JSON.stringify(he(D),null,2)}\n`;_(new Blob([e],{type:`application/json`}),_e(D)),N({backendKind:x.backend.kind})},V=x.backend.kind===`local`;return(0,q.jsx)(`div`,{className:`min-h-full`,children:(0,q.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,q.jsx)(U,{}),(0,q.jsx)(we,{automation:D,onToggle:L,onEdit:V?()=>f(!0):void 0,onDelete:()=>l(!0),onExport:B,onDownloadTarball:()=>C.downloadTarball(D.id,D.name),onRunNow:z,isRunningNow:I.isPending}),D.prompt&&(0,q.jsx)(De,{prompt:D.prompt}),(0,q.jsx)(je,{automation:D}),D.plugins&&D.plugins.length>0&&(0,q.jsx)(Pe,{plugins:D.plugins}),(0,q.jsx)(Fe,{createdAt:D.created_at,lastRunAt:D.last_triggered_at}),(0,q.jsx)(dt,{automation:D,highlightedRunId:a}),(0,q.jsx)(pe,{automationName:D.name,isOpen:c,onConfirm:R,onCancel:()=>l(!1)}),V&&(0,q.jsx)(ae,{automation:D,isOpen:u,onClose:()=>f(!1)})]})})})});export{mt as default};
@@ -0,0 +1,2 @@
1
+ import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,bt as n,yt as r}from"./vendor-styling-Ck5D_A2Q.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,z as o}from"./utils-DUD5ScdA.js";import{b as s}from"./use-tracking-Bhu7gk2y.js";import{r as c}from"./modal-classes-D5_b5vMi.js";import{r as l}from"./dropdown-classes-tLhpwtxS.js";import{n as u,t as d}from"./context-menu-list-item-CdcamfM1.js";import{t as f}from"./x-mark-BopmFoBq.js";import{t as p}from"./kebab-menu-item-content-DERMdnDv.js";var m=e(n(),1),h=e(t()),g=r(),_=e=>(0,g.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`currentColor`,viewBox:`0 0 20 20`,...e,children:(0,g.jsx)(`path`,{d:`M10 6a2 2 0 110-4 2 2 0 010 4zm0 6a2 2 0 110-4 2 2 0 010 4zm0 6a2 2 0 110-4 2 2 0 010 4z`})}),v=a(`inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md border-0 bg-transparent text-muted hover:bg-interactive-hover hover:text-white focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent disabled:hover:text-muted`,l),y=a(`inline-flex h-8 shrink-0 cursor-pointer items-center gap-1.5 rounded-md border-0 bg-transparent px-2 text-xs text-muted hover:bg-interactive-hover hover:text-white focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent disabled:hover:text-muted`,l);function b({items:e}){let{t}=i(`openhands`),[n,r]=(0,h.useState)(!1),[a,s]=(0,h.useState)(),c=(0,h.useRef)(null),l=(0,h.useRef)(null);(0,h.useLayoutEffect)(()=>{if(!n||!c.current)return;let e=()=>{let e=c.current?.getBoundingClientRect();e&&s({position:`fixed`,zIndex:9999,top:e.bottom+4,right:window.innerWidth-e.right})};return e(),window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[n]),(0,h.useEffect)(()=>{if(!n)return;let e=e=>{let t=e.target;c.current?.contains(t)||l.current?.contains(t)||r(!1)},t=e=>{e.key===`Escape`&&r(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[n]);let f=n&&a?(0,g.jsx)(u,{ref:l,theme:`popover`,className:`min-w-[10rem]`,children:e.map(e=>(0,g.jsx)(`li`,{children:(0,g.jsx)(d,{onClick:t=>{t.stopPropagation(),e.onClick(),r(!1)},isDisabled:e.disabled,className:`group`,children:(0,g.jsx)(p,{icon:e.icon,label:e.label})})},e.label))}):null;return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`button`,{ref:c,type:`button`,onClick:e=>{e.stopPropagation(),r(e=>!e)},className:v,"aria-label":t(o.AUTOMATIONS$ACTIONS_MENU),"aria-expanded":n,"aria-haspopup":`menu`,children:(0,g.jsx)(_,{className:`size-4`})}),n&&a&&typeof document<`u`?m.createPortal((0,g.jsx)(`div`,{style:a,children:f}),document.body):null]})}var x=e=>(0,g.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,...e,children:(0,g.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09zM18.259 8.715L18 9.75l-.259-1.035a3.375 3.375 0 00-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 002.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 002.455 2.456L21.75 6l-1.036.259a3.375 3.375 0 00-2.455 2.456z`})}),S=e=>(0,g.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,...e,children:(0,g.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16`})});function C({automationName:e,isOpen:t,onConfirm:n,onCancel:r}){let{t:a}=i(`openhands`);return t?(0,g.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center`,children:[(0,g.jsx)(`div`,{className:`absolute inset-0 bg-black/60`,onClick:r,onKeyDown:e=>{e.key===`Escape`&&r()},role:`presentation`}),(0,g.jsxs)(`div`,{className:`relative w-full max-w-sm rounded-xl border border-[var(--oh-border)] bg-[var(--oh-surface)] p-6`,children:[(0,g.jsx)(`button`,{type:`button`,onClick:r,className:`absolute right-4 top-4 text-muted hover:text-foreground`,"aria-label":a(o.BUTTON$CLOSE),children:(0,g.jsx)(f,{className:`size-5`})}),(0,g.jsx)(`h2`,{className:c,children:a(o.AUTOMATIONS$DELETE_CONFIRM_TITLE)}),(0,g.jsx)(`p`,{className:`mt-2 text-sm text-muted`,children:a(o.AUTOMATIONS$DELETE_CONFIRM_MESSAGE,{name:e})}),(0,g.jsxs)(`div`,{className:`mt-6 flex justify-end gap-3`,children:[(0,g.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:a(o.AUTOMATIONS$CANCEL)}),(0,g.jsx)(`button`,{type:`button`,onClick:n,className:`rounded-lg bg-danger px-4 py-2 text-sm text-white hover:bg-danger/80`,children:a(o.AUTOMATIONS$DELETE)})]})]})]}):null}var w=new Set([`cron`,`schedule`,`event`]),T=class extends Error{issues;constructor(e){super(e.join(`
2
+ `)),this.name=`AutomationFileValidationError`,this.issues=e}};function E(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function D(e,t,n,r){let i=e[t];if(typeof i!=`string`||i.trim().length===0){r.push(`${n}: expected a non-empty string`);return}return i}function O(e,t,n,r){let i=e[t];if(i!==void 0){if(typeof i!=`string`){r.push(`${n}: expected a string`);return}return i}}function k(e,t){if(!E(e)){t.push(`spec.trigger: expected an object`);return}let n=D(e,`type`,`spec.trigger.type`,t);n&&!w.has(n)&&t.push(`spec.trigger.type: expected one of "cron", "schedule", or "event"`);let r=O(e,`schedule`,`spec.trigger.schedule`,t),i=O(e,`schedule_human`,`spec.trigger.schedule_human`,t),a=O(e,`timezone`,`spec.trigger.timezone`,t),o=O(e,`source`,`spec.trigger.source`,t),s=O(e,`filter`,`spec.trigger.filter`,t),c;if(e.on!==void 0&&(typeof e.on==`string`||Array.isArray(e.on)&&e.on.length>0&&e.on.every(e=>typeof e==`string`&&e.trim().length>0)?c=e.on:t.push(`spec.trigger.on: expected a string or a non-empty array of strings`)),(n===`cron`||n===`schedule`)&&!r?.trim()&&t.push(`spec.trigger.schedule: required for a scheduled trigger`),n===`event`&&(o?.trim()||t.push(`spec.trigger.source: required for an event trigger`),(c===void 0||typeof c==`string`&&c.trim().length===0)&&t.push(`spec.trigger.on: required for an event trigger`)),!(!n||!w.has(n)))return{type:n,...r!==void 0&&{schedule:r},...i!==void 0&&{schedule_human:i},...a!==void 0&&{timezone:a},...o!==void 0&&{source:o},...c!==void 0&&{on:c},...s!==void 0&&{filter:s}}}function A(e){let t=e.timezone??e.trigger.timezone,n={name:e.name,trigger:{...e.trigger},enabled:e.enabled,prompt:e.prompt,...e.repository!==void 0&&{repository:e.repository},...e.model!==void 0&&{model:e.model},...e.timeout!=null&&{timeout:e.timeout},...e.branch!==void 0&&{branch:e.branch},...e.plugins!==void 0&&{plugins:[...e.plugins]},...e.notification!==void 0&&{notification:e.notification},...t!==void 0&&{timezone:t}},r=s();return{version:r.fileVersion,kind:r.fileKind,spec:n}}function j(e){return`${e.name.trim().toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)||e.id}${s().filenameSuffix}`}function M(e){let t=[];if(!E(e))throw new T([`file: expected a JSON object`]);let n=s();if(e.version!==n.fileVersion&&t.push(`version: expected ${n.fileVersion}`),e.kind!==n.fileKind&&t.push(`kind: expected "${n.fileKind}"`),!E(e.spec))throw t.push(`spec: expected an object`),new T(t);let r=D(e.spec,`name`,`spec.name`,t),i=D(e.spec,`prompt`,`spec.prompt`,t),a=k(e.spec.trigger,t),o=e.spec.enabled;typeof o!=`boolean`&&t.push(`spec.enabled: expected a boolean`);let c=O(e.spec,`repository`,`spec.repository`,t),l=O(e.spec,`branch`,`spec.branch`,t),u=O(e.spec,`notification`,`spec.notification`,t),d=O(e.spec,`timezone`,`spec.timezone`,t),f;e.spec.model===null||e.spec.model===void 0||typeof e.spec.model==`string`&&e.spec.model.trim().length>0?f=e.spec.model:t.push(`spec.model: expected a non-empty string or null`);let p;e.spec.timeout===null||e.spec.timeout===void 0||typeof e.spec.timeout==`number`&&Number.isInteger(e.spec.timeout)&&e.spec.timeout>0?p=e.spec.timeout:t.push(`spec.timeout: expected a positive integer`);let m;if(e.spec.plugins!==void 0&&(Array.isArray(e.spec.plugins)&&e.spec.plugins.every(e=>typeof e==`string`&&e.trim().length>0)?m=[...e.spec.plugins]:t.push(`spec.plugins: expected an array of non-empty strings`)),t.length>0||!r||!i||!a)throw new T(t);return{name:r,prompt:i,trigger:a,enabled:o,...c!==void 0&&{repository:c},...f!==void 0&&{model:f},...p!==void 0&&{timeout:p},...l!==void 0&&{branch:l},...m!==void 0&&{plugins:m},...u!==void 0&&{notification:u},...d!==void 0&&{timezone:d}}}export{S as a,v as c,C as i,y as l,M as n,x as o,A as r,b as s,j as t};
@@ -0,0 +1 @@
1
+ import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{U as r}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js";import{n as i}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dcc51rps-rfV8mQ9m.js";import{t as a}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js";import{D 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{t as c}from"./useQuery-Bs5NFz2s.js";import{Mt as l,jt as u,n as d}from"./active-backend-context-BZDG15C0.js";import{t as f,z as p}from"./utils-DUD5ScdA.js";import{t as m}from"./check-DSuS-lyr.js";import{t as h}from"./refresh-cw-nmcesifB.js";import{n as g,t as _}from"./use-tracking-Bhu7gk2y.js";import{t as v}from"./use-settings-C6ZxpBDX.js";import{t as y}from"./brand-button-Blxv5nww.js";import{t as b}from"./settings-input-CWUEHHvS.js";import{t as x}from"./format-time-delta-BIR5Os7T.js";import{t as S}from"./folder-C1ou4_DT.js";import{t as C}from"./settings-switch-Dk9hChx1.js";import{n as w,r as T,t as E}from"./use-has-permission-CQ31Cl8j.js";import{n as D}from"./api-error-message-BEIE_yD1.js";import{t as O}from"./parse-git-remote-url-BkXN9jzl.js";import{n as k,r as A,t as j}from"./backend-not-configured-DP8KLNq_.js";import{a as M,i as N,n as P,r as F,t as ee}from"./cog-CZiR80uT.js";var I=o(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),L=e(t()),R=[`git-sync-status`];function z(e={}){let{enabled:t=!0,refetchInterval:n=!1}=e,r=d();return c({queryKey:[...R,r.backend.id,r.orgId],queryFn:()=>g.getGitSyncStatus(),staleTime:10*1e3,enabled:t,refetchInterval:n,retry:(e,t)=>v(t)===void 0&&e<2,meta:{disableToast:!0}})}function te(){let e=i(),t=d(),{trackGitSyncConfigUpdated:n}=_();return s({mutationFn:e=>g.updateGitSyncConfig(e),onSuccess:async r=>{let i=[...R,t.backend.id,t.orgId];await e.cancelQueries({queryKey:i}),e.setQueryData(i,r),n({backendKind:t.backend.kind})},meta:{disableToast:!0}})}function ne(){return s({mutationFn:e=>g.checkGitSyncConfig(e),retry:!1,meta:{disableToast:!0}})}function B(){let e=i(),t=d(),{trackGitSyncTriggered:n}=_();return s({mutationFn:()=>g.triggerGitSync(),onSuccess:()=>{e.invalidateQueries({queryKey:R}),n({backendKind:t.backend.kind})},meta:{disableToast:!0}})}var V=n();function H({className:e}){return(0,V.jsx)(`div`,{className:f(`animate-pulse rounded bg-surface-raised`,e)})}function U(){return(0,V.jsxs)(`div`,{className:`flex flex-col gap-4`,"data-testid":`git-sync-skeleton`,children:[(0,V.jsx)(H,{className:`h-5 w-40`}),(0,V.jsx)(H,{className:`h-6 w-48`}),(0,V.jsx)(H,{className:`h-5 w-96`}),(0,V.jsx)(H,{className:`h-48 w-full rounded-2xl`}),(0,V.jsx)(H,{className:`h-96 w-full rounded-2xl`})]})}function W(){let{t:e}=a(`openhands`);return(0,V.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-20`,children:[(0,V.jsx)(A,{className:`size-12 text-muted`}),(0,V.jsx)(`p`,{className:`mt-4 text-sm font-medium text-content`,children:e(p.AUTOMATIONS$GIT_SYNC$NOT_LOCAL_TITLE)}),(0,V.jsx)(`p`,{className:`mt-2 text-sm text-muted`,children:e(p.AUTOMATIONS$GIT_SYNC$NOT_LOCAL_MESSAGE)}),(0,V.jsx)(`div`,{className:`mt-6`,children:(0,V.jsx)(M,{})})]})}function G(){let{t:e}=a(`openhands`);return(0,V.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-20`,children:[(0,V.jsx)(A,{className:`size-12 text-muted`}),(0,V.jsx)(`p`,{className:`mt-4 text-sm font-medium text-content`,children:e(p.AUTOMATIONS$GIT_SYNC$UNSUPPORTED_TITLE)}),(0,V.jsx)(`p`,{className:`mt-2 text-sm text-muted`,children:e(p.AUTOMATIONS$GIT_SYNC$UNSUPPORTED_MESSAGE)}),(0,V.jsx)(`div`,{className:`mt-6`,children:(0,V.jsx)(M,{})})]})}function K({error:e,errorAt:t}){let{t:n}=a(`openhands`);return(0,V.jsxs)(`div`,{role:`alert`,"data-testid":`git-sync-error-banner`,className:`rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm text-red-300 whitespace-pre-wrap break-words`,children:[(0,V.jsx)(`p`,{className:`font-medium`,children:n(p.AUTOMATIONS$GIT_SYNC$LAST_ERROR_TITLE)}),(0,V.jsx)(`p`,{className:`mt-1`,children:e}),t&&(0,V.jsx)(`p`,{className:`mt-1 text-xs text-red-300/70`,children:`${x(t)} ${n(p.CONVERSATION$AGO)}`})]})}var q=e=>(0,V.jsx)(`svg`,{viewBox:`0 0 18 18`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,V.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M2.4375 9C2.4375 5.37563 5.37563 2.4375 9 2.4375C12.6244 2.4375 15.5625 5.37563 15.5625 9C15.5625 12.6244 12.6244 15.5625 9 15.5625C5.37563 15.5625 2.4375 12.6244 2.4375 9ZM4.13812 6.5625C4.81317 5.21867 6.02897 4.19333 7.49996 3.77204C7.15155 4.17641 6.85182 4.65395 6.60713 5.17892C6.40828 5.60556 6.24263 6.06975 6.11494 6.5625H4.13812ZM3.72196 7.6875C3.61778 8.10783 3.5625 8.54746 3.5625 9C3.5625 9.45254 3.61778 9.89217 3.72196 10.3125H5.89738C5.84161 9.88758 5.8125 9.44852 5.8125 8.99998C5.8125 8.55142 5.84161 8.11239 5.89737 7.6875H3.72196ZM7.0333 7.6875C6.97087 8.10689 6.9375 8.54634 6.9375 8.99998C6.9375 9.45367 6.97087 9.89313 7.0333 10.3125H10.9667C11.0291 9.89311 11.0625 9.45367 11.0625 9.00002C11.0625 8.54637 11.0291 8.1069 10.9667 7.6875H7.0333ZM12.1026 7.6875C12.1584 8.1124 12.1875 8.55145 12.1875 9.00002C12.1875 9.44858 12.1584 9.88762 12.1026 10.3125H14.278C14.3822 9.89217 14.4375 9.45254 14.4375 9C14.4375 8.54746 14.3822 8.10783 14.278 7.6875H12.1026ZM13.8619 6.5625H11.885C11.7574 6.06976 11.5917 5.6056 11.3929 5.17897C11.1482 4.65397 10.8484 4.1764 10.5 3.77203C11.971 4.19331 13.1868 5.21866 13.8619 6.5625ZM10.7171 6.5625H7.28293C7.38007 6.23971 7.49559 5.93571 7.62681 5.65419C7.99835 4.85708 8.48101 4.26914 8.99997 3.92442C9.51895 4.26913 10.0016 4.8571 10.3732 5.65424C10.5044 5.93575 10.6199 6.23973 10.7171 6.5625ZM4.13812 11.4375H6.11496C6.24963 11.9572 6.42655 12.4452 6.64015 12.8909C6.87835 13.3879 7.16685 13.8413 7.50006 14.228C6.02902 13.8067 4.81318 12.7814 4.13812 11.4375ZM10.7171 11.4375H7.28295C7.3869 11.7829 7.51191 12.1068 7.65465 12.4047C8.02305 13.1733 8.49456 13.7398 9.00007 14.0756C9.51902 13.7308 10.0017 13.1429 10.3732 12.3458C10.5044 12.0643 10.6199 11.7603 10.7171 11.4375ZM11.3929 12.8211C11.5917 12.3944 11.7574 11.9303 11.8851 11.4375H13.8619C13.1868 12.7813 11.971 13.8067 10.5 14.228C10.8485 13.8236 11.1482 13.346 11.3929 12.8211Z`,fill:`currentColor`})});function J({tone:e,label:t,testId:n}){return(0,V.jsx)(`span`,{"data-testid":n,className:f(`inline-flex items-center rounded-full px-3 py-1 text-xs font-medium`,e===`success`&&`bg-[var(--oh-success)]/15 text-[var(--oh-success)]`,e===`warning`&&`bg-[var(--oh-warning)]/15 text-[var(--oh-warning)]`,e===`neutral`&&`bg-surface-raised text-muted`),children:t})}function Y(e){let[,t]=(0,L.useState)(0);(0,L.useEffect)(()=>{if(!e)return;let n=setInterval(()=>t(e=>e+1),1e3);return()=>clearInterval(n)},[e])}function X({state:e,startedAt:t,pendingCount:n}){let{t:r}=a(`openhands`),i=e===`running`;if(Y(i&&t!==null),e===`idle`)return null;let o=e===`failed`;return(0,V.jsxs)(`div`,{"data-testid":`git-sync-activity-row`,"data-state":e,className:f(`mt-4 flex flex-wrap items-center gap-x-2 gap-y-1 rounded-md px-3 py-2 text-sm`,i&&`bg-tertiary text-content`,e===`succeeded`&&`bg-green-500/10 text-green-300`,o&&`bg-red-500/10 text-red-300`),children:[i&&(0,V.jsx)(h,{className:`size-4 animate-spin`,"aria-hidden":!0}),e===`succeeded`&&(0,V.jsx)(m,{className:`size-4`,"aria-hidden":!0}),o&&(0,V.jsx)(I,{className:`size-4`,"aria-hidden":!0}),(0,V.jsxs)(`span`,{className:`font-medium`,children:[i&&r(p.AUTOMATIONS$GIT_SYNC$SYNCING),e===`succeeded`&&r(p.AUTOMATIONS$GIT_SYNC$SYNC_COMPLETED),o&&r(p.AUTOMATIONS$GIT_SYNC$SYNC_FAILED)]}),i&&t&&(0,V.jsx)(`span`,{className:`text-xs text-muted`,children:r(p.AUTOMATIONS$GIT_SYNC$SYNC_STARTED_AGO,{time:x(t)})}),i&&n>0&&(0,V.jsx)(`span`,{className:`text-xs text-muted`,children:r(p.AUTOMATIONS$GIT_SYNC$SYNC_PENDING_COUNT,{count:n})})]})}function Z(e){let t=O(e);if(!t?.host||!t.repository)return null;if(/^https?:\/\//i.test(t.url)){let e=new URL(t.url);return e.username=``,e.password=``,e.pathname=e.pathname.replace(/\.git$/,``),e.toString()}return`https://${t.host}/${t.repository}`}function Q({status:e,onSyncNow:t,isSyncing:n,syncActivity:r,syncStartedAt:i,canManage:o}){let{t:s}=a(`openhands`),c=Z(e.repo_url);return(0,V.jsxs)(F,{icon:(0,V.jsx)(N,{className:`size-4`}),title:s(p.AUTOMATIONS$GIT_SYNC$STATUS_TITLE),children:[(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(J,{testId:`git-sync-enabled-pill`,tone:e.enabled?`success`:`neutral`,label:s(e.enabled?p.AUTOMATIONS$GIT_SYNC$ENABLED:p.AUTOMATIONS$GIT_SYNC$DISABLED)}),(0,V.jsx)(J,{testId:`git-sync-encryption-pill`,tone:e.encryption_enabled?`success`:`neutral`,label:s(e.encryption_enabled?p.AUTOMATIONS$GIT_SYNC$ENCRYPTED:p.AUTOMATIONS$GIT_SYNC$NOT_ENCRYPTED)})]}),(0,V.jsx)(y,{testId:`git-sync-now-button`,type:`button`,variant:`secondary`,isDisabled:!o||!e.enabled||n,onClick:t,startContent:(0,V.jsx)(h,{className:f(`size-4`,n&&`animate-spin`),"aria-hidden":!0}),children:s(n?p.AUTOMATIONS$GIT_SYNC$SYNCING:p.AUTOMATIONS$GIT_SYNC$SYNC_NOW)})]}),(0,V.jsx)(X,{state:r,startedAt:i,pendingCount:e.dirty_count}),(0,V.jsxs)(`div`,{className:`mt-5 grid grid-cols-2 gap-x-4 gap-y-5`,children:[(0,V.jsx)(P,{icon:(0,V.jsx)(q,{className:`size-3.5`}),label:s(p.AUTOMATIONS$GIT_SYNC$REPOSITORY),children:c?(0,V.jsx)(`a`,{"data-testid":`git-sync-repo-link`,href:c,target:`_blank`,rel:`noopener noreferrer`,className:`break-all underline transition-colors hover:text-foreground`,children:e.repo_url}):(0,V.jsx)(`span`,{className:`break-all`,children:e.repo_url||s(p.AUTOMATIONS$GIT_SYNC$NOT_CONFIGURED)})}),(0,V.jsx)(P,{icon:(0,V.jsx)(N,{className:`size-3.5`}),label:s(p.AUTOMATIONS$GIT_SYNC$FIELD_BRANCH),children:e.branch}),(0,V.jsx)(P,{icon:(0,V.jsx)(S,{className:`size-3.5`}),label:s(p.AUTOMATIONS$GIT_SYNC$FIELD_PATH),children:e.path}),(0,V.jsx)(P,{icon:(0,V.jsx)(N,{className:`size-3.5`}),label:s(p.AUTOMATIONS$GIT_SYNC$LAST_SYNCED_COMMIT),children:e.last_synced_commit?(0,V.jsx)(`span`,{className:`font-mono`,children:e.last_synced_commit.slice(0,7)}):s(p.AUTOMATIONS$GIT_SYNC$NEVER_SYNCED)}),(0,V.jsx)(P,{icon:(0,V.jsx)(w,{className:`size-3.5`}),label:s(p.AUTOMATIONS$GIT_SYNC$LAST_SYNCED_AT),children:e.last_synced_at?`${x(e.last_synced_at)} ${s(p.CONVERSATION$AGO)}`:s(p.AUTOMATIONS$GIT_SYNC$NEVER_SYNCED)}),(0,V.jsx)(P,{icon:(0,V.jsx)(w,{className:`size-3.5`}),label:s(p.AUTOMATIONS$GIT_SYNC$FIELD_INTERVAL),children:e.interval_seconds>0?s(p.AUTOMATIONS$GIT_SYNC$EVERY_N_SECONDS,{count:e.interval_seconds}):s(p.AUTOMATIONS$GIT_SYNC$MANUAL_ONLY)}),(0,V.jsx)(P,{icon:(0,V.jsx)(w,{className:`size-3.5`}),label:s(p.AUTOMATIONS$GIT_SYNC$PENDING_CHANGES),children:(0,V.jsx)(`span`,{className:f(e.dirty_count>0&&`text-[var(--oh-warning)]`),children:e.dirty_count})})]})]})}var $=`git-sync-save-and-sync`;function re({status:e,canManage:t,onSyncNow:n}){let{t:r}=a(`openhands`),{mutate:i,isPending:o}=te(),{mutateAsync:s,isPending:c}=ne(),[d,f]=(0,L.useState)(null),[m,h]=(0,L.useState)(!1),[g,_]=(0,L.useState)(!1),[x,S]=(0,L.useState)(!1),[w,T]=(0,L.useState)(!1),[E,O]=(0,L.useState)(!1),[k,A]=(0,L.useState)(!1),[j,M]=(0,L.useState)(null),N=j??e.enabled,P=j!==null&&N!==e.enabled,[I,R]=(0,L.useState)(``),[z,B]=(0,L.useState)(!1),[H,U]=(0,L.useState)(``),[W,G]=(0,L.useState)(!1),K=I.trim().length>0||z,q=H.trim().length>0||W,J=!P&&!m&&!g&&!x&&!w&&!E&&!k&&!K&&!q,Y=()=>{M(null),h(!1),_(!1),S(!1),T(!1),O(!1),A(!1),R(``),B(!1),U(``),G(!1),f(null)},X=e=>{B(e),R(``)},Z=e=>{G(e),U(``)},Q=(e,t)=>e.get(t)?.toString().trim()||null,re=(e,t)=>{i(e,{onSuccess:()=>{l(r(p.AUTOMATIONS$GIT_SYNC$CONFIG_SAVED)),Y(),t&&n()},onError:e=>{u(v(e)===409?r(p.AUTOMATIONS$GIT_SYNC$ENABLE_BLOCKED_ERROR):D(e,r(p.ERROR$GENERIC)))}})},ie=e=>[`repo_url`,`branch`,`token`].filter(t=>t in e).map(t=>`${t}=${e[t]}`).join(`&`),ae=async e=>{try{let t=await s(e);return t.ok?null:t.detail??r(p.AUTOMATIONS$GIT_SYNC$CHECK_FAILED_TITLE)}catch{return null}};return(0,V.jsx)(F,{icon:(0,V.jsx)(ee,{className:`size-4`}),title:r(p.AUTOMATIONS$GIT_SYNC$CONFIG_TITLE),children:(0,V.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault();let t=e.nativeEvent.submitter?.getAttribute(`name`)===$,n=new FormData(e.currentTarget),r={};if(P&&(r.enabled=N),m){let e=n.get(`git-sync-interval-input`)?.toString().trim(),t=Number(e);r.interval_seconds=e&&Number.isFinite(t)?Math.max(0,Math.trunc(t)):0}g&&(r.repo_url=Q(n,`git-sync-repo-url-input`)),x&&(r.branch=Q(n,`git-sync-branch-input`)),w&&(r.path=Q(n,`git-sync-path-input`)),E&&(r.author_name=Q(n,`git-sync-author-name-input`)),k&&(r.author_email=Q(n,`git-sync-author-email-input`));let i=I.trim(),a=H.trim();z?r.token=null:i&&(r.token=i),W?r.encryption_key=null:a&&(r.encryption_key=a);let o=ie(r);if(o&&d?.key!==o){let e=await ae(r);if(e){f({key:o,detail:e});return}}f(null),re(r,t)},className:`flex flex-col gap-6`,children:[(0,V.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,V.jsx)(C,{testId:`git-sync-enabled-switch`,isToggled:N,isDisabled:!t,onToggle:M,children:r(p.AUTOMATIONS$GIT_SYNC$FIELD_ENABLED)}),(0,V.jsx)(`p`,{className:`text-xs text-muted`,children:r(p.AUTOMATIONS$GIT_SYNC$ENABLED_HELP)})]}),(0,V.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,V.jsx)(b,{testId:`git-sync-interval-input`,name:`git-sync-interval-input`,type:`number`,min:0,label:r(p.AUTOMATIONS$GIT_SYNC$FIELD_INTERVAL),defaultValue:String(e.interval_seconds),isDisabled:!t,onChange:t=>h(t.trim()!==String(e.interval_seconds))}),(0,V.jsx)(`p`,{className:`text-xs text-muted`,children:r(p.AUTOMATIONS$GIT_SYNC$INTERVAL_HELP)})]}),(0,V.jsx)(b,{testId:`git-sync-repo-url-input`,name:`git-sync-repo-url-input`,type:`text`,label:r(p.AUTOMATIONS$GIT_SYNC$FIELD_REPO_URL),defaultValue:e.repo_url,placeholder:r(p.AUTOMATIONS$GIT_SYNC$REPO_URL_PLACEHOLDER),isDisabled:!t,onChange:t=>_(t.trim()!==e.repo_url)}),(0,V.jsx)(b,{testId:`git-sync-branch-input`,name:`git-sync-branch-input`,type:`text`,label:r(p.AUTOMATIONS$GIT_SYNC$FIELD_BRANCH),defaultValue:e.branch,placeholder:r(p.AUTOMATIONS$GIT_SYNC$BRANCH_PLACEHOLDER),isDisabled:!t,onChange:t=>S(t.trim()!==e.branch)}),(0,V.jsx)(b,{testId:`git-sync-path-input`,name:`git-sync-path-input`,type:`text`,label:r(p.AUTOMATIONS$GIT_SYNC$FIELD_PATH),defaultValue:e.path,placeholder:r(p.AUTOMATIONS$GIT_SYNC$PATH_PLACEHOLDER),isDisabled:!t,onChange:t=>T(t.trim()!==e.path)}),(0,V.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,V.jsx)(b,{testId:`git-sync-author-name-input`,name:`git-sync-author-name-input`,type:`text`,label:r(p.AUTOMATIONS$GIT_SYNC$FIELD_AUTHOR_NAME),showOptionalTag:!0,defaultValue:``,isDisabled:!t,onChange:()=>O(!0)}),(0,V.jsx)(b,{testId:`git-sync-author-email-input`,name:`git-sync-author-email-input`,type:`email`,label:r(p.AUTOMATIONS$GIT_SYNC$FIELD_AUTHOR_EMAIL),showOptionalTag:!0,defaultValue:``,isDisabled:!t,onChange:()=>A(!0)}),(0,V.jsx)(`p`,{className:`text-xs text-muted`,children:r(p.AUTOMATIONS$GIT_SYNC$AUTHOR_HELP)})]}),(0,V.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,V.jsx)(b,{testId:`git-sync-token-input`,name:`git-sync-token-input`,type:`password`,label:r(p.AUTOMATIONS$GIT_SYNC$FIELD_TOKEN),placeholder:r(p.AUTOMATIONS$GIT_SYNC$TOKEN_PLACEHOLDER),isDisabled:!t||z,onChange:R},z?`token-cleared`:`token-editable`),(0,V.jsx)(`p`,{className:`text-xs text-muted`,children:r(p.AUTOMATIONS$GIT_SYNC$TOKEN_HELP)}),(0,V.jsx)(C,{testId:`git-sync-clear-token-switch`,isToggled:z,isDisabled:!t,onToggle:X,children:r(p.AUTOMATIONS$GIT_SYNC$CLEAR_TOKEN)})]}),(0,V.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,V.jsx)(b,{testId:`git-sync-encryption-key-input`,name:`git-sync-encryption-key-input`,type:`password`,label:r(p.AUTOMATIONS$GIT_SYNC$FIELD_ENCRYPTION_KEY),placeholder:r(e.encryption_enabled?p.AUTOMATIONS$GIT_SYNC$KEY_SET_PLACEHOLDER:p.AUTOMATIONS$GIT_SYNC$KEY_UNSET_PLACEHOLDER),isDisabled:!t||W,onChange:U},W?`key-cleared`:`key-editable`),(0,V.jsx)(`p`,{className:`text-xs text-muted`,children:r(p.AUTOMATIONS$GIT_SYNC$ENCRYPTION_KEY_HELP)}),(0,V.jsx)(C,{testId:`git-sync-clear-encryption-key-switch`,isToggled:W,isDisabled:!t,onToggle:Z,children:r(p.AUTOMATIONS$GIT_SYNC$CLEAR_ENCRYPTION_KEY)})]}),d&&(0,V.jsxs)(`div`,{role:`alert`,"data-testid":`git-sync-check-failure`,className:`rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm text-red-300 whitespace-pre-wrap break-words`,children:[(0,V.jsx)(`p`,{className:`font-medium`,children:r(p.AUTOMATIONS$GIT_SYNC$CHECK_FAILED_TITLE)}),(0,V.jsx)(`p`,{className:`mt-1`,children:d.detail}),(0,V.jsx)(`p`,{className:`mt-1 text-xs text-red-300/70`,children:r(p.AUTOMATIONS$GIT_SYNC$CHECK_FAILED_HINT)})]}),(0,V.jsxs)(`div`,{className:`flex justify-start gap-3`,children:[(0,V.jsxs)(y,{testId:`git-sync-save-button`,variant:`primary`,type:`submit`,isDisabled:!t||o||c||J,children:[!o&&!c&&r(p.SETTINGS$SAVE_CHANGES),c&&r(p.AUTOMATIONS$GIT_SYNC$CHECKING),o&&r(p.SETTINGS$SAVING)]}),(0,V.jsx)(y,{testId:`git-sync-save-and-sync-button`,name:$,variant:`secondary`,type:`submit`,isDisabled:!t||o||c||J||!N,children:r(p.AUTOMATIONS$GIT_SYNC$SAVE_AND_SYNC)})]})]})})}var ie=3e3,ae=15e3,oe=3e4,se=e=>({state:`running`,startedAt:e.sync_started_at??new Date().toISOString(),lastSyncedAt:e.last_synced_at,lastErrorAt:e.last_error_at}),ce=r(function(){let{t:e}=a(`openhands`),t=d(),n=E(`manage_automations`),[r,i]=(0,L.useState)({state:`idle`}),o=r.state===`running`,{data:s,isLoading:c,refetch:l}=T(),f=s?.status===`ok`,m=t.backend.kind===`local`,{data:h,isLoading:g,error:_,refetch:y}=z({enabled:f&&m,refetchInterval:o?ie:ae});(0,L.useEffect)(()=>{h?.sync_in_progress&&i(e=>e.state===`running`?e:se(h))},[h]),(0,L.useEffect)(()=>{r.state!==`running`||!h||(h.last_error_at&&h.last_error_at!==r.lastErrorAt?i({state:`failed`}):h.last_synced_at&&h.last_synced_at!==r.lastSyncedAt&&i({state:`succeeded`}))},[h,r]),(0,L.useEffect)(()=>{if(!o)return;let e=setTimeout(()=>i({state:`idle`}),oe);return()=>clearTimeout(e)},[o,r]);let b=B();if(!m)return(0,V.jsx)(`div`,{className:`min-h-full`,children:(0,V.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,V.jsx)(W,{})})});if(c)return(0,V.jsx)(`div`,{className:`min-h-full`,children:(0,V.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,V.jsx)(U,{})})});if(!f)return(0,V.jsx)(`div`,{className:`min-h-full`,children:(0,V.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,V.jsx)(j,{onRetry:l})})});if(g)return(0,V.jsx)(`div`,{className:`min-h-full`,children:(0,V.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,V.jsx)(U,{})})});if(!h)return(0,V.jsx)(`div`,{className:`min-h-full`,children:(0,V.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:v(_)===404?(0,V.jsx)(G,{}):(0,V.jsx)(k,{onRetry:()=>y()})})});let x=()=>{b.mutate(void 0,{onSuccess:()=>i(se(h)),onError:t=>{u(v(t)===503?e(p.AUTOMATIONS$GIT_SYNC$SYNC_DISABLED_ERROR):D(t,e(p.ERROR$GENERIC)))}})};return(0,V.jsx)(`div`,{className:`min-h-full`,children:(0,V.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:(0,V.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,V.jsx)(M,{}),(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`h1`,{className:`text-xl font-semibold text-content`,children:e(p.AUTOMATIONS$GIT_SYNC$TITLE)}),(0,V.jsx)(`p`,{className:`mt-1 text-sm text-muted`,children:e(p.AUTOMATIONS$GIT_SYNC$SUBTITLE)})]}),h.last_error&&(0,V.jsx)(K,{error:h.last_error,errorAt:h.last_error_at}),(0,V.jsx)(Q,{status:h,onSyncNow:x,isSyncing:b.isPending||o,syncActivity:r.state,syncStartedAt:o?r.startedAt:null,canManage:n}),(0,V.jsx)(re,{status:h,canManage:n,onSyncNow:x})]})})})});export{ce as default};
@@ -0,0 +1 @@
1
+ import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{F as r,P as i,R 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{M as c}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js";import{Y as l,n as u}from"./active-backend-context-BZDG15C0.js";import{t as d,z as f}from"./utils-DUD5ScdA.js";import{t as p}from"./loading-spinner-DBgXgra0.js";import{E as m,T as h,a as g,c as _,d as v,f as y,i as ee,l as te,m as ne,n as b,o as x,p as S,r as C,t as re,u as ie}from"./use-tracking-Bhu7gk2y.js";import{l as w}from"./settings-service.api-3yAUFcaP.js";import{n as T}from"./use-settings-C6ZxpBDX.js";import{t as ae}from"./modal-backdrop-BSzNhM4r.js";import{n as oe}from"./modal-classes-D5_b5vMi.js";import{l as E}from"./form-control-classes-CGXBLcn1.js";import{t as D}from"./brand-button-Blxv5nww.js";import{t as O}from"./navigation-link-Bxo3-4vo.js";import{o as k,s as A,t as j}from"./conversation-store-Blc5xysY.js";import{t as se}from"./modal-close-button-objukxk_.js";import{t as M}from"./settings-input-CWUEHHvS.js";import{n as N}from"./use-create-conversation-DVrA_uLD.js";import{t as P}from"./settings-dropdown-input-Ba1UN5Du.js";import{f as F,n as I,o as L,s as R}from"./mcp-marketplace-utils-BJWJgbB6.js";import{t as z}from"./vendor~root-layout~index-home~home~mcp~automations-list~automation-templates~automation-set~bxsimjx0-D7IDevqN.js";import{t as ce}from"./api-error-message-BEIE_yD1.js";import{n as le}from"./use-manifest-capabilities-HIWCtIUm.js";import{t as B}from"./git-repo-dropdown-CgXR6M_E.js";import"./git-repo-dropdown-D2Uei3CO.js";var V=e(t(),1);function ue(e){let t=e.requires.integrations,{data:n,isLoading:r}=T(),i=(0,V.useMemo)(()=>F(w(n?.agent_settings?.mcp_config)),[n?.agent_settings?.mcp_config]),a=(0,V.useMemo)(()=>{let e=R(z);return Object.entries(t).map(([t,n])=>({id:t,requirement:n,entry:L(t,e)??null})).filter(({entry:e})=>!e||!I(e,i))},[t,i]),o=a.filter(({requirement:e})=>e.required!==!1);return{blockingIntegrations:o,warningIntegrations:a.filter(({requirement:e})=>e.required===!1),isBlocked:o.length>0,isLoading:r}}var H={fieldErrors:{},formErrors:[]};function U(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function W(e,t){let n=e[0]===`body`?e.slice(1):e,r=[],i=t;return n.forEach(e=>{if(typeof e==`number`){Array.isArray(i)&&r.length>0&&(r[r.length-1]+=`[${e}]`,i=i[e]);return}U(i)&&e in i&&(r.push(e),i=i[e])}),r.join(`.`)}function G(e,t){if(!U(e))return[];if(Array.isArray(e.errors))return e.errors.flatMap(e=>!U(e)||typeof e.message!=`string`?[]:[{path:typeof e.field==`string`?e.field:``,message:e.message}]);let{detail:n}=e;return typeof n==`string`?[{path:``,message:n}]:Array.isArray(n)?n.flatMap(e=>!U(e)||typeof e.msg!=`string`?[]:[{path:W(Array.isArray(e.loc)?e.loc:[],t),message:e.msg}]):[]}function K(e,t){if(e.length===0)return H;let n={},r=[];return e.forEach(({path:e,message:i})=>{let a=e?t[e]:void 0;if(!a?.length){r.push(i);return}a.forEach(e=>{e in n||(n[e]=i)})}),{fieldErrors:n,formErrors:r}}var de={fieldErrors:{},formErrors:[]},q=[404,501];function J(e){return q.some(t=>l(e,t)||c.isAxiosError(e)&&e.response?.status===t)}function fe(e){let t=(0,V.useRef)(0),n=(0,V.useMemo)(()=>x(e),[e]);return(0,V.useCallback)(async r=>{let i=g(e,r);if(!i)return null;t.current+=1;let a=t.current;try{let e=await b.validateDraft(i);return a===t.current?e?.valid?de:K(G(e,i.draft),n):null}catch(e){return J(e)||console.warn(`Automation setup preflight failed:`,e),null}},[e,n])}function pe(){let e=N(),t=j(e=>e.setMessageToSend),n=(0,V.useCallback)(async n=>{let r=await e.mutateAsync({});return r.conversation_id.startsWith(`task-`)&&r.task_id?A(r.task_id,n):k(r.conversation_id,{draftMessage:n}),window.setTimeout(()=>t(n),0),{response:{...r}}},[e,t]);return(0,V.useCallback)(async(e,t,r)=>r?{response:await b.createAutomationDraft(r)}:n(C(e,t)),[n])}var Y=n();function me({name:e,field:t,value:n,error:r,options:i,repository:a,disabled:o,onChange:c,onRepositoryChange:l,onBlur:p}){let{t:m}=s(`openhands`),{backend:h}=u(),g=`setup-field-${e}`,_=(0,Y.jsx)(`p`,{className:`text-xs text-[var(--oh-muted)]`,children:t.help}),v=h.kind===`cloud`;if(t.type===`repo-picker`&&v)return(0,Y.jsxs)(`div`,{className:`flex w-full flex-col gap-2.5`,children:[(0,Y.jsx)(he,{field:t}),(0,Y.jsx)(B,{provider:t.provider??`github`,value:a?.id??null,repositoryName:a?.full_name??n??null,placeholder:t.placeholder,disabled:o,onChange:e=>{l(e??null),c(e?.full_name??``),p()}}),(0,Y.jsx)(Z,{testId:g,error:r}),_]});if(t.type===`select`||t.type===`timezone`&&i.length>0)return(0,Y.jsxs)(`div`,{className:`flex w-full flex-col gap-2.5`,children:[(0,Y.jsx)(P,{testId:g,name:e,label:(0,Y.jsx)(X,{field:t}),items:i.map(e=>({key:e.value,label:e.label})),selectedKey:n||void 0,placeholder:t.placeholder,isDisabled:o,required:t.required,onSelectionChange:e=>{c(e===null?``:String(e)),p()}}),(0,Y.jsx)(Z,{testId:g,error:r}),_]});if(t.type===`textarea`)return(0,Y.jsxs)(`label`,{className:`flex w-full flex-col gap-2.5`,children:[(0,Y.jsx)(X,{field:t}),(0,Y.jsx)(`textarea`,{"data-testid":g,name:e,rows:4,value:n,placeholder:t.placeholder,disabled:o,"aria-invalid":!!r,onChange:e=>c(e.target.value),onBlur:p,className:d(E,r&&`border-red-500`)}),(0,Y.jsx)(Z,{testId:g,error:r}),_]});let y=t.placeholder??(t.type===`repo-picker`?m(f.SETUP$REPOSITORY_PLACEHOLDER):void 0);return(0,Y.jsxs)(`div`,{className:`flex w-full flex-col gap-2.5`,children:[(0,Y.jsx)(M,{testId:g,name:e,type:`text`,label:t.label,value:n,placeholder:y,isDisabled:o,showRequiredTag:t.required,error:r,onChange:c,onBlur:p}),_]})}function X({field:e}){return(0,Y.jsxs)(`span`,{className:`flex items-center gap-2 text-sm`,children:[e.label,e.required&&(0,Y.jsx)(`span`,{className:`text-sm leading-none text-red-400`,"aria-hidden":!0,children:`*`})]})}function he({field:e}){return(0,Y.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,Y.jsx)(X,{field:e})})}function Z({testId:e,error:t}){return t?(0,Y.jsx)(`p`,{role:`alert`,"data-testid":`${e}-error`,className:`-mt-1 text-xs text-red-400`,children:t}):null}var ge=`/mcp`;function _e({prerequisites:e}){let{t}=s(`openhands`),{blockingIntegrations:n,warningIntegrations:r}=e;return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-4`,"data-testid":`setup-prerequisites`,children:[[...n,...r].map(({id:e,requirement:t,entry:n})=>(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Y.jsx)(`span`,{className:`text-sm`,children:n?.name??e}),(0,Y.jsx)(`span`,{className:`text-xs text-[var(--oh-muted)]`,children:t.message})]},e)),(0,Y.jsx)(O,{to:ge,className:`text-sm underline`,children:t(f.SETUP$MANAGE_INTEGRATIONS)})]})}function ve({setup:e,values:t}){let{t:n}=s(`openhands`);return(0,Y.jsx)(`div`,{className:`flex flex-col gap-4`,"data-testid":`setup-review`,children:(0,Y.jsx)(`dl`,{className:`flex flex-col gap-3`,children:Object.entries(_(e)).map(([e,r])=>(0,Y.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,Y.jsx)(`dt`,{className:`text-xs text-[var(--oh-muted)]`,children:r.label}),(0,Y.jsx)(`dd`,{className:`text-sm break-words`,children:(t[e]??``).trim()||n(f.SETUP$EMPTY_VALUE)})]},e))})})}var ye=400,be={fieldErrors:{},formErrors:[]};function xe(e){return e.formErrors.length>0||Object.keys(e.fieldErrors).length>0}function Se(e){return typeof e.conversation_id==`string`?`/conversations/${e.conversation_id}`:typeof e.id==`string`?S(e.id):null}function Ce({entry:e,onClose:t}){let{t:n}=s(`openhands`),r=a(),i=le(e),o=ue(e),c=fe(e),l=pe(),{trackAutomationSetupOpened:u,trackAutomationSetupValidated:h,trackAutomationSetupCreated:g,trackAutomationSetupFailed:ne}=re(),[b,S]=(0,V.useState)(`prerequisites`),[C,w]=(0,V.useState)(()=>ie(e.setup)),[T,E]=(0,V.useState)({}),[O,k]=(0,V.useState)({}),[A,j]=(0,V.useState)(be),[M,N]=(0,V.useState)(!1),P=(0,V.useRef)(C),F=(0,V.useRef)(null);(0,V.useEffect)(()=>()=>{F.current&&window.clearTimeout(F.current)},[]);let I=(0,V.useMemo)(()=>_(e.setup),[e]),L=(0,V.useMemo)(()=>v(e.setup,i.capabilities),[e,i.capabilities]),R=(0,V.useMemo)(()=>ee(e,C),[e,C]),z=(0,V.useMemo)(()=>x(e),[e]),B=(0,V.useRef)(!1);(0,V.useEffect)(()=>{B.current||(B.current=!0,u({automationId:e.id}))},[e.id,u]);let H=i.supported===!1,U=o.blockingIntegrations.length>0||o.warningIntegrations.length>0,W=b===`prerequisites`&&!U?`form`:b,de=(e,t)=>{P.current={...P.current,[e]:t},w(P.current),k(({[e]:t,...n})=>n),j(t=>{if(!(e in t.fieldErrors))return t;let{[e]:n,...r}=t.fieldErrors;return{...t,fieldErrors:r}})},q=()=>{F.current&&window.clearTimeout(F.current),F.current=window.setTimeout(()=>{c(P.current).then(e=>{e&&j(e)})},ye)},J=async()=>{if(W===`prerequisites`){S(`form`);return}let t=y(e.setup,C,L);if(Object.keys(t).length>0){k(t);return}k({});let n=await c(C);if(n&&xe(n)){j(n);return}j(be),h({automationId:e.id}),S(`review`)},X=async(i,a)=>{N(!0);try{let{response:n}=await l(e,C,i);g({automationId:e.id,setupMode:a});let o=Se(n);o?r(o,{replace:!0}):t()}catch(t){ne({automationId:e.id,setupMode:a});let r=K(G(ce(t),i),z);j(xe(r)?r:{fieldErrors:{},formErrors:[n(f.SETUP$SUBMIT_FAILED)]}),S(`form`)}finally{N(!1)}},he=()=>X(R,e.setup.mode),Z=()=>X(null,`assisted`),ge=e.setup.mode===`direct`&&(m(e)!==null||e.setup.message!==void 0),Ce=e=>{let t=O[e];return t?we(t,n):A.fieldErrors[e]},Q=i.isLoading||o.isLoading,$=H?n(f.SETUP$UNAVAILABLE_TITLE):W===`prerequisites`?n(f.SETUP$PREREQUISITES_TITLE):W===`review`?n(f.SETUP$REVIEW_TITLE):e.name;return(0,Y.jsx)(ae,{onClose:t,"aria-label":e.name,children:(0,Y.jsxs)(`div`,{"data-testid":`setup-dialog`,className:`relative flex max-h-[85vh] w-[92vw] max-w-lg flex-col rounded-xl border border-[var(--oh-border)] bg-base-secondary`,children:[(0,Y.jsx)(se,{onClose:t,testId:`setup-dialog-close`,disabled:M}),(0,Y.jsx)(`header`,{className:`flex-shrink-0 px-6 pb-4 pt-6`,children:(0,Y.jsx)(`h2`,{className:d(`pr-6`,oe),children:$})}),(0,Y.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-6`,children:[Q&&(0,Y.jsx)(`div`,{className:`flex justify-center py-6`,children:(0,Y.jsx)(p,{size:`small`})}),!Q&&H&&(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Y.jsx)(`p`,{className:`text-sm text-[var(--oh-muted)]`,children:n(f.SETUP$UNSUPPORTED_MESSAGE)}),i.unmet.length>0&&(0,Y.jsx)(`p`,{"data-testid":`setup-unmet-requirements`,className:`text-sm text-[var(--oh-muted)]`,children:i.unmet.join(`, `)})]}),!Q&&!H&&W===`prerequisites`&&(0,Y.jsx)(_e,{prerequisites:o}),!Q&&!H&&W===`form`&&(0,Y.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,Y.jsx)(`p`,{className:`text-sm text-[var(--oh-muted)]`,children:e.description}),e.setup.form.note&&(0,Y.jsx)(`p`,{className:`text-sm text-[var(--oh-muted)]`,children:e.setup.form.note}),Object.entries(I).map(([e,t])=>(0,Y.jsx)(me,{name:e,field:t,value:C[e]??``,error:Ce(e),options:te(e,t,L),repository:T[e]??null,disabled:M,onChange:t=>de(e,t),onRepositoryChange:t=>E(n=>({...n,[e]:t})),onBlur:q},e))]}),!Q&&!H&&W===`review`&&(0,Y.jsx)(ve,{setup:e.setup,values:C}),A.formErrors.map(e=>(0,Y.jsx)(`p`,{role:`alert`,"data-testid":`setup-form-error`,className:`pt-4 text-sm text-red-400`,children:e},e))]}),(0,Y.jsxs)(`footer`,{className:`flex flex-shrink-0 justify-end gap-2 px-6 pb-6 pt-4`,children:[W===`review`&&(0,Y.jsx)(D,{testId:`setup-back-button`,type:`button`,variant:`secondary`,isDisabled:M,onClick:()=>S(`form`),children:n(f.BUTTON$BACK)}),H?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(D,{type:`button`,variant:`secondary`,isDisabled:M,onClick:t,children:n(f.BUTTON$CLOSE)}),ge&&(0,Y.jsx)(D,{testId:`setup-fallback-conversation`,type:`button`,variant:`primary`,isDisabled:M,onClick:Z,children:n(f.SETUP$FALLBACK_CONVERSATION)})]}):(0,Y.jsx)(D,{testId:`setup-continue-button`,type:`button`,variant:`primary`,isDisabled:Q||M||W===`prerequisites`&&o.isBlocked,onClick:W===`review`?he:J,children:n(W===`review`?f.SETUP$CONFIRM:f.BUTTON$CONTINUE)})]})]})})}function we(e,t){switch(e.code){case`required`:return t(f.SETUP$VALIDATION_REQUIRED);case`minLength`:return t(f.SETUP$VALIDATION_MIN_LENGTH,{length:e.length});case`maxLength`:return t(f.SETUP$VALIDATION_MAX_LENGTH,{length:e.length});case`invalidOption`:return t(f.SETUP$VALIDATION_INVALID_OPTION);case`unsafeExpressionLiteral`:return t(f.SETUP$VALIDATION_UNSAFE_VALUE);default:return e}}var Q=({params:e})=>{let t=h.findById(e.automationId??``);if(!t)throw new Response(null,{status:404,statusText:`Not Found`});return{automationId:t.id}},$=o(function(){let{automationId:e}=i(),t=r(),n=a(),o=h.findById(e);return o?(0,Y.jsx)(Ce,{entry:o,onClose:()=>{t.key==="default"?n(ne(),{replace:!0}):n(-1)}}):null});export{Q as clientLoader,$ as default};
@@ -1 +1 @@
1
- import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{U as r}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~lq5hicxx-cHFhpUBq.js";import{i,n as a,t as o}from"./manifest-subpage-layout-CKWvL2ig.js";import{t as s}from"./recommended-automations-launcher-CFlzhu1o.js";import{w as c}from"./use-tracking-CVwPmhlX.js";var l=e(t(),1),u=n(),d=()=>{if(!c())throw new Response(null,{status:404,statusText:`Not Found`});return null},f=r(function(){let[e,t]=(0,l.useState)(``),n=c(),r=a();return!n||!r?null:(0,u.jsxs)(o,{heading:r.heading,navTestIdBase:`automations-navbar`,items:r.items,children:[(0,u.jsxs)(`div`,{className:`min-w-0`,children:[(0,u.jsx)(`h1`,{className:`text-xl font-semibold text-content`,children:n.title}),(0,u.jsx)(`p`,{className:`mt-1 text-sm text-muted`,children:n.description})]}),(0,u.jsx)(`div`,{className:`flex max-w-xl items-stretch`,children:(0,u.jsx)(i,{value:e,onChange:t})}),(0,u.jsx)(s,{query:e})]})});export{d as clientLoader,f as default};
1
+ import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{U as r}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js";import{i,n as a,t as o}from"./manifest-subpage-layout-Rn-glaxV.js";import{w as s}from"./use-tracking-Bhu7gk2y.js";import{t as c}from"./recommended-automations-launcher-CcFMfJRR.js";var l=e(t(),1),u=n(),d=()=>{if(!s())throw new Response(null,{status:404,statusText:`Not Found`});return null},f=r(function(){let[e,t]=(0,l.useState)(``),n=s(),r=a();return!n||!r?null:(0,u.jsxs)(o,{heading:r.heading,navTestIdBase:`automations-navbar`,items:r.items,children:[(0,u.jsxs)(`div`,{className:`min-w-0`,children:[(0,u.jsx)(`h1`,{className:`text-xl font-semibold text-content`,children:n.title}),(0,u.jsx)(`p`,{className:`mt-1 text-sm text-muted`,children:n.description})]}),(0,u.jsx)(`div`,{className:`flex max-w-xl items-stretch`,children:(0,u.jsx)(i,{value:e,onChange:t})}),(0,u.jsx)(c,{query:e})]})});export{d as clientLoader,f as default};
@@ -0,0 +1 @@
1
+ import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{St as t,bt as n,yt as r}from"./vendor-styling-Ck5D_A2Q.js";import{U as i}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ox0jfsa0-cHFhpUBq.js";import{t as a}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js";import{D as o}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js";import{t as s}from"./useQueries-xDrGlTO_.js";import{t as c}from"./vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-e8pX05xf.js";import{Mt as l,Nt as u,jt as d,n as f}from"./active-backend-context-BZDG15C0.js";import{i as p,t as m,z as h}from"./utils-DUD5ScdA.js";import{i as g,n as _,r as v,t as ee}from"./manifest-subpage-layout-Rn-glaxV.js";import{t as te}from"./check-DSuS-lyr.js";import{t as y}from"./file-text-C6WYtNdV.js";import{t as ne}from"./refresh-cw-nmcesifB.js";import{t as b}from"./zap-DRa-r-Tf.js";import{_ as x,n as re,p as ie,s as ae,t as oe,v as se,x as ce}from"./use-tracking-Bhu7gk2y.js";import{t as S}from"./modal-backdrop-BSzNhM4r.js";import{n as C}from"./modal-classes-D5_b5vMi.js";import{t as w}from"./brand-button-Blxv5nww.js";import{n as T}from"./navigation-context-CQZwH_tC.js";import{t as le}from"./styled-tooltip-B6JXcsmL.js";import{u as ue}from"./dropdown-classes-tLhpwtxS.js";import{t as E}from"./modal-close-button-objukxk_.js";import{t as D}from"./format-time-delta-BIR5Os7T.js";import{n as O,t as k}from"./context-menu-list-item-CdcamfM1.js";import{t as de}from"./u-edit-DAkcF52u.js";import{t as A}from"./folder-C1ou4_DT.js";import{a as j,i as M,n as fe,o as pe,r as me,t as N}from"./extension-module-card-classes-Bo43vY5V.js";import{n as he,t as ge}from"./recommended-automations-launcher-CcFMfJRR.js";import{n as P}from"./skill-card-pill-row-dGIUzr_b.js";import{n as F,r as _e,t as I}from"./use-has-permission-CQ31Cl8j.js";import{t as L}from"./automation-C_eCrGyP.js";import{a as R,c as ve,d as ye,f as z,i as be,l as xe,n as Se,o as Ce,r as B,u as we}from"./kebab-menu-item-content-DERMdnDv.js";import{n as Te}from"./api-error-message-BEIE_yD1.js";import{n as Ee,t as De}from"./use-launch-skill-in-chat-COnDpxCQ.js";import{t as V}from"./enum-filter-dropdown-Fk8k60nk.js";import{a as Oe,c as H,i as ke,l as Ae,n as je,o as U,r as Me,s as W,t as Ne}from"./automation-export-n0X6FB0C.js";import{n as Pe,t as Fe}from"./backend-not-configured-DP8KLNq_.js";var Ie=o(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),Le=o(`file-up`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`m15 15-3-3-3 3`,key:`15xj92`}]]),Re=o(`grid-2x2`,[[`path`,{d:`M12 3v18`,key:`108xh3`}],[`path`,{d:`M3 12h18`,key:`1i2n21`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}]]),ze=o(`rows-3`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M21 9H3`,key:`1338ky`}],[`path`,{d:`M21 15H3`,key:`9uk58r`}]]),G=e(t(),1),K=r();function q(e,t){let n=[];if(e.repository&&n.push({id:`repository`,node:(0,K.jsxs)(`span`,{className:m(M,`gap-1`),children:[(0,K.jsx)(A,{className:`size-3 shrink-0`}),e.repository]})}),e.trigger.type===`event`){let t=[e.trigger.on?R(e.trigger.on):``,e.trigger.source?`(${e.trigger.source})`:``].filter(Boolean).join(` `);n.push({id:`event-trigger`,node:(0,K.jsxs)(`span`,{className:m(M,`gap-1`),children:[(0,K.jsx)(b,{className:`size-3 shrink-0`,"aria-hidden":`true`}),t]})})}else n.push({id:`schedule`,node:(0,K.jsxs)(`span`,{className:m(M,`gap-1`),children:[(0,K.jsx)(F,{className:`size-3 shrink-0`}),t]})});return e.model&&n.push({id:`model`,node:(0,K.jsxs)(`span`,{className:m(M,`gap-1`),children:[(0,K.jsx)(U,{className:`size-3 shrink-0`}),e.model]})}),n}function J({automation:e,t,canManage:n,onRunNow:r,isRunPending:i,onView:a,onExport:o,onEdit:s,onToggle:c,onDelete:l}){return[...n?[{label:t(h.AUTOMATIONS$RUN_NOW),icon:(0,K.jsx)(B,{className:`size-4`}),onClick:()=>r(e.id),disabled:i||!e.enabled}]:[],{label:t(h.COMMON$VIEW),icon:(0,K.jsx)(y,{className:`size-4`,"aria-hidden":!0}),onClick:a},{label:t(h.AUTOMATIONS$EXPORT),icon:(0,K.jsx)(Ie,{className:`size-4`,"aria-hidden":!0}),onClick:()=>o(e)},...n&&s?[{label:t(h.AUTOMATIONS$EDIT),icon:(0,K.jsx)(de,{className:`size-4`}),onClick:()=>s(e.id)}]:[],...n?[{label:e.enabled?t(h.AUTOMATIONS$TURN_OFF):t(h.AUTOMATIONS$TURN_ON),icon:(0,K.jsx)(Se,{className:`size-4`}),onClick:()=>c(e.id,e.enabled)},{label:t(h.AUTOMATIONS$DELETE),icon:(0,K.jsx)(Oe,{className:`size-4`}),onClick:()=>l(e.id)}]:[]]}var Be={healthy:`healthy`,failing:`failing`,running:`running`,disabled:`disabled`,"never-run":`neverRun`,unknown:`checking`},Ve=new Set([L.COMPLETED,L.FAILED]);function He(e){let t=e.runs.filter(e=>Ve.has(e.status)),n=t.filter(e=>e.status===L.COMPLETED).length,r=t.flatMap(e=>{if(!e.completed_at)return[];let t=new Date(e.completed_at).getTime()-new Date(e.started_at).getTime();return Number.isFinite(t)&&t>=0?[t]:[]});return{total:e.total,latestRun:e.runs[0]??null,recentSuccessRate:t.length===0?null:n/t.length,averageDurationMs:r.length===0?null:r.reduce((e,t)=>e+t,0)/r.length}}function Y(e,t){if(!e.enabled)return`disabled`;if(!t||t.isError||t.isLoading||!t.summary)return`unknown`;let n=t.summary.latestRun;return n?n.status===L.FAILED?`failing`:n.status===L.PENDING||n.status===L.RUNNING?`running`:`healthy`:`never-run`}function Ue(e){return e===null||!Number.isFinite(e)?`—`:e<6e4?`${Math.max(1,Math.round(e/1e3))}s`:e<36e5?`${Math.max(1,Math.round(e/6e4))}m`:`${(e/36e5).toFixed(1)}h`}function We(e,t){let n=t.toLowerCase();return n?e.name.toLowerCase().includes(n)||(e.prompt??``).toLowerCase().includes(n)||e.repository?.toLowerCase().includes(n)===!0||e.model?.toLowerCase().includes(n)===!0:!0}var Ge={active:e=>e.enabled,failing:(e,t)=>t===`failing`,disabled:e=>!e.enabled},Ke={event:e=>e.trigger.type===`event`,schedule:e=>e.trigger.type!==`event`};function X(e,t){return t.get(e.id)?.summary?.total??0}function qe(e,t){let n=t.get(e.id)?.summary?.latestRun?.started_at??e.last_triggered_at;if(!n)return 0;let r=new Date(n).getTime();return Number.isFinite(r)?r:0}var Je={"last-run":(e,t,n)=>qe(t,n)-qe(e,n),runs:(e,t,n)=>X(t,n)-X(e,n),name:(e,t)=>e.name.localeCompare(t.name)};function Ye(e,t,n){return e.filter(e=>!(!We(e,t.search)||t.status!==`all`&&!Ge[t.status](e,Y(e,n.get(e.id)))||t.trigger!==`all`&&!Ke[t.trigger](e))).sort((e,r)=>Je[t.sort](e,r,n))}function Z(e,t){return e.flatMap(e=>{let n=t.get(e.id);return n?.summary&&!n.isLoading&&!n.isError?[n.summary]:[]})}var Xe={automations:e=>({display:e.length.toLocaleString(),isZero:e.length===0,placeholderValues:{active:e.filter(e=>e.enabled).length}}),"needs-attention":(e,t)=>{let n=e.filter(e=>Y(e,t.get(e.id))===`failing`).length;return{display:n.toLocaleString(),isZero:n===0,placeholderValues:{}}},"total-runs":(e,t)=>{let n=Z(e,t);if(n.length===0&&e.length>0)return{display:`—`,isZero:!1,placeholderValues:{}};let r=n.reduce((e,t)=>e+t.total,0);return{display:r.toLocaleString(),isZero:r===0,placeholderValues:{}}},"average-duration":(e,t)=>{let n=Z(e,t).flatMap(e=>e.averageDurationMs===null?[]:[e.averageDurationMs]);return{display:Ue(n.length===0?null:n.reduce((e,t)=>e+t,0)/n.length),isZero:!1,placeholderValues:{}}}};function Ze(e,t,n){return Xe[e](t,n)}var Qe={healthy:`border-[var(--oh-success)]/50 bg-[var(--oh-success)]/10 text-[var(--oh-success)]`,failing:`border-[var(--oh-danger)]/50 bg-[var(--oh-danger)]/10 text-danger`,running:`border-[var(--oh-border)] bg-surface-raised text-muted`,disabled:`border-[var(--oh-border)] bg-surface-raised text-muted`,"never-run":`border-[var(--oh-warning)]/50 bg-[var(--oh-warning)]/10 text-[var(--oh-warning)]`,unknown:`border-[var(--oh-border)] bg-surface-raised text-muted`};function $e({health:e,labels:t}){return(0,K.jsxs)(`span`,{"data-testid":`automation-health-badge`,className:m(`inline-flex items-center gap-1.5 whitespace-nowrap rounded-full border px-2 py-0.5 text-[11px] font-medium`,Qe[e]),children:[(0,K.jsx)(`span`,{className:`size-1.5 rounded-full bg-current`,"aria-hidden":!0}),t[Be[e]]]})}var et=/^\d+s$/;function tt(e,t,n){if(!e)return t.never;let r=D(e);return et.test(r)?t.justNow:`${r} ${n}`}function nt(e){return e?.summary?e.summary.total.toLocaleString():!e||e.isLoading?`…`:`—`}function rt(e){let t=e?.summary?.recentSuccessRate;return t==null?`—`:`${Math.round(t*100)}%`}function it(e){return Ue(e?.summary?.averageDurationMs??null)}function at({state:e,copy:t}){return(0,K.jsx)(`dl`,{"data-testid":`automation-run-stats`,className:`grid grid-cols-3 gap-2 border-t border-[var(--oh-border)] pt-3 text-xs`,children:[{label:t.runs,value:nt(e)},{label:t.recentSuccess,value:rt(e)},{label:t.averageDuration,value:it(e)}].map(e=>(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsx)(`dt`,{className:`truncate text-muted`,children:e.label}),(0,K.jsx)(`dd`,{className:`mt-0.5 truncate font-medium text-content`,children:e.value})]},e.label))})}function ot({automation:e,onToggle:t,onRunNow:n,isRunPending:r=!1,onDelete:i,onExport:o,onEdit:s,insights:c}){let{navigate:l}=T(),{t:u}=a(`openhands`),d=I(`manage_automations`),f=e.trigger.schedule_human||e.trigger.type,p=(0,G.useMemo)(()=>q(e,f),[e,f]),g=()=>{l?.(`/automations/${e.id}`)},_=J({automation:e,t:u,canManage:d,onRunNow:n,isRunPending:r,onView:g,onExport:o,onEdit:s,onToggle:t,onDelete:i}),v=()=>{g()};return(0,K.jsxs)(`div`,{role:`link`,tabIndex:0,"data-testid":`automation-card-${e.id}`,onClick:v,onKeyDown:e=>{e.key===`Enter`&&v()},className:m(`flex min-w-0 flex-col gap-3 overflow-hidden p-4 text-left`,j,me),children:[(0,K.jsxs)(`header`,{className:`flex items-start justify-between gap-3`,children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1.5`,children:[(0,K.jsxs)(`h3`,{className:`flex items-center gap-2 truncate text-sm font-semibold text-white`,children:[e.trigger.type===`event`?(0,K.jsx)(b,{className:`size-4 shrink-0 text-muted`,"aria-hidden":`true`}):(0,K.jsx)(F,{className:`size-4 shrink-0 text-muted`}),(0,K.jsx)(`span`,{className:`truncate`,children:e.name})]}),e.prompt?(0,K.jsx)(`p`,{className:`line-clamp-2 text-xs leading-relaxed text-tertiary-light`,children:e.prompt}):null]}),(0,K.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5`,children:[d?(0,K.jsxs)(`button`,{type:`button`,"data-testid":`automation-run-now-${e.id}`,"aria-busy":r,disabled:r||!e.enabled,onClick:t=>{t.stopPropagation(),n(e.id)},className:Ae,children:[(0,K.jsx)(B,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),u(h.AUTOMATIONS$RUN_NOW)]}):null,(0,K.jsx)(W,{items:_})]})]}),c?(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs text-muted`,children:[(0,K.jsx)($e,{health:Y(e,c.state),labels:c.spec.health}),(0,K.jsx)(`span`,{"data-testid":`automation-last-run-${e.id}`,children:`${c.spec.lastRun.label} ${tt(c.state?.summary?.latestRun?.started_at??e.last_triggered_at,c.spec.lastRun,u(h.CONVERSATION$AGO))}`})]}):null,p.length>0?(0,K.jsx)(P,{pills:p,testId:`automation-pills-${e.id}`}):null,c?(0,K.jsx)(at,{state:c.state,copy:c.spec.stats}):null]})}var st=`overflow-hidden rounded-md border border-[var(--oh-border)] bg-base-secondary`,ct=[`h-11`,`border-t border-[var(--oh-border)] transition-colors`].join(` `),lt=`hover:bg-interactive-hover-low outline-none focus:outline-none focus-visible:outline-none focus-visible:bg-interactive-hover-low`,Q=`px-3 align-middle`,ut=[ct,lt,`cursor-pointer`].join(` `),dt=`openhands-automations-view`;function ft(){return typeof window>`u`?`grid`:window.localStorage.getItem(`openhands-automations-view`)===`list`?`list`:`grid`}function pt(e){window.localStorage.setItem(dt,e)}function mt({automation:e,onToggle:t,onRunNow:n,isRunPending:r=!1,onDelete:i,onExport:o,onEdit:s,insights:c}){let{navigate:l}=T(),{t:u}=a(`openhands`),d=I(`manage_automations`),f=e.trigger.schedule_human||e.trigger.type,p=(0,G.useMemo)(()=>q(e,f),[e,f]),g=()=>{l?.(`/automations/${e.id}`)},_=J({automation:e,t:u,canManage:d,onRunNow:n,isRunPending:r,onView:g,onExport:o,onEdit:s,onToggle:t,onDelete:i}),v=()=>{g()};return(0,K.jsxs)(`tr`,{"data-testid":`automation-list-row-${e.id}`,onClick:v,onKeyDown:e=>{e.key===`Enter`&&v()},tabIndex:0,className:m(ut,`cursor-pointer`),children:[(0,K.jsx)(`td`,{className:Q,children:(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[e.trigger.type===`event`?(0,K.jsx)(b,{className:`size-4 shrink-0 text-muted`,"aria-hidden":`true`}):(0,K.jsx)(F,{className:`size-4 shrink-0 text-muted`}),(0,K.jsx)(`span`,{className:`max-w-[40%] shrink-0 truncate text-sm font-medium text-white`,title:e.name,children:e.name}),p.length>0?(0,K.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,K.jsx)(P,{pills:p,testId:`automation-pills-${e.id}`})}):null]})}),c?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`td`,{"data-testid":`automation-health-${e.id}`,className:m(`hidden w-[110px] @min-[36rem]:table-cell`,Q),children:(0,K.jsx)($e,{health:Y(e,c.state),labels:c.spec.health})}),(0,K.jsx)(`td`,{"data-testid":`automation-last-run-${e.id}`,className:m(`hidden w-[84px] whitespace-nowrap text-xs text-muted @min-[44rem]:table-cell`,Q),children:tt(c.state?.summary?.latestRun?.started_at??e.last_triggered_at,c.spec.lastRun,u(h.CONVERSATION$AGO))}),(0,K.jsx)(`td`,{"data-testid":`automation-run-stats-${e.id}`,title:`${c.spec.stats.runs} · ${c.spec.stats.averageDuration}`,className:m(`hidden w-[140px] whitespace-nowrap text-right text-xs text-muted @min-[56rem]:table-cell`,Q),children:`${nt(c.state)} · ${it(c.state)}`})]}):null,(0,K.jsx)(`td`,{className:m(c?`w-[90px]`:`w-0`,`whitespace-nowrap`,Q),children:(0,K.jsxs)(`div`,{className:`flex items-center justify-end gap-0.5`,children:[d?(0,K.jsx)(le,{content:u(h.AUTOMATIONS$RUN_NOW),placement:`top`,children:(0,K.jsx)(`button`,{type:`button`,"data-testid":`automation-run-now-${e.id}`,"aria-label":u(h.AUTOMATIONS$RUN_NOW),"aria-busy":r,disabled:r||!e.enabled,onClick:t=>{t.stopPropagation(),n(e.id)},className:H,children:(0,K.jsx)(B,{className:`size-4 shrink-0`,"aria-hidden":!0})})}):null,(0,K.jsx)(W,{items:_})]})})]})}function ht({title:e,count:t,automations:n,view:r,onToggle:i,onRunNow:a,runPendingId:o=null,onDelete:s,onExport:c,onEdit:l,insights:u}){return n.length===0?null:(0,K.jsxs)(`section`,{children:[(0,K.jsxs)(`div`,{className:`flex items-center`,children:[(0,K.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:e}),(0,K.jsx)(he,{count:t})]}),r===`grid`?(0,K.jsx)(`div`,{className:m(`mt-3`,fe),children:(0,K.jsx)(`div`,{className:N,children:n.map(e=>(0,K.jsx)(ot,{automation:e,onToggle:i,onRunNow:a,isRunPending:o===e.id,onDelete:s,onExport:c,onEdit:l,insights:u&&{spec:u.spec,state:u.byId.get(e.id)}},e.id))})}):(0,K.jsx)(`div`,{className:m(st,`mt-3`,u&&`@container`),children:(0,K.jsx)(`table`,{className:m(`w-full min-w-full [&>tbody>tr:first-child]:border-t-0`,u&&`table-fixed`),children:(0,K.jsx)(`tbody`,{children:n.map(e=>(0,K.jsx)(mt,{automation:e,onToggle:i,onRunNow:a,isRunPending:o===e.id,onDelete:s,onExport:c,onEdit:l,insights:u&&{spec:u.spec,state:u.byId.get(e.id)}},e.id))})})})]})}var gt=e(n(),1);function _t({icon:e,label:t,isSelected:n}){return(0,K.jsxs)(`span`,{className:`flex min-w-0 w-full items-center gap-2`,children:[(0,K.jsx)(`span`,{className:ue,"aria-hidden":!0,children:(0,K.jsx)(e,{})}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:t}),n?(0,K.jsx)(te,{className:`size-4 shrink-0`,"aria-hidden":!0}):null]})}var vt=[{value:`grid`,icon:Re,labelKey:h.AUTOMATIONS$VIEW_GRID,testId:`automations-view-toggle-grid`},{value:`list`,icon:ze,labelKey:h.AUTOMATIONS$VIEW_LIST,testId:`automations-view-toggle-list`}];function yt({view:e,onChange:t,disabled:n=!1}){let{t:r}=a(`openhands`),[i,o]=(0,G.useState)(!1),[s,c]=(0,G.useState)(),l=(0,G.useRef)(null),u=(0,G.useRef)(null),d=(vt.find(t=>t.value===e)??vt[0]).icon;(0,G.useLayoutEffect)(()=>{if(!i||!l.current)return;let e=()=>{let e=l.current?.getBoundingClientRect();e&&c({position:`fixed`,zIndex:9999,top:e.bottom+4,right:window.innerWidth-e.right})};return e(),window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[i]),(0,G.useEffect)(()=>{if(!i)return;let e=e=>{let t=e.target;l.current?.contains(t)||u.current?.contains(t)||o(!1)},t=e=>{e.key===`Escape`&&o(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[i]);let f=i&&s?(0,K.jsx)(O,{ref:u,theme:`popover`,className:`min-w-[10rem]`,children:vt.map(n=>(0,K.jsx)(`li`,{children:(0,K.jsx)(k,{testId:n.testId,onClick:()=>{t(n.value),o(!1)},className:`group`,children:(0,K.jsx)(_t,{icon:n.icon,label:r(n.labelKey),isSelected:e===n.value})})},n.value))}):null;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`button`,{ref:l,type:`button`,"data-testid":`automations-view-toggle`,"aria-label":r(h.AUTOMATIONS$VIEW_MODE),"aria-haspopup":`menu`,"aria-expanded":i,"aria-disabled":n,disabled:n,onClick:()=>{n||o(e=>!e)},className:m(`inline-flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-lg border border-[var(--oh-border)] bg-base-secondary text-white transition-colors hover:bg-[var(--oh-interactive-hover)] focus-visible:border-white/40 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-white/20`,`disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-base-secondary`),children:(0,K.jsx)(d,{className:`size-4`,"aria-hidden":!0})}),i&&s&&typeof document<`u`?gt.createPortal((0,K.jsx)(`div`,{style:s,children:f}),document.body):null]})}function bt(){return(0,K.jsxs)(`div`,{"data-testid":`automation-card-skeleton`,className:`${j} border border-transparent p-4`,children:[(0,K.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,K.jsx)(`div`,{className:`h-5 w-40 animate-pulse rounded bg-surface-raised`}),(0,K.jsx)(`div`,{className:`h-5 w-10 animate-pulse rounded-full bg-surface-raised`})]}),(0,K.jsx)(`div`,{className:`mt-2 h-4 w-72 animate-pulse rounded bg-surface-raised`}),(0,K.jsxs)(`div`,{className:`mt-4 flex gap-2`,children:[(0,K.jsx)(`div`,{className:`h-7 w-32 animate-pulse rounded-full bg-surface-raised`}),(0,K.jsx)(`div`,{className:`h-7 w-28 animate-pulse rounded-full bg-surface-raised`}),(0,K.jsx)(`div`,{className:`h-7 w-24 animate-pulse rounded-full bg-surface-raised`})]})]})}var xt=e=>(0,K.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:2,stroke:`currentColor`,...e,children:(0,K.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`m19.5 8.25-7.5 7.5-7.5-7.5`})}),St=x();function Ct({children:e}){return(0,K.jsx)(`span`,{className:`whitespace-nowrap`,children:e})}function wt({children:e}){return(0,K.jsx)(`code`,{"data-testid":`automations-create-instructions-example`,className:m(`mx-0.5 inline-block rounded-sm border border-[var(--oh-border-subtle)]`,`bg-[var(--oh-surface-raised)] px-1.5 py-0.5 align-baseline font-mono text-[11px] text-white`),children:e})}function Tt({children:e}){return(0,K.jsx)(K.Fragment,{children:e})}var Et={example:(0,K.jsx)(Ct,{}),cmd:(0,K.jsx)(wt,{}),punct:(0,K.jsx)(Tt,{})};function Dt({onLaunch:e}={}){let{t}=a(`openhands`),n=De(),r=f(),{trackAutomationCreatedButton:i}=oe();return(0,K.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,K.jsxs)(`p`,{className:`text-sm leading-relaxed text-tertiary-light`,children:[(0,K.jsx)(c,{ns:`openhands`,i18nKey:h.AUTOMATIONS$EMPTY_OPTION_CONVERSATION_DESC,components:Et}),` `,t(h.AUTOMATIONS$CREATE_INSTRUCTIONS_GUIDANCE)]}),(0,K.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,K.jsx)(`a`,{href:St,target:`_blank`,rel:`noopener noreferrer`,className:`text-sm text-muted underline transition-colors hover:text-foreground`,children:t(h.AUTOMATIONS$EMPTY_LEARN_MORE)}),(0,K.jsx)(w,{type:`button`,variant:`primary`,testId:`automations-create-automation`,onClick:()=>{i({backendKind:r.backend.kind}),n(t(h.AUTOMATIONS$CREATE_AUTOMATION_PROMPT),e)},startContent:(0,K.jsx)(Ee,{className:`size-4`,"aria-hidden":!0}),children:t(h.AUTOMATIONS$CREATE_AUTOMATION_BUTTON)})]})]})}function Ot({collapsible:e=!1}){let{t}=a(`openhands`),[n,r]=(0,G.useState)(!e);return e?(0,K.jsxs)(`div`,{className:`w-full rounded-lg border border-[var(--oh-border)] bg-[var(--oh-surface)]`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>r(!n),"aria-expanded":n,className:`flex w-full items-center justify-between rounded-lg p-4 text-left transition-colors hover:bg-surface-raised`,children:[(0,K.jsx)(`span`,{className:`text-sm font-normal text-content`,children:t(h.AUTOMATIONS$EMPTY_HOW_TO_CREATE_TITLE)}),(0,K.jsx)(xt,{className:m(`size-5 text-muted transition-transform`,n&&`rotate-180`)})]}),n?(0,K.jsx)(`div`,{className:`px-4 pb-4`,children:(0,K.jsx)(Dt,{})}):null]}):(0,K.jsxs)(`div`,{className:`w-full max-w-2xl`,children:[(0,K.jsx)(`h3`,{className:`text-center text-sm font-medium text-content`,children:t(h.AUTOMATIONS$EMPTY_HOW_TO_CREATE_TITLE)}),(0,K.jsx)(`div`,{className:`mt-4`,children:(0,K.jsx)(Dt,{})})]})}function kt(){let{t:e}=a(`openhands`);return(0,K.jsxs)(`div`,{"data-testid":`automations-empty`,className:pe,children:[(0,K.jsx)(`p`,{className:`text-sm text-white`,children:e(h.AUTOMATIONS$EMPTY)}),(0,K.jsx)(`p`,{className:`mt-1 text-xs text-tertiary-light`,children:e(h.AUTOMATIONS$EMPTY_HINT)}),(0,K.jsx)(`div`,{className:`mt-8 flex justify-center border-t border-[var(--oh-border)] pt-8`,children:(0,K.jsx)(Ot,{})})]})}function At({isOpen:e,onClose:t}){let{t:n}=a(`openhands`);return e?(0,K.jsx)(S,{onClose:t,"aria-label":n(h.AUTOMATIONS$EMPTY_HOW_TO_CREATE_TITLE),children:(0,K.jsxs)(`div`,{"data-testid":`add-automation-modal`,className:`relative flex w-full max-w-lg flex-col rounded-xl border border-[var(--oh-border)] bg-base-secondary`,children:[(0,K.jsx)(E,{onClose:t,testId:`add-automation-modal-close`}),(0,K.jsx)(`header`,{className:`flex-shrink-0 px-6 pb-4 pt-6`,children:(0,K.jsx)(`h2`,{id:`add-automation-modal-title`,className:m(`pr-6`,C),children:n(h.AUTOMATIONS$EMPTY_HOW_TO_CREATE_TITLE)})}),(0,K.jsx)(`div`,{className:`px-6 pb-6`,children:(0,K.jsx)(Dt,{onLaunch:t})})]})}):null}function $({label:e,value:t}){return(0,K.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,K.jsx)(`dt`,{className:`text-xs font-medium uppercase tracking-wide text-muted`,children:e}),(0,K.jsx)(`dd`,{className:`whitespace-pre-wrap break-words text-sm text-content`,children:t})]})}function jt({isOpen:e,spec:t,isImporting:n,onClose:r,onImport:i}){let{t:o}=a(`openhands`);if(!e||!t)return null;let s=t.trigger.type===`event`?[t.trigger.source,R(t.trigger.on)].filter(Boolean).join(`: `):[t.trigger.schedule_human??t.trigger.schedule,t.timezone??t.trigger.timezone].filter(Boolean).join(` · `);return(0,K.jsx)(S,{onClose:n?void 0:r,closeOnEscape:!n,closeOnBackdropClick:!n,"aria-label":o(h.AUTOMATIONS$IMPORT),children:(0,K.jsxs)(`div`,{"data-testid":`import-automation-modal`,className:`relative flex max-h-[85vh] w-[min(36rem,calc(100vw-2rem))] flex-col rounded-xl border border-[var(--oh-border)] bg-base-secondary`,children:[(0,K.jsx)(E,{onClose:r,testId:`import-automation-modal-close`,disabled:n}),(0,K.jsxs)(`header`,{className:`px-6 pb-4 pt-6`,children:[(0,K.jsx)(`h2`,{className:m(`pr-6`,C),children:o(h.AUTOMATIONS$IMPORT)}),(0,K.jsx)(`p`,{className:`mt-2 text-sm text-tertiary-light`,children:o(h.AUTOMATIONS$IMPORT_PREVIEW_DESCRIPTION)})]}),(0,K.jsxs)(`dl`,{className:`flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto border-y border-[var(--oh-border)] px-6 py-5`,children:[(0,K.jsx)($,{label:o(h.AUTOMATIONS$NAME),value:t.name}),(0,K.jsx)($,{label:o(h.AUTOMATIONS$DETAIL$TRIGGER),value:s}),(0,K.jsx)($,{label:o(h.AUTOMATIONS$PROMPT),value:t.prompt??``}),t.plugins&&t.plugins.length>0?(0,K.jsx)($,{label:o(h.AUTOMATIONS$DETAIL$PLUGINS),value:t.plugins.join(`, `)}):null]}),(0,K.jsxs)(`footer`,{className:`px-6 py-5`,children:[(0,K.jsx)(`p`,{className:`mb-4 text-sm text-tertiary-light`,children:o(h.AUTOMATIONS$IMPORT_DISABLED_NOTICE)}),(0,K.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,K.jsx)(w,{testId:`import-automation-cancel`,type:`button`,variant:`secondary`,onClick:r,isDisabled:n,children:o(h.AUTOMATIONS$CANCEL)}),(0,K.jsx)(w,{testId:`import-automation-confirm`,type:`button`,variant:`primary`,onClick:i,isDisabled:n,"aria-busy":n,children:o(n?h.AUTOMATIONS$IMPORTING:h.AUTOMATIONS$IMPORT)})]})]})]})})}var Mt=20;function Nt(e,t={}){let{enabled:n=!0}=t,r=f();return s({queries:e.map(e=>({queryKey:[...z,e.id,{limit:Mt,offset:0},r.backend.id,r.orgId],queryFn:()=>re.getAutomationRuns(e.id,Mt,0),staleTime:60*1e3,enabled:n&&!!e.id})),combine:t=>{let n=new Map;return e.forEach((e,r)=>{let i=t[r];n.set(e.id,{summary:i.data?He(i.data):null,isLoading:i.isLoading,isError:i.isError})}),n}})}function Pt(e){return Object.fromEntries(e.map(e=>[e.value,e.label]))}function Ft({spec:e,status:t,trigger:n,sort:r,onStatusChange:i,onTriggerChange:a,onSortChange:o}){return(0,K.jsxs)(K.Fragment,{children:[e.filters.map(e=>e.id===`status`?(0,K.jsx)(V,{testId:`automations-filter-status`,value:t,onChange:i,options:e.options.map(e=>e.value),labelByValue:Pt(e.options),ariaLabel:e.label},e.id):(0,K.jsx)(V,{testId:`automations-filter-trigger`,value:n,onChange:a,options:e.options.map(e=>e.value),labelByValue:Pt(e.options),ariaLabel:e.label},e.id)),(0,K.jsx)(V,{testId:`automations-sort`,value:r,onChange:o,options:e.sort.options.map(e=>e.value),labelByValue:Pt(e.sort.options),ariaLabel:e.sort.label})]})}function It({onClear:e}){let{t}=a(`openhands`);return(0,K.jsxs)(`div`,{"data-testid":`automations-filtered-empty`,className:`rounded-xl border border-dashed border-[var(--oh-border)] p-8 text-center`,children:[(0,K.jsx)(`p`,{className:`text-sm text-muted`,children:t(h.AUTOMATIONS$NO_FILTER_MATCHES)}),(0,K.jsx)(`button`,{type:`button`,"data-testid":`automations-clear-filters`,onClick:e,className:`mt-2 text-sm text-white underline-offset-2 hover:underline`,children:t(h.AUTOMATIONS$CLEAR_FILTERS)})]})}function Lt({label:e,tiles:t}){return(0,K.jsx)(`section`,{"aria-label":e,className:`grid grid-cols-2 gap-3 xl:grid-cols-4`,children:t.map(e=>(0,K.jsxs)(`div`,{"data-testid":`overview-tile-${e.key}`,className:m(j,`p-4`),children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`truncate text-xs text-muted`,children:e.label}),(0,K.jsx)(e.Icon,{className:`size-4 shrink-0 text-[var(--oh-muted)]`,"aria-hidden":!0})]}),(0,K.jsx)(`div`,{className:`mt-2 text-xl font-semibold text-content`,children:e.value}),(0,K.jsx)(`div`,{className:`mt-1 truncate text-xs text-muted`,children:e.detail})]},e.key))})}var Rt=50,zt=i(function(){let{t:e}=a(`openhands`),t=ce(),n=(0,G.useMemo)(()=>se(),[]),r=_(),i=n&&r?{spec:n,nav:r}:null,[o,s]=(0,G.useState)(``),[c,te]=(0,G.useState)(`all`),[y,b]=(0,G.useState)(`all`),[x,re]=(0,G.useState)(n?.sort.default??`last-run`),[S,C]=(0,G.useState)(()=>ft()),[le,ue]=(0,G.useState)(Rt),[E,D]=(0,G.useState)(null),[O,k]=(0,G.useState)(null),[de,A]=(0,G.useState)(!1),[j,M]=(0,G.useState)(null),fe=(0,G.useRef)(null),pe=f(),{navigate:me}=T(),N=pe.backend.kind===`local`,{data:he,isLoading:P,refetch:F}=_e(),I=he?.status===`ok`,{data:L,isLoading:R,isError:z,refetch:Se}=Ce({limit:le,offset:0,enabled:I}),B=Nt(L?.automations??[],{enabled:I&&i!==null}),{trackPrebuiltAutomationEnabled:Ee,trackAutomationExported:De}=oe(),V=ye(),Oe=ve(),H=xe(),Ae=we(),U=(0,G.useMemo)(()=>L?.automations?n?Ye(L.automations,{search:o,status:c,trigger:y,sort:x},B):L.automations.filter(e=>We(e,o)):[],[L?.automations,n,o,c,y,x,B]),W=(0,G.useMemo)(()=>U.filter(e=>e.enabled),[U]),Ie=(0,G.useMemo)(()=>U.filter(e=>!e.enabled),[U]),Re=(e,t)=>{let n=!t;if(V.mutate({id:e,enabled:n}),n){let t=L?.automations.find(t=>t.id===e);Ee({automationId:e,automationName:t?.name??e})}},ze=t=>{H.mutate(t,{onSuccess:()=>{l(e(h.AUTOMATIONS$RUN_NOW_SUCCESS))},onError:t=>{d(Te(t,e(h.AUTOMATIONS$RUN_NOW_ERROR)))}})},q=e=>{let t=L?.automations.find(t=>t.id===e);t&&D({id:e,name:t.name})},J=e=>{let t=L?.automations.find(t=>t.id===e);t&&k(t)},Be=e=>{let t=`${JSON.stringify(Me(e),null,2)}\n`;p(new Blob([t],{type:`application/json`}),Ne(e)),De({backendKind:pe.backend.kind})},Ve=async t=>{let n=t.currentTarget,r=n.files?.[0];if(n.value=``,r)try{let t;try{t=JSON.parse(await r.text())}catch{d(e(h.AUTOMATIONS$IMPORT_INVALID_JSON));return}M(je(t))}catch(t){d(t instanceof Error?t.message:e(h.ERROR$GENERIC))}},He=()=>{j&&Ae.mutate({...j,enabled:!1},{onSuccess:t=>{M(null),u(e(h.AUTOMATIONS$IMPORT_SUCCESS,{name:t.name}),e(h.AUTOMATIONS$IMPORT_VIEW),ie(t.id))},onError:t=>{d(Te(t,e(h.ERROR$GENERIC)))}})},Y=()=>{E&&(Oe.mutate(E.id),D(null))},Ue=(0,G.useCallback)(e=>{C(e),pt(e)},[]),Ge=()=>{s(``),te(`all`),b(`all`)},Ke=(0,G.useMemo)(()=>{if(!n)return[];let e=L?.automations??[];return n.overview.tiles.map(t=>{let n=Ze(t.metric,e,B),r=n.isZero&&t.zeroDetail?t.zeroDetail:t.detail;return{key:t.metric,label:t.label,value:n.display,detail:ae(r,n.placeholderValues),Icon:v[t.icon]}})},[n,L?.automations,B]),X=i?{spec:i.spec.insights,byId:B}:void 0,qe=e=>i?(0,K.jsx)(ee,{heading:i.nav.heading,navTestIdBase:`automations-navbar`,items:i.nav.items,children:e}):(0,K.jsx)(`div`,{className:`min-h-full`,children:(0,K.jsx)(`div`,{className:`p-6 max-w-4xl mx-auto`,children:e})}),Je=L?L.total>L.automations.length:!1,Z=!R&&!z&&L?.automations.length===0;return qe(P?(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h1`,{className:`text-xl font-medium text-content`,children:t.listTitle??e(h.AUTOMATIONS$TITLE)}),(0,K.jsx)(`p`,{className:`mt-1 text-sm text-muted`,children:t.listSubtitle??e(h.AUTOMATIONS$SUBTITLE)}),(0,K.jsx)(`div`,{className:`mt-6 flex flex-col gap-3`,children:Array.from({length:3}).map((e,t)=>(0,K.jsx)(bt,{},`skeleton-${String(t)}`))})]}):I?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsx)(`h1`,{className:`text-xl font-semibold text-content`,children:t.listTitle??e(h.AUTOMATIONS$TITLE)}),(0,K.jsx)(`p`,{className:`mt-1 text-sm text-muted`,children:t.listSubtitle??e(h.AUTOMATIONS$SUBTITLE)})]}),(0,K.jsxs)(`div`,{className:`flex shrink-0 flex-wrap justify-end gap-2`,children:[N&&(0,K.jsx)(w,{type:`button`,variant:`secondary`,testId:`automations-git-sync`,className:`whitespace-nowrap`,onClick:()=>me?.(`/automations/git-sync`),startContent:(0,K.jsx)(ne,{className:`size-4`,"aria-hidden":!0}),children:e(h.AUTOMATIONS$GIT_SYNC$NAV_BUTTON)}),(0,K.jsx)(w,{type:`button`,variant:`secondary`,testId:`automations-import-automation`,className:`whitespace-nowrap`,onClick:()=>fe.current?.click(),startContent:(0,K.jsx)(Le,{className:`size-4`,"aria-hidden":!0}),children:e(h.AUTOMATIONS$IMPORT)}),(0,K.jsx)(`input`,{ref:fe,type:`file`,accept:`application/json,.json`,className:`hidden`,"data-testid":`automations-import-file`,onChange:Ve}),(0,K.jsx)(w,{type:`button`,variant:`secondary`,testId:`automations-add-automation`,className:`whitespace-nowrap`,onClick:()=>A(!0),children:e(h.AUTOMATIONS$ADD_AUTOMATION)})]})]}),i&&(0,K.jsx)(Lt,{label:i.spec.overview.label,tiles:Ke}),(0,K.jsxs)(`div`,{className:m(`flex items-stretch gap-2`,i?`flex-wrap`:`mt-6`),children:[(0,K.jsx)(g,{value:o,onChange:s}),i&&(0,K.jsx)(Ft,{spec:i.spec,status:c,trigger:y,sort:x,onStatusChange:te,onTriggerChange:b,onSortChange:re}),(0,K.jsx)(yt,{view:S,onChange:Ue,disabled:Z})]}),(0,K.jsxs)(`div`,{className:m(`flex flex-col gap-6`,!i&&`mt-6`),children:[R&&(0,K.jsx)(`div`,{className:`flex flex-col gap-3`,children:Array.from({length:3}).map((e,t)=>(0,K.jsx)(bt,{},`skeleton-${String(t)}`))}),z&&!R&&(0,K.jsx)(Pe,{onRetry:Se}),Z&&(0,K.jsx)(kt,{}),!R&&!z&&L&&L.automations.length>0&&(i&&U.length===0?(0,K.jsx)(It,{onClear:Ge}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(ht,{title:e(h.AUTOMATIONS$ACTIVE),count:W.length,automations:W,view:S,onToggle:Re,onRunNow:ze,runPendingId:H.isPending?H.variables??null:null,onDelete:q,onExport:Be,onEdit:N?J:void 0,insights:X}),(0,K.jsx)(ht,{title:e(h.AUTOMATIONS$INACTIVE),count:Ie.length,automations:Ie,view:S,onToggle:Re,onRunNow:ze,runPendingId:H.isPending?H.variables??null:null,onDelete:q,onExport:Be,onEdit:N?J:void 0,insights:X}),Je&&(0,K.jsx)(`button`,{type:`button`,onClick:()=>ue(e=>e+Rt),className:`self-center rounded-lg border border-[var(--oh-border)] px-6 py-2 text-sm text-white hover:bg-surface-raised`,children:e(h.AUTOMATIONS$LOAD_MORE)})]}))]}),!i&&(0,K.jsx)(`div`,{className:`mt-6`,children:(0,K.jsx)(ge,{query:o})}),(0,K.jsx)(ke,{automationName:E?.name??``,isOpen:E!==null,onConfirm:Y,onCancel:()=>D(null)}),O&&(0,K.jsx)(be,{automation:O,isOpen:O!==null,onClose:()=>k(null)}),(0,K.jsx)(At,{isOpen:de,onClose:()=>A(!1)}),(0,K.jsx)(jt,{isOpen:j!==null,spec:j,isImporting:Ae.isPending,onClose:()=>M(null),onImport:He})]}):(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h1`,{className:`text-xl font-medium text-content`,children:t.listTitle??e(h.AUTOMATIONS$TITLE)}),(0,K.jsx)(`p`,{className:`mt-1 text-sm text-muted`,children:t.listSubtitle??e(h.AUTOMATIONS$SUBTITLE)}),(0,K.jsx)(Fe,{onRetry:F})]}))});export{zt as default};
@@ -1 +1 @@
1
- import"./rolldown-runtime-Cyuzqnbw.js";import{St as e,yt as t}from"./vendor-styling-Ck5D_A2Q.js";import{D as n}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js";import{t as r}from"./utils-zxEjKE70.js";import{r as i}from"./form-control-classes-7yFSQJq_.js";import{t as a}from"./navigation-link-Bxo3-4vo.js";var o=n(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]);e();var s=t();function c({children:e}){return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o,{size:20,"aria-hidden":!0}),e]})}function l(e){let{children:t,testId:n,className:o}=e,l=r(i,o);return`to`in e?(0,s.jsx)(a,{to:e.to,onClick:e.onClick,"data-testid":n,className:l,children:(0,s.jsx)(c,{children:t})}):(0,s.jsx)(`button`,{type:`button`,onClick:e.onClick,"data-testid":n,className:l,children:(0,s.jsx)(c,{children:t})})}export{l as t};
1
+ import"./rolldown-runtime-Cyuzqnbw.js";import{St as e,yt as t}from"./vendor-styling-Ck5D_A2Q.js";import{D as n}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js";import{t as r}from"./utils-DUD5ScdA.js";import{r as i}from"./form-control-classes-CGXBLcn1.js";import{t as a}from"./navigation-link-Bxo3-4vo.js";var o=n(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]);e();var s=t();function c({children:e}){return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o,{size:20,"aria-hidden":!0}),e]})}function l(e){let{children:t,testId:n,className:o}=e,l=r(i,o);return`to`in e?(0,s.jsx)(a,{to:e.to,onClick:e.onClick,"data-testid":n,className:l,children:(0,s.jsx)(c,{children:t})}):(0,s.jsx)(`button`,{type:`button`,onClick:e.onClick,"data-testid":n,className:l,children:(0,s.jsx)(c,{children:t})})}export{l as t};
@@ -1 +1 @@
1
- import{a as e,r as t}from"./rolldown-runtime-Cyuzqnbw.js";import{St as n,yt as r}from"./vendor-styling-Ck5D_A2Q.js";import{t as i}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-D5DWZVc7.js";import{D as a,a as o,b as s,i as c,n as l,r as u}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js";import{t as d}from"./useQuery-DRv--6bK.js";import{$ as f,B as p,Ft as m,G as h,It as g,Rt as _,T as v,r as y,xt as b}from"./active-backend-context-IqOjobNK.js";import{t as x,z as S}from"./utils-zxEjKE70.js";import{t as C}from"./chevron-down-CifNWzme.js";import{i as w,n as T,r as E}from"./cloud-funnel-analytics-86CwNdSh.js";import{t as ee}from"./info-BRVcJAUg.js";import{a as D,i as O,n as k,o as A,r as te}from"./use-onboarding-completion-CCE8OQgV.js";import{t as j}from"./use-tracking-CVwPmhlX.js";import{t as M}from"./modal-backdrop-BSzNhM4r.js";import{n as N,r as P,t as ne}from"./modal-body-gIe21fDv.js";import{n as re,r as ie}from"./modal-classes-D66dlgZ7.js";import{t as F}from"./brand-button-swT1RyO0.js";import{n as ae}from"./navigation-context-CQZwH_tC.js";import{t as oe}from"./modal-close-button-B6iOGYpI.js";import{t as I}from"./settings-input-Cz62hWVW.js";import{t as L}from"./segmented-toggle-DCspm2U5.js";var se=a(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),R=e(n()),z=r(),B=e=>(0,z.jsxs)(`svg`,{width:1365,height:1365,viewBox:`0 -24 148 148`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,z.jsx)(`path`,{d:`M71.7542 16.863V2.97414C71.7542 1.82355 72.6872 0.890503 73.8378 0.890503C74.9884 0.890503 75.9214 1.82355 75.9214 2.97414V16.863C75.9214 18.0136 74.9884 18.9466 73.8378 18.9466C72.6872 18.9466 71.7542 18.0136 71.7542 16.863Z`,fill:`white`}),(0,z.jsx)(`path`,{d:`M82.5272 18.9329L89.4716 6.90477C90.0469 5.90832 91.3215 5.5668 92.3179 6.1421C93.3144 6.7174 93.6559 7.99197 93.0806 8.98841L86.1362 21.0165C85.5609 22.0129 84.2863 22.3545 83.2899 21.7792C82.2934 21.2039 81.9519 19.9293 82.5272 18.9329Z`,fill:`white`}),(0,z.jsx)(`path`,{d:`M65.1481 18.9329L58.2037 6.90477C57.6284 5.90832 56.3538 5.5668 55.3574 6.1421C54.3609 6.7174 54.0194 7.99197 54.5947 8.98841L61.5391 21.0165C62.1144 22.0129 63.389 22.3545 64.3854 21.7792C65.3819 21.2039 65.7234 19.9293 65.1481 18.9329Z`,fill:`white`}),(0,z.jsx)(`path`,{d:`M140.606 62.0292C140.606 58.409 141.583 47.6748 141.89 44.1323C142.097 41.7374 141.809 40.4247 141.424 39.7542C141.141 39.2626 140.699 38.915 139.634 38.8436C138.865 38.7921 138.027 39.0114 137.401 39.5761C136.814 40.1052 136.159 41.1682 136.159 43.3176L136.155 43.4388L135.198 59.758C135.164 60.3451 134.883 60.8911 134.424 61.2599C133.966 61.6284 133.374 61.7859 132.793 61.6941L122.764 60.1068L111.948 58.6703C110.949 58.5376 110.188 57.7084 110.142 56.7016L109.561 44.1323C109.535 43.621 109.51 43.1141 109.484 42.6146C109.241 37.9294 109.022 33.7805 109.022 32.4282C109.022 28.3859 108.338 26.6806 107.74 25.9634C107.263 25.3915 106.577 25.1402 105.11 25.1402C104.583 25.1402 104.212 25.2481 103.933 25.4111C103.659 25.5714 103.346 25.8587 103.049 26.4208C102.41 27.6257 101.945 29.891 102.118 33.8479C102.342 38.9804 102.692 42.8146 103.035 46.2718C103.377 49.7231 103.718 52.8561 103.908 56.4971C104.204 62.1966 104.178 66.1256 103.945 68.7924C103.828 70.124 103.656 71.1996 103.423 72.0501C103.202 72.8558 102.871 73.6757 102.296 74.2887C101.6 75.0303 100.608 75.3844 99.577 75.136C98.7592 74.9389 98.1847 74.4215 97.8706 74.0916C97.2141 73.4017 96.7501 72.5106 96.568 72.0512C95.5097 69.3812 92.2352 63.1808 87.8023 59.6811C86.5089 58.6599 85.5666 58.3652 84.9736 58.3204C84.4148 58.2783 84.0094 58.4436 83.6909 58.6967C83.34 58.9756 83.0781 59.3811 82.9479 59.7643C82.9019 59.8999 82.8823 59.9968 82.8741 60.0584C84.0759 62.0865 88.8421 69.5222 91.0896 77.069C92.7648 82.6941 96.8038 88.4259 99.8194 90.8809C102.74 93.258 107.988 94.7313 113.9 95.0218C119.756 95.3095 125.788 94.4121 130.033 92.5092C138.233 88.8334 139.903 80.7382 140.651 77.2292C141.232 74.5057 141.243 71.5987 141.087 68.9009C141.01 67.5551 140.894 66.2969 140.793 65.1373C140.695 64.0105 140.606 62.9215 140.606 62.0292ZM120.986 27.0953C120.986 25.8314 120.648 24.7049 120.089 23.9514C119.583 23.27 118.84 22.7987 117.646 22.7984C116.668 22.7982 116.011 22.9187 115.546 23.1167C115.13 23.2943 114.781 23.5699 114.463 24.0831C113.73 25.2671 113.192 27.6455 113.189 32.384L113.721 43.9088C113.91 47.5661 114.106 51.4922 114.235 54.7707L120.986 55.6666V27.0953ZM125.153 56.2652L131.172 57.218L131.992 43.267V32.5083C131.992 31.031 131.39 30.1275 130.678 29.5489C129.884 28.9039 128.957 28.6731 128.519 28.6731C127.722 28.6731 126.899 28.797 126.306 29.2179C125.849 29.5421 125.153 30.3087 125.153 32.5083V56.2652ZM136.159 35.4278C137.406 34.8069 138.74 34.6083 139.912 34.6868C142.037 34.8292 143.91 35.718 145.037 37.6779C146.06 39.4592 146.273 41.8136 146.041 44.4927C145.72 48.1949 144.772 58.6457 144.772 62.0292C144.772 62.708 144.843 63.6116 144.944 64.7758C145.042 65.907 145.165 67.2389 145.247 68.6606C145.411 71.4987 145.422 74.8383 144.727 78.0987C144.002 81.4953 142.041 91.6918 131.738 96.3108C126.731 98.5551 120.002 99.4936 113.696 99.1838C107.445 98.8767 101.128 97.3189 97.1887 94.1122C93.4809 91.0937 88.9938 84.6307 87.0962 78.2589C84.9529 71.0619 80.3109 63.9646 79.1527 61.9533C78.4706 60.7689 78.684 59.3628 79.0019 58.4258C79.3607 57.3688 80.0554 56.2631 81.0993 55.4337C82.1758 54.5784 83.6043 54.0377 85.2876 54.1647C86.9369 54.2893 88.6462 55.0393 90.3834 56.4107C94.8541 59.9401 98.1342 65.5082 99.7424 68.9231C99.759 68.7664 99.779 68.6024 99.7941 68.4298C100.003 66.0435 100.039 62.3344 99.7467 56.7132C99.5635 53.1942 99.2356 50.1809 98.8888 46.6828C98.5425 43.1904 98.184 39.2713 97.955 34.0302C97.7722 29.8481 98.2012 26.6722 99.3672 24.471C99.9716 23.3302 100.79 22.4223 101.83 21.814C102.866 21.2087 103.995 20.974 105.11 20.974C106.759 20.974 108.813 21.2062 110.448 22.7678C110.593 22.4576 110.75 22.1652 110.921 21.8899C111.676 20.6698 112.681 19.8084 113.912 19.2835C115.095 18.7791 116.378 18.6309 117.646 18.6311C120.195 18.6315 122.164 19.7567 123.434 21.4683C124.256 22.576 124.75 23.8775 124.985 25.1982C126.338 24.5876 127.691 24.5068 128.519 24.5068C129.933 24.5068 131.784 25.0791 133.305 26.3154C134.908 27.6179 136.159 29.6733 136.159 32.5083V35.4278Z`,fill:`white`}),(0,z.jsx)(`path`,{d:`M7.15661 62.0292C7.15661 58.409 6.17994 47.6748 5.87291 44.1323C5.6654 41.7374 5.95357 40.4247 6.33875 39.7542C6.62116 39.2626 7.06336 38.915 8.12834 38.8436C8.89759 38.7921 9.73544 39.0114 10.3616 39.5761C10.9484 40.1052 11.6032 41.1682 11.6032 43.3176L11.6074 43.4388L12.5644 59.758C12.5988 60.3451 12.8798 60.8911 13.338 61.2599C13.7961 61.6284 14.3887 61.7859 14.9695 61.6941L24.9988 60.1068L35.8143 58.6703C36.8135 58.5376 37.5741 57.7084 37.6208 56.7016L38.2015 44.1323C38.2279 43.621 38.2525 43.1141 38.2784 42.6146C38.5218 37.9294 38.7401 33.7805 38.7401 32.4282C38.7401 28.3859 39.4246 26.6806 40.0227 25.9634C40.4996 25.3915 41.185 25.1402 42.6523 25.1402C43.1794 25.1402 43.5505 25.2481 43.8295 25.4111C44.1038 25.5714 44.416 25.8587 44.7138 26.4208C45.3521 27.6257 45.8173 29.891 45.6444 33.8479C45.4201 38.9804 45.0703 42.8146 44.7275 46.2718C44.3853 49.7231 44.0443 52.8561 43.8548 56.4971C43.5582 62.1966 43.5847 66.1256 43.8179 68.7924C43.9344 70.124 44.1069 71.1996 44.3396 72.0501C44.5601 72.8558 44.891 73.6757 45.4663 74.2887C46.1625 75.0303 47.1546 75.3844 48.1855 75.136C49.0033 74.9389 49.5778 74.4215 49.8918 74.0916C50.5484 73.4017 51.0123 72.5106 51.1945 72.0512C52.2527 69.3812 55.5272 63.1808 59.9601 59.6811C61.2536 58.6599 62.1958 58.3652 62.7889 58.3204C63.3476 58.2783 63.753 58.4436 64.0715 58.6967C64.4225 58.9756 64.6844 59.3811 64.8146 59.7643C64.8606 59.8999 64.8801 59.9968 64.8883 60.0584C63.6866 62.0865 58.9204 69.5222 56.6729 77.069C54.9977 82.6941 50.9586 88.4259 47.9431 90.8809C45.0229 93.258 39.7747 94.7313 33.8624 95.0218C28.0068 95.3095 21.9748 94.4121 17.7297 92.5092C9.52988 88.8334 7.85961 80.7382 7.11129 77.2292C6.53054 74.5057 6.5195 71.5987 6.67496 68.9009C6.75251 67.5551 6.86809 66.2969 6.96901 65.1373C7.06707 64.0105 7.1566 62.9215 7.15661 62.0292ZM26.7768 27.0953C26.7768 25.8314 27.1147 24.7049 27.6737 23.9514C28.1792 23.27 28.9221 22.7987 30.1167 22.7984C31.0942 22.7982 31.7518 22.9187 32.2162 23.1167C32.6326 23.2943 32.9817 23.5699 33.2996 24.0831C34.0328 25.2671 34.5705 27.6455 34.5738 32.384L34.0416 43.9088C33.8524 47.5661 33.6565 51.4922 33.5273 54.7707L26.7768 55.6666V27.0953ZM22.6095 56.2652L16.5904 57.218L15.7705 43.267V32.5083C15.7705 31.031 16.3726 30.1275 17.0847 29.5489C17.8785 28.9039 18.8058 28.6731 19.2432 28.6731C20.0404 28.6731 20.8634 28.797 21.4565 29.2179C21.9131 29.5421 22.6095 30.3087 22.6095 32.5083V56.2652ZM11.6032 35.4278C10.3568 34.8069 9.02265 34.6083 7.8501 34.6868C5.72541 34.8292 3.85197 35.718 2.72584 37.6779C1.70247 39.4592 1.48924 41.8136 1.72143 44.4927C2.0423 48.1949 2.99038 58.6457 2.99038 62.0292C2.99037 62.708 2.91991 63.6116 2.81859 64.7758C2.72014 65.907 2.59699 67.2389 2.51505 68.6606C2.3515 71.4987 2.34041 74.8383 3.0357 78.0987C3.76005 81.4953 5.72154 91.6918 16.0245 96.3108C21.0311 98.5551 27.7601 99.4936 34.0669 99.1838C40.3172 98.8767 46.6346 97.3189 50.5737 94.1122C54.2816 91.0937 58.7686 84.6307 60.6662 78.2589C62.8095 71.0619 67.4515 63.9646 68.6098 61.9533C69.2919 60.7689 69.0785 59.3628 68.7605 58.4258C68.4018 57.3688 67.707 56.2631 66.6632 55.4337C65.5867 54.5784 64.1582 54.0377 62.4748 54.1647C60.8256 54.2893 59.1162 55.0393 57.379 56.4107C52.9083 59.9401 49.6283 65.5082 48.02 68.9231C48.0034 68.7664 47.9835 68.6024 47.9684 68.4298C47.7597 66.0435 47.7232 62.3344 48.0158 56.7132C48.1989 53.1942 48.5269 50.1809 48.8737 46.6828C49.22 43.1904 49.5784 39.2713 49.8075 34.0302C49.9903 29.8481 49.5612 26.6722 48.3952 24.471C47.7909 23.3302 46.9729 22.4223 45.9321 21.814C44.8964 21.2087 43.7676 20.974 42.6523 20.974C41.0038 20.974 38.9497 21.2062 37.3141 22.7678C37.1698 22.4576 37.0124 22.1652 36.8419 21.8899C36.0863 20.6698 35.0817 19.8084 33.8508 19.2835C32.6679 18.7791 31.3849 18.6309 30.1167 18.6311C27.5677 18.6315 25.5986 19.7567 24.3285 21.4683C23.5066 22.576 23.0121 23.8775 22.7771 25.1982C21.4247 24.5876 20.0718 24.5068 19.2432 24.5068C17.8298 24.5068 15.9788 25.0791 14.4573 26.3154C12.8542 27.6179 11.6032 29.6733 11.6032 32.5083V35.4278Z`,fill:`white`})]});function ce(e){return o(e,{headers:v})}function le(e,t,n){return c(e,t,{...n,headers:v})}var V=e=>(0,z.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,z.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M15.3235 10.9352L11.5016 14.2111L7.67969 10.9352L8.6152 9.84375L11.5016 12.3178L14.388 9.84375L15.3235 10.9352Z`,fill:`currentColor`})}),H=e=>(0,z.jsxs)(`svg`,{width:16,height:16,viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,z.jsx)(`path`,{d:`M13 3H8.33337V4H11.2929L7.31315 7.97978L8.02026 8.68689L12 4.70711V7.66667H13V3Z`,fill:`currentColor`}),(0,z.jsx)(`path`,{d:`M4.33333 3.66667C3.59695 3.66667 3 4.26362 3 5V11.6667C3 12.403 3.59695 13 4.33333 13H11C11.7364 13 12.3333 12.403 12.3333 11.6667V9.66667H11.3333V11.6667C11.3333 11.8508 11.1841 12 11 12H4.33333C4.14924 12 4 11.8508 4 11.6667V5C4 4.81591 4.14924 4.66667 4.33333 4.66667H6.33333V3.66667H4.33333Z`,fill:`currentColor`})]}),ue=e=>(0,z.jsx)(`svg`,{viewBox:`0 0 18 18`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,z.jsx)(`path`,{d:`M8.25 9.75C8.10166 9.75 7.95666 9.79399 7.83332 9.8764C7.70999 9.95881 7.61386 10.0759 7.55709 10.213C7.50032 10.35 7.48547 10.5008 7.51441 10.6463C7.54335 10.7918 7.61478 10.9254 7.71967 11.0303C7.82456 11.1352 7.9582 11.2066 8.10368 11.2356C8.24917 11.2645 8.39997 11.2497 8.53701 11.1929C8.67406 11.1361 8.79119 11.04 8.8736 10.9167C8.95601 10.7933 9 10.6483 9 10.5C9 10.3011 8.92098 10.1103 8.78033 9.96967C8.63968 9.82902 8.44891 9.75 8.25 9.75ZM5.25 9.75C5.10166 9.75 4.95666 9.79399 4.83332 9.8764C4.70999 9.95881 4.61386 10.0759 4.55709 10.213C4.50032 10.35 4.48547 10.5008 4.51441 10.6463C4.54335 10.7918 4.61478 10.9254 4.71967 11.0303C4.82456 11.1352 4.9582 11.2066 5.10368 11.2356C5.24917 11.2645 5.39997 11.2497 5.53701 11.1929C5.67406 11.1361 5.79119 11.04 5.8736 10.9167C5.95601 10.7933 6 10.6483 6 10.5C6 10.3011 5.92098 10.1103 5.78033 9.96967C5.63968 9.82902 5.44891 9.75 5.25 9.75ZM16.5 3C16.5 2.40326 16.2629 1.83097 15.841 1.40901C15.419 0.987053 14.8467 0.75 14.25 0.75H3.75C3.15326 0.75 2.58097 0.987053 2.15901 1.40901C1.73705 1.83097 1.5 2.40326 1.5 3V6C1.50331 6.55504 1.71166 7.08927 2.085 7.5C1.71166 7.91073 1.50331 8.44496 1.5 9V12C1.5 12.5967 1.73705 13.169 2.15901 13.591C2.58097 14.0129 3.15326 14.25 3.75 14.25H8.25V15.75H2.25C2.05109 15.75 1.86032 15.829 1.71967 15.9697C1.57902 16.1103 1.5 16.3011 1.5 16.5C1.5 16.6989 1.57902 16.8897 1.71967 17.0303C1.86032 17.171 2.05109 17.25 2.25 17.25H15.75C15.9489 17.25 16.1397 17.171 16.2803 17.0303C16.421 16.8897 16.5 16.6989 16.5 16.5C16.5 16.3011 16.421 16.1103 16.2803 15.9697C16.1397 15.829 15.9489 15.75 15.75 15.75H9.75V14.25H14.25C14.8467 14.25 15.419 14.0129 15.841 13.591C16.2629 13.169 16.5 12.5967 16.5 12V9C16.4967 8.44496 16.2883 7.91073 15.915 7.5C16.2883 7.08927 16.4967 6.55504 16.5 6V3ZM15 12C15 12.1989 14.921 12.3897 14.7803 12.5303C14.6397 12.671 14.4489 12.75 14.25 12.75H3.75C3.55109 12.75 3.36032 12.671 3.21967 12.5303C3.07902 12.3897 3 12.1989 3 12V9C3 8.80109 3.07902 8.61032 3.21967 8.46967C3.36032 8.32902 3.55109 8.25 3.75 8.25H14.25C14.4489 8.25 14.6397 8.32902 14.7803 8.46967C14.921 8.61032 15 8.80109 15 9V12ZM15 6C15 6.19891 14.921 6.38968 14.7803 6.53033C14.6397 6.67098 14.4489 6.75 14.25 6.75H3.75C3.55109 6.75 3.36032 6.67098 3.21967 6.53033C3.07902 6.38968 3 6.19891 3 6V3C3 2.80109 3.07902 2.61032 3.21967 2.46967C3.36032 2.32902 3.55109 2.25 3.75 2.25H14.25C14.4489 2.25 14.6397 2.32902 14.7803 2.46967C14.921 2.61032 15 2.80109 15 3V6ZM8.25 3.75C8.10166 3.75 7.95666 3.79399 7.83332 3.8764C7.70999 3.95881 7.61386 4.07594 7.55709 4.21299C7.50032 4.35003 7.48547 4.50083 7.51441 4.64632C7.54335 4.7918 7.61478 4.92544 7.71967 5.03033C7.82456 5.13522 7.9582 5.20665 8.10368 5.23559C8.24917 5.26453 8.39997 5.24968 8.53701 5.19291C8.67406 5.13614 8.79119 5.04001 8.8736 4.91668C8.95601 4.79334 9 4.64834 9 4.5C9 4.30109 8.92098 4.11032 8.78033 3.96967C8.63968 3.82902 8.44891 3.75 8.25 3.75ZM5.25 3.75C5.10166 3.75 4.95666 3.79399 4.83332 3.8764C4.70999 3.95881 4.61386 4.07594 4.55709 4.21299C4.50032 4.35003 4.48547 4.50083 4.51441 4.64632C4.54335 4.7918 4.61478 4.92544 4.71967 5.03033C4.82456 5.13522 4.9582 5.20665 5.10368 5.23559C5.24917 5.26453 5.39997 5.24968 5.53701 5.19291C5.67406 5.13614 5.79119 5.04001 5.8736 4.91668C5.95601 4.79334 6 4.64834 6 4.5C6 4.30109 5.92098 4.11032 5.78033 3.96967C5.63968 3.82902 5.44891 3.75 5.25 3.75Z`,fill:`currentColor`})});function U(e,t,n){let r=n?.lastError??null,i=t?.kind===`cloud`;return i&&!t?.apiKey?.trim()||D(r)?e(S.BACKEND$STATUS_DISCONNECTED_ADD_API_KEY):O(r)?e(S.BACKEND$STATUS_DISCONNECTED_CHECK_API_KEY):te(r)?e(S.BACKEND$LOGGED_OUT):n?.isConnected===!0?e(S.ONBOARDING$BACKEND_STATUS_CONNECTED):i&&n?.isConnected===!1&&(k(r)||_(r))?e(S.BACKEND$STATUS_DISCONNECTED_CHECK_CLOUD_ACCESS):n?.isConnected===!1&&g(r)?e(S.BACKEND$STATUS_DISCONNECTED_CHECK_TUNNEL):n?.isConnected===!1&&_(r)?e(S.BACKEND$STATUS_DISCONNECTED_CHECK_URL_OR_NETWORK):n?.isConnected===!1?e(S.ONBOARDING$BACKEND_STATUS_DISCONNECTED):e(S.ONBOARDING$BACKEND_STATUS_CHECKING)}function W({isConnected:e,className:t}){let n,r,i;return e===`unavailable`?(n=`bg-[var(--oh-text-tertiary)]`,r=`No Backend Available`,i=`unavailable`):e===!0?(n=`bg-[var(--oh-status-success)]`,r=`Connected`,i=`connected`):e===!1?(n=`bg-red-500`,r=`Disconnected`,i=`disconnected`):(n=`bg-[var(--oh-interactive-selected)]`,r=`Checking connection`,i=`checking`),(0,z.jsx)(`span`,{"data-testid":`backend-status-dot`,"data-status":i,"aria-label":r,title:r,role:`status`,className:x(`inline-block w-2 h-2 rounded-full shrink-0`,n,t)})}var G={status:`idle`,verificationUrl:null,userCode:null,apiKey:null,error:null,errorCode:null};function de(){let[e,t]=R.useState(G),n=R.useRef(null),r=R.useCallback((e,r)=>{n.current?.abort();let i=new AbortController;n.current=i,t({...G,status:`starting`}),(async()=>{let n;try{n=await ce(e)}catch(e){if(i.signal.aborted)return;let n=e instanceof Error?e.message:`Failed to start device flow`,r=e instanceof l?e.code:void 0;t({...G,status:`error`,error:n,errorCode:r??null});return}if(!i.signal.aborted){T(e,r),t({...G,status:`awaiting_authorization`,verificationUrl:n.verification_uri_complete,userCode:n.user_code});try{let a=await le(e,n.device_code,{interval:n.interval,signal:i.signal});if(i.signal.aborted)return;E(e,r),t({...G,status:`success`,apiKey:a.access_token})}catch(e){if(i.signal.aborted)return;if(e instanceof l&&e.code===`cancelled`){t(G);return}let n=e instanceof Error?e.message:`Authorization failed`,r=e instanceof l?e.code:void 0;t({...G,status:`error`,error:n,errorCode:r??null})}}})()},[]),i=R.useCallback(()=>{n.current?.abort(),n.current=null,t(G)},[]),a=R.useCallback(()=>{n.current?.abort(),n.current=null,t(G)},[]);return R.useEffect(()=>()=>{n.current?.abort()},[]),{...e,start:r,cancel:i,reset:a}}function K(e){try{return new URL(e).protocol===`https:`}catch{return!1}}function q({host:e,onSuccess:t,testIdRoot:n,isDisabled:r=!1,idleButtonLabel:a,idleButtonContent:o,idleDescription:s,idleFooter:c,className:l,buttonClassName:u,buttonVariant:d=`primary`,statusDisplay:f=`inline`,analyticsSource:p}){let{t:m}=i(`openhands`),h=de(),g=R.useRef(null);R.useEffect(()=>()=>{g.current?.close()},[]),R.useEffect(()=>{if(h.status===`awaiting_authorization`&&h.verificationUrl&&g.current&&!g.current.closed){if(!K(h.verificationUrl)){console.error(`Invalid verification URL protocol`);return}try{g.current.location.href=h.verificationUrl}catch{g.current=window.open(h.verificationUrl,`_blank`,`noopener,noreferrer`)}}},[h.status,h.verificationUrl]),R.useEffect(()=>{if(h.status===`success`&&h.apiKey)try{t(h.apiKey)}finally{h.reset(),g.current?.close()}},[h.status,h.apiKey,h.reset,t]);let _=()=>{let t=e.trim().replace(/\/+$/,``),n=/^https?:\/\//i.test(t)?t:`https://${t}`;try{let e=new URL(n);if(e.username||e.password)throw Error(`Invalid URL format`)}catch{return}g.current=window.open(`about:blank`,`_blank`),g.current||console.warn(`Popup blocked - user will need to use manual link`),h.start(n,p)},v=()=>{h.cancel(),g.current?.close()},y=(0,z.jsx)(fe,{status:h.status,error:h.error,verificationUrl:h.verificationUrl,testIdRoot:n,onCancel:v,onRetry:_}),b=f===`modal`&&h.status!==`idle`,C=a??m(S.BACKEND$LOGIN_WITH_OPENHANDS);return(0,z.jsxs)(`div`,{"data-testid":`${n}-device-flow`,className:x(`flex flex-col gap-3`,l),children:[h.status===`idle`?s:null,h.status===`idle`&&d===`unstyled`&&(0,z.jsx)(`button`,{type:`button`,onClick:_,"data-testid":`${n}-login-button`,className:u,disabled:r,"aria-label":o?C:void 0,children:o??C}),h.status===`idle`&&d!==`unstyled`&&(0,z.jsx)(F,{type:`button`,variant:d,onClick:_,testId:`${n}-login-button`,className:u,isDisabled:r,ariaLabel:o?C:void 0,children:o??C}),h.status===`idle`?c:null,f===`inline`?y:null,b?(0,z.jsx)(M,{onClose:v,"aria-label":m(S.BACKEND$LOGIN_WITH_OPENHANDS),closeOnBackdropClick:!1,children:(0,z.jsx)(N,{testID:`${n}-auth-modal`,width:`sm`,className:`items-stretch border border-[var(--oh-border)]`,children:y})}):null]})}function fe({status:e,error:t,verificationUrl:n,testIdRoot:r,onCancel:a,onRetry:o}){let{t:s}=i(`openhands`);if(e===`idle`||e===`success`)return null;if(e===`starting`)return(0,z.jsxs)(`div`,{className:`flex items-center justify-center gap-2`,"data-testid":`${r}-auth-starting`,role:`status`,"aria-live":`polite`,children:[(0,z.jsx)(pe,{}),(0,z.jsx)(`span`,{className:`text-sm text-[var(--oh-text-tertiary)]`,children:s(S.BACKEND$AUTH_STARTING)})]});if(e===`awaiting_authorization`){let e=n&&K(n)?n:null;return(0,z.jsxs)(`div`,{className:`flex flex-col gap-4`,"data-testid":`${r}-auth-awaiting`,role:`status`,"aria-live":`polite`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-center gap-2`,children:[(0,z.jsx)(pe,{}),(0,z.jsx)(`span`,{className:`text-sm font-medium text-white`,children:s(S.BACKEND$AUTH_AWAITING)})]}),(0,z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,z.jsx)(`p`,{className:`text-center text-sm leading-5 text-[var(--oh-text-tertiary)]`,children:e?`${s(S.BACKEND$AUTH_BROWSER_OPENED)} ${s(S.BACKEND$AUTH_OPEN_MANUALLY)}`:s(S.BACKEND$AUTH_BROWSER_OPENED)}),e?(0,z.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`max-h-16 overflow-auto break-all text-center text-xs text-blue-400 hover:underline`,children:e}):null]}),(0,z.jsx)(F,{type:`button`,variant:`secondary`,onClick:a,testId:`${r}-auth-cancel`,className:`w-full`,children:s(S.BACKEND$AUTH_CANCEL)})]})}return(0,z.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-lg border border-red-700 bg-red-900/20 p-4`,"data-testid":`${r}-auth-error`,role:`alert`,children:[(0,z.jsx)(`p`,{className:`text-sm text-red-400`,children:t}),(0,z.jsx)(F,{type:`button`,variant:`secondary`,onClick:o,testId:`${r}-auth-retry`,className:`w-full`,children:s(S.BACKEND$AUTH_RETRY)})]})}function pe(){return(0,z.jsx)(`svg`,{className:`animate-spin h-4 w-4 text-white`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,"aria-hidden":`true`,children:(0,z.jsx)(`path`,{className:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z`})})}var me=t({BackendConnectionOptions:()=>De,BackendForm:()=>Q,BackendFormModal:()=>Pe});function he(e){return u(e)?`cloud`:`local`}function ge(e){let t=e.toLowerCase().replace(/^\[|\]$/g,``);return!!(t===`localhost`||t===`::1`||t===`::`||t===`0.0.0.0`||/^127\./.test(t)||/^::ffff:127\./i.test(t)||/^10\./.test(t)||/^192\.168\./.test(t)||/^172\.(1[6-9]|2\d|3[01])\./.test(t)||/^fe[89ab][0-9a-f]:/i.test(t)||/^f[cd][0-9a-f]{2}:/i.test(t)||t.endsWith(`.local`)||!t.includes(`.`)&&!t.includes(`:`))}function J(e){let t=e.trim().replace(/\/+$/,``);if(!t)return``;if(/^https?:\/\//i.test(t))return t;let n=t.match(/^\[([^\]]+)\]/);return`${ge(n?n[1]:(t.match(/:/g)??[]).length>1?t:t.split(`:`)[0])?`http`:`https`}://${t}`}function Y(e){let t=e.trim();if(!t||/\s/.test(t))return!1;let n=J(t);if(!n)return!1;try{let e=new URL(n);return(e.protocol===`http:`||e.protocol===`https:`)&&e.hostname.length>0}catch{return!1}}var X=`https://app.all-hands.dev`,_e=`agent-canvas --backend-only --port 8001`,ve=`https://github.com/OpenHands/OpenHands/blob/main/docs/DEVELOPMENT.md#alternative-development-workflows`,ye=`https://github.com/OpenHands/OpenHands/blob/main/docs/SELF_HOSTING.md`,be=`https://docs.openhands.dev/overview/introduction`;function xe(e,t){return e(S.BACKEND$CONNECTION_TEST_FAILED,{host:t,interpolation:{escapeValue:!1}})}function Se(e){return m(e)}function Ce(e,t){let n=Se(t);return n?`${e}\n${n}`:e}async function we(e){if(e.kind!==`local`)return{agentServerVersion:null};let t=await new s(f({host:e.host,sessionApiKey:e.apiKey||null,timeout:5e3})).getServerInfo();return p(t),{agentServerVersion:h(t)}}function Te({backend:e,testIdRoot:t}){let{t:n}=i(`openhands`),r=A([e])[e.id],a=r?.isConnected??null,o=r?.disabled===!0,c=r?.consecutiveFailures??0,l=r?.lastError??null,{data:u}=d({queryKey:[`backend-version`,e.host,e.apiKey],queryFn:async()=>h(await new s(f({host:e.host,sessionApiKey:e.apiKey||null,timeout:5e3})).getServerInfo()),retry:!1,staleTime:6e4,enabled:e.kind===`local`&&!o}),p=U(n,e,r),m=e.kind===`cloud`?n(S.BACKEND$KIND_CLOUD):n(S.BACKEND$KIND_LOCAL);return(0,z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,z.jsxs)(`div`,{"data-testid":`${t}-status`,className:`flex items-center gap-3 text-sm`,children:[(0,z.jsx)(W,{isConnected:a}),(0,z.jsx)(`span`,{className:`text-white`,"data-testid":`${t}-status-label`,children:p}),(0,z.jsx)(`span`,{className:`text-tertiary-alt`,children:`·`}),(0,z.jsx)(`span`,{className:`text-[var(--oh-text-tertiary)]`,children:m}),u?(0,z.jsx)(`span`,{className:`text-xs text-[var(--oh-muted)]`,"data-testid":`${t}-version`,children:n(S.BACKEND$VERSION_LABEL,{version:u})}):null]}),o?(0,z.jsxs)(`div`,{"data-testid":`${t}-status-error`,className:`flex flex-col gap-1 rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm`,children:[(0,z.jsx)(`span`,{className:`font-semibold text-red-300`,children:n(S.BACKEND$HEALTH_FAILED_TITLE)}),(0,z.jsx)(`span`,{className:`text-xs text-[var(--oh-text-tertiary)]`,children:n(S.BACKEND$HEALTH_FAILED_DETAIL,{count:c})}),l?(0,z.jsx)(`span`,{"data-testid":`${t}-status-error-message`,className:`text-xs text-red-300 whitespace-pre-wrap break-words`,children:l}):null]}):null]})}function Z({initialName:e=``,initialHost:t=``,initialApiKey:n=``,onTestConnection:r,onSuccess:a,requireApiKey:o=!1,onSubmitOverride:s,fixedKind:c}){let{t:l}=i(`openhands`),[u,d]=R.useState(e),[f,p]=R.useState(t),[m,h]=R.useState(n),[g,_]=R.useState(null),[v,y]=R.useState(!1),[b,x]=R.useState(null),S=c??b??he(f),C=o||S!==`local`,w=u.trim().length>0&&Y(f)&&(!C||m.trim().length>0);return{name:u,setName:d,host:f,setHost:p,apiKey:m,setApiKey:h,connectionError:g,setConnectionError:_,isSubmitting:v,kind:S,setKind:x,canSubmit:w,handleSubmit:R.useCallback(async e=>{if(e.preventDefault(),!w||v)return;let t={name:u.trim(),host:J(f),apiKey:m.trim(),kind:S};_(null),y(!0);try{s?await s(t):a(await r(t))}catch(e){_(Ce(xe(l,t.host),e))}finally{y(!1)}},[w,v,u,f,m,S,r,a,o,s,c,l])}}function Q({mode:e,backend:t,onSubmitted:n,renderActions:r,testIdRoot:a,hostReadOnly:o,requireApiKey:s,hideConfigurationFields:c=!1,onSubmitOverride:l}){let{t:u}=i(`openhands`),{addBackend:d,updateBackend:f}=y(),p=e===`edit`&&t?t.kind:null,{name:m,setName:h,host:g,setHost:_,apiKey:v,setApiKey:b,connectionError:C,setConnectionError:w,isSubmitting:T,kind:E,handleSubmit:ee}=Z({initialName:t?.name??``,initialHost:t?.host??``,initialApiKey:t?.apiKey??``,onTestConnection:we,onSuccess:async()=>{let r={name:m.trim(),host:J(g),apiKey:v.trim(),kind:p??E};e===`edit`&&t?f(t.id,r):d(r),n()},requireApiKey:s,onSubmitOverride:l}),[D,O]=R.useState(!1),[k,A]=R.useState(!1),te=p??E,j=a??(e===`edit`?`edit-backend`:`add-backend`),M=s||te!==`local`,N=m.trim().length>0&&Y(g)&&(!M||v.trim().length>0),P=D&&!m.trim()?u(S.BACKEND$NAME_REQUIRED):void 0,ne=k?g.trim()?Y(g)?void 0:u(S.BACKEND$HOST_INVALID):u(S.BACKEND$HOST_REQUIRED):void 0;return(0,z.jsxs)(`form`,{"data-testid":`${j}-form`,onSubmit:async e=>{if(!N){O(!0),A(!0);return}await ee(e)},className:`flex flex-col gap-4`,children:[(0,z.jsxs)(`div`,{"data-testid":`${j}-configuration-fields`,className:x(`flex flex-col gap-4`,c&&`hidden`),children:[(0,z.jsx)(I,{testId:`${j}-name`,name:`${j}-name`,type:`text`,label:u(S.BACKEND$NAME_LABEL),value:m,onChange:e=>{h(e),w(null)},onBlur:()=>O(!0),placeholder:`Production`,className:`w-full`,showRequiredTag:!0,error:P}),(0,z.jsx)(I,{testId:`${j}-host`,name:`${j}-host`,type:`text`,label:u(S.BACKEND$HOST_LABEL),value:g,onChange:o?void 0:e=>{_(e),w(null)},onBlur:()=>A(!0),placeholder:X,className:`w-full`,showRequiredTag:!0,error:ne,isDisabled:o}),(0,z.jsx)(I,{testId:`${j}-api-key`,name:`${j}-api-key`,type:`password`,label:u(S.BACKEND$KEY_LABEL),value:v,onChange:e=>{b(e),w(null)},placeholder:``,className:`w-full`}),C?(0,z.jsx)(`div`,{role:`alert`,"data-testid":`${j}-error`,className:`rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm text-red-300 whitespace-pre-wrap break-words`,children:C}):null,e===`edit`&&t&&(0,z.jsx)(Te,{backend:t,testIdRoot:j})]}),r?r({canSubmit:N&&!T,isSubmitting:T,testIdRoot:j}):(0,z.jsxs)(`div`,{className:`flex justify-end gap-2 mt-2 w-full`,children:[(0,z.jsx)(F,{type:`button`,variant:`secondary`,onClick:n,testId:`${j}-cancel`,children:u(S.BUTTON$CANCEL)}),(0,z.jsx)(F,{type:`submit`,variant:`primary`,isDisabled:!N||T,testId:`${j}-submit`,children:u(S.BACKEND$SAVE)})]})]})}function Ee(){let{currentPath:e,navigate:t}=ae();return R.useCallback(()=>{/^\/automations\/[^/]+/.test(e)?t(`/automations`):/^\/conversations\/[^/]+/.test(e)&&t(`/conversations`)},[e,t])}function De({onConnected:e,testIdRoot:t=`add-backend`,initialManualBackend:n,requireManualApiKey:r=!1,manualSubmitLabel:a,manualSubmittingLabel:o,manualSubmitTestId:s,analyticsSource:c}){let{t:l}=i(`openhands`),u=b();return u?(0,z.jsx)(`div`,{"data-testid":`${t}-connection-options`,className:`flex justify-center`,children:(0,z.jsx)(`div`,{className:`w-full`,children:(0,z.jsx)($,{onConnected:e,testIdRoot:t,lockedHost:u,analyticsSource:c})})}):(0,z.jsxs)(`div`,{"data-testid":`${t}-connection-options`,className:`flex flex-col gap-6 md:flex-row`,children:[(0,z.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,z.jsx)(Oe,{onConnected:e,testIdRoot:t,initialBackend:n,requireApiKey:r,submitLabel:a??l(S.BACKEND$CONNECT),submittingLabel:o??l(S.ONBOARDING$BACKEND_STATUS_CHECKING),submitTestId:s})}),(0,z.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,z.jsx)($,{onConnected:e,testIdRoot:t,analyticsSource:c})})]})}function Oe({onConnected:e,testIdRoot:t,initialBackend:n,requireApiKey:r,submitLabel:a,submittingLabel:o,submitTestId:s,fixedKind:c,showKindSelector:l=!0}){let{t:u}=i(`openhands`),{name:d,setName:f,host:p,setHost:m,apiKey:h,setApiKey:g,connectionError:_,setConnectionError:v,isSubmitting:y,kind:b,setKind:x,canSubmit:C,handleSubmit:w}=Z({initialName:n?.name??``,initialHost:n?.host??``,initialApiKey:n?.apiKey??``,onTestConnection:we,onSuccess:t=>{e({name:d.trim(),host:J(p),apiKey:h.trim(),kind:b},`manual`,t)},requireApiKey:r,fixedKind:c});return(0,z.jsxs)(`form`,{"data-testid":`${t}-form`,onSubmit:w,className:`flex flex-col gap-4 flex-1 min-w-0`,children:[(0,z.jsx)(I,{testId:`${t}-name`,name:`${t}-name`,type:`text`,label:u(S.BACKEND$NAME_LABEL),hint:u(S.BACKEND$NAME_HELPER),value:d,onChange:e=>{f(e),v(null)},placeholder:`e.g. My Server`,className:`w-full`}),(0,z.jsx)(I,{testId:`${t}-host`,name:`${t}-host`,type:`text`,label:u(S.BACKEND$HOST_LABEL),hint:u(S.BACKEND$HOST_HELPER),value:p,onChange:e=>{m(e),v(null)},placeholder:`http://localhost:8000`,className:`w-full`}),l?(0,z.jsxs)(`div`,{className:`flex flex-col items-start gap-2.5`,children:[(0,z.jsx)(`span`,{className:`text-sm`,children:u(S.BACKEND$KIND_LABEL)}),(0,z.jsx)(L,{value:b,options:[{value:`local`,label:u(S.BACKEND$KIND_LOCAL)},{value:`cloud`,label:u(S.BACKEND$KIND_CLOUD)}],onChange:e=>x(e),ariaLabel:u(S.BACKEND$KIND_LABEL),testId:`${t}-kind`})]}):null,(0,z.jsx)(I,{testId:`${t}-api-key`,name:`${t}-api-key`,type:`password`,label:u(S.BACKEND$KEY_LABEL),value:h,onChange:e=>{g(e),v(null)},placeholder:`sk-••••••••••`,className:`w-full`}),_?(0,z.jsx)(`div`,{role:`alert`,"data-testid":`${t}-error`,className:`rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm text-red-300 whitespace-pre-wrap break-words`,children:_}):null,(0,z.jsx)(F,{type:`submit`,variant:`secondary`,isDisabled:!C||y,testId:s??`${t}-submit`,className:`w-full text-center`,children:y?o:a})]})}function $({onConnected:e,testIdRoot:t,lockedHost:n,analyticsSource:r,showBranding:a=!0}){let{t:o}=i(`openhands`),[s,c]=R.useState(!1),[l,u]=R.useState(``),d=`${t}-advanced-panel`,f=n??(l.trim()||X);return(0,z.jsxs)(`div`,{className:`flex w-full min-w-0 flex-col items-center gap-3`,children:[a?(0,z.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,z.jsx)(B,{width:56,height:56,"aria-hidden":!0}),(0,z.jsx)(`h4`,{className:ie,"data-testid":`${t}-cloud-title`,children:o(S.BACKEND$CLOUD_TITLE)})]}):null,(0,z.jsx)(q,{host:f,onSuccess:t=>{e({name:`OpenHands Cloud`,host:J(f),apiKey:t,kind:`cloud`},`cloud_login`)},testIdRoot:t,analyticsSource:r,className:`w-full items-center`,idleDescription:(0,z.jsx)(`p`,{className:`text-center text-sm leading-relaxed text-[var(--oh-muted)]`,"data-testid":`${t}-cloud-description`,children:o(S.BACKEND$CLOUD_DESCRIPTION)}),idleFooter:n?null:(0,z.jsxs)(`div`,{className:`mx-auto w-full max-w-md`,children:[(0,z.jsxs)(`button`,{type:`button`,onClick:()=>c(e=>!e),"aria-expanded":s,"aria-controls":d,"data-testid":`${t}-advanced-toggle`,className:`flex w-full cursor-pointer items-center justify-center gap-1 text-center text-xs text-[var(--oh-muted)] transition-colors hover:text-content-2`,children:[(0,z.jsx)(`span`,{children:o(S.BACKEND$ADVANCED)}),(0,z.jsx)(V,{className:x(`h-4 w-4 shrink-0 text-muted transition-transform duration-200 ease-out`,s&&`rotate-180`),"aria-hidden":!0})]}),(0,z.jsx)(`div`,{className:x(`grid transition-[grid-template-rows] duration-200 ease-out motion-reduce:transition-none`,s?`grid-rows-[1fr]`:`grid-rows-[0fr]`),children:(0,z.jsx)(`div`,{className:`overflow-hidden`,children:(0,z.jsxs)(`div`,{id:d,"data-testid":`${t}-advanced-panel`,"aria-hidden":!s,inert:s?void 0:!0,className:x(`pt-3 transition-opacity duration-200 ease-out motion-reduce:transition-none`,s?`opacity-100`:`opacity-0`),children:[(0,z.jsx)(I,{testId:`${t}-cloud-host`,name:`${t}-cloud-host`,type:`text`,label:o(S.BACKEND$HOST_LABEL),value:l,onChange:u,placeholder:X,className:`w-full`}),(0,z.jsx)(`p`,{className:`mt-1 text-xs text-[var(--oh-muted)]`,children:o(S.BACKEND$LOGIN_CLOUD_HINT)})]})})})]})})]})}function ke({value:e,selectedValue:t,title:n,description:r,icon:i,onSelect:a,panelId:o,testId:s}){let c=e===t;return(0,z.jsxs)(`button`,{id:`${s}-tab`,type:`button`,role:`tab`,"aria-selected":c,"aria-controls":o,"data-testid":s,onClick:()=>a(e),className:x(`relative flex min-h-16 w-full cursor-pointer items-center gap-3 px-3 py-3 text-left transition-colors`,`first:border-r first:border-r-[var(--oh-border)]`,`focus-visible:z-10 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-blue-300`,c?`bg-[var(--oh-surface-raised)] text-white after:absolute after:inset-x-0 after:bottom-0 after:h-0.5 after:bg-primary`:`text-[var(--oh-muted)] hover:bg-[var(--oh-surface-raised)] hover:text-white`),children:[(0,z.jsx)(`span`,{className:`flex size-8 shrink-0 items-center justify-center`,"aria-hidden":!0,children:i}),(0,z.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,z.jsx)(`span`,{className:`block truncate text-sm font-medium`,children:n}),(0,z.jsx)(`span`,{className:`mt-0.5 block text-xs leading-tight text-[var(--oh-muted)]`,children:r})]})]})}function Ae({children:e}){let t=R.useRef(null),[n,r]=R.useState();return R.useLayoutEffect(()=>{let e=t.current;if(!e)return;let n=()=>{let t=e.getBoundingClientRect().height;r(t>0?t:void 0)};if(n(),typeof ResizeObserver>`u`)return;let i=new ResizeObserver(n);return i.observe(e),()=>i.disconnect()},[]),(0,z.jsx)(`div`,{"data-testid":`add-backend-panel-height`,style:n===void 0?void 0:{height:n},className:`overflow-hidden transition-[height] duration-300 ease-in-out motion-reduce:transition-none`,children:(0,z.jsx)(`div`,{ref:t,children:e})})}function je({location:e}){let{t}=i(`openhands`),[n,r]=R.useState(!1),a=e===`remote`,o=t(a?S.BACKEND$REMOTE_SETUP_TITLE:S.BACKEND$BEFORE_CONNECT_TITLE),s=t(a?S.BACKEND$REMOTE_SETUP_DESCRIPTION:S.BACKEND$LOCAL_SETUP_DESCRIPTION),c=a?ye:ve,l=t(a?S.BACKEND$REMOTE_SETUP_DOCS:S.BACKEND$LOCAL_SETUP_DOCS),u=a?`add-backend-remote`:`add-backend-local`,d=`${u}-guidance-toggle`,f=`${u}-guidance-body`;return(0,z.jsxs)(`aside`,{"data-testid":`${u}-guidance`,className:`rounded-lg bg-[var(--oh-surface-raised)] text-sm text-[var(--oh-muted)]`,children:[(0,z.jsx)(`h4`,{className:`text-white`,children:(0,z.jsxs)(`button`,{id:d,type:`button`,onClick:()=>r(e=>!e),"aria-expanded":n,"aria-controls":f,"data-testid":d,className:x(`flex w-full cursor-pointer items-center justify-between gap-2 rounded-lg px-3 py-2 text-left font-medium`,`transition-colors hover:bg-[var(--oh-interactive-hover)]`,`focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-300`),children:[(0,z.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,z.jsx)(ee,{className:`size-4 shrink-0 text-[var(--oh-muted)]`,"aria-hidden":!0}),(0,z.jsx)(`span`,{className:`truncate`,children:o})]}),(0,z.jsx)(C,{className:x(`size-5 shrink-0 text-[var(--oh-muted)] transition-transform duration-200 ease-out`,n&&`rotate-180`),"aria-hidden":!0})]})}),(0,z.jsx)(`div`,{className:x(`grid transition-[grid-template-rows] duration-200 ease-out motion-reduce:transition-none`,n?`grid-rows-[1fr]`:`grid-rows-[0fr]`),children:(0,z.jsx)(`div`,{className:`overflow-hidden`,children:(0,z.jsxs)(`div`,{id:f,"data-testid":f,role:`region`,"aria-labelledby":d,"aria-hidden":!n,inert:n?void 0:!0,className:x(`flex flex-col gap-2 px-3 pb-3 transition-opacity duration-200 ease-out motion-reduce:transition-none`,n?`opacity-100`:`opacity-0`),children:[(0,z.jsx)(`p`,{className:`leading-5`,children:s}),a?(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`h5`,{className:`font-medium text-white`,children:t(S.BACKEND$REMOTE_CONNECTION_TITLE)}),(0,z.jsx)(`p`,{className:`mt-1 leading-5`,children:t(S.BACKEND$REMOTE_CONNECTION_DESCRIPTION)})]}):(0,z.jsx)(`code`,{className:`block break-words font-mono text-xs text-white`,children:_e}),(0,z.jsxs)(`a`,{href:c,target:`_blank`,rel:`noopener noreferrer`,"data-testid":`${u}-docs-link`,tabIndex:n?void 0:-1,className:`inline-flex w-fit items-center gap-1.5 text-primary hover:underline`,children:[(0,z.jsx)(`span`,{children:l}),(0,z.jsx)(H,{className:`size-4 shrink-0`,"aria-hidden":!0})]})]})})})]})}function Me({onConnected:e,source:t}){let{t:n}=i(`openhands`),[r,a]=R.useState(`cloud`),[o,s]=R.useState(`local`),c=`add-backend-selected-panel`,l=`add-backend-option-${r}-tab`,u=r===`cloud`;return(0,z.jsxs)(`div`,{"data-testid":`add-backend-chooser`,className:`flex flex-col`,children:[(0,z.jsxs)(`div`,{role:`tablist`,"aria-label":n(S.BACKEND$CHOOSER_TITLE),className:`grid grid-cols-2 overflow-hidden rounded-lg border border-[var(--oh-border)]`,children:[(0,z.jsx)(ke,{value:`cloud`,selectedValue:r,title:n(S.BACKEND$CLOUD_TITLE),description:n(S.BACKEND$CLOUD_OPTION_DESCRIPTION),icon:(0,z.jsx)(B,{width:32,height:32,"data-testid":`add-backend-option-cloud-logo`}),onSelect:a,panelId:c,testId:`add-backend-option-cloud`}),(0,z.jsx)(ke,{value:`agent-server`,selectedValue:r,title:n(S.BACKEND$AGENT_SERVER_TITLE),description:n(S.BACKEND$AGENT_SERVER_OPTION_DESCRIPTION),icon:(0,z.jsx)(ue,{className:`size-6`}),onSelect:a,panelId:c,testId:`add-backend-option-agent-server`})]}),(0,z.jsx)(`div`,{className:`mt-6`,children:(0,z.jsx)(Ae,{children:(0,z.jsx)(`section`,{id:c,role:`tabpanel`,"aria-labelledby":l,className:`min-w-0`,children:u?(0,z.jsx)(`div`,{"data-testid":`add-backend-cloud-panel`,className:x(`relative isolate flex min-h-[13.5rem] w-full items-center justify-center rounded-xl border border-[var(--oh-border)] px-5 py-6`,`before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-xl`,`before:bg-[radial-gradient(75%_75%_at_50%_50%,rgba(255,255,255,0.1)_0%,rgba(255,255,255,0)_70%)]`),children:(0,z.jsx)($,{onConnected:e,testIdRoot:`add-backend`,analyticsSource:t,showBranding:!1})}):(0,z.jsxs)(`div`,{"data-testid":`add-backend-agent-server-panel`,className:`mx-auto w-full max-w-xl`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,z.jsx)(`span`,{className:`h-px flex-1 bg-[var(--oh-border)]`,"aria-hidden":!0}),(0,z.jsx)(L,{value:o,options:[{value:`local`,label:n(S.BACKEND$KIND_LOCAL),icon:(0,z.jsx)(se,{"aria-hidden":!0})},{value:`remote`,label:n(S.BACKEND$KIND_REMOTE),icon:(0,z.jsx)(w,{"aria-hidden":!0})}],onChange:s,ariaLabel:n(S.BACKEND$AGENT_SERVER_LOCATION),testId:`add-backend-location`}),(0,z.jsx)(`span`,{className:`h-px flex-1 bg-[var(--oh-border)]`,"aria-hidden":!0})]}),(0,z.jsxs)(`div`,{className:`mt-4 flex flex-col gap-4`,children:[(0,z.jsx)(je,{location:o},o),(0,z.jsx)(Oe,{onConnected:e,testIdRoot:`add-backend`,requireApiKey:o===`remote`,submitLabel:n(S.BACKEND$CONNECT),submittingLabel:n(S.ONBOARDING$BACKEND_STATUS_CHECKING),fixedKind:`local`,showKindSelector:!1})]})]})})})})]})}function Ne({onClose:e,source:t}){let{addBackend:n}=y(),r=Ee(),{trackBackendAdded:i}=j(),a=b(),o=R.useCallback((a,o,s)=>{n(a),i({backendKind:a.kind,connectionMethod:o,hasApiKey:!!a.apiKey,source:t,agentServerVersion:s?.agentServerVersion}),r(),e()},[n,r,e,i,t]);return a?(0,z.jsx)($,{onConnected:o,testIdRoot:`add-backend`,lockedHost:a,analyticsSource:t}):(0,z.jsx)(Me,{onConnected:o,source:t})}function Pe({mode:e,backend:t,onClose:n,source:r=`add_backend_modal`,hideCloseButton:a=!1}){let{t:o}=i(`openhands`);if(e===`add`)return(0,z.jsx)(M,{onClose:a?void 0:n,closeOnEscape:!1,closeOnBackdropClick:!a,"aria-label":o(S.BACKEND$ADD_TITLE),children:(0,z.jsxs)(`div`,{"data-testid":a?`onboarding-modal`:`add-backend-modal`,className:x(`relative max-h-[92vh] w-[720px] overflow-y-auto rounded-xl border border-[var(--oh-border)] bg-base-secondary p-6`,ne),children:[a?null:(0,z.jsx)(oe,{onClose:n,testId:`add-backend-close`}),a?null:(0,z.jsxs)(`div`,{className:`pr-8`,children:[(0,z.jsx)(`h2`,{className:re,children:o(S.BACKEND$CHOOSER_TITLE)}),(0,z.jsxs)(`p`,{className:`mt-2 text-sm leading-6 text-[var(--oh-muted)]`,"data-testid":`add-backend-description`,children:[o(S.BACKEND$CHOOSER_DESCRIPTION),` `,(0,z.jsxs)(`a`,{href:be,target:`_blank`,rel:`noopener noreferrer`,"aria-label":o(S.BACKEND$DEPLOYMENT_OPTIONS),"data-testid":`add-backend-deployment-options-link`,className:`text-primary hover:underline`,children:[o(S.CTA$LEARN_MORE),(0,z.jsx)(H,{className:`ml-1 inline size-3.5 align-[-0.125em]`,"aria-hidden":!0})]})]})]}),(0,z.jsx)(`div`,{className:a?void 0:`mt-5`,children:(0,z.jsx)(Ne,{onClose:n,source:r})})]})});let s=`edit-backend`;return(0,z.jsx)(M,{onClose:n,closeOnEscape:!1,"aria-label":o(S.BACKEND$EDIT_TITLE),children:(0,z.jsxs)(`div`,{"data-testid":`${s}-modal`,className:x(`relative bg-base-secondary p-6 rounded-xl flex flex-col gap-4 border border-[var(--oh-border)]`,P(`md`)),children:[(0,z.jsx)(oe,{onClose:n,testId:`${s}-close`}),(0,z.jsx)(`h2`,{className:x(`pr-6`,re),children:o(S.BACKEND$EDIT_TITLE)}),(0,z.jsx)(Q,{mode:`edit`,backend:t,onSubmitted:n,testIdRoot:s})]})})}export{q as a,V as c,me as i,Q as n,W as o,Pe as r,U as s,De as t};
1
+ import{a as e,r as t}from"./rolldown-runtime-Cyuzqnbw.js";import{St as n,yt as r}from"./vendor-styling-Ck5D_A2Q.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,a as o,b as s,i as c,n as l,r as u}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kepq2zme-D87mAf6K.js";import{t as d}from"./useQuery-Bs5NFz2s.js";import{It as f,Lt as p,Q as m,St as h,W as g,r as _,w as v,z as y,zt as b}from"./active-backend-context-BZDG15C0.js";import{t as x,z as S}from"./utils-DUD5ScdA.js";import{t as C}from"./chevron-down-CgGcmtE2.js";import{i as w,n as T,r as E}from"./cloud-funnel-analytics-GlCUG0gk.js";import{t as ee}from"./info-CLoC1LRo.js";import{a as D,i as O,n as k,o as A,r as te}from"./use-onboarding-completion-Bs8PcXik.js";import{t as j}from"./use-tracking-Bhu7gk2y.js";import{t as M}from"./modal-backdrop-BSzNhM4r.js";import{n as N,r as P,t as ne}from"./modal-body-BdKfD3Hl.js";import{n as re,r as ie}from"./modal-classes-D5_b5vMi.js";import{t as F}from"./brand-button-Blxv5nww.js";import{n as ae}from"./navigation-context-CQZwH_tC.js";import{t as oe}from"./modal-close-button-objukxk_.js";import{t as I}from"./settings-input-CWUEHHvS.js";import{t as L}from"./segmented-toggle-DiVfTZuN.js";var se=a(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),R=e(n()),z=r(),B=e=>(0,z.jsxs)(`svg`,{width:1365,height:1365,viewBox:`0 -24 148 148`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,z.jsx)(`path`,{d:`M71.7542 16.863V2.97414C71.7542 1.82355 72.6872 0.890503 73.8378 0.890503C74.9884 0.890503 75.9214 1.82355 75.9214 2.97414V16.863C75.9214 18.0136 74.9884 18.9466 73.8378 18.9466C72.6872 18.9466 71.7542 18.0136 71.7542 16.863Z`,fill:`white`}),(0,z.jsx)(`path`,{d:`M82.5272 18.9329L89.4716 6.90477C90.0469 5.90832 91.3215 5.5668 92.3179 6.1421C93.3144 6.7174 93.6559 7.99197 93.0806 8.98841L86.1362 21.0165C85.5609 22.0129 84.2863 22.3545 83.2899 21.7792C82.2934 21.2039 81.9519 19.9293 82.5272 18.9329Z`,fill:`white`}),(0,z.jsx)(`path`,{d:`M65.1481 18.9329L58.2037 6.90477C57.6284 5.90832 56.3538 5.5668 55.3574 6.1421C54.3609 6.7174 54.0194 7.99197 54.5947 8.98841L61.5391 21.0165C62.1144 22.0129 63.389 22.3545 64.3854 21.7792C65.3819 21.2039 65.7234 19.9293 65.1481 18.9329Z`,fill:`white`}),(0,z.jsx)(`path`,{d:`M140.606 62.0292C140.606 58.409 141.583 47.6748 141.89 44.1323C142.097 41.7374 141.809 40.4247 141.424 39.7542C141.141 39.2626 140.699 38.915 139.634 38.8436C138.865 38.7921 138.027 39.0114 137.401 39.5761C136.814 40.1052 136.159 41.1682 136.159 43.3176L136.155 43.4388L135.198 59.758C135.164 60.3451 134.883 60.8911 134.424 61.2599C133.966 61.6284 133.374 61.7859 132.793 61.6941L122.764 60.1068L111.948 58.6703C110.949 58.5376 110.188 57.7084 110.142 56.7016L109.561 44.1323C109.535 43.621 109.51 43.1141 109.484 42.6146C109.241 37.9294 109.022 33.7805 109.022 32.4282C109.022 28.3859 108.338 26.6806 107.74 25.9634C107.263 25.3915 106.577 25.1402 105.11 25.1402C104.583 25.1402 104.212 25.2481 103.933 25.4111C103.659 25.5714 103.346 25.8587 103.049 26.4208C102.41 27.6257 101.945 29.891 102.118 33.8479C102.342 38.9804 102.692 42.8146 103.035 46.2718C103.377 49.7231 103.718 52.8561 103.908 56.4971C104.204 62.1966 104.178 66.1256 103.945 68.7924C103.828 70.124 103.656 71.1996 103.423 72.0501C103.202 72.8558 102.871 73.6757 102.296 74.2887C101.6 75.0303 100.608 75.3844 99.577 75.136C98.7592 74.9389 98.1847 74.4215 97.8706 74.0916C97.2141 73.4017 96.7501 72.5106 96.568 72.0512C95.5097 69.3812 92.2352 63.1808 87.8023 59.6811C86.5089 58.6599 85.5666 58.3652 84.9736 58.3204C84.4148 58.2783 84.0094 58.4436 83.6909 58.6967C83.34 58.9756 83.0781 59.3811 82.9479 59.7643C82.9019 59.8999 82.8823 59.9968 82.8741 60.0584C84.0759 62.0865 88.8421 69.5222 91.0896 77.069C92.7648 82.6941 96.8038 88.4259 99.8194 90.8809C102.74 93.258 107.988 94.7313 113.9 95.0218C119.756 95.3095 125.788 94.4121 130.033 92.5092C138.233 88.8334 139.903 80.7382 140.651 77.2292C141.232 74.5057 141.243 71.5987 141.087 68.9009C141.01 67.5551 140.894 66.2969 140.793 65.1373C140.695 64.0105 140.606 62.9215 140.606 62.0292ZM120.986 27.0953C120.986 25.8314 120.648 24.7049 120.089 23.9514C119.583 23.27 118.84 22.7987 117.646 22.7984C116.668 22.7982 116.011 22.9187 115.546 23.1167C115.13 23.2943 114.781 23.5699 114.463 24.0831C113.73 25.2671 113.192 27.6455 113.189 32.384L113.721 43.9088C113.91 47.5661 114.106 51.4922 114.235 54.7707L120.986 55.6666V27.0953ZM125.153 56.2652L131.172 57.218L131.992 43.267V32.5083C131.992 31.031 131.39 30.1275 130.678 29.5489C129.884 28.9039 128.957 28.6731 128.519 28.6731C127.722 28.6731 126.899 28.797 126.306 29.2179C125.849 29.5421 125.153 30.3087 125.153 32.5083V56.2652ZM136.159 35.4278C137.406 34.8069 138.74 34.6083 139.912 34.6868C142.037 34.8292 143.91 35.718 145.037 37.6779C146.06 39.4592 146.273 41.8136 146.041 44.4927C145.72 48.1949 144.772 58.6457 144.772 62.0292C144.772 62.708 144.843 63.6116 144.944 64.7758C145.042 65.907 145.165 67.2389 145.247 68.6606C145.411 71.4987 145.422 74.8383 144.727 78.0987C144.002 81.4953 142.041 91.6918 131.738 96.3108C126.731 98.5551 120.002 99.4936 113.696 99.1838C107.445 98.8767 101.128 97.3189 97.1887 94.1122C93.4809 91.0937 88.9938 84.6307 87.0962 78.2589C84.9529 71.0619 80.3109 63.9646 79.1527 61.9533C78.4706 60.7689 78.684 59.3628 79.0019 58.4258C79.3607 57.3688 80.0554 56.2631 81.0993 55.4337C82.1758 54.5784 83.6043 54.0377 85.2876 54.1647C86.9369 54.2893 88.6462 55.0393 90.3834 56.4107C94.8541 59.9401 98.1342 65.5082 99.7424 68.9231C99.759 68.7664 99.779 68.6024 99.7941 68.4298C100.003 66.0435 100.039 62.3344 99.7467 56.7132C99.5635 53.1942 99.2356 50.1809 98.8888 46.6828C98.5425 43.1904 98.184 39.2713 97.955 34.0302C97.7722 29.8481 98.2012 26.6722 99.3672 24.471C99.9716 23.3302 100.79 22.4223 101.83 21.814C102.866 21.2087 103.995 20.974 105.11 20.974C106.759 20.974 108.813 21.2062 110.448 22.7678C110.593 22.4576 110.75 22.1652 110.921 21.8899C111.676 20.6698 112.681 19.8084 113.912 19.2835C115.095 18.7791 116.378 18.6309 117.646 18.6311C120.195 18.6315 122.164 19.7567 123.434 21.4683C124.256 22.576 124.75 23.8775 124.985 25.1982C126.338 24.5876 127.691 24.5068 128.519 24.5068C129.933 24.5068 131.784 25.0791 133.305 26.3154C134.908 27.6179 136.159 29.6733 136.159 32.5083V35.4278Z`,fill:`white`}),(0,z.jsx)(`path`,{d:`M7.15661 62.0292C7.15661 58.409 6.17994 47.6748 5.87291 44.1323C5.6654 41.7374 5.95357 40.4247 6.33875 39.7542C6.62116 39.2626 7.06336 38.915 8.12834 38.8436C8.89759 38.7921 9.73544 39.0114 10.3616 39.5761C10.9484 40.1052 11.6032 41.1682 11.6032 43.3176L11.6074 43.4388L12.5644 59.758C12.5988 60.3451 12.8798 60.8911 13.338 61.2599C13.7961 61.6284 14.3887 61.7859 14.9695 61.6941L24.9988 60.1068L35.8143 58.6703C36.8135 58.5376 37.5741 57.7084 37.6208 56.7016L38.2015 44.1323C38.2279 43.621 38.2525 43.1141 38.2784 42.6146C38.5218 37.9294 38.7401 33.7805 38.7401 32.4282C38.7401 28.3859 39.4246 26.6806 40.0227 25.9634C40.4996 25.3915 41.185 25.1402 42.6523 25.1402C43.1794 25.1402 43.5505 25.2481 43.8295 25.4111C44.1038 25.5714 44.416 25.8587 44.7138 26.4208C45.3521 27.6257 45.8173 29.891 45.6444 33.8479C45.4201 38.9804 45.0703 42.8146 44.7275 46.2718C44.3853 49.7231 44.0443 52.8561 43.8548 56.4971C43.5582 62.1966 43.5847 66.1256 43.8179 68.7924C43.9344 70.124 44.1069 71.1996 44.3396 72.0501C44.5601 72.8558 44.891 73.6757 45.4663 74.2887C46.1625 75.0303 47.1546 75.3844 48.1855 75.136C49.0033 74.9389 49.5778 74.4215 49.8918 74.0916C50.5484 73.4017 51.0123 72.5106 51.1945 72.0512C52.2527 69.3812 55.5272 63.1808 59.9601 59.6811C61.2536 58.6599 62.1958 58.3652 62.7889 58.3204C63.3476 58.2783 63.753 58.4436 64.0715 58.6967C64.4225 58.9756 64.6844 59.3811 64.8146 59.7643C64.8606 59.8999 64.8801 59.9968 64.8883 60.0584C63.6866 62.0865 58.9204 69.5222 56.6729 77.069C54.9977 82.6941 50.9586 88.4259 47.9431 90.8809C45.0229 93.258 39.7747 94.7313 33.8624 95.0218C28.0068 95.3095 21.9748 94.4121 17.7297 92.5092C9.52988 88.8334 7.85961 80.7382 7.11129 77.2292C6.53054 74.5057 6.5195 71.5987 6.67496 68.9009C6.75251 67.5551 6.86809 66.2969 6.96901 65.1373C7.06707 64.0105 7.1566 62.9215 7.15661 62.0292ZM26.7768 27.0953C26.7768 25.8314 27.1147 24.7049 27.6737 23.9514C28.1792 23.27 28.9221 22.7987 30.1167 22.7984C31.0942 22.7982 31.7518 22.9187 32.2162 23.1167C32.6326 23.2943 32.9817 23.5699 33.2996 24.0831C34.0328 25.2671 34.5705 27.6455 34.5738 32.384L34.0416 43.9088C33.8524 47.5661 33.6565 51.4922 33.5273 54.7707L26.7768 55.6666V27.0953ZM22.6095 56.2652L16.5904 57.218L15.7705 43.267V32.5083C15.7705 31.031 16.3726 30.1275 17.0847 29.5489C17.8785 28.9039 18.8058 28.6731 19.2432 28.6731C20.0404 28.6731 20.8634 28.797 21.4565 29.2179C21.9131 29.5421 22.6095 30.3087 22.6095 32.5083V56.2652ZM11.6032 35.4278C10.3568 34.8069 9.02265 34.6083 7.8501 34.6868C5.72541 34.8292 3.85197 35.718 2.72584 37.6779C1.70247 39.4592 1.48924 41.8136 1.72143 44.4927C2.0423 48.1949 2.99038 58.6457 2.99038 62.0292C2.99037 62.708 2.91991 63.6116 2.81859 64.7758C2.72014 65.907 2.59699 67.2389 2.51505 68.6606C2.3515 71.4987 2.34041 74.8383 3.0357 78.0987C3.76005 81.4953 5.72154 91.6918 16.0245 96.3108C21.0311 98.5551 27.7601 99.4936 34.0669 99.1838C40.3172 98.8767 46.6346 97.3189 50.5737 94.1122C54.2816 91.0937 58.7686 84.6307 60.6662 78.2589C62.8095 71.0619 67.4515 63.9646 68.6098 61.9533C69.2919 60.7689 69.0785 59.3628 68.7605 58.4258C68.4018 57.3688 67.707 56.2631 66.6632 55.4337C65.5867 54.5784 64.1582 54.0377 62.4748 54.1647C60.8256 54.2893 59.1162 55.0393 57.379 56.4107C52.9083 59.9401 49.6283 65.5082 48.02 68.9231C48.0034 68.7664 47.9835 68.6024 47.9684 68.4298C47.7597 66.0435 47.7232 62.3344 48.0158 56.7132C48.1989 53.1942 48.5269 50.1809 48.8737 46.6828C49.22 43.1904 49.5784 39.2713 49.8075 34.0302C49.9903 29.8481 49.5612 26.6722 48.3952 24.471C47.7909 23.3302 46.9729 22.4223 45.9321 21.814C44.8964 21.2087 43.7676 20.974 42.6523 20.974C41.0038 20.974 38.9497 21.2062 37.3141 22.7678C37.1698 22.4576 37.0124 22.1652 36.8419 21.8899C36.0863 20.6698 35.0817 19.8084 33.8508 19.2835C32.6679 18.7791 31.3849 18.6309 30.1167 18.6311C27.5677 18.6315 25.5986 19.7567 24.3285 21.4683C23.5066 22.576 23.0121 23.8775 22.7771 25.1982C21.4247 24.5876 20.0718 24.5068 19.2432 24.5068C17.8298 24.5068 15.9788 25.0791 14.4573 26.3154C12.8542 27.6179 11.6032 29.6733 11.6032 32.5083V35.4278Z`,fill:`white`})]});function ce(e){return o(e,{headers:v})}function le(e,t,n){return c(e,t,{...n,headers:v})}var V=e=>(0,z.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,...e,children:(0,z.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M15.3235 10.9352L11.5016 14.2111L7.67969 10.9352L8.6152 9.84375L11.5016 12.3178L14.388 9.84375L15.3235 10.9352Z`,fill:`currentColor`})}),H=e=>(0,z.jsxs)(`svg`,{width:16,height:16,viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,z.jsx)(`path`,{d:`M13 3H8.33337V4H11.2929L7.31315 7.97978L8.02026 8.68689L12 4.70711V7.66667H13V3Z`,fill:`currentColor`}),(0,z.jsx)(`path`,{d:`M4.33333 3.66667C3.59695 3.66667 3 4.26362 3 5V11.6667C3 12.403 3.59695 13 4.33333 13H11C11.7364 13 12.3333 12.403 12.3333 11.6667V9.66667H11.3333V11.6667C11.3333 11.8508 11.1841 12 11 12H4.33333C4.14924 12 4 11.8508 4 11.6667V5C4 4.81591 4.14924 4.66667 4.33333 4.66667H6.33333V3.66667H4.33333Z`,fill:`currentColor`})]}),ue=e=>(0,z.jsx)(`svg`,{viewBox:`0 0 18 18`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,z.jsx)(`path`,{d:`M8.25 9.75C8.10166 9.75 7.95666 9.79399 7.83332 9.8764C7.70999 9.95881 7.61386 10.0759 7.55709 10.213C7.50032 10.35 7.48547 10.5008 7.51441 10.6463C7.54335 10.7918 7.61478 10.9254 7.71967 11.0303C7.82456 11.1352 7.9582 11.2066 8.10368 11.2356C8.24917 11.2645 8.39997 11.2497 8.53701 11.1929C8.67406 11.1361 8.79119 11.04 8.8736 10.9167C8.95601 10.7933 9 10.6483 9 10.5C9 10.3011 8.92098 10.1103 8.78033 9.96967C8.63968 9.82902 8.44891 9.75 8.25 9.75ZM5.25 9.75C5.10166 9.75 4.95666 9.79399 4.83332 9.8764C4.70999 9.95881 4.61386 10.0759 4.55709 10.213C4.50032 10.35 4.48547 10.5008 4.51441 10.6463C4.54335 10.7918 4.61478 10.9254 4.71967 11.0303C4.82456 11.1352 4.9582 11.2066 5.10368 11.2356C5.24917 11.2645 5.39997 11.2497 5.53701 11.1929C5.67406 11.1361 5.79119 11.04 5.8736 10.9167C5.95601 10.7933 6 10.6483 6 10.5C6 10.3011 5.92098 10.1103 5.78033 9.96967C5.63968 9.82902 5.44891 9.75 5.25 9.75ZM16.5 3C16.5 2.40326 16.2629 1.83097 15.841 1.40901C15.419 0.987053 14.8467 0.75 14.25 0.75H3.75C3.15326 0.75 2.58097 0.987053 2.15901 1.40901C1.73705 1.83097 1.5 2.40326 1.5 3V6C1.50331 6.55504 1.71166 7.08927 2.085 7.5C1.71166 7.91073 1.50331 8.44496 1.5 9V12C1.5 12.5967 1.73705 13.169 2.15901 13.591C2.58097 14.0129 3.15326 14.25 3.75 14.25H8.25V15.75H2.25C2.05109 15.75 1.86032 15.829 1.71967 15.9697C1.57902 16.1103 1.5 16.3011 1.5 16.5C1.5 16.6989 1.57902 16.8897 1.71967 17.0303C1.86032 17.171 2.05109 17.25 2.25 17.25H15.75C15.9489 17.25 16.1397 17.171 16.2803 17.0303C16.421 16.8897 16.5 16.6989 16.5 16.5C16.5 16.3011 16.421 16.1103 16.2803 15.9697C16.1397 15.829 15.9489 15.75 15.75 15.75H9.75V14.25H14.25C14.8467 14.25 15.419 14.0129 15.841 13.591C16.2629 13.169 16.5 12.5967 16.5 12V9C16.4967 8.44496 16.2883 7.91073 15.915 7.5C16.2883 7.08927 16.4967 6.55504 16.5 6V3ZM15 12C15 12.1989 14.921 12.3897 14.7803 12.5303C14.6397 12.671 14.4489 12.75 14.25 12.75H3.75C3.55109 12.75 3.36032 12.671 3.21967 12.5303C3.07902 12.3897 3 12.1989 3 12V9C3 8.80109 3.07902 8.61032 3.21967 8.46967C3.36032 8.32902 3.55109 8.25 3.75 8.25H14.25C14.4489 8.25 14.6397 8.32902 14.7803 8.46967C14.921 8.61032 15 8.80109 15 9V12ZM15 6C15 6.19891 14.921 6.38968 14.7803 6.53033C14.6397 6.67098 14.4489 6.75 14.25 6.75H3.75C3.55109 6.75 3.36032 6.67098 3.21967 6.53033C3.07902 6.38968 3 6.19891 3 6V3C3 2.80109 3.07902 2.61032 3.21967 2.46967C3.36032 2.32902 3.55109 2.25 3.75 2.25H14.25C14.4489 2.25 14.6397 2.32902 14.7803 2.46967C14.921 2.61032 15 2.80109 15 3V6ZM8.25 3.75C8.10166 3.75 7.95666 3.79399 7.83332 3.8764C7.70999 3.95881 7.61386 4.07594 7.55709 4.21299C7.50032 4.35003 7.48547 4.50083 7.51441 4.64632C7.54335 4.7918 7.61478 4.92544 7.71967 5.03033C7.82456 5.13522 7.9582 5.20665 8.10368 5.23559C8.24917 5.26453 8.39997 5.24968 8.53701 5.19291C8.67406 5.13614 8.79119 5.04001 8.8736 4.91668C8.95601 4.79334 9 4.64834 9 4.5C9 4.30109 8.92098 4.11032 8.78033 3.96967C8.63968 3.82902 8.44891 3.75 8.25 3.75ZM5.25 3.75C5.10166 3.75 4.95666 3.79399 4.83332 3.8764C4.70999 3.95881 4.61386 4.07594 4.55709 4.21299C4.50032 4.35003 4.48547 4.50083 4.51441 4.64632C4.54335 4.7918 4.61478 4.92544 4.71967 5.03033C4.82456 5.13522 4.9582 5.20665 5.10368 5.23559C5.24917 5.26453 5.39997 5.24968 5.53701 5.19291C5.67406 5.13614 5.79119 5.04001 5.8736 4.91668C5.95601 4.79334 6 4.64834 6 4.5C6 4.30109 5.92098 4.11032 5.78033 3.96967C5.63968 3.82902 5.44891 3.75 5.25 3.75Z`,fill:`currentColor`})});function U(e,t,n){let r=n?.lastError??null,i=t?.kind===`cloud`;return i&&!t?.apiKey?.trim()||D(r)?e(S.BACKEND$STATUS_DISCONNECTED_ADD_API_KEY):O(r)?e(S.BACKEND$STATUS_DISCONNECTED_CHECK_API_KEY):te(r)?e(S.BACKEND$LOGGED_OUT):n?.isConnected===!0?e(S.ONBOARDING$BACKEND_STATUS_CONNECTED):i&&n?.isConnected===!1&&(k(r)||b(r))?e(S.BACKEND$STATUS_DISCONNECTED_CHECK_CLOUD_ACCESS):n?.isConnected===!1&&p(r)?e(S.BACKEND$STATUS_DISCONNECTED_CHECK_TUNNEL):n?.isConnected===!1&&b(r)?e(S.BACKEND$STATUS_DISCONNECTED_CHECK_URL_OR_NETWORK):n?.isConnected===!1?e(S.ONBOARDING$BACKEND_STATUS_DISCONNECTED):e(S.ONBOARDING$BACKEND_STATUS_CHECKING)}function W({isConnected:e,className:t}){let n,r,i;return e===`unavailable`?(n=`bg-[var(--oh-text-tertiary)]`,r=`No Backend Available`,i=`unavailable`):e===!0?(n=`bg-[var(--oh-status-success)]`,r=`Connected`,i=`connected`):e===!1?(n=`bg-red-500`,r=`Disconnected`,i=`disconnected`):(n=`bg-[var(--oh-interactive-selected)]`,r=`Checking connection`,i=`checking`),(0,z.jsx)(`span`,{"data-testid":`backend-status-dot`,"data-status":i,"aria-label":r,title:r,role:`status`,className:x(`inline-block w-2 h-2 rounded-full shrink-0`,n,t)})}var G={status:`idle`,verificationUrl:null,userCode:null,apiKey:null,error:null,errorCode:null};function de(){let[e,t]=R.useState(G),n=R.useRef(null),r=R.useCallback((e,r)=>{n.current?.abort();let i=new AbortController;n.current=i,t({...G,status:`starting`}),(async()=>{let n;try{n=await ce(e)}catch(e){if(i.signal.aborted)return;let n=e instanceof Error?e.message:`Failed to start device flow`,r=e instanceof l?e.code:void 0;t({...G,status:`error`,error:n,errorCode:r??null});return}if(!i.signal.aborted){T(e,r),t({...G,status:`awaiting_authorization`,verificationUrl:n.verification_uri_complete,userCode:n.user_code});try{let a=await le(e,n.device_code,{interval:n.interval,signal:i.signal});if(i.signal.aborted)return;E(e,r),t({...G,status:`success`,apiKey:a.access_token})}catch(e){if(i.signal.aborted)return;if(e instanceof l&&e.code===`cancelled`){t(G);return}let n=e instanceof Error?e.message:`Authorization failed`,r=e instanceof l?e.code:void 0;t({...G,status:`error`,error:n,errorCode:r??null})}}})()},[]),i=R.useCallback(()=>{n.current?.abort(),n.current=null,t(G)},[]),a=R.useCallback(()=>{n.current?.abort(),n.current=null,t(G)},[]);return R.useEffect(()=>()=>{n.current?.abort()},[]),{...e,start:r,cancel:i,reset:a}}function K(e){try{return new URL(e).protocol===`https:`}catch{return!1}}function q({host:e,onSuccess:t,testIdRoot:n,isDisabled:r=!1,idleButtonLabel:a,idleButtonContent:o,idleDescription:s,idleFooter:c,className:l,buttonClassName:u,buttonVariant:d=`primary`,statusDisplay:f=`inline`,analyticsSource:p}){let{t:m}=i(`openhands`),h=de(),g=R.useRef(null);R.useEffect(()=>()=>{g.current?.close()},[]),R.useEffect(()=>{if(h.status===`awaiting_authorization`&&h.verificationUrl&&g.current&&!g.current.closed){if(!K(h.verificationUrl)){console.error(`Invalid verification URL protocol`);return}try{g.current.location.href=h.verificationUrl}catch{g.current=window.open(h.verificationUrl,`_blank`,`noopener,noreferrer`)}}},[h.status,h.verificationUrl]),R.useEffect(()=>{if(h.status===`success`&&h.apiKey)try{t(h.apiKey)}finally{h.reset(),g.current?.close()}},[h.status,h.apiKey,h.reset,t]);let _=()=>{let t=e.trim().replace(/\/+$/,``),n=/^https?:\/\//i.test(t)?t:`https://${t}`;try{let e=new URL(n);if(e.username||e.password)throw Error(`Invalid URL format`)}catch{return}g.current=window.open(`about:blank`,`_blank`),g.current||console.warn(`Popup blocked - user will need to use manual link`),h.start(n,p)},v=()=>{h.cancel(),g.current?.close()},y=(0,z.jsx)(fe,{status:h.status,error:h.error,verificationUrl:h.verificationUrl,testIdRoot:n,onCancel:v,onRetry:_}),b=f===`modal`&&h.status!==`idle`,C=a??m(S.BACKEND$LOGIN_WITH_OPENHANDS);return(0,z.jsxs)(`div`,{"data-testid":`${n}-device-flow`,className:x(`flex flex-col gap-3`,l),children:[h.status===`idle`?s:null,h.status===`idle`&&d===`unstyled`&&(0,z.jsx)(`button`,{type:`button`,onClick:_,"data-testid":`${n}-login-button`,className:u,disabled:r,"aria-label":o?C:void 0,children:o??C}),h.status===`idle`&&d!==`unstyled`&&(0,z.jsx)(F,{type:`button`,variant:d,onClick:_,testId:`${n}-login-button`,className:u,isDisabled:r,ariaLabel:o?C:void 0,children:o??C}),h.status===`idle`?c:null,f===`inline`?y:null,b?(0,z.jsx)(M,{onClose:v,"aria-label":m(S.BACKEND$LOGIN_WITH_OPENHANDS),closeOnBackdropClick:!1,children:(0,z.jsx)(N,{testID:`${n}-auth-modal`,width:`sm`,className:`items-stretch border border-[var(--oh-border)]`,children:y})}):null]})}function fe({status:e,error:t,verificationUrl:n,testIdRoot:r,onCancel:a,onRetry:o}){let{t:s}=i(`openhands`);if(e===`idle`||e===`success`)return null;if(e===`starting`)return(0,z.jsxs)(`div`,{className:`flex items-center justify-center gap-2`,"data-testid":`${r}-auth-starting`,role:`status`,"aria-live":`polite`,children:[(0,z.jsx)(pe,{}),(0,z.jsx)(`span`,{className:`text-sm text-[var(--oh-text-tertiary)]`,children:s(S.BACKEND$AUTH_STARTING)})]});if(e===`awaiting_authorization`){let e=n&&K(n)?n:null;return(0,z.jsxs)(`div`,{className:`flex flex-col gap-4`,"data-testid":`${r}-auth-awaiting`,role:`status`,"aria-live":`polite`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-center gap-2`,children:[(0,z.jsx)(pe,{}),(0,z.jsx)(`span`,{className:`text-sm font-medium text-white`,children:s(S.BACKEND$AUTH_AWAITING)})]}),(0,z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,z.jsx)(`p`,{className:`text-center text-sm leading-5 text-[var(--oh-text-tertiary)]`,children:e?`${s(S.BACKEND$AUTH_BROWSER_OPENED)} ${s(S.BACKEND$AUTH_OPEN_MANUALLY)}`:s(S.BACKEND$AUTH_BROWSER_OPENED)}),e?(0,z.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`max-h-16 overflow-auto break-all text-center text-xs text-blue-400 hover:underline`,children:e}):null]}),(0,z.jsx)(F,{type:`button`,variant:`secondary`,onClick:a,testId:`${r}-auth-cancel`,className:`w-full`,children:s(S.BACKEND$AUTH_CANCEL)})]})}return(0,z.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-lg border border-red-700 bg-red-900/20 p-4`,"data-testid":`${r}-auth-error`,role:`alert`,children:[(0,z.jsx)(`p`,{className:`text-sm text-red-400`,children:t}),(0,z.jsx)(F,{type:`button`,variant:`secondary`,onClick:o,testId:`${r}-auth-retry`,className:`w-full`,children:s(S.BACKEND$AUTH_RETRY)})]})}function pe(){return(0,z.jsx)(`svg`,{className:`animate-spin h-4 w-4 text-white`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,"aria-hidden":`true`,children:(0,z.jsx)(`path`,{className:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z`})})}var me=t({BackendConnectionOptions:()=>De,BackendForm:()=>Q,BackendFormModal:()=>Pe});function he(e){return u(e)?`cloud`:`local`}function ge(e){let t=e.toLowerCase().replace(/^\[|\]$/g,``);return!!(t===`localhost`||t===`::1`||t===`::`||t===`0.0.0.0`||/^127\./.test(t)||/^::ffff:127\./i.test(t)||/^10\./.test(t)||/^192\.168\./.test(t)||/^172\.(1[6-9]|2\d|3[01])\./.test(t)||/^fe[89ab][0-9a-f]:/i.test(t)||/^f[cd][0-9a-f]{2}:/i.test(t)||t.endsWith(`.local`)||!t.includes(`.`)&&!t.includes(`:`))}function J(e){let t=e.trim().replace(/\/+$/,``);if(!t)return``;if(/^https?:\/\//i.test(t))return t;let n=t.match(/^\[([^\]]+)\]/);return`${ge(n?n[1]:(t.match(/:/g)??[]).length>1?t:t.split(`:`)[0])?`http`:`https`}://${t}`}function Y(e){let t=e.trim();if(!t||/\s/.test(t))return!1;let n=J(t);if(!n)return!1;try{let e=new URL(n);return(e.protocol===`http:`||e.protocol===`https:`)&&e.hostname.length>0}catch{return!1}}var X=`https://app.all-hands.dev`,_e=`agent-canvas --backend-only --port 8001`,ve=`https://github.com/OpenHands/OpenHands/blob/main/docs/DEVELOPMENT.md#alternative-development-workflows`,ye=`https://github.com/OpenHands/OpenHands/blob/main/docs/SELF_HOSTING.md`,be=`https://docs.openhands.dev/overview/introduction`;function xe(e,t){return e(S.BACKEND$CONNECTION_TEST_FAILED,{host:t,interpolation:{escapeValue:!1}})}function Se(e){return f(e)}function Ce(e,t){let n=Se(t);return n?`${e}\n${n}`:e}async function we(e){if(e.kind!==`local`)return{agentServerVersion:null};let t=await new s(m({host:e.host,sessionApiKey:e.apiKey||null,timeout:5e3})).getServerInfo();return y(t),{agentServerVersion:g(t)}}function Te({backend:e,testIdRoot:t}){let{t:n}=i(`openhands`),r=A([e])[e.id],a=r?.isConnected??null,o=r?.disabled===!0,c=r?.consecutiveFailures??0,l=r?.lastError??null,{data:u}=d({queryKey:[`backend-version`,e.host,e.apiKey],queryFn:async()=>g(await new s(m({host:e.host,sessionApiKey:e.apiKey||null,timeout:5e3})).getServerInfo()),retry:!1,staleTime:6e4,enabled:e.kind===`local`&&!o}),f=U(n,e,r),p=e.kind===`cloud`?n(S.BACKEND$KIND_CLOUD):n(S.BACKEND$KIND_LOCAL);return(0,z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,z.jsxs)(`div`,{"data-testid":`${t}-status`,className:`flex items-center gap-3 text-sm`,children:[(0,z.jsx)(W,{isConnected:a}),(0,z.jsx)(`span`,{className:`text-white`,"data-testid":`${t}-status-label`,children:f}),(0,z.jsx)(`span`,{className:`text-tertiary-alt`,children:`·`}),(0,z.jsx)(`span`,{className:`text-[var(--oh-text-tertiary)]`,children:p}),u?(0,z.jsx)(`span`,{className:`text-xs text-[var(--oh-muted)]`,"data-testid":`${t}-version`,children:n(S.BACKEND$VERSION_LABEL,{version:u})}):null]}),o?(0,z.jsxs)(`div`,{"data-testid":`${t}-status-error`,className:`flex flex-col gap-1 rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm`,children:[(0,z.jsx)(`span`,{className:`font-semibold text-red-300`,children:n(S.BACKEND$HEALTH_FAILED_TITLE)}),(0,z.jsx)(`span`,{className:`text-xs text-[var(--oh-text-tertiary)]`,children:n(S.BACKEND$HEALTH_FAILED_DETAIL,{count:c})}),l?(0,z.jsx)(`span`,{"data-testid":`${t}-status-error-message`,className:`text-xs text-red-300 whitespace-pre-wrap break-words`,children:l}):null]}):null]})}function Z({initialName:e=``,initialHost:t=``,initialApiKey:n=``,onTestConnection:r,onSuccess:a,requireApiKey:o=!1,onSubmitOverride:s,fixedKind:c}){let{t:l}=i(`openhands`),[u,d]=R.useState(e),[f,p]=R.useState(t),[m,h]=R.useState(n),[g,_]=R.useState(null),[v,y]=R.useState(!1),[b,x]=R.useState(null),S=c??b??he(f),C=o||S!==`local`,w=u.trim().length>0&&Y(f)&&(!C||m.trim().length>0);return{name:u,setName:d,host:f,setHost:p,apiKey:m,setApiKey:h,connectionError:g,setConnectionError:_,isSubmitting:v,kind:S,setKind:x,canSubmit:w,handleSubmit:R.useCallback(async e=>{if(e.preventDefault(),!w||v)return;let t={name:u.trim(),host:J(f),apiKey:m.trim(),kind:S};_(null),y(!0);try{s?await s(t):a(await r(t))}catch(e){_(Ce(xe(l,t.host),e))}finally{y(!1)}},[w,v,u,f,m,S,r,a,o,s,c,l])}}function Q({mode:e,backend:t,onSubmitted:n,renderActions:r,testIdRoot:a,hostReadOnly:o,requireApiKey:s,hideConfigurationFields:c=!1,onSubmitOverride:l}){let{t:u}=i(`openhands`),{addBackend:d,updateBackend:f}=_(),p=e===`edit`&&t?t.kind:null,{name:m,setName:h,host:g,setHost:v,apiKey:y,setApiKey:b,connectionError:C,setConnectionError:w,isSubmitting:T,kind:E,handleSubmit:ee}=Z({initialName:t?.name??``,initialHost:t?.host??``,initialApiKey:t?.apiKey??``,onTestConnection:we,onSuccess:async()=>{let r={name:m.trim(),host:J(g),apiKey:y.trim(),kind:p??E};e===`edit`&&t?f(t.id,r):d(r),n()},requireApiKey:s,onSubmitOverride:l}),[D,O]=R.useState(!1),[k,A]=R.useState(!1),te=p??E,j=a??(e===`edit`?`edit-backend`:`add-backend`),M=s||te!==`local`,N=m.trim().length>0&&Y(g)&&(!M||y.trim().length>0),P=D&&!m.trim()?u(S.BACKEND$NAME_REQUIRED):void 0,ne=k?g.trim()?Y(g)?void 0:u(S.BACKEND$HOST_INVALID):u(S.BACKEND$HOST_REQUIRED):void 0;return(0,z.jsxs)(`form`,{"data-testid":`${j}-form`,onSubmit:async e=>{if(!N){O(!0),A(!0);return}await ee(e)},className:`flex flex-col gap-4`,children:[(0,z.jsxs)(`div`,{"data-testid":`${j}-configuration-fields`,className:x(`flex flex-col gap-4`,c&&`hidden`),children:[(0,z.jsx)(I,{testId:`${j}-name`,name:`${j}-name`,type:`text`,label:u(S.BACKEND$NAME_LABEL),value:m,onChange:e=>{h(e),w(null)},onBlur:()=>O(!0),placeholder:`Production`,className:`w-full`,showRequiredTag:!0,error:P}),(0,z.jsx)(I,{testId:`${j}-host`,name:`${j}-host`,type:`text`,label:u(S.BACKEND$HOST_LABEL),value:g,onChange:o?void 0:e=>{v(e),w(null)},onBlur:()=>A(!0),placeholder:X,className:`w-full`,showRequiredTag:!0,error:ne,isDisabled:o}),(0,z.jsx)(I,{testId:`${j}-api-key`,name:`${j}-api-key`,type:`password`,label:u(S.BACKEND$KEY_LABEL),value:y,onChange:e=>{b(e),w(null)},placeholder:``,className:`w-full`}),C?(0,z.jsx)(`div`,{role:`alert`,"data-testid":`${j}-error`,className:`rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm text-red-300 whitespace-pre-wrap break-words`,children:C}):null,e===`edit`&&t&&(0,z.jsx)(Te,{backend:t,testIdRoot:j})]}),r?r({canSubmit:N&&!T,isSubmitting:T,testIdRoot:j}):(0,z.jsxs)(`div`,{className:`flex justify-end gap-2 mt-2 w-full`,children:[(0,z.jsx)(F,{type:`button`,variant:`secondary`,onClick:n,testId:`${j}-cancel`,children:u(S.BUTTON$CANCEL)}),(0,z.jsx)(F,{type:`submit`,variant:`primary`,isDisabled:!N||T,testId:`${j}-submit`,children:u(S.BACKEND$SAVE)})]})]})}function Ee(){let{currentPath:e,navigate:t}=ae();return R.useCallback(()=>{/^\/automations\/[^/]+/.test(e)?t(`/automations`):/^\/conversations\/[^/]+/.test(e)&&t(`/conversations`)},[e,t])}function De({onConnected:e,testIdRoot:t=`add-backend`,initialManualBackend:n,requireManualApiKey:r=!1,manualSubmitLabel:a,manualSubmittingLabel:o,manualSubmitTestId:s,analyticsSource:c}){let{t:l}=i(`openhands`),u=h();return u?(0,z.jsx)(`div`,{"data-testid":`${t}-connection-options`,className:`flex justify-center`,children:(0,z.jsx)(`div`,{className:`w-full`,children:(0,z.jsx)($,{onConnected:e,testIdRoot:t,lockedHost:u,analyticsSource:c})})}):(0,z.jsxs)(`div`,{"data-testid":`${t}-connection-options`,className:`flex flex-col gap-6 md:flex-row`,children:[(0,z.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,z.jsx)(Oe,{onConnected:e,testIdRoot:t,initialBackend:n,requireApiKey:r,submitLabel:a??l(S.BACKEND$CONNECT),submittingLabel:o??l(S.ONBOARDING$BACKEND_STATUS_CHECKING),submitTestId:s})}),(0,z.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,z.jsx)($,{onConnected:e,testIdRoot:t,analyticsSource:c})})]})}function Oe({onConnected:e,testIdRoot:t,initialBackend:n,requireApiKey:r,submitLabel:a,submittingLabel:o,submitTestId:s,fixedKind:c,showKindSelector:l=!0}){let{t:u}=i(`openhands`),{name:d,setName:f,host:p,setHost:m,apiKey:h,setApiKey:g,connectionError:_,setConnectionError:v,isSubmitting:y,kind:b,setKind:x,canSubmit:C,handleSubmit:w}=Z({initialName:n?.name??``,initialHost:n?.host??``,initialApiKey:n?.apiKey??``,onTestConnection:we,onSuccess:t=>{e({name:d.trim(),host:J(p),apiKey:h.trim(),kind:b},`manual`,t)},requireApiKey:r,fixedKind:c});return(0,z.jsxs)(`form`,{"data-testid":`${t}-form`,onSubmit:w,className:`flex flex-col gap-4 flex-1 min-w-0`,children:[(0,z.jsx)(I,{testId:`${t}-name`,name:`${t}-name`,type:`text`,label:u(S.BACKEND$NAME_LABEL),hint:u(S.BACKEND$NAME_HELPER),value:d,onChange:e=>{f(e),v(null)},placeholder:`e.g. My Server`,className:`w-full`}),(0,z.jsx)(I,{testId:`${t}-host`,name:`${t}-host`,type:`text`,label:u(S.BACKEND$HOST_LABEL),hint:u(S.BACKEND$HOST_HELPER),value:p,onChange:e=>{m(e),v(null)},placeholder:`http://localhost:8000`,className:`w-full`}),l?(0,z.jsxs)(`div`,{className:`flex flex-col items-start gap-2.5`,children:[(0,z.jsx)(`span`,{className:`text-sm`,children:u(S.BACKEND$KIND_LABEL)}),(0,z.jsx)(L,{value:b,options:[{value:`local`,label:u(S.BACKEND$KIND_LOCAL)},{value:`cloud`,label:u(S.BACKEND$KIND_CLOUD)}],onChange:e=>x(e),ariaLabel:u(S.BACKEND$KIND_LABEL),testId:`${t}-kind`})]}):null,(0,z.jsx)(I,{testId:`${t}-api-key`,name:`${t}-api-key`,type:`password`,label:u(S.BACKEND$KEY_LABEL),value:h,onChange:e=>{g(e),v(null)},placeholder:`sk-••••••••••`,className:`w-full`}),_?(0,z.jsx)(`div`,{role:`alert`,"data-testid":`${t}-error`,className:`rounded-md border border-red-500/40 bg-red-500/10 p-3 text-sm text-red-300 whitespace-pre-wrap break-words`,children:_}):null,(0,z.jsx)(F,{type:`submit`,variant:`secondary`,isDisabled:!C||y,testId:s??`${t}-submit`,className:`w-full text-center`,children:y?o:a})]})}function $({onConnected:e,testIdRoot:t,lockedHost:n,analyticsSource:r,showBranding:a=!0}){let{t:o}=i(`openhands`),[s,c]=R.useState(!1),[l,u]=R.useState(``),d=`${t}-advanced-panel`,f=n??(l.trim()||X);return(0,z.jsxs)(`div`,{className:`flex w-full min-w-0 flex-col items-center gap-3`,children:[a?(0,z.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,z.jsx)(B,{width:56,height:56,"aria-hidden":!0}),(0,z.jsx)(`h4`,{className:ie,"data-testid":`${t}-cloud-title`,children:o(S.BACKEND$CLOUD_TITLE)})]}):null,(0,z.jsx)(q,{host:f,onSuccess:t=>{e({name:`OpenHands Cloud`,host:J(f),apiKey:t,kind:`cloud`},`cloud_login`)},testIdRoot:t,analyticsSource:r,className:`w-full items-center`,idleDescription:(0,z.jsx)(`p`,{className:`text-center text-sm leading-relaxed text-[var(--oh-muted)]`,"data-testid":`${t}-cloud-description`,children:o(S.BACKEND$CLOUD_DESCRIPTION)}),idleFooter:n?null:(0,z.jsxs)(`div`,{className:`mx-auto w-full max-w-md`,children:[(0,z.jsxs)(`button`,{type:`button`,onClick:()=>c(e=>!e),"aria-expanded":s,"aria-controls":d,"data-testid":`${t}-advanced-toggle`,className:`flex w-full cursor-pointer items-center justify-center gap-1 text-center text-xs text-[var(--oh-muted)] transition-colors hover:text-content-2`,children:[(0,z.jsx)(`span`,{children:o(S.BACKEND$ADVANCED)}),(0,z.jsx)(V,{className:x(`h-4 w-4 shrink-0 text-muted transition-transform duration-200 ease-out`,s&&`rotate-180`),"aria-hidden":!0})]}),(0,z.jsx)(`div`,{className:x(`grid transition-[grid-template-rows] duration-200 ease-out motion-reduce:transition-none`,s?`grid-rows-[1fr]`:`grid-rows-[0fr]`),children:(0,z.jsx)(`div`,{className:`overflow-hidden`,children:(0,z.jsxs)(`div`,{id:d,"data-testid":`${t}-advanced-panel`,"aria-hidden":!s,inert:s?void 0:!0,className:x(`pt-3 transition-opacity duration-200 ease-out motion-reduce:transition-none`,s?`opacity-100`:`opacity-0`),children:[(0,z.jsx)(I,{testId:`${t}-cloud-host`,name:`${t}-cloud-host`,type:`text`,label:o(S.BACKEND$HOST_LABEL),value:l,onChange:u,placeholder:X,className:`w-full`}),(0,z.jsx)(`p`,{className:`mt-1 text-xs text-[var(--oh-muted)]`,children:o(S.BACKEND$LOGIN_CLOUD_HINT)})]})})})]})})]})}function ke({value:e,selectedValue:t,title:n,description:r,icon:i,onSelect:a,panelId:o,testId:s}){let c=e===t;return(0,z.jsxs)(`button`,{id:`${s}-tab`,type:`button`,role:`tab`,"aria-selected":c,"aria-controls":o,"data-testid":s,onClick:()=>a(e),className:x(`relative flex min-h-16 w-full cursor-pointer items-center gap-3 px-3 py-3 text-left transition-colors`,`first:border-r first:border-r-[var(--oh-border)]`,`focus-visible:z-10 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-blue-300`,c?`bg-[var(--oh-surface-raised)] text-white after:absolute after:inset-x-0 after:bottom-0 after:h-0.5 after:bg-primary`:`text-[var(--oh-muted)] hover:bg-[var(--oh-surface-raised)] hover:text-white`),children:[(0,z.jsx)(`span`,{className:`flex size-8 shrink-0 items-center justify-center`,"aria-hidden":!0,children:i}),(0,z.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,z.jsx)(`span`,{className:`block truncate text-sm font-medium`,children:n}),(0,z.jsx)(`span`,{className:`mt-0.5 block text-xs leading-tight text-[var(--oh-muted)]`,children:r})]})]})}function Ae({children:e}){let t=R.useRef(null),[n,r]=R.useState();return R.useLayoutEffect(()=>{let e=t.current;if(!e)return;let n=()=>{let t=e.getBoundingClientRect().height;r(t>0?t:void 0)};if(n(),typeof ResizeObserver>`u`)return;let i=new ResizeObserver(n);return i.observe(e),()=>i.disconnect()},[]),(0,z.jsx)(`div`,{"data-testid":`add-backend-panel-height`,style:n===void 0?void 0:{height:n},className:`overflow-hidden transition-[height] duration-300 ease-in-out motion-reduce:transition-none`,children:(0,z.jsx)(`div`,{ref:t,children:e})})}function je({location:e}){let{t}=i(`openhands`),[n,r]=R.useState(!1),a=e===`remote`,o=t(a?S.BACKEND$REMOTE_SETUP_TITLE:S.BACKEND$BEFORE_CONNECT_TITLE),s=t(a?S.BACKEND$REMOTE_SETUP_DESCRIPTION:S.BACKEND$LOCAL_SETUP_DESCRIPTION),c=a?ye:ve,l=t(a?S.BACKEND$REMOTE_SETUP_DOCS:S.BACKEND$LOCAL_SETUP_DOCS),u=a?`add-backend-remote`:`add-backend-local`,d=`${u}-guidance-toggle`,f=`${u}-guidance-body`;return(0,z.jsxs)(`aside`,{"data-testid":`${u}-guidance`,className:`rounded-lg bg-[var(--oh-surface-raised)] text-sm text-[var(--oh-muted)]`,children:[(0,z.jsx)(`h4`,{className:`text-white`,children:(0,z.jsxs)(`button`,{id:d,type:`button`,onClick:()=>r(e=>!e),"aria-expanded":n,"aria-controls":f,"data-testid":d,className:x(`flex w-full cursor-pointer items-center justify-between gap-2 rounded-lg px-3 py-2 text-left font-medium`,`transition-colors hover:bg-[var(--oh-interactive-hover)]`,`focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-300`),children:[(0,z.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,z.jsx)(ee,{className:`size-4 shrink-0 text-[var(--oh-muted)]`,"aria-hidden":!0}),(0,z.jsx)(`span`,{className:`truncate`,children:o})]}),(0,z.jsx)(C,{className:x(`size-5 shrink-0 text-[var(--oh-muted)] transition-transform duration-200 ease-out`,n&&`rotate-180`),"aria-hidden":!0})]})}),(0,z.jsx)(`div`,{className:x(`grid transition-[grid-template-rows] duration-200 ease-out motion-reduce:transition-none`,n?`grid-rows-[1fr]`:`grid-rows-[0fr]`),children:(0,z.jsx)(`div`,{className:`overflow-hidden`,children:(0,z.jsxs)(`div`,{id:f,"data-testid":f,role:`region`,"aria-labelledby":d,"aria-hidden":!n,inert:n?void 0:!0,className:x(`flex flex-col gap-2 px-3 pb-3 transition-opacity duration-200 ease-out motion-reduce:transition-none`,n?`opacity-100`:`opacity-0`),children:[(0,z.jsx)(`p`,{className:`leading-5`,children:s}),a?(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`h5`,{className:`font-medium text-white`,children:t(S.BACKEND$REMOTE_CONNECTION_TITLE)}),(0,z.jsx)(`p`,{className:`mt-1 leading-5`,children:t(S.BACKEND$REMOTE_CONNECTION_DESCRIPTION)})]}):(0,z.jsx)(`code`,{className:`block break-words font-mono text-xs text-white`,children:_e}),(0,z.jsxs)(`a`,{href:c,target:`_blank`,rel:`noopener noreferrer`,"data-testid":`${u}-docs-link`,tabIndex:n?void 0:-1,className:`inline-flex w-fit items-center gap-1.5 text-primary hover:underline`,children:[(0,z.jsx)(`span`,{children:l}),(0,z.jsx)(H,{className:`size-4 shrink-0`,"aria-hidden":!0})]})]})})})]})}function Me({onConnected:e,source:t}){let{t:n}=i(`openhands`),[r,a]=R.useState(`cloud`),[o,s]=R.useState(`local`),c=`add-backend-selected-panel`,l=`add-backend-option-${r}-tab`,u=r===`cloud`;return(0,z.jsxs)(`div`,{"data-testid":`add-backend-chooser`,className:`flex flex-col`,children:[(0,z.jsxs)(`div`,{role:`tablist`,"aria-label":n(S.BACKEND$CHOOSER_TITLE),className:`grid grid-cols-2 overflow-hidden rounded-lg border border-[var(--oh-border)]`,children:[(0,z.jsx)(ke,{value:`cloud`,selectedValue:r,title:n(S.BACKEND$CLOUD_TITLE),description:n(S.BACKEND$CLOUD_OPTION_DESCRIPTION),icon:(0,z.jsx)(B,{width:32,height:32,"data-testid":`add-backend-option-cloud-logo`}),onSelect:a,panelId:c,testId:`add-backend-option-cloud`}),(0,z.jsx)(ke,{value:`agent-server`,selectedValue:r,title:n(S.BACKEND$AGENT_SERVER_TITLE),description:n(S.BACKEND$AGENT_SERVER_OPTION_DESCRIPTION),icon:(0,z.jsx)(ue,{className:`size-6`}),onSelect:a,panelId:c,testId:`add-backend-option-agent-server`})]}),(0,z.jsx)(`div`,{className:`mt-6`,children:(0,z.jsx)(Ae,{children:(0,z.jsx)(`section`,{id:c,role:`tabpanel`,"aria-labelledby":l,className:`min-w-0`,children:u?(0,z.jsx)(`div`,{"data-testid":`add-backend-cloud-panel`,className:x(`relative isolate flex min-h-[13.5rem] w-full items-center justify-center rounded-xl border border-[var(--oh-border)] px-5 py-6`,`before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-xl`,`before:bg-[radial-gradient(75%_75%_at_50%_50%,rgba(255,255,255,0.1)_0%,rgba(255,255,255,0)_70%)]`),children:(0,z.jsx)($,{onConnected:e,testIdRoot:`add-backend`,analyticsSource:t,showBranding:!1})}):(0,z.jsxs)(`div`,{"data-testid":`add-backend-agent-server-panel`,className:`mx-auto w-full max-w-xl`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,z.jsx)(`span`,{className:`h-px flex-1 bg-[var(--oh-border)]`,"aria-hidden":!0}),(0,z.jsx)(L,{value:o,options:[{value:`local`,label:n(S.BACKEND$KIND_LOCAL),icon:(0,z.jsx)(se,{"aria-hidden":!0})},{value:`remote`,label:n(S.BACKEND$KIND_REMOTE),icon:(0,z.jsx)(w,{"aria-hidden":!0})}],onChange:s,ariaLabel:n(S.BACKEND$AGENT_SERVER_LOCATION),testId:`add-backend-location`}),(0,z.jsx)(`span`,{className:`h-px flex-1 bg-[var(--oh-border)]`,"aria-hidden":!0})]}),(0,z.jsxs)(`div`,{className:`mt-4 flex flex-col gap-4`,children:[(0,z.jsx)(je,{location:o},o),(0,z.jsx)(Oe,{onConnected:e,testIdRoot:`add-backend`,requireApiKey:o===`remote`,submitLabel:n(S.BACKEND$CONNECT),submittingLabel:n(S.ONBOARDING$BACKEND_STATUS_CHECKING),fixedKind:`local`,showKindSelector:!1})]})]})})})})]})}function Ne({onClose:e,source:t}){let{addBackend:n}=_(),r=Ee(),{trackBackendAdded:i}=j(),a=h(),o=R.useCallback((a,o,s)=>{n(a),i({backendKind:a.kind,connectionMethod:o,hasApiKey:!!a.apiKey,source:t,agentServerVersion:s?.agentServerVersion}),r(),e()},[n,r,e,i,t]);return a?(0,z.jsx)($,{onConnected:o,testIdRoot:`add-backend`,lockedHost:a,analyticsSource:t}):(0,z.jsx)(Me,{onConnected:o,source:t})}function Pe({mode:e,backend:t,onClose:n,source:r=`add_backend_modal`,hideCloseButton:a=!1}){let{t:o}=i(`openhands`);if(e===`add`)return(0,z.jsx)(M,{onClose:a?void 0:n,closeOnEscape:!1,closeOnBackdropClick:!a,"aria-label":o(S.BACKEND$ADD_TITLE),children:(0,z.jsxs)(`div`,{"data-testid":a?`onboarding-modal`:`add-backend-modal`,className:x(`relative max-h-[92vh] w-[720px] overflow-y-auto rounded-xl border border-[var(--oh-border)] bg-base-secondary p-6`,ne),children:[a?null:(0,z.jsx)(oe,{onClose:n,testId:`add-backend-close`}),a?null:(0,z.jsxs)(`div`,{className:`pr-8`,children:[(0,z.jsx)(`h2`,{className:re,children:o(S.BACKEND$CHOOSER_TITLE)}),(0,z.jsxs)(`p`,{className:`mt-2 text-sm leading-6 text-[var(--oh-muted)]`,"data-testid":`add-backend-description`,children:[o(S.BACKEND$CHOOSER_DESCRIPTION),` `,(0,z.jsxs)(`a`,{href:be,target:`_blank`,rel:`noopener noreferrer`,"aria-label":o(S.BACKEND$DEPLOYMENT_OPTIONS),"data-testid":`add-backend-deployment-options-link`,className:`text-primary hover:underline`,children:[o(S.CTA$LEARN_MORE),(0,z.jsx)(H,{className:`ml-1 inline size-3.5 align-[-0.125em]`,"aria-hidden":!0})]})]})]}),(0,z.jsx)(`div`,{className:a?void 0:`mt-5`,children:(0,z.jsx)(Ne,{onClose:n,source:r})})]})});let s=`edit-backend`;return(0,z.jsx)(M,{onClose:n,closeOnEscape:!1,"aria-label":o(S.BACKEND$EDIT_TITLE),children:(0,z.jsxs)(`div`,{"data-testid":`${s}-modal`,className:x(`relative bg-base-secondary p-6 rounded-xl flex flex-col gap-4 border border-[var(--oh-border)]`,P(`md`)),children:[(0,z.jsx)(oe,{onClose:n,testId:`${s}-close`}),(0,z.jsx)(`h2`,{className:x(`pr-6`,re),children:o(S.BACKEND$EDIT_TITLE)}),(0,z.jsx)(Q,{mode:`edit`,backend:t,onSubmitted:n,testIdRoot:s})]})})}export{q as a,V as c,me as i,Q as n,W as o,Pe as r,U as s,De as t};
@@ -0,0 +1 @@
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{z as r}from"./utils-DUD5ScdA.js";import{t as i}from"./brand-button-Blxv5nww.js";e();var a=t(),o=e=>(0,a.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:1.5,...e,children:(0,a.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z`})});function s({onRetry:e}){let{t}=n(`openhands`);return(0,a.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-20`,children:[(0,a.jsx)(o,{className:`size-12 text-danger`}),(0,a.jsx)(`p`,{className:`mt-4 text-sm text-muted`,children:t(r.AUTOMATIONS$ERROR_TITLE)}),(0,a.jsx)(`button`,{type:`button`,onClick:e,className:`mt-4 rounded-lg border border-[var(--oh-border)] px-4 py-2 text-sm text-white hover:bg-surface-raised`,children:t(r.AUTOMATIONS$ERROR_RETRY)})]})}function c({onRetry:e}){let{t}=n(`openhands`);return(0,a.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-20 px-4`,children:[(0,a.jsx)(o,{className:`size-12 text-[var(--oh-warning)]`}),(0,a.jsx)(`h2`,{className:`mt-4 text-lg font-medium text-content`,children:t(r.AUTOMATIONS$BACKEND_UNAVAILABLE_TITLE)}),(0,a.jsx)(`p`,{className:`mt-2 text-sm text-muted text-center max-w-md`,children:t(r.AUTOMATIONS$BACKEND_UNAVAILABLE_MESSAGE)}),(0,a.jsx)(i,{type:`button`,variant:`secondary`,className:`mt-6`,onClick:e,children:t(r.AUTOMATIONS$BACKEND_UNAVAILABLE_RETRY)})]})}export{s as n,o as r,c as t};
@@ -1 +1 @@
1
- import{yt as e}from"./vendor-styling-Ck5D_A2Q.js";import{t}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-D5DWZVc7.js";import{n}from"./active-backend-context-IqOjobNK.js";import{z as r}from"./utils-zxEjKE70.js";import{n as i,t as a}from"./use-cloud-current-user-id-Co2eJk2A.js";import{r as o}from"./typography-NOKSk9_R.js";var s=e();function c(){let{t:e}=t(),o=n(),s=i(),c=a();if(o.backend.kind!==`cloud`||!o.orgId)return o.backend.name;let l=s[o.backend.id]?.orgs.find(e=>e.id===o.orgId);if(!l)return o.backend.name;let u=c[o.backend.id]?.userId??null,d=u&&l.id===u?e(r.BACKEND$PERSONAL_WORKSPACE):l.name;return`${o.backend.name} – ${d}`}function l(){let{t:e}=t(),i=n(),a=c();return(0,s.jsx)(`div`,{"data-testid":`backend-synced-settings-badge`,className:`flex items-center`,children:(0,s.jsx)(o.Text,{className:`text-[11px] font-medium text-[var(--oh-text-dim)] leading-5`,children:e(r.SETTINGS$BACKEND_SYNCED_BADGE,{name:a,host:i.backend.host,interpolation:{escapeValue:!1}})})})}export{l as t};
1
+ import{yt as e}from"./vendor-styling-Ck5D_A2Q.js";import{t}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iw7io29p-Dz8NQve5.js";import{n}from"./active-backend-context-BZDG15C0.js";import{z as r}from"./utils-DUD5ScdA.js";import{n as i,t as a}from"./use-cloud-current-user-id-DvUVqCle.js";import{r as o}from"./typography-DB5HoCk0.js";var s=e();function c(){let{t:e}=t(),o=n(),s=i(),c=a();if(o.backend.kind!==`cloud`||!o.orgId)return o.backend.name;let l=s[o.backend.id]?.orgs.find(e=>e.id===o.orgId);if(!l)return o.backend.name;let u=c[o.backend.id]?.userId??null,d=u&&l.id===u?e(r.BACKEND$PERSONAL_WORKSPACE):l.name;return`${o.backend.name} – ${d}`}function l(){let{t:e}=t(),i=n(),a=c();return(0,s.jsx)(`div`,{"data-testid":`backend-synced-settings-badge`,className:`flex items-center`,children:(0,s.jsx)(o.Text,{className:`text-[11px] font-medium text-[var(--oh-text-dim)] leading-5`,children:e(r.SETTINGS$BACKEND_SYNCED_BADGE,{name:a,host:i.backend.host,interpolation:{escapeValue:!1}})})})}export{l as t};
@@ -1 +1 @@
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~gxu4j2ea-D5DWZVc7.js";import{t as i,z as a}from"./utils-zxEjKE70.js";import{t as o}from"./modal-backdrop-BSzNhM4r.js";import{r as s,t as c}from"./modal-body-gIe21fDv.js";import{r as l}from"./base-modal-Fnh6Uln9.js";import{t as u}from"./settings-input-Cz62hWVW.js";import{a as d}from"./use-can-manage-org-profiles-Dxzq2AEd.js";var f=e(t(),1),p=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;function m(e,{isRequired:t=!1}={}){return e===``?!t:p.test(e)}function h(e){let t=e.split(`/`),n=(t[t.length-1]||e).replace(/[^A-Za-z0-9._-]/g,`-`).replace(/-+/g,`-`).replace(/^-+|-+$/g,``);return n&&!/^[A-Za-z0-9]/.test(n)&&(n=`profile-${n}`),n.length>64&&(n=n.substring(0,64).replace(/-+$/,``)),n||`default-profile`}var g=n(),_=(0,f.forwardRef)(function({testId:e,ruleTestId:t,value:n,onChange:o,onKeyDown:s,placeholder:c,isDisabled:l,isOptional:d,isRequired:p=!1},h){let{t:_}=r(`openhands`),v=m(n,{isRequired:p}),y=d?`${_(a.SETTINGS$PROFILE_NAME_LABEL)} (${_(a.COMMON$OPTIONAL)})`:_(a.SETTINGS$PROFILE_NAME_LABEL),b=f.useId(),x=t??`${b}-rule`;return(0,g.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,g.jsx)(u,{ref:h,testId:e,label:y,type:`text`,className:`w-full`,value:n,placeholder:c??_(a.SETTINGS$PROFILE_NAME_PLACEHOLDER),onChange:o,onKeyDown:s,isDisabled:l,ariaDescribedBy:x,ariaInvalid:!v}),(0,g.jsx)(`p`,{id:x,"data-testid":t,className:i(`text-xs`,v?`text-[var(--oh-muted)]`:`text-red-400`),children:_(a.SETTINGS$PROFILE_NAME_RULE)})]})});function v({isOpen:e,title:t,width:n=`md`,children:r,footer:a,onClose:u,initialFocusRef:d}){let p=(0,f.useRef)(null);return(0,f.useEffect)(()=>{if(!e)return;let t=d?.current??p.current;if(t){let e=setTimeout(()=>{t.focus()},0);return()=>clearTimeout(e)}},[e,d]),(0,f.useEffect)(()=>{if(!e||!p.current)return;let t=p.current,n=e=>{if(e.key!==`Tab`)return;let n=t.querySelectorAll(`button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`),r=n[0],i=n[n.length-1];e.shiftKey&&document.activeElement===r?(e.preventDefault(),i?.focus()):!e.shiftKey&&document.activeElement===i&&(e.preventDefault(),r?.focus())};return document.addEventListener(`keydown`,n),()=>document.removeEventListener(`keydown`,n)},[e]),e?(0,g.jsx)(o,{onClose:u,children:(0,g.jsxs)(`div`,{ref:p,tabIndex:-1,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`modal-title`,className:i(`bg-base-secondary p-6 rounded-xl flex flex-col gap-4 border border-[var(--oh-border)]`,s(n),c),children:[(0,g.jsx)(l,{id:`modal-title`,title:t}),r,(0,g.jsx)(`div`,{className:`w-full flex justify-end gap-2 mt-2`,children:a})]})}):null}function y({index:e,icon:t,label:n,onClick:r,onKeyDown:a,menuItemsRef:o,disabled:s,testId:c}){return(0,g.jsx)(`button`,{ref:t=>{o.current[e]=t},type:`button`,onClick:r,onKeyDown:t=>a(t,e),disabled:s,className:i(`group w-full cursor-pointer rounded px-2 py-2 text-start text-nowrap text-sm font-normal`,`text-[var(--oh-foreground)] hover:bg-[var(--oh-interactive-hover)]`,`disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent`),role:`menuitem`,"data-testid":c,children:(0,g.jsx)(d,{icon:t,text:n})})}function b({children:e,className:t,...n}){return(0,g.jsx)(`span`,{className:i(`text-sm leading-4 text-black font-semibold tracking-tighter bg-primary p-1 rounded-full`,t),...n,children:e})}export{h as a,_ as i,y as n,m as o,v as r,b as t};
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{t as o}from"./modal-backdrop-BSzNhM4r.js";import{r as s,t as c}from"./modal-body-BdKfD3Hl.js";import{r as l}from"./base-modal-BbjycA8X.js";import{t as u}from"./settings-input-CWUEHHvS.js";import{a as d}from"./use-can-manage-org-profiles-Dz_8Eqkv.js";var f=e(t(),1),p=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;function m(e,{isRequired:t=!1}={}){return e===``?!t:p.test(e)}function h(e){let t=e.split(`/`),n=(t[t.length-1]||e).replace(/[^A-Za-z0-9._-]/g,`-`).replace(/-+/g,`-`).replace(/^-+|-+$/g,``);return n&&!/^[A-Za-z0-9]/.test(n)&&(n=`profile-${n}`),n.length>64&&(n=n.substring(0,64).replace(/-+$/,``)),n||`default-profile`}var g=n(),_=(0,f.forwardRef)(function({testId:e,ruleTestId:t,value:n,onChange:o,onKeyDown:s,placeholder:c,isDisabled:l,isOptional:d,isRequired:p=!1},h){let{t:_}=r(`openhands`),v=m(n,{isRequired:p}),y=d?`${_(a.SETTINGS$PROFILE_NAME_LABEL)} (${_(a.COMMON$OPTIONAL)})`:_(a.SETTINGS$PROFILE_NAME_LABEL),b=f.useId(),x=t??`${b}-rule`;return(0,g.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,g.jsx)(u,{ref:h,testId:e,label:y,type:`text`,className:`w-full`,value:n,placeholder:c??_(a.SETTINGS$PROFILE_NAME_PLACEHOLDER),onChange:o,onKeyDown:s,isDisabled:l,ariaDescribedBy:x,ariaInvalid:!v}),(0,g.jsx)(`p`,{id:x,"data-testid":t,className:i(`text-xs`,v?`text-[var(--oh-muted)]`:`text-red-400`),children:_(a.SETTINGS$PROFILE_NAME_RULE)})]})});function v({isOpen:e,title:t,width:n=`md`,children:r,footer:a,onClose:u,initialFocusRef:d}){let p=(0,f.useRef)(null);return(0,f.useEffect)(()=>{if(!e)return;let t=d?.current??p.current;if(t){let e=setTimeout(()=>{t.focus()},0);return()=>clearTimeout(e)}},[e,d]),(0,f.useEffect)(()=>{if(!e||!p.current)return;let t=p.current,n=e=>{if(e.key!==`Tab`)return;let n=t.querySelectorAll(`button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`),r=n[0],i=n[n.length-1];e.shiftKey&&document.activeElement===r?(e.preventDefault(),i?.focus()):!e.shiftKey&&document.activeElement===i&&(e.preventDefault(),r?.focus())};return document.addEventListener(`keydown`,n),()=>document.removeEventListener(`keydown`,n)},[e]),e?(0,g.jsx)(o,{onClose:u,children:(0,g.jsxs)(`div`,{ref:p,tabIndex:-1,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`modal-title`,className:i(`bg-base-secondary p-6 rounded-xl flex flex-col gap-4 border border-[var(--oh-border)]`,s(n),c),children:[(0,g.jsx)(l,{id:`modal-title`,title:t}),r,(0,g.jsx)(`div`,{className:`w-full flex justify-end gap-2 mt-2`,children:a})]})}):null}function y({index:e,icon:t,label:n,onClick:r,onKeyDown:a,menuItemsRef:o,disabled:s,testId:c}){return(0,g.jsx)(`button`,{ref:t=>{o.current[e]=t},type:`button`,onClick:r,onKeyDown:t=>a(t,e),disabled:s,className:i(`group w-full cursor-pointer rounded px-2 py-2 text-start text-nowrap text-sm font-normal`,`text-[var(--oh-foreground)] hover:bg-[var(--oh-interactive-hover)]`,`disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent`),role:`menuitem`,"data-testid":c,children:(0,g.jsx)(d,{icon:t,text:n})})}function b({children:e,className:t,...n}){return(0,g.jsx)(`span`,{className:i(`text-sm leading-4 text-black font-semibold tracking-tighter bg-primary p-1 rounded-full`,t),...n,children:e})}export{h as a,_ as i,y as n,m as o,v as r,b as t};
@@ -1 +1 @@
1
- import"./rolldown-runtime-Cyuzqnbw.js";import{St as e,vt as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{t as r}from"./utils-zxEjKE70.js";import{n as i}from"./modal-body-gIe21fDv.js";import{t as a}from"./modal-classes-D66dlgZ7.js";e();var o=n();function s({testId:e,variant:n=`default`,onClick:r,text:i,className:a,icon:s,type:c=`button`,disabled:l,intent:u}){return(0,o.jsxs)(`button`,{"data-testid":e,type:c===`submit`?`submit`:`button`,disabled:l,onClick:r,className:t(n==="default"&&`text-sm font-normal py-[10px] rounded-sm`,n===`text-like`&&`text-xs leading-4 font-normal`,s&&`flex items-center justify-center gap-2`,l&&`opacity-50 cursor-not-allowed`,a),name:u&&`intent`,value:u,children:[s,i]})}function c({title:e,id:t,className:n}){return(0,o.jsx)(`span`,{id:t,className:r(a,n),children:e})}function l({description:e,children:t}){return(0,o.jsx)(`span`,{className:`text-sm text-modal-muted`,children:t||e})}function u({testId:e,title:t,description:n,buttons:r}){return(0,o.jsxs)(i,{testID:e,children:[(0,o.jsxs)(`div`,{className:`flex flex-col gap-2 self-start`,children:[(0,o.jsx)(c,{title:t}),(0,o.jsx)(l,{description:n})]}),(0,o.jsx)(`div`,{className:`flex flex-col gap-2 w-full`,children:r.map((e,t)=>(0,o.jsx)(s,{onClick:e.onClick,text:e.text,className:e.className},t))})]})}export{s as i,l as n,c as r,u as t};
1
+ import"./rolldown-runtime-Cyuzqnbw.js";import{St as e,vt as t,yt as n}from"./vendor-styling-Ck5D_A2Q.js";import{t as r}from"./utils-DUD5ScdA.js";import{n as i}from"./modal-body-BdKfD3Hl.js";import{t as a}from"./modal-classes-D5_b5vMi.js";e();var o=n();function s({testId:e,variant:n=`default`,onClick:r,text:i,className:a,icon:s,type:c=`button`,disabled:l,intent:u}){return(0,o.jsxs)(`button`,{"data-testid":e,type:c===`submit`?`submit`:`button`,disabled:l,onClick:r,className:t(n==="default"&&`text-sm font-normal py-[10px] rounded-sm`,n===`text-like`&&`text-xs leading-4 font-normal`,s&&`flex items-center justify-center gap-2`,l&&`opacity-50 cursor-not-allowed`,a),name:u&&`intent`,value:u,children:[s,i]})}function c({title:e,id:t,className:n}){return(0,o.jsx)(`span`,{id:t,className:r(a,n),children:e})}function l({description:e,children:t}){return(0,o.jsx)(`span`,{className:`text-sm text-modal-muted`,children:t||e})}function u({testId:e,title:t,description:n,buttons:r}){return(0,o.jsxs)(i,{testID:e,children:[(0,o.jsxs)(`div`,{className:`flex flex-col gap-2 self-start`,children:[(0,o.jsx)(c,{title:t}),(0,o.jsx)(l,{description:n})]}),(0,o.jsx)(`div`,{className:`flex flex-col gap-2 w-full`,children:r.map((e,t)=>(0,o.jsx)(s,{onClick:e.onClick,text:e.text,className:e.className},t))})]})}export{s as i,l as n,c as r,u as t};
@@ -1 +1 @@
1
- import{D as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-B8i84bh4.js";var t=e(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]);export{t};
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(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]);export{t};
@@ -1 +1 @@
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"./utils-zxEjKE70.js";import{a as i}from"./form-control-classes-7yFSQJq_.js";var a=e(t(),1),o=n(),s=(0,a.forwardRef)(function({testId:e,name:t,children:n,variant:a,type:s,isDisabled:c,className:l,onClick:u,startContent:d,ariaLabel:f,"aria-busy":p},m){return(0,o.jsxs)(`button`,{ref:m,name:t,"data-testid":e,disabled:c,type:s,onClick:u,"aria-label":f,"aria-busy":p,className:r(i,a===`primary`&&`bg-primary text-[var(--oh-color-base)] hover:opacity-80 disabled:bg-[var(--oh-interactive-hover)] disabled:text-[var(--oh-muted)] disabled:opacity-100`,a===`secondary`&&`border border-[var(--oh-border)] bg-base-secondary text-white hover:bg-surface-raised`,a===`tertiary`&&`bg-[var(--oh-interactive-hover)] text-white hover:opacity-80`,a===`danger`&&`bg-red-600 text-white hover:bg-red-700`,a===`ghost-danger`&&`h-auto min-h-0 bg-transparent px-0 text-red-600 underline hover:text-red-700 hover:no-underline font-normal`,d&&`flex items-center justify-center gap-2`,l),children:[d,n]})});export{s as t};
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"./utils-DUD5ScdA.js";import{a as i}from"./form-control-classes-CGXBLcn1.js";var a=e(t(),1),o=n(),s=(0,a.forwardRef)(function({testId:e,name:t,children:n,variant:a,type:s,isDisabled:c,className:l,onClick:u,startContent:d,ariaLabel:f,"aria-busy":p},m){return(0,o.jsxs)(`button`,{ref:m,name:t,"data-testid":e,disabled:c,type:s,onClick:u,"aria-label":f,"aria-busy":p,className:r(i,a===`primary`&&`bg-primary text-[var(--oh-color-base)] hover:opacity-80 disabled:bg-[var(--oh-interactive-hover)] disabled:text-[var(--oh-muted)] disabled:opacity-100`,a===`secondary`&&`border border-[var(--oh-border)] bg-base-secondary text-white hover:bg-surface-raised`,a===`tertiary`&&`bg-[var(--oh-interactive-hover)] text-white hover:opacity-80`,a===`danger`&&`bg-red-600 text-white hover:bg-red-700`,a===`ghost-danger`&&`h-auto min-h-0 bg-transparent px-0 text-red-600 underline hover:text-red-700 hover:no-underline font-normal`,d&&`flex items-center justify-center gap-2`,l),children:[d,n]})});export{s as t};