@openhands/agent-canvas 1.0.0-alpha.4 → 1.0.0-alpha.5

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 (204) hide show
  1. package/build/assets/acp-providers-SCPK1BIU.js +1 -0
  2. package/build/assets/{acp-route-guard-CY4Kktrm.js → acp-route-guard-IWlFmS6x.js} +1 -1
  3. package/build/assets/active-backend-context-CkP3ZEJs.js +1 -0
  4. package/build/assets/{add-backend-modal-MoeYcSlW.js → add-backend-modal-CqjNjGqY.js} +1 -1
  5. package/build/assets/{agent-server-compatibility-DnXbX5aL.js → agent-server-compatibility-DvKtnXHw.js} +1 -1
  6. package/build/assets/agent-server-conversation-service.api-BdEre_71.js +5 -0
  7. package/build/assets/{agent-settings-D9CvPVkc.js → agent-settings-DdisD2Xx.js} +1 -1
  8. package/build/assets/{alert-banner-BopWFWDK.js → alert-banner-CvTYN73l.js} +1 -1
  9. package/build/assets/{analytics-consent-form-modal-FvOoRQJt.js → analytics-consent-form-modal-BKgT9i2w.js} +1 -1
  10. package/build/assets/{app-settings-Dh9WIVcy.js → app-settings-DcYXtxGP.js} +1 -1
  11. package/build/assets/{automation-detail-B1toFzbL.js → automation-detail-ZQs6D2d3.js} +1 -1
  12. package/build/assets/{automations-list-lQ_f_eVe.js → automations-list-CqHXGwSw.js} +1 -1
  13. package/build/assets/backend-form-modal-KudhWUX8.js +1 -0
  14. package/build/assets/{backend-synced-settings-badge-f7SIwZJJ.js → backend-synced-settings-badge-BFy2HylT.js} +1 -1
  15. package/build/assets/{base-modal-D0AZIorb.js → base-modal-B4HvlFHE.js} +1 -1
  16. package/build/assets/{browser-store-CYpN823z.js → browser-store-C3AqxAO7.js} +1 -1
  17. package/build/assets/{browser-tab-Cy5h30Rj.js → browser-tab-DTM6RyoV.js} +1 -1
  18. package/build/assets/{browser-CqONu_f3.js → browser-vYpdU3CR.js} +1 -1
  19. package/build/assets/{circle-plus-check-toggle-BLCVOBAz.js → circle-plus-check-toggle-DRvuu-RD.js} +1 -1
  20. package/build/assets/{color-themes-VfRROuOB.js → color-themes-DSaoIL6A.js} +1 -1
  21. package/build/assets/{command-store-BUJOHJw0.js → command-store-DFN_17p1.js} +1 -1
  22. package/build/assets/{condenser-settings-tU2QpcvW.js → condenser-settings-DduLQcpV.js} +1 -1
  23. package/build/assets/{confirmation-modal-C9X6T5NM.js → confirmation-modal-B-DOYMUH.js} +1 -1
  24. package/build/assets/{context-menu-list-item-CdiNsCXt.js → context-menu-list-item-DzjPB8aC.js} +1 -1
  25. package/build/assets/conversation-CeGMBOyB.js +1 -0
  26. package/build/assets/conversation-D8scXOe7.js +17 -0
  27. package/build/assets/conversation-panel-DMz46ji-.js +1 -0
  28. package/build/assets/{conversation-service.api-bFeuJPps.js → conversation-service.api-YTGTw0pz.js} +1 -1
  29. package/build/assets/conversation-state-store-Bc0slAjL.js +1 -0
  30. package/build/assets/{conversation-store-CAtSuhbI.js → conversation-store-Z5iMCRpc.js} +1 -1
  31. package/build/assets/conversation-websocket-context-B0Gd3yiT.js +3 -0
  32. package/build/assets/{device-verify-B3pEa6X6.js → device-verify-CTbXX9CQ.js} +1 -1
  33. package/build/assets/dist-yMQV8IUk.js +1 -0
  34. package/build/assets/{edit-automation-modal-CoJon94X.js → edit-automation-modal-DgW0Q8vr.js} +1 -1
  35. package/build/assets/{ellipsis-button-BMXoWChN.js → ellipsis-button-BoU2-xlG.js} +1 -1
  36. package/build/assets/{entry.client-DH09zdmW.js → entry.client-DU7-q4ZU.js} +2 -2
  37. package/build/assets/{environment-switch-overlay-akifSJ7a.js → environment-switch-overlay-DQ1n6Iu6.js} +1 -1
  38. package/build/assets/{extensions-hub-BTPY21Mo.js → extensions-hub-BW1FAKFJ.js} +1 -1
  39. package/build/assets/{extensions-navigation-Bw61uJe9.js → extensions-navigation-CbPMhSML.js} +1 -1
  40. package/build/assets/{files-tab-CsZQRSpv.js → files-tab-CbJ4s7Ik.js} +1 -1
  41. package/build/assets/files-tab-store-CDyVTXNT.js +1 -0
  42. package/build/assets/git-control-bar-branch-button-DhpPgadK.js +27 -0
  43. package/build/assets/git-provider-icon-D8RE4unY.js +1 -0
  44. package/build/assets/health-store-BDC2rM-X.js +1 -0
  45. package/build/assets/{home-7IR9W24e.js → home-D9fJfhQA.js} +1 -1
  46. package/build/assets/{install-server-modal-BL4pprnN.js → install-server-modal-VB5hOBpW.js} +1 -1
  47. package/build/assets/{launch-Bd5avLyw.js → launch-DKCU9uJH.js} +1 -1
  48. package/build/assets/{llm-client-BvUU4If8.js → llm-client-BpIfxETv.js} +1 -1
  49. package/build/assets/{llm-settings-yIFf1UoE.js → llm-settings-BOJC4vD-.js} +1 -1
  50. package/build/assets/llm-settings-CIdxmimN.js +1 -0
  51. package/build/assets/{manage-backends-modal-buYNliLv.js → manage-backends-modal-DqpzcxdI.js} +1 -1
  52. package/build/assets/{manage-workspaces-modal-BiTj6Z4W.js → manage-workspaces-modal-eG6XgAvw.js} +1 -1
  53. package/build/assets/manifest-f141dc70.js +1 -0
  54. package/build/assets/{markdown-renderer-CeCYDWvz.js → markdown-renderer-wZnLDbA1.js} +1 -1
  55. package/build/assets/{mcp-DSzTA9H1.js → mcp-BdfyCW1l.js} +1 -1
  56. package/build/assets/{messages-x5kGl-bQ.js → messages-BfaEAG2q.js} +1 -1
  57. package/build/assets/{model-selector-CED-tBXx.js → model-selector-7id-Uirf.js} +1 -1
  58. package/build/assets/{navigation-link-C_YVC2i-.js → navigation-link-DFQ7YcWq.js} +1 -1
  59. package/build/assets/{option-service.api-Bqy363N2.js → option-service.api-DN0ZcGjw.js} +1 -1
  60. package/build/assets/{organization-service.api-BAwDUJoL.js → organization-service.api-Ct2dZF8M.js} +1 -1
  61. package/build/assets/{path-utils-3ccf0YXA.js → path-utils-D1ZtqFC7.js} +1 -1
  62. package/build/assets/{planner-tab-b0Q_JZvr.js → planner-tab-yubfN-6U.js} +1 -1
  63. package/build/assets/{profiles-client-Cj9KHwuq.js → profiles-client-D4twHRVf.js} +1 -1
  64. package/build/assets/{providers-CdDNvcEb.js → providers-C2T07PM3.js} +1 -1
  65. package/build/assets/{proxy-3uQm0NJ9.js → proxy-BMZyC45G.js} +1 -1
  66. package/build/assets/query-client-config-CiK0GJJO.js +1 -0
  67. package/build/assets/{recommended-automations-launcher--puKMsm-.js → recommended-automations-launcher-Cx7svuGE.js} +17 -3
  68. package/build/assets/root-layout-DvYGxAnr.js +2 -0
  69. package/build/assets/root-luPHQiBx.js +2 -0
  70. package/build/assets/{sdk-section-page-Dgmjx3Nh.js → sdk-section-page-03k88tIR.js} +1 -1
  71. package/build/assets/{sdk-settings-schema-QrDJfOon.js → sdk-settings-schema-BY8dOy3a.js} +1 -1
  72. package/build/assets/{secrets-service-Dy7jaVk0.js → secrets-service-Z3qtRb_G.js} +1 -1
  73. package/build/assets/{secrets-settings-9X_bB7-j.js → secrets-settings-BnlByuMZ.js} +1 -1
  74. package/build/assets/{server-client-BvA-DepM.js → server-client-CG1zHqph.js} +1 -1
  75. package/build/assets/{settings-CLfgxw_Q.js → settings-DyzGLF_d.js} +1 -1
  76. package/build/assets/{settings-client-DjnapAI3.js → settings-client-CkXDJwIY.js} +1 -1
  77. package/build/assets/{settings-dropdown-input-1bMoP5ld.js → settings-dropdown-input-CAQWQgx-.js} +1 -1
  78. package/build/assets/{settings-index-QV1myqj-.js → settings-index-KtTw49xL.js} +1 -1
  79. package/build/assets/{settings-input-Bz9QClNU.js → settings-input-BWCZt9g2.js} +1 -1
  80. package/build/assets/{settings-list-classes-vFnNAdFx.js → settings-list-classes-xMleGkTC.js} +1 -1
  81. package/build/assets/{settings-modal-CmsyiNtY.js → settings-modal-Cv2YWSUY.js} +1 -1
  82. package/build/assets/{settings-service.api-DfJwVvYA.js → settings-service.api-Z6x0l0GU.js} +1 -1
  83. package/build/assets/{shared-conversation-CsGvti_a.js → shared-conversation-BfZNCsvo.js} +1 -1
  84. package/build/assets/{sidebar-mobile-menu-toggle-CRQrI0ED.js → sidebar-mobile-menu-toggle-DXplko7u.js} +1 -1
  85. package/build/assets/{sidebar-nav-link-qrRmYl8T.js → sidebar-nav-link-B4h8naZ7.js} +1 -1
  86. package/build/assets/{sidebar-store-CUm9qCi_.js → sidebar-store-cOeaKmIm.js} +1 -1
  87. package/build/assets/{skill-card-pill-row-DdaVfIxC.js → skill-card-pill-row-D0oTWx-a.js} +1 -1
  88. package/build/assets/{skills-plugins-BX5zDQC6.js → skills-plugins-BTnp7QcQ.js} +1 -1
  89. package/build/assets/{skills-settings-CuoWDnTN.js → skills-settings-CbOQvzkR.js} +1 -1
  90. package/build/assets/{styled-tooltip-C7QOGK28.js → styled-tooltip-Awq4HMw3.js} +1 -1
  91. package/build/assets/{task-list-tab-Bz7_oCIo.js → task-list-tab-B45ktzHM.js} +1 -1
  92. package/build/assets/{terminal-CRX7ZSEA.js → terminal-D5pzR9Ru.js} +1 -1
  93. package/build/assets/{typography-BqlA_dVV.js → typography-BbaUAC4V.js} +1 -1
  94. package/build/assets/{use-active-conversation-DOLpeZZ5.js → use-active-conversation-Bu5J9iLy.js} +1 -1
  95. package/build/assets/{use-agent-settings-schema-D90oKLgR.js → use-agent-settings-schema-BbtOsR7P.js} +1 -1
  96. package/build/assets/{use-agent-state-BqaILzms.js → use-agent-state-DN9Nc5pP.js} +1 -1
  97. package/build/assets/{use-cloud-current-user-id-Dy9b3ahi.js → use-cloud-current-user-id-B_rMUiu8.js} +1 -1
  98. package/build/assets/{use-config-BD9X1AvI.js → use-config-Bcz2JL2t.js} +1 -1
  99. package/build/assets/{use-conversation-id-DPRiMh48.js → use-conversation-id-BOaaZahn.js} +1 -1
  100. package/build/assets/{use-create-conversation-B4M_yYz3.js → use-create-conversation-BWFA_FId.js} +1 -1
  101. package/build/assets/{use-event-store-DDhcATXi.js → use-event-store-CQZCcVz-.js} +1 -1
  102. package/build/assets/{use-handle-plan-click-Dno7Yfm3.js → use-handle-plan-click-CgrCGmT1.js} +1 -1
  103. package/build/assets/{use-is-creating-conversation-CVum0xhv.js → use-is-creating-conversation-DhoM7UAB.js} +1 -1
  104. package/build/assets/{use-launch-skill-in-chat-sASpuCpy.js → use-launch-skill-in-chat-DOyQsXFO.js} +1 -1
  105. package/build/assets/{use-llm-profiles-DHxXPcrl.js → use-llm-profiles-CAIzHJDX.js} +1 -1
  106. package/build/assets/{use-runtime-is-ready-C-dZi-ZU.js → use-runtime-is-ready-BQWLEyqa.js} +1 -1
  107. package/build/assets/{use-save-settings-pkHKHB31.js → use-save-settings-5m3w89Ph.js} +1 -1
  108. package/build/assets/{use-settings-ClRWXa6p.js → use-settings-DzG0C3vO.js} +1 -1
  109. package/build/assets/{use-settings-nav-items-CDy22kOR.js → use-settings-nav-items-BIsKeX52.js} +1 -1
  110. package/build/assets/use-skills-Cn-78xP1.js +1 -0
  111. package/build/assets/{use-task-list-BwJGWML_.js → use-task-list-Bs90uF2N.js} +1 -1
  112. package/build/assets/{use-unified-vscode-url-DU7On_6w.js → use-unified-vscode-url-C5iI-Z5A.js} +1 -1
  113. package/build/assets/{use-user-conversation-DdUU6uqz.js → use-user-conversation-BCYpbPT1.js} +1 -1
  114. package/build/assets/{vendor~conversation-panel~conversation-CJfSHdwC.js → vendor~conversation-panel~conversation-CbjvWBSu.js} +1 -1
  115. package/build/assets/{vendor~conversation-panel~conversation~index-DZ7eKFW3.js → vendor~conversation-panel~conversation~index-C23ZXO4R.js} +1 -1
  116. package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~jfc6hidu-ksomn5Bg.js → vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~jfc6hidu-VnmIZrq3.js} +1 -1
  117. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CM_1dibO.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-B92czPCF.js} +1 -1
  118. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-B-s2ZXN7.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BbFOrAjI.js} +1 -1
  119. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-bTqZAHqW.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-By5W2oHN.js} +1 -1
  120. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-8cYFyeHR.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CofhIDpd.js} +1 -1
  121. package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-uK_SqCPd.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DpAdkv8m.js} +1 -1
  122. package/build/assets/{vendor~home~mcp~automations-list-a--VL9Np.js → vendor~home~mcp~automations-list-DRfWZRnF.js} +1 -1
  123. package/build/assets/{vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-WuKCleb6.js → vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-BQPOygpY.js} +2 -2
  124. package/build/assets/{vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-BG3to4e4.js → vendor~home~mcp~llm-settings~agent-settings~condenser-settings~verification-settings~app-se~ocm3mykx-CyYIBiBk.js} +1 -1
  125. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation-DL8iX8eY.js → vendor~root-layout~home~conversation-panel~conversation-DjAjXS5J.js} +1 -1
  126. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-8l0SYWBt.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-CFpDeb9o.js} +1 -1
  127. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-CrBN5IsU.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~iguv7bgw-CuGq_cxH.js} +1 -1
  128. package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~k776hupu-DHbj3Bsh.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~k776hupu-C1p8-pMr.js} +2 -2
  129. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~dp08i1qy-BJm2mGIp.js +48 -0
  130. package/build/assets/{verification-settings-CiaMSkli.js → verification-settings-DbziMp4K.js} +1 -1
  131. package/build/assets/{vscode-tab-DkUK-4Xb.js → vscode-tab-BVhQR2rt.js} +1 -1
  132. package/build/index.html +4 -4
  133. package/dist/constants/acp-providers.cjs +1 -1
  134. package/dist/constants/acp-providers.cjs.map +1 -1
  135. package/dist/constants/acp-providers.d.ts +10 -18
  136. package/dist/constants/acp-providers.js +42 -209
  137. package/dist/constants/acp-providers.js.map +1 -1
  138. package/dist/hooks/query/use-paginated-conversations.cjs +1 -1
  139. package/dist/hooks/query/use-paginated-conversations.cjs.map +1 -1
  140. package/dist/hooks/query/use-paginated-conversations.js +2 -1
  141. package/dist/hooks/query/use-paginated-conversations.js.map +1 -1
  142. package/dist/node_modules/@openhands/typescript-client/dist/index.cjs +1 -1
  143. package/dist/node_modules/@openhands/typescript-client/dist/index.js +1 -0
  144. package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.cjs +2 -0
  145. package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.cjs.map +1 -0
  146. package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.js +213 -0
  147. package/dist/node_modules/@openhands/typescript-client/dist/models/acp-providers.js.map +1 -0
  148. package/dist/node_modules/@openhands/typescript-client/dist/models/acp.cjs +2 -0
  149. package/dist/node_modules/@openhands/typescript-client/dist/models/acp.cjs.map +1 -0
  150. package/dist/node_modules/@openhands/typescript-client/dist/models/acp.js +10 -0
  151. package/dist/node_modules/@openhands/typescript-client/dist/models/acp.js.map +1 -0
  152. package/dist/package.cjs +1 -1
  153. package/dist/package.cjs.map +1 -1
  154. package/dist/package.js +3 -3
  155. package/dist/package.js.map +1 -1
  156. package/dist/query-client-config.cjs +1 -1
  157. package/dist/query-client-config.cjs.map +1 -1
  158. package/dist/query-client-config.js +30 -23
  159. package/dist/query-client-config.js.map +1 -1
  160. package/package.json +3 -3
  161. package/scripts/check-sdk-version-sync.mjs +6 -6
  162. package/scripts/dev-safe.mjs +1 -1
  163. package/build/assets/acp-providers-BhOEPsud.js +0 -1
  164. package/build/assets/active-backend-context-jthDtMCD.js +0 -1
  165. package/build/assets/agent-server-conversation-service.api-CA7hOJAy.js +0 -5
  166. package/build/assets/backend-form-modal-DbriBS-v.js +0 -1
  167. package/build/assets/conversation-CDHXbtHw.js +0 -17
  168. package/build/assets/conversation-Dd7NkKCq.js +0 -1
  169. package/build/assets/conversation-panel-BZ1-fw2m.js +0 -1
  170. package/build/assets/conversation-state-store-Dpa4x70O.js +0 -1
  171. package/build/assets/conversation-websocket-context-BEeh-jIG.js +0 -3
  172. package/build/assets/dist-dxViYC8L.js +0 -1
  173. package/build/assets/files-tab-store-ymnFnIBO.js +0 -1
  174. package/build/assets/git-control-bar-branch-button-BzqhhzW4.js +0 -27
  175. package/build/assets/git-provider-icon-Cf-vdwYZ.js +0 -1
  176. package/build/assets/llm-settings-BwVWlOyB.js +0 -1
  177. package/build/assets/manifest-e27751af.js +0 -1
  178. package/build/assets/query-client-config-BtB8Yvpf.js +0 -1
  179. package/build/assets/root-Xt6cd1J6.js +0 -2
  180. package/build/assets/root-layout-Bp7iQEOJ.js +0 -2
  181. package/build/assets/skills-client-DOeT6HEj.js +0 -1
  182. package/build/assets/use-skills-C2S3iOtJ.js +0 -1
  183. package/build/assets/vendor~root-layout~home~conversation-panel~conversation~launch~automations-list~automation-~f57mv2f3-D6ItaxF-.js +0 -48
  184. package/scripts/check-acp-providers-sync.mjs +0 -560
  185. /package/build/assets/{agent-server-client-options-BvlH7qGM.js → agent-server-client-options-8OJSXbm8.js} +0 -0
  186. /package/build/assets/{agent-server-ui-style-scope-DWLieFHA.js → agent-server-ui-style-scope-BwIZYdC1.js} +0 -0
  187. /package/build/assets/{brand-button-BYloqbQ3.js → brand-button-8fVVei4i.js} +0 -0
  188. /package/build/assets/{combobox-caret-C7rVhI_V.js → combobox-caret-BMsz5mQX.js} +0 -0
  189. /package/build/assets/{conversation-local-storage-BQSptoYo.js → conversation-local-storage-UYl-SX-r.js} +0 -0
  190. /package/build/assets/{dist-3eF0ujsw.js → dist-DZHSA2e6.js} +0 -0
  191. /package/build/assets/{environment-switch-store-CBXkf5bS.js → environment-switch-store-C4ulFJKp.js} +0 -0
  192. /package/build/assets/{loading-spinner-D-ea2dZq.js → loading-spinner-91b5FiMQ.js} +0 -0
  193. /package/build/assets/{middleware-iK-zKVe0.js → middleware-BC9EwbB9.js} +0 -0
  194. /package/build/assets/{modal-backdrop-DML21GPD.js → modal-backdrop-B04pVYAD.js} +0 -0
  195. /package/build/assets/{modal-body-RpEv_U1i.js → modal-body-CgUoFQA1.js} +0 -0
  196. /package/build/assets/{modal-close-button-SKLwT3A4.js → modal-close-button-SM_WXzDY.js} +0 -0
  197. /package/build/assets/{navigation-context-DtjWNE3F.js → navigation-context-BFjstyH6.js} +0 -0
  198. /package/build/assets/{objectWithoutPropertiesLoose-SGdQSpMZ.js → objectWithoutPropertiesLoose-Du6eBn-V.js} +0 -0
  199. /package/build/assets/{openhands-logo-BRKD7Ir9.js → openhands-logo-DkDp75rC.js} +0 -0
  200. /package/build/assets/{query-keys-D5xWPArX.js → query-keys-tAsQcc_9.js} +0 -0
  201. /package/build/assets/{react-DMUxGBRt.js → react-Do0CT17Y.js} +0 -0
  202. /package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~zm51vy4j-Csgp2p8o.js → vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~zm51vy4j-iOsylxCS.js} +0 -0
  203. /package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~i4kjfqhl-BdNVgtVT.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~skil~i4kjfqhl-BebWhFNT.js} +0 -0
  204. /package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~pfbaerbd-DFFy3NX_.js → vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~pfbaerbd-zhv9fooy.js} +0 -0
