@vybestack/llxprt-code 0.1.15 → 0.1.16-hotfix1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/README.md +37 -2
  2. package/dist/package.json +3 -3
  3. package/dist/src/config/config.d.ts +4 -1
  4. package/dist/src/config/config.js +151 -54
  5. package/dist/src/config/config.js.map +1 -1
  6. package/dist/src/config/settings.d.ts +11 -2
  7. package/dist/src/config/settings.js +84 -23
  8. package/dist/src/config/settings.js.map +1 -1
  9. package/dist/src/gemini.d.ts +2 -0
  10. package/dist/src/gemini.js +177 -21
  11. package/dist/src/gemini.js.map +1 -1
  12. package/dist/src/generated/git-commit.d.ts +1 -1
  13. package/dist/src/generated/git-commit.js +1 -1
  14. package/dist/src/generated/git-commit.js.map +1 -1
  15. package/dist/src/integration-tests/GITHUB_ACTIONS_README.md +41 -0
  16. package/dist/src/integration-tests/test-utils.d.ts +68 -0
  17. package/dist/src/integration-tests/test-utils.js +167 -0
  18. package/dist/src/integration-tests/test-utils.js.map +1 -0
  19. package/dist/src/nonInteractiveCli.js +24 -66
  20. package/dist/src/nonInteractiveCli.js.map +1 -1
  21. package/dist/src/providers/IFileSystem.d.ts +42 -0
  22. package/dist/src/providers/IFileSystem.js +46 -0
  23. package/dist/src/providers/IFileSystem.js.map +1 -0
  24. package/dist/src/providers/providerConfigUtils.d.ts +0 -4
  25. package/dist/src/providers/providerConfigUtils.js +21 -52
  26. package/dist/src/providers/providerConfigUtils.js.map +1 -1
  27. package/dist/src/providers/providerManagerInstance.d.ts +6 -1
  28. package/dist/src/providers/providerManagerInstance.js +117 -82
  29. package/dist/src/providers/providerManagerInstance.js.map +1 -1
  30. package/dist/src/services/BuiltinCommandLoader.js +11 -0
  31. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  32. package/dist/src/ui/App.js +61 -48
  33. package/dist/src/ui/App.js.map +1 -1
  34. package/dist/src/ui/commands/aboutCommand.js +2 -5
  35. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  36. package/dist/src/ui/commands/baseurlCommand.js +54 -9
  37. package/dist/src/ui/commands/baseurlCommand.js.map +1 -1
  38. package/dist/src/ui/commands/diagnosticsCommand.d.ts +10 -0
  39. package/dist/src/ui/commands/diagnosticsCommand.js +122 -0
  40. package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -0
  41. package/dist/src/ui/commands/directoryCommand.d.ts +8 -0
  42. package/dist/src/ui/commands/directoryCommand.js +116 -0
  43. package/dist/src/ui/commands/directoryCommand.js.map +1 -0
  44. package/dist/src/ui/commands/ideCommand.js +101 -105
  45. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  46. package/dist/src/ui/commands/initCommand.js +63 -31
  47. package/dist/src/ui/commands/initCommand.js.map +1 -1
  48. package/dist/src/ui/commands/keyCommand.js +75 -11
  49. package/dist/src/ui/commands/keyCommand.js.map +1 -1
  50. package/dist/src/ui/commands/keyfileCommand.js +54 -13
  51. package/dist/src/ui/commands/keyfileCommand.js.map +1 -1
  52. package/dist/src/ui/commands/memoryCommand.js +2 -1
  53. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  54. package/dist/src/ui/commands/modelCommand.js +2 -5
  55. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  56. package/dist/src/ui/commands/profileCommand.d.ts +10 -0
  57. package/dist/src/ui/commands/profileCommand.js +592 -0
  58. package/dist/src/ui/commands/profileCommand.js.map +1 -0
  59. package/dist/src/ui/commands/providerCommand.js +46 -3
  60. package/dist/src/ui/commands/providerCommand.js.map +1 -1
  61. package/dist/src/ui/commands/setCommand.d.ts +7 -0
  62. package/dist/src/ui/commands/setCommand.js +431 -0
  63. package/dist/src/ui/commands/setCommand.js.map +1 -0
  64. package/dist/src/ui/commands/setupGithubCommand.d.ts +7 -0
  65. package/dist/src/ui/commands/setupGithubCommand.js +49 -0
  66. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -0
  67. package/dist/src/ui/commands/types.d.ts +1 -1
  68. package/dist/src/ui/commands/types.js.map +1 -1
  69. package/dist/src/ui/components/DebugProfiler.d.ts +6 -0
  70. package/dist/src/ui/components/DebugProfiler.js +26 -0
  71. package/dist/src/ui/components/DebugProfiler.js.map +1 -0
  72. package/dist/src/ui/components/Footer.d.ts +1 -0
  73. package/dist/src/ui/components/Footer.js +5 -4
  74. package/dist/src/ui/components/Footer.js.map +1 -1
  75. package/dist/src/ui/components/IDEContextDetailDisplay.d.ts +2 -1
  76. package/dist/src/ui/components/IDEContextDetailDisplay.js +3 -3
  77. package/dist/src/ui/components/IDEContextDetailDisplay.js.map +1 -1
  78. package/dist/src/ui/components/InputPrompt.js +123 -12
  79. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  80. package/dist/src/ui/components/LoadProfileDialog.d.ts +13 -0
  81. package/dist/src/ui/components/LoadProfileDialog.js +57 -0
  82. package/dist/src/ui/components/LoadProfileDialog.js.map +1 -0
  83. package/dist/src/ui/components/PrepareLabel.d.ts +15 -0
  84. package/dist/src/ui/components/PrepareLabel.js +16 -0
  85. package/dist/src/ui/components/PrepareLabel.js.map +1 -0
  86. package/dist/src/ui/components/ProviderModelDialog.js +75 -28
  87. package/dist/src/ui/components/ProviderModelDialog.js.map +1 -1
  88. package/dist/src/ui/components/SecureKeyInput.d.ts +15 -0
  89. package/dist/src/ui/components/SecureKeyInput.js +58 -0
  90. package/dist/src/ui/components/SecureKeyInput.js.map +1 -0
  91. package/dist/src/ui/components/SuggestionsDisplay.d.ts +1 -0
  92. package/dist/src/ui/components/SuggestionsDisplay.js +3 -3
  93. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  94. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +15 -4
  95. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  96. package/dist/src/ui/components/messages/UserMessage.js +4 -1
  97. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  98. package/dist/src/ui/components/shared/text-buffer.js +9 -14
  99. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  100. package/dist/src/ui/containers/SessionController.js +14 -15
  101. package/dist/src/ui/containers/SessionController.js.map +1 -1
  102. package/dist/src/ui/editors/editorSettingsManager.js +2 -0
  103. package/dist/src/ui/editors/editorSettingsManager.js.map +1 -1
  104. package/dist/src/ui/hooks/atCommandProcessor.js +56 -48
  105. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  106. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -1
  107. package/dist/src/ui/hooks/slashCommandProcessor.js +13 -3
  108. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  109. package/dist/src/ui/hooks/useAuthCommand.js +9 -0
  110. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  111. package/dist/src/ui/hooks/useCompletion.d.ts +5 -5
  112. package/dist/src/ui/hooks/useCompletion.js +7 -407
  113. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  114. package/dist/src/ui/hooks/useGeminiStream.js +61 -10
  115. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  116. package/dist/src/ui/hooks/useLoadProfileDialog.d.ts +27 -0
  117. package/dist/src/ui/hooks/useLoadProfileDialog.js +138 -0
  118. package/dist/src/ui/hooks/useLoadProfileDialog.js.map +1 -0
  119. package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +19 -0
  120. package/dist/src/ui/hooks/useReverseSearchCompletion.js +54 -0
  121. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -0
  122. package/dist/src/ui/hooks/useShellHistory.d.ts +1 -0
  123. package/dist/src/ui/hooks/useShellHistory.js +30 -7
  124. package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
  125. package/dist/src/ui/hooks/useSlashCompletion.d.ts +24 -0
  126. package/dist/src/ui/hooks/useSlashCompletion.js +451 -0
  127. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -0
  128. package/dist/src/ui/reducers/appReducer.d.ts +3 -2
  129. package/dist/src/ui/reducers/appReducer.js +1 -0
  130. package/dist/src/ui/reducers/appReducer.js.map +1 -1
  131. package/dist/src/ui/utils/renderLoopDetector.js +3 -3
  132. package/dist/src/ui/utils/renderLoopDetector.js.map +1 -1
  133. package/dist/src/ui/utils/secureInputHandler.d.ts +46 -0
  134. package/dist/src/ui/utils/secureInputHandler.js +128 -0
  135. package/dist/src/ui/utils/secureInputHandler.js.map +1 -0
  136. package/dist/src/ui/utils/updateCheck.js +57 -12
  137. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  138. package/dist/src/utils/gitUtils.d.ts +10 -0
  139. package/dist/src/utils/gitUtils.js +24 -0
  140. package/dist/src/utils/gitUtils.js.map +1 -0
  141. package/dist/src/utils/handleAutoUpdate.d.ts +2 -1
  142. package/dist/src/utils/handleAutoUpdate.js +8 -4
  143. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  144. package/dist/src/utils/sandbox-macos-permissive-closed.sb +6 -0
  145. package/dist/src/utils/sandbox-macos-permissive-open.sb +6 -0
  146. package/dist/src/utils/sandbox-macos-permissive-proxied.sb +6 -0
  147. package/dist/src/utils/sandbox-macos-restrictive-closed.sb +6 -0
  148. package/dist/src/utils/sandbox-macos-restrictive-open.sb +6 -0
  149. package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +6 -0
  150. package/dist/src/utils/sandbox.d.ts +2 -2
  151. package/dist/src/utils/sandbox.js +35 -11
  152. package/dist/src/utils/sandbox.js.map +1 -1
  153. package/dist/src/utils/spawnWrapper.d.ts +7 -0
  154. package/dist/src/utils/spawnWrapper.js +8 -0
  155. package/dist/src/utils/spawnWrapper.js.map +1 -0
  156. package/dist/src/validateNonInterActiveAuth.d.ts +2 -1
  157. package/dist/src/validateNonInterActiveAuth.js +31 -5
  158. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  159. package/dist/tsconfig.tsbuildinfo +1 -1
  160. package/package.json +3 -3
  161. package/dist/src/providers/enhanceConfigWithProviders.d.ts +0 -12
  162. package/dist/src/providers/enhanceConfigWithProviders.js +0 -16
  163. 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 { readFile } from 'node:fs/promises';
