@openhands/agent-canvas 1.3.0 → 1.5.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 (674) hide show
  1. package/README.md +11 -12
  2. package/README.windows.md +4 -2
  3. package/build/assets/{Trans-DY6toRDu.js → Trans-DqF_OEZB.js} +1 -1
  4. package/build/assets/{acp-providers-Djl6vNn-.js → acp-providers-BQwoUBpe.js} +1 -1
  5. package/build/assets/active-backend-context-BCXRv5pm.js +1 -0
  6. package/build/assets/{add-backend-modal-DljoP9lc.js → add-backend-modal-BKHzq5no.js} +1 -1
  7. package/build/assets/{agent-profiles-settings-BJMmTZgv.js → agent-profiles-settings-CEp5CIz8.js} +1 -1
  8. package/build/assets/agent-server-compatibility-D6DSanlx.js +1 -0
  9. package/build/assets/agent-server-conversation-service.api-cylugfDz.js +41 -0
  10. package/build/assets/{agent-settings-lUknCeaF.js → agent-settings-C-tann3x.js} +2 -2
  11. package/build/assets/agent-settings-DGUKNSnU.js +1 -0
  12. package/build/assets/{alert-banner-Bpf2NQJq.js → alert-banner-Dd4woGbm.js} +1 -1
  13. package/build/assets/api-key-entry-screen-Bll_CkuQ.js +1 -0
  14. package/build/assets/app-settings-BpViWwpC.js +1 -0
  15. package/build/assets/automation-detail-Z9dN2f5l.js +2 -0
  16. package/build/assets/automation-export-D5uL0Tf8.js +2 -0
  17. package/build/assets/automations-list-BMOWcqzZ.js +1 -0
  18. package/build/assets/{back-nav-button-CUS2mi-U.js → back-nav-button-ZUDTMOTB.js} +1 -1
  19. package/build/assets/backend-form-modal-DhBT8P4g.js +1 -0
  20. package/build/assets/{backend-synced-settings-badge-CanzmG12.js → backend-synced-settings-badge-Db_REKVw.js} +1 -1
  21. package/build/assets/{base-modal-BuF2f0YL.js → base-modal-Cb0C6m0Q.js} +1 -1
  22. package/build/assets/{bot-D7eUAuSB.js → bot-C-EA6685.js} +1 -1
  23. package/build/assets/{brand-button-vMVuyDXu.js → brand-button-2Tp3aXk1.js} +1 -1
  24. package/build/assets/{browser-BifzWIBd.js → browser-QYLVr1kS.js} +2 -2
  25. package/build/assets/browser-store-BGXOGo-R.js +1 -0
  26. package/build/assets/{browser-tab-CkkqJnqw.js → browser-tab-BTTP1OE2.js} +1 -1
  27. package/build/assets/canvas-ui-BhxjoA1f.js +1 -0
  28. package/build/assets/{chat-send-button-B_jc5z5C.js → chat-send-button-BZHG2hAW.js} +1 -1
  29. package/build/assets/check-TbOEtHKj.js +1 -0
  30. package/build/assets/{chevron-down-CI8A6tet.js → chevron-down-D7IvFMBM.js} +1 -1
  31. package/build/assets/{circle-plus-check-toggle-C5YxjxvI.js → circle-plus-check-toggle-QQJKUnF6.js} +1 -1
  32. package/build/assets/client-source-Biqarhgr.js +1 -0
  33. package/build/assets/cloud-funnel-analytics-D-27T5Ao.js +1 -0
  34. package/build/assets/{combobox-caret-DoObzqf4.js → combobox-caret-A5jMVHgE.js} +1 -1
  35. package/build/assets/{command-menu-D-JV3Wqm.js → command-menu-BMVEme4H.js} +1 -1
  36. package/build/assets/{command-store-D8J5LMW1.js → command-store-jrWX_CcW.js} +1 -1
  37. package/build/assets/condenser-settings-CIa6eyB4.js +1 -0
  38. package/build/assets/{confirmation-modal-BGLu6XJN.js → confirmation-modal-4n_944zq.js} +1 -1
  39. package/build/assets/{context-menu-list-item-BD5_EaKN.js → context-menu-list-item-DvfFic5I.js} +1 -1
  40. package/build/assets/conversation-CHnEXGRM.js +1 -0
  41. package/build/assets/conversation-D4o4dG2t.js +89 -0
  42. package/build/assets/conversation-panel-11FjLCId.js +1 -0
  43. package/build/assets/conversation-service.api-0JG_fF9d.js +1 -0
  44. package/build/assets/conversation-state-store-JiUQp02U.js +1 -0
  45. package/build/assets/{conversation-store-LptbOvKa.js → conversation-store-BCSpLuEf.js} +1 -1
  46. package/build/assets/{conversation-tab-empty-state-B2dDYEwf.js → conversation-tab-empty-state-BUhKVwoi.js} +1 -1
  47. package/build/assets/{copy-3JCw_XFB.js → copy-D1YGjP-C.js} +1 -1
  48. package/build/assets/{copy-to-clipboard-button-CaR52OnA.js → copy-to-clipboard-button-Dp4Q_hXi.js} +1 -1
  49. package/build/assets/declaration-BGsHjPEW.js +1 -0
  50. package/build/assets/{device-verify-BsznkV-a.js → device-verify-CM086oKs.js} +1 -1
  51. package/build/assets/{dropdown-classes-DJSXeLqc.js → dropdown-classes-DZq0BQjb.js} +1 -1
  52. package/build/assets/{ellipsis-button-C5Z-tPFp.js → ellipsis-button-TPJdyxnK.js} +1 -1
  53. package/build/assets/{entry.client-JixNvFrr.js → entry.client-DypYHsYm.js} +2 -2
  54. package/build/assets/{enum-filter-dropdown-DXbVwiNZ.js → enum-filter-dropdown-CW_mBg0e.js} +1 -1
  55. package/build/assets/{environment-switch-overlay-DZQfRGTx.js → environment-switch-overlay-6laJch-9.js} +1 -1
  56. package/build/assets/{extensions-hub-DfvgqzTc.js → extensions-hub-BJFbFfKS.js} +1 -1
  57. package/build/assets/{extensions-navigation-D9i0DL62.js → extensions-navigation-DqSl7CJw.js} +1 -1
  58. package/build/assets/{external-link-D2zJjE9G.js → external-link-lhdITPqq.js} +1 -1
  59. package/build/assets/files-tab-c316dKAq.js +1 -0
  60. package/build/assets/{files-tab-store-DJsPxYdg.js → files-tab-store-tfCav6bB.js} +1 -1
  61. package/build/assets/{form-control-classes-ChpNBe9n.js → form-control-classes-CvUaw8_L.js} +1 -1
  62. package/build/assets/format-time-delta-DhDbkD7V.js +1 -0
  63. package/build/assets/git-provider-icon-DUb2pEos.js +1 -0
  64. package/build/assets/home-BQ-DC06B.js +1 -0
  65. package/build/assets/home-D7ds4Jyw.js +1 -0
  66. package/build/assets/index-home-BRFDWs_4.js +1 -0
  67. package/build/assets/install-server-modal-CvHvzZj3.js +1 -0
  68. package/build/assets/{launch-BgIlZLSX.js → launch-A47TK2Me.js} +1 -1
  69. package/build/assets/lesson-plan-DSf95kQ2.js +4 -0
  70. package/build/assets/{list-todo-BfH6yYUK.js → list-todo-CAtvkzcy.js} +1 -1
  71. package/build/assets/llm-not-configured-banner-B7DR8SPs.js +27 -0
  72. package/build/assets/llm-settings-Ch4ZbW3c.js +1 -0
  73. package/build/assets/llm-settings-Cvi7q4ox.js +1 -0
  74. package/build/assets/llm-subscription-service-Cz1yBBvE.js +1 -0
  75. package/build/assets/loader-circle-CsAsfLIs.js +1 -0
  76. package/build/assets/{loading-spinner-BLdswi6q.js → loading-spinner-Txxx1I1p.js} +1 -1
  77. package/build/assets/manage-backends-modal-DAVhNUCe.js +1 -0
  78. package/build/assets/manifest-958c741a.js +1 -0
  79. package/build/assets/{markdown-renderer-DMT7Zkpd.js → markdown-renderer-B6cJJ_MN.js} +1 -1
  80. package/build/assets/{mcp-CHkklDMv.js → mcp-BwssgMpg.js} +2 -2
  81. package/build/assets/{messages-B3RugH7P.js → messages-D8MeG2ZQ.js} +26 -26
  82. package/build/assets/{modal-body-DouOE5KH.js → modal-body-CDZdZ-eT.js} +1 -1
  83. package/build/assets/{modal-classes-Cf-4tbHz.js → modal-classes-B4oit_4c.js} +1 -1
  84. package/build/assets/{modal-close-button-B6CfxxJj.js → modal-close-button-DQElFMPo.js} +1 -1
  85. package/build/assets/model-selector-BxTbbKub.js +1 -0
  86. package/build/assets/{navigation-link-D8hfwvxI.js → navigation-link-imH6S7h2.js} +1 -1
  87. package/build/assets/onboarding-CyicadGt.js +1 -0
  88. package/build/assets/onboarding-modal-DQwihcTz.js +1 -0
  89. package/build/assets/option-service.api-DAkg_F7p.js +1 -0
  90. package/build/assets/organization-service.api-QknzKDh3.js +1 -0
  91. package/build/assets/package-Dk_VtWJ4.js +1 -0
  92. package/build/assets/path-utils-BECGet7G.js +1 -0
  93. package/build/assets/{pencil-Dj2XjKmI.js → pencil-CWhApFIT.js} +1 -1
  94. package/build/assets/{plan-components-CcCBmCzW.js → plan-components-CgPHWz3E.js} +1 -1
  95. package/build/assets/{planner-tab-CCqdXxkL.js → planner-tab-DPKHmMAX.js} +1 -1
  96. package/build/assets/plugins-management-service-DuTTxquo.js +1 -0
  97. package/build/assets/profiles-service.api-D6jvZOWu.js +1 -0
  98. package/build/assets/providers-B8pxQK8x.js +1 -0
  99. package/build/assets/proxy-CuhhyjdX.js +1 -0
  100. package/build/assets/{recommended-automations-launcher-CVEF_1pc.js → recommended-automations-launcher-DA6DWS7V.js} +1 -1
  101. package/build/assets/{refresh-cw-DM82EIyx.js → refresh-cw-B9B7-vsy.js} +1 -1
  102. package/build/assets/root-BhP6bTBB.js +2 -0
  103. package/build/assets/root-CYWeTrWE.css +1 -0
  104. package/build/assets/root-layout-oBaHHW4s.js +2 -0
  105. package/build/assets/{runtime-waiting-state-BsXLElvN.js → runtime-waiting-state-DeD9G7yJ.js} +1 -1
  106. package/build/assets/schema-field-BOLdL_U7.js +1 -0
  107. package/build/assets/sdk-section-page-ZIltERxf.js +1 -0
  108. package/build/assets/{sdk-settings-schema-Cv7M9eSe.js → sdk-settings-schema-Ba_Pa9uf.js} +1 -1
  109. package/build/assets/search-dIQ09UY2.js +1 -0
  110. package/build/assets/secrets-service-50DElFny.js +1 -0
  111. package/build/assets/{secrets-settings-DxTx9HgU.js → secrets-settings-Digl7JLe.js} +1 -1
  112. package/build/assets/{segmented-toggle-DyQqPhoD.js → segmented-toggle-C1-ZVyr5.js} +1 -1
  113. package/build/assets/settings-BfgLHsgd.js +1 -0
  114. package/build/assets/{settings-dropdown-input-BjunGXJb.js → settings-dropdown-input-BD5C9fBn.js} +1 -1
  115. package/build/assets/{settings-index-BjeuYFFa.js → settings-index-CODBijya.js} +1 -1
  116. package/build/assets/{settings-input-bD6npsDm.js → settings-input-CzNOq-Pj.js} +1 -1
  117. package/build/assets/{settings-list-classes-Dp_OgzN0.js → settings-list-classes-CuxH9ZoR.js} +1 -1
  118. package/build/assets/settings-modal-BcSWpKI0.js +1 -0
  119. package/build/assets/settings-service.api-Bsu1PvYO.js +1 -0
  120. package/build/assets/{settings-switch-5cuxl8Dc.js → settings-switch-DqmHAfWJ.js} +1 -1
  121. package/build/assets/{settings-utils-BMdG65By.js → settings-utils-B1lBErvV.js} +1 -1
  122. package/build/assets/shared-conversation-CDskdmrb.js +1 -0
  123. package/build/assets/{sidebar-layout-DuzJMMw-.js → sidebar-layout-Cn6eQaEI.js} +1 -1
  124. package/build/assets/{sidebar-mobile-menu-toggle-CMmAYkh8.js → sidebar-mobile-menu-toggle-DmCmZgq1.js} +1 -1
  125. package/build/assets/{sidebar-nav-link-5AlTT5-j.js → sidebar-nav-link-DMc8AIe7.js} +1 -1
  126. package/build/assets/{sidebar-store-CZuE8AH5.js → sidebar-store-DXWSCFpa.js} +1 -1
  127. package/build/assets/{skill-card-pill-row-eTIkE4nz.js → skill-card-pill-row-DOIWjiMF.js} +1 -1
  128. package/build/assets/skills-plugins-DLgINYuY.js +1 -0
  129. package/build/assets/{skills-settings-BYn4-AQQ.js → skills-settings-DPiCWalR.js} +2 -2
  130. package/build/assets/{square-chevron-right-Czw3FFWc.js → square-chevron-right-DE-JN-2Z.js} +1 -1
  131. package/build/assets/{styled-tooltip-CgX2oRaK.js → styled-tooltip-CvsjHuIf.js} +1 -1
  132. package/build/assets/{suspense-X5dBsJzn.js → suspense-DmZ3MSSh.js} +1 -1
  133. package/build/assets/{task-list-tab-0k9PhuqO.js → task-list-tab-CuhcDycu.js} +1 -1
  134. package/build/assets/telemetry-DHiTRl5_.js +2 -0
  135. package/build/assets/{terminal-BsGcSpRS.js → terminal-CVqF-tCD.js} +1 -1
  136. package/build/assets/{toggle-switch-2j5wwR85.js → toggle-switch-CS0ClOy2.js} +1 -1
  137. package/build/assets/{trash-2-Be_7y3Mn.js → trash-2-BU6BlW4i.js} +1 -1
  138. package/build/assets/{typography-D8mHDeNG.js → typography-CQn9wyEX.js} +1 -1
  139. package/build/assets/use-acp-credential-form-LlfZO_DD.js +1 -0
  140. package/build/assets/{use-activate-agent-profile-WaAZYz4E.js → use-activate-agent-profile-DpQjsXM0.js} +1 -1
  141. package/build/assets/{use-active-agent-profile-CYY3vGar.js → use-active-agent-profile-Gw_uJujV.js} +1 -1
  142. package/build/assets/{use-active-conversation-D-r929nx.js → use-active-conversation-B0sttISF.js} +1 -1
  143. package/build/assets/use-agent-profiles-LHZEK0Gg.js +1 -0
  144. package/build/assets/{use-agent-state-DijdVAQ0.js → use-agent-state-C5uA0bRj.js} +1 -1
  145. package/build/assets/use-backends-health-DKt1SmiU.js +1 -0
  146. package/build/assets/{use-can-manage-org-profiles-BEo0peGn.js → use-can-manage-org-profiles-BAtqsbCi.js} +1 -1
  147. package/build/assets/use-cloud-current-user-id-C8m1oBy4.js +1 -0
  148. package/build/assets/use-config-CXy4vD0H.js +1 -0
  149. package/build/assets/use-create-conversation-CWQGNQ9J.js +1 -0
  150. package/build/assets/{use-create-secret-D5O5qdWC.js → use-create-secret-BIrsX3OB.js} +1 -1
  151. package/build/assets/{use-event-store-DjgU4wfO.js → use-event-store-CsD17BKu.js} +1 -1
  152. package/build/assets/{use-handle-plan-click-Mn_SNTCh.js → use-handle-plan-click-DEuO7Byo.js} +1 -1
  153. package/build/assets/use-is-authed-Dvbpiu3B.js +1 -0
  154. package/build/assets/{use-launch-skill-in-chat-BnoDgvAy.js → use-launch-skill-in-chat-CdHOoQGM.js} +1 -1
  155. package/build/assets/use-llm-profiles-DQpQxVOD.js +1 -0
  156. package/build/assets/use-plugins-marketplace-Bkk07W_M.js +1 -0
  157. package/build/assets/use-runtime-is-ready-D4pkGT6E.js +1 -0
  158. package/build/assets/use-save-agent-profile-BxEsjnW0.js +1 -0
  159. package/build/assets/{use-save-settings-D1HoCDbn.js → use-save-settings-ioSUMqbE.js} +1 -1
  160. package/build/assets/use-settings-DNJC4gqu.js +1 -0
  161. package/build/assets/use-settings-nav-items-BUsrDbVR.js +16 -0
  162. package/build/assets/use-skills-BsmKm23M.js +1 -0
  163. package/build/assets/{use-task-list-AVBLbbcR.js → use-task-list-rs7Xbzl8.js} +1 -1
  164. package/build/assets/{use-tracking-2ZwQwpg_.js → use-tracking-poxQHMwR.js} +1 -1
  165. package/build/assets/{use-user-conversation-OAfenBRG.js → use-user-conversation-B337kUKB.js} +1 -1
  166. package/build/assets/{useMutation-DCE9RcgK.js → useMutation-u8UgRgDK.js} +1 -1
  167. package/build/assets/{useMutationState-BUab8Kxr.js → useMutationState-OnAsCLA_.js} +1 -1
  168. package/build/assets/{useQueries-CRzaAqzH.js → useQueries-BpIlT8Mt.js} +1 -1
  169. package/build/assets/{useQuery-CpjHYtZc.js → useQuery-D5pEZbY0.js} +1 -1
  170. package/build/assets/{useTranslation-CDRCKC9-.js → useTranslation-Cbf5AGg_.js} +1 -1
  171. package/build/assets/{utils-D3U3rlqr.js → utils-DB9LsAzA.js} +1 -1
  172. package/build/assets/{vendor~browser-Cvg7jXCP.js → vendor~browser-5Njjw1Cl.js} +1 -1
  173. package/build/assets/{vendor~browser-tab-Di0kh5Zw.js → vendor~browser-tab-Xn94EtUo.js} +1 -1
  174. package/build/assets/{vendor~entry.client-9tWQ_Ugw.js → vendor~entry.client-DDuH4--y.js} +1 -1
  175. package/build/assets/{vendor~entry.client-D6BtSOtn.js → vendor~entry.client-DQGrNspu.js} +1 -1
  176. package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dhilvkxv-BIieS_OD.js +2 -0
  177. package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~iztiaf2o-rqo6vRFz.js +185 -0
  178. package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~nn5zty47-Zl0G1QCy.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ljq5gbus-B2XD4bi2.js} +1 -1
  179. package/build/assets/{vendor~files-tab-B02k3xvx.js → vendor~files-tab-CiC3-lGh.js} +1 -1
  180. package/build/assets/{vendor~home~conversation-panel~conversation-CYMF9JYB.js → vendor~index-home~home~conversation-panel~conversation-ChmYLVgz.js} +1 -1
  181. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-9UMeuPV6.js → vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-B8XNNEQZ.js} +1 -1
  182. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-d8aETPbZ.js → vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CnJRLn5s.js} +1 -1
  183. package/build/assets/vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DWteoTyr.js +2 -0
  184. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-D7EUmQ8Y.js → vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-Dc5nKwLO.js} +1 -1
  185. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BD0GaRGa.js → vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-tlf6AnDe.js} +1 -1
  186. package/build/assets/{vendor~launch-CHXA9cJu.js → vendor~launch-28DK5Rsl.js} +1 -1
  187. package/build/assets/{vendor~root-layout~conversation-panel~conversation-CpiTHpHl.js → vendor~root-layout~conversation-panel~conversation-8tIsyrPj.js} +1 -1
  188. package/build/assets/{vendor~root-layout~conversation-panel~conversation~shared-conversation-_TdZcNMD.js → vendor~root-layout~conversation-panel~conversation~shared-conversation-lYNG9C1U.js} +1 -1
  189. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation-Cn2jwSga.js → vendor~root-layout~index-home~home~conversation-panel~conversation-Zhq6xAxR.js} +1 -1
  190. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~shared-conversation~alert-banner~pl~rqjteh0a-CZM4hwUT.js → vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation~aler~gfu7qdtz-B81b08bw.js} +1 -1
  191. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~enjl5xdm-mMKDm94D.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~ftka0fnu-jpyLM1Nn.js} +2 -2
  192. package/build/assets/{verification-settings-DnXS6VWv.js → verification-settings-HRgEM-_3.js} +1 -1
  193. package/build/assets/x-ZE4iplpF.js +1 -0
  194. package/build/index.html +4 -4
  195. package/build/locales/ar/openhands.json +9 -0
  196. package/build/locales/ca/openhands.json +9 -0
  197. package/build/locales/de/openhands.json +9 -0
  198. package/build/locales/en/openhands.json +10 -1
  199. package/build/locales/es/openhands.json +9 -0
  200. package/build/locales/fr/openhands.json +9 -0
  201. package/build/locales/it/openhands.json +9 -0
  202. package/build/locales/ja/openhands.json +9 -0
  203. package/build/locales/ko-KR/openhands.json +9 -0
  204. package/build/locales/no/openhands.json +9 -0
  205. package/build/locales/pt/openhands.json +9 -0
  206. package/build/locales/tr/openhands.json +9 -0
  207. package/build/locales/uk/openhands.json +9 -0
  208. package/build/locales/zh-CN/openhands.json +9 -0
  209. package/build/locales/zh-TW/openhands.json +9 -0
  210. package/config/defaults.json +5 -4
  211. package/dist/api/agent-server-adapter.cjs +3 -3
  212. package/dist/api/agent-server-adapter.cjs.map +1 -1
  213. package/dist/api/agent-server-adapter.d.ts +9 -1
  214. package/dist/api/agent-server-adapter.js +105 -102
  215. package/dist/api/agent-server-adapter.js.map +1 -1
  216. package/dist/api/agent-server-config.cjs +1 -1
  217. package/dist/api/agent-server-config.cjs.map +1 -1
  218. package/dist/api/agent-server-config.d.ts +3 -0
  219. package/dist/api/agent-server-config.js +45 -23
  220. package/dist/api/agent-server-config.js.map +1 -1
  221. package/dist/api/backend-registry/auth.cjs +1 -1
  222. package/dist/api/backend-registry/auth.cjs.map +1 -1
  223. package/dist/api/backend-registry/auth.js +1 -1
  224. package/dist/api/backend-registry/auth.js.map +1 -1
  225. package/dist/api/backend-registry/default-backend.cjs +1 -1
  226. package/dist/api/backend-registry/default-backend.cjs.map +1 -1
  227. package/dist/api/backend-registry/default-backend.d.ts +3 -0
  228. package/dist/api/backend-registry/default-backend.js +22 -10
  229. package/dist/api/backend-registry/default-backend.js.map +1 -1
  230. package/dist/api/backend-registry/storage.cjs +1 -1
  231. package/dist/api/backend-registry/storage.cjs.map +1 -1
  232. package/dist/api/backend-registry/storage.js +38 -33
  233. package/dist/api/backend-registry/storage.js.map +1 -1
  234. package/dist/api/backend-registry/types.d.ts +2 -0
  235. package/dist/api/canvas-ui-client-tool.cjs +38 -0
  236. package/dist/api/canvas-ui-client-tool.cjs.map +1 -0
  237. package/dist/api/canvas-ui-client-tool.d.ts +14 -0
  238. package/dist/api/canvas-ui-client-tool.js +47 -0
  239. package/dist/api/canvas-ui-client-tool.js.map +1 -0
  240. package/dist/api/client-source.cjs +2 -0
  241. package/dist/api/client-source.cjs.map +1 -0
  242. package/dist/api/client-source.d.ts +9 -0
  243. package/dist/api/client-source.js +10 -0
  244. package/dist/api/client-source.js.map +1 -0
  245. package/dist/api/cloud/client.cjs +2 -0
  246. package/dist/api/cloud/client.cjs.map +1 -0
  247. package/dist/api/cloud/client.d.ts +4 -0
  248. package/dist/api/cloud/client.js +38 -0
  249. package/dist/api/cloud/client.js.map +1 -0
  250. package/dist/api/cloud/conversation-service.api.cjs +1 -1
  251. package/dist/api/cloud/conversation-service.api.cjs.map +1 -1
  252. package/dist/api/cloud/conversation-service.api.js +33 -31
  253. package/dist/api/cloud/conversation-service.api.js.map +1 -1
  254. package/dist/api/cloud/organization-service.api.cjs +1 -1
  255. package/dist/api/cloud/organization-service.api.cjs.map +1 -1
  256. package/dist/api/cloud/organization-service.api.js +11 -10
  257. package/dist/api/cloud/organization-service.api.js.map +1 -1
  258. package/dist/api/cloud/proxy.cjs +1 -1
  259. package/dist/api/cloud/proxy.cjs.map +1 -1
  260. package/dist/api/cloud/proxy.d.ts +2 -40
  261. package/dist/api/cloud/proxy.js +14 -39
  262. package/dist/api/cloud/proxy.js.map +1 -1
  263. package/dist/api/conversation-metadata-store.cjs +1 -1
  264. package/dist/api/conversation-metadata-store.cjs.map +1 -1
  265. package/dist/api/conversation-metadata-store.d.ts +2 -9
  266. package/dist/api/conversation-metadata-store.js +13 -9
  267. package/dist/api/conversation-metadata-store.js.map +1 -1
  268. package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
  269. package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
  270. package/dist/api/conversation-service/agent-server-conversation-service.api.d.ts +2 -1
  271. package/dist/api/conversation-service/agent-server-conversation-service.api.js +98 -88
  272. package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
  273. package/dist/api/conversation-service/agent-server-conversation-service.types.d.ts +5 -0
  274. package/dist/api/device-flow-client.cjs +1 -1
  275. package/dist/api/device-flow-client.cjs.map +1 -1
  276. package/dist/api/device-flow-client.d.ts +4 -58
  277. package/dist/api/device-flow-client.js +8 -98
  278. package/dist/api/device-flow-client.js.map +1 -1
  279. package/dist/api/git-service/agent-server-git-service.api.cjs +1 -1
  280. package/dist/api/git-service/agent-server-git-service.api.cjs.map +1 -1
  281. package/dist/api/git-service/agent-server-git-service.api.d.ts +10 -2
  282. package/dist/api/git-service/agent-server-git-service.api.js +107 -40
  283. package/dist/api/git-service/agent-server-git-service.api.js.map +1 -1
  284. package/dist/api/open-hands.types.d.ts +11 -0
  285. package/dist/api/secrets-service.cjs +1 -1
  286. package/dist/api/secrets-service.cjs.map +1 -1
  287. package/dist/api/secrets-service.js +15 -14
  288. package/dist/api/secrets-service.js.map +1 -1
  289. package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.cjs +1 -1
  290. package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.cjs.map +1 -1
  291. package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.js +73 -64
  292. package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.js.map +1 -1
  293. package/dist/components/conversation-events/chat/event-content-helpers/get-observation-content.cjs +2 -2
  294. package/dist/components/conversation-events/chat/event-content-helpers/get-observation-content.cjs.map +1 -1
  295. package/dist/components/conversation-events/chat/event-content-helpers/get-observation-content.js +2 -0
  296. package/dist/components/conversation-events/chat/event-content-helpers/get-observation-content.js.map +1 -1
  297. package/dist/components/features/backends/backend-form-modal.cjs +1 -1
  298. package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
  299. package/dist/components/features/backends/backend-form-modal.d.ts +7 -3
  300. package/dist/components/features/backends/backend-form-modal.js +216 -201
  301. package/dist/components/features/backends/backend-form-modal.js.map +1 -1
  302. package/dist/components/features/backends/backend-row.cjs +1 -1
  303. package/dist/components/features/backends/backend-row.cjs.map +1 -1
  304. package/dist/components/features/backends/backend-row.js +2 -1
  305. package/dist/components/features/backends/backend-row.js.map +1 -1
  306. package/dist/components/features/backends/backend-selector.cjs +1 -1
  307. package/dist/components/features/backends/backend-selector.cjs.map +1 -1
  308. package/dist/components/features/backends/backend-selector.js +51 -51
  309. package/dist/components/features/backends/backend-selector.js.map +1 -1
  310. package/dist/components/features/backends/device-flow-auth.cjs +1 -1
  311. package/dist/components/features/backends/device-flow-auth.cjs.map +1 -1
  312. package/dist/components/features/backends/device-flow-auth.d.ts +4 -1
  313. package/dist/components/features/backends/device-flow-auth.js +38 -38
  314. package/dist/components/features/backends/device-flow-auth.js.map +1 -1
  315. package/dist/components/features/chat/chat-interface.cjs +2 -2
  316. package/dist/components/features/chat/chat-interface.cjs.map +1 -1
  317. package/dist/components/features/chat/chat-interface.js +173 -165
  318. package/dist/components/features/chat/chat-interface.js.map +1 -1
  319. package/dist/components/features/chat/components/chat-input-actions.cjs +1 -1
  320. package/dist/components/features/chat/components/chat-input-actions.cjs.map +1 -1
  321. package/dist/components/features/chat/components/chat-input-actions.d.ts +2 -1
  322. package/dist/components/features/chat/components/chat-input-actions.js +44 -43
  323. package/dist/components/features/chat/components/chat-input-actions.js.map +1 -1
  324. package/dist/components/features/chat/components/chat-input-container.cjs +1 -1
  325. package/dist/components/features/chat/components/chat-input-container.cjs.map +1 -1
  326. package/dist/components/features/chat/components/chat-input-container.d.ts +2 -1
  327. package/dist/components/features/chat/components/chat-input-container.js +20 -19
  328. package/dist/components/features/chat/components/chat-input-container.js.map +1 -1
  329. package/dist/components/features/chat/components/chat-input-profile-picker.cjs +1 -1
  330. package/dist/components/features/chat/components/chat-input-profile-picker.cjs.map +1 -1
  331. package/dist/components/features/chat/components/chat-input-profile-picker.js +44 -32
  332. package/dist/components/features/chat/components/chat-input-profile-picker.js.map +1 -1
  333. package/dist/components/features/chat/components/resolve-picker-kind.cjs +1 -1
  334. package/dist/components/features/chat/components/resolve-picker-kind.cjs.map +1 -1
  335. package/dist/components/features/chat/components/resolve-picker-kind.d.ts +10 -22
  336. package/dist/components/features/chat/components/resolve-picker-kind.js +6 -3
  337. package/dist/components/features/chat/components/resolve-picker-kind.js.map +1 -1
  338. package/dist/components/features/chat/custom-chat-input.cjs +1 -1
  339. package/dist/components/features/chat/custom-chat-input.cjs.map +1 -1
  340. package/dist/components/features/chat/custom-chat-input.d.ts +2 -1
  341. package/dist/components/features/chat/custom-chat-input.js +52 -51
  342. package/dist/components/features/chat/custom-chat-input.js.map +1 -1
  343. package/dist/components/features/chat/interactive-chat-box.cjs +1 -1
  344. package/dist/components/features/chat/interactive-chat-box.cjs.map +1 -1
  345. package/dist/components/features/chat/interactive-chat-box.d.ts +2 -1
  346. package/dist/components/features/chat/interactive-chat-box.js +9 -8
  347. package/dist/components/features/chat/interactive-chat-box.js.map +1 -1
  348. package/dist/components/features/diff-viewer/commit-list.cjs +2 -0
  349. package/dist/components/features/diff-viewer/commit-list.cjs.map +1 -0
  350. package/dist/components/features/diff-viewer/commit-list.d.ts +13 -0
  351. package/dist/components/features/diff-viewer/commit-list.js +27 -0
  352. package/dist/components/features/diff-viewer/commit-list.js.map +1 -0
  353. package/dist/components/features/diff-viewer/commit-row.cjs +2 -0
  354. package/dist/components/features/diff-viewer/commit-row.cjs.map +1 -0
  355. package/dist/components/features/diff-viewer/commit-row.d.ts +14 -0
  356. package/dist/components/features/diff-viewer/commit-row.js +59 -0
  357. package/dist/components/features/diff-viewer/commit-row.js.map +1 -0
  358. package/dist/components/features/diff-viewer/file-diff-viewer.cjs +1 -1
  359. package/dist/components/features/diff-viewer/file-diff-viewer.cjs.map +1 -1
  360. package/dist/components/features/diff-viewer/file-diff-viewer.d.ts +7 -1
  361. package/dist/components/features/diff-viewer/file-diff-viewer.js +40 -39
  362. package/dist/components/features/diff-viewer/file-diff-viewer.js.map +1 -1
  363. package/dist/components/features/plugins/plugin-detail-modal.d.ts +2 -1
  364. package/dist/components/shared/modals/settings/settings-modal.cjs +1 -1
  365. package/dist/components/shared/modals/settings/settings-modal.cjs.map +1 -1
  366. package/dist/components/shared/modals/settings/settings-modal.js +23 -22
  367. package/dist/components/shared/modals/settings/settings-modal.js.map +1 -1
  368. package/dist/config/defaults.cjs +1 -1
  369. package/dist/config/defaults.cjs.map +1 -1
  370. package/dist/config/defaults.js +5 -4
  371. package/dist/config/defaults.js.map +1 -1
  372. package/dist/constants/acp-providers.cjs.map +1 -1
  373. package/dist/constants/acp-providers.d.ts +1 -1
  374. package/dist/constants/acp-providers.js.map +1 -1
  375. package/dist/constants/canvas-ui.cjs +2 -0
  376. package/dist/constants/canvas-ui.cjs.map +1 -0
  377. package/dist/constants/canvas-ui.d.ts +8 -0
  378. package/dist/constants/canvas-ui.js +6 -0
  379. package/dist/constants/canvas-ui.js.map +1 -0
  380. package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
  381. package/dist/contexts/conversation-websocket-context.js.map +1 -1
  382. package/dist/hooks/mutation/use-create-conversation.cjs +1 -1
  383. package/dist/hooks/mutation/use-create-conversation.cjs.map +1 -1
  384. package/dist/hooks/mutation/use-create-conversation.d.ts +2 -1
  385. package/dist/hooks/mutation/use-create-conversation.js +52 -52
  386. package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
  387. package/dist/hooks/query/query-keys.cjs +1 -1
  388. package/dist/hooks/query/query-keys.cjs.map +1 -1
  389. package/dist/hooks/query/query-keys.d.ts +2 -0
  390. package/dist/hooks/query/query-keys.js +4 -1
  391. package/dist/hooks/query/query-keys.js.map +1 -1
  392. package/dist/hooks/query/use-backends-health.cjs +1 -1
  393. package/dist/hooks/query/use-backends-health.cjs.map +1 -1
  394. package/dist/hooks/query/use-backends-health.js +50 -48
  395. package/dist/hooks/query/use-backends-health.js.map +1 -1
  396. package/dist/hooks/query/use-cloud-organizations.cjs +1 -1
  397. package/dist/hooks/query/use-cloud-organizations.cjs.map +1 -1
  398. package/dist/hooks/query/use-cloud-organizations.d.ts +1 -0
  399. package/dist/hooks/query/use-cloud-organizations.js +5 -2
  400. package/dist/hooks/query/use-cloud-organizations.js.map +1 -1
  401. package/dist/hooks/query/use-commit-changes.cjs +2 -0
  402. package/dist/hooks/query/use-commit-changes.cjs.map +1 -0
  403. package/dist/hooks/query/use-commit-changes.d.ts +5 -0
  404. package/dist/hooks/query/use-commit-changes.js +34 -0
  405. package/dist/hooks/query/use-commit-changes.js.map +1 -0
  406. package/dist/hooks/query/use-task-polling.cjs +1 -1
  407. package/dist/hooks/query/use-task-polling.cjs.map +1 -1
  408. package/dist/hooks/query/use-task-polling.d.ts +3 -2
  409. package/dist/hooks/query/use-task-polling.js +53 -40
  410. package/dist/hooks/query/use-task-polling.js.map +1 -1
  411. package/dist/hooks/query/use-unified-git-commits.cjs +2 -0
  412. package/dist/hooks/query/use-unified-git-commits.cjs.map +1 -0
  413. package/dist/hooks/query/use-unified-git-commits.d.ts +10 -0
  414. package/dist/hooks/query/use-unified-git-commits.js +41 -0
  415. package/dist/hooks/query/use-unified-git-commits.js.map +1 -0
  416. package/dist/hooks/query/use-unified-git-diff.cjs +1 -1
  417. package/dist/hooks/query/use-unified-git-diff.cjs.map +1 -1
  418. package/dist/hooks/query/use-unified-git-diff.d.ts +5 -0
  419. package/dist/hooks/query/use-unified-git-diff.js +11 -4
  420. package/dist/hooks/query/use-unified-git-diff.js.map +1 -1
  421. package/dist/hooks/use-acp-model-context.cjs +1 -1
  422. package/dist/hooks/use-acp-model-context.cjs.map +1 -1
  423. package/dist/hooks/use-acp-model-context.d.ts +4 -1
  424. package/dist/hooks/use-acp-model-context.js +9 -8
  425. package/dist/hooks/use-acp-model-context.js.map +1 -1
  426. package/dist/hooks/use-auto-refresh-files-on-edit.cjs +1 -1
  427. package/dist/hooks/use-auto-refresh-files-on-edit.cjs.map +1 -1
  428. package/dist/hooks/use-auto-refresh-files-on-edit.js +1 -1
  429. package/dist/hooks/use-auto-refresh-files-on-edit.js.map +1 -1
  430. package/dist/hooks/use-chat-input-model-state.cjs.map +1 -1
  431. package/dist/hooks/use-chat-input-model-state.d.ts +2 -1
  432. package/dist/hooks/use-chat-input-model-state.js.map +1 -1
  433. package/dist/hooks/use-chat-input-profile-state.cjs +1 -1
  434. package/dist/hooks/use-chat-input-profile-state.cjs.map +1 -1
  435. package/dist/hooks/use-chat-input-profile-state.d.ts +1 -10
  436. package/dist/hooks/use-chat-input-profile-state.js +42 -15
  437. package/dist/hooks/use-chat-input-profile-state.js.map +1 -1
  438. package/dist/hooks/use-device-flow.cjs +1 -1
  439. package/dist/hooks/use-device-flow.cjs.map +1 -1
  440. package/dist/hooks/use-device-flow.d.ts +4 -1
  441. package/dist/hooks/use-device-flow.js +42 -40
  442. package/dist/hooks/use-device-flow.js.map +1 -1
  443. package/dist/hooks/use-tracking.cjs.map +1 -1
  444. package/dist/hooks/use-tracking.d.ts +2 -1
  445. package/dist/hooks/use-tracking.js.map +1 -1
  446. package/dist/i18n/declaration.cjs +1 -1
  447. package/dist/i18n/declaration.cjs.map +1 -1
  448. package/dist/i18n/declaration.d.ts +9 -0
  449. package/dist/i18n/declaration.js +1 -1
  450. package/dist/i18n/declaration.js.map +1 -1
  451. package/dist/i18n/index.cjs +1 -1
  452. package/dist/i18n/index.cjs.map +1 -1
  453. package/dist/i18n/index.js +19 -18
  454. package/dist/i18n/index.js.map +1 -1
  455. package/dist/i18n/translation.cjs +3 -3
  456. package/dist/i18n/translation.cjs.map +1 -1
  457. package/dist/i18n/translation.js +154 -1
  458. package/dist/i18n/translation.js.map +1 -1
  459. package/dist/index.cjs +1 -1
  460. package/dist/index.js +32 -32
  461. package/dist/lib/index.cjs +1 -1
  462. package/dist/lib/index.js +1 -1
  463. package/dist/locales/ar/openhands.json +9 -0
  464. package/dist/locales/ca/openhands.json +9 -0
  465. package/dist/locales/de/openhands.json +9 -0
  466. package/dist/locales/en/openhands.json +10 -1
  467. package/dist/locales/es/openhands.json +9 -0
  468. package/dist/locales/fr/openhands.json +9 -0
  469. package/dist/locales/it/openhands.json +9 -0
  470. package/dist/locales/ja/openhands.json +9 -0
  471. package/dist/locales/ko-KR/openhands.json +9 -0
  472. package/dist/locales/no/openhands.json +9 -0
  473. package/dist/locales/pt/openhands.json +9 -0
  474. package/dist/locales/tr/openhands.json +9 -0
  475. package/dist/locales/uk/openhands.json +9 -0
  476. package/dist/locales/zh-CN/openhands.json +9 -0
  477. package/dist/locales/zh-TW/openhands.json +9 -0
  478. package/dist/node_modules/@openhands/typescript-client/dist/client/cloud-client.cjs +2 -0
  479. package/dist/node_modules/@openhands/typescript-client/dist/client/cloud-client.cjs.map +1 -0
  480. package/dist/node_modules/@openhands/typescript-client/dist/client/cloud-client.js +351 -0
  481. package/dist/node_modules/@openhands/typescript-client/dist/client/cloud-client.js.map +1 -0
  482. package/dist/node_modules/@openhands/typescript-client/dist/client/device-flow-client.cjs +2 -0
  483. package/dist/node_modules/@openhands/typescript-client/dist/client/device-flow-client.cjs.map +1 -0
  484. package/dist/node_modules/@openhands/typescript-client/dist/client/device-flow-client.js +106 -0
  485. package/dist/node_modules/@openhands/typescript-client/dist/client/device-flow-client.js.map +1 -0
  486. package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.cjs +2 -0
  487. package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.cjs.map +1 -0
  488. package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.js +69 -0
  489. package/dist/node_modules/@openhands/typescript-client/dist/client/openhands-client.js.map +1 -0
  490. package/dist/node_modules/@openhands/typescript-client/dist/clients.cjs +1 -1
  491. package/dist/node_modules/@openhands/typescript-client/dist/clients.js +3 -0
  492. package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.cjs +1 -1
  493. package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.cjs.map +1 -1
  494. package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.js +18 -2
  495. package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.js.map +1 -1
  496. package/dist/node_modules/@openhands/typescript-client/dist/models/acp.cjs.map +1 -1
  497. package/dist/node_modules/@openhands/typescript-client/dist/models/acp.js.map +1 -1
  498. package/dist/node_modules/axios/index.cjs +1 -1
  499. package/dist/node_modules/axios/index.js +1 -1
  500. package/dist/package.cjs +1 -1
  501. package/dist/package.cjs.map +1 -1
  502. package/dist/package.js +2 -2
  503. package/dist/package.js.map +1 -1
  504. package/dist/routes/app-settings.cjs +1 -1
  505. package/dist/routes/app-settings.cjs.map +1 -1
  506. package/dist/routes/app-settings.js +67 -66
  507. package/dist/routes/app-settings.js.map +1 -1
  508. package/dist/routes/commits-tab.cjs +2 -0
  509. package/dist/routes/commits-tab.cjs.map +1 -0
  510. package/dist/routes/commits-tab.d.ts +8 -0
  511. package/dist/routes/commits-tab.js +45 -0
  512. package/dist/routes/commits-tab.js.map +1 -0
  513. package/dist/routes/files-tab.cjs +1 -1
  514. package/dist/routes/files-tab.cjs.map +1 -1
  515. package/dist/routes/files-tab.js +148 -127
  516. package/dist/routes/files-tab.js.map +1 -1
  517. package/dist/services/cloud-funnel-analytics.cjs +2 -0
  518. package/dist/services/cloud-funnel-analytics.cjs.map +1 -0
  519. package/dist/services/cloud-funnel-analytics.d.ts +12 -0
  520. package/dist/services/cloud-funnel-analytics.js +53 -0
  521. package/dist/services/cloud-funnel-analytics.js.map +1 -0
  522. package/dist/services/telemetry.cjs +1 -1
  523. package/dist/services/telemetry.cjs.map +1 -1
  524. package/dist/services/telemetry.js +49 -47
  525. package/dist/services/telemetry.js.map +1 -1
  526. package/dist/types/agent-server/core/base/action.d.ts +5 -4
  527. package/dist/types/agent-server/core/base/base.d.ts +3 -2
  528. package/dist/types/agent-server/core/base/observation.d.ts +1 -1
  529. package/dist/types/agent-server/type-guards.cjs +1 -1
  530. package/dist/types/agent-server/type-guards.cjs.map +1 -1
  531. package/dist/types/agent-server/type-guards.d.ts +3 -5
  532. package/dist/types/agent-server/type-guards.js +2 -1
  533. package/dist/types/agent-server/type-guards.js.map +1 -1
  534. package/dist/types/automation.d.ts +5 -0
  535. package/dist/utils/api-error-message.d.ts +11 -0
  536. package/dist/utils/automation-timeout.d.ts +19 -0
  537. package/dist/utils/base-path.cjs +2 -0
  538. package/dist/utils/base-path.cjs.map +1 -0
  539. package/dist/utils/base-path.d.ts +2 -0
  540. package/dist/utils/base-path.js +23 -0
  541. package/dist/utils/base-path.js.map +1 -0
  542. package/package.json +2 -2
  543. package/scripts/check-sdk-version-sync.mjs +6 -6
  544. package/scripts/dev-safe.mjs +7 -8
  545. package/scripts/dev-static.mjs +3 -0
  546. package/scripts/dev-with-automation.mjs +3 -0
  547. package/scripts/docker-build.mjs +4 -0
  548. package/scripts/static-server.mjs +93 -7
  549. package/tools/canvas_ui_tool.py +14 -8
  550. package/build/assets/active-backend-context-B3umL5R-.js +0 -1
  551. package/build/assets/agent-server-client-options-DVLRd9sw.js +0 -1
  552. package/build/assets/agent-server-conversation-service.api-D_ZvtJjG.js +0 -5
  553. package/build/assets/agent-settings-BVVFzBWS.js +0 -1
  554. package/build/assets/api-key-entry-screen-CWEHcPJA.js +0 -1
  555. package/build/assets/app-settings-Dj90qosy.js +0 -1
  556. package/build/assets/automation-detail-CXJU0_gF.js +0 -2
  557. package/build/assets/automation-export-FWY9LPsG.js +0 -2
  558. package/build/assets/automations-list-DDGBkWLC.js +0 -1
  559. package/build/assets/backend-form-modal-DSbrafX2.js +0 -1
  560. package/build/assets/browser-store-BI6uklCG.js +0 -1
  561. package/build/assets/check-Bvi71siz.js +0 -1
  562. package/build/assets/condenser-settings-30cX9SK6.js +0 -1
  563. package/build/assets/conversation-BltULtFA.js +0 -89
  564. package/build/assets/conversation-e0a0_X4S.js +0 -1
  565. package/build/assets/conversation-panel-Cr9_ZGI-.js +0 -1
  566. package/build/assets/conversation-service.api-DQaKzIRj.js +0 -1
  567. package/build/assets/conversation-state-store-B2Bp32XI.js +0 -1
  568. package/build/assets/declaration-gq8V5eTU.js +0 -1
  569. package/build/assets/files-tab-DDtEJcGE.js +0 -1
  570. package/build/assets/git-provider-icon-BjkecAuV.js +0 -1
  571. package/build/assets/home-BCKWpKpf.js +0 -1
  572. package/build/assets/index-redirect-CUUJiNki.js +0 -1
  573. package/build/assets/install-server-modal-BIugLhVB.js +0 -1
  574. package/build/assets/lesson-plan-DgpP80mJ.js +0 -4
  575. package/build/assets/llm-not-configured-banner-BlX8NifC.js +0 -27
  576. package/build/assets/llm-settings-DJmbryaE.js +0 -1
  577. package/build/assets/llm-settings-kU5v0H1Z.js +0 -1
  578. package/build/assets/llm-subscription-service-CKyaV24y.js +0 -1
  579. package/build/assets/loader-circle-BEykUKYG.js +0 -1
  580. package/build/assets/manage-backends-modal-C8FJQIZR.js +0 -1
  581. package/build/assets/manifest-56d40d7c.js +0 -1
  582. package/build/assets/model-selector-BOj1wBlq.js +0 -1
  583. package/build/assets/mouse-pointer-click-PdEQPL6v.js +0 -1
  584. package/build/assets/onboarding-DYhDxmI9.js +0 -1
  585. package/build/assets/onboarding-modal-CP_WxDC9.js +0 -1
  586. package/build/assets/option-service.api-C0tYT4-r.js +0 -1
  587. package/build/assets/organization-service.api-CnynNoT-.js +0 -1
  588. package/build/assets/path-utils-DWcgCGen.js +0 -1
  589. package/build/assets/plugins-management-service-BAp70KN7.js +0 -1
  590. package/build/assets/profiles-service.api-CeYEmSM3.js +0 -1
  591. package/build/assets/providers-BxCuC9bZ.js +0 -1
  592. package/build/assets/proxy-CHmFkV16.js +0 -1
  593. package/build/assets/root-V8fkplMy.css +0 -1
  594. package/build/assets/root-layout-CttG_lQi.js +0 -2
  595. package/build/assets/root-uJ2t9rCQ.js +0 -2
  596. package/build/assets/schema-field-xUr6rDd6.js +0 -1
  597. package/build/assets/sdk-section-page-CbLrVUa3.js +0 -1
  598. package/build/assets/search-4DHskuhE.js +0 -1
  599. package/build/assets/secrets-service-CZYjNxFw.js +0 -1
  600. package/build/assets/settings-DnlfS09K.js +0 -1
  601. package/build/assets/settings-modal-DfTcL-mV.js +0 -1
  602. package/build/assets/settings-service.api-K4ncGlBv.js +0 -1
  603. package/build/assets/shared-conversation-DWtBkJv7.js +0 -1
  604. package/build/assets/skills-plugins-BJ040luO.js +0 -1
  605. package/build/assets/use-acp-credential-form-EtnbtYt0.js +0 -1
  606. package/build/assets/use-agent-profiles-DEAMFp-W.js +0 -1
  607. package/build/assets/use-backends-health-DkC7tKkC.js +0 -1
  608. package/build/assets/use-cloud-current-user-id-Dm99wXp2.js +0 -1
  609. package/build/assets/use-config-CHzNIHpv.js +0 -1
  610. package/build/assets/use-create-conversation-CTsvZ96U.js +0 -1
  611. package/build/assets/use-is-authed-_dhQ2Xuj.js +0 -1
  612. package/build/assets/use-llm-profiles-BMhPDlwQ.js +0 -1
  613. package/build/assets/use-plugins-marketplace-BGb-KgfD.js +0 -1
  614. package/build/assets/use-runtime-is-ready-CC-KrLKe.js +0 -1
  615. package/build/assets/use-save-agent-profile-CLMmbx_X.js +0 -1
  616. package/build/assets/use-settings-BReAMxCG.js +0 -1
  617. package/build/assets/use-settings-nav-items-xe1YgLnE.js +0 -16
  618. package/build/assets/use-skills-Dqo-pDDx.js +0 -1
  619. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~d1e18dtv-5Q6lQJdE.js +0 -177
  620. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~ncdxw0bh-ClHnt5lR.js +0 -10
  621. package/build/assets/vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CqXiHwjU.js +0 -2
  622. package/build/assets/x-Cb0WAtak.js +0 -1
  623. /package/build/assets/{__vite-browser-external-4xJsU2-u.js → __vite-browser-external-DU-Cb_sT.js} +0 -0
  624. /package/build/assets/{automation-BU8zu-FP.js → automation-BVEmGghX.js} +0 -0
  625. /package/build/assets/{checkmark-h7udgXMM.js → checkmark-DhcMGwtO.js} +0 -0
  626. /package/build/assets/{close-p3Op5lxI.js → close-DO5Rq_CS.js} +0 -0
  627. /package/build/assets/{code-tag-DYlAhEQY.js → code-tag-BvjtzUsr.js} +0 -0
  628. /package/build/assets/{color-themes-DPBzNtVg.js → color-themes-bVMmJJG6.js} +0 -0
  629. /package/build/assets/{common-Dh7OqABE.js → common-CxbUL3nR.js} +0 -0
  630. /package/build/assets/{conversation-local-storage-F6zVMM--.js → conversation-local-storage-B31voBg7.js} +0 -0
  631. /package/build/assets/{copy-BLmGeJcd.js → copy-DLUw2us-.js} +0 -0
  632. /package/build/assets/{createLucideIcon-CVAsW2Yo.js → createLucideIcon-D4Tak8A1.js} +0 -0
  633. /package/build/assets/{dist-CodhvuAP.js → dist-Dj01FXbZ.js} +0 -0
  634. /package/build/assets/{environment-switch-store-DkjlKWzN.js → environment-switch-store-D9hB9PvY.js} +0 -0
  635. /package/build/assets/{extension-module-card-classes-9V3J9J_b.js → extension-module-card-classes-BlO4w702.js} +0 -0
  636. /package/build/assets/{folder-mMWFvaw0.js → folder-ynxP2EIL.js} +0 -0
  637. /package/build/assets/{get-language-from-path-CPNnuVhI.js → get-language-from-path-rWEQrOGU.js} +0 -0
  638. /package/build/assets/{git-status-mapper-BI8FyUVp.js → git-status-mapper-C3rfzUex.js} +0 -0
  639. /package/build/assets/{handle-capture-consent-CPMXU29K.js → handle-capture-consent-DDnXMC9Y.js} +0 -0
  640. /package/build/assets/{iconBase-DaTRRUjy.js → iconBase-CuvxAQZ5.js} +0 -0
  641. /package/build/assets/{link-external-DfKQroKX.js → link-external-BVDiJfZt.js} +0 -0
  642. /package/build/assets/{llm-subscription-DtsX5Lhg.js → llm-subscription-BkdHwtQe.js} +0 -0
  643. /package/build/assets/{map-provider-BM2SJarp.js → map-provider-XSFHmdDs.js} +0 -0
  644. /package/build/assets/{middleware-DYHYNAnP.js → middleware-CWYDMVuG.js} +0 -0
  645. /package/build/assets/{modal-backdrop-zVwfOJZr.js → modal-backdrop-Dsmzgr5s.js} +0 -0
  646. /package/build/assets/{navigation-context-DPs2G0X8.js → navigation-context-SjzfpygH.js} +0 -0
  647. /package/build/assets/{objectWithoutPropertiesLoose-BgYIAs2y.js → objectWithoutPropertiesLoose-CQwg6tC0.js} +0 -0
  648. /package/build/assets/{openhands-logo-bcNw5bkY.js → openhands-logo-C-gDp1wr.js} +0 -0
  649. /package/build/assets/{react-DPDgL6du.js → react-ao3tWj6K.js} +0 -0
  650. /package/build/assets/{search-BsjCEFNf.js → search-pb4UKTfK.js} +0 -0
  651. /package/build/assets/{settings-mQUckT0g.js → settings-DksoDv5z.js} +0 -0
  652. /package/build/assets/{settings-gear-MXCyZW0x.js → settings-gear-D_HVvE5L.js} +0 -0
  653. /package/build/assets/{settings-like-page-layout-classes-DENKlZpD.js → settings-like-page-layout-classes-DLrsPCaI.js} +0 -0
  654. /package/build/assets/{settings-section-header-context-COMOIaxV.js → settings-section-header-context-C2MUIG88.js} +0 -0
  655. /package/build/assets/{skills-9cDZONKh.js → skills-CH4xgIh-.js} +0 -0
  656. /package/build/assets/{switch-skeleton-DqQwalyu.js → switch-skeleton-BpSOvZ-n.js} +0 -0
  657. /package/build/assets/{terminal-BuLtIrb9.js → terminal-Dokfkxn0.js} +0 -0
  658. /package/build/assets/{u-check-circle-BqoIxNz_.js → u-check-circle-DPWVO-9N.js} +0 -0
  659. /package/build/assets/{u-check-circle-half-LiwZkuFe.js → u-check-circle-half-BGNAAjOW.js} +0 -0
  660. /package/build/assets/{u-edit-DJ90xc8Z.js → u-edit-BIskOoEG.js} +0 -0
  661. /package/build/assets/{use-breakpoint-B-O0lQ84.js → use-breakpoint-OjLm94cF.js} +0 -0
  662. /package/build/assets/{use-click-outside-element-Bf4Omzot.js → use-click-outside-element-Jpt2WWd7.js} +0 -0
  663. /package/build/assets/{use-onboarding-completion-C_Swglzp.js → use-onboarding-completion-DkRpDTsD.js} +0 -0
  664. /package/build/assets/{v4-DbCkTSoU.js → v4-DPgam_jW.js} +0 -0
  665. /package/build/assets/{vendor~browser-Dqd33JyP.js → vendor~browser-BvEKaLBz.js} +0 -0
  666. /package/build/assets/{vendor~conversation-panel~conversation~alert-banner-DHDkknt5.js → vendor~conversation-panel~conversation~alert-banner-CznX01nZ.js} +0 -0
  667. /package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~i3v2mlbw-BrJQ3XZH.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~e0djk9ee-Cw6LUe8p.js} +0 -0
  668. /package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~k6tszsdc-Bb-xMtbv.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g9hift2g-DmmpG9SI.js} +0 -0
  669. /package/build/assets/{vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~byh8a1g4-XNPdpuO8.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~jkpzbynd-CkpBIhVe.js} +0 -0
  670. /package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DTzw2x50.js → vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BuL5kjfS.js} +0 -0
  671. /package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~automations-~ki5qnp0d-rV6d1Iv_.js → vendor~root-layout~index-home~home~conversation-panel~conversation~launch~skills-settings~a~j2jlu22h-DUYl8gbZ.js} +0 -0
  672. /package/build/assets/{vendor~root-layout~home~mcp~automations-list~onboarding-modal-CXyYYvYh.js → vendor~root-layout~index-home~home~mcp~automations-list~onboarding-modal-pIgQDxTc.js} +0 -0
  673. /package/build/assets/{vendor~terminal-aeP3PnKf.js → vendor~terminal-jAaNQWS9.js} +0 -0
  674. /package/build/assets/{x-mark-Batp6gXa.js → x-mark-C5przfXl.js} +0 -0