@@ -1,233 +1,66 @@
1
1
  import { I18nKey as e } from "../i18n/declaration.js";
2
- var t = new Set(["default", "default (recommended)"]);
3
- function n(e) {
2
+ import { getAcpProvider as t } from "../node_modules/@openhands/typescript-client/dist/models/acp.js";
3
+ import "../node_modules/@openhands/typescript-client/dist/index.js";
4
+ var n = new Set(["default", "default (recommended)"]);
5
+ function r(e) {
4
6
  if (typeof e != "string") return null;
5
- let n = e.trim();
6
- return !n || t.has(n.toLowerCase()) || n === "acp-managed" ? null : n;
7
+ let t = e.trim();
8
+ return !t || n.has(t.toLowerCase()) || t === "acp-managed" ? null : t;
7
9
  }
8
- function r(e) {
10
+ function i(e) {
9
11
  for (let t of [
10
12
  e.runtimeName,
11
13
  e.runtimeId,
12
14
  e.configured,
13
15
  e.sdkLlm
14
16
  ]) {
15
- let e = n(t);
17
+ let e = r(t);
16
18
  if (e) return e;
17
19
  }
18
20
  return e.providerDefault ?? null;
19
21
  }
20
- var i = [
21
- {
22
- key: "claude-code",
23
- display_name: "Claude Code",
24
- default_command: [
25
- "npx",
26
- "-y",
27
- "@agentclientprotocol/claude-agent-acp"
28
- ],
29
- available_models: [
30
- {
31
- id: "claude-opus-4-7",
32
- label: "Claude Opus 4.7"
33
- },
34
- {
35
- id: "claude-opus-4-6",
36
- label: "Claude Opus 4.6"
37
- },
38
- {
39
- id: "opus[1m]",
40
- label: "Claude Opus (1M)"
41
- },
42
- {
43
- id: "claude-opus-4-5",
44
- label: "Claude Opus 4.5"
45
- },
46
- {
47
- id: "claude-opus-4-1-20250805",
48
- label: "Claude Opus 4.1"
49
- },
50
- {
51
- id: "claude-sonnet-4-6",
52
- label: "Claude Sonnet 4.6"
53
- },
54
- {
55
- id: "sonnet[1m]",
56
- label: "Claude Sonnet (1M)"
57
- },
58
- {
59
- id: "claude-sonnet-4-5",
60
- label: "Claude Sonnet 4.5"
61
- },
62
- {
63
- id: "claude-haiku-4-5",
64
- label: "Claude Haiku 4.5"
65
- },
66
- {
67
- id: "opusplan",
68
- label: "Opus (plan) + Sonnet (execute)"
69
- }
70
- ],
71
- default_model: "claude-opus-4-7",
72
- description_key: e.ONBOARDING$AGENT_CLAUDE_CODE_DESCRIPTION,
73
- icon: "claude-code"
22
+ var a = {
23
+ "claude-code": {
24
+ icon: "claude-code",
25
+ description_key: e.ONBOARDING$AGENT_CLAUDE_CODE_DESCRIPTION
74
26
  },
75
- {
76
- key: "codex",
77
- display_name: "Codex",
78
- default_command: [
79
- "npx",
80
- "-y",
81
- "@zed-industries/codex-acp"
82
- ],
83
- available_models: [
84
- {
85
- id: "gpt-5.5/low",
86
- label: "GPT-5.5 (low)"
87
- },
88
- {
89
- id: "gpt-5.5/medium",
90
- label: "GPT-5.5 (medium)"
91
- },
92
- {
93
- id: "gpt-5.5/high",
94
- label: "GPT-5.5 (high)"
95
- },
96
- {
97
- id: "gpt-5.5/xhigh",
98
- label: "GPT-5.5 (xhigh)"
99
- },
100
- {
101
- id: "gpt-5.4/low",
102
- label: "GPT-5.4 (low)"
103
- },
104
- {
105
- id: "gpt-5.4/medium",
106
- label: "GPT-5.4 (medium)"
107
- },
108
- {
109
- id: "gpt-5.4/high",
110
- label: "GPT-5.4 (high)"
111
- },
112
- {
113
- id: "gpt-5.4/xhigh",
114
- label: "GPT-5.4 (xhigh)"
115
- },
116
- {
117
- id: "gpt-5.4-mini/low",
118
- label: "GPT-5.4 Mini (low)"
119
- },
120
- {
121
- id: "gpt-5.4-mini/medium",
122
- label: "GPT-5.4 Mini (medium)"
123
- },
124
- {
125
- id: "gpt-5.4-mini/high",
126
- label: "GPT-5.4 Mini (high)"
127
- },
128
- {
129
- id: "gpt-5.4-mini/xhigh",
130
- label: "GPT-5.4 Mini (xhigh)"
131
- },
132
- {
133
- id: "gpt-5.3-codex/low",
134
- label: "GPT-5.3 Codex (low)"
135
- },
136
- {
137
- id: "gpt-5.3-codex/medium",
138
- label: "GPT-5.3 Codex (medium)"
139
- },
140
- {
141
- id: "gpt-5.3-codex/high",
142
- label: "GPT-5.3 Codex (high)"
143
- },
144
- {
145
- id: "gpt-5.3-codex/xhigh",
146
- label: "GPT-5.3 Codex (xhigh)"
147
- },
148
- {
149
- id: "gpt-5.2/low",
150
- label: "GPT-5.2 (low)"
151
- },
152
- {
153
- id: "gpt-5.2/medium",
154
- label: "GPT-5.2 (medium)"
155
- },
156
- {
157
- id: "gpt-5.2/high",
158
- label: "GPT-5.2 (high)"
159
- },
160
- {
161
- id: "gpt-5.2/xhigh",
162
- label: "GPT-5.2 (xhigh)"
163
- }
164
- ],
165
- default_model: "gpt-5.5/medium",
166
- description_key: e.ONBOARDING$AGENT_CODEX_DESCRIPTION,
167
- icon: "codex"
27
+ codex: {
28
+ icon: "codex",
29
+ description_key: e.ONBOARDING$AGENT_CODEX_DESCRIPTION
168
30
  },
169
- {
170
- key: "gemini-cli",
171
- display_name: "Gemini CLI",
172
- default_command: [
173
- "npx",
174
- "-y",
175
- "@google/gemini-cli",
176
- "--acp"
177
- ],
178
- available_models: [
179
- {
180
- id: "auto-gemini-3",
181
- label: "Auto (Gemini 3)"
182
- },
183
- {
184
- id: "auto-gemini-2.5",
185
- label: "Auto (Gemini 2.5)"
186
- },
187
- {
188
- id: "gemini-3.1-pro-preview",
189
- label: "Gemini 3.1 Pro (preview)"
190
- },
191
- {
192
- id: "gemini-3-flash-preview",
193
- label: "Gemini 3 Flash (preview)"
194
- },
195
- {
196
- id: "gemini-3.1-flash-lite-preview",
197
- label: "Gemini 3.1 Flash Lite (preview)"
198
- },
199
- {
200
- id: "gemini-2.5-pro",
201
- label: "Gemini 2.5 Pro"
202
- },
203
- {
204
- id: "gemini-2.5-flash",
205
- label: "Gemini 2.5 Flash"
206
- },
207
- {
208
- id: "gemini-2.5-flash-lite",
209
- label: "Gemini 2.5 Flash Lite"
210
- }
211
- ],
212
- default_model: "gemini-2.5-pro",
213
- description_key: e.ONBOARDING$AGENT_GEMINI_CLI_DESCRIPTION,
214
- icon: "gemini"
31
+ "gemini-cli": {
32
+ icon: "gemini",
33
+ description_key: e.ONBOARDING$AGENT_GEMINI_CLI_DESCRIPTION
215
34
  }
216
- ];
217
- function a(e) {
218
- if (e) return i.find((t) => t.key === e);
35
+ }, o = Object.entries(a).map(([e, n]) => {
36
+ let r = t(e);
37
+ return {
38
+ key: e,
39
+ display_name: r?.display_name ?? e,
40
+ default_command: r ? [...r.default_command] : [],
41
+ available_models: r?.available_models?.map((e) => ({
42
+ id: e.id,
43
+ label: e.label
44
+ })),
45
+ default_model: r?.default_model ?? void 0,
46
+ description_key: n.description_key,
47
+ icon: n.icon
48
+ };
49
+ });
50
+ function s(e) {
51
+ if (e) return o.find((t) => t.key === e);
219
52
  }
220
- function o(e) {
221
- let t = a(e);
53
+ function c(e) {
54
+ let t = s(e);
222
55
  return t ? t.display_name : null;
223
56
  }
224
- function s(e) {
225
- return a(e)?.icon ?? "cli-generic";
57
+ function l(e) {
58
+ return s(e)?.icon ?? "cli-generic";
226
59
  }
227
- function c(e, t) {
228
- return t ? a(e)?.available_models?.find((e) => e.id === t)?.label ?? t : null;
60
+ function u(e, t) {
61
+ return t ? s(e)?.available_models?.find((e) => e.id === t)?.label ?? t : null;
229
62
  }
230
63
  //#endregion
231
- export { i as ACP_PROVIDERS, a as getAcpProvider, o as getAcpProviderDisplayName, c as labelForAcpModel, s as resolveAcpProviderIcon, r as resolveEffectiveAcpModel };
64
+ export { o as ACP_PROVIDERS, s as getAcpProvider, c as getAcpProviderDisplayName, u as labelForAcpModel, l as resolveAcpProviderIcon, i as resolveEffectiveAcpModel };
232
65
 
233
66
  //# sourceMappingURL=acp-providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"acp-providers.js","names":[],"sources":["../../src/constants/acp-providers.ts"],"sourcesContent":["import { I18nKey } from \"#/i18n/declaration\";\n\nexport type ACPProviderIcon =\n | \"claude-code\"\n | \"codex\"\n | \"gemini\"\n | \"cli-generic\";\n\nexport const ACP_PROVIDER_FALLBACK_ICON: ACPProviderIcon = \"cli-generic\";\n\n// SDK placeholder strings the ACP wrapper returns before the user has\n// chosen a real model — surfacing either would lie about what's running.\nexport const ACP_DEFAULT_PLACEHOLDERS = new Set([\n \"default\",\n \"default (recommended)\",\n]);\n\n// Sentinel ``agent.llm.model`` returned by older SDKs for ACP conversations\n// in lieu of a real model. Suppressed at every consumer that resolves a\n// display string.\nexport const ACP_MANAGED_SENTINEL = \"acp-managed\";\n\n/**\n * Filter for \"real\" ACP model strings — non-empty, not the SDK's \"default\"\n * placeholder, not the legacy ``acp-managed`` sentinel. Returns the trimmed\n * value on success, ``null`` otherwise.\n */\nfunction realAcpModel(value: unknown): string | null {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n if (!trimmed) return null;\n if (ACP_DEFAULT_PLACEHOLDERS.has(trimmed.toLowerCase())) return null;\n if (trimmed === ACP_MANAGED_SENTINEL) return null;\n return trimmed;\n}\n\n/**\n * Single source of truth for resolving the model string to surface for an\n * ACP conversation/settings context. Consumed by the conversation adapter\n * (chip text), the conversation-creation path (concrete ``acp_model``\n * payload), the Settings → Agent form (initial value), and the chat-input\n * model label.\n *\n * Precedence: SDK runtime fields → user-configured ``acp_model`` →\n * legacy ``agent.llm.model`` → provider default (when ``providerDefault``\n * is passed). Pass ``providerDefault`` only on surfaces that should\n * silently substitute the registry default; omit it for the conversation\n * chip, which must distinguish \"no concrete model\" from \"default\".\n */\nexport function resolveEffectiveAcpModel(inputs: {\n runtimeName?: string | null;\n runtimeId?: string | null;\n configured?: string | null;\n sdkLlm?: string | null;\n providerDefault?: string | null;\n}): string | null {\n for (const candidate of [\n inputs.runtimeName,\n inputs.runtimeId,\n inputs.configured,\n inputs.sdkLlm,\n ]) {\n const value = realAcpModel(candidate);\n if (value) return value;\n }\n return inputs.providerDefault ?? null;\n}\n\n/**\n * Built-in ACP (Agent Client Protocol) provider registry.\n *\n * **Source of truth:** ``openhands.sdk.settings.acp_providers.ACP_PROVIDERS``\n * in https://github.com/OpenHands/software-agent-sdk. This file is a\n * hand-kept TypeScript mirror — keep keys + commands in sync with the\n * Python source. The {@link OnboardingAgentId} and the\n * ``ACPAgentSettings.acp_server`` discriminator\n * (``\"claude-code\" | \"codex\" | \"gemini-cli\" | \"custom\"``) come from the\n * same Python module.\n *\n * Drift risk is tracked in agent-canvas#587. The richer SDK record\n * (api-key env var, session mode, set-session-model protocol, etc.)\n * is intentionally not mirrored here — canvas only renders this\n * registry in the Settings → Agent and onboarding UIs, so it only\n * needs the fields below.\n */\nexport interface ACPProviderConfig {\n /** Stable registry key, also stored on conversations as ``tags.acpserver``. */\n key: string;\n /** Human-readable name shown in dropdowns and conversation chips. */\n display_name: string;\n /**\n * Tokens passed to the agent-server as ``acp_command`` when this preset\n * is picked. Each entry must be a real ACP-protocol stdio server — the\n * SDK validates this against the {@link ACPProviderConfig.key}.\n *\n * NB: ``npx -y @openai/codex acp`` looks plausible but is **not** an\n * ACP server — the codex CLI has no ``acp`` subcommand and exits with\n * ``Error: stdin is not a terminal`` when spawned without a TTY, which\n * silently deadlocks the agent-server's ACP handshake. Use\n * ``@zed-industries/codex-acp`` (the Zed-shipped wrapper) instead.\n */\n default_command: string[];\n /**\n * Canvas-local suggested ACP model IDs. These mirror the current runtime\n * picker values for the built-in harnesses, but are not authoritative access\n * checks; users can still enter a custom override in Settings -> Agent.\n */\n available_models?: ACPModelOption[];\n /** Model ID preselected for built-in providers so Canvas never saves blank. */\n default_model?: string;\n /**\n * i18n key for the one-line provider description rendered under the\n * onboarding tile. Stored on the registry so adding a new ACP\n * provider only requires editing this file (not the onboarding tile\n * list separately).\n */\n description_key: I18nKey;\n /**\n * Serializable icon key used by UI surfaces that render provider\n * choices. Kept as a string so the SDK mirror check can continue to\n * parse this registry without importing React components.\n */\n icon?: ACPProviderIcon;\n}\n\nexport interface ACPModelOption {\n /** Exact model ID sent as ``acp_model``. */\n id: string;\n /** Human-readable label shown in Settings -> Agent. */\n label: string;\n}\n\n// Canonical model IDs the Claude Code CLI binary's model registry recognises\n// (verified by string-scanning v2.1.146 of the bundled ``claude`` native\n// binary). ``[1m]`` is the SDK-documented 1M-context suffix; we use the\n// version-agnostic alias so the option auto-tracks the newest 1M-capable\n// model. ``opusplan`` routes planning to Opus and execution to Sonnet.\n// Availability for any of these ultimately depends on the user's Anthropic\n// plan tier — surfacing them here matches what the CLI *accepts*, not what\n// every account can actually invoke.\nconst CLAUDE_MODELS: ACPModelOption[] = [\n { id: \"claude-opus-4-7\", label: \"Claude Opus 4.7\" },\n { id: \"claude-opus-4-6\", label: \"Claude Opus 4.6\" },\n // The 1M-context entries use the version-agnostic ``[1m]`` aliases, so the\n // label must stay version-less too — pinning a number here (e.g. \"4.6\")\n // would lie the moment the alias resolves to a newer model.\n { id: \"opus[1m]\", label: \"Claude Opus (1M)\" },\n { id: \"claude-opus-4-5\", label: \"Claude Opus 4.5\" },\n { id: \"claude-opus-4-1-20250805\", label: \"Claude Opus 4.1\" },\n { id: \"claude-sonnet-4-6\", label: \"Claude Sonnet 4.6\" },\n { id: \"sonnet[1m]\", label: \"Claude Sonnet (1M)\" },\n { id: \"claude-sonnet-4-5\", label: \"Claude Sonnet 4.5\" },\n { id: \"claude-haiku-4-5\", label: \"Claude Haiku 4.5\" },\n { id: \"opusplan\", label: \"Opus (plan) + Sonnet (execute)\" },\n];\n\n// Model IDs accepted by the ``@zed-industries/codex-acp`` wrapper, mirroring\n// the Codex CLI's own ``/model`` picker. Format is ``<base-model>/<effort>``\n// where the trailing tier (``low``/``medium``/``high``/``xhigh``) hints the\n// reasoning effort for that turn. Sourced from the Codex CLI's documented\n// runtime options as of 2026-05-22 — see ``acp_model`` registry tracker\n// in agent-canvas#740 for the long-term plan.\nconst CODEX_MODELS: ACPModelOption[] = [\n { id: \"gpt-5.5/low\", label: \"GPT-5.5 (low)\" },\n { id: \"gpt-5.5/medium\", label: \"GPT-5.5 (medium)\" },\n { id: \"gpt-5.5/high\", label: \"GPT-5.5 (high)\" },\n { id: \"gpt-5.5/xhigh\", label: \"GPT-5.5 (xhigh)\" },\n { id: \"gpt-5.4/low\", label: \"GPT-5.4 (low)\" },\n { id: \"gpt-5.4/medium\", label: \"GPT-5.4 (medium)\" },\n { id: \"gpt-5.4/high\", label: \"GPT-5.4 (high)\" },\n { id: \"gpt-5.4/xhigh\", label: \"GPT-5.4 (xhigh)\" },\n { id: \"gpt-5.4-mini/low\", label: \"GPT-5.4 Mini (low)\" },\n { id: \"gpt-5.4-mini/medium\", label: \"GPT-5.4 Mini (medium)\" },\n { id: \"gpt-5.4-mini/high\", label: \"GPT-5.4 Mini (high)\" },\n { id: \"gpt-5.4-mini/xhigh\", label: \"GPT-5.4 Mini (xhigh)\" },\n { id: \"gpt-5.3-codex/low\", label: \"GPT-5.3 Codex (low)\" },\n { id: \"gpt-5.3-codex/medium\", label: \"GPT-5.3 Codex (medium)\" },\n { id: \"gpt-5.3-codex/high\", label: \"GPT-5.3 Codex (high)\" },\n { id: \"gpt-5.3-codex/xhigh\", label: \"GPT-5.3 Codex (xhigh)\" },\n { id: \"gpt-5.2/low\", label: \"GPT-5.2 (low)\" },\n { id: \"gpt-5.2/medium\", label: \"GPT-5.2 (medium)\" },\n { id: \"gpt-5.2/high\", label: \"GPT-5.2 (high)\" },\n { id: \"gpt-5.2/xhigh\", label: \"GPT-5.2 (xhigh)\" },\n];\n\n// Model IDs accepted by ``@google/gemini-cli --acp``. The ``auto-gemini-*``\n// entries delegate version selection to the CLI's router; the explicit\n// ``gemini-3.1-*`` / ``gemini-2.5-*`` entries pin to a specific snapshot.\n// Sourced from the Gemini CLI's documented model list as of 2026-05-22 —\n// see agent-canvas#740 for the long-term plan to move this registry\n// upstream.\nconst GEMINI_MODELS: ACPModelOption[] = [\n { id: \"auto-gemini-3\", label: \"Auto (Gemini 3)\" },\n { id: \"auto-gemini-2.5\", label: \"Auto (Gemini 2.5)\" },\n { id: \"gemini-3.1-pro-preview\", label: \"Gemini 3.1 Pro (preview)\" },\n { id: \"gemini-3-flash-preview\", label: \"Gemini 3 Flash (preview)\" },\n {\n id: \"gemini-3.1-flash-lite-preview\",\n label: \"Gemini 3.1 Flash Lite (preview)\",\n },\n { id: \"gemini-2.5-pro\", label: \"Gemini 2.5 Pro\" },\n { id: \"gemini-2.5-flash\", label: \"Gemini 2.5 Flash\" },\n { id: \"gemini-2.5-flash-lite\", label: \"Gemini 2.5 Flash Lite\" },\n];\n\n// Each entry's ``default_command`` is the published-package npx\n// invocation that speaks the ACP JSON-RPC protocol on stdio. Verified\n// against the upstream npm registry on the date noted below — if a\n// package is renamed/unpublished, the agent-server spawn fails fast\n// with ``ENOENT`` and the user can switch to the \"Custom\" preset.\nexport const ACP_PROVIDERS: ACPProviderConfig[] = [\n {\n key: \"claude-code\",\n display_name: \"Claude Code\",\n // https://www.npmjs.com/package/@agentclientprotocol/claude-agent-acp\n // Verified 2026-05-19. Official Anthropic-maintained ACP wrapper\n // around the Claude Code CLI.\n default_command: [\"npx\", \"-y\", \"@agentclientprotocol/claude-agent-acp\"],\n available_models: CLAUDE_MODELS,\n default_model: \"claude-opus-4-7\",\n description_key: I18nKey.ONBOARDING$AGENT_CLAUDE_CODE_DESCRIPTION,\n icon: \"claude-code\",\n },\n {\n key: \"codex\",\n display_name: \"Codex\",\n // https://www.npmjs.com/package/@zed-industries/codex-acp\n // Verified 2026-05-19. Zed-maintained ACP wrapper around the\n // OpenAI Codex CLI — NOT ``@openai/codex acp`` (no ``acp``\n // subcommand on that package).\n default_command: [\"npx\", \"-y\", \"@zed-industries/codex-acp\"],\n available_models: CODEX_MODELS,\n default_model: \"gpt-5.5/medium\",\n description_key: I18nKey.ONBOARDING$AGENT_CODEX_DESCRIPTION,\n icon: \"codex\",\n },\n {\n key: \"gemini-cli\",\n display_name: \"Gemini CLI\",\n // https://www.npmjs.com/package/@google/gemini-cli\n // Verified 2026-05-19. Official Google CLI; ``--acp`` switches it\n // into ACP server mode on stdio.\n default_command: [\"npx\", \"-y\", \"@google/gemini-cli\", \"--acp\"],\n available_models: GEMINI_MODELS,\n default_model: \"gemini-2.5-pro\",\n description_key: I18nKey.ONBOARDING$AGENT_GEMINI_CLI_DESCRIPTION,\n icon: \"gemini\",\n },\n];\n\nexport const ACP_CUSTOM_PRESET_KEY = \"custom\";\n\n/**\n * Look up a built-in ACP provider config by its registry key.\n *\n * Returns ``undefined`` for an empty / null key, for the ``\"custom\"`` preset\n * (which has no registry entry), and for any forward-compatible key Canvas's\n * registry doesn't know about yet. Centralizes the ``ACP_PROVIDERS.find(...)``\n * lookup shared by the resolvers below and by the adapter / settings surfaces\n * so the key-comparison shape lives in one place.\n */\nexport function getAcpProvider(\n key: string | null | undefined,\n): ACPProviderConfig | undefined {\n if (!key) return undefined;\n return ACP_PROVIDERS.find((provider) => provider.key === key);\n}\n\n/**\n * Resolve an ACP provider registry key (the value stored under\n * ``tags.acpserver`` on a conversation) to a human display name for the\n * sidebar chip.\n *\n * Returns ``null`` for an empty / null key and for keys not in\n * {@link ACP_PROVIDERS} — most notably ``\"custom\"`` (the user-supplied\n * command preset has no canonical brand name) and any forward-compatible\n * value Canvas's registry doesn't know about yet. Callers should fall\n * back to a generic ``\"ACP\"`` label in that case so the chip still\n * communicates \"this is an ACP conversation\".\n *\n * Kept separate from {@link buildAcpAgentSettingsDiff}'s lookup so the\n * conversation-card render path can resolve display names without\n * importing the settings-payload builder.\n */\nexport function getAcpProviderDisplayName(\n key: string | null | undefined,\n): string | null {\n const found = getAcpProvider(key);\n return found ? found.display_name : null;\n}\n\n/**\n * Resolve an ACP provider registry key to the icon discriminator the\n * conversation chip should render alongside the model text.\n *\n * Falls back to {@link ACP_PROVIDER_FALLBACK_ICON} for ``\"custom\"``,\n * unknown keys, or a missing key — the chip then shows a neutral\n * terminal glyph that still communicates \"this is an ACP conversation\"\n * without claiming a brand identity we don't know.\n */\nexport function resolveAcpProviderIcon(\n key: string | null | undefined,\n): ACPProviderIcon {\n return getAcpProvider(key)?.icon ?? ACP_PROVIDER_FALLBACK_ICON;\n}\n\n/**\n * Resolve a raw ``acp_model`` ID to the human-readable label the provider's\n * picker shows for it (e.g. ``\"claude-opus-4-7\"`` → ``\"Claude Opus 4.7\"``).\n *\n * Falls back to the raw ID when the provider is unknown or the ID isn't one\n * of its registered {@link ACPModelOption}s — so a user's custom override\n * still renders something meaningful rather than nothing. Returns ``null``\n * only when there is no model to show, letting the conversation chip decide\n * to display the provider name instead.\n */\nexport function labelForAcpModel(\n serverKey: string | null | undefined,\n modelId: string | null | undefined,\n): string | null {\n if (!modelId) return null;\n const provider = getAcpProvider(serverKey);\n const match = provider?.available_models?.find((m) => m.id === modelId);\n return match?.label ?? modelId;\n}\n\n/**\n * Build the ``agent_settings_diff`` payload PATCH /api/settings expects\n * for the agent-kind/provider choice the user just made.\n *\n * Used by both the Settings → Agent page and the onboarding \"choose\n * agent\" step — keeping the shape in one helper means a future change\n * (e.g. always seeding ``acp_command`` from the registry instead of\n * sending ``[]``, or adding new ``acp_*`` reset fields) lands in both\n * surfaces atomically.\n *\n * Returns ``null`` for an unknown ACP provider key by default — the\n * caller can skip the save (the UI shouldn't surface unknown options,\n * but the defensive path keeps a buggy preset list from corrupting\n * settings).\n *\n * Pass ``allowUnknownServer: true`` to opt into pass-through for keys\n * that aren't in {@link ACP_PROVIDERS} or ``ACP_CUSTOM_PRESET_KEY``.\n * The Settings → Agent page uses this when the user opens settings\n * that already carry an ``acp_server`` value canvas's registry\n * doesn't know about (e.g. set out-of-band via the API for a provider\n * we haven't mirrored yet) and saves without changing the command —\n * otherwise the original key would be silently demoted to ``\"custom\"``.\n */\nexport function buildAcpAgentSettingsDiff(\n providerKey: string,\n options: {\n command?: string[];\n model?: string | null;\n allowUnknownServer?: boolean;\n } = {},\n): Record<string, unknown> | null {\n if (providerKey === \"openhands\") {\n // Switching back to OpenHands. The agent-server's ``Settings.update``\n // applies a fresh ``{'agent_kind': ...}`` base whenever the kind\n // flips, so any ``acp_*`` fields would be discarded before\n // validation. Send the kind alone.\n return { agent_kind: \"openhands\" };\n }\n\n const isCustom = providerKey === ACP_CUSTOM_PRESET_KEY;\n const provider = isCustom ? undefined : getAcpProvider(providerKey);\n if (!isCustom && !provider && !options.allowUnknownServer) {\n return null;\n }\n\n const model =\n options.model === undefined\n ? (provider?.default_model ?? null)\n : options.model;\n\n // ``acp_args: []`` resets any API-set ``acp_args`` that would\n // otherwise survive and concatenate to ``acp_command`` at spawn time\n // (the agent-server merges the two before exec). Callers building the\n // payload from a textarea that already shows the merged command\n // (Settings → Agent) round-trip correctly — the merged tokens land in\n // ``acp_command`` here, so no args are lost.\n return {\n agent_kind: \"acp\",\n acp_server: providerKey,\n acp_command: options.command ?? [],\n acp_args: [],\n acp_model: model ?? null,\n };\n}\n"],"mappings":";AAYA,IAAa,IAA2B,IAAI,IAAI,CAC9C,WACA,wBACD,CAAC;AAYF,SAAS,EAAa,GAA+B;AACnD,KAAI,OAAO,KAAU,SAAU,QAAO;CACtC,IAAM,IAAU,EAAM,MAAM;AAI5B,QAHI,CAAC,KACD,EAAyB,IAAI,EAAQ,aAAa,CAAC,IACnD,MAAA,gBAAyC,OACtC;;AAgBT,SAAgB,EAAyB,GAMvB;AAChB,MAAK,IAAM,KAAa;EACtB,EAAO;EACP,EAAO;EACP,EAAO;EACP,EAAO;EACR,EAAE;EACD,IAAM,IAAQ,EAAa,EAAU;AACrC,MAAI,EAAO,QAAO;;AAEpB,QAAO,EAAO,mBAAmB;;AAiJnC,IAAa,IAAqC;CAChD;EACE,KAAK;EACL,cAAc;EAId,iBAAiB;GAAC;GAAO;GAAM;GAAwC;EACvE,kBAAkB;GA7EpB;IAAE,IAAI;IAAmB,OAAO;IAAmB;GACnD;IAAE,IAAI;IAAmB,OAAO;IAAmB;GAInD;IAAE,IAAI;IAAY,OAAO;IAAoB;GAC7C;IAAE,IAAI;IAAmB,OAAO;IAAmB;GACnD;IAAE,IAAI;IAA4B,OAAO;IAAmB;GAC5D;IAAE,IAAI;IAAqB,OAAO;IAAqB;GACvD;IAAE,IAAI;IAAc,OAAO;IAAsB;GACjD;IAAE,IAAI;IAAqB,OAAO;IAAqB;GACvD;IAAE,IAAI;IAAoB,OAAO;IAAoB;GACrD;IAAE,IAAI;IAAY,OAAO;IAAkC;GAiEvC;EAClB,eAAe;EACf,iBAAiB,EAAQ;EACzB,MAAM;EACP;CACD;EACE,KAAK;EACL,cAAc;EAKd,iBAAiB;GAAC;GAAO;GAAM;GAA4B;EAC3D,kBAAkB;GApEpB;IAAE,IAAI;IAAe,OAAO;IAAiB;GAC7C;IAAE,IAAI;IAAkB,OAAO;IAAoB;GACnD;IAAE,IAAI;IAAgB,OAAO;IAAkB;GAC/C;IAAE,IAAI;IAAiB,OAAO;IAAmB;GACjD;IAAE,IAAI;IAAe,OAAO;IAAiB;GAC7C;IAAE,IAAI;IAAkB,OAAO;IAAoB;GACnD;IAAE,IAAI;IAAgB,OAAO;IAAkB;GAC/C;IAAE,IAAI;IAAiB,OAAO;IAAmB;GACjD;IAAE,IAAI;IAAoB,OAAO;IAAsB;GACvD;IAAE,IAAI;IAAuB,OAAO;IAAyB;GAC7D;IAAE,IAAI;IAAqB,OAAO;IAAuB;GACzD;IAAE,IAAI;IAAsB,OAAO;IAAwB;GAC3D;IAAE,IAAI;IAAqB,OAAO;IAAuB;GACzD;IAAE,IAAI;IAAwB,OAAO;IAA0B;GAC/D;IAAE,IAAI;IAAsB,OAAO;IAAwB;GAC3D;IAAE,IAAI;IAAuB,OAAO;IAAyB;GAC7D;IAAE,IAAI;IAAe,OAAO;IAAiB;GAC7C;IAAE,IAAI;IAAkB,OAAO;IAAoB;GACnD;IAAE,IAAI;IAAgB,OAAO;IAAkB;GAC/C;IAAE,IAAI;IAAiB,OAAO;IAAmB;GAiD7B;EAClB,eAAe;EACf,iBAAiB,EAAQ;EACzB,MAAM;EACP;CACD;EACE,KAAK;EACL,cAAc;EAId,iBAAiB;GAAC;GAAO;GAAM;GAAsB;GAAQ;EAC7D,kBAAkB;GAnDpB;IAAE,IAAI;IAAiB,OAAO;IAAmB;GACjD;IAAE,IAAI;IAAmB,OAAO;IAAqB;GACrD;IAAE,IAAI;IAA0B,OAAO;IAA4B;GACnE;IAAE,IAAI;IAA0B,OAAO;IAA4B;GACnE;IACE,IAAI;IACJ,OAAO;IACR;GACD;IAAE,IAAI;IAAkB,OAAO;IAAkB;GACjD;IAAE,IAAI;IAAoB,OAAO;IAAoB;GACrD;IAAE,IAAI;IAAyB,OAAO;IAAyB;GAyC3C;EAClB,eAAe;EACf,iBAAiB,EAAQ;EACzB,MAAM;EACP;CACF;AAaD,SAAgB,EACd,GAC+B;AAC1B,OACL,QAAO,EAAc,MAAM,MAAa,EAAS,QAAQ,EAAI;;AAmB/D,SAAgB,EACd,GACe;CACf,IAAM,IAAQ,EAAe,EAAI;AACjC,QAAO,IAAQ,EAAM,eAAe;;AAYtC,SAAgB,EACd,GACiB;AACjB,QAAO,EAAe,EAAI,EAAE,QAAA;;AAa9B,SAAgB,EACd,GACA,GACe;AAIf,QAHK,IACY,EAAe,EAClB,EAAU,kBAAkB,MAAM,MAAM,EAAE,OAAO,EAAQ,EACzD,SAAS,IAHF"}
1
+ {"version":3,"file":"acp-providers.js","names":[],"sources":["../../src/constants/acp-providers.ts"],"sourcesContent":["import { getAcpProvider as getClientAcpProvider } from \"@openhands/typescript-client\";\nimport { I18nKey } from \"#/i18n/declaration\";\n\nexport type ACPProviderIcon =\n | \"claude-code\"\n | \"codex\"\n | \"gemini\"\n | \"cli-generic\";\n\nexport const ACP_PROVIDER_FALLBACK_ICON: ACPProviderIcon = \"cli-generic\";\n\n// SDK placeholder strings the ACP wrapper returns before the user has\n// chosen a real model — surfacing either would lie about what's running.\nexport const ACP_DEFAULT_PLACEHOLDERS = new Set([\n \"default\",\n \"default (recommended)\",\n]);\n\n// Sentinel ``agent.llm.model`` returned by older SDKs for ACP conversations\n// in lieu of a real model. Suppressed at every consumer that resolves a\n// display string.\nexport const ACP_MANAGED_SENTINEL = \"acp-managed\";\n\n/**\n * Filter for \"real\" ACP model strings — non-empty, not the SDK's \"default\"\n * placeholder, not the legacy ``acp-managed`` sentinel. Returns the trimmed\n * value on success, ``null`` otherwise.\n */\nfunction realAcpModel(value: unknown): string | null {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n if (!trimmed) return null;\n if (ACP_DEFAULT_PLACEHOLDERS.has(trimmed.toLowerCase())) return null;\n if (trimmed === ACP_MANAGED_SENTINEL) return null;\n return trimmed;\n}\n\n/**\n * Single source of truth for resolving the model string to surface for an\n * ACP conversation/settings context. Consumed by the conversation adapter\n * (chip text), the conversation-creation path (concrete ``acp_model``\n * payload), the Settings → Agent form (initial value), and the chat-input\n * model label.\n *\n * Precedence: SDK runtime fields → user-configured ``acp_model`` →\n * legacy ``agent.llm.model`` → provider default (when ``providerDefault``\n * is passed). Pass ``providerDefault`` only on surfaces that should\n * silently substitute the registry default; omit it for the conversation\n * chip, which must distinguish \"no concrete model\" from \"default\".\n */\nexport function resolveEffectiveAcpModel(inputs: {\n runtimeName?: string | null;\n runtimeId?: string | null;\n configured?: string | null;\n sdkLlm?: string | null;\n providerDefault?: string | null;\n}): string | null {\n for (const candidate of [\n inputs.runtimeName,\n inputs.runtimeId,\n inputs.configured,\n inputs.sdkLlm,\n ]) {\n const value = realAcpModel(candidate);\n if (value) return value;\n }\n return inputs.providerDefault ?? null;\n}\n\n/**\n * Shape of a built-in ACP (Agent Client Protocol) provider as Canvas consumes\n * it. The data fields (display name, launch command, model picker + default)\n * are sourced at module load from ``@openhands/typescript-client``'s ACP\n * registry — the generated mirror of the Python source of truth\n * ``openhands.sdk.settings.acp_providers``. This config only adds the\n * Canvas-specific UI fields ({@link ACPProviderConfig.icon} +\n * {@link ACPProviderConfig.description_key}); see {@link ACP_PROVIDER_UI}.\n */\nexport interface ACPProviderConfig {\n /** Stable registry key, also stored on conversations as ``tags.acpserver``. */\n key: string;\n /** Human-readable name shown in dropdowns and conversation chips. */\n display_name: string;\n /**\n * Tokens passed to the agent-server as ``acp_command`` when this preset\n * is picked. Each entry must be a real ACP-protocol stdio server — the\n * SDK validates this against the {@link ACPProviderConfig.key}.\n *\n * NB: ``npx -y @openai/codex acp`` looks plausible but is **not** an\n * ACP server — the codex CLI has no ``acp`` subcommand and exits with\n * ``Error: stdin is not a terminal`` when spawned without a TTY, which\n * silently deadlocks the agent-server's ACP handshake. Use\n * ``@zed-industries/codex-acp`` (the Zed-shipped wrapper) instead.\n */\n default_command: string[];\n /**\n * Suggested ACP model IDs for the provider's picker, sourced from the\n * typescript-client registry. Not authoritative access checks; users can\n * still enter a custom override in Settings -> Agent.\n */\n available_models?: ACPModelOption[];\n /** Model ID preselected for built-in providers so Canvas never saves blank. */\n default_model?: string;\n /**\n * i18n key for the one-line provider description rendered under the\n * onboarding tile. Stored on the registry so adding a new ACP\n * provider only requires editing this file (not the onboarding tile\n * list separately).\n */\n description_key: I18nKey;\n /**\n * Serializable icon key used by UI surfaces that render provider\n * choices. Kept as a string so the SDK mirror check can continue to\n * parse this registry without importing React components.\n */\n icon?: ACPProviderIcon;\n}\n\nexport interface ACPModelOption {\n /** Exact model ID sent as ``acp_model``. */\n id: string;\n /** Human-readable label shown in Settings -> Agent. */\n label: string;\n}\n\n// Canvas-only UI metadata per built-in provider, keyed by the ACP registry\n// key. Everything else — display name, launch command, model picker list and\n// default — comes from the typescript-client registry below. Adding a model\n// or a provider happens upstream in the SDK; Canvas only owns the brand icon\n// and the onboarding-tile description here. A provider with no entry here is\n// intentionally not surfaced in the UI.\nconst ACP_PROVIDER_UI: Record<\n string,\n { icon: ACPProviderIcon; description_key: I18nKey }\n> = {\n \"claude-code\": {\n icon: \"claude-code\",\n description_key: I18nKey.ONBOARDING$AGENT_CLAUDE_CODE_DESCRIPTION,\n },\n codex: {\n icon: \"codex\",\n description_key: I18nKey.ONBOARDING$AGENT_CODEX_DESCRIPTION,\n },\n \"gemini-cli\": {\n icon: \"gemini\",\n description_key: I18nKey.ONBOARDING$AGENT_GEMINI_CLI_DESCRIPTION,\n },\n};\n\n// Built-in ACP providers Canvas surfaces, built by enriching each upstream\n// registry record (``@openhands/typescript-client`` → Python SDK) with the\n// Canvas UI metadata above. Model lists + defaults are no longer hand-kept\n// here (closes agent-canvas#740) — they track the SDK via the pinned client.\nexport const ACP_PROVIDERS: ACPProviderConfig[] = Object.entries(\n ACP_PROVIDER_UI,\n).map(([key, ui]) => {\n const info = getClientAcpProvider(key);\n return {\n key,\n display_name: info?.display_name ?? key,\n default_command: info ? [...info.default_command] : [],\n available_models: info?.available_models?.map((model) => ({\n id: model.id,\n label: model.label,\n })),\n default_model: info?.default_model ?? undefined,\n description_key: ui.description_key,\n icon: ui.icon,\n };\n});\n\nexport const ACP_CUSTOM_PRESET_KEY = \"custom\";\n\n/**\n * Look up a built-in ACP provider config by its registry key.\n *\n * Returns ``undefined`` for an empty / null key, for the ``\"custom\"`` preset\n * (which has no registry entry), and for any forward-compatible key Canvas's\n * registry doesn't know about yet. Centralizes the ``ACP_PROVIDERS.find(...)``\n * lookup shared by the resolvers below and by the adapter / settings surfaces\n * so the key-comparison shape lives in one place.\n */\nexport function getAcpProvider(\n key: string | null | undefined,\n): ACPProviderConfig | undefined {\n if (!key) return undefined;\n return ACP_PROVIDERS.find((provider) => provider.key === key);\n}\n\n/**\n * Resolve an ACP provider registry key (the value stored under\n * ``tags.acpserver`` on a conversation) to a human display name for the\n * sidebar chip.\n *\n * Returns ``null`` for an empty / null key and for keys not in\n * {@link ACP_PROVIDERS} — most notably ``\"custom\"`` (the user-supplied\n * command preset has no canonical brand name) and any forward-compatible\n * value Canvas's registry doesn't know about yet. Callers should fall\n * back to a generic ``\"ACP\"`` label in that case so the chip still\n * communicates \"this is an ACP conversation\".\n *\n * Kept separate from {@link buildAcpAgentSettingsDiff}'s lookup so the\n * conversation-card render path can resolve display names without\n * importing the settings-payload builder.\n */\nexport function getAcpProviderDisplayName(\n key: string | null | undefined,\n): string | null {\n const found = getAcpProvider(key);\n return found ? found.display_name : null;\n}\n\n/**\n * Resolve an ACP provider registry key to the icon discriminator the\n * conversation chip should render alongside the model text.\n *\n * Falls back to {@link ACP_PROVIDER_FALLBACK_ICON} for ``\"custom\"``,\n * unknown keys, or a missing key — the chip then shows a neutral\n * terminal glyph that still communicates \"this is an ACP conversation\"\n * without claiming a brand identity we don't know.\n */\nexport function resolveAcpProviderIcon(\n key: string | null | undefined,\n): ACPProviderIcon {\n return getAcpProvider(key)?.icon ?? ACP_PROVIDER_FALLBACK_ICON;\n}\n\n/**\n * Resolve a raw ``acp_model`` ID to the human-readable label the provider's\n * picker shows for it (e.g. ``\"claude-opus-4-7\"`` → ``\"Claude Opus 4.7\"``).\n *\n * Falls back to the raw ID when the provider is unknown or the ID isn't one\n * of its registered {@link ACPModelOption}s — so a user's custom override\n * still renders something meaningful rather than nothing. Returns ``null``\n * only when there is no model to show, letting the conversation chip decide\n * to display the provider name instead.\n */\nexport function labelForAcpModel(\n serverKey: string | null | undefined,\n modelId: string | null | undefined,\n): string | null {\n if (!modelId) return null;\n const provider = getAcpProvider(serverKey);\n const match = provider?.available_models?.find((m) => m.id === modelId);\n return match?.label ?? modelId;\n}\n\n/**\n * Build the ``agent_settings_diff`` payload PATCH /api/settings expects\n * for the agent-kind/provider choice the user just made.\n *\n * Used by both the Settings → Agent page and the onboarding \"choose\n * agent\" step — keeping the shape in one helper means a future change\n * (e.g. always seeding ``acp_command`` from the registry instead of\n * sending ``[]``, or adding new ``acp_*`` reset fields) lands in both\n * surfaces atomically.\n *\n * Returns ``null`` for an unknown ACP provider key by default — the\n * caller can skip the save (the UI shouldn't surface unknown options,\n * but the defensive path keeps a buggy preset list from corrupting\n * settings).\n *\n * Pass ``allowUnknownServer: true`` to opt into pass-through for keys\n * that aren't in {@link ACP_PROVIDERS} or ``ACP_CUSTOM_PRESET_KEY``.\n * The Settings → Agent page uses this when the user opens settings\n * that already carry an ``acp_server`` value canvas's registry\n * doesn't know about (e.g. set out-of-band via the API for a provider\n * we haven't mirrored yet) and saves without changing the command —\n * otherwise the original key would be silently demoted to ``\"custom\"``.\n */\nexport function buildAcpAgentSettingsDiff(\n providerKey: string,\n options: {\n command?: string[];\n model?: string | null;\n allowUnknownServer?: boolean;\n } = {},\n): Record<string, unknown> | null {\n if (providerKey === \"openhands\") {\n // Switching back to OpenHands. The agent-server's ``Settings.update``\n // applies a fresh ``{'agent_kind': ...}`` base whenever the kind\n // flips, so any ``acp_*`` fields would be discarded before\n // validation. Send the kind alone.\n return { agent_kind: \"openhands\" };\n }\n\n const isCustom = providerKey === ACP_CUSTOM_PRESET_KEY;\n const provider = isCustom ? undefined : getAcpProvider(providerKey);\n if (!isCustom && !provider && !options.allowUnknownServer) {\n return null;\n }\n\n const model =\n options.model === undefined\n ? (provider?.default_model ?? null)\n : options.model;\n\n // ``acp_args: []`` resets any API-set ``acp_args`` that would\n // otherwise survive and concatenate to ``acp_command`` at spawn time\n // (the agent-server merges the two before exec). Callers building the\n // payload from a textarea that already shows the merged command\n // (Settings → Agent) round-trip correctly — the merged tokens land in\n // ``acp_command`` here, so no args are lost.\n return {\n agent_kind: \"acp\",\n acp_server: providerKey,\n acp_command: options.command ?? [],\n acp_args: [],\n acp_model: model ?? null,\n };\n}\n"],"mappings":";;;AAaA,IAAa,IAA2B,IAAI,IAAI,CAC9C,WACA,wBACD,CAAC;AAYF,SAAS,EAAa,GAA+B;AACnD,KAAI,OAAO,KAAU,SAAU,QAAO;CACtC,IAAM,IAAU,EAAM,MAAM;AAI5B,QAHI,CAAC,KACD,EAAyB,IAAI,EAAQ,aAAa,CAAC,IACnD,MAAA,gBAAyC,OACtC;;AAgBT,SAAgB,EAAyB,GAMvB;AAChB,MAAK,IAAM,KAAa;EACtB,EAAO;EACP,EAAO;EACP,EAAO;EACP,EAAO;EACR,EAAE;EACD,IAAM,IAAQ,EAAa,EAAU;AACrC,MAAI,EAAO,QAAO;;AAEpB,QAAO,EAAO,mBAAmB;;AAiEnC,IAAM,IAGF;CACF,eAAe;EACb,MAAM;EACN,iBAAiB,EAAQ;EAC1B;CACD,OAAO;EACL,MAAM;EACN,iBAAiB,EAAQ;EAC1B;CACD,cAAc;EACZ,MAAM;EACN,iBAAiB,EAAQ;EAC1B;CACF,EAMY,IAAqC,OAAO,QACvD,EACD,CAAC,KAAK,CAAC,GAAK,OAAQ;CACnB,IAAM,IAAO,EAAqB,EAAI;AACtC,QAAO;EACL;EACA,cAAc,GAAM,gBAAgB;EACpC,iBAAiB,IAAO,CAAC,GAAG,EAAK,gBAAgB,GAAG,EAAE;EACtD,kBAAkB,GAAM,kBAAkB,KAAK,OAAW;GACxD,IAAI,EAAM;GACV,OAAO,EAAM;GACd,EAAE;EACH,eAAe,GAAM,iBAAiB,KAAA;EACtC,iBAAiB,EAAG;EACpB,MAAM,EAAG;EACV;EACD;AAaF,SAAgB,EACd,GAC+B;AAC1B,OACL,QAAO,EAAc,MAAM,MAAa,EAAS,QAAQ,EAAI;;AAmB/D,SAAgB,EACd,GACe;CACf,IAAM,IAAQ,EAAe,EAAI;AACjC,QAAO,IAAQ,EAAM,eAAe;;AAYtC,SAAgB,EACd,GACiB;AACjB,QAAO,EAAe,EAAI,EAAE,QAAA;;AAa9B,SAAgB,EACd,GACA,GACe;AAIf,QAHK,IACY,EAAe,EAClB,EAAU,kBAAkB,MAAM,MAAM,EAAE,OAAO,EAAQ,EACzD,SAAS,IAHF"}
@@ -1,2 +1,2 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../contexts/active-backend-context.cjs`),t=require(`../../node_modules/@tanstack/react-query/build/modern/useInfiniteQuery.cjs`),n=require(`../../api/conversation-service/agent-server-conversation-service.api.cjs`),r=require(`./use-is-authed.cjs`);var i=(i=20)=>{let{data:a}=r.useIsAuthed(),o=e.useActiveBackend();return t.useInfiniteQuery({queryKey:[`user`,`conversations`,`paginated`,i,o.backend.id,o.orgId],queryFn:async({pageParam:e})=>await n.default.searchConversations(i,e),enabled:!!a,getNextPageParam:e=>e.next_page_id,initialPageParam:void 0,refetchInterval:1e4})};exports.usePaginatedConversations=i;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../contexts/active-backend-context.cjs`),t=require(`../../node_modules/@tanstack/react-query/build/modern/useInfiniteQuery.cjs`),n=require(`../../api/conversation-service/agent-server-conversation-service.api.cjs`),r=require(`./use-is-authed.cjs`);var i=(i=20)=>{let{data:a}=r.useIsAuthed(),o=e.useActiveBackend();return t.useInfiniteQuery({queryKey:[`user`,`conversations`,`paginated`,i,o.backend.id,o.orgId],queryFn:async({pageParam:e})=>await n.default.searchConversations(i,e),enabled:!!a,getNextPageParam:e=>e.next_page_id,initialPageParam:void 0,refetchInterval:1e4,meta:{backendId:o.backend.id}})};exports.usePaginatedConversations=i;
2
2
  //# sourceMappingURL=use-paginated-conversations.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-paginated-conversations.cjs","names":[],"sources":["../../../src/hooks/query/use-paginated-conversations.ts"],"sourcesContent":["import { useInfiniteQuery } from \"@tanstack/react-query\";\nimport AgentServerConversationService from \"#/api/conversation-service/agent-server-conversation-service.api\";\nimport { useIsAuthed } from \"./use-is-authed\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { AppConversationPage } from \"#/api/conversation-service/agent-server-conversation-service.types\";\n\nexport const usePaginatedConversations = (limit: number = 20) => {\n const { data: userIsAuthenticated } = useIsAuthed();\n const active = useActiveBackend();\n\n return useInfiniteQuery({\n // Include the active backend identity so each (backend, org) pair\n // maintains its own paginated cache. Switching backends naturally\n // produces a new query and a fresh fetch — without it the previous\n // backend's conversations stay visible for staleTime.\n queryKey: [\n \"user\",\n \"conversations\",\n \"paginated\",\n limit,\n active.backend.id,\n active.orgId,\n ],\n queryFn: async ({ pageParam }) => {\n const result = await AgentServerConversationService.searchConversations(\n limit,\n pageParam,\n );\n\n return result;\n },\n enabled: !!userIsAuthenticated,\n getNextPageParam: (lastPage: AppConversationPage) => lastPage.next_page_id,\n initialPageParam: undefined as string | undefined,\n // Poll every 10s so titles, execution status, and timestamps stay fresh\n // without requiring the user to refresh. Consumers must gate initial-load\n // UI (e.g. skeletons) on `isLoading`, not `isFetching` — `isFetching`\n // flips back to true on every background refetch, which would cause the\n // skeleton to flicker every 10s when the list is empty.\n refetchInterval: 10_000,\n });\n};\n"],"mappings":"4TAMA,IAAa,GAA6B,EAAgB,KAAO,CAC/D,GAAM,CAAE,KAAM,GAAwB,EAAA,aAAa,CAC7C,EAAS,EAAA,kBAAkB,CAEjC,OAAO,EAAA,iBAAiB,CAKtB,SAAU,CACR,OACA,gBACA,YACA,EACA,EAAO,QAAQ,GACf,EAAO,MACR,CACD,QAAS,MAAO,CAAE,eAMT,MALc,EAAA,QAA+B,oBAClD,EACA,EACD,CAIH,QAAS,CAAC,CAAC,EACX,iBAAmB,GAAkC,EAAS,aAC9D,iBAAkB,IAAA,GAMlB,gBAAiB,IAClB,CAAC"}
1
+ {"version":3,"file":"use-paginated-conversations.cjs","names":[],"sources":["../../../src/hooks/query/use-paginated-conversations.ts"],"sourcesContent":["import { useInfiniteQuery } from \"@tanstack/react-query\";\nimport AgentServerConversationService from \"#/api/conversation-service/agent-server-conversation-service.api\";\nimport { useIsAuthed } from \"./use-is-authed\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { AppConversationPage } from \"#/api/conversation-service/agent-server-conversation-service.types\";\n\nexport const usePaginatedConversations = (limit: number = 20) => {\n const { data: userIsAuthenticated } = useIsAuthed();\n const active = useActiveBackend();\n\n return useInfiniteQuery({\n // Include the active backend identity so each (backend, org) pair\n // maintains its own paginated cache. Switching backends naturally\n // produces a new query and a fresh fetch — without it the previous\n // backend's conversations stay visible for staleTime.\n queryKey: [\n \"user\",\n \"conversations\",\n \"paginated\",\n limit,\n active.backend.id,\n active.orgId,\n ],\n queryFn: async ({ pageParam }) => {\n const result = await AgentServerConversationService.searchConversations(\n limit,\n pageParam,\n );\n\n return result;\n },\n enabled: !!userIsAuthenticated,\n getNextPageParam: (lastPage: AppConversationPage) => lastPage.next_page_id,\n initialPageParam: undefined as string | undefined,\n // Poll every 10s so titles, execution status, and timestamps stay fresh\n // without requiring the user to refresh. Consumers must gate initial-load\n // UI (e.g. skeletons) on `isLoading`, not `isFetching` — `isFetching`\n // flips back to true on every background refetch, which would cause the\n // skeleton to flicker every 10s when the list is empty.\n refetchInterval: 10_000,\n // A successful fetch proves the backend is reachable. The global\n // QueryCache onSuccess handler reads this to clear any persisted\n // failure state, re-arming the status dot without user intervention.\n meta: { backendId: active.backend.id },\n });\n};\n"],"mappings":"4TAMA,IAAa,GAA6B,EAAgB,KAAO,CAC/D,GAAM,CAAE,KAAM,GAAwB,EAAA,aAAa,CAC7C,EAAS,EAAA,kBAAkB,CAEjC,OAAO,EAAA,iBAAiB,CAKtB,SAAU,CACR,OACA,gBACA,YACA,EACA,EAAO,QAAQ,GACf,EAAO,MACR,CACD,QAAS,MAAO,CAAE,eAMT,MALc,EAAA,QAA+B,oBAClD,EACA,EACD,CAIH,QAAS,CAAC,CAAC,EACX,iBAAmB,GAAkC,EAAS,aAC9D,iBAAkB,IAAA,GAMlB,gBAAiB,IAIjB,KAAM,CAAE,UAAW,EAAO,QAAQ,GAAI,CACvC,CAAC"}
@@ -18,7 +18,8 @@ var i = (i = 20) => {
18
18
  enabled: !!a,
19
19
  getNextPageParam: (e) => e.next_page_id,
20
20
  initialPageParam: void 0,
21
- refetchInterval: 1e4
21
+ refetchInterval: 1e4,
22
+ meta: { backendId: o.backend.id }
22
23
  });
23
24
  };
24
25
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"use-paginated-conversations.js","names":[],"sources":["../../../src/hooks/query/use-paginated-conversations.ts"],"sourcesContent":["import { useInfiniteQuery } from \"@tanstack/react-query\";\nimport AgentServerConversationService from \"#/api/conversation-service/agent-server-conversation-service.api\";\nimport { useIsAuthed } from \"./use-is-authed\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { AppConversationPage } from \"#/api/conversation-service/agent-server-conversation-service.types\";\n\nexport const usePaginatedConversations = (limit: number = 20) => {\n const { data: userIsAuthenticated } = useIsAuthed();\n const active = useActiveBackend();\n\n return useInfiniteQuery({\n // Include the active backend identity so each (backend, org) pair\n // maintains its own paginated cache. Switching backends naturally\n // produces a new query and a fresh fetch — without it the previous\n // backend's conversations stay visible for staleTime.\n queryKey: [\n \"user\",\n \"conversations\",\n \"paginated\",\n limit,\n active.backend.id,\n active.orgId,\n ],\n queryFn: async ({ pageParam }) => {\n const result = await AgentServerConversationService.searchConversations(\n limit,\n pageParam,\n );\n\n return result;\n },\n enabled: !!userIsAuthenticated,\n getNextPageParam: (lastPage: AppConversationPage) => lastPage.next_page_id,\n initialPageParam: undefined as string | undefined,\n // Poll every 10s so titles, execution status, and timestamps stay fresh\n // without requiring the user to refresh. Consumers must gate initial-load\n // UI (e.g. skeletons) on `isLoading`, not `isFetching` — `isFetching`\n // flips back to true on every background refetch, which would cause the\n // skeleton to flicker every 10s when the list is empty.\n refetchInterval: 10_000,\n });\n};\n"],"mappings":";;;;;AAMA,IAAa,KAA6B,IAAgB,OAAO;CAC/D,IAAM,EAAE,MAAM,MAAwB,GAAa,EAC7C,IAAS,GAAkB;AAEjC,QAAO,EAAiB;EAKtB,UAAU;GACR;GACA;GACA;GACA;GACA,EAAO,QAAQ;GACf,EAAO;GACR;EACD,SAAS,OAAO,EAAE,mBAMT,MALc,EAA+B,oBAClD,GACA,EACD;EAIH,SAAS,CAAC,CAAC;EACX,mBAAmB,MAAkC,EAAS;EAC9D,kBAAkB,KAAA;EAMlB,iBAAiB;EAClB,CAAC"}
1
+ {"version":3,"file":"use-paginated-conversations.js","names":[],"sources":["../../../src/hooks/query/use-paginated-conversations.ts"],"sourcesContent":["import { useInfiniteQuery } from \"@tanstack/react-query\";\nimport AgentServerConversationService from \"#/api/conversation-service/agent-server-conversation-service.api\";\nimport { useIsAuthed } from \"./use-is-authed\";\nimport { useActiveBackend } from \"#/contexts/active-backend-context\";\nimport { AppConversationPage } from \"#/api/conversation-service/agent-server-conversation-service.types\";\n\nexport const usePaginatedConversations = (limit: number = 20) => {\n const { data: userIsAuthenticated } = useIsAuthed();\n const active = useActiveBackend();\n\n return useInfiniteQuery({\n // Include the active backend identity so each (backend, org) pair\n // maintains its own paginated cache. Switching backends naturally\n // produces a new query and a fresh fetch — without it the previous\n // backend's conversations stay visible for staleTime.\n queryKey: [\n \"user\",\n \"conversations\",\n \"paginated\",\n limit,\n active.backend.id,\n active.orgId,\n ],\n queryFn: async ({ pageParam }) => {\n const result = await AgentServerConversationService.searchConversations(\n limit,\n pageParam,\n );\n\n return result;\n },\n enabled: !!userIsAuthenticated,\n getNextPageParam: (lastPage: AppConversationPage) => lastPage.next_page_id,\n initialPageParam: undefined as string | undefined,\n // Poll every 10s so titles, execution status, and timestamps stay fresh\n // without requiring the user to refresh. Consumers must gate initial-load\n // UI (e.g. skeletons) on `isLoading`, not `isFetching` — `isFetching`\n // flips back to true on every background refetch, which would cause the\n // skeleton to flicker every 10s when the list is empty.\n refetchInterval: 10_000,\n // A successful fetch proves the backend is reachable. The global\n // QueryCache onSuccess handler reads this to clear any persisted\n // failure state, re-arming the status dot without user intervention.\n meta: { backendId: active.backend.id },\n });\n};\n"],"mappings":";;;;;AAMA,IAAa,KAA6B,IAAgB,OAAO;CAC/D,IAAM,EAAE,MAAM,MAAwB,GAAa,EAC7C,IAAS,GAAkB;AAEjC,QAAO,EAAiB;EAKtB,UAAU;GACR;GACA;GACA;GACA;GACA,EAAO,QAAQ;GACf,EAAO;GACR;EACD,SAAS,OAAO,EAAE,mBAMT,MALc,EAA+B,oBAClD,GACA,EACD;EAIH,SAAS,CAAC,CAAC;EACX,mBAAmB,MAAkC,EAAS;EAC9D,kBAAkB,KAAA;EAMlB,iBAAiB;EAIjB,MAAM,EAAE,WAAW,EAAO,QAAQ,IAAI;EACvC,CAAC"}
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`),require(`./client/http-client.cjs`),require(`./client/agent-server-compatibility.cjs`),require(`./client/workspaces-client.cjs`),require(`./events/remote-events-list.cjs`),require(`./events/websocket-client.cjs`),require(`./conversation/remote-state.cjs`),require(`./workspace/remote-workspace.cjs`),require(`./conversation/remote-conversation.cjs`),require(`./prompts/system-prompt.cjs`),require(`./conversation/local-conversation.cjs`),require(`./conversation/conversation.cjs`),require(`./conversation/conversation-manager.cjs`),require(`./hooks/types.cjs`),require(`./hooks/index.cjs`),require(`./events/bash-websocket-client.cjs`),require(`./types/base.cjs`),require(`./models/conversation.cjs`);
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`),require(`./client/http-client.cjs`),require(`./client/agent-server-compatibility.cjs`),require(`./client/workspaces-client.cjs`),require(`./events/remote-events-list.cjs`),require(`./events/websocket-client.cjs`),require(`./conversation/remote-state.cjs`),require(`./workspace/remote-workspace.cjs`),require(`./conversation/remote-conversation.cjs`),require(`./prompts/system-prompt.cjs`),require(`./conversation/local-conversation.cjs`),require(`./conversation/conversation.cjs`),require(`./conversation/conversation-manager.cjs`),require(`./hooks/types.cjs`),require(`./hooks/index.cjs`),require(`./events/bash-websocket-client.cjs`),require(`./types/base.cjs`),require(`./models/conversation.cjs`),require(`./models/acp.cjs`);
@@ -15,3 +15,4 @@ import "./hooks/index.js";
15
15
  import "./events/bash-websocket-client.js";
16
16
  import "./types/base.js";
17
17
  import "./models/conversation.js";
18
+ import "./models/acp.js";
@@ -0,0 +1,2 @@
1
+ require(`../../../../../_virtual/_rolldown/runtime.cjs`);var e={"claude-code":{key:`claude-code`,display_name:`Claude Code`,default_command:[`npx`,`-y`,`@agentclientprotocol/claude-agent-acp`],api_key_env_var:`ANTHROPIC_API_KEY`,base_url_env_var:`ANTHROPIC_BASE_URL`,default_session_mode:`bypassPermissions`,agent_name_patterns:[`claude-agent`],supports_set_session_model:!1,session_meta_key:`claudeCode`,available_models:[{id:`claude-opus-4-7`,label:`Claude Opus 4.7`},{id:`claude-opus-4-6`,label:`Claude Opus 4.6`},{id:`opus[1m]`,label:`Claude Opus (1M)`},{id:`claude-opus-4-5`,label:`Claude Opus 4.5`},{id:`claude-opus-4-1-20250805`,label:`Claude Opus 4.1`},{id:`claude-sonnet-4-6`,label:`Claude Sonnet 4.6`},{id:`sonnet[1m]`,label:`Claude Sonnet (1M)`},{id:`claude-sonnet-4-5`,label:`Claude Sonnet 4.5`},{id:`claude-haiku-4-5`,label:`Claude Haiku 4.5`},{id:`opusplan`,label:`Opus (plan) + Sonnet (execute)`}],default_model:`claude-opus-4-7`},codex:{key:`codex`,display_name:`Codex`,default_command:[`npx`,`-y`,`@zed-industries/codex-acp`],api_key_env_var:`OPENAI_API_KEY`,base_url_env_var:`OPENAI_BASE_URL`,default_session_mode:`full-access`,agent_name_patterns:[`codex-acp`],supports_set_session_model:!0,session_meta_key:null,available_models:[{id:`gpt-5.5/low`,label:`GPT-5.5 (low)`},{id:`gpt-5.5/medium`,label:`GPT-5.5 (medium)`},{id:`gpt-5.5/high`,label:`GPT-5.5 (high)`},{id:`gpt-5.5/xhigh`,label:`GPT-5.5 (xhigh)`},{id:`gpt-5.4/low`,label:`GPT-5.4 (low)`},{id:`gpt-5.4/medium`,label:`GPT-5.4 (medium)`},{id:`gpt-5.4/high`,label:`GPT-5.4 (high)`},{id:`gpt-5.4/xhigh`,label:`GPT-5.4 (xhigh)`},{id:`gpt-5.4-mini/low`,label:`GPT-5.4 Mini (low)`},{id:`gpt-5.4-mini/medium`,label:`GPT-5.4 Mini (medium)`},{id:`gpt-5.4-mini/high`,label:`GPT-5.4 Mini (high)`},{id:`gpt-5.4-mini/xhigh`,label:`GPT-5.4 Mini (xhigh)`},{id:`gpt-5.3-codex/low`,label:`GPT-5.3 Codex (low)`},{id:`gpt-5.3-codex/medium`,label:`GPT-5.3 Codex (medium)`},{id:`gpt-5.3-codex/high`,label:`GPT-5.3 Codex (high)`},{id:`gpt-5.3-codex/xhigh`,label:`GPT-5.3 Codex (xhigh)`},{id:`gpt-5.2/low`,label:`GPT-5.2 (low)`},{id:`gpt-5.2/medium`,label:`GPT-5.2 (medium)`},{id:`gpt-5.2/high`,label:`GPT-5.2 (high)`},{id:`gpt-5.2/xhigh`,label:`GPT-5.2 (xhigh)`}],default_model:`gpt-5.5/medium`},"gemini-cli":{key:`gemini-cli`,display_name:`Gemini CLI`,default_command:[`npx`,`-y`,`@google/gemini-cli`,`--acp`],api_key_env_var:`GEMINI_API_KEY`,base_url_env_var:`GEMINI_BASE_URL`,default_session_mode:`yolo`,agent_name_patterns:[`gemini-cli`],supports_set_session_model:!0,session_meta_key:null,available_models:[{id:`auto-gemini-3`,label:`Auto (Gemini 3)`},{id:`auto-gemini-2.5`,label:`Auto (Gemini 2.5)`},{id:`gemini-3.1-pro-preview`,label:`Gemini 3.1 Pro (preview)`},{id:`gemini-3-flash-preview`,label:`Gemini 3 Flash (preview)`},{id:`gemini-3.1-flash-lite-preview`,label:`Gemini 3.1 Flash Lite (preview)`},{id:`gemini-2.5-pro`,label:`Gemini 2.5 Pro`},{id:`gemini-2.5-flash`,label:`Gemini 2.5 Flash`},{id:`gemini-2.5-flash-lite`,label:`Gemini 2.5 Flash Lite`}],default_model:`auto-gemini-2.5`}};exports.default=e;
2
+ //# sourceMappingURL=acp-providers.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp-providers.cjs","names":[],"sources":["../../../../../../node_modules/@openhands/typescript-client/dist/models/acp-providers.json"],"sourcesContent":["{\n \"claude-code\": {\n \"key\": \"claude-code\",\n \"display_name\": \"Claude Code\",\n \"default_command\": [\"npx\", \"-y\", \"@agentclientprotocol/claude-agent-acp\"],\n \"api_key_env_var\": \"ANTHROPIC_API_KEY\",\n \"base_url_env_var\": \"ANTHROPIC_BASE_URL\",\n \"default_session_mode\": \"bypassPermissions\",\n \"agent_name_patterns\": [\"claude-agent\"],\n \"supports_set_session_model\": false,\n \"session_meta_key\": \"claudeCode\",\n \"available_models\": [\n { \"id\": \"claude-opus-4-7\", \"label\": \"Claude Opus 4.7\" },\n { \"id\": \"claude-opus-4-6\", \"label\": \"Claude Opus 4.6\" },\n { \"id\": \"opus[1m]\", \"label\": \"Claude Opus (1M)\" },\n { \"id\": \"claude-opus-4-5\", \"label\": \"Claude Opus 4.5\" },\n { \"id\": \"claude-opus-4-1-20250805\", \"label\": \"Claude Opus 4.1\" },\n { \"id\": \"claude-sonnet-4-6\", \"label\": \"Claude Sonnet 4.6\" },\n { \"id\": \"sonnet[1m]\", \"label\": \"Claude Sonnet (1M)\" },\n { \"id\": \"claude-sonnet-4-5\", \"label\": \"Claude Sonnet 4.5\" },\n { \"id\": \"claude-haiku-4-5\", \"label\": \"Claude Haiku 4.5\" },\n { \"id\": \"opusplan\", \"label\": \"Opus (plan) + Sonnet (execute)\" }\n ],\n \"default_model\": \"claude-opus-4-7\"\n },\n \"codex\": {\n \"key\": \"codex\",\n \"display_name\": \"Codex\",\n \"default_command\": [\"npx\", \"-y\", \"@zed-industries/codex-acp\"],\n \"api_key_env_var\": \"OPENAI_API_KEY\",\n \"base_url_env_var\": \"OPENAI_BASE_URL\",\n \"default_session_mode\": \"full-access\",\n \"agent_name_patterns\": [\"codex-acp\"],\n \"supports_set_session_model\": true,\n \"session_meta_key\": null,\n \"available_models\": [\n { \"id\": \"gpt-5.5/low\", \"label\": \"GPT-5.5 (low)\" },\n { \"id\": \"gpt-5.5/medium\", \"label\": \"GPT-5.5 (medium)\" },\n { \"id\": \"gpt-5.5/high\", \"label\": \"GPT-5.5 (high)\" },\n { \"id\": \"gpt-5.5/xhigh\", \"label\": \"GPT-5.5 (xhigh)\" },\n { \"id\": \"gpt-5.4/low\", \"label\": \"GPT-5.4 (low)\" },\n { \"id\": \"gpt-5.4/medium\", \"label\": \"GPT-5.4 (medium)\" },\n { \"id\": \"gpt-5.4/high\", \"label\": \"GPT-5.4 (high)\" },\n { \"id\": \"gpt-5.4/xhigh\", \"label\": \"GPT-5.4 (xhigh)\" },\n { \"id\": \"gpt-5.4-mini/low\", \"label\": \"GPT-5.4 Mini (low)\" },\n { \"id\": \"gpt-5.4-mini/medium\", \"label\": \"GPT-5.4 Mini (medium)\" },\n { \"id\": \"gpt-5.4-mini/high\", \"label\": \"GPT-5.4 Mini (high)\" },\n { \"id\": \"gpt-5.4-mini/xhigh\", \"label\": \"GPT-5.4 Mini (xhigh)\" },\n { \"id\": \"gpt-5.3-codex/low\", \"label\": \"GPT-5.3 Codex (low)\" },\n { \"id\": \"gpt-5.3-codex/medium\", \"label\": \"GPT-5.3 Codex (medium)\" },\n { \"id\": \"gpt-5.3-codex/high\", \"label\": \"GPT-5.3 Codex (high)\" },\n { \"id\": \"gpt-5.3-codex/xhigh\", \"label\": \"GPT-5.3 Codex (xhigh)\" },\n { \"id\": \"gpt-5.2/low\", \"label\": \"GPT-5.2 (low)\" },\n { \"id\": \"gpt-5.2/medium\", \"label\": \"GPT-5.2 (medium)\" },\n { \"id\": \"gpt-5.2/high\", \"label\": \"GPT-5.2 (high)\" },\n { \"id\": \"gpt-5.2/xhigh\", \"label\": \"GPT-5.2 (xhigh)\" }\n ],\n \"default_model\": \"gpt-5.5/medium\"\n },\n \"gemini-cli\": {\n \"key\": \"gemini-cli\",\n \"display_name\": \"Gemini CLI\",\n \"default_command\": [\"npx\", \"-y\", \"@google/gemini-cli\", \"--acp\"],\n \"api_key_env_var\": \"GEMINI_API_KEY\",\n \"base_url_env_var\": \"GEMINI_BASE_URL\",\n \"default_session_mode\": \"yolo\",\n \"agent_name_patterns\": [\"gemini-cli\"],\n \"supports_set_session_model\": true,\n \"session_meta_key\": null,\n \"available_models\": [\n { \"id\": \"auto-gemini-3\", \"label\": \"Auto (Gemini 3)\" },\n { \"id\": \"auto-gemini-2.5\", \"label\": \"Auto (Gemini 2.5)\" },\n { \"id\": \"gemini-3.1-pro-preview\", \"label\": \"Gemini 3.1 Pro (preview)\" },\n { \"id\": \"gemini-3-flash-preview\", \"label\": \"Gemini 3 Flash (preview)\" },\n {\n \"id\": \"gemini-3.1-flash-lite-preview\",\n \"label\": \"Gemini 3.1 Flash Lite (preview)\"\n },\n { \"id\": \"gemini-2.5-pro\", \"label\": \"Gemini 2.5 Pro\" },\n { \"id\": \"gemini-2.5-flash\", \"label\": \"Gemini 2.5 Flash\" },\n { \"id\": \"gemini-2.5-flash-lite\", \"label\": \"Gemini 2.5 Flash Lite\" }\n ],\n \"default_model\": \"auto-gemini-2.5\"\n }\n}\n"],"x_google_ignoreList":[0],"mappings":""}
@@ -0,0 +1,213 @@
1
+ var e = {
2
+ "claude-code": {
3
+ key: "claude-code",
4
+ display_name: "Claude Code",
5
+ default_command: [
6
+ "npx",
7
+ "-y",
8
+ "@agentclientprotocol/claude-agent-acp"
9
+ ],
10
+ api_key_env_var: "ANTHROPIC_API_KEY",
11
+ base_url_env_var: "ANTHROPIC_BASE_URL",
12
+ default_session_mode: "bypassPermissions",
13
+ agent_name_patterns: ["claude-agent"],
14
+ supports_set_session_model: !1,
15
+ session_meta_key: "claudeCode",
16
+ available_models: [
17
+ {
18
+ id: "claude-opus-4-7",
19
+ label: "Claude Opus 4.7"
20
+ },
21
+ {
22
+ id: "claude-opus-4-6",
23
+ label: "Claude Opus 4.6"
24
+ },
25
+ {
26
+ id: "opus[1m]",
27
+ label: "Claude Opus (1M)"
28
+ },
29
+ {
30
+ id: "claude-opus-4-5",
31
+ label: "Claude Opus 4.5"
32
+ },
33
+ {
34
+ id: "claude-opus-4-1-20250805",
35
+ label: "Claude Opus 4.1"
36
+ },
37
+ {
38
+ id: "claude-sonnet-4-6",
39
+ label: "Claude Sonnet 4.6"
40
+ },
41
+ {
42
+ id: "sonnet[1m]",
43
+ label: "Claude Sonnet (1M)"
44
+ },
45
+ {
46
+ id: "claude-sonnet-4-5",
47
+ label: "Claude Sonnet 4.5"
48
+ },
49
+ {
50
+ id: "claude-haiku-4-5",
51
+ label: "Claude Haiku 4.5"
52
+ },
53
+ {
54
+ id: "opusplan",
55
+ label: "Opus (plan) + Sonnet (execute)"
56
+ }
57
+ ],
58
+ default_model: "claude-opus-4-7"
59
+ },
60
+ codex: {
61
+ key: "codex",
62
+ display_name: "Codex",
63
+ default_command: [
64
+ "npx",
65
+ "-y",
66
+ "@zed-industries/codex-acp"
67
+ ],
68
+ api_key_env_var: "OPENAI_API_KEY",
69
+ base_url_env_var: "OPENAI_BASE_URL",
70
+ default_session_mode: "full-access",
71
+ agent_name_patterns: ["codex-acp"],
72
+ supports_set_session_model: !0,
73
+ session_meta_key: null,
74
+ available_models: [
75
+ {
76
+ id: "gpt-5.5/low",
77
+ label: "GPT-5.5 (low)"
78
+ },
79
+ {
80
+ id: "gpt-5.5/medium",
81
+ label: "GPT-5.5 (medium)"
82
+ },
83
+ {
84
+ id: "gpt-5.5/high",
85
+ label: "GPT-5.5 (high)"
86
+ },
87
+ {
88
+ id: "gpt-5.5/xhigh",
89
+ label: "GPT-5.5 (xhigh)"
90
+ },
91
+ {
92
+ id: "gpt-5.4/low",
93
+ label: "GPT-5.4 (low)"
94
+ },
95
+ {
96
+ id: "gpt-5.4/medium",
97
+ label: "GPT-5.4 (medium)"
98
+ },
99
+ {
100
+ id: "gpt-5.4/high",
101
+ label: "GPT-5.4 (high)"
102
+ },
103
+ {
104
+ id: "gpt-5.4/xhigh",
105
+ label: "GPT-5.4 (xhigh)"
106
+ },
107
+ {
108
+ id: "gpt-5.4-mini/low",
109
+ label: "GPT-5.4 Mini (low)"
110
+ },
111
+ {
112
+ id: "gpt-5.4-mini/medium",
113
+ label: "GPT-5.4 Mini (medium)"
114
+ },
115
+ {
116
+ id: "gpt-5.4-mini/high",
117
+ label: "GPT-5.4 Mini (high)"
118
+ },
119
+ {
120
+ id: "gpt-5.4-mini/xhigh",
121
+ label: "GPT-5.4 Mini (xhigh)"
122
+ },
123
+ {
124
+ id: "gpt-5.3-codex/low",
125
+ label: "GPT-5.3 Codex (low)"
126
+ },
127
+ {
128
+ id: "gpt-5.3-codex/medium",
129
+ label: "GPT-5.3 Codex (medium)"
130
+ },
131
+ {
132
+ id: "gpt-5.3-codex/high",
133
+ label: "GPT-5.3 Codex (high)"
134
+ },
135
+ {
136
+ id: "gpt-5.3-codex/xhigh",
137
+ label: "GPT-5.3 Codex (xhigh)"
138
+ },
139
+ {
140
+ id: "gpt-5.2/low",
141
+ label: "GPT-5.2 (low)"
142
+ },
143
+ {
144
+ id: "gpt-5.2/medium",
145
+ label: "GPT-5.2 (medium)"
146
+ },
147
+ {
148
+ id: "gpt-5.2/high",
149
+ label: "GPT-5.2 (high)"
150
+ },
151
+ {
152
+ id: "gpt-5.2/xhigh",
153
+ label: "GPT-5.2 (xhigh)"
154
+ }
155
+ ],
156
+ default_model: "gpt-5.5/medium"
157
+ },
158
+ "gemini-cli": {
159
+ key: "gemini-cli",
160
+ display_name: "Gemini CLI",
161
+ default_command: [
162
+ "npx",
163
+ "-y",
164
+ "@google/gemini-cli",
165
+ "--acp"
166
+ ],
167
+ api_key_env_var: "GEMINI_API_KEY",
168
+ base_url_env_var: "GEMINI_BASE_URL",
169
+ default_session_mode: "yolo",
170
+ agent_name_patterns: ["gemini-cli"],
171
+ supports_set_session_model: !0,
172
+ session_meta_key: null,
173
+ available_models: [
174
+ {
175
+ id: "auto-gemini-3",
176
+ label: "Auto (Gemini 3)"
177
+ },
178
+ {
179
+ id: "auto-gemini-2.5",
180
+ label: "Auto (Gemini 2.5)"
181
+ },
182
+ {
183
+ id: "gemini-3.1-pro-preview",
184
+ label: "Gemini 3.1 Pro (preview)"
185
+ },
186
+ {
187
+ id: "gemini-3-flash-preview",
188
+ label: "Gemini 3 Flash (preview)"
189
+ },
190
+ {
191
+ id: "gemini-3.1-flash-lite-preview",
192
+ label: "Gemini 3.1 Flash Lite (preview)"
193
+ },
194
+ {
195
+ id: "gemini-2.5-pro",
196
+ label: "Gemini 2.5 Pro"
197
+ },
198
+ {
199
+ id: "gemini-2.5-flash",
200
+ label: "Gemini 2.5 Flash"
201
+ },
202
+ {
203
+ id: "gemini-2.5-flash-lite",
204
+ label: "Gemini 2.5 Flash Lite"
205
+ }
206
+ ],
207
+ default_model: "auto-gemini-2.5"
208
+ }
209
+ };
210
+ //#endregion
211
+ export { e as default };
212
+
213
+ //# sourceMappingURL=acp-providers.js.map