@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.
- package/dist/package.json +5 -3
- 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 +11 -0
- package/dist/src/auth/oauth-manager.js +62 -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/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 +6 -2
- package/dist/src/config/config.js +219 -18
- package/dist/src/config/config.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/gemini.js +68 -23
- 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/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 +59 -38
- package/dist/src/ui/commands/aboutCommand.js.map +1 -1
- package/dist/src/ui/commands/authCommand.js +7 -9
- 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 +45 -191
- package/dist/src/ui/commands/diagnosticsCommand.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 +674 -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 +598 -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/AuthDialog.js +16 -55
- package/dist/src/ui/components/AuthDialog.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/InputPrompt.js +1 -1
- package/dist/src/ui/components/InputPrompt.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/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/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 +27 -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/types.d.ts +1 -0
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/utils/sandbox.js +7 -5
- 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 +5 -3
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -7,7 +7,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
7
7
|
import { createContext, useMemo, useCallback, useEffect, useRef, useReducer, } from 'react';
|
|
8
8
|
import { MessageType } from '../types.js';
|
|
9
9
|
import { useHistory } from '../hooks/useHistoryManager.js';
|
|
10
|
-
import {
|
|
10
|
+
import { useRuntimeApi, getRuntimeApi } from '../contexts/RuntimeContext.js';
|
|
11
11
|
import { getErrorMessage } from '@vybestack/llxprt-code-core';
|
|
12
12
|
import { loadHierarchicalLlxprtMemory } from '../../config/config.js';
|
|
13
13
|
import { loadSettings } from '../../config/settings.js';
|
|
@@ -15,52 +15,17 @@ import process from 'node:process';
|
|
|
15
15
|
import { SessionStateProvider, useSessionState, } from '../contexts/SessionStateContext.js';
|
|
16
16
|
import { AppDispatchProvider } from '../contexts/AppDispatchContext.js';
|
|
17
17
|
import { appReducer, initialAppState, } from '../reducers/appReducer.js';
|
|
18
|
-
// Helper functions
|
|
19
|
-
function getDisplayModelName(config) {
|
|
20
|
-
try {
|
|
21
|
-
const providerManager = getProviderManager();
|
|
22
|
-
if (providerManager.hasActiveProvider()) {
|
|
23
|
-
const provider = providerManager.getActiveProvider();
|
|
24
|
-
const model = provider.getCurrentModel?.() || 'unknown';
|
|
25
|
-
return `${provider.name}:${model}`;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
catch (_e) {
|
|
29
|
-
// Fall back to config model if provider manager fails
|
|
30
|
-
}
|
|
31
|
-
return config.getModel();
|
|
32
|
-
}
|
|
33
|
-
function getProviderPaymentMode() {
|
|
34
|
-
try {
|
|
35
|
-
const providerManager = getProviderManager();
|
|
36
|
-
if (providerManager.hasActiveProvider()) {
|
|
37
|
-
const provider = providerManager.getActiveProvider();
|
|
38
|
-
return provider.isPaidMode?.();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
catch (_e) {
|
|
42
|
-
// Return undefined if we can't determine payment mode
|
|
43
|
-
}
|
|
44
|
-
return undefined;
|
|
45
|
-
}
|
|
46
18
|
// Create context
|
|
47
19
|
export const SessionContext = createContext(undefined);
|
|
48
20
|
export const SessionController = ({ children, config, isAuthenticating = false, }) => {
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
try {
|
|
52
|
-
const providerManager = getProviderManager();
|
|
53
|
-
return providerManager.getActiveProvider().name;
|
|
54
|
-
}
|
|
55
|
-
catch (_e) {
|
|
56
|
-
return undefined;
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
// Get initial state for the provider
|
|
21
|
+
const runtime = useRuntimeApi();
|
|
22
|
+
const statusSnapshot = runtime.getActiveProviderStatus();
|
|
60
23
|
const initialState = {
|
|
61
|
-
currentModel:
|
|
62
|
-
|
|
63
|
-
|
|
24
|
+
currentModel: statusSnapshot.providerName && statusSnapshot.modelName
|
|
25
|
+
? `${statusSnapshot.providerName}:${statusSnapshot.modelName}`
|
|
26
|
+
: (statusSnapshot.modelName ?? config.getModel()),
|
|
27
|
+
isPaidMode: statusSnapshot.isPaidMode,
|
|
28
|
+
lastProvider: statusSnapshot.providerName ?? undefined,
|
|
64
29
|
userTier: undefined,
|
|
65
30
|
transientWarnings: [],
|
|
66
31
|
};
|
|
@@ -76,16 +41,10 @@ const SessionControllerInner = ({ children, config, }) => {
|
|
|
76
41
|
const warningTimerRef = useRef(null);
|
|
77
42
|
// Check payment mode change function
|
|
78
43
|
const checkPaymentModeChange = useCallback((forcePreviousProvider) => {
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const provider = providerManager.getActiveProvider();
|
|
84
|
-
currentProviderName = provider.name;
|
|
85
|
-
}
|
|
86
|
-
catch (_e) {
|
|
87
|
-
// ignore
|
|
88
|
-
}
|
|
44
|
+
const runtime = getRuntimeApi();
|
|
45
|
+
const status = runtime.getActiveProviderStatus();
|
|
46
|
+
const newPaymentMode = status.isPaidMode;
|
|
47
|
+
const currentProviderName = status.providerName ?? undefined;
|
|
89
48
|
const previousProvider = forcePreviousProvider || sessionState.lastProvider;
|
|
90
49
|
const providerChanged = currentProviderName && currentProviderName !== previousProvider;
|
|
91
50
|
const paymentModeChanged = newPaymentMode !== sessionState.isPaidMode &&
|
|
@@ -94,41 +53,31 @@ const SessionControllerInner = ({ children, config, }) => {
|
|
|
94
53
|
(providerChanged || history.length > 0)) {
|
|
95
54
|
dispatch({ type: 'SET_PAID_MODE', payload: newPaymentMode });
|
|
96
55
|
dispatch({ type: 'SET_LAST_PROVIDER', payload: currentProviderName });
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
payload: [
|
|
106
|
-
`! PAID MODE: You are now using Gemini with API credentials - usage will be charged to your account`,
|
|
107
|
-
],
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
else if (newPaymentMode === false) {
|
|
111
|
-
dispatch({
|
|
112
|
-
type: 'SET_TRANSIENT_WARNINGS',
|
|
113
|
-
payload: [
|
|
114
|
-
`FREE MODE: You are now using Gemini with OAuth authentication - no charges will apply`,
|
|
115
|
-
],
|
|
116
|
-
});
|
|
117
|
-
}
|
|
56
|
+
if (status.providerName === 'gemini') {
|
|
57
|
+
if (newPaymentMode === true) {
|
|
58
|
+
dispatch({
|
|
59
|
+
type: 'SET_TRANSIENT_WARNINGS',
|
|
60
|
+
payload: [
|
|
61
|
+
`! PAID MODE: You are now using Gemini with API credentials - usage will be charged to your account`,
|
|
62
|
+
],
|
|
63
|
+
});
|
|
118
64
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
65
|
+
else if (newPaymentMode === false) {
|
|
66
|
+
dispatch({
|
|
67
|
+
type: 'SET_TRANSIENT_WARNINGS',
|
|
68
|
+
payload: [
|
|
69
|
+
`FREE MODE: You are now using Gemini with OAuth authentication - no charges will apply`,
|
|
70
|
+
],
|
|
71
|
+
});
|
|
122
72
|
}
|
|
123
|
-
// Clear the warning after 10 seconds
|
|
124
|
-
warningTimerRef.current = setTimeout(() => {
|
|
125
|
-
dispatch({ type: 'CLEAR_TRANSIENT_WARNINGS' });
|
|
126
|
-
warningTimerRef.current = null;
|
|
127
|
-
}, 10000);
|
|
128
73
|
}
|
|
129
|
-
|
|
130
|
-
|
|
74
|
+
if (warningTimerRef.current) {
|
|
75
|
+
clearTimeout(warningTimerRef.current);
|
|
131
76
|
}
|
|
77
|
+
warningTimerRef.current = setTimeout(() => {
|
|
78
|
+
dispatch({ type: 'CLEAR_TRANSIENT_WARNINGS' });
|
|
79
|
+
warningTimerRef.current = null;
|
|
80
|
+
}, 10000);
|
|
132
81
|
}
|
|
133
82
|
}, [
|
|
134
83
|
sessionState.isPaidMode,
|
|
@@ -172,51 +121,45 @@ const SessionControllerInner = ({ children, config, }) => {
|
|
|
172
121
|
// Watch for model changes
|
|
173
122
|
useEffect(() => {
|
|
174
123
|
const checkModelChange = () => {
|
|
175
|
-
const
|
|
124
|
+
const runtime = getRuntimeApi();
|
|
125
|
+
const status = runtime.getActiveProviderStatus();
|
|
126
|
+
const displayModel = status.providerName && status.modelName
|
|
127
|
+
? `${status.providerName}:${status.modelName}`
|
|
128
|
+
: (status.modelName ?? config.getModel());
|
|
176
129
|
if (displayModel !== sessionState.currentModel) {
|
|
177
130
|
dispatch({ type: 'SET_CURRENT_MODEL', payload: displayModel });
|
|
178
131
|
}
|
|
179
|
-
const paymentMode =
|
|
132
|
+
const paymentMode = status.isPaidMode;
|
|
180
133
|
if (paymentMode !== sessionState.isPaidMode) {
|
|
181
134
|
dispatch({ type: 'SET_PAID_MODE', payload: paymentMode });
|
|
182
135
|
if (paymentMode !== undefined &&
|
|
183
136
|
sessionState.isPaidMode !== undefined &&
|
|
184
137
|
history.length > 0) {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
payload: [
|
|
194
|
-
`! PAID MODE: You are now using Gemini with API credentials - usage will be charged to your account`,
|
|
195
|
-
],
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
else if (paymentMode === false) {
|
|
199
|
-
dispatch({
|
|
200
|
-
type: 'SET_TRANSIENT_WARNINGS',
|
|
201
|
-
payload: [
|
|
202
|
-
`FREE MODE: You are now using Gemini with OAuth authentication - no charges will apply`,
|
|
203
|
-
],
|
|
204
|
-
});
|
|
205
|
-
}
|
|
138
|
+
if (status.providerName === 'gemini') {
|
|
139
|
+
if (paymentMode === true) {
|
|
140
|
+
dispatch({
|
|
141
|
+
type: 'SET_TRANSIENT_WARNINGS',
|
|
142
|
+
payload: [
|
|
143
|
+
`! PAID MODE: You are now using Gemini with API credentials - usage will be charged to your account`,
|
|
144
|
+
],
|
|
145
|
+
});
|
|
206
146
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
147
|
+
else if (paymentMode === false) {
|
|
148
|
+
dispatch({
|
|
149
|
+
type: 'SET_TRANSIENT_WARNINGS',
|
|
150
|
+
payload: [
|
|
151
|
+
`FREE MODE: You are now using Gemini with OAuth authentication - no charges will apply`,
|
|
152
|
+
],
|
|
153
|
+
});
|
|
210
154
|
}
|
|
211
|
-
// Clear the warning after 10 seconds
|
|
212
|
-
warningTimerRef.current = setTimeout(() => {
|
|
213
|
-
dispatch({ type: 'CLEAR_TRANSIENT_WARNINGS' });
|
|
214
|
-
warningTimerRef.current = null;
|
|
215
|
-
}, 10000);
|
|
216
155
|
}
|
|
217
|
-
|
|
218
|
-
|
|
156
|
+
if (warningTimerRef.current) {
|
|
157
|
+
clearTimeout(warningTimerRef.current);
|
|
219
158
|
}
|
|
159
|
+
warningTimerRef.current = setTimeout(() => {
|
|
160
|
+
dispatch({ type: 'CLEAR_TRANSIENT_WARNINGS' });
|
|
161
|
+
warningTimerRef.current = null;
|
|
162
|
+
}, 10000);
|
|
220
163
|
}
|
|
221
164
|
}
|
|
222
165
|
};
|
|
@@ -235,6 +178,7 @@ const SessionControllerInner = ({ children, config, }) => {
|
|
|
235
178
|
history.length,
|
|
236
179
|
dispatch,
|
|
237
180
|
]);
|
|
181
|
+
// Flash fallback removed in main - no longer needed
|
|
238
182
|
// Handle ADD_ITEM actions
|
|
239
183
|
useEffect(() => {
|
|
240
184
|
if (appState.lastAddItemAction) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionController.js","sourceRoot":"","sources":["../../../../src/ui/containers/SessionController.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAc,EACZ,aAAa,EACb,OAAO,EACP,WAAW,EACX,SAAS,EACT,MAAM,EACN,UAAU,GACX,MAAM,OAAO,CAAC;AACf,OAAO,EAAe,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"SessionController.js","sourceRoot":"","sources":["../../../../src/ui/containers/SessionController.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import React, { type PropsWithChildren } from 'react';
|
|
7
|
+
import { clearActiveModelParam, deleteProfileByName, getActiveModelName, getActiveModelParams, getActiveProviderMetrics, getActiveProviderName, getActiveProviderStatus, getActiveToolFormatState, getCliOAuthManager, getCliProviderManager, getCliRuntimeServices, getEphemeralSetting, getEphemeralSettings, getRuntimeDiagnosticsSnapshot, listAvailableModels, listProviders, listSavedProfiles, loadProfileByName, registerCliProviderInfrastructure, saveProfileSnapshot, setActiveModel, setActiveModelParam, setActiveToolFormatOverride, setDefaultProfileName, setEphemeralSetting, switchActiveProvider, updateActiveProviderApiKey, updateActiveProviderBaseUrl, getSessionTokenUsage } from '../../runtime/runtimeSettings.js';
|
|
8
|
+
/**
|
|
9
|
+
* @plan PLAN-20251018-STATELESSPROVIDER2.P15
|
|
10
|
+
* @requirement REQ-SP2-003
|
|
11
|
+
* @pseudocode cli-runtime-isolation.md lines 4-10
|
|
12
|
+
* React bridge that binds CLI runtime helpers to the active runtime scope so UI commands remain isolated.
|
|
13
|
+
*/
|
|
14
|
+
declare const runtimeFunctions: {
|
|
15
|
+
readonly switchActiveProvider: typeof switchActiveProvider;
|
|
16
|
+
readonly listProviders: typeof listProviders;
|
|
17
|
+
readonly getActiveProviderName: typeof getActiveProviderName;
|
|
18
|
+
readonly setActiveModel: typeof setActiveModel;
|
|
19
|
+
readonly listAvailableModels: typeof listAvailableModels;
|
|
20
|
+
readonly getActiveModelName: typeof getActiveModelName;
|
|
21
|
+
readonly getActiveProviderStatus: typeof getActiveProviderStatus;
|
|
22
|
+
readonly getActiveModelParams: typeof getActiveModelParams;
|
|
23
|
+
readonly getEphemeralSettings: typeof getEphemeralSettings;
|
|
24
|
+
readonly setEphemeralSetting: typeof setEphemeralSetting;
|
|
25
|
+
readonly setActiveModelParam: typeof setActiveModelParam;
|
|
26
|
+
readonly clearActiveModelParam: typeof clearActiveModelParam;
|
|
27
|
+
readonly saveProfileSnapshot: typeof saveProfileSnapshot;
|
|
28
|
+
readonly loadProfileByName: typeof loadProfileByName;
|
|
29
|
+
readonly deleteProfileByName: typeof deleteProfileByName;
|
|
30
|
+
readonly listSavedProfiles: typeof listSavedProfiles;
|
|
31
|
+
readonly setDefaultProfileName: typeof setDefaultProfileName;
|
|
32
|
+
readonly updateActiveProviderBaseUrl: typeof updateActiveProviderBaseUrl;
|
|
33
|
+
readonly updateActiveProviderApiKey: typeof updateActiveProviderApiKey;
|
|
34
|
+
readonly getCliProviderManager: typeof getCliProviderManager;
|
|
35
|
+
readonly getCliOAuthManager: typeof getCliOAuthManager;
|
|
36
|
+
readonly registerCliProviderInfrastructure: typeof registerCliProviderInfrastructure;
|
|
37
|
+
readonly getRuntimeDiagnosticsSnapshot: typeof getRuntimeDiagnosticsSnapshot;
|
|
38
|
+
readonly getActiveToolFormatState: typeof getActiveToolFormatState;
|
|
39
|
+
readonly setActiveToolFormatOverride: typeof setActiveToolFormatOverride;
|
|
40
|
+
readonly getActiveProviderMetrics: typeof getActiveProviderMetrics;
|
|
41
|
+
readonly getSessionTokenUsage: typeof getSessionTokenUsage;
|
|
42
|
+
readonly getCliRuntimeServices: typeof getCliRuntimeServices;
|
|
43
|
+
readonly getEphemeralSetting: typeof getEphemeralSetting;
|
|
44
|
+
};
|
|
45
|
+
type RuntimeFunctions = typeof runtimeFunctions;
|
|
46
|
+
type RuntimeApi = {
|
|
47
|
+
[K in keyof RuntimeFunctions]: RuntimeFunctions[K];
|
|
48
|
+
};
|
|
49
|
+
interface RuntimeContextBridge {
|
|
50
|
+
runtimeId: string;
|
|
51
|
+
metadata: Record<string, unknown>;
|
|
52
|
+
api: RuntimeApi;
|
|
53
|
+
runWithScope<T>(callback: () => T): T;
|
|
54
|
+
enterScope(): void;
|
|
55
|
+
}
|
|
56
|
+
export declare const RuntimeContextProvider: React.FC<PropsWithChildren<unknown>>;
|
|
57
|
+
export declare function useRuntimeBridge(): RuntimeContextBridge;
|
|
58
|
+
export declare function useRuntimeApi(): RuntimeApi;
|
|
59
|
+
export declare function getRuntimeBridge(): RuntimeContextBridge;
|
|
60
|
+
export declare function getRuntimeApi(): RuntimeApi;
|
|
61
|
+
export {};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2025 Vybestack LLC
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
*/
|
|
7
|
+
import { createContext, useContext, useEffect, useMemo, } from 'react';
|
|
8
|
+
import { clearActiveModelParam, deleteProfileByName, getActiveModelName, getActiveModelParams, getActiveProviderMetrics, getActiveProviderName, getActiveProviderStatus, getActiveToolFormatState, getCliOAuthManager, getCliProviderManager, getCliRuntimeContext, getCliRuntimeServices, getEphemeralSetting, getEphemeralSettings, getRuntimeDiagnosticsSnapshot, listAvailableModels, listProviders, listSavedProfiles, loadProfileByName, registerCliProviderInfrastructure, saveProfileSnapshot, setActiveModel, setActiveModelParam, setActiveToolFormatOverride, setDefaultProfileName, setEphemeralSetting, switchActiveProvider, updateActiveProviderApiKey, updateActiveProviderBaseUrl, getSessionTokenUsage, } from '../../runtime/runtimeSettings.js';
|
|
9
|
+
import { enterRuntimeScope, runWithRuntimeScope, } from '../../runtime/runtimeContextFactory.js';
|
|
10
|
+
/**
|
|
11
|
+
* @plan PLAN-20251018-STATELESSPROVIDER2.P15
|
|
12
|
+
* @requirement REQ-SP2-003
|
|
13
|
+
* @pseudocode cli-runtime-isolation.md lines 4-10
|
|
14
|
+
* React bridge that binds CLI runtime helpers to the active runtime scope so UI commands remain isolated.
|
|
15
|
+
*/
|
|
16
|
+
const runtimeFunctions = {
|
|
17
|
+
switchActiveProvider,
|
|
18
|
+
listProviders,
|
|
19
|
+
getActiveProviderName,
|
|
20
|
+
setActiveModel,
|
|
21
|
+
listAvailableModels,
|
|
22
|
+
getActiveModelName,
|
|
23
|
+
getActiveProviderStatus,
|
|
24
|
+
getActiveModelParams,
|
|
25
|
+
getEphemeralSettings,
|
|
26
|
+
setEphemeralSetting,
|
|
27
|
+
setActiveModelParam,
|
|
28
|
+
clearActiveModelParam,
|
|
29
|
+
saveProfileSnapshot,
|
|
30
|
+
loadProfileByName,
|
|
31
|
+
deleteProfileByName,
|
|
32
|
+
listSavedProfiles,
|
|
33
|
+
setDefaultProfileName,
|
|
34
|
+
updateActiveProviderBaseUrl,
|
|
35
|
+
updateActiveProviderApiKey,
|
|
36
|
+
getCliProviderManager,
|
|
37
|
+
getCliOAuthManager,
|
|
38
|
+
registerCliProviderInfrastructure,
|
|
39
|
+
getRuntimeDiagnosticsSnapshot,
|
|
40
|
+
getActiveToolFormatState,
|
|
41
|
+
setActiveToolFormatOverride,
|
|
42
|
+
getActiveProviderMetrics,
|
|
43
|
+
getSessionTokenUsage,
|
|
44
|
+
getCliRuntimeServices,
|
|
45
|
+
getEphemeralSetting,
|
|
46
|
+
};
|
|
47
|
+
const RuntimeContext = createContext(null);
|
|
48
|
+
function makeRuntimeApi(runtimeId, metadata) {
|
|
49
|
+
const scope = { runtimeId, metadata };
|
|
50
|
+
const boundEntries = Object.entries(runtimeFunctions).map(([key, fn]) => {
|
|
51
|
+
if (typeof fn !== 'function') {
|
|
52
|
+
return [key, fn];
|
|
53
|
+
}
|
|
54
|
+
const wrapped = (...args) => runWithRuntimeScope(scope, () => fn(...args));
|
|
55
|
+
return [key, wrapped];
|
|
56
|
+
});
|
|
57
|
+
return Object.fromEntries(boundEntries);
|
|
58
|
+
}
|
|
59
|
+
function createBridge(runtimeId, metadata) {
|
|
60
|
+
const scope = { runtimeId, metadata };
|
|
61
|
+
const api = makeRuntimeApi(runtimeId, metadata);
|
|
62
|
+
return {
|
|
63
|
+
runtimeId,
|
|
64
|
+
metadata,
|
|
65
|
+
api,
|
|
66
|
+
runWithScope: (callback) => runWithRuntimeScope(scope, callback),
|
|
67
|
+
enterScope: () => enterRuntimeScope(scope),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
let latestBridge = null;
|
|
71
|
+
export const RuntimeContextProvider = ({ children, }) => {
|
|
72
|
+
const runtime = getCliRuntimeContext();
|
|
73
|
+
const runtimeId = (typeof runtime.runtimeId === 'string' && runtime.runtimeId.trim() !== ''
|
|
74
|
+
? runtime.runtimeId
|
|
75
|
+
: 'legacy-singleton') ?? 'legacy-singleton';
|
|
76
|
+
const bridge = useMemo(() => {
|
|
77
|
+
const normalizedMetadata = runtime.metadata ?? {};
|
|
78
|
+
return createBridge(runtimeId, normalizedMetadata);
|
|
79
|
+
}, [runtimeId, runtime]);
|
|
80
|
+
useEffect(() => {
|
|
81
|
+
bridge.enterScope();
|
|
82
|
+
latestBridge = bridge;
|
|
83
|
+
return () => {
|
|
84
|
+
if (latestBridge?.runtimeId === bridge.runtimeId) {
|
|
85
|
+
latestBridge = null;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
}, [bridge]);
|
|
89
|
+
return (_jsx(RuntimeContext.Provider, { value: bridge, children: children }));
|
|
90
|
+
};
|
|
91
|
+
export function useRuntimeBridge() {
|
|
92
|
+
const context = useContext(RuntimeContext);
|
|
93
|
+
if (!context) {
|
|
94
|
+
throw new Error('RuntimeContextProvider is missing from the component tree.');
|
|
95
|
+
}
|
|
96
|
+
return context;
|
|
97
|
+
}
|
|
98
|
+
export function useRuntimeApi() {
|
|
99
|
+
return useRuntimeBridge().api;
|
|
100
|
+
}
|
|
101
|
+
export function getRuntimeBridge() {
|
|
102
|
+
if (latestBridge) {
|
|
103
|
+
return latestBridge;
|
|
104
|
+
}
|
|
105
|
+
const runtime = getCliRuntimeContext();
|
|
106
|
+
const runtimeId = (typeof runtime.runtimeId === 'string' && runtime.runtimeId.trim() !== ''
|
|
107
|
+
? runtime.runtimeId
|
|
108
|
+
: 'legacy-singleton') ?? 'legacy-singleton';
|
|
109
|
+
const metadata = runtime.metadata ?? {};
|
|
110
|
+
const bridge = createBridge(runtimeId, metadata);
|
|
111
|
+
bridge.enterScope();
|
|
112
|
+
latestBridge = bridge;
|
|
113
|
+
return bridge;
|
|
114
|
+
}
|
|
115
|
+
export function getRuntimeApi() {
|
|
116
|
+
return getRuntimeBridge().api;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=RuntimeContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeContext.js","sourceRoot":"","sources":["../../../../src/ui/contexts/RuntimeContext.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAc,EACZ,aAAa,EAEb,UAAU,EACV,SAAS,EACT,OAAO,GACR,MAAM,OAAO,CAAC;AACf,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,6BAA6B,EAC7B,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iCAAiC,EACjC,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,2BAA2B,EAC3B,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,wCAAwC,CAAC;AAEhD;;;;;GAKG;AAEH,MAAM,gBAAgB,GAAG;IACvB,oBAAoB;IACpB,aAAa;IACb,qBAAqB;IACrB,cAAc;IACd,mBAAmB;IACnB,kBAAkB;IAClB,uBAAuB;IACvB,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;IACnB,mBAAmB;IACnB,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,mBAAmB;IACnB,iBAAiB;IACjB,qBAAqB;IACrB,2BAA2B;IAC3B,0BAA0B;IAC1B,qBAAqB;IACrB,kBAAkB;IAClB,iCAAiC;IACjC,6BAA6B;IAC7B,wBAAwB;IACxB,2BAA2B;IAC3B,wBAAwB;IACxB,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;CACX,CAAC;AAaX,MAAM,cAAc,GAAG,aAAa,CAA8B,IAAI,CAAC,CAAC;AAExE,SAAS,cAAc,CACrB,SAAiB,EACjB,QAAiC;IAEjC,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;QACtE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnB,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CACrC,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,CAC7B,EAAuC,CAAC,GAAG,IAAI,CAAC,CAClD,CAAC;QACJ,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,WAAW,CAAC,YAAY,CAAe,CAAC;AACxD,CAAC;AAED,SAAS,YAAY,CACnB,SAAiB,EACjB,QAAiC;IAEjC,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChD,OAAO;QACL,SAAS;QACT,QAAQ;QACR,GAAG;QACH,YAAY,EAAE,CAAK,QAAiB,EAAK,EAAE,CACzC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC;QACtC,UAAU,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,IAAI,YAAY,GAAgC,IAAI,CAAC;AAErD,MAAM,CAAC,MAAM,sBAAsB,GAAyC,CAAC,EAC3E,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,MAAM,SAAS,GACb,CAAC,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;QACvE,CAAC,CAAC,OAAO,CAAC,SAAS;QACnB,CAAC,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,CAAC;IAEhD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,MAAM,kBAAkB,GACrB,OAAO,CAAC,QAAgD,IAAI,EAAE,CAAC;QAClE,OAAO,YAAY,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IACrD,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAEzB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,UAAU,EAAE,CAAC;QACpB,YAAY,GAAG,MAAM,CAAC;QACtB,OAAO,GAAG,EAAE;YACV,IAAI,YAAY,EAAE,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;gBACjD,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,CACL,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YAAG,QAAQ,GAA2B,CAC7E,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,gBAAgB;IAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,gBAAgB,EAAE,CAAC,GAAG,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,MAAM,SAAS,GACb,CAAC,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;QACvE,CAAC,CAAC,OAAO,CAAC,SAAS;QACnB,CAAC,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,CAAC;IAChD,MAAM,QAAQ,GACX,OAAO,CAAC,QAAgD,IAAI,EAAE,CAAC;IAClE,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,CAAC,UAAU,EAAE,CAAC;IACpB,YAAY,GAAG,MAAM,CAAC;IACtB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,gBAAgB,EAAE,CAAC,GAAG,CAAC;AAChC,CAAC"}
|
|
@@ -5,16 +5,17 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
5
5
|
* SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
*/
|
|
7
7
|
import { useState, useEffect, useMemo, useCallback } from 'react';
|
|
8
|
-
import { TodoStore, todoEvents, } from '@vybestack/llxprt-code-core';
|
|
8
|
+
import { TodoStore, todoEvents, DEFAULT_AGENT_ID, } from '@vybestack/llxprt-code-core';
|
|
9
9
|
import { TodoContext } from './TodoContext.js';
|
|
10
|
-
export const TodoProvider = ({ children, sessionId = 'default', }) => {
|
|
10
|
+
export const TodoProvider = ({ children, sessionId = 'default', agentId, }) => {
|
|
11
11
|
const [todos, setTodos] = useState([]);
|
|
12
12
|
const [loading, setLoading] = useState(true);
|
|
13
13
|
const [error, setError] = useState(null);
|
|
14
|
+
const scopedAgentId = agentId ?? DEFAULT_AGENT_ID;
|
|
14
15
|
const refreshTodos = useCallback(async () => {
|
|
15
16
|
try {
|
|
16
17
|
setLoading(true);
|
|
17
|
-
const store = new TodoStore(sessionId);
|
|
18
|
+
const store = new TodoStore(sessionId, agentId);
|
|
18
19
|
const todos = await store.readTodos();
|
|
19
20
|
setTodos(todos);
|
|
20
21
|
setError(null);
|
|
@@ -26,7 +27,7 @@ export const TodoProvider = ({ children, sessionId = 'default', }) => {
|
|
|
26
27
|
finally {
|
|
27
28
|
setLoading(false);
|
|
28
29
|
}
|
|
29
|
-
}, [sessionId]);
|
|
30
|
+
}, [agentId, sessionId]);
|
|
30
31
|
// Load initial data
|
|
31
32
|
useEffect(() => {
|
|
32
33
|
refreshTodos();
|
|
@@ -35,7 +36,8 @@ export const TodoProvider = ({ children, sessionId = 'default', }) => {
|
|
|
35
36
|
useEffect(() => {
|
|
36
37
|
const handleTodoUpdate = (eventData) => {
|
|
37
38
|
// Verify this update is for our session
|
|
38
|
-
if (eventData.sessionId === sessionId
|
|
39
|
+
if (eventData.sessionId === sessionId &&
|
|
40
|
+
(eventData.agentId ?? DEFAULT_AGENT_ID) === scopedAgentId) {
|
|
39
41
|
// Use the todos from the event instead of re-reading from file
|
|
40
42
|
// This avoids race conditions with file I/O
|
|
41
43
|
setTodos(eventData.todos);
|
|
@@ -46,15 +48,15 @@ export const TodoProvider = ({ children, sessionId = 'default', }) => {
|
|
|
46
48
|
return () => {
|
|
47
49
|
todoEvents.offTodoUpdated(handleTodoUpdate);
|
|
48
50
|
};
|
|
49
|
-
}, [sessionId]);
|
|
51
|
+
}, [scopedAgentId, sessionId]);
|
|
50
52
|
const updateTodos = useCallback((newTodos) => {
|
|
51
53
|
setTodos(newTodos);
|
|
52
54
|
// Persist to store
|
|
53
|
-
const store = new TodoStore(sessionId);
|
|
55
|
+
const store = new TodoStore(sessionId, agentId);
|
|
54
56
|
store.writeTodos(newTodos).catch((err) => {
|
|
55
57
|
setError(`Failed to save todos: ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
56
58
|
});
|
|
57
|
-
}, [sessionId]);
|
|
59
|
+
}, [agentId, sessionId]);
|
|
58
60
|
const contextValue = useMemo(() => ({
|
|
59
61
|
todos,
|
|
60
62
|
updateTodos,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TodoProvider.js","sourceRoot":"","sources":["../../../../src/ui/contexts/TodoProvider.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzE,OAAO,EACL,SAAS,EAET,UAAU,
|
|
1
|
+
{"version":3,"file":"TodoProvider.js","sourceRoot":"","sources":["../../../../src/ui/contexts/TodoProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
6
6
|
*/
|
|
7
7
|
import { useState, useEffect, useCallback, useRef, useMemo, } from 'react';
|
|
8
8
|
import { ToolCallContext } from './ToolCallContext.js';
|
|
9
|
-
import { ToolCallTrackerService, } from '@vybestack/llxprt-code-core';
|
|
10
|
-
export const ToolCallProvider = ({ children, sessionId, }) => {
|
|
9
|
+
import { ToolCallTrackerService, DEFAULT_AGENT_ID, } from '@vybestack/llxprt-code-core';
|
|
10
|
+
export const ToolCallProvider = ({ children, sessionId, agentId, }) => {
|
|
11
11
|
// Store executing tool calls in state to trigger re-renders
|
|
12
12
|
const [executingToolCalls, setExecutingToolCalls] = useState(new Map());
|
|
13
13
|
// Track if we've already subscribed to avoid duplicate subscriptions
|
|
@@ -15,18 +15,19 @@ export const ToolCallProvider = ({ children, sessionId, }) => {
|
|
|
15
15
|
// Get executing tool calls for a specific todo
|
|
16
16
|
const getExecutingToolCalls = useCallback((todoId) => executingToolCalls.get(todoId) || [], [executingToolCalls]);
|
|
17
17
|
// Update the state with current tool calls
|
|
18
|
+
const scopedAgentId = agentId ?? DEFAULT_AGENT_ID;
|
|
18
19
|
const updateExecutingToolCalls = useCallback(() => {
|
|
19
20
|
// Get all tool calls for this session
|
|
20
|
-
const allCalls = ToolCallTrackerService.getAllToolCallsForSession(sessionId);
|
|
21
|
+
const allCalls = ToolCallTrackerService.getAllToolCallsForSession(sessionId, scopedAgentId);
|
|
21
22
|
// Convert to the format we want for state
|
|
22
23
|
const newExecutingToolCalls = new Map();
|
|
23
24
|
for (const [todoId] of allCalls) {
|
|
24
25
|
// Get all tool calls (both executing and completed)
|
|
25
|
-
const allToolCalls = ToolCallTrackerService.getAllToolCalls(sessionId, todoId);
|
|
26
|
+
const allToolCalls = ToolCallTrackerService.getAllToolCalls(sessionId, todoId, scopedAgentId);
|
|
26
27
|
newExecutingToolCalls.set(todoId, allToolCalls);
|
|
27
28
|
}
|
|
28
29
|
setExecutingToolCalls(newExecutingToolCalls);
|
|
29
|
-
}, [sessionId]);
|
|
30
|
+
}, [scopedAgentId, sessionId]);
|
|
30
31
|
// Set up subscription to tool call updates
|
|
31
32
|
useEffect(() => {
|
|
32
33
|
// Unsubscribe from previous subscription if it exists
|
|
@@ -35,7 +36,7 @@ export const ToolCallProvider = ({ children, sessionId, }) => {
|
|
|
35
36
|
unsubscribeRef.current = null;
|
|
36
37
|
}
|
|
37
38
|
// Subscribe to updates
|
|
38
|
-
const unsubscribe = ToolCallTrackerService.subscribeToUpdates(sessionId, updateExecutingToolCalls);
|
|
39
|
+
const unsubscribe = ToolCallTrackerService.subscribeToUpdates(sessionId, updateExecutingToolCalls, scopedAgentId);
|
|
39
40
|
unsubscribeRef.current = unsubscribe;
|
|
40
41
|
// Do an initial update to get current state
|
|
41
42
|
updateExecutingToolCalls();
|
|
@@ -46,17 +47,17 @@ export const ToolCallProvider = ({ children, sessionId, }) => {
|
|
|
46
47
|
unsubscribeRef.current = null;
|
|
47
48
|
}
|
|
48
49
|
};
|
|
49
|
-
}, [sessionId, updateExecutingToolCalls]);
|
|
50
|
+
}, [scopedAgentId, sessionId, updateExecutingToolCalls]);
|
|
50
51
|
const contextValue = useMemo(() => ({
|
|
51
52
|
getExecutingToolCalls,
|
|
52
53
|
subscribe: (callback) => {
|
|
53
54
|
const unsubscribe = ToolCallTrackerService.subscribeToUpdates(sessionId, () => {
|
|
54
55
|
updateExecutingToolCalls();
|
|
55
56
|
callback();
|
|
56
|
-
});
|
|
57
|
+
}, scopedAgentId);
|
|
57
58
|
return unsubscribe;
|
|
58
59
|
},
|
|
59
|
-
}), [getExecutingToolCalls, sessionId, updateExecutingToolCalls]);
|
|
60
|
+
}), [getExecutingToolCalls, scopedAgentId, sessionId, updateExecutingToolCalls]);
|
|
60
61
|
return (_jsx(ToolCallContext.Provider, { value: contextValue, children: children }));
|
|
61
62
|
};
|
|
62
63
|
//# sourceMappingURL=ToolCallProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCallProvider.js","sourceRoot":"","sources":["../../../../src/ui/contexts/ToolCallProvider.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAc,EACZ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,MAAM,EACN,OAAO,GACR,MAAM,OAAO,CAAC;AACf,OAAO,EAAuB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EACL,sBAAsB,
|
|
1
|
+
{"version":3,"file":"ToolCallProvider.js","sourceRoot":"","sources":["../../../../src/ui/contexts/ToolCallProvider.tsx"],"names":[],"mappings":"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"}
|