@@ -140,6 +140,7 @@
140
140
  "SETTINGS$AGENT_PROFILE_NO_LLM": "請先建立一個LLM設定檔以定義OpenHands代理。",
141
141
  "CHAT$AGENT_PROFILE_PLACEHOLDER": "代理設定檔",
142
142
  "CHAT$MANAGE_AGENT_PROFILES": "管理代理設定檔",
143
+ "CHAT$START_NEW_WITH_PROFILE_HINT": "選擇後將開始新對話",
143
144
  "SETTINGS$ENABLE_MEMORY_CONDENSATION": "啟用記憶體凝縮",
144
145
  "SETTINGS$CONDENSER_MAX_SIZE": "記憶體凝縮最大歷史大小",
145
146
  "SETTINGS$CONDENSER_MAX_SIZE_TOOLTIP": "超過此事件數後,凝縮器會摘要歷史。最小 20。",
@@ -795,6 +796,11 @@
795
796
  "AUTOMATIONS$WEEKDAY_FRI": "星期五",
796
797
  "AUTOMATIONS$WEEKDAY_SAT": "星期六",
797
798
  "AUTOMATIONS$EDIT_PROMPT_HINT": "編輯僅適用於後續執行。",
799
+ "AUTOMATIONS$TIMEOUT": "超時(秒)",
800
+ "AUTOMATIONS$TIMEOUT_HINT": "單次執行的最長時間。留空則使用預設值600秒(10分鐘);最大1800秒(30分鐘)。",
801
+ "AUTOMATIONS$ERROR_TIMEOUT_INVALID_NUMBER": "超時必須是有效數字",
802
+ "AUTOMATIONS$ERROR_TIMEOUT_POSITIVE": "超時必須為正數",
803
+ "AUTOMATIONS$ERROR_TIMEOUT_MAX_EXCEEDED": "超時不能超過1800秒(30分鐘)",
798
804
  "AUTOMATIONS$CUSTOM_SCHEDULE_HINT": "此自動化使用自訂排程。已停用頻率編輯以避免破壞它。",
