@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
@@ -3,12 +3,12 @@
3
3
  * Copyright 2025 Vybestack LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { CoreToolScheduler, } from '@vybestack/llxprt-code-core';
7
- import { useCallback, useState, useMemo } from 'react';
6
+ import { CoreToolScheduler, DEFAULT_AGENT_ID, } from '@vybestack/llxprt-code-core';
7
+ import { useCallback, useState, useMemo, useEffect } from 'react';
8
8
  import { ToolCallStatus, } from '../types.js';
9
9
  export function useReactToolScheduler(onComplete, config, setPendingHistoryItem, getPreferredEditor, onEditorClose) {
10
- const [toolCallsForDisplay, setToolCallsForDisplay] = useState([]);
11
- const outputUpdateHandler = useCallback((toolCallId, outputChunk) => {
10
+ const [toolCallsByScheduler, setToolCallsByScheduler] = useState(new Map());
11
+ const updatePendingHistoryItem = useCallback((toolCallId, outputChunk) => {
12
12
  setPendingHistoryItem((prevItem) => {
13
13
  if (prevItem?.type === 'tool_group') {
14
14
  return {
@@ -21,55 +21,158 @@ export function useReactToolScheduler(onComplete, config, setPendingHistoryItem,
21
21
  }
22
22
  return prevItem;
23
23
  });
24
- setToolCallsForDisplay((prevCalls) => prevCalls.map((tc) => {
25
- if (tc.request.callId === toolCallId && tc.status === 'executing') {
26
- const executingTc = tc;
27
- return { ...executingTc, liveOutput: outputChunk };
28
- }
29
- return tc;
30
- }));
31
24
  }, [setPendingHistoryItem]);
32
- const allToolCallsCompleteHandler = useCallback(async (completedToolCalls) => {
33
- await onComplete(completedToolCalls);
34
- }, [onComplete]);
35
- const toolCallsUpdateHandler = useCallback((updatedCoreToolCalls) => {
36
- setToolCallsForDisplay((prevTrackedCalls) => updatedCoreToolCalls.map((coreTc) => {
37
- const existingTrackedCall = prevTrackedCalls.find((ptc) => ptc.request.callId === coreTc.request.callId);
38
- const newTrackedCall = {
39
- ...coreTc,
40
- responseSubmittedToGemini: existingTrackedCall?.responseSubmittedToGemini ?? false,
41
- };
42
- return newTrackedCall;
43
- }));
25
+ const updateToolCallsForScheduler = useCallback((schedulerId, updater) => {
26
+ setToolCallsByScheduler((prev) => {
27
+ const currentCalls = prev.get(schedulerId) ?? [];
28
+ const updatedCalls = updater(currentCalls);
29
+ if (updatedCalls === currentCalls) {
30
+ return prev;
31
+ }
32
+ const next = new Map(prev);
33
+ if (!updatedCalls || updatedCalls.length === 0) {
34
+ next.delete(schedulerId);
35
+ }
36
+ else {
37
+ next.set(schedulerId, updatedCalls);
38
+ }
39
+ return next;
40
+ });
44
41
  }, []);
42
+ const replaceToolCallsForScheduler = useCallback((schedulerId, updatedCalls) => {
43
+ updateToolCallsForScheduler(schedulerId, (prevCalls) => {
44
+ if (updatedCalls.length === 0) {
45
+ return [];
46
+ }
47
+ const previousCallMap = new Map(prevCalls.map((call) => [call.request.callId, call]));
48
+ return updatedCalls.map((call) => ({
49
+ ...call,
50
+ responseSubmittedToGemini: previousCallMap.get(call.request.callId)
51
+ ?.responseSubmittedToGemini ?? false,
52
+ }));
53
+ });
54
+ }, [updateToolCallsForScheduler]);
55
+ const updateToolCallOutput = useCallback((schedulerId, toolCallId, outputChunk) => {
56
+ updateToolCallsForScheduler(schedulerId, (prevCalls) => {
57
+ let updated = false;
58
+ const nextCalls = prevCalls.map((call) => {
59
+ if (call.request.callId !== toolCallId) {
60
+ return call;
61
+ }
62
+ if (call.status !== 'executing') {
63
+ return call;
64
+ }
65
+ updated = true;
66
+ const executingCall = call;
67
+ return { ...executingCall, liveOutput: outputChunk };
68
+ });
69
+ return updated ? nextCalls : prevCalls;
70
+ });
71
+ updatePendingHistoryItem(toolCallId, outputChunk);
72
+ }, [updateToolCallsForScheduler, updatePendingHistoryItem]);
73
+ const toolCalls = useMemo(() => Array.from(toolCallsByScheduler.values()).flat(), [toolCallsByScheduler]);
74
+ const mainSchedulerId = useState(() => Symbol('main-scheduler'))[0];
45
75
  // The scheduler MUST be recreated when config changes because:
46
76
  // 1. config.getToolRegistry() returns different instances during initialization
47
77
  // 2. config.getApprovalMode() can change based on user settings
48
78
  // 3. The Gemini client initialization depends on having the latest config
49
79
  const scheduler = useMemo(() => new CoreToolScheduler({
50
- outputUpdateHandler,
51
- onAllToolCallsComplete: allToolCallsCompleteHandler,
52
- onToolCallsUpdate: toolCallsUpdateHandler,
80
+ outputUpdateHandler: (toolCallId, chunk) => updateToolCallOutput(mainSchedulerId, toolCallId, chunk),
81
+ onAllToolCallsComplete: async (completedToolCalls) => {
82
+ if (completedToolCalls.length > 0) {
83
+ await onComplete(mainSchedulerId, completedToolCalls, {
84
+ isPrimary: true,
85
+ });
86
+ }
87
+ replaceToolCallsForScheduler(mainSchedulerId, []);
88
+ },
89
+ onToolCallsUpdate: (calls) => {
90
+ replaceToolCallsForScheduler(mainSchedulerId, calls);
91
+ },
53
92
  getPreferredEditor,
54
93
  config,
55
94
  onEditorClose,
56
95
  }), [
57
96
  config,
58
- outputUpdateHandler,
59
- allToolCallsCompleteHandler,
60
- toolCallsUpdateHandler,
61
97
  getPreferredEditor,
62
98
  onEditorClose,
99
+ mainSchedulerId,
100
+ onComplete,
101
+ replaceToolCallsForScheduler,
102
+ updateToolCallOutput,
63
103
  ]);
104
+ const createExternalScheduler = useCallback((args) => {
105
+ const { schedulerConfig, onAllToolCallsComplete, outputUpdateHandler, onToolCallsUpdate, } = args;
106
+ const schedulerId = Symbol('subagent-scheduler');
107
+ return new CoreToolScheduler({
108
+ config: schedulerConfig,
109
+ outputUpdateHandler: (toolCallId, chunk) => {
110
+ updateToolCallOutput(schedulerId, toolCallId, chunk);
111
+ outputUpdateHandler(toolCallId, chunk);
112
+ },
113
+ onToolCallsUpdate: (calls) => {
114
+ replaceToolCallsForScheduler(schedulerId, calls);
115
+ onToolCallsUpdate?.(calls);
116
+ },
117
+ onAllToolCallsComplete: async (calls) => {
118
+ if (calls.length > 0) {
119
+ await onComplete(schedulerId, calls, { isPrimary: false });
120
+ await onAllToolCallsComplete?.(calls);
121
+ }
122
+ replaceToolCallsForScheduler(schedulerId, []);
123
+ },
124
+ getPreferredEditor,
125
+ onEditorClose,
126
+ });
127
+ }, [
128
+ getPreferredEditor,
129
+ onEditorClose,
130
+ replaceToolCallsForScheduler,
131
+ onComplete,
132
+ updateToolCallOutput,
133
+ ]);
134
+ useEffect(() => {
135
+ const configWithFactory = config;
136
+ if (typeof configWithFactory.setInteractiveSubagentSchedulerFactory !==
137
+ 'function') {
138
+ return;
139
+ }
140
+ configWithFactory.setInteractiveSubagentSchedulerFactory(createExternalScheduler);
141
+ return () => {
142
+ configWithFactory.setInteractiveSubagentSchedulerFactory?.(undefined);
143
+ };
144
+ }, [config, createExternalScheduler]);
64
145
  const schedule = useCallback((request, signal) => {
65
- scheduler.schedule(request, signal);
146
+ const ensureAgentId = (req) => ({
147
+ ...req,
148
+ agentId: req.agentId ?? DEFAULT_AGENT_ID,
149
+ });
150
+ const normalizedRequest = Array.isArray(request)
151
+ ? request.map(ensureAgentId)
152
+ : ensureAgentId(request);
153
+ scheduler.schedule(normalizedRequest, signal);
66
154
  }, [scheduler]);
67
155
  const markToolsAsSubmitted = useCallback((callIdsToMark) => {
68
- setToolCallsForDisplay((prevCalls) => prevCalls.map((tc) => callIdsToMark.includes(tc.request.callId)
69
- ? { ...tc, responseSubmittedToGemini: true }
70
- : tc));
156
+ if (callIdsToMark.length === 0) {
157
+ return;
158
+ }
159
+ setToolCallsByScheduler((prev) => {
160
+ let changed = false;
161
+ const next = new Map(prev);
162
+ for (const [schedulerId, calls] of prev) {
163
+ const updatedCalls = calls.map((call) => callIdsToMark.includes(call.request.callId)
164
+ ? { ...call, responseSubmittedToGemini: true }
165
+ : call);
166
+ const hasChange = updatedCalls.some((call, index) => call !== calls[index]);
167
+ if (hasChange) {
168
+ changed = true;
169
+ next.set(schedulerId, updatedCalls);
170
+ }
171
+ }
172
+ return changed ? next : prev;
173
+ });
71
174
  }, []);
72
- return [toolCallsForDisplay, schedule, markToolsAsSubmitted];
175
+ return [toolCalls, schedule, markToolsAsSubmitted];
73
176
  }
74
177
  /**
75
178
  * Maps a CoreToolScheduler status to the UI's ToolCallStatus enum.
@@ -98,6 +201,12 @@ function mapCoreStatusToDisplayStatus(coreStatus) {
98
201
  */
99
202
  export function mapToDisplay(toolOrTools) {
100
203
  const toolCalls = Array.isArray(toolOrTools) ? toolOrTools : [toolOrTools];
204
+ const groupAgentId = toolCalls
205
+ .map((trackedCall) => {
206
+ const responseAgentId = 'response' in trackedCall ? trackedCall.response?.agentId : undefined;
207
+ return responseAgentId ?? trackedCall.request.agentId;
208
+ })
209
+ .find((agentId) => typeof agentId === 'string' && agentId.trim().length > 0) ?? DEFAULT_AGENT_ID;
101
210
  const toolDisplays = toolCalls.map((trackedCall) => {
102
211
  let displayName;
103
212
  let description;
@@ -180,6 +289,7 @@ export function mapToDisplay(toolOrTools) {
180
289
  });
181
290
  return {
182
291
  type: 'tool_group',
292
+ agentId: groupAgentId,
183
293
  tools: toolDisplays,
184
294
  };
185
295
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useReactToolScheduler.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useReactToolScheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useReactToolScheduler.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useReactToolScheduler.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,41 @@
3
3
  * Copyright 2025 Vybestack LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import React from 'react';
6
7
  import { Config } from '@vybestack/llxprt-code-core';
7
8
  import { Suggestion } from '../components/SuggestionsDisplay.js';
8
9
  import { CommandContext, SlashCommand } from '../commands/types.js';
9
10
  import { TextBuffer } from '../components/shared/text-buffer.js';
11
+ /**
12
+ * @plan:PLAN-20251013-AUTOCOMPLETE.P05
13
+ * @requirement:REQ-001
14
+ * @requirement:REQ-002
15
+ * @pseudocode ArgumentSchema.md lines 71-90
16
+ * Integration of schema-driven completion system
17
+ *
18
+ * The schema system provides a more structured approach to command completion:
19
+ * - Import: import { createCompletionHandler } from '../commands/schema/index.js';
20
+ * - Create handler: const handler = createCompletionHandler(commandSchema);
21
+ * - Use handler: const suggestions = await handler(commandContext, partialArg, fullLine);
22
+ *
23
+ * Schema completion is now available for commands that provide a schema definition.
24
+ * The integration maintains existing UI behavior while providing enhanced completion.
25
+ */
26
+ /**
27
+ * @plan:PLAN-20251013-AUTOCOMPLETE.P08
28
+ * @requirement:REQ-002
29
+ * @requirement:REQ-003
30
+ * @requirement:REQ-004
31
+ * @pseudocode ArgumentSchema.md lines 71-90
32
+ * Full integration of schema-driven completion system with hints
33
+ * - Line 71: call createCompletionHandler with current command context
34
+ * - Line 72: supply schema specific to active command
35
+ * - Line 73: capture { suggestions, hint } result
36
+ * - Line 74: set state for suggestions and new activeHint field
37
+ * - Line 75: handle pending async results with sequence/timestamp guard
38
+ * - Line 76-78: gracefully handle resolver errors (log + fallback to empty suggestions + hint)
39
+ * - Line 79-80: ensure cleanup on component unmount / completion reset
40
+ */
10
41
  export interface UseSlashCompletionReturn {
11
42
  suggestions: Suggestion[];
12
43
  activeSuggestionIndex: number;
@@ -14,6 +45,7 @@ export interface UseSlashCompletionReturn {
14
45
  showSuggestions: boolean;
15
46
  isLoadingSuggestions: boolean;
16
47
  isPerfectMatch: boolean;
48
+ activeHint: string;
17
49
  setActiveSuggestionIndex: React.Dispatch<React.SetStateAction<number>>;
18
50
  setShowSuggestions: React.Dispatch<React.SetStateAction<boolean>>;
19
51
  resetCompletionState: () => void;