7
- import { homedir } from 'node:os';
8
- import { AuthType } from '@vybestack/llxprt-code-core';
9
- import { SettingScope } from '../config/settings.js';
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
- // Remove from settings
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
- activeProvider.setApiKey(apiKey);
55
- // Save to settings
56
- const currentKeys = settings.merged.providerApiKeys || {};
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
- // Remove from settings
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
- // Save to settings
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":"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"}
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
- export declare function getProviderManager(config?: Config): ProviderManager;
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 { readFileSync, existsSync } from 'fs';
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
- export function getProviderManager(config) {
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
- // Only auto-initialize providers when not in test environment
17
- if (process.env.NODE_ENV !== 'test') {
18
- // Load user settings to check for saved API keys
19
- let savedApiKeys = {};
20
- let userSettings;
21
- try {
22
- if (existsSync(USER_SETTINGS_PATH)) {
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
- // Register GeminiProvider
32
- const geminiProvider = new GeminiProvider();
33
- // Set initial model from settings if available
34
- if (userSettings?.defaultModel) {
35
- geminiProvider.setModel(userSettings.defaultModel);
36
- }
37
- if (config) {
38
- geminiProvider.setConfig(config);
39
- }
40
- providerManagerInstance.registerProvider(geminiProvider);
41
- // Configure Gemini auth with priority: keyfile > key > oauth
42
- // First check for saved API key
43
- if (savedApiKeys.gemini) {
44
- geminiProvider.setApiKey(savedApiKeys.gemini);
45
- }
46
- // Then check for keyfile
47
- else {
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
- // Initialize with OpenAI provider if API key is available
60
- // Priority: CLI /key (in settings) > Environment variable > keyfile
61
- let openaiApiKey = savedApiKeys.openai;
62
- if (!openaiApiKey) {
63
- openaiApiKey = process.env.OPENAI_API_KEY;
64
- }
65
- if (!openaiApiKey) {
66
- try {
67
- const apiKeyPath = join(homedir(), '.openai_key');
68
- openaiApiKey = readFileSync(apiKeyPath, 'utf-8').trim();
69
- }
70
- catch (_error) {
71
- // No OpenAI keyfile available, that's OK
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
- const openaiBaseUrl = process.env.OPENAI_BASE_URL;
75
- if (process.env.DEBUG || process.env.VERBOSE) {
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
- if (!anthropicApiKey) {
91
- try {
92
- const apiKeyPath = join(homedir(), '.anthropic_key');
93
- anthropicApiKey = readFileSync(apiKeyPath, 'utf-8').trim();
94
- }
95
- catch (_error) {
96
- // No Anthropic keyfile available, that's OK
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
- const anthropicBaseUrl = process.env.ANTHROPIC_BASE_URL;
100
- const anthropicProvider = new AnthropicProvider(anthropicApiKey || '', anthropicBaseUrl);
101
- providerManagerInstance.registerProvider(anthropicProvider);
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,GACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAY,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD,IAAI,uBAAuB,GAA2B,IAAI,CAAC;AAE3D,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC7B,uBAAuB,GAAG,IAAI,eAAe,EAAE,CAAC;QAEhD,8DAA8D;QAC9D,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACpC,iDAAiD;YACjD,IAAI,YAAY,GAA2B,EAAE,CAAC;YAC9C,IAAI,YAAkC,CAAC;YACvC,IAAI,CAAC;gBACH,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBACnC,MAAM,WAAW,GAAG,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;oBAC9D,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAa,CAAC;oBACtE,YAAY,GAAG,YAAY,CAAC,eAAe,IAAI,EAAE,CAAC;gBACpD,CAAC;YACH,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBAChB,0CAA0C;YAC5C,CAAC;YAED,0BAA0B;YAC1B,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;YAE5C,+CAA+C;YAC/C,IAAI,YAAY,EAAE,YAAY,EAAE,CAAC;gBAC/B,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACrD,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;YACD,uBAAuB,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;YAEzD,6DAA6D;YAC7D,gCAAgC;YAChC,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;gBACxB,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;YACD,yBAAyB;iBACpB,CAAC;gBACJ,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;oBACnD,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC/D,IAAI,YAAY,EAAE,CAAC;wBACjB,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;oBACzC,CAAC;gBACH,CAAC;gBAAC,OAAO,MAAM,EAAE,CAAC;oBAChB,uEAAuE;gBACzE,CAAC;YACH,CAAC;YAED,0DAA0D;YAC1D,oEAAoE;YACpE,IAAI,YAAY,GAAuB,YAAY,CAAC,MAAM,CAAC;YAE3D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YAC5C,CAAC;YAED,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;oBAClD,YAAY,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1D,CAAC;gBAAC,OAAO,MAAM,EAAE,CAAC;oBAChB,yCAAyC;gBAC3C,CAAC;YACH,CAAC;YAED,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;YAClD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,sDAAsD,EAAE;oBAClE,SAAS,EAAE,CAAC,CAAC,YAAY;oBACzB,OAAO,EAAE,aAAa,IAAI,SAAS;iBACpC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,YAAY,IAAI,EAAE,EAClB,aAAa,EACb,YAAY,CACb,CAAC;YACF,uBAAuB,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;YACzD,6BAA6B;YAE7B,6DAA6D;YAC7D,oEAAoE;YACpE,IAAI,eAAe,GAAuB,YAAY,CAAC,SAAS,CAAC;YAEjE,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAClD,CAAC;YAED,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;oBACrD,eAAe,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7D,CAAC;gBAAC,OAAO,MAAM,EAAE,CAAC;oBAChB,4CAA4C;gBAC9C,CAAC;YACH,CAAC;YAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;YACxD,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAC7C,eAAe,IAAI,EAAE,EACrB,gBAAgB,CACjB,CAAC;YACF,uBAAuB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;YAC5D,gCAAgC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,uBAAuB,GAAG,IAAI,CAAC;AACjC,CAAC;AAED,OAAO,EAAE,kBAAkB,IAAI,eAAe,EAAE,CAAC"}
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,EACd,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAe,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAY,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD;;;;GAIG;AACH,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAE7C,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CACV,yFAAyF;YACvF,wEAAwE,CAC3E,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,IAAI,uBAAuB,GAA2B,IAAI,CAAC;AAC3D,IAAI,kBAAkB,GAAuB,IAAI,CAAC;AAElD;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAAe;IAC3C,kBAAkB,GAAG,EAAE,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,aAAa;IACpB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,kBAAkB,GAAG,IAAI,cAAc,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAe,EACf,uBAAuB,GAAG,KAAK;IAE/B,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC7B,uBAAuB,GAAG,IAAI,eAAe,EAAE,CAAC;QAChD,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;QAE3B,qBAAqB;QACrB,IAAI,YAAkC,CAAC;QACvC,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACtC,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;gBACjE,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAa,CAAC;YACxE,CAAC;QACH,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,0CAA0C;QAC5C,CAAC;QAED,iCAAiC;QACjC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAExE,IAAI,MAAM,EAAE,CAAC;YACX,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QACD,uBAAuB,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAEzD,iDAAiD;QACjD,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;YACnD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;gBAClE,IAAI,YAAY,EAAE,CAAC;oBACjB,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,uEAAuE;QACzE,CAAC;QAED,kCAAkC;QAClC,kEAAkE;QAClE,IAAI,YAAgC,CAAC;QAErC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YAC/B,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;gBAClD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9B,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC3D,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBAChB,yCAAyC;YAC3C,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAClD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,sDAAsD,EAAE;gBAClE,SAAS,EAAE,CAAC,CAAC,YAAY;gBACzB,OAAO,EAAE,aAAa,IAAI,SAAS;aACpC,CAAC,CAAC;QACL,CAAC;QACD,4CAA4C;QAC5C,MAAM,oBAAoB,GAAG;YAC3B,yBAAyB,EAAE,YAAY,EAAE,yBAAyB;YAClE,kBAAkB,EAAE,YAAY,EAAE,kBAAkB;YACpD,2BAA2B,EAAE,YAAY,EAAE,2BAA2B;YACtE,sBAAsB,EAAE,YAAY,EAAE,sBAAsB;YAC5D,uBAAuB;SACxB,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,YAAY,IAAI,EAAE,EAClB,aAAa,EACb,oBAAoB,CACrB,CAAC;QACF,uBAAuB,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAEzD,qCAAqC;QACrC,kEAAkE;QAClE,IAAI,eAAmC,CAAC;QAExC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAClC,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;gBACrD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9B,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC3D,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBAChB,4CAA4C;YAC9C,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QACxD,4CAA4C;QAC5C,MAAM,uBAAuB,GAAG;YAC9B,uBAAuB;SACxB,CAAC;QACF,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAC7C,eAAe,IAAI,EAAE,EACrB,gBAAgB,EAChB,uBAAuB,CACxB,CAAC;QACF,uBAAuB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAE5D,iCAAiC;QACjC,uBAAuB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,uBAAuB,GAAG,IAAI,CAAC;IAC/B,kBAAkB,GAAG,IAAI,CAAC;AAC5B,CAAC;AAED,OAAO,EAAE,kBAAkB,IAAI,eAAe,EAAE,CAAC"}
@@ -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;AAExE;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IACX;IAApB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE7C;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAAC,OAAoB;QACrC,MAAM,cAAc,GAA+B;YACjD,YAAY;YACZ,WAAW;YACX,UAAU;YACV,WAAW;YACX,YAAY;YACZ,eAAe;YACf,WAAW;YACX,WAAW;YACX,aAAa;YACb,iBAAiB;YACjB,WAAW;YACX,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YACvB,WAAW;YACX,UAAU;YACV,aAAa;YACb,cAAc;YACd,WAAW;YACX,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,UAAU;YACV,eAAe;YACf,YAAY;YACZ,UAAU;YACV,cAAc;YACd,cAAc;YACd,iBAAiB;SAClB,CAAC;QAEF,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAuB,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IAC3E,CAAC;CACF"}
1
+ {"version":3,"file":"BuiltinCommandLoader.js","sourceRoot":"","sources":["../../../src/services/BuiltinCommandLoader.ts"],"names":[],"mappings":"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"}