@vybestack/llxprt-code 0.4.7 → 0.5.0-nightly.251102.f115237d

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 (301) hide show
  1. package/dist/package.json +7 -5
  2. package/dist/src/auth/__tests__/oauthManager.safety.test.d.ts +6 -0
  3. package/dist/src/auth/__tests__/oauthManager.safety.test.js +49 -0
  4. package/dist/src/auth/__tests__/oauthManager.safety.test.js.map +1 -0
  5. package/dist/src/auth/oauth-manager.d.ts +16 -0
  6. package/dist/src/auth/oauth-manager.js +81 -29
  7. package/dist/src/auth/oauth-manager.js.map +1 -1
  8. package/dist/src/auth/oauth-manager.spec.js +7 -2
  9. package/dist/src/auth/oauth-manager.spec.js.map +1 -1
  10. package/dist/src/commands/extensions.js +1 -1
  11. package/dist/src/commands/extensions.js.map +1 -1
  12. package/dist/src/config/__tests__/nonInteractiveTools.test.d.ts +6 -0
  13. package/dist/src/config/__tests__/nonInteractiveTools.test.js +13 -0
  14. package/dist/src/config/__tests__/nonInteractiveTools.test.js.map +1 -0
  15. package/dist/src/config/__tests__/profileBootstrap.test.d.ts +6 -0
  16. package/dist/src/config/__tests__/profileBootstrap.test.js +91 -0
  17. package/dist/src/config/__tests__/profileBootstrap.test.js.map +1 -0
  18. package/dist/src/config/config.d.ts +7 -2
  19. package/dist/src/config/config.js +225 -10
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/config.loadMemory.test.js +1 -0
  22. package/dist/src/config/config.loadMemory.test.js.map +1 -1
  23. package/dist/src/config/profileBootstrap.d.ts +64 -0
  24. package/dist/src/config/profileBootstrap.js +140 -0
  25. package/dist/src/config/profileBootstrap.js.map +1 -0
  26. package/dist/src/config/settings.env.test.d.ts +6 -0
  27. package/dist/src/config/settings.env.test.js +38 -0
  28. package/dist/src/config/settings.env.test.js.map +1 -0
  29. package/dist/src/config/settings.js +2 -2
  30. package/dist/src/config/settings.js.map +1 -1
  31. package/dist/src/gemini.js +70 -25
  32. package/dist/src/gemini.js.map +1 -1
  33. package/dist/src/gemini.test.js +1 -2
  34. package/dist/src/gemini.test.js.map +1 -1
  35. package/dist/src/generated/git-commit.d.ts +1 -1
  36. package/dist/src/generated/git-commit.js +1 -1
  37. package/dist/src/integration-tests/base-url-behavior.integration.test.js +110 -450
  38. package/dist/src/integration-tests/base-url-behavior.integration.test.js.map +1 -1
  39. package/dist/src/integration-tests/model-params-isolation.integration.test.js +101 -539
  40. package/dist/src/integration-tests/model-params-isolation.integration.test.js.map +1 -1
  41. package/dist/src/integration-tests/modelParams.integration.test.js +86 -761
  42. package/dist/src/integration-tests/modelParams.integration.test.js.map +1 -1
  43. package/dist/src/integration-tests/provider-multi-runtime.integration.test.d.ts +6 -0
  44. package/dist/src/integration-tests/provider-multi-runtime.integration.test.js +198 -0
  45. package/dist/src/integration-tests/provider-multi-runtime.integration.test.js.map +1 -0
  46. package/dist/src/integration-tests/provider-switching.integration.test.js +97 -151
  47. package/dist/src/integration-tests/provider-switching.integration.test.js.map +1 -1
  48. package/dist/src/integration-tests/runtime-isolation.test.d.ts +13 -0
  49. package/dist/src/integration-tests/runtime-isolation.test.js +170 -0
  50. package/dist/src/integration-tests/runtime-isolation.test.js.map +1 -0
  51. package/dist/src/integration-tests/test-utils.js +19 -2
  52. package/dist/src/integration-tests/test-utils.js.map +1 -1
  53. package/dist/src/integration-tests/test-utils.test.js +9 -8
  54. package/dist/src/integration-tests/test-utils.test.js.map +1 -1
  55. package/dist/src/integration-tests/todo-continuation.integration.test.js +5 -2
  56. package/dist/src/integration-tests/todo-continuation.integration.test.js.map +1 -1
  57. package/dist/src/integration-tests/tools-governance.integration.test.d.ts +6 -0
  58. package/dist/src/integration-tests/tools-governance.integration.test.js +98 -0
  59. package/dist/src/integration-tests/tools-governance.integration.test.js.map +1 -0
  60. package/dist/src/nonInteractiveCli.js +36 -11
  61. package/dist/src/nonInteractiveCli.js.map +1 -1
  62. package/dist/src/providers/logging/git-stats.test.js +11 -1
  63. package/dist/src/providers/logging/git-stats.test.js.map +1 -1
  64. package/dist/src/providers/logging/multi-provider-logging.integration.test.js +1 -2
  65. package/dist/src/providers/logging/multi-provider-logging.integration.test.js.map +1 -1
  66. package/dist/src/providers/logging/performance.test.js +1 -1
  67. package/dist/src/providers/logging/performance.test.js.map +1 -1
  68. package/dist/src/providers/oauth-provider-registration.d.ts +2 -2
  69. package/dist/src/providers/oauth-provider-registration.js +25 -9
  70. package/dist/src/providers/oauth-provider-registration.js.map +1 -1
  71. package/dist/src/providers/provider-gemini-switching.test.js +67 -89
  72. package/dist/src/providers/provider-gemini-switching.test.js.map +1 -1
  73. package/dist/src/providers/provider-switching.integration.test.js +42 -98
  74. package/dist/src/providers/provider-switching.integration.test.js.map +1 -1
  75. package/dist/src/providers/providerConfigUtils.d.ts +12 -7
  76. package/dist/src/providers/providerConfigUtils.js +31 -99
  77. package/dist/src/providers/providerConfigUtils.js.map +1 -1
  78. package/dist/src/providers/providerManagerInstance.d.ts +17 -1
  79. package/dist/src/providers/providerManagerInstance.js +157 -175
  80. package/dist/src/providers/providerManagerInstance.js.map +1 -1
  81. package/dist/src/providers/providerManagerInstance.oauthRegistration.test.js +19 -15
  82. package/dist/src/providers/providerManagerInstance.oauthRegistration.test.js.map +1 -1
  83. package/dist/src/providers/providerManagerInstance.test.js +2 -5
  84. package/dist/src/providers/providerManagerInstance.test.js.map +1 -1
  85. package/dist/src/runtime/__tests__/profileApplication.test.d.ts +5 -0
  86. package/dist/src/runtime/__tests__/profileApplication.test.js +232 -0
  87. package/dist/src/runtime/__tests__/profileApplication.test.js.map +1 -0
  88. package/dist/src/runtime/__tests__/runtimeIsolation.test.d.ts +5 -0
  89. package/dist/src/runtime/__tests__/runtimeIsolation.test.js +376 -0
  90. package/dist/src/runtime/__tests__/runtimeIsolation.test.js.map +1 -0
  91. package/dist/src/runtime/agentRuntimeAdapter.d.ts +249 -0
  92. package/dist/src/runtime/agentRuntimeAdapter.js +506 -0
  93. package/dist/src/runtime/agentRuntimeAdapter.js.map +1 -0
  94. package/dist/src/runtime/agentRuntimeAdapter.spec.d.ts +6 -0
  95. package/dist/src/runtime/agentRuntimeAdapter.spec.js +866 -0
  96. package/dist/src/runtime/agentRuntimeAdapter.spec.js.map +1 -0
  97. package/dist/src/runtime/messages.d.ts +28 -0
  98. package/dist/src/runtime/messages.js +64 -0
  99. package/dist/src/runtime/messages.js.map +1 -0
  100. package/dist/src/runtime/profileApplication.d.ts +33 -0
  101. package/dist/src/runtime/profileApplication.js +191 -0
  102. package/dist/src/runtime/profileApplication.js.map +1 -0
  103. package/dist/src/runtime/providerConfigUtils.test.d.ts +1 -0
  104. package/dist/src/runtime/providerConfigUtils.test.js +68 -0
  105. package/dist/src/runtime/providerConfigUtils.test.js.map +1 -0
  106. package/dist/src/runtime/runtimeContextFactory.d.ts +102 -0
  107. package/dist/src/runtime/runtimeContextFactory.js +190 -0
  108. package/dist/src/runtime/runtimeContextFactory.js.map +1 -0
  109. package/dist/src/runtime/runtimeSettings.d.ts +217 -0
  110. package/dist/src/runtime/runtimeSettings.js +1094 -0
  111. package/dist/src/runtime/runtimeSettings.js.map +1 -0
  112. package/dist/src/runtime/runtimeSettings.test.d.ts +1 -0
  113. package/dist/src/runtime/runtimeSettings.test.js +320 -0
  114. package/dist/src/runtime/runtimeSettings.test.js.map +1 -0
  115. package/dist/src/services/BuiltinCommandLoader.d.ts +13 -4
  116. package/dist/src/services/BuiltinCommandLoader.js +17 -4
  117. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  118. package/dist/src/services/McpPromptLoader.js +34 -13
  119. package/dist/src/services/McpPromptLoader.js.map +1 -1
  120. package/dist/src/settings/ephemeralSettings.js +3 -2
  121. package/dist/src/settings/ephemeralSettings.js.map +1 -1
  122. package/dist/src/test-utils/mockCommandContext.js +5 -2
  123. package/dist/src/test-utils/mockCommandContext.js.map +1 -1
  124. package/dist/src/ui/App.js +29 -49
  125. package/dist/src/ui/App.js.map +1 -1
  126. package/dist/src/ui/commands/aboutCommand.js +29 -0
  127. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  128. package/dist/src/ui/commands/authCommand.js +15 -12
  129. package/dist/src/ui/commands/authCommand.js.map +1 -1
  130. package/dist/src/ui/commands/baseurlCommand.js +8 -44
  131. package/dist/src/ui/commands/baseurlCommand.js.map +1 -1
  132. package/dist/src/ui/commands/chatCommand.js +28 -12
  133. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  134. package/dist/src/ui/commands/diagnosticsCommand.d.ts +0 -3
  135. package/dist/src/ui/commands/diagnosticsCommand.js +40 -191
  136. package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -1
  137. package/dist/src/ui/commands/docsCommand.js +1 -1
  138. package/dist/src/ui/commands/docsCommand.js.map +1 -1
  139. package/dist/src/ui/commands/keyCommand.js +9 -58
  140. package/dist/src/ui/commands/keyCommand.js.map +1 -1
  141. package/dist/src/ui/commands/keyCommand.test.js +48 -102
  142. package/dist/src/ui/commands/keyCommand.test.js.map +1 -1
  143. package/dist/src/ui/commands/keyfileCommand.js +42 -93
  144. package/dist/src/ui/commands/keyfileCommand.js.map +1 -1
  145. package/dist/src/ui/commands/logoutCommand.js +2 -2
  146. package/dist/src/ui/commands/logoutCommand.js.map +1 -1
  147. package/dist/src/ui/commands/mcpCommand.js +29 -7
  148. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  149. package/dist/src/ui/commands/modelCommand.js +8 -59
  150. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  151. package/dist/src/ui/commands/profileCommand.js +151 -267
  152. package/dist/src/ui/commands/profileCommand.js.map +1 -1
  153. package/dist/src/ui/commands/profileCommand.test.js +88 -344
  154. package/dist/src/ui/commands/profileCommand.test.js.map +1 -1
  155. package/dist/src/ui/commands/providerCommand.js +9 -3
  156. package/dist/src/ui/commands/providerCommand.js.map +1 -1
  157. package/dist/src/ui/commands/restoreCommand.js +38 -18
  158. package/dist/src/ui/commands/restoreCommand.js.map +1 -1
  159. package/dist/src/ui/commands/schema/argumentResolver.test.d.ts +6 -0
  160. package/dist/src/ui/commands/schema/argumentResolver.test.js +619 -0
  161. package/dist/src/ui/commands/schema/argumentResolver.test.js.map +1 -0
  162. package/dist/src/ui/commands/schema/index.d.ts +15 -0
  163. package/dist/src/ui/commands/schema/index.js +320 -0
  164. package/dist/src/ui/commands/schema/index.js.map +1 -0
  165. package/dist/src/ui/commands/schema/types.d.ts +61 -0
  166. package/dist/src/ui/commands/schema/types.js +12 -0
  167. package/dist/src/ui/commands/schema/types.js.map +1 -0
  168. package/dist/src/ui/commands/setCommand.js +641 -325
  169. package/dist/src/ui/commands/setCommand.js.map +1 -1
  170. package/dist/src/ui/commands/setCommand.test.js +92 -388
  171. package/dist/src/ui/commands/setCommand.test.js.map +1 -1
  172. package/dist/src/ui/commands/statusCommand.js +2 -2
  173. package/dist/src/ui/commands/statusCommand.js.map +1 -1
  174. package/dist/src/ui/commands/subagentCommand.d.ts +16 -0
  175. package/dist/src/ui/commands/subagentCommand.js +656 -0
  176. package/dist/src/ui/commands/subagentCommand.js.map +1 -0
  177. package/dist/src/ui/commands/test/setCommand.mutation.test.d.ts +6 -0
  178. package/dist/src/ui/commands/test/setCommand.mutation.test.js +132 -0
  179. package/dist/src/ui/commands/test/setCommand.mutation.test.js.map +1 -0
  180. package/dist/src/ui/commands/test/setCommand.phase09.test.d.ts +6 -0
  181. package/dist/src/ui/commands/test/setCommand.phase09.test.js +222 -0
  182. package/dist/src/ui/commands/test/setCommand.phase09.test.js.map +1 -0
  183. package/dist/src/ui/commands/test/subagentCommand.schema.test.d.ts +6 -0
  184. package/dist/src/ui/commands/test/subagentCommand.schema.test.js +125 -0
  185. package/dist/src/ui/commands/test/subagentCommand.schema.test.js.map +1 -0
  186. package/dist/src/ui/commands/test/subagentCommand.test.d.ts +1 -0
  187. package/dist/src/ui/commands/test/subagentCommand.test.js +589 -0
  188. package/dist/src/ui/commands/test/subagentCommand.test.js.map +1 -0
  189. package/dist/src/ui/commands/toolformatCommand.js +25 -98
  190. package/dist/src/ui/commands/toolformatCommand.js.map +1 -1
  191. package/dist/src/ui/commands/toolformatCommand.test.js +56 -102
  192. package/dist/src/ui/commands/toolformatCommand.test.js.map +1 -1
  193. package/dist/src/ui/commands/toolsCommand.js +187 -31
  194. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  195. package/dist/src/ui/commands/types.d.ts +11 -2
  196. package/dist/src/ui/commands/types.js.map +1 -1
  197. package/dist/src/ui/components/AboutBox.d.ts +4 -0
  198. package/dist/src/ui/components/AboutBox.js +1 -1
  199. package/dist/src/ui/components/AboutBox.js.map +1 -1
  200. package/dist/src/ui/components/AuthDialog.js +4 -3
  201. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  202. package/dist/src/ui/components/AuthDialog.test.js +67 -1
  203. package/dist/src/ui/components/AuthDialog.test.js.map +1 -1
  204. package/dist/src/ui/components/Footer.js +4 -5
  205. package/dist/src/ui/components/Footer.js.map +1 -1
  206. package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
  207. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  208. package/dist/src/ui/components/HistoryItemDisplay.test.js +2 -0
  209. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
  210. package/dist/src/ui/components/InputPrompt.js +18 -6
  211. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  212. package/dist/src/ui/components/SettingsDialog.js +1 -1
  213. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  214. package/dist/src/ui/components/StatsDisplay.js +6 -11
  215. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  216. package/dist/src/ui/components/SuggestionsDisplay.d.ts +13 -1
  217. package/dist/src/ui/components/SuggestionsDisplay.js +22 -3
  218. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  219. package/dist/src/ui/components/WorkspaceMigrationDialog.js +1 -1
  220. package/dist/src/ui/components/WorkspaceMigrationDialog.js.map +1 -1
  221. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +1 -0
  222. package/dist/src/ui/components/messages/ToolGroupMessage.js +14 -14
  223. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  224. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +1 -0
  225. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  226. package/dist/src/ui/components/shared/text-buffer.js +4 -1
  227. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  228. package/dist/src/ui/containers/SessionController.js +61 -117
  229. package/dist/src/ui/containers/SessionController.js.map +1 -1
  230. package/dist/src/ui/contexts/RuntimeContext.d.ts +61 -0
  231. package/dist/src/ui/contexts/RuntimeContext.js +118 -0
  232. package/dist/src/ui/contexts/RuntimeContext.js.map +1 -0
  233. package/dist/src/ui/contexts/TodoProvider.d.ts +1 -0
  234. package/dist/src/ui/contexts/TodoProvider.js +10 -8
  235. package/dist/src/ui/contexts/TodoProvider.js.map +1 -1
  236. package/dist/src/ui/contexts/ToolCallProvider.d.ts +1 -0
  237. package/dist/src/ui/contexts/ToolCallProvider.js +10 -9
  238. package/dist/src/ui/contexts/ToolCallProvider.js.map +1 -1
  239. package/dist/src/ui/hooks/__tests__/useSlashCompletion.set.phase09.test.d.ts +6 -0
  240. package/dist/src/ui/hooks/__tests__/useSlashCompletion.set.phase09.test.js +39 -0
  241. package/dist/src/ui/hooks/__tests__/useSlashCompletion.set.phase09.test.js.map +1 -0
  242. package/dist/src/ui/hooks/atCommandProcessor.js +11 -3
  243. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  244. package/dist/src/ui/hooks/atCommandProcessor.test.js +3 -1
  245. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  246. package/dist/src/ui/hooks/shellCommandProcessor.js +4 -1
  247. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  248. package/dist/src/ui/hooks/shellCommandProcessor.test.js +1 -0
  249. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
  250. package/dist/src/ui/hooks/slashCommandProcessor.js +29 -1
  251. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  252. package/dist/src/ui/hooks/useAuthCommand.js +11 -3
  253. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  254. package/dist/src/ui/hooks/useCommandCompletion.d.ts +1 -0
  255. package/dist/src/ui/hooks/useCommandCompletion.js +2 -0
  256. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  257. package/dist/src/ui/hooks/useGeminiStream.js +37 -11
  258. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  259. package/dist/src/ui/hooks/useGeminiStream.subagent.spec.d.ts +6 -0
  260. package/dist/src/ui/hooks/useGeminiStream.subagent.spec.js +232 -0
  261. package/dist/src/ui/hooks/useGeminiStream.subagent.spec.js.map +1 -0
  262. package/dist/src/ui/hooks/useLoadProfileDialog.d.ts +1 -1
  263. package/dist/src/ui/hooks/useLoadProfileDialog.js +18 -57
  264. package/dist/src/ui/hooks/useLoadProfileDialog.js.map +1 -1
  265. package/dist/src/ui/hooks/useOpenAIProviderInfo.d.ts +1 -1
  266. package/dist/src/ui/hooks/useOpenAIProviderInfo.js +12 -7
  267. package/dist/src/ui/hooks/useOpenAIProviderInfo.js.map +1 -1
  268. package/dist/src/ui/hooks/useProviderDialog.d.ts +1 -1
  269. package/dist/src/ui/hooks/useProviderDialog.js +17 -90
  270. package/dist/src/ui/hooks/useProviderDialog.js.map +1 -1
  271. package/dist/src/ui/hooks/useProviderModelDialog.d.ts +2 -2
  272. package/dist/src/ui/hooks/useProviderModelDialog.js +11 -12
  273. package/dist/src/ui/hooks/useProviderModelDialog.js.map +1 -1
  274. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +3 -1
  275. package/dist/src/ui/hooks/useReactToolScheduler.js +144 -34
  276. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  277. package/dist/src/ui/hooks/useSlashCompletion.d.ts +32 -0
  278. package/dist/src/ui/hooks/useSlashCompletion.js +154 -77
  279. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  280. package/dist/src/ui/hooks/useSlashCompletion.test.js +39 -14
  281. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  282. package/dist/src/ui/hooks/useToolScheduler.test.js +108 -79
  283. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  284. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +1 -1
  285. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -1
  286. package/dist/src/ui/types.d.ts +5 -0
  287. package/dist/src/ui/types.js.map +1 -1
  288. package/dist/src/ui/utils/MarkdownDisplay.test.js +16 -0
  289. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  290. package/dist/src/ui/utils/TableRenderer.js +213 -40
  291. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  292. package/dist/src/utils/sandbox.js +1 -1
  293. package/dist/src/utils/sandbox.js.map +1 -1
  294. package/dist/src/validateNonInterActiveAuth.js +4 -2
  295. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  296. package/dist/src/zed-integration/schema.d.ts +30 -30
  297. package/dist/src/zed-integration/zedIntegration.js +112 -39
  298. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  299. package/dist/tsconfig.build.tsbuildinfo +1 -0
  300. package/package.json +7 -5
  301. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -6,12 +6,10 @@
