@openhands/agent-canvas 1.1.0 → 1.2.1

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 (1390) hide show
  1. package/README.md +1 -1
  2. package/README.windows.md +2 -2
  3. package/build/assets/Trans-De9RwQhA.js +1 -0
  4. package/build/assets/__vite-browser-external-4xJsU2-u.js +1 -0
  5. package/build/assets/{acp-providers-B_ZxlEbx.js → acp-providers-D_D8VUpP.js} +1 -1
  6. package/build/assets/active-backend-context-u2tdYRgH.js +1 -0
  7. package/build/assets/add-backend-modal-DIEyAkA4.js +1 -0
  8. package/build/assets/agent-profiles-settings-BovdV4N8.js +1 -0
  9. package/build/assets/{agent-server-client-options-CxnCYyIW.js → agent-server-client-options-DVLRd9sw.js} +1 -1
  10. package/build/assets/agent-server-conversation-service.api-BP73yONA.js +5 -0
  11. package/build/assets/agent-settings-FGL3Yvkp.js +1 -0
  12. package/build/assets/agent-settings-Ofbh6UTD.js +2 -0
  13. package/build/assets/alert-banner-BW0wRYw6.js +1 -0
  14. package/build/assets/api-key-entry-screen-CZIdRmUJ.js +1 -0
  15. package/build/assets/app-settings-BHJ9nKti.js +1 -0
  16. package/build/assets/automation-detail-DwYGzLkp.js +2 -0
  17. package/build/assets/automations-list-CuAfJmMW.js +1 -0
  18. package/build/assets/back-nav-button-BYmxFxGt.js +1 -0
  19. package/build/assets/backend-form-modal-BiaOB2C4.js +1 -0
  20. package/build/assets/backend-synced-settings-badge-Bs3FSXsS.js +1 -0
  21. package/build/assets/base-modal-CC5Pp8CF.js +1 -0
  22. package/build/assets/bot-D7eUAuSB.js +1 -0
  23. package/build/assets/brand-button-DKPMEKcW.js +1 -0
  24. package/build/assets/{browser-CCwPzPsD.js → browser-B39N74jU.js} +2 -2
  25. package/build/assets/browser-store-BI6uklCG.js +1 -0
  26. package/build/assets/browser-tab-aiDg7aEn.js +1 -0
  27. package/build/assets/chat-send-button-DxuZIoW8.js +1 -0
  28. package/build/assets/check-Bvi71siz.js +1 -0
  29. package/build/assets/checkmark-h7udgXMM.js +1 -0
  30. package/build/assets/{chevron-down-BxZEAIv4.js → chevron-down-CI8A6tet.js} +1 -1
  31. package/build/assets/circle-plus-check-toggle-T3eAIuPQ.js +1 -0
  32. package/build/assets/close-p3Op5lxI.js +1 -0
  33. package/build/assets/code-tag-DYlAhEQY.js +1 -0
  34. package/build/assets/{color-themes-CTNRQd1a.js → color-themes-DPBzNtVg.js} +4 -4
  35. package/build/assets/combobox-caret-CLGvOs32.js +1 -0
  36. package/build/assets/command-menu-DKrLCRla.js +1 -0
  37. package/build/assets/{command-store-C-57Heey.js → command-store-D8J5LMW1.js} +1 -1
  38. package/build/assets/condenser-settings-D_5vY4m3.js +1 -0
  39. package/build/assets/confirmation-modal-BK1F0A68.js +1 -0
  40. package/build/assets/context-menu-list-item-DBFzplWW.js +1 -0
  41. package/build/assets/conversation-DnVC6vRV.js +1 -0
  42. package/build/assets/conversation-local-storage-F6zVMM--.js +1 -0
  43. package/build/assets/conversation-panel-ZEz-z3az.js +1 -0
  44. package/build/assets/conversation-service.api-CqZcHr1c.js +1 -0
  45. package/build/assets/conversation-state-store-B2Bp32XI.js +1 -0
  46. package/build/assets/conversation-store-LptbOvKa.js +1 -0
  47. package/build/assets/conversation-tab-empty-state-m8IUkfMj.js +1 -0
  48. package/build/assets/conversation-xkBS3AHC.js +19 -0
  49. package/build/assets/copy-3JCw_XFB.js +1 -0
  50. package/build/assets/copy-BLmGeJcd.js +1 -0
  51. package/build/assets/copy-to-clipboard-button-Aj9wFmt2.js +1 -0
  52. package/build/assets/createLucideIcon-CVAsW2Yo.js +1 -0
  53. package/build/assets/declaration-B9kpCaYl.js +1 -0
  54. package/build/assets/device-verify-B5YCrvSu.js +1 -0
  55. package/build/assets/dist-CodhvuAP.js +1 -0
  56. package/build/assets/dropdown-classes-CgQ45JmQ.js +1 -0
  57. package/build/assets/edit-automation-modal-B6U96gVV.js +1 -0
  58. package/build/assets/ellipsis-button-1BV9Sga8.js +1 -0
  59. package/build/assets/entry.client-Dy--3GeA.js +2 -0
  60. package/build/assets/enum-filter-dropdown-DCITiYVi.js +1 -0
  61. package/build/assets/environment-switch-overlay-DUnKILNH.js +1 -0
  62. package/build/assets/extensions-hub-CksKNpP9.js +1 -0
  63. package/build/assets/{extensions-navigation-DfLHdTUC.js → extensions-navigation-Di9rJ-b5.js} +1 -1
  64. package/build/assets/{external-link-D8njjDTk.js → external-link-D2zJjE9G.js} +1 -1
  65. package/build/assets/files-tab-61Vaihc6.js +1 -0
  66. package/build/assets/files-tab-store-DJsPxYdg.js +1 -0
  67. package/build/assets/folder-mMWFvaw0.js +1 -0
  68. package/build/assets/form-control-classes-9rkU4usZ.js +1 -0
  69. package/build/assets/get-language-from-path-CPNnuVhI.js +1 -0
  70. package/build/assets/git-provider-icon-aQRcUVI-.js +1 -0
  71. package/build/assets/home-5gOtUe-n.js +1 -0
  72. package/build/assets/iconBase-DaTRRUjy.js +1 -0
  73. package/build/assets/index-redirect-CUUJiNki.js +1 -0
  74. package/build/assets/install-server-modal-BRab9inF.js +1 -0
  75. package/build/assets/launch-1TJRKkkX.js +1 -0
  76. package/build/assets/lesson-plan-BtrZUCuj.js +4 -0
  77. package/build/assets/link-external-DfKQroKX.js +1 -0
  78. package/build/assets/{list-todo-B_Ts2JmZ.js → list-todo-BfH6yYUK.js} +1 -1
  79. package/build/assets/llm-not-configured-banner-BrU5uHto.js +27 -0
  80. package/build/assets/llm-settings-BpdU51Jo.js +1 -0
  81. package/build/assets/llm-settings-DsInf6yD.js +1 -0
  82. package/build/assets/{llm-subscription-service-BX_AtNlO.js → llm-subscription-service-CKyaV24y.js} +1 -1
  83. package/build/assets/loader-circle-BEykUKYG.js +1 -0
  84. package/build/assets/loading-spinner-DHAIPZkP.js +1 -0
  85. package/build/assets/manage-backends-modal-BREySP-J.js +1 -0
  86. package/build/assets/manifest-a5bb7568.js +1 -0
  87. package/build/assets/{markdown-renderer-DWy7Np7u.js → markdown-renderer-D8mayGjI.js} +1 -1
  88. package/build/assets/mcp-XXf8k6mb.js +9 -0
  89. package/build/assets/messages-D2oZb47Z.js +40 -0
  90. package/build/assets/middleware-DYHYNAnP.js +6 -0
  91. package/build/assets/modal-backdrop-zVwfOJZr.js +1 -0
  92. package/build/assets/modal-body-Dcu5McCa.js +1 -0
  93. package/build/assets/{modal-classes-C4kS6ib_.js → modal-classes-DPqxSyuP.js} +1 -1
  94. package/build/assets/modal-close-button-CTCX4nCH.js +1 -0
  95. package/build/assets/model-selector-VDHBytb6.js +1 -0
  96. package/build/assets/{mouse-pointer-click-CXAx4FyM.js → mouse-pointer-click-PdEQPL6v.js} +1 -1
  97. package/build/assets/navigation-context-DPs2G0X8.js +1 -0
  98. package/build/assets/navigation-link-D8hfwvxI.js +1 -0
  99. package/build/assets/onboarding-D32kiGME.js +1 -0
  100. package/build/assets/onboarding-modal-C084vkv7.js +1 -0
  101. package/build/assets/openhands-logo-bcNw5bkY.js +1 -0
  102. package/build/assets/option-service.api-Cl5VLGyw.js +1 -0
  103. package/build/assets/organization-service.api-CnynNoT-.js +1 -0
  104. package/build/assets/path-utils-BeOmjIcE.js +1 -0
  105. package/build/assets/{pencil-CsL0ns9y.js → pencil-Dj2XjKmI.js} +1 -1
  106. package/build/assets/plan-components-j9X4AxYM.js +1 -0
  107. package/build/assets/planner-tab-AZMjJx31.js +1 -0
  108. package/build/assets/plugins-management-service-BAp70KN7.js +1 -0
  109. package/build/assets/profiles-service.api-CeYEmSM3.js +1 -0
  110. package/build/assets/providers-vX9jk9Vy.js +1 -0
  111. package/build/assets/{proxy-TeteRRW5.js → proxy-CHmFkV16.js} +1 -1
  112. package/build/assets/react-DPDgL6du.js +1 -0
  113. package/build/assets/recommended-automations-launcher-Bk8tQ-Cn.js +58 -0
  114. package/build/assets/{refresh-cw-GkGYXsU-.js → refresh-cw-DM82EIyx.js} +1 -1
  115. package/build/assets/root-CxWZUXTQ.css +1 -0
  116. package/build/assets/root-layout-CoWw4kpz.js +2 -0
  117. package/build/assets/root-tuEPDx-i.js +2 -0
  118. package/build/assets/runtime-waiting-state-DkzLgvMn.js +1 -0
  119. package/build/assets/schema-field-nvq_Juo2.js +1 -0
  120. package/build/assets/sdk-section-page-CgT70FaZ.js +1 -0
  121. package/build/assets/sdk-settings-schema-BjBkMHzZ.js +1 -0
  122. package/build/assets/search-4DHskuhE.js +1 -0
  123. package/build/assets/search-BsjCEFNf.js +1 -0
  124. package/build/assets/secrets-service-CZYjNxFw.js +1 -0
  125. package/build/assets/secrets-settings-BCxk9p9s.js +1 -0
  126. package/build/assets/segmented-toggle-Cen5AMUc.js +1 -0
  127. package/build/assets/settings-CedTdtb5.js +1 -0
  128. package/build/assets/settings-dropdown-input-xzoZwgUe.js +1 -0
  129. package/build/assets/settings-gear-MXCyZW0x.js +1 -0
  130. package/build/assets/settings-index-Cct3PJSP.js +1 -0
  131. package/build/assets/settings-input-DYs7t3oK.js +1 -0
  132. package/build/assets/settings-list-classes-DvQr5jVS.js +1 -0
  133. package/build/assets/{settings-CN_HaPjH.js → settings-mQUckT0g.js} +1 -1
  134. package/build/assets/settings-modal-DwLybV_O.js +1 -0
  135. package/build/assets/settings-section-header-context-COMOIaxV.js +1 -0
  136. package/build/assets/settings-service.api-DldkFI1x.js +1 -0
  137. package/build/assets/settings-switch-C2N2xqEb.js +1 -0
  138. package/build/assets/{settings-utils-9-_6iVIn.js → settings-utils-BMdG65By.js} +1 -1
  139. package/build/assets/shared-conversation-DnDwfLgg.js +1 -0
  140. package/build/assets/sidebar-layout-BtpUSN3j.js +1 -0
  141. package/build/assets/sidebar-mobile-menu-toggle-B8k3qu84.js +1 -0
  142. package/build/assets/sidebar-nav-link-CIB3NBRW.js +1 -0
  143. package/build/assets/sidebar-store-CZuE8AH5.js +1 -0
  144. package/build/assets/skill-card-pill-row-D2bUe2kB.js +1 -0
  145. package/build/assets/skills-9cDZONKh.js +1 -0
  146. package/build/assets/skills-plugins-B68ay6Pu.js +1 -0
  147. package/build/assets/skills-settings-A6sUy0T7.js +2 -0
  148. package/build/assets/{square-chevron-right-Cfi-SUY0.js → square-chevron-right-Czw3FFWc.js} +1 -1
  149. package/build/assets/styled-tooltip-DsKsFjuq.js +1 -0
  150. package/build/assets/suspense-X5dBsJzn.js +1 -0
  151. package/build/assets/switch-skeleton-DqQwalyu.js +1 -0
  152. package/build/assets/task-list-tab-BAThr9Ex.js +1 -0
  153. package/build/assets/{terminal-HakoMrQX.js → terminal-BmT0_gIH.js} +2 -2
  154. package/build/assets/terminal-BuLtIrb9.js +1 -0
  155. package/build/assets/toggle-switch-DBlOOzBr.js +1 -0
  156. package/build/assets/{trash-2-Bq4hqiRH.js → trash-2-Be_7y3Mn.js} +1 -1
  157. package/build/assets/typography-YGPBGzOG.js +1 -0
  158. package/build/assets/u-check-circle-BqoIxNz_.js +1 -0
  159. package/build/assets/u-check-circle-half-LiwZkuFe.js +1 -0
  160. package/build/assets/u-edit-DJ90xc8Z.js +1 -0
  161. package/build/assets/use-acp-credential-form-Bs6s0DTU.js +1 -0
  162. package/build/assets/use-activate-agent-profile-CKtTToSx.js +1 -0
  163. package/build/assets/use-active-agent-profile-CWLPpOtK.js +1 -0
  164. package/build/assets/use-active-conversation-DI5S5M1w.js +1 -0
  165. package/build/assets/use-agent-profiles-DPcaYLpm.js +1 -0
  166. package/build/assets/use-agent-state-Buh3bQDh.js +1 -0
  167. package/build/assets/use-backends-health-CxkvJy2N.js +1 -0
  168. package/build/assets/use-breakpoint-B-O0lQ84.js +1 -0
  169. package/build/assets/use-can-manage-org-profiles-DeX2Mfje.js +1 -0
  170. package/build/assets/use-click-outside-element-Bf4Omzot.js +1 -0
  171. package/build/assets/use-cloud-current-user-id-D_PQGfmT.js +1 -0
  172. package/build/assets/use-config-ur0RbjCP.js +1 -0
  173. package/build/assets/use-create-conversation-D9OWYcte.js +1 -0
  174. package/build/assets/use-create-secret-CVFSlhlR.js +1 -0
  175. package/build/assets/use-event-store-YSOxy9FC.js +4 -0
  176. package/build/assets/use-handle-plan-click-Dug8egQl.js +1 -0
  177. package/build/assets/use-is-authed-_dhQ2Xuj.js +1 -0
  178. package/build/assets/use-launch-skill-in-chat-BnoDgvAy.js +1 -0
  179. package/build/assets/use-llm-profiles-DjackuP1.js +1 -0
  180. package/build/assets/use-onboarding-completion-C_Swglzp.js +1 -0
  181. package/build/assets/use-plugins-marketplace-BGb-KgfD.js +1 -0
  182. package/build/assets/use-runtime-is-ready-Diiq65Q-.js +1 -0
  183. package/build/assets/use-save-agent-profile-aKKLqDJM.js +1 -0
  184. package/build/assets/{use-save-settings-DErJDIDL.js → use-save-settings-CChDyjOB.js} +1 -1
  185. package/build/assets/use-settings-dX4fKUPF.js +1 -0
  186. package/build/assets/use-settings-nav-items-D6pHnvxg.js +16 -0
  187. package/build/assets/use-skills-Dqo-pDDx.js +1 -0
  188. package/build/assets/use-task-list-CmWGElgb.js +1 -0
  189. package/build/assets/use-tracking-GtXCHmTv.js +1 -0
  190. package/build/assets/use-user-conversation-6uOXFP95.js +1 -0
  191. package/build/assets/useMutation-DCE9RcgK.js +1 -0
  192. package/build/assets/useMutationState-BUab8Kxr.js +1 -0
  193. package/build/assets/useQueries-CRzaAqzH.js +1 -0
  194. package/build/assets/useQuery-CpjHYtZc.js +1 -0
  195. package/build/assets/useTranslation-Cgy4JA_g.js +1 -0
  196. package/build/assets/utils-CE0lDWtb.js +1 -0
  197. package/build/assets/vendor-styling-CI0PQ3ab.js +22 -0
  198. package/build/assets/{vendor~browser-BQU4C3CQ.js → vendor~browser-Cvg7jXCP.js} +1 -1
  199. package/build/assets/{vendor~browser-tab-Cim6xN2k.js → vendor~browser-tab-Di0kh5Zw.js} +1 -1
  200. package/build/assets/vendor~conversation-panel~conversation~alert-banner-DHDkknt5.js +1 -0
  201. package/build/assets/vendor~entry.client-9tWQ_Ugw.js +1 -0
  202. package/build/assets/{vendor~entry.client-lAMyAlBD.js → vendor~entry.client-D6BtSOtn.js} +1 -1
  203. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~d1e18dtv-5Q6lQJdE.js +177 -0
  204. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~i3v2mlbw-BrJQ3XZH.js +1 -0
  205. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~ncdxw0bh-ClHnt5lR.js +10 -0
  206. package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~t35o0b0f-Bss49YXv.js → vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~k6tszsdc-Bb-xMtbv.js} +1 -1
  207. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~nn5zty47-Zl0G1QCy.js +1 -0
  208. package/build/assets/{vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~fpbtwbmk-DDSPtjxR.js → vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~byh8a1g4-XNPdpuO8.js} +1 -1
  209. package/build/assets/{vendor~files-tab-BvQLon-P.js → vendor~files-tab-B02k3xvx.js} +1 -1
  210. package/build/assets/{vendor~home~conversation-panel~conversation-DBPRU26Z.js → vendor~home~conversation-panel~conversation-CYMF9JYB.js} +1 -1
  211. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DnEBAp2W.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-9UMeuPV6.js} +1 -1
  212. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CzI-A-Gz.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BD0GaRGa.js} +1 -1
  213. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-ByET2Quf.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CqXiHwjU.js} +1 -1
  214. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DCYBrned.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-D7EUmQ8Y.js} +1 -1
  215. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DnctfFZL.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DTzw2x50.js} +1 -1
  216. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-pSG7lnvH.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-d8aETPbZ.js} +1 -1
  217. package/build/assets/{vendor~launch-DqoOsAhA.js → vendor~launch-CHXA9cJu.js} +1 -1
  218. package/build/assets/vendor~root-layout~conversation-panel~conversation-CpiTHpHl.js +1 -0
  219. package/build/assets/{vendor~root-layout~conversation-panel~conversation~shared-conversation-BJl81v7J.js → vendor~root-layout~conversation-panel~conversation~shared-conversation-_TdZcNMD.js} +1 -1
  220. package/build/assets/vendor~root-layout~home~conversation-panel~conversation-Cn2jwSga.js +1 -0
  221. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~enjl5xdm-mMKDm94D.js +48 -0
  222. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~automations-~ki5qnp0d-DRld6s9c.js → vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~automations-~ki5qnp0d-rV6d1Iv_.js} +502 -43
  223. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~shared-conversation~alert-banner~pl~rqjteh0a-9d2kA26V.js → vendor~root-layout~home~conversation-panel~conversation~shared-conversation~alert-banner~pl~rqjteh0a-CZM4hwUT.js} +1 -1
  224. package/build/assets/vendor~root-layout~home~mcp~automations-list~onboarding-modal-CXyYYvYh.js +1 -0
  225. package/build/assets/verification-settings-D_zsNB_c.js +1 -0
  226. package/build/assets/x-Cb0WAtak.js +1 -0
  227. package/build/assets/x-mark-Batp6gXa.js +1 -0
  228. package/build/index.html +4 -4
  229. package/build/locales/ar/openhands.json +138 -1
  230. package/build/locales/ca/openhands.json +138 -1
  231. package/build/locales/de/openhands.json +138 -1
  232. package/build/locales/en/openhands.json +138 -1
  233. package/build/locales/es/openhands.json +138 -1
  234. package/build/locales/fr/openhands.json +138 -1
  235. package/build/locales/it/openhands.json +138 -1
  236. package/build/locales/ja/openhands.json +138 -1
  237. package/build/locales/ko-KR/openhands.json +138 -1
  238. package/build/locales/no/openhands.json +138 -1
  239. package/build/locales/pt/openhands.json +138 -1
  240. package/build/locales/tr/openhands.json +138 -1
  241. package/build/locales/uk/openhands.json +138 -1
  242. package/build/locales/zh-CN/openhands.json +138 -1
  243. package/build/locales/zh-TW/openhands.json +138 -1
  244. package/config/defaults.json +7 -9
  245. package/dist/_virtual/__vite-browser-external.cjs +2 -0
  246. package/dist/_virtual/__vite-browser-external.cjs.map +1 -0
  247. package/dist/_virtual/__vite-browser-external.js +9 -0
  248. package/dist/_virtual/__vite-browser-external.js.map +1 -0
  249. package/dist/api/agent-profiles-service/agent-profiles-service.api.cjs +2 -0
  250. package/dist/api/agent-profiles-service/agent-profiles-service.api.cjs.map +1 -0
  251. package/dist/api/agent-profiles-service/agent-profiles-service.api.d.ts +22 -0
  252. package/dist/api/agent-profiles-service/agent-profiles-service.api.js +35 -0
  253. package/dist/api/agent-profiles-service/agent-profiles-service.api.js.map +1 -0
  254. package/dist/api/agent-server-adapter.cjs +2 -2
  255. package/dist/api/agent-server-adapter.cjs.map +1 -1
  256. package/dist/api/agent-server-adapter.d.ts +11 -1
  257. package/dist/api/agent-server-adapter.js +60 -60
  258. package/dist/api/agent-server-adapter.js.map +1 -1
  259. package/dist/api/agent-server-compatibility.cjs +1 -1
  260. package/dist/api/agent-server-compatibility.cjs.map +1 -1
  261. package/dist/api/agent-server-compatibility.js +1 -0
  262. package/dist/api/agent-server-compatibility.js.map +1 -1
  263. package/dist/api/agent-server-home.cjs +1 -1
  264. package/dist/api/agent-server-home.cjs.map +1 -1
  265. package/dist/api/agent-server-home.js +1 -0
  266. package/dist/api/agent-server-home.js.map +1 -1
  267. package/dist/api/cloud/agent-profiles-service.api.cjs +2 -0
  268. package/dist/api/cloud/agent-profiles-service.api.cjs.map +1 -0
  269. package/dist/api/cloud/agent-profiles-service.api.d.ts +7 -0
  270. package/dist/api/cloud/agent-profiles-service.api.js +58 -0
  271. package/dist/api/cloud/agent-profiles-service.api.js.map +1 -0
  272. package/dist/api/cloud/organization-service.api.cjs +1 -1
  273. package/dist/api/cloud/organization-service.api.cjs.map +1 -1
  274. package/dist/api/cloud/organization-service.api.d.ts +8 -0
  275. package/dist/api/cloud/organization-service.api.js +3 -1
  276. package/dist/api/cloud/organization-service.api.js.map +1 -1
  277. package/dist/api/cloud/profiles-service.api.cjs +2 -0
  278. package/dist/api/cloud/profiles-service.api.cjs.map +1 -0
  279. package/dist/api/cloud/profiles-service.api.d.ts +7 -0
  280. package/dist/api/cloud/profiles-service.api.js +75 -0
  281. package/dist/api/cloud/profiles-service.api.js.map +1 -0
  282. package/dist/api/cloud/settings-service.api.cjs +1 -1
  283. package/dist/api/cloud/settings-service.api.cjs.map +1 -1
  284. package/dist/api/cloud/settings-service.api.js +1 -1
  285. package/dist/api/cloud/settings-service.api.js.map +1 -1
  286. package/dist/api/config-service/config-service.api.cjs +1 -1
  287. package/dist/api/config-service/config-service.api.cjs.map +1 -1
  288. package/dist/api/config-service/config-service.api.js +1 -0
  289. package/dist/api/config-service/config-service.api.js.map +1 -1
  290. package/dist/api/conversation-metadata-store.cjs.map +1 -1
  291. package/dist/api/conversation-metadata-store.d.ts +11 -0
  292. package/dist/api/conversation-metadata-store.js.map +1 -1
  293. package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
  294. package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
  295. package/dist/api/conversation-service/agent-server-conversation-service.api.d.ts +20 -1
  296. package/dist/api/conversation-service/agent-server-conversation-service.api.js +134 -105
  297. package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
  298. package/dist/api/conversation-service/agent-server-conversation-service.types.d.ts +2 -0
  299. package/dist/api/conversation-service/conversation-service.api.cjs +1 -1
  300. package/dist/api/conversation-service/conversation-service.api.cjs.map +1 -1
  301. package/dist/api/conversation-service/conversation-service.api.d.ts +1 -0
  302. package/dist/api/conversation-service/conversation-service.api.js +4 -0
  303. package/dist/api/conversation-service/conversation-service.api.js.map +1 -1
  304. package/dist/api/device-flow-client.cjs +1 -1
  305. package/dist/api/device-flow-client.cjs.map +1 -1
  306. package/dist/api/device-flow-client.js +33 -25
  307. package/dist/api/device-flow-client.js.map +1 -1
  308. package/dist/api/event-service/event-service.api.cjs +1 -1
  309. package/dist/api/event-service/event-service.api.cjs.map +1 -1
  310. package/dist/api/event-service/event-service.api.js +1 -0
  311. package/dist/api/event-service/event-service.api.js.map +1 -1
  312. package/dist/api/mcp-service/mcp-redacted-credentials.cjs +1 -1
  313. package/dist/api/mcp-service/mcp-redacted-credentials.cjs.map +1 -1
  314. package/dist/api/mcp-service/mcp-redacted-credentials.d.ts +3 -3
  315. package/dist/api/mcp-service/mcp-redacted-credentials.js +29 -30
  316. package/dist/api/mcp-service/mcp-redacted-credentials.js.map +1 -1
  317. package/dist/api/mcp-service/mcp-service.api.cjs +1 -1
  318. package/dist/api/mcp-service/mcp-service.api.cjs.map +1 -1
  319. package/dist/api/mcp-service/mcp-service.api.d.ts +8 -1
  320. package/dist/api/mcp-service/mcp-service.api.js +129 -23
  321. package/dist/api/mcp-service/mcp-service.api.js.map +1 -1
  322. package/dist/api/option-service/option-service.api.cjs +1 -1
  323. package/dist/api/option-service/option-service.api.cjs.map +1 -1
  324. package/dist/api/option-service/option-service.api.js +1 -0
  325. package/dist/api/option-service/option-service.api.js.map +1 -1
  326. package/dist/api/plugins-management-service.cjs +2 -0
  327. package/dist/api/plugins-management-service.cjs.map +1 -0
  328. package/dist/api/plugins-management-service.d.ts +50 -0
  329. package/dist/api/plugins-management-service.js +41 -0
  330. package/dist/api/plugins-management-service.js.map +1 -0
  331. package/dist/api/plugins-service.d.ts +49 -0
  332. package/dist/api/profiles-service/profiles-service.api.cjs +1 -1
  333. package/dist/api/profiles-service/profiles-service.api.cjs.map +1 -1
  334. package/dist/api/profiles-service/profiles-service.api.js +21 -14
  335. package/dist/api/profiles-service/profiles-service.api.js.map +1 -1
  336. package/dist/api/runtime-service/agent-server-runtime-service.cjs +1 -1
  337. package/dist/api/runtime-service/agent-server-runtime-service.cjs.map +1 -1
  338. package/dist/api/runtime-service/agent-server-runtime-service.js +1 -0
  339. package/dist/api/runtime-service/agent-server-runtime-service.js.map +1 -1
  340. package/dist/api/secrets-service.cjs +1 -1
  341. package/dist/api/secrets-service.cjs.map +1 -1
  342. package/dist/api/secrets-service.js +1 -0
  343. package/dist/api/secrets-service.js.map +1 -1
  344. package/dist/api/settings-service/settings-service.api.cjs +1 -1
  345. package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
  346. package/dist/api/settings-service/settings-service.api.js +92 -50
  347. package/dist/api/settings-service/settings-service.api.js.map +1 -1
  348. package/dist/api/skills-service.cjs +1 -1
  349. package/dist/api/skills-service.cjs.map +1 -1
  350. package/dist/api/skills-service.js +1 -0
  351. package/dist/api/skills-service.js.map +1 -1
  352. package/dist/api/workspaces-service/workspaces-service.api.cjs +1 -1
  353. package/dist/api/workspaces-service/workspaces-service.api.cjs.map +1 -1
  354. package/dist/api/workspaces-service/workspaces-service.api.js +1 -0
  355. package/dist/api/workspaces-service/workspaces-service.api.js.map +1 -1
  356. package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.cjs +1 -1
  357. package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.cjs.map +1 -1
  358. package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.js +57 -38
  359. package/dist/components/conversation-events/chat/event-content-helpers/get-event-content.js.map +1 -1
  360. package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.cjs +2 -1
  361. package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.cjs.map +1 -1
  362. package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.js +13 -9
  363. package/dist/components/conversation-events/chat/event-content-helpers/should-render-event.js.map +1 -1
  364. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs +1 -1
  365. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs.map +1 -1
  366. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js +65 -26
  367. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js.map +1 -1
  368. package/dist/components/conversation-events/chat/event-message.cjs +2 -2
  369. package/dist/components/conversation-events/chat/event-message.cjs.map +1 -1
  370. package/dist/components/conversation-events/chat/event-message.js +78 -76
  371. package/dist/components/conversation-events/chat/event-message.js.map +1 -1
  372. package/dist/components/features/analytics/telemetry-consent-banner.cjs +1 -1
  373. package/dist/components/features/analytics/telemetry-consent-banner.cjs.map +1 -1
  374. package/dist/components/features/analytics/telemetry-consent-banner.js +1 -0
  375. package/dist/components/features/analytics/telemetry-consent-banner.js.map +1 -1
  376. package/dist/components/features/automations/detail/activity-log-item.d.ts +3 -2
  377. package/dist/components/features/automations/detail/activity-log-section.d.ts +3 -2
  378. package/dist/components/features/automations/detail/debug-automation-button.d.ts +17 -0
  379. package/dist/components/features/automations/detail/run-logs-modal.d.ts +6 -1
  380. package/dist/components/features/backends/backend-form-modal.cjs +1 -1
  381. package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
  382. package/dist/components/features/backends/backend-form-modal.d.ts +6 -2
  383. package/dist/components/features/backends/backend-form-modal.js +198 -161
  384. package/dist/components/features/backends/backend-form-modal.js.map +1 -1
  385. package/dist/components/features/backends/backend-row.cjs +1 -1
  386. package/dist/components/features/backends/backend-row.cjs.map +1 -1
  387. package/dist/components/features/backends/backend-row.d.ts +2 -1
  388. package/dist/components/features/backends/backend-row.js +60 -54
  389. package/dist/components/features/backends/backend-row.js.map +1 -1
  390. package/dist/components/features/backends/backend-selector.cjs +1 -1
  391. package/dist/components/features/backends/backend-selector.cjs.map +1 -1
  392. package/dist/components/features/backends/backend-selector.js +4 -4
  393. package/dist/components/features/backends/backend-version.cjs +1 -1
  394. package/dist/components/features/backends/backend-version.cjs.map +1 -1
  395. package/dist/components/features/backends/backend-version.js +1 -0
  396. package/dist/components/features/backends/backend-version.js.map +1 -1
  397. package/dist/components/features/backends/manage-backends-modal.cjs +1 -1
  398. package/dist/components/features/backends/manage-backends-modal.cjs.map +1 -1
  399. package/dist/components/features/backends/manage-backends-modal.js +72 -61
  400. package/dist/components/features/backends/manage-backends-modal.js.map +1 -1
  401. package/dist/components/features/chat/change-agent-button.cjs +1 -1
  402. package/dist/components/features/chat/change-agent-button.js +9 -9
  403. package/dist/components/features/chat/chat-add-file-button.cjs +1 -1
  404. package/dist/components/features/chat/chat-add-file-button.cjs.map +1 -1
  405. package/dist/components/features/chat/chat-add-file-button.js +38 -34
  406. package/dist/components/features/chat/chat-add-file-button.js.map +1 -1
  407. package/dist/components/features/chat/chat-interface.cjs +2 -2
  408. package/dist/components/features/chat/chat-interface.cjs.map +1 -1
  409. package/dist/components/features/chat/chat-interface.js +136 -129
  410. package/dist/components/features/chat/chat-interface.js.map +1 -1
  411. package/dist/components/features/chat/components/chat-input-actions.cjs +1 -1
  412. package/dist/components/features/chat/components/chat-input-actions.cjs.map +1 -1
  413. package/dist/components/features/chat/components/chat-input-actions.js +100 -87
  414. package/dist/components/features/chat/components/chat-input-actions.js.map +1 -1
  415. package/dist/components/features/chat/components/chat-input-llm-profile-picker.cjs +2 -0
  416. package/dist/components/features/chat/components/chat-input-llm-profile-picker.cjs.map +1 -0
  417. package/dist/components/features/chat/components/chat-input-llm-profile-picker.d.ts +15 -0
  418. package/dist/components/features/chat/components/chat-input-llm-profile-picker.js +118 -0
  419. package/dist/components/features/chat/components/chat-input-llm-profile-picker.js.map +1 -0
  420. package/dist/components/features/chat/components/chat-input-model.cjs +1 -1
  421. package/dist/components/features/chat/components/chat-input-model.js +17 -17
  422. package/dist/components/features/chat/components/chat-input-profile-picker.cjs +2 -0
  423. package/dist/components/features/chat/components/chat-input-profile-picker.cjs.map +1 -0
  424. package/dist/components/features/chat/components/chat-input-profile-picker.d.ts +9 -0
  425. package/dist/components/features/chat/components/chat-input-profile-picker.js +112 -0
  426. package/dist/components/features/chat/components/chat-input-profile-picker.js.map +1 -0
  427. package/dist/components/features/chat/components/resolve-picker-kind.cjs +2 -0
  428. package/dist/components/features/chat/components/resolve-picker-kind.cjs.map +1 -0
  429. package/dist/components/features/chat/components/resolve-picker-kind.d.ts +29 -0
  430. package/dist/components/features/chat/components/resolve-picker-kind.js +8 -0
  431. package/dist/components/features/chat/components/resolve-picker-kind.js.map +1 -0
  432. package/dist/components/features/chat/goal-status-banner.cjs +2 -0
  433. package/dist/components/features/chat/goal-status-banner.cjs.map +1 -0
  434. package/dist/components/features/chat/goal-status-banner.d.ts +11 -0
  435. package/dist/components/features/chat/goal-status-banner.js +12 -0
  436. package/dist/components/features/chat/goal-status-banner.js.map +1 -0
  437. package/dist/components/features/chat/goal-status-content.cjs +2 -0
  438. package/dist/components/features/chat/goal-status-content.cjs.map +1 -0
  439. package/dist/components/features/chat/goal-status-content.d.ts +21 -0
  440. package/dist/components/features/chat/goal-status-content.js +98 -0
  441. package/dist/components/features/chat/goal-status-content.js.map +1 -0
  442. package/dist/components/features/chat/interactive-chat-box.cjs +1 -1
  443. package/dist/components/features/chat/interactive-chat-box.cjs.map +1 -1
  444. package/dist/components/features/chat/interactive-chat-box.js +20 -19
  445. package/dist/components/features/chat/interactive-chat-box.js.map +1 -1
  446. package/dist/components/features/chat/tool-visualizers/primitives/code-block.cjs +1 -1
  447. package/dist/components/features/chat/tool-visualizers/primitives/code-block.cjs.map +1 -1
  448. package/dist/components/features/chat/tool-visualizers/primitives/code-block.d.ts +10 -3
  449. package/dist/components/features/chat/tool-visualizers/primitives/code-block.js +29 -16
  450. package/dist/components/features/chat/tool-visualizers/primitives/code-block.js.map +1 -1
  451. package/dist/components/features/chat/tool-visualizers/primitives/output-pane.cjs +1 -1
  452. package/dist/components/features/chat/tool-visualizers/primitives/output-pane.cjs.map +1 -1
  453. package/dist/components/features/chat/tool-visualizers/primitives/output-pane.d.ts +2 -2
  454. package/dist/components/features/chat/tool-visualizers/primitives/output-pane.js +16 -16
  455. package/dist/components/features/chat/tool-visualizers/primitives/output-pane.js.map +1 -1
  456. package/dist/components/features/chat/user-message-body.cjs +1 -1
  457. package/dist/components/features/chat/user-message-body.cjs.map +1 -1
  458. package/dist/components/features/chat/user-message-body.js +20 -20
  459. package/dist/components/features/chat/user-message-body.js.map +1 -1
  460. package/dist/components/features/command-menu/command-menu-items.d.ts +32 -0
  461. package/dist/components/features/command-menu/command-menu-trigger.cjs +2 -0
  462. package/dist/components/features/command-menu/command-menu-trigger.cjs.map +1 -0
  463. package/dist/components/features/command-menu/command-menu-trigger.d.ts +5 -0
  464. package/dist/components/features/command-menu/command-menu-trigger.js +53 -0
  465. package/dist/components/features/command-menu/command-menu-trigger.js.map +1 -0
  466. package/dist/components/features/command-menu/command-menu.d.ts +2 -0
  467. package/dist/components/features/command-menu/index.d.ts +2 -0
  468. package/dist/components/features/controls/tools-context-menu.cjs +1 -1
  469. package/dist/components/features/controls/tools-context-menu.cjs.map +1 -1
  470. package/dist/components/features/controls/tools-context-menu.d.ts +3 -1
  471. package/dist/components/features/controls/tools-context-menu.js +94 -77
  472. package/dist/components/features/controls/tools-context-menu.js.map +1 -1
  473. package/dist/components/features/conversation-panel/cloud-new-conversation-menu.cjs +1 -1
  474. package/dist/components/features/conversation-panel/cloud-new-conversation-menu.cjs.map +1 -1
  475. package/dist/components/features/conversation-panel/cloud-new-conversation-menu.js +8 -5
  476. package/dist/components/features/conversation-panel/cloud-new-conversation-menu.js.map +1 -1
  477. package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.cjs.map +1 -1
  478. package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.d.ts +1 -1
  479. package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.js.map +1 -1
  480. package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
  481. package/dist/components/features/conversation-panel/conversation-panel.cjs.map +1 -1
  482. package/dist/components/features/conversation-panel/conversation-panel.js +2 -1
  483. package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
  484. package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs +1 -1
  485. package/dist/components/features/conversation-panel/local-new-conversation-menu.cjs.map +1 -1
  486. package/dist/components/features/conversation-panel/local-new-conversation-menu.js +4 -1
  487. package/dist/components/features/conversation-panel/local-new-conversation-menu.js.map +1 -1
  488. package/dist/components/features/conversation-panel/plugins-modal.cjs +2 -0
  489. package/dist/components/features/conversation-panel/plugins-modal.cjs.map +1 -0
  490. package/dist/components/features/conversation-panel/plugins-modal.d.ts +12 -0
  491. package/dist/components/features/conversation-panel/plugins-modal.js +62 -0
  492. package/dist/components/features/conversation-panel/plugins-modal.js.map +1 -0
  493. package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.cjs +1 -1
  494. package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.cjs.map +1 -1
  495. package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.js +4 -4
  496. package/dist/components/features/mcp-logo-badge.cjs +1 -1
  497. package/dist/components/features/mcp-logo-badge.cjs.map +1 -1
  498. package/dist/components/features/mcp-logo-badge.js +17 -15
  499. package/dist/components/features/mcp-logo-badge.js.map +1 -1
  500. package/dist/components/features/mcp-page/custom-server-editor.cjs +1 -1
  501. package/dist/components/features/mcp-page/custom-server-editor.cjs.map +1 -1
  502. package/dist/components/features/mcp-page/custom-server-editor.js +102 -59
  503. package/dist/components/features/mcp-page/custom-server-editor.js.map +1 -1
  504. package/dist/components/features/mcp-page/install-server-modal.cjs +1 -1
  505. package/dist/components/features/mcp-page/install-server-modal.cjs.map +1 -1
  506. package/dist/components/features/mcp-page/install-server-modal.js +284 -169
  507. package/dist/components/features/mcp-page/install-server-modal.js.map +1 -1
  508. package/dist/components/features/mcp-page/installed-server-card.cjs +1 -1
  509. package/dist/components/features/mcp-page/installed-server-card.cjs.map +1 -1
  510. package/dist/components/features/mcp-page/installed-server-card.js +16 -18
  511. package/dist/components/features/mcp-page/installed-server-card.js.map +1 -1
  512. package/dist/components/features/onboarding/onboarding-host.d.ts +3 -13
  513. package/dist/components/features/plugins/add-plugin-modal.d.ts +6 -0
  514. package/dist/components/features/plugins/build-plugins-view-model.d.ts +39 -0
  515. package/dist/components/features/plugins/plugin-card.d.ts +13 -0
  516. package/dist/components/features/plugins/plugin-detail-modal.d.ts +13 -0
  517. package/dist/components/features/plugins/plugin-picker-card.d.ts +10 -0
  518. package/dist/components/features/plugins/plugin-picker-modal.d.ts +9 -0
  519. package/dist/components/features/plugins/plugin-picker-trigger.d.ts +9 -0
  520. package/dist/components/features/plugins/plugin-picker.d.ts +18 -0
  521. package/dist/components/features/plugins/plugin-spec-identity.d.ts +28 -0
  522. package/dist/components/features/plugins/plugins-toolbar.d.ts +9 -0
  523. package/dist/components/features/settings/agent-profiles/agent-profile-actions-menu.d.ts +16 -0
  524. package/dist/components/features/settings/agent-profiles/agent-profile-row.d.ts +13 -0
  525. package/dist/components/features/settings/agent-profiles/agent-profiles-body.d.ts +15 -0
  526. package/dist/components/features/settings/agent-profiles/agent-profiles-local-view.d.ts +7 -0
  527. package/dist/components/features/settings/agent-profiles/agent-profiles-manager.d.ts +7 -0
  528. package/dist/components/features/settings/agent-profiles/delete-agent-profile-modal.d.ts +7 -0
  529. package/dist/components/features/settings/agent-profiles/index.d.ts +6 -0
  530. package/dist/components/features/settings/agent-profiles/merge-agent-profile-save-input.d.ts +18 -0
  531. package/dist/components/features/settings/llm-profiles/llm-profiles-manager.cjs +1 -1
  532. package/dist/components/features/settings/llm-profiles/llm-profiles-manager.js +1 -0
  533. package/dist/components/features/settings/llm-profiles/llm-settings-local-view.cjs +1 -1
  534. package/dist/components/features/settings/llm-profiles/llm-settings-local-view.js +1 -1
  535. package/dist/components/features/settings/llm-profiles/profile-row.d.ts +3 -1
  536. package/dist/components/features/settings/llm-profiles/profiles-body.d.ts +3 -1
  537. package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.cjs +1 -1
  538. package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.cjs.map +1 -1
  539. package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.js +3 -2
  540. package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.js.map +1 -1
  541. package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs +7 -7
  542. package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs.map +1 -1
  543. package/dist/components/features/settings/mcp-settings/mcp-server-form.js +279 -130
  544. package/dist/components/features/settings/mcp-settings/mcp-server-form.js.map +1 -1
  545. package/dist/components/features/settings/mcp-settings/mcp-server-list-item.d.ts +1 -12
  546. package/dist/components/features/settings/mcp-settings/mcp-server-list.d.ts +1 -11
  547. package/dist/components/features/settings/settings-dropdown-input.cjs +1 -1
  548. package/dist/components/features/settings/settings-dropdown-input.js +6 -6
  549. package/dist/components/features/sidebar/sidebar-rail-body.cjs +1 -1
  550. package/dist/components/features/sidebar/sidebar-rail-body.cjs.map +1 -1
  551. package/dist/components/features/sidebar/sidebar-rail-body.d.ts +1 -2
  552. package/dist/components/features/sidebar/sidebar-rail-body.js +81 -82
  553. package/dist/components/features/sidebar/sidebar-rail-body.js.map +1 -1
  554. package/dist/components/features/sidebar/sidebar.cjs +1 -1
  555. package/dist/components/features/sidebar/sidebar.cjs.map +1 -1
  556. package/dist/components/features/sidebar/sidebar.js +45 -46
  557. package/dist/components/features/sidebar/sidebar.js.map +1 -1
  558. package/dist/components/features/skills/extensions-navigation.cjs +1 -1
  559. package/dist/components/features/skills/extensions-navigation.cjs.map +1 -1
  560. package/dist/components/features/skills/extensions-navigation.js +1 -2
  561. package/dist/components/features/skills/extensions-navigation.js.map +1 -1
  562. package/dist/components/shared/modals/modal-backdrop.cjs +1 -1
  563. package/dist/components/shared/modals/modal-backdrop.cjs.map +1 -1
  564. package/dist/components/shared/modals/modal-backdrop.d.ts +5 -1
  565. package/dist/components/shared/modals/modal-backdrop.js +3 -3
  566. package/dist/components/shared/modals/modal-backdrop.js.map +1 -1
  567. package/dist/components/shared/modals/settings/model-selector.cjs +1 -1
  568. package/dist/components/shared/modals/settings/model-selector.js +16 -16
  569. package/dist/config/defaults.cjs +1 -1
  570. package/dist/config/defaults.cjs.map +1 -1
  571. package/dist/config/defaults.js +7 -3
  572. package/dist/config/defaults.js.map +1 -1
  573. package/dist/contexts/conversation-websocket-context.cjs +3 -3
  574. package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
  575. package/dist/contexts/conversation-websocket-context.js +200 -197
  576. package/dist/contexts/conversation-websocket-context.js.map +1 -1
  577. package/dist/hooks/chat/use-goal-interceptor.cjs +2 -0
  578. package/dist/hooks/chat/use-goal-interceptor.cjs.map +1 -0
  579. package/dist/hooks/chat/use-goal-interceptor.d.ts +8 -0
  580. package/dist/hooks/chat/use-goal-interceptor.js +37 -0
  581. package/dist/hooks/chat/use-goal-interceptor.js.map +1 -0
  582. package/dist/hooks/chat/use-grip-resize.cjs +1 -1
  583. package/dist/hooks/chat/use-grip-resize.cjs.map +1 -1
  584. package/dist/hooks/chat/use-grip-resize.js +17 -16
  585. package/dist/hooks/chat/use-grip-resize.js.map +1 -1
  586. package/dist/hooks/chat/use-model-interceptor.cjs +1 -1
  587. package/dist/hooks/chat/use-model-interceptor.cjs.map +1 -1
  588. package/dist/hooks/chat/use-model-interceptor.d.ts +3 -3
  589. package/dist/hooks/chat/use-model-interceptor.js +8 -9
  590. package/dist/hooks/chat/use-model-interceptor.js.map +1 -1
  591. package/dist/hooks/chat/use-slash-command.cjs +1 -1
  592. package/dist/hooks/chat/use-slash-command.cjs.map +1 -1
  593. package/dist/hooks/chat/use-slash-command.js +4 -4
  594. package/dist/hooks/chat/use-slash-command.js.map +1 -1
  595. package/dist/hooks/mutation/conversation-mutation-utils.cjs +1 -1
  596. package/dist/hooks/mutation/conversation-mutation-utils.cjs.map +1 -1
  597. package/dist/hooks/mutation/conversation-mutation-utils.d.ts +17 -0
  598. package/dist/hooks/mutation/conversation-mutation-utils.js +23 -4
  599. package/dist/hooks/mutation/conversation-mutation-utils.js.map +1 -1
  600. package/dist/hooks/mutation/use-activate-agent-profile.cjs +2 -0
  601. package/dist/hooks/mutation/use-activate-agent-profile.cjs.map +1 -0
  602. package/dist/hooks/mutation/use-activate-agent-profile.d.ts +23 -0
  603. package/dist/hooks/mutation/use-activate-agent-profile.js +34 -0
  604. package/dist/hooks/mutation/use-activate-agent-profile.js.map +1 -0
  605. package/dist/hooks/mutation/use-activate-llm-profile.cjs +1 -1
  606. package/dist/hooks/mutation/use-activate-llm-profile.js +1 -1
  607. package/dist/hooks/mutation/use-add-mcp-server.cjs +1 -1
  608. package/dist/hooks/mutation/use-add-mcp-server.cjs.map +1 -1
  609. package/dist/hooks/mutation/use-add-mcp-server.d.ts +1 -12
  610. package/dist/hooks/mutation/use-add-mcp-server.js +10 -34
  611. package/dist/hooks/mutation/use-add-mcp-server.js.map +1 -1
  612. package/dist/hooks/mutation/use-apply-onboarding-agent-profile.d.ts +20 -0
  613. package/dist/hooks/mutation/use-create-conversation.cjs +1 -1
  614. package/dist/hooks/mutation/use-create-conversation.cjs.map +1 -1
  615. package/dist/hooks/mutation/use-create-conversation.d.ts +2 -0
  616. package/dist/hooks/mutation/use-create-conversation.js +94 -25
  617. package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
  618. package/dist/hooks/mutation/use-delete-agent-profile.d.ts +1 -0
  619. package/dist/hooks/mutation/use-delete-llm-profile.cjs +1 -1
  620. package/dist/hooks/mutation/use-delete-llm-profile.js +1 -1
  621. package/dist/hooks/mutation/use-delete-mcp-server.cjs +1 -1
  622. package/dist/hooks/mutation/use-delete-mcp-server.js +4 -4
  623. package/dist/hooks/mutation/use-fork-conversation.cjs +2 -0
  624. package/dist/hooks/mutation/use-fork-conversation.cjs.map +1 -0
  625. package/dist/hooks/mutation/use-fork-conversation.d.ts +24 -0
  626. package/dist/hooks/mutation/use-fork-conversation.js +29 -0
  627. package/dist/hooks/mutation/use-fork-conversation.js.map +1 -0
  628. package/dist/hooks/mutation/use-install-plugin.d.ts +7 -0
  629. package/dist/hooks/mutation/use-new-conversation-command.cjs +1 -1
  630. package/dist/hooks/mutation/use-new-conversation-command.cjs.map +1 -1
  631. package/dist/hooks/mutation/use-new-conversation-command.d.ts +1 -0
  632. package/dist/hooks/mutation/use-new-conversation-command.js +20 -10
  633. package/dist/hooks/mutation/use-new-conversation-command.js.map +1 -1
  634. package/dist/hooks/mutation/use-rename-agent-profile.d.ts +6 -0
  635. package/dist/hooks/mutation/use-rename-llm-profile.cjs +1 -1
  636. package/dist/hooks/mutation/use-rename-llm-profile.js +1 -1
  637. package/dist/hooks/mutation/use-save-agent-profile.d.ts +5 -0
  638. package/dist/hooks/mutation/use-save-llm-profile.cjs +1 -1
  639. package/dist/hooks/mutation/use-save-llm-profile.js +1 -1
  640. package/dist/hooks/mutation/use-switch-acp-model.cjs.map +1 -1
  641. package/dist/hooks/mutation/use-switch-acp-model.js.map +1 -1
  642. package/dist/hooks/mutation/use-switch-llm-profile-and-log.cjs +1 -1
  643. package/dist/hooks/mutation/use-switch-llm-profile-and-log.cjs.map +1 -1
  644. package/dist/hooks/mutation/use-switch-llm-profile-and-log.d.ts +3 -4
  645. package/dist/hooks/mutation/use-switch-llm-profile-and-log.js +10 -35
  646. package/dist/hooks/mutation/use-switch-llm-profile-and-log.js.map +1 -1
  647. package/dist/hooks/mutation/use-switch-llm-profile.cjs +1 -1
  648. package/dist/hooks/mutation/use-switch-llm-profile.cjs.map +1 -1
  649. package/dist/hooks/mutation/use-switch-llm-profile.d.ts +20 -5
  650. package/dist/hooks/mutation/use-switch-llm-profile.js +38 -14
  651. package/dist/hooks/mutation/use-switch-llm-profile.js.map +1 -1
  652. package/dist/hooks/mutation/use-update-mcp-server.cjs +1 -1
  653. package/dist/hooks/mutation/use-update-mcp-server.cjs.map +1 -1
  654. package/dist/hooks/mutation/use-update-mcp-server.js +11 -37
  655. package/dist/hooks/mutation/use-update-mcp-server.js.map +1 -1
  656. package/dist/hooks/query/query-keys.cjs +1 -1
  657. package/dist/hooks/query/query-keys.cjs.map +1 -1
  658. package/dist/hooks/query/query-keys.d.ts +21 -0
  659. package/dist/hooks/query/query-keys.js +7 -3
  660. package/dist/hooks/query/query-keys.js.map +1 -1
  661. package/dist/hooks/query/use-active-conversation.cjs +1 -1
  662. package/dist/hooks/query/use-active-conversation.cjs.map +1 -1
  663. package/dist/hooks/query/use-active-conversation.js +17 -16
  664. package/dist/hooks/query/use-active-conversation.js.map +1 -1
  665. package/dist/hooks/query/use-agent-profiles.cjs +2 -0
  666. package/dist/hooks/query/use-agent-profiles.cjs.map +1 -0
  667. package/dist/hooks/query/use-agent-profiles.d.ts +13 -0
  668. package/dist/hooks/query/use-agent-profiles.js +24 -0
  669. package/dist/hooks/query/use-agent-profiles.js.map +1 -0
  670. package/dist/hooks/query/use-backends-health.cjs +1 -1
  671. package/dist/hooks/query/use-backends-health.cjs.map +1 -1
  672. package/dist/hooks/query/use-backends-health.js +18 -3
  673. package/dist/hooks/query/use-backends-health.js.map +1 -1
  674. package/dist/hooks/query/use-conversation-history.cjs +1 -1
  675. package/dist/hooks/query/use-conversation-history.cjs.map +1 -1
  676. package/dist/hooks/query/use-conversation-history.js +4 -2
  677. package/dist/hooks/query/use-conversation-history.js.map +1 -1
  678. package/dist/hooks/query/use-local-workspaces.cjs +1 -1
  679. package/dist/hooks/query/use-local-workspaces.cjs.map +1 -1
  680. package/dist/hooks/query/use-local-workspaces.js +1 -0
  681. package/dist/hooks/query/use-local-workspaces.js.map +1 -1
  682. package/dist/hooks/query/use-plugins-marketplace.d.ts +7 -0
  683. package/dist/hooks/query/use-resolved-workspaces.cjs +1 -1
  684. package/dist/hooks/query/use-resolved-workspaces.cjs.map +1 -1
  685. package/dist/hooks/query/use-resolved-workspaces.js +7 -6
  686. package/dist/hooks/query/use-resolved-workspaces.js.map +1 -1
  687. package/dist/hooks/query/use-search-subdirs.cjs +1 -1
  688. package/dist/hooks/query/use-search-subdirs.cjs.map +1 -1
  689. package/dist/hooks/query/use-search-subdirs.js +1 -0
  690. package/dist/hooks/query/use-search-subdirs.js.map +1 -1
  691. package/dist/hooks/query/use-settings.cjs +1 -1
  692. package/dist/hooks/query/use-settings.cjs.map +1 -1
  693. package/dist/hooks/query/use-settings.js +11 -11
  694. package/dist/hooks/query/use-settings.js.map +1 -1
  695. package/dist/hooks/query/use-verified-models.cjs +1 -1
  696. package/dist/hooks/query/use-verified-models.cjs.map +1 -1
  697. package/dist/hooks/query/use-verified-models.js +1 -0
  698. package/dist/hooks/query/use-verified-models.js.map +1 -1
  699. package/dist/hooks/use-acp-model-context.cjs +1 -1
  700. package/dist/hooks/use-acp-model-context.cjs.map +1 -1
  701. package/dist/hooks/use-acp-model-context.d.ts +1 -1
  702. package/dist/hooks/use-acp-model-context.js +9 -8
  703. package/dist/hooks/use-acp-model-context.js.map +1 -1
  704. package/dist/hooks/use-active-agent-profile.cjs +2 -0
  705. package/dist/hooks/use-active-agent-profile.cjs.map +1 -0
  706. package/dist/hooks/use-active-agent-profile.d.ts +20 -0
  707. package/dist/hooks/use-active-agent-profile.js +17 -0
  708. package/dist/hooks/use-active-agent-profile.js.map +1 -0
  709. package/dist/hooks/use-auto-resize.cjs +1 -1
  710. package/dist/hooks/use-auto-resize.cjs.map +1 -1
  711. package/dist/hooks/use-auto-resize.d.ts +2 -0
  712. package/dist/hooks/use-auto-resize.js +49 -45
  713. package/dist/hooks/use-auto-resize.js.map +1 -1
  714. package/dist/hooks/use-can-manage-org-profiles.cjs +1 -0
  715. package/dist/hooks/use-can-manage-org-profiles.d.ts +18 -0
  716. package/dist/hooks/use-can-manage-org-profiles.js +2 -0
  717. package/dist/hooks/use-chat-input-llm-profile-state.cjs +2 -0
  718. package/dist/hooks/use-chat-input-llm-profile-state.cjs.map +1 -0
  719. package/dist/hooks/use-chat-input-llm-profile-state.d.ts +23 -0
  720. package/dist/hooks/use-chat-input-llm-profile-state.js +30 -0
  721. package/dist/hooks/use-chat-input-llm-profile-state.js.map +1 -0
  722. package/dist/hooks/use-chat-input-model-state.cjs.map +1 -1
  723. package/dist/hooks/use-chat-input-model-state.d.ts +1 -1
  724. package/dist/hooks/use-chat-input-model-state.js.map +1 -1
  725. package/dist/hooks/use-chat-input-profile-state.cjs +2 -0
  726. package/dist/hooks/use-chat-input-profile-state.cjs.map +1 -0
  727. package/dist/hooks/use-chat-input-profile-state.d.ts +20 -0
  728. package/dist/hooks/use-chat-input-profile-state.js +22 -0
  729. package/dist/hooks/use-chat-input-profile-state.js.map +1 -0
  730. package/dist/hooks/use-conversation-name-context-menu.cjs +1 -1
  731. package/dist/hooks/use-conversation-name-context-menu.cjs.map +1 -1
  732. package/dist/hooks/use-conversation-name-context-menu.d.ts +4 -0
  733. package/dist/hooks/use-conversation-name-context-menu.js +44 -37
  734. package/dist/hooks/use-conversation-name-context-menu.js.map +1 -1
  735. package/dist/hooks/use-conversation-plugins.cjs +2 -0
  736. package/dist/hooks/use-conversation-plugins.cjs.map +1 -0
  737. package/dist/hooks/use-conversation-plugins.d.ts +9 -0
  738. package/dist/hooks/use-conversation-plugins.js +12 -0
  739. package/dist/hooks/use-conversation-plugins.js.map +1 -0
  740. package/dist/hooks/use-handle-plan-click.cjs +1 -1
  741. package/dist/hooks/use-handle-plan-click.cjs.map +1 -1
  742. package/dist/hooks/use-handle-plan-click.js +2 -1
  743. package/dist/hooks/use-handle-plan-click.js.map +1 -1
  744. package/dist/hooks/use-llm-configured.cjs +1 -1
  745. package/dist/hooks/use-llm-configured.cjs.map +1 -1
  746. package/dist/hooks/use-llm-configured.js +17 -16
  747. package/dist/hooks/use-llm-configured.js.map +1 -1
  748. package/dist/hooks/use-tracking.cjs +1 -1
  749. package/dist/hooks/use-tracking.cjs.map +1 -1
  750. package/dist/hooks/use-tracking.d.ts +51 -1
  751. package/dist/hooks/use-tracking.js +61 -2
  752. package/dist/hooks/use-tracking.js.map +1 -1
  753. package/dist/i18n/declaration.cjs +1 -1
  754. package/dist/i18n/declaration.cjs.map +1 -1
  755. package/dist/i18n/declaration.d.ts +138 -1
  756. package/dist/i18n/declaration.js +1 -1
  757. package/dist/i18n/declaration.js.map +1 -1
  758. package/dist/i18n/translation.cjs +18 -3
  759. package/dist/i18n/translation.cjs.map +1 -1
  760. package/dist/i18n/translation.js +2329 -0
  761. package/dist/i18n/translation.js.map +1 -1
  762. package/dist/icons/slack.cjs +2 -0
  763. package/dist/icons/slack.cjs.map +1 -0
  764. package/dist/icons/slack.js +19 -0
  765. package/dist/icons/slack.js.map +1 -0
  766. package/dist/icons/u-puzzle-piece.cjs +2 -0
  767. package/dist/icons/u-puzzle-piece.cjs.map +1 -0
  768. package/dist/icons/u-puzzle-piece.js +19 -0
  769. package/dist/icons/u-puzzle-piece.js.map +1 -0
  770. package/dist/icons/x-circle-solid.cjs +2 -0
  771. package/dist/icons/x-circle-solid.cjs.map +1 -0
  772. package/dist/icons/x-circle-solid.js +13 -0
  773. package/dist/icons/x-circle-solid.js.map +1 -0
  774. package/dist/locales/ar/openhands.json +138 -1
  775. package/dist/locales/ca/openhands.json +138 -1
  776. package/dist/locales/de/openhands.json +138 -1
  777. package/dist/locales/en/openhands.json +138 -1
  778. package/dist/locales/es/openhands.json +138 -1
  779. package/dist/locales/fr/openhands.json +138 -1
  780. package/dist/locales/it/openhands.json +138 -1
  781. package/dist/locales/ja/openhands.json +138 -1
  782. package/dist/locales/ko-KR/openhands.json +138 -1
  783. package/dist/locales/no/openhands.json +138 -1
  784. package/dist/locales/pt/openhands.json +138 -1
  785. package/dist/locales/tr/openhands.json +138 -1
  786. package/dist/locales/uk/openhands.json +138 -1
  787. package/dist/locales/zh-CN/openhands.json +138 -1
  788. package/dist/locales/zh-TW/openhands.json +138 -1
  789. package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.cjs +1 -1
  790. package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.cjs.map +1 -1
  791. package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.js +0 -20
  792. package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.js.map +1 -1
  793. package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.cjs +1 -1
  794. package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.cjs.map +1 -1
  795. package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.js +1 -6
  796. package/dist/node_modules/@openhands/extensions/integrations/catalog/asana.js.map +1 -1
  797. package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.cjs +1 -1
  798. package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.cjs.map +1 -1
  799. package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.js +70 -3
  800. package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.js.map +1 -1
  801. package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.cjs +1 -1
  802. package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.cjs.map +1 -1
  803. package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.js +1 -6
  804. package/dist/node_modules/@openhands/extensions/integrations/catalog/bitbucket.js.map +1 -1
  805. package/dist/node_modules/@openhands/extensions/integrations/catalog/box.cjs +1 -1
  806. package/dist/node_modules/@openhands/extensions/integrations/catalog/box.cjs.map +1 -1
  807. package/dist/node_modules/@openhands/extensions/integrations/catalog/box.js +1 -6
  808. package/dist/node_modules/@openhands/extensions/integrations/catalog/box.js.map +1 -1
  809. package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.cjs +1 -1
  810. package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.cjs.map +1 -1
  811. package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.js +3 -7
  812. package/dist/node_modules/@openhands/extensions/integrations/catalog/canva.js.map +1 -1
  813. package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.cjs +1 -1
  814. package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.cjs.map +1 -1
  815. package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.js +1 -6
  816. package/dist/node_modules/@openhands/extensions/integrations/catalog/confluence.js.map +1 -1
  817. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs +1 -1
  818. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.cjs.map +1 -1
  819. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js +27 -2
  820. package/dist/node_modules/@openhands/extensions/integrations/catalog/datadog.js.map +1 -1
  821. package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.cjs +1 -1
  822. package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.cjs.map +1 -1
  823. package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.js +1 -6
  824. package/dist/node_modules/@openhands/extensions/integrations/catalog/discord.js.map +1 -1
  825. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.cjs +1 -1
  826. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.cjs.map +1 -1
  827. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.js +20 -26
  828. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.js.map +1 -1
  829. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs +1 -1
  830. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs.map +1 -1
  831. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js +0 -9
  832. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js.map +1 -1
  833. package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.cjs +1 -1
  834. package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.cjs.map +1 -1
  835. package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.js +1 -6
  836. package/dist/node_modules/@openhands/extensions/integrations/catalog/gmail.js.map +1 -1
  837. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.cjs +1 -1
  838. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.cjs.map +1 -1
  839. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.js +1 -6
  840. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-calendar.js.map +1 -1
  841. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.cjs +1 -1
  842. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.cjs.map +1 -1
  843. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.js +1 -6
  844. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-docs.js.map +1 -1
  845. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.cjs +1 -1
  846. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.cjs.map +1 -1
  847. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.js +1 -6
  848. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-drive.js.map +1 -1
  849. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.cjs +1 -1
  850. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.cjs.map +1 -1
  851. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.js +1 -6
  852. package/dist/node_modules/@openhands/extensions/integrations/catalog/google-sheets.js.map +1 -1
  853. package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.cjs +1 -1
  854. package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.cjs.map +1 -1
  855. package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.js +1 -6
  856. package/dist/node_modules/@openhands/extensions/integrations/catalog/intercom.js.map +1 -1
  857. package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.cjs +1 -1
  858. package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.cjs.map +1 -1
  859. package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.js +1 -6
  860. package/dist/node_modules/@openhands/extensions/integrations/catalog/jira.js.map +1 -1
  861. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.cjs +1 -1
  862. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.cjs.map +1 -1
  863. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.js +13 -13
  864. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.js.map +1 -1
  865. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.cjs +1 -1
  866. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.cjs.map +1 -1
  867. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.js +1 -6
  868. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.js.map +1 -1
  869. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.cjs +1 -1
  870. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.cjs.map +1 -1
  871. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.js +1 -6
  872. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.js.map +1 -1
  873. package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.cjs +1 -1
  874. package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.cjs.map +1 -1
  875. package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.js +14 -10
  876. package/dist/node_modules/@openhands/extensions/integrations/catalog/miro.js.map +1 -1
  877. package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.cjs +1 -1
  878. package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.cjs.map +1 -1
  879. package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.js +13 -10
  880. package/dist/node_modules/@openhands/extensions/integrations/catalog/monday.js.map +1 -1
  881. package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.cjs +1 -1
  882. package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.cjs.map +1 -1
  883. package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.js +1 -6
  884. package/dist/node_modules/@openhands/extensions/integrations/catalog/netlify.js.map +1 -1
  885. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs +1 -1
  886. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs.map +1 -1
  887. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js +1 -8
  888. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js.map +1 -1
  889. package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.cjs +1 -1
  890. package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.cjs.map +1 -1
  891. package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.js +1 -6
  892. package/dist/node_modules/@openhands/extensions/integrations/catalog/okta.js.map +1 -1
  893. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.cjs +1 -1
  894. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.cjs.map +1 -1
  895. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.js +1 -6
  896. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.js.map +1 -1
  897. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.cjs +1 -1
  898. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.cjs.map +1 -1
  899. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js +20 -18
  900. package/dist/node_modules/@openhands/extensions/integrations/catalog/posthog.js.map +1 -1
  901. package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.cjs +1 -1
  902. package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.cjs.map +1 -1
  903. package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.js +66 -21
  904. package/dist/node_modules/@openhands/extensions/integrations/catalog/quickbooks.js.map +1 -1
  905. package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.cjs +1 -1
  906. package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.cjs.map +1 -1
  907. package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.js +17 -11
  908. package/dist/node_modules/@openhands/extensions/integrations/catalog/salesforce.js.map +1 -1
  909. package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.cjs +1 -1
  910. package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.cjs.map +1 -1
  911. package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.js +12 -17
  912. package/dist/node_modules/@openhands/extensions/integrations/catalog/sentry.js.map +1 -1
  913. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.cjs +1 -1
  914. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.cjs.map +1 -1
  915. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.js +1 -6
  916. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.js.map +1 -1
  917. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs +1 -1
  918. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs.map +1 -1
  919. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js +1 -1
  920. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js.map +1 -1
  921. package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.cjs +1 -1
  922. package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.cjs.map +1 -1
  923. package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.js +14 -19
  924. package/dist/node_modules/@openhands/extensions/integrations/catalog/stripe.js.map +1 -1
  925. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.cjs +1 -1
  926. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.cjs.map +1 -1
  927. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.js +15 -20
  928. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.js.map +1 -1
  929. package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.cjs +2 -0
  930. package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.cjs.map +1 -0
  931. package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.js +33 -0
  932. package/dist/node_modules/@openhands/extensions/integrations/catalog/superhuman-mail.js.map +1 -0
  933. package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.cjs +1 -1
  934. package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.cjs.map +1 -1
  935. package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.js +10 -8
  936. package/dist/node_modules/@openhands/extensions/integrations/catalog/trello.js.map +1 -1
  937. package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.cjs +1 -1
  938. package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.cjs.map +1 -1
  939. package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.js +1 -6
  940. package/dist/node_modules/@openhands/extensions/integrations/catalog/vercel.js.map +1 -1
  941. package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.cjs +1 -1
  942. package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.cjs.map +1 -1
  943. package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.js +1 -6
  944. package/dist/node_modules/@openhands/extensions/integrations/catalog/xero.js.map +1 -1
  945. package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.cjs +1 -1
  946. package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.cjs.map +1 -1
  947. package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.js +1 -6
  948. package/dist/node_modules/@openhands/extensions/integrations/catalog/zoom.js.map +1 -1
  949. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs +1 -1
  950. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs.map +1 -1
  951. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js +71 -89
  952. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js.map +1 -1
  953. package/dist/node_modules/@openhands/extensions/integrations/index.cjs +1 -1
  954. package/dist/node_modules/@openhands/extensions/integrations/index.cjs.map +1 -1
  955. package/dist/node_modules/@openhands/extensions/integrations/index.js +4 -4
  956. package/dist/node_modules/@openhands/extensions/integrations/index.js.map +1 -1
  957. package/dist/node_modules/@openhands/extensions/skills/index.cjs +502 -43
  958. package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
  959. package/dist/node_modules/@openhands/extensions/skills/index.js +58 -33
  960. package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
  961. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.cjs +2 -0
  962. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.cjs.map +1 -0
  963. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.js +40 -0
  964. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-profiles-client.js.map +1 -0
  965. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.cjs +1 -1
  966. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.cjs.map +1 -1
  967. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.js +4 -4
  968. package/dist/node_modules/@openhands/typescript-client/dist/client/agent-server-compatibility.js.map +1 -1
  969. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.cjs +1 -1
  970. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.cjs.map +1 -1
  971. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.js +3 -0
  972. package/dist/node_modules/@openhands/typescript-client/dist/client/bash-client.js.map +1 -1
  973. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.cjs +1 -1
  974. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.cjs.map +1 -1
  975. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.js +3 -0
  976. package/dist/node_modules/@openhands/typescript-client/dist/client/conversation-client.js.map +1 -1
  977. package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.cjs +1 -0
  978. package/dist/node_modules/@openhands/typescript-client/dist/client/desktop-client.js +1 -0
  979. package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.cjs +1 -0
  980. package/dist/node_modules/@openhands/typescript-client/dist/client/hooks-client.js +1 -0
  981. package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.cjs +1 -1
  982. package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.cjs.map +1 -1
  983. package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.js +84 -27
  984. package/dist/node_modules/@openhands/typescript-client/dist/client/http-client.js.map +1 -1
  985. package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.cjs +1 -1
  986. package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.cjs.map +1 -1
  987. package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.js +9 -0
  988. package/dist/node_modules/@openhands/typescript-client/dist/client/mcp-client.js.map +1 -1
  989. package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.cjs +1 -0
  990. package/dist/node_modules/@openhands/typescript-client/dist/client/meta-profiles-client.js +1 -0
  991. package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.cjs +2 -0
  992. package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.cjs.map +1 -0
  993. package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.js +42 -0
  994. package/dist/node_modules/@openhands/typescript-client/dist/client/plugins-client.js.map +1 -0
  995. package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.cjs +1 -0
  996. package/dist/node_modules/@openhands/typescript-client/dist/client/shared-client.js +1 -0
  997. package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.cjs +1 -1
  998. package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.cjs.map +1 -1
  999. package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.js +1 -1
  1000. package/dist/node_modules/@openhands/typescript-client/dist/client/skills-client.js.map +1 -1
  1001. package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.cjs +1 -0
  1002. package/dist/node_modules/@openhands/typescript-client/dist/client/sub-agents-client.js +1 -0
  1003. package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.cjs +1 -0
  1004. package/dist/node_modules/@openhands/typescript-client/dist/client/tool-client.js +1 -0
  1005. package/dist/node_modules/@openhands/typescript-client/dist/clients.cjs +1 -0
  1006. package/dist/node_modules/@openhands/typescript-client/dist/clients.js +20 -0
  1007. package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation-manager.cjs +1 -1
  1008. package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation-manager.js +18 -0
  1009. package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation.cjs +1 -1
  1010. package/dist/node_modules/@openhands/typescript-client/dist/conversation/conversation.js +1 -0
  1011. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.cjs +1 -1
  1012. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-conversation.js +2 -0
  1013. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs +1 -1
  1014. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.cjs.map +1 -1
  1015. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js +15 -17
  1016. package/dist/node_modules/@openhands/typescript-client/dist/conversation/remote-state.js.map +1 -1
  1017. package/dist/node_modules/@openhands/typescript-client/dist/index.cjs +1 -1
  1018. package/dist/node_modules/@openhands/typescript-client/dist/index.js +3 -0
  1019. package/dist/node_modules/@openhands/typescript-client/dist/workspace/workspace.cjs +1 -0
  1020. package/dist/node_modules/@openhands/typescript-client/dist/workspace/workspace.js +1 -0
  1021. package/dist/package.cjs +1 -1
  1022. package/dist/package.cjs.map +1 -1
  1023. package/dist/package.js +7 -4
  1024. package/dist/package.js.map +1 -1
  1025. package/dist/routes/agent-settings.d.ts +106 -0
  1026. package/dist/routes/files-tab.cjs +1 -1
  1027. package/dist/routes/files-tab.js +23 -23
  1028. package/dist/routes/llm-settings.cjs +1 -1
  1029. package/dist/routes/llm-settings.cjs.map +1 -1
  1030. package/dist/routes/llm-settings.d.ts +6 -4
  1031. package/dist/routes/llm-settings.js +0 -1
  1032. package/dist/routes/llm-settings.js.map +1 -1
  1033. package/dist/routes/mcp.cjs.map +1 -1
  1034. package/dist/routes/mcp.js.map +1 -1
  1035. package/dist/services/settings.cjs +1 -1
  1036. package/dist/services/settings.cjs.map +1 -1
  1037. package/dist/services/settings.js +2 -6
  1038. package/dist/services/settings.js.map +1 -1
  1039. package/dist/stores/command-menu-store.cjs +2 -0
  1040. package/dist/stores/command-menu-store.cjs.map +1 -0
  1041. package/dist/stores/command-menu-store.d.ts +8 -0
  1042. package/dist/stores/command-menu-store.js +12 -0
  1043. package/dist/stores/command-menu-store.js.map +1 -0
  1044. package/dist/stores/conversation-panel-preferences-store.cjs +1 -1
  1045. package/dist/stores/conversation-panel-preferences-store.cjs.map +1 -1
  1046. package/dist/stores/conversation-panel-preferences-store.js +1 -1
  1047. package/dist/stores/conversation-panel-preferences-store.js.map +1 -1
  1048. package/dist/stores/conversation-store.cjs +1 -1
  1049. package/dist/stores/conversation-store.cjs.map +1 -1
  1050. package/dist/stores/conversation-store.d.ts +1 -0
  1051. package/dist/stores/conversation-store.js +1 -0
  1052. package/dist/stores/conversation-store.js.map +1 -1
  1053. package/dist/stores/goal-store.cjs +2 -0
  1054. package/dist/stores/goal-store.cjs.map +1 -0
  1055. package/dist/stores/goal-store.d.ts +28 -0
  1056. package/dist/stores/goal-store.js +14 -0
  1057. package/dist/stores/goal-store.js.map +1 -0
  1058. package/dist/themes/color-themes.cjs +3 -3
  1059. package/dist/themes/color-themes.cjs.map +1 -1
  1060. package/dist/themes/color-themes.d.ts +13 -2
  1061. package/dist/themes/color-themes.js +2 -2
  1062. package/dist/themes/color-themes.js.map +1 -1
  1063. package/dist/types/agent-server/core/events/conversation-state-event.d.ts +39 -3
  1064. package/dist/types/agent-server/type-guards.cjs +1 -1
  1065. package/dist/types/agent-server/type-guards.cjs.map +1 -1
  1066. package/dist/types/agent-server/type-guards.d.ts +2 -1
  1067. package/dist/types/agent-server/type-guards.js +3 -3
  1068. package/dist/types/agent-server/type-guards.js.map +1 -1
  1069. package/dist/types/mcp-auth.cjs +2 -0
  1070. package/dist/types/mcp-auth.cjs.map +1 -0
  1071. package/dist/types/mcp-auth.d.ts +43 -0
  1072. package/dist/types/mcp-auth.js +13 -0
  1073. package/dist/types/mcp-auth.js.map +1 -0
  1074. package/dist/types/mcp-server.d.ts +22 -1
  1075. package/dist/types/settings.d.ts +6 -4
  1076. package/dist/ui/context-menu.d.ts +1 -1
  1077. package/dist/utils/acp-command.d.ts +64 -0
  1078. package/dist/utils/automation-debug-prompt.d.ts +18 -0
  1079. package/dist/utils/constants.cjs +1 -1
  1080. package/dist/utils/constants.cjs.map +1 -1
  1081. package/dist/utils/constants.d.ts +2 -0
  1082. package/dist/utils/constants.js +12 -3
  1083. package/dist/utils/constants.js.map +1 -1
  1084. package/dist/utils/dropdown-classes.cjs +1 -1
  1085. package/dist/utils/dropdown-classes.cjs.map +1 -1
  1086. package/dist/utils/dropdown-classes.js +4 -2
  1087. package/dist/utils/dropdown-classes.js.map +1 -1
  1088. package/dist/utils/form-control-classes.cjs +1 -1
  1089. package/dist/utils/form-control-classes.js +1 -1
  1090. package/dist/utils/handle-event-for-ui.cjs +1 -1
  1091. package/dist/utils/handle-event-for-ui.cjs.map +1 -1
  1092. package/dist/utils/handle-event-for-ui.js +72 -37
  1093. package/dist/utils/handle-event-for-ui.js.map +1 -1
  1094. package/dist/utils/mcp-config.cjs +1 -1
  1095. package/dist/utils/mcp-config.cjs.map +1 -1
  1096. package/dist/utils/mcp-config.d.ts +15 -9
  1097. package/dist/utils/mcp-config.js +124 -53
  1098. package/dist/utils/mcp-config.js.map +1 -1
  1099. package/dist/utils/mcp-installed-server-display.cjs +2 -0
  1100. package/dist/utils/mcp-installed-server-display.cjs.map +1 -0
  1101. package/dist/utils/mcp-installed-server-display.d.ts +8 -0
  1102. package/dist/utils/mcp-installed-server-display.js +12 -0
  1103. package/dist/utils/mcp-installed-server-display.js.map +1 -0
  1104. package/dist/utils/mcp-installed-servers.cjs +1 -1
  1105. package/dist/utils/mcp-installed-servers.cjs.map +1 -1
  1106. package/dist/utils/mcp-installed-servers.js +4 -4
  1107. package/dist/utils/mcp-installed-servers.js.map +1 -1
  1108. package/dist/utils/mcp-marketplace-utils.cjs +1 -1
  1109. package/dist/utils/mcp-marketplace-utils.cjs.map +1 -1
  1110. package/dist/utils/mcp-marketplace-utils.d.ts +2 -0
  1111. package/dist/utils/mcp-marketplace-utils.js +31 -16
  1112. package/dist/utils/mcp-marketplace-utils.js.map +1 -1
  1113. package/dist/utils/mcp-server-name.cjs +2 -0
  1114. package/dist/utils/mcp-server-name.cjs.map +1 -0
  1115. package/dist/utils/mcp-server-name.d.ts +3 -0
  1116. package/dist/utils/mcp-server-name.js +12 -0
  1117. package/dist/utils/mcp-server-name.js.map +1 -0
  1118. package/dist/utils/plugin-display.cjs +2 -0
  1119. package/dist/utils/plugin-display.cjs.map +1 -0
  1120. package/dist/utils/plugin-display.d.ts +20 -0
  1121. package/dist/utils/plugin-display.js +29 -0
  1122. package/dist/utils/plugin-display.js.map +1 -0
  1123. package/dist/utils/settings-utils.cjs.map +1 -1
  1124. package/dist/utils/settings-utils.js.map +1 -1
  1125. package/dist/utils/workspaces-compatibility.cjs +1 -1
  1126. package/dist/utils/workspaces-compatibility.cjs.map +1 -1
  1127. package/dist/utils/workspaces-compatibility.js +1 -0
  1128. package/dist/utils/workspaces-compatibility.js.map +1 -1
  1129. package/package.json +7 -4
  1130. package/scripts/check-sdk-version-sync.mjs +6 -6
  1131. package/scripts/check-translation-completeness.cjs +6 -0
  1132. package/scripts/dev-safe.mjs +14 -3
  1133. package/scripts/dev-with-automation.mjs +4 -0
  1134. package/scripts/gen-acp-docker-env.mjs +107 -0
  1135. package/scripts/ingress.mjs +66 -226
  1136. package/scripts/proxy-utils.mjs +171 -0
  1137. package/scripts/static-server.mjs +127 -283
  1138. package/build/assets/Trans-CiZR6eVI.js +0 -1
  1139. package/build/assets/active-backend-context-CEuva6ZJ.js +0 -1
  1140. package/build/assets/add-backend-modal-b_eiVk3A.js +0 -1
  1141. package/build/assets/agent-server-conversation-service.api-D_uJ7BKc.js +0 -5
  1142. package/build/assets/agent-settings-DyfziYyM.js +0 -2
  1143. package/build/assets/alert-banner-BFayS5vM.js +0 -1
  1144. package/build/assets/analytics-consent-form-modal-CQ22qlFF.js +0 -1
  1145. package/build/assets/api-key-entry-screen-KnIwP0vN.js +0 -1
  1146. package/build/assets/app-settings-CBaHJ5vJ.js +0 -1
  1147. package/build/assets/automation-detail-DgQswnXg.js +0 -1
  1148. package/build/assets/automations-list-D99p6CoQ.js +0 -1
  1149. package/build/assets/back-nav-button-Cp9z-wsG.js +0 -1
  1150. package/build/assets/backend-form-modal-BABAz-zH.js +0 -1
  1151. package/build/assets/backend-synced-settings-badge-DzwWQC4T.js +0 -1
  1152. package/build/assets/base-modal-1bHiB5Wf.js +0 -1
  1153. package/build/assets/brand-button-FHWgEb4Q.js +0 -1
  1154. package/build/assets/browser-store-B9h0eW79.js +0 -1
  1155. package/build/assets/browser-tab-JiCXo0Nc.js +0 -1
  1156. package/build/assets/chat-send-button-QtyofqFt.js +0 -1
  1157. package/build/assets/check-6ieIiPhW.js +0 -1
  1158. package/build/assets/checkmark-BfgRVMHK.js +0 -1
  1159. package/build/assets/circle-plus-check-toggle-CmINKfZj.js +0 -1
  1160. package/build/assets/close-DhH0uMa7.js +0 -1
  1161. package/build/assets/code-tag-CnORXDJj.js +0 -1
  1162. package/build/assets/combobox-caret-BB15S7zY.js +0 -1
  1163. package/build/assets/condenser-settings-BOKNShD9.js +0 -1
  1164. package/build/assets/confirmation-modal-CofmThy4.js +0 -1
  1165. package/build/assets/context-menu-list-item-DO12IEaK.js +0 -1
  1166. package/build/assets/conversation-DIzv-jq8.js +0 -1
  1167. package/build/assets/conversation-DV3odvMe.js +0 -19
  1168. package/build/assets/conversation-local-storage-DK7yJr5N.js +0 -1
  1169. package/build/assets/conversation-panel-CgCarTAn.js +0 -1
  1170. package/build/assets/conversation-service.api-RV_bOKNz.js +0 -1
  1171. package/build/assets/conversation-state-store-4obo4ZMf.js +0 -1
  1172. package/build/assets/conversation-store-CXrL0v-X.js +0 -6
  1173. package/build/assets/conversation-tab-empty-state-CqT5ur_H.js +0 -1
  1174. package/build/assets/copy-C5tBqfWu.js +0 -1
  1175. package/build/assets/copy-to-clipboard-button-BVFYcsg_.js +0 -1
  1176. package/build/assets/createLucideIcon-D3nkdIAN.js +0 -1
  1177. package/build/assets/declaration-B0yY_dkQ.js +0 -1
  1178. package/build/assets/device-verify-DRupI_hz.js +0 -1
  1179. package/build/assets/dist-D5d5zm8o.js +0 -1
  1180. package/build/assets/dist-fV7trlfb.js +0 -1
  1181. package/build/assets/dropdown-classes-5IsMjYYw.js +0 -1
  1182. package/build/assets/edit-automation-modal-BG-gd82b.js +0 -1
  1183. package/build/assets/ellipsis-button-DWvVZO_r.js +0 -1
  1184. package/build/assets/entry.client-uhbVfCtd.js +0 -2
  1185. package/build/assets/enum-filter-dropdown-CB2fqz_e.js +0 -1
  1186. package/build/assets/environment-switch-overlay-Oeal5TVq.js +0 -1
  1187. package/build/assets/extensions-hub-DxiE0AZR.js +0 -1
  1188. package/build/assets/files-tab-1F2OlNeH.js +0 -1
  1189. package/build/assets/files-tab-store-C1q5Rbx3.js +0 -1
  1190. package/build/assets/folder-C5tr7xyN.js +0 -1
  1191. package/build/assets/get-language-from-path-E1JKsbeE.js +0 -1
  1192. package/build/assets/git-provider-icon-CKs-22Ts.js +0 -1
  1193. package/build/assets/home-B3E0le0g.js +0 -1
  1194. package/build/assets/iconBase-DMoh3FEg.js +0 -1
  1195. package/build/assets/index-redirect-DhuK5mhS.js +0 -1
  1196. package/build/assets/install-server-modal-DjintV14.js +0 -1
  1197. package/build/assets/is-backend-llm-ready-Bj44pekN.js +0 -1
  1198. package/build/assets/launch-DCU3S84p.js +0 -1
  1199. package/build/assets/lesson-plan-BUUPKVsa.js +0 -3
  1200. package/build/assets/link-external-CF4KHxx-.js +0 -1
  1201. package/build/assets/llm-client-BakM_czF.js +0 -1
  1202. package/build/assets/llm-not-configured-banner-BV-NIjfR.js +0 -27
  1203. package/build/assets/llm-settings-B5d7PHzz.js +0 -1
  1204. package/build/assets/llm-settings-C5whb-0p.js +0 -1
  1205. package/build/assets/loader-circle-DyX8DmLg.js +0 -1
  1206. package/build/assets/loading-spinner-BvOAco8a.js +0 -1
  1207. package/build/assets/manage-backends-modal-D9ClxVpM.js +0 -1
  1208. package/build/assets/manifest-38a873aa.js +0 -1
  1209. package/build/assets/mcp-7rk44GRS.js +0 -9
  1210. package/build/assets/mcp-client-DxHXYNOw.js +0 -1
  1211. package/build/assets/messages-DgBEaXil.js +0 -43
  1212. package/build/assets/modal-backdrop-DjAC2zOZ.js +0 -1
  1213. package/build/assets/modal-body-OJdIUJ68.js +0 -1
  1214. package/build/assets/modal-close-button-BNjGesHc.js +0 -1
  1215. package/build/assets/model-selector-w2uGPM5y.js +0 -1
  1216. package/build/assets/navigation-context-CUJ60pLI.js +0 -1
  1217. package/build/assets/navigation-link-BiPKTOHF.js +0 -1
  1218. package/build/assets/onboarding-Cit87z8g.js +0 -1
  1219. package/build/assets/onboarding-modal-JPrzvr8W.js +0 -1
  1220. package/build/assets/openhands-logo-uNs9g6LY.js +0 -1
  1221. package/build/assets/option-service.api-BLYUhnCF.js +0 -1
  1222. package/build/assets/organization-service.api-DpSSwlZu.js +0 -1
  1223. package/build/assets/path-utils-B4WAVqvK.js +0 -1
  1224. package/build/assets/plan-components-DSOTFW2D.js +0 -1
  1225. package/build/assets/planner-tab-LmoxgKKe.js +0 -1
  1226. package/build/assets/preload-helper-D_sPnjeL.js +0 -1
  1227. package/build/assets/profiles-client-B4SJ4ZAf.js +0 -1
  1228. package/build/assets/providers-BGUAB8kf.js +0 -1
  1229. package/build/assets/react-Dn-iWFF5.js +0 -1
  1230. package/build/assets/react-dom-BBXlXOZX.js +0 -1
  1231. package/build/assets/react-uQK8du1l.js +0 -1
  1232. package/build/assets/recommended-automations-launcher-Df9MXUpX.js +0 -50
  1233. package/build/assets/root-BShAdYGY.css +0 -1
  1234. package/build/assets/root-C99reK-P.js +0 -2
  1235. package/build/assets/root-layout-BtH64XeC.js +0 -2
  1236. package/build/assets/runtime-waiting-state-C7MjXDeW.js +0 -1
  1237. package/build/assets/schema-field-BCDuEMrl.js +0 -1
  1238. package/build/assets/sdk-section-page-XJN9mGju.js +0 -1
  1239. package/build/assets/sdk-settings-schema-B15AE1GH.js +0 -1
  1240. package/build/assets/search-rob4u9f8.js +0 -1
  1241. package/build/assets/secrets-service-CrPyCR8u.js +0 -1
  1242. package/build/assets/secrets-settings-UJn15N7E.js +0 -1
  1243. package/build/assets/settings-C5aUD_sQ.js +0 -1
  1244. package/build/assets/settings-dropdown-input-DQRt2_RA.js +0 -1
  1245. package/build/assets/settings-gear-B7bZDo_8.js +0 -1
  1246. package/build/assets/settings-index-zP_rYIW1.js +0 -1
  1247. package/build/assets/settings-input-n8FzVso3.js +0 -1
  1248. package/build/assets/settings-list-classes-DquY3fwm.js +0 -1
  1249. package/build/assets/settings-modal-szlQ6LpE.js +0 -1
  1250. package/build/assets/settings-section-header-context-DrXgyNC-.js +0 -1
  1251. package/build/assets/settings-service.api-B4G8NzCM.js +0 -1
  1252. package/build/assets/settings-switch-DsbEm3ie.js +0 -1
  1253. package/build/assets/shared-conversation-BrAvqeaI.js +0 -1
  1254. package/build/assets/sidebar-mobile-menu-toggle-BRZGCe-l.js +0 -1
  1255. package/build/assets/sidebar-nav-link-B_EygIce.js +0 -1
  1256. package/build/assets/skill-card-pill-row-Bq9Imkdh.js +0 -1
  1257. package/build/assets/skills-Wg6i0kbu.js +0 -1
  1258. package/build/assets/skills-client-DNd444Bm.js +0 -1
  1259. package/build/assets/skills-plugins-DaGkVI7-.js +0 -1
  1260. package/build/assets/skills-settings-Dlp0WFaT.js +0 -2
  1261. package/build/assets/styled-tooltip-ulgpZDga.js +0 -1
  1262. package/build/assets/suspense-BqBQEuKs.js +0 -1
  1263. package/build/assets/switch-skeleton-C49gVWOQ.js +0 -1
  1264. package/build/assets/task-list-tab-Bz-UlCm2.js +0 -1
  1265. package/build/assets/telemetry-DD3HKMgf.js +0 -2
  1266. package/build/assets/terminal-BwLvVzyJ.js +0 -1
  1267. package/build/assets/toggle-switch-CxW8-lBI.js +0 -1
  1268. package/build/assets/typography-BLf_mRKH.js +0 -1
  1269. package/build/assets/u-check-circle-CxTAJuY9.js +0 -1
  1270. package/build/assets/u-check-circle-half-Bj73jfUG.js +0 -1
  1271. package/build/assets/u-circuit-C-6V9H9C.js +0 -1
  1272. package/build/assets/u-edit-C7OnK2sa.js +0 -1
  1273. package/build/assets/use-acp-credential-form-oehc057O.js +0 -1
  1274. package/build/assets/use-active-conversation-CFXVX2on.js +0 -1
  1275. package/build/assets/use-agent-state-D6xfZA4-.js +0 -1
  1276. package/build/assets/use-backends-health-93yRIOWs.js +0 -1
  1277. package/build/assets/use-breakpoint-Xdy_aZHE.js +0 -1
  1278. package/build/assets/use-click-outside-element-CADb_gCP.js +0 -1
  1279. package/build/assets/use-cloud-current-user-id-CzOXsy04.js +0 -1
  1280. package/build/assets/use-config-oXjEWyb6.js +0 -1
  1281. package/build/assets/use-create-conversation-D-YkgrxS.js +0 -1
  1282. package/build/assets/use-create-secret-CX7Ij7W4.js +0 -1
  1283. package/build/assets/use-event-store-DMRAQQi8.js +0 -1
  1284. package/build/assets/use-handle-plan-click-CwW2Ijc2.js +0 -1
  1285. package/build/assets/use-is-authed-CNbX1KMm.js +0 -1
  1286. package/build/assets/use-launch-skill-in-chat-xI9byRUw.js +0 -1
  1287. package/build/assets/use-llm-profiles-BXRZ2rBh.js +0 -1
  1288. package/build/assets/use-runtime-is-ready-Dwzs9_vp.js +0 -1
  1289. package/build/assets/use-settings-_usWr_qn.js +0 -1
  1290. package/build/assets/use-settings-nav-items-DoB5iH-7.js +0 -16
  1291. package/build/assets/use-skills-BtorhoCN.js +0 -1
  1292. package/build/assets/use-task-list-u46BhYBC.js +0 -1
  1293. package/build/assets/use-tracking-Ca7p71hH.js +0 -1
  1294. package/build/assets/use-user-conversation-U-16WF6G.js +0 -1
  1295. package/build/assets/useMutation-CseCrRRO.js +0 -1
  1296. package/build/assets/useQuery-bowvACed.js +0 -1
  1297. package/build/assets/useTranslation-KhTtKmnv.js +0 -1
  1298. package/build/assets/utils-cRyMoFbz.js +0 -1
  1299. package/build/assets/vendor~conversation-panel~conversation~alert-banner-CjfR7T3x.js +0 -1
  1300. package/build/assets/vendor~entry.client-_zl82x5T.js +0 -1
  1301. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~dj9x5fm9-CgCGB-3J.js +0 -177
  1302. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~jfvr34cq-BJdsUTJG.js +0 -1
  1303. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~m3df9r20-BynFAJ_S.js +0 -1
  1304. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~nk00xiud-MfCRtPrK.js +0 -9
  1305. package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~ghtfhmuy-BHDILMe2.js +0 -1
  1306. package/build/assets/vendor~root-layout~conversation-panel~conversation-BFZmbXpq.js +0 -1
  1307. package/build/assets/vendor~root-layout~conversation-panel~conversation~index-BPY-kNjK.js +0 -1
  1308. package/build/assets/vendor~root-layout~home~conversation-panel~conversation-BhWqQNmF.js +0 -1
  1309. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~cfyi58ut-CnnEa0dP.js +0 -1
  1310. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~clac83qc-DMX6XUwI.js +0 -2
  1311. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ldu51w4e-Cqp6k3RG.js +0 -1
  1312. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ldu51w4e-DS4GWhCz.js +0 -9
  1313. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~ji28rqgb-DVffa9Ks.js +0 -48
  1314. package/build/assets/vendor~root-layout~home~mcp~automations-list~onboarding-modal-BzR6ypP3.js +0 -1
  1315. package/build/assets/vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~hzfcl1q6-BcvHZmEZ.js +0 -2
  1316. package/build/assets/vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~hzfcl1q6-Cuvp6wqR.js +0 -14
  1317. package/build/assets/verification-settings-DKZnUHD6.js +0 -1
  1318. package/build/assets/x-DpnGZyVW.js +0 -1
  1319. package/build/assets/x-mark-x3tvCZzc.js +0 -1
  1320. package/dist/components/features/analytics/analytics-consent-form-modal.d.ts +0 -5
  1321. package/dist/components/features/chat/switch-profile-button.cjs +0 -2
  1322. package/dist/components/features/chat/switch-profile-button.cjs.map +0 -1
  1323. package/dist/components/features/chat/switch-profile-button.d.ts +0 -1
  1324. package/dist/components/features/chat/switch-profile-button.js +0 -48
  1325. package/dist/components/features/chat/switch-profile-button.js.map +0 -1
  1326. package/dist/components/features/chat/switch-profile-context-menu.cjs +0 -2
  1327. package/dist/components/features/chat/switch-profile-context-menu.cjs.map +0 -1
  1328. package/dist/components/features/chat/switch-profile-context-menu.d.ts +0 -9
  1329. package/dist/components/features/chat/switch-profile-context-menu.js +0 -106
  1330. package/dist/components/features/chat/switch-profile-context-menu.js.map +0 -1
  1331. package/dist/components/features/onboarding/is-backend-llm-ready.d.ts +0 -30
  1332. package/dist/icons/u-circuit.cjs +0 -2
  1333. package/dist/icons/u-circuit.cjs.map +0 -1
  1334. package/dist/icons/u-circuit.js +0 -19
  1335. package/dist/icons/u-circuit.js.map +0 -1
  1336. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.cjs +0 -2
  1337. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.cjs.map +0 -1
  1338. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.js +0 -35
  1339. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickup.js.map +0 -1
  1340. package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.cjs +0 -2
  1341. package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.cjs.map +0 -1
  1342. package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.js +0 -35
  1343. package/dist/node_modules/@openhands/extensions/integrations/catalog/dropbox.js.map +0 -1
  1344. package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.cjs +0 -2
  1345. package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.cjs.map +0 -1
  1346. package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.js +0 -35
  1347. package/dist/node_modules/@openhands/extensions/integrations/catalog/freshdesk.js.map +0 -1
  1348. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs +0 -2
  1349. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs.map +0 -1
  1350. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js +0 -35
  1351. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js.map +0 -1
  1352. package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.cjs +0 -2
  1353. package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.cjs.map +0 -1
  1354. package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.js +0 -35
  1355. package/dist/node_modules/@openhands/extensions/integrations/catalog/mailchimp.js.map +0 -1
  1356. package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.cjs +0 -2
  1357. package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.cjs.map +0 -1
  1358. package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.js +0 -35
  1359. package/dist/node_modules/@openhands/extensions/integrations/catalog/pipedrive.js.map +0 -1
  1360. package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.cjs +0 -2
  1361. package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.cjs.map +0 -1
  1362. package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.js +0 -28
  1363. package/dist/node_modules/@openhands/extensions/integrations/catalog/plaid.js.map +0 -1
  1364. package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.cjs +0 -2
  1365. package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.cjs.map +0 -1
  1366. package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.js +0 -35
  1367. package/dist/node_modules/@openhands/extensions/integrations/catalog/servicenow.js.map +0 -1
  1368. package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.cjs +0 -2
  1369. package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.cjs.map +0 -1
  1370. package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.js +0 -35
  1371. package/dist/node_modules/@openhands/extensions/integrations/catalog/shopify.js.map +0 -1
  1372. package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.cjs +0 -2
  1373. package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.cjs.map +0 -1
  1374. package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.js +0 -35
  1375. package/dist/node_modules/@openhands/extensions/integrations/catalog/zendesk.js.map +0 -1
  1376. /package/build/assets/{agent-server-ui-style-scope-CIDFDeQb.js → agent-server-ui-style-scope-COnDHTm5.js} +0 -0
  1377. /package/build/assets/{automation-DNgDxqtq.js → automation-BU8zu-FP.js} +0 -0
  1378. /package/build/assets/{common-KeiA2Rod.js → common-Dh7OqABE.js} +0 -0
  1379. /package/build/assets/{environment-switch-store-BpKxp6Xq.js → environment-switch-store-DkjlKWzN.js} +0 -0
  1380. /package/build/assets/{extension-module-card-classes-DvvyImGv.js → extension-module-card-classes-9V3J9J_b.js} +0 -0
  1381. /package/build/assets/{git-status-mapper-B3_HbzUT.js → git-status-mapper-BI8FyUVp.js} +0 -0
  1382. /package/build/assets/{handle-capture-consent-BChvj6mt.js → handle-capture-consent-CPMXU29K.js} +0 -0
  1383. /package/build/assets/{llm-subscription-C1xDoa3K.js → llm-subscription-DtsX5Lhg.js} +0 -0
  1384. /package/build/assets/{map-provider-MonJL5SS.js → map-provider-BM2SJarp.js} +0 -0
  1385. /package/build/assets/{objectWithoutPropertiesLoose-BRYudkUn.js → objectWithoutPropertiesLoose-BgYIAs2y.js} +0 -0
  1386. /package/build/assets/{rolldown-runtime-wFmyQBCi.js → rolldown-runtime-BFRubm34.js} +0 -0
  1387. /package/build/assets/{settings-like-page-layout-classes-DNg2vKSM.js → settings-like-page-layout-classes-DENKlZpD.js} +0 -0
  1388. /package/build/assets/{v4-BMWDcIWQ.js → v4-DbCkTSoU.js} +0 -0
  1389. /package/build/assets/{vendor~browser-yZEspfT9.js → vendor~browser-Dqd33JyP.js} +0 -0
  1390. /package/build/assets/{vendor~terminal-CcUoOdAH.js → vendor~terminal-aeP3PnKf.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"agent-server-adapter.cjs","names":[],"sources":["../../src/api/agent-server-adapter.ts"],"sourcesContent":["import { ACP_SETTINGS_KEYS } from \"@openhands/typescript-client\";\nimport { SKILLS_CATALOG } from \"@openhands/extensions/skills\";\nimport { DEFAULT_SETTINGS } from \"#/services/settings\";\nimport { ExecutionStatus } from \"#/types/agent-server/core\";\nimport { Settings, SettingsValue } from \"#/types/settings\";\nimport {\n getAcpPreferredDefaultModel,\n getAcpProvider,\n resolveEffectiveAcpModel,\n} from \"#/constants/acp-providers\";\nimport { getAgentServerClientOptions } from \"./agent-server-client-options\";\nimport { isAgentServerToolAvailable } from \"./agent-server-compatibility\";\nimport { getAgentServerWorkingDir } from \"./agent-server-config\";\nimport { getEffectiveLocalBackend } from \"./backend-registry/active-store\";\nimport { buildAuthHeaders } from \"./backend-registry/auth\";\nimport {\n GetHooksResponse,\n PluginSpec,\n AppConversation,\n AppConversationPage,\n SandboxStatus,\n} from \"./conversation-service/agent-server-conversation-service.types\";\nimport SettingsService from \"./settings-service/settings-service.api\";\nimport { getStoredConversationMetadata } from \"./conversation-metadata-store\";\nimport LLMSubscriptionService from \"./llm-subscription-service\";\nimport {\n LLM_AUTH_TYPE_SUBSCRIPTION,\n OPENAI_SUBSCRIPTION_VENDOR,\n isSubscriptionLlmConfig,\n} from \"#/constants/llm-subscription\";\n\nexport interface DirectConversationInfo {\n id: string;\n title?: string | null;\n created_at: string;\n updated_at: string;\n execution_status?: string | null;\n /** Cloud-only sandbox lifecycle state. Omitted / null for local agent-server conversations. */\n sandbox_status?: string | null;\n metrics?: {\n accumulated_cost?: number | null;\n max_budget_per_task?: number | null;\n accumulated_token_usage?: {\n prompt_tokens?: number;\n completion_tokens?: number;\n cache_read_tokens?: number;\n cache_write_tokens?: number;\n context_window?: number;\n per_turn_token?: number;\n } | null;\n } | null;\n agent?: {\n /**\n * Pydantic discriminator from the SDK union: ``\"ACPAgent\"`` for ACP CLI\n * subprocesses (model lives on the subprocess via ``acp_model``),\n * ``\"Agent\"`` for direct litellm. Read by {@link toAppConversation}.\n */\n kind?: string | null;\n acp_model?: string | null;\n llm?: {\n model?: string | null;\n } | null;\n } | null;\n current_model_id?: string | null;\n current_model_name?: string | null;\n workspace?: {\n working_dir?: string | null;\n } | null;\n /**\n * Arbitrary string-keyed conversation tags surfaced by the agent-server\n * (see ``ConversationInfo.tags``). Canvas only consumes one key today —\n * ``ACP_SERVER_TAG_KEY`` (\"acpserver\") — but the field is typed as a\n * generic record so future readers don't need another wire-shape change.\n * Keys are constrained to ``^[a-z0-9]+$`` by the agent-server validator;\n * values are opaque strings.\n */\n tags?: Record<string, string> | null;\n}\n\n// Module qualname for the Canvas-UI tool. The agent-server imports this via\n// tool_module_qualnames; the host directory is exposed via OH_EXTRA_PYTHON_PATH\n// (see scripts/dev-safe.mjs).\nconst CANVAS_UI_TOOL_NAME = \"canvas_ui\";\nconst CANVAS_UI_TOOL_MODULE = \"canvas_ui_tool\";\n\nconst DEFAULT_TOOL_NAMES = [\n \"terminal\",\n \"file_editor\",\n \"task_tracker\",\n CANVAS_UI_TOOL_NAME,\n];\nconst BROWSER_TOOL_SET_NAME = \"browser_tool_set\";\nconst TASK_TOOL_SET_NAME = \"task_tool_set\";\n\nfunction browserToolsEnabled() {\n return import.meta.env.VITE_ENABLE_BROWSER_TOOLS !== \"false\";\n}\n\n/**\n * Shape of the runtime services info (set by the dev launchers in\n * scripts/dev-*.mjs as `VITE_RUNTIME_SERVICES_INFO`, or injected at serve time\n * by `scripts/static-server.mjs` for static builds — see\n * `getRawRuntimeServicesInfo`). All URLs are written from the agent's point of\n * view, not the browser's. The block is rendered into the agent's system prompt\n * via `AgentContext.system_message_suffix` so the agent knows what's\n * reachable from inside its sandbox without having to probe.\n */\ninterface RuntimeServicesInfo {\n mode?: string;\n agent_host_alias?: string;\n services?: {\n agent_server?: { description?: string; url_from_agent?: string };\n ingress?: { description?: string; url_from_agent?: string };\n frontend?: {\n kind?: \"vite\" | \"static\";\n description?: string;\n url_from_agent?: string;\n };\n // `vite` is the legacy key name for the frontend entry, accepted for\n // one release while older dev-stack launchers may still emit it.\n vite?: { description?: string; url_from_agent?: string };\n automation?: {\n description?: string;\n url_from_agent?: string;\n api_prefix?: string;\n docs_url?: string;\n openapi_url?: string;\n auth_env_var?: string;\n };\n };\n}\n\n/**\n * Return the raw runtime-services JSON string, consulting two sources in order\n * (mirrors `getBakedSessionApiKey` in agent-server-config.ts):\n * 1. `VITE_RUNTIME_SERVICES_INFO` — baked into the bundle at build time by\n * the dev launchers (`npm run dev`, dev:static).\n * 2. `window.__AGENT_CANVAS_RUNTIME_SERVICES_INFO__` — injected into\n * index.html at serve time by `scripts/static-server.mjs\n * --runtime-services-info <json>`. This is the path used by static builds\n * (the Docker image and the published binary), where the env var is empty\n * in the prebuilt bundle. Without it the `<RUNTIME_SERVICES>` block is\n * missing and the agent cannot reach the local automation backend.\n */\nfunction getRawRuntimeServicesInfo(): string | null {\n const envRaw = import.meta.env.VITE_RUNTIME_SERVICES_INFO?.trim();\n if (envRaw) return envRaw;\n\n if (typeof window !== \"undefined\") {\n const injected = (window as unknown as Record<string, unknown>)\n .__AGENT_CANVAS_RUNTIME_SERVICES_INFO__;\n if (typeof injected === \"string\") {\n return injected.trim() || null;\n }\n }\n\n return null;\n}\n\nfunction parseRuntimeServicesInfo(): RuntimeServicesInfo | null {\n const raw = getRawRuntimeServicesInfo();\n if (!raw) return null;\n try {\n const parsed = JSON.parse(raw) as RuntimeServicesInfo;\n if (!parsed || typeof parsed !== \"object\") return null;\n return parsed;\n } catch {\n // Malformed JSON: ignore and fall back to no runtime info, rather than\n // tearing down conversation creation over a misconfigured env var or\n // injected value.\n return null;\n }\n}\n\n/**\n * Return the deployment mode from the runtime services info, e.g. \"docker\",\n * \"dev:automation\", etc. Returns `null` when no runtime info is configured.\n */\nexport function getDeploymentMode(): string | null {\n return parseRuntimeServicesInfo()?.mode ?? null;\n}\n\n/**\n * Render the runtime services info into a markdown block suitable for\n * appending to the system prompt via `AgentContext.system_message_suffix`.\n *\n * Returns `undefined` when no runtime info is configured, so callers can\n * safely omit the field on production builds (where the launcher doesn't\n * set `VITE_RUNTIME_SERVICES_INFO`).\n */\nexport function buildRuntimeServicesSystemSuffix(): string | undefined {\n const info = parseRuntimeServicesInfo();\n if (!info?.services) return undefined;\n\n const lines: string[] = [];\n lines.push(\"<RUNTIME_SERVICES>\");\n if (info.mode) {\n lines.push(\n `You are running inside an agent-canvas dev stack started in '${info.mode}' mode.`,\n );\n } else {\n lines.push(\"You are running inside an agent-canvas dev stack.\");\n }\n lines.push(\n \"The following services are reachable from your sandbox. URLs are written\",\n \"from your point of view (i.e., as you should curl/fetch them).\",\n \"\",\n );\n\n const { agent_server, ingress, automation } = info.services;\n const { frontend } = info.services;\n\n if (agent_server?.url_from_agent) {\n lines.push(\n `* Agent Server (you): ${agent_server.url_from_agent}`,\n ` ${agent_server.description ?? \"The agent-server hosting your tool calls.\"}`,\n );\n }\n if (ingress?.url_from_agent) {\n lines.push(\n `* Ingress: ${ingress.url_from_agent}`,\n ` ${ingress.description ?? \"Unified entry point for browser-facing traffic.\"}`,\n );\n }\n if (frontend?.url_from_agent) {\n lines.push(\n `* Frontend: ${frontend.url_from_agent}`,\n ` ${frontend.description ?? \"Frontend dev server.\"}`,\n );\n }\n if (automation?.url_from_agent) {\n lines.push(\n `* Automation backend: ${automation.url_from_agent}`,\n ` ${automation.description ?? \"OpenHands Automations service.\"}`,\n );\n if (automation.docs_url) {\n lines.push(` Docs: ${automation.docs_url}`);\n }\n if (automation.openapi_url) {\n lines.push(` OpenAPI: ${automation.openapi_url}`);\n }\n if (automation.auth_env_var) {\n // X-Session-API-Key is the local convention shared by the agent-server\n // and automation backend (see openhands-automation auth.py).\n lines.push(\n ` Auth: header 'X-Session-API-Key: $${automation.auth_env_var}'`,\n );\n }\n } else {\n lines.push(\n \"* Automation backend: not running in this dev mode (skip /api/automation calls).\",\n );\n }\n\n // Anchor the \"don't guess\" warning to the actual agent-server URL for\n // this stack instead of a hardcoded port. The agent-server listens on\n // different ports across dev modes, and baking the wrong port into the\n // system prompt is exactly the kind of confusion this block is meant to\n // prevent.\n const agentServerUrl = agent_server?.url_from_agent;\n lines.push(\n \"\",\n \"Trust this block over guessing: do not assume any other URLs are running.\",\n );\n if (agentServerUrl) {\n lines.push(\n `In particular, ${agentServerUrl} inside your sandbox is the Agent Server`,\n \"you are running inside of — NOT the automation backend.\",\n );\n }\n lines.push(\"</RUNTIME_SERVICES>\");\n\n return lines.join(\"\\n\");\n}\n\nexport function toConversationUrl(conversationId: string): string {\n // Local-format conversation URL — points at whichever local agent-server\n // is actually serving the conversation (the bundled one when the active\n // selection is cloud).\n const { host } = getAgentServerClientOptions();\n return `${host}/api/conversations/${conversationId}`;\n}\n\n// TODO(i18n): extract \"Conversation\" once we add CONVERSATION$DEFAULT_TITLE\n// with `{{shortId}}` interpolation. Kept as a literal for now to keep the\n// fallback inside this pure adapter rather than fanning out to display sites.\nexport function getDefaultConversationTitle(conversationId: string): string {\n return `Conversation ${conversationId.slice(0, 5)}`;\n}\n\nexport function toAppConversation(\n info: DirectConversationInfo,\n): AppConversation {\n const metadata = getStoredConversationMetadata(info.id);\n // ACPAgent conversations carry a sentinel ``llm`` on older SDKs. Prefer the\n // runtime model fields when available, then the configured ``acp_model`` that\n // Canvas saves for built-in providers. ``agent_kind`` still gates model\n // switching, so surfacing this string is display-only.\n const isAcp = info.agent?.kind === \"ACPAgent\";\n // Only surface ``acp_server`` for ACP conversations even if the wire\n // payload accidentally carries an ``acpserver`` tag on an OpenHands\n // conversation — the chip is identity info for the ACP CLI subprocess,\n // and showing it on a non-ACP conversation would be a lie.\n const acpServer = isAcp ? (info.tags?.[ACP_SERVER_TAG_KEY] ?? null) : null;\n return {\n id: info.id,\n created_by_user_id: null,\n selected_repository: metadata?.selected_repository ?? null,\n selected_branch: metadata?.selected_branch ?? null,\n git_provider: metadata?.git_provider ?? null,\n selected_workspace: metadata?.selected_workspace ?? null,\n active_profile: metadata?.active_profile ?? null,\n title: info.title?.trim()\n ? info.title\n : getDefaultConversationTitle(info.id),\n trigger: null,\n pr_number: [],\n agent_kind: isAcp ? \"acp\" : \"openhands\",\n acp_server: acpServer,\n // Chip path: omit ``providerDefault`` so that when no concrete model\n // resolves, the chip falls back to the provider display name in\n // ConversationCardFooter rather than a registry default the session may\n // not actually be running.\n llm_model: isAcp\n ? resolveEffectiveAcpModel({\n runtimeName: info.current_model_name,\n runtimeId: info.current_model_id,\n configured: info.agent?.acp_model,\n sdkLlm: info.agent?.llm?.model,\n })\n : (info.agent?.llm?.model ?? DEFAULT_SETTINGS.llm_model),\n metrics: info.metrics\n ? {\n accumulated_cost: info.metrics.accumulated_cost ?? null,\n max_budget_per_task: info.metrics.max_budget_per_task ?? null,\n accumulated_token_usage: info.metrics.accumulated_token_usage\n ? {\n prompt_tokens:\n info.metrics.accumulated_token_usage.prompt_tokens ?? 0,\n completion_tokens:\n info.metrics.accumulated_token_usage.completion_tokens ?? 0,\n cache_read_tokens:\n info.metrics.accumulated_token_usage.cache_read_tokens ?? 0,\n cache_write_tokens:\n info.metrics.accumulated_token_usage.cache_write_tokens ?? 0,\n context_window:\n info.metrics.accumulated_token_usage.context_window ?? 0,\n per_turn_token:\n info.metrics.accumulated_token_usage.per_turn_token ?? 0,\n }\n : null,\n }\n : null,\n created_at: info.created_at,\n updated_at: info.updated_at,\n execution_status:\n (info.execution_status as AppConversation[\"execution_status\"]) ??\n ExecutionStatus.IDLE,\n sandbox_status: (info.sandbox_status as SandboxStatus | null) ?? null,\n conversation_url: toConversationUrl(info.id),\n session_api_key: getAgentServerClientOptions().apiKey ?? null,\n sandbox_id: null,\n workspace: {\n working_dir: info.workspace?.working_dir ?? getAgentServerWorkingDir(),\n },\n public: false,\n sub_conversation_ids: [],\n };\n}\n\nexport function toConversationPage(data: {\n items: DirectConversationInfo[];\n next_page_id?: string | null;\n}): AppConversationPage {\n return {\n items: data.items.map(toAppConversation),\n next_page_id: data.next_page_id ?? null,\n };\n}\n\ntype SettingsRecord = Record<string, unknown>;\n\ninterface AgentToolSpec {\n name: string;\n params: SettingsRecord;\n}\n\ntype AgentSettingsPayload = SettingsRecord & {\n llm?: SettingsRecord;\n agent_context: SettingsRecord;\n tools?: AgentToolSpec[];\n};\n\ninterface LocalWorkspacePayload {\n kind: \"LocalWorkspace\";\n working_dir: string;\n}\n\ninterface InitialMessagePayload {\n role: \"user\";\n content: Array<{ type: \"text\"; text: string }>;\n run: true;\n}\n\ntype ConversationSettingsPayload = SettingsRecord & {\n workspace: LocalWorkspacePayload;\n initial_message?: InitialMessagePayload;\n};\n\nexport const ACP_SERVER_TAG_KEY = \"acpserver\";\n\nconst FERNET_TOKEN_PREFIX = \"gAAAAA\";\n\nconst CONVERSATION_SETTINGS_METADATA_KEYS = new Set([\n \"schema_version\",\n \"agent_settings\",\n \"workspace\",\n \"conversation_id\",\n \"initial_message\",\n \"plugins\",\n]);\n\nfunction toRecord(value: unknown): SettingsRecord {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n return structuredClone(value as SettingsRecord);\n}\n\nfunction normalizeSecretString(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction hasEncryptedMcpSecrets(mcpConfig: unknown): boolean {\n if (!isPlainRecord(mcpConfig) || !isPlainRecord(mcpConfig.mcpServers)) {\n return false;\n }\n\n return Object.values(mcpConfig.mcpServers).some((server) => {\n if (!isPlainRecord(server)) return false;\n return [\"env\", \"headers\"].some((key) => {\n const values = server[key];\n if (!isPlainRecord(values)) return false;\n return Object.values(values).some(\n (value) =>\n typeof value === \"string\" && value.startsWith(FERNET_TOKEN_PREFIX),\n );\n });\n });\n}\n\nfunction getConversationConfirmationPolicy(\n conversationSettings: SettingsRecord,\n) {\n if (conversationSettings.confirmation_mode !== true) {\n return { kind: \"NeverConfirm\" };\n }\n\n if (conversationSettings.security_analyzer === \"llm\") {\n return { kind: \"ConfirmRisky\", threshold: \"HIGH\", confirm_unknown: true };\n }\n\n return { kind: \"AlwaysConfirm\" };\n}\n\nfunction getConversationSecurityAnalyzer(conversationSettings: SettingsRecord) {\n switch (conversationSettings.security_analyzer) {\n case \"llm\":\n return { kind: \"LLMSecurityAnalyzer\" };\n case \"pattern\":\n return { kind: \"PatternSecurityAnalyzer\" };\n case \"policy_rail\":\n return { kind: \"PolicyRailSecurityAnalyzer\" };\n default:\n return undefined;\n }\n}\n\nfunction isToolRecord(\n value: unknown,\n): value is { name: string; params?: unknown } {\n return (\n !!value &&\n typeof value === \"object\" &&\n !Array.isArray(value) &&\n typeof (value as { name?: unknown }).name === \"string\"\n );\n}\n\nfunction shouldIncludeTool(name: string, agentSettings: SettingsRecord) {\n if (name === CANVAS_UI_TOOL_NAME) {\n return isAgentServerToolAvailable(name);\n }\n\n if (name === BROWSER_TOOL_SET_NAME) {\n return browserToolsEnabled() && isAgentServerToolAvailable(name);\n }\n\n if (name === TASK_TOOL_SET_NAME) {\n return (\n agentSettings.enable_sub_agents === true &&\n isAgentServerToolAvailable(name)\n );\n }\n\n return true;\n}\n\nfunction getAgentTools(agentSettings: SettingsRecord): AgentToolSpec[] {\n const tools = new Map<string, AgentToolSpec>();\n\n for (const name of DEFAULT_TOOL_NAMES) {\n if (shouldIncludeTool(name, agentSettings)) {\n tools.set(name, { name, params: {} });\n }\n }\n\n for (const name of [BROWSER_TOOL_SET_NAME, TASK_TOOL_SET_NAME]) {\n if (shouldIncludeTool(name, agentSettings)) {\n tools.set(name, { name, params: {} });\n }\n }\n\n const configuredTools = agentSettings.tools;\n if (\n Array.isArray(configuredTools) &&\n configuredTools.every((tool) => isToolRecord(tool))\n ) {\n for (const tool of configuredTools) {\n if (shouldIncludeTool(tool.name, agentSettings)) {\n tools.set(tool.name, {\n name: tool.name,\n params: toRecord(tool.params),\n });\n }\n }\n }\n\n return Array.from(tools.values());\n}\n\nfunction buildInitialMessage(\n query?: string,\n conversationInstructions?: string,\n): InitialMessagePayload | null {\n const parts = [query?.trim(), conversationInstructions?.trim()].filter(\n Boolean,\n );\n if (parts.length === 0) {\n return null;\n }\n\n return {\n role: \"user\",\n content: [{ type: \"text\", text: parts.join(\"\\n\\n\") }],\n run: true,\n };\n}\n\n/**\n * Shape of a bundled skill entry passed to the agent-server SDK via\n * `agent_context.skills`. Mirrors the SDK's `Skill` model fields that\n * the server uses for trigger matching, activation, and system-prompt\n * injection.\n */\ninterface BundledSkill {\n name: string;\n content: string;\n trigger: { type: \"keyword\"; keywords: string[] } | null;\n source: string;\n description: string | null;\n is_agentskills_format: true;\n license?: string;\n compatibility?: string;\n}\n\n/**\n * Convert the bundled `SKILLS_CATALOG` entries into the SDK `Skill` JSON\n * shape so the agent-server can perform trigger matching, skill activation,\n * and system-prompt injection without cloning the extensions repo.\n *\n * The SDK discriminates triggers via `{ type: \"keyword\", keywords: [...] }`.\n * Skills with no triggers get `trigger: null` (always-active / on-demand).\n */\nfunction buildBundledSkills(): BundledSkill[] {\n return SKILLS_CATALOG.map((entry) => {\n const trigger: BundledSkill[\"trigger\"] =\n entry.triggers?.length > 0\n ? { type: \"keyword\", keywords: entry.triggers }\n : null;\n\n // Use the absolute path to the skill's SKILL.md so the Python\n // agent-server can resolve bundled resources (scripts/, references/).\n // Falls back to \"public\" in library builds where the path isn't known.\n const source = __EXTENSIONS_SKILLS_DIR__\n ? `${__EXTENSIONS_SKILLS_DIR__}/${entry.name}/SKILL.md`\n : \"public\";\n\n return {\n name: entry.name,\n content: entry.content,\n trigger,\n source,\n description: entry.description ?? null,\n is_agentskills_format: true as const,\n ...(entry.license ? { license: entry.license } : {}),\n ...(entry.compatibility ? { compatibility: entry.compatibility } : {}),\n };\n });\n}\n\nfunction buildAgentContext(agentSettings: SettingsRecord): SettingsRecord {\n const runtimeServicesSuffix = buildRuntimeServicesSystemSuffix();\n const existingContext = toRecord(agentSettings.agent_context);\n\n // Merge bundled public skills with any skills already present in the\n // agent context (e.g. user-defined skills set via the settings API).\n const existingSkills = Array.isArray(existingContext.skills)\n ? (existingContext.skills as SettingsRecord[])\n : [];\n const mergedSkills = [...existingSkills, ...buildBundledSkills()];\n\n return {\n ...existingContext,\n // Public skills are bundled at build time from the @openhands/extensions\n // npm package and passed directly in agent_context.skills. Setting\n // load_public_skills to false tells the agent-server SDK to skip its own\n // extensions-repo clone — the frontend is the sole source of public\n // skills now.\n //\n // Migration: the former VITE_LOAD_PUBLIC_SKILLS env var was removed\n // because bundled skills have no clone latency. Users who previously set\n // VITE_LOAD_PUBLIC_SKILLS=false to avoid clone delays no longer need it.\n skills: mergedSkills,\n load_public_skills: false,\n load_user_skills: true,\n load_project_skills: true,\n ...(runtimeServicesSuffix\n ? { system_message_suffix: runtimeServicesSuffix }\n : {}),\n };\n}\n\nfunction isAcpAgent(settings: Settings): boolean {\n const agentSettings = toRecord(settings.agent_settings);\n return agentSettings.agent_kind === \"acp\";\n}\n\nfunction getAcpServerTag(settings: Settings): string | undefined {\n const agentSettings = toRecord(settings.agent_settings);\n const value = agentSettings.acp_server;\n return typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction resolveAcpCommand(agentSettings: SettingsRecord): unknown {\n const cmd = agentSettings.acp_command;\n const isEmpty = Array.isArray(cmd) && cmd.length === 0;\n const noCommand = cmd === undefined;\n if (!isEmpty && !noCommand) {\n return cmd;\n }\n\n const serverKey =\n typeof agentSettings.acp_server === \"string\"\n ? agentSettings.acp_server\n : undefined;\n const provider = getAcpProvider(serverKey);\n return provider ? [...provider.default_command] : cmd;\n}\n\nfunction buildConfiguredAcpAgentSettings(\n settings: Settings,\n): AgentSettingsPayload {\n const agentSettings = toRecord(settings.agent_settings);\n const payload: AgentSettingsPayload = {\n agent_kind: \"acp\",\n agent_context: buildAgentContext(agentSettings),\n };\n\n // TODO(#1019): set ``acp_isolate_data_dir: true`` here for a containerized\n // backend so concurrent same-provider conversations don't race on a shared\n // HOME. The SDK supports it (software-agent-sdk#3492), but the released\n // ``@openhands/typescript-client`` (1.24.3) doesn't surface it on\n // ``ACPAgentSettings`` yet, so sending it risks a validation error on older\n // servers. Cloud grouping isolation is separate (agent-canvas#1016).\n\n for (const key of ACP_SETTINGS_KEYS) {\n // ``acp_model`` is resolved separately below so a saved ``null`` still\n // falls back to the provider's default rather than being dropped.\n if (key === \"acp_model\") continue;\n // ``acp_env`` is deprecated — provider creds now route via ``request.secrets``.\n if (key === \"acp_env\") continue;\n const value =\n key === \"acp_command\"\n ? resolveAcpCommand(agentSettings)\n : agentSettings[key];\n if (value !== undefined && value !== null) {\n payload[key] = value;\n }\n }\n\n // ``mcp_config`` is a *shared* field (not in ACP_SETTINGS_KEYS): forward it\n // so the ACP subprocess connects to the configured MCP servers at session\n // creation. Only include it when it actually carries servers — an empty or\n // malformed value is dropped rather than sending ``mcp_config: {}``.\n const mcpConfig = toRecord(agentSettings.mcp_config);\n if (Object.keys(mcpConfig).length > 0 && \"mcpServers\" in mcpConfig) {\n payload.mcp_config = mcpConfig;\n }\n\n // Saved settings may carry ``acp_model: null`` (existing users predating\n // the default-model registry, or saved fields the agent-server stripped).\n // Fall back to the *preferred* default (Vertex-safe for Gemini) so the\n // conversation starts with whatever the Settings → Agent UI shows — without\n // that, the form's displayed default would silently not take effect at\n // runtime until the user re-saved the page.\n const serverKey =\n typeof agentSettings.acp_server === \"string\"\n ? agentSettings.acp_server\n : undefined;\n const effectiveModel = resolveEffectiveAcpModel({\n configured: agentSettings.acp_model as string | null | undefined,\n providerDefault: getAcpPreferredDefaultModel(serverKey),\n });\n if (effectiveModel) {\n payload.acp_model = effectiveModel;\n }\n\n return payload;\n}\n\nfunction buildConfiguredOpenHandsAgentSettings(\n settings: Settings,\n): AgentSettingsPayload {\n const agentSettings = toRecord(settings.agent_settings);\n const llm = toRecord(agentSettings.llm);\n\n llm.model =\n typeof llm.model === \"string\" && llm.model.trim().length > 0\n ? llm.model\n : DEFAULT_SETTINGS.llm_model;\n\n // Stream assistant tokens (parity with ACP agents). The agent-server only\n // emits StreamingDeltaEvents for SDK LLM agents when an LLM has stream=True.\n llm.stream = true;\n\n const apiKey = normalizeSecretString(llm.api_key);\n if (apiKey) {\n llm.api_key = apiKey;\n } else {\n delete llm.api_key;\n }\n\n const baseUrl = normalizeSecretString(llm.base_url);\n if (baseUrl) {\n llm.base_url = baseUrl;\n } else {\n delete llm.base_url;\n }\n\n if (isSubscriptionLlmConfig(llm)) {\n llm.auth_type = LLM_AUTH_TYPE_SUBSCRIPTION;\n llm.subscription_vendor = OPENAI_SUBSCRIPTION_VENDOR;\n delete llm.api_key;\n delete llm.base_url;\n } else {\n delete llm.auth_type;\n delete llm.subscription_vendor;\n }\n\n const mcpConfig = toRecord(agentSettings.mcp_config);\n if (Object.keys(mcpConfig).length === 0 || !(\"mcpServers\" in mcpConfig)) {\n delete agentSettings.mcp_config;\n }\n\n delete agentSettings.acp_server;\n for (const key of ACP_SETTINGS_KEYS) {\n delete agentSettings[key];\n }\n // ``acp_env`` is no longer a forwarded ACP setting (provider creds ride the\n // Secrets panel), but a legacy value may linger on persisted settings —\n // scrub it so it never leaks onto the OpenHands payload.\n delete agentSettings.acp_env;\n\n return {\n ...agentSettings,\n llm,\n agent_context: buildAgentContext(agentSettings),\n tools: getAgentTools(agentSettings),\n };\n}\n\nfunction buildConfiguredAgentSettings(\n settings: Settings,\n): AgentSettingsPayload {\n return isAcpAgent(settings)\n ? buildConfiguredAcpAgentSettings(settings)\n : buildConfiguredOpenHandsAgentSettings(settings);\n}\n\nfunction buildConfiguredConversationSettings(options: {\n settings: Settings;\n query?: string;\n conversationInstructions?: string;\n plugins?: PluginSpec[];\n workingDir?: string;\n}): ConversationSettingsPayload {\n const { settings, query, conversationInstructions, plugins, workingDir } =\n options;\n const conversationSettings = toRecord(settings.conversation_settings);\n const initialMessage = buildInitialMessage(query, conversationInstructions);\n\n CONVERSATION_SETTINGS_METADATA_KEYS.forEach(\n (key) => delete conversationSettings[key],\n );\n\n const payload: ConversationSettingsPayload = {\n ...conversationSettings,\n workspace: {\n kind: \"LocalWorkspace\",\n working_dir: workingDir ?? getAgentServerWorkingDir(),\n },\n ...(initialMessage ? { initial_message: initialMessage } : {}),\n ...(plugins?.length\n ? {\n plugins: plugins.map((plugin) => ({\n source: plugin.source,\n ...(plugin.ref ? { ref: plugin.ref } : {}),\n ...(plugin.repo_path ? { repo_path: plugin.repo_path } : {}),\n })),\n }\n : {}),\n };\n\n return payload;\n}\n\ninterface LookupSecret {\n kind: \"LookupSecret\";\n url: string;\n headers?: Record<string, string>;\n description?: string;\n}\n\ntype StartConversationPayload = Record<string, unknown> & {\n agent_settings: AgentSettingsPayload;\n workspace: LocalWorkspacePayload;\n confirmation_policy: SettingsRecord;\n security_analyzer?: SettingsRecord;\n initial_message?: InitialMessagePayload;\n max_iterations: number;\n stuck_detection: true;\n autotitle: true;\n worktree: boolean;\n secrets_encrypted?: true;\n conversation_id?: string;\n secrets?: Record<string, LookupSecret>;\n tags?: Record<string, string>;\n tool_module_qualnames?: Record<string, string>;\n};\n\nexport interface StartConversationOptions {\n settings: Settings;\n query?: string;\n conversationInstructions?: string;\n plugins?: PluginSpec[];\n conversationId?: string;\n workingDir?: string;\n worktree?: boolean;\n encryptedAgentSettings?: Record<string, SettingsValue>;\n encryptedConversationSettings?: Record<string, SettingsValue>;\n secretsEncrypted?: boolean;\n customSecrets?: Array<{ name: string; description?: string }>;\n}\n\nexport function buildStartConversationRequest(\n options: StartConversationOptions,\n): StartConversationPayload {\n const sourceAgentSettings = options.encryptedAgentSettings\n ? { ...options.settings, agent_settings: options.encryptedAgentSettings }\n : options.settings;\n\n const acpMode = isAcpAgent(sourceAgentSettings);\n const agentSettings = buildConfiguredAgentSettings(sourceAgentSettings);\n const acpServerTag = acpMode\n ? getAcpServerTag(sourceAgentSettings)\n : undefined;\n\n const sourceConversationOptions = options.encryptedConversationSettings\n ? {\n ...options,\n settings: {\n ...options.settings,\n conversation_settings: options.encryptedConversationSettings,\n },\n }\n : options;\n\n const conversationSettings = buildConfiguredConversationSettings(\n sourceConversationOptions,\n );\n\n const payload: StartConversationPayload = {\n agent_settings: agentSettings,\n workspace: conversationSettings.workspace,\n confirmation_policy:\n getConversationConfirmationPolicy(conversationSettings),\n max_iterations:\n typeof conversationSettings.max_iterations === \"number\"\n ? conversationSettings.max_iterations\n : 500,\n stuck_detection: true,\n autotitle: true,\n worktree: options.worktree ?? true,\n };\n\n if (acpServerTag) {\n payload.tags = { [ACP_SERVER_TAG_KEY]: acpServerTag };\n }\n\n // ``secrets_encrypted`` makes the agent-server decrypt request secrets at\n // conversation start. Non-ACP conversations need it for encrypted LLM keys.\n // ACP normally carries provider credentials as LookupSecrets, so avoid\n // forcing a cipher on fresh ACP-only backends. The exception is MCP:\n // encrypted settings round-trip mcp_config.env/headers as Fernet tokens,\n // and ACP forwards that mcp_config directly to the subprocess.\n if (\n options.secretsEncrypted &&\n (!acpMode || hasEncryptedMcpSecrets(agentSettings.mcp_config))\n ) {\n payload.secrets_encrypted = true;\n }\n\n if (options.conversationId) {\n payload.conversation_id = options.conversationId;\n }\n\n const securityAnalyzer =\n getConversationSecurityAnalyzer(conversationSettings);\n if (securityAnalyzer) {\n payload.security_analyzer = securityAnalyzer;\n }\n\n if (conversationSettings.initial_message) {\n payload.initial_message = conversationSettings.initial_message;\n }\n\n if (conversationSettings.plugins) {\n payload.plugins = conversationSettings.plugins;\n }\n\n if (conversationSettings.hook_config) {\n payload.hook_config = conversationSettings.hook_config;\n }\n\n const toolModuleQualnames: Record<string, string> = {};\n const canvasUiAvailable = isAgentServerToolAvailable(CANVAS_UI_TOOL_NAME);\n if (canvasUiAvailable) {\n toolModuleQualnames[CANVAS_UI_TOOL_NAME] = CANVAS_UI_TOOL_MODULE;\n }\n Object.assign(\n toolModuleQualnames,\n (conversationSettings.tool_module_qualnames as\n | Record<string, string>\n | undefined) ?? {},\n );\n if (!canvasUiAvailable) {\n delete toolModuleQualnames[CANVAS_UI_TOOL_NAME];\n }\n if (Object.keys(toolModuleQualnames).length > 0) {\n payload.tool_module_qualnames = toolModuleQualnames;\n }\n\n if (conversationSettings.agent_definitions) {\n payload.agent_definitions = conversationSettings.agent_definitions;\n }\n\n // Every saved secret rides as a LookupSecret the agent-server resolves back\n // from its own store at spawn time — ``request.secrets`` is the sole channel,\n // uniform for ACP and non-ACP (agent-canvas#1039). For ACP the resolution\n // runs off the event loop (software-agent-sdk#3510, >=1.25.0), so the loopback\n // fetch can't deadlock.\n if (options.customSecrets && options.customSecrets.length > 0) {\n const backend = getEffectiveLocalBackend();\n const headers = backend ? buildAuthHeaders(backend) : {};\n\n const secrets: Record<string, LookupSecret> = {};\n for (const secret of options.customSecrets) {\n const lookupSecret: LookupSecret = {\n kind: \"LookupSecret\",\n url: `/api/settings/secrets/${encodeURIComponent(secret.name)}`,\n description: secret.description,\n };\n\n if (Object.keys(headers).length > 0) {\n lookupSecret.headers = headers;\n }\n\n secrets[secret.name] = lookupSecret;\n }\n\n payload.secrets = secrets;\n }\n\n return payload;\n}\n\nexport const SUBSCRIPTION_LOGIN_REQUIRED_ERROR =\n \"Connect your ChatGPT subscription before starting a conversation with this LLM profile.\";\n\n/**\n * Throws if a ChatGPT subscription LLM profile is not connected.\n * Called before conversation creation and LLM profile switch only — not on\n * subsequent message sends or conversation resume. The agent-server must handle\n * mid-conversation token expiry gracefully.\n */\nexport async function assertSubscriptionAuthReady(\n agentSettings: Record<string, unknown>,\n): Promise<void> {\n const llm = toRecord(agentSettings.llm);\n if (!isSubscriptionLlmConfig(llm)) return;\n\n const status = await LLMSubscriptionService.getOpenAIStatus();\n if (!status.connected) {\n throw new Error(SUBSCRIPTION_LOGIN_REQUIRED_ERROR);\n }\n}\n\nexport async function buildStartConversationRequestWithEncryptedSettings(options: {\n settings: Settings;\n query?: string;\n conversationInstructions?: string;\n plugins?: PluginSpec[];\n conversationId?: string;\n workingDir?: string;\n worktree?: boolean;\n}): Promise<Record<string, unknown>> {\n const { SecretsService } = await import(\"./secrets-service\");\n\n const [settingsResult, customSecrets] = await Promise.all([\n SettingsService.getSettingsForConversation(),\n SecretsService.getSecrets(),\n ]);\n\n const { agentSettings, conversationSettings, secretsEncrypted } =\n settingsResult;\n\n await assertSubscriptionAuthReady(agentSettings);\n\n return buildStartConversationRequest({\n ...options,\n encryptedAgentSettings: agentSettings,\n encryptedConversationSettings: conversationSettings,\n secretsEncrypted,\n customSecrets,\n });\n}\n\nexport function emptyHooksResponse(): GetHooksResponse {\n return { hooks: [] };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"agent-server-adapter.cjs","names":[],"sources":["../../src/api/agent-server-adapter.ts"],"sourcesContent":["import { ACP_SETTINGS_KEYS } from \"@openhands/typescript-client\";\nimport { SKILLS_CATALOG } from \"@openhands/extensions/skills\";\nimport { DEFAULT_SETTINGS } from \"#/services/settings\";\nimport { ExecutionStatus } from \"#/types/agent-server/core\";\nimport { Settings, SettingsValue } from \"#/types/settings\";\nimport {\n getAcpPreferredDefaultModel,\n getAcpProvider,\n resolveEffectiveAcpModel,\n} from \"#/constants/acp-providers\";\nimport { getAgentServerClientOptions } from \"./agent-server-client-options\";\nimport { isAgentServerToolAvailable } from \"./agent-server-compatibility\";\nimport { getAgentServerWorkingDir } from \"./agent-server-config\";\nimport { getEffectiveLocalBackend } from \"./backend-registry/active-store\";\nimport { buildAuthHeaders } from \"./backend-registry/auth\";\nimport {\n GetHooksResponse,\n PluginSpec,\n AppConversation,\n AppConversationPage,\n SandboxStatus,\n} from \"./conversation-service/agent-server-conversation-service.types\";\nimport SettingsService from \"./settings-service/settings-service.api\";\nimport { getStoredConversationMetadata } from \"./conversation-metadata-store\";\nimport LLMSubscriptionService from \"./llm-subscription-service\";\nimport {\n LLM_AUTH_TYPE_SUBSCRIPTION,\n OPENAI_SUBSCRIPTION_VENDOR,\n isSubscriptionLlmConfig,\n} from \"#/constants/llm-subscription\";\n\nexport interface DirectConversationInfo {\n id: string;\n title?: string | null;\n created_at: string;\n updated_at: string;\n execution_status?: string | null;\n /** Cloud-only sandbox lifecycle state. Omitted / null for local agent-server conversations. */\n sandbox_status?: string | null;\n metrics?: {\n accumulated_cost?: number | null;\n max_budget_per_task?: number | null;\n accumulated_token_usage?: {\n prompt_tokens?: number;\n completion_tokens?: number;\n cache_read_tokens?: number;\n cache_write_tokens?: number;\n context_window?: number;\n per_turn_token?: number;\n } | null;\n } | null;\n agent?: {\n /**\n * Pydantic discriminator from the SDK union: ``\"ACPAgent\"`` for ACP CLI\n * subprocesses (model lives on the subprocess via ``acp_model``),\n * ``\"Agent\"`` for direct litellm. Read by {@link toAppConversation}.\n */\n kind?: string | null;\n acp_model?: string | null;\n /**\n * ACP CLI identity (``claude-code`` / ``codex`` / ``gemini-cli``) from the\n * SDK's ``ACPAgent.acp_server`` (#3692). Preferred fallback when the\n * ``acpserver`` tag is absent — e.g. a profile launch doesn't stamp the tag\n * client-side and the server may not repopulate it. Read by {@link toAppConversation}.\n */\n acp_server?: string | null;\n llm?: {\n model?: string | null;\n } | null;\n } | null;\n current_model_id?: string | null;\n current_model_name?: string | null;\n workspace?: {\n working_dir?: string | null;\n } | null;\n /**\n * Arbitrary string-keyed conversation tags surfaced by the agent-server\n * (see ``ConversationInfo.tags``). Canvas only consumes one key today —\n * ``ACP_SERVER_TAG_KEY`` (\"acpserver\") — but the field is typed as a\n * generic record so future readers don't need another wire-shape change.\n * Keys are constrained to ``^[a-z0-9]+$`` by the agent-server validator;\n * values are opaque strings.\n */\n tags?: Record<string, string> | null;\n}\n\n// Module qualname for the Canvas-UI tool. The agent-server imports this via\n// tool_module_qualnames; the host directory is exposed via OH_EXTRA_PYTHON_PATH\n// (see scripts/dev-safe.mjs).\nconst CANVAS_UI_TOOL_NAME = \"canvas_ui\";\nconst CANVAS_UI_TOOL_MODULE = \"canvas_ui_tool\";\n\nconst DEFAULT_TOOL_NAMES = [\n \"terminal\",\n \"file_editor\",\n \"task_tracker\",\n CANVAS_UI_TOOL_NAME,\n];\nconst BROWSER_TOOL_SET_NAME = \"browser_tool_set\";\nconst TASK_TOOL_SET_NAME = \"task_tool_set\";\n\nfunction browserToolsEnabled() {\n return import.meta.env.VITE_ENABLE_BROWSER_TOOLS !== \"false\";\n}\n\n/**\n * Shape of the runtime services info (set by the dev launchers in\n * scripts/dev-*.mjs as `VITE_RUNTIME_SERVICES_INFO`, or injected at serve time\n * by `scripts/static-server.mjs` for static builds — see\n * `getRawRuntimeServicesInfo`). All URLs are written from the agent's point of\n * view, not the browser's. The block is rendered into the agent's system prompt\n * via `AgentContext.system_message_suffix` so the agent knows what's\n * reachable from inside its sandbox without having to probe.\n */\ninterface RuntimeServicesInfo {\n mode?: string;\n agent_host_alias?: string;\n services?: {\n agent_server?: { description?: string; url_from_agent?: string };\n ingress?: { description?: string; url_from_agent?: string };\n frontend?: {\n kind?: \"vite\" | \"static\";\n description?: string;\n url_from_agent?: string;\n };\n // `vite` is the legacy key name for the frontend entry, accepted for\n // one release while older dev-stack launchers may still emit it.\n vite?: { description?: string; url_from_agent?: string };\n automation?: {\n description?: string;\n url_from_agent?: string;\n api_prefix?: string;\n docs_url?: string;\n openapi_url?: string;\n auth_env_var?: string;\n };\n };\n}\n\n/**\n * Return the raw runtime-services JSON string, consulting two sources in order\n * (mirrors `getBakedSessionApiKey` in agent-server-config.ts):\n * 1. `VITE_RUNTIME_SERVICES_INFO` — baked into the bundle at build time by\n * the dev launchers (`npm run dev`, dev:static).\n * 2. `window.__AGENT_CANVAS_RUNTIME_SERVICES_INFO__` — injected into\n * index.html at serve time by `scripts/static-server.mjs\n * --runtime-services-info <json>`. This is the path used by static builds\n * (the Docker image and the published binary), where the env var is empty\n * in the prebuilt bundle. Without it the `<RUNTIME_SERVICES>` block is\n * missing and the agent cannot reach the local automation backend.\n */\nfunction getRawRuntimeServicesInfo(): string | null {\n const envRaw = import.meta.env.VITE_RUNTIME_SERVICES_INFO?.trim();\n if (envRaw) return envRaw;\n\n if (typeof window !== \"undefined\") {\n const injected = (window as unknown as Record<string, unknown>)\n .__AGENT_CANVAS_RUNTIME_SERVICES_INFO__;\n if (typeof injected === \"string\") {\n return injected.trim() || null;\n }\n }\n\n return null;\n}\n\nfunction parseRuntimeServicesInfo(): RuntimeServicesInfo | null {\n const raw = getRawRuntimeServicesInfo();\n if (!raw) return null;\n try {\n const parsed = JSON.parse(raw) as RuntimeServicesInfo;\n if (!parsed || typeof parsed !== \"object\") return null;\n return parsed;\n } catch {\n // Malformed JSON: ignore and fall back to no runtime info, rather than\n // tearing down conversation creation over a misconfigured env var or\n // injected value.\n return null;\n }\n}\n\n/**\n * Return the deployment mode from the runtime services info, e.g. \"docker\",\n * \"dev:automation\", etc. Returns `null` when no runtime info is configured.\n */\nexport function getDeploymentMode(): string | null {\n return parseRuntimeServicesInfo()?.mode ?? null;\n}\n\n/**\n * Render the runtime services info into a markdown block suitable for\n * appending to the system prompt via `AgentContext.system_message_suffix`.\n *\n * Returns `undefined` when no runtime info is configured, so callers can\n * safely omit the field on production builds (where the launcher doesn't\n * set `VITE_RUNTIME_SERVICES_INFO`).\n */\nexport function buildRuntimeServicesSystemSuffix(): string | undefined {\n const info = parseRuntimeServicesInfo();\n if (!info?.services) return undefined;\n\n const lines: string[] = [];\n lines.push(\"<RUNTIME_SERVICES>\");\n if (info.mode) {\n lines.push(\n `You are running inside an agent-canvas dev stack started in '${info.mode}' mode.`,\n );\n } else {\n lines.push(\"You are running inside an agent-canvas dev stack.\");\n }\n lines.push(\n \"The following services are reachable from your sandbox. URLs are written\",\n \"from your point of view (i.e., as you should curl/fetch them).\",\n \"\",\n );\n\n const { agent_server, ingress, automation } = info.services;\n const { frontend } = info.services;\n\n if (agent_server?.url_from_agent) {\n lines.push(\n `* Agent Server (you): ${agent_server.url_from_agent}`,\n ` ${agent_server.description ?? \"The agent-server hosting your tool calls.\"}`,\n );\n }\n if (ingress?.url_from_agent) {\n lines.push(\n `* Ingress: ${ingress.url_from_agent}`,\n ` ${ingress.description ?? \"Unified entry point for browser-facing traffic.\"}`,\n );\n }\n if (frontend?.url_from_agent) {\n lines.push(\n `* Frontend: ${frontend.url_from_agent}`,\n ` ${frontend.description ?? \"Frontend dev server.\"}`,\n );\n }\n if (automation?.url_from_agent) {\n lines.push(\n `* Automation backend: ${automation.url_from_agent}`,\n ` ${automation.description ?? \"OpenHands Automations service.\"}`,\n );\n if (automation.docs_url) {\n lines.push(` Docs: ${automation.docs_url}`);\n }\n if (automation.openapi_url) {\n lines.push(` OpenAPI: ${automation.openapi_url}`);\n }\n if (automation.auth_env_var) {\n // X-Session-API-Key is the local convention shared by the agent-server\n // and automation backend (see openhands-automation auth.py).\n lines.push(\n ` Auth: header 'X-Session-API-Key: $${automation.auth_env_var}'`,\n );\n }\n } else {\n lines.push(\n \"* Automation backend: not running in this dev mode (skip /api/automation calls).\",\n );\n }\n\n // Anchor the \"don't guess\" warning to the actual agent-server URL for\n // this stack instead of a hardcoded port. The agent-server listens on\n // different ports across dev modes, and baking the wrong port into the\n // system prompt is exactly the kind of confusion this block is meant to\n // prevent.\n const agentServerUrl = agent_server?.url_from_agent;\n lines.push(\n \"\",\n \"Trust this block over guessing: do not assume any other URLs are running.\",\n );\n if (agentServerUrl) {\n lines.push(\n `In particular, ${agentServerUrl} inside your sandbox is the Agent Server`,\n \"you are running inside of — NOT the automation backend.\",\n );\n }\n lines.push(\"</RUNTIME_SERVICES>\");\n\n return lines.join(\"\\n\");\n}\n\nexport function toConversationUrl(conversationId: string): string {\n // Local-format conversation URL — points at whichever local agent-server\n // is actually serving the conversation (the bundled one when the active\n // selection is cloud).\n const { host } = getAgentServerClientOptions();\n return `${host}/api/conversations/${conversationId}`;\n}\n\n// TODO(i18n): extract \"Conversation\" once we add CONVERSATION$DEFAULT_TITLE\n// with `{{shortId}}` interpolation. Kept as a literal for now to keep the\n// fallback inside this pure adapter rather than fanning out to display sites.\nexport function getDefaultConversationTitle(conversationId: string): string {\n return `Conversation ${conversationId.slice(0, 5)}`;\n}\n\nexport function toAppConversation(\n info: DirectConversationInfo,\n): AppConversation {\n const metadata = getStoredConversationMetadata(info.id);\n // ACPAgent conversations carry a sentinel ``llm`` on older SDKs. Prefer the\n // runtime model fields when available, then the configured ``acp_model`` that\n // Canvas saves for built-in providers. ``agent_kind`` still gates model\n // switching, so surfacing this string is display-only.\n const isAcp = info.agent?.kind === \"ACPAgent\";\n // Only surface ``acp_server`` for ACP conversations even if the wire\n // payload accidentally carries an ``acpserver`` tag on an OpenHands\n // conversation — the chip is identity info for the ACP CLI subprocess,\n // and showing it on a non-ACP conversation would be a lie. Fall back to the\n // agent's own ``acp_server`` (#3692) when the tag is missing — a profile\n // launch doesn't stamp the tag, so tag-only reads would drop the ACP model\n // picker and degrade the chip to a generic \"ACP\" (#1571).\n const acpServer = isAcp\n ? (info.tags?.[ACP_SERVER_TAG_KEY] ?? info.agent?.acp_server ?? null)\n : null;\n return {\n id: info.id,\n created_by_user_id: null,\n selected_repository: metadata?.selected_repository ?? null,\n selected_branch: metadata?.selected_branch ?? null,\n git_provider: metadata?.git_provider ?? null,\n selected_workspace: metadata?.selected_workspace ?? null,\n active_profile: metadata?.active_profile ?? null,\n title: info.title?.trim()\n ? info.title\n : getDefaultConversationTitle(info.id),\n trigger: null,\n pr_number: [],\n agent_kind: isAcp ? \"acp\" : \"openhands\",\n acp_server: acpServer,\n // Chip path: omit ``providerDefault`` so that when no concrete model\n // resolves, the chip falls back to the provider display name in\n // ConversationCardFooter rather than a registry default the session may\n // not actually be running.\n llm_model: isAcp\n ? resolveEffectiveAcpModel({\n runtimeName: info.current_model_name,\n runtimeId: info.current_model_id,\n configured: info.agent?.acp_model,\n sdkLlm: info.agent?.llm?.model,\n })\n : (info.agent?.llm?.model ?? DEFAULT_SETTINGS.llm_model),\n metrics: info.metrics\n ? {\n accumulated_cost: info.metrics.accumulated_cost ?? null,\n max_budget_per_task: info.metrics.max_budget_per_task ?? null,\n accumulated_token_usage: info.metrics.accumulated_token_usage\n ? {\n prompt_tokens:\n info.metrics.accumulated_token_usage.prompt_tokens ?? 0,\n completion_tokens:\n info.metrics.accumulated_token_usage.completion_tokens ?? 0,\n cache_read_tokens:\n info.metrics.accumulated_token_usage.cache_read_tokens ?? 0,\n cache_write_tokens:\n info.metrics.accumulated_token_usage.cache_write_tokens ?? 0,\n context_window:\n info.metrics.accumulated_token_usage.context_window ?? 0,\n per_turn_token:\n info.metrics.accumulated_token_usage.per_turn_token ?? 0,\n }\n : null,\n }\n : null,\n created_at: info.created_at,\n updated_at: info.updated_at,\n execution_status:\n (info.execution_status as AppConversation[\"execution_status\"]) ??\n ExecutionStatus.IDLE,\n sandbox_status: (info.sandbox_status as SandboxStatus | null) ?? null,\n conversation_url: toConversationUrl(info.id),\n session_api_key: getAgentServerClientOptions().apiKey ?? null,\n sandbox_id: null,\n workspace: {\n working_dir: info.workspace?.working_dir ?? getAgentServerWorkingDir(),\n },\n public: false,\n sub_conversation_ids: [],\n };\n}\n\nexport function toConversationPage(data: {\n items: DirectConversationInfo[];\n next_page_id?: string | null;\n}): AppConversationPage {\n return {\n items: data.items.map(toAppConversation),\n next_page_id: data.next_page_id ?? null,\n };\n}\n\ntype SettingsRecord = Record<string, unknown>;\n\ninterface AgentToolSpec {\n name: string;\n params: SettingsRecord;\n}\n\ntype AgentSettingsPayload = SettingsRecord & {\n llm?: SettingsRecord;\n agent_context: SettingsRecord;\n tools?: AgentToolSpec[];\n};\n\ninterface LocalWorkspacePayload {\n kind: \"LocalWorkspace\";\n working_dir: string;\n}\n\ninterface InitialMessagePayload {\n role: \"user\";\n content: Array<{ type: \"text\"; text: string }>;\n run: true;\n}\n\ntype ConversationSettingsPayload = SettingsRecord & {\n workspace: LocalWorkspacePayload;\n initial_message?: InitialMessagePayload;\n};\n\nexport const ACP_SERVER_TAG_KEY = \"acpserver\";\n\nconst FERNET_TOKEN_PREFIX = \"gAAAAA\";\n\nconst CONVERSATION_SETTINGS_METADATA_KEYS = new Set([\n \"schema_version\",\n \"agent_settings\",\n \"workspace\",\n \"conversation_id\",\n \"initial_message\",\n \"plugins\",\n]);\n\nfunction toRecord(value: unknown): SettingsRecord {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n return structuredClone(value as SettingsRecord);\n}\n\nfunction normalizeSecretString(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction hasEncryptedString(value: unknown): boolean {\n if (typeof value === \"string\") {\n return value.startsWith(FERNET_TOKEN_PREFIX);\n }\n if (Array.isArray(value)) {\n return value.some(hasEncryptedString);\n }\n if (isPlainRecord(value)) {\n return Object.values(value).some(hasEncryptedString);\n }\n return false;\n}\n\nfunction hasEncryptedMcpSecrets(mcpConfig: unknown): boolean {\n if (!isPlainRecord(mcpConfig)) {\n return false;\n }\n\n return Object.values(mcpConfig).some(hasEncryptedString);\n}\n\nfunction getConversationConfirmationPolicy(\n conversationSettings: SettingsRecord,\n) {\n if (conversationSettings.confirmation_mode !== true) {\n return { kind: \"NeverConfirm\" };\n }\n\n if (conversationSettings.security_analyzer === \"llm\") {\n return { kind: \"ConfirmRisky\", threshold: \"HIGH\", confirm_unknown: true };\n }\n\n return { kind: \"AlwaysConfirm\" };\n}\n\nfunction getConversationSecurityAnalyzer(conversationSettings: SettingsRecord) {\n switch (conversationSettings.security_analyzer) {\n case \"llm\":\n return { kind: \"LLMSecurityAnalyzer\" };\n case \"pattern\":\n return { kind: \"PatternSecurityAnalyzer\" };\n case \"policy_rail\":\n return { kind: \"PolicyRailSecurityAnalyzer\" };\n default:\n return undefined;\n }\n}\n\nfunction isToolRecord(\n value: unknown,\n): value is { name: string; params?: unknown } {\n return (\n !!value &&\n typeof value === \"object\" &&\n !Array.isArray(value) &&\n typeof (value as { name?: unknown }).name === \"string\"\n );\n}\n\nfunction shouldIncludeTool(name: string, agentSettings: SettingsRecord) {\n if (name === CANVAS_UI_TOOL_NAME) {\n return isAgentServerToolAvailable(name);\n }\n\n if (name === BROWSER_TOOL_SET_NAME) {\n return browserToolsEnabled() && isAgentServerToolAvailable(name);\n }\n\n if (name === TASK_TOOL_SET_NAME) {\n return (\n agentSettings.enable_sub_agents === true &&\n isAgentServerToolAvailable(name)\n );\n }\n\n return true;\n}\n\nfunction getAgentTools(agentSettings: SettingsRecord): AgentToolSpec[] {\n const tools = new Map<string, AgentToolSpec>();\n\n for (const name of DEFAULT_TOOL_NAMES) {\n if (shouldIncludeTool(name, agentSettings)) {\n tools.set(name, { name, params: {} });\n }\n }\n\n for (const name of [BROWSER_TOOL_SET_NAME, TASK_TOOL_SET_NAME]) {\n if (shouldIncludeTool(name, agentSettings)) {\n tools.set(name, { name, params: {} });\n }\n }\n\n const configuredTools = agentSettings.tools;\n if (\n Array.isArray(configuredTools) &&\n configuredTools.every((tool) => isToolRecord(tool))\n ) {\n for (const tool of configuredTools) {\n if (shouldIncludeTool(tool.name, agentSettings)) {\n tools.set(tool.name, {\n name: tool.name,\n params: toRecord(tool.params),\n });\n }\n }\n }\n\n return Array.from(tools.values());\n}\n\nfunction buildInitialMessage(\n query?: string,\n conversationInstructions?: string,\n): InitialMessagePayload | null {\n const parts = [query?.trim(), conversationInstructions?.trim()].filter(\n Boolean,\n );\n if (parts.length === 0) {\n return null;\n }\n\n return {\n role: \"user\",\n content: [{ type: \"text\", text: parts.join(\"\\n\\n\") }],\n run: true,\n };\n}\n\n/**\n * Shape of a bundled skill entry passed to the agent-server SDK via\n * `agent_context.skills`. Mirrors the SDK's `Skill` model fields that\n * the server uses for trigger matching, activation, and system-prompt\n * injection.\n */\ninterface BundledSkill {\n name: string;\n content: string;\n trigger: { type: \"keyword\"; keywords: string[] } | null;\n source: string;\n description: string | null;\n is_agentskills_format: true;\n license?: string;\n compatibility?: string;\n}\n\n/**\n * Convert the bundled `SKILLS_CATALOG` entries into the SDK `Skill` JSON\n * shape so the agent-server can perform trigger matching, skill activation,\n * and system-prompt injection without cloning the extensions repo.\n *\n * The SDK discriminates triggers via `{ type: \"keyword\", keywords: [...] }`.\n * Skills with no triggers get `trigger: null` (always-active / on-demand).\n */\nfunction buildBundledSkills(): BundledSkill[] {\n return SKILLS_CATALOG.map((entry) => {\n const trigger: BundledSkill[\"trigger\"] =\n entry.triggers?.length > 0\n ? { type: \"keyword\", keywords: entry.triggers }\n : null;\n\n // Use the absolute path to the skill's SKILL.md so the Python\n // agent-server can resolve bundled resources (scripts/, references/).\n // Falls back to \"public\" in library builds where the path isn't known.\n const source = __EXTENSIONS_SKILLS_DIR__\n ? `${__EXTENSIONS_SKILLS_DIR__}/${entry.name}/SKILL.md`\n : \"public\";\n\n return {\n name: entry.name,\n content: entry.content,\n trigger,\n source,\n description: entry.description ?? null,\n is_agentskills_format: true as const,\n ...(entry.license ? { license: entry.license } : {}),\n ...(entry.compatibility ? { compatibility: entry.compatibility } : {}),\n };\n });\n}\n\nfunction buildAgentContext(agentSettings: SettingsRecord): SettingsRecord {\n const runtimeServicesSuffix = buildRuntimeServicesSystemSuffix();\n const existingContext = toRecord(agentSettings.agent_context);\n\n // Merge bundled public skills with any skills already present in the\n // agent context (e.g. user-defined skills set via the settings API).\n const existingSkills = Array.isArray(existingContext.skills)\n ? (existingContext.skills as SettingsRecord[])\n : [];\n const mergedSkills = [...existingSkills, ...buildBundledSkills()];\n\n return {\n ...existingContext,\n // Public skills are bundled at build time from the @openhands/extensions\n // npm package and passed directly in agent_context.skills. Setting\n // load_public_skills to false tells the agent-server SDK to skip its own\n // extensions-repo clone — the frontend is the sole source of public\n // skills now.\n //\n // Migration: the former VITE_LOAD_PUBLIC_SKILLS env var was removed\n // because bundled skills have no clone latency. Users who previously set\n // VITE_LOAD_PUBLIC_SKILLS=false to avoid clone delays no longer need it.\n skills: mergedSkills,\n load_public_skills: false,\n load_user_skills: true,\n load_project_skills: true,\n ...(runtimeServicesSuffix\n ? { system_message_suffix: runtimeServicesSuffix }\n : {}),\n };\n}\n\nfunction isAcpAgent(settings: Settings): boolean {\n const agentSettings = toRecord(settings.agent_settings);\n return agentSettings.agent_kind === \"acp\";\n}\n\nfunction getAcpServerTag(settings: Settings): string | undefined {\n const agentSettings = toRecord(settings.agent_settings);\n const value = agentSettings.acp_server;\n return typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction resolveAcpCommand(agentSettings: SettingsRecord): unknown {\n const cmd = agentSettings.acp_command;\n const isEmpty = Array.isArray(cmd) && cmd.length === 0;\n const noCommand = cmd === undefined;\n if (!isEmpty && !noCommand) {\n return cmd;\n }\n\n const serverKey =\n typeof agentSettings.acp_server === \"string\"\n ? agentSettings.acp_server\n : undefined;\n const provider = getAcpProvider(serverKey);\n return provider ? [...provider.default_command] : cmd;\n}\n\nfunction buildConfiguredAcpAgentSettings(\n settings: Settings,\n): AgentSettingsPayload {\n const agentSettings = toRecord(settings.agent_settings);\n const payload: AgentSettingsPayload = {\n agent_kind: \"acp\",\n agent_context: buildAgentContext(agentSettings),\n };\n\n // TODO(#1019): set ``acp_isolate_data_dir: true`` here for a containerized\n // backend so concurrent same-provider conversations don't race on a shared\n // HOME. The SDK supports it (software-agent-sdk#3492), but the released\n // ``@openhands/typescript-client`` (1.24.3) doesn't surface it on\n // ``ACPAgentSettings`` yet, so sending it risks a validation error on older\n // servers. Cloud grouping isolation is separate (agent-canvas#1016).\n\n for (const key of ACP_SETTINGS_KEYS) {\n // ``acp_model`` is resolved separately below so a saved ``null`` still\n // falls back to the provider's default rather than being dropped.\n if (key === \"acp_model\") continue;\n // ``acp_env`` is deprecated — provider creds now route via ``request.secrets``.\n if (key === \"acp_env\") continue;\n const value =\n key === \"acp_command\"\n ? resolveAcpCommand(agentSettings)\n : agentSettings[key];\n if (value !== undefined && value !== null) {\n payload[key] = value;\n }\n }\n\n // ``mcp_config`` is a shared field (not in ACP_SETTINGS_KEYS): forward it\n // so the ACP subprocess connects to the configured MCP servers at session\n // creation. Only include it when it actually carries servers — an empty or\n // malformed value is dropped rather than sending ``mcp_config: {}``.\n const mcpConfig = toRecord(agentSettings.mcp_config);\n if (Object.keys(mcpConfig).length > 0) {\n payload.mcp_config = mcpConfig;\n }\n\n // Saved settings may carry ``acp_model: null`` (existing users predating\n // the default-model registry, or saved fields the agent-server stripped).\n // Fall back to the *preferred* default (Vertex-safe for Gemini) so the\n // conversation starts with whatever the Settings → Agent UI shows — without\n // that, the form's displayed default would silently not take effect at\n // runtime until the user re-saved the page.\n const serverKey =\n typeof agentSettings.acp_server === \"string\"\n ? agentSettings.acp_server\n : undefined;\n const effectiveModel = resolveEffectiveAcpModel({\n configured: agentSettings.acp_model as string | null | undefined,\n providerDefault: getAcpPreferredDefaultModel(serverKey),\n });\n if (effectiveModel) {\n payload.acp_model = effectiveModel;\n }\n\n return payload;\n}\n\nfunction buildConfiguredOpenHandsAgentSettings(\n settings: Settings,\n): AgentSettingsPayload {\n const agentSettings = toRecord(settings.agent_settings);\n const llm = toRecord(agentSettings.llm);\n\n llm.model =\n typeof llm.model === \"string\" && llm.model.trim().length > 0\n ? llm.model\n : DEFAULT_SETTINGS.llm_model;\n\n // Stream assistant tokens (parity with ACP agents). The agent-server only\n // emits StreamingDeltaEvents for SDK LLM agents when an LLM has stream=True.\n llm.stream = true;\n\n const apiKey = normalizeSecretString(llm.api_key);\n if (apiKey) {\n llm.api_key = apiKey;\n } else {\n delete llm.api_key;\n }\n\n const baseUrl = normalizeSecretString(llm.base_url);\n if (baseUrl) {\n llm.base_url = baseUrl;\n } else {\n delete llm.base_url;\n }\n\n if (isSubscriptionLlmConfig(llm)) {\n llm.auth_type = LLM_AUTH_TYPE_SUBSCRIPTION;\n llm.subscription_vendor = OPENAI_SUBSCRIPTION_VENDOR;\n delete llm.api_key;\n delete llm.base_url;\n } else {\n delete llm.auth_type;\n delete llm.subscription_vendor;\n }\n\n const mcpConfig = toRecord(agentSettings.mcp_config);\n if (Object.keys(mcpConfig).length === 0) {\n delete agentSettings.mcp_config;\n }\n\n delete agentSettings.acp_server;\n for (const key of ACP_SETTINGS_KEYS) {\n delete agentSettings[key];\n }\n // ``acp_env`` is no longer a forwarded ACP setting (provider creds ride the\n // Secrets panel), but a legacy value may linger on persisted settings —\n // scrub it so it never leaks onto the OpenHands payload.\n delete agentSettings.acp_env;\n\n return {\n ...agentSettings,\n llm,\n agent_context: buildAgentContext(agentSettings),\n tools: getAgentTools(agentSettings),\n };\n}\n\nfunction buildConfiguredAgentSettings(\n settings: Settings,\n): AgentSettingsPayload {\n return isAcpAgent(settings)\n ? buildConfiguredAcpAgentSettings(settings)\n : buildConfiguredOpenHandsAgentSettings(settings);\n}\n\nfunction buildConfiguredConversationSettings(options: {\n settings: Settings;\n query?: string;\n conversationInstructions?: string;\n plugins?: PluginSpec[];\n workingDir?: string;\n}): ConversationSettingsPayload {\n const { settings, query, conversationInstructions, plugins, workingDir } =\n options;\n const conversationSettings = toRecord(settings.conversation_settings);\n const initialMessage = buildInitialMessage(query, conversationInstructions);\n\n CONVERSATION_SETTINGS_METADATA_KEYS.forEach(\n (key) => delete conversationSettings[key],\n );\n\n const payload: ConversationSettingsPayload = {\n ...conversationSettings,\n workspace: {\n kind: \"LocalWorkspace\",\n working_dir: workingDir ?? getAgentServerWorkingDir(),\n },\n ...(initialMessage ? { initial_message: initialMessage } : {}),\n ...(plugins?.length\n ? {\n plugins: plugins.map((plugin) => ({\n source: plugin.source,\n ...(plugin.ref ? { ref: plugin.ref } : {}),\n ...(plugin.repo_path ? { repo_path: plugin.repo_path } : {}),\n })),\n }\n : {}),\n };\n\n return payload;\n}\n\ninterface LookupSecret {\n kind: \"LookupSecret\";\n url: string;\n headers?: Record<string, string>;\n description?: string;\n}\n\ntype StartConversationPayload = Record<string, unknown> & {\n // Omitted when launching via ``agent_profile_id`` — the two are mutually\n // exclusive agent sources; the server resolves the profile server-side.\n agent_settings?: AgentSettingsPayload;\n agent_profile_id?: string;\n workspace: LocalWorkspacePayload;\n confirmation_policy: SettingsRecord;\n security_analyzer?: SettingsRecord;\n initial_message?: InitialMessagePayload;\n max_iterations: number;\n stuck_detection: true;\n autotitle: true;\n worktree: boolean;\n secrets_encrypted?: true;\n conversation_id?: string;\n secrets?: Record<string, LookupSecret>;\n tags?: Record<string, string>;\n tool_module_qualnames?: Record<string, string>;\n};\n\nexport interface StartConversationOptions {\n settings: Settings;\n query?: string;\n conversationInstructions?: string;\n plugins?: PluginSpec[];\n conversationId?: string;\n workingDir?: string;\n worktree?: boolean;\n encryptedAgentSettings?: Record<string, SettingsValue>;\n encryptedConversationSettings?: Record<string, SettingsValue>;\n secretsEncrypted?: boolean;\n customSecrets?: Array<{ name: string; description?: string }>;\n // When set, the conversation launches from this AgentProfile (resolved\n // server-side) instead of an inline ``agent_settings`` dump (#3727).\n agentProfileId?: string;\n}\n\nexport function buildStartConversationRequest(\n options: StartConversationOptions,\n): StartConversationPayload {\n const sourceAgentSettings = options.encryptedAgentSettings\n ? { ...options.settings, agent_settings: options.encryptedAgentSettings }\n : options.settings;\n\n const acpMode = isAcpAgent(sourceAgentSettings);\n const agentSettings = buildConfiguredAgentSettings(sourceAgentSettings);\n const acpServerTag = acpMode\n ? getAcpServerTag(sourceAgentSettings)\n : undefined;\n\n const sourceConversationOptions = options.encryptedConversationSettings\n ? {\n ...options,\n settings: {\n ...options.settings,\n conversation_settings: options.encryptedConversationSettings,\n },\n }\n : options;\n\n const conversationSettings = buildConfiguredConversationSettings(\n sourceConversationOptions,\n );\n\n const payload: StartConversationPayload = {\n // ``agent_profile_id`` and ``agent_settings`` are mutually exclusive agent\n // sources; the profile path lets the server resolve the profile (#3727).\n //\n // Enrichment boundary: on the profile path the server rebuilds the agent\n // purely from the stored profile fields, so the client-owned enrichments\n // this adapter folds into ``agent_settings`` do NOT apply. The exec toolset\n // (terminal/file_editor/task_tracker) and public-skill loading are the\n // server/SDK's responsibility to restore on the profile path — tracked in\n // software-agent-sdk#3967 (profile resolution must attach the default\n // toolset + public skills, else a profile-launched OpenHands agent has only\n // Finish/Think). The two genuinely canvas-only enrichments — the\n // ``canvas_ui`` tool and the dev ``RUNTIME_SERVICES`` system-message-suffix\n // (``buildAgentContext``) — have no server-side representation and are\n // intentionally not carried on the profile path.\n ...(options.agentProfileId\n ? { agent_profile_id: options.agentProfileId }\n : { agent_settings: agentSettings }),\n workspace: conversationSettings.workspace,\n confirmation_policy:\n getConversationConfirmationPolicy(conversationSettings),\n max_iterations:\n typeof conversationSettings.max_iterations === \"number\"\n ? conversationSettings.max_iterations\n : 500,\n stuck_detection: true,\n autotitle: true,\n worktree: options.worktree ?? true,\n };\n\n // A profile launch resolves the ACP server server-side, so don't stamp the\n // tag from current settings (it may not match the launched profile).\n if (!options.agentProfileId && acpServerTag) {\n payload.tags = { [ACP_SERVER_TAG_KEY]: acpServerTag };\n }\n\n // ``secrets_encrypted`` makes the agent-server decrypt request secrets at\n // conversation start. Non-ACP conversations need it for encrypted LLM keys.\n // ACP normally carries provider credentials as LookupSecrets, so avoid\n // forcing a cipher on fresh ACP-only backends. The exception is MCP:\n // encrypted settings round-trip mcp_config secrets as Fernet tokens,\n // and ACP forwards mcp_config directly to the subprocess.\n if (\n !options.agentProfileId &&\n options.secretsEncrypted &&\n (!acpMode || hasEncryptedMcpSecrets(agentSettings.mcp_config))\n ) {\n payload.secrets_encrypted = true;\n }\n\n if (options.conversationId) {\n payload.conversation_id = options.conversationId;\n }\n\n const securityAnalyzer =\n getConversationSecurityAnalyzer(conversationSettings);\n if (securityAnalyzer) {\n payload.security_analyzer = securityAnalyzer;\n }\n\n if (conversationSettings.initial_message) {\n payload.initial_message = conversationSettings.initial_message;\n }\n\n if (conversationSettings.plugins) {\n payload.plugins = conversationSettings.plugins;\n }\n\n if (conversationSettings.hook_config) {\n payload.hook_config = conversationSettings.hook_config;\n }\n\n const toolModuleQualnames: Record<string, string> = {};\n const canvasUiAvailable = isAgentServerToolAvailable(CANVAS_UI_TOOL_NAME);\n if (canvasUiAvailable) {\n toolModuleQualnames[CANVAS_UI_TOOL_NAME] = CANVAS_UI_TOOL_MODULE;\n }\n Object.assign(\n toolModuleQualnames,\n (conversationSettings.tool_module_qualnames as\n | Record<string, string>\n | undefined) ?? {},\n );\n if (!canvasUiAvailable) {\n delete toolModuleQualnames[CANVAS_UI_TOOL_NAME];\n }\n if (Object.keys(toolModuleQualnames).length > 0) {\n payload.tool_module_qualnames = toolModuleQualnames;\n }\n\n if (conversationSettings.agent_definitions) {\n payload.agent_definitions = conversationSettings.agent_definitions;\n }\n\n // Every saved secret rides as a LookupSecret the agent-server resolves back\n // from its own store at spawn time — ``request.secrets`` is the sole channel,\n // uniform for ACP and non-ACP (agent-canvas#1039). For ACP the resolution\n // runs off the event loop (software-agent-sdk#3510, >=1.25.0), so the loopback\n // fetch can't deadlock.\n if (options.customSecrets && options.customSecrets.length > 0) {\n const backend = getEffectiveLocalBackend();\n const headers = backend ? buildAuthHeaders(backend) : {};\n\n const secrets: Record<string, LookupSecret> = {};\n for (const secret of options.customSecrets) {\n const lookupSecret: LookupSecret = {\n kind: \"LookupSecret\",\n url: `/api/settings/secrets/${encodeURIComponent(secret.name)}`,\n description: secret.description,\n };\n\n if (Object.keys(headers).length > 0) {\n lookupSecret.headers = headers;\n }\n\n secrets[secret.name] = lookupSecret;\n }\n\n payload.secrets = secrets;\n }\n\n return payload;\n}\n\nexport const SUBSCRIPTION_LOGIN_REQUIRED_ERROR =\n \"Connect your ChatGPT subscription before starting a conversation with this LLM profile.\";\n\n/**\n * Throws if a ChatGPT subscription LLM profile is not connected.\n * Called before conversation creation and LLM profile switch only — not on\n * subsequent message sends or conversation resume. The agent-server must handle\n * mid-conversation token expiry gracefully.\n */\nexport async function assertSubscriptionAuthReady(\n agentSettings: Record<string, unknown>,\n): Promise<void> {\n const llm = toRecord(agentSettings.llm);\n if (!isSubscriptionLlmConfig(llm)) return;\n\n const status = await LLMSubscriptionService.getOpenAIStatus();\n if (!status.connected) {\n throw new Error(SUBSCRIPTION_LOGIN_REQUIRED_ERROR);\n }\n}\n\nexport async function buildStartConversationRequestWithEncryptedSettings(options: {\n settings: Settings;\n query?: string;\n conversationInstructions?: string;\n plugins?: PluginSpec[];\n conversationId?: string;\n workingDir?: string;\n worktree?: boolean;\n agentProfileId?: string;\n}): Promise<Record<string, unknown>> {\n const { SecretsService } = await import(\"./secrets-service\");\n\n const [settingsResult, customSecrets] = await Promise.all([\n SettingsService.getSettingsForConversation(),\n SecretsService.getSecrets(),\n ]);\n\n const { agentSettings, conversationSettings, secretsEncrypted } =\n settingsResult;\n\n // A profile launch resolves the LLM server-side, so the current-settings\n // subscription check doesn't apply (and can't see the profile's LLM).\n if (!options.agentProfileId) {\n await assertSubscriptionAuthReady(agentSettings);\n }\n\n return buildStartConversationRequest({\n ...options,\n encryptedAgentSettings: agentSettings,\n encryptedConversationSettings: conversationSettings,\n secretsEncrypted,\n customSecrets,\n });\n}\n\nexport function emptyHooksResponse(): GetHooksResponse {\n return { hooks: [] };\n}\n"],"mappings":"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"}