799
805
  "AUTOMATIONS$EDIT_SUCCESS": "自動化已更新",
800
806
  "AUTOMATIONS$EDIT_ERROR": "無法更新自動化",
@@ -1146,6 +1152,9 @@
1146
1152
  "DIFF_VIEWER$NO_CHANGES": "OpenHands尚未進行任何更改",
1147
1153
  "DIFF_VIEWER$FILE_DELETED": "此檔案已被刪除,無法預覽其先前內容。",
1148
1154
  "DIFF_VIEWER$WAITING_FOR_RUNTIME": "等待運行時啟動...",
1155
+ "DIFF_VIEWER$COMMITS": "提交記錄",
1156
+ "DIFF_VIEWER$NO_COMMITS": "尚無提交",
1157
+ "DIFF_VIEWER$COMMITS_CAP": "顯示最新的 {{count}} 個提交",
1149
1158
  "SYSTEM_MESSAGE_MODAL$TITLE": "代理工具和元數據",
1150
1159
  "SYSTEM_MESSAGE_MODAL$AGENT_CLASS": "代理類別:",
1151
1160
  "SYSTEM_MESSAGE_MODAL$OPENHANDS_VERSION": "OpenHands 版本:",
@@ -0,0 +1,2 @@
1
+ require(`../../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./http-client.cjs`),t=require(`./openhands-client.cjs`),n=require(`./device-flow-client.cjs`);var r=`/api/v1/settings/profiles`,i=100,a=class extends t.OpenHandsClient{constructor(e){super(e),this.kind=`cloud`,this.orgId=e.orgId??null,this.proxy=e.proxy?{...e.proxy,host:e.proxy.host.replace(/\/+$/,``),path:e.proxy.path??`/api/cloud-proxy`}:void 0}async request(e){return e.hostOverride?this.requestThroughProxy(e):this.requestDirect(e)}startDeviceFlow(e={}){return n.startDeviceFlow(this.host,e)}pollForToken(e,t){return n.pollForToken(this.host,e,t)}async getOrganizations(){let e=await this.get(`/api/organizations`);return{items:e?.items??[],currentOrgId:e?.current_org_id??null}}getCurrentApiKey(){return this.get(`/api/keys/current`)}async getOrganizationMe(e){let t=await this.get(`/api/organizations/${encodeURIComponent(e)}/me`);return{orgId:t?.org_id??e,userId:t?.user_id??``,role:t?.role??null,permissions:Array.isArray(t?.permissions)?t.permissions:null}}getSettings(){return this.get(`/api/v1/settings`)}async getSettingsWithDerivedFields(){let e=await this.getSettings();return{...e,agent_settings:f(e),conversation_settings:p(e),llm_api_key_set:!!e.llm_api_key_set,search_api_key_set:!!e.search_api_key_set,provider_tokens_set:e.provider_tokens_set}}async saveSettings(e){let t={};if(e.agent_settings_diff){let n={...e.agent_settings_diff};n.agent_context===null&&delete n.agent_context,Object.keys(n).length>0&&(t.agent_settings_diff=n)}if(e.conversation_settings_diff&&Object.keys(e.conversation_settings_diff).length>0&&(t.conversation_settings_diff=e.conversation_settings_diff),e.app_preferences)for(let[n,r]of Object.entries(e.app_preferences))r!==void 0&&(t[n]=r);await this.post(`/api/v1/settings`,t)}getSettingsSchema(){return this.get(`/api/v1/settings/agent-schema`)}getConversationSettingsSchema(){return this.get(`/api/v1/settings/conversation-schema`)}listProfiles(){return this.get(this.profileBasePath())}async getProfile(e){let t=await this.get(`${this.profileBasePath()}/${encodeURIComponent(e)}`);return{name:t.name,config:t.config??t.llm??{},api_key_set:t.api_key_set??!1}}saveProfile(e,t){return this.post(`${this.profileBasePath()}/${encodeURIComponent(e)}`,t)}deleteProfile(e){return this.delete(`${this.profileBasePath()}/${encodeURIComponent(e)}`)}renameProfile(e,t){return this.post(`${this.profileBasePath()}/${encodeURIComponent(e)}/rename`,{new_name:t})}async activateProfile(e){let t=await this.post(`${this.profileBasePath()}/${encodeURIComponent(e)}/activate`,{});return{name:t.name,message:t.message,llm_applied:t.model!=null||t.llm!=null}}async listSecrets(){let e=[],t=null;do{let n=new URLSearchParams({limit:String(i)});t&&n.set(`page_id`,t);let r=await this.get(`/api/v1/secrets/search?${n.toString()}`);e.push(...r.items??[]),t=r.next_page_id}while(t);return e}async createSecret(e,t,n){await this.post(`/api/v1/secrets`,{name:e,value:t,description:n})}async updateSecret(e,t,n){await this.put(`/api/v1/secrets/${encodeURIComponent(e)}`,{name:t,description:n})}async deleteSecret(e){await this.delete(`/api/v1/secrets/${encodeURIComponent(e)}`)}async listSkills(){let e=[],t=null;do{let n=new URLSearchParams({limit:String(i)});t&&n.set(`page_id`,t);let r=await this.get(`/api/v1/skills/search?${n.toString()}`);e.push(...r.items??[]),t=r.next_page_id}while(t);return e}searchRepositories(e){let t=new URLSearchParams;return t.set(`provider`,e.provider),t.set(`limit`,String(e.limit??100)),e.query&&t.set(`query`,e.query),e.pageId&&t.set(`page_id`,e.pageId),e.installationId&&t.set(`installation_id`,e.installationId),this.get(`/api/v1/git/repositories/search?${t.toString()}`)}getInstallations(e){let t=new URLSearchParams;return t.set(`provider`,e.provider),t.set(`limit`,String(e.limit??100)),e.pageId&&t.set(`page_id`,e.pageId),this.get(`/api/v1/git/installations/search?${t.toString()}`)}getRepositoryBranches(e){let t=new URLSearchParams;return t.set(`provider`,e.provider),t.set(`repository`,e.repository),t.set(`limit`,String(e.limit??30)),t.set(`query`,e.query??``),e.pageId&&t.set(`page_id`,e.pageId),this.get(`/api/v1/git/branches/search?${t.toString()}`)}getSuggestedTasks(e={}){let t=new URLSearchParams;return t.set(`limit`,String(e.limit??30)),e.pageId&&t.set(`page_id`,e.pageId),this.get(`/api/v1/git/suggested-tasks/search?${t.toString()}`)}searchModels(e){return this.get(`/api/v1/config/models/search${u(e)}`)}searchProviders(e){return this.get(`/api/v1/config/providers/search${u(e)}`)}searchConversations(e=20,t){let n=new URLSearchParams;return n.set(`limit`,String(e)),t&&n.set(`page_id`,t),n.set(`sort_order`,`UPDATED_AT_DESC`),this.get(`/api/v1/app-conversations/search?${n.toString()}`)}getConversations(e){if(e.length===0)return Promise.resolve([]);let t=new URLSearchParams;for(let n of e)t.append(`ids`,n);return this.get(`/api/v1/app-conversations?${t}`)}createConversation(e){return this.post(`/api/v1/app-conversations`,e)}downloadConversation(e){return this.get(`/api/v1/app-conversations/${e}/download`,{responseType:`blob`})}async deleteConversation(e){await this.delete(`/api/v1/app-conversations/${e}`)}updateConversationPublicFlag(e,t){return this.patch(`/api/v1/app-conversations/${e}`,{public:t})}async pauseSandbox(e){await this.post(`/api/v1/sandboxes/${e}/pause`,{})}async resumeSandbox(e){await this.post(`/api/v1/sandboxes/${e}/resume`,{})}getSandboxes(e){if(e.length===0)return Promise.resolve([]);let t=new URLSearchParams;for(let n of e)t.append(`id`,n);return this.get(`/api/v1/sandboxes?${t}`)}readConversationFile(e,t){let n=new URLSearchParams({file_path:t});return this.get(`/api/v1/app-conversations/${e}/file?${n}`,{responseType:`text`})}async getConversationStartTask(e){let t=new URLSearchParams;return t.append(`ids`,e),(await this.get(`/api/v1/app-conversations/start-tasks?${t}`))?.[0]??null}async switchConversationProfile(e,t){await this.post(`/api/v1/app-conversations/${e}/switch_profile`,{profile_name:t})}async switchConversationAcpModel(e,t){await this.post(`/api/v1/app-conversations/${e}/switch_acp_model`,{model:t})}async listAutomations(e=50,t=0){return this.get(`/api/automation/v1?${d(e,t)}`)}getAutomation(e){return this.get(`/api/automation/v1/${encodeURIComponent(e)}`)}updateAutomation(e,t){return this.patch(`/api/automation/v1/${encodeURIComponent(e)}`,t)}async deleteAutomation(e){await this.delete(`/api/automation/v1/${encodeURIComponent(e)}`)}dispatchAutomation(e){return this.post(`/api/automation/v1/${encodeURIComponent(e)}/dispatch`)}listAutomationRuns(e,t=50,n=0){return this.get(`/api/automation/v1/${encodeURIComponent(e)}/runs?${d(t,n)}`)}downloadAutomationTarball(e){return this.get(`/api/automation/v1/${encodeURIComponent(e)}/tarball`,{responseType:`blob`})}getAutomationHealth(){return this.get(`/api/automation/health`,{timeoutSeconds:5})}profileBasePath(){return this.orgId?`/api/organizations/${encodeURIComponent(this.orgId)}/profiles`:r}buildUpstreamAuthHeaders(e){let t=e.authMode??`bearer`;return t===`none`?{}:t===`session-api-key`?e.sessionApiKey?{"X-Session-API-Key":e.sessionApiKey}:{}:this.apiKey?{Authorization:`Bearer ${this.apiKey}`}:{}}async requestDirect(e){let t={...this.buildUpstreamAuthHeaders(e),...this.orgId?{"X-Org-Id":this.orgId}:{},...e.headers??{}};return o({host:this.host,method:e.method,path:e.path,params:e.params,body:e.body,headers:t,timeoutMs:e.timeoutSeconds?e.timeoutSeconds*1e3:this.timeout,acceptableStatusCodes:e.acceptableStatusCodes,responseType:e.responseType})}async requestThroughProxy(e){if(!this.proxy)throw Error(`CloudClient proxy options are required for hostOverride requests`);let t={...this.buildUpstreamAuthHeaders(e),...this.orgId?{"X-Org-Id":this.orgId}:{},...e.headers??{}},n={"Content-Type":`application/json`,...this.proxy.apiKey?{"X-Session-API-Key":this.proxy.apiKey}:{},...this.proxy.headers??{}},r=this.proxy.path??`/api/cloud-proxy`;return o({host:this.proxy.host,method:`POST`,path:r,body:{host:e.hostOverride,method:e.method,path:l(e.path,e.params),headers:t,body:e.body??null,...e.timeoutSeconds?{timeout_seconds:e.timeoutSeconds}:{}},headers:n,timeoutMs:this.timeout,acceptableStatusCodes:e.acceptableStatusCodes,responseType:e.responseType})}};async function o(e){let t=`${e.host.replace(/\/+$/,``)}${l(e.path,e.params)}`,n={...e.body instanceof FormData?{}:{"Content-Type":`application/json`},...e.headers??{}},r={method:e.method,headers:n,signal:AbortSignal.timeout(e.timeoutMs)};e.body!==void 0&&e.method!==`GET`&&(r.body=e.body instanceof FormData?e.body:JSON.stringify(e.body));let i;try{i=await fetch(t,r)}catch(t){throw t instanceof Error&&(t.name===`TimeoutError`||t.name===`AbortError`)?Error(`Request timeout after ${e.timeoutMs}ms`,{cause:t}):t}if(!(e.acceptableStatusCodes?.has(i.status)||!e.acceptableStatusCodes&&i.ok))throw await s(i);return c(i,e.responseType??`auto`)}async function s(t){let n;try{n=t.headers.get(`content-type`)?.includes(`application/json`)?await t.json():await t.text()}catch{n=null}return new e.HttpError(t.status,t.statusText,n,`HTTP request failed (${t.status} ${t.statusText}): ${JSON.stringify(n)}`)}async function c(e,t){if(e.status===204)return;if(t===`blob`)return await e.blob();if(t===`arrayBuffer`)return await e.arrayBuffer();if(t===`text`)return await e.text();let n=e.headers.get(`content-type`);return t===`json`||n?.includes(`application/json`)?await e.json():await e.text()}function l(e,t){if(!t)return e;let[n,r=``]=e.split(`?`),i=new URLSearchParams(r);for(let[e,n]of Object.entries(t))n!=null&&(Array.isArray(n)?n.forEach(t=>i.append(e,String(t))):i.append(e,String(n)));let a=i.toString();return a?`${n}?${a}`:n}function u(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))r!==void 0&&t.set(n,String(r));let n=t.toString();return n?`?${n}`:``}function d(e,t){let n=new URLSearchParams;return n.set(`limit`,String(e)),n.set(`offset`,String(t)),n.toString()}function f(e){if(e.agent_settings&&Object.keys(e.agent_settings).length>0)return e.agent_settings;let t={},n={};typeof e.llm_model==`string`&&(n.model=e.llm_model),typeof e.llm_base_url==`string`&&(n.base_url=e.llm_base_url),typeof e.llm_api_key==`string`&&(n.api_key=e.llm_api_key),Object.keys(n).length>0&&(t.llm=n);let r={};return typeof e.enable_default_condenser==`boolean`&&(r.enabled=e.enable_default_condenser),typeof e.condenser_max_size==`number`&&(r.max_size=e.condenser_max_size),Object.keys(r).length>0&&(t.condenser=r),typeof e.agent==`string`&&(t.agent=e.agent),e.mcp_config&&Object.keys(e.mcp_config).length>0&&(t.mcp_config=e.mcp_config),t}function p(e){if(e.conversation_settings&&Object.keys(e.conversation_settings).length>0)return e.conversation_settings;let t={};return typeof e.confirmation_mode==`boolean`&&(t.confirmation_mode=e.confirmation_mode),(typeof e.security_analyzer==`string`||e.security_analyzer===null)&&(t.security_analyzer=e.security_analyzer),typeof e.max_iterations==`number`&&(t.max_iterations=e.max_iterations),t}exports.CloudClient=a;
2
+ //# sourceMappingURL=cloud-client.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-client.cjs","names":["OpenHandsClient","startDeviceFlow","pollForToken","HttpError"],"sources":["../../../../../../node_modules/@openhands/typescript-client/dist/client/cloud-client.js"],"sourcesContent":["import { HttpError } from './http-client.js';\nimport { OpenHandsClient, } from './openhands-client.js';\nimport { pollForToken, startDeviceFlow, } from './device-flow-client.js';\nconst SETTINGS_PROFILES_PATH = '/api/v1/settings/profiles';\nconst DEFAULT_PAGE_LIMIT = 100;\nexport class CloudClient extends OpenHandsClient {\n constructor(options) {\n super(options);\n this.kind = 'cloud';\n this.orgId = options.orgId ?? null;\n this.proxy = options.proxy\n ? {\n ...options.proxy,\n host: options.proxy.host.replace(/\\/+$/, ''),\n path: options.proxy.path ?? '/api/cloud-proxy',\n }\n : undefined;\n }\n async request(options) {\n return options.hostOverride\n ? this.requestThroughProxy(options)\n : this.requestDirect(options);\n }\n startDeviceFlow(options = {}) {\n return startDeviceFlow(this.host, options);\n }\n pollForToken(deviceCode, options) {\n return pollForToken(this.host, deviceCode, options);\n }\n async getOrganizations() {\n const data = await this.get('/api/organizations');\n return {\n items: data?.items ?? [],\n currentOrgId: data?.current_org_id ?? null,\n };\n }\n getCurrentApiKey() {\n return this.get('/api/keys/current');\n }\n async getOrganizationMe(orgId) {\n const data = await this.get(`/api/organizations/${encodeURIComponent(orgId)}/me`);\n return {\n orgId: data?.org_id ?? orgId,\n userId: data?.user_id ?? '',\n role: data?.role ?? null,\n permissions: Array.isArray(data?.permissions) ? data.permissions : null,\n };\n }\n getSettings() {\n return this.get('/api/v1/settings');\n }\n async getSettingsWithDerivedFields() {\n const flat = await this.getSettings();\n return {\n ...flat,\n agent_settings: deriveAgentSettings(flat),\n conversation_settings: deriveConversationSettings(flat),\n llm_api_key_set: !!flat.llm_api_key_set,\n search_api_key_set: !!flat.search_api_key_set,\n provider_tokens_set: flat.provider_tokens_set,\n };\n }\n async saveSettings(diff) {\n const body = {};\n if (diff.agent_settings_diff) {\n const agentDiff = { ...diff.agent_settings_diff };\n if (agentDiff.agent_context === null) {\n delete agentDiff.agent_context;\n }\n if (Object.keys(agentDiff).length > 0) {\n body.agent_settings_diff = agentDiff;\n }\n }\n if (diff.conversation_settings_diff &&\n Object.keys(diff.conversation_settings_diff).length > 0) {\n body.conversation_settings_diff = diff.conversation_settings_diff;\n }\n if (diff.app_preferences) {\n for (const [key, value] of Object.entries(diff.app_preferences)) {\n if (value !== undefined) {\n body[key] = value;\n }\n }\n }\n await this.post('/api/v1/settings', body);\n }\n getSettingsSchema() {\n return this.get('/api/v1/settings/agent-schema');\n }\n getConversationSettingsSchema() {\n return this.get('/api/v1/settings/conversation-schema');\n }\n listProfiles() {\n return this.get(this.profileBasePath());\n }\n async getProfile(name) {\n const result = await this.get(`${this.profileBasePath()}/${encodeURIComponent(name)}`);\n return {\n name: result.name,\n config: result.config ?? result.llm ?? {},\n api_key_set: result.api_key_set ?? false,\n };\n }\n saveProfile(name, request) {\n return this.post(`${this.profileBasePath()}/${encodeURIComponent(name)}`, request);\n }\n deleteProfile(name) {\n return this.delete(`${this.profileBasePath()}/${encodeURIComponent(name)}`);\n }\n renameProfile(name, newName) {\n return this.post(`${this.profileBasePath()}/${encodeURIComponent(name)}/rename`, { new_name: newName });\n }\n async activateProfile(name) {\n const result = await this.post(`${this.profileBasePath()}/${encodeURIComponent(name)}/activate`, {});\n return {\n name: result.name,\n message: result.message,\n llm_applied: result.model != null || result.llm != null,\n };\n }\n async listSecrets() {\n const secrets = [];\n let pageId = null;\n do {\n const query = new URLSearchParams({ limit: String(DEFAULT_PAGE_LIMIT) });\n if (pageId)\n query.set('page_id', pageId);\n const page = await this.get(`/api/v1/secrets/search?${query.toString()}`);\n secrets.push(...(page.items ?? []));\n pageId = page.next_page_id;\n } while (pageId);\n return secrets;\n }\n async createSecret(name, value, description) {\n await this.post('/api/v1/secrets', { name, value, description });\n }\n async updateSecret(secretToEdit, name, description) {\n await this.put(`/api/v1/secrets/${encodeURIComponent(secretToEdit)}`, {\n name,\n description,\n });\n }\n async deleteSecret(name) {\n await this.delete(`/api/v1/secrets/${encodeURIComponent(name)}`);\n }\n async listSkills() {\n const skills = [];\n let pageId = null;\n do {\n const query = new URLSearchParams({ limit: String(DEFAULT_PAGE_LIMIT) });\n if (pageId)\n query.set('page_id', pageId);\n const page = await this.get(`/api/v1/skills/search?${query.toString()}`);\n skills.push(...(page.items ?? []));\n pageId = page.next_page_id;\n } while (pageId);\n return skills;\n }\n searchRepositories(args) {\n const params = new URLSearchParams();\n params.set('provider', args.provider);\n params.set('limit', String(args.limit ?? 100));\n if (args.query)\n params.set('query', args.query);\n if (args.pageId)\n params.set('page_id', args.pageId);\n if (args.installationId)\n params.set('installation_id', args.installationId);\n return this.get(`/api/v1/git/repositories/search?${params.toString()}`);\n }\n getInstallations(args) {\n const params = new URLSearchParams();\n params.set('provider', args.provider);\n params.set('limit', String(args.limit ?? 100));\n if (args.pageId)\n params.set('page_id', args.pageId);\n return this.get(`/api/v1/git/installations/search?${params.toString()}`);\n }\n getRepositoryBranches(args) {\n const params = new URLSearchParams();\n params.set('provider', args.provider);\n params.set('repository', args.repository);\n params.set('limit', String(args.limit ?? 30));\n params.set('query', args.query ?? '');\n if (args.pageId)\n params.set('page_id', args.pageId);\n return this.get(`/api/v1/git/branches/search?${params.toString()}`);\n }\n getSuggestedTasks(args = {}) {\n const params = new URLSearchParams();\n params.set('limit', String(args.limit ?? 30));\n if (args.pageId)\n params.set('page_id', args.pageId);\n return this.get(`/api/v1/git/suggested-tasks/search?${params.toString()}`);\n }\n searchModels(params) {\n return this.get(`/api/v1/config/models/search${buildQuerySuffix(params)}`);\n }\n searchProviders(params) {\n return this.get(`/api/v1/config/providers/search${buildQuerySuffix(params)}`);\n }\n searchConversations(limit = 20, pageId) {\n const params = new URLSearchParams();\n params.set('limit', String(limit));\n if (pageId)\n params.set('page_id', pageId);\n params.set('sort_order', 'UPDATED_AT_DESC');\n return this.get(`/api/v1/app-conversations/search?${params.toString()}`);\n }\n getConversations(ids) {\n if (ids.length === 0)\n return Promise.resolve([]);\n const params = new URLSearchParams();\n for (const id of ids)\n params.append('ids', id);\n return this.get(`/api/v1/app-conversations?${params}`);\n }\n createConversation(request) {\n return this.post('/api/v1/app-conversations', request);\n }\n downloadConversation(conversationId) {\n return this.get(`/api/v1/app-conversations/${conversationId}/download`, {\n responseType: 'blob',\n });\n }\n async deleteConversation(conversationId) {\n await this.delete(`/api/v1/app-conversations/${conversationId}`);\n }\n updateConversationPublicFlag(conversationId, isPublic) {\n return this.patch(`/api/v1/app-conversations/${conversationId}`, {\n public: isPublic,\n });\n }\n async pauseSandbox(sandboxId) {\n await this.post(`/api/v1/sandboxes/${sandboxId}/pause`, {});\n }\n async resumeSandbox(sandboxId) {\n await this.post(`/api/v1/sandboxes/${sandboxId}/resume`, {});\n }\n getSandboxes(ids) {\n if (ids.length === 0)\n return Promise.resolve([]);\n const params = new URLSearchParams();\n for (const id of ids)\n params.append('id', id);\n return this.get(`/api/v1/sandboxes?${params}`);\n }\n readConversationFile(conversationId, filePath) {\n const query = new URLSearchParams({ file_path: filePath });\n return this.get(`/api/v1/app-conversations/${conversationId}/file?${query}`, {\n responseType: 'text',\n });\n }\n async getConversationStartTask(taskId) {\n const params = new URLSearchParams();\n params.append('ids', taskId);\n const data = await this.get(`/api/v1/app-conversations/start-tasks?${params}`);\n return data?.[0] ?? null;\n }\n async switchConversationProfile(conversationId, profileName) {\n await this.post(`/api/v1/app-conversations/${conversationId}/switch_profile`, {\n profile_name: profileName,\n });\n }\n async switchConversationAcpModel(conversationId, model) {\n await this.post(`/api/v1/app-conversations/${conversationId}/switch_acp_model`, { model });\n }\n async listAutomations(limit = 50, offset = 0) {\n return this.get(`/api/automation/v1?${paginationQuery(limit, offset)}`);\n }\n getAutomation(id) {\n return this.get(`/api/automation/v1/${encodeURIComponent(id)}`);\n }\n updateAutomation(id, body) {\n return this.patch(`/api/automation/v1/${encodeURIComponent(id)}`, body);\n }\n async deleteAutomation(id) {\n await this.delete(`/api/automation/v1/${encodeURIComponent(id)}`);\n }\n dispatchAutomation(id) {\n return this.post(`/api/automation/v1/${encodeURIComponent(id)}/dispatch`);\n }\n listAutomationRuns(id, limit = 50, offset = 0) {\n return this.get(`/api/automation/v1/${encodeURIComponent(id)}/runs?${paginationQuery(limit, offset)}`);\n }\n downloadAutomationTarball(id) {\n return this.get(`/api/automation/v1/${encodeURIComponent(id)}/tarball`, {\n responseType: 'blob',\n });\n }\n getAutomationHealth() {\n return this.get('/api/automation/health', { timeoutSeconds: 5 });\n }\n profileBasePath() {\n return this.orgId\n ? `/api/organizations/${encodeURIComponent(this.orgId)}/profiles`\n : SETTINGS_PROFILES_PATH;\n }\n buildUpstreamAuthHeaders(options) {\n const mode = options.authMode ?? 'bearer';\n if (mode === 'none')\n return {};\n if (mode === 'session-api-key') {\n return options.sessionApiKey ? { 'X-Session-API-Key': options.sessionApiKey } : {};\n }\n if (!this.apiKey)\n return {};\n return { Authorization: `Bearer ${this.apiKey}` };\n }\n async requestDirect(options) {\n const headers = {\n ...this.buildUpstreamAuthHeaders(options),\n ...(this.orgId ? { 'X-Org-Id': this.orgId } : {}),\n ...(options.headers ?? {}),\n };\n return fetchAndParse({\n host: this.host,\n method: options.method,\n path: options.path,\n params: options.params,\n body: options.body,\n headers,\n timeoutMs: options.timeoutSeconds ? options.timeoutSeconds * 1000 : this.timeout,\n acceptableStatusCodes: options.acceptableStatusCodes,\n responseType: options.responseType,\n });\n }\n async requestThroughProxy(options) {\n if (!this.proxy) {\n throw new Error('CloudClient proxy options are required for hostOverride requests');\n }\n const upstreamHeaders = {\n ...this.buildUpstreamAuthHeaders(options),\n ...(this.orgId ? { 'X-Org-Id': this.orgId } : {}),\n ...(options.headers ?? {}),\n };\n const proxyHeaders = {\n 'Content-Type': 'application/json',\n ...(this.proxy.apiKey ? { 'X-Session-API-Key': this.proxy.apiKey } : {}),\n ...(this.proxy.headers ?? {}),\n };\n const proxyPath = this.proxy.path ?? '/api/cloud-proxy';\n return fetchAndParse({\n host: this.proxy.host,\n method: 'POST',\n path: proxyPath,\n body: {\n host: options.hostOverride,\n method: options.method,\n path: appendParams(options.path, options.params),\n headers: upstreamHeaders,\n body: options.body ?? null,\n ...(options.timeoutSeconds ? { timeout_seconds: options.timeoutSeconds } : {}),\n },\n headers: proxyHeaders,\n timeoutMs: this.timeout,\n acceptableStatusCodes: options.acceptableStatusCodes,\n responseType: options.responseType,\n });\n }\n}\nasync function fetchAndParse(options) {\n const url = `${options.host.replace(/\\/+$/, '')}${appendParams(options.path, options.params)}`;\n const headers = {\n ...(options.body instanceof FormData ? {} : { 'Content-Type': 'application/json' }),\n ...(options.headers ?? {}),\n };\n const init = {\n method: options.method,\n headers,\n signal: AbortSignal.timeout(options.timeoutMs),\n };\n if (options.body !== undefined && options.method !== 'GET') {\n init.body = options.body instanceof FormData ? options.body : JSON.stringify(options.body);\n }\n let response;\n try {\n response = await fetch(url, init);\n }\n catch (error) {\n // AbortSignal.timeout() aborts with a TimeoutError; some runtimes\n // surface plain AbortError instead.\n if (error instanceof Error && (error.name === 'TimeoutError' || error.name === 'AbortError')) {\n throw new Error(`Request timeout after ${options.timeoutMs}ms`, { cause: error });\n }\n throw error;\n }\n const isAcceptable = options.acceptableStatusCodes?.has(response.status) ||\n (!options.acceptableStatusCodes && response.ok);\n if (!isAcceptable) {\n throw await buildHttpError(response);\n }\n return parseResponse(response, options.responseType ?? 'auto');\n}\nasync function buildHttpError(response) {\n let errorContent;\n try {\n const contentType = response.headers.get('content-type');\n errorContent = contentType?.includes('application/json')\n ? await response.json()\n : await response.text();\n }\n catch {\n errorContent = null;\n }\n return new HttpError(response.status, response.statusText, errorContent, `HTTP request failed (${response.status} ${response.statusText}): ${JSON.stringify(errorContent)}`);\n}\nasync function parseResponse(response, responseType) {\n if (response.status === 204) {\n return undefined;\n }\n if (responseType === 'blob')\n return (await response.blob());\n if (responseType === 'arrayBuffer')\n return (await response.arrayBuffer());\n if (responseType === 'text')\n return (await response.text());\n const contentType = response.headers.get('content-type');\n if (responseType === 'json' || contentType?.includes('application/json')) {\n return (await response.json());\n }\n return (await response.text());\n}\nfunction appendParams(path, params) {\n if (!params)\n return path;\n const [base, existingQuery = ''] = path.split('?');\n const search = new URLSearchParams(existingQuery);\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined || value === null)\n continue;\n if (Array.isArray(value)) {\n value.forEach((item) => search.append(key, String(item)));\n }\n else {\n search.append(key, String(value));\n }\n }\n const query = search.toString();\n return query ? `${base}?${query}` : base;\n}\nfunction buildQuerySuffix(params) {\n const search = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined)\n search.set(key, String(value));\n }\n const query = search.toString();\n return query ? `?${query}` : '';\n}\nfunction paginationQuery(limit, offset) {\n const params = new URLSearchParams();\n params.set('limit', String(limit));\n params.set('offset', String(offset));\n return params.toString();\n}\nfunction deriveAgentSettings(flat) {\n if (flat.agent_settings && Object.keys(flat.agent_settings).length > 0) {\n return flat.agent_settings;\n }\n const agent = {};\n const llm = {};\n if (typeof flat.llm_model === 'string')\n llm.model = flat.llm_model;\n if (typeof flat.llm_base_url === 'string')\n llm.base_url = flat.llm_base_url;\n if (typeof flat.llm_api_key === 'string')\n llm.api_key = flat.llm_api_key;\n if (Object.keys(llm).length > 0)\n agent.llm = llm;\n const condenser = {};\n if (typeof flat.enable_default_condenser === 'boolean') {\n condenser.enabled = flat.enable_default_condenser;\n }\n if (typeof flat.condenser_max_size === 'number') {\n condenser.max_size = flat.condenser_max_size;\n }\n if (Object.keys(condenser).length > 0)\n agent.condenser = condenser;\n if (typeof flat.agent === 'string')\n agent.agent = flat.agent;\n if (flat.mcp_config && Object.keys(flat.mcp_config).length > 0) {\n agent.mcp_config = flat.mcp_config;\n }\n return agent;\n}\nfunction deriveConversationSettings(flat) {\n if (flat.conversation_settings && Object.keys(flat.conversation_settings).length > 0) {\n return flat.conversation_settings;\n }\n const out = {};\n if (typeof flat.confirmation_mode === 'boolean') {\n out.confirmation_mode = flat.confirmation_mode;\n }\n if (typeof flat.security_analyzer === 'string' || flat.security_analyzer === null) {\n out.security_analyzer = flat.security_analyzer;\n }\n if (typeof flat.max_iterations === 'number') {\n out.max_iterations = flat.max_iterations;\n }\n return out;\n}\n//# sourceMappingURL=cloud-client.js.map"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -0,0 +1,351 @@
1
+ import { HttpError as e } from "./http-client.js";
2
+ import { OpenHandsClient as t } from "./openhands-client.js";
3
+ import { pollForToken as n, startDeviceFlow as r } from "./device-flow-client.js";
4
+ //#region node_modules/@openhands/typescript-client/dist/client/cloud-client.js
5
+ var i = "/api/v1/settings/profiles", a = 100, o = class extends t {
6
+ constructor(e) {
7
+ super(e), this.kind = "cloud", this.orgId = e.orgId ?? null, this.proxy = e.proxy ? {
8
+ ...e.proxy,
9
+ host: e.proxy.host.replace(/\/+$/, ""),
10
+ path: e.proxy.path ?? "/api/cloud-proxy"
11
+ } : void 0;
12
+ }
13
+ async request(e) {
14
+ return e.hostOverride ? this.requestThroughProxy(e) : this.requestDirect(e);
15
+ }
16
+ startDeviceFlow(e = {}) {
17
+ return r(this.host, e);
18
+ }
19
+ pollForToken(e, t) {
20
+ return n(this.host, e, t);
21
+ }
22
+ async getOrganizations() {
23
+ let e = await this.get("/api/organizations");
24
+ return {
25
+ items: e?.items ?? [],
26
+ currentOrgId: e?.current_org_id ?? null
27
+ };
28
+ }
29
+ getCurrentApiKey() {
30
+ return this.get("/api/keys/current");
31
+ }
32
+ async getOrganizationMe(e) {
33
+ let t = await this.get(`/api/organizations/${encodeURIComponent(e)}/me`);
34
+ return {
35
+ orgId: t?.org_id ?? e,
36
+ userId: t?.user_id ?? "",
37
+ role: t?.role ?? null,
38
+ permissions: Array.isArray(t?.permissions) ? t.permissions : null
39
+ };
40
+ }
41
+ getSettings() {
42
+ return this.get("/api/v1/settings");
43
+ }
44
+ async getSettingsWithDerivedFields() {
45
+ let e = await this.getSettings();
46
+ return {
47
+ ...e,
48
+ agent_settings: p(e),
49
+ conversation_settings: m(e),
50
+ llm_api_key_set: !!e.llm_api_key_set,
51
+ search_api_key_set: !!e.search_api_key_set,
52
+ provider_tokens_set: e.provider_tokens_set
53
+ };
54
+ }
55
+ async saveSettings(e) {
56
+ let t = {};
57
+ if (e.agent_settings_diff) {
58
+ let n = { ...e.agent_settings_diff };
59
+ n.agent_context === null && delete n.agent_context, Object.keys(n).length > 0 && (t.agent_settings_diff = n);
60
+ }
61
+ if (e.conversation_settings_diff && Object.keys(e.conversation_settings_diff).length > 0 && (t.conversation_settings_diff = e.conversation_settings_diff), e.app_preferences) for (let [n, r] of Object.entries(e.app_preferences)) r !== void 0 && (t[n] = r);
62
+ await this.post("/api/v1/settings", t);
63
+ }
64
+ getSettingsSchema() {
65
+ return this.get("/api/v1/settings/agent-schema");
66
+ }
67
+ getConversationSettingsSchema() {
68
+ return this.get("/api/v1/settings/conversation-schema");
69
+ }
70
+ listProfiles() {
71
+ return this.get(this.profileBasePath());
72
+ }
73
+ async getProfile(e) {
74
+ let t = await this.get(`${this.profileBasePath()}/${encodeURIComponent(e)}`);
75
+ return {
76
+ name: t.name,
77
+ config: t.config ?? t.llm ?? {},
78
+ api_key_set: t.api_key_set ?? !1
79
+ };
80
+ }
81
+ saveProfile(e, t) {
82
+ return this.post(`${this.profileBasePath()}/${encodeURIComponent(e)}`, t);
83
+ }
84
+ deleteProfile(e) {
85
+ return this.delete(`${this.profileBasePath()}/${encodeURIComponent(e)}`);
86
+ }
87
+ renameProfile(e, t) {
88
+ return this.post(`${this.profileBasePath()}/${encodeURIComponent(e)}/rename`, { new_name: t });
89
+ }
90
+ async activateProfile(e) {
91
+ let t = await this.post(`${this.profileBasePath()}/${encodeURIComponent(e)}/activate`, {});
92
+ return {
93
+ name: t.name,
94
+ message: t.message,
95
+ llm_applied: t.model != null || t.llm != null
96
+ };
97
+ }
98
+ async listSecrets() {
99
+ let e = [], t = null;
100
+ do {
101
+ let n = new URLSearchParams({ limit: String(a) });
102
+ t && n.set("page_id", t);
103
+ let r = await this.get(`/api/v1/secrets/search?${n.toString()}`);
104
+ e.push(...r.items ?? []), t = r.next_page_id;
105
+ } while (t);
106
+ return e;
107
+ }
108
+ async createSecret(e, t, n) {
109
+ await this.post("/api/v1/secrets", {
110
+ name: e,
111
+ value: t,
112
+ description: n
113
+ });
114
+ }
115
+ async updateSecret(e, t, n) {
116
+ await this.put(`/api/v1/secrets/${encodeURIComponent(e)}`, {
117
+ name: t,
118
+ description: n
119
+ });
120
+ }
121
+ async deleteSecret(e) {
122
+ await this.delete(`/api/v1/secrets/${encodeURIComponent(e)}`);
123
+ }
124
+ async listSkills() {
125
+ let e = [], t = null;
126
+ do {
127
+ let n = new URLSearchParams({ limit: String(a) });
128
+ t && n.set("page_id", t);
129
+ let r = await this.get(`/api/v1/skills/search?${n.toString()}`);
130
+ e.push(...r.items ?? []), t = r.next_page_id;
131
+ } while (t);
132
+ return e;
133
+ }
134
+ searchRepositories(e) {
135
+ let t = new URLSearchParams();
136
+ return t.set("provider", e.provider), t.set("limit", String(e.limit ?? 100)), e.query && t.set("query", e.query), e.pageId && t.set("page_id", e.pageId), e.installationId && t.set("installation_id", e.installationId), this.get(`/api/v1/git/repositories/search?${t.toString()}`);
137
+ }
138
+ getInstallations(e) {
139
+ let t = new URLSearchParams();
140
+ return t.set("provider", e.provider), t.set("limit", String(e.limit ?? 100)), e.pageId && t.set("page_id", e.pageId), this.get(`/api/v1/git/installations/search?${t.toString()}`);
141
+ }
142
+ getRepositoryBranches(e) {
143
+ let t = new URLSearchParams();
144
+ return t.set("provider", e.provider), t.set("repository", e.repository), t.set("limit", String(e.limit ?? 30)), t.set("query", e.query ?? ""), e.pageId && t.set("page_id", e.pageId), this.get(`/api/v1/git/branches/search?${t.toString()}`);
145
+ }
146
+ getSuggestedTasks(e = {}) {
147
+ let t = new URLSearchParams();
148
+ return t.set("limit", String(e.limit ?? 30)), e.pageId && t.set("page_id", e.pageId), this.get(`/api/v1/git/suggested-tasks/search?${t.toString()}`);
149
+ }
150
+ searchModels(e) {
151
+ return this.get(`/api/v1/config/models/search${d(e)}`);
152
+ }
153
+ searchProviders(e) {
154
+ return this.get(`/api/v1/config/providers/search${d(e)}`);
155
+ }
156
+ searchConversations(e = 20, t) {
157
+ let n = new URLSearchParams();
158
+ return n.set("limit", String(e)), t && n.set("page_id", t), n.set("sort_order", "UPDATED_AT_DESC"), this.get(`/api/v1/app-conversations/search?${n.toString()}`);
159
+ }
160
+ getConversations(e) {
161
+ if (e.length === 0) return Promise.resolve([]);
162
+ let t = new URLSearchParams();
163
+ for (let n of e) t.append("ids", n);
164
+ return this.get(`/api/v1/app-conversations?${t}`);
165
+ }
166
+ createConversation(e) {
167
+ return this.post("/api/v1/app-conversations", e);
168
+ }
169
+ downloadConversation(e) {
170
+ return this.get(`/api/v1/app-conversations/${e}/download`, { responseType: "blob" });
171
+ }
172
+ async deleteConversation(e) {
173
+ await this.delete(`/api/v1/app-conversations/${e}`);
174
+ }
175
+ updateConversationPublicFlag(e, t) {
176
+ return this.patch(`/api/v1/app-conversations/${e}`, { public: t });
177
+ }
178
+ async pauseSandbox(e) {
179
+ await this.post(`/api/v1/sandboxes/${e}/pause`, {});
180
+ }
181
+ async resumeSandbox(e) {
182
+ await this.post(`/api/v1/sandboxes/${e}/resume`, {});
183
+ }
184
+ getSandboxes(e) {
185
+ if (e.length === 0) return Promise.resolve([]);
186
+ let t = new URLSearchParams();
187
+ for (let n of e) t.append("id", n);
188
+ return this.get(`/api/v1/sandboxes?${t}`);
189
+ }
190
+ readConversationFile(e, t) {
191
+ let n = new URLSearchParams({ file_path: t });
192
+ return this.get(`/api/v1/app-conversations/${e}/file?${n}`, { responseType: "text" });
193
+ }
194
+ async getConversationStartTask(e) {
195
+ let t = new URLSearchParams();
196
+ return t.append("ids", e), (await this.get(`/api/v1/app-conversations/start-tasks?${t}`))?.[0] ?? null;
197
+ }
198
+ async switchConversationProfile(e, t) {
199
+ await this.post(`/api/v1/app-conversations/${e}/switch_profile`, { profile_name: t });
200
+ }
201
+ async switchConversationAcpModel(e, t) {
202
+ await this.post(`/api/v1/app-conversations/${e}/switch_acp_model`, { model: t });
203
+ }
204
+ async listAutomations(e = 50, t = 0) {
205
+ return this.get(`/api/automation/v1?${f(e, t)}`);
206
+ }
207
+ getAutomation(e) {
208
+ return this.get(`/api/automation/v1/${encodeURIComponent(e)}`);
209
+ }
210
+ updateAutomation(e, t) {
211
+ return this.patch(`/api/automation/v1/${encodeURIComponent(e)}`, t);
212
+ }
213
+ async deleteAutomation(e) {
214
+ await this.delete(`/api/automation/v1/${encodeURIComponent(e)}`);
215
+ }
216
+ dispatchAutomation(e) {
217
+ return this.post(`/api/automation/v1/${encodeURIComponent(e)}/dispatch`);
218
+ }
219
+ listAutomationRuns(e, t = 50, n = 0) {
220
+ return this.get(`/api/automation/v1/${encodeURIComponent(e)}/runs?${f(t, n)}`);
221
+ }
222
+ downloadAutomationTarball(e) {
223
+ return this.get(`/api/automation/v1/${encodeURIComponent(e)}/tarball`, { responseType: "blob" });
224
+ }
225
+ getAutomationHealth() {
226
+ return this.get("/api/automation/health", { timeoutSeconds: 5 });
227
+ }
228
+ profileBasePath() {
229
+ return this.orgId ? `/api/organizations/${encodeURIComponent(this.orgId)}/profiles` : i;
230
+ }
231
+ buildUpstreamAuthHeaders(e) {
232
+ let t = e.authMode ?? "bearer";
233
+ return t === "none" ? {} : t === "session-api-key" ? e.sessionApiKey ? { "X-Session-API-Key": e.sessionApiKey } : {} : this.apiKey ? { Authorization: `Bearer ${this.apiKey}` } : {};
234
+ }
235
+ async requestDirect(e) {
236
+ let t = {
237
+ ...this.buildUpstreamAuthHeaders(e),
238
+ ...this.orgId ? { "X-Org-Id": this.orgId } : {},
239
+ ...e.headers ?? {}
240
+ };
241
+ return s({
242
+ host: this.host,
243
+ method: e.method,
244
+ path: e.path,
245
+ params: e.params,
246
+ body: e.body,
247
+ headers: t,
248
+ timeoutMs: e.timeoutSeconds ? e.timeoutSeconds * 1e3 : this.timeout,
249
+ acceptableStatusCodes: e.acceptableStatusCodes,
250
+ responseType: e.responseType
251
+ });
252
+ }
253
+ async requestThroughProxy(e) {
254
+ if (!this.proxy) throw Error("CloudClient proxy options are required for hostOverride requests");
255
+ let t = {
256
+ ...this.buildUpstreamAuthHeaders(e),
257
+ ...this.orgId ? { "X-Org-Id": this.orgId } : {},
258
+ ...e.headers ?? {}
259
+ }, n = {
260
+ "Content-Type": "application/json",
261
+ ...this.proxy.apiKey ? { "X-Session-API-Key": this.proxy.apiKey } : {},
262
+ ...this.proxy.headers ?? {}
263
+ }, r = this.proxy.path ?? "/api/cloud-proxy";
264
+ return s({
265
+ host: this.proxy.host,
266
+ method: "POST",
267
+ path: r,
268
+ body: {
269
+ host: e.hostOverride,
270
+ method: e.method,
271
+ path: u(e.path, e.params),
272
+ headers: t,
273
+ body: e.body ?? null,
274
+ ...e.timeoutSeconds ? { timeout_seconds: e.timeoutSeconds } : {}
275
+ },
276
+ headers: n,
277
+ timeoutMs: this.timeout,
278
+ acceptableStatusCodes: e.acceptableStatusCodes,
279
+ responseType: e.responseType
280
+ });
281
+ }
282
+ };
283
+ async function s(e) {
284
+ let t = `${e.host.replace(/\/+$/, "")}${u(e.path, e.params)}`, n = {
285
+ ...e.body instanceof FormData ? {} : { "Content-Type": "application/json" },
286
+ ...e.headers ?? {}
287
+ }, r = {
288
+ method: e.method,
289
+ headers: n,
290
+ signal: AbortSignal.timeout(e.timeoutMs)
291
+ };
292
+ e.body !== void 0 && e.method !== "GET" && (r.body = e.body instanceof FormData ? e.body : JSON.stringify(e.body));
293
+ let i;
294
+ try {
295
+ i = await fetch(t, r);
296
+ } catch (t) {
297
+ throw t instanceof Error && (t.name === "TimeoutError" || t.name === "AbortError") ? Error(`Request timeout after ${e.timeoutMs}ms`, { cause: t }) : t;
298
+ }
299
+ if (!(e.acceptableStatusCodes?.has(i.status) || !e.acceptableStatusCodes && i.ok)) throw await c(i);
300
+ return l(i, e.responseType ?? "auto");
301
+ }
302
+ async function c(t) {
303
+ let n;
304
+ try {
305
+ n = t.headers.get("content-type")?.includes("application/json") ? await t.json() : await t.text();
306
+ } catch {
307
+ n = null;
308
+ }
309
+ return new e(t.status, t.statusText, n, `HTTP request failed (${t.status} ${t.statusText}): ${JSON.stringify(n)}`);
310
+ }
311
+ async function l(e, t) {
312
+ if (e.status === 204) return;
313
+ if (t === "blob") return await e.blob();
314
+ if (t === "arrayBuffer") return await e.arrayBuffer();
315
+ if (t === "text") return await e.text();
316
+ let n = e.headers.get("content-type");
317
+ return t === "json" || n?.includes("application/json") ? await e.json() : await e.text();
318
+ }
319
+ function u(e, t) {
320
+ if (!t) return e;
321
+ let [n, r = ""] = e.split("?"), i = new URLSearchParams(r);
322
+ for (let [e, n] of Object.entries(t)) n != null && (Array.isArray(n) ? n.forEach((t) => i.append(e, String(t))) : i.append(e, String(n)));
323
+ let a = i.toString();
324
+ return a ? `${n}?${a}` : n;
325
+ }
326
+ function d(e) {
327
+ let t = new URLSearchParams();
328
+ for (let [n, r] of Object.entries(e)) r !== void 0 && t.set(n, String(r));
329
+ let n = t.toString();
330
+ return n ? `?${n}` : "";
331
+ }
332
+ function f(e, t) {
333
+ let n = new URLSearchParams();
334
+ return n.set("limit", String(e)), n.set("offset", String(t)), n.toString();
335
+ }
336
+ function p(e) {
337
+ if (e.agent_settings && Object.keys(e.agent_settings).length > 0) return e.agent_settings;
338
+ let t = {}, n = {};
339
+ typeof e.llm_model == "string" && (n.model = e.llm_model), typeof e.llm_base_url == "string" && (n.base_url = e.llm_base_url), typeof e.llm_api_key == "string" && (n.api_key = e.llm_api_key), Object.keys(n).length > 0 && (t.llm = n);
340
+ let r = {};
341
+ return typeof e.enable_default_condenser == "boolean" && (r.enabled = e.enable_default_condenser), typeof e.condenser_max_size == "number" && (r.max_size = e.condenser_max_size), Object.keys(r).length > 0 && (t.condenser = r), typeof e.agent == "string" && (t.agent = e.agent), e.mcp_config && Object.keys(e.mcp_config).length > 0 && (t.mcp_config = e.mcp_config), t;
342
+ }
343
+ function m(e) {
344
+ if (e.conversation_settings && Object.keys(e.conversation_settings).length > 0) return e.conversation_settings;
345
+ let t = {};
346
+ return typeof e.confirmation_mode == "boolean" && (t.confirmation_mode = e.confirmation_mode), (typeof e.security_analyzer == "string" || e.security_analyzer === null) && (t.security_analyzer = e.security_analyzer), typeof e.max_iterations == "number" && (t.max_iterations = e.max_iterations), t;
347
+ }
348
+ //#endregion
349
+ export { o as CloudClient };
350
+
351
+ //# sourceMappingURL=cloud-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-client.js","names":[],"sources":["../../../../../../node_modules/@openhands/typescript-client/dist/client/cloud-client.js"],"sourcesContent":["import { HttpError } from './http-client.js';\nimport { OpenHandsClient, } from './openhands-client.js';\nimport { pollForToken, startDeviceFlow, } from './device-flow-client.js';\nconst SETTINGS_PROFILES_PATH = '/api/v1/settings/profiles';\nconst DEFAULT_PAGE_LIMIT = 100;\nexport class CloudClient extends OpenHandsClient {\n constructor(options) {\n super(options);\n this.kind = 'cloud';\n this.orgId = options.orgId ?? null;\n this.proxy = options.proxy\n ? {\n ...options.proxy,\n host: options.proxy.host.replace(/\\/+$/, ''),\n path: options.proxy.path ?? '/api/cloud-proxy',\n }\n : undefined;\n }\n async request(options) {\n return options.hostOverride\n ? this.requestThroughProxy(options)\n : this.requestDirect(options);\n }\n startDeviceFlow(options = {}) {\n return startDeviceFlow(this.host, options);\n }\n pollForToken(deviceCode, options) {\n return pollForToken(this.host, deviceCode, options);\n }\n async getOrganizations() {\n const data = await this.get('/api/organizations');\n return {\n items: data?.items ?? [],\n currentOrgId: data?.current_org_id ?? null,\n };\n }\n getCurrentApiKey() {\n return this.get('/api/keys/current');\n }\n async getOrganizationMe(orgId) {\n const data = await this.get(`/api/organizations/${encodeURIComponent(orgId)}/me`);\n return {\n orgId: data?.org_id ?? orgId,\n userId: data?.user_id ?? '',\n role: data?.role ?? null,\n permissions: Array.isArray(data?.permissions) ? data.permissions : null,\n };\n }\n getSettings() {\n return this.get('/api/v1/settings');\n }\n async getSettingsWithDerivedFields() {\n const flat = await this.getSettings();\n return {\n ...flat,\n agent_settings: deriveAgentSettings(flat),\n conversation_settings: deriveConversationSettings(flat),\n llm_api_key_set: !!flat.llm_api_key_set,\n search_api_key_set: !!flat.search_api_key_set,\n provider_tokens_set: flat.provider_tokens_set,\n };\n }\n async saveSettings(diff) {\n const body = {};\n if (diff.agent_settings_diff) {\n const agentDiff = { ...diff.agent_settings_diff };\n if (agentDiff.agent_context === null) {\n delete agentDiff.agent_context;\n }\n if (Object.keys(agentDiff).length > 0) {\n body.agent_settings_diff = agentDiff;\n }\n }\n if (diff.conversation_settings_diff &&\n Object.keys(diff.conversation_settings_diff).length > 0) {\n body.conversation_settings_diff = diff.conversation_settings_diff;\n }\n if (diff.app_preferences) {\n for (const [key, value] of Object.entries(diff.app_preferences)) {\n if (value !== undefined) {\n body[key] = value;\n }\n }\n }\n await this.post('/api/v1/settings', body);\n }\n getSettingsSchema() {\n return this.get('/api/v1/settings/agent-schema');\n }\n getConversationSettingsSchema() {\n return this.get('/api/v1/settings/conversation-schema');\n }\n listProfiles() {\n return this.get(this.profileBasePath());\n }\n async getProfile(name) {\n const result = await this.get(`${this.profileBasePath()}/${encodeURIComponent(name)}`);\n return {\n name: result.name,\n config: result.config ?? result.llm ?? {},\n api_key_set: result.api_key_set ?? false,\n };\n }\n saveProfile(name, request) {\n return this.post(`${this.profileBasePath()}/${encodeURIComponent(name)}`, request);\n }\n deleteProfile(name) {\n return this.delete(`${this.profileBasePath()}/${encodeURIComponent(name)}`);\n }\n renameProfile(name, newName) {\n return this.post(`${this.profileBasePath()}/${encodeURIComponent(name)}/rename`, { new_name: newName });\n }\n async activateProfile(name) {\n const result = await this.post(`${this.profileBasePath()}/${encodeURIComponent(name)}/activate`, {});\n return {\n name: result.name,\n message: result.message,\n llm_applied: result.model != null || result.llm != null,\n };\n }\n async listSecrets() {\n const secrets = [];\n let pageId = null;\n do {\n const query = new URLSearchParams({ limit: String(DEFAULT_PAGE_LIMIT) });\n if (pageId)\n query.set('page_id', pageId);\n const page = await this.get(`/api/v1/secrets/search?${query.toString()}`);\n secrets.push(...(page.items ?? []));\n pageId = page.next_page_id;\n } while (pageId);\n return secrets;\n }\n async createSecret(name, value, description) {\n await this.post('/api/v1/secrets', { name, value, description });\n }\n async updateSecret(secretToEdit, name, description) {\n await this.put(`/api/v1/secrets/${encodeURIComponent(secretToEdit)}`, {\n name,\n description,\n });\n }\n async deleteSecret(name) {\n await this.delete(`/api/v1/secrets/${encodeURIComponent(name)}`);\n }\n async listSkills() {\n const skills = [];\n let pageId = null;\n do {\n const query = new URLSearchParams({ limit: String(DEFAULT_PAGE_LIMIT) });\n if (pageId)\n query.set('page_id', pageId);\n const page = await this.get(`/api/v1/skills/search?${query.toString()}`);\n skills.push(...(page.items ?? []));\n pageId = page.next_page_id;\n } while (pageId);\n return skills;\n }\n searchRepositories(args) {\n const params = new URLSearchParams();\n params.set('provider', args.provider);\n params.set('limit', String(args.limit ?? 100));\n if (args.query)\n params.set('query', args.query);\n if (args.pageId)\n params.set('page_id', args.pageId);\n if (args.installationId)\n params.set('installation_id', args.installationId);\n return this.get(`/api/v1/git/repositories/search?${params.toString()}`);\n }\n getInstallations(args) {\n const params = new URLSearchParams();\n params.set('provider', args.provider);\n params.set('limit', String(args.limit ?? 100));\n if (args.pageId)\n params.set('page_id', args.pageId);\n return this.get(`/api/v1/git/installations/search?${params.toString()}`);\n }\n getRepositoryBranches(args) {\n const params = new URLSearchParams();\n params.set('provider', args.provider);\n params.set('repository', args.repository);\n params.set('limit', String(args.limit ?? 30));\n params.set('query', args.query ?? '');\n if (args.pageId)\n params.set('page_id', args.pageId);\n return this.get(`/api/v1/git/branches/search?${params.toString()}`);\n }\n getSuggestedTasks(args = {}) {\n const params = new URLSearchParams();\n params.set('limit', String(args.limit ?? 30));\n if (args.pageId)\n params.set('page_id', args.pageId);\n return this.get(`/api/v1/git/suggested-tasks/search?${params.toString()}`);\n }\n searchModels(params) {\n return this.get(`/api/v1/config/models/search${buildQuerySuffix(params)}`);\n }\n searchProviders(params) {\n return this.get(`/api/v1/config/providers/search${buildQuerySuffix(params)}`);\n }\n searchConversations(limit = 20, pageId) {\n const params = new URLSearchParams();\n params.set('limit', String(limit));\n if (pageId)\n params.set('page_id', pageId);\n params.set('sort_order', 'UPDATED_AT_DESC');\n return this.get(`/api/v1/app-conversations/search?${params.toString()}`);\n }\n getConversations(ids) {\n if (ids.length === 0)\n return Promise.resolve([]);\n const params = new URLSearchParams();\n for (const id of ids)\n params.append('ids', id);\n return this.get(`/api/v1/app-conversations?${params}`);\n }\n createConversation(request) {\n return this.post('/api/v1/app-conversations', request);\n }\n downloadConversation(conversationId) {\n return this.get(`/api/v1/app-conversations/${conversationId}/download`, {\n responseType: 'blob',\n });\n }\n async deleteConversation(conversationId) {\n await this.delete(`/api/v1/app-conversations/${conversationId}`);\n }\n updateConversationPublicFlag(conversationId, isPublic) {\n return this.patch(`/api/v1/app-conversations/${conversationId}`, {\n public: isPublic,\n });\n }\n async pauseSandbox(sandboxId) {\n await this.post(`/api/v1/sandboxes/${sandboxId}/pause`, {});\n }\n async resumeSandbox(sandboxId) {\n await this.post(`/api/v1/sandboxes/${sandboxId}/resume`, {});\n }\n getSandboxes(ids) {\n if (ids.length === 0)\n return Promise.resolve([]);\n const params = new URLSearchParams();\n for (const id of ids)\n params.append('id', id);\n return this.get(`/api/v1/sandboxes?${params}`);\n }\n readConversationFile(conversationId, filePath) {\n const query = new URLSearchParams({ file_path: filePath });\n return this.get(`/api/v1/app-conversations/${conversationId}/file?${query}`, {\n responseType: 'text',\n });\n }\n async getConversationStartTask(taskId) {\n const params = new URLSearchParams();\n params.append('ids', taskId);\n const data = await this.get(`/api/v1/app-conversations/start-tasks?${params}`);\n return data?.[0] ?? null;\n }\n async switchConversationProfile(conversationId, profileName) {\n await this.post(`/api/v1/app-conversations/${conversationId}/switch_profile`, {\n profile_name: profileName,\n });\n }\n async switchConversationAcpModel(conversationId, model) {\n await this.post(`/api/v1/app-conversations/${conversationId}/switch_acp_model`, { model });\n }\n async listAutomations(limit = 50, offset = 0) {\n return this.get(`/api/automation/v1?${paginationQuery(limit, offset)}`);\n }\n getAutomation(id) {\n return this.get(`/api/automation/v1/${encodeURIComponent(id)}`);\n }\n updateAutomation(id, body) {\n return this.patch(`/api/automation/v1/${encodeURIComponent(id)}`, body);\n }\n async deleteAutomation(id) {\n await this.delete(`/api/automation/v1/${encodeURIComponent(id)}`);\n }\n dispatchAutomation(id) {\n return this.post(`/api/automation/v1/${encodeURIComponent(id)}/dispatch`);\n }\n listAutomationRuns(id, limit = 50, offset = 0) {\n return this.get(`/api/automation/v1/${encodeURIComponent(id)}/runs?${paginationQuery(limit, offset)}`);\n }\n downloadAutomationTarball(id) {\n return this.get(`/api/automation/v1/${encodeURIComponent(id)}/tarball`, {\n responseType: 'blob',\n });\n }\n getAutomationHealth() {\n return this.get('/api/automation/health', { timeoutSeconds: 5 });\n }\n profileBasePath() {\n return this.orgId\n ? `/api/organizations/${encodeURIComponent(this.orgId)}/profiles`\n : SETTINGS_PROFILES_PATH;\n }\n buildUpstreamAuthHeaders(options) {\n const mode = options.authMode ?? 'bearer';\n if (mode === 'none')\n return {};\n if (mode === 'session-api-key') {\n return options.sessionApiKey ? { 'X-Session-API-Key': options.sessionApiKey } : {};\n }\n if (!this.apiKey)\n return {};\n return { Authorization: `Bearer ${this.apiKey}` };\n }\n async requestDirect(options) {\n const headers = {\n ...this.buildUpstreamAuthHeaders(options),\n ...(this.orgId ? { 'X-Org-Id': this.orgId } : {}),\n ...(options.headers ?? {}),\n };\n return fetchAndParse({\n host: this.host,\n method: options.method,\n path: options.path,\n params: options.params,\n body: options.body,\n headers,\n timeoutMs: options.timeoutSeconds ? options.timeoutSeconds * 1000 : this.timeout,\n acceptableStatusCodes: options.acceptableStatusCodes,\n responseType: options.responseType,\n });\n }\n async requestThroughProxy(options) {\n if (!this.proxy) {\n throw new Error('CloudClient proxy options are required for hostOverride requests');\n }\n const upstreamHeaders = {\n ...this.buildUpstreamAuthHeaders(options),\n ...(this.orgId ? { 'X-Org-Id': this.orgId } : {}),\n ...(options.headers ?? {}),\n };\n const proxyHeaders = {\n 'Content-Type': 'application/json',\n ...(this.proxy.apiKey ? { 'X-Session-API-Key': this.proxy.apiKey } : {}),\n ...(this.proxy.headers ?? {}),\n };\n const proxyPath = this.proxy.path ?? '/api/cloud-proxy';\n return fetchAndParse({\n host: this.proxy.host,\n method: 'POST',\n path: proxyPath,\n body: {\n host: options.hostOverride,\n method: options.method,\n path: appendParams(options.path, options.params),\n headers: upstreamHeaders,\n body: options.body ?? null,\n ...(options.timeoutSeconds ? { timeout_seconds: options.timeoutSeconds } : {}),\n },\n headers: proxyHeaders,\n timeoutMs: this.timeout,\n acceptableStatusCodes: options.acceptableStatusCodes,\n responseType: options.responseType,\n });\n }\n}\nasync function fetchAndParse(options) {\n const url = `${options.host.replace(/\\/+$/, '')}${appendParams(options.path, options.params)}`;\n const headers = {\n ...(options.body instanceof FormData ? {} : { 'Content-Type': 'application/json' }),\n ...(options.headers ?? {}),\n };\n const init = {\n method: options.method,\n headers,\n signal: AbortSignal.timeout(options.timeoutMs),\n };\n if (options.body !== undefined && options.method !== 'GET') {\n init.body = options.body instanceof FormData ? options.body : JSON.stringify(options.body);\n }\n let response;\n try {\n response = await fetch(url, init);\n }\n catch (error) {\n // AbortSignal.timeout() aborts with a TimeoutError; some runtimes\n // surface plain AbortError instead.\n if (error instanceof Error && (error.name === 'TimeoutError' || error.name === 'AbortError')) {\n throw new Error(`Request timeout after ${options.timeoutMs}ms`, { cause: error });\n }\n throw error;\n }\n const isAcceptable = options.acceptableStatusCodes?.has(response.status) ||\n (!options.acceptableStatusCodes && response.ok);\n if (!isAcceptable) {\n throw await buildHttpError(response);\n }\n return parseResponse(response, options.responseType ?? 'auto');\n}\nasync function buildHttpError(response) {\n let errorContent;\n try {\n const contentType = response.headers.get('content-type');\n errorContent = contentType?.includes('application/json')\n ? await response.json()\n : await response.text();\n }\n catch {\n errorContent = null;\n }\n return new HttpError(response.status, response.statusText, errorContent, `HTTP request failed (${response.status} ${response.statusText}): ${JSON.stringify(errorContent)}`);\n}\nasync function parseResponse(response, responseType) {\n if (response.status === 204) {\n return undefined;\n }\n if (responseType === 'blob')\n return (await response.blob());\n if (responseType === 'arrayBuffer')\n return (await response.arrayBuffer());\n if (responseType === 'text')\n return (await response.text());\n const contentType = response.headers.get('content-type');\n if (responseType === 'json' || contentType?.includes('application/json')) {\n return (await response.json());\n }\n return (await response.text());\n}\nfunction appendParams(path, params) {\n if (!params)\n return path;\n const [base, existingQuery = ''] = path.split('?');\n const search = new URLSearchParams(existingQuery);\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined || value === null)\n continue;\n if (Array.isArray(value)) {\n value.forEach((item) => search.append(key, String(item)));\n }\n else {\n search.append(key, String(value));\n }\n }\n const query = search.toString();\n return query ? `${base}?${query}` : base;\n}\nfunction buildQuerySuffix(params) {\n const search = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined)\n search.set(key, String(value));\n }\n const query = search.toString();\n return query ? `?${query}` : '';\n}\nfunction paginationQuery(limit, offset) {\n const params = new URLSearchParams();\n params.set('limit', String(limit));\n params.set('offset', String(offset));\n return params.toString();\n}\nfunction deriveAgentSettings(flat) {\n if (flat.agent_settings && Object.keys(flat.agent_settings).length > 0) {\n return flat.agent_settings;\n }\n const agent = {};\n const llm = {};\n if (typeof flat.llm_model === 'string')\n llm.model = flat.llm_model;\n if (typeof flat.llm_base_url === 'string')\n llm.base_url = flat.llm_base_url;\n if (typeof flat.llm_api_key === 'string')\n llm.api_key = flat.llm_api_key;\n if (Object.keys(llm).length > 0)\n agent.llm = llm;\n const condenser = {};\n if (typeof flat.enable_default_condenser === 'boolean') {\n condenser.enabled = flat.enable_default_condenser;\n }\n if (typeof flat.condenser_max_size === 'number') {\n condenser.max_size = flat.condenser_max_size;\n }\n if (Object.keys(condenser).length > 0)\n agent.condenser = condenser;\n if (typeof flat.agent === 'string')\n agent.agent = flat.agent;\n if (flat.mcp_config && Object.keys(flat.mcp_config).length > 0) {\n agent.mcp_config = flat.mcp_config;\n }\n return agent;\n}\nfunction deriveConversationSettings(flat) {\n if (flat.conversation_settings && Object.keys(flat.conversation_settings).length > 0) {\n return flat.conversation_settings;\n }\n const out = {};\n if (typeof flat.confirmation_mode === 'boolean') {\n out.confirmation_mode = flat.confirmation_mode;\n }\n if (typeof flat.security_analyzer === 'string' || flat.security_analyzer === null) {\n out.security_analyzer = flat.security_analyzer;\n }\n if (typeof flat.max_iterations === 'number') {\n out.max_iterations = flat.max_iterations;\n }\n return out;\n}\n//# sourceMappingURL=cloud-client.js.map"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ require(`../../../../../_virtual/_rolldown/runtime.cjs`);var e=class e extends Error{constructor(t,n){super(t),this.code=n,this.name=`DeviceFlowError`,Object.setPrototypeOf(this,e.prototype)}},t=6e5,n=3e4;function r(e){try{let t=e.trim().toLowerCase(),n=/^https?:\/\//i.test(t)?t:`https://${t}`,r=new URL(n).hostname;return r.endsWith(`.all-hands.dev`)||r===`all-hands.dev`||r.endsWith(`.openhands.dev`)||r===`openhands.dev`}catch{return!1}}function i(e){return e.replace(/\/+$/,``)}async function a(e,t,n,r,a,o){let s=typeof n==`string`||n instanceof Blob||n instanceof FormData||n instanceof URLSearchParams?n:JSON.stringify(n),c=new Headers(o);return c.set(`Content-Type`,r),fetch(`${i(e)}${t}`,{method:`POST`,headers:c,body:s,signal:a})}async function o(t,n={}){try{let r=await a(t,`/oauth/device/authorize`,{},`application/json`,void 0,n.headers);if(!r.ok)throw new e(`Failed to start device flow: Server returned ${r.status}`);let i=await r.json();if(!i.device_code||!i.user_code||!i.verification_uri)throw new e(`Invalid response from device authorization endpoint: missing required fields`);return{device_code:i.device_code,user_code:i.user_code,verification_uri:i.verification_uri,verification_uri_complete:i.verification_uri_complete??`${i.verification_uri}?user_code=${encodeURIComponent(i.user_code)}`,expires_in:i.expires_in??600,interval:i.interval??5}}catch(t){throw t instanceof e?t:new e(`Failed to start device flow: ${t instanceof Error?t.message:String(t)}`)}}async function s(r,i,o){let s=o.timeout??t,l=Math.max(1,o.interval)*1e3,u=Date.now();for(;Date.now()-u<s;){if(o.signal?.aborted)throw new e(`Authorization cancelled`,`cancelled`);try{let t=await a(r,`/oauth/device/token`,new URLSearchParams({grant_type:`urn:ietf:params:oauth:grant-type:device_code`,device_code:i}),`application/x-www-form-urlencoded`,o.signal,o.headers);if(t.ok){let n=await t.json();if(!n.access_token)throw new e(`Invalid token response: missing access_token`);return{access_token:n.access_token,token_type:n.token_type??`Bearer`,expires_in:n.expires_in}}let s;try{s=await t.json()}catch{throw new e(`Unexpected response from server: ${t.status}`)}switch(s.error){case`authorization_pending`:break;case`slow_down`:l=typeof s.interval==`number`&&Number.isFinite(s.interval)&&s.interval>0?Math.max(1,Math.min(s.interval,30))*1e3:Math.min(l+5e3,n);break;case`expired_token`:throw new e(`Device code has expired. Please try again.`,`expired_token`);case`access_denied`:throw new e(`Authorization request was denied.`,`access_denied`);default:throw new e(`Authorization error: ${s.error}${s.error_description?` - ${s.error_description}`:``}`,s.error)}}catch(t){if(t instanceof e)throw t;if(t instanceof DOMException&&t.name===`AbortError`)throw new e(`Authorization cancelled`,`cancelled`);console.warn(`Network error during polling, retrying:`,t)}try{await c(l,o.signal)}catch(t){throw t instanceof DOMException&&t.name===`AbortError`?new e(`Authorization cancelled`,`cancelled`):t}}throw new e(`Timeout waiting for authorization. Please try again.`,`timeout`)}function c(e,t){return new Promise((n,r)=>{if(t?.aborted){r(new DOMException(`Aborted`,`AbortError`));return}let i=setTimeout(n,e);t?.addEventListener(`abort`,()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))},{once:!0})})}exports.DeviceFlowError=e,exports.isOpenHandsCloudHost=r,exports.pollForToken=s,exports.startDeviceFlow=o;
2
+ //# sourceMappingURL=device-flow-client.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-flow-client.cjs","names":[],"sources":["../../../../../../node_modules/@openhands/typescript-client/dist/client/device-flow-client.js"],"sourcesContent":["export class DeviceFlowError extends Error {\n constructor(message, code) {\n super(message);\n this.code = code;\n this.name = 'DeviceFlowError';\n Object.setPrototypeOf(this, DeviceFlowError.prototype);\n }\n}\nconst DEFAULT_TIMEOUT_MS = 600000;\nconst MAX_INTERVAL_MS = 30000;\nexport function isOpenHandsCloudHost(host) {\n try {\n const trimmed = host.trim().toLowerCase();\n const withProtocol = /^https?:\\/\\//i.test(trimmed) ? trimmed : `https://${trimmed}`;\n const hostname = new URL(withProtocol).hostname;\n return (hostname.endsWith('.all-hands.dev') ||\n hostname === 'all-hands.dev' ||\n hostname.endsWith('.openhands.dev') ||\n hostname === 'openhands.dev');\n }\n catch {\n return false;\n }\n}\nfunction normalizeHost(host) {\n return host.replace(/\\/+$/, '');\n}\nasync function requestCloudDeviceEndpoint(host, path, body, contentType, signal, headers) {\n const requestBody = typeof body === 'string' ||\n body instanceof Blob ||\n body instanceof FormData ||\n body instanceof URLSearchParams\n ? body\n : JSON.stringify(body);\n const requestHeaders = new Headers(headers);\n requestHeaders.set('Content-Type', contentType);\n return fetch(`${normalizeHost(host)}${path}`, {\n method: 'POST',\n headers: requestHeaders,\n body: requestBody,\n signal,\n });\n}\nexport async function startDeviceFlow(host, options = {}) {\n try {\n const response = await requestCloudDeviceEndpoint(host, '/oauth/device/authorize', {}, 'application/json', undefined, options.headers);\n if (!response.ok) {\n throw new DeviceFlowError(`Failed to start device flow: Server returned ${response.status}`);\n }\n const data = await response.json();\n if (!data.device_code || !data.user_code || !data.verification_uri) {\n throw new DeviceFlowError('Invalid response from device authorization endpoint: missing required fields');\n }\n return {\n device_code: data.device_code,\n user_code: data.user_code,\n verification_uri: data.verification_uri,\n verification_uri_complete: data.verification_uri_complete ??\n `${data.verification_uri}?user_code=${encodeURIComponent(data.user_code)}`,\n expires_in: data.expires_in ?? 600,\n interval: data.interval ?? 5,\n };\n }\n catch (error) {\n if (error instanceof DeviceFlowError) {\n throw error;\n }\n throw new DeviceFlowError(`Failed to start device flow: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\nexport async function pollForToken(host, deviceCode, options) {\n const timeout = options.timeout ?? DEFAULT_TIMEOUT_MS;\n let interval = Math.max(1, options.interval) * 1000;\n const startTime = Date.now();\n while (Date.now() - startTime < timeout) {\n if (options.signal?.aborted) {\n throw new DeviceFlowError('Authorization cancelled', 'cancelled');\n }\n try {\n const body = new URLSearchParams({\n grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n device_code: deviceCode,\n });\n const response = await requestCloudDeviceEndpoint(host, '/oauth/device/token', body, 'application/x-www-form-urlencoded', options.signal, options.headers);\n if (response.ok) {\n const data = await response.json();\n if (!data.access_token) {\n throw new DeviceFlowError('Invalid token response: missing access_token');\n }\n return {\n access_token: data.access_token,\n token_type: data.token_type ?? 'Bearer',\n expires_in: data.expires_in,\n };\n }\n let errorData;\n try {\n errorData = await response.json();\n }\n catch {\n throw new DeviceFlowError(`Unexpected response from server: ${response.status}`);\n }\n switch (errorData.error) {\n case 'authorization_pending':\n break;\n case 'slow_down':\n if (typeof errorData.interval === 'number' &&\n Number.isFinite(errorData.interval) &&\n errorData.interval > 0) {\n interval = Math.max(1, Math.min(errorData.interval, 30)) * 1000;\n }\n else {\n interval = Math.min(interval + 5000, MAX_INTERVAL_MS);\n }\n break;\n case 'expired_token':\n throw new DeviceFlowError('Device code has expired. Please try again.', 'expired_token');\n case 'access_denied':\n throw new DeviceFlowError('Authorization request was denied.', 'access_denied');\n default:\n throw new DeviceFlowError(`Authorization error: ${errorData.error}${errorData.error_description ? ` - ${errorData.error_description}` : ''}`, errorData.error);\n }\n }\n catch (error) {\n if (error instanceof DeviceFlowError) {\n throw error;\n }\n if (error instanceof DOMException && error.name === 'AbortError') {\n throw new DeviceFlowError('Authorization cancelled', 'cancelled');\n }\n console.warn('Network error during polling, retrying:', error);\n }\n try {\n await sleep(interval, options.signal);\n }\n catch (error) {\n if (error instanceof DOMException && error.name === 'AbortError') {\n throw new DeviceFlowError('Authorization cancelled', 'cancelled');\n }\n throw error;\n }\n }\n throw new DeviceFlowError('Timeout waiting for authorization. Please try again.', 'timeout');\n}\nfunction sleep(ms, signal) {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(new DOMException('Aborted', 'AbortError'));\n return;\n }\n const timeoutId = setTimeout(resolve, ms);\n signal?.addEventListener('abort', () => {\n clearTimeout(timeoutId);\n reject(new DOMException('Aborted', 'AbortError'));\n }, { once: true });\n });\n}\n//# sourceMappingURL=device-flow-client.js.map"],"x_google_ignoreList":[0],"mappings":"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"}