@vybestack/llxprt-code 0.4.8 → 0.5.0-nightly.251102.6bb3db7a

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 (269) hide show
  1. package/dist/package.json +5 -3
  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 +11 -0
  6. package/dist/src/auth/oauth-manager.js +62 -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/config/__tests__/nonInteractiveTools.test.d.ts +6 -0
  11. package/dist/src/config/__tests__/nonInteractiveTools.test.js +13 -0
  12. package/dist/src/config/__tests__/nonInteractiveTools.test.js.map +1 -0
  13. package/dist/src/config/__tests__/profileBootstrap.test.d.ts +6 -0
  14. package/dist/src/config/__tests__/profileBootstrap.test.js +91 -0
  15. package/dist/src/config/__tests__/profileBootstrap.test.js.map +1 -0
  16. package/dist/src/config/config.d.ts +6 -2
  17. package/dist/src/config/config.js +219 -18
  18. package/dist/src/config/config.js.map +1 -1
  19. package/dist/src/config/profileBootstrap.d.ts +64 -0
  20. package/dist/src/config/profileBootstrap.js +140 -0
  21. package/dist/src/config/profileBootstrap.js.map +1 -0
  22. package/dist/src/gemini.js +68 -23
  23. package/dist/src/gemini.js.map +1 -1
  24. package/dist/src/gemini.test.js +1 -2
  25. package/dist/src/gemini.test.js.map +1 -1
  26. package/dist/src/generated/git-commit.d.ts +1 -1
  27. package/dist/src/generated/git-commit.js +1 -1
  28. package/dist/src/integration-tests/base-url-behavior.integration.test.js +110 -450
  29. package/dist/src/integration-tests/base-url-behavior.integration.test.js.map +1 -1
  30. package/dist/src/integration-tests/model-params-isolation.integration.test.js +101 -539
  31. package/dist/src/integration-tests/model-params-isolation.integration.test.js.map +1 -1
  32. package/dist/src/integration-tests/modelParams.integration.test.js +86 -761
  33. package/dist/src/integration-tests/modelParams.integration.test.js.map +1 -1
  34. package/dist/src/integration-tests/provider-multi-runtime.integration.test.d.ts +6 -0
  35. package/dist/src/integration-tests/provider-multi-runtime.integration.test.js +198 -0
  36. package/dist/src/integration-tests/provider-multi-runtime.integration.test.js.map +1 -0
  37. package/dist/src/integration-tests/provider-switching.integration.test.js +97 -151
  38. package/dist/src/integration-tests/provider-switching.integration.test.js.map +1 -1
  39. package/dist/src/integration-tests/runtime-isolation.test.d.ts +13 -0
  40. package/dist/src/integration-tests/runtime-isolation.test.js +170 -0
  41. package/dist/src/integration-tests/runtime-isolation.test.js.map +1 -0
  42. package/dist/src/integration-tests/test-utils.js +19 -2
  43. package/dist/src/integration-tests/test-utils.js.map +1 -1
  44. package/dist/src/integration-tests/test-utils.test.js +9 -8
  45. package/dist/src/integration-tests/test-utils.test.js.map +1 -1
  46. package/dist/src/integration-tests/todo-continuation.integration.test.js +5 -2
  47. package/dist/src/integration-tests/todo-continuation.integration.test.js.map +1 -1
  48. package/dist/src/integration-tests/tools-governance.integration.test.d.ts +6 -0
  49. package/dist/src/integration-tests/tools-governance.integration.test.js +98 -0
  50. package/dist/src/integration-tests/tools-governance.integration.test.js.map +1 -0
  51. package/dist/src/nonInteractiveCli.js +36 -11
  52. package/dist/src/nonInteractiveCli.js.map +1 -1
  53. package/dist/src/providers/logging/git-stats.test.js +11 -1
  54. package/dist/src/providers/logging/git-stats.test.js.map +1 -1
  55. package/dist/src/providers/logging/multi-provider-logging.integration.test.js +1 -2
  56. package/dist/src/providers/logging/multi-provider-logging.integration.test.js.map +1 -1
  57. package/dist/src/providers/logging/performance.test.js +1 -1
  58. package/dist/src/providers/logging/performance.test.js.map +1 -1
  59. package/dist/src/providers/oauth-provider-registration.d.ts +2 -2
  60. package/dist/src/providers/oauth-provider-registration.js +25 -9
  61. package/dist/src/providers/oauth-provider-registration.js.map +1 -1
  62. package/dist/src/providers/provider-gemini-switching.test.js +67 -89
  63. package/dist/src/providers/provider-gemini-switching.test.js.map +1 -1
  64. package/dist/src/providers/provider-switching.integration.test.js +42 -98
  65. package/dist/src/providers/provider-switching.integration.test.js.map +1 -1
  66. package/dist/src/providers/providerConfigUtils.d.ts +12 -7
  67. package/dist/src/providers/providerConfigUtils.js +31 -99
  68. package/dist/src/providers/providerConfigUtils.js.map +1 -1
  69. package/dist/src/providers/providerManagerInstance.d.ts +17 -1
  70. package/dist/src/providers/providerManagerInstance.js +157 -175
  71. package/dist/src/providers/providerManagerInstance.js.map +1 -1
  72. package/dist/src/providers/providerManagerInstance.oauthRegistration.test.js +19 -15
  73. package/dist/src/providers/providerManagerInstance.oauthRegistration.test.js.map +1 -1
  74. package/dist/src/providers/providerManagerInstance.test.js +2 -5
  75. package/dist/src/providers/providerManagerInstance.test.js.map +1 -1
  76. package/dist/src/runtime/__tests__/profileApplication.test.d.ts +5 -0
  77. package/dist/src/runtime/__tests__/profileApplication.test.js +232 -0
  78. package/dist/src/runtime/__tests__/profileApplication.test.js.map +1 -0
  79. package/dist/src/runtime/__tests__/runtimeIsolation.test.d.ts +5 -0
  80. package/dist/src/runtime/__tests__/runtimeIsolation.test.js +376 -0
  81. package/dist/src/runtime/__tests__/runtimeIsolation.test.js.map +1 -0
  82. package/dist/src/runtime/agentRuntimeAdapter.d.ts +249 -0
  83. package/dist/src/runtime/agentRuntimeAdapter.js +506 -0
  84. package/dist/src/runtime/agentRuntimeAdapter.js.map +1 -0
  85. package/dist/src/runtime/agentRuntimeAdapter.spec.d.ts +6 -0
  86. package/dist/src/runtime/agentRuntimeAdapter.spec.js +866 -0
  87. package/dist/src/runtime/agentRuntimeAdapter.spec.js.map +1 -0
  88. package/dist/src/runtime/messages.d.ts +28 -0
  89. package/dist/src/runtime/messages.js +64 -0
  90. package/dist/src/runtime/messages.js.map +1 -0
  91. package/dist/src/runtime/profileApplication.d.ts +33 -0
  92. package/dist/src/runtime/profileApplication.js +191 -0
  93. package/dist/src/runtime/profileApplication.js.map +1 -0
  94. package/dist/src/runtime/providerConfigUtils.test.d.ts +1 -0
  95. package/dist/src/runtime/providerConfigUtils.test.js +68 -0
  96. package/dist/src/runtime/providerConfigUtils.test.js.map +1 -0
  97. package/dist/src/runtime/runtimeContextFactory.d.ts +102 -0
  98. package/dist/src/runtime/runtimeContextFactory.js +190 -0
  99. package/dist/src/runtime/runtimeContextFactory.js.map +1 -0
  100. package/dist/src/runtime/runtimeSettings.d.ts +217 -0
  101. package/dist/src/runtime/runtimeSettings.js +1094 -0
  102. package/dist/src/runtime/runtimeSettings.js.map +1 -0
  103. package/dist/src/runtime/runtimeSettings.test.d.ts +1 -0
  104. package/dist/src/runtime/runtimeSettings.test.js +320 -0
  105. package/dist/src/runtime/runtimeSettings.test.js.map +1 -0
  106. package/dist/src/services/BuiltinCommandLoader.d.ts +13 -4
  107. package/dist/src/services/BuiltinCommandLoader.js +17 -4
  108. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  109. package/dist/src/services/McpPromptLoader.js +34 -13
  110. package/dist/src/services/McpPromptLoader.js.map +1 -1
  111. package/dist/src/test-utils/mockCommandContext.js +5 -2
  112. package/dist/src/test-utils/mockCommandContext.js.map +1 -1
  113. package/dist/src/ui/App.js +29 -49
  114. package/dist/src/ui/App.js.map +1 -1
  115. package/dist/src/ui/commands/aboutCommand.js +59 -38
  116. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  117. package/dist/src/ui/commands/authCommand.js +7 -9
  118. package/dist/src/ui/commands/authCommand.js.map +1 -1
  119. package/dist/src/ui/commands/baseurlCommand.js +8 -44
  120. package/dist/src/ui/commands/baseurlCommand.js.map +1 -1
  121. package/dist/src/ui/commands/chatCommand.js +28 -12
  122. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  123. package/dist/src/ui/commands/diagnosticsCommand.d.ts +0 -3
  124. package/dist/src/ui/commands/diagnosticsCommand.js +45 -191
  125. package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -1
  126. package/dist/src/ui/commands/keyCommand.js +9 -58
  127. package/dist/src/ui/commands/keyCommand.js.map +1 -1
  128. package/dist/src/ui/commands/keyCommand.test.js +48 -102
  129. package/dist/src/ui/commands/keyCommand.test.js.map +1 -1
  130. package/dist/src/ui/commands/keyfileCommand.js +42 -93
  131. package/dist/src/ui/commands/keyfileCommand.js.map +1 -1
  132. package/dist/src/ui/commands/logoutCommand.js +2 -2
  133. package/dist/src/ui/commands/logoutCommand.js.map +1 -1
  134. package/dist/src/ui/commands/mcpCommand.js +29 -7
  135. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  136. package/dist/src/ui/commands/modelCommand.js +8 -59
  137. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  138. package/dist/src/ui/commands/profileCommand.js +151 -267
  139. package/dist/src/ui/commands/profileCommand.js.map +1 -1
  140. package/dist/src/ui/commands/profileCommand.test.js +88 -344
  141. package/dist/src/ui/commands/profileCommand.test.js.map +1 -1
  142. package/dist/src/ui/commands/providerCommand.js +9 -3
  143. package/dist/src/ui/commands/providerCommand.js.map +1 -1
  144. package/dist/src/ui/commands/restoreCommand.js +38 -18
  145. package/dist/src/ui/commands/restoreCommand.js.map +1 -1
  146. package/dist/src/ui/commands/schema/argumentResolver.test.d.ts +6 -0
  147. package/dist/src/ui/commands/schema/argumentResolver.test.js +619 -0
  148. package/dist/src/ui/commands/schema/argumentResolver.test.js.map +1 -0
  149. package/dist/src/ui/commands/schema/index.d.ts +15 -0
  150. package/dist/src/ui/commands/schema/index.js +320 -0
  151. package/dist/src/ui/commands/schema/index.js.map +1 -0
  152. package/dist/src/ui/commands/schema/types.d.ts +61 -0
  153. package/dist/src/ui/commands/schema/types.js +12 -0
  154. package/dist/src/ui/commands/schema/types.js.map +1 -0
  155. package/dist/src/ui/commands/setCommand.js +641 -325
  156. package/dist/src/ui/commands/setCommand.js.map +1 -1
  157. package/dist/src/ui/commands/setCommand.test.js +92 -388
  158. package/dist/src/ui/commands/setCommand.test.js.map +1 -1
  159. package/dist/src/ui/commands/statusCommand.js +2 -2
  160. package/dist/src/ui/commands/statusCommand.js.map +1 -1
  161. package/dist/src/ui/commands/subagentCommand.d.ts +16 -0
  162. package/dist/src/ui/commands/subagentCommand.js +674 -0
  163. package/dist/src/ui/commands/subagentCommand.js.map +1 -0
  164. package/dist/src/ui/commands/test/setCommand.mutation.test.d.ts +6 -0
  165. package/dist/src/ui/commands/test/setCommand.mutation.test.js +132 -0
  166. package/dist/src/ui/commands/test/setCommand.mutation.test.js.map +1 -0
  167. package/dist/src/ui/commands/test/setCommand.phase09.test.d.ts +6 -0
  168. package/dist/src/ui/commands/test/setCommand.phase09.test.js +222 -0
  169. package/dist/src/ui/commands/test/setCommand.phase09.test.js.map +1 -0
  170. package/dist/src/ui/commands/test/subagentCommand.schema.test.d.ts +6 -0
  171. package/dist/src/ui/commands/test/subagentCommand.schema.test.js +125 -0
  172. package/dist/src/ui/commands/test/subagentCommand.schema.test.js.map +1 -0
  173. package/dist/src/ui/commands/test/subagentCommand.test.d.ts +1 -0
  174. package/dist/src/ui/commands/test/subagentCommand.test.js +598 -0
  175. package/dist/src/ui/commands/test/subagentCommand.test.js.map +1 -0
  176. package/dist/src/ui/commands/toolformatCommand.js +25 -98
  177. package/dist/src/ui/commands/toolformatCommand.js.map +1 -1
  178. package/dist/src/ui/commands/toolformatCommand.test.js +56 -102
  179. package/dist/src/ui/commands/toolformatCommand.test.js.map +1 -1
  180. package/dist/src/ui/commands/toolsCommand.js +187 -31
  181. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  182. package/dist/src/ui/commands/types.d.ts +11 -2
  183. package/dist/src/ui/commands/types.js.map +1 -1
  184. package/dist/src/ui/components/AuthDialog.js +16 -55
  185. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  186. package/dist/src/ui/components/Footer.js +4 -5
  187. package/dist/src/ui/components/Footer.js.map +1 -1
  188. package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
  189. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  190. package/dist/src/ui/components/InputPrompt.js +1 -1
  191. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  192. package/dist/src/ui/components/StatsDisplay.js +6 -11
  193. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  194. package/dist/src/ui/components/SuggestionsDisplay.d.ts +13 -1
  195. package/dist/src/ui/components/SuggestionsDisplay.js +22 -3
  196. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  197. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +1 -0
  198. package/dist/src/ui/components/messages/ToolGroupMessage.js +14 -14
  199. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  200. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +1 -0
  201. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  202. package/dist/src/ui/containers/SessionController.js +61 -117
  203. package/dist/src/ui/containers/SessionController.js.map +1 -1
  204. package/dist/src/ui/contexts/RuntimeContext.d.ts +61 -0
  205. package/dist/src/ui/contexts/RuntimeContext.js +118 -0
  206. package/dist/src/ui/contexts/RuntimeContext.js.map +1 -0
  207. package/dist/src/ui/contexts/TodoProvider.d.ts +1 -0
  208. package/dist/src/ui/contexts/TodoProvider.js +10 -8
  209. package/dist/src/ui/contexts/TodoProvider.js.map +1 -1
  210. package/dist/src/ui/contexts/ToolCallProvider.d.ts +1 -0
  211. package/dist/src/ui/contexts/ToolCallProvider.js +10 -9
  212. package/dist/src/ui/contexts/ToolCallProvider.js.map +1 -1
  213. package/dist/src/ui/hooks/__tests__/useSlashCompletion.set.phase09.test.d.ts +6 -0
  214. package/dist/src/ui/hooks/__tests__/useSlashCompletion.set.phase09.test.js +39 -0
  215. package/dist/src/ui/hooks/__tests__/useSlashCompletion.set.phase09.test.js.map +1 -0
  216. package/dist/src/ui/hooks/atCommandProcessor.js +11 -3
  217. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  218. package/dist/src/ui/hooks/atCommandProcessor.test.js +3 -1
  219. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  220. package/dist/src/ui/hooks/shellCommandProcessor.js +4 -1
  221. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  222. package/dist/src/ui/hooks/shellCommandProcessor.test.js +1 -0
  223. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
  224. package/dist/src/ui/hooks/slashCommandProcessor.js +27 -1
  225. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  226. package/dist/src/ui/hooks/useAuthCommand.js +11 -3
  227. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  228. package/dist/src/ui/hooks/useCommandCompletion.d.ts +1 -0
  229. package/dist/src/ui/hooks/useCommandCompletion.js +2 -0
  230. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  231. package/dist/src/ui/hooks/useGeminiStream.js +37 -11
  232. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  233. package/dist/src/ui/hooks/useGeminiStream.subagent.spec.d.ts +6 -0
  234. package/dist/src/ui/hooks/useGeminiStream.subagent.spec.js +232 -0
  235. package/dist/src/ui/hooks/useGeminiStream.subagent.spec.js.map +1 -0
  236. package/dist/src/ui/hooks/useLoadProfileDialog.d.ts +1 -1
  237. package/dist/src/ui/hooks/useLoadProfileDialog.js +18 -57
  238. package/dist/src/ui/hooks/useLoadProfileDialog.js.map +1 -1
  239. package/dist/src/ui/hooks/useOpenAIProviderInfo.d.ts +1 -1
  240. package/dist/src/ui/hooks/useOpenAIProviderInfo.js +12 -7
  241. package/dist/src/ui/hooks/useOpenAIProviderInfo.js.map +1 -1
  242. package/dist/src/ui/hooks/useProviderDialog.d.ts +1 -1
  243. package/dist/src/ui/hooks/useProviderDialog.js +17 -90
  244. package/dist/src/ui/hooks/useProviderDialog.js.map +1 -1
  245. package/dist/src/ui/hooks/useProviderModelDialog.d.ts +2 -2
  246. package/dist/src/ui/hooks/useProviderModelDialog.js +11 -12
  247. package/dist/src/ui/hooks/useProviderModelDialog.js.map +1 -1
  248. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +3 -1
  249. package/dist/src/ui/hooks/useReactToolScheduler.js +144 -34
  250. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  251. package/dist/src/ui/hooks/useSlashCompletion.d.ts +32 -0
  252. package/dist/src/ui/hooks/useSlashCompletion.js +154 -77
  253. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  254. package/dist/src/ui/hooks/useSlashCompletion.test.js +39 -14
  255. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  256. package/dist/src/ui/hooks/useToolScheduler.test.js +108 -79
  257. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  258. package/dist/src/ui/types.d.ts +1 -0
  259. package/dist/src/ui/types.js.map +1 -1
  260. package/dist/src/utils/sandbox.js +7 -5
  261. package/dist/src/utils/sandbox.js.map +1 -1
  262. package/dist/src/validateNonInterActiveAuth.js +4 -2
  263. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  264. package/dist/src/zed-integration/schema.d.ts +30 -30
  265. package/dist/src/zed-integration/zedIntegration.js +112 -39
  266. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  267. package/dist/tsconfig.build.tsbuildinfo +1 -0
  268. package/package.json +5 -3
  269. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,190 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { AsyncLocalStorage } from 'node:async_hooks';