@@ -28,6 +28,13 @@ export interface DirectConversationInfo {
28
28
  */
29
29
  kind?: string | null;
30
30
  acp_model?: string | null;
31
+ /**
32
+ * ACP CLI identity (``claude-code`` / ``codex`` / ``gemini-cli``) from the
33
+ * SDK's ``ACPAgent.acp_server`` (#3692). Preferred fallback when the
34
+ * ``acpserver`` tag is absent — e.g. a profile launch doesn't stamp the tag
35
+ * client-side and the server may not repopulate it. Read by {@link toAppConversation}.
36
+ */
37
+ acp_server?: string | null;
31
38
  llm?: {
32
39
  model?: string | null;
33
40
  } | null;
@@ -98,7 +105,8 @@ interface LookupSecret {
98
105
  description?: string;
99
106
  }
100
107
  type StartConversationPayload = Record<string, unknown> & {
101
- agent_settings: AgentSettingsPayload;
108
+ agent_settings?: AgentSettingsPayload;
109
+ agent_profile_id?: string;
102
110
  workspace: LocalWorkspacePayload;
103
111
  confirmation_policy: SettingsRecord;
104
112
  security_analyzer?: SettingsRecord;
@@ -128,6 +136,7 @@ export interface StartConversationOptions {
128
136
  name: string;
129
137
  description?: string;
130
138
  }>;
139
+ agentProfileId?: string;
131
140
  }
132
141
  export declare function buildStartConversationRequest(options: StartConversationOptions): StartConversationPayload;
133
142
  export declare const SUBSCRIPTION_LOGIN_REQUIRED_ERROR = "Connect your ChatGPT subscription before starting a conversation with this LLM profile.";
@@ -146,6 +155,7 @@ export declare function buildStartConversationRequestWithEncryptedSettings(optio
146
155
  conversationId?: string;
147
156
  workingDir?: string;
148
157
  worktree?: boolean;
158
+ agentProfileId?: string;
149
159
  }): Promise<Record<string, unknown>>;