6
6
  import { useCallback, useState } from 'react';
7
7
  import { MessageType } from '../types.js';
8
8
  import { useAppDispatch } from '../contexts/AppDispatchContext.js';
9
- import { ProfileManager, AuthType } from '@vybestack/llxprt-code-core';
10
- import { SettingScope, } from '../../config/settings.js';
11
- import { getProviderManager } from '../../providers/providerManagerInstance.js';
12
- import { setProviderApiKey, setProviderBaseUrl, } from '../../providers/providerConfigUtils.js';
13
- export const useLoadProfileDialog = ({ addMessage, appState, config, settings, }) => {
9
+ import { useRuntimeApi } from '../contexts/RuntimeContext.js';
10
+ export const useLoadProfileDialog = ({ addMessage, appState, config: _config, settings: _settings, }) => {
14
11
  const appDispatch = useAppDispatch();
12
+ const runtime = useRuntimeApi();
15
13
  const showDialog = appState.openDialogs.loadProfile;
16
14
  const [profiles, setProfiles] = useState([]);
17
15
  const [isLoading, setIsLoading] = useState(false);
@@ -22,8 +20,7 @@ export const useLoadProfileDialog = ({ addMessage, appState, config, settings, }
22
20
  // Open dialog immediately to show loading state
23
21
  appDispatch({ type: 'OPEN_DIALOG', payload: 'loadProfile' });
24
22
  try {
25
- const profileManager = new ProfileManager();
26
- const availableProfiles = await profileManager.listProfiles();
23
+ const availableProfiles = await runtime.listSavedProfiles();
27
24
  setProfiles(availableProfiles);
28
25
  }
29
26
  catch (e) {
@@ -38,62 +35,26 @@ export const useLoadProfileDialog = ({ addMessage, appState, config, settings, }
38
35
  finally {
39
36
  setIsLoading(false);
40
37
  }
41
- }, [addMessage, appDispatch]);
38
+ }, [addMessage, appDispatch, runtime]);
42
39
  const closeDialog = useCallback(() => appDispatch({ type: 'CLOSE_DIALOG', payload: 'loadProfile' }), [appDispatch]);
43
40
  const handleSelect = useCallback(async (profileName) => {
44
41
  try {
45
- // Load the profile
46
- const profileManager = new ProfileManager();
47
- const profile = await profileManager.loadProfile(profileName);
48
- // Apply settings in the correct order:
49
- // 1. Set provider first
50
- const providerManager = config.getProviderManager();
51
- if (providerManager) {
52
- providerManager.setActiveProvider(profile.provider);
53
- // Ensure provider manager is set on config
54
- config.setProviderManager(providerManager);
55
- // Update the provider in config
56
- config.setProvider(profile.provider);
57
- }
58
- // 2. Set model second
59
- config.setModel(profile.model);
60
- // 3. Apply ephemeral settings third
61
- for (const [key, value] of Object.entries(profile.ephemeralSettings)) {
62
- // Special handling for auth-key and base-url
63
- if (key === 'auth-key' && typeof value === 'string') {
64
- // Set API key for the provider - use the concrete provider manager
65
- const concreteProviderManager = getProviderManager();
66
- await setProviderApiKey(concreteProviderManager, settings, value, config);
67
- }
68
- else if (key === 'base-url' && typeof value === 'string') {
69
- // Set base URL for the provider - use the concrete provider manager
70
- const concreteProviderManager = getProviderManager();
71
- await setProviderBaseUrl(concreteProviderManager, settings, value);
72
- }
73
- else {
74
- // Use setValue with SettingScope.User for other ephemeral settings
75
- settings.setValue(SettingScope.User, key, value);
76
- }
77
- }
78
- // 4. Call provider.setModelParams()
79
- const activeProvider = providerManager?.getActiveProvider();
80
- if (activeProvider &&
81
- 'setModelParams' in activeProvider &&
82
- activeProvider.setModelParams) {
83
- if (profile.modelParams &&
84
- Object.keys(profile.modelParams).length > 0) {
85
- activeProvider.setModelParams(profile.modelParams);
86
- }
87
- }
88
- // 5. Refresh auth to ensure provider is properly initialized
89
- const currentAuthType = config.getContentGeneratorConfig()?.authType ||
90
- AuthType.LOGIN_WITH_GOOGLE;
91
- await config.refreshAuth(currentAuthType);
42
+ const result = await runtime.loadProfileByName(profileName);
43
+ const extra = (result.infoMessages ?? [])
44
+ .map((message) => `\n- ${message}`)
45
+ .join('');
92
46
  addMessage({
93
47
  type: MessageType.INFO,
94
- content: `Profile '${profileName}' loaded`,
48
+ content: `Profile '${profileName}' loaded${extra}`,
95
49
  timestamp: new Date(),
96
50
  });
51
+ for (const warning of result.warnings ?? []) {
52
+ addMessage({
53
+ type: MessageType.INFO,
54
+ content: `⚠ ${warning}`,
55
+ timestamp: new Date(),
56
+ });
57
+ }
97
58
  }
98
59
  catch (error) {
99
60
  // Handle specific error messages
@@ -136,7 +97,7 @@ export const useLoadProfileDialog = ({ addMessage, appState, config, settings, }
136
97
  }
137
98
  }
138
99
  appDispatch({ type: 'CLOSE_DIALOG', payload: 'loadProfile' });
139
- }, [addMessage, appDispatch, config, settings]);
100
+ }, [addMessage, appDispatch, runtime]);
140
101
  return {
141
102
  showDialog,
142
103
  openDialog,
@@ -1 +1 @@
1
- {"version":3,"file":"useLoadProfileDialog.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useLoadProfileDialog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useLoadProfileDialog.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useLoadProfileDialog.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,5 @@ export interface UseOpenAIProviderInfoReturn extends OpenAIProviderInfo {
14
14
  * @param config The Config instance from the app
15
15
  * @returns OpenAI provider information and helper methods
16
16
  */
17
- export declare function useOpenAIProviderInfo(config: Config): UseOpenAIProviderInfoReturn;
17
+ export declare function useOpenAIProviderInfo(_config: Config): UseOpenAIProviderInfoReturn;
18
18
  export {};
@@ -5,21 +5,26 @@
5
5
  */
6
6
  import { useState, useEffect, useCallback } from 'react';
7
7
  import { getOpenAIProviderInfo, } from '@vybestack/llxprt-code-core';
8
- import { getProviderManager } from '../../providers/providerManagerInstance.js';
8
+ import { useRuntimeApi } from '../contexts/RuntimeContext.js';
9
9
  /**
10
10
  * React hook to access OpenAI provider information including conversation cache
11
11
  * @param config The Config instance from the app
12
12
  * @returns OpenAI provider information and helper methods
13
13
  */
14
- export function useOpenAIProviderInfo(config) {
15
- const [providerInfo, setProviderInfo] = useState(() => getOpenAIProviderInfo(getProviderManager(config)));
14
+ export function useOpenAIProviderInfo(_config) {
15
+ const runtime = useRuntimeApi();
16
+ const getProviderInfo = useCallback(() => {
17
+ const services = runtime.getCliRuntimeServices();
18
+ return getOpenAIProviderInfo(services.providerManager);
19
+ }, [runtime]);
20
+ const [providerInfo, setProviderInfo] = useState(() => getProviderInfo());
16
21
  const refresh = useCallback(() => {
17
- setProviderInfo(getOpenAIProviderInfo(getProviderManager(config)));
18
- }, [config]);
22
+ setProviderInfo(getProviderInfo());
23
+ }, [getProviderInfo]);
19
24
  // Refresh when config changes or model switches
20
25
  useEffect(() => {
21
26
  const checkInterval = setInterval(() => {
22
- const newInfo = getOpenAIProviderInfo(getProviderManager(config));
27
+ const newInfo = getProviderInfo();
23
28
  // Only update if something changed
24
29
  if (newInfo.currentModel !== providerInfo.currentModel ||
25
30
  newInfo.isResponsesAPI !== providerInfo.isResponsesAPI ||
@@ -28,7 +33,7 @@ export function useOpenAIProviderInfo(config) {
28
33
  }
29
34
  }, 1000); // Check every second
30
35
  return () => clearInterval(checkInterval);
31
- }, [config, providerInfo]);
36
+ }, [providerInfo, getProviderInfo]);
32
37
  const getCachedConversation = useCallback((conversationId, parentId) => {
33
38
  if (!providerInfo.conversationCache) {
34
39
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"useOpenAIProviderInfo.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useOpenAIProviderInfo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAGL,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAahF;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAc;IAEd,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAqB,GAAG,EAAE,CACxE,qBAAqB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAClD,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,eAAe,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,gDAAgD;IAChD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;YACrC,MAAM,OAAO,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;YAElE,mCAAmC;YACnC,IACE,OAAO,CAAC,YAAY,KAAK,YAAY,CAAC,YAAY;gBAClD,OAAO,CAAC,cAAc,KAAK,YAAY,CAAC,cAAc;gBACtD,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,KAAK,IAAI,CAAC,EAChE,CAAC;gBACD,eAAe,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB;QAE/B,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAE3B,MAAM,qBAAqB,GAAG,WAAW,CACvC,CAAC,cAAsB,EAAE,QAAgB,EAAE,EAAE;QAC3C,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACtE,CAAC,EACD,CAAC,YAAY,CAAC,iBAAiB,CAAC,CACjC,CAAC;IAEF,OAAO;QACL,GAAG,YAAY;QACf,OAAO;QACP,qBAAqB;KACtB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"useOpenAIProviderInfo.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useOpenAIProviderInfo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAGL,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAa9D;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAe;IAEf,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;QACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACjD,OAAO,qBAAqB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACzD,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAqB,GAAG,EAAE,CACxE,eAAe,EAAE,CAClB,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;IACrC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,gDAAgD;IAChD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;YACrC,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;YAElC,mCAAmC;YACnC,IACE,OAAO,CAAC,YAAY,KAAK,YAAY,CAAC,YAAY;gBAClD,OAAO,CAAC,cAAc,KAAK,YAAY,CAAC,cAAc;gBACtD,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,KAAK,IAAI,CAAC,EAChE,CAAC;gBACD,eAAe,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB;QAE/B,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;IAEpC,MAAM,qBAAqB,GAAG,WAAW,CACvC,CAAC,cAAsB,EAAE,QAAgB,EAAE,EAAE;QAC3C,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACtE,CAAC,EACD,CAAC,YAAY,CAAC,iBAAiB,CAAC,CACjC,CAAC;IAEF,OAAO;QACL,GAAG,YAAY;QACf,OAAO;QACP,qBAAqB;KACtB,CAAC;AACJ,CAAC"}
@@ -17,7 +17,7 @@ interface UseProviderDialogParams {
17
17
  config: Config;
18
18
  onClear?: () => void;
19
19
  }
20
- export declare const useProviderDialog: ({ addMessage, onProviderChange, appState, config, onClear, }: UseProviderDialogParams) => {
20
+ export declare const useProviderDialog: ({ addMessage, onProviderChange, appState, config: _config, onClear, }: UseProviderDialogParams) => {
21
21
  showDialog: boolean;
22
22
  openDialog: () => void;
23
23
  closeDialog: () => void;
@@ -4,31 +4,19 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { useCallback, useState } from 'react';
7
- import { getProviderManager } from '../../providers/providerManagerInstance.js';
8
7
  import { MessageType } from '../types.js';
9
8
  import { useAppDispatch } from '../contexts/AppDispatchContext.js';
10
- import { AuthType } from '@vybestack/llxprt-code-core';
11
- const PROVIDER_SWITCH_EPHEMERAL_KEYS = [
12
- 'auth-key',
13
- 'auth-keyfile',
14
- 'base-url',
15
- 'context-limit',
16
- 'compression-threshold',
17
- 'tool-format',
18
- 'api-version',
19
- 'custom-headers',
20
- 'model',
21
- ];
22
- export const useProviderDialog = ({ addMessage, onProviderChange, appState, config, onClear, }) => {
9
+ import { useRuntimeApi } from '../contexts/RuntimeContext.js';
10
+ export const useProviderDialog = ({ addMessage, onProviderChange, appState, config: _config, onClear, }) => {
23
11
  const appDispatch = useAppDispatch();
12
+ const runtime = useRuntimeApi();
24
13
  const showDialog = appState.openDialogs.provider;
25
14
  const [providers, setProviders] = useState([]);
26
15
  const [currentProvider, setCurrentProvider] = useState('');
27
16
  const openDialog = useCallback(() => {
28
17
  try {
29
- const providerManager = getProviderManager();
30
- setProviders(providerManager.listProviders());
31
- setCurrentProvider(providerManager.getActiveProviderName());
18
+ setProviders(runtime.listProviders());
19
+ setCurrentProvider(runtime.getActiveProviderName());
32
20
  appDispatch({ type: 'OPEN_DIALOG', payload: 'provider' });
33
21
  }
34
22
  catch (e) {
@@ -38,77 +26,17 @@ export const useProviderDialog = ({ addMessage, onProviderChange, appState, conf
38
26
  timestamp: new Date(),
39
27
  });
40
28
  }
41
- }, [addMessage, appDispatch]);
29
+ }, [addMessage, appDispatch, runtime]);
42
30
  const closeDialog = useCallback(() => appDispatch({ type: 'CLOSE_DIALOG', payload: 'provider' }), [appDispatch]);
43
31
  const handleSelect = useCallback(async (providerName) => {
44
32
  try {
45
- const providerManager = getProviderManager();
46
- const prev = providerManager.getActiveProviderName();
47
- // Reset provider-specific ephemeral settings before switching
48
- for (const key of PROVIDER_SWITCH_EPHEMERAL_KEYS) {
49
- config.setEphemeralSetting(key, undefined);
50
- }
51
- // Clear cached state on the target provider if possible
52
- const providersMap = providerManager.providers;
53
- if (providersMap && providersMap instanceof Map) {
54
- const targetProvider = providersMap.get(providerName);
55
- targetProvider?.clearState?.();
56
- }
57
- // Switch provider first
58
- providerManager.setActiveProvider(providerName);
59
- // Ensure provider manager is set on config and update provider reference
60
- config.setProviderManager(providerManager);
61
- config.setProvider(providerName);
62
- const activeProvider = providerManager.getActiveProvider();
63
- // Reset provider state that may linger between providers
64
- activeProvider.setBaseUrl?.(undefined);
65
- activeProvider.setModelParams?.({});
66
- // Provider-specific defaults (e.g., qwen base URL)
67
- if (providerName === 'qwen') {
68
- const baseUrl = 'https://portal.qwen.ai/v1';
69
- config.setEphemeralSetting('base-url', baseUrl);
70
- activeProvider.setBaseUrl?.(baseUrl);
71
- }
72
- const defaultModel = activeProvider.getDefaultModel?.() ||
73
- activeProvider.getCurrentModel?.() ||
74
- '';
75
- if (defaultModel) {
76
- activeProvider.setModel?.(defaultModel);
77
- config.setModel(defaultModel);
78
- }
79
- else {
80
- config.setModel('');
81
- }
82
- // With HistoryService and ContentConverters, we can now keep conversation history
83
- // when switching providers as the conversion handles format differences
84
- // Determine appropriate auth type
85
- let authType;
86
- if (providerName === 'gemini') {
87
- // When switching TO Gemini, determine appropriate auth
88
- const currentAuthType = config.getContentGeneratorConfig()?.authType;
89
- // If we were using provider auth, switch to appropriate Gemini auth
90
- if (currentAuthType === AuthType.USE_PROVIDER || !currentAuthType) {
91
- if (process.env.GOOGLE_APPLICATION_CREDENTIALS) {
92
- authType = AuthType.USE_VERTEX_AI;
93
- }
94
- else if (process.env.GEMINI_API_KEY) {
95
- authType = AuthType.USE_GEMINI;
96
- }
97
- else {
98
- authType = AuthType.LOGIN_WITH_GOOGLE; // Default to OAuth
99
- }
100
- }
101
- else {
102
- // Keep existing Gemini auth type
103
- authType = currentAuthType;
104
- }
105
- }
106
- else {
107
- // When switching to non-Gemini provider
108
- authType = AuthType.USE_PROVIDER;
109
- }
110
- // Refresh auth with the appropriate type
111
- await config.refreshAuth(authType);
33
+ const prev = runtime.getActiveProviderName();
34
+ /**
35
+ * @plan:PLAN-20250218-STATELESSPROVIDER.P06
36
+ * @requirement:REQ-SP-005
37
+ * @pseudocode:cli-runtime.md line 9
38
+ */
39
+ const result = await runtime.switchActiveProvider(providerName);
112
40
  // Clear UI history to prevent tool call ID mismatches
113
41
  if (onClear) {
114
42
  onClear();
@@ -118,15 +46,14 @@ export const useProviderDialog = ({ addMessage, onProviderChange, appState, conf
118
46
  content: `Switched from ${prev || 'none'} to ${providerName}`,
119
47
  timestamp: new Date(),
120
48
  });
121
- // Show additional info for non-Gemini providers
122
- if (providerName !== 'gemini') {
49
+ for (const info of result.infoMessages) {
123
50
  addMessage({
124
51
  type: MessageType.INFO,
125
- content: `Use /key to set API key if needed.`,
52
+ content: info,
126
53
  timestamp: new Date(),
127
54
  });
128
55
  }
129
- setCurrentProvider(providerName);
56
+ setCurrentProvider(result.nextProvider);
130
57
  onProviderChange?.();
131
58
  }
132
59
  catch (e) {
@@ -137,7 +64,7 @@ export const useProviderDialog = ({ addMessage, onProviderChange, appState, conf
137
64
  });
138
65
  }
139
66
  appDispatch({ type: 'CLOSE_DIALOG', payload: 'provider' });
140
- }, [addMessage, onProviderChange, appDispatch, config, onClear]);
67
+ }, [addMessage, onProviderChange, appDispatch, onClear, runtime]);
141
68
  return {
142
69
  showDialog,
143
70
  openDialog,
@@ -1 +1 @@
1
- {"version":3,"file":"useProviderDialog.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useProviderDialog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useProviderDialog.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useProviderDialog.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Vybestack LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { IModel } from '../../providers/index.js';
6
+ import type { IModel } from '@vybestack/llxprt-code-core';
7
7
  import { MessageType } from '../types.js';
8
8
  import { AppState } from '../reducers/appReducer.js';
9
9
  interface UseProviderModelDialogParams {
@@ -21,6 +21,6 @@ export declare const useProviderModelDialog: ({ addMessage, onModelChange, appSt
21
21
  closeDialog: () => void;
22
22
  models: IModel[];
23
23
  currentModel: string;
24
- handleSelect: (modelId: string) => void;
24
+ handleSelect: (modelId: string) => Promise<void>;
25
25
  };
26
26
  export {};
@@ -4,20 +4,20 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { useCallback, useState } from 'react';
7
- import { getProviderManager } from '../../providers/providerManagerInstance.js';
8
7
  import { MessageType } from '../types.js';
9
8
  import { useAppDispatch } from '../contexts/AppDispatchContext.js';
9
+ import { useRuntimeApi } from '../contexts/RuntimeContext.js';
10
10
  export const useProviderModelDialog = ({ addMessage, onModelChange, appState, }) => {
11
11
  const appDispatch = useAppDispatch();
12
+ const runtime = useRuntimeApi();
12
13
  const showDialog = appState.openDialogs.providerModel;
13
14
  const [models, setModels] = useState([]);
14
15
  const [currentModel, setCurrentModel] = useState('');
15
16
  const openDialog = useCallback(async () => {
16
17
  try {
17
- const provider = getProviderManager().getActiveProvider();
18
- const list = await provider.getModels();
18
+ const list = await runtime.listAvailableModels();
19
19
  setModels(list);
20
- setCurrentModel(provider.getCurrentModel?.() ?? '');
20
+ setCurrentModel(runtime.getActiveModelName());
21
21
  appDispatch({ type: 'OPEN_DIALOG', payload: 'providerModel' });
22
22
  }
23
23
  catch (e) {
@@ -27,29 +27,28 @@ export const useProviderModelDialog = ({ addMessage, onModelChange, appState, })
27
27
  timestamp: new Date(),
28
28
  });
29
29
  }
30
- }, [addMessage, appDispatch]);
30
+ }, [addMessage, appDispatch, runtime]);
31
31
  const closeDialog = useCallback(() => appDispatch({ type: 'CLOSE_DIALOG', payload: 'providerModel' }), [appDispatch]);
32
- const handleSelect = useCallback((modelId) => {
32
+ const handleSelect = useCallback(async (modelId) => {
33
33
  try {
34
- const provider = getProviderManager().getActiveProvider();
35
- const prev = provider.getCurrentModel?.() ?? '';
36
- provider.setModel?.(modelId);
34
+ const result = await runtime.setActiveModel(modelId);
37
35
  addMessage({
38
36
  type: MessageType.INFO,
39
- content: `Switched from ${prev} to ${modelId} in provider '${provider.name}'`,
37
+ content: `Switched from ${result.previousModel ?? 'unknown'} to ${result.nextModel} in provider '${result.providerName}'`,
40
38
  timestamp: new Date(),
41
39
  });
42
40
  onModelChange?.();
43
41
  }
44
42
  catch (e) {
43
+ const status = runtime.getActiveProviderStatus();
45
44
  addMessage({
46
45
  type: MessageType.ERROR,
47
- content: `Failed to switch model: ${e instanceof Error ? e.message : String(e)}`,
46
+ content: `Failed to switch model for provider '${status.providerName ?? 'unknown'}': ${e instanceof Error ? e.message : String(e)}`,
48
47
  timestamp: new Date(),
49
48
  });
50
49
  }
51
50
  appDispatch({ type: 'CLOSE_DIALOG', payload: 'providerModel' });
52
- }, [addMessage, onModelChange, appDispatch]);
51
+ }, [addMessage, onModelChange, appDispatch, runtime]);
53
52
  return {
54
53
  showDialog,
55
54
  openDialog,
@@ -1 +1 @@
1
- {"version":3,"file":"useProviderModelDialog.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useProviderModelDialog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useProviderModelDialog.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useProviderModelDialog.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,9 @@ export type TrackedCancelledToolCall = CancelledToolCall & {
26
26
  responseSubmittedToGemini?: boolean;
27
27
  };
28
28
  export type TrackedToolCall = TrackedScheduledToolCall | TrackedValidatingToolCall | TrackedWaitingToolCall | TrackedExecutingToolCall | TrackedCompletedToolCall | TrackedCancelledToolCall;
29
- export declare function useReactToolScheduler(onComplete: (tools: CompletedToolCall[]) => void, config: Config, setPendingHistoryItem: React.Dispatch<React.SetStateAction<HistoryItemWithoutId | null>>, getPreferredEditor: () => EditorType | undefined, onEditorClose: () => void): [TrackedToolCall[], ScheduleFn, MarkToolsAsSubmittedFn];
29
+ export declare function useReactToolScheduler(onComplete: (schedulerId: symbol, tools: CompletedToolCall[], options: {
30
+ isPrimary: boolean;
31
+ }) => Promise<void> | void, config: Config, setPendingHistoryItem: React.Dispatch<React.SetStateAction<HistoryItemWithoutId | null>>, getPreferredEditor: () => EditorType | undefined, onEditorClose: () => void): [TrackedToolCall[], ScheduleFn, MarkToolsAsSubmittedFn];
30
32
  /**
31
33
  * Transforms `TrackedToolCall` objects into `HistoryItemToolGroup` objects for UI display.
32
34
  */