@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.
- package/dist/package.json +7 -5
- package/dist/src/auth/__tests__/oauthManager.safety.test.d.ts +6 -0
- package/dist/src/auth/__tests__/oauthManager.safety.test.js +49 -0
- package/dist/src/auth/__tests__/oauthManager.safety.test.js.map +1 -0
- package/dist/src/auth/oauth-manager.d.ts +16 -0
- package/dist/src/auth/oauth-manager.js +81 -29
- package/dist/src/auth/oauth-manager.js.map +1 -1
- package/dist/src/auth/oauth-manager.spec.js +7 -2
- package/dist/src/auth/oauth-manager.spec.js.map +1 -1
- package/dist/src/commands/extensions.js +1 -1
- package/dist/src/commands/extensions.js.map +1 -1
- package/dist/src/config/__tests__/nonInteractiveTools.test.d.ts +6 -0
- package/dist/src/config/__tests__/nonInteractiveTools.test.js +13 -0
- package/dist/src/config/__tests__/nonInteractiveTools.test.js.map +1 -0
- package/dist/src/config/__tests__/profileBootstrap.test.d.ts +6 -0
- package/dist/src/config/__tests__/profileBootstrap.test.js +91 -0
- package/dist/src/config/__tests__/profileBootstrap.test.js.map +1 -0
- package/dist/src/config/config.d.ts +7 -2
- package/dist/src/config/config.js +225 -10
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.loadMemory.test.js +1 -0
- package/dist/src/config/config.loadMemory.test.js.map +1 -1
- package/dist/src/config/profileBootstrap.d.ts +64 -0
- package/dist/src/config/profileBootstrap.js +140 -0
- package/dist/src/config/profileBootstrap.js.map +1 -0
- package/dist/src/config/settings.env.test.d.ts +6 -0
- package/dist/src/config/settings.env.test.js +38 -0
- package/dist/src/config/settings.env.test.js.map +1 -0
- package/dist/src/config/settings.js +2 -2
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/gemini.js +70 -25
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +1 -2
- package/dist/src/gemini.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +1 -1
- package/dist/src/generated/git-commit.js +1 -1
- package/dist/src/integration-tests/base-url-behavior.integration.test.js +110 -450
- package/dist/src/integration-tests/base-url-behavior.integration.test.js.map +1 -1
- package/dist/src/integration-tests/model-params-isolation.integration.test.js +101 -539
- package/dist/src/integration-tests/model-params-isolation.integration.test.js.map +1 -1
- package/dist/src/integration-tests/modelParams.integration.test.js +86 -761
- package/dist/src/integration-tests/modelParams.integration.test.js.map +1 -1
- package/dist/src/integration-tests/provider-multi-runtime.integration.test.d.ts +6 -0
- package/dist/src/integration-tests/provider-multi-runtime.integration.test.js +198 -0
- package/dist/src/integration-tests/provider-multi-runtime.integration.test.js.map +1 -0
- package/dist/src/integration-tests/provider-switching.integration.test.js +97 -151
- package/dist/src/integration-tests/provider-switching.integration.test.js.map +1 -1
- package/dist/src/integration-tests/runtime-isolation.test.d.ts +13 -0
- package/dist/src/integration-tests/runtime-isolation.test.js +170 -0
- package/dist/src/integration-tests/runtime-isolation.test.js.map +1 -0
- package/dist/src/integration-tests/test-utils.js +19 -2
- package/dist/src/integration-tests/test-utils.js.map +1 -1
- package/dist/src/integration-tests/test-utils.test.js +9 -8
- package/dist/src/integration-tests/test-utils.test.js.map +1 -1
- package/dist/src/integration-tests/todo-continuation.integration.test.js +5 -2
- package/dist/src/integration-tests/todo-continuation.integration.test.js.map +1 -1
- package/dist/src/integration-tests/tools-governance.integration.test.d.ts +6 -0
- package/dist/src/integration-tests/tools-governance.integration.test.js +98 -0
- package/dist/src/integration-tests/tools-governance.integration.test.js.map +1 -0
- package/dist/src/nonInteractiveCli.js +36 -11
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/providers/logging/git-stats.test.js +11 -1
- package/dist/src/providers/logging/git-stats.test.js.map +1 -1
- package/dist/src/providers/logging/multi-provider-logging.integration.test.js +1 -2
- package/dist/src/providers/logging/multi-provider-logging.integration.test.js.map +1 -1
- package/dist/src/providers/logging/performance.test.js +1 -1
- package/dist/src/providers/logging/performance.test.js.map +1 -1
- package/dist/src/providers/oauth-provider-registration.d.ts +2 -2
- package/dist/src/providers/oauth-provider-registration.js +25 -9
- package/dist/src/providers/oauth-provider-registration.js.map +1 -1
- package/dist/src/providers/provider-gemini-switching.test.js +67 -89
- package/dist/src/providers/provider-gemini-switching.test.js.map +1 -1
- package/dist/src/providers/provider-switching.integration.test.js +42 -98
- package/dist/src/providers/provider-switching.integration.test.js.map +1 -1
- package/dist/src/providers/providerConfigUtils.d.ts +12 -7
- package/dist/src/providers/providerConfigUtils.js +31 -99
- package/dist/src/providers/providerConfigUtils.js.map +1 -1
- package/dist/src/providers/providerManagerInstance.d.ts +17 -1
- package/dist/src/providers/providerManagerInstance.js +157 -175
- package/dist/src/providers/providerManagerInstance.js.map +1 -1
- package/dist/src/providers/providerManagerInstance.oauthRegistration.test.js +19 -15
- package/dist/src/providers/providerManagerInstance.oauthRegistration.test.js.map +1 -1
- package/dist/src/providers/providerManagerInstance.test.js +2 -5
- package/dist/src/providers/providerManagerInstance.test.js.map +1 -1
- package/dist/src/runtime/__tests__/profileApplication.test.d.ts +5 -0
- package/dist/src/runtime/__tests__/profileApplication.test.js +232 -0
- package/dist/src/runtime/__tests__/profileApplication.test.js.map +1 -0
- package/dist/src/runtime/__tests__/runtimeIsolation.test.d.ts +5 -0
- package/dist/src/runtime/__tests__/runtimeIsolation.test.js +376 -0
- package/dist/src/runtime/__tests__/runtimeIsolation.test.js.map +1 -0
- package/dist/src/runtime/agentRuntimeAdapter.d.ts +249 -0
- package/dist/src/runtime/agentRuntimeAdapter.js +506 -0
- package/dist/src/runtime/agentRuntimeAdapter.js.map +1 -0
- package/dist/src/runtime/agentRuntimeAdapter.spec.d.ts +6 -0
- package/dist/src/runtime/agentRuntimeAdapter.spec.js +866 -0
- package/dist/src/runtime/agentRuntimeAdapter.spec.js.map +1 -0
- package/dist/src/runtime/messages.d.ts +28 -0
- package/dist/src/runtime/messages.js +64 -0
- package/dist/src/runtime/messages.js.map +1 -0
- package/dist/src/runtime/profileApplication.d.ts +33 -0
- package/dist/src/runtime/profileApplication.js +191 -0
- package/dist/src/runtime/profileApplication.js.map +1 -0
- package/dist/src/runtime/providerConfigUtils.test.d.ts +1 -0
- package/dist/src/runtime/providerConfigUtils.test.js +68 -0
- package/dist/src/runtime/providerConfigUtils.test.js.map +1 -0
- package/dist/src/runtime/runtimeContextFactory.d.ts +102 -0
- package/dist/src/runtime/runtimeContextFactory.js +190 -0
- package/dist/src/runtime/runtimeContextFactory.js.map +1 -0
- package/dist/src/runtime/runtimeSettings.d.ts +217 -0
- package/dist/src/runtime/runtimeSettings.js +1094 -0
- package/dist/src/runtime/runtimeSettings.js.map +1 -0
- package/dist/src/runtime/runtimeSettings.test.d.ts +1 -0
- package/dist/src/runtime/runtimeSettings.test.js +320 -0
- package/dist/src/runtime/runtimeSettings.test.js.map +1 -0
- package/dist/src/services/BuiltinCommandLoader.d.ts +13 -4
- package/dist/src/services/BuiltinCommandLoader.js +17 -4
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/services/McpPromptLoader.js +34 -13
- package/dist/src/services/McpPromptLoader.js.map +1 -1
- package/dist/src/settings/ephemeralSettings.js +3 -2
- package/dist/src/settings/ephemeralSettings.js.map +1 -1
- package/dist/src/test-utils/mockCommandContext.js +5 -2
- package/dist/src/test-utils/mockCommandContext.js.map +1 -1
- package/dist/src/ui/App.js +29 -49
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/commands/aboutCommand.js +29 -0
- package/dist/src/ui/commands/aboutCommand.js.map +1 -1
- package/dist/src/ui/commands/authCommand.js +15 -12
- package/dist/src/ui/commands/authCommand.js.map +1 -1
- package/dist/src/ui/commands/baseurlCommand.js +8 -44
- package/dist/src/ui/commands/baseurlCommand.js.map +1 -1
- package/dist/src/ui/commands/chatCommand.js +28 -12
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/diagnosticsCommand.d.ts +0 -3
- package/dist/src/ui/commands/diagnosticsCommand.js +40 -191
- package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -1
- package/dist/src/ui/commands/docsCommand.js +1 -1
- package/dist/src/ui/commands/docsCommand.js.map +1 -1
- package/dist/src/ui/commands/keyCommand.js +9 -58
- package/dist/src/ui/commands/keyCommand.js.map +1 -1
- package/dist/src/ui/commands/keyCommand.test.js +48 -102
- package/dist/src/ui/commands/keyCommand.test.js.map +1 -1
- package/dist/src/ui/commands/keyfileCommand.js +42 -93
- package/dist/src/ui/commands/keyfileCommand.js.map +1 -1
- package/dist/src/ui/commands/logoutCommand.js +2 -2
- package/dist/src/ui/commands/logoutCommand.js.map +1 -1
- package/dist/src/ui/commands/mcpCommand.js +29 -7
- package/dist/src/ui/commands/mcpCommand.js.map +1 -1
- package/dist/src/ui/commands/modelCommand.js +8 -59
- package/dist/src/ui/commands/modelCommand.js.map +1 -1
- package/dist/src/ui/commands/profileCommand.js +151 -267
- package/dist/src/ui/commands/profileCommand.js.map +1 -1
- package/dist/src/ui/commands/profileCommand.test.js +88 -344
- package/dist/src/ui/commands/profileCommand.test.js.map +1 -1
- package/dist/src/ui/commands/providerCommand.js +9 -3
- package/dist/src/ui/commands/providerCommand.js.map +1 -1
- package/dist/src/ui/commands/restoreCommand.js +38 -18
- package/dist/src/ui/commands/restoreCommand.js.map +1 -1
- package/dist/src/ui/commands/schema/argumentResolver.test.d.ts +6 -0
- package/dist/src/ui/commands/schema/argumentResolver.test.js +619 -0
- package/dist/src/ui/commands/schema/argumentResolver.test.js.map +1 -0
- package/dist/src/ui/commands/schema/index.d.ts +15 -0
- package/dist/src/ui/commands/schema/index.js +320 -0
- package/dist/src/ui/commands/schema/index.js.map +1 -0
- package/dist/src/ui/commands/schema/types.d.ts +61 -0
- package/dist/src/ui/commands/schema/types.js +12 -0
- package/dist/src/ui/commands/schema/types.js.map +1 -0
- package/dist/src/ui/commands/setCommand.js +641 -325
- package/dist/src/ui/commands/setCommand.js.map +1 -1
- package/dist/src/ui/commands/setCommand.test.js +92 -388
- package/dist/src/ui/commands/setCommand.test.js.map +1 -1
- package/dist/src/ui/commands/statusCommand.js +2 -2
- package/dist/src/ui/commands/statusCommand.js.map +1 -1
- package/dist/src/ui/commands/subagentCommand.d.ts +16 -0
- package/dist/src/ui/commands/subagentCommand.js +656 -0
- package/dist/src/ui/commands/subagentCommand.js.map +1 -0
- package/dist/src/ui/commands/test/setCommand.mutation.test.d.ts +6 -0
- package/dist/src/ui/commands/test/setCommand.mutation.test.js +132 -0
- package/dist/src/ui/commands/test/setCommand.mutation.test.js.map +1 -0
- package/dist/src/ui/commands/test/setCommand.phase09.test.d.ts +6 -0
- package/dist/src/ui/commands/test/setCommand.phase09.test.js +222 -0
- package/dist/src/ui/commands/test/setCommand.phase09.test.js.map +1 -0
- package/dist/src/ui/commands/test/subagentCommand.schema.test.d.ts +6 -0
- package/dist/src/ui/commands/test/subagentCommand.schema.test.js +125 -0
- package/dist/src/ui/commands/test/subagentCommand.schema.test.js.map +1 -0
- package/dist/src/ui/commands/test/subagentCommand.test.d.ts +1 -0
- package/dist/src/ui/commands/test/subagentCommand.test.js +589 -0
- package/dist/src/ui/commands/test/subagentCommand.test.js.map +1 -0
- package/dist/src/ui/commands/toolformatCommand.js +25 -98
- package/dist/src/ui/commands/toolformatCommand.js.map +1 -1
- package/dist/src/ui/commands/toolformatCommand.test.js +56 -102
- package/dist/src/ui/commands/toolformatCommand.test.js.map +1 -1
- package/dist/src/ui/commands/toolsCommand.js +187 -31
- package/dist/src/ui/commands/toolsCommand.js.map +1 -1
- package/dist/src/ui/commands/types.d.ts +11 -2
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/components/AboutBox.d.ts +4 -0
- package/dist/src/ui/components/AboutBox.js +1 -1
- package/dist/src/ui/components/AboutBox.js.map +1 -1
- package/dist/src/ui/components/AuthDialog.js +4 -3
- package/dist/src/ui/components/AuthDialog.js.map +1 -1
- package/dist/src/ui/components/AuthDialog.test.js +67 -1
- package/dist/src/ui/components/AuthDialog.test.js.map +1 -1
- package/dist/src/ui/components/Footer.js +4 -5
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.test.js +2 -0
- package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +18 -6
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.js +1 -1
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/StatsDisplay.js +6 -11
- package/dist/src/ui/components/StatsDisplay.js.map +1 -1
- package/dist/src/ui/components/SuggestionsDisplay.d.ts +13 -1
- package/dist/src/ui/components/SuggestionsDisplay.js +22 -3
- package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
- package/dist/src/ui/components/WorkspaceMigrationDialog.js +1 -1
- package/dist/src/ui/components/WorkspaceMigrationDialog.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +1 -0
- package/dist/src/ui/components/messages/ToolGroupMessage.js +14 -14
- package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js +1 -0
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.js +4 -1
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/containers/SessionController.js +61 -117
- package/dist/src/ui/containers/SessionController.js.map +1 -1
- package/dist/src/ui/contexts/RuntimeContext.d.ts +61 -0
- package/dist/src/ui/contexts/RuntimeContext.js +118 -0
- package/dist/src/ui/contexts/RuntimeContext.js.map +1 -0
- package/dist/src/ui/contexts/TodoProvider.d.ts +1 -0
- package/dist/src/ui/contexts/TodoProvider.js +10 -8
- package/dist/src/ui/contexts/TodoProvider.js.map +1 -1
- package/dist/src/ui/contexts/ToolCallProvider.d.ts +1 -0
- package/dist/src/ui/contexts/ToolCallProvider.js +10 -9
- package/dist/src/ui/contexts/ToolCallProvider.js.map +1 -1
- package/dist/src/ui/hooks/__tests__/useSlashCompletion.set.phase09.test.d.ts +6 -0
- package/dist/src/ui/hooks/__tests__/useSlashCompletion.set.phase09.test.js +39 -0
- package/dist/src/ui/hooks/__tests__/useSlashCompletion.set.phase09.test.js.map +1 -0
- package/dist/src/ui/hooks/atCommandProcessor.js +11 -3
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.test.js +3 -1
- package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.js +4 -1
- package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.test.js +1 -0
- package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.js +29 -1
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAuthCommand.js +11 -3
- package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
- package/dist/src/ui/hooks/useCommandCompletion.d.ts +1 -0
- package/dist/src/ui/hooks/useCommandCompletion.js +2 -0
- package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.js +37 -11
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.subagent.spec.d.ts +6 -0
- package/dist/src/ui/hooks/useGeminiStream.subagent.spec.js +232 -0
- package/dist/src/ui/hooks/useGeminiStream.subagent.spec.js.map +1 -0
- package/dist/src/ui/hooks/useLoadProfileDialog.d.ts +1 -1
- package/dist/src/ui/hooks/useLoadProfileDialog.js +18 -57
- package/dist/src/ui/hooks/useLoadProfileDialog.js.map +1 -1
- package/dist/src/ui/hooks/useOpenAIProviderInfo.d.ts +1 -1
- package/dist/src/ui/hooks/useOpenAIProviderInfo.js +12 -7
- package/dist/src/ui/hooks/useOpenAIProviderInfo.js.map +1 -1
- package/dist/src/ui/hooks/useProviderDialog.d.ts +1 -1
- package/dist/src/ui/hooks/useProviderDialog.js +17 -90
- package/dist/src/ui/hooks/useProviderDialog.js.map +1 -1
- package/dist/src/ui/hooks/useProviderModelDialog.d.ts +2 -2
- package/dist/src/ui/hooks/useProviderModelDialog.js +11 -12
- package/dist/src/ui/hooks/useProviderModelDialog.js.map +1 -1
- package/dist/src/ui/hooks/useReactToolScheduler.d.ts +3 -1
- package/dist/src/ui/hooks/useReactToolScheduler.js +144 -34
- package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.d.ts +32 -0
- package/dist/src/ui/hooks/useSlashCompletion.js +154 -77
- package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.test.js +39 -14
- package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js +108 -79
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +1 -1
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -1
- package/dist/src/ui/types.d.ts +5 -0
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.test.js +16 -0
- package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
- package/dist/src/ui/utils/TableRenderer.js +213 -40
- package/dist/src/ui/utils/TableRenderer.js.map +1 -1
- package/dist/src/utils/sandbox.js +1 -1
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/validateNonInterActiveAuth.js +4 -2
- package/dist/src/validateNonInterActiveAuth.js.map +1 -1
- package/dist/src/zed-integration/schema.d.ts +30 -30
- package/dist/src/zed-integration/zedIntegration.js +112 -39
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +7 -5
- 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 {
|
|
10
|
-
|
|
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
|
|
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
|
-
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
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,
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;
|
|
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(
|
|
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 {
|
|
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(
|
|
15
|
-
const
|
|
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(
|
|
18
|
-
}, [
|
|
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 =
|
|
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
|
-
}, [
|
|
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,
|
|
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 {
|
|
11
|
-
const
|
|
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
|
-
|
|
30
|
-
|
|
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
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
122
|
-
if (providerName !== 'gemini') {
|
|
49
|
+
for (const info of result.infoMessages) {
|
|
123
50
|
addMessage({
|
|
124
51
|
type: MessageType.INFO,
|
|
125
|
-
content:
|
|
52
|
+
content: info,
|
|
126
53
|
timestamp: new Date(),
|
|
127
54
|
});
|
|
128
55
|
}
|
|
129
|
-
setCurrentProvider(
|
|
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,
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,
|
|
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 '
|
|
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
|
|
18
|
-
const list = await provider.getModels();
|
|
18
|
+
const list = await runtime.listAvailableModels();
|
|
19
19
|
setModels(list);
|
|
20
|
-
setCurrentModel(
|
|
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
|
|
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 ${
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
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: (
|
|
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
|
*/
|