@vybestack/llxprt-code 0.1.15 → 0.1.16-nightly.250805.82080ee4
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/README.md +37 -2
- package/dist/package.json +3 -3
- package/dist/src/config/config.d.ts +4 -1
- package/dist/src/config/config.js +151 -54
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/settings.d.ts +11 -2
- package/dist/src/config/settings.js +84 -23
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/gemini.d.ts +2 -0
- package/dist/src/gemini.js +177 -21
- package/dist/src/gemini.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/generated/git-commit.js.map +1 -1
- package/dist/src/integration-tests/GITHUB_ACTIONS_README.md +41 -0
- package/dist/src/integration-tests/test-utils.d.ts +68 -0
- package/dist/src/integration-tests/test-utils.js +167 -0
- package/dist/src/integration-tests/test-utils.js.map +1 -0
- package/dist/src/nonInteractiveCli.js +24 -66
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/providers/IFileSystem.d.ts +42 -0
- package/dist/src/providers/IFileSystem.js +46 -0
- package/dist/src/providers/IFileSystem.js.map +1 -0
- package/dist/src/providers/providerConfigUtils.d.ts +0 -4
- package/dist/src/providers/providerConfigUtils.js +21 -52
- package/dist/src/providers/providerConfigUtils.js.map +1 -1
- package/dist/src/providers/providerManagerInstance.d.ts +6 -1
- package/dist/src/providers/providerManagerInstance.js +117 -82
- package/dist/src/providers/providerManagerInstance.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.js +11 -0
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/ui/App.js +61 -48
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/commands/aboutCommand.js +2 -5
- package/dist/src/ui/commands/aboutCommand.js.map +1 -1
- package/dist/src/ui/commands/baseurlCommand.js +54 -9
- package/dist/src/ui/commands/baseurlCommand.js.map +1 -1
- package/dist/src/ui/commands/diagnosticsCommand.d.ts +10 -0
- package/dist/src/ui/commands/diagnosticsCommand.js +122 -0
- package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -0
- package/dist/src/ui/commands/directoryCommand.d.ts +8 -0
- package/dist/src/ui/commands/directoryCommand.js +116 -0
- package/dist/src/ui/commands/directoryCommand.js.map +1 -0
- package/dist/src/ui/commands/ideCommand.js +101 -105
- package/dist/src/ui/commands/ideCommand.js.map +1 -1
- package/dist/src/ui/commands/initCommand.js +63 -31
- package/dist/src/ui/commands/initCommand.js.map +1 -1
- package/dist/src/ui/commands/keyCommand.js +75 -11
- package/dist/src/ui/commands/keyCommand.js.map +1 -1
- package/dist/src/ui/commands/keyfileCommand.js +54 -13
- package/dist/src/ui/commands/keyfileCommand.js.map +1 -1
- package/dist/src/ui/commands/memoryCommand.js +2 -1
- package/dist/src/ui/commands/memoryCommand.js.map +1 -1
- package/dist/src/ui/commands/modelCommand.js +2 -5
- package/dist/src/ui/commands/modelCommand.js.map +1 -1
- package/dist/src/ui/commands/profileCommand.d.ts +10 -0
- package/dist/src/ui/commands/profileCommand.js +592 -0
- package/dist/src/ui/commands/profileCommand.js.map +1 -0
- package/dist/src/ui/commands/providerCommand.js +46 -3
- package/dist/src/ui/commands/providerCommand.js.map +1 -1
- package/dist/src/ui/commands/setCommand.d.ts +7 -0
- package/dist/src/ui/commands/setCommand.js +431 -0
- package/dist/src/ui/commands/setCommand.js.map +1 -0
- package/dist/src/ui/commands/setupGithubCommand.d.ts +7 -0
- package/dist/src/ui/commands/setupGithubCommand.js +49 -0
- package/dist/src/ui/commands/setupGithubCommand.js.map +1 -0
- package/dist/src/ui/commands/types.d.ts +1 -1
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/components/DebugProfiler.d.ts +6 -0
- package/dist/src/ui/components/DebugProfiler.js +26 -0
- package/dist/src/ui/components/DebugProfiler.js.map +1 -0
- package/dist/src/ui/components/Footer.d.ts +1 -0
- package/dist/src/ui/components/Footer.js +5 -4
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/IDEContextDetailDisplay.d.ts +2 -1
- package/dist/src/ui/components/IDEContextDetailDisplay.js +3 -3
- package/dist/src/ui/components/IDEContextDetailDisplay.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +123 -12
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/LoadProfileDialog.d.ts +13 -0
- package/dist/src/ui/components/LoadProfileDialog.js +57 -0
- package/dist/src/ui/components/LoadProfileDialog.js.map +1 -0
- package/dist/src/ui/components/PrepareLabel.d.ts +15 -0
- package/dist/src/ui/components/PrepareLabel.js +16 -0
- package/dist/src/ui/components/PrepareLabel.js.map +1 -0
- package/dist/src/ui/components/ProviderModelDialog.js +75 -28
- package/dist/src/ui/components/ProviderModelDialog.js.map +1 -1
- package/dist/src/ui/components/SecureKeyInput.d.ts +15 -0
- package/dist/src/ui/components/SecureKeyInput.js +58 -0
- package/dist/src/ui/components/SecureKeyInput.js.map +1 -0
- package/dist/src/ui/components/SuggestionsDisplay.d.ts +1 -0
- package/dist/src/ui/components/SuggestionsDisplay.js +3 -3
- package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +15 -4
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/messages/UserMessage.js +4 -1
- package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.js +9 -14
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/containers/SessionController.js +14 -15
- package/dist/src/ui/containers/SessionController.js.map +1 -1
- package/dist/src/ui/editors/editorSettingsManager.js +2 -0
- package/dist/src/ui/editors/editorSettingsManager.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.js +56 -48
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.js +13 -3
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAuthCommand.js +9 -0
- package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
- package/dist/src/ui/hooks/useCompletion.d.ts +5 -5
- package/dist/src/ui/hooks/useCompletion.js +7 -407
- package/dist/src/ui/hooks/useCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.js +61 -10
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useLoadProfileDialog.d.ts +27 -0
- package/dist/src/ui/hooks/useLoadProfileDialog.js +138 -0
- package/dist/src/ui/hooks/useLoadProfileDialog.js.map +1 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +19 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.js +54 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -0
- package/dist/src/ui/hooks/useShellHistory.d.ts +1 -0
- package/dist/src/ui/hooks/useShellHistory.js +30 -7
- package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.d.ts +24 -0
- package/dist/src/ui/hooks/useSlashCompletion.js +451 -0
- package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -0
- package/dist/src/ui/reducers/appReducer.d.ts +3 -2
- package/dist/src/ui/reducers/appReducer.js +1 -0
- package/dist/src/ui/reducers/appReducer.js.map +1 -1
- package/dist/src/ui/utils/renderLoopDetector.js +3 -3
- package/dist/src/ui/utils/renderLoopDetector.js.map +1 -1
- package/dist/src/ui/utils/secureInputHandler.d.ts +46 -0
- package/dist/src/ui/utils/secureInputHandler.js +128 -0
- package/dist/src/ui/utils/secureInputHandler.js.map +1 -0
- package/dist/src/ui/utils/updateCheck.js +57 -12
- package/dist/src/ui/utils/updateCheck.js.map +1 -1
- package/dist/src/utils/gitUtils.d.ts +10 -0
- package/dist/src/utils/gitUtils.js +24 -0
- package/dist/src/utils/gitUtils.js.map +1 -0
- package/dist/src/utils/handleAutoUpdate.d.ts +2 -1
- package/dist/src/utils/handleAutoUpdate.js +8 -4
- package/dist/src/utils/handleAutoUpdate.js.map +1 -1
- package/dist/src/utils/sandbox-macos-permissive-closed.sb +6 -0
- package/dist/src/utils/sandbox-macos-permissive-open.sb +6 -0
- package/dist/src/utils/sandbox-macos-permissive-proxied.sb +6 -0
- package/dist/src/utils/sandbox-macos-restrictive-closed.sb +6 -0
- package/dist/src/utils/sandbox-macos-restrictive-open.sb +6 -0
- package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +6 -0
- package/dist/src/utils/sandbox.d.ts +2 -2
- package/dist/src/utils/sandbox.js +35 -11
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/utils/spawnWrapper.d.ts +7 -0
- package/dist/src/utils/spawnWrapper.js +8 -0
- package/dist/src/utils/spawnWrapper.js.map +1 -0
- package/dist/src/validateNonInterActiveAuth.d.ts +2 -1
- package/dist/src/validateNonInterActiveAuth.js +31 -5
- package/dist/src/validateNonInterActiveAuth.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/dist/src/providers/enhanceConfigWithProviders.d.ts +0 -12
- package/dist/src/providers/enhanceConfigWithProviders.js +0 -16
- package/dist/src/providers/enhanceConfigWithProviders.js.map +0 -1
@@ -3,10 +3,20 @@
|
|
3
3
|
* Copyright 2025 Google LLC
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
5
5
|
*/
|
6
|
-
import {
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
import { AuthType, sanitizeForByteString, needsSanitization, } from '@vybestack/llxprt-code-core';
|
7
|
+
/**
|
8
|
+
* Sanitizes API keys to remove problematic characters that cause ByteString errors.
|
9
|
+
* This handles cases where API key files have encoding issues or contain
|
10
|
+
* Unicode replacement characters (U+FFFD).
|
11
|
+
*/
|
12
|
+
function sanitizeApiKey(key) {
|
13
|
+
const sanitized = sanitizeForByteString(key);
|
14
|
+
if (needsSanitization(key)) {
|
15
|
+
console.warn('[ProviderConfig] API key contained non-ASCII or control characters that were removed. ' +
|
16
|
+
'Please check your API key file encoding (should be UTF-8 without BOM).');
|
17
|
+
}
|
18
|
+
return sanitized;
|
19
|
+
}
|
10
20
|
/**
|
11
21
|
* Sets or removes the API key for the active provider
|
12
22
|
*/
|
@@ -21,10 +31,7 @@ export async function setProviderApiKey(providerManager, settings, apiKey, confi
|
|
21
31
|
// Clear the API key
|
22
32
|
if (activeProvider.setApiKey) {
|
23
33
|
activeProvider.setApiKey('');
|
24
|
-
//
|
25
|
-
const currentKeys = settings.merged.providerApiKeys || {};
|
26
|
-
delete currentKeys[providerName];
|
27
|
-
settings.setValue(SettingScope.User, 'providerApiKeys', currentKeys);
|
34
|
+
// Don't need to remove from settings as we no longer save API keys there
|
28
35
|
// If this is the Gemini provider, we might need to switch auth mode
|
29
36
|
const requiresAuthRefresh = providerName === 'gemini' && !!config;
|
30
37
|
if (requiresAuthRefresh && config) {
|
@@ -49,13 +56,11 @@ export async function setProviderApiKey(providerManager, settings, apiKey, confi
|
|
49
56
|
};
|
50
57
|
}
|
51
58
|
}
|
52
|
-
// Update the provider's API key
|
59
|
+
// Update the provider's API key (sanitized)
|
53
60
|
if (activeProvider.setApiKey) {
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
currentKeys[providerName] = apiKey;
|
58
|
-
settings.setValue(SettingScope.User, 'providerApiKeys', currentKeys);
|
61
|
+
const sanitizedKey = sanitizeApiKey(apiKey);
|
62
|
+
activeProvider.setApiKey(sanitizedKey);
|
63
|
+
// Don't save API keys to settings - they should only be in profiles or ephemeral
|
59
64
|
// If this is the Gemini provider, we need to refresh auth to use API key mode
|
60
65
|
const requiresAuthRefresh = providerName === 'gemini' && !!config;
|
61
66
|
if (requiresAuthRefresh && config) {
|
@@ -87,36 +92,6 @@ export async function setProviderApiKey(providerManager, settings, apiKey, confi
|
|
87
92
|
};
|
88
93
|
}
|
89
94
|
}
|
90
|
-
/**
|
91
|
-
* Sets the API key from a file for the active provider
|
92
|
-
*/
|
93
|
-
export async function setProviderApiKeyFromFile(providerManager, settings, filePath, config) {
|
94
|
-
try {
|
95
|
-
// Resolve ~ to home directory
|
96
|
-
const resolvedPath = filePath.replace(/^~/, homedir());
|
97
|
-
// Read the API key from file
|
98
|
-
const apiKey = (await readFile(resolvedPath, 'utf-8')).trim();
|
99
|
-
if (!apiKey) {
|
100
|
-
return {
|
101
|
-
success: false,
|
102
|
-
message: 'The specified file is empty',
|
103
|
-
};
|
104
|
-
}
|
105
|
-
// Use the setProviderApiKey function to handle the actual key setting
|
106
|
-
const result = await setProviderApiKey(providerManager, settings, apiKey, config);
|
107
|
-
// Modify the message to indicate it was loaded from a file
|
108
|
-
if (result.success && result.message.includes('API key updated')) {
|
109
|
-
result.message = result.message.replace('API key updated', `API key loaded from ${resolvedPath}`);
|
110
|
-
}
|
111
|
-
return result;
|
112
|
-
}
|
113
|
-
catch (error) {
|
114
|
-
return {
|
115
|
-
success: false,
|
116
|
-
message: `Failed to process keyfile: ${error instanceof Error ? error.message : String(error)}`,
|
117
|
-
};
|
118
|
-
}
|
119
|
-
}
|
120
95
|
/**
|
121
96
|
* Sets or clears the base URL for the active provider
|
122
97
|
*/
|
@@ -128,10 +103,7 @@ export async function setProviderBaseUrl(providerManager, settings, baseUrl) {
|
|
128
103
|
// Clear base URL to provider default
|
129
104
|
if (activeProvider.setBaseUrl) {
|
130
105
|
activeProvider.setBaseUrl(undefined);
|
131
|
-
//
|
132
|
-
const currentUrls = settings.merged.providerBaseUrls || {};
|
133
|
-
delete currentUrls[providerName];
|
134
|
-
settings.setValue(SettingScope.User, 'providerBaseUrls', currentUrls);
|
106
|
+
// Don't need to remove from settings as we no longer save base URLs there
|
135
107
|
return {
|
136
108
|
success: true,
|
137
109
|
message: `Base URL cleared, provider '${providerName}' now uses default URL`,
|
@@ -147,10 +119,7 @@ export async function setProviderBaseUrl(providerManager, settings, baseUrl) {
|
|
147
119
|
// Update the provider's base URL
|
148
120
|
if (activeProvider.setBaseUrl) {
|
149
121
|
activeProvider.setBaseUrl(baseUrl);
|
150
|
-
//
|
151
|
-
const currentUrls = settings.merged.providerBaseUrls || {};
|
152
|
-
currentUrls[providerName] = baseUrl;
|
153
|
-
settings.setValue(SettingScope.User, 'providerBaseUrls', currentUrls);
|
122
|
+
// Don't save base URLs to settings - they should only be in profiles or ephemeral
|
154
123
|
return {
|
155
124
|
success: true,
|
156
125
|
message: `Base URL updated to '${baseUrl}' for provider '${providerName}'`,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"providerConfigUtils.js","sourceRoot":"","sources":["../../../src/providers/providerConfigUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,
|
1
|
+
{"version":3,"file":"providerConfigUtils.js","sourceRoot":"","sources":["../../../src/providers/providerConfigUtils.ts"],"names":[],"mappings":"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"}
|
@@ -4,6 +4,11 @@
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
5
5
|
*/
|
6
6
|
import { Config, ProviderManager } from '@vybestack/llxprt-code-core';
|
7
|
-
|
7
|
+
import { IFileSystem } from './IFileSystem.js';
|
8
|
+
/**
|
9
|
+
* Set a custom file system implementation (mainly for testing).
|
10
|
+
*/
|
11
|
+
export declare function setFileSystem(fs: IFileSystem): void;
|
12
|
+
export declare function getProviderManager(config?: Config, allowBrowserEnvironment?: boolean): ProviderManager;
|
8
13
|
export declare function resetProviderManager(): void;
|
9
14
|
export { getProviderManager as providerManager };
|
@@ -3,109 +3,144 @@
|
|
3
3
|
* Copyright 2025 Vybestack LLC
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
5
5
|
*/
|
6
|
-
import { ProviderManager, OpenAIProvider, AnthropicProvider, GeminiProvider, } from '@vybestack/llxprt-code-core';
|
7
|
-
import {
|
6
|
+
import { ProviderManager, OpenAIProvider, AnthropicProvider, GeminiProvider, sanitizeForByteString, needsSanitization, } from '@vybestack/llxprt-code-core';
|
7
|
+
import { NodeFileSystem } from './IFileSystem.js';
|
8
8
|
import { homedir } from 'os';
|
9
9
|
import { join } from 'path';
|
10
10
|
import { USER_SETTINGS_PATH } from '../config/settings.js';
|
11
11
|
import stripJsonComments from 'strip-json-comments';
|
12
|
+
/**
|
13
|
+
* Sanitizes API keys to remove problematic characters that cause ByteString errors.
|
14
|
+
* This handles cases where API key files have encoding issues or contain
|
15
|
+
* Unicode replacement characters (U+FFFD).
|
16
|
+
*/
|
17
|
+
function sanitizeApiKey(key) {
|
18
|
+
const sanitized = sanitizeForByteString(key);
|
19
|
+
if (needsSanitization(key)) {
|
20
|
+
console.warn('[ProviderManager] API key contained non-ASCII or control characters that were removed. ' +
|
21
|
+
'Please check your API key file encoding (should be UTF-8 without BOM).');
|
22
|
+
}
|
23
|
+
return sanitized;
|
24
|
+
}
|
12
25
|
let providerManagerInstance = null;
|
13
|
-
|
26
|
+
let fileSystemInstance = null;
|
27
|
+
/**
|
28
|
+
* Set a custom file system implementation (mainly for testing).
|
29
|
+
*/
|
30
|
+
export function setFileSystem(fs) {
|
31
|
+
fileSystemInstance = fs;
|
32
|
+
}
|
33
|
+
/**
|
34
|
+
* Get the file system implementation to use.
|
35
|
+
*/
|
36
|
+
function getFileSystem() {
|
37
|
+
if (!fileSystemInstance) {
|
38
|
+
fileSystemInstance = new NodeFileSystem();
|
39
|
+
}
|
40
|
+
return fileSystemInstance;
|
41
|
+
}
|
42
|
+
export function getProviderManager(config, allowBrowserEnvironment = false) {
|
14
43
|
if (!providerManagerInstance) {
|
15
44
|
providerManagerInstance = new ProviderManager();
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
const userContent = readFileSync(USER_SETTINGS_PATH, 'utf-8');
|
24
|
-
userSettings = JSON.parse(stripJsonComments(userContent));
|
25
|
-
savedApiKeys = userSettings.providerApiKeys || {};
|
26
|
-
}
|
27
|
-
}
|
28
|
-
catch (_error) {
|
29
|
-
// Failed to load user settings, that's OK
|
45
|
+
const fs = getFileSystem();
|
46
|
+
// Load user settings
|
47
|
+
let userSettings;
|
48
|
+
try {
|
49
|
+
if (fs.existsSync(USER_SETTINGS_PATH)) {
|
50
|
+
const userContent = fs.readFileSync(USER_SETTINGS_PATH, 'utf-8');
|
51
|
+
userSettings = JSON.parse(stripJsonComments(userContent));
|
30
52
|
}
|
31
|
-
|
32
|
-
|
33
|
-
//
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
try {
|
49
|
-
const keyfilePath = join(homedir(), '.google_key');
|
50
|
-
const geminiApiKey = readFileSync(keyfilePath, 'utf-8').trim();
|
51
|
-
if (geminiApiKey) {
|
52
|
-
geminiProvider.setApiKey(geminiApiKey);
|
53
|
-
}
|
54
|
-
}
|
55
|
-
catch (_error) {
|
56
|
-
// No Google keyfile available, that's OK - will use OAuth if available
|
53
|
+
}
|
54
|
+
catch (_error) {
|
55
|
+
// Failed to load user settings, that's OK
|
56
|
+
}
|
57
|
+
// Always register GeminiProvider
|
58
|
+
const geminiProvider = new GeminiProvider(undefined, undefined, config);
|
59
|
+
if (config) {
|
60
|
+
geminiProvider.setConfig(config);
|
61
|
+
}
|
62
|
+
providerManagerInstance.registerProvider(geminiProvider);
|
63
|
+
// Configure Gemini auth - check for keyfile only
|
64
|
+
try {
|
65
|
+
const keyfilePath = join(homedir(), '.google_key');
|
66
|
+
if (fs.existsSync(keyfilePath)) {
|
67
|
+
const geminiApiKey = fs.readFileSync(keyfilePath, 'utf-8').trim();
|
68
|
+
if (geminiApiKey) {
|
69
|
+
geminiProvider.setApiKey(sanitizeApiKey(geminiApiKey));
|
57
70
|
}
|
58
71
|
}
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
+
}
|
73
|
+
catch (_error) {
|
74
|
+
// No Google keyfile available, that's OK - will use OAuth if available
|
75
|
+
}
|
76
|
+
// Always register OpenAI provider
|
77
|
+
// Priority: Environment variable > keyfile (skip keyfile in test)
|
78
|
+
let openaiApiKey;
|
79
|
+
if (process.env.OPENAI_API_KEY) {
|
80
|
+
openaiApiKey = sanitizeApiKey(process.env.OPENAI_API_KEY);
|
81
|
+
}
|
82
|
+
if (!openaiApiKey) {
|
83
|
+
try {
|
84
|
+
const apiKeyPath = join(homedir(), '.openai_key');
|
85
|
+
if (fs.existsSync(apiKeyPath)) {
|
86
|
+
const rawKey = fs.readFileSync(apiKeyPath, 'utf-8').trim();
|
87
|
+
openaiApiKey = sanitizeApiKey(rawKey);
|
72
88
|
}
|
73
89
|
}
|
74
|
-
|
75
|
-
|
76
|
-
console.log('[ProviderManager] Initializing OpenAI provider with:', {
|
77
|
-
hasApiKey: !!openaiApiKey,
|
78
|
-
baseUrl: openaiBaseUrl || 'default',
|
79
|
-
});
|
80
|
-
}
|
81
|
-
const openaiProvider = new OpenAIProvider(openaiApiKey || '', openaiBaseUrl, userSettings);
|
82
|
-
providerManagerInstance.registerProvider(openaiProvider);
|
83
|
-
// OpenAI provider registered
|
84
|
-
// Initialize with Anthropic provider if API key is available
|
85
|
-
// Priority: CLI /key (in settings) > Environment variable > keyfile
|
86
|
-
let anthropicApiKey = savedApiKeys.anthropic;
|
87
|
-
if (!anthropicApiKey) {
|
88
|
-
anthropicApiKey = process.env.ANTHROPIC_API_KEY;
|
90
|
+
catch (_error) {
|
91
|
+
// No OpenAI keyfile available, that's OK
|
89
92
|
}
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
93
|
+
}
|
94
|
+
const openaiBaseUrl = process.env.OPENAI_BASE_URL;
|
95
|
+
if (process.env.DEBUG || process.env.VERBOSE) {
|
96
|
+
console.log('[ProviderManager] Initializing OpenAI provider with:', {
|
97
|
+
hasApiKey: !!openaiApiKey,
|
98
|
+
baseUrl: openaiBaseUrl || 'default',
|
99
|
+
});
|
100
|
+
}
|
101
|
+
// Create provider config from user settings
|
102
|
+
const openaiProviderConfig = {
|
103
|
+
enableTextToolCallParsing: userSettings?.enableTextToolCallParsing,
|
104
|
+
textToolCallModels: userSettings?.textToolCallModels,
|
105
|
+
providerToolFormatOverrides: userSettings?.providerToolFormatOverrides,
|
106
|
+
openaiResponsesEnabled: userSettings?.openaiResponsesEnabled,
|
107
|
+
allowBrowserEnvironment,
|
108
|
+
};
|
109
|
+
const openaiProvider = new OpenAIProvider(openaiApiKey || '', openaiBaseUrl, openaiProviderConfig);
|
110
|
+
providerManagerInstance.registerProvider(openaiProvider);
|
111
|
+
// Always register Anthropic provider
|
112
|
+
// Priority: Environment variable > keyfile (skip keyfile in test)
|
113
|
+
let anthropicApiKey;
|
114
|
+
if (process.env.ANTHROPIC_API_KEY) {
|
115
|
+
anthropicApiKey = sanitizeApiKey(process.env.ANTHROPIC_API_KEY);
|
116
|
+
}
|
117
|
+
if (!anthropicApiKey) {
|
118
|
+
try {
|
119
|
+
const apiKeyPath = join(homedir(), '.anthropic_key');
|
120
|
+
if (fs.existsSync(apiKeyPath)) {
|
121
|
+
const rawKey = fs.readFileSync(apiKeyPath, 'utf-8').trim();
|
122
|
+
anthropicApiKey = sanitizeApiKey(rawKey);
|
97
123
|
}
|
98
124
|
}
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
// Anthropic provider registered
|
125
|
+
catch (_error) {
|
126
|
+
// No Anthropic keyfile available, that's OK
|
127
|
+
}
|
103
128
|
}
|
129
|
+
const anthropicBaseUrl = process.env.ANTHROPIC_BASE_URL;
|
130
|
+
// Create provider config from user settings
|
131
|
+
const anthropicProviderConfig = {
|
132
|
+
allowBrowserEnvironment,
|
133
|
+
};
|
134
|
+
const anthropicProvider = new AnthropicProvider(anthropicApiKey || '', anthropicBaseUrl, anthropicProviderConfig);
|
135
|
+
providerManagerInstance.registerProvider(anthropicProvider);
|
136
|
+
// Set default provider to gemini
|
137
|
+
providerManagerInstance.setActiveProvider('gemini');
|
104
138
|
}
|
105
139
|
return providerManagerInstance;
|
106
140
|
}
|
107
141
|
export function resetProviderManager() {
|
108
142
|
providerManagerInstance = null;
|
143
|
+
fileSystemInstance = null;
|
109
144
|
}
|
110
145
|
export { getProviderManager as providerManager };
|
111
146
|
//# sourceMappingURL=providerManagerInstance.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"providerManagerInstance.js","sourceRoot":"","sources":["../../../src/providers/providerManagerInstance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,cAAc,
|
1
|
+
{"version":3,"file":"providerManagerInstance.js","sourceRoot":"","sources":["../../../src/providers/providerManagerInstance.ts"],"names":[],"mappings":"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"}
|
@@ -11,6 +11,7 @@ import { clearCommand } from '../ui/commands/clearCommand.js';
|
|
11
11
|
import { compressCommand } from '../ui/commands/compressCommand.js';
|
12
12
|
import { copyCommand } from '../ui/commands/copyCommand.js';
|
13
13
|
import { docsCommand } from '../ui/commands/docsCommand.js';
|
14
|
+
import { directoryCommand } from '../ui/commands/directoryCommand.js';
|
14
15
|
import { editorCommand } from '../ui/commands/editorCommand.js';
|
15
16
|
import { extensionsCommand } from '../ui/commands/extensionsCommand.js';
|
16
17
|
import { helpCommand } from '../ui/commands/helpCommand.js';
|
@@ -31,6 +32,11 @@ import { keyCommand } from '../ui/commands/keyCommand.js';
|
|
31
32
|
import { keyfileCommand } from '../ui/commands/keyfileCommand.js';
|
32
33
|
import { baseurlCommand } from '../ui/commands/baseurlCommand.js';
|
33
34
|
import { toolformatCommand } from '../ui/commands/toolformatCommand.js';
|
35
|
+
import { setupGithubCommand } from '../ui/commands/setupGithubCommand.js';
|
36
|
+
import { setCommand } from '../ui/commands/setCommand.js';
|
37
|
+
import { profileCommand } from '../ui/commands/profileCommand.js';
|
38
|
+
import { diagnosticsCommand } from '../ui/commands/diagnosticsCommand.js';
|
39
|
+
import { isGitHubRepository } from '../utils/gitUtils.js';
|
34
40
|
/**
|
35
41
|
* Loads the core, hard-coded slash commands that are an integral part
|
36
42
|
* of the Gemini CLI application.
|
@@ -57,6 +63,7 @@ export class BuiltinCommandLoader {
|
|
57
63
|
compressCommand,
|
58
64
|
copyCommand,
|
59
65
|
docsCommand,
|
66
|
+
directoryCommand,
|
60
67
|
editorCommand,
|
61
68
|
extensionsCommand,
|
62
69
|
helpCommand,
|
@@ -77,6 +84,10 @@ export class BuiltinCommandLoader {
|
|
77
84
|
keyfileCommand,
|
78
85
|
baseurlCommand,
|
79
86
|
toolformatCommand,
|
87
|
+
setCommand,
|
88
|
+
profileCommand,
|
89
|
+
diagnosticsCommand,
|
90
|
+
...(isGitHubRepository() ? [setupGithubCommand] : []),
|
80
91
|
];
|
81
92
|
return allDefinitions.filter((cmd) => cmd !== null);
|
82
93
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"BuiltinCommandLoader.js","sourceRoot":"","sources":["../../../src/services/BuiltinCommandLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;
|
1
|
+
{"version":3,"file":"BuiltinCommandLoader.js","sourceRoot":"","sources":["../../../src/services/BuiltinCommandLoader.ts"],"names":[],"mappings":"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"}
|