150
160
  export declare function emptyHooksResponse(): GetHooksResponse;
151
161
  export {};
@@ -11,19 +11,19 @@ import c from "../node_modules/@openhands/extensions/skills/index.js";
11
11
  import { DEFAULT_SETTINGS as l } from "../services/settings.js";
12
12
  import { getAcpPreferredDefaultModel as u, getAcpProvider as d, resolveEffectiveAcpModel as f } from "../constants/acp-providers.js";
13
13
  import p from "./settings-service/settings-service.api.js";
14
- import { LLM_AUTH_TYPE_SUBSCRIPTION as m, OPENAI_SUBSCRIPTION_VENDOR as h, isSubscriptionLlmConfig as g } from "../constants/llm-subscription.js";
15
- import _ from "./llm-subscription-service.js";
14
+ import { LLM_AUTH_TYPE_SUBSCRIPTION as ee, OPENAI_SUBSCRIPTION_VENDOR as m, isSubscriptionLlmConfig as h } from "../constants/llm-subscription.js";
15
+ import g from "./llm-subscription-service.js";
16
16
  //#region src/api/agent-server-adapter.ts
17
- var v = "canvas_ui", y = "canvas_ui_tool", b = [
17
+ var _ = "canvas_ui", v = "canvas_ui_tool", y = [
18
18
  "terminal",
19
19
  "file_editor",
20
20
  "task_tracker",
21
- v
22
- ], x = "browser_tool_set", S = "task_tool_set";
23
- function C() {
21
+ _
22
+ ], b = "browser_tool_set", x = "task_tool_set";
23
+ function S() {
24
24
  return !0;
25
25
  }
26
- function w() {
26
+ function C() {
27
27
  let e = (void 0)?.trim();
28
28
  if (e) return e;
29
29
  if (typeof window < "u") {
@@ -32,8 +32,8 @@ function w() {
32
32
  }
33
33
  return null;
34
34
  }
35
- function T() {
36
- let e = w();
35
+ function w() {
36
+ let e = C();
37
37
  if (!e) return null;
38
38
  try {
39
39
  let t = JSON.parse(e);
@@ -42,8 +42,8 @@ function T() {
42
42
  return null;
43
43
  }
44
44
  }
45
- function E() {
46
- let e = T();
45
+ function T() {
46
+ let e = w();
47
47
  if (!e?.services) return;
48
48
  let t = [];
49
49
  t.push("<RUNTIME_SERVICES>"), e.mode ? t.push(`You are running inside an agent-canvas dev stack started in '${e.mode}' mode.`) : t.push("You are running inside an agent-canvas dev stack."), t.push("The following services are reachable from your sandbox. URLs are written", "from your point of view (i.e., as you should curl/fetch them).", "");
@@ -52,7 +52,7 @@ function E() {
52
52
  let o = n?.url_from_agent;
53
53
  return t.push("", "Trust this block over guessing: do not assume any other URLs are running."), o && t.push(`In particular, ${o} inside your sandbox is the Agent Server`, "you are running inside of — NOT the automation backend."), t.push("</RUNTIME_SERVICES>"), t.join("\n");
54
54
  }
55
- function ee(e) {
55
+ function E(e) {
56
56
  let { host: t } = r();
57
57
  return `${t}/api/conversations/${e}`;
58
58
  }
@@ -60,7 +60,7 @@ function D(e) {
60
60
  return `Conversation ${e.slice(0, 5)}`;
61
61
  }
62
62
  function O(n) {
63
- let i = s(n.id), a = n.agent?.kind === "ACPAgent", o = a ? n.tags?.acpserver ?? null : null;
63
+ let i = s(n.id), a = n.agent?.kind === "ACPAgent", o = a ? n.tags?.acpserver ?? n.agent?.acp_server ?? null : null;
64
64
  return {
65
65
  id: n.id,
66
66
  created_by_user_id: null,
@@ -96,7 +96,7 @@ function O(n) {
96
96
  updated_at: n.updated_at,
97
97
  execution_status: n.execution_status ?? e.IDLE,
98
98
  sandbox_status: n.sandbox_status ?? null,
99
- conversation_url: ee(n.id),
99
+ conversation_url: E(n.id),
100
100
  session_api_key: r().apiKey ?? null,
101
101
  sandbox_id: null,
102
102
  workspace: { working_dir: n.workspace?.working_dir ?? t() },
@@ -130,19 +130,19 @@ function F(e) {
130
130
  return !!e && typeof e == "object" && !Array.isArray(e);
131
131
  }
132
132
  function I(e) {
133
- return !F(e) || !F(e.mcpServers) ? !1 : Object.values(e.mcpServers).some((e) => F(e) ? ["env", "headers"].some((t) => {
134
- let n = e[t];
135
- return F(n) ? Object.values(n).some((e) => typeof e == "string" && e.startsWith(j)) : !1;
136
- }) : !1);
133
+ return typeof e == "string" ? e.startsWith(j) : Array.isArray(e) ? e.some(I) : F(e) ? Object.values(e).some(I) : !1;
137
134
  }
138
135
  function L(e) {
136
+ return F(e) ? Object.values(e).some(I) : !1;
137
+ }
138
+ function R(e) {
139
139
  return e.confirmation_mode === !0 ? e.security_analyzer === "llm" ? {
140
140
  kind: "ConfirmRisky",
141
141
  threshold: "HIGH",
142
142
  confirm_unknown: !0
143
143
  } : { kind: "AlwaysConfirm" } : { kind: "NeverConfirm" };
144
144
  }
145
- function R(e) {
145
+ function z(e) {
146
146
  switch (e.security_analyzer) {
147
147
  case "llm": return { kind: "LLMSecurityAnalyzer" };
148
148
  case "pattern": return { kind: "PatternSecurityAnalyzer" };
@@ -150,30 +150,30 @@ function R(e) {
150
150
  default: return;
151
151
  }
152
152
  }
153
- function z(e) {
153
+ function B(e) {
154
154
  return !!e && typeof e == "object" && !Array.isArray(e) && typeof e.name == "string";
155
155
  }
156
- function B(e, t) {
157
- return e === v ? i(e) : e === x ? C() && i(e) : e === S ? t.enable_sub_agents === !0 && i(e) : !0;
156
+ function V(e, t) {
157
+ return e === _ ? i(e) : e === b ? S() && i(e) : e === x ? t.enable_sub_agents === !0 && i(e) : !0;
158
158
  }
159
- function V(e) {
159
+ function H(e) {
160
160
  let t = /* @__PURE__ */ new Map();
161
- for (let n of b) B(n, e) && t.set(n, {
161
+ for (let n of y) V(n, e) && t.set(n, {
162
162
  name: n,
163
163
  params: {}
164
164
  });
165
- for (let n of [x, S]) B(n, e) && t.set(n, {
165
+ for (let n of [b, x]) V(n, e) && t.set(n, {
166
166
  name: n,
167
167
  params: {}
168
168
  });
169
169
  let n = e.tools;
170
- if (Array.isArray(n) && n.every((e) => z(e))) for (let r of n) B(r.name, e) && t.set(r.name, {
170
+ if (Array.isArray(n) && n.every((e) => B(e))) for (let r of n) V(r.name, e) && t.set(r.name, {
171
171
  name: r.name,
172
172
  params: N(r.params)
173
173
  });
174
174
  return Array.from(t.values());
175
175
  }
176
- function H(e, t) {
176
+ function U(e, t) {
177
177
  let n = [e?.trim(), t?.trim()].filter(Boolean);
178
178
  return n.length === 0 ? null : {
179
179
  role: "user",
@@ -184,7 +184,7 @@ function H(e, t) {
184
184
  run: !0
185
185
  };
186
186
  }
187
- function U() {
187
+ function W() {
188
188
  return c.map((e) => {
189
189
  let t = e.triggers?.length > 0 ? {
190
190
  type: "keyword",
@@ -202,8 +202,8 @@ function U() {
202
202
  };
203
203
  });
204
204
  }
205
- function W(e) {
206
- let t = E(), n = N(e.agent_context), r = [...Array.isArray(n.skills) ? n.skills : [], ...U()];
205
+ function G(e) {
206
+ let t = T(), n = N(e.agent_context), r = [...Array.isArray(n.skills) ? n.skills : [], ...W()];
207
207
  return {
208
208
  ...n,
209
209
  skills: r,
@@ -213,59 +213,59 @@ function W(e) {
213
213
  ...t ? { system_message_suffix: t } : {}
214
214
  };
215
215
  }
216
- function G(e) {
216
+ function K(e) {
217
217
  return N(e.agent_settings).agent_kind === "acp";
218
218
  }
219
- function K(e) {
219
+ function q(e) {
220
220
  let t = N(e.agent_settings).acp_server;
221
221
  return typeof t == "string" && t.length > 0 ? t : void 0;
222
222
  }
223
- function q(e) {
223
+ function J(e) {
224
224
  let t = e.acp_command;
225
225
  if (!(Array.isArray(t) && t.length === 0) && t !== void 0) return t;
226
226
  let n = d(typeof e.acp_server == "string" ? e.acp_server : void 0);
227
227
  return n ? [...n.default_command] : t;
228
228
  }
229
- function J(e) {
229
+ function Y(e) {
230
230
  let t = N(e.agent_settings), n = {
231
231
  agent_kind: "acp",
232
- agent_context: W(t)
232
+ agent_context: G(t)
233
233
  };
234
234
  for (let e of o) {
235
235
  if (e === "acp_model" || e === "acp_env") continue;
236
- let r = e === "acp_command" ? q(t) : t[e];
236
+ let r = e === "acp_command" ? J(t) : t[e];
237
237
  r != null && (n[e] = r);
238
238
  }
239
239
  let r = N(t.mcp_config);
240
- Object.keys(r).length > 0 && "mcpServers" in r && (n.mcp_config = r);
240
+ Object.keys(r).length > 0 && (n.mcp_config = r);
241
241
  let i = typeof t.acp_server == "string" ? t.acp_server : void 0, a = f({
242
242
  configured: t.acp_model,
243
243
  providerDefault: u(i)
244
244
  });
245
245
  return a && (n.acp_model = a), n;
246
246
  }
247
- function Y(e) {
247
+ function X(e) {
248
248
  let t = N(e.agent_settings), n = N(t.llm);
249
249
  n.model = typeof n.model == "string" && n.model.trim().length > 0 ? n.model : l.llm_model, n.stream = !0;
250
250
  let r = P(n.api_key);
251
251
  r ? n.api_key = r : delete n.api_key;
252
252
  let i = P(n.base_url);
253
- i ? n.base_url = i : delete n.base_url, g(n) ? (n.auth_type = m, n.subscription_vendor = h, delete n.api_key, delete n.base_url) : (delete n.auth_type, delete n.subscription_vendor);
253
+ i ? n.base_url = i : delete n.base_url, h(n) ? (n.auth_type = ee, n.subscription_vendor = m, delete n.api_key, delete n.base_url) : (delete n.auth_type, delete n.subscription_vendor);
254
254
  let a = N(t.mcp_config);
255
- (Object.keys(a).length === 0 || !("mcpServers" in a)) && delete t.mcp_config, delete t.acp_server;
255
+ Object.keys(a).length === 0 && delete t.mcp_config, delete t.acp_server;
256
256
  for (let e of o) delete t[e];
257
257
  return delete t.acp_env, {
258
258
  ...t,
259
259
  llm: n,
260
- agent_context: W(t),
261
- tools: V(t)
260
+ agent_context: G(t),
261
+ tools: H(t)
262
262
  };
263
263
  }
264
- function X(e) {
265
- return G(e) ? J(e) : Y(e);
266
- }
267
264
  function Z(e) {
268
- let { settings: n, query: r, conversationInstructions: i, plugins: a, workingDir: o } = e, s = N(n.conversation_settings), c = H(r, i);
265
+ return K(e) ? Y(e) : X(e);
266
+ }
267
+ function Q(e) {
268
+ let { settings: n, query: r, conversationInstructions: i, plugins: a, workingDir: o } = e, s = N(n.conversation_settings), c = U(r, i);
269
269
  return M.forEach((e) => delete s[e]), {
270
270
  ...s,
271
271
  workspace: {
@@ -280,30 +280,30 @@ function Z(e) {
280
280
  })) } : {}
281
281
  };
282
282
  }
283
- function Q(e) {
283
+ function te(e) {
284
284
  let t = e.encryptedAgentSettings ? {
285
285
  ...e.settings,
286
286
  agent_settings: e.encryptedAgentSettings
287
- } : e.settings, r = G(t), o = X(t), s = r ? K(t) : void 0, c = Z(e.encryptedConversationSettings ? {
287
+ } : e.settings, r = K(t), o = Z(t), s = r ? q(t) : void 0, c = Q(e.encryptedConversationSettings ? {
288
288
  ...e,
289
289
  settings: {
290
290
  ...e.settings,
291
291
  conversation_settings: e.encryptedConversationSettings
292
292
  }
293
293
  } : e), l = {
294
- agent_settings: o,
294
+ ...e.agentProfileId ? { agent_profile_id: e.agentProfileId } : { agent_settings: o },
295
295
  workspace: c.workspace,
296
- confirmation_policy: L(c),
296
+ confirmation_policy: R(c),
297
297
  max_iterations: typeof c.max_iterations == "number" ? c.max_iterations : 500,
298
298
  stuck_detection: !0,
299
299
  autotitle: !0,
300
300
  worktree: e.worktree ?? !0
301
301
  };
302
- s && (l.tags = { [A]: s }), e.secretsEncrypted && (!r || I(o.mcp_config)) && (l.secrets_encrypted = !0), e.conversationId && (l.conversation_id = e.conversationId);
303
- let u = R(c);
302
+ !e.agentProfileId && s && (l.tags = { [A]: s }), !e.agentProfileId && e.secretsEncrypted && (!r || L(o.mcp_config)) && (l.secrets_encrypted = !0), e.conversationId && (l.conversation_id = e.conversationId);
303
+ let u = z(c);
304
304
  u && (l.security_analyzer = u), c.initial_message && (l.initial_message = c.initial_message), c.plugins && (l.plugins = c.plugins), c.hook_config && (l.hook_config = c.hook_config);
305
- let d = {}, f = i(v);
306
- if (f && (d[v] = y), Object.assign(d, c.tool_module_qualnames ?? {}), f || delete d[v], Object.keys(d).length > 0 && (l.tool_module_qualnames = d), c.agent_definitions && (l.agent_definitions = c.agent_definitions), e.customSecrets && e.customSecrets.length > 0) {
305
+ let d = {}, f = i(_);
306
+ if (f && (d[_] = v), Object.assign(d, c.tool_module_qualnames ?? {}), f || delete d[_], Object.keys(d).length > 0 && (l.tool_module_qualnames = d), c.agent_definitions && (l.agent_definitions = c.agent_definitions), e.customSecrets && e.customSecrets.length > 0) {
307
307
  let t = n(), r = t ? a(t) : {}, i = {};
308
308
  for (let t of e.customSecrets) {
309
309
  let e = {
@@ -317,13 +317,13 @@ function Q(e) {
317
317
  }
318
318
  return l;
319
319
  }
320
- var te = "Connect your ChatGPT subscription before starting a conversation with this LLM profile.";
320
+ var ne = "Connect your ChatGPT subscription before starting a conversation with this LLM profile.";
321
321
  async function $(e) {
322
- if (g(N(e.llm)) && !(await _.getOpenAIStatus()).connected) throw Error(te);
322
+ if (h(N(e.llm)) && !(await g.getOpenAIStatus()).connected) throw Error(ne);
323
323
  }
324
- async function ne(e) {
324
+ async function re(e) {
325
325
  let { SecretsService: t } = await import("./secrets-service.js"), [n, r] = await Promise.all([p.getSettingsForConversation(), t.getSecrets()]), { agentSettings: i, conversationSettings: a, secretsEncrypted: o } = n;
326
- return await $(i), Q({
326
+ return e.agentProfileId || await $(i), te({
327
327
  ...e,
328
328
  encryptedAgentSettings: i,
329
329
  encryptedConversationSettings: a,
@@ -331,10 +331,10 @@ async function ne(e) {
331
331
  customSecrets: r
332
332
  });
333
333
  }
334
- function re() {
334
+ function ie() {
335
335
  return { hooks: [] };
336
336
  }
337
337
  //#endregion
338
- export { $ as assertSubscriptionAuthReady, ne as buildStartConversationRequestWithEncryptedSettings, re as emptyHooksResponse, D as getDefaultConversationTitle, O as toAppConversation, k as toConversationPage };
338
+ export { $ as assertSubscriptionAuthReady, re as buildStartConversationRequestWithEncryptedSettings, ie as emptyHooksResponse, D as getDefaultConversationTitle, O as toAppConversation, k as toConversationPage };
339
339
 
340
340
  //# sourceMappingURL=agent-server-adapter.js.map