7
+ import * as os from 'node:os';
8
+ import * as path from 'node:path';
9
+ import { Config, MultiProviderTokenStore, ProviderManager, SettingsService, clearActiveProviderRuntimeContext, createProviderRuntimeContext, flushRuntimeAuthScope, ProfileManager, SubagentManager, } from '@vybestack/llxprt-code-core';
10
+ import { OAuthManager } from '../auth/oauth-manager.js';
11
+ const DEFAULT_MODEL = 'gemini-1.5-flash';
12
+ const DEFAULT_DEBUG_MODE = false;
13
+ let sharedTokenStore = null;
14
+ let activationBindings = null;
15
+ let runtimeCounter = 0;
16
+ const runtimeScope = new AsyncLocalStorage();
17
+ export function enterRuntimeScope(scope) {
18
+ runtimeScope.enterWith(scope);
19
+ }
20
+ export function runWithRuntimeScope(scope, callback) {
21
+ return runtimeScope.run(scope, callback);
22
+ }
23
+ export function getCurrentRuntimeScope() {
24
+ return runtimeScope.getStore();
25
+ }
26
+ /**
27
+ * @plan:PLAN-20251018-STATELESSPROVIDER2.P03
28
+ * @requirement:REQ-SP2-002
29
+ * @pseudocode multi-runtime-baseline.md lines 6-6
30
+ * Cache CLI activation bindings (reset/context/infrastructure/link) for deterministic invocation.
31
+ */
32
+ export function registerIsolatedRuntimeBindings(bindings) {
33
+ activationBindings = bindings;
34
+ }
35
+ /**
36
+ * @plan:PLAN-20251018-STATELESSPROVIDER2.P03
37
+ * @requirement:REQ-SP2-002
38
+ * @pseudocode multi-runtime-baseline.md lines 2-5
39
+ * Construct an isolated runtime using shared immutable resources and scoped services.
40
+ */
41
+ export function createIsolatedRuntimeContext(options = {}) {
42
+ if (!activationBindings) {
43
+ throw new Error('Isolated runtime activation bindings must be registered before creating contexts.');
44
+ }
45
+ const runtimeId = options.runtimeId ??
46
+ `cli-isolated-${Date.now().toString(16)}-${(runtimeCounter += 1).toString(16)}`;
47
+ const workspaceDir = options.workspaceDir ?? process.cwd();
48
+ const baseMetadata = {
49
+ source: 'cli-isolated-runtime-factory',
50
+ ...(options.metadata ?? {}),
51
+ };
52
+ const settingsService = options.config?.getSettingsService() ??
53
+ options.settingsService ??
54
+ new SettingsService();
55
+ const model = options.model ?? DEFAULT_MODEL;
56
+ const debugMode = options.debugMode ?? DEFAULT_DEBUG_MODE;
57
+ const config = options.config ??
58
+ new Config({
59
+ sessionId: runtimeId,
60
+ targetDir: workspaceDir,
61
+ debugMode,
62
+ cwd: workspaceDir,
63
+ model,
64
+ settingsService,
65
+ });
66
+ const configWithManagers = config;
67
+ const optionsConfigWithManagers = options.config;
68
+ const llxprtDir = path.join(os.homedir(), '.llxprt');
69
+ const resolvedProfileManager = optionsConfigWithManagers?.getProfileManager?.() ??
70
+ configWithManagers.getProfileManager?.() ??
71
+ new ProfileManager(path.join(llxprtDir, 'profiles'));
72
+ const resolvedSubagentManager = optionsConfigWithManagers?.getSubagentManager?.() ??
73
+ configWithManagers.getSubagentManager?.() ??
74
+ new SubagentManager(path.join(llxprtDir, 'subagents'), resolvedProfileManager);
75
+ configWithManagers.setProfileManager?.(resolvedProfileManager);
76
+ configWithManagers.setSubagentManager?.(resolvedSubagentManager);
77
+ const resolvedSettingsService = config.getSettingsService() ?? settingsService;
78
+ const tokenStore = sharedTokenStore ?? (sharedTokenStore = new MultiProviderTokenStore()); // Step 1 (multi-runtime-baseline.md line 2) keeps token storage shared.
79
+ const oauthManager = options.oauthManager ?? new OAuthManager(tokenStore);
80
+ const initialRuntimeContext = createProviderRuntimeContext({
81
+ settingsService: resolvedSettingsService,
82
+ config,
83
+ runtimeId,
84
+ metadata: baseMetadata,
85
+ });
86
+ const providerManager = new ProviderManager({
87
+ runtime: initialRuntimeContext,
88
+ settingsService: resolvedSettingsService,
89
+ config,
90
+ });
91
+ let currentRuntimeId = runtimeId;
92
+ let currentMetadata = baseMetadata;
93
+ let active = false;
94
+ /**
95
+ * @plan:PLAN-20251018-STATELESSPROVIDER2.P03
96
+ * @requirement:REQ-SP2-002
97
+ * @pseudocode multi-runtime-baseline.md lines 7-7
98
+ * Execute the activation flow in the reset → context → infrastructure → link order per Step 6.
99
+ */
100
+ const activate = async (activationOptions) => {
101
+ if (!activationBindings) {
102
+ throw new Error('Isolated runtime activation bindings must be registered before activation.');
103
+ }
104
+ const bindings = activationBindings;
105
+ currentRuntimeId = activationOptions?.runtimeId ?? runtimeId;
106
+ currentMetadata = {
107
+ ...baseMetadata,
108
+ ...(activationOptions?.metadata ?? {}),
109
+ };
110
+ const scope = {
111
+ runtimeId: currentRuntimeId,
112
+ metadata: currentMetadata,
113
+ };
114
+ enterRuntimeScope(scope);
115
+ await runWithRuntimeScope(scope, async () => {
116
+ const scopedRuntime = createProviderRuntimeContext({
117
+ settingsService: resolvedSettingsService,
118
+ config,
119
+ runtimeId: currentRuntimeId,
120
+ metadata: currentMetadata,
121
+ });
122
+ providerManager.runtime = scopedRuntime;
123
+ await Promise.resolve(bindings.resetInfrastructure());
124
+ await Promise.resolve(bindings.setRuntimeContext(resolvedSettingsService, config, {
125
+ runtimeId: currentRuntimeId,
126
+ metadata: currentMetadata,
127
+ }));
128
+ if (options.prepare) {
129
+ await options.prepare({
130
+ config,
131
+ settingsService: resolvedSettingsService,
132
+ providerManager,
133
+ oauthManager,
134
+ runtimeId: currentRuntimeId,
135
+ metadata: currentMetadata,
136
+ });
137
+ }
138
+ await Promise.resolve(bindings.registerInfrastructure(providerManager, oauthManager));
139
+ await Promise.resolve(bindings.linkProviderManager(config, providerManager));
140
+ active = true;
141
+ });
142
+ };
143
+ /**
144
+ * @plan:PLAN-20251018-STATELESSPROVIDER2.P03
145
+ * @requirement:REQ-SP2-002
146
+ * @pseudocode multi-runtime-baseline.md lines 8-8
147
+ * Clear activation state and invoke onCleanup hooks in the reverse order detailed in Step 7.
148
+ */
149
+ const cleanup = async () => {
150
+ if (!active && !options.onCleanup) {
151
+ return;
152
+ }
153
+ const scope = {
154
+ runtimeId: currentRuntimeId,
155
+ metadata: currentMetadata,
156
+ };
157
+ const bindings = activationBindings;
158
+ await runWithRuntimeScope(scope, async () => {
159
+ if (bindings) {
160
+ await Promise.resolve(bindings.resetInfrastructure());
161
+ }
162
+ clearActiveProviderRuntimeContext();
163
+ const revocation = flushRuntimeAuthScope(currentRuntimeId);
164
+ if (options.onCleanup) {
165
+ await options.onCleanup({
166
+ config,
167
+ settingsService: resolvedSettingsService,
168
+ providerManager,
169
+ runtimeId: currentRuntimeId,
170
+ metadata: currentMetadata,
171
+ });
172
+ }
173
+ if (bindings?.disposeRuntime) {
174
+ await Promise.resolve(bindings.disposeRuntime(currentRuntimeId, revocation));
175
+ }
176
+ });
177
+ active = false;
178
+ };
179
+ return {
180
+ runtimeId,
181
+ metadata: baseMetadata,
182
+ settingsService: resolvedSettingsService,
183
+ config,
184
+ providerManager,
185
+ oauthManager,
186
+ activate,
187
+ cleanup,
188
+ };
189
+ }
190
+ //# sourceMappingURL=runtimeContextFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeContextFactory.js","sourceRoot":"","sources":["../../../src/runtime/runtimeContextFactory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Config, ProviderRuntimeContext, SettingsService, AuthType } from '@vybestack/llxprt-code-core';
7
+ import type { ProviderManager, Profile, IModel } from '@vybestack/llxprt-code-core';
8
+ import { OAuthManager } from '../auth/oauth-manager.js';
9
+ import type { HistoryItemWithoutId } from '../ui/types.js';
10
+ import type { LoadedSettings } from '../config/settings.js';
11
+ import { createIsolatedRuntimeContext as createIsolatedRuntimeContextInternal, type IsolatedRuntimeActivationOptions, type IsolatedRuntimeContextHandle } from './runtimeContextFactory.js';
12
+ export { createIsolatedRuntimeContextInternal as createIsolatedRuntimeContext };
13
+ export type { IsolatedRuntimeActivationOptions, IsolatedRuntimeContextHandle, IsolatedRuntimeContextOptions, } from './runtimeContextFactory.js';
14
+ export type StatelessHardeningPreference = 'legacy' | 'strict';
15
+ /**
16
+ * @plan:PLAN-20251023-STATELESS-HARDENING.P07
17
+ * @requirement:REQ-SP4-005
18
+ * Configure the global CLI stateless guard preference. Tests and CLI bootstrap
19
+ * can call this to opt into strict guards without environment toggles.
20
+ */
21
+ export declare function configureCliStatelessHardening(preference: StatelessHardeningPreference | null): void;
22
+ /**
23
+ * @plan:PLAN-20251023-STATELESS-HARDENING.P07
24
+ * @requirement:REQ-SP4-005
25
+ */
26
+ export declare function getCliStatelessHardeningOverride(): StatelessHardeningPreference | null;
27
+ /**
28
+ * @plan:PLAN-20251023-STATELESS-HARDENING.P07
29
+ * @requirement:REQ-SP4-005
30
+ * Reports the currently resolved stateless hardening preference.
31
+ */
32
+ export declare function getCliStatelessHardeningPreference(): StatelessHardeningPreference;
33
+ export declare function isCliStatelessProviderModeEnabled(): boolean;
34
+ export interface CliRuntimeServices {
35
+ settingsService: SettingsService;
36
+ config: Config;
37
+ providerManager: ProviderManager;
38
+ }
39
+ /**
40
+ * @plan:PLAN-20251023-STATELESS-HARDENING.P08
41
+ * @requirement:REQ-SP4-004
42
+ * @requirement:REQ-SP4-005
43
+ *
44
+ * Acquire the active provider runtime context that CLI bootstrap registered.
45
+ * Throws if the runtime has not yet been initialised.
46
+ *
47
+ * When stateless hardening is enabled, this enforces that all required
48
+ * services (settingsService, config) are present in the runtime registry
49
+ * before allowing provider operations.
50
+ */
51
+ export declare function getCliRuntimeContext(): ProviderRuntimeContext;
52
+ /**
53
+ * Obtain the services that CLI surfaces through the runtime context.
54
+ */
55
+ export declare function getCliRuntimeServices(): CliRuntimeServices;
56
+ export declare function getCliProviderManager(options?: {
57
+ allowBrowserEnvironment?: boolean;
58
+ settings?: LoadedSettings;
59
+ addItem?: (itemData: Omit<HistoryItemWithoutId, 'id'>, baseTimestamp: number) => number;
60
+ }): ProviderManager;
61
+ export declare function isCliRuntimeStatelessReady(): boolean;
62
+ /**
63
+ * @plan:PLAN-20251023-STATELESS-HARDENING.P08
64
+ * @requirement:REQ-SP4-004
65
+ * @requirement:REQ-SP4-005
66
+ *
67
+ * Ensure the active provider runtime context is normalized and pushed into
68
+ * ProviderManager before any provider invocation. This function enforces
69
+ * stateless provider guarantees by requiring explicit runtime-scoped services
70
+ * (settings, config, userMemory) before execution.
71
+ *
72
+ * When stateless hardening is enabled (runtime metadata/global preference),
73
+ * this helper normalizes the current runtime context and registers it with
74
+ * ProviderManager so downstream providers always receive call-scoped
75
+ * configuration without relying on singleton fallbacks.
76
+ */
77
+ export declare function ensureStatelessProviderReady(): void;
78
+ /**
79
+ * @plan:PLAN-20251018-STATELESSPROVIDER2.P03
80
+ * @requirement:REQ-SP2-002
81
+ * @pseudocode multi-runtime-baseline.md lines 7-7
82
+ * Delegate helper that activates an isolated runtime while merging metadata overrides per Step 6.
83
+ */
84
+ export declare function activateIsolatedRuntimeContext(handle: IsolatedRuntimeContextHandle, options?: IsolatedRuntimeActivationOptions): Promise<void>;
85
+ export declare function registerCliProviderInfrastructure(manager: ProviderManager, oauthManager: OAuthManager): void;
86
+ export declare function resetCliProviderInfrastructure(runtimeId?: string): void;
87
+ export declare function getCliOAuthManager(): OAuthManager | null;
88
+ /**
89
+ * Accessor for the active CLI Config instance registered with the runtime
90
+ * context. Throws if the bootstrap failed to attach the Config.
91
+ */
92
+ export declare function getCliRuntimeConfig(): Config;
93
+ export declare function getActiveModelName(): string;
94
+ export declare function getActiveProviderStatus(): ProviderRuntimeStatus;
95
+ export declare function listAvailableModels(providerName?: string): Promise<IModel[]>;
96
+ export declare function getActiveProviderMetrics(): ReturnType<ProviderManager['getProviderMetrics']>;
97
+ export declare function getSessionTokenUsage(): {
98
+ input: number;
99
+ output: number;
100
+ cache: number;
101
+ tool: number;
102
+ thought: number;
103
+ total: number;
104
+ };
105
+ export declare function getEphemeralSettings(): Record<string, unknown>;
106
+ export declare function getEphemeralSetting(key: string): unknown;
107
+ export declare function setEphemeralSetting(key: string, value: unknown): void;
108
+ export declare function clearEphemeralSetting(key: string): void;
109
+ export declare function getActiveModelParams(): Record<string, unknown>;
110
+ export declare function setActiveModelParam(name: string, value: unknown): void;
111
+ export declare function clearActiveModelParam(name: string): void;
112
+ export declare function buildRuntimeProfileSnapshot(): Profile;
113
+ export interface ProfileLoadOptions {
114
+ profileName?: string;
115
+ }
116
+ export interface ProfileLoadResult {
117
+ profileName?: string;
118
+ providerName: string;
119
+ modelName: string;
120
+ infoMessages: string[];
121
+ warnings: string[];
122
+ providerChanged: boolean;
123
+ authType?: AuthType;
124
+ baseUrl?: string;
125
+ didFallback: boolean;
126
+ requestedProvider: string | null;
127
+ }
128
+ export interface RuntimeDiagnosticsSnapshot {
129
+ providerName: string | null;
130
+ modelName: string | null;
131
+ profileName: string | null;
132
+ modelParams: Record<string, unknown>;
133
+ ephemeralSettings: Record<string, unknown>;
134
+ }
135
+ export declare function applyProfileSnapshot(profile: Profile, options?: ProfileLoadOptions): Promise<ProfileLoadResult>;
136
+ export declare function saveProfileSnapshot(profileName: string): Promise<Profile>;
137
+ export declare function loadProfileByName(profileName: string): Promise<ProfileLoadResult>;
138
+ export declare function deleteProfileByName(profileName: string): Promise<void>;
139
+ export declare function listSavedProfiles(): Promise<string[]>;
140
+ export declare function getActiveProfileName(): string | null;
141
+ export declare function setDefaultProfileName(profileName: string | null): void;
142
+ export declare function getRuntimeDiagnosticsSnapshot(): RuntimeDiagnosticsSnapshot;
143
+ export declare function listProviders(): string[];
144
+ export declare function getActiveProviderName(): string;
145
+ /**
146
+ * Register or update the active CLI runtime context.
147
+ */
148
+ export declare function setCliRuntimeContext(settingsService: SettingsService, config?: Config, options?: {
149
+ metadata?: ProviderRuntimeContext['metadata'];
150
+ runtimeId?: string;
151
+ }): void;
152
+ export interface ProviderSwitchResult {
153
+ changed: boolean;
154
+ previousProvider: string | null;
155
+ nextProvider: string;
156
+ defaultModel?: string;
157
+ authType?: AuthType;
158
+ infoMessages: string[];
159
+ }
160
+ export interface ApiKeyUpdateResult {
161
+ changed: boolean;
162
+ providerName: string;
163
+ message: string;
164
+ isPaidMode?: boolean;
165
+ authType?: AuthType;
166
+ }
167
+ export interface BaseUrlUpdateResult {
168
+ changed: boolean;
169
+ providerName: string;
170
+ message: string;
171
+ baseUrl?: string;
172
+ }
173
+ export interface ToolFormatState {
174
+ providerName: string;
175
+ currentFormat: string | null;
176
+ override: string | null;
177
+ isAutoDetected: boolean;
178
+ }
179
+ export type ToolFormatOverrideLiteral = 'auto' | 'openai' | 'qwen' | 'hermes' | 'xml' | 'anthropic' | 'deepseek' | 'gemma' | 'llama';
180
+ export interface ProviderRuntimeStatus {
181
+ providerName: string | null;
182
+ modelName: string | null;
183
+ displayLabel: string;
184
+ isPaidMode?: boolean;
185
+ authType?: AuthType;
186
+ baseURL?: string;
187
+ }
188
+ /**
189
+ * Switch the active provider using the runtime context, updating Config and
190
+ * SettingsService consistently.
191
+ *
192
+ * @plan:PLAN-20250218-STATELESSPROVIDER.P06
193
+ * @requirement:REQ-SP-005
194
+ * @pseudocode:cli-runtime.md lines 9-10
195
+ */
196
+ export declare function switchActiveProvider(providerName: string, options?: {
197
+ autoOAuth?: boolean;
198
+ }): Promise<ProviderSwitchResult>;
199
+ export interface ModelChangeResult {
200
+ providerName: string;
201
+ previousModel?: string;
202
+ nextModel: string;
203
+ authRefreshed: boolean;
204
+ }
205
+ export declare function updateActiveProviderApiKey(apiKey: string | null): Promise<ApiKeyUpdateResult>;
206
+ export declare function updateActiveProviderBaseUrl(baseUrl: string | null): Promise<BaseUrlUpdateResult>;
207
+ export declare function getActiveToolFormatState(): Promise<ToolFormatState>;
208
+ export declare function setActiveToolFormatOverride(formatName: ToolFormatOverrideLiteral | null): Promise<ToolFormatState>;
209
+ /**
210
+ * Update the active model for the current provider while keeping Config and
211
+ * SettingsService in sync.
212
+ *
213
+ * @plan:PLAN-20250218-STATELESSPROVIDER.P06
214
+ * @requirement:REQ-SP-005
215
+ * @pseudocode:cli-runtime.md line 10
216
+ */
217
+ export declare function setActiveModel(modelName: string): Promise<ModelChangeResult>;